From 198f68b8079132982b2e278fd5e36aabfed3d071 Mon Sep 17 00:00:00 2001 From: Bradley Schofield Date: Tue, 16 Jan 2024 11:10:07 +0000 Subject: [PATCH 01/87] Implement Response and Request filters as well as migrations --- app/controllers/general.php | 8 ++ composer.lock | 18 +-- src/Appwrite/Migration/Migration.php | 3 +- src/Appwrite/Migration/Version/V20.php | 108 ++++++++++++++++ src/Appwrite/Utopia/Request/Filters/V17.php | 19 +++ src/Appwrite/Utopia/Response/Filters/V17.php | 48 +++++++ tests/unit/Utopia/Request/Filters/V17Test.php | 56 +++++++++ .../unit/Utopia/Response/Filters/V17Test.php | 119 ++++++++++++++++++ 8 files changed, 369 insertions(+), 10 deletions(-) create mode 100644 src/Appwrite/Migration/Version/V20.php create mode 100644 src/Appwrite/Utopia/Request/Filters/V17.php create mode 100644 src/Appwrite/Utopia/Response/Filters/V17.php create mode 100644 tests/unit/Utopia/Request/Filters/V17Test.php create mode 100644 tests/unit/Utopia/Response/Filters/V17Test.php diff --git a/app/controllers/general.php b/app/controllers/general.php index e443b96fc9..add31b27e8 100644 --- a/app/controllers/general.php +++ b/app/controllers/general.php @@ -26,6 +26,7 @@ use Appwrite\Utopia\Response\Filters\V13 as ResponseV13; use Appwrite\Utopia\Response\Filters\V14 as ResponseV14; use Appwrite\Utopia\Response\Filters\V15 as ResponseV15; use Appwrite\Utopia\Response\Filters\V16 as ResponseV16; +use Appwrite\Utopia\Response\Filters\V17 as ResponseV17; use Utopia\CLI\Console; use Utopia\Database\Database; use Utopia\Database\DateTime; @@ -38,6 +39,7 @@ use Appwrite\Utopia\Request\Filters\V13 as RequestV13; use Appwrite\Utopia\Request\Filters\V14 as RequestV14; use Appwrite\Utopia\Request\Filters\V15 as RequestV15; use Appwrite\Utopia\Request\Filters\V16 as RequestV16; +use Appwrite\Utopia\Request\Filters\V17 as RequestV17; use Utopia\Validator\Text; use Utopia\Validator\WhiteList; @@ -253,6 +255,9 @@ App::init() case version_compare($requestFormat, '1.4.0', '<'): Request::setFilter(new RequestV16()); break; + case version_compare($requestFormat, '1.5.0', '<'): + Request::setFilter(new RequestV17()); + break; default: Request::setFilter(null); } @@ -394,6 +399,9 @@ App::init() case version_compare($responseFormat, '1.4.0', '<'): Response::setFilter(new ResponseV16()); break; + case version_compare($responseFormat, '1.5.0', '<'): + Response::setFilter(new ResponseV17()); + break; default: Response::setFilter(null); } diff --git a/composer.lock b/composer.lock index c89253fb93..d5ad3cae3e 100644 --- a/composer.lock +++ b/composer.lock @@ -5380,16 +5380,16 @@ }, { "name": "squizlabs/php_codesniffer", - "version": "3.8.0", + "version": "3.8.1", "source": { "type": "git", "url": "https://github.com/PHPCSStandards/PHP_CodeSniffer.git", - "reference": "5805f7a4e4958dbb5e944ef1e6edae0a303765e7" + "reference": "14f5fff1e64118595db5408e946f3a22c75807f7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/5805f7a4e4958dbb5e944ef1e6edae0a303765e7", - "reference": "5805f7a4e4958dbb5e944ef1e6edae0a303765e7", + "url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/14f5fff1e64118595db5408e946f3a22c75807f7", + "reference": "14f5fff1e64118595db5408e946f3a22c75807f7", "shasum": "" }, "require": { @@ -5399,11 +5399,11 @@ "php": ">=5.4.0" }, "require-dev": { - "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0 || ^8.0 || ^9.0" + "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0 || ^8.0 || ^9.3.4" }, "bin": [ - "bin/phpcs", - "bin/phpcbf" + "bin/phpcbf", + "bin/phpcs" ], "type": "library", "extra": { @@ -5456,7 +5456,7 @@ "type": "open_collective" } ], - "time": "2023-12-08T12:32:31+00:00" + "time": "2024-01-11T20:47:48+00:00" }, { "name": "swoole/ide-helper", @@ -5892,5 +5892,5 @@ "platform-overrides": { "php": "8.0" }, - "plugin-api-version": "2.3.0" + "plugin-api-version": "2.6.0" } diff --git a/src/Appwrite/Migration/Migration.php b/src/Appwrite/Migration/Migration.php index 9ee4d9236a..6fe8ef8844 100644 --- a/src/Appwrite/Migration/Migration.php +++ b/src/Appwrite/Migration/Migration.php @@ -77,7 +77,8 @@ abstract class Migration '1.4.10' => 'V19', '1.4.11' => 'V19', '1.4.12' => 'V19', - '1.4.13' => 'V19' + '1.4.13' => 'V19', + '1.5.0' => 'V20', ]; /** diff --git a/src/Appwrite/Migration/Version/V20.php b/src/Appwrite/Migration/Version/V20.php new file mode 100644 index 0000000000..d81f27eaa4 --- /dev/null +++ b/src/Appwrite/Migration/Version/V20.php @@ -0,0 +1,108 @@ + null, + fn () => [] + ); + } + Console::log('Migrating Project: ' . $this->project->getAttribute('name') . ' (' . $this->project->getId() . ')'); + $this->projectDB->setNamespace("_{$this->project->getInternalId()}"); + + Console::info('Migrating Collections'); + $this->migrateCollections(); + + Console::info('Migrating Documents'); + $this->forEachDocument([$this, 'fixDocument']); + } + + /** + * Migrate all Collections. + * + * @return void + * @throws \Throwable + * @throws Exception + */ + private function migrateCollections(): void + { + foreach ($this->collections as $collection) { + $id = $collection['$id']; + + Console::log("Migrating Collection \"{$id}\""); + + $this->projectDB->setNamespace("_{$this->project->getInternalId()}"); + + switch ($id) { + case '_metadata': + $this->createCollection('providers'); + $this->createCollection('messages'); + $this->createCollection('topics'); + $this->createCollection('subscribers'); + $this->createCollection('targets'); + + break; + case 'users': + // Create targets attribute + try { + $this->createAttributeFromCollection($this->projectDB, $id, 'targets'); + $this->projectDB->deleteCachedCollection($id); + } catch (\Throwable $th) { + Console::warning("'targets' from {$id}: {$th->getMessage()}"); + } + break; + case 'projects': + // Rename providers to oAuthProviders + try { + $this->projectDB->renameAttribute($id, 'providers', 'oAuthProviders'); + $this->projectDB->deleteCachedCollection($id); + } catch (\Throwable $th) { + Console::warning("'oAuthProviders' from {$id}: {$th->getMessage()}"); + } + default: + break; + } + + usleep(50000); + } + } + + /** + * Fix run on each document + * + * @param Document $document + * @return Document + */ + protected function fixDocument(Document $document): Document + { + switch ($document->getCollection()) { + case 'projects': + /** + * Bump version number. + */ + $document->setAttribute('version', '1.5.0'); + + /** + * Rename providers to oAuthProviders + */ + $document->setAttribute('oAuthProviders', $document->getAttribute('providers')); + $document->removeAttribute('providers'); + break; + } + return $document; + } +} diff --git a/src/Appwrite/Utopia/Request/Filters/V17.php b/src/Appwrite/Utopia/Request/Filters/V17.php new file mode 100644 index 0000000000..50a33a93b9 --- /dev/null +++ b/src/Appwrite/Utopia/Request/Filters/V17.php @@ -0,0 +1,19 @@ +parseProject($parsedResponse); + break; + case Response::MODEL_USER: + $parsedResponse = $this->parseUser($parsedResponse); + break; + case Response::MODEL_TOKEN: + $parsedResponse = $this->parseToken($parsedResponse); + break; + } + + return $parsedResponse; + } + + protected function parseUser(array $content) + { + unset($content['targets']); + return $content; + } + + protected function parseProject(array $content) + { + $content['providers'] = $content['oAuthProviders']; + unset($content['oAuthProviders']); + return $content; + } + + protected function parseToken(array $content) + { + unset($content['securityPhrase']); + return $content; + } +} \ No newline at end of file diff --git a/tests/unit/Utopia/Request/Filters/V17Test.php b/tests/unit/Utopia/Request/Filters/V17Test.php new file mode 100644 index 0000000000..2722da26b2 --- /dev/null +++ b/tests/unit/Utopia/Request/Filters/V17Test.php @@ -0,0 +1,56 @@ +filter = new V17(); + } + + public function tearDown(): void + { + } + + public function createUpdateRecoveryProvider() + { + return [ + 'remove passwordAgain' => [ + [ + 'userId' => 'test', + 'secret' => 'test', + 'password' => '123456', + 'passwordAgain' => '123456' + ], + [ + 'userId' => 'test', + 'secret' => 'test', + 'password' => '123456', + ] + ] + ]; + } + + + /** + * @dataProvider createUpdateRecoveryProvider + */ + public function testCreateExecution(array $content, array $expected): void + { + $model = 'account.updateRecovery'; + + $result = $this->filter->parse($content, $model); + + $this->assertEquals($expected, $result); + } +} diff --git a/tests/unit/Utopia/Response/Filters/V17Test.php b/tests/unit/Utopia/Response/Filters/V17Test.php new file mode 100644 index 0000000000..68d2146e0a --- /dev/null +++ b/tests/unit/Utopia/Response/Filters/V17Test.php @@ -0,0 +1,119 @@ +filter = new V17(); + } + + public function tearDown(): void + { + } + + public function projectProvider(): array + { + return [ + 'rename providers' => [ + [ + 'oAuthProviders' => [ + [ + 'key' => 'github', + 'name' => 'GitHub', + 'appId' => 'client_id', + 'secret' => 'client_secret', + 'enabled' => true, + ], + ], + ], + [ + 'providers' => [ + [ + 'key' => 'github', + 'name' => 'GitHub', + 'appId' => 'client_id', + 'secret' => 'client_secret', + 'enabled' => true, + ], + ], + ], + ], + ]; + } + + /** + * @dataProvider projectProvider + */ + public function testProject(array $content, array $expected): void + { + $model = Response::MODEL_PROJECT; + + $result = $this->filter->parse($content, $model); + + $this->assertEquals($expected, $result); + } + + public function userProvider(): array + { + return [ + 'remove targets' => [ + [ + 'targets' => 'test', + ], + [ + ], + ], + ]; + } + + /** + * @dataProvider userProvider + */ + public function testUser(array $content, array $expected): void + { + $model = Response::MODEL_USER; + + $result = $this->filter->parse($content, $model); + + $this->assertEquals($expected, $result); + } + + public function tokenProvider(): array + { + return [ + 'remove securityPhrase' => [ + [ + 'securityPhrase' => 'Lorum Ipsum', + ], + [ + ], + ], + ]; + } + + /** + * @dataProvider tokenProvider + */ + public function testToken(array $content, array $expected): void + { + $model = Response::MODEL_TOKEN; + + $result = $this->filter->parse($content, $model); + + $this->assertEquals($expected, $result); + } +} From 4be38d79accce133fd40a126a156063f572d882f Mon Sep 17 00:00:00 2001 From: Bradley Schofield Date: Tue, 16 Jan 2024 11:18:20 +0000 Subject: [PATCH 02/87] Run Linter --- src/Appwrite/Utopia/Response/Filters/V17.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Appwrite/Utopia/Response/Filters/V17.php b/src/Appwrite/Utopia/Response/Filters/V17.php index 2f0cb174b2..de6ab607b8 100644 --- a/src/Appwrite/Utopia/Response/Filters/V17.php +++ b/src/Appwrite/Utopia/Response/Filters/V17.php @@ -45,4 +45,4 @@ class V17 extends Filter unset($content['securityPhrase']); return $content; } -} \ No newline at end of file +} From 5faf7899f8d34d569c151ca2d4136cc4d8e3d9b8 Mon Sep 17 00:00:00 2001 From: Bradley Schofield Date: Mon, 22 Jan 2024 11:18:43 +0000 Subject: [PATCH 03/87] Add Webhooks and schedules DB migrations --- app/config/specs/open-api3-latest-client.json | 2 +- .../specs/open-api3-latest-console.json | 2 +- app/config/specs/open-api3-latest-server.json | 2 +- app/config/specs/swagger2-latest-client.json | 2 +- app/config/specs/swagger2-latest-console.json | 2 +- app/config/specs/swagger2-latest-server.json | 2 +- src/Appwrite/Migration/Version/V20.php | 25 ++++++++++++++----- 7 files changed, 25 insertions(+), 12 deletions(-) diff --git a/app/config/specs/open-api3-latest-client.json b/app/config/specs/open-api3-latest-client.json index 4690ab989d..a93acbf611 100644 --- a/app/config/specs/open-api3-latest-client.json +++ b/app/config/specs/open-api3-latest-client.json @@ -1 +1 @@ -{"openapi":"3.0.0","info":{"version":"1.4.13","title":"Appwrite","description":"Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https:\/\/appwrite.io\/docs](https:\/\/appwrite.io\/docs)","termsOfService":"https:\/\/appwrite.io\/policy\/terms","contact":{"name":"Appwrite Team","url":"https:\/\/appwrite.io\/support","email":"team@appwrite.io"},"license":{"name":"BSD-3-Clause","url":"https:\/\/raw.githubusercontent.com\/appwrite\/appwrite\/master\/LICENSE"}},"servers":[{"url":"https:\/\/HOSTNAME\/v1"}],"paths":{"\/account":{"get":{"summary":"Get account","operationId":"accountGet","tags":["account"],"description":"Get the currently logged in user.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"get","weight":22,"cookies":false,"type":"","demo":"account\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]},"post":{"summary":"Create account","operationId":"accountCreate","tags":["account"],"description":"Use this endpoint to allow a new user to register a new account in your project. After the user registration completes successfully, you can use the [\/account\/verfication](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createVerification) route to start verifying the user email address. To allow the new user to login to their new account, you need to create a new [account session](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createEmailSession).","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"create","weight":7,"cookies":false,"type":"","demo":"account\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"New user password. Must be between 8 and 256 chars.","x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/account\/email":{"patch":{"summary":"Update email","operationId":"accountUpdateEmail","tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateEmail","weight":29,"cookies":false,"type":"","demo":"account\/update-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","x-example":"password"}},"required":["email","password"]}}}}}},"\/account\/identities":{"get":{"summary":"List Identities","operationId":"accountListIdentities","tags":["account"],"description":"Get the list of identities for the currently logged in user.","responses":{"200":{"description":"Identities List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/identityList"}}}}},"x-appwrite":{"method":"listIdentities","weight":13,"cookies":false,"type":"","demo":"account\/list-identities.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-identities.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/identities","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, provider, providerUid, providerEmail, providerAccessTokenExpiry","required":false,"schema":{"type":"string","default":[]},"in":"query"}]}},"\/account\/identities\/{identityId}":{"delete":{"summary":"Delete identity","operationId":"accountDeleteIdentity","tags":["account"],"description":"Delete an identity by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIdentity","weight":14,"cookies":false,"type":"","demo":"account\/delete-identity.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-identity.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"identityId","description":"Identity ID.","required":true,"schema":{"type":"string","x-example":"[IDENTITY_ID]"},"in":"path"}]}},"\/account\/jwt":{"post":{"summary":"Create JWT","operationId":"accountCreateJWT","tags":["account"],"description":"Use this endpoint to create a JSON Web Token. You can use the resulting JWT to authenticate on behalf of the current user when working with the Appwrite server-side API and SDKs. The JWT secret is valid for 15 minutes from its creation and will be invalid if the user will logout in that time frame.","responses":{"201":{"description":"JWT","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/jwt"}}}}},"x-appwrite":{"method":"createJWT","weight":20,"cookies":false,"type":"","demo":"account\/create-j-w-t.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-jwt.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"accounts.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"List logs","operationId":"accountListLogs","tags":["account"],"description":"Get the list of latest security activity logs for the currently logged in user. Each log returns user IP address, location and date and time of log.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listLogs","weight":25,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update name","operationId":"accountUpdateName","tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateName","weight":27,"cookies":false,"type":"","demo":"account\/update-name.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-name.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["name"]}}}}}},"\/account\/password":{"patch":{"summary":"Update password","operationId":"accountUpdatePassword","tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePassword","weight":28,"cookies":false,"type":"","demo":"account\/update-password.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-password.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"password":{"type":"string","description":"New user password. Must be at least 8 chars.","x-example":null},"oldPassword":{"type":"string","description":"Current user password. Must be at least 8 chars.","x-example":"password"}},"required":["password"]}}}}}},"\/account\/phone":{"patch":{"summary":"Update phone","operationId":"accountUpdatePhone","tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createPhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePhone","weight":30,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","x-example":"password"}},"required":["phone","password"]}}}}}},"\/account\/prefs":{"get":{"summary":"Get account preferences","operationId":"accountGetPrefs","tags":["account"],"description":"Get the preferences as a key-value object for the currently logged in user.","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"getPrefs","weight":23,"cookies":false,"type":"","demo":"account\/get-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/prefs","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]},"patch":{"summary":"Update preferences","operationId":"accountUpdatePrefs","tags":["account"],"description":"Update currently logged in user account preferences. The object you pass is stored as is, and replaces any previous value. The maximum allowed prefs size is 64kB and throws error if exceeded.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePrefs","weight":31,"cookies":false,"type":"","demo":"account\/update-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/prefs","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"prefs":{"type":"object","description":"Prefs key-value JSON object.","x-example":"{}"}},"required":["prefs"]}}}}}},"\/account\/recovery":{"post":{"summary":"Create password recovery","operationId":"accountCreateRecovery","tags":["account"],"description":"Sends the user an email with a temporary secret key for password reset. When the user clicks the confirmation link he is redirected back to your app password reset URL with the secret key and email address values attached to the URL query string. Use the query string params to submit a request to the [PUT \/account\/recovery](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateRecovery) endpoint to complete the process. The verification link sent to the user's email address is valid for 1 hour.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createRecovery","weight":36,"cookies":false,"type":"","demo":"account\/create-recovery.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-recovery.md","rate-limit":10,"rate-time":3600,"rate-key":["url:{url},email:{param-email}","ip:{ip}"],"scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"url":{"type":"string","description":"URL to redirect the user back to your app from the recovery email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"}},"required":["email","url"]}}}}},"put":{"summary":"Create password recovery (confirmation)","operationId":"accountUpdateRecovery","tags":["account"],"description":"Use this endpoint to complete the user account password reset. Both the **userId** and **secret** arguments will be passed as query parameters to the redirect URL you have provided when sending your request to the [POST \/account\/recovery](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createRecovery) endpoint.\n\nPlease note that in order to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) the only valid redirect URLs are the ones from domains you have set when adding your platforms in the console interface.","responses":{"200":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"updateRecovery","weight":37,"cookies":false,"type":"","demo":"account\/update-recovery.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-recovery.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid reset token.","x-example":"[SECRET]"},"password":{"type":"string","description":"New user password. Must be between 8 and 256 chars.","x-example":null}},"required":["userId","secret","password"]}}}}}},"\/account\/sessions":{"get":{"summary":"List sessions","operationId":"accountListSessions","tags":["account"],"description":"Get the list of active sessions across different devices for the currently logged in user.","responses":{"200":{"description":"Sessions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/sessionList"}}}}},"x-appwrite":{"method":"listSessions","weight":24,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/sessions","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]},"delete":{"summary":"Delete sessions","operationId":"accountDeleteSessions","tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":35,"cookies":false,"type":"","demo":"account\/delete-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-sessions.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/account\/sessions\/anonymous":{"post":{"summary":"Create anonymous session","operationId":"accountCreateAnonymousSession","tags":["account"],"description":"Use this endpoint to allow a new user to register an anonymous account in your project. This route will also create a new session for the user. To allow the new user to convert an anonymous account to a normal account, you need to update its [email and password](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateEmail) or create an [OAuth2 session](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#CreateOAuth2Session).","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"createAnonymousSession","weight":19,"cookies":false,"type":"","demo":"account\/create-anonymous-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-anonymous.md","rate-limit":50,"rate-time":3600,"rate-key":"ip:{ip}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/sessions\/email":{"post":{"summary":"Create email password session","operationId":"accountCreateEmailPasswordSession","tags":["account"],"description":"Allow the user to login into their account by providing a valid email and password combination. This route will create a new session for the user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"createEmailPasswordSession","weight":8,"cookies":false,"type":"","demo":"account\/create-email-password-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-email-password.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","x-example":"password"}},"required":["email","password"]}}}}}},"\/account\/sessions\/magic-url":{"put":{"summary":"Create session (deprecated)","operationId":"accountUpdateMagicURLSession","tags":["account"],"description":"Use this endpoint to create a session from token. Provide the **userId** and **secret** parameters from the successful response of authentication flows initiated by token creation. For example, magic URL and phone login.","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateMagicURLSession","weight":16,"cookies":false,"type":"","demo":"account\/update-magic-u-r-l-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session.md","rate-limit":10,"rate-time":3600,"rate-key":"ip:{ip},userId:{param-userId}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/account\/sessions\/oauth2\/{provider}":{"get":{"summary":"Create OAuth2 session","operationId":"accountCreateOAuth2Session","tags":["account"],"description":"Allow the user to login to their account using the OAuth2 provider of their choice. Each OAuth2 provider should be enabled from the Appwrite console first. Use the success and failure arguments to provide a redirect URL's back to your app when login is completed.\n\nIf there is already an active session, the new session will be attached to the logged-in account. If there are no active sessions, the server will attempt to look for a user with the same email address as the email received from the OAuth2 provider and attach the new session to the existing user. If no matching user is found - the server will create a new user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).\n","responses":{"301":{"description":"File"}},"x-appwrite":{"method":"createOAuth2Session","weight":9,"cookies":false,"type":"webAuth","demo":"account\/create-o-auth2session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-oauth2.md","rate-limit":50,"rate-time":3600,"rate-key":"ip:{ip}","scope":"sessions.write","platforms":["client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"provider","description":"OAuth2 Provider. Currently, supported providers are: amazon, apple, auth0, authentik, autodesk, bitbucket, bitly, box, dailymotion, discord, disqus, dropbox, etsy, facebook, github, gitlab, google, linkedin, microsoft, notion, oidc, okta, paypal, paypalSandbox, podio, salesforce, slack, spotify, stripe, tradeshift, tradeshiftBox, twitch, wordpress, yahoo, yammer, yandex, zoho, zoom.","required":true,"schema":{"type":"string","x-example":"amazon","enum":["amazon","apple","auth0","authentik","autodesk","bitbucket","bitly","box","dailymotion","discord","disqus","dropbox","etsy","facebook","github","gitlab","google","linkedin","microsoft","notion","oidc","okta","paypal","paypalSandbox","podio","salesforce","slack","spotify","stripe","tradeshift","tradeshiftBox","twitch","wordpress","yahoo","yammer","yandex","zoho","zoom","mock"],"x-enum-name":"Provider","x-enum-keys":[]},"in":"path"},{"name":"success","description":"URL to redirect back to your app after a successful login attempt. Only URLs from hostnames in your project's platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","required":false,"schema":{"type":"string","format":"url","x-example":"https:\/\/example.com","default":""},"in":"query"},{"name":"failure","description":"URL to redirect back to your app after a failed login attempt. Only URLs from hostnames in your project's platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","required":false,"schema":{"type":"string","format":"url","x-example":"https:\/\/example.com","default":""},"in":"query"},{"name":"token","description":"Include token credentials in the final redirect, useful for server-side integrations, or when cookies are not available.","required":false,"schema":{"type":"boolean","x-example":false,"default":false},"in":"query"},{"name":"scopes","description":"A list of custom OAuth2 scopes. Check each provider internal docs for a list of supported scopes. Maximum of 100 scopes are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/sessions\/token":{"post":{"summary":"Create session","operationId":"accountCreateSession","tags":["account"],"description":"Use this endpoint to create a session from token. Provide the **userId** and **secret** parameters from the successful response of authentication flows initiated by token creation. For example, magic URL and phone login.","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"createSession","weight":17,"cookies":false,"type":"","demo":"account\/create-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session.md","rate-limit":10,"rate-time":3600,"rate-key":"ip:{ip},userId:{param-userId}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Secret of a token generated by login methods. For example, the `createMagicURLToken` or `createPhoneToken` methods.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/account\/sessions\/{sessionId}":{"get":{"summary":"Get session","operationId":"accountGetSession","tags":["account"],"description":"Use this endpoint to get a logged in user's session using a Session ID. Inputting 'current' will return the current session being used.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"getSession","weight":26,"cookies":false,"type":"","demo":"account\/get-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-session.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/sessions","offline-key":"{sessionId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to get the current device session.","required":true,"schema":{"type":"string","x-example":"[SESSION_ID]"},"in":"path"}]},"patch":{"summary":"Update OAuth session (refresh tokens)","operationId":"accountUpdateSession","tags":["account"],"description":"Access tokens have limited lifespan and expire to mitigate security risks. If session was created using an OAuth provider, this route can be used to \"refresh\" the access token.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateSession","weight":34,"cookies":false,"type":"","demo":"account\/update-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-session.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to update the current device session.","required":true,"schema":{"type":"string","x-example":"[SESSION_ID]"},"in":"path"}]},"delete":{"summary":"Delete session","operationId":"accountDeleteSession","tags":["account"],"description":"Logout the user. Use 'current' as the session ID to logout on this device, use a session ID to logout on another device. If you're looking to logout the user on all devices, use [Delete Sessions](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#deleteSessions) instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSession","weight":33,"cookies":false,"type":"","demo":"account\/delete-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-session.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to delete the current device session.","required":true,"schema":{"type":"string","x-example":"[SESSION_ID]"},"in":"path"}]}},"\/account\/status":{"patch":{"summary":"Update status","operationId":"accountUpdateStatus","tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateStatus","weight":32,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/account\/targets\/{targetId}\/push":{"put":{"summary":"Update Account's push target","operationId":"accountUpdatePushTarget","tags":["account"],"description":"","responses":{"200":{"description":"Target","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/target"}}}}},"x-appwrite":{"method":"updatePushTarget","weight":42,"cookies":false,"type":"","demo":"account\/update-push-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"","platforms":["client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id"},"parameters":[{"name":"targetId","description":"Target ID.","required":true,"schema":{"type":"string","x-example":"[TARGET_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"identifier":{"type":"string","description":"The target identifier (token, email, phone etc.)","x-example":"[IDENTIFIER]"}},"required":["identifier"]}}}}}},"\/account\/tokens\/magic-url":{"post":{"summary":"Create magic URL token","operationId":"accountCreateMagicURLToken","tags":["account"],"description":"Sends the user an email with a secret key for creating a session. If the provided user ID has not been registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [PUT \/account\/sessions\/magic-url](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateMagicURLSession) endpoint to complete the login process. The link sent to the user's email address is valid for 1 hour. If you are on a mobile device you can leave the URL parameter empty, so that the login completion will be handled by your Appwrite instance by default.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).\n","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createMagicURLToken","weight":15,"cookies":false,"type":"","demo":"account\/create-magic-u-r-l-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-token-magic-url.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"url":{"type":"string","description":"URL to redirect the user back to your app from the magic URL login. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"},"securityPhrase":{"type":"boolean","description":"Toggle for security phrase. If enabled, email will be send with a randomly generated phrase and the phrase will also be included in the response. Confirming phrases match increases the security of authentication flow.","x-example":false}},"required":["userId","email"]}}}}}},"\/account\/tokens\/phone":{"post":{"summary":"Create phone token","operationId":"accountCreatePhoneToken","tags":["account"],"description":"Sends the user an SMS with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [PUT \/account\/sessions\/phone](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updatePhoneSession) endpoint to complete the login process. The secret sent to the user's phone is valid for 15 minutes.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createPhoneToken","weight":18,"cookies":false,"type":"","demo":"account\/create-phone-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-token-phone.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},phone:{param-phone}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"}},"required":["userId","phone"]}}}}}},"\/account\/verification":{"post":{"summary":"Create email verification","operationId":"accountCreateVerification","tags":["account"],"description":"Use this endpoint to send a verification message to your user email address to confirm they are the valid owners of that address. Both the **userId** and **secret** arguments will be passed as query parameters to the URL you have provided to be attached to the verification email. The provided URL should redirect the user back to your app and allow you to complete the verification process by verifying both the **userId** and **secret** parameters. Learn more about how to [complete the verification process](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateVerification). The verification link sent to the user's email address is valid for 7 days.\n\nPlease note that in order to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md), the only valid redirect URLs are the ones from domains you have set when adding your platforms in the console interface.\n","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createVerification","weight":38,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"url":{"type":"string","description":"URL to redirect the user back to your app from the verification email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"}},"required":["url"]}}}}},"put":{"summary":"Create email verification (confirmation)","operationId":"accountUpdateVerification","tags":["account"],"description":"Use this endpoint to complete the user email verification process. Use both the **userId** and **secret** parameters that were attached to your app URL to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"updateVerification","weight":39,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/account\/verification\/phone":{"post":{"summary":"Create phone verification","operationId":"accountCreatePhoneVerification","tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updatePhone) endpoint. Learn more about how to [complete the verification process](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createPhoneVerification","weight":40,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{userId}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]},"put":{"summary":"Create phone verification (confirmation)","operationId":"accountUpdatePhoneVerification","tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"updatePhoneVerification","weight":41,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/avatars\/browsers\/{code}":{"get":{"summary":"Get browser icon","operationId":"avatarsGetBrowser","tags":["avatars"],"description":"You can use this endpoint to show different browser icons to your users. The code argument receives the browser code as it appears in your user [GET \/account\/sessions](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#getSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getBrowser","weight":44,"cookies":false,"type":"location","demo":"avatars\/get-browser.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-browser.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"code","description":"Browser Code.","required":true,"schema":{"type":"string","x-example":"aa","enum":["aa","an","ch","ci","cm","cr","ff","sf","mf","ps","oi","om","op","on"],"x-enum-name":"Browser","x-enum-keys":["Avant Browser","Android WebView Beta","Google Chrome","Google Chrome (iOS)","Google Chrome (Mobile)","Chromium","Mozilla Firefox","Safari","Mobile Safari","Microsoft Edge","Microsoft Edge (iOS)","Opera Mini","Opera","Opera (Next)"]},"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"}]}},"\/avatars\/credit-cards\/{code}":{"get":{"summary":"Get credit card icon","operationId":"avatarsGetCreditCard","tags":["avatars"],"description":"The credit card endpoint will return you the icon of the credit card provider you need. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getCreditCard","weight":43,"cookies":false,"type":"location","demo":"avatars\/get-credit-card.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-credit-card.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"code","description":"Credit Card Code. Possible values: amex, argencard, cabal, censosud, diners, discover, elo, hipercard, jcb, mastercard, naranja, targeta-shopping, union-china-pay, visa, mir, maestro.","required":true,"schema":{"type":"string","x-example":"amex","enum":["amex","argencard","cabal","censosud","diners","discover","elo","hipercard","jcb","mastercard","naranja","targeta-shopping","union-china-pay","visa","mir","maestro"],"x-enum-name":"CreditCard","x-enum-keys":["American Express","Argencard","Cabal","Consosud","Diners Club","Discover","Elo","Hipercard","JCB","Mastercard","Naranja","Tarjeta Shopping","Union China Pay","Visa","MIR","Maestro"]},"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"}]}},"\/avatars\/favicon":{"get":{"summary":"Get favicon","operationId":"avatarsGetFavicon","tags":["avatars"],"description":"Use this endpoint to fetch the favorite icon (AKA favicon) of any remote website URL.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFavicon","weight":47,"cookies":false,"type":"location","demo":"avatars\/get-favicon.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-favicon.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"url","description":"Website URL which you want to fetch the favicon from.","required":true,"schema":{"type":"string","format":"url","x-example":"https:\/\/example.com"},"in":"query"}]}},"\/avatars\/flags\/{code}":{"get":{"summary":"Get country flag","operationId":"avatarsGetFlag","tags":["avatars"],"description":"You can use this endpoint to show different country flags icons to your users. The code argument receives the 2 letter country code. Use width, height and quality arguments to change the output settings. Country codes follow the [ISO 3166-1](https:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFlag","weight":45,"cookies":false,"type":"location","demo":"avatars\/get-flag.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-flag.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"code","description":"Country Code. ISO Alpha-2 country code format.","required":true,"schema":{"type":"string","x-example":"af","enum":["af","ao","al","ad","ae","ar","am","ag","au","at","az","bi","be","bj","bf","bd","bg","bh","bs","ba","by","bz","bo","br","bb","bn","bt","bw","cf","ca","ch","cl","cn","ci","cm","cd","cg","co","km","cv","cr","cu","cy","cz","de","dj","dm","dk","do","dz","ec","eg","er","es","ee","et","fi","fj","fr","fm","ga","gb","ge","gh","gn","gm","gw","gq","gr","gd","gt","gy","hn","hr","ht","hu","id","in","ie","ir","iq","is","il","it","jm","jo","jp","kz","ke","kg","kh","ki","kn","kr","kw","la","lb","lr","ly","lc","li","lk","ls","lt","lu","lv","ma","mc","md","mg","mv","mx","mh","mk","ml","mt","mm","me","mn","mz","mr","mu","mw","my","na","ne","ng","ni","nl","no","np","nr","nz","om","pk","pa","pe","ph","pw","pg","pl","kp","pt","py","qa","ro","ru","rw","sa","sd","sn","sg","sb","sl","sv","sm","so","rs","ss","st","sr","sk","si","se","sz","sc","sy","td","tg","th","tj","tm","tl","to","tt","tn","tr","tv","tz","ug","ua","uy","us","uz","va","vc","ve","vn","vu","ws","ye","za","zm","zw"],"x-enum-name":"Flag","x-enum-keys":["Afghanistan","Angola","Albania","Andorra","United Arab Emirates","Argentina","Armenia","Antigua and Barbuda","Australia","Austria","Azerbaijan","Burundi","Belgium","Benin","Burkina Faso","Bangladesh","Bulgaria","Bahrain","Bahamas","Bosnia and Herzegovina","Belarus","Belize","Bolivia","Brazil","Barbados","Brunei Darussalam","Bhutan","Botswana","Central African Republic","Canada","Switzerland","Chile","China","C\u00f4te d'Ivoire","Cameroon","Democratic Republic of the Congo","Republic of the Congo","Colombia","Comoros","Cape Verde","Costa Rica","Cuba","Cyprus","Czech Republic","Germany","Djibouti","Dominica","Denmark","Dominican Republic","Algeria","Ecuador","Egypt","Eritrea","Spain","Estonia","Ethiopia","Finland","Fiji","France","Micronesia (Federated States of)","Gabon","United Kingdom","Georgia","Ghana","Guinea","Gambia","Guinea-Bissau","Equatorial Guinea","Greece","Grenada","Guatemala","Guyana","Honduras","Croatia","Haiti","Hungary","Indonesia","India","Ireland","Iran (Islamic Republic of)","Iraq","Iceland","Israel","Italy","Jamaica","Jordan","Japan","Kazakhstan","Kenya","Kyrgyzstan","Cambodia","Kiribati","Saint Kitts and Nevis","South Korea","Kuwait","Lao People's Democratic Republic","Lebanon","Liberia","Libya","Saint Lucia","Liechtenstein","Sri Lanka","Lesotho","Lithuania","Luxembourg","Latvia","Morocco","Monaco","Moldova","Madagascar","Maldives","Mexico","Marshall Islands","North Macedonia","Mali","Malta","Myanmar","Montenegro","Mongolia","Mozambique","Mauritania","Mauritius","Malawi","Malaysia","Namibia","Niger","Nigeria","Nicaragua","Netherlands","Norway","Nepal","Nauru","New Zealand","Oman","Pakistan","Panama","Peru","Philippines","Palau","Papua New Guinea","Poland","North Korea","Portugal","Paraguay","Qatar","Romania","Russia","Rwanda","Saudi Arabia","Sudan","Senegal","Singapore","Solomon Islands","Sierra Leone","El Salvador","San Marino","Somalia","Serbia","South Sudan","Sao Tome and Principe","Suriname","Slovakia","Slovenia","Sweden","Eswatini","Seychelles","Syria","Chad","Togo","Thailand","Tajikistan","Turkmenistan","Timor-Leste","Tonga","Trinidad and Tobago","Tunisia","Turkey","Tuvalu","Tanzania","Uganda","Ukraine","Uruguay","United States","Uzbekistan","Vatican City","Saint Vincent and the Grenadines","Venezuela","Vietnam","Vanuatu","Samoa","Yemen","South Africa","Zambia","Zimbabwe"]},"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"}]}},"\/avatars\/image":{"get":{"summary":"Get image from URL","operationId":"avatarsGetImage","tags":["avatars"],"description":"Use this endpoint to fetch a remote image URL and crop it to any image size you want. This endpoint is very useful if you need to crop and display remote images in your app or in case you want to make sure a 3rd party image is properly served using a TLS protocol.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getImage","weight":46,"cookies":false,"type":"location","demo":"avatars\/get-image.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-image.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"url","description":"Image URL which you want to crop.","required":true,"schema":{"type":"string","format":"url","x-example":"https:\/\/example.com"},"in":"query"},{"name":"width","description":"Resize preview image width, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get user initials","operationId":"avatarsGetInitials","tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getInitials","weight":49,"cookies":false,"type":"location","demo":"avatars\/get-initials.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-initials.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"name","description":"Full Name. When empty, current user name or email will be used. Max length: 128 chars.","required":false,"schema":{"type":"string","x-example":"[NAME]","default":""},"in":"query"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":500},"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":500},"in":"query"},{"name":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"schema":{"type":"string","default":""},"in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR code","operationId":"avatarsGetQR","tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getQR","weight":48,"cookies":false,"type":"location","demo":"avatars\/get-q-r.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-qr.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"text","description":"Plain text to be converted to QR code image.","required":true,"schema":{"type":"string","x-example":"[TEXT]"},"in":"query"},{"name":"size","description":"QR code size. Pass an integer between 1 to 1000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":1,"default":400},"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":1},"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"schema":{"type":"boolean","x-example":false,"default":false},"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List documents","operationId":"databasesListDocuments","tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/documentList"}}}}},"x-appwrite":{"method":"listDocuments","weight":93,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"post":{"summary":"Create document","operationId":"databasesCreateDocument","tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"createDocument","weight":92,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, only the current user is granted all permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get document","operationId":"databasesGetDocument","tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"getDocument","weight":94,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only method allowed is select.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"patch":{"summary":"Update document","operationId":"databasesUpdateDocument","tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"updateDocument","weight":96,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete document","operationId":"databasesDeleteDocument","tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":97,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List executions","operationId":"functionsListExecutions","tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/executionList"}}}}},"x-appwrite":{"method":"listExecutions","weight":268,"cookies":false,"type":"","demo":"functions\/list-executions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-executions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, responseStatusCode, duration","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create execution","operationId":"functionsCreateExecution","tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/execution"}}}}},"x-appwrite":{"method":"createExecution","weight":267,"cookies":false,"type":"","demo":"functions\/create-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-execution.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"body":{"type":"string","description":"HTTP body of execution. Default value is empty string.","x-example":"[BODY]"},"async":{"type":"boolean","description":"Execute code in the background. Default value is false.","x-example":false},"path":{"type":"string","description":"HTTP path of execution. Path can include query params. Default value is \/","x-example":"[PATH]"},"method":{"type":"string","description":"HTTP method of execution. Default value is GET.","x-example":"GET","enum":["GET","POST","PUT","PATCH","DELETE","OPTIONS"],"x-enum-name":null,"x-enum-keys":[]},"headers":{"type":"object","description":"HTTP headers of execution. Defaults to empty.","x-example":"{}"}}}}}}}},"\/functions\/{functionId}\/executions\/{executionId}":{"get":{"summary":"Get execution","operationId":"functionsGetExecution","tags":["functions"],"description":"Get a function execution log by its unique ID.","responses":{"200":{"description":"Execution","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/execution"}}}}},"x-appwrite":{"method":"getExecution","weight":269,"cookies":false,"type":"","demo":"functions\/get-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-execution.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"executionId","description":"Execution ID.","required":true,"schema":{"type":"string","x-example":"[EXECUTION_ID]"},"in":"path"}]}},"\/graphql":{"post":{"summary":"GraphQL endpoint","operationId":"graphqlQuery","tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/any"}}}}},"x-appwrite":{"method":"query","weight":289,"cookies":false,"type":"graphql","demo":"graphql\/query.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/graphql\/mutation":{"post":{"summary":"GraphQL endpoint","operationId":"graphqlMutation","tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/any"}}}}},"x-appwrite":{"method":"mutation","weight":288,"cookies":false,"type":"graphql","demo":"graphql\/mutation.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/locale":{"get":{"summary":"Get user locale","operationId":"localeGet","tags":["locale"],"description":"Get the current user location based on IP. Returns an object with user country code, country name, continent name, continent code, ip address and suggested currency. You can use the locale header to get the data in a supported language.\n\n([IP Geolocation by DB-IP](https:\/\/db-ip.com))","responses":{"200":{"description":"Locale","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/locale"}}}}},"x-appwrite":{"method":"get","weight":101,"cookies":false,"type":"","demo":"locale\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-locale.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/localed","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/locale\/codes":{"get":{"summary":"List Locale Codes","operationId":"localeListCodes","tags":["locale"],"description":"List of all locale codes in [ISO 639-1](https:\/\/en.wikipedia.org\/wiki\/List_of_ISO_639-1_codes).","responses":{"200":{"description":"Locale codes list","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/localeCodeList"}}}}},"x-appwrite":{"method":"listCodes","weight":102,"cookies":false,"type":"","demo":"locale\/list-codes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-locale-codes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/localeCode","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/locale\/continents":{"get":{"summary":"List continents","operationId":"localeListContinents","tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/continentList"}}}}},"x-appwrite":{"method":"listContinents","weight":106,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/continents","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List countries","operationId":"localeListCountries","tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountries","weight":103,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/countries","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU countries","operationId":"localeListCountriesEU","tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountriesEU","weight":104,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/countries\/eu","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List countries phone codes","operationId":"localeListCountriesPhones","tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/phoneList"}}}}},"x-appwrite":{"method":"listCountriesPhones","weight":105,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/countries\/phones","offline-key":"","offline-response-key":"countryCode","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List currencies","operationId":"localeListCurrencies","tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/currencyList"}}}}},"x-appwrite":{"method":"listCurrencies","weight":107,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/currencies","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List languages","operationId":"localeListLanguages","tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/languageList"}}}}},"x-appwrite":{"method":"listLanguages","weight":108,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/languages","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/messaging\/topics\/{topicId}\/subscribers":{"post":{"summary":"Create a subscriber.","operationId":"messagingCreateSubscriber","tags":["messaging"],"description":"","responses":{"201":{"description":"Subscriber","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/subscriber"}}}}},"x-appwrite":{"method":"createSubscriber","weight":338,"cookies":false,"type":"","demo":"messaging\/create-subscriber.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-subscriber.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.write","platforms":["server","client","console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[],"Session":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID to subscribe to.","required":true,"schema":{"type":"string","x-example":"[TOPIC_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"subscriberId":{"type":"string","description":"Subscriber ID. Choose a custom Subscriber ID or a new Subscriber ID.","x-example":"[SUBSCRIBER_ID]"},"targetId":{"type":"string","description":"Target ID. The target ID to link to the specified Topic ID.","x-example":"[TARGET_ID]"}},"required":["subscriberId","targetId"]}}}}}},"\/messaging\/topics\/{topicId}\/subscribers\/{subscriberId}":{"delete":{"summary":"Delete a subscriber.","operationId":"messagingDeleteSubscriber","tags":["messaging"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSubscriber","weight":342,"cookies":false,"type":"","demo":"messaging\/delete-subscriber.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-subscriber.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.write","platforms":["server","client","console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[],"Session":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID subscribed to.","required":true,"schema":{"type":"string","x-example":"[TOPIC_ID]"},"in":"path"},{"name":"subscriberId","description":"Subscriber ID.","required":true,"schema":{"type":"string","x-example":"[SUBSCRIBER_ID]"},"in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files":{"get":{"summary":"List files","operationId":"storageListFiles","tags":["storage"],"description":"Get a list of all the user files. You can use the query params to filter your results.","responses":{"200":{"description":"Files List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/fileList"}}}}},"x-appwrite":{"method":"listFiles","weight":181,"cookies":false,"type":"","demo":"storage\/list-files.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/list-files.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create file","operationId":"storageCreateFile","tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"createFile","weight":180,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId},chunkId:{chunkId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"}],"requestBody":{"content":{"multipart\/form-data":{"schema":{"type":"object","properties":{"fileId":{"type":"string","description":"File ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[FILE_ID]","x-upload-id":true},"file":{"type":"string","description":"Binary file. Appwrite SDKs provide helpers to handle file input. [Learn about file input](https:\/\/appwrite.io\/docs\/storage#file-input).","x-example":null},"permissions":{"type":"array","description":"An array of permission strings. By default, only the current user is granted all permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["fileId","file"]}}}}}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get file","operationId":"storageGetFile","tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"getFile","weight":182,"cookies":false,"type":"","demo":"storage\/get-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File ID.","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"}]},"put":{"summary":"Update file","operationId":"storageUpdateFile","tags":["storage"],"description":"Update a file by its unique ID. Only users with write permissions have access to update this resource.","responses":{"200":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"updateFile","weight":186,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File unique ID.","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Name of the file","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission string. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":187,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File ID.","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/download":{"get":{"summary":"Get file for download","operationId":"storageGetFileDownload","tags":["storage"],"description":"Get a file content by its unique ID. The endpoint response return with a 'Content-Disposition: attachment' header that tells the browser to start downloading the file to user downloads directory.","responses":{"200":{"description":"File"}},"x-appwrite":{"method":"getFileDownload","weight":184,"cookies":false,"type":"location","demo":"storage\/get-file-download.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-download.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File ID.","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/preview":{"get":{"summary":"Get file preview","operationId":"storageGetFilePreview","tags":["storage"],"description":"Get a file preview image. Currently, this method supports preview for image files (jpg, png, and gif), other supported formats, like pdf, docs, slides, and spreadsheets, will return the file icon image. You can also pass query string arguments for cutting and resizing your preview image. Preview is supported only for image files smaller than 10MB.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFilePreview","weight":183,"cookies":false,"type":"location","demo":"storage\/get-file-preview.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-preview.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File ID","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"},{"name":"width","description":"Resize preview image width, Pass an integer between 0 to 4000.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 4000.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"gravity","description":"Image crop gravity. Can be one of center,top-left,top,top-right,left,right,bottom-left,bottom,bottom-right","required":false,"schema":{"type":"string","x-example":"center","enum":["center","top-left","top","top-right","left","right","bottom-left","bottom","bottom-right"],"x-enum-name":"ImageGravity","x-enum-keys":[],"default":"center"},"in":"query"},{"name":"quality","description":"Preview image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"borderWidth","description":"Preview image border in pixels. Pass an integer between 0 to 100. Defaults to 0.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"borderColor","description":"Preview image border color. Use a valid HEX color, no # is needed for prefix.","required":false,"schema":{"type":"string","default":""},"in":"query"},{"name":"borderRadius","description":"Preview image border radius in pixels. Pass an integer between 0 to 4000.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"opacity","description":"Preview image opacity. Only works with images having an alpha channel (like png). Pass a number between 0 to 1.","required":false,"schema":{"type":"number","format":"float","x-example":0,"default":1},"in":"query"},{"name":"rotation","description":"Preview image rotation in degrees. Pass an integer between -360 and 360.","required":false,"schema":{"type":"integer","format":"int32","x-example":-360,"default":0},"in":"query"},{"name":"background","description":"Preview image background color. Only works with transparent images (png). Use a valid HEX color, no # is needed for prefix.","required":false,"schema":{"type":"string","default":""},"in":"query"},{"name":"output","description":"Output format type (jpeg, jpg, png, gif and webp).","required":false,"schema":{"type":"string","x-example":"jpg","enum":["jpg","jpeg","gif","png","webp"],"x-enum-name":"ImageFormat","x-enum-keys":[],"default":""},"in":"query"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/view":{"get":{"summary":"Get file for view","operationId":"storageGetFileView","tags":["storage"],"description":"Get a file content by its unique ID. This endpoint is similar to the download method but returns with no 'Content-Disposition: attachment' header.","responses":{"200":{"description":"File"}},"x-appwrite":{"method":"getFileView","weight":185,"cookies":false,"type":"location","demo":"storage\/get-file-view.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-view.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File ID.","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"}]}},"\/teams":{"get":{"summary":"List teams","operationId":"teamsList","tags":["teams"],"description":"Get a list of all the teams in which the current user is a member. You can use the parameters to filter your results.","responses":{"200":{"description":"Teams List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/teamList"}}}}},"x-appwrite":{"method":"list","weight":191,"cookies":false,"type":"","demo":"teams\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-teams.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create team","operationId":"teamsCreate","tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"create","weight":190,"cookies":false,"type":"","demo":"teams\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/create-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"teamId":{"type":"string","description":"Team ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[TEAM_ID]"},"name":{"type":"string","description":"Team name. Max length: 128 chars.","x-example":"[NAME]"},"roles":{"type":"array","description":"Array of strings. Use this param to set the roles in the team for the user who created it. The default role is **owner**. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}}}}},"\/teams\/{teamId}":{"get":{"summary":"Get team","operationId":"teamsGet","tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"get","weight":192,"cookies":false,"type":"","demo":"teams\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams","offline-key":"{teamId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}]},"put":{"summary":"Update name","operationId":"teamsUpdateName","tags":["teams"],"description":"Update the team's name by its unique ID.","responses":{"200":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"updateName","weight":194,"cookies":false,"type":"","demo":"teams\/update-name.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-name.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams","offline-key":"{teamId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"New team name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["name"]}}}}},"delete":{"summary":"Delete team","operationId":"teamsDelete","tags":["teams"],"description":"Delete a team using its ID. Only team members with the owner role can delete the team.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":196,"cookies":false,"type":"","demo":"teams\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/delete-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}]}},"\/teams\/{teamId}\/memberships":{"get":{"summary":"List team memberships","operationId":"teamsListMemberships","tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"listMemberships","weight":198,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/memberships","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create team membership","operationId":"teamsCreateMembership","tags":["teams"],"description":"Invite a new member to join your team. Provide an ID for existing users, or invite unregistered users using an email or phone number. If initiated from a Client SDK, Appwrite will send an email or sms with a link to join the team to the invited user, and an account will be created for them if one doesn't exist. If initiated from a Server SDK, the new member will be added automatically to the team.\n\nYou only need to provide one of a user ID, email, or phone number. Appwrite will prioritize accepting the user ID > email > phone number if you provide more than one of these parameters.\n\nUse the `url` parameter to redirect the user from the invitation email to your app. After the user is redirected, use the [Update Team Membership Status](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/teams#updateMembershipStatus) endpoint to allow the user to accept the invitation to the team. \n\nPlease note that to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) Appwrite will accept the only redirect URLs under the domains you have added as a platform on the Appwrite Console.\n","responses":{"201":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"createMembership","weight":197,"cookies":false,"type":"","demo":"teams\/create-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/create-team-membership.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"email":{"type":"string","description":"Email of the new team member.","x-example":"email@example.com"},"userId":{"type":"string","description":"ID of the user to be added to a team.","x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"roles":{"type":"array","description":"Array of strings. Use this param to set the user roles in the team. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"},"name":{"type":"string","description":"Name of the new team member. Max length: 128 chars.","x-example":"[NAME]"}},"required":["roles"]}}}}}},"\/teams\/{teamId}\/memberships\/{membershipId}":{"get":{"summary":"Get team membership","operationId":"teamsGetMembership","tags":["teams"],"description":"Get a team member by the membership unique id. All team members have read access for this resource.","responses":{"200":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"getMembership","weight":199,"cookies":false,"type":"","demo":"teams\/get-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-member.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/memberships","offline-key":"{membershipId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"schema":{"type":"string","x-example":"[MEMBERSHIP_ID]"},"in":"path"}]},"patch":{"summary":"Update membership","operationId":"teamsUpdateMembership","tags":["teams"],"description":"Modify the roles of a team member. Only team members with the owner role have access to this endpoint. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions).\n","responses":{"200":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"updateMembership","weight":200,"cookies":false,"type":"","demo":"teams\/update-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"schema":{"type":"string","x-example":"[MEMBERSHIP_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"roles":{"type":"array","description":"An array of strings. Use this param to set the user's roles in the team. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["roles"]}}}}},"delete":{"summary":"Delete team membership","operationId":"teamsDeleteMembership","tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":202,"cookies":false,"type":"","demo":"teams\/delete-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/delete-team-membership.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"schema":{"type":"string","x-example":"[MEMBERSHIP_ID]"},"in":"path"}]}},"\/teams\/{teamId}\/memberships\/{membershipId}\/status":{"patch":{"summary":"Update team membership status","operationId":"teamsUpdateMembershipStatus","tags":["teams"],"description":"Use this endpoint to allow a user to accept an invitation to join a team after being redirected back to your app from the invitation email received by the user.\n\nIf the request is successful, a session for the user is automatically created.\n","responses":{"200":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"updateMembershipStatus","weight":201,"cookies":false,"type":"","demo":"teams\/update-membership-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"public","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"schema":{"type":"string","x-example":"[MEMBERSHIP_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Secret key.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/teams\/{teamId}\/prefs":{"get":{"summary":"Get team preferences","operationId":"teamsGetPrefs","tags":["teams"],"description":"Get the team's shared preferences by its unique ID. If a preference doesn't need to be shared by all team members, prefer storing them in [user preferences](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#getPrefs).","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"getPrefs","weight":193,"cookies":false,"type":"","demo":"teams\/get-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/prefs","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}]},"put":{"summary":"Update preferences","operationId":"teamsUpdatePrefs","tags":["teams"],"description":"Update the team's preferences by its unique ID. The object you pass is stored as is and replaces any previous value. The maximum allowed prefs size is 64kB and throws an error if exceeded.","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"updatePrefs","weight":195,"cookies":false,"type":"","demo":"teams\/update-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/prefs","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"prefs":{"type":"object","description":"Prefs key-value JSON object.","x-example":"{}"}},"required":["prefs"]}}}}}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"project","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]},{"name":"proxy","description":"The Proxy Service allows you to configure actions for your domains beyond DNS configuration.","x-globalAttributes":[]},{"name":"graphql","description":"The GraphQL API allows you to query and mutate your Appwrite server using GraphQL.","x-globalAttributes":[]},{"name":"console","description":"The Console service allows you to interact with console relevant informations.","x-globalAttributes":[]},{"name":"migrations","description":"The Migrations service allows you to migrate third-party data to your Appwrite project.","x-globalAttributes":[]},{"name":"messaging","description":"The Messaging service allows you to send messages to any provider type (SMTP, push notification, SMS, etc.).","x-globalAttributes":[]}],"components":{"schemas":{"any":{"description":"Any","type":"object","additionalProperties":true},"error":{"description":"Error","type":"object","properties":{"message":{"type":"string","description":"Error message.","x-example":"Not found"},"code":{"type":"string","description":"Error code.","x-example":"404"},"type":{"type":"string","description":"Error type. You can learn more about all the error types at https:\/\/appwrite.io\/docs\/error-codes#errorTypes","x-example":"not_found"},"version":{"type":"string","description":"Server version number.","x-example":"1.0"}},"required":["message","code","type","version"]},"documentList":{"description":"Documents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of documents documents that matched your query.","x-example":5,"format":"int32"},"documents":{"type":"array","description":"List of documents.","items":{"$ref":"#\/components\/schemas\/document"},"x-example":""}},"required":["total","documents"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of sessions documents that matched your query.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"$ref":"#\/components\/schemas\/session"},"x-example":""}},"required":["total","sessions"]},"identityList":{"description":"Identities List","type":"object","properties":{"total":{"type":"integer","description":"Total number of identities documents that matched your query.","x-example":5,"format":"int32"},"identities":{"type":"array","description":"List of identities.","items":{"$ref":"#\/components\/schemas\/identity"},"x-example":""}},"required":["total","identities"]},"logList":{"description":"Logs List","type":"object","properties":{"total":{"type":"integer","description":"Total number of logs documents that matched your query.","x-example":5,"format":"int32"},"logs":{"type":"array","description":"List of logs.","items":{"$ref":"#\/components\/schemas\/log"},"x-example":""}},"required":["total","logs"]},"fileList":{"description":"Files List","type":"object","properties":{"total":{"type":"integer","description":"Total number of files documents that matched your query.","x-example":5,"format":"int32"},"files":{"type":"array","description":"List of files.","items":{"$ref":"#\/components\/schemas\/file"},"x-example":""}},"required":["total","files"]},"teamList":{"description":"Teams List","type":"object","properties":{"total":{"type":"integer","description":"Total number of teams documents that matched your query.","x-example":5,"format":"int32"},"teams":{"type":"array","description":"List of teams.","items":{"$ref":"#\/components\/schemas\/team"},"x-example":""}},"required":["total","teams"]},"membershipList":{"description":"Memberships List","type":"object","properties":{"total":{"type":"integer","description":"Total number of memberships documents that matched your query.","x-example":5,"format":"int32"},"memberships":{"type":"array","description":"List of memberships.","items":{"$ref":"#\/components\/schemas\/membership"},"x-example":""}},"required":["total","memberships"]},"executionList":{"description":"Executions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of executions documents that matched your query.","x-example":5,"format":"int32"},"executions":{"type":"array","description":"List of executions.","items":{"$ref":"#\/components\/schemas\/execution"},"x-example":""}},"required":["total","executions"]},"countryList":{"description":"Countries List","type":"object","properties":{"total":{"type":"integer","description":"Total number of countries documents that matched your query.","x-example":5,"format":"int32"},"countries":{"type":"array","description":"List of countries.","items":{"$ref":"#\/components\/schemas\/country"},"x-example":""}},"required":["total","countries"]},"continentList":{"description":"Continents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of continents documents that matched your query.","x-example":5,"format":"int32"},"continents":{"type":"array","description":"List of continents.","items":{"$ref":"#\/components\/schemas\/continent"},"x-example":""}},"required":["total","continents"]},"languageList":{"description":"Languages List","type":"object","properties":{"total":{"type":"integer","description":"Total number of languages documents that matched your query.","x-example":5,"format":"int32"},"languages":{"type":"array","description":"List of languages.","items":{"$ref":"#\/components\/schemas\/language"},"x-example":""}},"required":["total","languages"]},"currencyList":{"description":"Currencies List","type":"object","properties":{"total":{"type":"integer","description":"Total number of currencies documents that matched your query.","x-example":5,"format":"int32"},"currencies":{"type":"array","description":"List of currencies.","items":{"$ref":"#\/components\/schemas\/currency"},"x-example":""}},"required":["total","currencies"]},"phoneList":{"description":"Phones List","type":"object","properties":{"total":{"type":"integer","description":"Total number of phones documents that matched your query.","x-example":5,"format":"int32"},"phones":{"type":"array","description":"List of phones.","items":{"$ref":"#\/components\/schemas\/phone"},"x-example":""}},"required":["total","phones"]},"localeCodeList":{"description":"Locale codes list","type":"object","properties":{"total":{"type":"integer","description":"Total number of localeCodes documents that matched your query.","x-example":5,"format":"int32"},"localeCodes":{"type":"array","description":"List of localeCodes.","items":{"$ref":"#\/components\/schemas\/localeCode"},"x-example":""}},"required":["total","localeCodes"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"user":{"description":"User","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"password":{"type":"string","description":"Hashed user password.","x-example":"$argon2id$v=19$m=2048,t=4,p=3$aUZjLnliVWRINmFNTWMudg$5S+x+7uA31xFnrHFT47yFwcJeaP0w92L\/4LdgrVRXxE","nullable":true},"hash":{"type":"string","description":"Password hashing algorithm.","x-example":"argon2","nullable":true},"hashOptions":{"type":"object","description":"Password hashing algorithm configuration.","x-example":{},"items":{"oneOf":[{"$ref":"#\/components\/schemas\/algoArgon2"},{"$ref":"#\/components\/schemas\/algoScrypt"},{"$ref":"#\/components\/schemas\/algoScryptModified"},{"$ref":"#\/components\/schemas\/algoBcrypt"},{"$ref":"#\/components\/schemas\/algoPhpass"},{"$ref":"#\/components\/schemas\/algoSha"},{"$ref":"#\/components\/schemas\/algoMd5"}]},"nullable":true},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"labels":{"type":"array","description":"Labels for the user.","items":{"type":"string"},"x-example":["vip"]},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"$ref":"#\/components\/schemas\/preferences"}},"targets":{"type":"array","description":"A user-owned message receiver. A single user may have multiple e.g. emails, phones, and a browser. Each target is registered with a single provider.","items":{"$ref":"#\/components\/schemas\/target"},"x-example":[]},"accessedAt":{"type":"string","description":"Most recent access date in ISO 8601 format. This attribute is only updated again after 24 hours.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","$updatedAt","name","registration","status","labels","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs","targets","accessedAt"]},"algoMd5":{"description":"AlgoMD5","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"md5"}},"required":["type"]},"algoSha":{"description":"AlgoSHA","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"sha"}},"required":["type"]},"algoPhpass":{"description":"AlgoPHPass","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"phpass"}},"required":["type"]},"algoBcrypt":{"description":"AlgoBcrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"bcrypt"}},"required":["type"]},"algoScrypt":{"description":"AlgoScrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scrypt"},"costCpu":{"type":"integer","description":"CPU complexity of computed hash.","x-example":8,"format":"int32"},"costMemory":{"type":"integer","description":"Memory complexity of computed hash.","x-example":14,"format":"int32"},"costParallel":{"type":"integer","description":"Parallelization of computed hash.","x-example":1,"format":"int32"},"length":{"type":"integer","description":"Length used to compute hash.","x-example":64,"format":"int32"}},"required":["type","costCpu","costMemory","costParallel","length"]},"algoScryptModified":{"description":"AlgoScryptModified","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scryptMod"},"salt":{"type":"string","description":"Salt used to compute hash.","x-example":"UxLMreBr6tYyjQ=="},"saltSeparator":{"type":"string","description":"Separator used to compute hash.","x-example":"Bw=="},"signerKey":{"type":"string","description":"Key used to compute hash.","x-example":"XyEKE9RcTDeLEsL\/RjwPDBv\/RqDl8fb3gpYEOQaPihbxf1ZAtSOHCjuAAa7Q3oHpCYhXSN9tizHgVOwn6krflQ=="}},"required":["type","salt","saltSeparator","signerKey"]},"algoArgon2":{"description":"AlgoArgon2","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"argon2"},"memoryCost":{"type":"integer","description":"Memory used to compute hash.","x-example":65536,"format":"int32"},"timeCost":{"type":"integer","description":"Amount of time consumed to compute hash","x-example":4,"format":"int32"},"threads":{"type":"integer","description":"Number of threads used to compute hash.","x-example":3,"format":"int32"}},"required":["type","memoryCost","timeCost","threads"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true},"secret":{"type":"string","description":"Secret used to authenticate the user. Only included if the request was made with an API key","x-example":"5e5bb8c16897e"}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current","secret"]},"identity":{"description":"Identity","type":"object","properties":{"$id":{"type":"string","description":"Identity ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Identity creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Identity update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"provider":{"type":"string","description":"Identity Provider.","x-example":"email"},"providerUid":{"type":"string","description":"ID of the User in the Identity Provider.","x-example":"5e5bb8c16897e"},"providerEmail":{"type":"string","description":"Email of the User in the Identity Provider.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Identity Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Identity Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"}},"required":["$id","$createdAt","$updatedAt","userId","provider","providerUid","providerEmail","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"securityPhrase":{"type":"string","description":"Security phrase of a token. Empty if security phrase was not requested when creating a token. It includes randomly generated phrase which is also sent in the external resource such as email.","x-example":"Golden Fox"}},"required":["$id","$createdAt","userId","secret","expire","securityPhrase"]},"jwt":{"description":"JWT","type":"object","properties":{"jwt":{"type":"string","description":"JWT encoded string.","x-example":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c"}},"required":["jwt"]},"locale":{"description":"Locale","type":"object","properties":{"ip":{"type":"string","description":"User IP address.","x-example":"127.0.0.1"},"countryCode":{"type":"string","description":"Country code in [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) two-character format","x-example":"US"},"country":{"type":"string","description":"Country name. This field support localization.","x-example":"United States"},"continentCode":{"type":"string","description":"Continent code. A two character continent code \"AF\" for Africa, \"AN\" for Antarctica, \"AS\" for Asia, \"EU\" for Europe, \"NA\" for North America, \"OC\" for Oceania, and \"SA\" for South America.","x-example":"NA"},"continent":{"type":"string","description":"Continent name. This field support localization.","x-example":"North America"},"eu":{"type":"boolean","description":"True if country is part of the European Union.","x-example":false},"currency":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format","x-example":"USD"}},"required":["ip","countryCode","country","continentCode","continent","eu","currency"]},"localeCode":{"description":"LocaleCode","type":"object","properties":{"code":{"type":"string","description":"Locale codes in [ISO 639-1](https:\/\/en.wikipedia.org\/wiki\/List_of_ISO_639-1_codes)","x-example":"en-us"},"name":{"type":"string","description":"Locale name","x-example":"US"}},"required":["code","name"]},"file":{"description":"File","type":"object","properties":{"$id":{"type":"string","description":"File ID.","x-example":"5e5ea5c16897e"},"bucketId":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"},"prefs":{"type":"object","description":"Team preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"$ref":"#\/components\/schemas\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","total","prefs"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":["owner"]}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","roles"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"requestMethod":{"type":"string","description":"HTTP request method type.","x-example":"GET"},"requestPath":{"type":"string","description":"HTTP request path and query.","x-example":"\/articles?id=5"},"requestHeaders":{"type":"array","description":"HTTP response headers as a key-value object. This will return only whitelisted headers. All headers are returned if execution is created as synchronous.","items":{"$ref":"#\/components\/schemas\/headers"},"x-example":[{"Content-Type":"application\/json"}]},"responseStatusCode":{"type":"integer","description":"HTTP response status code.","x-example":200,"format":"int32"},"responseBody":{"type":"string","description":"HTTP response body. This will return empty unless execution is created as synchronous.","x-example":"Developers are awesome."},"responseHeaders":{"type":"array","description":"HTTP response headers as a key-value object. This will return only whitelisted headers. All headers are returned if execution is created as synchronous.","items":{"$ref":"#\/components\/schemas\/headers"},"x-example":[{"Content-Type":"application\/json"}]},"logs":{"type":"string","description":"Function logs. Includes the last 4,000 characters. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"errors":{"type":"string","description":"Function errors. Includes the last 4,000 characters. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"Function execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","requestMethod","requestPath","requestHeaders","responseStatusCode","responseBody","responseHeaders","logs","errors","duration"]},"country":{"description":"Country","type":"object","properties":{"name":{"type":"string","description":"Country name.","x-example":"United States"},"code":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"}},"required":["name","code"]},"continent":{"description":"Continent","type":"object","properties":{"name":{"type":"string","description":"Continent name.","x-example":"Europe"},"code":{"type":"string","description":"Continent two letter code.","x-example":"EU"}},"required":["name","code"]},"language":{"description":"Language","type":"object","properties":{"name":{"type":"string","description":"Language name.","x-example":"Italian"},"code":{"type":"string","description":"Language two-character ISO 639-1 codes.","x-example":"it"},"nativeName":{"type":"string","description":"Language native name.","x-example":"Italiano"}},"required":["name","code","nativeName"]},"currency":{"description":"Currency","type":"object","properties":{"symbol":{"type":"string","description":"Currency symbol.","x-example":"$"},"name":{"type":"string","description":"Currency name.","x-example":"US dollar"},"symbolNative":{"type":"string","description":"Currency native symbol.","x-example":"$"},"decimalDigits":{"type":"integer","description":"Number of decimal digits.","x-example":2,"format":"int32"},"rounding":{"type":"number","description":"Currency digit rounding.","x-example":0,"format":"double"},"code":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format.","x-example":"USD"},"namePlural":{"type":"string","description":"Currency plural name","x-example":"US dollars"}},"required":["symbol","name","symbolNative","decimalDigits","rounding","code","namePlural"]},"phone":{"description":"Phone","type":"object","properties":{"code":{"type":"string","description":"Phone code.","x-example":"+1"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["code","countryCode","countryName"]},"headers":{"description":"Headers","type":"object","properties":{"name":{"type":"string","description":"Header name.","x-example":"Content-Type"},"value":{"type":"string","description":"Header value.","x-example":"application\/json"}},"required":["name","value"]},"subscriber":{"description":"Subscriber","type":"object","properties":{"$id":{"type":"string","description":"Subscriber ID.","x-example":"259125845563242502"},"$createdAt":{"type":"string","description":"Subscriber creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Subscriber update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"targetId":{"type":"string","description":"Target ID.","x-example":"259125845563242502"},"target":{"type":"object","description":"Target.","x-example":{"$id":"259125845563242502","$createdAt":"2020-10-15T06:38:00.000+00:00","$updatedAt":"2020-10-15T06:38:00.000+00:00","providerType":"email","providerId":"259125845563242502","name":"ageon-app-email","identifier":"random-mail@email.org","userId":"5e5ea5c16897e"},"items":{"$ref":"#\/components\/schemas\/target"}},"userId":{"type":"string","description":"Topic ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User Name.","x-example":"Aegon Targaryen"},"topicId":{"type":"string","description":"Topic ID.","x-example":"259125845563242502"},"providerType":{"type":"string","description":"The target provider type. Can be one of the following: `email`, `sms` or `push`.","x-example":"email"}},"required":["$id","$createdAt","$updatedAt","targetId","target","userId","userName","topicId","providerType"]},"target":{"description":"Target","type":"object","properties":{"$id":{"type":"string","description":"Target ID.","x-example":"259125845563242502"},"$createdAt":{"type":"string","description":"Target creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Target update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Target Name.","x-example":"Aegon apple token"},"userId":{"type":"string","description":"User ID.","x-example":"259125845563242502"},"providerId":{"type":"string","description":"Provider ID.","x-example":"259125845563242502","nullable":true},"providerType":{"type":"string","description":"The target provider type. Can be one of the following: `email`, `sms` or `push`.","x-example":"email"},"identifier":{"type":"string","description":"The target identifier.","x-example":"token"}},"required":["$id","$createdAt","$updatedAt","name","userId","providerType","identifier"]}},"securitySchemes":{"Project":{"type":"apiKey","name":"X-Appwrite-Project","description":"Your project ID","in":"header","x-appwrite":{"demo":"5df5acd0d48c2"}},"JWT":{"type":"apiKey","name":"X-Appwrite-JWT","description":"Your secret JSON Web Token","in":"header"},"Locale":{"type":"apiKey","name":"X-Appwrite-Locale","description":"","in":"header","x-appwrite":{"demo":"en"}},"Session":{"type":"apiKey","name":"X-Appwrite-Session","description":"The user session to authenticate with","in":"header"}}},"externalDocs":{"description":"Full API docs, specs and tutorials","url":"https:\/\/appwrite.io\/docs"}} \ No newline at end of file +{"openapi":"3.0.0","info":{"version":"1.4.13","title":"Appwrite","description":"Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https:\/\/appwrite.io\/docs](https:\/\/appwrite.io\/docs)","termsOfService":"https:\/\/appwrite.io\/policy\/terms","contact":{"name":"Appwrite Team","url":"https:\/\/appwrite.io\/support","email":"team@appwrite.io"},"license":{"name":"BSD-3-Clause","url":"https:\/\/raw.githubusercontent.com\/appwrite\/appwrite\/master\/LICENSE"}},"servers":[{"url":"https:\/\/HOSTNAME\/v1"}],"paths":{"\/account":{"get":{"summary":"Get account","operationId":"accountGet","tags":["account"],"description":"Get the currently logged in user.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"get","weight":22,"cookies":false,"type":"","demo":"account\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]},"post":{"summary":"Create account","operationId":"accountCreate","tags":["account"],"description":"Use this endpoint to allow a new user to register a new account in your project. After the user registration completes successfully, you can use the [\/account\/verfication](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createVerification) route to start verifying the user email address. To allow the new user to login to their new account, you need to create a new [account session](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createEmailSession).","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"create","weight":7,"cookies":false,"type":"","demo":"account\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"New user password. Must be between 8 and 256 chars.","x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/account\/email":{"patch":{"summary":"Update email","operationId":"accountUpdateEmail","tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateEmail","weight":29,"cookies":false,"type":"","demo":"account\/update-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","x-example":"password"}},"required":["email","password"]}}}}}},"\/account\/identities":{"get":{"summary":"List Identities","operationId":"accountListIdentities","tags":["account"],"description":"Get the list of identities for the currently logged in user.","responses":{"200":{"description":"Identities List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/identityList"}}}}},"x-appwrite":{"method":"listIdentities","weight":13,"cookies":false,"type":"","demo":"account\/list-identities.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-identities.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/identities","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, provider, providerUid, providerEmail, providerAccessTokenExpiry","required":false,"schema":{"type":"string","default":[]},"in":"query"}]}},"\/account\/identities\/{identityId}":{"delete":{"summary":"Delete identity","operationId":"accountDeleteIdentity","tags":["account"],"description":"Delete an identity by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIdentity","weight":14,"cookies":false,"type":"","demo":"account\/delete-identity.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-identity.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"identityId","description":"Identity ID.","required":true,"schema":{"type":"string","x-example":"[IDENTITY_ID]"},"in":"path"}]}},"\/account\/jwt":{"post":{"summary":"Create JWT","operationId":"accountCreateJWT","tags":["account"],"description":"Use this endpoint to create a JSON Web Token. You can use the resulting JWT to authenticate on behalf of the current user when working with the Appwrite server-side API and SDKs. The JWT secret is valid for 15 minutes from its creation and will be invalid if the user will logout in that time frame.","responses":{"201":{"description":"JWT","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/jwt"}}}}},"x-appwrite":{"method":"createJWT","weight":20,"cookies":false,"type":"","demo":"account\/create-j-w-t.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-jwt.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"accounts.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"List logs","operationId":"accountListLogs","tags":["account"],"description":"Get the list of latest security activity logs for the currently logged in user. Each log returns user IP address, location and date and time of log.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listLogs","weight":25,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update name","operationId":"accountUpdateName","tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateName","weight":27,"cookies":false,"type":"","demo":"account\/update-name.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-name.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["name"]}}}}}},"\/account\/password":{"patch":{"summary":"Update password","operationId":"accountUpdatePassword","tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePassword","weight":28,"cookies":false,"type":"","demo":"account\/update-password.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-password.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"password":{"type":"string","description":"New user password. Must be at least 8 chars.","x-example":null},"oldPassword":{"type":"string","description":"Current user password. Must be at least 8 chars.","x-example":"password"}},"required":["password"]}}}}}},"\/account\/phone":{"patch":{"summary":"Update phone","operationId":"accountUpdatePhone","tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createPhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePhone","weight":30,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","x-example":"password"}},"required":["phone","password"]}}}}}},"\/account\/prefs":{"get":{"summary":"Get account preferences","operationId":"accountGetPrefs","tags":["account"],"description":"Get the preferences as a key-value object for the currently logged in user.","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"getPrefs","weight":23,"cookies":false,"type":"","demo":"account\/get-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/prefs","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]},"patch":{"summary":"Update preferences","operationId":"accountUpdatePrefs","tags":["account"],"description":"Update currently logged in user account preferences. The object you pass is stored as is, and replaces any previous value. The maximum allowed prefs size is 64kB and throws error if exceeded.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePrefs","weight":31,"cookies":false,"type":"","demo":"account\/update-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/prefs","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"prefs":{"type":"object","description":"Prefs key-value JSON object.","x-example":"{}"}},"required":["prefs"]}}}}}},"\/account\/recovery":{"post":{"summary":"Create password recovery","operationId":"accountCreateRecovery","tags":["account"],"description":"Sends the user an email with a temporary secret key for password reset. When the user clicks the confirmation link he is redirected back to your app password reset URL with the secret key and email address values attached to the URL query string. Use the query string params to submit a request to the [PUT \/account\/recovery](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateRecovery) endpoint to complete the process. The verification link sent to the user's email address is valid for 1 hour.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createRecovery","weight":36,"cookies":false,"type":"","demo":"account\/create-recovery.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-recovery.md","rate-limit":10,"rate-time":3600,"rate-key":["url:{url},email:{param-email}","ip:{ip}"],"scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"url":{"type":"string","description":"URL to redirect the user back to your app from the recovery email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"}},"required":["email","url"]}}}}},"put":{"summary":"Create password recovery (confirmation)","operationId":"accountUpdateRecovery","tags":["account"],"description":"Use this endpoint to complete the user account password reset. Both the **userId** and **secret** arguments will be passed as query parameters to the redirect URL you have provided when sending your request to the [POST \/account\/recovery](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createRecovery) endpoint.\n\nPlease note that in order to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) the only valid redirect URLs are the ones from domains you have set when adding your platforms in the console interface.","responses":{"200":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"updateRecovery","weight":37,"cookies":false,"type":"","demo":"account\/update-recovery.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-recovery.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid reset token.","x-example":"[SECRET]"},"password":{"type":"string","description":"New user password. Must be between 8 and 256 chars.","x-example":null}},"required":["userId","secret","password"]}}}}}},"\/account\/sessions":{"get":{"summary":"List sessions","operationId":"accountListSessions","tags":["account"],"description":"Get the list of active sessions across different devices for the currently logged in user.","responses":{"200":{"description":"Sessions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/sessionList"}}}}},"x-appwrite":{"method":"listSessions","weight":24,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/sessions","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]},"delete":{"summary":"Delete sessions","operationId":"accountDeleteSessions","tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":35,"cookies":false,"type":"","demo":"account\/delete-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-sessions.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/account\/sessions\/anonymous":{"post":{"summary":"Create anonymous session","operationId":"accountCreateAnonymousSession","tags":["account"],"description":"Use this endpoint to allow a new user to register an anonymous account in your project. This route will also create a new session for the user. To allow the new user to convert an anonymous account to a normal account, you need to update its [email and password](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateEmail) or create an [OAuth2 session](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#CreateOAuth2Session).","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"createAnonymousSession","weight":19,"cookies":false,"type":"","demo":"account\/create-anonymous-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-anonymous.md","rate-limit":50,"rate-time":3600,"rate-key":"ip:{ip}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/sessions\/email":{"post":{"summary":"Create email password session","operationId":"accountCreateEmailPasswordSession","tags":["account"],"description":"Allow the user to login into their account by providing a valid email and password combination. This route will create a new session for the user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"createEmailPasswordSession","weight":8,"cookies":false,"type":"","demo":"account\/create-email-password-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-email-password.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","x-example":"password"}},"required":["email","password"]}}}}}},"\/account\/sessions\/magic-url":{"put":{"summary":"Create session (deprecated)","operationId":"accountUpdateMagicURLSession","tags":["account"],"description":"Use this endpoint to create a session from token. Provide the **userId** and **secret** parameters from the successful response of authentication flows initiated by token creation. For example, magic URL and phone login.","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateMagicURLSession","weight":16,"cookies":false,"type":"","demo":"account\/update-magic-u-r-l-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session.md","rate-limit":10,"rate-time":3600,"rate-key":"ip:{ip},userId:{param-userId}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/account\/sessions\/oauth2\/{provider}":{"get":{"summary":"Create OAuth2 session","operationId":"accountCreateOAuth2Session","tags":["account"],"description":"Allow the user to login to their account using the OAuth2 provider of their choice. Each OAuth2 provider should be enabled from the Appwrite console first. Use the success and failure arguments to provide a redirect URL's back to your app when login is completed.\n\nIf there is already an active session, the new session will be attached to the logged-in account. If there are no active sessions, the server will attempt to look for a user with the same email address as the email received from the OAuth2 provider and attach the new session to the existing user. If no matching user is found - the server will create a new user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).\n","responses":{"301":{"description":"File"}},"x-appwrite":{"method":"createOAuth2Session","weight":9,"cookies":false,"type":"webAuth","demo":"account\/create-o-auth2session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-oauth2.md","rate-limit":50,"rate-time":3600,"rate-key":"ip:{ip}","scope":"sessions.write","platforms":["client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"provider","description":"OAuth2 Provider. Currently, supported providers are: amazon, apple, auth0, authentik, autodesk, bitbucket, bitly, box, dailymotion, discord, disqus, dropbox, etsy, facebook, github, gitlab, google, linkedin, microsoft, notion, oidc, okta, paypal, paypalSandbox, podio, salesforce, slack, spotify, stripe, tradeshift, tradeshiftBox, twitch, wordpress, yahoo, yammer, yandex, zoho, zoom.","required":true,"schema":{"type":"string","x-example":"amazon","enum":["amazon","apple","auth0","authentik","autodesk","bitbucket","bitly","box","dailymotion","discord","disqus","dropbox","etsy","facebook","github","gitlab","google","linkedin","microsoft","notion","oidc","okta","paypal","paypalSandbox","podio","salesforce","slack","spotify","stripe","tradeshift","tradeshiftBox","twitch","wordpress","yahoo","yammer","yandex","zoho","zoom","mock"],"x-enum-name":"Provider","x-enum-keys":[]},"in":"path"},{"name":"success","description":"URL to redirect back to your app after a successful login attempt. Only URLs from hostnames in your project's platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","required":false,"schema":{"type":"string","format":"url","x-example":"https:\/\/example.com","default":""},"in":"query"},{"name":"failure","description":"URL to redirect back to your app after a failed login attempt. Only URLs from hostnames in your project's platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","required":false,"schema":{"type":"string","format":"url","x-example":"https:\/\/example.com","default":""},"in":"query"},{"name":"token","description":"Include token credentials in the final redirect, useful for server-side integrations, or when cookies are not available.","required":false,"schema":{"type":"boolean","x-example":false,"default":false},"in":"query"},{"name":"scopes","description":"A list of custom OAuth2 scopes. Check each provider internal docs for a list of supported scopes. Maximum of 100 scopes are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/sessions\/token":{"post":{"summary":"Create session","operationId":"accountCreateSession","tags":["account"],"description":"Use this endpoint to create a session from token. Provide the **userId** and **secret** parameters from the successful response of authentication flows initiated by token creation. For example, magic URL and phone login.","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"createSession","weight":17,"cookies":false,"type":"","demo":"account\/create-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session.md","rate-limit":10,"rate-time":3600,"rate-key":"ip:{ip},userId:{param-userId}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Secret of a token generated by login methods. For example, the `createMagicURLToken` or `createPhoneToken` methods.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/account\/sessions\/{sessionId}":{"get":{"summary":"Get session","operationId":"accountGetSession","tags":["account"],"description":"Use this endpoint to get a logged in user's session using a Session ID. Inputting 'current' will return the current session being used.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"getSession","weight":26,"cookies":false,"type":"","demo":"account\/get-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-session.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/sessions","offline-key":"{sessionId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to get the current device session.","required":true,"schema":{"type":"string","x-example":"[SESSION_ID]"},"in":"path"}]},"patch":{"summary":"Update OAuth session (refresh tokens)","operationId":"accountUpdateSession","tags":["account"],"description":"Access tokens have limited lifespan and expire to mitigate security risks. If session was created using an OAuth provider, this route can be used to \"refresh\" the access token.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateSession","weight":34,"cookies":false,"type":"","demo":"account\/update-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-session.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to update the current device session.","required":true,"schema":{"type":"string","x-example":"[SESSION_ID]"},"in":"path"}]},"delete":{"summary":"Delete session","operationId":"accountDeleteSession","tags":["account"],"description":"Logout the user. Use 'current' as the session ID to logout on this device, use a session ID to logout on another device. If you're looking to logout the user on all devices, use [Delete Sessions](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#deleteSessions) instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSession","weight":33,"cookies":false,"type":"","demo":"account\/delete-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-session.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to delete the current device session.","required":true,"schema":{"type":"string","x-example":"[SESSION_ID]"},"in":"path"}]}},"\/account\/status":{"patch":{"summary":"Update status","operationId":"accountUpdateStatus","tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateStatus","weight":32,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/account\/targets\/push":{"post":{"summary":"Create Account's push target","operationId":"accountCreatePushTarget","tags":["account"],"description":"","responses":{"201":{"description":"Target","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/target"}}}}},"x-appwrite":{"method":"createPushTarget","weight":21,"cookies":false,"type":"","demo":"account\/create-push-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"targetId":{"type":"string","description":"Target ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[TARGET_ID]"},"identifier":{"type":"string","description":"The target identifier (token, email, phone etc.)","x-example":"[IDENTIFIER]"},"providerId":{"type":"string","description":"Provider ID. Message will be sent to this target from the specified provider ID. If no provider ID is set the first setup provider will be used.","x-example":"[PROVIDER_ID]"}},"required":["targetId","identifier"]}}}}}},"\/account\/targets\/{targetId}\/push":{"put":{"summary":"Update Account's push target","operationId":"accountUpdatePushTarget","tags":["account"],"description":"","responses":{"200":{"description":"Target","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/target"}}}}},"x-appwrite":{"method":"updatePushTarget","weight":42,"cookies":false,"type":"","demo":"account\/update-push-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[]}],"parameters":[{"name":"targetId","description":"Target ID.","required":true,"schema":{"type":"string","x-example":"[TARGET_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"identifier":{"type":"string","description":"The target identifier (token, email, phone etc.)","x-example":"[IDENTIFIER]"}},"required":["identifier"]}}}}}},"\/account\/tokens\/magic-url":{"post":{"summary":"Create magic URL token","operationId":"accountCreateMagicURLToken","tags":["account"],"description":"Sends the user an email with a secret key for creating a session. If the provided user ID has not been registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [PUT \/account\/sessions\/magic-url](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateMagicURLSession) endpoint to complete the login process. The link sent to the user's email address is valid for 1 hour. If you are on a mobile device you can leave the URL parameter empty, so that the login completion will be handled by your Appwrite instance by default.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).\n","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createMagicURLToken","weight":15,"cookies":false,"type":"","demo":"account\/create-magic-u-r-l-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-token-magic-url.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"url":{"type":"string","description":"URL to redirect the user back to your app from the magic URL login. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"},"securityPhrase":{"type":"boolean","description":"Toggle for security phrase. If enabled, email will be send with a randomly generated phrase and the phrase will also be included in the response. Confirming phrases match increases the security of authentication flow.","x-example":false}},"required":["userId","email"]}}}}}},"\/account\/tokens\/phone":{"post":{"summary":"Create phone token","operationId":"accountCreatePhoneToken","tags":["account"],"description":"Sends the user an SMS with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [PUT \/account\/sessions\/phone](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updatePhoneSession) endpoint to complete the login process. The secret sent to the user's phone is valid for 15 minutes.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createPhoneToken","weight":18,"cookies":false,"type":"","demo":"account\/create-phone-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-token-phone.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},phone:{param-phone}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"}},"required":["userId","phone"]}}}}}},"\/account\/verification":{"post":{"summary":"Create email verification","operationId":"accountCreateVerification","tags":["account"],"description":"Use this endpoint to send a verification message to your user email address to confirm they are the valid owners of that address. Both the **userId** and **secret** arguments will be passed as query parameters to the URL you have provided to be attached to the verification email. The provided URL should redirect the user back to your app and allow you to complete the verification process by verifying both the **userId** and **secret** parameters. Learn more about how to [complete the verification process](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateVerification). The verification link sent to the user's email address is valid for 7 days.\n\nPlease note that in order to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md), the only valid redirect URLs are the ones from domains you have set when adding your platforms in the console interface.\n","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createVerification","weight":38,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"url":{"type":"string","description":"URL to redirect the user back to your app from the verification email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"}},"required":["url"]}}}}},"put":{"summary":"Create email verification (confirmation)","operationId":"accountUpdateVerification","tags":["account"],"description":"Use this endpoint to complete the user email verification process. Use both the **userId** and **secret** parameters that were attached to your app URL to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"updateVerification","weight":39,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/account\/verification\/phone":{"post":{"summary":"Create phone verification","operationId":"accountCreatePhoneVerification","tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updatePhone) endpoint. Learn more about how to [complete the verification process](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createPhoneVerification","weight":40,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{userId}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]},"put":{"summary":"Create phone verification (confirmation)","operationId":"accountUpdatePhoneVerification","tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"updatePhoneVerification","weight":41,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/avatars\/browsers\/{code}":{"get":{"summary":"Get browser icon","operationId":"avatarsGetBrowser","tags":["avatars"],"description":"You can use this endpoint to show different browser icons to your users. The code argument receives the browser code as it appears in your user [GET \/account\/sessions](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#getSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getBrowser","weight":44,"cookies":false,"type":"location","demo":"avatars\/get-browser.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-browser.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"code","description":"Browser Code.","required":true,"schema":{"type":"string","x-example":"aa","enum":["aa","an","ch","ci","cm","cr","ff","sf","mf","ps","oi","om","op","on"],"x-enum-name":"Browser","x-enum-keys":["Avant Browser","Android WebView Beta","Google Chrome","Google Chrome (iOS)","Google Chrome (Mobile)","Chromium","Mozilla Firefox","Safari","Mobile Safari","Microsoft Edge","Microsoft Edge (iOS)","Opera Mini","Opera","Opera (Next)"]},"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"}]}},"\/avatars\/credit-cards\/{code}":{"get":{"summary":"Get credit card icon","operationId":"avatarsGetCreditCard","tags":["avatars"],"description":"The credit card endpoint will return you the icon of the credit card provider you need. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getCreditCard","weight":43,"cookies":false,"type":"location","demo":"avatars\/get-credit-card.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-credit-card.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"code","description":"Credit Card Code. Possible values: amex, argencard, cabal, censosud, diners, discover, elo, hipercard, jcb, mastercard, naranja, targeta-shopping, union-china-pay, visa, mir, maestro.","required":true,"schema":{"type":"string","x-example":"amex","enum":["amex","argencard","cabal","censosud","diners","discover","elo","hipercard","jcb","mastercard","naranja","targeta-shopping","union-china-pay","visa","mir","maestro"],"x-enum-name":"CreditCard","x-enum-keys":["American Express","Argencard","Cabal","Consosud","Diners Club","Discover","Elo","Hipercard","JCB","Mastercard","Naranja","Tarjeta Shopping","Union China Pay","Visa","MIR","Maestro"]},"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"}]}},"\/avatars\/favicon":{"get":{"summary":"Get favicon","operationId":"avatarsGetFavicon","tags":["avatars"],"description":"Use this endpoint to fetch the favorite icon (AKA favicon) of any remote website URL.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFavicon","weight":47,"cookies":false,"type":"location","demo":"avatars\/get-favicon.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-favicon.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"url","description":"Website URL which you want to fetch the favicon from.","required":true,"schema":{"type":"string","format":"url","x-example":"https:\/\/example.com"},"in":"query"}]}},"\/avatars\/flags\/{code}":{"get":{"summary":"Get country flag","operationId":"avatarsGetFlag","tags":["avatars"],"description":"You can use this endpoint to show different country flags icons to your users. The code argument receives the 2 letter country code. Use width, height and quality arguments to change the output settings. Country codes follow the [ISO 3166-1](https:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFlag","weight":45,"cookies":false,"type":"location","demo":"avatars\/get-flag.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-flag.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"code","description":"Country Code. ISO Alpha-2 country code format.","required":true,"schema":{"type":"string","x-example":"af","enum":["af","ao","al","ad","ae","ar","am","ag","au","at","az","bi","be","bj","bf","bd","bg","bh","bs","ba","by","bz","bo","br","bb","bn","bt","bw","cf","ca","ch","cl","cn","ci","cm","cd","cg","co","km","cv","cr","cu","cy","cz","de","dj","dm","dk","do","dz","ec","eg","er","es","ee","et","fi","fj","fr","fm","ga","gb","ge","gh","gn","gm","gw","gq","gr","gd","gt","gy","hn","hr","ht","hu","id","in","ie","ir","iq","is","il","it","jm","jo","jp","kz","ke","kg","kh","ki","kn","kr","kw","la","lb","lr","ly","lc","li","lk","ls","lt","lu","lv","ma","mc","md","mg","mv","mx","mh","mk","ml","mt","mm","me","mn","mz","mr","mu","mw","my","na","ne","ng","ni","nl","no","np","nr","nz","om","pk","pa","pe","ph","pw","pg","pl","kp","pt","py","qa","ro","ru","rw","sa","sd","sn","sg","sb","sl","sv","sm","so","rs","ss","st","sr","sk","si","se","sz","sc","sy","td","tg","th","tj","tm","tl","to","tt","tn","tr","tv","tz","ug","ua","uy","us","uz","va","vc","ve","vn","vu","ws","ye","za","zm","zw"],"x-enum-name":"Flag","x-enum-keys":["Afghanistan","Angola","Albania","Andorra","United Arab Emirates","Argentina","Armenia","Antigua and Barbuda","Australia","Austria","Azerbaijan","Burundi","Belgium","Benin","Burkina Faso","Bangladesh","Bulgaria","Bahrain","Bahamas","Bosnia and Herzegovina","Belarus","Belize","Bolivia","Brazil","Barbados","Brunei Darussalam","Bhutan","Botswana","Central African Republic","Canada","Switzerland","Chile","China","C\u00f4te d'Ivoire","Cameroon","Democratic Republic of the Congo","Republic of the Congo","Colombia","Comoros","Cape Verde","Costa Rica","Cuba","Cyprus","Czech Republic","Germany","Djibouti","Dominica","Denmark","Dominican Republic","Algeria","Ecuador","Egypt","Eritrea","Spain","Estonia","Ethiopia","Finland","Fiji","France","Micronesia (Federated States of)","Gabon","United Kingdom","Georgia","Ghana","Guinea","Gambia","Guinea-Bissau","Equatorial Guinea","Greece","Grenada","Guatemala","Guyana","Honduras","Croatia","Haiti","Hungary","Indonesia","India","Ireland","Iran (Islamic Republic of)","Iraq","Iceland","Israel","Italy","Jamaica","Jordan","Japan","Kazakhstan","Kenya","Kyrgyzstan","Cambodia","Kiribati","Saint Kitts and Nevis","South Korea","Kuwait","Lao People's Democratic Republic","Lebanon","Liberia","Libya","Saint Lucia","Liechtenstein","Sri Lanka","Lesotho","Lithuania","Luxembourg","Latvia","Morocco","Monaco","Moldova","Madagascar","Maldives","Mexico","Marshall Islands","North Macedonia","Mali","Malta","Myanmar","Montenegro","Mongolia","Mozambique","Mauritania","Mauritius","Malawi","Malaysia","Namibia","Niger","Nigeria","Nicaragua","Netherlands","Norway","Nepal","Nauru","New Zealand","Oman","Pakistan","Panama","Peru","Philippines","Palau","Papua New Guinea","Poland","North Korea","Portugal","Paraguay","Qatar","Romania","Russia","Rwanda","Saudi Arabia","Sudan","Senegal","Singapore","Solomon Islands","Sierra Leone","El Salvador","San Marino","Somalia","Serbia","South Sudan","Sao Tome and Principe","Suriname","Slovakia","Slovenia","Sweden","Eswatini","Seychelles","Syria","Chad","Togo","Thailand","Tajikistan","Turkmenistan","Timor-Leste","Tonga","Trinidad and Tobago","Tunisia","Turkey","Tuvalu","Tanzania","Uganda","Ukraine","Uruguay","United States","Uzbekistan","Vatican City","Saint Vincent and the Grenadines","Venezuela","Vietnam","Vanuatu","Samoa","Yemen","South Africa","Zambia","Zimbabwe"]},"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"}]}},"\/avatars\/image":{"get":{"summary":"Get image from URL","operationId":"avatarsGetImage","tags":["avatars"],"description":"Use this endpoint to fetch a remote image URL and crop it to any image size you want. This endpoint is very useful if you need to crop and display remote images in your app or in case you want to make sure a 3rd party image is properly served using a TLS protocol.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getImage","weight":46,"cookies":false,"type":"location","demo":"avatars\/get-image.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-image.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"url","description":"Image URL which you want to crop.","required":true,"schema":{"type":"string","format":"url","x-example":"https:\/\/example.com"},"in":"query"},{"name":"width","description":"Resize preview image width, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get user initials","operationId":"avatarsGetInitials","tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getInitials","weight":49,"cookies":false,"type":"location","demo":"avatars\/get-initials.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-initials.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"name","description":"Full Name. When empty, current user name or email will be used. Max length: 128 chars.","required":false,"schema":{"type":"string","x-example":"[NAME]","default":""},"in":"query"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":500},"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":500},"in":"query"},{"name":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"schema":{"type":"string","default":""},"in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR code","operationId":"avatarsGetQR","tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getQR","weight":48,"cookies":false,"type":"location","demo":"avatars\/get-q-r.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-qr.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"text","description":"Plain text to be converted to QR code image.","required":true,"schema":{"type":"string","x-example":"[TEXT]"},"in":"query"},{"name":"size","description":"QR code size. Pass an integer between 1 to 1000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":1,"default":400},"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":1},"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"schema":{"type":"boolean","x-example":false,"default":false},"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List documents","operationId":"databasesListDocuments","tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/documentList"}}}}},"x-appwrite":{"method":"listDocuments","weight":93,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"post":{"summary":"Create document","operationId":"databasesCreateDocument","tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"createDocument","weight":92,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, only the current user is granted all permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get document","operationId":"databasesGetDocument","tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"getDocument","weight":94,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only method allowed is select.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"patch":{"summary":"Update document","operationId":"databasesUpdateDocument","tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"updateDocument","weight":96,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete document","operationId":"databasesDeleteDocument","tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":97,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List executions","operationId":"functionsListExecutions","tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/executionList"}}}}},"x-appwrite":{"method":"listExecutions","weight":268,"cookies":false,"type":"","demo":"functions\/list-executions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-executions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, responseStatusCode, duration","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create execution","operationId":"functionsCreateExecution","tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/execution"}}}}},"x-appwrite":{"method":"createExecution","weight":267,"cookies":false,"type":"","demo":"functions\/create-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-execution.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"body":{"type":"string","description":"HTTP body of execution. Default value is empty string.","x-example":"[BODY]"},"async":{"type":"boolean","description":"Execute code in the background. Default value is false.","x-example":false},"path":{"type":"string","description":"HTTP path of execution. Path can include query params. Default value is \/","x-example":"[PATH]"},"method":{"type":"string","description":"HTTP method of execution. Default value is GET.","x-example":"GET","enum":["GET","POST","PUT","PATCH","DELETE","OPTIONS"],"x-enum-name":null,"x-enum-keys":[]},"headers":{"type":"object","description":"HTTP headers of execution. Defaults to empty.","x-example":"{}"}}}}}}}},"\/functions\/{functionId}\/executions\/{executionId}":{"get":{"summary":"Get execution","operationId":"functionsGetExecution","tags":["functions"],"description":"Get a function execution log by its unique ID.","responses":{"200":{"description":"Execution","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/execution"}}}}},"x-appwrite":{"method":"getExecution","weight":269,"cookies":false,"type":"","demo":"functions\/get-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-execution.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"executionId","description":"Execution ID.","required":true,"schema":{"type":"string","x-example":"[EXECUTION_ID]"},"in":"path"}]}},"\/graphql":{"post":{"summary":"GraphQL endpoint","operationId":"graphqlQuery","tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/any"}}}}},"x-appwrite":{"method":"query","weight":289,"cookies":false,"type":"graphql","demo":"graphql\/query.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/graphql\/mutation":{"post":{"summary":"GraphQL endpoint","operationId":"graphqlMutation","tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/any"}}}}},"x-appwrite":{"method":"mutation","weight":288,"cookies":false,"type":"graphql","demo":"graphql\/mutation.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/locale":{"get":{"summary":"Get user locale","operationId":"localeGet","tags":["locale"],"description":"Get the current user location based on IP. Returns an object with user country code, country name, continent name, continent code, ip address and suggested currency. You can use the locale header to get the data in a supported language.\n\n([IP Geolocation by DB-IP](https:\/\/db-ip.com))","responses":{"200":{"description":"Locale","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/locale"}}}}},"x-appwrite":{"method":"get","weight":101,"cookies":false,"type":"","demo":"locale\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-locale.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/localed","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/locale\/codes":{"get":{"summary":"List Locale Codes","operationId":"localeListCodes","tags":["locale"],"description":"List of all locale codes in [ISO 639-1](https:\/\/en.wikipedia.org\/wiki\/List_of_ISO_639-1_codes).","responses":{"200":{"description":"Locale codes list","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/localeCodeList"}}}}},"x-appwrite":{"method":"listCodes","weight":102,"cookies":false,"type":"","demo":"locale\/list-codes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-locale-codes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/localeCode","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/locale\/continents":{"get":{"summary":"List continents","operationId":"localeListContinents","tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/continentList"}}}}},"x-appwrite":{"method":"listContinents","weight":106,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/continents","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List countries","operationId":"localeListCountries","tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountries","weight":103,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/countries","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU countries","operationId":"localeListCountriesEU","tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountriesEU","weight":104,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/countries\/eu","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List countries phone codes","operationId":"localeListCountriesPhones","tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/phoneList"}}}}},"x-appwrite":{"method":"listCountriesPhones","weight":105,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/countries\/phones","offline-key":"","offline-response-key":"countryCode","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List currencies","operationId":"localeListCurrencies","tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/currencyList"}}}}},"x-appwrite":{"method":"listCurrencies","weight":107,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/currencies","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List languages","operationId":"localeListLanguages","tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/languageList"}}}}},"x-appwrite":{"method":"listLanguages","weight":108,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/languages","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/messaging\/topics\/{topicId}\/subscribers":{"post":{"summary":"Create a subscriber.","operationId":"messagingCreateSubscriber","tags":["messaging"],"description":"","responses":{"201":{"description":"Subscriber","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/subscriber"}}}}},"x-appwrite":{"method":"createSubscriber","weight":338,"cookies":false,"type":"","demo":"messaging\/create-subscriber.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-subscriber.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.write","platforms":["server","client","console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[],"Session":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID to subscribe to.","required":true,"schema":{"type":"string","x-example":"[TOPIC_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"subscriberId":{"type":"string","description":"Subscriber ID. Choose a custom Subscriber ID or a new Subscriber ID.","x-example":"[SUBSCRIBER_ID]"},"targetId":{"type":"string","description":"Target ID. The target ID to link to the specified Topic ID.","x-example":"[TARGET_ID]"}},"required":["subscriberId","targetId"]}}}}}},"\/messaging\/topics\/{topicId}\/subscribers\/{subscriberId}":{"delete":{"summary":"Delete a subscriber.","operationId":"messagingDeleteSubscriber","tags":["messaging"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSubscriber","weight":342,"cookies":false,"type":"","demo":"messaging\/delete-subscriber.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-subscriber.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.write","platforms":["server","client","console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[],"Session":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID subscribed to.","required":true,"schema":{"type":"string","x-example":"[TOPIC_ID]"},"in":"path"},{"name":"subscriberId","description":"Subscriber ID.","required":true,"schema":{"type":"string","x-example":"[SUBSCRIBER_ID]"},"in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files":{"get":{"summary":"List files","operationId":"storageListFiles","tags":["storage"],"description":"Get a list of all the user files. You can use the query params to filter your results.","responses":{"200":{"description":"Files List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/fileList"}}}}},"x-appwrite":{"method":"listFiles","weight":181,"cookies":false,"type":"","demo":"storage\/list-files.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/list-files.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create file","operationId":"storageCreateFile","tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"createFile","weight":180,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId},chunkId:{chunkId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"}],"requestBody":{"content":{"multipart\/form-data":{"schema":{"type":"object","properties":{"fileId":{"type":"string","description":"File ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[FILE_ID]","x-upload-id":true},"file":{"type":"string","description":"Binary file. Appwrite SDKs provide helpers to handle file input. [Learn about file input](https:\/\/appwrite.io\/docs\/storage#file-input).","x-example":null},"permissions":{"type":"array","description":"An array of permission strings. By default, only the current user is granted all permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["fileId","file"]}}}}}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get file","operationId":"storageGetFile","tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"getFile","weight":182,"cookies":false,"type":"","demo":"storage\/get-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File ID.","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"}]},"put":{"summary":"Update file","operationId":"storageUpdateFile","tags":["storage"],"description":"Update a file by its unique ID. Only users with write permissions have access to update this resource.","responses":{"200":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"updateFile","weight":186,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File unique ID.","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Name of the file","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission string. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":187,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File ID.","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/download":{"get":{"summary":"Get file for download","operationId":"storageGetFileDownload","tags":["storage"],"description":"Get a file content by its unique ID. The endpoint response return with a 'Content-Disposition: attachment' header that tells the browser to start downloading the file to user downloads directory.","responses":{"200":{"description":"File"}},"x-appwrite":{"method":"getFileDownload","weight":184,"cookies":false,"type":"location","demo":"storage\/get-file-download.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-download.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File ID.","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/preview":{"get":{"summary":"Get file preview","operationId":"storageGetFilePreview","tags":["storage"],"description":"Get a file preview image. Currently, this method supports preview for image files (jpg, png, and gif), other supported formats, like pdf, docs, slides, and spreadsheets, will return the file icon image. You can also pass query string arguments for cutting and resizing your preview image. Preview is supported only for image files smaller than 10MB.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFilePreview","weight":183,"cookies":false,"type":"location","demo":"storage\/get-file-preview.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-preview.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File ID","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"},{"name":"width","description":"Resize preview image width, Pass an integer between 0 to 4000.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 4000.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"gravity","description":"Image crop gravity. Can be one of center,top-left,top,top-right,left,right,bottom-left,bottom,bottom-right","required":false,"schema":{"type":"string","x-example":"center","enum":["center","top-left","top","top-right","left","right","bottom-left","bottom","bottom-right"],"x-enum-name":"ImageGravity","x-enum-keys":[],"default":"center"},"in":"query"},{"name":"quality","description":"Preview image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"borderWidth","description":"Preview image border in pixels. Pass an integer between 0 to 100. Defaults to 0.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"borderColor","description":"Preview image border color. Use a valid HEX color, no # is needed for prefix.","required":false,"schema":{"type":"string","default":""},"in":"query"},{"name":"borderRadius","description":"Preview image border radius in pixels. Pass an integer between 0 to 4000.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"opacity","description":"Preview image opacity. Only works with images having an alpha channel (like png). Pass a number between 0 to 1.","required":false,"schema":{"type":"number","format":"float","x-example":0,"default":1},"in":"query"},{"name":"rotation","description":"Preview image rotation in degrees. Pass an integer between -360 and 360.","required":false,"schema":{"type":"integer","format":"int32","x-example":-360,"default":0},"in":"query"},{"name":"background","description":"Preview image background color. Only works with transparent images (png). Use a valid HEX color, no # is needed for prefix.","required":false,"schema":{"type":"string","default":""},"in":"query"},{"name":"output","description":"Output format type (jpeg, jpg, png, gif and webp).","required":false,"schema":{"type":"string","x-example":"jpg","enum":["jpg","jpeg","gif","png","webp"],"x-enum-name":"ImageFormat","x-enum-keys":[],"default":""},"in":"query"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/view":{"get":{"summary":"Get file for view","operationId":"storageGetFileView","tags":["storage"],"description":"Get a file content by its unique ID. This endpoint is similar to the download method but returns with no 'Content-Disposition: attachment' header.","responses":{"200":{"description":"File"}},"x-appwrite":{"method":"getFileView","weight":185,"cookies":false,"type":"location","demo":"storage\/get-file-view.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-view.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File ID.","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"}]}},"\/teams":{"get":{"summary":"List teams","operationId":"teamsList","tags":["teams"],"description":"Get a list of all the teams in which the current user is a member. You can use the parameters to filter your results.","responses":{"200":{"description":"Teams List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/teamList"}}}}},"x-appwrite":{"method":"list","weight":191,"cookies":false,"type":"","demo":"teams\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-teams.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create team","operationId":"teamsCreate","tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"create","weight":190,"cookies":false,"type":"","demo":"teams\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/create-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"teamId":{"type":"string","description":"Team ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[TEAM_ID]"},"name":{"type":"string","description":"Team name. Max length: 128 chars.","x-example":"[NAME]"},"roles":{"type":"array","description":"Array of strings. Use this param to set the roles in the team for the user who created it. The default role is **owner**. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}}}}},"\/teams\/{teamId}":{"get":{"summary":"Get team","operationId":"teamsGet","tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"get","weight":192,"cookies":false,"type":"","demo":"teams\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams","offline-key":"{teamId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}]},"put":{"summary":"Update name","operationId":"teamsUpdateName","tags":["teams"],"description":"Update the team's name by its unique ID.","responses":{"200":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"updateName","weight":194,"cookies":false,"type":"","demo":"teams\/update-name.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-name.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams","offline-key":"{teamId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"New team name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["name"]}}}}},"delete":{"summary":"Delete team","operationId":"teamsDelete","tags":["teams"],"description":"Delete a team using its ID. Only team members with the owner role can delete the team.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":196,"cookies":false,"type":"","demo":"teams\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/delete-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}]}},"\/teams\/{teamId}\/memberships":{"get":{"summary":"List team memberships","operationId":"teamsListMemberships","tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"listMemberships","weight":198,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/memberships","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create team membership","operationId":"teamsCreateMembership","tags":["teams"],"description":"Invite a new member to join your team. Provide an ID for existing users, or invite unregistered users using an email or phone number. If initiated from a Client SDK, Appwrite will send an email or sms with a link to join the team to the invited user, and an account will be created for them if one doesn't exist. If initiated from a Server SDK, the new member will be added automatically to the team.\n\nYou only need to provide one of a user ID, email, or phone number. Appwrite will prioritize accepting the user ID > email > phone number if you provide more than one of these parameters.\n\nUse the `url` parameter to redirect the user from the invitation email to your app. After the user is redirected, use the [Update Team Membership Status](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/teams#updateMembershipStatus) endpoint to allow the user to accept the invitation to the team. \n\nPlease note that to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) Appwrite will accept the only redirect URLs under the domains you have added as a platform on the Appwrite Console.\n","responses":{"201":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"createMembership","weight":197,"cookies":false,"type":"","demo":"teams\/create-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/create-team-membership.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"email":{"type":"string","description":"Email of the new team member.","x-example":"email@example.com"},"userId":{"type":"string","description":"ID of the user to be added to a team.","x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"roles":{"type":"array","description":"Array of strings. Use this param to set the user roles in the team. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"},"name":{"type":"string","description":"Name of the new team member. Max length: 128 chars.","x-example":"[NAME]"}},"required":["roles"]}}}}}},"\/teams\/{teamId}\/memberships\/{membershipId}":{"get":{"summary":"Get team membership","operationId":"teamsGetMembership","tags":["teams"],"description":"Get a team member by the membership unique id. All team members have read access for this resource.","responses":{"200":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"getMembership","weight":199,"cookies":false,"type":"","demo":"teams\/get-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-member.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/memberships","offline-key":"{membershipId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"schema":{"type":"string","x-example":"[MEMBERSHIP_ID]"},"in":"path"}]},"patch":{"summary":"Update membership","operationId":"teamsUpdateMembership","tags":["teams"],"description":"Modify the roles of a team member. Only team members with the owner role have access to this endpoint. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions).\n","responses":{"200":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"updateMembership","weight":200,"cookies":false,"type":"","demo":"teams\/update-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"schema":{"type":"string","x-example":"[MEMBERSHIP_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"roles":{"type":"array","description":"An array of strings. Use this param to set the user's roles in the team. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["roles"]}}}}},"delete":{"summary":"Delete team membership","operationId":"teamsDeleteMembership","tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":202,"cookies":false,"type":"","demo":"teams\/delete-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/delete-team-membership.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"schema":{"type":"string","x-example":"[MEMBERSHIP_ID]"},"in":"path"}]}},"\/teams\/{teamId}\/memberships\/{membershipId}\/status":{"patch":{"summary":"Update team membership status","operationId":"teamsUpdateMembershipStatus","tags":["teams"],"description":"Use this endpoint to allow a user to accept an invitation to join a team after being redirected back to your app from the invitation email received by the user.\n\nIf the request is successful, a session for the user is automatically created.\n","responses":{"200":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"updateMembershipStatus","weight":201,"cookies":false,"type":"","demo":"teams\/update-membership-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"public","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"schema":{"type":"string","x-example":"[MEMBERSHIP_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Secret key.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/teams\/{teamId}\/prefs":{"get":{"summary":"Get team preferences","operationId":"teamsGetPrefs","tags":["teams"],"description":"Get the team's shared preferences by its unique ID. If a preference doesn't need to be shared by all team members, prefer storing them in [user preferences](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#getPrefs).","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"getPrefs","weight":193,"cookies":false,"type":"","demo":"teams\/get-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/prefs","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}]},"put":{"summary":"Update preferences","operationId":"teamsUpdatePrefs","tags":["teams"],"description":"Update the team's preferences by its unique ID. The object you pass is stored as is and replaces any previous value. The maximum allowed prefs size is 64kB and throws an error if exceeded.","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"updatePrefs","weight":195,"cookies":false,"type":"","demo":"teams\/update-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/prefs","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"prefs":{"type":"object","description":"Prefs key-value JSON object.","x-example":"{}"}},"required":["prefs"]}}}}}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"project","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]},{"name":"proxy","description":"The Proxy Service allows you to configure actions for your domains beyond DNS configuration.","x-globalAttributes":[]},{"name":"graphql","description":"The GraphQL API allows you to query and mutate your Appwrite server using GraphQL.","x-globalAttributes":[]},{"name":"console","description":"The Console service allows you to interact with console relevant informations.","x-globalAttributes":[]},{"name":"migrations","description":"The Migrations service allows you to migrate third-party data to your Appwrite project.","x-globalAttributes":[]},{"name":"messaging","description":"The Messaging service allows you to send messages to any provider type (SMTP, push notification, SMS, etc.).","x-globalAttributes":[]}],"components":{"schemas":{"any":{"description":"Any","type":"object","additionalProperties":true},"error":{"description":"Error","type":"object","properties":{"message":{"type":"string","description":"Error message.","x-example":"Not found"},"code":{"type":"string","description":"Error code.","x-example":"404"},"type":{"type":"string","description":"Error type. You can learn more about all the error types at https:\/\/appwrite.io\/docs\/error-codes#errorTypes","x-example":"not_found"},"version":{"type":"string","description":"Server version number.","x-example":"1.0"}},"required":["message","code","type","version"]},"documentList":{"description":"Documents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of documents documents that matched your query.","x-example":5,"format":"int32"},"documents":{"type":"array","description":"List of documents.","items":{"$ref":"#\/components\/schemas\/document"},"x-example":""}},"required":["total","documents"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of sessions documents that matched your query.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"$ref":"#\/components\/schemas\/session"},"x-example":""}},"required":["total","sessions"]},"identityList":{"description":"Identities List","type":"object","properties":{"total":{"type":"integer","description":"Total number of identities documents that matched your query.","x-example":5,"format":"int32"},"identities":{"type":"array","description":"List of identities.","items":{"$ref":"#\/components\/schemas\/identity"},"x-example":""}},"required":["total","identities"]},"logList":{"description":"Logs List","type":"object","properties":{"total":{"type":"integer","description":"Total number of logs documents that matched your query.","x-example":5,"format":"int32"},"logs":{"type":"array","description":"List of logs.","items":{"$ref":"#\/components\/schemas\/log"},"x-example":""}},"required":["total","logs"]},"fileList":{"description":"Files List","type":"object","properties":{"total":{"type":"integer","description":"Total number of files documents that matched your query.","x-example":5,"format":"int32"},"files":{"type":"array","description":"List of files.","items":{"$ref":"#\/components\/schemas\/file"},"x-example":""}},"required":["total","files"]},"teamList":{"description":"Teams List","type":"object","properties":{"total":{"type":"integer","description":"Total number of teams documents that matched your query.","x-example":5,"format":"int32"},"teams":{"type":"array","description":"List of teams.","items":{"$ref":"#\/components\/schemas\/team"},"x-example":""}},"required":["total","teams"]},"membershipList":{"description":"Memberships List","type":"object","properties":{"total":{"type":"integer","description":"Total number of memberships documents that matched your query.","x-example":5,"format":"int32"},"memberships":{"type":"array","description":"List of memberships.","items":{"$ref":"#\/components\/schemas\/membership"},"x-example":""}},"required":["total","memberships"]},"executionList":{"description":"Executions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of executions documents that matched your query.","x-example":5,"format":"int32"},"executions":{"type":"array","description":"List of executions.","items":{"$ref":"#\/components\/schemas\/execution"},"x-example":""}},"required":["total","executions"]},"countryList":{"description":"Countries List","type":"object","properties":{"total":{"type":"integer","description":"Total number of countries documents that matched your query.","x-example":5,"format":"int32"},"countries":{"type":"array","description":"List of countries.","items":{"$ref":"#\/components\/schemas\/country"},"x-example":""}},"required":["total","countries"]},"continentList":{"description":"Continents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of continents documents that matched your query.","x-example":5,"format":"int32"},"continents":{"type":"array","description":"List of continents.","items":{"$ref":"#\/components\/schemas\/continent"},"x-example":""}},"required":["total","continents"]},"languageList":{"description":"Languages List","type":"object","properties":{"total":{"type":"integer","description":"Total number of languages documents that matched your query.","x-example":5,"format":"int32"},"languages":{"type":"array","description":"List of languages.","items":{"$ref":"#\/components\/schemas\/language"},"x-example":""}},"required":["total","languages"]},"currencyList":{"description":"Currencies List","type":"object","properties":{"total":{"type":"integer","description":"Total number of currencies documents that matched your query.","x-example":5,"format":"int32"},"currencies":{"type":"array","description":"List of currencies.","items":{"$ref":"#\/components\/schemas\/currency"},"x-example":""}},"required":["total","currencies"]},"phoneList":{"description":"Phones List","type":"object","properties":{"total":{"type":"integer","description":"Total number of phones documents that matched your query.","x-example":5,"format":"int32"},"phones":{"type":"array","description":"List of phones.","items":{"$ref":"#\/components\/schemas\/phone"},"x-example":""}},"required":["total","phones"]},"localeCodeList":{"description":"Locale codes list","type":"object","properties":{"total":{"type":"integer","description":"Total number of localeCodes documents that matched your query.","x-example":5,"format":"int32"},"localeCodes":{"type":"array","description":"List of localeCodes.","items":{"$ref":"#\/components\/schemas\/localeCode"},"x-example":""}},"required":["total","localeCodes"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"user":{"description":"User","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"password":{"type":"string","description":"Hashed user password.","x-example":"$argon2id$v=19$m=2048,t=4,p=3$aUZjLnliVWRINmFNTWMudg$5S+x+7uA31xFnrHFT47yFwcJeaP0w92L\/4LdgrVRXxE","nullable":true},"hash":{"type":"string","description":"Password hashing algorithm.","x-example":"argon2","nullable":true},"hashOptions":{"type":"object","description":"Password hashing algorithm configuration.","x-example":{},"items":{"oneOf":[{"$ref":"#\/components\/schemas\/algoArgon2"},{"$ref":"#\/components\/schemas\/algoScrypt"},{"$ref":"#\/components\/schemas\/algoScryptModified"},{"$ref":"#\/components\/schemas\/algoBcrypt"},{"$ref":"#\/components\/schemas\/algoPhpass"},{"$ref":"#\/components\/schemas\/algoSha"},{"$ref":"#\/components\/schemas\/algoMd5"}]},"nullable":true},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"labels":{"type":"array","description":"Labels for the user.","items":{"type":"string"},"x-example":["vip"]},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"$ref":"#\/components\/schemas\/preferences"}},"targets":{"type":"array","description":"A user-owned message receiver. A single user may have multiple e.g. emails, phones, and a browser. Each target is registered with a single provider.","items":{"$ref":"#\/components\/schemas\/target"},"x-example":[]},"accessedAt":{"type":"string","description":"Most recent access date in ISO 8601 format. This attribute is only updated again after 24 hours.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","$updatedAt","name","registration","status","labels","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs","targets","accessedAt"]},"algoMd5":{"description":"AlgoMD5","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"md5"}},"required":["type"]},"algoSha":{"description":"AlgoSHA","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"sha"}},"required":["type"]},"algoPhpass":{"description":"AlgoPHPass","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"phpass"}},"required":["type"]},"algoBcrypt":{"description":"AlgoBcrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"bcrypt"}},"required":["type"]},"algoScrypt":{"description":"AlgoScrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scrypt"},"costCpu":{"type":"integer","description":"CPU complexity of computed hash.","x-example":8,"format":"int32"},"costMemory":{"type":"integer","description":"Memory complexity of computed hash.","x-example":14,"format":"int32"},"costParallel":{"type":"integer","description":"Parallelization of computed hash.","x-example":1,"format":"int32"},"length":{"type":"integer","description":"Length used to compute hash.","x-example":64,"format":"int32"}},"required":["type","costCpu","costMemory","costParallel","length"]},"algoScryptModified":{"description":"AlgoScryptModified","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scryptMod"},"salt":{"type":"string","description":"Salt used to compute hash.","x-example":"UxLMreBr6tYyjQ=="},"saltSeparator":{"type":"string","description":"Separator used to compute hash.","x-example":"Bw=="},"signerKey":{"type":"string","description":"Key used to compute hash.","x-example":"XyEKE9RcTDeLEsL\/RjwPDBv\/RqDl8fb3gpYEOQaPihbxf1ZAtSOHCjuAAa7Q3oHpCYhXSN9tizHgVOwn6krflQ=="}},"required":["type","salt","saltSeparator","signerKey"]},"algoArgon2":{"description":"AlgoArgon2","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"argon2"},"memoryCost":{"type":"integer","description":"Memory used to compute hash.","x-example":65536,"format":"int32"},"timeCost":{"type":"integer","description":"Amount of time consumed to compute hash","x-example":4,"format":"int32"},"threads":{"type":"integer","description":"Number of threads used to compute hash.","x-example":3,"format":"int32"}},"required":["type","memoryCost","timeCost","threads"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true},"secret":{"type":"string","description":"Secret used to authenticate the user. Only included if the request was made with an API key","x-example":"5e5bb8c16897e"}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current","secret"]},"identity":{"description":"Identity","type":"object","properties":{"$id":{"type":"string","description":"Identity ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Identity creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Identity update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"provider":{"type":"string","description":"Identity Provider.","x-example":"email"},"providerUid":{"type":"string","description":"ID of the User in the Identity Provider.","x-example":"5e5bb8c16897e"},"providerEmail":{"type":"string","description":"Email of the User in the Identity Provider.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Identity Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Identity Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"}},"required":["$id","$createdAt","$updatedAt","userId","provider","providerUid","providerEmail","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"securityPhrase":{"type":"string","description":"Security phrase of a token. Empty if security phrase was not requested when creating a token. It includes randomly generated phrase which is also sent in the external resource such as email.","x-example":"Golden Fox"}},"required":["$id","$createdAt","userId","secret","expire","securityPhrase"]},"jwt":{"description":"JWT","type":"object","properties":{"jwt":{"type":"string","description":"JWT encoded string.","x-example":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c"}},"required":["jwt"]},"locale":{"description":"Locale","type":"object","properties":{"ip":{"type":"string","description":"User IP address.","x-example":"127.0.0.1"},"countryCode":{"type":"string","description":"Country code in [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) two-character format","x-example":"US"},"country":{"type":"string","description":"Country name. This field support localization.","x-example":"United States"},"continentCode":{"type":"string","description":"Continent code. A two character continent code \"AF\" for Africa, \"AN\" for Antarctica, \"AS\" for Asia, \"EU\" for Europe, \"NA\" for North America, \"OC\" for Oceania, and \"SA\" for South America.","x-example":"NA"},"continent":{"type":"string","description":"Continent name. This field support localization.","x-example":"North America"},"eu":{"type":"boolean","description":"True if country is part of the European Union.","x-example":false},"currency":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format","x-example":"USD"}},"required":["ip","countryCode","country","continentCode","continent","eu","currency"]},"localeCode":{"description":"LocaleCode","type":"object","properties":{"code":{"type":"string","description":"Locale codes in [ISO 639-1](https:\/\/en.wikipedia.org\/wiki\/List_of_ISO_639-1_codes)","x-example":"en-us"},"name":{"type":"string","description":"Locale name","x-example":"US"}},"required":["code","name"]},"file":{"description":"File","type":"object","properties":{"$id":{"type":"string","description":"File ID.","x-example":"5e5ea5c16897e"},"bucketId":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"},"prefs":{"type":"object","description":"Team preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"$ref":"#\/components\/schemas\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","total","prefs"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":["owner"]}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","roles"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"requestMethod":{"type":"string","description":"HTTP request method type.","x-example":"GET"},"requestPath":{"type":"string","description":"HTTP request path and query.","x-example":"\/articles?id=5"},"requestHeaders":{"type":"array","description":"HTTP response headers as a key-value object. This will return only whitelisted headers. All headers are returned if execution is created as synchronous.","items":{"$ref":"#\/components\/schemas\/headers"},"x-example":[{"Content-Type":"application\/json"}]},"responseStatusCode":{"type":"integer","description":"HTTP response status code.","x-example":200,"format":"int32"},"responseBody":{"type":"string","description":"HTTP response body. This will return empty unless execution is created as synchronous.","x-example":"Developers are awesome."},"responseHeaders":{"type":"array","description":"HTTP response headers as a key-value object. This will return only whitelisted headers. All headers are returned if execution is created as synchronous.","items":{"$ref":"#\/components\/schemas\/headers"},"x-example":[{"Content-Type":"application\/json"}]},"logs":{"type":"string","description":"Function logs. Includes the last 4,000 characters. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"errors":{"type":"string","description":"Function errors. Includes the last 4,000 characters. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"Function execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","requestMethod","requestPath","requestHeaders","responseStatusCode","responseBody","responseHeaders","logs","errors","duration"]},"country":{"description":"Country","type":"object","properties":{"name":{"type":"string","description":"Country name.","x-example":"United States"},"code":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"}},"required":["name","code"]},"continent":{"description":"Continent","type":"object","properties":{"name":{"type":"string","description":"Continent name.","x-example":"Europe"},"code":{"type":"string","description":"Continent two letter code.","x-example":"EU"}},"required":["name","code"]},"language":{"description":"Language","type":"object","properties":{"name":{"type":"string","description":"Language name.","x-example":"Italian"},"code":{"type":"string","description":"Language two-character ISO 639-1 codes.","x-example":"it"},"nativeName":{"type":"string","description":"Language native name.","x-example":"Italiano"}},"required":["name","code","nativeName"]},"currency":{"description":"Currency","type":"object","properties":{"symbol":{"type":"string","description":"Currency symbol.","x-example":"$"},"name":{"type":"string","description":"Currency name.","x-example":"US dollar"},"symbolNative":{"type":"string","description":"Currency native symbol.","x-example":"$"},"decimalDigits":{"type":"integer","description":"Number of decimal digits.","x-example":2,"format":"int32"},"rounding":{"type":"number","description":"Currency digit rounding.","x-example":0,"format":"double"},"code":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format.","x-example":"USD"},"namePlural":{"type":"string","description":"Currency plural name","x-example":"US dollars"}},"required":["symbol","name","symbolNative","decimalDigits","rounding","code","namePlural"]},"phone":{"description":"Phone","type":"object","properties":{"code":{"type":"string","description":"Phone code.","x-example":"+1"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["code","countryCode","countryName"]},"headers":{"description":"Headers","type":"object","properties":{"name":{"type":"string","description":"Header name.","x-example":"Content-Type"},"value":{"type":"string","description":"Header value.","x-example":"application\/json"}},"required":["name","value"]},"subscriber":{"description":"Subscriber","type":"object","properties":{"$id":{"type":"string","description":"Subscriber ID.","x-example":"259125845563242502"},"$createdAt":{"type":"string","description":"Subscriber creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Subscriber update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"targetId":{"type":"string","description":"Target ID.","x-example":"259125845563242502"},"target":{"type":"object","description":"Target.","x-example":{"$id":"259125845563242502","$createdAt":"2020-10-15T06:38:00.000+00:00","$updatedAt":"2020-10-15T06:38:00.000+00:00","providerType":"email","providerId":"259125845563242502","name":"ageon-app-email","identifier":"random-mail@email.org","userId":"5e5ea5c16897e"},"items":{"$ref":"#\/components\/schemas\/target"}},"userId":{"type":"string","description":"Topic ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User Name.","x-example":"Aegon Targaryen"},"topicId":{"type":"string","description":"Topic ID.","x-example":"259125845563242502"},"providerType":{"type":"string","description":"The target provider type. Can be one of the following: `email`, `sms` or `push`.","x-example":"email"}},"required":["$id","$createdAt","$updatedAt","targetId","target","userId","userName","topicId","providerType"]},"target":{"description":"Target","type":"object","properties":{"$id":{"type":"string","description":"Target ID.","x-example":"259125845563242502"},"$createdAt":{"type":"string","description":"Target creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Target update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Target Name.","x-example":"Aegon apple token"},"userId":{"type":"string","description":"User ID.","x-example":"259125845563242502"},"providerId":{"type":"string","description":"Provider ID.","x-example":"259125845563242502","nullable":true},"providerType":{"type":"string","description":"The target provider type. Can be one of the following: `email`, `sms` or `push`.","x-example":"email"},"identifier":{"type":"string","description":"The target identifier.","x-example":"token"}},"required":["$id","$createdAt","$updatedAt","name","userId","providerType","identifier"]}},"securitySchemes":{"Project":{"type":"apiKey","name":"X-Appwrite-Project","description":"Your project ID","in":"header","x-appwrite":{"demo":"5df5acd0d48c2"}},"JWT":{"type":"apiKey","name":"X-Appwrite-JWT","description":"Your secret JSON Web Token","in":"header"},"Locale":{"type":"apiKey","name":"X-Appwrite-Locale","description":"","in":"header","x-appwrite":{"demo":"en"}},"Session":{"type":"apiKey","name":"X-Appwrite-Session","description":"The user session to authenticate with","in":"header"}}},"externalDocs":{"description":"Full API docs, specs and tutorials","url":"https:\/\/appwrite.io\/docs"}} \ No newline at end of file diff --git a/app/config/specs/open-api3-latest-console.json b/app/config/specs/open-api3-latest-console.json index e6e2026355..789b556afb 100644 --- a/app/config/specs/open-api3-latest-console.json +++ b/app/config/specs/open-api3-latest-console.json @@ -1 +1 @@ -{"openapi":"3.0.0","info":{"version":"1.4.13","title":"Appwrite","description":"Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https:\/\/appwrite.io\/docs](https:\/\/appwrite.io\/docs)","termsOfService":"https:\/\/appwrite.io\/policy\/terms","contact":{"name":"Appwrite Team","url":"https:\/\/appwrite.io\/support","email":"team@appwrite.io"},"license":{"name":"BSD-3-Clause","url":"https:\/\/raw.githubusercontent.com\/appwrite\/appwrite\/master\/LICENSE"}},"servers":[{"url":"https:\/\/HOSTNAME\/v1"}],"paths":{"\/account":{"get":{"summary":"Get account","operationId":"accountGet","tags":["account"],"description":"Get the currently logged in user.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"get","weight":22,"cookies":false,"type":"","demo":"account\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"post":{"summary":"Create account","operationId":"accountCreate","tags":["account"],"description":"Use this endpoint to allow a new user to register a new account in your project. After the user registration completes successfully, you can use the [\/account\/verfication](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createVerification) route to start verifying the user email address. To allow the new user to login to their new account, you need to create a new [account session](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createEmailSession).","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"create","weight":7,"cookies":false,"type":"","demo":"account\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"New user password. Must be between 8 and 256 chars.","x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/account\/email":{"patch":{"summary":"Update email","operationId":"accountUpdateEmail","tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateEmail","weight":29,"cookies":false,"type":"","demo":"account\/update-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","x-example":"password"}},"required":["email","password"]}}}}}},"\/account\/identities":{"get":{"summary":"List Identities","operationId":"accountListIdentities","tags":["account"],"description":"Get the list of identities for the currently logged in user.","responses":{"200":{"description":"Identities List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/identityList"}}}}},"x-appwrite":{"method":"listIdentities","weight":13,"cookies":false,"type":"","demo":"account\/list-identities.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-identities.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/identities","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, provider, providerUid, providerEmail, providerAccessTokenExpiry","required":false,"schema":{"type":"string","default":[]},"in":"query"}]}},"\/account\/identities\/{identityId}":{"delete":{"summary":"Delete identity","operationId":"accountDeleteIdentity","tags":["account"],"description":"Delete an identity by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIdentity","weight":14,"cookies":false,"type":"","demo":"account\/delete-identity.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-identity.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"identityId","description":"Identity ID.","required":true,"schema":{"type":"string","x-example":"[IDENTITY_ID]"},"in":"path"}]}},"\/account\/jwt":{"post":{"summary":"Create JWT","operationId":"accountCreateJWT","tags":["account"],"description":"Use this endpoint to create a JSON Web Token. You can use the resulting JWT to authenticate on behalf of the current user when working with the Appwrite server-side API and SDKs. The JWT secret is valid for 15 minutes from its creation and will be invalid if the user will logout in that time frame.","responses":{"201":{"description":"JWT","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/jwt"}}}}},"x-appwrite":{"method":"createJWT","weight":20,"cookies":false,"type":"","demo":"account\/create-j-w-t.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-jwt.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"accounts.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"List logs","operationId":"accountListLogs","tags":["account"],"description":"Get the list of latest security activity logs for the currently logged in user. Each log returns user IP address, location and date and time of log.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listLogs","weight":25,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update name","operationId":"accountUpdateName","tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateName","weight":27,"cookies":false,"type":"","demo":"account\/update-name.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-name.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["name"]}}}}}},"\/account\/password":{"patch":{"summary":"Update password","operationId":"accountUpdatePassword","tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePassword","weight":28,"cookies":false,"type":"","demo":"account\/update-password.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-password.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"password":{"type":"string","description":"New user password. Must be at least 8 chars.","x-example":null},"oldPassword":{"type":"string","description":"Current user password. Must be at least 8 chars.","x-example":"password"}},"required":["password"]}}}}}},"\/account\/phone":{"patch":{"summary":"Update phone","operationId":"accountUpdatePhone","tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createPhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePhone","weight":30,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","x-example":"password"}},"required":["phone","password"]}}}}}},"\/account\/prefs":{"get":{"summary":"Get account preferences","operationId":"accountGetPrefs","tags":["account"],"description":"Get the preferences as a key-value object for the currently logged in user.","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"getPrefs","weight":23,"cookies":false,"type":"","demo":"account\/get-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/prefs","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"patch":{"summary":"Update preferences","operationId":"accountUpdatePrefs","tags":["account"],"description":"Update currently logged in user account preferences. The object you pass is stored as is, and replaces any previous value. The maximum allowed prefs size is 64kB and throws error if exceeded.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePrefs","weight":31,"cookies":false,"type":"","demo":"account\/update-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/prefs","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"prefs":{"type":"object","description":"Prefs key-value JSON object.","x-example":"{}"}},"required":["prefs"]}}}}}},"\/account\/recovery":{"post":{"summary":"Create password recovery","operationId":"accountCreateRecovery","tags":["account"],"description":"Sends the user an email with a temporary secret key for password reset. When the user clicks the confirmation link he is redirected back to your app password reset URL with the secret key and email address values attached to the URL query string. Use the query string params to submit a request to the [PUT \/account\/recovery](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateRecovery) endpoint to complete the process. The verification link sent to the user's email address is valid for 1 hour.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createRecovery","weight":36,"cookies":false,"type":"","demo":"account\/create-recovery.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-recovery.md","rate-limit":10,"rate-time":3600,"rate-key":["url:{url},email:{param-email}","ip:{ip}"],"scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"url":{"type":"string","description":"URL to redirect the user back to your app from the recovery email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"}},"required":["email","url"]}}}}},"put":{"summary":"Create password recovery (confirmation)","operationId":"accountUpdateRecovery","tags":["account"],"description":"Use this endpoint to complete the user account password reset. Both the **userId** and **secret** arguments will be passed as query parameters to the redirect URL you have provided when sending your request to the [POST \/account\/recovery](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createRecovery) endpoint.\n\nPlease note that in order to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) the only valid redirect URLs are the ones from domains you have set when adding your platforms in the console interface.","responses":{"200":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"updateRecovery","weight":37,"cookies":false,"type":"","demo":"account\/update-recovery.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-recovery.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid reset token.","x-example":"[SECRET]"},"password":{"type":"string","description":"New user password. Must be between 8 and 256 chars.","x-example":null}},"required":["userId","secret","password"]}}}}}},"\/account\/sessions":{"get":{"summary":"List sessions","operationId":"accountListSessions","tags":["account"],"description":"Get the list of active sessions across different devices for the currently logged in user.","responses":{"200":{"description":"Sessions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/sessionList"}}}}},"x-appwrite":{"method":"listSessions","weight":24,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/sessions","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete sessions","operationId":"accountDeleteSessions","tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":35,"cookies":false,"type":"","demo":"account\/delete-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-sessions.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/account\/sessions\/anonymous":{"post":{"summary":"Create anonymous session","operationId":"accountCreateAnonymousSession","tags":["account"],"description":"Use this endpoint to allow a new user to register an anonymous account in your project. This route will also create a new session for the user. To allow the new user to convert an anonymous account to a normal account, you need to update its [email and password](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateEmail) or create an [OAuth2 session](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#CreateOAuth2Session).","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"createAnonymousSession","weight":19,"cookies":false,"type":"","demo":"account\/create-anonymous-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-anonymous.md","rate-limit":50,"rate-time":3600,"rate-key":"ip:{ip}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/sessions\/email":{"post":{"summary":"Create email password session","operationId":"accountCreateEmailPasswordSession","tags":["account"],"description":"Allow the user to login into their account by providing a valid email and password combination. This route will create a new session for the user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"createEmailPasswordSession","weight":8,"cookies":false,"type":"","demo":"account\/create-email-password-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-email-password.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","x-example":"password"}},"required":["email","password"]}}}}}},"\/account\/sessions\/magic-url":{"put":{"summary":"Create session (deprecated)","operationId":"accountUpdateMagicURLSession","tags":["account"],"description":"Use this endpoint to create a session from token. Provide the **userId** and **secret** parameters from the successful response of authentication flows initiated by token creation. For example, magic URL and phone login.","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateMagicURLSession","weight":16,"cookies":false,"type":"","demo":"account\/update-magic-u-r-l-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session.md","rate-limit":10,"rate-time":3600,"rate-key":"ip:{ip},userId:{param-userId}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/account\/sessions\/oauth2\/{provider}":{"get":{"summary":"Create OAuth2 session","operationId":"accountCreateOAuth2Session","tags":["account"],"description":"Allow the user to login to their account using the OAuth2 provider of their choice. Each OAuth2 provider should be enabled from the Appwrite console first. Use the success and failure arguments to provide a redirect URL's back to your app when login is completed.\n\nIf there is already an active session, the new session will be attached to the logged-in account. If there are no active sessions, the server will attempt to look for a user with the same email address as the email received from the OAuth2 provider and attach the new session to the existing user. If no matching user is found - the server will create a new user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).\n","responses":{"301":{"description":"File"}},"x-appwrite":{"method":"createOAuth2Session","weight":9,"cookies":false,"type":"webAuth","demo":"account\/create-o-auth2session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-oauth2.md","rate-limit":50,"rate-time":3600,"rate-key":"ip:{ip}","scope":"sessions.write","platforms":["client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"provider","description":"OAuth2 Provider. Currently, supported providers are: amazon, apple, auth0, authentik, autodesk, bitbucket, bitly, box, dailymotion, discord, disqus, dropbox, etsy, facebook, github, gitlab, google, linkedin, microsoft, notion, oidc, okta, paypal, paypalSandbox, podio, salesforce, slack, spotify, stripe, tradeshift, tradeshiftBox, twitch, wordpress, yahoo, yammer, yandex, zoho, zoom.","required":true,"schema":{"type":"string","x-example":"amazon","enum":["amazon","apple","auth0","authentik","autodesk","bitbucket","bitly","box","dailymotion","discord","disqus","dropbox","etsy","facebook","github","gitlab","google","linkedin","microsoft","notion","oidc","okta","paypal","paypalSandbox","podio","salesforce","slack","spotify","stripe","tradeshift","tradeshiftBox","twitch","wordpress","yahoo","yammer","yandex","zoho","zoom","mock"],"x-enum-name":"Provider","x-enum-keys":[]},"in":"path"},{"name":"success","description":"URL to redirect back to your app after a successful login attempt. Only URLs from hostnames in your project's platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","required":false,"schema":{"type":"string","format":"url","x-example":"https:\/\/example.com","default":""},"in":"query"},{"name":"failure","description":"URL to redirect back to your app after a failed login attempt. Only URLs from hostnames in your project's platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","required":false,"schema":{"type":"string","format":"url","x-example":"https:\/\/example.com","default":""},"in":"query"},{"name":"token","description":"Include token credentials in the final redirect, useful for server-side integrations, or when cookies are not available.","required":false,"schema":{"type":"boolean","x-example":false,"default":false},"in":"query"},{"name":"scopes","description":"A list of custom OAuth2 scopes. Check each provider internal docs for a list of supported scopes. Maximum of 100 scopes are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/sessions\/token":{"post":{"summary":"Create session","operationId":"accountCreateSession","tags":["account"],"description":"Use this endpoint to create a session from token. Provide the **userId** and **secret** parameters from the successful response of authentication flows initiated by token creation. For example, magic URL and phone login.","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"createSession","weight":17,"cookies":false,"type":"","demo":"account\/create-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session.md","rate-limit":10,"rate-time":3600,"rate-key":"ip:{ip},userId:{param-userId}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Secret of a token generated by login methods. For example, the `createMagicURLToken` or `createPhoneToken` methods.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/account\/sessions\/{sessionId}":{"get":{"summary":"Get session","operationId":"accountGetSession","tags":["account"],"description":"Use this endpoint to get a logged in user's session using a Session ID. Inputting 'current' will return the current session being used.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"getSession","weight":26,"cookies":false,"type":"","demo":"account\/get-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-session.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/sessions","offline-key":"{sessionId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to get the current device session.","required":true,"schema":{"type":"string","x-example":"[SESSION_ID]"},"in":"path"}]},"patch":{"summary":"Update OAuth session (refresh tokens)","operationId":"accountUpdateSession","tags":["account"],"description":"Access tokens have limited lifespan and expire to mitigate security risks. If session was created using an OAuth provider, this route can be used to \"refresh\" the access token.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateSession","weight":34,"cookies":false,"type":"","demo":"account\/update-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-session.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to update the current device session.","required":true,"schema":{"type":"string","x-example":"[SESSION_ID]"},"in":"path"}]},"delete":{"summary":"Delete session","operationId":"accountDeleteSession","tags":["account"],"description":"Logout the user. Use 'current' as the session ID to logout on this device, use a session ID to logout on another device. If you're looking to logout the user on all devices, use [Delete Sessions](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#deleteSessions) instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSession","weight":33,"cookies":false,"type":"","demo":"account\/delete-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-session.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to delete the current device session.","required":true,"schema":{"type":"string","x-example":"[SESSION_ID]"},"in":"path"}]}},"\/account\/status":{"patch":{"summary":"Update status","operationId":"accountUpdateStatus","tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateStatus","weight":32,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/account\/targets\/{targetId}\/push":{"put":{"summary":"Update Account's push target","operationId":"accountUpdatePushTarget","tags":["account"],"description":"","responses":{"200":{"description":"Target","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/target"}}}}},"x-appwrite":{"method":"updatePushTarget","weight":42,"cookies":false,"type":"","demo":"account\/update-push-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"","platforms":["client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id"},"parameters":[{"name":"targetId","description":"Target ID.","required":true,"schema":{"type":"string","x-example":"[TARGET_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"identifier":{"type":"string","description":"The target identifier (token, email, phone etc.)","x-example":"[IDENTIFIER]"}},"required":["identifier"]}}}}}},"\/account\/tokens\/magic-url":{"post":{"summary":"Create magic URL token","operationId":"accountCreateMagicURLToken","tags":["account"],"description":"Sends the user an email with a secret key for creating a session. If the provided user ID has not been registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [PUT \/account\/sessions\/magic-url](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateMagicURLSession) endpoint to complete the login process. The link sent to the user's email address is valid for 1 hour. If you are on a mobile device you can leave the URL parameter empty, so that the login completion will be handled by your Appwrite instance by default.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).\n","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createMagicURLToken","weight":15,"cookies":false,"type":"","demo":"account\/create-magic-u-r-l-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-token-magic-url.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"url":{"type":"string","description":"URL to redirect the user back to your app from the magic URL login. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"},"securityPhrase":{"type":"boolean","description":"Toggle for security phrase. If enabled, email will be send with a randomly generated phrase and the phrase will also be included in the response. Confirming phrases match increases the security of authentication flow.","x-example":false}},"required":["userId","email"]}}}}}},"\/account\/tokens\/phone":{"post":{"summary":"Create phone token","operationId":"accountCreatePhoneToken","tags":["account"],"description":"Sends the user an SMS with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [PUT \/account\/sessions\/phone](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updatePhoneSession) endpoint to complete the login process. The secret sent to the user's phone is valid for 15 minutes.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createPhoneToken","weight":18,"cookies":false,"type":"","demo":"account\/create-phone-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-token-phone.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},phone:{param-phone}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"}},"required":["userId","phone"]}}}}}},"\/account\/verification":{"post":{"summary":"Create email verification","operationId":"accountCreateVerification","tags":["account"],"description":"Use this endpoint to send a verification message to your user email address to confirm they are the valid owners of that address. Both the **userId** and **secret** arguments will be passed as query parameters to the URL you have provided to be attached to the verification email. The provided URL should redirect the user back to your app and allow you to complete the verification process by verifying both the **userId** and **secret** parameters. Learn more about how to [complete the verification process](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateVerification). The verification link sent to the user's email address is valid for 7 days.\n\nPlease note that in order to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md), the only valid redirect URLs are the ones from domains you have set when adding your platforms in the console interface.\n","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createVerification","weight":38,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"url":{"type":"string","description":"URL to redirect the user back to your app from the verification email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"}},"required":["url"]}}}}},"put":{"summary":"Create email verification (confirmation)","operationId":"accountUpdateVerification","tags":["account"],"description":"Use this endpoint to complete the user email verification process. Use both the **userId** and **secret** parameters that were attached to your app URL to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"updateVerification","weight":39,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/account\/verification\/phone":{"post":{"summary":"Create phone verification","operationId":"accountCreatePhoneVerification","tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updatePhone) endpoint. Learn more about how to [complete the verification process](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createPhoneVerification","weight":40,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{userId}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"put":{"summary":"Create phone verification (confirmation)","operationId":"accountUpdatePhoneVerification","tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"updatePhoneVerification","weight":41,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/avatars\/browsers\/{code}":{"get":{"summary":"Get browser icon","operationId":"avatarsGetBrowser","tags":["avatars"],"description":"You can use this endpoint to show different browser icons to your users. The code argument receives the browser code as it appears in your user [GET \/account\/sessions](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#getSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getBrowser","weight":44,"cookies":false,"type":"location","demo":"avatars\/get-browser.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-browser.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Browser Code.","required":true,"schema":{"type":"string","x-example":"aa","enum":["aa","an","ch","ci","cm","cr","ff","sf","mf","ps","oi","om","op","on"],"x-enum-name":"Browser","x-enum-keys":["Avant Browser","Android WebView Beta","Google Chrome","Google Chrome (iOS)","Google Chrome (Mobile)","Chromium","Mozilla Firefox","Safari","Mobile Safari","Microsoft Edge","Microsoft Edge (iOS)","Opera Mini","Opera","Opera (Next)"]},"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"}]}},"\/avatars\/credit-cards\/{code}":{"get":{"summary":"Get credit card icon","operationId":"avatarsGetCreditCard","tags":["avatars"],"description":"The credit card endpoint will return you the icon of the credit card provider you need. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getCreditCard","weight":43,"cookies":false,"type":"location","demo":"avatars\/get-credit-card.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-credit-card.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Credit Card Code. Possible values: amex, argencard, cabal, censosud, diners, discover, elo, hipercard, jcb, mastercard, naranja, targeta-shopping, union-china-pay, visa, mir, maestro.","required":true,"schema":{"type":"string","x-example":"amex","enum":["amex","argencard","cabal","censosud","diners","discover","elo","hipercard","jcb","mastercard","naranja","targeta-shopping","union-china-pay","visa","mir","maestro"],"x-enum-name":"CreditCard","x-enum-keys":["American Express","Argencard","Cabal","Consosud","Diners Club","Discover","Elo","Hipercard","JCB","Mastercard","Naranja","Tarjeta Shopping","Union China Pay","Visa","MIR","Maestro"]},"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"}]}},"\/avatars\/favicon":{"get":{"summary":"Get favicon","operationId":"avatarsGetFavicon","tags":["avatars"],"description":"Use this endpoint to fetch the favorite icon (AKA favicon) of any remote website URL.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFavicon","weight":47,"cookies":false,"type":"location","demo":"avatars\/get-favicon.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-favicon.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"url","description":"Website URL which you want to fetch the favicon from.","required":true,"schema":{"type":"string","format":"url","x-example":"https:\/\/example.com"},"in":"query"}]}},"\/avatars\/flags\/{code}":{"get":{"summary":"Get country flag","operationId":"avatarsGetFlag","tags":["avatars"],"description":"You can use this endpoint to show different country flags icons to your users. The code argument receives the 2 letter country code. Use width, height and quality arguments to change the output settings. Country codes follow the [ISO 3166-1](https:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFlag","weight":45,"cookies":false,"type":"location","demo":"avatars\/get-flag.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-flag.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Country Code. ISO Alpha-2 country code format.","required":true,"schema":{"type":"string","x-example":"af","enum":["af","ao","al","ad","ae","ar","am","ag","au","at","az","bi","be","bj","bf","bd","bg","bh","bs","ba","by","bz","bo","br","bb","bn","bt","bw","cf","ca","ch","cl","cn","ci","cm","cd","cg","co","km","cv","cr","cu","cy","cz","de","dj","dm","dk","do","dz","ec","eg","er","es","ee","et","fi","fj","fr","fm","ga","gb","ge","gh","gn","gm","gw","gq","gr","gd","gt","gy","hn","hr","ht","hu","id","in","ie","ir","iq","is","il","it","jm","jo","jp","kz","ke","kg","kh","ki","kn","kr","kw","la","lb","lr","ly","lc","li","lk","ls","lt","lu","lv","ma","mc","md","mg","mv","mx","mh","mk","ml","mt","mm","me","mn","mz","mr","mu","mw","my","na","ne","ng","ni","nl","no","np","nr","nz","om","pk","pa","pe","ph","pw","pg","pl","kp","pt","py","qa","ro","ru","rw","sa","sd","sn","sg","sb","sl","sv","sm","so","rs","ss","st","sr","sk","si","se","sz","sc","sy","td","tg","th","tj","tm","tl","to","tt","tn","tr","tv","tz","ug","ua","uy","us","uz","va","vc","ve","vn","vu","ws","ye","za","zm","zw"],"x-enum-name":"Flag","x-enum-keys":["Afghanistan","Angola","Albania","Andorra","United Arab Emirates","Argentina","Armenia","Antigua and Barbuda","Australia","Austria","Azerbaijan","Burundi","Belgium","Benin","Burkina Faso","Bangladesh","Bulgaria","Bahrain","Bahamas","Bosnia and Herzegovina","Belarus","Belize","Bolivia","Brazil","Barbados","Brunei Darussalam","Bhutan","Botswana","Central African Republic","Canada","Switzerland","Chile","China","C\u00f4te d'Ivoire","Cameroon","Democratic Republic of the Congo","Republic of the Congo","Colombia","Comoros","Cape Verde","Costa Rica","Cuba","Cyprus","Czech Republic","Germany","Djibouti","Dominica","Denmark","Dominican Republic","Algeria","Ecuador","Egypt","Eritrea","Spain","Estonia","Ethiopia","Finland","Fiji","France","Micronesia (Federated States of)","Gabon","United Kingdom","Georgia","Ghana","Guinea","Gambia","Guinea-Bissau","Equatorial Guinea","Greece","Grenada","Guatemala","Guyana","Honduras","Croatia","Haiti","Hungary","Indonesia","India","Ireland","Iran (Islamic Republic of)","Iraq","Iceland","Israel","Italy","Jamaica","Jordan","Japan","Kazakhstan","Kenya","Kyrgyzstan","Cambodia","Kiribati","Saint Kitts and Nevis","South Korea","Kuwait","Lao People's Democratic Republic","Lebanon","Liberia","Libya","Saint Lucia","Liechtenstein","Sri Lanka","Lesotho","Lithuania","Luxembourg","Latvia","Morocco","Monaco","Moldova","Madagascar","Maldives","Mexico","Marshall Islands","North Macedonia","Mali","Malta","Myanmar","Montenegro","Mongolia","Mozambique","Mauritania","Mauritius","Malawi","Malaysia","Namibia","Niger","Nigeria","Nicaragua","Netherlands","Norway","Nepal","Nauru","New Zealand","Oman","Pakistan","Panama","Peru","Philippines","Palau","Papua New Guinea","Poland","North Korea","Portugal","Paraguay","Qatar","Romania","Russia","Rwanda","Saudi Arabia","Sudan","Senegal","Singapore","Solomon Islands","Sierra Leone","El Salvador","San Marino","Somalia","Serbia","South Sudan","Sao Tome and Principe","Suriname","Slovakia","Slovenia","Sweden","Eswatini","Seychelles","Syria","Chad","Togo","Thailand","Tajikistan","Turkmenistan","Timor-Leste","Tonga","Trinidad and Tobago","Tunisia","Turkey","Tuvalu","Tanzania","Uganda","Ukraine","Uruguay","United States","Uzbekistan","Vatican City","Saint Vincent and the Grenadines","Venezuela","Vietnam","Vanuatu","Samoa","Yemen","South Africa","Zambia","Zimbabwe"]},"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"}]}},"\/avatars\/image":{"get":{"summary":"Get image from URL","operationId":"avatarsGetImage","tags":["avatars"],"description":"Use this endpoint to fetch a remote image URL and crop it to any image size you want. This endpoint is very useful if you need to crop and display remote images in your app or in case you want to make sure a 3rd party image is properly served using a TLS protocol.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getImage","weight":46,"cookies":false,"type":"location","demo":"avatars\/get-image.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-image.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"url","description":"Image URL which you want to crop.","required":true,"schema":{"type":"string","format":"url","x-example":"https:\/\/example.com"},"in":"query"},{"name":"width","description":"Resize preview image width, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get user initials","operationId":"avatarsGetInitials","tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getInitials","weight":49,"cookies":false,"type":"location","demo":"avatars\/get-initials.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-initials.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"name","description":"Full Name. When empty, current user name or email will be used. Max length: 128 chars.","required":false,"schema":{"type":"string","x-example":"[NAME]","default":""},"in":"query"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":500},"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":500},"in":"query"},{"name":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"schema":{"type":"string","default":""},"in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR code","operationId":"avatarsGetQR","tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getQR","weight":48,"cookies":false,"type":"location","demo":"avatars\/get-q-r.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-qr.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"text","description":"Plain text to be converted to QR code image.","required":true,"schema":{"type":"string","x-example":"[TEXT]"},"in":"query"},{"name":"size","description":"QR code size. Pass an integer between 1 to 1000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":1,"default":400},"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":1},"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"schema":{"type":"boolean","x-example":false,"default":false},"in":"query"}]}},"\/console\/assistant":{"post":{"summary":"Ask Query","operationId":"assistantChat","tags":["assistant"],"description":"","responses":{"200":{"description":"File"}},"x-appwrite":{"method":"chat","weight":291,"cookies":false,"type":"","demo":"assistant\/chat.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/assistant\/chat.md","rate-limit":15,"rate-time":3600,"rate-key":"userId:{userId}","scope":"assistant.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"prompt":{"type":"string","description":"Prompt. A string containing questions asked to the AI assistant.","x-example":"[PROMPT]"}},"required":["prompt"]}}}}}},"\/console\/variables":{"get":{"summary":"Get variables","operationId":"consoleVariables","tags":["console"],"description":"Get all Environment Variables that are relevant for the console.","responses":{"200":{"description":"Console Variables","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/consoleVariables"}}}}},"x-appwrite":{"method":"variables","weight":290,"cookies":false,"type":"","demo":"console\/variables.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/console\/variables.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/databases":{"get":{"summary":"List databases","operationId":"databasesList","tags":["databases"],"description":"Get a list of all databases from the current Appwrite project. You can use the search parameter to filter your results.","responses":{"200":{"description":"Databases List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/databaseList"}}}}},"x-appwrite":{"method":"list","weight":54,"cookies":false,"type":"","demo":"databases\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create database","operationId":"databasesCreate","tags":["databases"],"description":"Create a new Database.\n","responses":{"201":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"create","weight":53,"cookies":false,"type":"","demo":"databases\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"databaseId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[DATABASE_ID]","x-global":true},"name":{"type":"string","description":"Database name. Max length: 128 chars.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Is the database enabled? When set to 'disabled', users cannot access the database but Server SDKs with an API key can still read and write to the database. No data is lost when this is toggled.","x-example":false}},"required":["databaseId","name"]}}}}}},"\/databases\/usage":{"get":{"summary":"Get usage stats for the database","operationId":"databasesGetUsage","tags":["databases"],"description":"","responses":{"200":{"description":"UsageDatabases","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageDatabases"}}}}},"x-appwrite":{"method":"getUsage","weight":98,"cookies":false,"type":"","demo":"databases\/get-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"`Date range.","required":false,"schema":{"type":"string","x-example":"24h","enum":["24h","7d","30d","90d"],"x-enum-name":null,"x-enum-keys":["Twenty Four Hours","Seven Days","Thirty Days","Ninety Days"],"default":"30d"},"in":"query"}]}},"\/databases\/{databaseId}":{"get":{"summary":"Get database","operationId":"databasesGet","tags":["databases"],"description":"Get a database by its unique ID. This endpoint response returns a JSON object with the database metadata.","responses":{"200":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"get","weight":55,"cookies":false,"type":"","demo":"databases\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}]},"put":{"summary":"Update database","operationId":"databasesUpdate","tags":["databases"],"description":"Update a database by its unique ID.","responses":{"200":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"update","weight":57,"cookies":false,"type":"","demo":"databases\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Database name. Max length: 128 chars.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Is database enabled? When set to 'disabled', users cannot access the database but Server SDKs with an API key can still read and write to the database. No data is lost when this is toggled.","x-example":false}},"required":["name"]}}}}},"delete":{"summary":"Delete database","operationId":"databasesDelete","tags":["databases"],"description":"Delete a database by its unique ID. Only API keys with with databases.write scope can delete a database.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":58,"cookies":false,"type":"","demo":"databases\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections":{"get":{"summary":"List collections","operationId":"databasesListCollections","tags":["databases"],"description":"Get a list of all collections that belong to the provided databaseId. You can use the search parameter to filter your results.","responses":{"200":{"description":"Collections List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collectionList"}}}}},"x-appwrite":{"method":"listCollections","weight":60,"cookies":false,"type":"","demo":"databases\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, documentSecurity","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create collection","operationId":"databasesCreateCollection","tags":["databases"],"description":"Create a new Collection. Before using this route, you should create a new database resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"createCollection","weight":59,"cookies":false,"type":"","demo":"databases\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permissions strings. By default, no user is granted with any permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":false},"enabled":{"type":"boolean","description":"Is collection enabled? When set to 'disabled', users cannot access the collection but Server SDKs with and API key can still read and write to the collection. No data is lost when this is toggled.","x-example":false}},"required":["collectionId","name"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}":{"get":{"summary":"Get collection","operationId":"databasesGetCollection","tags":["databases"],"description":"Get a collection by its unique ID. This endpoint response returns a JSON object with the collection metadata.","responses":{"200":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"getCollection","weight":61,"cookies":false,"type":"","demo":"databases\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]},"put":{"summary":"Update collection","operationId":"databasesUpdateCollection","tags":["databases"],"description":"Update a collection by its unique ID.","responses":{"200":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"updateCollection","weight":63,"cookies":false,"type":"","demo":"databases\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":false},"enabled":{"type":"boolean","description":"Is collection enabled? When set to 'disabled', users cannot access the collection but Server SDKs with and API key can still read and write to the collection. No data is lost when this is toggled.","x-example":false}},"required":["name"]}}}}},"delete":{"summary":"Delete collection","operationId":"databasesDeleteCollection","tags":["databases"],"description":"Delete a collection by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteCollection","weight":64,"cookies":false,"type":"","demo":"databases\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes":{"get":{"summary":"List attributes","operationId":"databasesListAttributes","tags":["databases"],"description":"","responses":{"200":{"description":"Attributes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeList"}}}}},"x-appwrite":{"method":"listAttributes","weight":75,"cookies":false,"type":"","demo":"databases\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: key, type, size, required, array, status, error","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create boolean attribute","operationId":"databasesCreateBooleanAttribute","tags":["databases"],"description":"Create a boolean attribute.\n","responses":{"202":{"description":"AttributeBoolean","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeBoolean"}}}}},"x-appwrite":{"method":"createBooleanAttribute","weight":72,"cookies":false,"type":"","demo":"databases\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":false},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean\/{key}":{"patch":{"summary":"Update boolean attribute","operationId":"databasesUpdateBooleanAttribute","tags":["databases"],"description":"","responses":{"200":{"description":"AttributeBoolean","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeBoolean"}}}}},"x-appwrite":{"method":"updateBooleanAttribute","weight":84,"cookies":false,"type":"","demo":"databases\/update-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":false,"x-nullable":true}},"required":["required","default"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/datetime":{"post":{"summary":"Create datetime attribute","operationId":"databasesCreateDatetimeAttribute","tags":["databases"],"description":"","responses":{"202":{"description":"AttributeDatetime","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeDatetime"}}}}},"x-appwrite":{"method":"createDatetimeAttribute","weight":73,"cookies":false,"type":"","demo":"databases\/create-datetime-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-datetime-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for the attribute in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/datetime\/{key}":{"patch":{"summary":"Update dateTime attribute","operationId":"databasesUpdateDatetimeAttribute","tags":["databases"],"description":"","responses":{"200":{"description":"AttributeDatetime","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeDatetime"}}}}},"x-appwrite":{"method":"updateDatetimeAttribute","weight":85,"cookies":false,"type":"","demo":"databases\/update-datetime-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-datetime-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null,"x-nullable":true}},"required":["required","default"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create email attribute","operationId":"databasesCreateEmailAttribute","tags":["databases"],"description":"Create an email attribute.\n","responses":{"202":{"description":"AttributeEmail","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeEmail"}}}}},"x-appwrite":{"method":"createEmailAttribute","weight":66,"cookies":false,"type":"","demo":"databases\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"email@example.com"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/email\/{key}":{"patch":{"summary":"Update email attribute","operationId":"databasesUpdateEmailAttribute","tags":["databases"],"description":"Update an email attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeEmail","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeEmail"}}}}},"x-appwrite":{"method":"updateEmailAttribute","weight":78,"cookies":false,"type":"","demo":"databases\/update-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"email@example.com","x-nullable":true}},"required":["required","default"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create enum attribute","operationId":"databasesCreateEnumAttribute","tags":["databases"],"description":"","responses":{"202":{"description":"AttributeEnum","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeEnum"}}}}},"x-appwrite":{"method":"createEnumAttribute","weight":67,"cookies":false,"type":"","demo":"databases\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"elements":{"type":"array","description":"Array of elements in enumerated type. Uses length of longest element to determine size. Maximum of 100 elements are allowed, each 255 characters long.","x-example":null,"items":{"type":"string"}},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","elements","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/enum\/{key}":{"patch":{"summary":"Update enum attribute","operationId":"databasesUpdateEnumAttribute","tags":["databases"],"description":"Update an enum attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeEnum","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeEnum"}}}}},"x-appwrite":{"method":"updateEnumAttribute","weight":79,"cookies":false,"type":"","demo":"databases\/update-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-enum-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"elements":{"type":"array","description":"Array of elements in enumerated type. Uses length of longest element to determine size. Maximum of 100 elements are allowed, each 255 characters long.","x-example":null,"items":{"type":"string"}},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"[DEFAULT]","x-nullable":true}},"required":["elements","required","default"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create float attribute","operationId":"databasesCreateFloatAttribute","tags":["databases"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeFloat","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeFloat"}}}}},"x-appwrite":{"method":"createFloatAttribute","weight":71,"cookies":false,"type":"","demo":"databases\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"min":{"type":"number","description":"Minimum value to enforce on new documents","x-example":null},"max":{"type":"number","description":"Maximum value to enforce on new documents","x-example":null},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/float\/{key}":{"patch":{"summary":"Update float attribute","operationId":"databasesUpdateFloatAttribute","tags":["databases"],"description":"Update a float attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeFloat","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeFloat"}}}}},"x-appwrite":{"method":"updateFloatAttribute","weight":83,"cookies":false,"type":"","demo":"databases\/update-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"min":{"type":"number","description":"Minimum value to enforce on new documents","x-example":null},"max":{"type":"number","description":"Maximum value to enforce on new documents","x-example":null},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null,"x-nullable":true}},"required":["required","min","max","default"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create integer attribute","operationId":"databasesCreateIntegerAttribute","tags":["databases"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeInteger","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeInteger"}}}}},"x-appwrite":{"method":"createIntegerAttribute","weight":70,"cookies":false,"type":"","demo":"databases\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"min":{"type":"integer","description":"Minimum value to enforce on new documents","x-example":null},"max":{"type":"integer","description":"Maximum value to enforce on new documents","x-example":null},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/integer\/{key}":{"patch":{"summary":"Update integer attribute","operationId":"databasesUpdateIntegerAttribute","tags":["databases"],"description":"Update an integer attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeInteger","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeInteger"}}}}},"x-appwrite":{"method":"updateIntegerAttribute","weight":82,"cookies":false,"type":"","demo":"databases\/update-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"min":{"type":"integer","description":"Minimum value to enforce on new documents","x-example":null},"max":{"type":"integer","description":"Maximum value to enforce on new documents","x-example":null},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null,"x-nullable":true}},"required":["required","min","max","default"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP address attribute","operationId":"databasesCreateIpAttribute","tags":["databases"],"description":"Create IP address attribute.\n","responses":{"202":{"description":"AttributeIP","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeIp"}}}}},"x-appwrite":{"method":"createIpAttribute","weight":68,"cookies":false,"type":"","demo":"databases\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/ip\/{key}":{"patch":{"summary":"Update IP address attribute","operationId":"databasesUpdateIpAttribute","tags":["databases"],"description":"Update an ip attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeIP","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeIp"}}}}},"x-appwrite":{"method":"updateIpAttribute","weight":80,"cookies":false,"type":"","demo":"databases\/update-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null,"x-nullable":true}},"required":["required","default"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/relationship":{"post":{"summary":"Create relationship attribute","operationId":"databasesCreateRelationshipAttribute","tags":["databases"],"description":"Create relationship attribute. [Learn more about relationship attributes](https:\/\/appwrite.io\/docs\/databases-relationships#relationship-attributes).\n","responses":{"202":{"description":"AttributeRelationship","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeRelationship"}}}}},"x-appwrite":{"method":"createRelationshipAttribute","weight":74,"cookies":false,"type":"","demo":"databases\/create-relationship-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-relationship-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"relatedCollectionId":{"type":"string","description":"Related Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","x-example":"[RELATED_COLLECTION_ID]"},"type":{"type":"string","description":"Relation type","x-example":"oneToOne","enum":["oneToOne","manyToOne","manyToMany","oneToMany"],"x-enum-name":"RelationshipType","x-enum-keys":[]},"twoWay":{"type":"boolean","description":"Is Two Way?","x-example":false},"key":{"type":"string","description":"Attribute Key.","x-example":null},"twoWayKey":{"type":"string","description":"Two Way Attribute Key.","x-example":null},"onDelete":{"type":"string","description":"Constraints option","x-example":"cascade","enum":["cascade","restrict","setNull"],"x-enum-name":"RelationMutate","x-enum-keys":[]}},"required":["relatedCollectionId","type"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create string attribute","operationId":"databasesCreateStringAttribute","tags":["databases"],"description":"Create a string attribute.\n","responses":{"202":{"description":"AttributeString","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeString"}}}}},"x-appwrite":{"method":"createStringAttribute","weight":65,"cookies":false,"type":"","demo":"databases\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"size":{"type":"integer","description":"Attribute size for text attributes, in number of characters.","x-example":1},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false},"encrypt":{"type":"boolean","description":"Toggle encryption for the attribute. Encryption enhances security by not storing any plain text values in the database. However, encrypted attributes cannot be queried.","x-example":false}},"required":["key","size","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/string\/{key}":{"patch":{"summary":"Update string attribute","operationId":"databasesUpdateStringAttribute","tags":["databases"],"description":"Update a string attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeString","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeString"}}}}},"x-appwrite":{"method":"updateStringAttribute","weight":77,"cookies":false,"type":"","demo":"databases\/update-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"[DEFAULT]","x-nullable":true}},"required":["required","default"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL attribute","operationId":"databasesCreateUrlAttribute","tags":["databases"],"description":"Create a URL attribute.\n","responses":{"202":{"description":"AttributeURL","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeUrl"}}}}},"x-appwrite":{"method":"createUrlAttribute","weight":69,"cookies":false,"type":"","demo":"databases\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"https:\/\/example.com"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url\/{key}":{"patch":{"summary":"Update URL attribute","operationId":"databasesUpdateUrlAttribute","tags":["databases"],"description":"Update an url attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeURL","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeUrl"}}}}},"x-appwrite":{"method":"updateUrlAttribute","weight":81,"cookies":false,"type":"","demo":"databases\/update-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"https:\/\/example.com","x-nullable":true}},"required":["required","default"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get attribute","operationId":"databasesGetAttribute","tags":["databases"],"description":"","responses":{"200":{"description":"AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, or AttributeDatetime, or AttributeRelationship, or AttributeString","content":{"application\/json":{"schema":{"oneOf":[{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeRelationship"},{"$ref":"#\/components\/schemas\/attributeString"}]}}}}},"x-appwrite":{"method":"getAttribute","weight":76,"cookies":false,"type":"","demo":"databases\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}]},"delete":{"summary":"Delete attribute","operationId":"databasesDeleteAttribute","tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":87,"cookies":false,"type":"","demo":"databases\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/{key}\/relationship":{"patch":{"summary":"Update relationship attribute","operationId":"databasesUpdateRelationshipAttribute","tags":["databases"],"description":"Update relationship attribute. [Learn more about relationship attributes](https:\/\/appwrite.io\/docs\/databases-relationships#relationship-attributes).\n","responses":{"200":{"description":"AttributeRelationship","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeRelationship"}}}}},"x-appwrite":{"method":"updateRelationshipAttribute","weight":86,"cookies":false,"type":"","demo":"databases\/update-relationship-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-relationship-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"onDelete":{"type":"string","description":"Constraints option","x-example":"cascade","enum":["cascade","restrict","setNull"],"x-enum-name":"RelationMutate","x-enum-keys":[]}}}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List documents","operationId":"databasesListDocuments","tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/documentList"}}}}},"x-appwrite":{"method":"listDocuments","weight":93,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"post":{"summary":"Create document","operationId":"databasesCreateDocument","tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"createDocument","weight":92,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, only the current user is granted all permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get document","operationId":"databasesGetDocument","tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"getDocument","weight":94,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only method allowed is select.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"patch":{"summary":"Update document","operationId":"databasesUpdateDocument","tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"updateDocument","weight":96,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete document","operationId":"databasesDeleteDocument","tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":97,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}\/logs":{"get":{"summary":"List document logs","operationId":"databasesListDocumentLogs","tags":["databases"],"description":"Get the document activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listDocumentLogs","weight":95,"cookies":false,"type":"","demo":"databases\/list-document-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes":{"get":{"summary":"List indexes","operationId":"databasesListIndexes","tags":["databases"],"description":"","responses":{"200":{"description":"Indexes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/indexList"}}}}},"x-appwrite":{"method":"listIndexes","weight":89,"cookies":false,"type":"","demo":"databases\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: key, type, status, attributes, error","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"post":{"summary":"Create index","operationId":"databasesCreateIndex","tags":["databases"],"description":"","responses":{"202":{"description":"Index","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/index"}}}}},"x-appwrite":{"method":"createIndex","weight":88,"cookies":false,"type":"","demo":"databases\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Index Key.","x-example":null},"type":{"type":"string","description":"Index type.","x-example":"key","enum":["key","fulltext","unique","spatial","array"],"x-enum-name":"IndexType","x-enum-keys":[]},"attributes":{"type":"array","description":"Array of attributes to index. Maximum of 100 attributes are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders. Maximum of 100 orders are allowed.","x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get index","operationId":"databasesGetIndex","tags":["databases"],"description":"","responses":{"200":{"description":"Index","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/index"}}}}},"x-appwrite":{"method":"getIndex","weight":90,"cookies":false,"type":"","demo":"databases\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Index Key.","required":true,"schema":{"type":"string"},"in":"path"}]},"delete":{"summary":"Delete index","operationId":"databasesDeleteIndex","tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":91,"cookies":false,"type":"","demo":"databases\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Index Key.","required":true,"schema":{"type":"string"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/logs":{"get":{"summary":"List collection logs","operationId":"databasesListCollectionLogs","tags":["databases"],"description":"Get the collection activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listCollectionLogs","weight":62,"cookies":false,"type":"","demo":"databases\/list-collection-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/usage":{"get":{"summary":"Get usage stats for a collection","operationId":"databasesGetCollectionUsage","tags":["databases"],"description":"","responses":{"200":{"description":"UsageCollection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageCollection"}}}}},"x-appwrite":{"method":"getCollectionUsage","weight":100,"cookies":false,"type":"","demo":"databases\/get-collection-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"range","description":"Date range.","required":false,"schema":{"type":"string","x-example":"24h","enum":["24h","7d","30d","90d"],"x-enum-name":null,"x-enum-keys":["Twenty Four Hours","Seven Days","Thirty Days","Ninety Days"],"default":"30d"},"in":"query"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/logs":{"get":{"summary":"List database logs","operationId":"databasesListLogs","tags":["databases"],"description":"Get the database activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listLogs","weight":56,"cookies":false,"type":"","demo":"databases\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/databases\/{databaseId}\/usage":{"get":{"summary":"Get usage stats for the database","operationId":"databasesGetDatabaseUsage","tags":["databases"],"description":"","responses":{"200":{"description":"UsageDatabase","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageDatabase"}}}}},"x-appwrite":{"method":"getDatabaseUsage","weight":99,"cookies":false,"type":"","demo":"databases\/get-database-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"range","description":"`Date range.","required":false,"schema":{"type":"string","x-example":"24h","enum":["24h","7d","30d","90d"],"x-enum-name":null,"x-enum-keys":["Twenty Four Hours","Seven Days","Thirty Days","Ninety Days"],"default":"30d"},"in":"query"}]}},"\/functions":{"get":{"summary":"List functions","operationId":"functionsList","tags":["functions"],"description":"Get a list of all the project's functions. You can use the query params to filter your results.","responses":{"200":{"description":"Functions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/functionList"}}}}},"x-appwrite":{"method":"list","weight":253,"cookies":false,"type":"","demo":"functions\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-functions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, runtime, deployment, schedule, scheduleNext, schedulePrevious, timeout, entrypoint, commands, installationId","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create function","operationId":"functionsCreate","tags":["functions"],"description":"Create a new function. You can pass a list of [permissions](https:\/\/appwrite.io\/docs\/permissions) to allow different project users or team with access to execute the function using the client API.","responses":{"201":{"description":"Function","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/function"}}}}},"x-appwrite":{"method":"create","weight":252,"cookies":false,"type":"","demo":"functions\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"functionId":{"type":"string","description":"Function ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[FUNCTION_ID]"},"name":{"type":"string","description":"Function name. Max length: 128 chars.","x-example":"[NAME]"},"runtime":{"type":"string","description":"Execution runtime.","x-example":"node-18.0","enum":["node-18.0","php-8.0","ruby-3.1","python-3.9"],"x-enum-name":null,"x-enum-keys":[]},"execute":{"type":"array","description":"An array of role strings with execution permissions. By default no user is granted with any execute permissions. [learn more about roles](https:\/\/appwrite.io\/docs\/permissions#permission-roles). Maximum of 100 roles are allowed, each 64 characters long.","x-example":"[\"any\"]","items":{"type":"string"}},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","x-example":null},"timeout":{"type":"integer","description":"Function maximum execution time in seconds.","x-example":1},"enabled":{"type":"boolean","description":"Is function enabled? When set to 'disabled', users cannot access the function but Server SDKs with and API key can still access the function. No data is lost when this is toggled.","x-example":false},"logging":{"type":"boolean","description":"Whether executions will be logged. When set to false, executions will not be logged, but will reduce resource used by your Appwrite project.","x-example":false},"entrypoint":{"type":"string","description":"Entrypoint File. This path is relative to the \"providerRootDirectory\".","x-example":"[ENTRYPOINT]"},"commands":{"type":"string","description":"Build Commands.","x-example":"[COMMANDS]"},"installationId":{"type":"string","description":"Appwrite Installation ID for VCS (Version Control System) deployment.","x-example":"[INSTALLATION_ID]"},"providerRepositoryId":{"type":"string","description":"Repository ID of the repo linked to the function.","x-example":"[PROVIDER_REPOSITORY_ID]"},"providerBranch":{"type":"string","description":"Production branch for the repo linked to the function.","x-example":"[PROVIDER_BRANCH]"},"providerSilentMode":{"type":"boolean","description":"Is the VCS (Version Control System) connection in silent mode for the repo linked to the function? In silent mode, comments will not be made on commits and pull requests.","x-example":false},"providerRootDirectory":{"type":"string","description":"Path to function code in the linked repo.","x-example":"[PROVIDER_ROOT_DIRECTORY]"},"templateRepository":{"type":"string","description":"Repository name of the template.","x-example":"[TEMPLATE_REPOSITORY]"},"templateOwner":{"type":"string","description":"The name of the owner of the template.","x-example":"[TEMPLATE_OWNER]"},"templateRootDirectory":{"type":"string","description":"Path to function code in the template repo.","x-example":"[TEMPLATE_ROOT_DIRECTORY]"},"templateBranch":{"type":"string","description":"Production branch for the repo linked to the function template.","x-example":"[TEMPLATE_BRANCH]"}},"required":["functionId","name","runtime"]}}}}}},"\/functions\/runtimes":{"get":{"summary":"List runtimes","operationId":"functionsListRuntimes","tags":["functions"],"description":"Get a list of all runtimes that are currently active on your instance.","responses":{"200":{"description":"Runtimes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/runtimeList"}}}}},"x-appwrite":{"method":"listRuntimes","weight":254,"cookies":false,"type":"","demo":"functions\/list-runtimes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-runtimes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/functions\/usage":{"get":{"summary":"Get functions usage","operationId":"functionsGetUsage","tags":["functions"],"description":"","responses":{"200":{"description":"UsageFunctions","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageFunctions"}}}}},"x-appwrite":{"method":"getUsage","weight":257,"cookies":false,"type":"","demo":"functions\/get-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"schema":{"type":"string","x-example":"24h","enum":["24h","7d","30d","90d"],"x-enum-name":null,"x-enum-keys":[],"default":"30d"},"in":"query"}]}},"\/functions\/{functionId}":{"get":{"summary":"Get function","operationId":"functionsGet","tags":["functions"],"description":"Get a function by its unique ID.","responses":{"200":{"description":"Function","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/function"}}}}},"x-appwrite":{"method":"get","weight":255,"cookies":false,"type":"","demo":"functions\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}]},"put":{"summary":"Update function","operationId":"functionsUpdate","tags":["functions"],"description":"Update function by its unique ID.","responses":{"200":{"description":"Function","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/function"}}}}},"x-appwrite":{"method":"update","weight":258,"cookies":false,"type":"","demo":"functions\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Function name. Max length: 128 chars.","x-example":"[NAME]"},"runtime":{"type":"string","description":"Execution runtime.","x-example":"node-18.0","enum":["node-18.0","php-8.0","ruby-3.1","python-3.9"],"x-enum-name":null,"x-enum-keys":[]},"execute":{"type":"array","description":"An array of role strings with execution permissions. By default no user is granted with any execute permissions. [learn more about roles](https:\/\/appwrite.io\/docs\/permissions#permission-roles). Maximum of 100 roles are allowed, each 64 characters long.","x-example":"[\"any\"]","items":{"type":"string"}},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","x-example":null},"timeout":{"type":"integer","description":"Maximum execution time in seconds.","x-example":1},"enabled":{"type":"boolean","description":"Is function enabled? When set to 'disabled', users cannot access the function but Server SDKs with and API key can still access the function. No data is lost when this is toggled.","x-example":false},"logging":{"type":"boolean","description":"Whether executions will be logged. When set to false, executions will not be logged, but will reduce resource used by your Appwrite project.","x-example":false},"entrypoint":{"type":"string","description":"Entrypoint File. This path is relative to the \"providerRootDirectory\".","x-example":"[ENTRYPOINT]"},"commands":{"type":"string","description":"Build Commands.","x-example":"[COMMANDS]"},"installationId":{"type":"string","description":"Appwrite Installation ID for VCS (Version Controle System) deployment.","x-example":"[INSTALLATION_ID]"},"providerRepositoryId":{"type":"string","description":"Repository ID of the repo linked to the function","x-example":"[PROVIDER_REPOSITORY_ID]"},"providerBranch":{"type":"string","description":"Production branch for the repo linked to the function","x-example":"[PROVIDER_BRANCH]"},"providerSilentMode":{"type":"boolean","description":"Is the VCS (Version Control System) connection in silent mode for the repo linked to the function? In silent mode, comments will not be made on commits and pull requests.","x-example":false},"providerRootDirectory":{"type":"string","description":"Path to function code in the linked repo.","x-example":"[PROVIDER_ROOT_DIRECTORY]"}},"required":["name"]}}}}},"delete":{"summary":"Delete function","operationId":"functionsDelete","tags":["functions"],"description":"Delete a function by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":261,"cookies":false,"type":"","demo":"functions\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/deployments":{"get":{"summary":"List deployments","operationId":"functionsListDeployments","tags":["functions"],"description":"Get a list of all the project's code deployments. You can use the query params to filter your results.","responses":{"200":{"description":"Deployments List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deploymentList"}}}}},"x-appwrite":{"method":"listDeployments","weight":263,"cookies":false,"type":"","demo":"functions\/list-deployments.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-deployments.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: size, buildId, activate, entrypoint, commands","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create deployment","operationId":"functionsCreateDeployment","tags":["functions"],"description":"Create a new function code deployment. Use this endpoint to upload a new version of your code function. To execute your newly uploaded code, you'll need to update the function's deployment to use your new deployment UID.\n\nThis endpoint accepts a tar.gz file compressed with your code. Make sure to include any dependencies your code has within the compressed file. You can learn more about code packaging in the [Appwrite Cloud Functions tutorial](https:\/\/appwrite.io\/docs\/functions).\n\nUse the \"command\" param to set the entrypoint used to execute your code.","responses":{"202":{"description":"Deployment","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deployment"}}}}},"x-appwrite":{"method":"createDeployment","weight":262,"cookies":false,"type":"","demo":"functions\/create-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":true,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}],"requestBody":{"content":{"multipart\/form-data":{"schema":{"type":"object","properties":{"entrypoint":{"type":"string","description":"Entrypoint File.","x-example":"[ENTRYPOINT]"},"commands":{"type":"string","description":"Build Commands.","x-example":"[COMMANDS]"},"code":{"type":"string","description":"Gzip file with your code package. When used with the Appwrite CLI, pass the path to your code directory, and the CLI will automatically package your code. Use a path that is within the current directory.","x-example":null},"activate":{"type":"boolean","description":"Automatically activate the deployment when it is finished building.","x-example":false}},"required":["code","activate"]}}}}}},"\/functions\/{functionId}\/deployments\/{deploymentId}":{"get":{"summary":"Get deployment","operationId":"functionsGetDeployment","tags":["functions"],"description":"Get a code deployment by its unique ID.","responses":{"200":{"description":"Deployment","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deployment"}}}}},"x-appwrite":{"method":"getDeployment","weight":264,"cookies":false,"type":"","demo":"functions\/get-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"schema":{"type":"string","x-example":"[DEPLOYMENT_ID]"},"in":"path"}]},"patch":{"summary":"Update function deployment","operationId":"functionsUpdateDeployment","tags":["functions"],"description":"Update the function code deployment ID using the unique function ID. Use this endpoint to switch the code deployment that should be executed by the execution endpoint.","responses":{"200":{"description":"Function","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/function"}}}}},"x-appwrite":{"method":"updateDeployment","weight":260,"cookies":false,"type":"","demo":"functions\/update-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-function-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"schema":{"type":"string","x-example":"[DEPLOYMENT_ID]"},"in":"path"}]},"delete":{"summary":"Delete deployment","operationId":"functionsDeleteDeployment","tags":["functions"],"description":"Delete a code deployment by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDeployment","weight":265,"cookies":false,"type":"","demo":"functions\/delete-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"schema":{"type":"string","x-example":"[DEPLOYMENT_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/deployments\/{deploymentId}\/builds\/{buildId}":{"post":{"summary":"Create build","operationId":"functionsCreateBuild","tags":["functions"],"description":"Create a new build for an Appwrite Function deployment. This endpoint can be used to retry a failed build.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"createBuild","weight":266,"cookies":false,"type":"","demo":"functions\/create-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"schema":{"type":"string","x-example":"[DEPLOYMENT_ID]"},"in":"path"},{"name":"buildId","description":"Build unique ID.","required":true,"schema":{"type":"string","x-example":"[BUILD_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/deployments\/{deploymentId}\/download":{"get":{"summary":"Download Deployment","operationId":"functionsDownloadDeployment","tags":["functions"],"description":"Get a Deployment's contents by its unique ID. This endpoint supports range requests for partial or streaming file download.","responses":{"200":{"description":"File"}},"x-appwrite":{"method":"downloadDeployment","weight":259,"cookies":false,"type":"location","demo":"functions\/download-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/download-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"schema":{"type":"string","x-example":"[DEPLOYMENT_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List executions","operationId":"functionsListExecutions","tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/executionList"}}}}},"x-appwrite":{"method":"listExecutions","weight":268,"cookies":false,"type":"","demo":"functions\/list-executions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-executions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, responseStatusCode, duration","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create execution","operationId":"functionsCreateExecution","tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/execution"}}}}},"x-appwrite":{"method":"createExecution","weight":267,"cookies":false,"type":"","demo":"functions\/create-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-execution.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"body":{"type":"string","description":"HTTP body of execution. Default value is empty string.","x-example":"[BODY]"},"async":{"type":"boolean","description":"Execute code in the background. Default value is false.","x-example":false},"path":{"type":"string","description":"HTTP path of execution. Path can include query params. Default value is \/","x-example":"[PATH]"},"method":{"type":"string","description":"HTTP method of execution. Default value is GET.","x-example":"GET","enum":["GET","POST","PUT","PATCH","DELETE","OPTIONS"],"x-enum-name":null,"x-enum-keys":[]},"headers":{"type":"object","description":"HTTP headers of execution. Defaults to empty.","x-example":"{}"}}}}}}}},"\/functions\/{functionId}\/executions\/{executionId}":{"get":{"summary":"Get execution","operationId":"functionsGetExecution","tags":["functions"],"description":"Get a function execution log by its unique ID.","responses":{"200":{"description":"Execution","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/execution"}}}}},"x-appwrite":{"method":"getExecution","weight":269,"cookies":false,"type":"","demo":"functions\/get-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-execution.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"executionId","description":"Execution ID.","required":true,"schema":{"type":"string","x-example":"[EXECUTION_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/usage":{"get":{"summary":"Get function usage","operationId":"functionsGetFunctionUsage","tags":["functions"],"description":"","responses":{"200":{"description":"UsageFunctions","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageFunctions"}}}}},"x-appwrite":{"method":"getFunctionUsage","weight":256,"cookies":false,"type":"","demo":"functions\/get-function-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"range","description":"Date range.","required":false,"schema":{"type":"string","x-example":"24h","enum":["24h","7d","30d","90d"],"x-enum-name":null,"x-enum-keys":[],"default":"30d"},"in":"query"}]}},"\/functions\/{functionId}\/variables":{"get":{"summary":"List variables","operationId":"functionsListVariables","tags":["functions"],"description":"Get a list of all variables of a specific function.","responses":{"200":{"description":"Variables List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variableList"}}}}},"x-appwrite":{"method":"listVariables","weight":271,"cookies":false,"type":"","demo":"functions\/list-variables.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-variables.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}]},"post":{"summary":"Create variable","operationId":"functionsCreateVariable","tags":["functions"],"description":"Create a new function environment variable. These variables can be accessed in the function at runtime as environment variables.","responses":{"201":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"createVariable","weight":270,"cookies":false,"type":"","demo":"functions\/create-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","x-example":"[VALUE]"}},"required":["key","value"]}}}}}},"\/functions\/{functionId}\/variables\/{variableId}":{"get":{"summary":"Get variable","operationId":"functionsGetVariable","tags":["functions"],"description":"Get a variable by its unique ID.","responses":{"200":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"getVariable","weight":272,"cookies":false,"type":"","demo":"functions\/get-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}]},"put":{"summary":"Update variable","operationId":"functionsUpdateVariable","tags":["functions"],"description":"Update variable by its unique ID.","responses":{"200":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"updateVariable","weight":273,"cookies":false,"type":"","demo":"functions\/update-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","x-example":"[VALUE]"}},"required":["key"]}}}}},"delete":{"summary":"Delete variable","operationId":"functionsDeleteVariable","tags":["functions"],"description":"Delete a variable by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteVariable","weight":274,"cookies":false,"type":"","demo":"functions\/delete-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}]}},"\/graphql":{"post":{"summary":"GraphQL endpoint","operationId":"graphqlQuery","tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/any"}}}}},"x-appwrite":{"method":"query","weight":289,"cookies":false,"type":"graphql","demo":"graphql\/query.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/graphql\/mutation":{"post":{"summary":"GraphQL endpoint","operationId":"graphqlMutation","tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/any"}}}}},"x-appwrite":{"method":"mutation","weight":288,"cookies":false,"type":"graphql","demo":"graphql\/mutation.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/health":{"get":{"summary":"Get HTTP","operationId":"healthGet","tags":["health"],"description":"Check the Appwrite HTTP server is up and responsive.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"get","weight":109,"cookies":false,"type":"","demo":"health\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/anti-virus":{"get":{"summary":"Get antivirus","operationId":"healthGetAntivirus","tags":["health"],"description":"Check the Appwrite Antivirus server is up and connection is successful.","responses":{"200":{"description":"Health Antivirus","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthAntivirus"}}}}},"x-appwrite":{"method":"getAntivirus","weight":127,"cookies":false,"type":"","demo":"health\/get-antivirus.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-storage-anti-virus.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/cache":{"get":{"summary":"Get cache","operationId":"healthGetCache","tags":["health"],"description":"Check the Appwrite in-memory cache servers are up and connection is successful.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"getCache","weight":112,"cookies":false,"type":"","demo":"health\/get-cache.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-cache.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/db":{"get":{"summary":"Get DB","operationId":"healthGetDB","tags":["health"],"description":"Check the Appwrite database servers are up and connection is successful.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"getDB","weight":111,"cookies":false,"type":"","demo":"health\/get-d-b.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-db.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/pubsub":{"get":{"summary":"Get pubsub","operationId":"healthGetPubSub","tags":["health"],"description":"Check the Appwrite pub-sub servers are up and connection is successful.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"getPubSub","weight":114,"cookies":false,"type":"","demo":"health\/get-pub-sub.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-pubsub.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/queue":{"get":{"summary":"Get queue","operationId":"healthGetQueue","tags":["health"],"description":"Check the Appwrite queue messaging servers are up and connection is successful.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"getQueue","weight":113,"cookies":false,"type":"","demo":"health\/get-queue.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/queue\/builds":{"get":{"summary":"Get builds queue","operationId":"healthGetQueueBuilds","tags":["health"],"description":"Get the number of builds that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueBuilds","weight":119,"cookies":false,"type":"","demo":"health\/get-queue-builds.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-builds.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/certificates":{"get":{"summary":"Get certificates queue","operationId":"healthGetQueueCertificates","tags":["health"],"description":"Get the number of certificates that are waiting to be issued against [Letsencrypt](https:\/\/letsencrypt.org\/) in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueCertificates","weight":118,"cookies":false,"type":"","demo":"health\/get-queue-certificates.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-certificates.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/databases":{"get":{"summary":"Get databases queue","operationId":"healthGetQueueDatabases","tags":["health"],"description":"Get the number of database changes that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueDatabases","weight":120,"cookies":false,"type":"","demo":"health\/get-queue-databases.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-databases.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"name","description":"Queue name for which to check the queue size","required":false,"schema":{"type":"string","x-example":"[NAME]","default":"database_db_main"},"in":"query"},{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/deletes":{"get":{"summary":"Get deletes queue","operationId":"healthGetQueueDeletes","tags":["health"],"description":"Get the number of background destructive changes that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueDeletes","weight":121,"cookies":false,"type":"","demo":"health\/get-queue-deletes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-deletes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/functions":{"get":{"summary":"Get functions queue","operationId":"healthGetQueueFunctions","tags":["health"],"description":"","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueFunctions","weight":125,"cookies":false,"type":"","demo":"health\/get-queue-functions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-functions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/logs":{"get":{"summary":"Get logs queue","operationId":"healthGetQueueLogs","tags":["health"],"description":"Get the number of logs that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueLogs","weight":117,"cookies":false,"type":"","demo":"health\/get-queue-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/mails":{"get":{"summary":"Get mails queue","operationId":"healthGetQueueMails","tags":["health"],"description":"Get the number of mails that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueMails","weight":122,"cookies":false,"type":"","demo":"health\/get-queue-mails.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-mails.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/messaging":{"get":{"summary":"Get messaging queue","operationId":"healthGetQueueMessaging","tags":["health"],"description":"Get the number of messages that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueMessaging","weight":123,"cookies":false,"type":"","demo":"health\/get-queue-messaging.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-messaging.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/migrations":{"get":{"summary":"Get migrations queue","operationId":"healthGetQueueMigrations","tags":["health"],"description":"Get the number of migrations that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueMigrations","weight":124,"cookies":false,"type":"","demo":"health\/get-queue-migrations.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-migrations.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/webhooks":{"get":{"summary":"Get webhooks queue","operationId":"healthGetQueueWebhooks","tags":["health"],"description":"Get the number of webhooks that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueWebhooks","weight":116,"cookies":false,"type":"","demo":"health\/get-queue-webhooks.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-webhooks.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/storage\/local":{"get":{"summary":"Get local storage","operationId":"healthGetStorageLocal","tags":["health"],"description":"Check the Appwrite local storage device is up and connection is successful.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"getStorageLocal","weight":126,"cookies":false,"type":"","demo":"health\/get-storage-local.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-storage-local.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/time":{"get":{"summary":"Get time","operationId":"healthGetTime","tags":["health"],"description":"Check the Appwrite server time is synced with Google remote NTP server. We use this technology to smoothly handle leap seconds with no disruptive events. The [Network Time Protocol](https:\/\/en.wikipedia.org\/wiki\/Network_Time_Protocol) (NTP) is used by hundreds of millions of computers and devices to synchronize their clocks over the Internet. If your computer sets its own clock, it likely uses NTP.","responses":{"200":{"description":"Health Time","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthTime"}}}}},"x-appwrite":{"method":"getTime","weight":115,"cookies":false,"type":"","demo":"health\/get-time.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-time.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/locale":{"get":{"summary":"Get user locale","operationId":"localeGet","tags":["locale"],"description":"Get the current user location based on IP. Returns an object with user country code, country name, continent name, continent code, ip address and suggested currency. You can use the locale header to get the data in a supported language.\n\n([IP Geolocation by DB-IP](https:\/\/db-ip.com))","responses":{"200":{"description":"Locale","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/locale"}}}}},"x-appwrite":{"method":"get","weight":101,"cookies":false,"type":"","demo":"locale\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-locale.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/localed","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/codes":{"get":{"summary":"List Locale Codes","operationId":"localeListCodes","tags":["locale"],"description":"List of all locale codes in [ISO 639-1](https:\/\/en.wikipedia.org\/wiki\/List_of_ISO_639-1_codes).","responses":{"200":{"description":"Locale codes list","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/localeCodeList"}}}}},"x-appwrite":{"method":"listCodes","weight":102,"cookies":false,"type":"","demo":"locale\/list-codes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-locale-codes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/localeCode","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/continents":{"get":{"summary":"List continents","operationId":"localeListContinents","tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/continentList"}}}}},"x-appwrite":{"method":"listContinents","weight":106,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/continents","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List countries","operationId":"localeListCountries","tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountries","weight":103,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/countries","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU countries","operationId":"localeListCountriesEU","tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountriesEU","weight":104,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/countries\/eu","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List countries phone codes","operationId":"localeListCountriesPhones","tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/phoneList"}}}}},"x-appwrite":{"method":"listCountriesPhones","weight":105,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/countries\/phones","offline-key":"","offline-response-key":"countryCode","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List currencies","operationId":"localeListCurrencies","tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/currencyList"}}}}},"x-appwrite":{"method":"listCurrencies","weight":107,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/currencies","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List languages","operationId":"localeListLanguages","tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/languageList"}}}}},"x-appwrite":{"method":"listLanguages","weight":108,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/languages","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/messaging\/messages":{"get":{"summary":"List messages","operationId":"messagingListMessages","tags":["messaging"],"description":"","responses":{"200":{"description":"Message list","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/messageList"}}}}},"x-appwrite":{"method":"listMessages","weight":346,"cookies":false,"type":"","demo":"messaging\/list-messages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-messages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, provider, type, enabled","required":false,"schema":{"type":"string","default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]}},"\/messaging\/messages\/email":{"post":{"summary":"Create an email.","operationId":"messagingCreateEmailMessage","tags":["messaging"],"description":"","responses":{"201":{"description":"Message","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/message"}}}}},"x-appwrite":{"method":"createEmailMessage","weight":343,"cookies":false,"type":"","demo":"messaging\/create-email-message.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"messageId":{"type":"string","description":"Message ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[MESSAGE_ID]"},"subject":{"type":"string","description":"Email Subject.","x-example":"[SUBJECT]"},"content":{"type":"string","description":"Email Content.","x-example":"[CONTENT]"},"topics":{"type":"array","description":"List of Topic IDs.","x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","x-example":null,"items":{"type":"string"}},"cc":{"type":"array","description":"Array of target IDs to be added as CC.","x-example":null,"items":{"type":"string"}},"bcc":{"type":"array","description":"Array of target IDs to be added as BCC.","x-example":null,"items":{"type":"string"}},"description":{"type":"string","description":"Description for message.","x-example":"[DESCRIPTION]"},"status":{"type":"string","description":"Message Status. Value must be either draft or cancelled or processing.","x-example":"draft","enum":["draft","canceled","processing"],"x-enum-name":null,"x-enum-keys":[]},"html":{"type":"boolean","description":"Is content of type HTML","x-example":false},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","x-example":null}},"required":["messageId","subject","content"]}}}}}},"\/messaging\/messages\/email\/{messageId}":{"patch":{"summary":"Update an email.","operationId":"messagingUpdateEmail","tags":["messaging"],"description":"","responses":{"200":{"description":"Message","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/message"}}}}},"x-appwrite":{"method":"updateEmail","weight":349,"cookies":false,"type":"","demo":"messaging\/update-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"schema":{"type":"string","x-example":"[MESSAGE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"topics":{"type":"array","description":"List of Topic IDs.","x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","x-example":null,"items":{"type":"string"}},"subject":{"type":"string","description":"Email Subject.","x-example":"[SUBJECT]"},"description":{"type":"string","description":"Description for Message.","x-example":"[DESCRIPTION]"},"content":{"type":"string","description":"Email Content.","x-example":"[CONTENT]"},"status":{"type":"string","description":"Message Status. Value must be either draft or cancelled or processing.","x-example":"draft","enum":["draft","cancelled","processing"],"x-enum-name":null,"x-enum-keys":[]},"html":{"type":"boolean","description":"Is content of type HTML","x-example":false},"cc":{"type":"array","description":"Array of target IDs to be added as CC.","x-example":null,"items":{"type":"string"}},"bcc":{"type":"array","description":"Array of target IDs to be added as BCC.","x-example":null,"items":{"type":"string"}},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","x-example":null}}}}}}}},"\/messaging\/messages\/push":{"post":{"summary":"Create a push notification.","operationId":"messagingCreatePushMessage","tags":["messaging"],"description":"","responses":{"201":{"description":"Message","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/message"}}}}},"x-appwrite":{"method":"createPushMessage","weight":345,"cookies":false,"type":"","demo":"messaging\/create-push-message.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-push-notification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"messageId":{"type":"string","description":"Message ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[MESSAGE_ID]"},"title":{"type":"string","description":"Title for push notification.","x-example":"[TITLE]"},"body":{"type":"string","description":"Body for push notification.","x-example":"[BODY]"},"topics":{"type":"array","description":"List of Topic IDs.","x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","x-example":null,"items":{"type":"string"}},"description":{"type":"string","description":"Description for Message.","x-example":"[DESCRIPTION]"},"data":{"type":"object","description":"Additional Data for push notification.","x-example":"{}"},"action":{"type":"string","description":"Action for push notification.","x-example":"[ACTION]"},"icon":{"type":"string","description":"Icon for push notification. Available only for Android and Web Platform.","x-example":"[ICON]"},"sound":{"type":"string","description":"Sound for push notification. Available only for Android and IOS Platform.","x-example":"[SOUND]"},"color":{"type":"string","description":"Color for push notification. Available only for Android Platform.","x-example":"[COLOR]"},"tag":{"type":"string","description":"Tag for push notification. Available only for Android Platform.","x-example":"[TAG]"},"badge":{"type":"string","description":"Badge for push notification. Available only for IOS Platform.","x-example":"[BADGE]"},"status":{"type":"string","description":"Message Status. Value must be either draft or cancelled or processing.","x-example":"draft","enum":["draft","canceled","processing"],"x-enum-name":null,"x-enum-keys":[]},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","x-example":null}},"required":["messageId","title","body"]}}}}}},"\/messaging\/messages\/push\/{messageId}":{"patch":{"summary":"Update a push notification.","operationId":"messagingUpdatePushNotification","tags":["messaging"],"description":"","responses":{"200":{"description":"Message","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/message"}}}}},"x-appwrite":{"method":"updatePushNotification","weight":351,"cookies":false,"type":"","demo":"messaging\/update-push-notification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-push-notification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"schema":{"type":"string","x-example":"[MESSAGE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"topics":{"type":"array","description":"List of Topic IDs.","x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","x-example":null,"items":{"type":"string"}},"description":{"type":"string","description":"Description for Message.","x-example":"[DESCRIPTION]"},"title":{"type":"string","description":"Title for push notification.","x-example":"[TITLE]"},"body":{"type":"string","description":"Body for push notification.","x-example":"[BODY]"},"data":{"type":"object","description":"Additional Data for push notification.","x-example":"{}"},"action":{"type":"string","description":"Action for push notification.","x-example":"[ACTION]"},"icon":{"type":"string","description":"Icon for push notification. Available only for Android and Web platforms.","x-example":"[ICON]"},"sound":{"type":"string","description":"Sound for push notification. Available only for Android and iOS platforms.","x-example":"[SOUND]"},"color":{"type":"string","description":"Color for push notification. Available only for Android platforms.","x-example":"[COLOR]"},"tag":{"type":"string","description":"Tag for push notification. Available only for Android platforms.","x-example":"[TAG]"},"badge":{"type":"integer","description":"Badge for push notification. Available only for iOS platforms.","x-example":null},"status":{"type":"string","description":"Message Status. Value must be either draft, cancelled, or processing.","x-example":"draft","enum":["draft","cancelled","processing"],"x-enum-name":null,"x-enum-keys":[]},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","x-example":null}}}}}}}},"\/messaging\/messages\/sms":{"post":{"summary":"Create an SMS.","operationId":"messagingCreateSMSMessage","tags":["messaging"],"description":"","responses":{"201":{"description":"Message","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/message"}}}}},"x-appwrite":{"method":"createSMSMessage","weight":344,"cookies":false,"type":"","demo":"messaging\/create-s-m-s-message.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-sms.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"messageId":{"type":"string","description":"Message ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[MESSAGE_ID]"},"content":{"type":"string","description":"SMS Content.","x-example":"[CONTENT]"},"topics":{"type":"array","description":"List of Topic IDs.","x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","x-example":null,"items":{"type":"string"}},"description":{"type":"string","description":"Description for Message.","x-example":"[DESCRIPTION]"},"status":{"type":"string","description":"Message Status. Value must be either draft or cancelled or processing.","x-example":"draft","enum":["draft","canceled","processing"],"x-enum-name":null,"x-enum-keys":[]},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","x-example":null}},"required":["messageId","content"]}}}}}},"\/messaging\/messages\/sms\/{messageId}":{"patch":{"summary":"Update an SMS.","operationId":"messagingUpdateSMS","tags":["messaging"],"description":"","responses":{"200":{"description":"Message","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/message"}}}}},"x-appwrite":{"method":"updateSMS","weight":350,"cookies":false,"type":"","demo":"messaging\/update-s-m-s.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"schema":{"type":"string","x-example":"[MESSAGE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"topics":{"type":"array","description":"List of Topic IDs.","x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","x-example":null,"items":{"type":"string"}},"description":{"type":"string","description":"Description for Message.","x-example":"[DESCRIPTION]"},"content":{"type":"string","description":"Email Content.","x-example":"[CONTENT]"},"status":{"type":"string","description":"Message Status. Value must be either draft or cancelled or processing.","x-example":"draft","enum":["draft","cancelled","processing"],"x-enum-name":null,"x-enum-keys":[]},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","x-example":null}}}}}}}},"\/messaging\/messages\/{messageId}":{"get":{"summary":"Get a message","operationId":"messagingGetMessage","tags":["messaging"],"description":"","responses":{"200":{"description":"Message","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/message"}}}}},"x-appwrite":{"method":"getMessage","weight":348,"cookies":false,"type":"","demo":"messaging\/get-message.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/get-message.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"schema":{"type":"string","x-example":"[MESSAGE_ID]"},"in":"path"}]}},"\/messaging\/messages\/{messageId}\/logs":{"get":{"summary":"List message logs","operationId":"messagingListMessageLogs","tags":["messaging"],"description":"","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listMessageLogs","weight":347,"cookies":false,"type":"","demo":"messaging\/list-message-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/messages\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"schema":{"type":"string","x-example":"[MESSAGE_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/messaging\/providers":{"get":{"summary":"List providers","operationId":"messagingListProviders","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider list","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/providerList"}}}}},"x-appwrite":{"method":"listProviders","weight":319,"cookies":false,"type":"","demo":"messaging\/list-providers.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-providers.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, provider, type, enabled","required":false,"schema":{"type":"string","default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]}},"\/messaging\/providers\/apns":{"post":{"summary":"Create APNS provider","operationId":"messagingCreateApnsProvider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createApnsProvider","weight":318,"cookies":false,"type":"","demo":"messaging\/create-apns-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-apns-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"authKey":{"type":"string","description":"APNS authentication key.","x-example":"[AUTH_KEY]"},"authKeyId":{"type":"string","description":"APNS authentication key ID.","x-example":"[AUTH_KEY_ID]"},"teamId":{"type":"string","description":"APNS team ID.","x-example":"[TEAM_ID]"},"bundleId":{"type":"string","description":"APNS bundle ID.","x-example":"[BUNDLE_ID]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name"]}}}}}},"\/messaging\/providers\/apns\/{providerId}":{"patch":{"summary":"Update APNS provider","operationId":"messagingUpdateApnsProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateApnsProvider","weight":330,"cookies":false,"type":"","demo":"messaging\/update-apns-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-apns-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"authKey":{"type":"string","description":"APNS authentication key.","x-example":"[AUTH_KEY]"},"authKeyId":{"type":"string","description":"APNS authentication key ID.","x-example":"[AUTH_KEY_ID]"},"teamId":{"type":"string","description":"APNS team ID.","x-example":"[TEAM_ID]"},"bundleId":{"type":"string","description":"APNS bundle ID.","x-example":"[BUNDLE_ID]"}}}}}}}},"\/messaging\/providers\/fcm":{"post":{"summary":"Create FCM provider","operationId":"messagingCreateFcmProvider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createFcmProvider","weight":317,"cookies":false,"type":"","demo":"messaging\/create-fcm-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-fcm-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"serviceAccountJSON":{"type":"object","description":"FCM service account JSON.","x-example":"{}"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name"]}}}}}},"\/messaging\/providers\/fcm\/{providerId}":{"patch":{"summary":"Update FCM provider","operationId":"messagingUpdateFcmProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateFcmProvider","weight":329,"cookies":false,"type":"","demo":"messaging\/update-fcm-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-fcm-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"serviceAccountJSON":{"type":"object","description":"FCM service account JSON.","x-example":"{}"}}}}}}}},"\/messaging\/providers\/mailgun":{"post":{"summary":"Create Mailgun provider","operationId":"messagingCreateMailgunProvider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createMailgunProvider","weight":310,"cookies":false,"type":"","demo":"messaging\/create-mailgun-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-mailgun-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"apiKey":{"type":"string","description":"Mailgun API Key.","x-example":"[API_KEY]"},"domain":{"type":"string","description":"Mailgun Domain.","x-example":"[DOMAIN]"},"isEuRegion":{"type":"boolean","description":"Set as EU region.","x-example":false},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"fromName":{"type":"string","description":"Sender Name.","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the reply to field for the mail. Default value is sender name. Reply to name must have reply to email as well.","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the reply to field for the mail. Default value is sender email. Reply to email must have reply to name as well.","x-example":"[REPLY_TO_EMAIL]"}},"required":["providerId","name"]}}}}}},"\/messaging\/providers\/mailgun\/{providerId}":{"patch":{"summary":"Update Mailgun provider","operationId":"messagingUpdateMailgunProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateMailgunProvider","weight":322,"cookies":false,"type":"","demo":"messaging\/update-mailgun-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-mailgun-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"apiKey":{"type":"string","description":"Mailgun API Key.","x-example":"[API_KEY]"},"domain":{"type":"string","description":"Mailgun Domain.","x-example":"[DOMAIN]"},"isEuRegion":{"type":"boolean","description":"Set as EU region.","x-example":false},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"fromName":{"type":"string","description":"Sender Name.","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the reply to field for the mail. Default value is sender name.","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the reply to field for the mail. Default value is sender email.","x-example":"[REPLY_TO_EMAIL]"}}}}}}}},"\/messaging\/providers\/msg91":{"post":{"summary":"Create Msg91 provider","operationId":"messagingCreateMsg91Provider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createMsg91Provider","weight":312,"cookies":false,"type":"","demo":"messaging\/create-msg91provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-msg91-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"senderId":{"type":"string","description":"Msg91 Sender ID.","x-example":"[SENDER_ID]"},"authKey":{"type":"string","description":"Msg91 Auth Key.","x-example":"[AUTH_KEY]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name"]}}}}}},"\/messaging\/providers\/msg91\/{providerId}":{"patch":{"summary":"Update Msg91 provider","operationId":"messagingUpdateMsg91Provider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateMsg91Provider","weight":324,"cookies":false,"type":"","demo":"messaging\/update-msg91provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-msg91-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"senderId":{"type":"string","description":"Msg91 Sender ID.","x-example":"[SENDER_ID]"},"authKey":{"type":"string","description":"Msg91 Auth Key.","x-example":"[AUTH_KEY]"},"from":{"type":"string","description":"Sender number.","x-example":"[FROM]"}}}}}}}},"\/messaging\/providers\/sendgrid":{"post":{"summary":"Create Sendgrid provider","operationId":"messagingCreateSendgridProvider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createSendgridProvider","weight":311,"cookies":false,"type":"","demo":"messaging\/create-sendgrid-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-sengrid-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"apiKey":{"type":"string","description":"Sendgrid API key.","x-example":"[API_KEY]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"fromName":{"type":"string","description":"Sender Name.","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the reply to field for the mail. Default value is sender name.","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the reply to field for the mail. Default value is sender email.","x-example":"[REPLY_TO_EMAIL]"}},"required":["providerId","name"]}}}}}},"\/messaging\/providers\/sendgrid\/{providerId}":{"patch":{"summary":"Update Sendgrid provider","operationId":"messagingUpdateSendgridProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateSendgridProvider","weight":323,"cookies":false,"type":"","demo":"messaging\/update-sendgrid-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-sendgrid-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"apiKey":{"type":"string","description":"Sendgrid API key.","x-example":"[API_KEY]"},"fromName":{"type":"string","description":"Sender Name.","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the Reply To field for the mail. Default value is Sender Name.","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the Reply To field for the mail. Default value is Sender Email.","x-example":"[REPLY_TO_EMAIL]"}}}}}}}},"\/messaging\/providers\/telesign":{"post":{"summary":"Create Telesign provider","operationId":"messagingCreateTelesignProvider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createTelesignProvider","weight":313,"cookies":false,"type":"","demo":"messaging\/create-telesign-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-telesign-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"username":{"type":"string","description":"Telesign username.","x-example":"[USERNAME]"},"password":{"type":"string","description":"Telesign password.","x-example":"[PASSWORD]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name"]}}}}}},"\/messaging\/providers\/telesign\/{providerId}":{"patch":{"summary":"Update Telesign provider","operationId":"messagingUpdateTelesignProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateTelesignProvider","weight":325,"cookies":false,"type":"","demo":"messaging\/update-telesign-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-telesign-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"username":{"type":"string","description":"Telesign username.","x-example":"[USERNAME]"},"password":{"type":"string","description":"Telesign password.","x-example":"[PASSWORD]"},"from":{"type":"string","description":"Sender number.","x-example":"[FROM]"}}}}}}}},"\/messaging\/providers\/textmagic":{"post":{"summary":"Create Textmagic provider","operationId":"messagingCreateTextmagicProvider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createTextmagicProvider","weight":314,"cookies":false,"type":"","demo":"messaging\/create-textmagic-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-textmagic-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"username":{"type":"string","description":"Textmagic username.","x-example":"[USERNAME]"},"apiKey":{"type":"string","description":"Textmagic apiKey.","x-example":"[API_KEY]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name"]}}}}}},"\/messaging\/providers\/textmagic\/{providerId}":{"patch":{"summary":"Update Textmagic provider","operationId":"messagingUpdateTextmagicProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateTextmagicProvider","weight":326,"cookies":false,"type":"","demo":"messaging\/update-textmagic-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-textmagic-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"username":{"type":"string","description":"Textmagic username.","x-example":"[USERNAME]"},"apiKey":{"type":"string","description":"Textmagic apiKey.","x-example":"[API_KEY]"},"from":{"type":"string","description":"Sender number.","x-example":"[FROM]"}}}}}}}},"\/messaging\/providers\/twilio":{"post":{"summary":"Create Twilio provider","operationId":"messagingCreateTwilioProvider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createTwilioProvider","weight":315,"cookies":false,"type":"","demo":"messaging\/create-twilio-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-twilio-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"accountSid":{"type":"string","description":"Twilio account secret ID.","x-example":"[ACCOUNT_SID]"},"authToken":{"type":"string","description":"Twilio authentication token.","x-example":"[AUTH_TOKEN]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name"]}}}}}},"\/messaging\/providers\/twilio\/{providerId}":{"patch":{"summary":"Update Twilio provider","operationId":"messagingUpdateTwilioProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateTwilioProvider","weight":327,"cookies":false,"type":"","demo":"messaging\/update-twilio-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-twilio-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"accountSid":{"type":"string","description":"Twilio account secret ID.","x-example":"[ACCOUNT_SID]"},"authToken":{"type":"string","description":"Twilio authentication token.","x-example":"[AUTH_TOKEN]"},"from":{"type":"string","description":"Sender number.","x-example":"[FROM]"}}}}}}}},"\/messaging\/providers\/vonage":{"post":{"summary":"Create Vonage provider","operationId":"messagingCreateVonageProvider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createVonageProvider","weight":316,"cookies":false,"type":"","demo":"messaging\/create-vonage-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-vonage-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"apiKey":{"type":"string","description":"Vonage API key.","x-example":"[API_KEY]"},"apiSecret":{"type":"string","description":"Vonage API secret.","x-example":"[API_SECRET]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name"]}}}}}},"\/messaging\/providers\/vonage\/{providerId}":{"patch":{"summary":"Update Vonage provider","operationId":"messagingUpdateVonageProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateVonageProvider","weight":328,"cookies":false,"type":"","demo":"messaging\/update-vonage-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-vonage-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"apiKey":{"type":"string","description":"Vonage API key.","x-example":"[API_KEY]"},"apiSecret":{"type":"string","description":"Vonage API secret.","x-example":"[API_SECRET]"},"from":{"type":"string","description":"Sender number.","x-example":"[FROM]"}}}}}}}},"\/messaging\/providers\/{providerId}":{"get":{"summary":"Get provider","operationId":"messagingGetProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"getProvider","weight":321,"cookies":false,"type":"","demo":"messaging\/get-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/get-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}]},"delete":{"summary":"Delete provider","operationId":"messagingDeleteProvider","tags":["messaging"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteProvider","weight":331,"cookies":false,"type":"","demo":"messaging\/delete-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}]}},"\/messaging\/providers\/{providerId}\/logs":{"get":{"summary":"List provider logs","operationId":"messagingListProviderLogs","tags":["messaging"],"description":"","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listProviderLogs","weight":320,"cookies":false,"type":"","demo":"messaging\/list-provider-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/providers\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/messaging\/subscribers\/{subscriberId}\/logs":{"get":{"summary":"List subscriber logs","operationId":"messagingListSubscriberLogs","tags":["messaging"],"description":"","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listSubscriberLogs","weight":340,"cookies":false,"type":"","demo":"messaging\/list-subscriber-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/subscribers\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"subscriberId","description":"Subscriber ID.","required":true,"schema":{"type":"string","x-example":"[SUBSCRIBER_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/messaging\/topics":{"get":{"summary":"List topics.","operationId":"messagingListTopics","tags":["messaging"],"description":"","responses":{"200":{"description":"Topic list","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/topicList"}}}}},"x-appwrite":{"method":"listTopics","weight":333,"cookies":false,"type":"","demo":"messaging\/list-topics.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-topics.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, description, total","required":false,"schema":{"type":"string","default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create a topic.","operationId":"messagingCreateTopic","tags":["messaging"],"description":"","responses":{"201":{"description":"Topic","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/topic"}}}}},"x-appwrite":{"method":"createTopic","weight":332,"cookies":false,"type":"","demo":"messaging\/create-topic.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-topic.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"topicId":{"type":"string","description":"Topic ID. Choose a custom Topic ID or a new Topic ID.","x-example":"[TOPIC_ID]"},"name":{"type":"string","description":"Topic Name.","x-example":"[NAME]"},"description":{"type":"string","description":"Topic Description.","x-example":"[DESCRIPTION]"}},"required":["topicId","name"]}}}}}},"\/messaging\/topics\/{topicId}":{"get":{"summary":"Get a topic.","operationId":"messagingGetTopic","tags":["messaging"],"description":"","responses":{"200":{"description":"Topic","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/topic"}}}}},"x-appwrite":{"method":"getTopic","weight":335,"cookies":false,"type":"","demo":"messaging\/get-topic.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/get-topic.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID.","required":true,"schema":{"type":"string","x-example":"[TOPIC_ID]"},"in":"path"}]},"patch":{"summary":"Update a topic.","operationId":"messagingUpdateTopic","tags":["messaging"],"description":"","responses":{"200":{"description":"Topic","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/topic"}}}}},"x-appwrite":{"method":"updateTopic","weight":336,"cookies":false,"type":"","demo":"messaging\/update-topic.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-topic.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID.","required":true,"schema":{"type":"string","x-example":"[TOPIC_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Topic Name.","x-example":"[NAME]"},"description":{"type":"string","description":"Topic Description.","x-example":"[DESCRIPTION]"}}}}}}},"delete":{"summary":"Delete a topic.","operationId":"messagingDeleteTopic","tags":["messaging"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteTopic","weight":337,"cookies":false,"type":"","demo":"messaging\/delete-topic.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-topic.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID.","required":true,"schema":{"type":"string","x-example":"[TOPIC_ID]"},"in":"path"}]}},"\/messaging\/topics\/{topicId}\/logs":{"get":{"summary":"List topic logs","operationId":"messagingListTopicLogs","tags":["messaging"],"description":"","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listTopicLogs","weight":334,"cookies":false,"type":"","demo":"messaging\/list-topic-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/topics\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID.","required":true,"schema":{"type":"string","x-example":"[TOPIC_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/messaging\/topics\/{topicId}\/subscribers":{"get":{"summary":"List subscribers.","operationId":"messagingListSubscribers","tags":["messaging"],"description":"","responses":{"200":{"description":"Subscriber list","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/subscriberList"}}}}},"x-appwrite":{"method":"listSubscribers","weight":339,"cookies":false,"type":"","demo":"messaging\/list-subscribers.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-subscribers.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID subscribed to.","required":true,"schema":{"type":"string","x-example":"[TOPIC_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, provider, type, enabled","required":false,"schema":{"type":"string","default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create a subscriber.","operationId":"messagingCreateSubscriber","tags":["messaging"],"description":"","responses":{"201":{"description":"Subscriber","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/subscriber"}}}}},"x-appwrite":{"method":"createSubscriber","weight":338,"cookies":false,"type":"","demo":"messaging\/create-subscriber.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-subscriber.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.write","platforms":["server","client","console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID to subscribe to.","required":true,"schema":{"type":"string","x-example":"[TOPIC_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"subscriberId":{"type":"string","description":"Subscriber ID. Choose a custom Subscriber ID or a new Subscriber ID.","x-example":"[SUBSCRIBER_ID]"},"targetId":{"type":"string","description":"Target ID. The target ID to link to the specified Topic ID.","x-example":"[TARGET_ID]"}},"required":["subscriberId","targetId"]}}}}}},"\/messaging\/topics\/{topicId}\/subscribers\/{subscriberId}":{"get":{"summary":"Get a subscriber.","operationId":"messagingGetSubscriber","tags":["messaging"],"description":"","responses":{"200":{"description":"Subscriber","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/subscriber"}}}}},"x-appwrite":{"method":"getSubscriber","weight":341,"cookies":false,"type":"","demo":"messaging\/get-subscriber.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/get-subscriber.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID subscribed to.","required":true,"schema":{"type":"string","x-example":"[TOPIC_ID]"},"in":"path"},{"name":"subscriberId","description":"Subscriber ID.","required":true,"schema":{"type":"string","x-example":"[SUBSCRIBER_ID]"},"in":"path"}]},"delete":{"summary":"Delete a subscriber.","operationId":"messagingDeleteSubscriber","tags":["messaging"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSubscriber","weight":342,"cookies":false,"type":"","demo":"messaging\/delete-subscriber.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-subscriber.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.write","platforms":["server","client","console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID subscribed to.","required":true,"schema":{"type":"string","x-example":"[TOPIC_ID]"},"in":"path"},{"name":"subscriberId","description":"Subscriber ID.","required":true,"schema":{"type":"string","x-example":"[SUBSCRIBER_ID]"},"in":"path"}]}},"\/migrations":{"get":{"summary":"List Migrations","operationId":"migrationsList","tags":["migrations"],"description":"","responses":{"200":{"description":"Migrations List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/migrationList"}}}}},"x-appwrite":{"method":"list","weight":297,"cookies":false,"type":"","demo":"migrations\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/list-migrations.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: status, stage, source, resources, statusCounters, resourceData, errors","required":false,"schema":{"type":"string","default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]}},"\/migrations\/appwrite":{"post":{"summary":"Migrate Appwrite Data","operationId":"migrationsCreateAppwriteMigration","tags":["migrations"],"description":"","responses":{"202":{"description":"Migration","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/migration"}}}}},"x-appwrite":{"method":"createAppwriteMigration","weight":292,"cookies":false,"type":"","demo":"migrations\/create-appwrite-migration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-appwrite.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"resources":{"type":"array","description":"List of resources to migrate","x-example":null,"items":{"type":"string"}},"endpoint":{"type":"string","description":"Source's Appwrite Endpoint","x-example":"https:\/\/example.com"},"projectId":{"type":"string","description":"Source's Project ID","x-example":"[PROJECT_ID]"},"apiKey":{"type":"string","description":"Source's API Key","x-example":"[API_KEY]"}},"required":["resources","endpoint","projectId","apiKey"]}}}}}},"\/migrations\/appwrite\/report":{"get":{"summary":"Generate a report on Appwrite Data","operationId":"migrationsGetAppwriteReport","tags":["migrations"],"description":"","responses":{"200":{"description":"Migration Report","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/migrationReport"}}}}},"x-appwrite":{"method":"getAppwriteReport","weight":299,"cookies":false,"type":"","demo":"migrations\/get-appwrite-report.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-appwrite-report.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"resources","description":"List of resources to migrate","required":true,"schema":{"type":"array","items":{"type":"string"}},"in":"query"},{"name":"endpoint","description":"Source's Appwrite Endpoint","required":true,"schema":{"type":"string","format":"url","x-example":"https:\/\/example.com"},"in":"query"},{"name":"projectID","description":"Source's Project ID","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"query"},{"name":"key","description":"Source's API Key","required":true,"schema":{"type":"string","x-example":"[KEY]"},"in":"query"}]}},"\/migrations\/firebase":{"post":{"summary":"Migrate Firebase Data (Service Account)","operationId":"migrationsCreateFirebaseMigration","tags":["migrations"],"description":"","responses":{"202":{"description":"Migration","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/migration"}}}}},"x-appwrite":{"method":"createFirebaseMigration","weight":294,"cookies":false,"type":"","demo":"migrations\/create-firebase-migration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-firebase.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"resources":{"type":"array","description":"List of resources to migrate","x-example":null,"items":{"type":"string"}},"serviceAccount":{"type":"string","description":"JSON of the Firebase service account credentials","x-example":"[SERVICE_ACCOUNT]"}},"required":["resources","serviceAccount"]}}}}}},"\/migrations\/firebase\/deauthorize":{"get":{"summary":"Revoke Appwrite's authorization to access Firebase Projects","operationId":"migrationsDeleteFirebaseAuth","tags":["migrations"],"description":"","responses":{"200":{"description":"File"}},"x-appwrite":{"method":"deleteFirebaseAuth","weight":305,"cookies":false,"type":"","demo":"migrations\/delete-firebase-auth.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/migrations\/firebase\/oauth":{"post":{"summary":"Migrate Firebase Data (OAuth)","operationId":"migrationsCreateFirebaseOAuthMigration","tags":["migrations"],"description":"","responses":{"202":{"description":"Migration","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/migration"}}}}},"x-appwrite":{"method":"createFirebaseOAuthMigration","weight":293,"cookies":false,"type":"","demo":"migrations\/create-firebase-o-auth-migration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-firebase.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"resources":{"type":"array","description":"List of resources to migrate","x-example":null,"items":{"type":"string"}},"projectId":{"type":"string","description":"Project ID of the Firebase Project","x-example":"[PROJECT_ID]"}},"required":["resources","projectId"]}}}}}},"\/migrations\/firebase\/projects":{"get":{"summary":"List Firebase Projects","operationId":"migrationsListFirebaseProjects","tags":["migrations"],"description":"","responses":{"200":{"description":"Migrations Firebase Projects List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/firebaseProjectList"}}}}},"x-appwrite":{"method":"listFirebaseProjects","weight":304,"cookies":false,"type":"","demo":"migrations\/list-firebase-projects.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/migrations\/firebase\/report":{"get":{"summary":"Generate a report on Firebase Data","operationId":"migrationsGetFirebaseReport","tags":["migrations"],"description":"","responses":{"200":{"description":"Migration Report","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/migrationReport"}}}}},"x-appwrite":{"method":"getFirebaseReport","weight":300,"cookies":false,"type":"","demo":"migrations\/get-firebase-report.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-firebase-report.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"resources","description":"List of resources to migrate","required":true,"schema":{"type":"array","items":{"type":"string"}},"in":"query"},{"name":"serviceAccount","description":"JSON of the Firebase service account credentials","required":true,"schema":{"type":"string","x-example":"[SERVICE_ACCOUNT]"},"in":"query"}]}},"\/migrations\/firebase\/report\/oauth":{"get":{"summary":"Generate a report on Firebase Data using OAuth","operationId":"migrationsGetFirebaseReportOAuth","tags":["migrations"],"description":"","responses":{"200":{"description":"Migration Report","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/migrationReport"}}}}},"x-appwrite":{"method":"getFirebaseReportOAuth","weight":301,"cookies":false,"type":"","demo":"migrations\/get-firebase-report-o-auth.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-firebase-report.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"resources","description":"List of resources to migrate","required":true,"schema":{"type":"array","items":{"type":"string"}},"in":"query"},{"name":"projectId","description":"Project ID","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"query"}]}},"\/migrations\/nhost":{"post":{"summary":"Migrate NHost Data","operationId":"migrationsCreateNHostMigration","tags":["migrations"],"description":"","responses":{"202":{"description":"Migration","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/migration"}}}}},"x-appwrite":{"method":"createNHostMigration","weight":296,"cookies":false,"type":"","demo":"migrations\/create-n-host-migration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-nhost.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"resources":{"type":"array","description":"List of resources to migrate","x-example":null,"items":{"type":"string"}},"subdomain":{"type":"string","description":"Source's Subdomain","x-example":"[SUBDOMAIN]"},"region":{"type":"string","description":"Source's Region","x-example":"[REGION]"},"adminSecret":{"type":"string","description":"Source's Admin Secret","x-example":"[ADMIN_SECRET]"},"database":{"type":"string","description":"Source's Database Name","x-example":"[DATABASE]"},"username":{"type":"string","description":"Source's Database Username","x-example":"[USERNAME]"},"password":{"type":"string","description":"Source's Database Password","x-example":"[PASSWORD]"},"port":{"type":"integer","description":"Source's Database Port","x-example":null}},"required":["resources","subdomain","region","adminSecret","database","username","password"]}}}}}},"\/migrations\/nhost\/report":{"get":{"summary":"Generate a report on NHost Data","operationId":"migrationsGetNHostReport","tags":["migrations"],"description":"","responses":{"200":{"description":"Migration Report","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/migrationReport"}}}}},"x-appwrite":{"method":"getNHostReport","weight":307,"cookies":false,"type":"","demo":"migrations\/get-n-host-report.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-nhost-report.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"resources","description":"List of resources to migrate.","required":true,"schema":{"type":"array","items":{"type":"string"}},"in":"query"},{"name":"subdomain","description":"Source's Subdomain.","required":true,"schema":{"type":"string","x-example":"[SUBDOMAIN]"},"in":"query"},{"name":"region","description":"Source's Region.","required":true,"schema":{"type":"string","x-example":"[REGION]"},"in":"query"},{"name":"adminSecret","description":"Source's Admin Secret.","required":true,"schema":{"type":"string","x-example":"[ADMIN_SECRET]"},"in":"query"},{"name":"database","description":"Source's Database Name.","required":true,"schema":{"type":"string","x-example":"[DATABASE]"},"in":"query"},{"name":"username","description":"Source's Database Username.","required":true,"schema":{"type":"string","x-example":"[USERNAME]"},"in":"query"},{"name":"password","description":"Source's Database Password.","required":true,"schema":{"type":"string","x-example":"[PASSWORD]"},"in":"query"},{"name":"port","description":"Source's Database Port.","required":false,"schema":{"type":"integer","format":"int32","default":5432},"in":"query"}]}},"\/migrations\/supabase":{"post":{"summary":"Migrate Supabase Data","operationId":"migrationsCreateSupabaseMigration","tags":["migrations"],"description":"","responses":{"202":{"description":"Migration","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/migration"}}}}},"x-appwrite":{"method":"createSupabaseMigration","weight":295,"cookies":false,"type":"","demo":"migrations\/create-supabase-migration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-supabase.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"resources":{"type":"array","description":"List of resources to migrate","x-example":null,"items":{"type":"string"}},"endpoint":{"type":"string","description":"Source's Supabase Endpoint","x-example":"https:\/\/example.com"},"apiKey":{"type":"string","description":"Source's API Key","x-example":"[API_KEY]"},"databaseHost":{"type":"string","description":"Source's Database Host","x-example":"[DATABASE_HOST]"},"username":{"type":"string","description":"Source's Database Username","x-example":"[USERNAME]"},"password":{"type":"string","description":"Source's Database Password","x-example":"[PASSWORD]"},"port":{"type":"integer","description":"Source's Database Port","x-example":null}},"required":["resources","endpoint","apiKey","databaseHost","username","password"]}}}}}},"\/migrations\/supabase\/report":{"get":{"summary":"Generate a report on Supabase Data","operationId":"migrationsGetSupabaseReport","tags":["migrations"],"description":"","responses":{"200":{"description":"Migration Report","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/migrationReport"}}}}},"x-appwrite":{"method":"getSupabaseReport","weight":306,"cookies":false,"type":"","demo":"migrations\/get-supabase-report.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-supabase-report.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"resources","description":"List of resources to migrate","required":true,"schema":{"type":"array","items":{"type":"string"}},"in":"query"},{"name":"endpoint","description":"Source's Supabase Endpoint.","required":true,"schema":{"type":"string","format":"url","x-example":"https:\/\/example.com"},"in":"query"},{"name":"apiKey","description":"Source's API Key.","required":true,"schema":{"type":"string","x-example":"[API_KEY]"},"in":"query"},{"name":"databaseHost","description":"Source's Database Host.","required":true,"schema":{"type":"string","x-example":"[DATABASE_HOST]"},"in":"query"},{"name":"username","description":"Source's Database Username.","required":true,"schema":{"type":"string","x-example":"[USERNAME]"},"in":"query"},{"name":"password","description":"Source's Database Password.","required":true,"schema":{"type":"string","x-example":"[PASSWORD]"},"in":"query"},{"name":"port","description":"Source's Database Port.","required":false,"schema":{"type":"integer","format":"int32","default":5432},"in":"query"}]}},"\/migrations\/{migrationId}":{"get":{"summary":"Get Migration","operationId":"migrationsGet","tags":["migrations"],"description":"","responses":{"200":{"description":"Migration","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/migration"}}}}},"x-appwrite":{"method":"get","weight":298,"cookies":false,"type":"","demo":"migrations\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/get-migration.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"migrationId","description":"Migration unique ID.","required":true,"schema":{"type":"string","x-example":"[MIGRATION_ID]"},"in":"path"}]},"patch":{"summary":"Retry Migration","operationId":"migrationsRetry","tags":["migrations"],"description":"","responses":{"202":{"description":"Migration","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/migration"}}}}},"x-appwrite":{"method":"retry","weight":308,"cookies":false,"type":"","demo":"migrations\/retry.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/retry-migration.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"migrationId","description":"Migration unique ID.","required":true,"schema":{"type":"string","x-example":"[MIGRATION_ID]"},"in":"path"}]},"delete":{"summary":"Delete Migration","operationId":"migrationsDelete","tags":["migrations"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":309,"cookies":false,"type":"","demo":"migrations\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-migration.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"migrationId","description":"Migration ID.","required":true,"schema":{"type":"string","x-example":"[MIGRATION_ID]"},"in":"path"}]}},"\/project\/usage":{"get":{"summary":"Get usage stats for a project","operationId":"projectGetUsage","tags":["project"],"description":"","responses":{"200":{"description":"UsageProject","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageProject"}}}}},"x-appwrite":{"method":"getUsage","weight":169,"cookies":false,"type":"","demo":"project\/get-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"schema":{"type":"string","x-example":"24h","enum":["24h","7d","30d","90d"],"x-enum-name":null,"x-enum-keys":[],"default":"30d"},"in":"query"}]}},"\/project\/variables":{"get":{"summary":"List Variables","operationId":"projectListVariables","tags":["project"],"description":"Get a list of all project variables. These variables will be accessible in all Appwrite Functions at runtime.","responses":{"200":{"description":"Variables List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variableList"}}}}},"x-appwrite":{"method":"listVariables","weight":171,"cookies":false,"type":"","demo":"project\/list-variables.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/project\/list-variables.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]},"post":{"summary":"Create Variable","operationId":"projectCreateVariable","tags":["project"],"description":"Create a new project variable. This variable will be accessible in all Appwrite Functions at runtime.","responses":{"201":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"createVariable","weight":170,"cookies":false,"type":"","demo":"project\/create-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/project\/create-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","x-example":"[VALUE]"}},"required":["key","value"]}}}}}},"\/project\/variables\/{variableId}":{"get":{"summary":"Get Variable","operationId":"projectGetVariable","tags":["project"],"description":"Get a project variable by its unique ID.","responses":{"200":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"getVariable","weight":172,"cookies":false,"type":"","demo":"project\/get-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/project\/get-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}]},"put":{"summary":"Update Variable","operationId":"projectUpdateVariable","tags":["project"],"description":"Update project variable by its unique ID. This variable will be accessible in all Appwrite Functions at runtime.","responses":{"200":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"updateVariable","weight":173,"cookies":false,"type":"","demo":"project\/update-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/project\/update-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","x-example":"[VALUE]"}},"required":["key"]}}}}},"delete":{"summary":"Delete Variable","operationId":"projectDeleteVariable","tags":["project"],"description":"Delete a project variable by its unique ID. ","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteVariable","weight":174,"cookies":false,"type":"","demo":"project\/delete-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/project\/delete-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}]}},"\/projects":{"get":{"summary":"List projects","operationId":"projectsList","tags":["projects"],"description":"","responses":{"200":{"description":"Projects List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/projectList"}}}}},"x-appwrite":{"method":"list","weight":130,"cookies":false,"type":"","demo":"projects\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, teamId","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create project","operationId":"projectsCreate","tags":["projects"],"description":"","responses":{"201":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"create","weight":129,"cookies":false,"type":"","demo":"projects\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"projectId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, and hyphen. Can't start with a special char. Max length is 36 chars.","x-example":null},"name":{"type":"string","description":"Project name. Max length: 128 chars.","x-example":"[NAME]"},"teamId":{"type":"string","description":"Team unique ID.","x-example":"[TEAM_ID]"},"region":{"type":"string","description":"Project Region.","x-example":"default","enum":["default"],"x-enum-name":null,"x-enum-keys":[]},"description":{"type":"string","description":"Project description. Max length: 256 chars.","x-example":"[DESCRIPTION]"},"logo":{"type":"string","description":"Project logo.","x-example":"[LOGO]"},"url":{"type":"string","description":"Project URL.","x-example":"https:\/\/example.com"},"legalName":{"type":"string","description":"Project legal Name. Max length: 256 chars.","x-example":"[LEGAL_NAME]"},"legalCountry":{"type":"string","description":"Project legal Country. Max length: 256 chars.","x-example":"[LEGAL_COUNTRY]"},"legalState":{"type":"string","description":"Project legal State. Max length: 256 chars.","x-example":"[LEGAL_STATE]"},"legalCity":{"type":"string","description":"Project legal City. Max length: 256 chars.","x-example":"[LEGAL_CITY]"},"legalAddress":{"type":"string","description":"Project legal Address. Max length: 256 chars.","x-example":"[LEGAL_ADDRESS]"},"legalTaxId":{"type":"string","description":"Project legal Tax ID. Max length: 256 chars.","x-example":"[LEGAL_TAX_ID]"}},"required":["projectId","name","teamId"]}}}}}},"\/projects\/{projectId}":{"get":{"summary":"Get project","operationId":"projectsGet","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"get","weight":131,"cookies":false,"type":"","demo":"projects\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}]},"patch":{"summary":"Update project","operationId":"projectsUpdate","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"update","weight":133,"cookies":false,"type":"","demo":"projects\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Project name. Max length: 128 chars.","x-example":"[NAME]"},"description":{"type":"string","description":"Project description. Max length: 256 chars.","x-example":"[DESCRIPTION]"},"logo":{"type":"string","description":"Project logo.","x-example":"[LOGO]"},"url":{"type":"string","description":"Project URL.","x-example":"https:\/\/example.com"},"legalName":{"type":"string","description":"Project legal name. Max length: 256 chars.","x-example":"[LEGAL_NAME]"},"legalCountry":{"type":"string","description":"Project legal country. Max length: 256 chars.","x-example":"[LEGAL_COUNTRY]"},"legalState":{"type":"string","description":"Project legal state. Max length: 256 chars.","x-example":"[LEGAL_STATE]"},"legalCity":{"type":"string","description":"Project legal city. Max length: 256 chars.","x-example":"[LEGAL_CITY]"},"legalAddress":{"type":"string","description":"Project legal address. Max length: 256 chars.","x-example":"[LEGAL_ADDRESS]"},"legalTaxId":{"type":"string","description":"Project legal tax ID. Max length: 256 chars.","x-example":"[LEGAL_TAX_ID]"}},"required":["name"]}}}}},"delete":{"summary":"Delete project","operationId":"projectsDelete","tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":145,"cookies":false,"type":"","demo":"projects\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}]}},"\/projects\/{projectId}\/auth\/duration":{"patch":{"summary":"Update project authentication duration","operationId":"projectsUpdateAuthDuration","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateAuthDuration","weight":139,"cookies":false,"type":"","demo":"projects\/update-auth-duration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"duration":{"type":"integer","description":"Project session length in seconds. Max length: 31536000 seconds.","x-example":0}},"required":["duration"]}}}}}},"\/projects\/{projectId}\/auth\/limit":{"patch":{"summary":"Update project users limit","operationId":"projectsUpdateAuthLimit","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateAuthLimit","weight":138,"cookies":false,"type":"","demo":"projects\/update-auth-limit.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"limit":{"type":"integer","description":"Set the max number of users allowed in this project. Use 0 for unlimited.","x-example":0}},"required":["limit"]}}}}}},"\/projects\/{projectId}\/auth\/max-sessions":{"patch":{"summary":"Update project user sessions limit","operationId":"projectsUpdateAuthSessionsLimit","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateAuthSessionsLimit","weight":144,"cookies":false,"type":"","demo":"projects\/update-auth-sessions-limit.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"limit":{"type":"integer","description":"Set the max number of users allowed in this project. Value allowed is between 1-100. Default is 10","x-example":1}},"required":["limit"]}}}}}},"\/projects\/{projectId}\/auth\/password-dictionary":{"patch":{"summary":"Update authentication password dictionary status. Use this endpoint to enable or disable the dicitonary check for user password","operationId":"projectsUpdateAuthPasswordDictionary","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateAuthPasswordDictionary","weight":142,"cookies":false,"type":"","demo":"projects\/update-auth-password-dictionary.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Set whether or not to enable checking user's password against most commonly used passwords. Default is false.","x-example":false}},"required":["enabled"]}}}}}},"\/projects\/{projectId}\/auth\/password-history":{"patch":{"summary":"Update authentication password history. Use this endpoint to set the number of password history to save and 0 to disable password history.","operationId":"projectsUpdateAuthPasswordHistory","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateAuthPasswordHistory","weight":141,"cookies":false,"type":"","demo":"projects\/update-auth-password-history.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"limit":{"type":"integer","description":"Set the max number of passwords to store in user history. User can't choose a new password that is already stored in the password history list. Max number of passwords allowed in history is20. Default value is 0","x-example":0}},"required":["limit"]}}}}}},"\/projects\/{projectId}\/auth\/personal-data":{"patch":{"summary":"Enable or disable checking user passwords for similarity with their personal data.","operationId":"projectsUpdatePersonalDataCheck","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updatePersonalDataCheck","weight":143,"cookies":false,"type":"","demo":"projects\/update-personal-data-check.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Set whether or not to check a password for similarity with personal data. Default is false.","x-example":false}},"required":["enabled"]}}}}}},"\/projects\/{projectId}\/auth\/{method}":{"patch":{"summary":"Update project auth method status. Use this endpoint to enable or disable a given auth method for this project.","operationId":"projectsUpdateAuthStatus","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateAuthStatus","weight":140,"cookies":false,"type":"","demo":"projects\/update-auth-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"method","description":"Auth Method. Possible values: email-password,magic-url,anonymous,invites,jwt,phone","required":true,"schema":{"type":"string","x-example":"email-password","enum":["email-password","magic-url","anonymous","invites","jwt","phone"],"x-enum-name":null,"x-enum-keys":[]},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"status":{"type":"boolean","description":"Set the status of this auth method.","x-example":false}},"required":["status"]}}}}}},"\/projects\/{projectId}\/keys":{"get":{"summary":"List keys","operationId":"projectsListKeys","tags":["projects"],"description":"","responses":{"200":{"description":"API Keys List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/keyList"}}}}},"x-appwrite":{"method":"listKeys","weight":153,"cookies":false,"type":"","demo":"projects\/list-keys.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}]},"post":{"summary":"Create key","operationId":"projectsCreateKey","tags":["projects"],"description":"","responses":{"201":{"description":"Key","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/key"}}}}},"x-appwrite":{"method":"createKey","weight":152,"cookies":false,"type":"","demo":"projects\/create-key.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Key name. Max length: 128 chars.","x-example":"[NAME]"},"scopes":{"type":"array","description":"Key scopes list. Maximum of 100 scopes are allowed.","x-example":null,"items":{"type":"string"}},"expire":{"type":"string","description":"Expiration time in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. Use null for unlimited expiration.","x-example":null}},"required":["name","scopes"]}}}}}},"\/projects\/{projectId}\/keys\/{keyId}":{"get":{"summary":"Get key","operationId":"projectsGetKey","tags":["projects"],"description":"","responses":{"200":{"description":"Key","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/key"}}}}},"x-appwrite":{"method":"getKey","weight":154,"cookies":false,"type":"","demo":"projects\/get-key.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"keyId","description":"Key unique ID.","required":true,"schema":{"type":"string","x-example":"[KEY_ID]"},"in":"path"}]},"put":{"summary":"Update key","operationId":"projectsUpdateKey","tags":["projects"],"description":"","responses":{"200":{"description":"Key","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/key"}}}}},"x-appwrite":{"method":"updateKey","weight":155,"cookies":false,"type":"","demo":"projects\/update-key.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"keyId","description":"Key unique ID.","required":true,"schema":{"type":"string","x-example":"[KEY_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Key name. Max length: 128 chars.","x-example":"[NAME]"},"scopes":{"type":"array","description":"Key scopes list. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"expire":{"type":"string","description":"Expiration time in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. Use null for unlimited expiration.","x-example":null}},"required":["name","scopes"]}}}}},"delete":{"summary":"Delete key","operationId":"projectsDeleteKey","tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteKey","weight":156,"cookies":false,"type":"","demo":"projects\/delete-key.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"keyId","description":"Key unique ID.","required":true,"schema":{"type":"string","x-example":"[KEY_ID]"},"in":"path"}]}},"\/projects\/{projectId}\/oauth2":{"patch":{"summary":"Update project OAuth2","operationId":"projectsUpdateOAuth2","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateOAuth2","weight":137,"cookies":false,"type":"","demo":"projects\/update-o-auth2.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"provider":{"type":"string","description":"Provider Name","x-example":"amazon","enum":["amazon","apple","auth0","authentik","autodesk","bitbucket","bitly","box","dailymotion","discord","disqus","dropbox","etsy","facebook","github","gitlab","google","linkedin","microsoft","notion","oidc","okta","paypal","paypalSandbox","podio","salesforce","slack","spotify","stripe","tradeshift","tradeshiftBox","twitch","wordpress","yahoo","yammer","yandex","zoho","zoom","mock"],"x-enum-name":null,"x-enum-keys":[]},"appId":{"type":"string","description":"Provider app ID. Max length: 256 chars.","x-example":"[APP_ID]"},"secret":{"type":"string","description":"Provider secret key. Max length: 512 chars.","x-example":"[SECRET]"},"enabled":{"type":"boolean","description":"Provider status. Set to 'false' to disable new session creation.","x-example":false}},"required":["provider"]}}}}}},"\/projects\/{projectId}\/platforms":{"get":{"summary":"List platforms","operationId":"projectsListPlatforms","tags":["projects"],"description":"","responses":{"200":{"description":"Platforms List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/platformList"}}}}},"x-appwrite":{"method":"listPlatforms","weight":158,"cookies":false,"type":"","demo":"projects\/list-platforms.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}]},"post":{"summary":"Create platform","operationId":"projectsCreatePlatform","tags":["projects"],"description":"","responses":{"201":{"description":"Platform","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/platform"}}}}},"x-appwrite":{"method":"createPlatform","weight":157,"cookies":false,"type":"","demo":"projects\/create-platform.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"type":{"type":"string","description":"Platform type.","x-example":"web","enum":["web","flutter-web","flutter-ios","flutter-android","flutter-linux","flutter-macos","flutter-windows","apple-ios","apple-macos","apple-watchos","apple-tvos","android","unity"],"x-enum-name":"PlatformType","x-enum-keys":[]},"name":{"type":"string","description":"Platform name. Max length: 128 chars.","x-example":"[NAME]"},"key":{"type":"string","description":"Package name for Android or bundle ID for iOS or macOS. Max length: 256 chars.","x-example":"[KEY]"},"store":{"type":"string","description":"App store or Google Play store ID. Max length: 256 chars.","x-example":"[STORE]"},"hostname":{"type":"string","description":"Platform client hostname. Max length: 256 chars.","x-example":null}},"required":["type","name"]}}}}}},"\/projects\/{projectId}\/platforms\/{platformId}":{"get":{"summary":"Get platform","operationId":"projectsGetPlatform","tags":["projects"],"description":"","responses":{"200":{"description":"Platform","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/platform"}}}}},"x-appwrite":{"method":"getPlatform","weight":159,"cookies":false,"type":"","demo":"projects\/get-platform.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"platformId","description":"Platform unique ID.","required":true,"schema":{"type":"string","x-example":"[PLATFORM_ID]"},"in":"path"}]},"put":{"summary":"Update platform","operationId":"projectsUpdatePlatform","tags":["projects"],"description":"","responses":{"200":{"description":"Platform","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/platform"}}}}},"x-appwrite":{"method":"updatePlatform","weight":160,"cookies":false,"type":"","demo":"projects\/update-platform.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"platformId","description":"Platform unique ID.","required":true,"schema":{"type":"string","x-example":"[PLATFORM_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Platform name. Max length: 128 chars.","x-example":"[NAME]"},"key":{"type":"string","description":"Package name for android or bundle ID for iOS. Max length: 256 chars.","x-example":"[KEY]"},"store":{"type":"string","description":"App store or Google Play store ID. Max length: 256 chars.","x-example":"[STORE]"},"hostname":{"type":"string","description":"Platform client URL. Max length: 256 chars.","x-example":null}},"required":["name"]}}}}},"delete":{"summary":"Delete platform","operationId":"projectsDeletePlatform","tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deletePlatform","weight":161,"cookies":false,"type":"","demo":"projects\/delete-platform.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"platformId","description":"Platform unique ID.","required":true,"schema":{"type":"string","x-example":"[PLATFORM_ID]"},"in":"path"}]}},"\/projects\/{projectId}\/service":{"patch":{"summary":"Update service status","operationId":"projectsUpdateServiceStatus","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateServiceStatus","weight":135,"cookies":false,"type":"","demo":"projects\/update-service-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"service":{"type":"string","description":"Service name.","x-example":"account","enum":["account","avatars","databases","locale","health","storage","teams","users","functions","graphql","messaging"],"x-enum-name":null,"x-enum-keys":[]},"status":{"type":"boolean","description":"Service status.","x-example":false}},"required":["service","status"]}}}}}},"\/projects\/{projectId}\/service\/all":{"patch":{"summary":"Update all service status","operationId":"projectsUpdateServiceStatusAll","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateServiceStatusAll","weight":136,"cookies":false,"type":"","demo":"projects\/update-service-status-all.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"status":{"type":"boolean","description":"Service status.","x-example":false}},"required":["status"]}}}}}},"\/projects\/{projectId}\/smtp":{"patch":{"summary":"Update SMTP configuration","operationId":"projectsUpdateSmtpConfiguration","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateSmtpConfiguration","weight":162,"cookies":false,"type":"","demo":"projects\/update-smtp-configuration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enable custom SMTP service","x-example":false},"senderName":{"type":"string","description":"Name of the email sender","x-example":"[SENDER_NAME]"},"senderEmail":{"type":"string","description":"Email of the sender","x-example":"email@example.com"},"replyTo":{"type":"string","description":"Reply to email","x-example":"email@example.com"},"host":{"type":"string","description":"SMTP server host name","x-example":null},"port":{"type":"integer","description":"SMTP server port","x-example":null},"username":{"type":"string","description":"SMTP server username","x-example":"[USERNAME]"},"password":{"type":"string","description":"SMTP server password","x-example":"[PASSWORD]"},"secure":{"type":"string","description":"Does SMTP server use secure connection","x-example":"tls","enum":["tls"],"x-enum-name":null,"x-enum-keys":[]}},"required":["enabled"]}}}}}},"\/projects\/{projectId}\/team":{"patch":{"summary":"Update Project Team","operationId":"projectsUpdateTeam","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateTeam","weight":134,"cookies":false,"type":"","demo":"projects\/update-team.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"teamId":{"type":"string","description":"Team ID of the team to transfer project to.","x-example":"[TEAM_ID]"}},"required":["teamId"]}}}}}},"\/projects\/{projectId}\/templates\/email\/{type}\/{locale}":{"get":{"summary":"Get custom email template","operationId":"projectsGetEmailTemplate","tags":["projects"],"description":"","responses":{"200":{"description":"EmailTemplate","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/emailTemplate"}}}}},"x-appwrite":{"method":"getEmailTemplate","weight":164,"cookies":false,"type":"","demo":"projects\/get-email-template.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"type","description":"Template type","required":true,"schema":{"type":"string","x-example":"verification","enum":["verification","magicsession","recovery","invitation"],"x-enum-name":null,"x-enum-keys":[]},"in":"path"},{"name":"locale","description":"Template locale","required":true,"schema":{"type":"string","x-example":"af","enum":["af","ar-ae","ar-bh","ar-dz","ar-eg","ar-iq","ar-jo","ar-kw","ar-lb","ar-ly","ar-ma","ar-om","ar-qa","ar-sa","ar-sy","ar-tn","ar-ye","as","az","be","bg","bh","bn","bs","ca","cs","cy","da","de","de-at","de-ch","de-li","de-lu","el","en","en-au","en-bz","en-ca","en-gb","en-ie","en-jm","en-nz","en-tt","en-us","en-za","eo","es","es-ar","es-bo","es-cl","es-co","es-cr","es-do","es-ec","es-gt","es-hn","es-mx","es-ni","es-pa","es-pe","es-pr","es-py","es-sv","es-uy","es-ve","et","eu","fa","fi","fo","fr","fr-be","fr-ca","fr-ch","fr-lu","ga","gd","he","hi","hr","hu","id","is","it","it-ch","ja","ji","ko","ku","lt","lv","mk","ml","ms","mt","nb","ne","nl","nl-be","nn","no","pa","pl","pt","pt-br","rm","ro","ro-md","ru","ru-md","sb","sk","sl","sq","sr","sv","sv-fi","th","tn","tr","ts","ua","ur","ve","vi","xh","zh-cn","zh-hk","zh-sg","zh-tw","zu"],"x-enum-name":null,"x-enum-keys":[]},"in":"path"}]},"patch":{"summary":"Update custom email templates","operationId":"projectsUpdateEmailTemplate","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateEmailTemplate","weight":166,"cookies":false,"type":"","demo":"projects\/update-email-template.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"type","description":"Template type","required":true,"schema":{"type":"string","x-example":"verification","enum":["verification","magicsession","recovery","invitation"],"x-enum-name":null,"x-enum-keys":[]},"in":"path"},{"name":"locale","description":"Template locale","required":true,"schema":{"type":"string","x-example":"af","enum":["af","ar-ae","ar-bh","ar-dz","ar-eg","ar-iq","ar-jo","ar-kw","ar-lb","ar-ly","ar-ma","ar-om","ar-qa","ar-sa","ar-sy","ar-tn","ar-ye","as","az","be","bg","bh","bn","bs","ca","cs","cy","da","de","de-at","de-ch","de-li","de-lu","el","en","en-au","en-bz","en-ca","en-gb","en-ie","en-jm","en-nz","en-tt","en-us","en-za","eo","es","es-ar","es-bo","es-cl","es-co","es-cr","es-do","es-ec","es-gt","es-hn","es-mx","es-ni","es-pa","es-pe","es-pr","es-py","es-sv","es-uy","es-ve","et","eu","fa","fi","fo","fr","fr-be","fr-ca","fr-ch","fr-lu","ga","gd","he","hi","hr","hu","id","is","it","it-ch","ja","ji","ko","ku","lt","lv","mk","ml","ms","mt","nb","ne","nl","nl-be","nn","no","pa","pl","pt","pt-br","rm","ro","ro-md","ru","ru-md","sb","sk","sl","sq","sr","sv","sv-fi","th","tn","tr","ts","ua","ur","ve","vi","xh","zh-cn","zh-hk","zh-sg","zh-tw","zu"],"x-enum-name":null,"x-enum-keys":[]},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"subject":{"type":"string","description":"Email Subject","x-example":"[SUBJECT]"},"message":{"type":"string","description":"Template message","x-example":"[MESSAGE]"},"senderName":{"type":"string","description":"Name of the email sender","x-example":"[SENDER_NAME]"},"senderEmail":{"type":"string","description":"Email of the sender","x-example":"email@example.com"},"replyTo":{"type":"string","description":"Reply to email","x-example":"email@example.com"}},"required":["subject","message"]}}}}},"delete":{"summary":"Reset custom email template","operationId":"projectsDeleteEmailTemplate","tags":["projects"],"description":"","responses":{"200":{"description":"EmailTemplate","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/emailTemplate"}}}}},"x-appwrite":{"method":"deleteEmailTemplate","weight":168,"cookies":false,"type":"","demo":"projects\/delete-email-template.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"type","description":"Template type","required":true,"schema":{"type":"string","x-example":"verification","enum":["verification","magicsession","recovery","invitation"],"x-enum-name":null,"x-enum-keys":[]},"in":"path"},{"name":"locale","description":"Template locale","required":true,"schema":{"type":"string","x-example":"af","enum":["af","ar-ae","ar-bh","ar-dz","ar-eg","ar-iq","ar-jo","ar-kw","ar-lb","ar-ly","ar-ma","ar-om","ar-qa","ar-sa","ar-sy","ar-tn","ar-ye","as","az","be","bg","bh","bn","bs","ca","cs","cy","da","de","de-at","de-ch","de-li","de-lu","el","en","en-au","en-bz","en-ca","en-gb","en-ie","en-jm","en-nz","en-tt","en-us","en-za","eo","es","es-ar","es-bo","es-cl","es-co","es-cr","es-do","es-ec","es-gt","es-hn","es-mx","es-ni","es-pa","es-pe","es-pr","es-py","es-sv","es-uy","es-ve","et","eu","fa","fi","fo","fr","fr-be","fr-ca","fr-ch","fr-lu","ga","gd","he","hi","hr","hu","id","is","it","it-ch","ja","ji","ko","ku","lt","lv","mk","ml","ms","mt","nb","ne","nl","nl-be","nn","no","pa","pl","pt","pt-br","rm","ro","ro-md","ru","ru-md","sb","sk","sl","sq","sr","sv","sv-fi","th","tn","tr","ts","ua","ur","ve","vi","xh","zh-cn","zh-hk","zh-sg","zh-tw","zu"],"x-enum-name":null,"x-enum-keys":[]},"in":"path"}]}},"\/projects\/{projectId}\/templates\/sms\/{type}\/{locale}":{"get":{"summary":"Get custom SMS template","operationId":"projectsGetSmsTemplate","tags":["projects"],"description":"","responses":{"200":{"description":"SmsTemplate","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/smsTemplate"}}}}},"x-appwrite":{"method":"getSmsTemplate","weight":163,"cookies":false,"type":"","demo":"projects\/get-sms-template.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"type","description":"Template type","required":true,"schema":{"type":"string","x-example":"verification","enum":["verification","login","invitation"],"x-enum-name":null,"x-enum-keys":[]},"in":"path"},{"name":"locale","description":"Template locale","required":true,"schema":{"type":"string","x-example":"af","enum":["af","ar-ae","ar-bh","ar-dz","ar-eg","ar-iq","ar-jo","ar-kw","ar-lb","ar-ly","ar-ma","ar-om","ar-qa","ar-sa","ar-sy","ar-tn","ar-ye","as","az","be","bg","bh","bn","bs","ca","cs","cy","da","de","de-at","de-ch","de-li","de-lu","el","en","en-au","en-bz","en-ca","en-gb","en-ie","en-jm","en-nz","en-tt","en-us","en-za","eo","es","es-ar","es-bo","es-cl","es-co","es-cr","es-do","es-ec","es-gt","es-hn","es-mx","es-ni","es-pa","es-pe","es-pr","es-py","es-sv","es-uy","es-ve","et","eu","fa","fi","fo","fr","fr-be","fr-ca","fr-ch","fr-lu","ga","gd","he","hi","hr","hu","id","is","it","it-ch","ja","ji","ko","ku","lt","lv","mk","ml","ms","mt","nb","ne","nl","nl-be","nn","no","pa","pl","pt","pt-br","rm","ro","ro-md","ru","ru-md","sb","sk","sl","sq","sr","sv","sv-fi","th","tn","tr","ts","ua","ur","ve","vi","xh","zh-cn","zh-hk","zh-sg","zh-tw","zu"],"x-enum-name":null,"x-enum-keys":[]},"in":"path"}]},"patch":{"summary":"Update custom SMS template","operationId":"projectsUpdateSmsTemplate","tags":["projects"],"description":"","responses":{"200":{"description":"SmsTemplate","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/smsTemplate"}}}}},"x-appwrite":{"method":"updateSmsTemplate","weight":165,"cookies":false,"type":"","demo":"projects\/update-sms-template.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"type","description":"Template type","required":true,"schema":{"type":"string","x-example":"verification","enum":["verification","login","invitation"],"x-enum-name":null,"x-enum-keys":[]},"in":"path"},{"name":"locale","description":"Template locale","required":true,"schema":{"type":"string","x-example":"af","enum":["af","ar-ae","ar-bh","ar-dz","ar-eg","ar-iq","ar-jo","ar-kw","ar-lb","ar-ly","ar-ma","ar-om","ar-qa","ar-sa","ar-sy","ar-tn","ar-ye","as","az","be","bg","bh","bn","bs","ca","cs","cy","da","de","de-at","de-ch","de-li","de-lu","el","en","en-au","en-bz","en-ca","en-gb","en-ie","en-jm","en-nz","en-tt","en-us","en-za","eo","es","es-ar","es-bo","es-cl","es-co","es-cr","es-do","es-ec","es-gt","es-hn","es-mx","es-ni","es-pa","es-pe","es-pr","es-py","es-sv","es-uy","es-ve","et","eu","fa","fi","fo","fr","fr-be","fr-ca","fr-ch","fr-lu","ga","gd","he","hi","hr","hu","id","is","it","it-ch","ja","ji","ko","ku","lt","lv","mk","ml","ms","mt","nb","ne","nl","nl-be","nn","no","pa","pl","pt","pt-br","rm","ro","ro-md","ru","ru-md","sb","sk","sl","sq","sr","sv","sv-fi","th","tn","tr","ts","ua","ur","ve","vi","xh","zh-cn","zh-hk","zh-sg","zh-tw","zu"],"x-enum-name":null,"x-enum-keys":[]},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Template message","x-example":"[MESSAGE]"}},"required":["message"]}}}}},"delete":{"summary":"Reset custom SMS template","operationId":"projectsDeleteSmsTemplate","tags":["projects"],"description":"","responses":{"200":{"description":"SmsTemplate","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/smsTemplate"}}}}},"x-appwrite":{"method":"deleteSmsTemplate","weight":167,"cookies":false,"type":"","demo":"projects\/delete-sms-template.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"type","description":"Template type","required":true,"schema":{"type":"string","x-example":"verification","enum":["verification","login","invitation"],"x-enum-name":null,"x-enum-keys":[]},"in":"path"},{"name":"locale","description":"Template locale","required":true,"schema":{"type":"string","x-example":"af","enum":["af","ar-ae","ar-bh","ar-dz","ar-eg","ar-iq","ar-jo","ar-kw","ar-lb","ar-ly","ar-ma","ar-om","ar-qa","ar-sa","ar-sy","ar-tn","ar-ye","as","az","be","bg","bh","bn","bs","ca","cs","cy","da","de","de-at","de-ch","de-li","de-lu","el","en","en-au","en-bz","en-ca","en-gb","en-ie","en-jm","en-nz","en-tt","en-us","en-za","eo","es","es-ar","es-bo","es-cl","es-co","es-cr","es-do","es-ec","es-gt","es-hn","es-mx","es-ni","es-pa","es-pe","es-pr","es-py","es-sv","es-uy","es-ve","et","eu","fa","fi","fo","fr","fr-be","fr-ca","fr-ch","fr-lu","ga","gd","he","hi","hr","hu","id","is","it","it-ch","ja","ji","ko","ku","lt","lv","mk","ml","ms","mt","nb","ne","nl","nl-be","nn","no","pa","pl","pt","pt-br","rm","ro","ro-md","ru","ru-md","sb","sk","sl","sq","sr","sv","sv-fi","th","tn","tr","ts","ua","ur","ve","vi","xh","zh-cn","zh-hk","zh-sg","zh-tw","zu"],"x-enum-name":null,"x-enum-keys":[]},"in":"path"}]}},"\/projects\/{projectId}\/usage":{"get":{"summary":"Get usage stats for a project","operationId":"projectsGetUsage","tags":["projects"],"description":"","responses":{"200":{"description":"UsageProject","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageProject"}}}}},"x-appwrite":{"method":"getUsage","weight":132,"cookies":false,"type":"","demo":"projects\/get-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"range","description":"Date range.","required":false,"schema":{"type":"string","x-example":"24h","enum":["24h","7d","30d","90d"],"x-enum-name":null,"x-enum-keys":[],"default":"30d"},"in":"query"}]}},"\/projects\/{projectId}\/webhooks":{"get":{"summary":"List webhooks","operationId":"projectsListWebhooks","tags":["projects"],"description":"","responses":{"200":{"description":"Webhooks List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/webhookList"}}}}},"x-appwrite":{"method":"listWebhooks","weight":147,"cookies":false,"type":"","demo":"projects\/list-webhooks.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}]},"post":{"summary":"Create webhook","operationId":"projectsCreateWebhook","tags":["projects"],"description":"","responses":{"201":{"description":"Webhook","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/webhook"}}}}},"x-appwrite":{"method":"createWebhook","weight":146,"cookies":false,"type":"","demo":"projects\/create-webhook.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Webhook name. Max length: 128 chars.","x-example":"[NAME]"},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"Webhook URL.","x-example":"https:\/\/example.com"},"security":{"type":"boolean","description":"Certificate verification, false for disabled or true for enabled.","x-example":false},"httpUser":{"type":"string","description":"Webhook HTTP user. Max length: 256 chars.","x-example":"[HTTP_USER]"},"httpPass":{"type":"string","description":"Webhook HTTP password. Max length: 256 chars.","x-example":"[HTTP_PASS]"}},"required":["name","events","url","security"]}}}}}},"\/projects\/{projectId}\/webhooks\/{webhookId}":{"get":{"summary":"Get webhook","operationId":"projectsGetWebhook","tags":["projects"],"description":"","responses":{"200":{"description":"Webhook","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/webhook"}}}}},"x-appwrite":{"method":"getWebhook","weight":148,"cookies":false,"type":"","demo":"projects\/get-webhook.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"webhookId","description":"Webhook unique ID.","required":true,"schema":{"type":"string","x-example":"[WEBHOOK_ID]"},"in":"path"}]},"put":{"summary":"Update webhook","operationId":"projectsUpdateWebhook","tags":["projects"],"description":"","responses":{"200":{"description":"Webhook","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/webhook"}}}}},"x-appwrite":{"method":"updateWebhook","weight":149,"cookies":false,"type":"","demo":"projects\/update-webhook.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"webhookId","description":"Webhook unique ID.","required":true,"schema":{"type":"string","x-example":"[WEBHOOK_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Webhook name. Max length: 128 chars.","x-example":"[NAME]"},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"Webhook URL.","x-example":"https:\/\/example.com"},"security":{"type":"boolean","description":"Certificate verification, false for disabled or true for enabled.","x-example":false},"httpUser":{"type":"string","description":"Webhook HTTP user. Max length: 256 chars.","x-example":"[HTTP_USER]"},"httpPass":{"type":"string","description":"Webhook HTTP password. Max length: 256 chars.","x-example":"[HTTP_PASS]"}},"required":["name","events","url","security"]}}}}},"delete":{"summary":"Delete webhook","operationId":"projectsDeleteWebhook","tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteWebhook","weight":151,"cookies":false,"type":"","demo":"projects\/delete-webhook.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"webhookId","description":"Webhook unique ID.","required":true,"schema":{"type":"string","x-example":"[WEBHOOK_ID]"},"in":"path"}]}},"\/projects\/{projectId}\/webhooks\/{webhookId}\/signature":{"patch":{"summary":"Update webhook signature key","operationId":"projectsUpdateWebhookSignature","tags":["projects"],"description":"","responses":{"200":{"description":"Webhook","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/webhook"}}}}},"x-appwrite":{"method":"updateWebhookSignature","weight":150,"cookies":false,"type":"","demo":"projects\/update-webhook-signature.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"webhookId","description":"Webhook unique ID.","required":true,"schema":{"type":"string","x-example":"[WEBHOOK_ID]"},"in":"path"}]}},"\/proxy\/rules":{"get":{"summary":"List Rules","operationId":"proxyListRules","tags":["proxy"],"description":"Get a list of all the proxy rules. You can use the query params to filter your results.","responses":{"200":{"description":"Rule List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/proxyRuleList"}}}}},"x-appwrite":{"method":"listRules","weight":276,"cookies":false,"type":"","demo":"proxy\/list-rules.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/proxy\/list-rules.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"rules.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: domain, resourceType, resourceId, url","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Rule","operationId":"proxyCreateRule","tags":["proxy"],"description":"Create a new proxy rule.","responses":{"201":{"description":"Rule","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/proxyRule"}}}}},"x-appwrite":{"method":"createRule","weight":275,"cookies":false,"type":"","demo":"proxy\/create-rule.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/proxy\/create-rule.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"rules.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"domain":{"type":"string","description":"Domain name.","x-example":null},"resourceType":{"type":"string","description":"Action definition for the rule. Possible values are \"api\", \"function\"","x-example":"api","enum":["api","function"],"x-enum-name":null,"x-enum-keys":[]},"resourceId":{"type":"string","description":"ID of resource for the action type. If resourceType is \"api\", leave empty. If resourceType is \"function\", provide ID of the function.","x-example":"[RESOURCE_ID]"}},"required":["domain","resourceType"]}}}}}},"\/proxy\/rules\/{ruleId}":{"get":{"summary":"Get Rule","operationId":"proxyGetRule","tags":["proxy"],"description":"Get a proxy rule by its unique ID.","responses":{"200":{"description":"Rule","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/proxyRule"}}}}},"x-appwrite":{"method":"getRule","weight":277,"cookies":false,"type":"","demo":"proxy\/get-rule.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/proxy\/get-rule.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"rules.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"ruleId","description":"Rule ID.","required":true,"schema":{"type":"string","x-example":"[RULE_ID]"},"in":"path"}]},"delete":{"summary":"Delete Rule","operationId":"proxyDeleteRule","tags":["proxy"],"description":"Delete a proxy rule by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteRule","weight":278,"cookies":false,"type":"","demo":"proxy\/delete-rule.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/proxy\/delete-rule.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"rules.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"ruleId","description":"Rule ID.","required":true,"schema":{"type":"string","x-example":"[RULE_ID]"},"in":"path"}]}},"\/proxy\/rules\/{ruleId}\/verification":{"patch":{"summary":"Update Rule Verification Status","operationId":"proxyUpdateRuleVerification","tags":["proxy"],"description":"","responses":{"200":{"description":"Rule","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/proxyRule"}}}}},"x-appwrite":{"method":"updateRuleVerification","weight":279,"cookies":false,"type":"","demo":"proxy\/update-rule-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"rules.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"ruleId","description":"Rule ID.","required":true,"schema":{"type":"string","x-example":"[RULE_ID]"},"in":"path"}]}},"\/storage\/buckets":{"get":{"summary":"List buckets","operationId":"storageListBuckets","tags":["storage"],"description":"Get a list of all the storage buckets. You can use the query params to filter your results.","responses":{"200":{"description":"Buckets List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/bucketList"}}}}},"x-appwrite":{"method":"listBuckets","weight":176,"cookies":false,"type":"","demo":"storage\/list-buckets.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/list-buckets.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: enabled, name, fileSecurity, maximumFileSize, encryption, antivirus","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create bucket","operationId":"storageCreateBucket","tags":["storage"],"description":"Create a new storage bucket.","responses":{"201":{"description":"Bucket","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/bucket"}}}}},"x-appwrite":{"method":"createBucket","weight":175,"cookies":false,"type":"","demo":"storage\/create-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"bucketId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, no user is granted with any permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":false},"enabled":{"type":"boolean","description":"Is bucket enabled? When set to 'disabled', users cannot access the files in this bucket but Server SDKs with and API key can still access the bucket. No files are lost when this is toggled.","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB.","x-example":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","x-example":"none","enum":["none","gzip","zstd"],"x-enum-name":null,"x-enum-keys":[]},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","x-example":false}},"required":["bucketId","name"]}}}}}},"\/storage\/buckets\/{bucketId}":{"get":{"summary":"Get bucket","operationId":"storageGetBucket","tags":["storage"],"description":"Get a storage bucket by its unique ID. This endpoint response returns a JSON object with the storage bucket metadata.","responses":{"200":{"description":"Bucket","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/bucket"}}}}},"x-appwrite":{"method":"getBucket","weight":177,"cookies":false,"type":"","demo":"storage\/get-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"bucketId","description":"Bucket unique ID.","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"}]},"put":{"summary":"Update bucket","operationId":"storageUpdateBucket","tags":["storage"],"description":"Update a storage bucket by its unique ID.","responses":{"200":{"description":"Bucket","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/bucket"}}}}},"x-appwrite":{"method":"updateBucket","weight":178,"cookies":false,"type":"","demo":"storage\/update-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"bucketId","description":"Bucket unique ID.","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Bucket name","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":false},"enabled":{"type":"boolean","description":"Is bucket enabled? When set to 'disabled', users cannot access the files in this bucket but Server SDKs with and API key can still access the bucket. No files are lost when this is toggled.","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB.","x-example":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","x-example":"none","enum":["none","gzip","zstd"],"x-enum-name":null,"x-enum-keys":[]},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","x-example":false}},"required":["name"]}}}}},"delete":{"summary":"Delete bucket","operationId":"storageDeleteBucket","tags":["storage"],"description":"Delete a storage bucket by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteBucket","weight":179,"cookies":false,"type":"","demo":"storage\/delete-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"bucketId","description":"Bucket unique ID.","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files":{"get":{"summary":"List files","operationId":"storageListFiles","tags":["storage"],"description":"Get a list of all the user files. You can use the query params to filter your results.","responses":{"200":{"description":"Files List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/fileList"}}}}},"x-appwrite":{"method":"listFiles","weight":181,"cookies":false,"type":"","demo":"storage\/list-files.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/list-files.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create file","operationId":"storageCreateFile","tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"createFile","weight":180,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId},chunkId:{chunkId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"}],"requestBody":{"content":{"multipart\/form-data":{"schema":{"type":"object","properties":{"fileId":{"type":"string","description":"File ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[FILE_ID]","x-upload-id":true},"file":{"type":"string","description":"Binary file. Appwrite SDKs provide helpers to handle file input. [Learn about file input](https:\/\/appwrite.io\/docs\/storage#file-input).","x-example":null},"permissions":{"type":"array","description":"An array of permission strings. By default, only the current user is granted all permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["fileId","file"]}}}}}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get file","operationId":"storageGetFile","tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"getFile","weight":182,"cookies":false,"type":"","demo":"storage\/get-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File ID.","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"}]},"put":{"summary":"Update file","operationId":"storageUpdateFile","tags":["storage"],"description":"Update a file by its unique ID. Only users with write permissions have access to update this resource.","responses":{"200":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"updateFile","weight":186,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File unique ID.","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Name of the file","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission string. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":187,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File ID.","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/download":{"get":{"summary":"Get file for download","operationId":"storageGetFileDownload","tags":["storage"],"description":"Get a file content by its unique ID. The endpoint response return with a 'Content-Disposition: attachment' header that tells the browser to start downloading the file to user downloads directory.","responses":{"200":{"description":"File"}},"x-appwrite":{"method":"getFileDownload","weight":184,"cookies":false,"type":"location","demo":"storage\/get-file-download.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-download.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File ID.","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/preview":{"get":{"summary":"Get file preview","operationId":"storageGetFilePreview","tags":["storage"],"description":"Get a file preview image. Currently, this method supports preview for image files (jpg, png, and gif), other supported formats, like pdf, docs, slides, and spreadsheets, will return the file icon image. You can also pass query string arguments for cutting and resizing your preview image. Preview is supported only for image files smaller than 10MB.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFilePreview","weight":183,"cookies":false,"type":"location","demo":"storage\/get-file-preview.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-preview.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File ID","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"},{"name":"width","description":"Resize preview image width, Pass an integer between 0 to 4000.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 4000.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"gravity","description":"Image crop gravity. Can be one of center,top-left,top,top-right,left,right,bottom-left,bottom,bottom-right","required":false,"schema":{"type":"string","x-example":"center","enum":["center","top-left","top","top-right","left","right","bottom-left","bottom","bottom-right"],"x-enum-name":"ImageGravity","x-enum-keys":[],"default":"center"},"in":"query"},{"name":"quality","description":"Preview image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"borderWidth","description":"Preview image border in pixels. Pass an integer between 0 to 100. Defaults to 0.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"borderColor","description":"Preview image border color. Use a valid HEX color, no # is needed for prefix.","required":false,"schema":{"type":"string","default":""},"in":"query"},{"name":"borderRadius","description":"Preview image border radius in pixels. Pass an integer between 0 to 4000.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"opacity","description":"Preview image opacity. Only works with images having an alpha channel (like png). Pass a number between 0 to 1.","required":false,"schema":{"type":"number","format":"float","x-example":0,"default":1},"in":"query"},{"name":"rotation","description":"Preview image rotation in degrees. Pass an integer between -360 and 360.","required":false,"schema":{"type":"integer","format":"int32","x-example":-360,"default":0},"in":"query"},{"name":"background","description":"Preview image background color. Only works with transparent images (png). Use a valid HEX color, no # is needed for prefix.","required":false,"schema":{"type":"string","default":""},"in":"query"},{"name":"output","description":"Output format type (jpeg, jpg, png, gif and webp).","required":false,"schema":{"type":"string","x-example":"jpg","enum":["jpg","jpeg","gif","png","webp"],"x-enum-name":"ImageFormat","x-enum-keys":[],"default":""},"in":"query"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/view":{"get":{"summary":"Get file for view","operationId":"storageGetFileView","tags":["storage"],"description":"Get a file content by its unique ID. This endpoint is similar to the download method but returns with no 'Content-Disposition: attachment' header.","responses":{"200":{"description":"File"}},"x-appwrite":{"method":"getFileView","weight":185,"cookies":false,"type":"location","demo":"storage\/get-file-view.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-view.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File ID.","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"}]}},"\/storage\/usage":{"get":{"summary":"Get usage stats for storage","operationId":"storageGetUsage","tags":["storage"],"description":"","responses":{"200":{"description":"StorageUsage","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageStorage"}}}}},"x-appwrite":{"method":"getUsage","weight":188,"cookies":false,"type":"","demo":"storage\/get-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"schema":{"type":"string","x-example":"24h","enum":["24h","7d","30d","90d"],"x-enum-name":null,"x-enum-keys":["Twenty Four Hours","Seven Days","Thirty Days","Ninety Days"],"default":"30d"},"in":"query"}]}},"\/storage\/{bucketId}\/usage":{"get":{"summary":"Get usage stats for a storage bucket","operationId":"storageGetBucketUsage","tags":["storage"],"description":"","responses":{"200":{"description":"UsageBuckets","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageBuckets"}}}}},"x-appwrite":{"method":"getBucketUsage","weight":189,"cookies":false,"type":"","demo":"storage\/get-bucket-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"bucketId","description":"Bucket ID.","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"range","description":"Date range.","required":false,"schema":{"type":"string","x-example":"24h","enum":["24h","7d","30d","90d"],"x-enum-name":null,"x-enum-keys":["Twenty Four Hours","Seven Days","Thirty Days","Ninety Days"],"default":"30d"},"in":"query"}]}},"\/teams":{"get":{"summary":"List teams","operationId":"teamsList","tags":["teams"],"description":"Get a list of all the teams in which the current user is a member. You can use the parameters to filter your results.","responses":{"200":{"description":"Teams List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/teamList"}}}}},"x-appwrite":{"method":"list","weight":191,"cookies":false,"type":"","demo":"teams\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-teams.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create team","operationId":"teamsCreate","tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"create","weight":190,"cookies":false,"type":"","demo":"teams\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/create-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"teamId":{"type":"string","description":"Team ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[TEAM_ID]"},"name":{"type":"string","description":"Team name. Max length: 128 chars.","x-example":"[NAME]"},"roles":{"type":"array","description":"Array of strings. Use this param to set the roles in the team for the user who created it. The default role is **owner**. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}}}}},"\/teams\/{teamId}":{"get":{"summary":"Get team","operationId":"teamsGet","tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"get","weight":192,"cookies":false,"type":"","demo":"teams\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams","offline-key":"{teamId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}]},"put":{"summary":"Update name","operationId":"teamsUpdateName","tags":["teams"],"description":"Update the team's name by its unique ID.","responses":{"200":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"updateName","weight":194,"cookies":false,"type":"","demo":"teams\/update-name.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-name.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams","offline-key":"{teamId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"New team name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["name"]}}}}},"delete":{"summary":"Delete team","operationId":"teamsDelete","tags":["teams"],"description":"Delete a team using its ID. Only team members with the owner role can delete the team.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":196,"cookies":false,"type":"","demo":"teams\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/delete-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}]}},"\/teams\/{teamId}\/logs":{"get":{"summary":"List team logs","operationId":"teamsListLogs","tags":["teams"],"description":"Get the team activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listLogs","weight":203,"cookies":false,"type":"","demo":"teams\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/teams\/{teamId}\/memberships":{"get":{"summary":"List team memberships","operationId":"teamsListMemberships","tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"listMemberships","weight":198,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/memberships","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create team membership","operationId":"teamsCreateMembership","tags":["teams"],"description":"Invite a new member to join your team. Provide an ID for existing users, or invite unregistered users using an email or phone number. If initiated from a Client SDK, Appwrite will send an email or sms with a link to join the team to the invited user, and an account will be created for them if one doesn't exist. If initiated from a Server SDK, the new member will be added automatically to the team.\n\nYou only need to provide one of a user ID, email, or phone number. Appwrite will prioritize accepting the user ID > email > phone number if you provide more than one of these parameters.\n\nUse the `url` parameter to redirect the user from the invitation email to your app. After the user is redirected, use the [Update Team Membership Status](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/teams#updateMembershipStatus) endpoint to allow the user to accept the invitation to the team. \n\nPlease note that to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) Appwrite will accept the only redirect URLs under the domains you have added as a platform on the Appwrite Console.\n","responses":{"201":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"createMembership","weight":197,"cookies":false,"type":"","demo":"teams\/create-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/create-team-membership.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"email":{"type":"string","description":"Email of the new team member.","x-example":"email@example.com"},"userId":{"type":"string","description":"ID of the user to be added to a team.","x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"roles":{"type":"array","description":"Array of strings. Use this param to set the user roles in the team. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"},"name":{"type":"string","description":"Name of the new team member. Max length: 128 chars.","x-example":"[NAME]"}},"required":["roles"]}}}}}},"\/teams\/{teamId}\/memberships\/{membershipId}":{"get":{"summary":"Get team membership","operationId":"teamsGetMembership","tags":["teams"],"description":"Get a team member by the membership unique id. All team members have read access for this resource.","responses":{"200":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"getMembership","weight":199,"cookies":false,"type":"","demo":"teams\/get-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-member.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/memberships","offline-key":"{membershipId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"schema":{"type":"string","x-example":"[MEMBERSHIP_ID]"},"in":"path"}]},"patch":{"summary":"Update membership","operationId":"teamsUpdateMembership","tags":["teams"],"description":"Modify the roles of a team member. Only team members with the owner role have access to this endpoint. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions).\n","responses":{"200":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"updateMembership","weight":200,"cookies":false,"type":"","demo":"teams\/update-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"schema":{"type":"string","x-example":"[MEMBERSHIP_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"roles":{"type":"array","description":"An array of strings. Use this param to set the user's roles in the team. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["roles"]}}}}},"delete":{"summary":"Delete team membership","operationId":"teamsDeleteMembership","tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":202,"cookies":false,"type":"","demo":"teams\/delete-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/delete-team-membership.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"schema":{"type":"string","x-example":"[MEMBERSHIP_ID]"},"in":"path"}]}},"\/teams\/{teamId}\/memberships\/{membershipId}\/status":{"patch":{"summary":"Update team membership status","operationId":"teamsUpdateMembershipStatus","tags":["teams"],"description":"Use this endpoint to allow a user to accept an invitation to join a team after being redirected back to your app from the invitation email received by the user.\n\nIf the request is successful, a session for the user is automatically created.\n","responses":{"200":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"updateMembershipStatus","weight":201,"cookies":false,"type":"","demo":"teams\/update-membership-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"public","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"schema":{"type":"string","x-example":"[MEMBERSHIP_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Secret key.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/teams\/{teamId}\/prefs":{"get":{"summary":"Get team preferences","operationId":"teamsGetPrefs","tags":["teams"],"description":"Get the team's shared preferences by its unique ID. If a preference doesn't need to be shared by all team members, prefer storing them in [user preferences](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#getPrefs).","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"getPrefs","weight":193,"cookies":false,"type":"","demo":"teams\/get-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/prefs","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}]},"put":{"summary":"Update preferences","operationId":"teamsUpdatePrefs","tags":["teams"],"description":"Update the team's preferences by its unique ID. The object you pass is stored as is and replaces any previous value. The maximum allowed prefs size is 64kB and throws an error if exceeded.","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"updatePrefs","weight":195,"cookies":false,"type":"","demo":"teams\/update-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/prefs","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"prefs":{"type":"object","description":"Prefs key-value JSON object.","x-example":"{}"}},"required":["prefs"]}}}}}},"\/users":{"get":{"summary":"List users","operationId":"usersList","tags":["users"],"description":"Get a list of all the project's users. You can use the query params to filter your results.","responses":{"200":{"description":"Users List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/userList"}}}}},"x-appwrite":{"method":"list","weight":213,"cookies":false,"type":"","demo":"users\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-users.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, email, phone, status, passwordUpdate, registration, emailVerification, phoneVerification","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create user","operationId":"usersCreate","tags":["users"],"description":"Create a new user.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"create","weight":204,"cookies":false,"type":"","demo":"users\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"password":{"type":"string","description":"Plain text user password. Must be at least 8 chars.","x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId"]}}}}}},"\/users\/argon2":{"post":{"summary":"Create user with Argon2 password","operationId":"usersCreateArgon2User","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Argon2](https:\/\/en.wikipedia.org\/wiki\/Argon2) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createArgon2User","weight":207,"cookies":false,"type":"","demo":"users\/create-argon2user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-argon2-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Argon2.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/bcrypt":{"post":{"summary":"Create user with bcrypt password","operationId":"usersCreateBcryptUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Bcrypt](https:\/\/en.wikipedia.org\/wiki\/Bcrypt) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createBcryptUser","weight":205,"cookies":false,"type":"","demo":"users\/create-bcrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-bcrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Bcrypt.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/identities":{"get":{"summary":"List Identities","operationId":"usersListIdentities","tags":["users"],"description":"Get identities for all users.","responses":{"200":{"description":"Identities List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/identityList"}}}}},"x-appwrite":{"method":"listIdentities","weight":221,"cookies":false,"type":"","demo":"users\/list-identities.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-identities.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, provider, providerUid, providerEmail, providerAccessTokenExpiry","required":false,"schema":{"type":"string","default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]}},"\/users\/identities\/{identityId}":{"delete":{"summary":"Delete identity","operationId":"usersDeleteIdentity","tags":["users"],"description":"Delete an identity by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIdentity","weight":238,"cookies":false,"type":"","demo":"users\/delete-identity.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-identity.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"identityId","description":"Identity ID.","required":true,"schema":{"type":"string","x-example":"[IDENTITY_ID]"},"in":"path"}]}},"\/users\/md5":{"post":{"summary":"Create user with MD5 password","operationId":"usersCreateMD5User","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [MD5](https:\/\/en.wikipedia.org\/wiki\/MD5) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createMD5User","weight":206,"cookies":false,"type":"","demo":"users\/create-m-d5user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-md5-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using MD5.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/phpass":{"post":{"summary":"Create user with PHPass password","operationId":"usersCreatePHPassUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [PHPass](https:\/\/www.openwall.com\/phpass\/) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createPHPassUser","weight":209,"cookies":false,"type":"","demo":"users\/create-p-h-pass-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-phpass-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or pass the string `ID.unique()`to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using PHPass.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/scrypt":{"post":{"summary":"Create user with Scrypt password","operationId":"usersCreateScryptUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt](https:\/\/github.com\/Tarsnap\/scrypt) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createScryptUser","weight":210,"cookies":false,"type":"","demo":"users\/create-scrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt.","x-example":"password"},"passwordSalt":{"type":"string","description":"Optional salt used to hash password.","x-example":"[PASSWORD_SALT]"},"passwordCpu":{"type":"integer","description":"Optional CPU cost used to hash password.","x-example":null},"passwordMemory":{"type":"integer","description":"Optional memory cost used to hash password.","x-example":null},"passwordParallel":{"type":"integer","description":"Optional parallelization cost used to hash password.","x-example":null},"passwordLength":{"type":"integer","description":"Optional hash length used to hash password.","x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordCpu","passwordMemory","passwordParallel","passwordLength"]}}}}}},"\/users\/scrypt-modified":{"post":{"summary":"Create user with Scrypt modified password","operationId":"usersCreateScryptModifiedUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt Modified](https:\/\/gist.github.com\/Meldiron\/eecf84a0225eccb5a378d45bb27462cc) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createScryptModifiedUser","weight":211,"cookies":false,"type":"","demo":"users\/create-scrypt-modified-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-modified-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt Modified.","x-example":"password"},"passwordSalt":{"type":"string","description":"Salt used to hash password.","x-example":"[PASSWORD_SALT]"},"passwordSaltSeparator":{"type":"string","description":"Salt separator used to hash password.","x-example":"[PASSWORD_SALT_SEPARATOR]"},"passwordSignerKey":{"type":"string","description":"Signer key used to hash password.","x-example":"[PASSWORD_SIGNER_KEY]"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordSaltSeparator","passwordSignerKey"]}}}}}},"\/users\/sha":{"post":{"summary":"Create user with SHA password","operationId":"usersCreateSHAUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [SHA](https:\/\/en.wikipedia.org\/wiki\/Secure_Hash_Algorithm) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createSHAUser","weight":208,"cookies":false,"type":"","demo":"users\/create-s-h-a-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-sha-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using SHA.","x-example":"password"},"passwordVersion":{"type":"string","description":"Optional SHA version used to hash password. Allowed values are: 'sha1', 'sha224', 'sha256', 'sha384', 'sha512\/224', 'sha512\/256', 'sha512', 'sha3-224', 'sha3-256', 'sha3-384', 'sha3-512'","x-example":"sha1","enum":["sha1","sha224","sha256","sha384","sha512\/224","sha512\/256","sha512","sha3-224","sha3-256","sha3-384","sha3-512"],"x-enum-name":null,"x-enum-keys":[]},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/usage":{"get":{"summary":"Get usage stats for the users API","operationId":"usersGetUsage","tags":["users"],"description":"","responses":{"200":{"description":"UsageUsers","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageUsers"}}}}},"x-appwrite":{"method":"getUsage","weight":239,"cookies":false,"type":"","demo":"users\/get-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"schema":{"type":"string","x-example":"24h","enum":["24h","7d","30d","90d"],"x-enum-name":null,"x-enum-keys":["Twenty Four Hours","Seven Days","Thirty Days","Ninety Days"],"default":"30d"},"in":"query"},{"name":"provider","description":"Provider Name.","required":false,"schema":{"type":"string","x-example":"email","default":""},"in":"query"}]}},"\/users\/{userId}":{"get":{"summary":"Get user","operationId":"usersGet","tags":["users"],"description":"Get a user by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"get","weight":214,"cookies":false,"type":"","demo":"users\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]},"delete":{"summary":"Delete user","operationId":"usersDelete","tags":["users"],"description":"Delete a user by its unique ID, thereby releasing it's ID. Since ID is released and can be reused, all user-related resources like documents or storage files should be deleted before user deletion. If you want to keep ID reserved, use the [updateStatus](https:\/\/appwrite.io\/docs\/server\/users#usersUpdateStatus) endpoint instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":236,"cookies":false,"type":"","demo":"users\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]}},"\/users\/{userId}\/email":{"patch":{"summary":"Update email","operationId":"usersUpdateEmail","tags":["users"],"description":"Update the user email by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateEmail","weight":227,"cookies":false,"type":"","demo":"users\/update-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","x-example":"email@example.com"}},"required":["email"]}}}}}},"\/users\/{userId}\/labels":{"put":{"summary":"Update user labels","operationId":"usersUpdateLabels","tags":["users"],"description":"Update the user labels by its unique ID. \n\nLabels can be used to grant access to resources. While teams are a way for user's to share access to a resource, labels can be defined by the developer to grant access without an invitation. See the [Permissions docs](https:\/\/appwrite.io\/docs\/permissions) for more info.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateLabels","weight":223,"cookies":false,"type":"","demo":"users\/update-labels.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-labels.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"labels":{"type":"array","description":"Array of user labels. Replaces the previous labels. Maximum of 100 labels are allowed, each up to 36 alphanumeric characters long.","x-example":null,"items":{"type":"string"}}},"required":["labels"]}}}}}},"\/users\/{userId}\/logs":{"get":{"summary":"List user logs","operationId":"usersListLogs","tags":["users"],"description":"Get the user activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listLogs","weight":219,"cookies":false,"type":"","demo":"users\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/users\/{userId}\/memberships":{"get":{"summary":"List user memberships","operationId":"usersListMemberships","tags":["users"],"description":"Get the user membership list by its unique ID.","responses":{"200":{"description":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"listMemberships","weight":218,"cookies":false,"type":"","demo":"users\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-memberships.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]}},"\/users\/{userId}\/name":{"patch":{"summary":"Update name","operationId":"usersUpdateName","tags":["users"],"description":"Update the user name by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateName","weight":225,"cookies":false,"type":"","demo":"users\/update-name.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-name.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["name"]}}}}}},"\/users\/{userId}\/password":{"patch":{"summary":"Update password","operationId":"usersUpdatePassword","tags":["users"],"description":"Update the user password by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePassword","weight":226,"cookies":false,"type":"","demo":"users\/update-password.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-password.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"password":{"type":"string","description":"New user password. Must be at least 8 chars.","x-example":null}},"required":["password"]}}}}}},"\/users\/{userId}\/phone":{"patch":{"summary":"Update phone","operationId":"usersUpdatePhone","tags":["users"],"description":"Update the user phone by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePhone","weight":228,"cookies":false,"type":"","demo":"users\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"number":{"type":"string","description":"User phone number.","x-example":"+12065550100"}},"required":["number"]}}}}}},"\/users\/{userId}\/prefs":{"get":{"summary":"Get user preferences","operationId":"usersGetPrefs","tags":["users"],"description":"Get the user preferences by its unique ID.","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"getPrefs","weight":215,"cookies":false,"type":"","demo":"users\/get-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]},"patch":{"summary":"Update user preferences","operationId":"usersUpdatePrefs","tags":["users"],"description":"Update the user preferences by its unique ID. The object you pass is stored as is, and replaces any previous value. The maximum allowed prefs size is 64kB and throws error if exceeded.","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"updatePrefs","weight":230,"cookies":false,"type":"","demo":"users\/update-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"prefs":{"type":"object","description":"Prefs key-value JSON object.","x-example":"{}"}},"required":["prefs"]}}}}}},"\/users\/{userId}\/sessions":{"get":{"summary":"List user sessions","operationId":"usersListSessions","tags":["users"],"description":"Get the user sessions list by its unique ID.","responses":{"200":{"description":"Sessions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/sessionList"}}}}},"x-appwrite":{"method":"listSessions","weight":217,"cookies":false,"type":"","demo":"users\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]},"post":{"summary":"Create session","operationId":"usersCreateSession","tags":["users"],"description":"Creates a session for a user. Returns an immediately usable session object.\n\nIf you want to generate a token for a custom authentication flow, use the [POST \/users\/{userId}\/tokens](https:\/\/appwrite.io\/docs\/server\/users#createToken) endpoint.","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"createSession","weight":232,"cookies":false,"type":"","demo":"users\/create-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-session.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]},"delete":{"summary":"Delete user sessions","operationId":"usersDeleteSessions","tags":["users"],"description":"Delete all user's sessions by using the user's unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":235,"cookies":false,"type":"","demo":"users\/delete-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]}},"\/users\/{userId}\/sessions\/{sessionId}":{"delete":{"summary":"Delete user session","operationId":"usersDeleteSession","tags":["users"],"description":"Delete a user sessions by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSession","weight":234,"cookies":false,"type":"","demo":"users\/delete-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-user-session.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"sessionId","description":"Session ID.","required":true,"schema":{"type":"string","x-example":"[SESSION_ID]"},"in":"path"}]}},"\/users\/{userId}\/status":{"patch":{"summary":"Update user status","operationId":"usersUpdateStatus","tags":["users"],"description":"Update the user status by its unique ID. Use this endpoint as an alternative to deleting a user if you want to keep user's ID reserved.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateStatus","weight":222,"cookies":false,"type":"","demo":"users\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"status":{"type":"boolean","description":"User Status. To activate the user pass `true` and to block the user pass `false`.","x-example":false}},"required":["status"]}}}}}},"\/users\/{userId}\/targets":{"get":{"summary":"List User Targets","operationId":"usersListTargets","tags":["users"],"description":"","responses":{"200":{"description":"Target list","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/targetList"}}}}},"x-appwrite":{"method":"listTargets","weight":220,"cookies":false,"type":"","demo":"users\/list-targets.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-targets.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.read","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, email, phone, status, passwordUpdate, registration, emailVerification, phoneVerification","required":false,"schema":{"type":"string","default":[]},"in":"query"}]},"post":{"summary":"Create User Target","operationId":"usersCreateTarget","tags":["users"],"description":"","responses":{"201":{"description":"Target","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/target"}}}}},"x-appwrite":{"method":"createTarget","weight":212,"cookies":false,"type":"","demo":"users\/create-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-target.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"targetId":{"type":"string","description":"Target ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[TARGET_ID]"},"providerType":{"type":"string","description":"The target provider type. Can be one of the following: `email`, `sms` or `push`.","x-example":"email","enum":["email","sms","push"],"x-enum-name":null,"x-enum-keys":[]},"identifier":{"type":"string","description":"The target identifier (token, email, phone etc.)","x-example":"[IDENTIFIER]"},"providerId":{"type":"string","description":"Provider ID. Message will be sent to this target from the specified provider ID. If no provider ID is set the first setup provider will be used.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Target name. Max length: 128 chars. For example: My Awesome App Galaxy S23.","x-example":"[NAME]"}},"required":["targetId","providerType","identifier"]}}}}}},"\/users\/{userId}\/targets\/{targetId}":{"get":{"summary":"Get User Target","operationId":"usersGetTarget","tags":["users"],"description":"","responses":{"200":{"description":"Target","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/target"}}}}},"x-appwrite":{"method":"getTarget","weight":216,"cookies":false,"type":"","demo":"users\/get-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-target.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.read","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"targetId","description":"Target ID.","required":true,"schema":{"type":"string","x-example":"[TARGET_ID]"},"in":"path"}]},"patch":{"summary":"Update User target","operationId":"usersUpdateTarget","tags":["users"],"description":"","responses":{"200":{"description":"Target","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/target"}}}}},"x-appwrite":{"method":"updateTarget","weight":231,"cookies":false,"type":"","demo":"users\/update-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-target.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"targetId","description":"Target ID.","required":true,"schema":{"type":"string","x-example":"[TARGET_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"identifier":{"type":"string","description":"The target identifier (token, email, phone etc.)","x-example":"[IDENTIFIER]"},"providerId":{"type":"string","description":"Provider ID. Message will be sent to this target from the specified provider ID. If no provider ID is set the first setup provider will be used.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Target name. Max length: 128 chars. For example: My Awesome App Galaxy S23.","x-example":"[NAME]"}}}}}}},"delete":{"summary":"Delete user target","operationId":"usersDeleteTarget","tags":["users"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteTarget","weight":237,"cookies":false,"type":"","demo":"users\/delete-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-target.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"targetId","description":"Target ID.","required":true,"schema":{"type":"string","x-example":"[TARGET_ID]"},"in":"path"}]}},"\/users\/{userId}\/tokens":{"post":{"summary":"Create token","operationId":"usersCreateToken","tags":["users"],"description":"Returns a token with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [PUT \/account\/sessions\/custom](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateCustomSession) endpoint to complete the login process.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createToken","weight":233,"cookies":false,"type":"","demo":"users\/create-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-token.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"length":{"type":"integer","description":"Token length in characters. The default length is 6 characters","x-example":4},"expire":{"type":"integer","description":"Token expiration period in seconds. The default expiration is 15 minutes.","x-example":60}}}}}}}},"\/users\/{userId}\/verification":{"patch":{"summary":"Update email verification","operationId":"usersUpdateEmailVerification","tags":["users"],"description":"Update the user email verification status by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateEmailVerification","weight":229,"cookies":false,"type":"","demo":"users\/update-email-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-email-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"emailVerification":{"type":"boolean","description":"User email verification status.","x-example":false}},"required":["emailVerification"]}}}}}},"\/users\/{userId}\/verification\/phone":{"patch":{"summary":"Update phone verification","operationId":"usersUpdatePhoneVerification","tags":["users"],"description":"Update the user phone verification status by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePhoneVerification","weight":224,"cookies":false,"type":"","demo":"users\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"phoneVerification":{"type":"boolean","description":"User phone verification status.","x-example":false}},"required":["phoneVerification"]}}}}}},"\/vcs\/github\/installations\/{installationId}\/providerRepositories":{"get":{"summary":"List Repositories","operationId":"vcsListRepositories","tags":["vcs"],"description":"","responses":{"200":{"description":"Provider Repositories List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/providerRepositoryList"}}}}},"x-appwrite":{"method":"listRepositories","weight":243,"cookies":false,"type":"","demo":"vcs\/list-repositories.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"schema":{"type":"string","x-example":"[INSTALLATION_ID]"},"in":"path"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create repository","operationId":"vcsCreateRepository","tags":["vcs"],"description":"","responses":{"200":{"description":"ProviderRepository","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/providerRepository"}}}}},"x-appwrite":{"method":"createRepository","weight":244,"cookies":false,"type":"","demo":"vcs\/create-repository.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"schema":{"type":"string","x-example":"[INSTALLATION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Repository name (slug)","x-example":"[NAME]"},"private":{"type":"boolean","description":"Mark repository public or private","x-example":false}},"required":["name","private"]}}}}}},"\/vcs\/github\/installations\/{installationId}\/providerRepositories\/{providerRepositoryId}":{"get":{"summary":"Get repository","operationId":"vcsGetRepository","tags":["vcs"],"description":"","responses":{"200":{"description":"ProviderRepository","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/providerRepository"}}}}},"x-appwrite":{"method":"getRepository","weight":245,"cookies":false,"type":"","demo":"vcs\/get-repository.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"schema":{"type":"string","x-example":"[INSTALLATION_ID]"},"in":"path"},{"name":"providerRepositoryId","description":"Repository Id","required":true,"schema":{"type":"string","x-example":"[PROVIDER_REPOSITORY_ID]"},"in":"path"}]}},"\/vcs\/github\/installations\/{installationId}\/providerRepositories\/{providerRepositoryId}\/branches":{"get":{"summary":"List Repository Branches","operationId":"vcsListRepositoryBranches","tags":["vcs"],"description":"","responses":{"200":{"description":"Branches List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/branchList"}}}}},"x-appwrite":{"method":"listRepositoryBranches","weight":246,"cookies":false,"type":"","demo":"vcs\/list-repository-branches.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"schema":{"type":"string","x-example":"[INSTALLATION_ID]"},"in":"path"},{"name":"providerRepositoryId","description":"Repository Id","required":true,"schema":{"type":"string","x-example":"[PROVIDER_REPOSITORY_ID]"},"in":"path"}]}},"\/vcs\/github\/installations\/{installationId}\/providerRepositories\/{providerRepositoryId}\/detection":{"post":{"summary":"Detect runtime settings from source code","operationId":"vcsCreateRepositoryDetection","tags":["vcs"],"description":"","responses":{"200":{"description":"Detection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/detection"}}}}},"x-appwrite":{"method":"createRepositoryDetection","weight":242,"cookies":false,"type":"","demo":"vcs\/create-repository-detection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"schema":{"type":"string","x-example":"[INSTALLATION_ID]"},"in":"path"},{"name":"providerRepositoryId","description":"Repository Id","required":true,"schema":{"type":"string","x-example":"[PROVIDER_REPOSITORY_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerRootDirectory":{"type":"string","description":"Path to Root Directory","x-example":"[PROVIDER_ROOT_DIRECTORY]"}}}}}}}},"\/vcs\/github\/installations\/{installationId}\/repositories\/{repositoryId}":{"patch":{"summary":"Authorize external deployment","operationId":"vcsUpdateExternalDeployments","tags":["vcs"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"updateExternalDeployments","weight":251,"cookies":false,"type":"","demo":"vcs\/update-external-deployments.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"schema":{"type":"string","x-example":"[INSTALLATION_ID]"},"in":"path"},{"name":"repositoryId","description":"VCS Repository Id","required":true,"schema":{"type":"string","x-example":"[REPOSITORY_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerPullRequestId":{"type":"string","description":"GitHub Pull Request Id","x-example":"[PROVIDER_PULL_REQUEST_ID]"}},"required":["providerPullRequestId"]}}}}}},"\/vcs\/installations":{"get":{"summary":"List installations","operationId":"vcsListInstallations","tags":["vcs"],"description":"","responses":{"200":{"description":"Installations List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/installationList"}}}}},"x-appwrite":{"method":"listInstallations","weight":248,"cookies":false,"type":"","demo":"vcs\/list-installations.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/vcs\/list-installations.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: provider, organization","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]}},"\/vcs\/installations\/{installationId}":{"get":{"summary":"Get installation","operationId":"vcsGetInstallation","tags":["vcs"],"description":"","responses":{"200":{"description":"Installation","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/installation"}}}}},"x-appwrite":{"method":"getInstallation","weight":249,"cookies":false,"type":"","demo":"vcs\/get-installation.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/vcs\/get-installation.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"schema":{"type":"string","x-example":"[INSTALLATION_ID]"},"in":"path"}]},"delete":{"summary":"Delete Installation","operationId":"vcsDeleteInstallation","tags":["vcs"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteInstallation","weight":250,"cookies":false,"type":"","demo":"vcs\/delete-installation.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/vcs\/delete-installation.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"schema":{"type":"string","x-example":"[INSTALLATION_ID]"},"in":"path"}]}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"project","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]},{"name":"proxy","description":"The Proxy Service allows you to configure actions for your domains beyond DNS configuration.","x-globalAttributes":[]},{"name":"graphql","description":"The GraphQL API allows you to query and mutate your Appwrite server using GraphQL.","x-globalAttributes":[]},{"name":"console","description":"The Console service allows you to interact with console relevant informations.","x-globalAttributes":[]},{"name":"migrations","description":"The Migrations service allows you to migrate third-party data to your Appwrite project.","x-globalAttributes":[]},{"name":"messaging","description":"The Messaging service allows you to send messages to any provider type (SMTP, push notification, SMS, etc.).","x-globalAttributes":[]}],"components":{"schemas":{"any":{"description":"Any","type":"object","additionalProperties":true},"error":{"description":"Error","type":"object","properties":{"message":{"type":"string","description":"Error message.","x-example":"Not found"},"code":{"type":"string","description":"Error code.","x-example":"404"},"type":{"type":"string","description":"Error type. You can learn more about all the error types at https:\/\/appwrite.io\/docs\/error-codes#errorTypes","x-example":"not_found"},"version":{"type":"string","description":"Server version number.","x-example":"1.0"}},"required":["message","code","type","version"]},"documentList":{"description":"Documents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of documents documents that matched your query.","x-example":5,"format":"int32"},"documents":{"type":"array","description":"List of documents.","items":{"$ref":"#\/components\/schemas\/document"},"x-example":""}},"required":["total","documents"]},"collectionList":{"description":"Collections List","type":"object","properties":{"total":{"type":"integer","description":"Total number of collections documents that matched your query.","x-example":5,"format":"int32"},"collections":{"type":"array","description":"List of collections.","items":{"$ref":"#\/components\/schemas\/collection"},"x-example":""}},"required":["total","collections"]},"databaseList":{"description":"Databases List","type":"object","properties":{"total":{"type":"integer","description":"Total number of databases documents that matched your query.","x-example":5,"format":"int32"},"databases":{"type":"array","description":"List of databases.","items":{"$ref":"#\/components\/schemas\/database"},"x-example":""}},"required":["total","databases"]},"indexList":{"description":"Indexes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of indexes documents that matched your query.","x-example":5,"format":"int32"},"indexes":{"type":"array","description":"List of indexes.","items":{"$ref":"#\/components\/schemas\/index"},"x-example":""}},"required":["total","indexes"]},"userList":{"description":"Users List","type":"object","properties":{"total":{"type":"integer","description":"Total number of users documents that matched your query.","x-example":5,"format":"int32"},"users":{"type":"array","description":"List of users.","items":{"$ref":"#\/components\/schemas\/user"},"x-example":""}},"required":["total","users"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of sessions documents that matched your query.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"$ref":"#\/components\/schemas\/session"},"x-example":""}},"required":["total","sessions"]},"identityList":{"description":"Identities List","type":"object","properties":{"total":{"type":"integer","description":"Total number of identities documents that matched your query.","x-example":5,"format":"int32"},"identities":{"type":"array","description":"List of identities.","items":{"$ref":"#\/components\/schemas\/identity"},"x-example":""}},"required":["total","identities"]},"logList":{"description":"Logs List","type":"object","properties":{"total":{"type":"integer","description":"Total number of logs documents that matched your query.","x-example":5,"format":"int32"},"logs":{"type":"array","description":"List of logs.","items":{"$ref":"#\/components\/schemas\/log"},"x-example":""}},"required":["total","logs"]},"fileList":{"description":"Files List","type":"object","properties":{"total":{"type":"integer","description":"Total number of files documents that matched your query.","x-example":5,"format":"int32"},"files":{"type":"array","description":"List of files.","items":{"$ref":"#\/components\/schemas\/file"},"x-example":""}},"required":["total","files"]},"bucketList":{"description":"Buckets List","type":"object","properties":{"total":{"type":"integer","description":"Total number of buckets documents that matched your query.","x-example":5,"format":"int32"},"buckets":{"type":"array","description":"List of buckets.","items":{"$ref":"#\/components\/schemas\/bucket"},"x-example":""}},"required":["total","buckets"]},"teamList":{"description":"Teams List","type":"object","properties":{"total":{"type":"integer","description":"Total number of teams documents that matched your query.","x-example":5,"format":"int32"},"teams":{"type":"array","description":"List of teams.","items":{"$ref":"#\/components\/schemas\/team"},"x-example":""}},"required":["total","teams"]},"membershipList":{"description":"Memberships List","type":"object","properties":{"total":{"type":"integer","description":"Total number of memberships documents that matched your query.","x-example":5,"format":"int32"},"memberships":{"type":"array","description":"List of memberships.","items":{"$ref":"#\/components\/schemas\/membership"},"x-example":""}},"required":["total","memberships"]},"functionList":{"description":"Functions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of functions documents that matched your query.","x-example":5,"format":"int32"},"functions":{"type":"array","description":"List of functions.","items":{"$ref":"#\/components\/schemas\/function"},"x-example":""}},"required":["total","functions"]},"installationList":{"description":"Installations List","type":"object","properties":{"total":{"type":"integer","description":"Total number of installations documents that matched your query.","x-example":5,"format":"int32"},"installations":{"type":"array","description":"List of installations.","items":{"$ref":"#\/components\/schemas\/installation"},"x-example":""}},"required":["total","installations"]},"providerRepositoryList":{"description":"Provider Repositories List","type":"object","properties":{"total":{"type":"integer","description":"Total number of providerRepositories documents that matched your query.","x-example":5,"format":"int32"},"providerRepositories":{"type":"array","description":"List of providerRepositories.","items":{"$ref":"#\/components\/schemas\/providerRepository"},"x-example":""}},"required":["total","providerRepositories"]},"branchList":{"description":"Branches List","type":"object","properties":{"total":{"type":"integer","description":"Total number of branches documents that matched your query.","x-example":5,"format":"int32"},"branches":{"type":"array","description":"List of branches.","items":{"$ref":"#\/components\/schemas\/branch"},"x-example":""}},"required":["total","branches"]},"runtimeList":{"description":"Runtimes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of runtimes documents that matched your query.","x-example":5,"format":"int32"},"runtimes":{"type":"array","description":"List of runtimes.","items":{"$ref":"#\/components\/schemas\/runtime"},"x-example":""}},"required":["total","runtimes"]},"deploymentList":{"description":"Deployments List","type":"object","properties":{"total":{"type":"integer","description":"Total number of deployments documents that matched your query.","x-example":5,"format":"int32"},"deployments":{"type":"array","description":"List of deployments.","items":{"$ref":"#\/components\/schemas\/deployment"},"x-example":""}},"required":["total","deployments"]},"executionList":{"description":"Executions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of executions documents that matched your query.","x-example":5,"format":"int32"},"executions":{"type":"array","description":"List of executions.","items":{"$ref":"#\/components\/schemas\/execution"},"x-example":""}},"required":["total","executions"]},"projectList":{"description":"Projects List","type":"object","properties":{"total":{"type":"integer","description":"Total number of projects documents that matched your query.","x-example":5,"format":"int32"},"projects":{"type":"array","description":"List of projects.","items":{"$ref":"#\/components\/schemas\/project"},"x-example":""}},"required":["total","projects"]},"webhookList":{"description":"Webhooks List","type":"object","properties":{"total":{"type":"integer","description":"Total number of webhooks documents that matched your query.","x-example":5,"format":"int32"},"webhooks":{"type":"array","description":"List of webhooks.","items":{"$ref":"#\/components\/schemas\/webhook"},"x-example":""}},"required":["total","webhooks"]},"keyList":{"description":"API Keys List","type":"object","properties":{"total":{"type":"integer","description":"Total number of keys documents that matched your query.","x-example":5,"format":"int32"},"keys":{"type":"array","description":"List of keys.","items":{"$ref":"#\/components\/schemas\/key"},"x-example":""}},"required":["total","keys"]},"platformList":{"description":"Platforms List","type":"object","properties":{"total":{"type":"integer","description":"Total number of platforms documents that matched your query.","x-example":5,"format":"int32"},"platforms":{"type":"array","description":"List of platforms.","items":{"$ref":"#\/components\/schemas\/platform"},"x-example":""}},"required":["total","platforms"]},"countryList":{"description":"Countries List","type":"object","properties":{"total":{"type":"integer","description":"Total number of countries documents that matched your query.","x-example":5,"format":"int32"},"countries":{"type":"array","description":"List of countries.","items":{"$ref":"#\/components\/schemas\/country"},"x-example":""}},"required":["total","countries"]},"continentList":{"description":"Continents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of continents documents that matched your query.","x-example":5,"format":"int32"},"continents":{"type":"array","description":"List of continents.","items":{"$ref":"#\/components\/schemas\/continent"},"x-example":""}},"required":["total","continents"]},"languageList":{"description":"Languages List","type":"object","properties":{"total":{"type":"integer","description":"Total number of languages documents that matched your query.","x-example":5,"format":"int32"},"languages":{"type":"array","description":"List of languages.","items":{"$ref":"#\/components\/schemas\/language"},"x-example":""}},"required":["total","languages"]},"currencyList":{"description":"Currencies List","type":"object","properties":{"total":{"type":"integer","description":"Total number of currencies documents that matched your query.","x-example":5,"format":"int32"},"currencies":{"type":"array","description":"List of currencies.","items":{"$ref":"#\/components\/schemas\/currency"},"x-example":""}},"required":["total","currencies"]},"phoneList":{"description":"Phones List","type":"object","properties":{"total":{"type":"integer","description":"Total number of phones documents that matched your query.","x-example":5,"format":"int32"},"phones":{"type":"array","description":"List of phones.","items":{"$ref":"#\/components\/schemas\/phone"},"x-example":""}},"required":["total","phones"]},"variableList":{"description":"Variables List","type":"object","properties":{"total":{"type":"integer","description":"Total number of variables documents that matched your query.","x-example":5,"format":"int32"},"variables":{"type":"array","description":"List of variables.","items":{"$ref":"#\/components\/schemas\/variable"},"x-example":""}},"required":["total","variables"]},"proxyRuleList":{"description":"Rule List","type":"object","properties":{"total":{"type":"integer","description":"Total number of rules documents that matched your query.","x-example":5,"format":"int32"},"rules":{"type":"array","description":"List of rules.","items":{"$ref":"#\/components\/schemas\/proxyRule"},"x-example":""}},"required":["total","rules"]},"localeCodeList":{"description":"Locale codes list","type":"object","properties":{"total":{"type":"integer","description":"Total number of localeCodes documents that matched your query.","x-example":5,"format":"int32"},"localeCodes":{"type":"array","description":"List of localeCodes.","items":{"$ref":"#\/components\/schemas\/localeCode"},"x-example":""}},"required":["total","localeCodes"]},"providerList":{"description":"Provider list","type":"object","properties":{"total":{"type":"integer","description":"Total number of providers documents that matched your query.","x-example":5,"format":"int32"},"providers":{"type":"array","description":"List of providers.","items":{"$ref":"#\/components\/schemas\/provider"},"x-example":""}},"required":["total","providers"]},"messageList":{"description":"Message list","type":"object","properties":{"total":{"type":"integer","description":"Total number of messages documents that matched your query.","x-example":5,"format":"int32"},"messages":{"type":"array","description":"List of messages.","items":{"$ref":"#\/components\/schemas\/message"},"x-example":""}},"required":["total","messages"]},"topicList":{"description":"Topic list","type":"object","properties":{"total":{"type":"integer","description":"Total number of topics documents that matched your query.","x-example":5,"format":"int32"},"topics":{"type":"array","description":"List of topics.","items":{"$ref":"#\/components\/schemas\/topic"},"x-example":""}},"required":["total","topics"]},"subscriberList":{"description":"Subscriber list","type":"object","properties":{"total":{"type":"integer","description":"Total number of subscribers documents that matched your query.","x-example":5,"format":"int32"},"subscribers":{"type":"array","description":"List of subscribers.","items":{"$ref":"#\/components\/schemas\/subscriber"},"x-example":""}},"required":["total","subscribers"]},"targetList":{"description":"Target list","type":"object","properties":{"total":{"type":"integer","description":"Total number of targets documents that matched your query.","x-example":5,"format":"int32"},"targets":{"type":"array","description":"List of targets.","items":{"$ref":"#\/components\/schemas\/target"},"x-example":""}},"required":["total","targets"]},"migrationList":{"description":"Migrations List","type":"object","properties":{"total":{"type":"integer","description":"Total number of migrations documents that matched your query.","x-example":5,"format":"int32"},"migrations":{"type":"array","description":"List of migrations.","items":{"$ref":"#\/components\/schemas\/migration"},"x-example":""}},"required":["total","migrations"]},"firebaseProjectList":{"description":"Migrations Firebase Projects List","type":"object","properties":{"total":{"type":"integer","description":"Total number of projects documents that matched your query.","x-example":5,"format":"int32"},"projects":{"type":"array","description":"List of projects.","items":{"$ref":"#\/components\/schemas\/firebaseProject"},"x-example":""}},"required":["total","projects"]},"database":{"description":"Database","type":"object","properties":{"$id":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Database name.","x-example":"My Database"},"$createdAt":{"type":"string","description":"Database creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Database update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"enabled":{"type":"boolean","description":"If database is enabled. Can be 'enabled' or 'disabled'. When disabled, the database is inaccessible to users, but remains accessible to Server SDKs using API keys.","x-example":false}},"required":["$id","name","$createdAt","$updatedAt","enabled"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Collection creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Collection update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Collection permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled. Can be 'enabled' or 'disabled'. When disabled, the collection is inaccessible to users, but remains accessible to Server SDKs using API keys.","x-example":false},"documentSecurity":{"type":"boolean","description":"Whether document-level permissions are enabled. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":true},"attributes":{"type":"array","description":"Collection attributes.","items":{"anyOf":[{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeRelationship"},{"$ref":"#\/components\/schemas\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"$ref":"#\/components\/schemas\/index"},"x-example":{}}},"required":["$id","$createdAt","$updatedAt","$permissions","databaseId","name","enabled","documentSecurity","attributes","indexes"]},"attributeList":{"description":"Attributes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of attributes in the given collection.","x-example":5,"format":"int32"},"attributes":{"type":"array","description":"List of attributes.","items":{"anyOf":[{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeRelationship"},{"$ref":"#\/components\/schemas\/attributeString"}]},"x-example":""}},"required":["total","attributes"]},"attributeString":{"description":"AttributeString","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"fullName"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"size":{"type":"integer","description":"Attribute size.","x-example":128,"format":"int32"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"default","nullable":true}},"required":["key","type","status","error","required","size"]},"attributeInteger":{"description":"AttributeInteger","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"count"},"type":{"type":"string","description":"Attribute type.","x-example":"integer"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"min":{"type":"integer","description":"Minimum value to enforce for new documents.","x-example":1,"format":"int32","nullable":true},"max":{"type":"integer","description":"Maximum value to enforce for new documents.","x-example":10,"format":"int32","nullable":true},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":10,"format":"int32","nullable":true}},"required":["key","type","status","error","required"]},"attributeFloat":{"description":"AttributeFloat","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"percentageCompleted"},"type":{"type":"string","description":"Attribute type.","x-example":"double"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"min":{"type":"number","description":"Minimum value to enforce for new documents.","x-example":1.5,"format":"double","nullable":true},"max":{"type":"number","description":"Maximum value to enforce for new documents.","x-example":10.5,"format":"double","nullable":true},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":2.5,"format":"double","nullable":true}},"required":["key","type","status","error","required"]},"attributeBoolean":{"description":"AttributeBoolean","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"isEnabled"},"type":{"type":"string","description":"Attribute type.","x-example":"boolean"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":false,"nullable":true}},"required":["key","type","status","error","required"]},"attributeEmail":{"description":"AttributeEmail","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"userEmail"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"format":{"type":"string","description":"String format.","x-example":"email"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"default@example.com","nullable":true}},"required":["key","type","status","error","required","format"]},"attributeEnum":{"description":"AttributeEnum","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"status"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"elements":{"type":"array","description":"Array of elements in enumerated type.","items":{"type":"string"},"x-example":"element"},"format":{"type":"string","description":"String format.","x-example":"enum"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"element","nullable":true}},"required":["key","type","status","error","required","elements","format"]},"attributeIp":{"description":"AttributeIP","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"ipAddress"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"format":{"type":"string","description":"String format.","x-example":"ip"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"192.0.2.0","nullable":true}},"required":["key","type","status","error","required","format"]},"attributeUrl":{"description":"AttributeURL","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"githubUrl"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"format":{"type":"string","description":"String format.","x-example":"url"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"http:\/\/example.com","nullable":true}},"required":["key","type","status","error","required","format"]},"attributeDatetime":{"description":"AttributeDatetime","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"birthDay"},"type":{"type":"string","description":"Attribute type.","x-example":"datetime"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"format":{"type":"string","description":"ISO 8601 format.","x-example":"datetime"},"default":{"type":"string","description":"Default value for attribute when not provided. Only null is optional","x-example":"2020-10-15T06:38:00.000+00:00","nullable":true}},"required":["key","type","status","error","required","format"]},"attributeRelationship":{"description":"AttributeRelationship","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"fullName"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"relatedCollection":{"type":"string","description":"The ID of the related collection.","x-example":"collection"},"relationType":{"type":"string","description":"The type of the relationship.","x-example":"oneToOne|oneToMany|manyToOne|manyToMany"},"twoWay":{"type":"boolean","description":"Is the relationship two-way?","x-example":false},"twoWayKey":{"type":"string","description":"The key of the two-way relationship.","x-example":"string"},"onDelete":{"type":"string","description":"How deleting the parent document will propagate to child documents.","x-example":"restrict|cascade|setNull"},"side":{"type":"string","description":"Whether this is the parent or child side of the relationship","x-example":"parent|child"}},"required":["key","type","status","error","required","relatedCollection","relationType","twoWay","twoWayKey","onDelete","side"]},"index":{"description":"Index","type":"object","properties":{"key":{"type":"string","description":"Index Key.","x-example":"index1"},"type":{"type":"string","description":"Index type.","x-example":"primary"},"status":{"type":"string","description":"Index status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an index.","x-example":"string"},"attributes":{"type":"array","description":"Index attributes.","items":{"type":"string"},"x-example":[]},"orders":{"type":"array","description":"Index orders.","items":{"type":"string"},"x-example":[],"nullable":true}},"required":["key","type","status","error","attributes"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"user":{"description":"User","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"password":{"type":"string","description":"Hashed user password.","x-example":"$argon2id$v=19$m=2048,t=4,p=3$aUZjLnliVWRINmFNTWMudg$5S+x+7uA31xFnrHFT47yFwcJeaP0w92L\/4LdgrVRXxE","nullable":true},"hash":{"type":"string","description":"Password hashing algorithm.","x-example":"argon2","nullable":true},"hashOptions":{"type":"object","description":"Password hashing algorithm configuration.","x-example":{},"items":{"oneOf":[{"$ref":"#\/components\/schemas\/algoArgon2"},{"$ref":"#\/components\/schemas\/algoScrypt"},{"$ref":"#\/components\/schemas\/algoScryptModified"},{"$ref":"#\/components\/schemas\/algoBcrypt"},{"$ref":"#\/components\/schemas\/algoPhpass"},{"$ref":"#\/components\/schemas\/algoSha"},{"$ref":"#\/components\/schemas\/algoMd5"}]},"nullable":true},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"labels":{"type":"array","description":"Labels for the user.","items":{"type":"string"},"x-example":["vip"]},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"$ref":"#\/components\/schemas\/preferences"}},"targets":{"type":"array","description":"A user-owned message receiver. A single user may have multiple e.g. emails, phones, and a browser. Each target is registered with a single provider.","items":{"$ref":"#\/components\/schemas\/target"},"x-example":[]},"accessedAt":{"type":"string","description":"Most recent access date in ISO 8601 format. This attribute is only updated again after 24 hours.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","$updatedAt","name","registration","status","labels","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs","targets","accessedAt"]},"algoMd5":{"description":"AlgoMD5","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"md5"}},"required":["type"]},"algoSha":{"description":"AlgoSHA","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"sha"}},"required":["type"]},"algoPhpass":{"description":"AlgoPHPass","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"phpass"}},"required":["type"]},"algoBcrypt":{"description":"AlgoBcrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"bcrypt"}},"required":["type"]},"algoScrypt":{"description":"AlgoScrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scrypt"},"costCpu":{"type":"integer","description":"CPU complexity of computed hash.","x-example":8,"format":"int32"},"costMemory":{"type":"integer","description":"Memory complexity of computed hash.","x-example":14,"format":"int32"},"costParallel":{"type":"integer","description":"Parallelization of computed hash.","x-example":1,"format":"int32"},"length":{"type":"integer","description":"Length used to compute hash.","x-example":64,"format":"int32"}},"required":["type","costCpu","costMemory","costParallel","length"]},"algoScryptModified":{"description":"AlgoScryptModified","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scryptMod"},"salt":{"type":"string","description":"Salt used to compute hash.","x-example":"UxLMreBr6tYyjQ=="},"saltSeparator":{"type":"string","description":"Separator used to compute hash.","x-example":"Bw=="},"signerKey":{"type":"string","description":"Key used to compute hash.","x-example":"XyEKE9RcTDeLEsL\/RjwPDBv\/RqDl8fb3gpYEOQaPihbxf1ZAtSOHCjuAAa7Q3oHpCYhXSN9tizHgVOwn6krflQ=="}},"required":["type","salt","saltSeparator","signerKey"]},"algoArgon2":{"description":"AlgoArgon2","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"argon2"},"memoryCost":{"type":"integer","description":"Memory used to compute hash.","x-example":65536,"format":"int32"},"timeCost":{"type":"integer","description":"Amount of time consumed to compute hash","x-example":4,"format":"int32"},"threads":{"type":"integer","description":"Number of threads used to compute hash.","x-example":3,"format":"int32"}},"required":["type","memoryCost","timeCost","threads"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true},"secret":{"type":"string","description":"Secret used to authenticate the user. Only included if the request was made with an API key","x-example":"5e5bb8c16897e"}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current","secret"]},"identity":{"description":"Identity","type":"object","properties":{"$id":{"type":"string","description":"Identity ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Identity creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Identity update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"provider":{"type":"string","description":"Identity Provider.","x-example":"email"},"providerUid":{"type":"string","description":"ID of the User in the Identity Provider.","x-example":"5e5bb8c16897e"},"providerEmail":{"type":"string","description":"Email of the User in the Identity Provider.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Identity Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Identity Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"}},"required":["$id","$createdAt","$updatedAt","userId","provider","providerUid","providerEmail","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"securityPhrase":{"type":"string","description":"Security phrase of a token. Empty if security phrase was not requested when creating a token. It includes randomly generated phrase which is also sent in the external resource such as email.","x-example":"Golden Fox"}},"required":["$id","$createdAt","userId","secret","expire","securityPhrase"]},"jwt":{"description":"JWT","type":"object","properties":{"jwt":{"type":"string","description":"JWT encoded string.","x-example":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c"}},"required":["jwt"]},"locale":{"description":"Locale","type":"object","properties":{"ip":{"type":"string","description":"User IP address.","x-example":"127.0.0.1"},"countryCode":{"type":"string","description":"Country code in [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) two-character format","x-example":"US"},"country":{"type":"string","description":"Country name. This field support localization.","x-example":"United States"},"continentCode":{"type":"string","description":"Continent code. A two character continent code \"AF\" for Africa, \"AN\" for Antarctica, \"AS\" for Asia, \"EU\" for Europe, \"NA\" for North America, \"OC\" for Oceania, and \"SA\" for South America.","x-example":"NA"},"continent":{"type":"string","description":"Continent name. This field support localization.","x-example":"North America"},"eu":{"type":"boolean","description":"True if country is part of the European Union.","x-example":false},"currency":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format","x-example":"USD"}},"required":["ip","countryCode","country","continentCode","continent","eu","currency"]},"localeCode":{"description":"LocaleCode","type":"object","properties":{"code":{"type":"string","description":"Locale codes in [ISO 639-1](https:\/\/en.wikipedia.org\/wiki\/List_of_ISO_639-1_codes)","x-example":"en-us"},"name":{"type":"string","description":"Locale name","x-example":"US"}},"required":["code","name"]},"file":{"description":"File","type":"object","properties":{"$id":{"type":"string","description":"File ID.","x-example":"5e5ea5c16897e"},"bucketId":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Bucket creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Bucket update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Bucket permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"fileSecurity":{"type":"boolean","description":"Whether file-level security is enabled. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":true},"name":{"type":"string","description":"Bucket name.","x-example":"Documents"},"enabled":{"type":"boolean","description":"Bucket enabled.","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size supported.","x-example":100,"format":"int32"},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions.","items":{"type":"string"},"x-example":["jpg","png"]},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Will be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd).","x-example":"gzip"},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$createdAt","$updatedAt","$permissions","fileSecurity","name","enabled","maximumFileSize","allowedFileExtensions","compression","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"},"prefs":{"type":"object","description":"Team preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"$ref":"#\/components\/schemas\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","total","prefs"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":["owner"]}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Function creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Function update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"users"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"enabled":{"type":"boolean","description":"Function enabled.","x-example":false},"live":{"type":"boolean","description":"Is the function deployed with the latest configuration? This is set to false if you've changed an environment variables, entrypoint, commands, or other settings that needs redeploy to be applied. When the value is false, redeploy the function to update it with the latest configuration.","x-example":false},"logging":{"type":"boolean","description":"Whether executions will be logged. When set to false, executions will not be logged, but will reduce resource used by your Appwrite project.","x-example":false},"runtime":{"type":"string","description":"Function execution runtime.","x-example":"python-3.8"},"deployment":{"type":"string","description":"Function's active deployment ID.","x-example":"5e5ea5c16897e"},"vars":{"type":"array","description":"Function variables.","items":{"$ref":"#\/components\/schemas\/variable"},"x-example":[]},"events":{"type":"array","description":"Function trigger events.","items":{"type":"string"},"x-example":"account.create"},"schedule":{"type":"string","description":"Function execution schedult in CRON format.","x-example":"5 4 * * *"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":300,"format":"int32"},"entrypoint":{"type":"string","description":"The entrypoint file used to execute the deployment.","x-example":"index.js"},"commands":{"type":"string","description":"The build command used to build the deployment.","x-example":"npm install"},"version":{"type":"string","description":"Version of Open Runtimes used for the function.","x-example":"v2"},"installationId":{"type":"string","description":"Function VCS (Version Control System) installation id.","x-example":"6m40at4ejk5h2u9s1hboo"},"providerRepositoryId":{"type":"string","description":"VCS (Version Control System) Repository ID","x-example":"appwrite"},"providerBranch":{"type":"string","description":"VCS (Version Control System) branch name","x-example":"main"},"providerRootDirectory":{"type":"string","description":"Path to function in VCS (Version Control System) repository","x-example":"functions\/helloWorld"},"providerSilentMode":{"type":"boolean","description":"Is VCS (Version Control System) connection is in silent mode? When in silence mode, no comments will be posted on the repository pull or merge requests","x-example":false}},"required":["$id","$createdAt","$updatedAt","execute","name","enabled","live","logging","runtime","deployment","vars","events","schedule","timeout","entrypoint","commands","version","installationId","providerRepositoryId","providerBranch","providerRootDirectory","providerSilentMode"]},"installation":{"description":"Installation","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Function creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Function update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"VCS (Version Control System) provider name.","x-example":"github"},"organization":{"type":"string","description":"VCS (Version Control System) organization name.","x-example":"appwrite"},"providerInstallationId":{"type":"string","description":"VCS (Version Control System) installation ID.","x-example":"5322"}},"required":["$id","$createdAt","$updatedAt","provider","organization","providerInstallationId"]},"providerRepository":{"description":"ProviderRepository","type":"object","properties":{"id":{"type":"string","description":"VCS (Version Control System) repository ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"VCS (Version Control System) repository name.","x-example":"appwrite"},"organization":{"type":"string","description":"VCS (Version Control System) organization name","x-example":"appwrite"},"provider":{"type":"string","description":"VCS (Version Control System) provider name.","x-example":"github"},"private":{"type":"boolean","description":"Is VCS (Version Control System) repository private?","x-example":true},"runtime":{"type":"string","description":"Auto-detected runtime suggestion. Empty if getting response of getRuntime().","x-example":"node"},"pushedAt":{"type":"string","description":"Last commit date in ISO 8601 format.","x-example":"datetime"}},"required":["id","name","organization","provider","private","runtime","pushedAt"]},"detection":{"description":"Detection","type":"object","properties":{"runtime":{"type":"string","description":"Runtime","x-example":"node"}},"required":["runtime"]},"branch":{"description":"Branch","type":"object","properties":{"name":{"type":"string","description":"Branch Name.","x-example":"main"}},"required":["name"]},"runtime":{"description":"Runtime","type":"object","properties":{"$id":{"type":"string","description":"Runtime ID.","x-example":"python-3.8"},"name":{"type":"string","description":"Runtime Name.","x-example":"Python"},"version":{"type":"string","description":"Runtime version.","x-example":"3.8"},"base":{"type":"string","description":"Base Docker image used to build the runtime.","x-example":"python:3.8-alpine"},"image":{"type":"string","description":"Image name of Docker Hub.","x-example":"appwrite\\\/runtime-for-python:3.8"},"logo":{"type":"string","description":"Name of the logo image.","x-example":"python.png"},"supports":{"type":"array","description":"List of supported architectures.","items":{"type":"string"},"x-example":"amd64"}},"required":["$id","name","version","base","image","logo","supports"]},"deployment":{"description":"Deployment","type":"object","properties":{"$id":{"type":"string","description":"Deployment ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Deployment creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Deployment update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"type":{"type":"string","description":"Type of deployment.","x-example":"vcs"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"index.js"},"size":{"type":"integer","description":"The code size in bytes.","x-example":128,"format":"int32"},"buildId":{"type":"string","description":"The current build ID.","x-example":"5e5ea5c16897e"},"activate":{"type":"boolean","description":"Whether the deployment should be automatically activated.","x-example":true},"status":{"type":"string","description":"The deployment status. Possible values are \"processing\", \"building\", \"waiting\", \"ready\", and \"failed\".","x-example":"ready"},"buildLogs":{"type":"string","description":"The build logs.","x-example":"Compiling source files..."},"buildTime":{"type":"integer","description":"The current build time in seconds.","x-example":128,"format":"int32"},"providerRepositoryName":{"type":"string","description":"The name of the vcs provider repository","x-example":"database"},"providerRepositoryOwner":{"type":"string","description":"The name of the vcs provider repository owner","x-example":"utopia"},"providerRepositoryUrl":{"type":"string","description":"The url of the vcs provider repository","x-example":"https:\/\/github.com\/vermakhushboo\/g4-node-function"},"providerBranch":{"type":"string","description":"The branch of the vcs repository","x-example":"0.7.x"},"providerCommitHash":{"type":"string","description":"The commit hash of the vcs commit","x-example":"7c3f25d"},"providerCommitAuthorUrl":{"type":"string","description":"The url of vcs commit author","x-example":"https:\/\/github.com\/vermakhushboo"},"providerCommitAuthor":{"type":"string","description":"The name of vcs commit author","x-example":"Khushboo Verma"},"providerCommitMessage":{"type":"string","description":"The commit message","x-example":"Update index.js"},"providerCommitUrl":{"type":"string","description":"The url of the vcs commit","x-example":"https:\/\/github.com\/vermakhushboo\/g4-node-function\/commit\/60c0416257a9cbcdd96b2d370c38d8f8d150ccfb"},"providerBranchUrl":{"type":"string","description":"The branch of the vcs repository","x-example":"https:\/\/github.com\/vermakhushboo\/appwrite\/tree\/0.7.x"}},"required":["$id","$createdAt","$updatedAt","type","resourceId","resourceType","entrypoint","size","buildId","activate","status","buildLogs","buildTime","providerRepositoryName","providerRepositoryOwner","providerRepositoryUrl","providerBranch","providerCommitHash","providerCommitAuthorUrl","providerCommitAuthor","providerCommitMessage","providerCommitUrl","providerBranchUrl"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"requestMethod":{"type":"string","description":"HTTP request method type.","x-example":"GET"},"requestPath":{"type":"string","description":"HTTP request path and query.","x-example":"\/articles?id=5"},"requestHeaders":{"type":"array","description":"HTTP response headers as a key-value object. This will return only whitelisted headers. All headers are returned if execution is created as synchronous.","items":{"$ref":"#\/components\/schemas\/headers"},"x-example":[{"Content-Type":"application\/json"}]},"responseStatusCode":{"type":"integer","description":"HTTP response status code.","x-example":200,"format":"int32"},"responseBody":{"type":"string","description":"HTTP response body. This will return empty unless execution is created as synchronous.","x-example":"Developers are awesome."},"responseHeaders":{"type":"array","description":"HTTP response headers as a key-value object. This will return only whitelisted headers. All headers are returned if execution is created as synchronous.","items":{"$ref":"#\/components\/schemas\/headers"},"x-example":[{"Content-Type":"application\/json"}]},"logs":{"type":"string","description":"Function logs. Includes the last 4,000 characters. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"errors":{"type":"string","description":"Function errors. Includes the last 4,000 characters. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"Function execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","requestMethod","requestPath","requestHeaders","responseStatusCode","responseBody","responseHeaders","logs","errors","duration"]},"project":{"description":"Project","type":"object","properties":{"$id":{"type":"string","description":"Project ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Project creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Project update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Project name.","x-example":"New Project"},"description":{"type":"string","description":"Project description.","x-example":"This is a new project."},"teamId":{"type":"string","description":"Project team ID.","x-example":"1592981250"},"logo":{"type":"string","description":"Project logo file ID.","x-example":"5f5c451b403cb"},"url":{"type":"string","description":"Project website URL.","x-example":"5f5c451b403cb"},"legalName":{"type":"string","description":"Company legal name.","x-example":"Company LTD."},"legalCountry":{"type":"string","description":"Country code in [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) two-character format.","x-example":"US"},"legalState":{"type":"string","description":"State name.","x-example":"New York"},"legalCity":{"type":"string","description":"City name.","x-example":"New York City."},"legalAddress":{"type":"string","description":"Company Address.","x-example":"620 Eighth Avenue, New York, NY 10018"},"legalTaxId":{"type":"string","description":"Company Tax ID.","x-example":"131102020"},"authDuration":{"type":"integer","description":"Session duration in seconds.","x-example":60,"format":"int32"},"authLimit":{"type":"integer","description":"Max users allowed. 0 is unlimited.","x-example":100,"format":"int32"},"authSessionsLimit":{"type":"integer","description":"Max sessions allowed per user. 100 maximum.","x-example":10,"format":"int32"},"authPasswordHistory":{"type":"integer","description":"Max allowed passwords in the history list per user. Max passwords limit allowed in history is 20. Use 0 for disabling password history.","x-example":5,"format":"int32"},"authPasswordDictionary":{"type":"boolean","description":"Whether or not to check user's password against most commonly used passwords.","x-example":true},"authPersonalDataCheck":{"type":"boolean","description":"Whether or not to check the user password for similarity with their personal data.","x-example":true},"oAuthProviders":{"type":"array","description":"List of Auth Providers.","items":{"$ref":"#\/components\/schemas\/authProvider"},"x-example":[{}]},"platforms":{"type":"array","description":"List of Platforms.","items":{"$ref":"#\/components\/schemas\/platform"},"x-example":{}},"webhooks":{"type":"array","description":"List of Webhooks.","items":{"$ref":"#\/components\/schemas\/webhook"},"x-example":{}},"keys":{"type":"array","description":"List of API Keys.","items":{"$ref":"#\/components\/schemas\/key"},"x-example":{}},"smtpEnabled":{"type":"boolean","description":"Status for custom SMTP","x-example":false},"smtpSenderName":{"type":"string","description":"SMTP sender name","x-example":"John Appwrite"},"smtpSenderEmail":{"type":"string","description":"SMTP sender email","x-example":"john@appwrite.io"},"smtpReplyTo":{"type":"string","description":"SMTP reply to email","x-example":"support@appwrite.io"},"smtpHost":{"type":"string","description":"SMTP server host name","x-example":"mail.appwrite.io"},"smtpPort":{"type":"integer","description":"SMTP server port","x-example":25,"format":"int32"},"smtpUsername":{"type":"string","description":"SMTP server username","x-example":"emailuser"},"smtpPassword":{"type":"string","description":"SMTP server password","x-example":"securepassword"},"smtpSecure":{"type":"string","description":"SMTP server secure protocol","x-example":"tls"},"authEmailPassword":{"type":"boolean","description":"Email\/Password auth method status","x-example":true},"authUsersAuthMagicURL":{"type":"boolean","description":"Magic URL auth method status","x-example":true},"authAnonymous":{"type":"boolean","description":"Anonymous auth method status","x-example":true},"authInvites":{"type":"boolean","description":"Invites auth method status","x-example":true},"authJWT":{"type":"boolean","description":"JWT auth method status","x-example":true},"authPhone":{"type":"boolean","description":"Phone auth method status","x-example":true},"serviceStatusForAccount":{"type":"boolean","description":"Account service status","x-example":true},"serviceStatusForAvatars":{"type":"boolean","description":"Avatars service status","x-example":true},"serviceStatusForDatabases":{"type":"boolean","description":"Databases service status","x-example":true},"serviceStatusForLocale":{"type":"boolean","description":"Locale service status","x-example":true},"serviceStatusForHealth":{"type":"boolean","description":"Health service status","x-example":true},"serviceStatusForStorage":{"type":"boolean","description":"Storage service status","x-example":true},"serviceStatusForTeams":{"type":"boolean","description":"Teams service status","x-example":true},"serviceStatusForUsers":{"type":"boolean","description":"Users service status","x-example":true},"serviceStatusForFunctions":{"type":"boolean","description":"Functions service status","x-example":true},"serviceStatusForGraphql":{"type":"boolean","description":"GraphQL service status","x-example":true},"serviceStatusForMessaging":{"type":"boolean","description":"Messaging service status","x-example":true}},"required":["$id","$createdAt","$updatedAt","name","description","teamId","logo","url","legalName","legalCountry","legalState","legalCity","legalAddress","legalTaxId","authDuration","authLimit","authSessionsLimit","authPasswordHistory","authPasswordDictionary","authPersonalDataCheck","oAuthProviders","platforms","webhooks","keys","smtpEnabled","smtpSenderName","smtpSenderEmail","smtpReplyTo","smtpHost","smtpPort","smtpUsername","smtpPassword","smtpSecure","authEmailPassword","authUsersAuthMagicURL","authAnonymous","authInvites","authJWT","authPhone","serviceStatusForAccount","serviceStatusForAvatars","serviceStatusForDatabases","serviceStatusForLocale","serviceStatusForHealth","serviceStatusForStorage","serviceStatusForTeams","serviceStatusForUsers","serviceStatusForFunctions","serviceStatusForGraphql","serviceStatusForMessaging"]},"webhook":{"description":"Webhook","type":"object","properties":{"$id":{"type":"string","description":"Webhook ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Webhook creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Webhook update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Webhook name.","x-example":"My Webhook"},"url":{"type":"string","description":"Webhook URL endpoint.","x-example":"https:\/\/example.com\/webhook"},"events":{"type":"array","description":"Webhook trigger events.","items":{"type":"string"},"x-example":"database.collections.update"},"security":{"type":"boolean","description":"Indicated if SSL \/ TLS Certificate verification is enabled.","x-example":true},"httpUser":{"type":"string","description":"HTTP basic authentication username.","x-example":"username"},"httpPass":{"type":"string","description":"HTTP basic authentication password.","x-example":"password"},"signatureKey":{"type":"string","description":"Signature key which can be used to validated incoming","x-example":"ad3d581ca230e2b7059c545e5a"}},"required":["$id","$createdAt","$updatedAt","name","url","events","security","httpUser","httpPass","signatureKey"]},"key":{"description":"Key","type":"object","properties":{"$id":{"type":"string","description":"Key ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Key creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Key update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Key name.","x-example":"My API Key"},"expire":{"type":"string","description":"Key expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"scopes":{"type":"array","description":"Allowed permission scopes.","items":{"type":"string"},"x-example":"users.read"},"secret":{"type":"string","description":"Secret key.","x-example":"919c2d18fb5d4...a2ae413da83346ad2"},"accessedAt":{"type":"string","description":"Most recent access date in ISO 8601 format. This attribute is only updated again after 24 hours.","x-example":"2020-10-15T06:38:00.000+00:00"},"sdks":{"type":"array","description":"List of SDK user agents that used this key.","items":{"type":"string"},"x-example":"appwrite:flutter"}},"required":["$id","$createdAt","$updatedAt","name","expire","scopes","secret","accessedAt","sdks"]},"authProvider":{"description":"AuthProvider","type":"object","properties":{"key":{"type":"string","description":"Auth Provider.","x-example":"github"},"name":{"type":"string","description":"Auth Provider name.","x-example":"GitHub"},"appId":{"type":"string","description":"OAuth 2.0 application ID.","x-example":"259125845563242502"},"secret":{"type":"string","description":"OAuth 2.0 application secret. Might be JSON string if provider requires extra configuration.","x-example":"Bpw_g9c2TGXxfgLshDbSaL8tsCcqgczQ"},"enabled":{"type":"boolean","description":"Auth Provider is active and can be used to create session.","x-example":""}},"required":["key","name","appId","secret","enabled"]},"platform":{"description":"Platform","type":"object","properties":{"$id":{"type":"string","description":"Platform ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Platform creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Platform update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Platform name.","x-example":"My Web App"},"type":{"type":"string","description":"Platform type. Possible values are: web, flutter-web, flutter-ios, flutter-android, ios, android, and unity.","x-example":"web"},"key":{"type":"string","description":"Platform Key. iOS bundle ID or Android package name. Empty string for other platforms.","x-example":"com.company.appname"},"store":{"type":"string","description":"App store or Google Play store ID.","x-example":""},"hostname":{"type":"string","description":"Web app hostname. Empty string for other platforms.","x-example":true},"httpUser":{"type":"string","description":"HTTP basic authentication username.","x-example":"username"},"httpPass":{"type":"string","description":"HTTP basic authentication password.","x-example":"password"}},"required":["$id","$createdAt","$updatedAt","name","type","key","store","hostname","httpUser","httpPass"]},"variable":{"description":"Variable","type":"object","properties":{"$id":{"type":"string","description":"Variable ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"key":{"type":"string","description":"Variable key.","x-example":"API_KEY"},"value":{"type":"string","description":"Variable value.","x-example":"myPa$$word1"},"resourceType":{"type":"string","description":"Service to which the variable belongs. Possible values are \"project\", \"function\"","x-example":"function"},"resourceId":{"type":"string","description":"ID of resource to which the variable belongs. If resourceType is \"project\", it is empty. If resourceType is \"function\", it is ID of the function.","x-example":"myAwesomeFunction"}},"required":["$id","$createdAt","$updatedAt","key","value","resourceType","resourceId"]},"country":{"description":"Country","type":"object","properties":{"name":{"type":"string","description":"Country name.","x-example":"United States"},"code":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"}},"required":["name","code"]},"continent":{"description":"Continent","type":"object","properties":{"name":{"type":"string","description":"Continent name.","x-example":"Europe"},"code":{"type":"string","description":"Continent two letter code.","x-example":"EU"}},"required":["name","code"]},"language":{"description":"Language","type":"object","properties":{"name":{"type":"string","description":"Language name.","x-example":"Italian"},"code":{"type":"string","description":"Language two-character ISO 639-1 codes.","x-example":"it"},"nativeName":{"type":"string","description":"Language native name.","x-example":"Italiano"}},"required":["name","code","nativeName"]},"currency":{"description":"Currency","type":"object","properties":{"symbol":{"type":"string","description":"Currency symbol.","x-example":"$"},"name":{"type":"string","description":"Currency name.","x-example":"US dollar"},"symbolNative":{"type":"string","description":"Currency native symbol.","x-example":"$"},"decimalDigits":{"type":"integer","description":"Number of decimal digits.","x-example":2,"format":"int32"},"rounding":{"type":"number","description":"Currency digit rounding.","x-example":0,"format":"double"},"code":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format.","x-example":"USD"},"namePlural":{"type":"string","description":"Currency plural name","x-example":"US dollars"}},"required":["symbol","name","symbolNative","decimalDigits","rounding","code","namePlural"]},"phone":{"description":"Phone","type":"object","properties":{"code":{"type":"string","description":"Phone code.","x-example":"+1"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["code","countryCode","countryName"]},"healthAntivirus":{"description":"Health Antivirus","type":"object","properties":{"version":{"type":"string","description":"Antivirus version.","x-example":"1.0.0"},"status":{"type":"string","description":"Antivirus status. Possible values can are: `disabled`, `offline`, `online`","x-example":"online"}},"required":["version","status"]},"healthQueue":{"description":"Health Queue","type":"object","properties":{"size":{"type":"integer","description":"Amount of actions in the queue.","x-example":8,"format":"int32"}},"required":["size"]},"healthStatus":{"description":"Health Status","type":"object","properties":{"name":{"type":"string","description":"Name of the service.","x-example":"database"},"ping":{"type":"integer","description":"Duration in milliseconds how long the health check took.","x-example":128,"format":"int32"},"status":{"type":"string","description":"Service status. Possible values can are: `pass`, `fail`","x-example":"pass"}},"required":["name","ping","status"]},"healthTime":{"description":"Health Time","type":"object","properties":{"remoteTime":{"type":"integer","description":"Current unix timestamp on trustful remote server.","x-example":1639490751,"format":"int32"},"localTime":{"type":"integer","description":"Current unix timestamp of local server where Appwrite runs.","x-example":1639490844,"format":"int32"},"diff":{"type":"integer","description":"Difference of unix remote and local timestamps in milliseconds.","x-example":93,"format":"int32"}},"required":["remoteTime","localTime","diff"]},"metric":{"description":"Metric","type":"object","properties":{"value":{"type":"integer","description":"The value of this metric at the timestamp.","x-example":1,"format":"int32"},"date":{"type":"string","description":"The date at which this metric was aggregated in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["value","date"]},"usageDatabases":{"description":"UsageDatabases","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"databasesCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsCount":{"type":"array","description":"Aggregated stats for total number of collections.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"databasesCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"databasesRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"databasesUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"databasesDelete":{"type":"array","description":"Aggregated stats for total number of collections.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsCreate":{"type":"array","description":"Aggregated stats for collections created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsRead":{"type":"array","description":"Aggregated stats for collections read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsUpdate":{"type":"array","description":"Aggregated stats for collections updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsDelete":{"type":"array","description":"Aggregated stats for collections delete.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","databasesCount","documentsCount","collectionsCount","databasesCreate","databasesRead","databasesUpdate","databasesDelete","documentsCreate","documentsRead","documentsUpdate","documentsDelete","collectionsCreate","collectionsRead","collectionsUpdate","collectionsDelete"]},"usageDatabase":{"description":"UsageDatabase","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"documentsCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsCount":{"type":"array","description":"Aggregated stats for total number of collections.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsCreate":{"type":"array","description":"Aggregated stats for collections created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsRead":{"type":"array","description":"Aggregated stats for collections read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsUpdate":{"type":"array","description":"Aggregated stats for collections updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsDelete":{"type":"array","description":"Aggregated stats for collections delete.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","documentsCount","collectionsCount","documentsCreate","documentsRead","documentsUpdate","documentsDelete","collectionsCreate","collectionsRead","collectionsUpdate","collectionsDelete"]},"usageCollection":{"description":"UsageCollection","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"documentsCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","documentsCount","documentsCreate","documentsRead","documentsUpdate","documentsDelete"]},"usageUsers":{"description":"UsageUsers","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"usersCount":{"type":"array","description":"Aggregated stats for total number of users.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"usersCreate":{"type":"array","description":"Aggregated stats for users created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"usersRead":{"type":"array","description":"Aggregated stats for users read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"usersUpdate":{"type":"array","description":"Aggregated stats for users updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"usersDelete":{"type":"array","description":"Aggregated stats for users deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"sessionsCreate":{"type":"array","description":"Aggregated stats for sessions created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"sessionsProviderCreate":{"type":"array","description":"Aggregated stats for sessions created for a provider ( email, anonymous or oauth2 ).","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"sessionsDelete":{"type":"array","description":"Aggregated stats for sessions deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","usersCount","usersCreate","usersRead","usersUpdate","usersDelete","sessionsCreate","sessionsProviderCreate","sessionsDelete"]},"usageStorage":{"description":"StorageUsage","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"storage":{"type":"array","description":"Aggregated stats for the occupied storage size (in bytes).","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesCount":{"type":"array","description":"Aggregated stats for total number of files.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"bucketsCount":{"type":"array","description":"Aggregated stats for total number of buckets.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"bucketsCreate":{"type":"array","description":"Aggregated stats for buckets created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"bucketsRead":{"type":"array","description":"Aggregated stats for buckets read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"bucketsUpdate":{"type":"array","description":"Aggregated stats for buckets updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"bucketsDelete":{"type":"array","description":"Aggregated stats for buckets deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesCreate":{"type":"array","description":"Aggregated stats for files created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesRead":{"type":"array","description":"Aggregated stats for files read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesUpdate":{"type":"array","description":"Aggregated stats for files updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesDelete":{"type":"array","description":"Aggregated stats for files deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","storage","filesCount","bucketsCount","bucketsCreate","bucketsRead","bucketsUpdate","bucketsDelete","filesCreate","filesRead","filesUpdate","filesDelete"]},"usageBuckets":{"description":"UsageBuckets","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"filesCount":{"type":"array","description":"Aggregated stats for total number of files in this bucket.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesStorage":{"type":"array","description":"Aggregated stats for total storage of files in this bucket.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesCreate":{"type":"array","description":"Aggregated stats for files created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesRead":{"type":"array","description":"Aggregated stats for files read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesUpdate":{"type":"array","description":"Aggregated stats for files updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesDelete":{"type":"array","description":"Aggregated stats for files deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","filesCount","filesStorage","filesCreate","filesRead","filesUpdate","filesDelete"]},"usageFunctions":{"description":"UsageFunctions","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"executionsTotal":{"type":"array","description":"Aggregated stats for number of function executions.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"executionsFailure":{"type":"array","description":"Aggregated stats for function execution failures.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"executionsSuccess":{"type":"array","description":"Aggregated stats for function execution successes.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"executionsTime":{"type":"array","description":"Aggregated stats for function execution duration.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"buildsTotal":{"type":"array","description":"Aggregated stats for number of function builds.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"buildsFailure":{"type":"array","description":"Aggregated stats for function build failures.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"buildsSuccess":{"type":"array","description":"Aggregated stats for function build successes.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"buildsTime":{"type":"array","description":"Aggregated stats for function build duration.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","executionsTotal","executionsFailure","executionsSuccess","executionsTime","buildsTotal","buildsFailure","buildsSuccess","buildsTime"]},"usageProject":{"description":"UsageProject","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"requests":{"type":"array","description":"Aggregated stats for number of requests.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"network":{"type":"array","description":"Aggregated stats for consumed bandwidth.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"executions":{"type":"array","description":"Aggregated stats for function executions.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documents":{"type":"array","description":"Aggregated stats for number of documents.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"databases":{"type":"array","description":"Aggregated stats for number of databases.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"users":{"type":"array","description":"Aggregated stats for number of users.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"storage":{"type":"array","description":"Aggregated stats for the occupied storage size (in bytes).","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"buckets":{"type":"array","description":"Aggregated stats for number of buckets.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","requests","network","executions","documents","databases","users","storage","buckets"]},"headers":{"description":"Headers","type":"object","properties":{"name":{"type":"string","description":"Header name.","x-example":"Content-Type"},"value":{"type":"string","description":"Header value.","x-example":"application\/json"}},"required":["name","value"]},"proxyRule":{"description":"Rule","type":"object","properties":{"$id":{"type":"string","description":"Rule ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Rule creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Rule update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"domain":{"type":"string","description":"Domain name.","x-example":"appwrite.company.com"},"resourceType":{"type":"string","description":"Action definition for the rule. Possible values are \"api\", \"function\", or \"redirect\"","x-example":"function"},"resourceId":{"type":"string","description":"ID of resource for the action type. If resourceType is \"api\" or \"url\", it is empty. If resourceType is \"function\", it is ID of the function.","x-example":"myAwesomeFunction"},"status":{"type":"string","description":"Domain verification status. Possible values are \"created\", \"verifying\", \"verified\" and \"unverified\"","x-example":"verified"},"logs":{"type":"string","description":"Certificate generation logs. This will return an empty string if generation did not run, or succeeded.","x-example":"HTTP challegne failed."},"renewAt":{"type":"string","description":"Certificate auto-renewal date in ISO 8601 format.","x-example":"datetime"}},"required":["$id","$createdAt","$updatedAt","domain","resourceType","resourceId","status","logs","renewAt"]},"smsTemplate":{"description":"SmsTemplate","type":"object","properties":{"type":{"type":"string","description":"Template type","x-example":"verification"},"locale":{"type":"string","description":"Template locale","x-example":"en_us"},"message":{"type":"string","description":"Template message","x-example":"Click on the link to verify your account."}},"required":["type","locale","message"]},"emailTemplate":{"description":"EmailTemplate","type":"object","properties":{"type":{"type":"string","description":"Template type","x-example":"verification"},"locale":{"type":"string","description":"Template locale","x-example":"en_us"},"message":{"type":"string","description":"Template message","x-example":"Click on the link to verify your account."},"senderName":{"type":"string","description":"Name of the sender","x-example":"My User"},"senderEmail":{"type":"string","description":"Email of the sender","x-example":"mail@appwrite.io"},"replyTo":{"type":"string","description":"Reply to email address","x-example":"emails@appwrite.io"},"subject":{"type":"string","description":"Email subject","x-example":"Please verify your email address"}},"required":["type","locale","message","senderName","senderEmail","replyTo","subject"]},"consoleVariables":{"description":"Console Variables","type":"object","properties":{"_APP_DOMAIN_TARGET":{"type":"string","description":"CNAME target for your Appwrite custom domains.","x-example":"appwrite.io"},"_APP_STORAGE_LIMIT":{"type":"integer","description":"Maximum file size allowed for file upload in bytes.","x-example":"30000000","format":"int32"},"_APP_FUNCTIONS_SIZE_LIMIT":{"type":"integer","description":"Maximum file size allowed for deployment in bytes.","x-example":"30000000","format":"int32"},"_APP_USAGE_STATS":{"type":"string","description":"Defines if usage stats are enabled. This value is set to 'enabled' by default, to disable the usage stats set the value to 'disabled'.","x-example":"enabled"},"_APP_VCS_ENABLED":{"type":"boolean","description":"Defines if VCS (Version Control System) is enabled.","x-example":true},"_APP_DOMAIN_ENABLED":{"type":"boolean","description":"Defines if main domain is configured. If so, custom domains can be created.","x-example":true},"_APP_ASSISTANT_ENABLED":{"type":"boolean","description":"Defines if AI assistant is enabled.","x-example":true}},"required":["_APP_DOMAIN_TARGET","_APP_STORAGE_LIMIT","_APP_FUNCTIONS_SIZE_LIMIT","_APP_USAGE_STATS","_APP_VCS_ENABLED","_APP_DOMAIN_ENABLED","_APP_ASSISTANT_ENABLED"]},"provider":{"description":"Provider","type":"object","properties":{"$id":{"type":"string","description":"Provider ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Provider creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Provider update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"The name for the provider instance.","x-example":"Mailgun"},"provider":{"type":"string","description":"The name of the provider service.","x-example":"mailgun"},"enabled":{"type":"boolean","description":"Is provider enabled?","x-example":true},"type":{"type":"string","description":"Type of provider.","x-example":"sms"},"credentials":{"type":"object","description":"Provider credentials.","x-example":{"key":"123456789"}},"options":{"type":"object","description":"Provider options.","x-example":{"from":"sender-email@mydomain"},"nullable":true}},"required":["$id","$createdAt","$updatedAt","name","provider","enabled","type","credentials"]},"message":{"description":"Message","type":"object","properties":{"$id":{"type":"string","description":"Message ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Message creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Message update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerType":{"type":"string","description":"Message provider type.","x-example":"email"},"topics":{"type":"array","description":"Topic IDs set as recipients.","items":{"type":"string"},"x-example":["5e5ea5c16897e"]},"users":{"type":"array","description":"User IDs set as recipients.","items":{"type":"string"},"x-example":["5e5ea5c16897e"]},"targets":{"type":"array","description":"Target IDs set as recipients.","items":{"type":"string"},"x-example":["5e5ea5c16897e"]},"scheduledAt":{"type":"string","description":"The scheduled time for message.","x-example":"2020-10-15T06:38:00.000+00:00","nullable":true},"deliveredAt":{"type":"string","description":"The time when the message was delivered.","x-example":"2020-10-15T06:38:00.000+00:00","nullable":true},"deliveryErrors":{"type":"array","description":"Delivery errors if any.","items":{"type":"string"},"x-example":["Failed to send message to target 5e5ea5c16897e: Credentials not valid."],"nullable":true},"deliveredTotal":{"type":"integer","description":"Number of recipients the message was delivered to.","x-example":1,"format":"int32"},"data":{"type":"object","description":"Data of the message.","x-example":{"subject":"Welcome to Appwrite","content":"Hi there, welcome to Appwrite family."}},"status":{"type":"string","description":"Status of delivery.","x-example":"Message status can be one of the following: processing, sent, cancelled, failed."},"description":{"type":"string","description":"Message description.","x-example":"Welcome Email.","nullable":true}},"required":["$id","$createdAt","$updatedAt","providerType","topics","users","targets","deliveredTotal","data","status"]},"topic":{"description":"Topic","type":"object","properties":{"$id":{"type":"string","description":"Topic ID.","x-example":"259125845563242502"},"$createdAt":{"type":"string","description":"Topic creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Topic update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"The name of the topic.","x-example":"events"},"total":{"type":"integer","description":"Total count of subscribers subscribed to topic.","x-example":100,"format":"int32"},"description":{"type":"string","description":"Description of the topic.","x-example":"All events related messages will be sent to this topic.","nullable":true}},"required":["$id","$createdAt","$updatedAt","name","total"]},"subscriber":{"description":"Subscriber","type":"object","properties":{"$id":{"type":"string","description":"Subscriber ID.","x-example":"259125845563242502"},"$createdAt":{"type":"string","description":"Subscriber creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Subscriber update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"targetId":{"type":"string","description":"Target ID.","x-example":"259125845563242502"},"target":{"type":"object","description":"Target.","x-example":{"$id":"259125845563242502","$createdAt":"2020-10-15T06:38:00.000+00:00","$updatedAt":"2020-10-15T06:38:00.000+00:00","providerType":"email","providerId":"259125845563242502","name":"ageon-app-email","identifier":"random-mail@email.org","userId":"5e5ea5c16897e"},"items":{"$ref":"#\/components\/schemas\/target"}},"userId":{"type":"string","description":"Topic ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User Name.","x-example":"Aegon Targaryen"},"topicId":{"type":"string","description":"Topic ID.","x-example":"259125845563242502"},"providerType":{"type":"string","description":"The target provider type. Can be one of the following: `email`, `sms` or `push`.","x-example":"email"}},"required":["$id","$createdAt","$updatedAt","targetId","target","userId","userName","topicId","providerType"]},"target":{"description":"Target","type":"object","properties":{"$id":{"type":"string","description":"Target ID.","x-example":"259125845563242502"},"$createdAt":{"type":"string","description":"Target creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Target update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Target Name.","x-example":"Aegon apple token"},"userId":{"type":"string","description":"User ID.","x-example":"259125845563242502"},"providerId":{"type":"string","description":"Provider ID.","x-example":"259125845563242502","nullable":true},"providerType":{"type":"string","description":"The target provider type. Can be one of the following: `email`, `sms` or `push`.","x-example":"email"},"identifier":{"type":"string","description":"The target identifier.","x-example":"token"}},"required":["$id","$createdAt","$updatedAt","name","userId","providerType","identifier"]},"migration":{"description":"Migration","type":"object","properties":{"$id":{"type":"string","description":"Migration ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"string","description":"Migration status ( pending, processing, failed, completed ) ","x-example":"pending"},"stage":{"type":"string","description":"Migration stage ( init, processing, source-check, destination-check, migrating, finished )","x-example":"init"},"source":{"type":"string","description":"A string containing the type of source of the migration.","x-example":"Appwrite"},"resources":{"type":"array","description":"Resources to migration.","items":{"type":"string"},"x-example":["user"]},"statusCounters":{"type":"object","description":"A group of counters that represent the total progress of the migration.","x-example":"{\"Database\": {\"PENDING\": 0, \"SUCCESS\": 1, \"ERROR\": 0, \"SKIP\": 0, \"PROCESSING\": 0, \"WARNING\": 0}}"},"resourceData":{"type":"object","description":"An array of objects containing the report data of the resources that were migrated.","x-example":"[{\"resource\":\"Database\",\"id\":\"public\",\"status\":\"SUCCESS\",\"message\":\"\"}]"},"errors":{"type":"array","description":"All errors that occurred during the migration process.","items":{"type":"string"},"x-example":[]}},"required":["$id","$createdAt","$updatedAt","status","stage","source","resources","statusCounters","resourceData","errors"]},"migrationReport":{"description":"Migration Report","type":"object","properties":{"user":{"type":"integer","description":"Number of users to be migrated.","x-example":20,"format":"int32"},"team":{"type":"integer","description":"Number of teams to be migrated.","x-example":20,"format":"int32"},"database":{"type":"integer","description":"Number of databases to be migrated.","x-example":20,"format":"int32"},"document":{"type":"integer","description":"Number of documents to be migrated.","x-example":20,"format":"int32"},"file":{"type":"integer","description":"Number of files to be migrated.","x-example":20,"format":"int32"},"bucket":{"type":"integer","description":"Number of buckets to be migrated.","x-example":20,"format":"int32"},"function":{"type":"integer","description":"Number of functions to be migrated.","x-example":20,"format":"int32"},"size":{"type":"integer","description":"Size of files to be migrated in mb.","x-example":30000,"format":"int32"},"version":{"type":"string","description":"Version of the Appwrite instance to be migrated.","x-example":"1.4.0"}},"required":["user","team","database","document","file","bucket","function","size","version"]},"firebaseProject":{"description":"MigrationFirebaseProject","type":"object","properties":{"projectId":{"type":"string","description":"Project ID.","x-example":"my-project"},"displayName":{"type":"string","description":"Project display name.","x-example":"My Project"}},"required":["projectId","displayName"]}},"securitySchemes":{"Project":{"type":"apiKey","name":"X-Appwrite-Project","description":"Your project ID","in":"header","x-appwrite":{"demo":"5df5acd0d48c2"}},"Key":{"type":"apiKey","name":"X-Appwrite-Key","description":"Your secret API key","in":"header","x-appwrite":{"demo":"919c2d18fb5d4...a2ae413da83346ad2"}},"JWT":{"type":"apiKey","name":"X-Appwrite-JWT","description":"Your secret JSON Web Token","in":"header"},"Locale":{"type":"apiKey","name":"X-Appwrite-Locale","description":"","in":"header","x-appwrite":{"demo":"en"}},"Mode":{"type":"apiKey","name":"X-Appwrite-Mode","description":"","in":"header","x-appwrite":{"demo":""}}}},"externalDocs":{"description":"Full API docs, specs and tutorials","url":"https:\/\/appwrite.io\/docs"}} \ No newline at end of file +{"openapi":"3.0.0","info":{"version":"1.4.13","title":"Appwrite","description":"Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https:\/\/appwrite.io\/docs](https:\/\/appwrite.io\/docs)","termsOfService":"https:\/\/appwrite.io\/policy\/terms","contact":{"name":"Appwrite Team","url":"https:\/\/appwrite.io\/support","email":"team@appwrite.io"},"license":{"name":"BSD-3-Clause","url":"https:\/\/raw.githubusercontent.com\/appwrite\/appwrite\/master\/LICENSE"}},"servers":[{"url":"https:\/\/HOSTNAME\/v1"}],"paths":{"\/account":{"get":{"summary":"Get account","operationId":"accountGet","tags":["account"],"description":"Get the currently logged in user.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"get","weight":22,"cookies":false,"type":"","demo":"account\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"post":{"summary":"Create account","operationId":"accountCreate","tags":["account"],"description":"Use this endpoint to allow a new user to register a new account in your project. After the user registration completes successfully, you can use the [\/account\/verfication](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createVerification) route to start verifying the user email address. To allow the new user to login to their new account, you need to create a new [account session](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createEmailSession).","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"create","weight":7,"cookies":false,"type":"","demo":"account\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"New user password. Must be between 8 and 256 chars.","x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/account\/email":{"patch":{"summary":"Update email","operationId":"accountUpdateEmail","tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateEmail","weight":29,"cookies":false,"type":"","demo":"account\/update-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","x-example":"password"}},"required":["email","password"]}}}}}},"\/account\/identities":{"get":{"summary":"List Identities","operationId":"accountListIdentities","tags":["account"],"description":"Get the list of identities for the currently logged in user.","responses":{"200":{"description":"Identities List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/identityList"}}}}},"x-appwrite":{"method":"listIdentities","weight":13,"cookies":false,"type":"","demo":"account\/list-identities.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-identities.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/identities","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, provider, providerUid, providerEmail, providerAccessTokenExpiry","required":false,"schema":{"type":"string","default":[]},"in":"query"}]}},"\/account\/identities\/{identityId}":{"delete":{"summary":"Delete identity","operationId":"accountDeleteIdentity","tags":["account"],"description":"Delete an identity by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIdentity","weight":14,"cookies":false,"type":"","demo":"account\/delete-identity.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-identity.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"identityId","description":"Identity ID.","required":true,"schema":{"type":"string","x-example":"[IDENTITY_ID]"},"in":"path"}]}},"\/account\/jwt":{"post":{"summary":"Create JWT","operationId":"accountCreateJWT","tags":["account"],"description":"Use this endpoint to create a JSON Web Token. You can use the resulting JWT to authenticate on behalf of the current user when working with the Appwrite server-side API and SDKs. The JWT secret is valid for 15 minutes from its creation and will be invalid if the user will logout in that time frame.","responses":{"201":{"description":"JWT","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/jwt"}}}}},"x-appwrite":{"method":"createJWT","weight":20,"cookies":false,"type":"","demo":"account\/create-j-w-t.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-jwt.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"accounts.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"List logs","operationId":"accountListLogs","tags":["account"],"description":"Get the list of latest security activity logs for the currently logged in user. Each log returns user IP address, location and date and time of log.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listLogs","weight":25,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update name","operationId":"accountUpdateName","tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateName","weight":27,"cookies":false,"type":"","demo":"account\/update-name.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-name.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["name"]}}}}}},"\/account\/password":{"patch":{"summary":"Update password","operationId":"accountUpdatePassword","tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePassword","weight":28,"cookies":false,"type":"","demo":"account\/update-password.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-password.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"password":{"type":"string","description":"New user password. Must be at least 8 chars.","x-example":null},"oldPassword":{"type":"string","description":"Current user password. Must be at least 8 chars.","x-example":"password"}},"required":["password"]}}}}}},"\/account\/phone":{"patch":{"summary":"Update phone","operationId":"accountUpdatePhone","tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createPhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePhone","weight":30,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","x-example":"password"}},"required":["phone","password"]}}}}}},"\/account\/prefs":{"get":{"summary":"Get account preferences","operationId":"accountGetPrefs","tags":["account"],"description":"Get the preferences as a key-value object for the currently logged in user.","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"getPrefs","weight":23,"cookies":false,"type":"","demo":"account\/get-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/prefs","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"patch":{"summary":"Update preferences","operationId":"accountUpdatePrefs","tags":["account"],"description":"Update currently logged in user account preferences. The object you pass is stored as is, and replaces any previous value. The maximum allowed prefs size is 64kB and throws error if exceeded.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePrefs","weight":31,"cookies":false,"type":"","demo":"account\/update-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/prefs","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"prefs":{"type":"object","description":"Prefs key-value JSON object.","x-example":"{}"}},"required":["prefs"]}}}}}},"\/account\/recovery":{"post":{"summary":"Create password recovery","operationId":"accountCreateRecovery","tags":["account"],"description":"Sends the user an email with a temporary secret key for password reset. When the user clicks the confirmation link he is redirected back to your app password reset URL with the secret key and email address values attached to the URL query string. Use the query string params to submit a request to the [PUT \/account\/recovery](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateRecovery) endpoint to complete the process. The verification link sent to the user's email address is valid for 1 hour.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createRecovery","weight":36,"cookies":false,"type":"","demo":"account\/create-recovery.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-recovery.md","rate-limit":10,"rate-time":3600,"rate-key":["url:{url},email:{param-email}","ip:{ip}"],"scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"url":{"type":"string","description":"URL to redirect the user back to your app from the recovery email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"}},"required":["email","url"]}}}}},"put":{"summary":"Create password recovery (confirmation)","operationId":"accountUpdateRecovery","tags":["account"],"description":"Use this endpoint to complete the user account password reset. Both the **userId** and **secret** arguments will be passed as query parameters to the redirect URL you have provided when sending your request to the [POST \/account\/recovery](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createRecovery) endpoint.\n\nPlease note that in order to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) the only valid redirect URLs are the ones from domains you have set when adding your platforms in the console interface.","responses":{"200":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"updateRecovery","weight":37,"cookies":false,"type":"","demo":"account\/update-recovery.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-recovery.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid reset token.","x-example":"[SECRET]"},"password":{"type":"string","description":"New user password. Must be between 8 and 256 chars.","x-example":null}},"required":["userId","secret","password"]}}}}}},"\/account\/sessions":{"get":{"summary":"List sessions","operationId":"accountListSessions","tags":["account"],"description":"Get the list of active sessions across different devices for the currently logged in user.","responses":{"200":{"description":"Sessions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/sessionList"}}}}},"x-appwrite":{"method":"listSessions","weight":24,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/sessions","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete sessions","operationId":"accountDeleteSessions","tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":35,"cookies":false,"type":"","demo":"account\/delete-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-sessions.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/account\/sessions\/anonymous":{"post":{"summary":"Create anonymous session","operationId":"accountCreateAnonymousSession","tags":["account"],"description":"Use this endpoint to allow a new user to register an anonymous account in your project. This route will also create a new session for the user. To allow the new user to convert an anonymous account to a normal account, you need to update its [email and password](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateEmail) or create an [OAuth2 session](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#CreateOAuth2Session).","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"createAnonymousSession","weight":19,"cookies":false,"type":"","demo":"account\/create-anonymous-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-anonymous.md","rate-limit":50,"rate-time":3600,"rate-key":"ip:{ip}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/sessions\/email":{"post":{"summary":"Create email password session","operationId":"accountCreateEmailPasswordSession","tags":["account"],"description":"Allow the user to login into their account by providing a valid email and password combination. This route will create a new session for the user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"createEmailPasswordSession","weight":8,"cookies":false,"type":"","demo":"account\/create-email-password-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-email-password.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","x-example":"password"}},"required":["email","password"]}}}}}},"\/account\/sessions\/magic-url":{"put":{"summary":"Create session (deprecated)","operationId":"accountUpdateMagicURLSession","tags":["account"],"description":"Use this endpoint to create a session from token. Provide the **userId** and **secret** parameters from the successful response of authentication flows initiated by token creation. For example, magic URL and phone login.","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateMagicURLSession","weight":16,"cookies":false,"type":"","demo":"account\/update-magic-u-r-l-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session.md","rate-limit":10,"rate-time":3600,"rate-key":"ip:{ip},userId:{param-userId}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/account\/sessions\/oauth2\/{provider}":{"get":{"summary":"Create OAuth2 session","operationId":"accountCreateOAuth2Session","tags":["account"],"description":"Allow the user to login to their account using the OAuth2 provider of their choice. Each OAuth2 provider should be enabled from the Appwrite console first. Use the success and failure arguments to provide a redirect URL's back to your app when login is completed.\n\nIf there is already an active session, the new session will be attached to the logged-in account. If there are no active sessions, the server will attempt to look for a user with the same email address as the email received from the OAuth2 provider and attach the new session to the existing user. If no matching user is found - the server will create a new user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).\n","responses":{"301":{"description":"File"}},"x-appwrite":{"method":"createOAuth2Session","weight":9,"cookies":false,"type":"webAuth","demo":"account\/create-o-auth2session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-oauth2.md","rate-limit":50,"rate-time":3600,"rate-key":"ip:{ip}","scope":"sessions.write","platforms":["client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"provider","description":"OAuth2 Provider. Currently, supported providers are: amazon, apple, auth0, authentik, autodesk, bitbucket, bitly, box, dailymotion, discord, disqus, dropbox, etsy, facebook, github, gitlab, google, linkedin, microsoft, notion, oidc, okta, paypal, paypalSandbox, podio, salesforce, slack, spotify, stripe, tradeshift, tradeshiftBox, twitch, wordpress, yahoo, yammer, yandex, zoho, zoom.","required":true,"schema":{"type":"string","x-example":"amazon","enum":["amazon","apple","auth0","authentik","autodesk","bitbucket","bitly","box","dailymotion","discord","disqus","dropbox","etsy","facebook","github","gitlab","google","linkedin","microsoft","notion","oidc","okta","paypal","paypalSandbox","podio","salesforce","slack","spotify","stripe","tradeshift","tradeshiftBox","twitch","wordpress","yahoo","yammer","yandex","zoho","zoom","mock"],"x-enum-name":"Provider","x-enum-keys":[]},"in":"path"},{"name":"success","description":"URL to redirect back to your app after a successful login attempt. Only URLs from hostnames in your project's platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","required":false,"schema":{"type":"string","format":"url","x-example":"https:\/\/example.com","default":""},"in":"query"},{"name":"failure","description":"URL to redirect back to your app after a failed login attempt. Only URLs from hostnames in your project's platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","required":false,"schema":{"type":"string","format":"url","x-example":"https:\/\/example.com","default":""},"in":"query"},{"name":"token","description":"Include token credentials in the final redirect, useful for server-side integrations, or when cookies are not available.","required":false,"schema":{"type":"boolean","x-example":false,"default":false},"in":"query"},{"name":"scopes","description":"A list of custom OAuth2 scopes. Check each provider internal docs for a list of supported scopes. Maximum of 100 scopes are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/sessions\/token":{"post":{"summary":"Create session","operationId":"accountCreateSession","tags":["account"],"description":"Use this endpoint to create a session from token. Provide the **userId** and **secret** parameters from the successful response of authentication flows initiated by token creation. For example, magic URL and phone login.","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"createSession","weight":17,"cookies":false,"type":"","demo":"account\/create-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session.md","rate-limit":10,"rate-time":3600,"rate-key":"ip:{ip},userId:{param-userId}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Secret of a token generated by login methods. For example, the `createMagicURLToken` or `createPhoneToken` methods.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/account\/sessions\/{sessionId}":{"get":{"summary":"Get session","operationId":"accountGetSession","tags":["account"],"description":"Use this endpoint to get a logged in user's session using a Session ID. Inputting 'current' will return the current session being used.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"getSession","weight":26,"cookies":false,"type":"","demo":"account\/get-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-session.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/sessions","offline-key":"{sessionId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to get the current device session.","required":true,"schema":{"type":"string","x-example":"[SESSION_ID]"},"in":"path"}]},"patch":{"summary":"Update OAuth session (refresh tokens)","operationId":"accountUpdateSession","tags":["account"],"description":"Access tokens have limited lifespan and expire to mitigate security risks. If session was created using an OAuth provider, this route can be used to \"refresh\" the access token.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateSession","weight":34,"cookies":false,"type":"","demo":"account\/update-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-session.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to update the current device session.","required":true,"schema":{"type":"string","x-example":"[SESSION_ID]"},"in":"path"}]},"delete":{"summary":"Delete session","operationId":"accountDeleteSession","tags":["account"],"description":"Logout the user. Use 'current' as the session ID to logout on this device, use a session ID to logout on another device. If you're looking to logout the user on all devices, use [Delete Sessions](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#deleteSessions) instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSession","weight":33,"cookies":false,"type":"","demo":"account\/delete-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-session.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to delete the current device session.","required":true,"schema":{"type":"string","x-example":"[SESSION_ID]"},"in":"path"}]}},"\/account\/status":{"patch":{"summary":"Update status","operationId":"accountUpdateStatus","tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateStatus","weight":32,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/account\/targets\/push":{"post":{"summary":"Create Account's push target","operationId":"accountCreatePushTarget","tags":["account"],"description":"","responses":{"201":{"description":"Target","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/target"}}}}},"x-appwrite":{"method":"createPushTarget","weight":21,"cookies":false,"type":"","demo":"account\/create-push-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"targetId":{"type":"string","description":"Target ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[TARGET_ID]"},"identifier":{"type":"string","description":"The target identifier (token, email, phone etc.)","x-example":"[IDENTIFIER]"},"providerId":{"type":"string","description":"Provider ID. Message will be sent to this target from the specified provider ID. If no provider ID is set the first setup provider will be used.","x-example":"[PROVIDER_ID]"}},"required":["targetId","identifier"]}}}}}},"\/account\/targets\/{targetId}\/push":{"put":{"summary":"Update Account's push target","operationId":"accountUpdatePushTarget","tags":["account"],"description":"","responses":{"200":{"description":"Target","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/target"}}}}},"x-appwrite":{"method":"updatePushTarget","weight":42,"cookies":false,"type":"","demo":"account\/update-push-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"targetId","description":"Target ID.","required":true,"schema":{"type":"string","x-example":"[TARGET_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"identifier":{"type":"string","description":"The target identifier (token, email, phone etc.)","x-example":"[IDENTIFIER]"}},"required":["identifier"]}}}}}},"\/account\/tokens\/magic-url":{"post":{"summary":"Create magic URL token","operationId":"accountCreateMagicURLToken","tags":["account"],"description":"Sends the user an email with a secret key for creating a session. If the provided user ID has not been registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [PUT \/account\/sessions\/magic-url](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateMagicURLSession) endpoint to complete the login process. The link sent to the user's email address is valid for 1 hour. If you are on a mobile device you can leave the URL parameter empty, so that the login completion will be handled by your Appwrite instance by default.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).\n","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createMagicURLToken","weight":15,"cookies":false,"type":"","demo":"account\/create-magic-u-r-l-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-token-magic-url.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"url":{"type":"string","description":"URL to redirect the user back to your app from the magic URL login. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"},"securityPhrase":{"type":"boolean","description":"Toggle for security phrase. If enabled, email will be send with a randomly generated phrase and the phrase will also be included in the response. Confirming phrases match increases the security of authentication flow.","x-example":false}},"required":["userId","email"]}}}}}},"\/account\/tokens\/phone":{"post":{"summary":"Create phone token","operationId":"accountCreatePhoneToken","tags":["account"],"description":"Sends the user an SMS with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [PUT \/account\/sessions\/phone](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updatePhoneSession) endpoint to complete the login process. The secret sent to the user's phone is valid for 15 minutes.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createPhoneToken","weight":18,"cookies":false,"type":"","demo":"account\/create-phone-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-token-phone.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},phone:{param-phone}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"}},"required":["userId","phone"]}}}}}},"\/account\/verification":{"post":{"summary":"Create email verification","operationId":"accountCreateVerification","tags":["account"],"description":"Use this endpoint to send a verification message to your user email address to confirm they are the valid owners of that address. Both the **userId** and **secret** arguments will be passed as query parameters to the URL you have provided to be attached to the verification email. The provided URL should redirect the user back to your app and allow you to complete the verification process by verifying both the **userId** and **secret** parameters. Learn more about how to [complete the verification process](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateVerification). The verification link sent to the user's email address is valid for 7 days.\n\nPlease note that in order to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md), the only valid redirect URLs are the ones from domains you have set when adding your platforms in the console interface.\n","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createVerification","weight":38,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"url":{"type":"string","description":"URL to redirect the user back to your app from the verification email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"}},"required":["url"]}}}}},"put":{"summary":"Create email verification (confirmation)","operationId":"accountUpdateVerification","tags":["account"],"description":"Use this endpoint to complete the user email verification process. Use both the **userId** and **secret** parameters that were attached to your app URL to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"updateVerification","weight":39,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/account\/verification\/phone":{"post":{"summary":"Create phone verification","operationId":"accountCreatePhoneVerification","tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updatePhone) endpoint. Learn more about how to [complete the verification process](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createPhoneVerification","weight":40,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{userId}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"put":{"summary":"Create phone verification (confirmation)","operationId":"accountUpdatePhoneVerification","tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"updatePhoneVerification","weight":41,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/avatars\/browsers\/{code}":{"get":{"summary":"Get browser icon","operationId":"avatarsGetBrowser","tags":["avatars"],"description":"You can use this endpoint to show different browser icons to your users. The code argument receives the browser code as it appears in your user [GET \/account\/sessions](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#getSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getBrowser","weight":44,"cookies":false,"type":"location","demo":"avatars\/get-browser.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-browser.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Browser Code.","required":true,"schema":{"type":"string","x-example":"aa","enum":["aa","an","ch","ci","cm","cr","ff","sf","mf","ps","oi","om","op","on"],"x-enum-name":"Browser","x-enum-keys":["Avant Browser","Android WebView Beta","Google Chrome","Google Chrome (iOS)","Google Chrome (Mobile)","Chromium","Mozilla Firefox","Safari","Mobile Safari","Microsoft Edge","Microsoft Edge (iOS)","Opera Mini","Opera","Opera (Next)"]},"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"}]}},"\/avatars\/credit-cards\/{code}":{"get":{"summary":"Get credit card icon","operationId":"avatarsGetCreditCard","tags":["avatars"],"description":"The credit card endpoint will return you the icon of the credit card provider you need. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getCreditCard","weight":43,"cookies":false,"type":"location","demo":"avatars\/get-credit-card.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-credit-card.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Credit Card Code. Possible values: amex, argencard, cabal, censosud, diners, discover, elo, hipercard, jcb, mastercard, naranja, targeta-shopping, union-china-pay, visa, mir, maestro.","required":true,"schema":{"type":"string","x-example":"amex","enum":["amex","argencard","cabal","censosud","diners","discover","elo","hipercard","jcb","mastercard","naranja","targeta-shopping","union-china-pay","visa","mir","maestro"],"x-enum-name":"CreditCard","x-enum-keys":["American Express","Argencard","Cabal","Consosud","Diners Club","Discover","Elo","Hipercard","JCB","Mastercard","Naranja","Tarjeta Shopping","Union China Pay","Visa","MIR","Maestro"]},"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"}]}},"\/avatars\/favicon":{"get":{"summary":"Get favicon","operationId":"avatarsGetFavicon","tags":["avatars"],"description":"Use this endpoint to fetch the favorite icon (AKA favicon) of any remote website URL.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFavicon","weight":47,"cookies":false,"type":"location","demo":"avatars\/get-favicon.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-favicon.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"url","description":"Website URL which you want to fetch the favicon from.","required":true,"schema":{"type":"string","format":"url","x-example":"https:\/\/example.com"},"in":"query"}]}},"\/avatars\/flags\/{code}":{"get":{"summary":"Get country flag","operationId":"avatarsGetFlag","tags":["avatars"],"description":"You can use this endpoint to show different country flags icons to your users. The code argument receives the 2 letter country code. Use width, height and quality arguments to change the output settings. Country codes follow the [ISO 3166-1](https:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFlag","weight":45,"cookies":false,"type":"location","demo":"avatars\/get-flag.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-flag.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Country Code. ISO Alpha-2 country code format.","required":true,"schema":{"type":"string","x-example":"af","enum":["af","ao","al","ad","ae","ar","am","ag","au","at","az","bi","be","bj","bf","bd","bg","bh","bs","ba","by","bz","bo","br","bb","bn","bt","bw","cf","ca","ch","cl","cn","ci","cm","cd","cg","co","km","cv","cr","cu","cy","cz","de","dj","dm","dk","do","dz","ec","eg","er","es","ee","et","fi","fj","fr","fm","ga","gb","ge","gh","gn","gm","gw","gq","gr","gd","gt","gy","hn","hr","ht","hu","id","in","ie","ir","iq","is","il","it","jm","jo","jp","kz","ke","kg","kh","ki","kn","kr","kw","la","lb","lr","ly","lc","li","lk","ls","lt","lu","lv","ma","mc","md","mg","mv","mx","mh","mk","ml","mt","mm","me","mn","mz","mr","mu","mw","my","na","ne","ng","ni","nl","no","np","nr","nz","om","pk","pa","pe","ph","pw","pg","pl","kp","pt","py","qa","ro","ru","rw","sa","sd","sn","sg","sb","sl","sv","sm","so","rs","ss","st","sr","sk","si","se","sz","sc","sy","td","tg","th","tj","tm","tl","to","tt","tn","tr","tv","tz","ug","ua","uy","us","uz","va","vc","ve","vn","vu","ws","ye","za","zm","zw"],"x-enum-name":"Flag","x-enum-keys":["Afghanistan","Angola","Albania","Andorra","United Arab Emirates","Argentina","Armenia","Antigua and Barbuda","Australia","Austria","Azerbaijan","Burundi","Belgium","Benin","Burkina Faso","Bangladesh","Bulgaria","Bahrain","Bahamas","Bosnia and Herzegovina","Belarus","Belize","Bolivia","Brazil","Barbados","Brunei Darussalam","Bhutan","Botswana","Central African Republic","Canada","Switzerland","Chile","China","C\u00f4te d'Ivoire","Cameroon","Democratic Republic of the Congo","Republic of the Congo","Colombia","Comoros","Cape Verde","Costa Rica","Cuba","Cyprus","Czech Republic","Germany","Djibouti","Dominica","Denmark","Dominican Republic","Algeria","Ecuador","Egypt","Eritrea","Spain","Estonia","Ethiopia","Finland","Fiji","France","Micronesia (Federated States of)","Gabon","United Kingdom","Georgia","Ghana","Guinea","Gambia","Guinea-Bissau","Equatorial Guinea","Greece","Grenada","Guatemala","Guyana","Honduras","Croatia","Haiti","Hungary","Indonesia","India","Ireland","Iran (Islamic Republic of)","Iraq","Iceland","Israel","Italy","Jamaica","Jordan","Japan","Kazakhstan","Kenya","Kyrgyzstan","Cambodia","Kiribati","Saint Kitts and Nevis","South Korea","Kuwait","Lao People's Democratic Republic","Lebanon","Liberia","Libya","Saint Lucia","Liechtenstein","Sri Lanka","Lesotho","Lithuania","Luxembourg","Latvia","Morocco","Monaco","Moldova","Madagascar","Maldives","Mexico","Marshall Islands","North Macedonia","Mali","Malta","Myanmar","Montenegro","Mongolia","Mozambique","Mauritania","Mauritius","Malawi","Malaysia","Namibia","Niger","Nigeria","Nicaragua","Netherlands","Norway","Nepal","Nauru","New Zealand","Oman","Pakistan","Panama","Peru","Philippines","Palau","Papua New Guinea","Poland","North Korea","Portugal","Paraguay","Qatar","Romania","Russia","Rwanda","Saudi Arabia","Sudan","Senegal","Singapore","Solomon Islands","Sierra Leone","El Salvador","San Marino","Somalia","Serbia","South Sudan","Sao Tome and Principe","Suriname","Slovakia","Slovenia","Sweden","Eswatini","Seychelles","Syria","Chad","Togo","Thailand","Tajikistan","Turkmenistan","Timor-Leste","Tonga","Trinidad and Tobago","Tunisia","Turkey","Tuvalu","Tanzania","Uganda","Ukraine","Uruguay","United States","Uzbekistan","Vatican City","Saint Vincent and the Grenadines","Venezuela","Vietnam","Vanuatu","Samoa","Yemen","South Africa","Zambia","Zimbabwe"]},"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"}]}},"\/avatars\/image":{"get":{"summary":"Get image from URL","operationId":"avatarsGetImage","tags":["avatars"],"description":"Use this endpoint to fetch a remote image URL and crop it to any image size you want. This endpoint is very useful if you need to crop and display remote images in your app or in case you want to make sure a 3rd party image is properly served using a TLS protocol.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getImage","weight":46,"cookies":false,"type":"location","demo":"avatars\/get-image.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-image.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"url","description":"Image URL which you want to crop.","required":true,"schema":{"type":"string","format":"url","x-example":"https:\/\/example.com"},"in":"query"},{"name":"width","description":"Resize preview image width, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get user initials","operationId":"avatarsGetInitials","tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getInitials","weight":49,"cookies":false,"type":"location","demo":"avatars\/get-initials.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-initials.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"name","description":"Full Name. When empty, current user name or email will be used. Max length: 128 chars.","required":false,"schema":{"type":"string","x-example":"[NAME]","default":""},"in":"query"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":500},"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":500},"in":"query"},{"name":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"schema":{"type":"string","default":""},"in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR code","operationId":"avatarsGetQR","tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getQR","weight":48,"cookies":false,"type":"location","demo":"avatars\/get-q-r.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-qr.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"text","description":"Plain text to be converted to QR code image.","required":true,"schema":{"type":"string","x-example":"[TEXT]"},"in":"query"},{"name":"size","description":"QR code size. Pass an integer between 1 to 1000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":1,"default":400},"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":1},"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"schema":{"type":"boolean","x-example":false,"default":false},"in":"query"}]}},"\/console\/assistant":{"post":{"summary":"Ask Query","operationId":"assistantChat","tags":["assistant"],"description":"","responses":{"200":{"description":"File"}},"x-appwrite":{"method":"chat","weight":291,"cookies":false,"type":"","demo":"assistant\/chat.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/assistant\/chat.md","rate-limit":15,"rate-time":3600,"rate-key":"userId:{userId}","scope":"assistant.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"prompt":{"type":"string","description":"Prompt. A string containing questions asked to the AI assistant.","x-example":"[PROMPT]"}},"required":["prompt"]}}}}}},"\/console\/variables":{"get":{"summary":"Get variables","operationId":"consoleVariables","tags":["console"],"description":"Get all Environment Variables that are relevant for the console.","responses":{"200":{"description":"Console Variables","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/consoleVariables"}}}}},"x-appwrite":{"method":"variables","weight":290,"cookies":false,"type":"","demo":"console\/variables.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/console\/variables.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/databases":{"get":{"summary":"List databases","operationId":"databasesList","tags":["databases"],"description":"Get a list of all databases from the current Appwrite project. You can use the search parameter to filter your results.","responses":{"200":{"description":"Databases List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/databaseList"}}}}},"x-appwrite":{"method":"list","weight":54,"cookies":false,"type":"","demo":"databases\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create database","operationId":"databasesCreate","tags":["databases"],"description":"Create a new Database.\n","responses":{"201":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"create","weight":53,"cookies":false,"type":"","demo":"databases\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"databaseId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[DATABASE_ID]","x-global":true},"name":{"type":"string","description":"Database name. Max length: 128 chars.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Is the database enabled? When set to 'disabled', users cannot access the database but Server SDKs with an API key can still read and write to the database. No data is lost when this is toggled.","x-example":false}},"required":["databaseId","name"]}}}}}},"\/databases\/usage":{"get":{"summary":"Get usage stats for the database","operationId":"databasesGetUsage","tags":["databases"],"description":"","responses":{"200":{"description":"UsageDatabases","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageDatabases"}}}}},"x-appwrite":{"method":"getUsage","weight":98,"cookies":false,"type":"","demo":"databases\/get-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"`Date range.","required":false,"schema":{"type":"string","x-example":"24h","enum":["24h","7d","30d","90d"],"x-enum-name":null,"x-enum-keys":["Twenty Four Hours","Seven Days","Thirty Days","Ninety Days"],"default":"30d"},"in":"query"}]}},"\/databases\/{databaseId}":{"get":{"summary":"Get database","operationId":"databasesGet","tags":["databases"],"description":"Get a database by its unique ID. This endpoint response returns a JSON object with the database metadata.","responses":{"200":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"get","weight":55,"cookies":false,"type":"","demo":"databases\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}]},"put":{"summary":"Update database","operationId":"databasesUpdate","tags":["databases"],"description":"Update a database by its unique ID.","responses":{"200":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"update","weight":57,"cookies":false,"type":"","demo":"databases\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Database name. Max length: 128 chars.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Is database enabled? When set to 'disabled', users cannot access the database but Server SDKs with an API key can still read and write to the database. No data is lost when this is toggled.","x-example":false}},"required":["name"]}}}}},"delete":{"summary":"Delete database","operationId":"databasesDelete","tags":["databases"],"description":"Delete a database by its unique ID. Only API keys with with databases.write scope can delete a database.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":58,"cookies":false,"type":"","demo":"databases\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections":{"get":{"summary":"List collections","operationId":"databasesListCollections","tags":["databases"],"description":"Get a list of all collections that belong to the provided databaseId. You can use the search parameter to filter your results.","responses":{"200":{"description":"Collections List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collectionList"}}}}},"x-appwrite":{"method":"listCollections","weight":60,"cookies":false,"type":"","demo":"databases\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, documentSecurity","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create collection","operationId":"databasesCreateCollection","tags":["databases"],"description":"Create a new Collection. Before using this route, you should create a new database resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"createCollection","weight":59,"cookies":false,"type":"","demo":"databases\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permissions strings. By default, no user is granted with any permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":false},"enabled":{"type":"boolean","description":"Is collection enabled? When set to 'disabled', users cannot access the collection but Server SDKs with and API key can still read and write to the collection. No data is lost when this is toggled.","x-example":false}},"required":["collectionId","name"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}":{"get":{"summary":"Get collection","operationId":"databasesGetCollection","tags":["databases"],"description":"Get a collection by its unique ID. This endpoint response returns a JSON object with the collection metadata.","responses":{"200":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"getCollection","weight":61,"cookies":false,"type":"","demo":"databases\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]},"put":{"summary":"Update collection","operationId":"databasesUpdateCollection","tags":["databases"],"description":"Update a collection by its unique ID.","responses":{"200":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"updateCollection","weight":63,"cookies":false,"type":"","demo":"databases\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":false},"enabled":{"type":"boolean","description":"Is collection enabled? When set to 'disabled', users cannot access the collection but Server SDKs with and API key can still read and write to the collection. No data is lost when this is toggled.","x-example":false}},"required":["name"]}}}}},"delete":{"summary":"Delete collection","operationId":"databasesDeleteCollection","tags":["databases"],"description":"Delete a collection by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteCollection","weight":64,"cookies":false,"type":"","demo":"databases\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes":{"get":{"summary":"List attributes","operationId":"databasesListAttributes","tags":["databases"],"description":"","responses":{"200":{"description":"Attributes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeList"}}}}},"x-appwrite":{"method":"listAttributes","weight":75,"cookies":false,"type":"","demo":"databases\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: key, type, size, required, array, status, error","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create boolean attribute","operationId":"databasesCreateBooleanAttribute","tags":["databases"],"description":"Create a boolean attribute.\n","responses":{"202":{"description":"AttributeBoolean","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeBoolean"}}}}},"x-appwrite":{"method":"createBooleanAttribute","weight":72,"cookies":false,"type":"","demo":"databases\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":false},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean\/{key}":{"patch":{"summary":"Update boolean attribute","operationId":"databasesUpdateBooleanAttribute","tags":["databases"],"description":"","responses":{"200":{"description":"AttributeBoolean","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeBoolean"}}}}},"x-appwrite":{"method":"updateBooleanAttribute","weight":84,"cookies":false,"type":"","demo":"databases\/update-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":false,"x-nullable":true}},"required":["required","default"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/datetime":{"post":{"summary":"Create datetime attribute","operationId":"databasesCreateDatetimeAttribute","tags":["databases"],"description":"","responses":{"202":{"description":"AttributeDatetime","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeDatetime"}}}}},"x-appwrite":{"method":"createDatetimeAttribute","weight":73,"cookies":false,"type":"","demo":"databases\/create-datetime-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-datetime-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for the attribute in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/datetime\/{key}":{"patch":{"summary":"Update dateTime attribute","operationId":"databasesUpdateDatetimeAttribute","tags":["databases"],"description":"","responses":{"200":{"description":"AttributeDatetime","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeDatetime"}}}}},"x-appwrite":{"method":"updateDatetimeAttribute","weight":85,"cookies":false,"type":"","demo":"databases\/update-datetime-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-datetime-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null,"x-nullable":true}},"required":["required","default"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create email attribute","operationId":"databasesCreateEmailAttribute","tags":["databases"],"description":"Create an email attribute.\n","responses":{"202":{"description":"AttributeEmail","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeEmail"}}}}},"x-appwrite":{"method":"createEmailAttribute","weight":66,"cookies":false,"type":"","demo":"databases\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"email@example.com"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/email\/{key}":{"patch":{"summary":"Update email attribute","operationId":"databasesUpdateEmailAttribute","tags":["databases"],"description":"Update an email attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeEmail","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeEmail"}}}}},"x-appwrite":{"method":"updateEmailAttribute","weight":78,"cookies":false,"type":"","demo":"databases\/update-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"email@example.com","x-nullable":true}},"required":["required","default"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create enum attribute","operationId":"databasesCreateEnumAttribute","tags":["databases"],"description":"","responses":{"202":{"description":"AttributeEnum","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeEnum"}}}}},"x-appwrite":{"method":"createEnumAttribute","weight":67,"cookies":false,"type":"","demo":"databases\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"elements":{"type":"array","description":"Array of elements in enumerated type. Uses length of longest element to determine size. Maximum of 100 elements are allowed, each 255 characters long.","x-example":null,"items":{"type":"string"}},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","elements","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/enum\/{key}":{"patch":{"summary":"Update enum attribute","operationId":"databasesUpdateEnumAttribute","tags":["databases"],"description":"Update an enum attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeEnum","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeEnum"}}}}},"x-appwrite":{"method":"updateEnumAttribute","weight":79,"cookies":false,"type":"","demo":"databases\/update-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-enum-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"elements":{"type":"array","description":"Array of elements in enumerated type. Uses length of longest element to determine size. Maximum of 100 elements are allowed, each 255 characters long.","x-example":null,"items":{"type":"string"}},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"[DEFAULT]","x-nullable":true}},"required":["elements","required","default"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create float attribute","operationId":"databasesCreateFloatAttribute","tags":["databases"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeFloat","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeFloat"}}}}},"x-appwrite":{"method":"createFloatAttribute","weight":71,"cookies":false,"type":"","demo":"databases\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"min":{"type":"number","description":"Minimum value to enforce on new documents","x-example":null},"max":{"type":"number","description":"Maximum value to enforce on new documents","x-example":null},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/float\/{key}":{"patch":{"summary":"Update float attribute","operationId":"databasesUpdateFloatAttribute","tags":["databases"],"description":"Update a float attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeFloat","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeFloat"}}}}},"x-appwrite":{"method":"updateFloatAttribute","weight":83,"cookies":false,"type":"","demo":"databases\/update-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"min":{"type":"number","description":"Minimum value to enforce on new documents","x-example":null},"max":{"type":"number","description":"Maximum value to enforce on new documents","x-example":null},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null,"x-nullable":true}},"required":["required","min","max","default"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create integer attribute","operationId":"databasesCreateIntegerAttribute","tags":["databases"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeInteger","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeInteger"}}}}},"x-appwrite":{"method":"createIntegerAttribute","weight":70,"cookies":false,"type":"","demo":"databases\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"min":{"type":"integer","description":"Minimum value to enforce on new documents","x-example":null},"max":{"type":"integer","description":"Maximum value to enforce on new documents","x-example":null},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/integer\/{key}":{"patch":{"summary":"Update integer attribute","operationId":"databasesUpdateIntegerAttribute","tags":["databases"],"description":"Update an integer attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeInteger","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeInteger"}}}}},"x-appwrite":{"method":"updateIntegerAttribute","weight":82,"cookies":false,"type":"","demo":"databases\/update-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"min":{"type":"integer","description":"Minimum value to enforce on new documents","x-example":null},"max":{"type":"integer","description":"Maximum value to enforce on new documents","x-example":null},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null,"x-nullable":true}},"required":["required","min","max","default"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP address attribute","operationId":"databasesCreateIpAttribute","tags":["databases"],"description":"Create IP address attribute.\n","responses":{"202":{"description":"AttributeIP","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeIp"}}}}},"x-appwrite":{"method":"createIpAttribute","weight":68,"cookies":false,"type":"","demo":"databases\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/ip\/{key}":{"patch":{"summary":"Update IP address attribute","operationId":"databasesUpdateIpAttribute","tags":["databases"],"description":"Update an ip attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeIP","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeIp"}}}}},"x-appwrite":{"method":"updateIpAttribute","weight":80,"cookies":false,"type":"","demo":"databases\/update-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null,"x-nullable":true}},"required":["required","default"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/relationship":{"post":{"summary":"Create relationship attribute","operationId":"databasesCreateRelationshipAttribute","tags":["databases"],"description":"Create relationship attribute. [Learn more about relationship attributes](https:\/\/appwrite.io\/docs\/databases-relationships#relationship-attributes).\n","responses":{"202":{"description":"AttributeRelationship","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeRelationship"}}}}},"x-appwrite":{"method":"createRelationshipAttribute","weight":74,"cookies":false,"type":"","demo":"databases\/create-relationship-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-relationship-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"relatedCollectionId":{"type":"string","description":"Related Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","x-example":"[RELATED_COLLECTION_ID]"},"type":{"type":"string","description":"Relation type","x-example":"oneToOne","enum":["oneToOne","manyToOne","manyToMany","oneToMany"],"x-enum-name":"RelationshipType","x-enum-keys":[]},"twoWay":{"type":"boolean","description":"Is Two Way?","x-example":false},"key":{"type":"string","description":"Attribute Key.","x-example":null},"twoWayKey":{"type":"string","description":"Two Way Attribute Key.","x-example":null},"onDelete":{"type":"string","description":"Constraints option","x-example":"cascade","enum":["cascade","restrict","setNull"],"x-enum-name":"RelationMutate","x-enum-keys":[]}},"required":["relatedCollectionId","type"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create string attribute","operationId":"databasesCreateStringAttribute","tags":["databases"],"description":"Create a string attribute.\n","responses":{"202":{"description":"AttributeString","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeString"}}}}},"x-appwrite":{"method":"createStringAttribute","weight":65,"cookies":false,"type":"","demo":"databases\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"size":{"type":"integer","description":"Attribute size for text attributes, in number of characters.","x-example":1},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false},"encrypt":{"type":"boolean","description":"Toggle encryption for the attribute. Encryption enhances security by not storing any plain text values in the database. However, encrypted attributes cannot be queried.","x-example":false}},"required":["key","size","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/string\/{key}":{"patch":{"summary":"Update string attribute","operationId":"databasesUpdateStringAttribute","tags":["databases"],"description":"Update a string attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeString","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeString"}}}}},"x-appwrite":{"method":"updateStringAttribute","weight":77,"cookies":false,"type":"","demo":"databases\/update-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"[DEFAULT]","x-nullable":true}},"required":["required","default"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL attribute","operationId":"databasesCreateUrlAttribute","tags":["databases"],"description":"Create a URL attribute.\n","responses":{"202":{"description":"AttributeURL","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeUrl"}}}}},"x-appwrite":{"method":"createUrlAttribute","weight":69,"cookies":false,"type":"","demo":"databases\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"https:\/\/example.com"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url\/{key}":{"patch":{"summary":"Update URL attribute","operationId":"databasesUpdateUrlAttribute","tags":["databases"],"description":"Update an url attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeURL","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeUrl"}}}}},"x-appwrite":{"method":"updateUrlAttribute","weight":81,"cookies":false,"type":"","demo":"databases\/update-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"https:\/\/example.com","x-nullable":true}},"required":["required","default"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get attribute","operationId":"databasesGetAttribute","tags":["databases"],"description":"","responses":{"200":{"description":"AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, or AttributeDatetime, or AttributeRelationship, or AttributeString","content":{"application\/json":{"schema":{"oneOf":[{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeRelationship"},{"$ref":"#\/components\/schemas\/attributeString"}]}}}}},"x-appwrite":{"method":"getAttribute","weight":76,"cookies":false,"type":"","demo":"databases\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}]},"delete":{"summary":"Delete attribute","operationId":"databasesDeleteAttribute","tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":87,"cookies":false,"type":"","demo":"databases\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/{key}\/relationship":{"patch":{"summary":"Update relationship attribute","operationId":"databasesUpdateRelationshipAttribute","tags":["databases"],"description":"Update relationship attribute. [Learn more about relationship attributes](https:\/\/appwrite.io\/docs\/databases-relationships#relationship-attributes).\n","responses":{"200":{"description":"AttributeRelationship","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeRelationship"}}}}},"x-appwrite":{"method":"updateRelationshipAttribute","weight":86,"cookies":false,"type":"","demo":"databases\/update-relationship-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-relationship-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"onDelete":{"type":"string","description":"Constraints option","x-example":"cascade","enum":["cascade","restrict","setNull"],"x-enum-name":"RelationMutate","x-enum-keys":[]}}}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List documents","operationId":"databasesListDocuments","tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/documentList"}}}}},"x-appwrite":{"method":"listDocuments","weight":93,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"post":{"summary":"Create document","operationId":"databasesCreateDocument","tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"createDocument","weight":92,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, only the current user is granted all permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get document","operationId":"databasesGetDocument","tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"getDocument","weight":94,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only method allowed is select.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"patch":{"summary":"Update document","operationId":"databasesUpdateDocument","tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"updateDocument","weight":96,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete document","operationId":"databasesDeleteDocument","tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":97,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}\/logs":{"get":{"summary":"List document logs","operationId":"databasesListDocumentLogs","tags":["databases"],"description":"Get the document activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listDocumentLogs","weight":95,"cookies":false,"type":"","demo":"databases\/list-document-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes":{"get":{"summary":"List indexes","operationId":"databasesListIndexes","tags":["databases"],"description":"","responses":{"200":{"description":"Indexes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/indexList"}}}}},"x-appwrite":{"method":"listIndexes","weight":89,"cookies":false,"type":"","demo":"databases\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: key, type, status, attributes, error","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"post":{"summary":"Create index","operationId":"databasesCreateIndex","tags":["databases"],"description":"","responses":{"202":{"description":"Index","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/index"}}}}},"x-appwrite":{"method":"createIndex","weight":88,"cookies":false,"type":"","demo":"databases\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Index Key.","x-example":null},"type":{"type":"string","description":"Index type.","x-example":"key","enum":["key","fulltext","unique","spatial","array"],"x-enum-name":"IndexType","x-enum-keys":[]},"attributes":{"type":"array","description":"Array of attributes to index. Maximum of 100 attributes are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders. Maximum of 100 orders are allowed.","x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get index","operationId":"databasesGetIndex","tags":["databases"],"description":"","responses":{"200":{"description":"Index","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/index"}}}}},"x-appwrite":{"method":"getIndex","weight":90,"cookies":false,"type":"","demo":"databases\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Index Key.","required":true,"schema":{"type":"string"},"in":"path"}]},"delete":{"summary":"Delete index","operationId":"databasesDeleteIndex","tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":91,"cookies":false,"type":"","demo":"databases\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Index Key.","required":true,"schema":{"type":"string"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/logs":{"get":{"summary":"List collection logs","operationId":"databasesListCollectionLogs","tags":["databases"],"description":"Get the collection activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listCollectionLogs","weight":62,"cookies":false,"type":"","demo":"databases\/list-collection-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/usage":{"get":{"summary":"Get usage stats for a collection","operationId":"databasesGetCollectionUsage","tags":["databases"],"description":"","responses":{"200":{"description":"UsageCollection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageCollection"}}}}},"x-appwrite":{"method":"getCollectionUsage","weight":100,"cookies":false,"type":"","demo":"databases\/get-collection-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"range","description":"Date range.","required":false,"schema":{"type":"string","x-example":"24h","enum":["24h","7d","30d","90d"],"x-enum-name":null,"x-enum-keys":["Twenty Four Hours","Seven Days","Thirty Days","Ninety Days"],"default":"30d"},"in":"query"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/logs":{"get":{"summary":"List database logs","operationId":"databasesListLogs","tags":["databases"],"description":"Get the database activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listLogs","weight":56,"cookies":false,"type":"","demo":"databases\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/databases\/{databaseId}\/usage":{"get":{"summary":"Get usage stats for the database","operationId":"databasesGetDatabaseUsage","tags":["databases"],"description":"","responses":{"200":{"description":"UsageDatabase","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageDatabase"}}}}},"x-appwrite":{"method":"getDatabaseUsage","weight":99,"cookies":false,"type":"","demo":"databases\/get-database-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"range","description":"`Date range.","required":false,"schema":{"type":"string","x-example":"24h","enum":["24h","7d","30d","90d"],"x-enum-name":null,"x-enum-keys":["Twenty Four Hours","Seven Days","Thirty Days","Ninety Days"],"default":"30d"},"in":"query"}]}},"\/functions":{"get":{"summary":"List functions","operationId":"functionsList","tags":["functions"],"description":"Get a list of all the project's functions. You can use the query params to filter your results.","responses":{"200":{"description":"Functions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/functionList"}}}}},"x-appwrite":{"method":"list","weight":253,"cookies":false,"type":"","demo":"functions\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-functions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, runtime, deployment, schedule, scheduleNext, schedulePrevious, timeout, entrypoint, commands, installationId","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create function","operationId":"functionsCreate","tags":["functions"],"description":"Create a new function. You can pass a list of [permissions](https:\/\/appwrite.io\/docs\/permissions) to allow different project users or team with access to execute the function using the client API.","responses":{"201":{"description":"Function","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/function"}}}}},"x-appwrite":{"method":"create","weight":252,"cookies":false,"type":"","demo":"functions\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"functionId":{"type":"string","description":"Function ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[FUNCTION_ID]"},"name":{"type":"string","description":"Function name. Max length: 128 chars.","x-example":"[NAME]"},"runtime":{"type":"string","description":"Execution runtime.","x-example":"node-18.0","enum":["node-18.0","php-8.0","ruby-3.1","python-3.9"],"x-enum-name":null,"x-enum-keys":[]},"execute":{"type":"array","description":"An array of role strings with execution permissions. By default no user is granted with any execute permissions. [learn more about roles](https:\/\/appwrite.io\/docs\/permissions#permission-roles). Maximum of 100 roles are allowed, each 64 characters long.","x-example":"[\"any\"]","items":{"type":"string"}},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","x-example":null},"timeout":{"type":"integer","description":"Function maximum execution time in seconds.","x-example":1},"enabled":{"type":"boolean","description":"Is function enabled? When set to 'disabled', users cannot access the function but Server SDKs with and API key can still access the function. No data is lost when this is toggled.","x-example":false},"logging":{"type":"boolean","description":"Whether executions will be logged. When set to false, executions will not be logged, but will reduce resource used by your Appwrite project.","x-example":false},"entrypoint":{"type":"string","description":"Entrypoint File. This path is relative to the \"providerRootDirectory\".","x-example":"[ENTRYPOINT]"},"commands":{"type":"string","description":"Build Commands.","x-example":"[COMMANDS]"},"installationId":{"type":"string","description":"Appwrite Installation ID for VCS (Version Control System) deployment.","x-example":"[INSTALLATION_ID]"},"providerRepositoryId":{"type":"string","description":"Repository ID of the repo linked to the function.","x-example":"[PROVIDER_REPOSITORY_ID]"},"providerBranch":{"type":"string","description":"Production branch for the repo linked to the function.","x-example":"[PROVIDER_BRANCH]"},"providerSilentMode":{"type":"boolean","description":"Is the VCS (Version Control System) connection in silent mode for the repo linked to the function? In silent mode, comments will not be made on commits and pull requests.","x-example":false},"providerRootDirectory":{"type":"string","description":"Path to function code in the linked repo.","x-example":"[PROVIDER_ROOT_DIRECTORY]"},"templateRepository":{"type":"string","description":"Repository name of the template.","x-example":"[TEMPLATE_REPOSITORY]"},"templateOwner":{"type":"string","description":"The name of the owner of the template.","x-example":"[TEMPLATE_OWNER]"},"templateRootDirectory":{"type":"string","description":"Path to function code in the template repo.","x-example":"[TEMPLATE_ROOT_DIRECTORY]"},"templateBranch":{"type":"string","description":"Production branch for the repo linked to the function template.","x-example":"[TEMPLATE_BRANCH]"}},"required":["functionId","name","runtime"]}}}}}},"\/functions\/runtimes":{"get":{"summary":"List runtimes","operationId":"functionsListRuntimes","tags":["functions"],"description":"Get a list of all runtimes that are currently active on your instance.","responses":{"200":{"description":"Runtimes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/runtimeList"}}}}},"x-appwrite":{"method":"listRuntimes","weight":254,"cookies":false,"type":"","demo":"functions\/list-runtimes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-runtimes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/functions\/usage":{"get":{"summary":"Get functions usage","operationId":"functionsGetUsage","tags":["functions"],"description":"","responses":{"200":{"description":"UsageFunctions","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageFunctions"}}}}},"x-appwrite":{"method":"getUsage","weight":257,"cookies":false,"type":"","demo":"functions\/get-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"schema":{"type":"string","x-example":"24h","enum":["24h","7d","30d","90d"],"x-enum-name":null,"x-enum-keys":[],"default":"30d"},"in":"query"}]}},"\/functions\/{functionId}":{"get":{"summary":"Get function","operationId":"functionsGet","tags":["functions"],"description":"Get a function by its unique ID.","responses":{"200":{"description":"Function","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/function"}}}}},"x-appwrite":{"method":"get","weight":255,"cookies":false,"type":"","demo":"functions\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}]},"put":{"summary":"Update function","operationId":"functionsUpdate","tags":["functions"],"description":"Update function by its unique ID.","responses":{"200":{"description":"Function","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/function"}}}}},"x-appwrite":{"method":"update","weight":258,"cookies":false,"type":"","demo":"functions\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Function name. Max length: 128 chars.","x-example":"[NAME]"},"runtime":{"type":"string","description":"Execution runtime.","x-example":"node-18.0","enum":["node-18.0","php-8.0","ruby-3.1","python-3.9"],"x-enum-name":null,"x-enum-keys":[]},"execute":{"type":"array","description":"An array of role strings with execution permissions. By default no user is granted with any execute permissions. [learn more about roles](https:\/\/appwrite.io\/docs\/permissions#permission-roles). Maximum of 100 roles are allowed, each 64 characters long.","x-example":"[\"any\"]","items":{"type":"string"}},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","x-example":null},"timeout":{"type":"integer","description":"Maximum execution time in seconds.","x-example":1},"enabled":{"type":"boolean","description":"Is function enabled? When set to 'disabled', users cannot access the function but Server SDKs with and API key can still access the function. No data is lost when this is toggled.","x-example":false},"logging":{"type":"boolean","description":"Whether executions will be logged. When set to false, executions will not be logged, but will reduce resource used by your Appwrite project.","x-example":false},"entrypoint":{"type":"string","description":"Entrypoint File. This path is relative to the \"providerRootDirectory\".","x-example":"[ENTRYPOINT]"},"commands":{"type":"string","description":"Build Commands.","x-example":"[COMMANDS]"},"installationId":{"type":"string","description":"Appwrite Installation ID for VCS (Version Controle System) deployment.","x-example":"[INSTALLATION_ID]"},"providerRepositoryId":{"type":"string","description":"Repository ID of the repo linked to the function","x-example":"[PROVIDER_REPOSITORY_ID]"},"providerBranch":{"type":"string","description":"Production branch for the repo linked to the function","x-example":"[PROVIDER_BRANCH]"},"providerSilentMode":{"type":"boolean","description":"Is the VCS (Version Control System) connection in silent mode for the repo linked to the function? In silent mode, comments will not be made on commits and pull requests.","x-example":false},"providerRootDirectory":{"type":"string","description":"Path to function code in the linked repo.","x-example":"[PROVIDER_ROOT_DIRECTORY]"}},"required":["name"]}}}}},"delete":{"summary":"Delete function","operationId":"functionsDelete","tags":["functions"],"description":"Delete a function by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":261,"cookies":false,"type":"","demo":"functions\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/deployments":{"get":{"summary":"List deployments","operationId":"functionsListDeployments","tags":["functions"],"description":"Get a list of all the project's code deployments. You can use the query params to filter your results.","responses":{"200":{"description":"Deployments List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deploymentList"}}}}},"x-appwrite":{"method":"listDeployments","weight":263,"cookies":false,"type":"","demo":"functions\/list-deployments.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-deployments.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: size, buildId, activate, entrypoint, commands","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create deployment","operationId":"functionsCreateDeployment","tags":["functions"],"description":"Create a new function code deployment. Use this endpoint to upload a new version of your code function. To execute your newly uploaded code, you'll need to update the function's deployment to use your new deployment UID.\n\nThis endpoint accepts a tar.gz file compressed with your code. Make sure to include any dependencies your code has within the compressed file. You can learn more about code packaging in the [Appwrite Cloud Functions tutorial](https:\/\/appwrite.io\/docs\/functions).\n\nUse the \"command\" param to set the entrypoint used to execute your code.","responses":{"202":{"description":"Deployment","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deployment"}}}}},"x-appwrite":{"method":"createDeployment","weight":262,"cookies":false,"type":"","demo":"functions\/create-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":true,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}],"requestBody":{"content":{"multipart\/form-data":{"schema":{"type":"object","properties":{"entrypoint":{"type":"string","description":"Entrypoint File.","x-example":"[ENTRYPOINT]"},"commands":{"type":"string","description":"Build Commands.","x-example":"[COMMANDS]"},"code":{"type":"string","description":"Gzip file with your code package. When used with the Appwrite CLI, pass the path to your code directory, and the CLI will automatically package your code. Use a path that is within the current directory.","x-example":null},"activate":{"type":"boolean","description":"Automatically activate the deployment when it is finished building.","x-example":false}},"required":["code","activate"]}}}}}},"\/functions\/{functionId}\/deployments\/{deploymentId}":{"get":{"summary":"Get deployment","operationId":"functionsGetDeployment","tags":["functions"],"description":"Get a code deployment by its unique ID.","responses":{"200":{"description":"Deployment","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deployment"}}}}},"x-appwrite":{"method":"getDeployment","weight":264,"cookies":false,"type":"","demo":"functions\/get-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"schema":{"type":"string","x-example":"[DEPLOYMENT_ID]"},"in":"path"}]},"patch":{"summary":"Update function deployment","operationId":"functionsUpdateDeployment","tags":["functions"],"description":"Update the function code deployment ID using the unique function ID. Use this endpoint to switch the code deployment that should be executed by the execution endpoint.","responses":{"200":{"description":"Function","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/function"}}}}},"x-appwrite":{"method":"updateDeployment","weight":260,"cookies":false,"type":"","demo":"functions\/update-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-function-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"schema":{"type":"string","x-example":"[DEPLOYMENT_ID]"},"in":"path"}]},"delete":{"summary":"Delete deployment","operationId":"functionsDeleteDeployment","tags":["functions"],"description":"Delete a code deployment by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDeployment","weight":265,"cookies":false,"type":"","demo":"functions\/delete-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"schema":{"type":"string","x-example":"[DEPLOYMENT_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/deployments\/{deploymentId}\/builds\/{buildId}":{"post":{"summary":"Create build","operationId":"functionsCreateBuild","tags":["functions"],"description":"Create a new build for an Appwrite Function deployment. This endpoint can be used to retry a failed build.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"createBuild","weight":266,"cookies":false,"type":"","demo":"functions\/create-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"schema":{"type":"string","x-example":"[DEPLOYMENT_ID]"},"in":"path"},{"name":"buildId","description":"Build unique ID.","required":true,"schema":{"type":"string","x-example":"[BUILD_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/deployments\/{deploymentId}\/download":{"get":{"summary":"Download Deployment","operationId":"functionsDownloadDeployment","tags":["functions"],"description":"Get a Deployment's contents by its unique ID. This endpoint supports range requests for partial or streaming file download.","responses":{"200":{"description":"File"}},"x-appwrite":{"method":"downloadDeployment","weight":259,"cookies":false,"type":"location","demo":"functions\/download-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/download-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"schema":{"type":"string","x-example":"[DEPLOYMENT_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List executions","operationId":"functionsListExecutions","tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/executionList"}}}}},"x-appwrite":{"method":"listExecutions","weight":268,"cookies":false,"type":"","demo":"functions\/list-executions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-executions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, responseStatusCode, duration","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create execution","operationId":"functionsCreateExecution","tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/execution"}}}}},"x-appwrite":{"method":"createExecution","weight":267,"cookies":false,"type":"","demo":"functions\/create-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-execution.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"body":{"type":"string","description":"HTTP body of execution. Default value is empty string.","x-example":"[BODY]"},"async":{"type":"boolean","description":"Execute code in the background. Default value is false.","x-example":false},"path":{"type":"string","description":"HTTP path of execution. Path can include query params. Default value is \/","x-example":"[PATH]"},"method":{"type":"string","description":"HTTP method of execution. Default value is GET.","x-example":"GET","enum":["GET","POST","PUT","PATCH","DELETE","OPTIONS"],"x-enum-name":null,"x-enum-keys":[]},"headers":{"type":"object","description":"HTTP headers of execution. Defaults to empty.","x-example":"{}"}}}}}}}},"\/functions\/{functionId}\/executions\/{executionId}":{"get":{"summary":"Get execution","operationId":"functionsGetExecution","tags":["functions"],"description":"Get a function execution log by its unique ID.","responses":{"200":{"description":"Execution","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/execution"}}}}},"x-appwrite":{"method":"getExecution","weight":269,"cookies":false,"type":"","demo":"functions\/get-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-execution.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"executionId","description":"Execution ID.","required":true,"schema":{"type":"string","x-example":"[EXECUTION_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/usage":{"get":{"summary":"Get function usage","operationId":"functionsGetFunctionUsage","tags":["functions"],"description":"","responses":{"200":{"description":"UsageFunctions","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageFunctions"}}}}},"x-appwrite":{"method":"getFunctionUsage","weight":256,"cookies":false,"type":"","demo":"functions\/get-function-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"range","description":"Date range.","required":false,"schema":{"type":"string","x-example":"24h","enum":["24h","7d","30d","90d"],"x-enum-name":null,"x-enum-keys":[],"default":"30d"},"in":"query"}]}},"\/functions\/{functionId}\/variables":{"get":{"summary":"List variables","operationId":"functionsListVariables","tags":["functions"],"description":"Get a list of all variables of a specific function.","responses":{"200":{"description":"Variables List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variableList"}}}}},"x-appwrite":{"method":"listVariables","weight":271,"cookies":false,"type":"","demo":"functions\/list-variables.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-variables.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}]},"post":{"summary":"Create variable","operationId":"functionsCreateVariable","tags":["functions"],"description":"Create a new function environment variable. These variables can be accessed in the function at runtime as environment variables.","responses":{"201":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"createVariable","weight":270,"cookies":false,"type":"","demo":"functions\/create-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","x-example":"[VALUE]"}},"required":["key","value"]}}}}}},"\/functions\/{functionId}\/variables\/{variableId}":{"get":{"summary":"Get variable","operationId":"functionsGetVariable","tags":["functions"],"description":"Get a variable by its unique ID.","responses":{"200":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"getVariable","weight":272,"cookies":false,"type":"","demo":"functions\/get-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}]},"put":{"summary":"Update variable","operationId":"functionsUpdateVariable","tags":["functions"],"description":"Update variable by its unique ID.","responses":{"200":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"updateVariable","weight":273,"cookies":false,"type":"","demo":"functions\/update-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","x-example":"[VALUE]"}},"required":["key"]}}}}},"delete":{"summary":"Delete variable","operationId":"functionsDeleteVariable","tags":["functions"],"description":"Delete a variable by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteVariable","weight":274,"cookies":false,"type":"","demo":"functions\/delete-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}]}},"\/graphql":{"post":{"summary":"GraphQL endpoint","operationId":"graphqlQuery","tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/any"}}}}},"x-appwrite":{"method":"query","weight":289,"cookies":false,"type":"graphql","demo":"graphql\/query.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/graphql\/mutation":{"post":{"summary":"GraphQL endpoint","operationId":"graphqlMutation","tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/any"}}}}},"x-appwrite":{"method":"mutation","weight":288,"cookies":false,"type":"graphql","demo":"graphql\/mutation.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/health":{"get":{"summary":"Get HTTP","operationId":"healthGet","tags":["health"],"description":"Check the Appwrite HTTP server is up and responsive.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"get","weight":109,"cookies":false,"type":"","demo":"health\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/anti-virus":{"get":{"summary":"Get antivirus","operationId":"healthGetAntivirus","tags":["health"],"description":"Check the Appwrite Antivirus server is up and connection is successful.","responses":{"200":{"description":"Health Antivirus","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthAntivirus"}}}}},"x-appwrite":{"method":"getAntivirus","weight":127,"cookies":false,"type":"","demo":"health\/get-antivirus.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-storage-anti-virus.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/cache":{"get":{"summary":"Get cache","operationId":"healthGetCache","tags":["health"],"description":"Check the Appwrite in-memory cache servers are up and connection is successful.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"getCache","weight":112,"cookies":false,"type":"","demo":"health\/get-cache.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-cache.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/db":{"get":{"summary":"Get DB","operationId":"healthGetDB","tags":["health"],"description":"Check the Appwrite database servers are up and connection is successful.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"getDB","weight":111,"cookies":false,"type":"","demo":"health\/get-d-b.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-db.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/pubsub":{"get":{"summary":"Get pubsub","operationId":"healthGetPubSub","tags":["health"],"description":"Check the Appwrite pub-sub servers are up and connection is successful.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"getPubSub","weight":114,"cookies":false,"type":"","demo":"health\/get-pub-sub.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-pubsub.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/queue":{"get":{"summary":"Get queue","operationId":"healthGetQueue","tags":["health"],"description":"Check the Appwrite queue messaging servers are up and connection is successful.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"getQueue","weight":113,"cookies":false,"type":"","demo":"health\/get-queue.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/queue\/builds":{"get":{"summary":"Get builds queue","operationId":"healthGetQueueBuilds","tags":["health"],"description":"Get the number of builds that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueBuilds","weight":119,"cookies":false,"type":"","demo":"health\/get-queue-builds.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-builds.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/certificates":{"get":{"summary":"Get certificates queue","operationId":"healthGetQueueCertificates","tags":["health"],"description":"Get the number of certificates that are waiting to be issued against [Letsencrypt](https:\/\/letsencrypt.org\/) in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueCertificates","weight":118,"cookies":false,"type":"","demo":"health\/get-queue-certificates.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-certificates.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/databases":{"get":{"summary":"Get databases queue","operationId":"healthGetQueueDatabases","tags":["health"],"description":"Get the number of database changes that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueDatabases","weight":120,"cookies":false,"type":"","demo":"health\/get-queue-databases.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-databases.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"name","description":"Queue name for which to check the queue size","required":false,"schema":{"type":"string","x-example":"[NAME]","default":"database_db_main"},"in":"query"},{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/deletes":{"get":{"summary":"Get deletes queue","operationId":"healthGetQueueDeletes","tags":["health"],"description":"Get the number of background destructive changes that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueDeletes","weight":121,"cookies":false,"type":"","demo":"health\/get-queue-deletes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-deletes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/functions":{"get":{"summary":"Get functions queue","operationId":"healthGetQueueFunctions","tags":["health"],"description":"","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueFunctions","weight":125,"cookies":false,"type":"","demo":"health\/get-queue-functions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-functions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/logs":{"get":{"summary":"Get logs queue","operationId":"healthGetQueueLogs","tags":["health"],"description":"Get the number of logs that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueLogs","weight":117,"cookies":false,"type":"","demo":"health\/get-queue-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/mails":{"get":{"summary":"Get mails queue","operationId":"healthGetQueueMails","tags":["health"],"description":"Get the number of mails that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueMails","weight":122,"cookies":false,"type":"","demo":"health\/get-queue-mails.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-mails.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/messaging":{"get":{"summary":"Get messaging queue","operationId":"healthGetQueueMessaging","tags":["health"],"description":"Get the number of messages that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueMessaging","weight":123,"cookies":false,"type":"","demo":"health\/get-queue-messaging.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-messaging.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/migrations":{"get":{"summary":"Get migrations queue","operationId":"healthGetQueueMigrations","tags":["health"],"description":"Get the number of migrations that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueMigrations","weight":124,"cookies":false,"type":"","demo":"health\/get-queue-migrations.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-migrations.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/webhooks":{"get":{"summary":"Get webhooks queue","operationId":"healthGetQueueWebhooks","tags":["health"],"description":"Get the number of webhooks that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueWebhooks","weight":116,"cookies":false,"type":"","demo":"health\/get-queue-webhooks.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-webhooks.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/storage\/local":{"get":{"summary":"Get local storage","operationId":"healthGetStorageLocal","tags":["health"],"description":"Check the Appwrite local storage device is up and connection is successful.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"getStorageLocal","weight":126,"cookies":false,"type":"","demo":"health\/get-storage-local.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-storage-local.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/time":{"get":{"summary":"Get time","operationId":"healthGetTime","tags":["health"],"description":"Check the Appwrite server time is synced with Google remote NTP server. We use this technology to smoothly handle leap seconds with no disruptive events. The [Network Time Protocol](https:\/\/en.wikipedia.org\/wiki\/Network_Time_Protocol) (NTP) is used by hundreds of millions of computers and devices to synchronize their clocks over the Internet. If your computer sets its own clock, it likely uses NTP.","responses":{"200":{"description":"Health Time","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthTime"}}}}},"x-appwrite":{"method":"getTime","weight":115,"cookies":false,"type":"","demo":"health\/get-time.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-time.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/locale":{"get":{"summary":"Get user locale","operationId":"localeGet","tags":["locale"],"description":"Get the current user location based on IP. Returns an object with user country code, country name, continent name, continent code, ip address and suggested currency. You can use the locale header to get the data in a supported language.\n\n([IP Geolocation by DB-IP](https:\/\/db-ip.com))","responses":{"200":{"description":"Locale","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/locale"}}}}},"x-appwrite":{"method":"get","weight":101,"cookies":false,"type":"","demo":"locale\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-locale.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/localed","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/codes":{"get":{"summary":"List Locale Codes","operationId":"localeListCodes","tags":["locale"],"description":"List of all locale codes in [ISO 639-1](https:\/\/en.wikipedia.org\/wiki\/List_of_ISO_639-1_codes).","responses":{"200":{"description":"Locale codes list","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/localeCodeList"}}}}},"x-appwrite":{"method":"listCodes","weight":102,"cookies":false,"type":"","demo":"locale\/list-codes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-locale-codes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/localeCode","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/continents":{"get":{"summary":"List continents","operationId":"localeListContinents","tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/continentList"}}}}},"x-appwrite":{"method":"listContinents","weight":106,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/continents","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List countries","operationId":"localeListCountries","tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountries","weight":103,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/countries","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU countries","operationId":"localeListCountriesEU","tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountriesEU","weight":104,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/countries\/eu","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List countries phone codes","operationId":"localeListCountriesPhones","tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/phoneList"}}}}},"x-appwrite":{"method":"listCountriesPhones","weight":105,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/countries\/phones","offline-key":"","offline-response-key":"countryCode","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List currencies","operationId":"localeListCurrencies","tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/currencyList"}}}}},"x-appwrite":{"method":"listCurrencies","weight":107,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/currencies","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List languages","operationId":"localeListLanguages","tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/languageList"}}}}},"x-appwrite":{"method":"listLanguages","weight":108,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/languages","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/messaging\/messages":{"get":{"summary":"List messages","operationId":"messagingListMessages","tags":["messaging"],"description":"","responses":{"200":{"description":"Message list","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/messageList"}}}}},"x-appwrite":{"method":"listMessages","weight":346,"cookies":false,"type":"","demo":"messaging\/list-messages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-messages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: scheduledAt, deliveredAt, deliveredTotal, status, description, providerType","required":false,"schema":{"type":"string","default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]}},"\/messaging\/messages\/email":{"post":{"summary":"Create an email.","operationId":"messagingCreateEmail","tags":["messaging"],"description":"","responses":{"201":{"description":"Message","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/message"}}}}},"x-appwrite":{"method":"createEmail","weight":343,"cookies":false,"type":"","demo":"messaging\/create-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"messageId":{"type":"string","description":"Message ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[MESSAGE_ID]"},"subject":{"type":"string","description":"Email Subject.","x-example":"[SUBJECT]"},"content":{"type":"string","description":"Email Content.","x-example":"[CONTENT]"},"topics":{"type":"array","description":"List of Topic IDs.","x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","x-example":null,"items":{"type":"string"}},"cc":{"type":"array","description":"Array of target IDs to be added as CC.","x-example":null,"items":{"type":"string"}},"bcc":{"type":"array","description":"Array of target IDs to be added as BCC.","x-example":null,"items":{"type":"string"}},"description":{"type":"string","description":"Description for message.","x-example":"[DESCRIPTION]"},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":null,"x-enum-keys":[]},"html":{"type":"boolean","description":"Is content of type HTML","x-example":false},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","x-example":null}},"required":["messageId","subject","content"]}}}}}},"\/messaging\/messages\/email\/{messageId}":{"patch":{"summary":"Update an email.","operationId":"messagingUpdateEmail","tags":["messaging"],"description":"","responses":{"200":{"description":"Message","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/message"}}}}},"x-appwrite":{"method":"updateEmail","weight":350,"cookies":false,"type":"","demo":"messaging\/update-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"schema":{"type":"string","x-example":"[MESSAGE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"topics":{"type":"array","description":"List of Topic IDs.","x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","x-example":null,"items":{"type":"string"}},"subject":{"type":"string","description":"Email Subject.","x-example":"[SUBJECT]"},"description":{"type":"string","description":"Description for Message.","x-example":"[DESCRIPTION]"},"content":{"type":"string","description":"Email Content.","x-example":"[CONTENT]"},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":null,"x-enum-keys":[]},"html":{"type":"boolean","description":"Is content of type HTML","x-example":false},"cc":{"type":"array","description":"Array of target IDs to be added as CC.","x-example":null,"items":{"type":"string"}},"bcc":{"type":"array","description":"Array of target IDs to be added as BCC.","x-example":null,"items":{"type":"string"}},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","x-example":null}}}}}}}},"\/messaging\/messages\/push":{"post":{"summary":"Create a push notification.","operationId":"messagingCreatePush","tags":["messaging"],"description":"","responses":{"201":{"description":"Message","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/message"}}}}},"x-appwrite":{"method":"createPush","weight":345,"cookies":false,"type":"","demo":"messaging\/create-push.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-push-notification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"messageId":{"type":"string","description":"Message ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[MESSAGE_ID]"},"title":{"type":"string","description":"Title for push notification.","x-example":"[TITLE]"},"body":{"type":"string","description":"Body for push notification.","x-example":"[BODY]"},"topics":{"type":"array","description":"List of Topic IDs.","x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","x-example":null,"items":{"type":"string"}},"description":{"type":"string","description":"Description for Message.","x-example":"[DESCRIPTION]"},"data":{"type":"object","description":"Additional Data for push notification.","x-example":"{}"},"action":{"type":"string","description":"Action for push notification.","x-example":"[ACTION]"},"icon":{"type":"string","description":"Icon for push notification. Available only for Android and Web Platform.","x-example":"[ICON]"},"sound":{"type":"string","description":"Sound for push notification. Available only for Android and IOS Platform.","x-example":"[SOUND]"},"color":{"type":"string","description":"Color for push notification. Available only for Android Platform.","x-example":"[COLOR]"},"tag":{"type":"string","description":"Tag for push notification. Available only for Android Platform.","x-example":"[TAG]"},"badge":{"type":"string","description":"Badge for push notification. Available only for IOS Platform.","x-example":"[BADGE]"},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":null,"x-enum-keys":[]},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","x-example":null}},"required":["messageId","title","body"]}}}}}},"\/messaging\/messages\/push\/{messageId}":{"patch":{"summary":"Update a push notification.","operationId":"messagingUpdatePushNotification","tags":["messaging"],"description":"","responses":{"200":{"description":"Message","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/message"}}}}},"x-appwrite":{"method":"updatePushNotification","weight":352,"cookies":false,"type":"","demo":"messaging\/update-push-notification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-push-notification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"schema":{"type":"string","x-example":"[MESSAGE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"topics":{"type":"array","description":"List of Topic IDs.","x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","x-example":null,"items":{"type":"string"}},"description":{"type":"string","description":"Description for Message.","x-example":"[DESCRIPTION]"},"title":{"type":"string","description":"Title for push notification.","x-example":"[TITLE]"},"body":{"type":"string","description":"Body for push notification.","x-example":"[BODY]"},"data":{"type":"object","description":"Additional Data for push notification.","x-example":"{}"},"action":{"type":"string","description":"Action for push notification.","x-example":"[ACTION]"},"icon":{"type":"string","description":"Icon for push notification. Available only for Android and Web platforms.","x-example":"[ICON]"},"sound":{"type":"string","description":"Sound for push notification. Available only for Android and iOS platforms.","x-example":"[SOUND]"},"color":{"type":"string","description":"Color for push notification. Available only for Android platforms.","x-example":"[COLOR]"},"tag":{"type":"string","description":"Tag for push notification. Available only for Android platforms.","x-example":"[TAG]"},"badge":{"type":"integer","description":"Badge for push notification. Available only for iOS platforms.","x-example":null},"status":{"type":"string","description":"Message Status. Value must be either draft, cancelled, or processing.","x-example":"draft","enum":["draft","cancelled","processing"],"x-enum-name":null,"x-enum-keys":[]},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","x-example":null}}}}}}}},"\/messaging\/messages\/sms":{"post":{"summary":"Create an SMS.","operationId":"messagingCreateSMS","tags":["messaging"],"description":"","responses":{"201":{"description":"Message","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/message"}}}}},"x-appwrite":{"method":"createSMS","weight":344,"cookies":false,"type":"","demo":"messaging\/create-s-m-s.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-sms.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"messageId":{"type":"string","description":"Message ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[MESSAGE_ID]"},"content":{"type":"string","description":"SMS Content.","x-example":"[CONTENT]"},"topics":{"type":"array","description":"List of Topic IDs.","x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","x-example":null,"items":{"type":"string"}},"description":{"type":"string","description":"Description for Message.","x-example":"[DESCRIPTION]"},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":null,"x-enum-keys":[]},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","x-example":null}},"required":["messageId","content"]}}}}}},"\/messaging\/messages\/sms\/{messageId}":{"patch":{"summary":"Update an SMS.","operationId":"messagingUpdateSMS","tags":["messaging"],"description":"","responses":{"200":{"description":"Message","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/message"}}}}},"x-appwrite":{"method":"updateSMS","weight":351,"cookies":false,"type":"","demo":"messaging\/update-s-m-s.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"schema":{"type":"string","x-example":"[MESSAGE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"topics":{"type":"array","description":"List of Topic IDs.","x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","x-example":null,"items":{"type":"string"}},"description":{"type":"string","description":"Description for Message.","x-example":"[DESCRIPTION]"},"content":{"type":"string","description":"Email Content.","x-example":"[CONTENT]"},"status":{"type":"string","description":"Message Status. Value must be either draft or cancelled or processing.","x-example":"draft","enum":["draft","cancelled","processing"],"x-enum-name":null,"x-enum-keys":[]},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","x-example":null}}}}}}}},"\/messaging\/messages\/{messageId}":{"get":{"summary":"Get a message","operationId":"messagingGetMessage","tags":["messaging"],"description":"","responses":{"200":{"description":"Message","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/message"}}}}},"x-appwrite":{"method":"getMessage","weight":349,"cookies":false,"type":"","demo":"messaging\/get-message.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/get-message.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"schema":{"type":"string","x-example":"[MESSAGE_ID]"},"in":"path"}]}},"\/messaging\/messages\/{messageId}\/logs":{"get":{"summary":"List message logs","operationId":"messagingListMessageLogs","tags":["messaging"],"description":"","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listMessageLogs","weight":347,"cookies":false,"type":"","demo":"messaging\/list-message-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/messages\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"schema":{"type":"string","x-example":"[MESSAGE_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/messaging\/messages\/{messageId}\/targets":{"get":{"summary":"List message targets","operationId":"messagingListTargets","tags":["messaging"],"description":"List the targets associated with a message as set via the targets attribute.","responses":{"200":{"description":"Target list","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/targetList"}}}}},"x-appwrite":{"method":"listTargets","weight":348,"cookies":false,"type":"","demo":"messaging\/list-targets.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-message-targets.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"schema":{"type":"string","x-example":"[MESSAGE_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, providerId, identifier, providerType","required":false,"schema":{"type":"string","default":[]},"in":"query"}]}},"\/messaging\/providers":{"get":{"summary":"List providers","operationId":"messagingListProviders","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider list","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/providerList"}}}}},"x-appwrite":{"method":"listProviders","weight":319,"cookies":false,"type":"","demo":"messaging\/list-providers.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-providers.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, provider, type, enabled","required":false,"schema":{"type":"string","default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]}},"\/messaging\/providers\/apns":{"post":{"summary":"Create APNS provider","operationId":"messagingCreateAPNSProvider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createAPNSProvider","weight":318,"cookies":false,"type":"","demo":"messaging\/create-a-p-n-s-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-apns-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"authKey":{"type":"string","description":"APNS authentication key.","x-example":"[AUTH_KEY]"},"authKeyId":{"type":"string","description":"APNS authentication key ID.","x-example":"[AUTH_KEY_ID]"},"teamId":{"type":"string","description":"APNS team ID.","x-example":"[TEAM_ID]"},"bundleId":{"type":"string","description":"APNS bundle ID.","x-example":"[BUNDLE_ID]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name"]}}}}}},"\/messaging\/providers\/apns\/{providerId}":{"patch":{"summary":"Update APNS provider","operationId":"messagingUpdateAPNSProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateAPNSProvider","weight":330,"cookies":false,"type":"","demo":"messaging\/update-a-p-n-s-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-apns-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"authKey":{"type":"string","description":"APNS authentication key.","x-example":"[AUTH_KEY]"},"authKeyId":{"type":"string","description":"APNS authentication key ID.","x-example":"[AUTH_KEY_ID]"},"teamId":{"type":"string","description":"APNS team ID.","x-example":"[TEAM_ID]"},"bundleId":{"type":"string","description":"APNS bundle ID.","x-example":"[BUNDLE_ID]"}}}}}}}},"\/messaging\/providers\/fcm":{"post":{"summary":"Create FCM provider","operationId":"messagingCreateFCMProvider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createFCMProvider","weight":317,"cookies":false,"type":"","demo":"messaging\/create-f-c-m-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-fcm-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"serviceAccountJSON":{"type":"object","description":"FCM service account JSON.","x-example":"{}"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name"]}}}}}},"\/messaging\/providers\/fcm\/{providerId}":{"patch":{"summary":"Update FCM provider","operationId":"messagingUpdateFCMProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateFCMProvider","weight":329,"cookies":false,"type":"","demo":"messaging\/update-f-c-m-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-fcm-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"serviceAccountJSON":{"type":"object","description":"FCM service account JSON.","x-example":"{}"}}}}}}}},"\/messaging\/providers\/mailgun":{"post":{"summary":"Create Mailgun provider","operationId":"messagingCreateMailgunProvider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createMailgunProvider","weight":310,"cookies":false,"type":"","demo":"messaging\/create-mailgun-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-mailgun-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"apiKey":{"type":"string","description":"Mailgun API Key.","x-example":"[API_KEY]"},"domain":{"type":"string","description":"Mailgun Domain.","x-example":"[DOMAIN]"},"isEuRegion":{"type":"boolean","description":"Set as EU region.","x-example":false},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"fromName":{"type":"string","description":"Sender Name.","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the reply to field for the mail. Default value is sender name. Reply to name must have reply to email as well.","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the reply to field for the mail. Default value is sender email. Reply to email must have reply to name as well.","x-example":"[REPLY_TO_EMAIL]"}},"required":["providerId","name"]}}}}}},"\/messaging\/providers\/mailgun\/{providerId}":{"patch":{"summary":"Update Mailgun provider","operationId":"messagingUpdateMailgunProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateMailgunProvider","weight":322,"cookies":false,"type":"","demo":"messaging\/update-mailgun-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-mailgun-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"apiKey":{"type":"string","description":"Mailgun API Key.","x-example":"[API_KEY]"},"domain":{"type":"string","description":"Mailgun Domain.","x-example":"[DOMAIN]"},"isEuRegion":{"type":"boolean","description":"Set as EU region.","x-example":false},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"fromName":{"type":"string","description":"Sender Name.","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the reply to field for the mail. Default value is sender name.","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the reply to field for the mail. Default value is sender email.","x-example":"[REPLY_TO_EMAIL]"}}}}}}}},"\/messaging\/providers\/msg91":{"post":{"summary":"Create Msg91 provider","operationId":"messagingCreateMsg91Provider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createMsg91Provider","weight":312,"cookies":false,"type":"","demo":"messaging\/create-msg91provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-msg91-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"senderId":{"type":"string","description":"Msg91 Sender ID.","x-example":"[SENDER_ID]"},"authKey":{"type":"string","description":"Msg91 Auth Key.","x-example":"[AUTH_KEY]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name"]}}}}}},"\/messaging\/providers\/msg91\/{providerId}":{"patch":{"summary":"Update Msg91 provider","operationId":"messagingUpdateMsg91Provider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateMsg91Provider","weight":324,"cookies":false,"type":"","demo":"messaging\/update-msg91provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-msg91-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"senderId":{"type":"string","description":"Msg91 Sender ID.","x-example":"[SENDER_ID]"},"authKey":{"type":"string","description":"Msg91 Auth Key.","x-example":"[AUTH_KEY]"},"from":{"type":"string","description":"Sender number.","x-example":"[FROM]"}}}}}}}},"\/messaging\/providers\/sendgrid":{"post":{"summary":"Create Sendgrid provider","operationId":"messagingCreateSendgridProvider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createSendgridProvider","weight":311,"cookies":false,"type":"","demo":"messaging\/create-sendgrid-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-sengrid-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"apiKey":{"type":"string","description":"Sendgrid API key.","x-example":"[API_KEY]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"fromName":{"type":"string","description":"Sender Name.","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the reply to field for the mail. Default value is sender name.","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the reply to field for the mail. Default value is sender email.","x-example":"[REPLY_TO_EMAIL]"}},"required":["providerId","name"]}}}}}},"\/messaging\/providers\/sendgrid\/{providerId}":{"patch":{"summary":"Update Sendgrid provider","operationId":"messagingUpdateSendgridProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateSendgridProvider","weight":323,"cookies":false,"type":"","demo":"messaging\/update-sendgrid-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-sendgrid-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"apiKey":{"type":"string","description":"Sendgrid API key.","x-example":"[API_KEY]"},"fromName":{"type":"string","description":"Sender Name.","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the Reply To field for the mail. Default value is Sender Name.","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the Reply To field for the mail. Default value is Sender Email.","x-example":"[REPLY_TO_EMAIL]"}}}}}}}},"\/messaging\/providers\/telesign":{"post":{"summary":"Create Telesign provider","operationId":"messagingCreateTelesignProvider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createTelesignProvider","weight":313,"cookies":false,"type":"","demo":"messaging\/create-telesign-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-telesign-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"username":{"type":"string","description":"Telesign username.","x-example":"[USERNAME]"},"password":{"type":"string","description":"Telesign password.","x-example":"[PASSWORD]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name"]}}}}}},"\/messaging\/providers\/telesign\/{providerId}":{"patch":{"summary":"Update Telesign provider","operationId":"messagingUpdateTelesignProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateTelesignProvider","weight":325,"cookies":false,"type":"","demo":"messaging\/update-telesign-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-telesign-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"username":{"type":"string","description":"Telesign username.","x-example":"[USERNAME]"},"password":{"type":"string","description":"Telesign password.","x-example":"[PASSWORD]"},"from":{"type":"string","description":"Sender number.","x-example":"[FROM]"}}}}}}}},"\/messaging\/providers\/textmagic":{"post":{"summary":"Create Textmagic provider","operationId":"messagingCreateTextmagicProvider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createTextmagicProvider","weight":314,"cookies":false,"type":"","demo":"messaging\/create-textmagic-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-textmagic-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"username":{"type":"string","description":"Textmagic username.","x-example":"[USERNAME]"},"apiKey":{"type":"string","description":"Textmagic apiKey.","x-example":"[API_KEY]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name"]}}}}}},"\/messaging\/providers\/textmagic\/{providerId}":{"patch":{"summary":"Update Textmagic provider","operationId":"messagingUpdateTextmagicProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateTextmagicProvider","weight":326,"cookies":false,"type":"","demo":"messaging\/update-textmagic-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-textmagic-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"username":{"type":"string","description":"Textmagic username.","x-example":"[USERNAME]"},"apiKey":{"type":"string","description":"Textmagic apiKey.","x-example":"[API_KEY]"},"from":{"type":"string","description":"Sender number.","x-example":"[FROM]"}}}}}}}},"\/messaging\/providers\/twilio":{"post":{"summary":"Create Twilio provider","operationId":"messagingCreateTwilioProvider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createTwilioProvider","weight":315,"cookies":false,"type":"","demo":"messaging\/create-twilio-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-twilio-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"accountSid":{"type":"string","description":"Twilio account secret ID.","x-example":"[ACCOUNT_SID]"},"authToken":{"type":"string","description":"Twilio authentication token.","x-example":"[AUTH_TOKEN]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name"]}}}}}},"\/messaging\/providers\/twilio\/{providerId}":{"patch":{"summary":"Update Twilio provider","operationId":"messagingUpdateTwilioProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateTwilioProvider","weight":327,"cookies":false,"type":"","demo":"messaging\/update-twilio-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-twilio-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"accountSid":{"type":"string","description":"Twilio account secret ID.","x-example":"[ACCOUNT_SID]"},"authToken":{"type":"string","description":"Twilio authentication token.","x-example":"[AUTH_TOKEN]"},"from":{"type":"string","description":"Sender number.","x-example":"[FROM]"}}}}}}}},"\/messaging\/providers\/vonage":{"post":{"summary":"Create Vonage provider","operationId":"messagingCreateVonageProvider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createVonageProvider","weight":316,"cookies":false,"type":"","demo":"messaging\/create-vonage-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-vonage-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"apiKey":{"type":"string","description":"Vonage API key.","x-example":"[API_KEY]"},"apiSecret":{"type":"string","description":"Vonage API secret.","x-example":"[API_SECRET]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name"]}}}}}},"\/messaging\/providers\/vonage\/{providerId}":{"patch":{"summary":"Update Vonage provider","operationId":"messagingUpdateVonageProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateVonageProvider","weight":328,"cookies":false,"type":"","demo":"messaging\/update-vonage-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-vonage-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"apiKey":{"type":"string","description":"Vonage API key.","x-example":"[API_KEY]"},"apiSecret":{"type":"string","description":"Vonage API secret.","x-example":"[API_SECRET]"},"from":{"type":"string","description":"Sender number.","x-example":"[FROM]"}}}}}}}},"\/messaging\/providers\/{providerId}":{"get":{"summary":"Get provider","operationId":"messagingGetProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"getProvider","weight":321,"cookies":false,"type":"","demo":"messaging\/get-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/get-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}]},"delete":{"summary":"Delete provider","operationId":"messagingDeleteProvider","tags":["messaging"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteProvider","weight":331,"cookies":false,"type":"","demo":"messaging\/delete-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}]}},"\/messaging\/providers\/{providerId}\/logs":{"get":{"summary":"List provider logs","operationId":"messagingListProviderLogs","tags":["messaging"],"description":"","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listProviderLogs","weight":320,"cookies":false,"type":"","demo":"messaging\/list-provider-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/providers\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/messaging\/subscribers\/{subscriberId}\/logs":{"get":{"summary":"List subscriber logs","operationId":"messagingListSubscriberLogs","tags":["messaging"],"description":"","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listSubscriberLogs","weight":340,"cookies":false,"type":"","demo":"messaging\/list-subscriber-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/subscribers\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"subscriberId","description":"Subscriber ID.","required":true,"schema":{"type":"string","x-example":"[SUBSCRIBER_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/messaging\/topics":{"get":{"summary":"List topics.","operationId":"messagingListTopics","tags":["messaging"],"description":"","responses":{"200":{"description":"Topic list","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/topicList"}}}}},"x-appwrite":{"method":"listTopics","weight":333,"cookies":false,"type":"","demo":"messaging\/list-topics.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-topics.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, description, total","required":false,"schema":{"type":"string","default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create a topic.","operationId":"messagingCreateTopic","tags":["messaging"],"description":"","responses":{"201":{"description":"Topic","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/topic"}}}}},"x-appwrite":{"method":"createTopic","weight":332,"cookies":false,"type":"","demo":"messaging\/create-topic.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-topic.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"topicId":{"type":"string","description":"Topic ID. Choose a custom Topic ID or a new Topic ID.","x-example":"[TOPIC_ID]"},"name":{"type":"string","description":"Topic Name.","x-example":"[NAME]"},"description":{"type":"string","description":"Topic Description.","x-example":"[DESCRIPTION]"}},"required":["topicId","name"]}}}}}},"\/messaging\/topics\/{topicId}":{"get":{"summary":"Get a topic.","operationId":"messagingGetTopic","tags":["messaging"],"description":"","responses":{"200":{"description":"Topic","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/topic"}}}}},"x-appwrite":{"method":"getTopic","weight":335,"cookies":false,"type":"","demo":"messaging\/get-topic.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/get-topic.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID.","required":true,"schema":{"type":"string","x-example":"[TOPIC_ID]"},"in":"path"}]},"patch":{"summary":"Update a topic.","operationId":"messagingUpdateTopic","tags":["messaging"],"description":"","responses":{"200":{"description":"Topic","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/topic"}}}}},"x-appwrite":{"method":"updateTopic","weight":336,"cookies":false,"type":"","demo":"messaging\/update-topic.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-topic.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID.","required":true,"schema":{"type":"string","x-example":"[TOPIC_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Topic Name.","x-example":"[NAME]"},"description":{"type":"string","description":"Topic Description.","x-example":"[DESCRIPTION]"}}}}}}},"delete":{"summary":"Delete a topic.","operationId":"messagingDeleteTopic","tags":["messaging"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteTopic","weight":337,"cookies":false,"type":"","demo":"messaging\/delete-topic.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-topic.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID.","required":true,"schema":{"type":"string","x-example":"[TOPIC_ID]"},"in":"path"}]}},"\/messaging\/topics\/{topicId}\/logs":{"get":{"summary":"List topic logs","operationId":"messagingListTopicLogs","tags":["messaging"],"description":"","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listTopicLogs","weight":334,"cookies":false,"type":"","demo":"messaging\/list-topic-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/topics\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID.","required":true,"schema":{"type":"string","x-example":"[TOPIC_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/messaging\/topics\/{topicId}\/subscribers":{"get":{"summary":"List subscribers.","operationId":"messagingListSubscribers","tags":["messaging"],"description":"","responses":{"200":{"description":"Subscriber list","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/subscriberList"}}}}},"x-appwrite":{"method":"listSubscribers","weight":339,"cookies":false,"type":"","demo":"messaging\/list-subscribers.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-subscribers.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID subscribed to.","required":true,"schema":{"type":"string","x-example":"[TOPIC_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, provider, type, enabled","required":false,"schema":{"type":"string","default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create a subscriber.","operationId":"messagingCreateSubscriber","tags":["messaging"],"description":"","responses":{"201":{"description":"Subscriber","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/subscriber"}}}}},"x-appwrite":{"method":"createSubscriber","weight":338,"cookies":false,"type":"","demo":"messaging\/create-subscriber.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-subscriber.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.write","platforms":["server","client","console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID to subscribe to.","required":true,"schema":{"type":"string","x-example":"[TOPIC_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"subscriberId":{"type":"string","description":"Subscriber ID. Choose a custom Subscriber ID or a new Subscriber ID.","x-example":"[SUBSCRIBER_ID]"},"targetId":{"type":"string","description":"Target ID. The target ID to link to the specified Topic ID.","x-example":"[TARGET_ID]"}},"required":["subscriberId","targetId"]}}}}}},"\/messaging\/topics\/{topicId}\/subscribers\/{subscriberId}":{"get":{"summary":"Get a subscriber.","operationId":"messagingGetSubscriber","tags":["messaging"],"description":"","responses":{"200":{"description":"Subscriber","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/subscriber"}}}}},"x-appwrite":{"method":"getSubscriber","weight":341,"cookies":false,"type":"","demo":"messaging\/get-subscriber.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/get-subscriber.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID subscribed to.","required":true,"schema":{"type":"string","x-example":"[TOPIC_ID]"},"in":"path"},{"name":"subscriberId","description":"Subscriber ID.","required":true,"schema":{"type":"string","x-example":"[SUBSCRIBER_ID]"},"in":"path"}]},"delete":{"summary":"Delete a subscriber.","operationId":"messagingDeleteSubscriber","tags":["messaging"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSubscriber","weight":342,"cookies":false,"type":"","demo":"messaging\/delete-subscriber.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-subscriber.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.write","platforms":["server","client","console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID subscribed to.","required":true,"schema":{"type":"string","x-example":"[TOPIC_ID]"},"in":"path"},{"name":"subscriberId","description":"Subscriber ID.","required":true,"schema":{"type":"string","x-example":"[SUBSCRIBER_ID]"},"in":"path"}]}},"\/migrations":{"get":{"summary":"List Migrations","operationId":"migrationsList","tags":["migrations"],"description":"","responses":{"200":{"description":"Migrations List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/migrationList"}}}}},"x-appwrite":{"method":"list","weight":297,"cookies":false,"type":"","demo":"migrations\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/list-migrations.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: status, stage, source, resources, statusCounters, resourceData, errors","required":false,"schema":{"type":"string","default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]}},"\/migrations\/appwrite":{"post":{"summary":"Migrate Appwrite Data","operationId":"migrationsCreateAppwriteMigration","tags":["migrations"],"description":"","responses":{"202":{"description":"Migration","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/migration"}}}}},"x-appwrite":{"method":"createAppwriteMigration","weight":292,"cookies":false,"type":"","demo":"migrations\/create-appwrite-migration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-appwrite.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"resources":{"type":"array","description":"List of resources to migrate","x-example":null,"items":{"type":"string"}},"endpoint":{"type":"string","description":"Source's Appwrite Endpoint","x-example":"https:\/\/example.com"},"projectId":{"type":"string","description":"Source's Project ID","x-example":"[PROJECT_ID]"},"apiKey":{"type":"string","description":"Source's API Key","x-example":"[API_KEY]"}},"required":["resources","endpoint","projectId","apiKey"]}}}}}},"\/migrations\/appwrite\/report":{"get":{"summary":"Generate a report on Appwrite Data","operationId":"migrationsGetAppwriteReport","tags":["migrations"],"description":"","responses":{"200":{"description":"Migration Report","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/migrationReport"}}}}},"x-appwrite":{"method":"getAppwriteReport","weight":299,"cookies":false,"type":"","demo":"migrations\/get-appwrite-report.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-appwrite-report.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"resources","description":"List of resources to migrate","required":true,"schema":{"type":"array","items":{"type":"string"}},"in":"query"},{"name":"endpoint","description":"Source's Appwrite Endpoint","required":true,"schema":{"type":"string","format":"url","x-example":"https:\/\/example.com"},"in":"query"},{"name":"projectID","description":"Source's Project ID","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"query"},{"name":"key","description":"Source's API Key","required":true,"schema":{"type":"string","x-example":"[KEY]"},"in":"query"}]}},"\/migrations\/firebase":{"post":{"summary":"Migrate Firebase Data (Service Account)","operationId":"migrationsCreateFirebaseMigration","tags":["migrations"],"description":"","responses":{"202":{"description":"Migration","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/migration"}}}}},"x-appwrite":{"method":"createFirebaseMigration","weight":294,"cookies":false,"type":"","demo":"migrations\/create-firebase-migration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-firebase.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"resources":{"type":"array","description":"List of resources to migrate","x-example":null,"items":{"type":"string"}},"serviceAccount":{"type":"string","description":"JSON of the Firebase service account credentials","x-example":"[SERVICE_ACCOUNT]"}},"required":["resources","serviceAccount"]}}}}}},"\/migrations\/firebase\/deauthorize":{"get":{"summary":"Revoke Appwrite's authorization to access Firebase Projects","operationId":"migrationsDeleteFirebaseAuth","tags":["migrations"],"description":"","responses":{"200":{"description":"File"}},"x-appwrite":{"method":"deleteFirebaseAuth","weight":305,"cookies":false,"type":"","demo":"migrations\/delete-firebase-auth.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/migrations\/firebase\/oauth":{"post":{"summary":"Migrate Firebase Data (OAuth)","operationId":"migrationsCreateFirebaseOAuthMigration","tags":["migrations"],"description":"","responses":{"202":{"description":"Migration","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/migration"}}}}},"x-appwrite":{"method":"createFirebaseOAuthMigration","weight":293,"cookies":false,"type":"","demo":"migrations\/create-firebase-o-auth-migration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-firebase.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"resources":{"type":"array","description":"List of resources to migrate","x-example":null,"items":{"type":"string"}},"projectId":{"type":"string","description":"Project ID of the Firebase Project","x-example":"[PROJECT_ID]"}},"required":["resources","projectId"]}}}}}},"\/migrations\/firebase\/projects":{"get":{"summary":"List Firebase Projects","operationId":"migrationsListFirebaseProjects","tags":["migrations"],"description":"","responses":{"200":{"description":"Migrations Firebase Projects List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/firebaseProjectList"}}}}},"x-appwrite":{"method":"listFirebaseProjects","weight":304,"cookies":false,"type":"","demo":"migrations\/list-firebase-projects.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/migrations\/firebase\/report":{"get":{"summary":"Generate a report on Firebase Data","operationId":"migrationsGetFirebaseReport","tags":["migrations"],"description":"","responses":{"200":{"description":"Migration Report","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/migrationReport"}}}}},"x-appwrite":{"method":"getFirebaseReport","weight":300,"cookies":false,"type":"","demo":"migrations\/get-firebase-report.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-firebase-report.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"resources","description":"List of resources to migrate","required":true,"schema":{"type":"array","items":{"type":"string"}},"in":"query"},{"name":"serviceAccount","description":"JSON of the Firebase service account credentials","required":true,"schema":{"type":"string","x-example":"[SERVICE_ACCOUNT]"},"in":"query"}]}},"\/migrations\/firebase\/report\/oauth":{"get":{"summary":"Generate a report on Firebase Data using OAuth","operationId":"migrationsGetFirebaseReportOAuth","tags":["migrations"],"description":"","responses":{"200":{"description":"Migration Report","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/migrationReport"}}}}},"x-appwrite":{"method":"getFirebaseReportOAuth","weight":301,"cookies":false,"type":"","demo":"migrations\/get-firebase-report-o-auth.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-firebase-report.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"resources","description":"List of resources to migrate","required":true,"schema":{"type":"array","items":{"type":"string"}},"in":"query"},{"name":"projectId","description":"Project ID","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"query"}]}},"\/migrations\/nhost":{"post":{"summary":"Migrate NHost Data","operationId":"migrationsCreateNHostMigration","tags":["migrations"],"description":"","responses":{"202":{"description":"Migration","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/migration"}}}}},"x-appwrite":{"method":"createNHostMigration","weight":296,"cookies":false,"type":"","demo":"migrations\/create-n-host-migration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-nhost.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"resources":{"type":"array","description":"List of resources to migrate","x-example":null,"items":{"type":"string"}},"subdomain":{"type":"string","description":"Source's Subdomain","x-example":"[SUBDOMAIN]"},"region":{"type":"string","description":"Source's Region","x-example":"[REGION]"},"adminSecret":{"type":"string","description":"Source's Admin Secret","x-example":"[ADMIN_SECRET]"},"database":{"type":"string","description":"Source's Database Name","x-example":"[DATABASE]"},"username":{"type":"string","description":"Source's Database Username","x-example":"[USERNAME]"},"password":{"type":"string","description":"Source's Database Password","x-example":"[PASSWORD]"},"port":{"type":"integer","description":"Source's Database Port","x-example":null}},"required":["resources","subdomain","region","adminSecret","database","username","password"]}}}}}},"\/migrations\/nhost\/report":{"get":{"summary":"Generate a report on NHost Data","operationId":"migrationsGetNHostReport","tags":["migrations"],"description":"","responses":{"200":{"description":"Migration Report","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/migrationReport"}}}}},"x-appwrite":{"method":"getNHostReport","weight":307,"cookies":false,"type":"","demo":"migrations\/get-n-host-report.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-nhost-report.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"resources","description":"List of resources to migrate.","required":true,"schema":{"type":"array","items":{"type":"string"}},"in":"query"},{"name":"subdomain","description":"Source's Subdomain.","required":true,"schema":{"type":"string","x-example":"[SUBDOMAIN]"},"in":"query"},{"name":"region","description":"Source's Region.","required":true,"schema":{"type":"string","x-example":"[REGION]"},"in":"query"},{"name":"adminSecret","description":"Source's Admin Secret.","required":true,"schema":{"type":"string","x-example":"[ADMIN_SECRET]"},"in":"query"},{"name":"database","description":"Source's Database Name.","required":true,"schema":{"type":"string","x-example":"[DATABASE]"},"in":"query"},{"name":"username","description":"Source's Database Username.","required":true,"schema":{"type":"string","x-example":"[USERNAME]"},"in":"query"},{"name":"password","description":"Source's Database Password.","required":true,"schema":{"type":"string","x-example":"[PASSWORD]"},"in":"query"},{"name":"port","description":"Source's Database Port.","required":false,"schema":{"type":"integer","format":"int32","default":5432},"in":"query"}]}},"\/migrations\/supabase":{"post":{"summary":"Migrate Supabase Data","operationId":"migrationsCreateSupabaseMigration","tags":["migrations"],"description":"","responses":{"202":{"description":"Migration","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/migration"}}}}},"x-appwrite":{"method":"createSupabaseMigration","weight":295,"cookies":false,"type":"","demo":"migrations\/create-supabase-migration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-supabase.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"resources":{"type":"array","description":"List of resources to migrate","x-example":null,"items":{"type":"string"}},"endpoint":{"type":"string","description":"Source's Supabase Endpoint","x-example":"https:\/\/example.com"},"apiKey":{"type":"string","description":"Source's API Key","x-example":"[API_KEY]"},"databaseHost":{"type":"string","description":"Source's Database Host","x-example":"[DATABASE_HOST]"},"username":{"type":"string","description":"Source's Database Username","x-example":"[USERNAME]"},"password":{"type":"string","description":"Source's Database Password","x-example":"[PASSWORD]"},"port":{"type":"integer","description":"Source's Database Port","x-example":null}},"required":["resources","endpoint","apiKey","databaseHost","username","password"]}}}}}},"\/migrations\/supabase\/report":{"get":{"summary":"Generate a report on Supabase Data","operationId":"migrationsGetSupabaseReport","tags":["migrations"],"description":"","responses":{"200":{"description":"Migration Report","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/migrationReport"}}}}},"x-appwrite":{"method":"getSupabaseReport","weight":306,"cookies":false,"type":"","demo":"migrations\/get-supabase-report.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-supabase-report.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"resources","description":"List of resources to migrate","required":true,"schema":{"type":"array","items":{"type":"string"}},"in":"query"},{"name":"endpoint","description":"Source's Supabase Endpoint.","required":true,"schema":{"type":"string","format":"url","x-example":"https:\/\/example.com"},"in":"query"},{"name":"apiKey","description":"Source's API Key.","required":true,"schema":{"type":"string","x-example":"[API_KEY]"},"in":"query"},{"name":"databaseHost","description":"Source's Database Host.","required":true,"schema":{"type":"string","x-example":"[DATABASE_HOST]"},"in":"query"},{"name":"username","description":"Source's Database Username.","required":true,"schema":{"type":"string","x-example":"[USERNAME]"},"in":"query"},{"name":"password","description":"Source's Database Password.","required":true,"schema":{"type":"string","x-example":"[PASSWORD]"},"in":"query"},{"name":"port","description":"Source's Database Port.","required":false,"schema":{"type":"integer","format":"int32","default":5432},"in":"query"}]}},"\/migrations\/{migrationId}":{"get":{"summary":"Get Migration","operationId":"migrationsGet","tags":["migrations"],"description":"","responses":{"200":{"description":"Migration","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/migration"}}}}},"x-appwrite":{"method":"get","weight":298,"cookies":false,"type":"","demo":"migrations\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/get-migration.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"migrationId","description":"Migration unique ID.","required":true,"schema":{"type":"string","x-example":"[MIGRATION_ID]"},"in":"path"}]},"patch":{"summary":"Retry Migration","operationId":"migrationsRetry","tags":["migrations"],"description":"","responses":{"202":{"description":"Migration","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/migration"}}}}},"x-appwrite":{"method":"retry","weight":308,"cookies":false,"type":"","demo":"migrations\/retry.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/retry-migration.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"migrationId","description":"Migration unique ID.","required":true,"schema":{"type":"string","x-example":"[MIGRATION_ID]"},"in":"path"}]},"delete":{"summary":"Delete Migration","operationId":"migrationsDelete","tags":["migrations"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":309,"cookies":false,"type":"","demo":"migrations\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-migration.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"migrationId","description":"Migration ID.","required":true,"schema":{"type":"string","x-example":"[MIGRATION_ID]"},"in":"path"}]}},"\/project\/usage":{"get":{"summary":"Get usage stats for a project","operationId":"projectGetUsage","tags":["project"],"description":"","responses":{"200":{"description":"UsageProject","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageProject"}}}}},"x-appwrite":{"method":"getUsage","weight":169,"cookies":false,"type":"","demo":"project\/get-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"schema":{"type":"string","x-example":"24h","enum":["24h","7d","30d","90d"],"x-enum-name":null,"x-enum-keys":[],"default":"30d"},"in":"query"}]}},"\/project\/variables":{"get":{"summary":"List Variables","operationId":"projectListVariables","tags":["project"],"description":"Get a list of all project variables. These variables will be accessible in all Appwrite Functions at runtime.","responses":{"200":{"description":"Variables List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variableList"}}}}},"x-appwrite":{"method":"listVariables","weight":171,"cookies":false,"type":"","demo":"project\/list-variables.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/project\/list-variables.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]},"post":{"summary":"Create Variable","operationId":"projectCreateVariable","tags":["project"],"description":"Create a new project variable. This variable will be accessible in all Appwrite Functions at runtime.","responses":{"201":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"createVariable","weight":170,"cookies":false,"type":"","demo":"project\/create-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/project\/create-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","x-example":"[VALUE]"}},"required":["key","value"]}}}}}},"\/project\/variables\/{variableId}":{"get":{"summary":"Get Variable","operationId":"projectGetVariable","tags":["project"],"description":"Get a project variable by its unique ID.","responses":{"200":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"getVariable","weight":172,"cookies":false,"type":"","demo":"project\/get-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/project\/get-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}]},"put":{"summary":"Update Variable","operationId":"projectUpdateVariable","tags":["project"],"description":"Update project variable by its unique ID. This variable will be accessible in all Appwrite Functions at runtime.","responses":{"200":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"updateVariable","weight":173,"cookies":false,"type":"","demo":"project\/update-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/project\/update-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","x-example":"[VALUE]"}},"required":["key"]}}}}},"delete":{"summary":"Delete Variable","operationId":"projectDeleteVariable","tags":["project"],"description":"Delete a project variable by its unique ID. ","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteVariable","weight":174,"cookies":false,"type":"","demo":"project\/delete-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/project\/delete-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}]}},"\/projects":{"get":{"summary":"List projects","operationId":"projectsList","tags":["projects"],"description":"","responses":{"200":{"description":"Projects List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/projectList"}}}}},"x-appwrite":{"method":"list","weight":130,"cookies":false,"type":"","demo":"projects\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, teamId","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create project","operationId":"projectsCreate","tags":["projects"],"description":"","responses":{"201":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"create","weight":129,"cookies":false,"type":"","demo":"projects\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"projectId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, and hyphen. Can't start with a special char. Max length is 36 chars.","x-example":null},"name":{"type":"string","description":"Project name. Max length: 128 chars.","x-example":"[NAME]"},"teamId":{"type":"string","description":"Team unique ID.","x-example":"[TEAM_ID]"},"region":{"type":"string","description":"Project Region.","x-example":"default","enum":["default"],"x-enum-name":null,"x-enum-keys":[]},"description":{"type":"string","description":"Project description. Max length: 256 chars.","x-example":"[DESCRIPTION]"},"logo":{"type":"string","description":"Project logo.","x-example":"[LOGO]"},"url":{"type":"string","description":"Project URL.","x-example":"https:\/\/example.com"},"legalName":{"type":"string","description":"Project legal Name. Max length: 256 chars.","x-example":"[LEGAL_NAME]"},"legalCountry":{"type":"string","description":"Project legal Country. Max length: 256 chars.","x-example":"[LEGAL_COUNTRY]"},"legalState":{"type":"string","description":"Project legal State. Max length: 256 chars.","x-example":"[LEGAL_STATE]"},"legalCity":{"type":"string","description":"Project legal City. Max length: 256 chars.","x-example":"[LEGAL_CITY]"},"legalAddress":{"type":"string","description":"Project legal Address. Max length: 256 chars.","x-example":"[LEGAL_ADDRESS]"},"legalTaxId":{"type":"string","description":"Project legal Tax ID. Max length: 256 chars.","x-example":"[LEGAL_TAX_ID]"}},"required":["projectId","name","teamId"]}}}}}},"\/projects\/{projectId}":{"get":{"summary":"Get project","operationId":"projectsGet","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"get","weight":131,"cookies":false,"type":"","demo":"projects\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}]},"patch":{"summary":"Update project","operationId":"projectsUpdate","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"update","weight":133,"cookies":false,"type":"","demo":"projects\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Project name. Max length: 128 chars.","x-example":"[NAME]"},"description":{"type":"string","description":"Project description. Max length: 256 chars.","x-example":"[DESCRIPTION]"},"logo":{"type":"string","description":"Project logo.","x-example":"[LOGO]"},"url":{"type":"string","description":"Project URL.","x-example":"https:\/\/example.com"},"legalName":{"type":"string","description":"Project legal name. Max length: 256 chars.","x-example":"[LEGAL_NAME]"},"legalCountry":{"type":"string","description":"Project legal country. Max length: 256 chars.","x-example":"[LEGAL_COUNTRY]"},"legalState":{"type":"string","description":"Project legal state. Max length: 256 chars.","x-example":"[LEGAL_STATE]"},"legalCity":{"type":"string","description":"Project legal city. Max length: 256 chars.","x-example":"[LEGAL_CITY]"},"legalAddress":{"type":"string","description":"Project legal address. Max length: 256 chars.","x-example":"[LEGAL_ADDRESS]"},"legalTaxId":{"type":"string","description":"Project legal tax ID. Max length: 256 chars.","x-example":"[LEGAL_TAX_ID]"}},"required":["name"]}}}}},"delete":{"summary":"Delete project","operationId":"projectsDelete","tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":145,"cookies":false,"type":"","demo":"projects\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}]}},"\/projects\/{projectId}\/auth\/duration":{"patch":{"summary":"Update project authentication duration","operationId":"projectsUpdateAuthDuration","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateAuthDuration","weight":139,"cookies":false,"type":"","demo":"projects\/update-auth-duration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"duration":{"type":"integer","description":"Project session length in seconds. Max length: 31536000 seconds.","x-example":0}},"required":["duration"]}}}}}},"\/projects\/{projectId}\/auth\/limit":{"patch":{"summary":"Update project users limit","operationId":"projectsUpdateAuthLimit","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateAuthLimit","weight":138,"cookies":false,"type":"","demo":"projects\/update-auth-limit.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"limit":{"type":"integer","description":"Set the max number of users allowed in this project. Use 0 for unlimited.","x-example":0}},"required":["limit"]}}}}}},"\/projects\/{projectId}\/auth\/max-sessions":{"patch":{"summary":"Update project user sessions limit","operationId":"projectsUpdateAuthSessionsLimit","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateAuthSessionsLimit","weight":144,"cookies":false,"type":"","demo":"projects\/update-auth-sessions-limit.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"limit":{"type":"integer","description":"Set the max number of users allowed in this project. Value allowed is between 1-100. Default is 10","x-example":1}},"required":["limit"]}}}}}},"\/projects\/{projectId}\/auth\/password-dictionary":{"patch":{"summary":"Update authentication password dictionary status. Use this endpoint to enable or disable the dicitonary check for user password","operationId":"projectsUpdateAuthPasswordDictionary","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateAuthPasswordDictionary","weight":142,"cookies":false,"type":"","demo":"projects\/update-auth-password-dictionary.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Set whether or not to enable checking user's password against most commonly used passwords. Default is false.","x-example":false}},"required":["enabled"]}}}}}},"\/projects\/{projectId}\/auth\/password-history":{"patch":{"summary":"Update authentication password history. Use this endpoint to set the number of password history to save and 0 to disable password history.","operationId":"projectsUpdateAuthPasswordHistory","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateAuthPasswordHistory","weight":141,"cookies":false,"type":"","demo":"projects\/update-auth-password-history.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"limit":{"type":"integer","description":"Set the max number of passwords to store in user history. User can't choose a new password that is already stored in the password history list. Max number of passwords allowed in history is20. Default value is 0","x-example":0}},"required":["limit"]}}}}}},"\/projects\/{projectId}\/auth\/personal-data":{"patch":{"summary":"Enable or disable checking user passwords for similarity with their personal data.","operationId":"projectsUpdatePersonalDataCheck","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updatePersonalDataCheck","weight":143,"cookies":false,"type":"","demo":"projects\/update-personal-data-check.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Set whether or not to check a password for similarity with personal data. Default is false.","x-example":false}},"required":["enabled"]}}}}}},"\/projects\/{projectId}\/auth\/{method}":{"patch":{"summary":"Update project auth method status. Use this endpoint to enable or disable a given auth method for this project.","operationId":"projectsUpdateAuthStatus","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateAuthStatus","weight":140,"cookies":false,"type":"","demo":"projects\/update-auth-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"method","description":"Auth Method. Possible values: email-password,magic-url,anonymous,invites,jwt,phone","required":true,"schema":{"type":"string","x-example":"email-password","enum":["email-password","magic-url","anonymous","invites","jwt","phone"],"x-enum-name":null,"x-enum-keys":[]},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"status":{"type":"boolean","description":"Set the status of this auth method.","x-example":false}},"required":["status"]}}}}}},"\/projects\/{projectId}\/keys":{"get":{"summary":"List keys","operationId":"projectsListKeys","tags":["projects"],"description":"","responses":{"200":{"description":"API Keys List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/keyList"}}}}},"x-appwrite":{"method":"listKeys","weight":153,"cookies":false,"type":"","demo":"projects\/list-keys.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}]},"post":{"summary":"Create key","operationId":"projectsCreateKey","tags":["projects"],"description":"","responses":{"201":{"description":"Key","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/key"}}}}},"x-appwrite":{"method":"createKey","weight":152,"cookies":false,"type":"","demo":"projects\/create-key.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Key name. Max length: 128 chars.","x-example":"[NAME]"},"scopes":{"type":"array","description":"Key scopes list. Maximum of 100 scopes are allowed.","x-example":null,"items":{"type":"string"}},"expire":{"type":"string","description":"Expiration time in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. Use null for unlimited expiration.","x-example":null}},"required":["name","scopes"]}}}}}},"\/projects\/{projectId}\/keys\/{keyId}":{"get":{"summary":"Get key","operationId":"projectsGetKey","tags":["projects"],"description":"","responses":{"200":{"description":"Key","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/key"}}}}},"x-appwrite":{"method":"getKey","weight":154,"cookies":false,"type":"","demo":"projects\/get-key.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"keyId","description":"Key unique ID.","required":true,"schema":{"type":"string","x-example":"[KEY_ID]"},"in":"path"}]},"put":{"summary":"Update key","operationId":"projectsUpdateKey","tags":["projects"],"description":"","responses":{"200":{"description":"Key","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/key"}}}}},"x-appwrite":{"method":"updateKey","weight":155,"cookies":false,"type":"","demo":"projects\/update-key.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"keyId","description":"Key unique ID.","required":true,"schema":{"type":"string","x-example":"[KEY_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Key name. Max length: 128 chars.","x-example":"[NAME]"},"scopes":{"type":"array","description":"Key scopes list. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"expire":{"type":"string","description":"Expiration time in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. Use null for unlimited expiration.","x-example":null}},"required":["name","scopes"]}}}}},"delete":{"summary":"Delete key","operationId":"projectsDeleteKey","tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteKey","weight":156,"cookies":false,"type":"","demo":"projects\/delete-key.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"keyId","description":"Key unique ID.","required":true,"schema":{"type":"string","x-example":"[KEY_ID]"},"in":"path"}]}},"\/projects\/{projectId}\/oauth2":{"patch":{"summary":"Update project OAuth2","operationId":"projectsUpdateOAuth2","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateOAuth2","weight":137,"cookies":false,"type":"","demo":"projects\/update-o-auth2.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"provider":{"type":"string","description":"Provider Name","x-example":"amazon","enum":["amazon","apple","auth0","authentik","autodesk","bitbucket","bitly","box","dailymotion","discord","disqus","dropbox","etsy","facebook","github","gitlab","google","linkedin","microsoft","notion","oidc","okta","paypal","paypalSandbox","podio","salesforce","slack","spotify","stripe","tradeshift","tradeshiftBox","twitch","wordpress","yahoo","yammer","yandex","zoho","zoom","mock"],"x-enum-name":null,"x-enum-keys":[]},"appId":{"type":"string","description":"Provider app ID. Max length: 256 chars.","x-example":"[APP_ID]"},"secret":{"type":"string","description":"Provider secret key. Max length: 512 chars.","x-example":"[SECRET]"},"enabled":{"type":"boolean","description":"Provider status. Set to 'false' to disable new session creation.","x-example":false}},"required":["provider"]}}}}}},"\/projects\/{projectId}\/platforms":{"get":{"summary":"List platforms","operationId":"projectsListPlatforms","tags":["projects"],"description":"","responses":{"200":{"description":"Platforms List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/platformList"}}}}},"x-appwrite":{"method":"listPlatforms","weight":158,"cookies":false,"type":"","demo":"projects\/list-platforms.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}]},"post":{"summary":"Create platform","operationId":"projectsCreatePlatform","tags":["projects"],"description":"","responses":{"201":{"description":"Platform","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/platform"}}}}},"x-appwrite":{"method":"createPlatform","weight":157,"cookies":false,"type":"","demo":"projects\/create-platform.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"type":{"type":"string","description":"Platform type.","x-example":"web","enum":["web","flutter-web","flutter-ios","flutter-android","flutter-linux","flutter-macos","flutter-windows","apple-ios","apple-macos","apple-watchos","apple-tvos","android","unity"],"x-enum-name":"PlatformType","x-enum-keys":[]},"name":{"type":"string","description":"Platform name. Max length: 128 chars.","x-example":"[NAME]"},"key":{"type":"string","description":"Package name for Android or bundle ID for iOS or macOS. Max length: 256 chars.","x-example":"[KEY]"},"store":{"type":"string","description":"App store or Google Play store ID. Max length: 256 chars.","x-example":"[STORE]"},"hostname":{"type":"string","description":"Platform client hostname. Max length: 256 chars.","x-example":null}},"required":["type","name"]}}}}}},"\/projects\/{projectId}\/platforms\/{platformId}":{"get":{"summary":"Get platform","operationId":"projectsGetPlatform","tags":["projects"],"description":"","responses":{"200":{"description":"Platform","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/platform"}}}}},"x-appwrite":{"method":"getPlatform","weight":159,"cookies":false,"type":"","demo":"projects\/get-platform.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"platformId","description":"Platform unique ID.","required":true,"schema":{"type":"string","x-example":"[PLATFORM_ID]"},"in":"path"}]},"put":{"summary":"Update platform","operationId":"projectsUpdatePlatform","tags":["projects"],"description":"","responses":{"200":{"description":"Platform","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/platform"}}}}},"x-appwrite":{"method":"updatePlatform","weight":160,"cookies":false,"type":"","demo":"projects\/update-platform.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"platformId","description":"Platform unique ID.","required":true,"schema":{"type":"string","x-example":"[PLATFORM_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Platform name. Max length: 128 chars.","x-example":"[NAME]"},"key":{"type":"string","description":"Package name for android or bundle ID for iOS. Max length: 256 chars.","x-example":"[KEY]"},"store":{"type":"string","description":"App store or Google Play store ID. Max length: 256 chars.","x-example":"[STORE]"},"hostname":{"type":"string","description":"Platform client URL. Max length: 256 chars.","x-example":null}},"required":["name"]}}}}},"delete":{"summary":"Delete platform","operationId":"projectsDeletePlatform","tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deletePlatform","weight":161,"cookies":false,"type":"","demo":"projects\/delete-platform.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"platformId","description":"Platform unique ID.","required":true,"schema":{"type":"string","x-example":"[PLATFORM_ID]"},"in":"path"}]}},"\/projects\/{projectId}\/service":{"patch":{"summary":"Update service status","operationId":"projectsUpdateServiceStatus","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateServiceStatus","weight":135,"cookies":false,"type":"","demo":"projects\/update-service-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"service":{"type":"string","description":"Service name.","x-example":"account","enum":["account","avatars","databases","locale","health","storage","teams","users","functions","graphql","messaging"],"x-enum-name":null,"x-enum-keys":[]},"status":{"type":"boolean","description":"Service status.","x-example":false}},"required":["service","status"]}}}}}},"\/projects\/{projectId}\/service\/all":{"patch":{"summary":"Update all service status","operationId":"projectsUpdateServiceStatusAll","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateServiceStatusAll","weight":136,"cookies":false,"type":"","demo":"projects\/update-service-status-all.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"status":{"type":"boolean","description":"Service status.","x-example":false}},"required":["status"]}}}}}},"\/projects\/{projectId}\/smtp":{"patch":{"summary":"Update SMTP configuration","operationId":"projectsUpdateSmtpConfiguration","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateSmtpConfiguration","weight":162,"cookies":false,"type":"","demo":"projects\/update-smtp-configuration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enable custom SMTP service","x-example":false},"senderName":{"type":"string","description":"Name of the email sender","x-example":"[SENDER_NAME]"},"senderEmail":{"type":"string","description":"Email of the sender","x-example":"email@example.com"},"replyTo":{"type":"string","description":"Reply to email","x-example":"email@example.com"},"host":{"type":"string","description":"SMTP server host name","x-example":null},"port":{"type":"integer","description":"SMTP server port","x-example":null},"username":{"type":"string","description":"SMTP server username","x-example":"[USERNAME]"},"password":{"type":"string","description":"SMTP server password","x-example":"[PASSWORD]"},"secure":{"type":"string","description":"Does SMTP server use secure connection","x-example":"tls","enum":["tls"],"x-enum-name":null,"x-enum-keys":[]}},"required":["enabled"]}}}}}},"\/projects\/{projectId}\/team":{"patch":{"summary":"Update Project Team","operationId":"projectsUpdateTeam","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateTeam","weight":134,"cookies":false,"type":"","demo":"projects\/update-team.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"teamId":{"type":"string","description":"Team ID of the team to transfer project to.","x-example":"[TEAM_ID]"}},"required":["teamId"]}}}}}},"\/projects\/{projectId}\/templates\/email\/{type}\/{locale}":{"get":{"summary":"Get custom email template","operationId":"projectsGetEmailTemplate","tags":["projects"],"description":"","responses":{"200":{"description":"EmailTemplate","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/emailTemplate"}}}}},"x-appwrite":{"method":"getEmailTemplate","weight":164,"cookies":false,"type":"","demo":"projects\/get-email-template.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"type","description":"Template type","required":true,"schema":{"type":"string","x-example":"verification","enum":["verification","magicsession","recovery","invitation"],"x-enum-name":null,"x-enum-keys":[]},"in":"path"},{"name":"locale","description":"Template locale","required":true,"schema":{"type":"string","x-example":"af","enum":["af","ar-ae","ar-bh","ar-dz","ar-eg","ar-iq","ar-jo","ar-kw","ar-lb","ar-ly","ar-ma","ar-om","ar-qa","ar-sa","ar-sy","ar-tn","ar-ye","as","az","be","bg","bh","bn","bs","ca","cs","cy","da","de","de-at","de-ch","de-li","de-lu","el","en","en-au","en-bz","en-ca","en-gb","en-ie","en-jm","en-nz","en-tt","en-us","en-za","eo","es","es-ar","es-bo","es-cl","es-co","es-cr","es-do","es-ec","es-gt","es-hn","es-mx","es-ni","es-pa","es-pe","es-pr","es-py","es-sv","es-uy","es-ve","et","eu","fa","fi","fo","fr","fr-be","fr-ca","fr-ch","fr-lu","ga","gd","he","hi","hr","hu","id","is","it","it-ch","ja","ji","ko","ku","lt","lv","mk","ml","ms","mt","nb","ne","nl","nl-be","nn","no","pa","pl","pt","pt-br","rm","ro","ro-md","ru","ru-md","sb","sk","sl","sq","sr","sv","sv-fi","th","tn","tr","ts","ua","ur","ve","vi","xh","zh-cn","zh-hk","zh-sg","zh-tw","zu"],"x-enum-name":null,"x-enum-keys":[]},"in":"path"}]},"patch":{"summary":"Update custom email templates","operationId":"projectsUpdateEmailTemplate","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateEmailTemplate","weight":166,"cookies":false,"type":"","demo":"projects\/update-email-template.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"type","description":"Template type","required":true,"schema":{"type":"string","x-example":"verification","enum":["verification","magicsession","recovery","invitation"],"x-enum-name":null,"x-enum-keys":[]},"in":"path"},{"name":"locale","description":"Template locale","required":true,"schema":{"type":"string","x-example":"af","enum":["af","ar-ae","ar-bh","ar-dz","ar-eg","ar-iq","ar-jo","ar-kw","ar-lb","ar-ly","ar-ma","ar-om","ar-qa","ar-sa","ar-sy","ar-tn","ar-ye","as","az","be","bg","bh","bn","bs","ca","cs","cy","da","de","de-at","de-ch","de-li","de-lu","el","en","en-au","en-bz","en-ca","en-gb","en-ie","en-jm","en-nz","en-tt","en-us","en-za","eo","es","es-ar","es-bo","es-cl","es-co","es-cr","es-do","es-ec","es-gt","es-hn","es-mx","es-ni","es-pa","es-pe","es-pr","es-py","es-sv","es-uy","es-ve","et","eu","fa","fi","fo","fr","fr-be","fr-ca","fr-ch","fr-lu","ga","gd","he","hi","hr","hu","id","is","it","it-ch","ja","ji","ko","ku","lt","lv","mk","ml","ms","mt","nb","ne","nl","nl-be","nn","no","pa","pl","pt","pt-br","rm","ro","ro-md","ru","ru-md","sb","sk","sl","sq","sr","sv","sv-fi","th","tn","tr","ts","ua","ur","ve","vi","xh","zh-cn","zh-hk","zh-sg","zh-tw","zu"],"x-enum-name":null,"x-enum-keys":[]},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"subject":{"type":"string","description":"Email Subject","x-example":"[SUBJECT]"},"message":{"type":"string","description":"Template message","x-example":"[MESSAGE]"},"senderName":{"type":"string","description":"Name of the email sender","x-example":"[SENDER_NAME]"},"senderEmail":{"type":"string","description":"Email of the sender","x-example":"email@example.com"},"replyTo":{"type":"string","description":"Reply to email","x-example":"email@example.com"}},"required":["subject","message"]}}}}},"delete":{"summary":"Reset custom email template","operationId":"projectsDeleteEmailTemplate","tags":["projects"],"description":"","responses":{"200":{"description":"EmailTemplate","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/emailTemplate"}}}}},"x-appwrite":{"method":"deleteEmailTemplate","weight":168,"cookies":false,"type":"","demo":"projects\/delete-email-template.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"type","description":"Template type","required":true,"schema":{"type":"string","x-example":"verification","enum":["verification","magicsession","recovery","invitation"],"x-enum-name":null,"x-enum-keys":[]},"in":"path"},{"name":"locale","description":"Template locale","required":true,"schema":{"type":"string","x-example":"af","enum":["af","ar-ae","ar-bh","ar-dz","ar-eg","ar-iq","ar-jo","ar-kw","ar-lb","ar-ly","ar-ma","ar-om","ar-qa","ar-sa","ar-sy","ar-tn","ar-ye","as","az","be","bg","bh","bn","bs","ca","cs","cy","da","de","de-at","de-ch","de-li","de-lu","el","en","en-au","en-bz","en-ca","en-gb","en-ie","en-jm","en-nz","en-tt","en-us","en-za","eo","es","es-ar","es-bo","es-cl","es-co","es-cr","es-do","es-ec","es-gt","es-hn","es-mx","es-ni","es-pa","es-pe","es-pr","es-py","es-sv","es-uy","es-ve","et","eu","fa","fi","fo","fr","fr-be","fr-ca","fr-ch","fr-lu","ga","gd","he","hi","hr","hu","id","is","it","it-ch","ja","ji","ko","ku","lt","lv","mk","ml","ms","mt","nb","ne","nl","nl-be","nn","no","pa","pl","pt","pt-br","rm","ro","ro-md","ru","ru-md","sb","sk","sl","sq","sr","sv","sv-fi","th","tn","tr","ts","ua","ur","ve","vi","xh","zh-cn","zh-hk","zh-sg","zh-tw","zu"],"x-enum-name":null,"x-enum-keys":[]},"in":"path"}]}},"\/projects\/{projectId}\/templates\/sms\/{type}\/{locale}":{"get":{"summary":"Get custom SMS template","operationId":"projectsGetSmsTemplate","tags":["projects"],"description":"","responses":{"200":{"description":"SmsTemplate","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/smsTemplate"}}}}},"x-appwrite":{"method":"getSmsTemplate","weight":163,"cookies":false,"type":"","demo":"projects\/get-sms-template.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"type","description":"Template type","required":true,"schema":{"type":"string","x-example":"verification","enum":["verification","login","invitation"],"x-enum-name":null,"x-enum-keys":[]},"in":"path"},{"name":"locale","description":"Template locale","required":true,"schema":{"type":"string","x-example":"af","enum":["af","ar-ae","ar-bh","ar-dz","ar-eg","ar-iq","ar-jo","ar-kw","ar-lb","ar-ly","ar-ma","ar-om","ar-qa","ar-sa","ar-sy","ar-tn","ar-ye","as","az","be","bg","bh","bn","bs","ca","cs","cy","da","de","de-at","de-ch","de-li","de-lu","el","en","en-au","en-bz","en-ca","en-gb","en-ie","en-jm","en-nz","en-tt","en-us","en-za","eo","es","es-ar","es-bo","es-cl","es-co","es-cr","es-do","es-ec","es-gt","es-hn","es-mx","es-ni","es-pa","es-pe","es-pr","es-py","es-sv","es-uy","es-ve","et","eu","fa","fi","fo","fr","fr-be","fr-ca","fr-ch","fr-lu","ga","gd","he","hi","hr","hu","id","is","it","it-ch","ja","ji","ko","ku","lt","lv","mk","ml","ms","mt","nb","ne","nl","nl-be","nn","no","pa","pl","pt","pt-br","rm","ro","ro-md","ru","ru-md","sb","sk","sl","sq","sr","sv","sv-fi","th","tn","tr","ts","ua","ur","ve","vi","xh","zh-cn","zh-hk","zh-sg","zh-tw","zu"],"x-enum-name":null,"x-enum-keys":[]},"in":"path"}]},"patch":{"summary":"Update custom SMS template","operationId":"projectsUpdateSmsTemplate","tags":["projects"],"description":"","responses":{"200":{"description":"SmsTemplate","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/smsTemplate"}}}}},"x-appwrite":{"method":"updateSmsTemplate","weight":165,"cookies":false,"type":"","demo":"projects\/update-sms-template.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"type","description":"Template type","required":true,"schema":{"type":"string","x-example":"verification","enum":["verification","login","invitation"],"x-enum-name":null,"x-enum-keys":[]},"in":"path"},{"name":"locale","description":"Template locale","required":true,"schema":{"type":"string","x-example":"af","enum":["af","ar-ae","ar-bh","ar-dz","ar-eg","ar-iq","ar-jo","ar-kw","ar-lb","ar-ly","ar-ma","ar-om","ar-qa","ar-sa","ar-sy","ar-tn","ar-ye","as","az","be","bg","bh","bn","bs","ca","cs","cy","da","de","de-at","de-ch","de-li","de-lu","el","en","en-au","en-bz","en-ca","en-gb","en-ie","en-jm","en-nz","en-tt","en-us","en-za","eo","es","es-ar","es-bo","es-cl","es-co","es-cr","es-do","es-ec","es-gt","es-hn","es-mx","es-ni","es-pa","es-pe","es-pr","es-py","es-sv","es-uy","es-ve","et","eu","fa","fi","fo","fr","fr-be","fr-ca","fr-ch","fr-lu","ga","gd","he","hi","hr","hu","id","is","it","it-ch","ja","ji","ko","ku","lt","lv","mk","ml","ms","mt","nb","ne","nl","nl-be","nn","no","pa","pl","pt","pt-br","rm","ro","ro-md","ru","ru-md","sb","sk","sl","sq","sr","sv","sv-fi","th","tn","tr","ts","ua","ur","ve","vi","xh","zh-cn","zh-hk","zh-sg","zh-tw","zu"],"x-enum-name":null,"x-enum-keys":[]},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Template message","x-example":"[MESSAGE]"}},"required":["message"]}}}}},"delete":{"summary":"Reset custom SMS template","operationId":"projectsDeleteSmsTemplate","tags":["projects"],"description":"","responses":{"200":{"description":"SmsTemplate","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/smsTemplate"}}}}},"x-appwrite":{"method":"deleteSmsTemplate","weight":167,"cookies":false,"type":"","demo":"projects\/delete-sms-template.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"type","description":"Template type","required":true,"schema":{"type":"string","x-example":"verification","enum":["verification","login","invitation"],"x-enum-name":null,"x-enum-keys":[]},"in":"path"},{"name":"locale","description":"Template locale","required":true,"schema":{"type":"string","x-example":"af","enum":["af","ar-ae","ar-bh","ar-dz","ar-eg","ar-iq","ar-jo","ar-kw","ar-lb","ar-ly","ar-ma","ar-om","ar-qa","ar-sa","ar-sy","ar-tn","ar-ye","as","az","be","bg","bh","bn","bs","ca","cs","cy","da","de","de-at","de-ch","de-li","de-lu","el","en","en-au","en-bz","en-ca","en-gb","en-ie","en-jm","en-nz","en-tt","en-us","en-za","eo","es","es-ar","es-bo","es-cl","es-co","es-cr","es-do","es-ec","es-gt","es-hn","es-mx","es-ni","es-pa","es-pe","es-pr","es-py","es-sv","es-uy","es-ve","et","eu","fa","fi","fo","fr","fr-be","fr-ca","fr-ch","fr-lu","ga","gd","he","hi","hr","hu","id","is","it","it-ch","ja","ji","ko","ku","lt","lv","mk","ml","ms","mt","nb","ne","nl","nl-be","nn","no","pa","pl","pt","pt-br","rm","ro","ro-md","ru","ru-md","sb","sk","sl","sq","sr","sv","sv-fi","th","tn","tr","ts","ua","ur","ve","vi","xh","zh-cn","zh-hk","zh-sg","zh-tw","zu"],"x-enum-name":null,"x-enum-keys":[]},"in":"path"}]}},"\/projects\/{projectId}\/usage":{"get":{"summary":"Get usage stats for a project","operationId":"projectsGetUsage","tags":["projects"],"description":"","responses":{"200":{"description":"UsageProject","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageProject"}}}}},"x-appwrite":{"method":"getUsage","weight":132,"cookies":false,"type":"","demo":"projects\/get-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"range","description":"Date range.","required":false,"schema":{"type":"string","x-example":"24h","enum":["24h","7d","30d","90d"],"x-enum-name":null,"x-enum-keys":[],"default":"30d"},"in":"query"}]}},"\/projects\/{projectId}\/webhooks":{"get":{"summary":"List webhooks","operationId":"projectsListWebhooks","tags":["projects"],"description":"","responses":{"200":{"description":"Webhooks List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/webhookList"}}}}},"x-appwrite":{"method":"listWebhooks","weight":147,"cookies":false,"type":"","demo":"projects\/list-webhooks.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}]},"post":{"summary":"Create webhook","operationId":"projectsCreateWebhook","tags":["projects"],"description":"","responses":{"201":{"description":"Webhook","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/webhook"}}}}},"x-appwrite":{"method":"createWebhook","weight":146,"cookies":false,"type":"","demo":"projects\/create-webhook.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Webhook name. Max length: 128 chars.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Enable or disable a webhook.","x-example":false},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"Webhook URL.","x-example":null},"security":{"type":"boolean","description":"Certificate verification, false for disabled or true for enabled.","x-example":false},"httpUser":{"type":"string","description":"Webhook HTTP user. Max length: 256 chars.","x-example":"[HTTP_USER]"},"httpPass":{"type":"string","description":"Webhook HTTP password. Max length: 256 chars.","x-example":"[HTTP_PASS]"}},"required":["name","events","url","security"]}}}}}},"\/projects\/{projectId}\/webhooks\/{webhookId}":{"get":{"summary":"Get webhook","operationId":"projectsGetWebhook","tags":["projects"],"description":"","responses":{"200":{"description":"Webhook","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/webhook"}}}}},"x-appwrite":{"method":"getWebhook","weight":148,"cookies":false,"type":"","demo":"projects\/get-webhook.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"webhookId","description":"Webhook unique ID.","required":true,"schema":{"type":"string","x-example":"[WEBHOOK_ID]"},"in":"path"}]},"put":{"summary":"Update webhook","operationId":"projectsUpdateWebhook","tags":["projects"],"description":"","responses":{"200":{"description":"Webhook","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/webhook"}}}}},"x-appwrite":{"method":"updateWebhook","weight":149,"cookies":false,"type":"","demo":"projects\/update-webhook.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"webhookId","description":"Webhook unique ID.","required":true,"schema":{"type":"string","x-example":"[WEBHOOK_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Webhook name. Max length: 128 chars.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Enable or disable a webhook.","x-example":false},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"Webhook URL.","x-example":null},"security":{"type":"boolean","description":"Certificate verification, false for disabled or true for enabled.","x-example":false},"httpUser":{"type":"string","description":"Webhook HTTP user. Max length: 256 chars.","x-example":"[HTTP_USER]"},"httpPass":{"type":"string","description":"Webhook HTTP password. Max length: 256 chars.","x-example":"[HTTP_PASS]"}},"required":["name","events","url","security"]}}}}},"delete":{"summary":"Delete webhook","operationId":"projectsDeleteWebhook","tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteWebhook","weight":151,"cookies":false,"type":"","demo":"projects\/delete-webhook.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"webhookId","description":"Webhook unique ID.","required":true,"schema":{"type":"string","x-example":"[WEBHOOK_ID]"},"in":"path"}]}},"\/projects\/{projectId}\/webhooks\/{webhookId}\/signature":{"patch":{"summary":"Update webhook signature key","operationId":"projectsUpdateWebhookSignature","tags":["projects"],"description":"","responses":{"200":{"description":"Webhook","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/webhook"}}}}},"x-appwrite":{"method":"updateWebhookSignature","weight":150,"cookies":false,"type":"","demo":"projects\/update-webhook-signature.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"webhookId","description":"Webhook unique ID.","required":true,"schema":{"type":"string","x-example":"[WEBHOOK_ID]"},"in":"path"}]}},"\/proxy\/rules":{"get":{"summary":"List Rules","operationId":"proxyListRules","tags":["proxy"],"description":"Get a list of all the proxy rules. You can use the query params to filter your results.","responses":{"200":{"description":"Rule List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/proxyRuleList"}}}}},"x-appwrite":{"method":"listRules","weight":276,"cookies":false,"type":"","demo":"proxy\/list-rules.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/proxy\/list-rules.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"rules.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: domain, resourceType, resourceId, url","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Rule","operationId":"proxyCreateRule","tags":["proxy"],"description":"Create a new proxy rule.","responses":{"201":{"description":"Rule","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/proxyRule"}}}}},"x-appwrite":{"method":"createRule","weight":275,"cookies":false,"type":"","demo":"proxy\/create-rule.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/proxy\/create-rule.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"rules.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"domain":{"type":"string","description":"Domain name.","x-example":null},"resourceType":{"type":"string","description":"Action definition for the rule. Possible values are \"api\", \"function\"","x-example":"api","enum":["api","function"],"x-enum-name":null,"x-enum-keys":[]},"resourceId":{"type":"string","description":"ID of resource for the action type. If resourceType is \"api\", leave empty. If resourceType is \"function\", provide ID of the function.","x-example":"[RESOURCE_ID]"}},"required":["domain","resourceType"]}}}}}},"\/proxy\/rules\/{ruleId}":{"get":{"summary":"Get Rule","operationId":"proxyGetRule","tags":["proxy"],"description":"Get a proxy rule by its unique ID.","responses":{"200":{"description":"Rule","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/proxyRule"}}}}},"x-appwrite":{"method":"getRule","weight":277,"cookies":false,"type":"","demo":"proxy\/get-rule.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/proxy\/get-rule.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"rules.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"ruleId","description":"Rule ID.","required":true,"schema":{"type":"string","x-example":"[RULE_ID]"},"in":"path"}]},"delete":{"summary":"Delete Rule","operationId":"proxyDeleteRule","tags":["proxy"],"description":"Delete a proxy rule by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteRule","weight":278,"cookies":false,"type":"","demo":"proxy\/delete-rule.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/proxy\/delete-rule.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"rules.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"ruleId","description":"Rule ID.","required":true,"schema":{"type":"string","x-example":"[RULE_ID]"},"in":"path"}]}},"\/proxy\/rules\/{ruleId}\/verification":{"patch":{"summary":"Update Rule Verification Status","operationId":"proxyUpdateRuleVerification","tags":["proxy"],"description":"","responses":{"200":{"description":"Rule","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/proxyRule"}}}}},"x-appwrite":{"method":"updateRuleVerification","weight":279,"cookies":false,"type":"","demo":"proxy\/update-rule-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"rules.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"ruleId","description":"Rule ID.","required":true,"schema":{"type":"string","x-example":"[RULE_ID]"},"in":"path"}]}},"\/storage\/buckets":{"get":{"summary":"List buckets","operationId":"storageListBuckets","tags":["storage"],"description":"Get a list of all the storage buckets. You can use the query params to filter your results.","responses":{"200":{"description":"Buckets List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/bucketList"}}}}},"x-appwrite":{"method":"listBuckets","weight":176,"cookies":false,"type":"","demo":"storage\/list-buckets.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/list-buckets.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: enabled, name, fileSecurity, maximumFileSize, encryption, antivirus","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create bucket","operationId":"storageCreateBucket","tags":["storage"],"description":"Create a new storage bucket.","responses":{"201":{"description":"Bucket","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/bucket"}}}}},"x-appwrite":{"method":"createBucket","weight":175,"cookies":false,"type":"","demo":"storage\/create-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"bucketId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, no user is granted with any permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":false},"enabled":{"type":"boolean","description":"Is bucket enabled? When set to 'disabled', users cannot access the files in this bucket but Server SDKs with and API key can still access the bucket. No files are lost when this is toggled.","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB.","x-example":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","x-example":"none","enum":["none","gzip","zstd"],"x-enum-name":null,"x-enum-keys":[]},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","x-example":false}},"required":["bucketId","name"]}}}}}},"\/storage\/buckets\/{bucketId}":{"get":{"summary":"Get bucket","operationId":"storageGetBucket","tags":["storage"],"description":"Get a storage bucket by its unique ID. This endpoint response returns a JSON object with the storage bucket metadata.","responses":{"200":{"description":"Bucket","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/bucket"}}}}},"x-appwrite":{"method":"getBucket","weight":177,"cookies":false,"type":"","demo":"storage\/get-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"bucketId","description":"Bucket unique ID.","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"}]},"put":{"summary":"Update bucket","operationId":"storageUpdateBucket","tags":["storage"],"description":"Update a storage bucket by its unique ID.","responses":{"200":{"description":"Bucket","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/bucket"}}}}},"x-appwrite":{"method":"updateBucket","weight":178,"cookies":false,"type":"","demo":"storage\/update-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"bucketId","description":"Bucket unique ID.","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Bucket name","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":false},"enabled":{"type":"boolean","description":"Is bucket enabled? When set to 'disabled', users cannot access the files in this bucket but Server SDKs with and API key can still access the bucket. No files are lost when this is toggled.","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB.","x-example":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","x-example":"none","enum":["none","gzip","zstd"],"x-enum-name":null,"x-enum-keys":[]},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","x-example":false}},"required":["name"]}}}}},"delete":{"summary":"Delete bucket","operationId":"storageDeleteBucket","tags":["storage"],"description":"Delete a storage bucket by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteBucket","weight":179,"cookies":false,"type":"","demo":"storage\/delete-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"bucketId","description":"Bucket unique ID.","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files":{"get":{"summary":"List files","operationId":"storageListFiles","tags":["storage"],"description":"Get a list of all the user files. You can use the query params to filter your results.","responses":{"200":{"description":"Files List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/fileList"}}}}},"x-appwrite":{"method":"listFiles","weight":181,"cookies":false,"type":"","demo":"storage\/list-files.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/list-files.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create file","operationId":"storageCreateFile","tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"createFile","weight":180,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId},chunkId:{chunkId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"}],"requestBody":{"content":{"multipart\/form-data":{"schema":{"type":"object","properties":{"fileId":{"type":"string","description":"File ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[FILE_ID]","x-upload-id":true},"file":{"type":"string","description":"Binary file. Appwrite SDKs provide helpers to handle file input. [Learn about file input](https:\/\/appwrite.io\/docs\/storage#file-input).","x-example":null},"permissions":{"type":"array","description":"An array of permission strings. By default, only the current user is granted all permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["fileId","file"]}}}}}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get file","operationId":"storageGetFile","tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"getFile","weight":182,"cookies":false,"type":"","demo":"storage\/get-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File ID.","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"}]},"put":{"summary":"Update file","operationId":"storageUpdateFile","tags":["storage"],"description":"Update a file by its unique ID. Only users with write permissions have access to update this resource.","responses":{"200":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"updateFile","weight":186,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File unique ID.","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Name of the file","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission string. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":187,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File ID.","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/download":{"get":{"summary":"Get file for download","operationId":"storageGetFileDownload","tags":["storage"],"description":"Get a file content by its unique ID. The endpoint response return with a 'Content-Disposition: attachment' header that tells the browser to start downloading the file to user downloads directory.","responses":{"200":{"description":"File"}},"x-appwrite":{"method":"getFileDownload","weight":184,"cookies":false,"type":"location","demo":"storage\/get-file-download.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-download.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File ID.","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/preview":{"get":{"summary":"Get file preview","operationId":"storageGetFilePreview","tags":["storage"],"description":"Get a file preview image. Currently, this method supports preview for image files (jpg, png, and gif), other supported formats, like pdf, docs, slides, and spreadsheets, will return the file icon image. You can also pass query string arguments for cutting and resizing your preview image. Preview is supported only for image files smaller than 10MB.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFilePreview","weight":183,"cookies":false,"type":"location","demo":"storage\/get-file-preview.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-preview.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File ID","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"},{"name":"width","description":"Resize preview image width, Pass an integer between 0 to 4000.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 4000.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"gravity","description":"Image crop gravity. Can be one of center,top-left,top,top-right,left,right,bottom-left,bottom,bottom-right","required":false,"schema":{"type":"string","x-example":"center","enum":["center","top-left","top","top-right","left","right","bottom-left","bottom","bottom-right"],"x-enum-name":"ImageGravity","x-enum-keys":[],"default":"center"},"in":"query"},{"name":"quality","description":"Preview image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"borderWidth","description":"Preview image border in pixels. Pass an integer between 0 to 100. Defaults to 0.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"borderColor","description":"Preview image border color. Use a valid HEX color, no # is needed for prefix.","required":false,"schema":{"type":"string","default":""},"in":"query"},{"name":"borderRadius","description":"Preview image border radius in pixels. Pass an integer between 0 to 4000.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"opacity","description":"Preview image opacity. Only works with images having an alpha channel (like png). Pass a number between 0 to 1.","required":false,"schema":{"type":"number","format":"float","x-example":0,"default":1},"in":"query"},{"name":"rotation","description":"Preview image rotation in degrees. Pass an integer between -360 and 360.","required":false,"schema":{"type":"integer","format":"int32","x-example":-360,"default":0},"in":"query"},{"name":"background","description":"Preview image background color. Only works with transparent images (png). Use a valid HEX color, no # is needed for prefix.","required":false,"schema":{"type":"string","default":""},"in":"query"},{"name":"output","description":"Output format type (jpeg, jpg, png, gif and webp).","required":false,"schema":{"type":"string","x-example":"jpg","enum":["jpg","jpeg","gif","png","webp"],"x-enum-name":"ImageFormat","x-enum-keys":[],"default":""},"in":"query"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/view":{"get":{"summary":"Get file for view","operationId":"storageGetFileView","tags":["storage"],"description":"Get a file content by its unique ID. This endpoint is similar to the download method but returns with no 'Content-Disposition: attachment' header.","responses":{"200":{"description":"File"}},"x-appwrite":{"method":"getFileView","weight":185,"cookies":false,"type":"location","demo":"storage\/get-file-view.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-view.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File ID.","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"}]}},"\/storage\/usage":{"get":{"summary":"Get usage stats for storage","operationId":"storageGetUsage","tags":["storage"],"description":"","responses":{"200":{"description":"StorageUsage","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageStorage"}}}}},"x-appwrite":{"method":"getUsage","weight":188,"cookies":false,"type":"","demo":"storage\/get-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"schema":{"type":"string","x-example":"24h","enum":["24h","7d","30d","90d"],"x-enum-name":null,"x-enum-keys":["Twenty Four Hours","Seven Days","Thirty Days","Ninety Days"],"default":"30d"},"in":"query"}]}},"\/storage\/{bucketId}\/usage":{"get":{"summary":"Get usage stats for a storage bucket","operationId":"storageGetBucketUsage","tags":["storage"],"description":"","responses":{"200":{"description":"UsageBuckets","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageBuckets"}}}}},"x-appwrite":{"method":"getBucketUsage","weight":189,"cookies":false,"type":"","demo":"storage\/get-bucket-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"bucketId","description":"Bucket ID.","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"range","description":"Date range.","required":false,"schema":{"type":"string","x-example":"24h","enum":["24h","7d","30d","90d"],"x-enum-name":null,"x-enum-keys":["Twenty Four Hours","Seven Days","Thirty Days","Ninety Days"],"default":"30d"},"in":"query"}]}},"\/teams":{"get":{"summary":"List teams","operationId":"teamsList","tags":["teams"],"description":"Get a list of all the teams in which the current user is a member. You can use the parameters to filter your results.","responses":{"200":{"description":"Teams List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/teamList"}}}}},"x-appwrite":{"method":"list","weight":191,"cookies":false,"type":"","demo":"teams\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-teams.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create team","operationId":"teamsCreate","tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"create","weight":190,"cookies":false,"type":"","demo":"teams\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/create-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"teamId":{"type":"string","description":"Team ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[TEAM_ID]"},"name":{"type":"string","description":"Team name. Max length: 128 chars.","x-example":"[NAME]"},"roles":{"type":"array","description":"Array of strings. Use this param to set the roles in the team for the user who created it. The default role is **owner**. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}}}}},"\/teams\/{teamId}":{"get":{"summary":"Get team","operationId":"teamsGet","tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"get","weight":192,"cookies":false,"type":"","demo":"teams\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams","offline-key":"{teamId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}]},"put":{"summary":"Update name","operationId":"teamsUpdateName","tags":["teams"],"description":"Update the team's name by its unique ID.","responses":{"200":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"updateName","weight":194,"cookies":false,"type":"","demo":"teams\/update-name.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-name.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams","offline-key":"{teamId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"New team name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["name"]}}}}},"delete":{"summary":"Delete team","operationId":"teamsDelete","tags":["teams"],"description":"Delete a team using its ID. Only team members with the owner role can delete the team.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":196,"cookies":false,"type":"","demo":"teams\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/delete-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}]}},"\/teams\/{teamId}\/logs":{"get":{"summary":"List team logs","operationId":"teamsListLogs","tags":["teams"],"description":"Get the team activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listLogs","weight":203,"cookies":false,"type":"","demo":"teams\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/teams\/{teamId}\/memberships":{"get":{"summary":"List team memberships","operationId":"teamsListMemberships","tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"listMemberships","weight":198,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/memberships","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create team membership","operationId":"teamsCreateMembership","tags":["teams"],"description":"Invite a new member to join your team. Provide an ID for existing users, or invite unregistered users using an email or phone number. If initiated from a Client SDK, Appwrite will send an email or sms with a link to join the team to the invited user, and an account will be created for them if one doesn't exist. If initiated from a Server SDK, the new member will be added automatically to the team.\n\nYou only need to provide one of a user ID, email, or phone number. Appwrite will prioritize accepting the user ID > email > phone number if you provide more than one of these parameters.\n\nUse the `url` parameter to redirect the user from the invitation email to your app. After the user is redirected, use the [Update Team Membership Status](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/teams#updateMembershipStatus) endpoint to allow the user to accept the invitation to the team. \n\nPlease note that to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) Appwrite will accept the only redirect URLs under the domains you have added as a platform on the Appwrite Console.\n","responses":{"201":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"createMembership","weight":197,"cookies":false,"type":"","demo":"teams\/create-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/create-team-membership.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"email":{"type":"string","description":"Email of the new team member.","x-example":"email@example.com"},"userId":{"type":"string","description":"ID of the user to be added to a team.","x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"roles":{"type":"array","description":"Array of strings. Use this param to set the user roles in the team. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"},"name":{"type":"string","description":"Name of the new team member. Max length: 128 chars.","x-example":"[NAME]"}},"required":["roles"]}}}}}},"\/teams\/{teamId}\/memberships\/{membershipId}":{"get":{"summary":"Get team membership","operationId":"teamsGetMembership","tags":["teams"],"description":"Get a team member by the membership unique id. All team members have read access for this resource.","responses":{"200":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"getMembership","weight":199,"cookies":false,"type":"","demo":"teams\/get-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-member.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/memberships","offline-key":"{membershipId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"schema":{"type":"string","x-example":"[MEMBERSHIP_ID]"},"in":"path"}]},"patch":{"summary":"Update membership","operationId":"teamsUpdateMembership","tags":["teams"],"description":"Modify the roles of a team member. Only team members with the owner role have access to this endpoint. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions).\n","responses":{"200":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"updateMembership","weight":200,"cookies":false,"type":"","demo":"teams\/update-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"schema":{"type":"string","x-example":"[MEMBERSHIP_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"roles":{"type":"array","description":"An array of strings. Use this param to set the user's roles in the team. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["roles"]}}}}},"delete":{"summary":"Delete team membership","operationId":"teamsDeleteMembership","tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":202,"cookies":false,"type":"","demo":"teams\/delete-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/delete-team-membership.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"schema":{"type":"string","x-example":"[MEMBERSHIP_ID]"},"in":"path"}]}},"\/teams\/{teamId}\/memberships\/{membershipId}\/status":{"patch":{"summary":"Update team membership status","operationId":"teamsUpdateMembershipStatus","tags":["teams"],"description":"Use this endpoint to allow a user to accept an invitation to join a team after being redirected back to your app from the invitation email received by the user.\n\nIf the request is successful, a session for the user is automatically created.\n","responses":{"200":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"updateMembershipStatus","weight":201,"cookies":false,"type":"","demo":"teams\/update-membership-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"public","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"schema":{"type":"string","x-example":"[MEMBERSHIP_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Secret key.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/teams\/{teamId}\/prefs":{"get":{"summary":"Get team preferences","operationId":"teamsGetPrefs","tags":["teams"],"description":"Get the team's shared preferences by its unique ID. If a preference doesn't need to be shared by all team members, prefer storing them in [user preferences](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#getPrefs).","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"getPrefs","weight":193,"cookies":false,"type":"","demo":"teams\/get-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/prefs","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}]},"put":{"summary":"Update preferences","operationId":"teamsUpdatePrefs","tags":["teams"],"description":"Update the team's preferences by its unique ID. The object you pass is stored as is and replaces any previous value. The maximum allowed prefs size is 64kB and throws an error if exceeded.","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"updatePrefs","weight":195,"cookies":false,"type":"","demo":"teams\/update-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/prefs","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"prefs":{"type":"object","description":"Prefs key-value JSON object.","x-example":"{}"}},"required":["prefs"]}}}}}},"\/users":{"get":{"summary":"List users","operationId":"usersList","tags":["users"],"description":"Get a list of all the project's users. You can use the query params to filter your results.","responses":{"200":{"description":"Users List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/userList"}}}}},"x-appwrite":{"method":"list","weight":213,"cookies":false,"type":"","demo":"users\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-users.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, email, phone, status, passwordUpdate, registration, emailVerification, phoneVerification","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create user","operationId":"usersCreate","tags":["users"],"description":"Create a new user.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"create","weight":204,"cookies":false,"type":"","demo":"users\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"password":{"type":"string","description":"Plain text user password. Must be at least 8 chars.","x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId"]}}}}}},"\/users\/argon2":{"post":{"summary":"Create user with Argon2 password","operationId":"usersCreateArgon2User","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Argon2](https:\/\/en.wikipedia.org\/wiki\/Argon2) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createArgon2User","weight":207,"cookies":false,"type":"","demo":"users\/create-argon2user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-argon2-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Argon2.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/bcrypt":{"post":{"summary":"Create user with bcrypt password","operationId":"usersCreateBcryptUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Bcrypt](https:\/\/en.wikipedia.org\/wiki\/Bcrypt) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createBcryptUser","weight":205,"cookies":false,"type":"","demo":"users\/create-bcrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-bcrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Bcrypt.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/identities":{"get":{"summary":"List Identities","operationId":"usersListIdentities","tags":["users"],"description":"Get identities for all users.","responses":{"200":{"description":"Identities List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/identityList"}}}}},"x-appwrite":{"method":"listIdentities","weight":221,"cookies":false,"type":"","demo":"users\/list-identities.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-identities.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, provider, providerUid, providerEmail, providerAccessTokenExpiry","required":false,"schema":{"type":"string","default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]}},"\/users\/identities\/{identityId}":{"delete":{"summary":"Delete identity","operationId":"usersDeleteIdentity","tags":["users"],"description":"Delete an identity by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIdentity","weight":238,"cookies":false,"type":"","demo":"users\/delete-identity.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-identity.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"identityId","description":"Identity ID.","required":true,"schema":{"type":"string","x-example":"[IDENTITY_ID]"},"in":"path"}]}},"\/users\/md5":{"post":{"summary":"Create user with MD5 password","operationId":"usersCreateMD5User","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [MD5](https:\/\/en.wikipedia.org\/wiki\/MD5) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createMD5User","weight":206,"cookies":false,"type":"","demo":"users\/create-m-d5user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-md5-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using MD5.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/phpass":{"post":{"summary":"Create user with PHPass password","operationId":"usersCreatePHPassUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [PHPass](https:\/\/www.openwall.com\/phpass\/) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createPHPassUser","weight":209,"cookies":false,"type":"","demo":"users\/create-p-h-pass-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-phpass-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or pass the string `ID.unique()`to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using PHPass.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/scrypt":{"post":{"summary":"Create user with Scrypt password","operationId":"usersCreateScryptUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt](https:\/\/github.com\/Tarsnap\/scrypt) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createScryptUser","weight":210,"cookies":false,"type":"","demo":"users\/create-scrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt.","x-example":"password"},"passwordSalt":{"type":"string","description":"Optional salt used to hash password.","x-example":"[PASSWORD_SALT]"},"passwordCpu":{"type":"integer","description":"Optional CPU cost used to hash password.","x-example":null},"passwordMemory":{"type":"integer","description":"Optional memory cost used to hash password.","x-example":null},"passwordParallel":{"type":"integer","description":"Optional parallelization cost used to hash password.","x-example":null},"passwordLength":{"type":"integer","description":"Optional hash length used to hash password.","x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordCpu","passwordMemory","passwordParallel","passwordLength"]}}}}}},"\/users\/scrypt-modified":{"post":{"summary":"Create user with Scrypt modified password","operationId":"usersCreateScryptModifiedUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt Modified](https:\/\/gist.github.com\/Meldiron\/eecf84a0225eccb5a378d45bb27462cc) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createScryptModifiedUser","weight":211,"cookies":false,"type":"","demo":"users\/create-scrypt-modified-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-modified-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt Modified.","x-example":"password"},"passwordSalt":{"type":"string","description":"Salt used to hash password.","x-example":"[PASSWORD_SALT]"},"passwordSaltSeparator":{"type":"string","description":"Salt separator used to hash password.","x-example":"[PASSWORD_SALT_SEPARATOR]"},"passwordSignerKey":{"type":"string","description":"Signer key used to hash password.","x-example":"[PASSWORD_SIGNER_KEY]"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordSaltSeparator","passwordSignerKey"]}}}}}},"\/users\/sha":{"post":{"summary":"Create user with SHA password","operationId":"usersCreateSHAUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [SHA](https:\/\/en.wikipedia.org\/wiki\/Secure_Hash_Algorithm) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createSHAUser","weight":208,"cookies":false,"type":"","demo":"users\/create-s-h-a-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-sha-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using SHA.","x-example":"password"},"passwordVersion":{"type":"string","description":"Optional SHA version used to hash password. Allowed values are: 'sha1', 'sha224', 'sha256', 'sha384', 'sha512\/224', 'sha512\/256', 'sha512', 'sha3-224', 'sha3-256', 'sha3-384', 'sha3-512'","x-example":"sha1","enum":["sha1","sha224","sha256","sha384","sha512\/224","sha512\/256","sha512","sha3-224","sha3-256","sha3-384","sha3-512"],"x-enum-name":null,"x-enum-keys":[]},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/usage":{"get":{"summary":"Get usage stats for the users API","operationId":"usersGetUsage","tags":["users"],"description":"","responses":{"200":{"description":"UsageUsers","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageUsers"}}}}},"x-appwrite":{"method":"getUsage","weight":239,"cookies":false,"type":"","demo":"users\/get-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"schema":{"type":"string","x-example":"24h","enum":["24h","7d","30d","90d"],"x-enum-name":null,"x-enum-keys":["Twenty Four Hours","Seven Days","Thirty Days","Ninety Days"],"default":"30d"},"in":"query"},{"name":"provider","description":"Provider Name.","required":false,"schema":{"type":"string","x-example":"email","default":""},"in":"query"}]}},"\/users\/{userId}":{"get":{"summary":"Get user","operationId":"usersGet","tags":["users"],"description":"Get a user by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"get","weight":214,"cookies":false,"type":"","demo":"users\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]},"delete":{"summary":"Delete user","operationId":"usersDelete","tags":["users"],"description":"Delete a user by its unique ID, thereby releasing it's ID. Since ID is released and can be reused, all user-related resources like documents or storage files should be deleted before user deletion. If you want to keep ID reserved, use the [updateStatus](https:\/\/appwrite.io\/docs\/server\/users#usersUpdateStatus) endpoint instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":236,"cookies":false,"type":"","demo":"users\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]}},"\/users\/{userId}\/email":{"patch":{"summary":"Update email","operationId":"usersUpdateEmail","tags":["users"],"description":"Update the user email by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateEmail","weight":227,"cookies":false,"type":"","demo":"users\/update-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","x-example":"email@example.com"}},"required":["email"]}}}}}},"\/users\/{userId}\/labels":{"put":{"summary":"Update user labels","operationId":"usersUpdateLabels","tags":["users"],"description":"Update the user labels by its unique ID. \n\nLabels can be used to grant access to resources. While teams are a way for user's to share access to a resource, labels can be defined by the developer to grant access without an invitation. See the [Permissions docs](https:\/\/appwrite.io\/docs\/permissions) for more info.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateLabels","weight":223,"cookies":false,"type":"","demo":"users\/update-labels.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-labels.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"labels":{"type":"array","description":"Array of user labels. Replaces the previous labels. Maximum of 100 labels are allowed, each up to 36 alphanumeric characters long.","x-example":null,"items":{"type":"string"}}},"required":["labels"]}}}}}},"\/users\/{userId}\/logs":{"get":{"summary":"List user logs","operationId":"usersListLogs","tags":["users"],"description":"Get the user activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listLogs","weight":219,"cookies":false,"type":"","demo":"users\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/users\/{userId}\/memberships":{"get":{"summary":"List user memberships","operationId":"usersListMemberships","tags":["users"],"description":"Get the user membership list by its unique ID.","responses":{"200":{"description":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"listMemberships","weight":218,"cookies":false,"type":"","demo":"users\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-memberships.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]}},"\/users\/{userId}\/name":{"patch":{"summary":"Update name","operationId":"usersUpdateName","tags":["users"],"description":"Update the user name by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateName","weight":225,"cookies":false,"type":"","demo":"users\/update-name.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-name.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["name"]}}}}}},"\/users\/{userId}\/password":{"patch":{"summary":"Update password","operationId":"usersUpdatePassword","tags":["users"],"description":"Update the user password by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePassword","weight":226,"cookies":false,"type":"","demo":"users\/update-password.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-password.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"password":{"type":"string","description":"New user password. Must be at least 8 chars.","x-example":null}},"required":["password"]}}}}}},"\/users\/{userId}\/phone":{"patch":{"summary":"Update phone","operationId":"usersUpdatePhone","tags":["users"],"description":"Update the user phone by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePhone","weight":228,"cookies":false,"type":"","demo":"users\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"number":{"type":"string","description":"User phone number.","x-example":"+12065550100"}},"required":["number"]}}}}}},"\/users\/{userId}\/prefs":{"get":{"summary":"Get user preferences","operationId":"usersGetPrefs","tags":["users"],"description":"Get the user preferences by its unique ID.","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"getPrefs","weight":215,"cookies":false,"type":"","demo":"users\/get-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]},"patch":{"summary":"Update user preferences","operationId":"usersUpdatePrefs","tags":["users"],"description":"Update the user preferences by its unique ID. The object you pass is stored as is, and replaces any previous value. The maximum allowed prefs size is 64kB and throws error if exceeded.","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"updatePrefs","weight":230,"cookies":false,"type":"","demo":"users\/update-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"prefs":{"type":"object","description":"Prefs key-value JSON object.","x-example":"{}"}},"required":["prefs"]}}}}}},"\/users\/{userId}\/sessions":{"get":{"summary":"List user sessions","operationId":"usersListSessions","tags":["users"],"description":"Get the user sessions list by its unique ID.","responses":{"200":{"description":"Sessions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/sessionList"}}}}},"x-appwrite":{"method":"listSessions","weight":217,"cookies":false,"type":"","demo":"users\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]},"post":{"summary":"Create session","operationId":"usersCreateSession","tags":["users"],"description":"Creates a session for a user. Returns an immediately usable session object.\n\nIf you want to generate a token for a custom authentication flow, use the [POST \/users\/{userId}\/tokens](https:\/\/appwrite.io\/docs\/server\/users#createToken) endpoint.","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"createSession","weight":232,"cookies":false,"type":"","demo":"users\/create-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-session.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]},"delete":{"summary":"Delete user sessions","operationId":"usersDeleteSessions","tags":["users"],"description":"Delete all user's sessions by using the user's unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":235,"cookies":false,"type":"","demo":"users\/delete-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]}},"\/users\/{userId}\/sessions\/{sessionId}":{"delete":{"summary":"Delete user session","operationId":"usersDeleteSession","tags":["users"],"description":"Delete a user sessions by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSession","weight":234,"cookies":false,"type":"","demo":"users\/delete-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-user-session.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"sessionId","description":"Session ID.","required":true,"schema":{"type":"string","x-example":"[SESSION_ID]"},"in":"path"}]}},"\/users\/{userId}\/status":{"patch":{"summary":"Update user status","operationId":"usersUpdateStatus","tags":["users"],"description":"Update the user status by its unique ID. Use this endpoint as an alternative to deleting a user if you want to keep user's ID reserved.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateStatus","weight":222,"cookies":false,"type":"","demo":"users\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"status":{"type":"boolean","description":"User Status. To activate the user pass `true` and to block the user pass `false`.","x-example":false}},"required":["status"]}}}}}},"\/users\/{userId}\/targets":{"get":{"summary":"List User Targets","operationId":"usersListTargets","tags":["users"],"description":"","responses":{"200":{"description":"Target list","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/targetList"}}}}},"x-appwrite":{"method":"listTargets","weight":220,"cookies":false,"type":"","demo":"users\/list-targets.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-targets.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.read","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, email, phone, status, passwordUpdate, registration, emailVerification, phoneVerification","required":false,"schema":{"type":"string","default":[]},"in":"query"}]},"post":{"summary":"Create User Target","operationId":"usersCreateTarget","tags":["users"],"description":"","responses":{"201":{"description":"Target","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/target"}}}}},"x-appwrite":{"method":"createTarget","weight":212,"cookies":false,"type":"","demo":"users\/create-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-target.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"targetId":{"type":"string","description":"Target ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[TARGET_ID]"},"providerType":{"type":"string","description":"The target provider type. Can be one of the following: `email`, `sms` or `push`.","x-example":"email","enum":["email","sms","push"],"x-enum-name":null,"x-enum-keys":[]},"identifier":{"type":"string","description":"The target identifier (token, email, phone etc.)","x-example":"[IDENTIFIER]"},"providerId":{"type":"string","description":"Provider ID. Message will be sent to this target from the specified provider ID. If no provider ID is set the first setup provider will be used.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Target name. Max length: 128 chars. For example: My Awesome App Galaxy S23.","x-example":"[NAME]"}},"required":["targetId","providerType","identifier"]}}}}}},"\/users\/{userId}\/targets\/{targetId}":{"get":{"summary":"Get User Target","operationId":"usersGetTarget","tags":["users"],"description":"","responses":{"200":{"description":"Target","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/target"}}}}},"x-appwrite":{"method":"getTarget","weight":216,"cookies":false,"type":"","demo":"users\/get-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-target.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.read","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"targetId","description":"Target ID.","required":true,"schema":{"type":"string","x-example":"[TARGET_ID]"},"in":"path"}]},"patch":{"summary":"Update User target","operationId":"usersUpdateTarget","tags":["users"],"description":"","responses":{"200":{"description":"Target","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/target"}}}}},"x-appwrite":{"method":"updateTarget","weight":231,"cookies":false,"type":"","demo":"users\/update-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-target.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"targetId","description":"Target ID.","required":true,"schema":{"type":"string","x-example":"[TARGET_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"identifier":{"type":"string","description":"The target identifier (token, email, phone etc.)","x-example":"[IDENTIFIER]"},"providerId":{"type":"string","description":"Provider ID. Message will be sent to this target from the specified provider ID. If no provider ID is set the first setup provider will be used.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Target name. Max length: 128 chars. For example: My Awesome App Galaxy S23.","x-example":"[NAME]"}}}}}}},"delete":{"summary":"Delete user target","operationId":"usersDeleteTarget","tags":["users"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteTarget","weight":237,"cookies":false,"type":"","demo":"users\/delete-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-target.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"targetId","description":"Target ID.","required":true,"schema":{"type":"string","x-example":"[TARGET_ID]"},"in":"path"}]}},"\/users\/{userId}\/tokens":{"post":{"summary":"Create token","operationId":"usersCreateToken","tags":["users"],"description":"Returns a token with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [PUT \/account\/sessions\/custom](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateCustomSession) endpoint to complete the login process.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createToken","weight":233,"cookies":false,"type":"","demo":"users\/create-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-token.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"length":{"type":"integer","description":"Token length in characters. The default length is 6 characters","x-example":4},"expire":{"type":"integer","description":"Token expiration period in seconds. The default expiration is 15 minutes.","x-example":60}}}}}}}},"\/users\/{userId}\/verification":{"patch":{"summary":"Update email verification","operationId":"usersUpdateEmailVerification","tags":["users"],"description":"Update the user email verification status by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateEmailVerification","weight":229,"cookies":false,"type":"","demo":"users\/update-email-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-email-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"emailVerification":{"type":"boolean","description":"User email verification status.","x-example":false}},"required":["emailVerification"]}}}}}},"\/users\/{userId}\/verification\/phone":{"patch":{"summary":"Update phone verification","operationId":"usersUpdatePhoneVerification","tags":["users"],"description":"Update the user phone verification status by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePhoneVerification","weight":224,"cookies":false,"type":"","demo":"users\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"phoneVerification":{"type":"boolean","description":"User phone verification status.","x-example":false}},"required":["phoneVerification"]}}}}}},"\/vcs\/github\/installations\/{installationId}\/providerRepositories":{"get":{"summary":"List Repositories","operationId":"vcsListRepositories","tags":["vcs"],"description":"","responses":{"200":{"description":"Provider Repositories List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/providerRepositoryList"}}}}},"x-appwrite":{"method":"listRepositories","weight":243,"cookies":false,"type":"","demo":"vcs\/list-repositories.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"schema":{"type":"string","x-example":"[INSTALLATION_ID]"},"in":"path"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create repository","operationId":"vcsCreateRepository","tags":["vcs"],"description":"","responses":{"200":{"description":"ProviderRepository","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/providerRepository"}}}}},"x-appwrite":{"method":"createRepository","weight":244,"cookies":false,"type":"","demo":"vcs\/create-repository.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"schema":{"type":"string","x-example":"[INSTALLATION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Repository name (slug)","x-example":"[NAME]"},"private":{"type":"boolean","description":"Mark repository public or private","x-example":false}},"required":["name","private"]}}}}}},"\/vcs\/github\/installations\/{installationId}\/providerRepositories\/{providerRepositoryId}":{"get":{"summary":"Get repository","operationId":"vcsGetRepository","tags":["vcs"],"description":"","responses":{"200":{"description":"ProviderRepository","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/providerRepository"}}}}},"x-appwrite":{"method":"getRepository","weight":245,"cookies":false,"type":"","demo":"vcs\/get-repository.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"schema":{"type":"string","x-example":"[INSTALLATION_ID]"},"in":"path"},{"name":"providerRepositoryId","description":"Repository Id","required":true,"schema":{"type":"string","x-example":"[PROVIDER_REPOSITORY_ID]"},"in":"path"}]}},"\/vcs\/github\/installations\/{installationId}\/providerRepositories\/{providerRepositoryId}\/branches":{"get":{"summary":"List Repository Branches","operationId":"vcsListRepositoryBranches","tags":["vcs"],"description":"","responses":{"200":{"description":"Branches List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/branchList"}}}}},"x-appwrite":{"method":"listRepositoryBranches","weight":246,"cookies":false,"type":"","demo":"vcs\/list-repository-branches.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"schema":{"type":"string","x-example":"[INSTALLATION_ID]"},"in":"path"},{"name":"providerRepositoryId","description":"Repository Id","required":true,"schema":{"type":"string","x-example":"[PROVIDER_REPOSITORY_ID]"},"in":"path"}]}},"\/vcs\/github\/installations\/{installationId}\/providerRepositories\/{providerRepositoryId}\/detection":{"post":{"summary":"Detect runtime settings from source code","operationId":"vcsCreateRepositoryDetection","tags":["vcs"],"description":"","responses":{"200":{"description":"Detection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/detection"}}}}},"x-appwrite":{"method":"createRepositoryDetection","weight":242,"cookies":false,"type":"","demo":"vcs\/create-repository-detection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"schema":{"type":"string","x-example":"[INSTALLATION_ID]"},"in":"path"},{"name":"providerRepositoryId","description":"Repository Id","required":true,"schema":{"type":"string","x-example":"[PROVIDER_REPOSITORY_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerRootDirectory":{"type":"string","description":"Path to Root Directory","x-example":"[PROVIDER_ROOT_DIRECTORY]"}}}}}}}},"\/vcs\/github\/installations\/{installationId}\/repositories\/{repositoryId}":{"patch":{"summary":"Authorize external deployment","operationId":"vcsUpdateExternalDeployments","tags":["vcs"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"updateExternalDeployments","weight":251,"cookies":false,"type":"","demo":"vcs\/update-external-deployments.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"schema":{"type":"string","x-example":"[INSTALLATION_ID]"},"in":"path"},{"name":"repositoryId","description":"VCS Repository Id","required":true,"schema":{"type":"string","x-example":"[REPOSITORY_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerPullRequestId":{"type":"string","description":"GitHub Pull Request Id","x-example":"[PROVIDER_PULL_REQUEST_ID]"}},"required":["providerPullRequestId"]}}}}}},"\/vcs\/installations":{"get":{"summary":"List installations","operationId":"vcsListInstallations","tags":["vcs"],"description":"","responses":{"200":{"description":"Installations List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/installationList"}}}}},"x-appwrite":{"method":"listInstallations","weight":248,"cookies":false,"type":"","demo":"vcs\/list-installations.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/vcs\/list-installations.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: provider, organization","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]}},"\/vcs\/installations\/{installationId}":{"get":{"summary":"Get installation","operationId":"vcsGetInstallation","tags":["vcs"],"description":"","responses":{"200":{"description":"Installation","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/installation"}}}}},"x-appwrite":{"method":"getInstallation","weight":249,"cookies":false,"type":"","demo":"vcs\/get-installation.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/vcs\/get-installation.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"schema":{"type":"string","x-example":"[INSTALLATION_ID]"},"in":"path"}]},"delete":{"summary":"Delete Installation","operationId":"vcsDeleteInstallation","tags":["vcs"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteInstallation","weight":250,"cookies":false,"type":"","demo":"vcs\/delete-installation.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/vcs\/delete-installation.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"schema":{"type":"string","x-example":"[INSTALLATION_ID]"},"in":"path"}]}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"project","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]},{"name":"proxy","description":"The Proxy Service allows you to configure actions for your domains beyond DNS configuration.","x-globalAttributes":[]},{"name":"graphql","description":"The GraphQL API allows you to query and mutate your Appwrite server using GraphQL.","x-globalAttributes":[]},{"name":"console","description":"The Console service allows you to interact with console relevant informations.","x-globalAttributes":[]},{"name":"migrations","description":"The Migrations service allows you to migrate third-party data to your Appwrite project.","x-globalAttributes":[]},{"name":"messaging","description":"The Messaging service allows you to send messages to any provider type (SMTP, push notification, SMS, etc.).","x-globalAttributes":[]}],"components":{"schemas":{"any":{"description":"Any","type":"object","additionalProperties":true},"error":{"description":"Error","type":"object","properties":{"message":{"type":"string","description":"Error message.","x-example":"Not found"},"code":{"type":"string","description":"Error code.","x-example":"404"},"type":{"type":"string","description":"Error type. You can learn more about all the error types at https:\/\/appwrite.io\/docs\/error-codes#errorTypes","x-example":"not_found"},"version":{"type":"string","description":"Server version number.","x-example":"1.0"}},"required":["message","code","type","version"]},"documentList":{"description":"Documents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of documents documents that matched your query.","x-example":5,"format":"int32"},"documents":{"type":"array","description":"List of documents.","items":{"$ref":"#\/components\/schemas\/document"},"x-example":""}},"required":["total","documents"]},"collectionList":{"description":"Collections List","type":"object","properties":{"total":{"type":"integer","description":"Total number of collections documents that matched your query.","x-example":5,"format":"int32"},"collections":{"type":"array","description":"List of collections.","items":{"$ref":"#\/components\/schemas\/collection"},"x-example":""}},"required":["total","collections"]},"databaseList":{"description":"Databases List","type":"object","properties":{"total":{"type":"integer","description":"Total number of databases documents that matched your query.","x-example":5,"format":"int32"},"databases":{"type":"array","description":"List of databases.","items":{"$ref":"#\/components\/schemas\/database"},"x-example":""}},"required":["total","databases"]},"indexList":{"description":"Indexes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of indexes documents that matched your query.","x-example":5,"format":"int32"},"indexes":{"type":"array","description":"List of indexes.","items":{"$ref":"#\/components\/schemas\/index"},"x-example":""}},"required":["total","indexes"]},"userList":{"description":"Users List","type":"object","properties":{"total":{"type":"integer","description":"Total number of users documents that matched your query.","x-example":5,"format":"int32"},"users":{"type":"array","description":"List of users.","items":{"$ref":"#\/components\/schemas\/user"},"x-example":""}},"required":["total","users"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of sessions documents that matched your query.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"$ref":"#\/components\/schemas\/session"},"x-example":""}},"required":["total","sessions"]},"identityList":{"description":"Identities List","type":"object","properties":{"total":{"type":"integer","description":"Total number of identities documents that matched your query.","x-example":5,"format":"int32"},"identities":{"type":"array","description":"List of identities.","items":{"$ref":"#\/components\/schemas\/identity"},"x-example":""}},"required":["total","identities"]},"logList":{"description":"Logs List","type":"object","properties":{"total":{"type":"integer","description":"Total number of logs documents that matched your query.","x-example":5,"format":"int32"},"logs":{"type":"array","description":"List of logs.","items":{"$ref":"#\/components\/schemas\/log"},"x-example":""}},"required":["total","logs"]},"fileList":{"description":"Files List","type":"object","properties":{"total":{"type":"integer","description":"Total number of files documents that matched your query.","x-example":5,"format":"int32"},"files":{"type":"array","description":"List of files.","items":{"$ref":"#\/components\/schemas\/file"},"x-example":""}},"required":["total","files"]},"bucketList":{"description":"Buckets List","type":"object","properties":{"total":{"type":"integer","description":"Total number of buckets documents that matched your query.","x-example":5,"format":"int32"},"buckets":{"type":"array","description":"List of buckets.","items":{"$ref":"#\/components\/schemas\/bucket"},"x-example":""}},"required":["total","buckets"]},"teamList":{"description":"Teams List","type":"object","properties":{"total":{"type":"integer","description":"Total number of teams documents that matched your query.","x-example":5,"format":"int32"},"teams":{"type":"array","description":"List of teams.","items":{"$ref":"#\/components\/schemas\/team"},"x-example":""}},"required":["total","teams"]},"membershipList":{"description":"Memberships List","type":"object","properties":{"total":{"type":"integer","description":"Total number of memberships documents that matched your query.","x-example":5,"format":"int32"},"memberships":{"type":"array","description":"List of memberships.","items":{"$ref":"#\/components\/schemas\/membership"},"x-example":""}},"required":["total","memberships"]},"functionList":{"description":"Functions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of functions documents that matched your query.","x-example":5,"format":"int32"},"functions":{"type":"array","description":"List of functions.","items":{"$ref":"#\/components\/schemas\/function"},"x-example":""}},"required":["total","functions"]},"installationList":{"description":"Installations List","type":"object","properties":{"total":{"type":"integer","description":"Total number of installations documents that matched your query.","x-example":5,"format":"int32"},"installations":{"type":"array","description":"List of installations.","items":{"$ref":"#\/components\/schemas\/installation"},"x-example":""}},"required":["total","installations"]},"providerRepositoryList":{"description":"Provider Repositories List","type":"object","properties":{"total":{"type":"integer","description":"Total number of providerRepositories documents that matched your query.","x-example":5,"format":"int32"},"providerRepositories":{"type":"array","description":"List of providerRepositories.","items":{"$ref":"#\/components\/schemas\/providerRepository"},"x-example":""}},"required":["total","providerRepositories"]},"branchList":{"description":"Branches List","type":"object","properties":{"total":{"type":"integer","description":"Total number of branches documents that matched your query.","x-example":5,"format":"int32"},"branches":{"type":"array","description":"List of branches.","items":{"$ref":"#\/components\/schemas\/branch"},"x-example":""}},"required":["total","branches"]},"runtimeList":{"description":"Runtimes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of runtimes documents that matched your query.","x-example":5,"format":"int32"},"runtimes":{"type":"array","description":"List of runtimes.","items":{"$ref":"#\/components\/schemas\/runtime"},"x-example":""}},"required":["total","runtimes"]},"deploymentList":{"description":"Deployments List","type":"object","properties":{"total":{"type":"integer","description":"Total number of deployments documents that matched your query.","x-example":5,"format":"int32"},"deployments":{"type":"array","description":"List of deployments.","items":{"$ref":"#\/components\/schemas\/deployment"},"x-example":""}},"required":["total","deployments"]},"executionList":{"description":"Executions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of executions documents that matched your query.","x-example":5,"format":"int32"},"executions":{"type":"array","description":"List of executions.","items":{"$ref":"#\/components\/schemas\/execution"},"x-example":""}},"required":["total","executions"]},"projectList":{"description":"Projects List","type":"object","properties":{"total":{"type":"integer","description":"Total number of projects documents that matched your query.","x-example":5,"format":"int32"},"projects":{"type":"array","description":"List of projects.","items":{"$ref":"#\/components\/schemas\/project"},"x-example":""}},"required":["total","projects"]},"webhookList":{"description":"Webhooks List","type":"object","properties":{"total":{"type":"integer","description":"Total number of webhooks documents that matched your query.","x-example":5,"format":"int32"},"webhooks":{"type":"array","description":"List of webhooks.","items":{"$ref":"#\/components\/schemas\/webhook"},"x-example":""}},"required":["total","webhooks"]},"keyList":{"description":"API Keys List","type":"object","properties":{"total":{"type":"integer","description":"Total number of keys documents that matched your query.","x-example":5,"format":"int32"},"keys":{"type":"array","description":"List of keys.","items":{"$ref":"#\/components\/schemas\/key"},"x-example":""}},"required":["total","keys"]},"platformList":{"description":"Platforms List","type":"object","properties":{"total":{"type":"integer","description":"Total number of platforms documents that matched your query.","x-example":5,"format":"int32"},"platforms":{"type":"array","description":"List of platforms.","items":{"$ref":"#\/components\/schemas\/platform"},"x-example":""}},"required":["total","platforms"]},"countryList":{"description":"Countries List","type":"object","properties":{"total":{"type":"integer","description":"Total number of countries documents that matched your query.","x-example":5,"format":"int32"},"countries":{"type":"array","description":"List of countries.","items":{"$ref":"#\/components\/schemas\/country"},"x-example":""}},"required":["total","countries"]},"continentList":{"description":"Continents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of continents documents that matched your query.","x-example":5,"format":"int32"},"continents":{"type":"array","description":"List of continents.","items":{"$ref":"#\/components\/schemas\/continent"},"x-example":""}},"required":["total","continents"]},"languageList":{"description":"Languages List","type":"object","properties":{"total":{"type":"integer","description":"Total number of languages documents that matched your query.","x-example":5,"format":"int32"},"languages":{"type":"array","description":"List of languages.","items":{"$ref":"#\/components\/schemas\/language"},"x-example":""}},"required":["total","languages"]},"currencyList":{"description":"Currencies List","type":"object","properties":{"total":{"type":"integer","description":"Total number of currencies documents that matched your query.","x-example":5,"format":"int32"},"currencies":{"type":"array","description":"List of currencies.","items":{"$ref":"#\/components\/schemas\/currency"},"x-example":""}},"required":["total","currencies"]},"phoneList":{"description":"Phones List","type":"object","properties":{"total":{"type":"integer","description":"Total number of phones documents that matched your query.","x-example":5,"format":"int32"},"phones":{"type":"array","description":"List of phones.","items":{"$ref":"#\/components\/schemas\/phone"},"x-example":""}},"required":["total","phones"]},"variableList":{"description":"Variables List","type":"object","properties":{"total":{"type":"integer","description":"Total number of variables documents that matched your query.","x-example":5,"format":"int32"},"variables":{"type":"array","description":"List of variables.","items":{"$ref":"#\/components\/schemas\/variable"},"x-example":""}},"required":["total","variables"]},"proxyRuleList":{"description":"Rule List","type":"object","properties":{"total":{"type":"integer","description":"Total number of rules documents that matched your query.","x-example":5,"format":"int32"},"rules":{"type":"array","description":"List of rules.","items":{"$ref":"#\/components\/schemas\/proxyRule"},"x-example":""}},"required":["total","rules"]},"localeCodeList":{"description":"Locale codes list","type":"object","properties":{"total":{"type":"integer","description":"Total number of localeCodes documents that matched your query.","x-example":5,"format":"int32"},"localeCodes":{"type":"array","description":"List of localeCodes.","items":{"$ref":"#\/components\/schemas\/localeCode"},"x-example":""}},"required":["total","localeCodes"]},"providerList":{"description":"Provider list","type":"object","properties":{"total":{"type":"integer","description":"Total number of providers documents that matched your query.","x-example":5,"format":"int32"},"providers":{"type":"array","description":"List of providers.","items":{"$ref":"#\/components\/schemas\/provider"},"x-example":""}},"required":["total","providers"]},"messageList":{"description":"Message list","type":"object","properties":{"total":{"type":"integer","description":"Total number of messages documents that matched your query.","x-example":5,"format":"int32"},"messages":{"type":"array","description":"List of messages.","items":{"$ref":"#\/components\/schemas\/message"},"x-example":""}},"required":["total","messages"]},"topicList":{"description":"Topic list","type":"object","properties":{"total":{"type":"integer","description":"Total number of topics documents that matched your query.","x-example":5,"format":"int32"},"topics":{"type":"array","description":"List of topics.","items":{"$ref":"#\/components\/schemas\/topic"},"x-example":""}},"required":["total","topics"]},"subscriberList":{"description":"Subscriber list","type":"object","properties":{"total":{"type":"integer","description":"Total number of subscribers documents that matched your query.","x-example":5,"format":"int32"},"subscribers":{"type":"array","description":"List of subscribers.","items":{"$ref":"#\/components\/schemas\/subscriber"},"x-example":""}},"required":["total","subscribers"]},"targetList":{"description":"Target list","type":"object","properties":{"total":{"type":"integer","description":"Total number of targets documents that matched your query.","x-example":5,"format":"int32"},"targets":{"type":"array","description":"List of targets.","items":{"$ref":"#\/components\/schemas\/target"},"x-example":""}},"required":["total","targets"]},"migrationList":{"description":"Migrations List","type":"object","properties":{"total":{"type":"integer","description":"Total number of migrations documents that matched your query.","x-example":5,"format":"int32"},"migrations":{"type":"array","description":"List of migrations.","items":{"$ref":"#\/components\/schemas\/migration"},"x-example":""}},"required":["total","migrations"]},"firebaseProjectList":{"description":"Migrations Firebase Projects List","type":"object","properties":{"total":{"type":"integer","description":"Total number of projects documents that matched your query.","x-example":5,"format":"int32"},"projects":{"type":"array","description":"List of projects.","items":{"$ref":"#\/components\/schemas\/firebaseProject"},"x-example":""}},"required":["total","projects"]},"database":{"description":"Database","type":"object","properties":{"$id":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Database name.","x-example":"My Database"},"$createdAt":{"type":"string","description":"Database creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Database update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"enabled":{"type":"boolean","description":"If database is enabled. Can be 'enabled' or 'disabled'. When disabled, the database is inaccessible to users, but remains accessible to Server SDKs using API keys.","x-example":false}},"required":["$id","name","$createdAt","$updatedAt","enabled"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Collection creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Collection update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Collection permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled. Can be 'enabled' or 'disabled'. When disabled, the collection is inaccessible to users, but remains accessible to Server SDKs using API keys.","x-example":false},"documentSecurity":{"type":"boolean","description":"Whether document-level permissions are enabled. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":true},"attributes":{"type":"array","description":"Collection attributes.","items":{"anyOf":[{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeRelationship"},{"$ref":"#\/components\/schemas\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"$ref":"#\/components\/schemas\/index"},"x-example":{}}},"required":["$id","$createdAt","$updatedAt","$permissions","databaseId","name","enabled","documentSecurity","attributes","indexes"]},"attributeList":{"description":"Attributes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of attributes in the given collection.","x-example":5,"format":"int32"},"attributes":{"type":"array","description":"List of attributes.","items":{"anyOf":[{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeRelationship"},{"$ref":"#\/components\/schemas\/attributeString"}]},"x-example":""}},"required":["total","attributes"]},"attributeString":{"description":"AttributeString","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"fullName"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"size":{"type":"integer","description":"Attribute size.","x-example":128,"format":"int32"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"default","nullable":true}},"required":["key","type","status","error","required","size"]},"attributeInteger":{"description":"AttributeInteger","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"count"},"type":{"type":"string","description":"Attribute type.","x-example":"integer"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"min":{"type":"integer","description":"Minimum value to enforce for new documents.","x-example":1,"format":"int32","nullable":true},"max":{"type":"integer","description":"Maximum value to enforce for new documents.","x-example":10,"format":"int32","nullable":true},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":10,"format":"int32","nullable":true}},"required":["key","type","status","error","required"]},"attributeFloat":{"description":"AttributeFloat","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"percentageCompleted"},"type":{"type":"string","description":"Attribute type.","x-example":"double"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"min":{"type":"number","description":"Minimum value to enforce for new documents.","x-example":1.5,"format":"double","nullable":true},"max":{"type":"number","description":"Maximum value to enforce for new documents.","x-example":10.5,"format":"double","nullable":true},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":2.5,"format":"double","nullable":true}},"required":["key","type","status","error","required"]},"attributeBoolean":{"description":"AttributeBoolean","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"isEnabled"},"type":{"type":"string","description":"Attribute type.","x-example":"boolean"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":false,"nullable":true}},"required":["key","type","status","error","required"]},"attributeEmail":{"description":"AttributeEmail","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"userEmail"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"format":{"type":"string","description":"String format.","x-example":"email"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"default@example.com","nullable":true}},"required":["key","type","status","error","required","format"]},"attributeEnum":{"description":"AttributeEnum","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"status"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"elements":{"type":"array","description":"Array of elements in enumerated type.","items":{"type":"string"},"x-example":"element"},"format":{"type":"string","description":"String format.","x-example":"enum"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"element","nullable":true}},"required":["key","type","status","error","required","elements","format"]},"attributeIp":{"description":"AttributeIP","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"ipAddress"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"format":{"type":"string","description":"String format.","x-example":"ip"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"192.0.2.0","nullable":true}},"required":["key","type","status","error","required","format"]},"attributeUrl":{"description":"AttributeURL","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"githubUrl"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"format":{"type":"string","description":"String format.","x-example":"url"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"http:\/\/example.com","nullable":true}},"required":["key","type","status","error","required","format"]},"attributeDatetime":{"description":"AttributeDatetime","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"birthDay"},"type":{"type":"string","description":"Attribute type.","x-example":"datetime"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"format":{"type":"string","description":"ISO 8601 format.","x-example":"datetime"},"default":{"type":"string","description":"Default value for attribute when not provided. Only null is optional","x-example":"2020-10-15T06:38:00.000+00:00","nullable":true}},"required":["key","type","status","error","required","format"]},"attributeRelationship":{"description":"AttributeRelationship","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"fullName"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"relatedCollection":{"type":"string","description":"The ID of the related collection.","x-example":"collection"},"relationType":{"type":"string","description":"The type of the relationship.","x-example":"oneToOne|oneToMany|manyToOne|manyToMany"},"twoWay":{"type":"boolean","description":"Is the relationship two-way?","x-example":false},"twoWayKey":{"type":"string","description":"The key of the two-way relationship.","x-example":"string"},"onDelete":{"type":"string","description":"How deleting the parent document will propagate to child documents.","x-example":"restrict|cascade|setNull"},"side":{"type":"string","description":"Whether this is the parent or child side of the relationship","x-example":"parent|child"}},"required":["key","type","status","error","required","relatedCollection","relationType","twoWay","twoWayKey","onDelete","side"]},"index":{"description":"Index","type":"object","properties":{"key":{"type":"string","description":"Index Key.","x-example":"index1"},"type":{"type":"string","description":"Index type.","x-example":"primary"},"status":{"type":"string","description":"Index status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an index.","x-example":"string"},"attributes":{"type":"array","description":"Index attributes.","items":{"type":"string"},"x-example":[]},"orders":{"type":"array","description":"Index orders.","items":{"type":"string"},"x-example":[],"nullable":true}},"required":["key","type","status","error","attributes"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"user":{"description":"User","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"password":{"type":"string","description":"Hashed user password.","x-example":"$argon2id$v=19$m=2048,t=4,p=3$aUZjLnliVWRINmFNTWMudg$5S+x+7uA31xFnrHFT47yFwcJeaP0w92L\/4LdgrVRXxE","nullable":true},"hash":{"type":"string","description":"Password hashing algorithm.","x-example":"argon2","nullable":true},"hashOptions":{"type":"object","description":"Password hashing algorithm configuration.","x-example":{},"items":{"oneOf":[{"$ref":"#\/components\/schemas\/algoArgon2"},{"$ref":"#\/components\/schemas\/algoScrypt"},{"$ref":"#\/components\/schemas\/algoScryptModified"},{"$ref":"#\/components\/schemas\/algoBcrypt"},{"$ref":"#\/components\/schemas\/algoPhpass"},{"$ref":"#\/components\/schemas\/algoSha"},{"$ref":"#\/components\/schemas\/algoMd5"}]},"nullable":true},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"labels":{"type":"array","description":"Labels for the user.","items":{"type":"string"},"x-example":["vip"]},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"$ref":"#\/components\/schemas\/preferences"}},"targets":{"type":"array","description":"A user-owned message receiver. A single user may have multiple e.g. emails, phones, and a browser. Each target is registered with a single provider.","items":{"$ref":"#\/components\/schemas\/target"},"x-example":[]},"accessedAt":{"type":"string","description":"Most recent access date in ISO 8601 format. This attribute is only updated again after 24 hours.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","$updatedAt","name","registration","status","labels","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs","targets","accessedAt"]},"algoMd5":{"description":"AlgoMD5","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"md5"}},"required":["type"]},"algoSha":{"description":"AlgoSHA","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"sha"}},"required":["type"]},"algoPhpass":{"description":"AlgoPHPass","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"phpass"}},"required":["type"]},"algoBcrypt":{"description":"AlgoBcrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"bcrypt"}},"required":["type"]},"algoScrypt":{"description":"AlgoScrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scrypt"},"costCpu":{"type":"integer","description":"CPU complexity of computed hash.","x-example":8,"format":"int32"},"costMemory":{"type":"integer","description":"Memory complexity of computed hash.","x-example":14,"format":"int32"},"costParallel":{"type":"integer","description":"Parallelization of computed hash.","x-example":1,"format":"int32"},"length":{"type":"integer","description":"Length used to compute hash.","x-example":64,"format":"int32"}},"required":["type","costCpu","costMemory","costParallel","length"]},"algoScryptModified":{"description":"AlgoScryptModified","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scryptMod"},"salt":{"type":"string","description":"Salt used to compute hash.","x-example":"UxLMreBr6tYyjQ=="},"saltSeparator":{"type":"string","description":"Separator used to compute hash.","x-example":"Bw=="},"signerKey":{"type":"string","description":"Key used to compute hash.","x-example":"XyEKE9RcTDeLEsL\/RjwPDBv\/RqDl8fb3gpYEOQaPihbxf1ZAtSOHCjuAAa7Q3oHpCYhXSN9tizHgVOwn6krflQ=="}},"required":["type","salt","saltSeparator","signerKey"]},"algoArgon2":{"description":"AlgoArgon2","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"argon2"},"memoryCost":{"type":"integer","description":"Memory used to compute hash.","x-example":65536,"format":"int32"},"timeCost":{"type":"integer","description":"Amount of time consumed to compute hash","x-example":4,"format":"int32"},"threads":{"type":"integer","description":"Number of threads used to compute hash.","x-example":3,"format":"int32"}},"required":["type","memoryCost","timeCost","threads"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true},"secret":{"type":"string","description":"Secret used to authenticate the user. Only included if the request was made with an API key","x-example":"5e5bb8c16897e"}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current","secret"]},"identity":{"description":"Identity","type":"object","properties":{"$id":{"type":"string","description":"Identity ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Identity creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Identity update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"provider":{"type":"string","description":"Identity Provider.","x-example":"email"},"providerUid":{"type":"string","description":"ID of the User in the Identity Provider.","x-example":"5e5bb8c16897e"},"providerEmail":{"type":"string","description":"Email of the User in the Identity Provider.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Identity Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Identity Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"}},"required":["$id","$createdAt","$updatedAt","userId","provider","providerUid","providerEmail","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"securityPhrase":{"type":"string","description":"Security phrase of a token. Empty if security phrase was not requested when creating a token. It includes randomly generated phrase which is also sent in the external resource such as email.","x-example":"Golden Fox"}},"required":["$id","$createdAt","userId","secret","expire","securityPhrase"]},"jwt":{"description":"JWT","type":"object","properties":{"jwt":{"type":"string","description":"JWT encoded string.","x-example":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c"}},"required":["jwt"]},"locale":{"description":"Locale","type":"object","properties":{"ip":{"type":"string","description":"User IP address.","x-example":"127.0.0.1"},"countryCode":{"type":"string","description":"Country code in [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) two-character format","x-example":"US"},"country":{"type":"string","description":"Country name. This field support localization.","x-example":"United States"},"continentCode":{"type":"string","description":"Continent code. A two character continent code \"AF\" for Africa, \"AN\" for Antarctica, \"AS\" for Asia, \"EU\" for Europe, \"NA\" for North America, \"OC\" for Oceania, and \"SA\" for South America.","x-example":"NA"},"continent":{"type":"string","description":"Continent name. This field support localization.","x-example":"North America"},"eu":{"type":"boolean","description":"True if country is part of the European Union.","x-example":false},"currency":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format","x-example":"USD"}},"required":["ip","countryCode","country","continentCode","continent","eu","currency"]},"localeCode":{"description":"LocaleCode","type":"object","properties":{"code":{"type":"string","description":"Locale codes in [ISO 639-1](https:\/\/en.wikipedia.org\/wiki\/List_of_ISO_639-1_codes)","x-example":"en-us"},"name":{"type":"string","description":"Locale name","x-example":"US"}},"required":["code","name"]},"file":{"description":"File","type":"object","properties":{"$id":{"type":"string","description":"File ID.","x-example":"5e5ea5c16897e"},"bucketId":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Bucket creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Bucket update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Bucket permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"fileSecurity":{"type":"boolean","description":"Whether file-level security is enabled. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":true},"name":{"type":"string","description":"Bucket name.","x-example":"Documents"},"enabled":{"type":"boolean","description":"Bucket enabled.","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size supported.","x-example":100,"format":"int32"},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions.","items":{"type":"string"},"x-example":["jpg","png"]},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Will be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd).","x-example":"gzip"},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$createdAt","$updatedAt","$permissions","fileSecurity","name","enabled","maximumFileSize","allowedFileExtensions","compression","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"},"prefs":{"type":"object","description":"Team preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"$ref":"#\/components\/schemas\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","total","prefs"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":["owner"]}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Function creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Function update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"users"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"enabled":{"type":"boolean","description":"Function enabled.","x-example":false},"live":{"type":"boolean","description":"Is the function deployed with the latest configuration? This is set to false if you've changed an environment variables, entrypoint, commands, or other settings that needs redeploy to be applied. When the value is false, redeploy the function to update it with the latest configuration.","x-example":false},"logging":{"type":"boolean","description":"Whether executions will be logged. When set to false, executions will not be logged, but will reduce resource used by your Appwrite project.","x-example":false},"runtime":{"type":"string","description":"Function execution runtime.","x-example":"python-3.8"},"deployment":{"type":"string","description":"Function's active deployment ID.","x-example":"5e5ea5c16897e"},"vars":{"type":"array","description":"Function variables.","items":{"$ref":"#\/components\/schemas\/variable"},"x-example":[]},"events":{"type":"array","description":"Function trigger events.","items":{"type":"string"},"x-example":"account.create"},"schedule":{"type":"string","description":"Function execution schedult in CRON format.","x-example":"5 4 * * *"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":300,"format":"int32"},"entrypoint":{"type":"string","description":"The entrypoint file used to execute the deployment.","x-example":"index.js"},"commands":{"type":"string","description":"The build command used to build the deployment.","x-example":"npm install"},"version":{"type":"string","description":"Version of Open Runtimes used for the function.","x-example":"v2"},"installationId":{"type":"string","description":"Function VCS (Version Control System) installation id.","x-example":"6m40at4ejk5h2u9s1hboo"},"providerRepositoryId":{"type":"string","description":"VCS (Version Control System) Repository ID","x-example":"appwrite"},"providerBranch":{"type":"string","description":"VCS (Version Control System) branch name","x-example":"main"},"providerRootDirectory":{"type":"string","description":"Path to function in VCS (Version Control System) repository","x-example":"functions\/helloWorld"},"providerSilentMode":{"type":"boolean","description":"Is VCS (Version Control System) connection is in silent mode? When in silence mode, no comments will be posted on the repository pull or merge requests","x-example":false}},"required":["$id","$createdAt","$updatedAt","execute","name","enabled","live","logging","runtime","deployment","vars","events","schedule","timeout","entrypoint","commands","version","installationId","providerRepositoryId","providerBranch","providerRootDirectory","providerSilentMode"]},"installation":{"description":"Installation","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Function creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Function update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"VCS (Version Control System) provider name.","x-example":"github"},"organization":{"type":"string","description":"VCS (Version Control System) organization name.","x-example":"appwrite"},"providerInstallationId":{"type":"string","description":"VCS (Version Control System) installation ID.","x-example":"5322"}},"required":["$id","$createdAt","$updatedAt","provider","organization","providerInstallationId"]},"providerRepository":{"description":"ProviderRepository","type":"object","properties":{"id":{"type":"string","description":"VCS (Version Control System) repository ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"VCS (Version Control System) repository name.","x-example":"appwrite"},"organization":{"type":"string","description":"VCS (Version Control System) organization name","x-example":"appwrite"},"provider":{"type":"string","description":"VCS (Version Control System) provider name.","x-example":"github"},"private":{"type":"boolean","description":"Is VCS (Version Control System) repository private?","x-example":true},"runtime":{"type":"string","description":"Auto-detected runtime suggestion. Empty if getting response of getRuntime().","x-example":"node"},"pushedAt":{"type":"string","description":"Last commit date in ISO 8601 format.","x-example":"datetime"}},"required":["id","name","organization","provider","private","runtime","pushedAt"]},"detection":{"description":"Detection","type":"object","properties":{"runtime":{"type":"string","description":"Runtime","x-example":"node"}},"required":["runtime"]},"branch":{"description":"Branch","type":"object","properties":{"name":{"type":"string","description":"Branch Name.","x-example":"main"}},"required":["name"]},"runtime":{"description":"Runtime","type":"object","properties":{"$id":{"type":"string","description":"Runtime ID.","x-example":"python-3.8"},"name":{"type":"string","description":"Runtime Name.","x-example":"Python"},"version":{"type":"string","description":"Runtime version.","x-example":"3.8"},"base":{"type":"string","description":"Base Docker image used to build the runtime.","x-example":"python:3.8-alpine"},"image":{"type":"string","description":"Image name of Docker Hub.","x-example":"appwrite\\\/runtime-for-python:3.8"},"logo":{"type":"string","description":"Name of the logo image.","x-example":"python.png"},"supports":{"type":"array","description":"List of supported architectures.","items":{"type":"string"},"x-example":"amd64"}},"required":["$id","name","version","base","image","logo","supports"]},"deployment":{"description":"Deployment","type":"object","properties":{"$id":{"type":"string","description":"Deployment ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Deployment creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Deployment update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"type":{"type":"string","description":"Type of deployment.","x-example":"vcs"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"index.js"},"size":{"type":"integer","description":"The code size in bytes.","x-example":128,"format":"int32"},"buildId":{"type":"string","description":"The current build ID.","x-example":"5e5ea5c16897e"},"activate":{"type":"boolean","description":"Whether the deployment should be automatically activated.","x-example":true},"status":{"type":"string","description":"The deployment status. Possible values are \"processing\", \"building\", \"waiting\", \"ready\", and \"failed\".","x-example":"ready"},"buildLogs":{"type":"string","description":"The build logs.","x-example":"Compiling source files..."},"buildTime":{"type":"integer","description":"The current build time in seconds.","x-example":128,"format":"int32"},"providerRepositoryName":{"type":"string","description":"The name of the vcs provider repository","x-example":"database"},"providerRepositoryOwner":{"type":"string","description":"The name of the vcs provider repository owner","x-example":"utopia"},"providerRepositoryUrl":{"type":"string","description":"The url of the vcs provider repository","x-example":"https:\/\/github.com\/vermakhushboo\/g4-node-function"},"providerBranch":{"type":"string","description":"The branch of the vcs repository","x-example":"0.7.x"},"providerCommitHash":{"type":"string","description":"The commit hash of the vcs commit","x-example":"7c3f25d"},"providerCommitAuthorUrl":{"type":"string","description":"The url of vcs commit author","x-example":"https:\/\/github.com\/vermakhushboo"},"providerCommitAuthor":{"type":"string","description":"The name of vcs commit author","x-example":"Khushboo Verma"},"providerCommitMessage":{"type":"string","description":"The commit message","x-example":"Update index.js"},"providerCommitUrl":{"type":"string","description":"The url of the vcs commit","x-example":"https:\/\/github.com\/vermakhushboo\/g4-node-function\/commit\/60c0416257a9cbcdd96b2d370c38d8f8d150ccfb"},"providerBranchUrl":{"type":"string","description":"The branch of the vcs repository","x-example":"https:\/\/github.com\/vermakhushboo\/appwrite\/tree\/0.7.x"}},"required":["$id","$createdAt","$updatedAt","type","resourceId","resourceType","entrypoint","size","buildId","activate","status","buildLogs","buildTime","providerRepositoryName","providerRepositoryOwner","providerRepositoryUrl","providerBranch","providerCommitHash","providerCommitAuthorUrl","providerCommitAuthor","providerCommitMessage","providerCommitUrl","providerBranchUrl"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"requestMethod":{"type":"string","description":"HTTP request method type.","x-example":"GET"},"requestPath":{"type":"string","description":"HTTP request path and query.","x-example":"\/articles?id=5"},"requestHeaders":{"type":"array","description":"HTTP response headers as a key-value object. This will return only whitelisted headers. All headers are returned if execution is created as synchronous.","items":{"$ref":"#\/components\/schemas\/headers"},"x-example":[{"Content-Type":"application\/json"}]},"responseStatusCode":{"type":"integer","description":"HTTP response status code.","x-example":200,"format":"int32"},"responseBody":{"type":"string","description":"HTTP response body. This will return empty unless execution is created as synchronous.","x-example":"Developers are awesome."},"responseHeaders":{"type":"array","description":"HTTP response headers as a key-value object. This will return only whitelisted headers. All headers are returned if execution is created as synchronous.","items":{"$ref":"#\/components\/schemas\/headers"},"x-example":[{"Content-Type":"application\/json"}]},"logs":{"type":"string","description":"Function logs. Includes the last 4,000 characters. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"errors":{"type":"string","description":"Function errors. Includes the last 4,000 characters. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"Function execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","requestMethod","requestPath","requestHeaders","responseStatusCode","responseBody","responseHeaders","logs","errors","duration"]},"project":{"description":"Project","type":"object","properties":{"$id":{"type":"string","description":"Project ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Project creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Project update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Project name.","x-example":"New Project"},"description":{"type":"string","description":"Project description.","x-example":"This is a new project."},"teamId":{"type":"string","description":"Project team ID.","x-example":"1592981250"},"logo":{"type":"string","description":"Project logo file ID.","x-example":"5f5c451b403cb"},"url":{"type":"string","description":"Project website URL.","x-example":"5f5c451b403cb"},"legalName":{"type":"string","description":"Company legal name.","x-example":"Company LTD."},"legalCountry":{"type":"string","description":"Country code in [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) two-character format.","x-example":"US"},"legalState":{"type":"string","description":"State name.","x-example":"New York"},"legalCity":{"type":"string","description":"City name.","x-example":"New York City."},"legalAddress":{"type":"string","description":"Company Address.","x-example":"620 Eighth Avenue, New York, NY 10018"},"legalTaxId":{"type":"string","description":"Company Tax ID.","x-example":"131102020"},"authDuration":{"type":"integer","description":"Session duration in seconds.","x-example":60,"format":"int32"},"authLimit":{"type":"integer","description":"Max users allowed. 0 is unlimited.","x-example":100,"format":"int32"},"authSessionsLimit":{"type":"integer","description":"Max sessions allowed per user. 100 maximum.","x-example":10,"format":"int32"},"authPasswordHistory":{"type":"integer","description":"Max allowed passwords in the history list per user. Max passwords limit allowed in history is 20. Use 0 for disabling password history.","x-example":5,"format":"int32"},"authPasswordDictionary":{"type":"boolean","description":"Whether or not to check user's password against most commonly used passwords.","x-example":true},"authPersonalDataCheck":{"type":"boolean","description":"Whether or not to check the user password for similarity with their personal data.","x-example":true},"oAuthProviders":{"type":"array","description":"List of Auth Providers.","items":{"$ref":"#\/components\/schemas\/authProvider"},"x-example":[{}]},"platforms":{"type":"array","description":"List of Platforms.","items":{"$ref":"#\/components\/schemas\/platform"},"x-example":{}},"webhooks":{"type":"array","description":"List of Webhooks.","items":{"$ref":"#\/components\/schemas\/webhook"},"x-example":{}},"keys":{"type":"array","description":"List of API Keys.","items":{"$ref":"#\/components\/schemas\/key"},"x-example":{}},"smtpEnabled":{"type":"boolean","description":"Status for custom SMTP","x-example":false},"smtpSenderName":{"type":"string","description":"SMTP sender name","x-example":"John Appwrite"},"smtpSenderEmail":{"type":"string","description":"SMTP sender email","x-example":"john@appwrite.io"},"smtpReplyTo":{"type":"string","description":"SMTP reply to email","x-example":"support@appwrite.io"},"smtpHost":{"type":"string","description":"SMTP server host name","x-example":"mail.appwrite.io"},"smtpPort":{"type":"integer","description":"SMTP server port","x-example":25,"format":"int32"},"smtpUsername":{"type":"string","description":"SMTP server username","x-example":"emailuser"},"smtpPassword":{"type":"string","description":"SMTP server password","x-example":"securepassword"},"smtpSecure":{"type":"string","description":"SMTP server secure protocol","x-example":"tls"},"authEmailPassword":{"type":"boolean","description":"Email\/Password auth method status","x-example":true},"authUsersAuthMagicURL":{"type":"boolean","description":"Magic URL auth method status","x-example":true},"authAnonymous":{"type":"boolean","description":"Anonymous auth method status","x-example":true},"authInvites":{"type":"boolean","description":"Invites auth method status","x-example":true},"authJWT":{"type":"boolean","description":"JWT auth method status","x-example":true},"authPhone":{"type":"boolean","description":"Phone auth method status","x-example":true},"serviceStatusForAccount":{"type":"boolean","description":"Account service status","x-example":true},"serviceStatusForAvatars":{"type":"boolean","description":"Avatars service status","x-example":true},"serviceStatusForDatabases":{"type":"boolean","description":"Databases service status","x-example":true},"serviceStatusForLocale":{"type":"boolean","description":"Locale service status","x-example":true},"serviceStatusForHealth":{"type":"boolean","description":"Health service status","x-example":true},"serviceStatusForStorage":{"type":"boolean","description":"Storage service status","x-example":true},"serviceStatusForTeams":{"type":"boolean","description":"Teams service status","x-example":true},"serviceStatusForUsers":{"type":"boolean","description":"Users service status","x-example":true},"serviceStatusForFunctions":{"type":"boolean","description":"Functions service status","x-example":true},"serviceStatusForGraphql":{"type":"boolean","description":"GraphQL service status","x-example":true},"serviceStatusForMessaging":{"type":"boolean","description":"Messaging service status","x-example":true}},"required":["$id","$createdAt","$updatedAt","name","description","teamId","logo","url","legalName","legalCountry","legalState","legalCity","legalAddress","legalTaxId","authDuration","authLimit","authSessionsLimit","authPasswordHistory","authPasswordDictionary","authPersonalDataCheck","oAuthProviders","platforms","webhooks","keys","smtpEnabled","smtpSenderName","smtpSenderEmail","smtpReplyTo","smtpHost","smtpPort","smtpUsername","smtpPassword","smtpSecure","authEmailPassword","authUsersAuthMagicURL","authAnonymous","authInvites","authJWT","authPhone","serviceStatusForAccount","serviceStatusForAvatars","serviceStatusForDatabases","serviceStatusForLocale","serviceStatusForHealth","serviceStatusForStorage","serviceStatusForTeams","serviceStatusForUsers","serviceStatusForFunctions","serviceStatusForGraphql","serviceStatusForMessaging"]},"webhook":{"description":"Webhook","type":"object","properties":{"$id":{"type":"string","description":"Webhook ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Webhook creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Webhook update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Webhook name.","x-example":"My Webhook"},"url":{"type":"string","description":"Webhook URL endpoint.","x-example":"https:\/\/example.com\/webhook"},"events":{"type":"array","description":"Webhook trigger events.","items":{"type":"string"},"x-example":"database.collections.update"},"security":{"type":"boolean","description":"Indicated if SSL \/ TLS Certificate verification is enabled.","x-example":true},"httpUser":{"type":"string","description":"HTTP basic authentication username.","x-example":"username"},"httpPass":{"type":"string","description":"HTTP basic authentication password.","x-example":"password"},"signatureKey":{"type":"string","description":"Signature key which can be used to validated incoming","x-example":"ad3d581ca230e2b7059c545e5a"},"enabled":{"type":"boolean","description":"Indicates if this webhook is enabled.","x-example":true},"logs":{"type":"string","description":"Webhook error logs from the most recent failure.","x-example":"Failed to connect to remote server."},"attempts":{"type":"integer","description":"Number of consecutive failed webhook attempts.","x-example":10,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","name","url","events","security","httpUser","httpPass","signatureKey","enabled","logs","attempts"]},"key":{"description":"Key","type":"object","properties":{"$id":{"type":"string","description":"Key ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Key creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Key update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Key name.","x-example":"My API Key"},"expire":{"type":"string","description":"Key expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"scopes":{"type":"array","description":"Allowed permission scopes.","items":{"type":"string"},"x-example":"users.read"},"secret":{"type":"string","description":"Secret key.","x-example":"919c2d18fb5d4...a2ae413da83346ad2"},"accessedAt":{"type":"string","description":"Most recent access date in ISO 8601 format. This attribute is only updated again after 24 hours.","x-example":"2020-10-15T06:38:00.000+00:00"},"sdks":{"type":"array","description":"List of SDK user agents that used this key.","items":{"type":"string"},"x-example":"appwrite:flutter"}},"required":["$id","$createdAt","$updatedAt","name","expire","scopes","secret","accessedAt","sdks"]},"authProvider":{"description":"AuthProvider","type":"object","properties":{"key":{"type":"string","description":"Auth Provider.","x-example":"github"},"name":{"type":"string","description":"Auth Provider name.","x-example":"GitHub"},"appId":{"type":"string","description":"OAuth 2.0 application ID.","x-example":"259125845563242502"},"secret":{"type":"string","description":"OAuth 2.0 application secret. Might be JSON string if provider requires extra configuration.","x-example":"Bpw_g9c2TGXxfgLshDbSaL8tsCcqgczQ"},"enabled":{"type":"boolean","description":"Auth Provider is active and can be used to create session.","x-example":""}},"required":["key","name","appId","secret","enabled"]},"platform":{"description":"Platform","type":"object","properties":{"$id":{"type":"string","description":"Platform ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Platform creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Platform update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Platform name.","x-example":"My Web App"},"type":{"type":"string","description":"Platform type. Possible values are: web, flutter-web, flutter-ios, flutter-android, ios, android, and unity.","x-example":"web"},"key":{"type":"string","description":"Platform Key. iOS bundle ID or Android package name. Empty string for other platforms.","x-example":"com.company.appname"},"store":{"type":"string","description":"App store or Google Play store ID.","x-example":""},"hostname":{"type":"string","description":"Web app hostname. Empty string for other platforms.","x-example":true},"httpUser":{"type":"string","description":"HTTP basic authentication username.","x-example":"username"},"httpPass":{"type":"string","description":"HTTP basic authentication password.","x-example":"password"}},"required":["$id","$createdAt","$updatedAt","name","type","key","store","hostname","httpUser","httpPass"]},"variable":{"description":"Variable","type":"object","properties":{"$id":{"type":"string","description":"Variable ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"key":{"type":"string","description":"Variable key.","x-example":"API_KEY"},"value":{"type":"string","description":"Variable value.","x-example":"myPa$$word1"},"resourceType":{"type":"string","description":"Service to which the variable belongs. Possible values are \"project\", \"function\"","x-example":"function"},"resourceId":{"type":"string","description":"ID of resource to which the variable belongs. If resourceType is \"project\", it is empty. If resourceType is \"function\", it is ID of the function.","x-example":"myAwesomeFunction"}},"required":["$id","$createdAt","$updatedAt","key","value","resourceType","resourceId"]},"country":{"description":"Country","type":"object","properties":{"name":{"type":"string","description":"Country name.","x-example":"United States"},"code":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"}},"required":["name","code"]},"continent":{"description":"Continent","type":"object","properties":{"name":{"type":"string","description":"Continent name.","x-example":"Europe"},"code":{"type":"string","description":"Continent two letter code.","x-example":"EU"}},"required":["name","code"]},"language":{"description":"Language","type":"object","properties":{"name":{"type":"string","description":"Language name.","x-example":"Italian"},"code":{"type":"string","description":"Language two-character ISO 639-1 codes.","x-example":"it"},"nativeName":{"type":"string","description":"Language native name.","x-example":"Italiano"}},"required":["name","code","nativeName"]},"currency":{"description":"Currency","type":"object","properties":{"symbol":{"type":"string","description":"Currency symbol.","x-example":"$"},"name":{"type":"string","description":"Currency name.","x-example":"US dollar"},"symbolNative":{"type":"string","description":"Currency native symbol.","x-example":"$"},"decimalDigits":{"type":"integer","description":"Number of decimal digits.","x-example":2,"format":"int32"},"rounding":{"type":"number","description":"Currency digit rounding.","x-example":0,"format":"double"},"code":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format.","x-example":"USD"},"namePlural":{"type":"string","description":"Currency plural name","x-example":"US dollars"}},"required":["symbol","name","symbolNative","decimalDigits","rounding","code","namePlural"]},"phone":{"description":"Phone","type":"object","properties":{"code":{"type":"string","description":"Phone code.","x-example":"+1"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["code","countryCode","countryName"]},"healthAntivirus":{"description":"Health Antivirus","type":"object","properties":{"version":{"type":"string","description":"Antivirus version.","x-example":"1.0.0"},"status":{"type":"string","description":"Antivirus status. Possible values can are: `disabled`, `offline`, `online`","x-example":"online"}},"required":["version","status"]},"healthQueue":{"description":"Health Queue","type":"object","properties":{"size":{"type":"integer","description":"Amount of actions in the queue.","x-example":8,"format":"int32"}},"required":["size"]},"healthStatus":{"description":"Health Status","type":"object","properties":{"name":{"type":"string","description":"Name of the service.","x-example":"database"},"ping":{"type":"integer","description":"Duration in milliseconds how long the health check took.","x-example":128,"format":"int32"},"status":{"type":"string","description":"Service status. Possible values can are: `pass`, `fail`","x-example":"pass"}},"required":["name","ping","status"]},"healthTime":{"description":"Health Time","type":"object","properties":{"remoteTime":{"type":"integer","description":"Current unix timestamp on trustful remote server.","x-example":1639490751,"format":"int32"},"localTime":{"type":"integer","description":"Current unix timestamp of local server where Appwrite runs.","x-example":1639490844,"format":"int32"},"diff":{"type":"integer","description":"Difference of unix remote and local timestamps in milliseconds.","x-example":93,"format":"int32"}},"required":["remoteTime","localTime","diff"]},"metric":{"description":"Metric","type":"object","properties":{"value":{"type":"integer","description":"The value of this metric at the timestamp.","x-example":1,"format":"int32"},"date":{"type":"string","description":"The date at which this metric was aggregated in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["value","date"]},"usageDatabases":{"description":"UsageDatabases","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"databasesCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsCount":{"type":"array","description":"Aggregated stats for total number of collections.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"databasesCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"databasesRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"databasesUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"databasesDelete":{"type":"array","description":"Aggregated stats for total number of collections.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsCreate":{"type":"array","description":"Aggregated stats for collections created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsRead":{"type":"array","description":"Aggregated stats for collections read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsUpdate":{"type":"array","description":"Aggregated stats for collections updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsDelete":{"type":"array","description":"Aggregated stats for collections delete.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","databasesCount","documentsCount","collectionsCount","databasesCreate","databasesRead","databasesUpdate","databasesDelete","documentsCreate","documentsRead","documentsUpdate","documentsDelete","collectionsCreate","collectionsRead","collectionsUpdate","collectionsDelete"]},"usageDatabase":{"description":"UsageDatabase","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"documentsCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsCount":{"type":"array","description":"Aggregated stats for total number of collections.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsCreate":{"type":"array","description":"Aggregated stats for collections created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsRead":{"type":"array","description":"Aggregated stats for collections read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsUpdate":{"type":"array","description":"Aggregated stats for collections updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsDelete":{"type":"array","description":"Aggregated stats for collections delete.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","documentsCount","collectionsCount","documentsCreate","documentsRead","documentsUpdate","documentsDelete","collectionsCreate","collectionsRead","collectionsUpdate","collectionsDelete"]},"usageCollection":{"description":"UsageCollection","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"documentsCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","documentsCount","documentsCreate","documentsRead","documentsUpdate","documentsDelete"]},"usageUsers":{"description":"UsageUsers","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"usersCount":{"type":"array","description":"Aggregated stats for total number of users.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"usersCreate":{"type":"array","description":"Aggregated stats for users created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"usersRead":{"type":"array","description":"Aggregated stats for users read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"usersUpdate":{"type":"array","description":"Aggregated stats for users updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"usersDelete":{"type":"array","description":"Aggregated stats for users deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"sessionsCreate":{"type":"array","description":"Aggregated stats for sessions created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"sessionsProviderCreate":{"type":"array","description":"Aggregated stats for sessions created for a provider ( email, anonymous or oauth2 ).","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"sessionsDelete":{"type":"array","description":"Aggregated stats for sessions deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","usersCount","usersCreate","usersRead","usersUpdate","usersDelete","sessionsCreate","sessionsProviderCreate","sessionsDelete"]},"usageStorage":{"description":"StorageUsage","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"storage":{"type":"array","description":"Aggregated stats for the occupied storage size (in bytes).","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesCount":{"type":"array","description":"Aggregated stats for total number of files.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"bucketsCount":{"type":"array","description":"Aggregated stats for total number of buckets.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"bucketsCreate":{"type":"array","description":"Aggregated stats for buckets created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"bucketsRead":{"type":"array","description":"Aggregated stats for buckets read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"bucketsUpdate":{"type":"array","description":"Aggregated stats for buckets updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"bucketsDelete":{"type":"array","description":"Aggregated stats for buckets deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesCreate":{"type":"array","description":"Aggregated stats for files created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesRead":{"type":"array","description":"Aggregated stats for files read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesUpdate":{"type":"array","description":"Aggregated stats for files updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesDelete":{"type":"array","description":"Aggregated stats for files deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","storage","filesCount","bucketsCount","bucketsCreate","bucketsRead","bucketsUpdate","bucketsDelete","filesCreate","filesRead","filesUpdate","filesDelete"]},"usageBuckets":{"description":"UsageBuckets","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"filesCount":{"type":"array","description":"Aggregated stats for total number of files in this bucket.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesStorage":{"type":"array","description":"Aggregated stats for total storage of files in this bucket.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesCreate":{"type":"array","description":"Aggregated stats for files created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesRead":{"type":"array","description":"Aggregated stats for files read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesUpdate":{"type":"array","description":"Aggregated stats for files updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesDelete":{"type":"array","description":"Aggregated stats for files deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","filesCount","filesStorage","filesCreate","filesRead","filesUpdate","filesDelete"]},"usageFunctions":{"description":"UsageFunctions","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"executionsTotal":{"type":"array","description":"Aggregated stats for number of function executions.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"executionsFailure":{"type":"array","description":"Aggregated stats for function execution failures.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"executionsSuccess":{"type":"array","description":"Aggregated stats for function execution successes.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"executionsTime":{"type":"array","description":"Aggregated stats for function execution duration.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"buildsTotal":{"type":"array","description":"Aggregated stats for number of function builds.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"buildsFailure":{"type":"array","description":"Aggregated stats for function build failures.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"buildsSuccess":{"type":"array","description":"Aggregated stats for function build successes.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"buildsTime":{"type":"array","description":"Aggregated stats for function build duration.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","executionsTotal","executionsFailure","executionsSuccess","executionsTime","buildsTotal","buildsFailure","buildsSuccess","buildsTime"]},"usageProject":{"description":"UsageProject","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"requests":{"type":"array","description":"Aggregated stats for number of requests.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"network":{"type":"array","description":"Aggregated stats for consumed bandwidth.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"executions":{"type":"array","description":"Aggregated stats for function executions.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documents":{"type":"array","description":"Aggregated stats for number of documents.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"databases":{"type":"array","description":"Aggregated stats for number of databases.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"users":{"type":"array","description":"Aggregated stats for number of users.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"storage":{"type":"array","description":"Aggregated stats for the occupied storage size (in bytes).","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"buckets":{"type":"array","description":"Aggregated stats for number of buckets.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","requests","network","executions","documents","databases","users","storage","buckets"]},"headers":{"description":"Headers","type":"object","properties":{"name":{"type":"string","description":"Header name.","x-example":"Content-Type"},"value":{"type":"string","description":"Header value.","x-example":"application\/json"}},"required":["name","value"]},"proxyRule":{"description":"Rule","type":"object","properties":{"$id":{"type":"string","description":"Rule ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Rule creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Rule update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"domain":{"type":"string","description":"Domain name.","x-example":"appwrite.company.com"},"resourceType":{"type":"string","description":"Action definition for the rule. Possible values are \"api\", \"function\", or \"redirect\"","x-example":"function"},"resourceId":{"type":"string","description":"ID of resource for the action type. If resourceType is \"api\" or \"url\", it is empty. If resourceType is \"function\", it is ID of the function.","x-example":"myAwesomeFunction"},"status":{"type":"string","description":"Domain verification status. Possible values are \"created\", \"verifying\", \"verified\" and \"unverified\"","x-example":"verified"},"logs":{"type":"string","description":"Certificate generation logs. This will return an empty string if generation did not run, or succeeded.","x-example":"HTTP challegne failed."},"renewAt":{"type":"string","description":"Certificate auto-renewal date in ISO 8601 format.","x-example":"datetime"}},"required":["$id","$createdAt","$updatedAt","domain","resourceType","resourceId","status","logs","renewAt"]},"smsTemplate":{"description":"SmsTemplate","type":"object","properties":{"type":{"type":"string","description":"Template type","x-example":"verification"},"locale":{"type":"string","description":"Template locale","x-example":"en_us"},"message":{"type":"string","description":"Template message","x-example":"Click on the link to verify your account."}},"required":["type","locale","message"]},"emailTemplate":{"description":"EmailTemplate","type":"object","properties":{"type":{"type":"string","description":"Template type","x-example":"verification"},"locale":{"type":"string","description":"Template locale","x-example":"en_us"},"message":{"type":"string","description":"Template message","x-example":"Click on the link to verify your account."},"senderName":{"type":"string","description":"Name of the sender","x-example":"My User"},"senderEmail":{"type":"string","description":"Email of the sender","x-example":"mail@appwrite.io"},"replyTo":{"type":"string","description":"Reply to email address","x-example":"emails@appwrite.io"},"subject":{"type":"string","description":"Email subject","x-example":"Please verify your email address"}},"required":["type","locale","message","senderName","senderEmail","replyTo","subject"]},"consoleVariables":{"description":"Console Variables","type":"object","properties":{"_APP_DOMAIN_TARGET":{"type":"string","description":"CNAME target for your Appwrite custom domains.","x-example":"appwrite.io"},"_APP_STORAGE_LIMIT":{"type":"integer","description":"Maximum file size allowed for file upload in bytes.","x-example":"30000000","format":"int32"},"_APP_FUNCTIONS_SIZE_LIMIT":{"type":"integer","description":"Maximum file size allowed for deployment in bytes.","x-example":"30000000","format":"int32"},"_APP_USAGE_STATS":{"type":"string","description":"Defines if usage stats are enabled. This value is set to 'enabled' by default, to disable the usage stats set the value to 'disabled'.","x-example":"enabled"},"_APP_VCS_ENABLED":{"type":"boolean","description":"Defines if VCS (Version Control System) is enabled.","x-example":true},"_APP_DOMAIN_ENABLED":{"type":"boolean","description":"Defines if main domain is configured. If so, custom domains can be created.","x-example":true},"_APP_ASSISTANT_ENABLED":{"type":"boolean","description":"Defines if AI assistant is enabled.","x-example":true}},"required":["_APP_DOMAIN_TARGET","_APP_STORAGE_LIMIT","_APP_FUNCTIONS_SIZE_LIMIT","_APP_USAGE_STATS","_APP_VCS_ENABLED","_APP_DOMAIN_ENABLED","_APP_ASSISTANT_ENABLED"]},"provider":{"description":"Provider","type":"object","properties":{"$id":{"type":"string","description":"Provider ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Provider creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Provider update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"The name for the provider instance.","x-example":"Mailgun"},"provider":{"type":"string","description":"The name of the provider service.","x-example":"mailgun"},"enabled":{"type":"boolean","description":"Is provider enabled?","x-example":true},"type":{"type":"string","description":"Type of provider.","x-example":"sms"},"credentials":{"type":"object","description":"Provider credentials.","x-example":{"key":"123456789"}},"options":{"type":"object","description":"Provider options.","x-example":{"from":"sender-email@mydomain"},"nullable":true}},"required":["$id","$createdAt","$updatedAt","name","provider","enabled","type","credentials"]},"message":{"description":"Message","type":"object","properties":{"$id":{"type":"string","description":"Message ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Message creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Message update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerType":{"type":"string","description":"Message provider type.","x-example":"email"},"topics":{"type":"array","description":"Topic IDs set as recipients.","items":{"type":"string"},"x-example":["5e5ea5c16897e"]},"users":{"type":"array","description":"User IDs set as recipients.","items":{"type":"string"},"x-example":["5e5ea5c16897e"]},"targets":{"type":"array","description":"Target IDs set as recipients.","items":{"type":"string"},"x-example":["5e5ea5c16897e"]},"scheduledAt":{"type":"string","description":"The scheduled time for message.","x-example":"2020-10-15T06:38:00.000+00:00","nullable":true},"deliveredAt":{"type":"string","description":"The time when the message was delivered.","x-example":"2020-10-15T06:38:00.000+00:00","nullable":true},"deliveryErrors":{"type":"array","description":"Delivery errors if any.","items":{"type":"string"},"x-example":["Failed to send message to target 5e5ea5c16897e: Credentials not valid."],"nullable":true},"deliveredTotal":{"type":"integer","description":"Number of recipients the message was delivered to.","x-example":1,"format":"int32"},"data":{"type":"object","description":"Data of the message.","x-example":{"subject":"Welcome to Appwrite","content":"Hi there, welcome to Appwrite family."}},"status":{"type":"string","description":"Status of delivery.","x-example":"Message status can be one of the following: processing, sent, cancelled, failed."},"description":{"type":"string","description":"Message description.","x-example":"Welcome Email.","nullable":true}},"required":["$id","$createdAt","$updatedAt","providerType","topics","users","targets","deliveredTotal","data","status"]},"topic":{"description":"Topic","type":"object","properties":{"$id":{"type":"string","description":"Topic ID.","x-example":"259125845563242502"},"$createdAt":{"type":"string","description":"Topic creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Topic update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"The name of the topic.","x-example":"events"},"total":{"type":"integer","description":"Total count of subscribers subscribed to topic.","x-example":100,"format":"int32"},"description":{"type":"string","description":"Description of the topic.","x-example":"All events related messages will be sent to this topic.","nullable":true}},"required":["$id","$createdAt","$updatedAt","name","total"]},"subscriber":{"description":"Subscriber","type":"object","properties":{"$id":{"type":"string","description":"Subscriber ID.","x-example":"259125845563242502"},"$createdAt":{"type":"string","description":"Subscriber creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Subscriber update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"targetId":{"type":"string","description":"Target ID.","x-example":"259125845563242502"},"target":{"type":"object","description":"Target.","x-example":{"$id":"259125845563242502","$createdAt":"2020-10-15T06:38:00.000+00:00","$updatedAt":"2020-10-15T06:38:00.000+00:00","providerType":"email","providerId":"259125845563242502","name":"ageon-app-email","identifier":"random-mail@email.org","userId":"5e5ea5c16897e"},"items":{"$ref":"#\/components\/schemas\/target"}},"userId":{"type":"string","description":"Topic ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User Name.","x-example":"Aegon Targaryen"},"topicId":{"type":"string","description":"Topic ID.","x-example":"259125845563242502"},"providerType":{"type":"string","description":"The target provider type. Can be one of the following: `email`, `sms` or `push`.","x-example":"email"}},"required":["$id","$createdAt","$updatedAt","targetId","target","userId","userName","topicId","providerType"]},"target":{"description":"Target","type":"object","properties":{"$id":{"type":"string","description":"Target ID.","x-example":"259125845563242502"},"$createdAt":{"type":"string","description":"Target creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Target update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Target Name.","x-example":"Aegon apple token"},"userId":{"type":"string","description":"User ID.","x-example":"259125845563242502"},"providerId":{"type":"string","description":"Provider ID.","x-example":"259125845563242502","nullable":true},"providerType":{"type":"string","description":"The target provider type. Can be one of the following: `email`, `sms` or `push`.","x-example":"email"},"identifier":{"type":"string","description":"The target identifier.","x-example":"token"}},"required":["$id","$createdAt","$updatedAt","name","userId","providerType","identifier"]},"migration":{"description":"Migration","type":"object","properties":{"$id":{"type":"string","description":"Migration ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"string","description":"Migration status ( pending, processing, failed, completed ) ","x-example":"pending"},"stage":{"type":"string","description":"Migration stage ( init, processing, source-check, destination-check, migrating, finished )","x-example":"init"},"source":{"type":"string","description":"A string containing the type of source of the migration.","x-example":"Appwrite"},"resources":{"type":"array","description":"Resources to migration.","items":{"type":"string"},"x-example":["user"]},"statusCounters":{"type":"object","description":"A group of counters that represent the total progress of the migration.","x-example":"{\"Database\": {\"PENDING\": 0, \"SUCCESS\": 1, \"ERROR\": 0, \"SKIP\": 0, \"PROCESSING\": 0, \"WARNING\": 0}}"},"resourceData":{"type":"object","description":"An array of objects containing the report data of the resources that were migrated.","x-example":"[{\"resource\":\"Database\",\"id\":\"public\",\"status\":\"SUCCESS\",\"message\":\"\"}]"},"errors":{"type":"array","description":"All errors that occurred during the migration process.","items":{"type":"string"},"x-example":[]}},"required":["$id","$createdAt","$updatedAt","status","stage","source","resources","statusCounters","resourceData","errors"]},"migrationReport":{"description":"Migration Report","type":"object","properties":{"user":{"type":"integer","description":"Number of users to be migrated.","x-example":20,"format":"int32"},"team":{"type":"integer","description":"Number of teams to be migrated.","x-example":20,"format":"int32"},"database":{"type":"integer","description":"Number of databases to be migrated.","x-example":20,"format":"int32"},"document":{"type":"integer","description":"Number of documents to be migrated.","x-example":20,"format":"int32"},"file":{"type":"integer","description":"Number of files to be migrated.","x-example":20,"format":"int32"},"bucket":{"type":"integer","description":"Number of buckets to be migrated.","x-example":20,"format":"int32"},"function":{"type":"integer","description":"Number of functions to be migrated.","x-example":20,"format":"int32"},"size":{"type":"integer","description":"Size of files to be migrated in mb.","x-example":30000,"format":"int32"},"version":{"type":"string","description":"Version of the Appwrite instance to be migrated.","x-example":"1.4.0"}},"required":["user","team","database","document","file","bucket","function","size","version"]},"firebaseProject":{"description":"MigrationFirebaseProject","type":"object","properties":{"projectId":{"type":"string","description":"Project ID.","x-example":"my-project"},"displayName":{"type":"string","description":"Project display name.","x-example":"My Project"}},"required":["projectId","displayName"]}},"securitySchemes":{"Project":{"type":"apiKey","name":"X-Appwrite-Project","description":"Your project ID","in":"header","x-appwrite":{"demo":"5df5acd0d48c2"}},"Key":{"type":"apiKey","name":"X-Appwrite-Key","description":"Your secret API key","in":"header","x-appwrite":{"demo":"919c2d18fb5d4...a2ae413da83346ad2"}},"JWT":{"type":"apiKey","name":"X-Appwrite-JWT","description":"Your secret JSON Web Token","in":"header"},"Locale":{"type":"apiKey","name":"X-Appwrite-Locale","description":"","in":"header","x-appwrite":{"demo":"en"}},"Mode":{"type":"apiKey","name":"X-Appwrite-Mode","description":"","in":"header","x-appwrite":{"demo":""}}}},"externalDocs":{"description":"Full API docs, specs and tutorials","url":"https:\/\/appwrite.io\/docs"}} \ No newline at end of file diff --git a/app/config/specs/open-api3-latest-server.json b/app/config/specs/open-api3-latest-server.json index e1513366c0..a1829efbbb 100644 --- a/app/config/specs/open-api3-latest-server.json +++ b/app/config/specs/open-api3-latest-server.json @@ -1 +1 @@ -{"openapi":"3.0.0","info":{"version":"1.4.13","title":"Appwrite","description":"Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https:\/\/appwrite.io\/docs](https:\/\/appwrite.io\/docs)","termsOfService":"https:\/\/appwrite.io\/policy\/terms","contact":{"name":"Appwrite Team","url":"https:\/\/appwrite.io\/support","email":"team@appwrite.io"},"license":{"name":"BSD-3-Clause","url":"https:\/\/raw.githubusercontent.com\/appwrite\/appwrite\/master\/LICENSE"}},"servers":[{"url":"https:\/\/HOSTNAME\/v1"}],"paths":{"\/account":{"get":{"summary":"Get account","operationId":"accountGet","tags":["account"],"description":"Get the currently logged in user.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"get","weight":22,"cookies":false,"type":"","demo":"account\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]},"post":{"summary":"Create account","operationId":"accountCreate","tags":["account"],"description":"Use this endpoint to allow a new user to register a new account in your project. After the user registration completes successfully, you can use the [\/account\/verfication](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createVerification) route to start verifying the user email address. To allow the new user to login to their new account, you need to create a new [account session](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createEmailSession).","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"create","weight":7,"cookies":false,"type":"","demo":"account\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"New user password. Must be between 8 and 256 chars.","x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/account\/email":{"patch":{"summary":"Update email","operationId":"accountUpdateEmail","tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateEmail","weight":29,"cookies":false,"type":"","demo":"account\/update-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","x-example":"password"}},"required":["email","password"]}}}}}},"\/account\/identities":{"get":{"summary":"List Identities","operationId":"accountListIdentities","tags":["account"],"description":"Get the list of identities for the currently logged in user.","responses":{"200":{"description":"Identities List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/identityList"}}}}},"x-appwrite":{"method":"listIdentities","weight":13,"cookies":false,"type":"","demo":"account\/list-identities.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-identities.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/identities","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, provider, providerUid, providerEmail, providerAccessTokenExpiry","required":false,"schema":{"type":"string","default":[]},"in":"query"}]}},"\/account\/identities\/{identityId}":{"delete":{"summary":"Delete identity","operationId":"accountDeleteIdentity","tags":["account"],"description":"Delete an identity by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIdentity","weight":14,"cookies":false,"type":"","demo":"account\/delete-identity.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-identity.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"identityId","description":"Identity ID.","required":true,"schema":{"type":"string","x-example":"[IDENTITY_ID]"},"in":"path"}]}},"\/account\/jwt":{"post":{"summary":"Create JWT","operationId":"accountCreateJWT","tags":["account"],"description":"Use this endpoint to create a JSON Web Token. You can use the resulting JWT to authenticate on behalf of the current user when working with the Appwrite server-side API and SDKs. The JWT secret is valid for 15 minutes from its creation and will be invalid if the user will logout in that time frame.","responses":{"201":{"description":"JWT","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/jwt"}}}}},"x-appwrite":{"method":"createJWT","weight":20,"cookies":false,"type":"","demo":"account\/create-j-w-t.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-jwt.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"accounts.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"List logs","operationId":"accountListLogs","tags":["account"],"description":"Get the list of latest security activity logs for the currently logged in user. Each log returns user IP address, location and date and time of log.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listLogs","weight":25,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update name","operationId":"accountUpdateName","tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateName","weight":27,"cookies":false,"type":"","demo":"account\/update-name.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-name.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["name"]}}}}}},"\/account\/password":{"patch":{"summary":"Update password","operationId":"accountUpdatePassword","tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePassword","weight":28,"cookies":false,"type":"","demo":"account\/update-password.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-password.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"password":{"type":"string","description":"New user password. Must be at least 8 chars.","x-example":null},"oldPassword":{"type":"string","description":"Current user password. Must be at least 8 chars.","x-example":"password"}},"required":["password"]}}}}}},"\/account\/phone":{"patch":{"summary":"Update phone","operationId":"accountUpdatePhone","tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createPhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePhone","weight":30,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","x-example":"password"}},"required":["phone","password"]}}}}}},"\/account\/prefs":{"get":{"summary":"Get account preferences","operationId":"accountGetPrefs","tags":["account"],"description":"Get the preferences as a key-value object for the currently logged in user.","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"getPrefs","weight":23,"cookies":false,"type":"","demo":"account\/get-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/prefs","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]},"patch":{"summary":"Update preferences","operationId":"accountUpdatePrefs","tags":["account"],"description":"Update currently logged in user account preferences. The object you pass is stored as is, and replaces any previous value. The maximum allowed prefs size is 64kB and throws error if exceeded.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePrefs","weight":31,"cookies":false,"type":"","demo":"account\/update-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/prefs","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"prefs":{"type":"object","description":"Prefs key-value JSON object.","x-example":"{}"}},"required":["prefs"]}}}}}},"\/account\/recovery":{"post":{"summary":"Create password recovery","operationId":"accountCreateRecovery","tags":["account"],"description":"Sends the user an email with a temporary secret key for password reset. When the user clicks the confirmation link he is redirected back to your app password reset URL with the secret key and email address values attached to the URL query string. Use the query string params to submit a request to the [PUT \/account\/recovery](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateRecovery) endpoint to complete the process. The verification link sent to the user's email address is valid for 1 hour.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createRecovery","weight":36,"cookies":false,"type":"","demo":"account\/create-recovery.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-recovery.md","rate-limit":10,"rate-time":3600,"rate-key":["url:{url},email:{param-email}","ip:{ip}"],"scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"url":{"type":"string","description":"URL to redirect the user back to your app from the recovery email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"}},"required":["email","url"]}}}}},"put":{"summary":"Create password recovery (confirmation)","operationId":"accountUpdateRecovery","tags":["account"],"description":"Use this endpoint to complete the user account password reset. Both the **userId** and **secret** arguments will be passed as query parameters to the redirect URL you have provided when sending your request to the [POST \/account\/recovery](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createRecovery) endpoint.\n\nPlease note that in order to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) the only valid redirect URLs are the ones from domains you have set when adding your platforms in the console interface.","responses":{"200":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"updateRecovery","weight":37,"cookies":false,"type":"","demo":"account\/update-recovery.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-recovery.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid reset token.","x-example":"[SECRET]"},"password":{"type":"string","description":"New user password. Must be between 8 and 256 chars.","x-example":null}},"required":["userId","secret","password"]}}}}}},"\/account\/sessions":{"get":{"summary":"List sessions","operationId":"accountListSessions","tags":["account"],"description":"Get the list of active sessions across different devices for the currently logged in user.","responses":{"200":{"description":"Sessions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/sessionList"}}}}},"x-appwrite":{"method":"listSessions","weight":24,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/sessions","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]},"delete":{"summary":"Delete sessions","operationId":"accountDeleteSessions","tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":35,"cookies":false,"type":"","demo":"account\/delete-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-sessions.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/account\/sessions\/anonymous":{"post":{"summary":"Create anonymous session","operationId":"accountCreateAnonymousSession","tags":["account"],"description":"Use this endpoint to allow a new user to register an anonymous account in your project. This route will also create a new session for the user. To allow the new user to convert an anonymous account to a normal account, you need to update its [email and password](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateEmail) or create an [OAuth2 session](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#CreateOAuth2Session).","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"createAnonymousSession","weight":19,"cookies":false,"type":"","demo":"account\/create-anonymous-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-anonymous.md","rate-limit":50,"rate-time":3600,"rate-key":"ip:{ip}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/sessions\/email":{"post":{"summary":"Create email password session","operationId":"accountCreateEmailPasswordSession","tags":["account"],"description":"Allow the user to login into their account by providing a valid email and password combination. This route will create a new session for the user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"createEmailPasswordSession","weight":8,"cookies":false,"type":"","demo":"account\/create-email-password-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-email-password.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","x-example":"password"}},"required":["email","password"]}}}}}},"\/account\/sessions\/magic-url":{"put":{"summary":"Create session (deprecated)","operationId":"accountUpdateMagicURLSession","tags":["account"],"description":"Use this endpoint to create a session from token. Provide the **userId** and **secret** parameters from the successful response of authentication flows initiated by token creation. For example, magic URL and phone login.","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateMagicURLSession","weight":16,"cookies":false,"type":"","demo":"account\/update-magic-u-r-l-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session.md","rate-limit":10,"rate-time":3600,"rate-key":"ip:{ip},userId:{param-userId}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/account\/sessions\/oauth2\/{provider}":{"get":{"summary":"Create OAuth2 session","operationId":"accountCreateOAuth2Session","tags":["account"],"description":"Allow the user to login to their account using the OAuth2 provider of their choice. Each OAuth2 provider should be enabled from the Appwrite console first. Use the success and failure arguments to provide a redirect URL's back to your app when login is completed.\n\nIf there is already an active session, the new session will be attached to the logged-in account. If there are no active sessions, the server will attempt to look for a user with the same email address as the email received from the OAuth2 provider and attach the new session to the existing user. If no matching user is found - the server will create a new user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).\n","responses":{"301":{"description":"File"}},"x-appwrite":{"method":"createOAuth2Session","weight":9,"cookies":false,"type":"webAuth","demo":"account\/create-o-auth2session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-oauth2.md","rate-limit":50,"rate-time":3600,"rate-key":"ip:{ip}","scope":"sessions.write","platforms":["client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"provider","description":"OAuth2 Provider. Currently, supported providers are: amazon, apple, auth0, authentik, autodesk, bitbucket, bitly, box, dailymotion, discord, disqus, dropbox, etsy, facebook, github, gitlab, google, linkedin, microsoft, notion, oidc, okta, paypal, paypalSandbox, podio, salesforce, slack, spotify, stripe, tradeshift, tradeshiftBox, twitch, wordpress, yahoo, yammer, yandex, zoho, zoom.","required":true,"schema":{"type":"string","x-example":"amazon","enum":["amazon","apple","auth0","authentik","autodesk","bitbucket","bitly","box","dailymotion","discord","disqus","dropbox","etsy","facebook","github","gitlab","google","linkedin","microsoft","notion","oidc","okta","paypal","paypalSandbox","podio","salesforce","slack","spotify","stripe","tradeshift","tradeshiftBox","twitch","wordpress","yahoo","yammer","yandex","zoho","zoom","mock"],"x-enum-name":"Provider","x-enum-keys":[]},"in":"path"},{"name":"success","description":"URL to redirect back to your app after a successful login attempt. Only URLs from hostnames in your project's platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","required":false,"schema":{"type":"string","format":"url","x-example":"https:\/\/example.com","default":""},"in":"query"},{"name":"failure","description":"URL to redirect back to your app after a failed login attempt. Only URLs from hostnames in your project's platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","required":false,"schema":{"type":"string","format":"url","x-example":"https:\/\/example.com","default":""},"in":"query"},{"name":"token","description":"Include token credentials in the final redirect, useful for server-side integrations, or when cookies are not available.","required":false,"schema":{"type":"boolean","x-example":false,"default":false},"in":"query"},{"name":"scopes","description":"A list of custom OAuth2 scopes. Check each provider internal docs for a list of supported scopes. Maximum of 100 scopes are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/sessions\/token":{"post":{"summary":"Create session","operationId":"accountCreateSession","tags":["account"],"description":"Use this endpoint to create a session from token. Provide the **userId** and **secret** parameters from the successful response of authentication flows initiated by token creation. For example, magic URL and phone login.","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"createSession","weight":17,"cookies":false,"type":"","demo":"account\/create-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session.md","rate-limit":10,"rate-time":3600,"rate-key":"ip:{ip},userId:{param-userId}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Secret of a token generated by login methods. For example, the `createMagicURLToken` or `createPhoneToken` methods.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/account\/sessions\/{sessionId}":{"get":{"summary":"Get session","operationId":"accountGetSession","tags":["account"],"description":"Use this endpoint to get a logged in user's session using a Session ID. Inputting 'current' will return the current session being used.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"getSession","weight":26,"cookies":false,"type":"","demo":"account\/get-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-session.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/sessions","offline-key":"{sessionId}","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to get the current device session.","required":true,"schema":{"type":"string","x-example":"[SESSION_ID]"},"in":"path"}]},"patch":{"summary":"Update OAuth session (refresh tokens)","operationId":"accountUpdateSession","tags":["account"],"description":"Access tokens have limited lifespan and expire to mitigate security risks. If session was created using an OAuth provider, this route can be used to \"refresh\" the access token.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateSession","weight":34,"cookies":false,"type":"","demo":"account\/update-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-session.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to update the current device session.","required":true,"schema":{"type":"string","x-example":"[SESSION_ID]"},"in":"path"}]},"delete":{"summary":"Delete session","operationId":"accountDeleteSession","tags":["account"],"description":"Logout the user. Use 'current' as the session ID to logout on this device, use a session ID to logout on another device. If you're looking to logout the user on all devices, use [Delete Sessions](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#deleteSessions) instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSession","weight":33,"cookies":false,"type":"","demo":"account\/delete-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-session.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to delete the current device session.","required":true,"schema":{"type":"string","x-example":"[SESSION_ID]"},"in":"path"}]}},"\/account\/status":{"patch":{"summary":"Update status","operationId":"accountUpdateStatus","tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateStatus","weight":32,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/account\/tokens\/magic-url":{"post":{"summary":"Create magic URL token","operationId":"accountCreateMagicURLToken","tags":["account"],"description":"Sends the user an email with a secret key for creating a session. If the provided user ID has not been registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [PUT \/account\/sessions\/magic-url](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateMagicURLSession) endpoint to complete the login process. The link sent to the user's email address is valid for 1 hour. If you are on a mobile device you can leave the URL parameter empty, so that the login completion will be handled by your Appwrite instance by default.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).\n","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createMagicURLToken","weight":15,"cookies":false,"type":"","demo":"account\/create-magic-u-r-l-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-token-magic-url.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"url":{"type":"string","description":"URL to redirect the user back to your app from the magic URL login. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"},"securityPhrase":{"type":"boolean","description":"Toggle for security phrase. If enabled, email will be send with a randomly generated phrase and the phrase will also be included in the response. Confirming phrases match increases the security of authentication flow.","x-example":false}},"required":["userId","email"]}}}}}},"\/account\/tokens\/phone":{"post":{"summary":"Create phone token","operationId":"accountCreatePhoneToken","tags":["account"],"description":"Sends the user an SMS with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [PUT \/account\/sessions\/phone](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updatePhoneSession) endpoint to complete the login process. The secret sent to the user's phone is valid for 15 minutes.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createPhoneToken","weight":18,"cookies":false,"type":"","demo":"account\/create-phone-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-token-phone.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},phone:{param-phone}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"}},"required":["userId","phone"]}}}}}},"\/account\/verification":{"post":{"summary":"Create email verification","operationId":"accountCreateVerification","tags":["account"],"description":"Use this endpoint to send a verification message to your user email address to confirm they are the valid owners of that address. Both the **userId** and **secret** arguments will be passed as query parameters to the URL you have provided to be attached to the verification email. The provided URL should redirect the user back to your app and allow you to complete the verification process by verifying both the **userId** and **secret** parameters. Learn more about how to [complete the verification process](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateVerification). The verification link sent to the user's email address is valid for 7 days.\n\nPlease note that in order to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md), the only valid redirect URLs are the ones from domains you have set when adding your platforms in the console interface.\n","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createVerification","weight":38,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"url":{"type":"string","description":"URL to redirect the user back to your app from the verification email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"}},"required":["url"]}}}}},"put":{"summary":"Create email verification (confirmation)","operationId":"accountUpdateVerification","tags":["account"],"description":"Use this endpoint to complete the user email verification process. Use both the **userId** and **secret** parameters that were attached to your app URL to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"updateVerification","weight":39,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/account\/verification\/phone":{"post":{"summary":"Create phone verification","operationId":"accountCreatePhoneVerification","tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updatePhone) endpoint. Learn more about how to [complete the verification process](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createPhoneVerification","weight":40,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{userId}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]},"put":{"summary":"Create phone verification (confirmation)","operationId":"accountUpdatePhoneVerification","tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"updatePhoneVerification","weight":41,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/avatars\/browsers\/{code}":{"get":{"summary":"Get browser icon","operationId":"avatarsGetBrowser","tags":["avatars"],"description":"You can use this endpoint to show different browser icons to your users. The code argument receives the browser code as it appears in your user [GET \/account\/sessions](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#getSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getBrowser","weight":44,"cookies":false,"type":"location","demo":"avatars\/get-browser.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-browser.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Browser Code.","required":true,"schema":{"type":"string","x-example":"aa","enum":["aa","an","ch","ci","cm","cr","ff","sf","mf","ps","oi","om","op","on"],"x-enum-name":"Browser","x-enum-keys":["Avant Browser","Android WebView Beta","Google Chrome","Google Chrome (iOS)","Google Chrome (Mobile)","Chromium","Mozilla Firefox","Safari","Mobile Safari","Microsoft Edge","Microsoft Edge (iOS)","Opera Mini","Opera","Opera (Next)"]},"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"}]}},"\/avatars\/credit-cards\/{code}":{"get":{"summary":"Get credit card icon","operationId":"avatarsGetCreditCard","tags":["avatars"],"description":"The credit card endpoint will return you the icon of the credit card provider you need. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getCreditCard","weight":43,"cookies":false,"type":"location","demo":"avatars\/get-credit-card.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-credit-card.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Credit Card Code. Possible values: amex, argencard, cabal, censosud, diners, discover, elo, hipercard, jcb, mastercard, naranja, targeta-shopping, union-china-pay, visa, mir, maestro.","required":true,"schema":{"type":"string","x-example":"amex","enum":["amex","argencard","cabal","censosud","diners","discover","elo","hipercard","jcb","mastercard","naranja","targeta-shopping","union-china-pay","visa","mir","maestro"],"x-enum-name":"CreditCard","x-enum-keys":["American Express","Argencard","Cabal","Consosud","Diners Club","Discover","Elo","Hipercard","JCB","Mastercard","Naranja","Tarjeta Shopping","Union China Pay","Visa","MIR","Maestro"]},"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"}]}},"\/avatars\/favicon":{"get":{"summary":"Get favicon","operationId":"avatarsGetFavicon","tags":["avatars"],"description":"Use this endpoint to fetch the favorite icon (AKA favicon) of any remote website URL.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFavicon","weight":47,"cookies":false,"type":"location","demo":"avatars\/get-favicon.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-favicon.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"url","description":"Website URL which you want to fetch the favicon from.","required":true,"schema":{"type":"string","format":"url","x-example":"https:\/\/example.com"},"in":"query"}]}},"\/avatars\/flags\/{code}":{"get":{"summary":"Get country flag","operationId":"avatarsGetFlag","tags":["avatars"],"description":"You can use this endpoint to show different country flags icons to your users. The code argument receives the 2 letter country code. Use width, height and quality arguments to change the output settings. Country codes follow the [ISO 3166-1](https:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFlag","weight":45,"cookies":false,"type":"location","demo":"avatars\/get-flag.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-flag.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Country Code. ISO Alpha-2 country code format.","required":true,"schema":{"type":"string","x-example":"af","enum":["af","ao","al","ad","ae","ar","am","ag","au","at","az","bi","be","bj","bf","bd","bg","bh","bs","ba","by","bz","bo","br","bb","bn","bt","bw","cf","ca","ch","cl","cn","ci","cm","cd","cg","co","km","cv","cr","cu","cy","cz","de","dj","dm","dk","do","dz","ec","eg","er","es","ee","et","fi","fj","fr","fm","ga","gb","ge","gh","gn","gm","gw","gq","gr","gd","gt","gy","hn","hr","ht","hu","id","in","ie","ir","iq","is","il","it","jm","jo","jp","kz","ke","kg","kh","ki","kn","kr","kw","la","lb","lr","ly","lc","li","lk","ls","lt","lu","lv","ma","mc","md","mg","mv","mx","mh","mk","ml","mt","mm","me","mn","mz","mr","mu","mw","my","na","ne","ng","ni","nl","no","np","nr","nz","om","pk","pa","pe","ph","pw","pg","pl","kp","pt","py","qa","ro","ru","rw","sa","sd","sn","sg","sb","sl","sv","sm","so","rs","ss","st","sr","sk","si","se","sz","sc","sy","td","tg","th","tj","tm","tl","to","tt","tn","tr","tv","tz","ug","ua","uy","us","uz","va","vc","ve","vn","vu","ws","ye","za","zm","zw"],"x-enum-name":"Flag","x-enum-keys":["Afghanistan","Angola","Albania","Andorra","United Arab Emirates","Argentina","Armenia","Antigua and Barbuda","Australia","Austria","Azerbaijan","Burundi","Belgium","Benin","Burkina Faso","Bangladesh","Bulgaria","Bahrain","Bahamas","Bosnia and Herzegovina","Belarus","Belize","Bolivia","Brazil","Barbados","Brunei Darussalam","Bhutan","Botswana","Central African Republic","Canada","Switzerland","Chile","China","C\u00f4te d'Ivoire","Cameroon","Democratic Republic of the Congo","Republic of the Congo","Colombia","Comoros","Cape Verde","Costa Rica","Cuba","Cyprus","Czech Republic","Germany","Djibouti","Dominica","Denmark","Dominican Republic","Algeria","Ecuador","Egypt","Eritrea","Spain","Estonia","Ethiopia","Finland","Fiji","France","Micronesia (Federated States of)","Gabon","United Kingdom","Georgia","Ghana","Guinea","Gambia","Guinea-Bissau","Equatorial Guinea","Greece","Grenada","Guatemala","Guyana","Honduras","Croatia","Haiti","Hungary","Indonesia","India","Ireland","Iran (Islamic Republic of)","Iraq","Iceland","Israel","Italy","Jamaica","Jordan","Japan","Kazakhstan","Kenya","Kyrgyzstan","Cambodia","Kiribati","Saint Kitts and Nevis","South Korea","Kuwait","Lao People's Democratic Republic","Lebanon","Liberia","Libya","Saint Lucia","Liechtenstein","Sri Lanka","Lesotho","Lithuania","Luxembourg","Latvia","Morocco","Monaco","Moldova","Madagascar","Maldives","Mexico","Marshall Islands","North Macedonia","Mali","Malta","Myanmar","Montenegro","Mongolia","Mozambique","Mauritania","Mauritius","Malawi","Malaysia","Namibia","Niger","Nigeria","Nicaragua","Netherlands","Norway","Nepal","Nauru","New Zealand","Oman","Pakistan","Panama","Peru","Philippines","Palau","Papua New Guinea","Poland","North Korea","Portugal","Paraguay","Qatar","Romania","Russia","Rwanda","Saudi Arabia","Sudan","Senegal","Singapore","Solomon Islands","Sierra Leone","El Salvador","San Marino","Somalia","Serbia","South Sudan","Sao Tome and Principe","Suriname","Slovakia","Slovenia","Sweden","Eswatini","Seychelles","Syria","Chad","Togo","Thailand","Tajikistan","Turkmenistan","Timor-Leste","Tonga","Trinidad and Tobago","Tunisia","Turkey","Tuvalu","Tanzania","Uganda","Ukraine","Uruguay","United States","Uzbekistan","Vatican City","Saint Vincent and the Grenadines","Venezuela","Vietnam","Vanuatu","Samoa","Yemen","South Africa","Zambia","Zimbabwe"]},"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"}]}},"\/avatars\/image":{"get":{"summary":"Get image from URL","operationId":"avatarsGetImage","tags":["avatars"],"description":"Use this endpoint to fetch a remote image URL and crop it to any image size you want. This endpoint is very useful if you need to crop and display remote images in your app or in case you want to make sure a 3rd party image is properly served using a TLS protocol.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getImage","weight":46,"cookies":false,"type":"location","demo":"avatars\/get-image.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-image.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"url","description":"Image URL which you want to crop.","required":true,"schema":{"type":"string","format":"url","x-example":"https:\/\/example.com"},"in":"query"},{"name":"width","description":"Resize preview image width, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get user initials","operationId":"avatarsGetInitials","tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getInitials","weight":49,"cookies":false,"type":"location","demo":"avatars\/get-initials.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-initials.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"name","description":"Full Name. When empty, current user name or email will be used. Max length: 128 chars.","required":false,"schema":{"type":"string","x-example":"[NAME]","default":""},"in":"query"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":500},"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":500},"in":"query"},{"name":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"schema":{"type":"string","default":""},"in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR code","operationId":"avatarsGetQR","tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getQR","weight":48,"cookies":false,"type":"location","demo":"avatars\/get-q-r.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-qr.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"text","description":"Plain text to be converted to QR code image.","required":true,"schema":{"type":"string","x-example":"[TEXT]"},"in":"query"},{"name":"size","description":"QR code size. Pass an integer between 1 to 1000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":1,"default":400},"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":1},"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"schema":{"type":"boolean","x-example":false,"default":false},"in":"query"}]}},"\/databases":{"get":{"summary":"List databases","operationId":"databasesList","tags":["databases"],"description":"Get a list of all databases from the current Appwrite project. You can use the search parameter to filter your results.","responses":{"200":{"description":"Databases List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/databaseList"}}}}},"x-appwrite":{"method":"list","weight":54,"cookies":false,"type":"","demo":"databases\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create database","operationId":"databasesCreate","tags":["databases"],"description":"Create a new Database.\n","responses":{"201":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"create","weight":53,"cookies":false,"type":"","demo":"databases\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"databaseId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[DATABASE_ID]","x-global":true},"name":{"type":"string","description":"Database name. Max length: 128 chars.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Is the database enabled? When set to 'disabled', users cannot access the database but Server SDKs with an API key can still read and write to the database. No data is lost when this is toggled.","x-example":false}},"required":["databaseId","name"]}}}}}},"\/databases\/{databaseId}":{"get":{"summary":"Get database","operationId":"databasesGet","tags":["databases"],"description":"Get a database by its unique ID. This endpoint response returns a JSON object with the database metadata.","responses":{"200":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"get","weight":55,"cookies":false,"type":"","demo":"databases\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}]},"put":{"summary":"Update database","operationId":"databasesUpdate","tags":["databases"],"description":"Update a database by its unique ID.","responses":{"200":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"update","weight":57,"cookies":false,"type":"","demo":"databases\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Database name. Max length: 128 chars.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Is database enabled? When set to 'disabled', users cannot access the database but Server SDKs with an API key can still read and write to the database. No data is lost when this is toggled.","x-example":false}},"required":["name"]}}}}},"delete":{"summary":"Delete database","operationId":"databasesDelete","tags":["databases"],"description":"Delete a database by its unique ID. Only API keys with with databases.write scope can delete a database.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":58,"cookies":false,"type":"","demo":"databases\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections":{"get":{"summary":"List collections","operationId":"databasesListCollections","tags":["databases"],"description":"Get a list of all collections that belong to the provided databaseId. You can use the search parameter to filter your results.","responses":{"200":{"description":"Collections List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collectionList"}}}}},"x-appwrite":{"method":"listCollections","weight":60,"cookies":false,"type":"","demo":"databases\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, documentSecurity","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create collection","operationId":"databasesCreateCollection","tags":["databases"],"description":"Create a new Collection. Before using this route, you should create a new database resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"createCollection","weight":59,"cookies":false,"type":"","demo":"databases\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permissions strings. By default, no user is granted with any permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":false},"enabled":{"type":"boolean","description":"Is collection enabled? When set to 'disabled', users cannot access the collection but Server SDKs with and API key can still read and write to the collection. No data is lost when this is toggled.","x-example":false}},"required":["collectionId","name"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}":{"get":{"summary":"Get collection","operationId":"databasesGetCollection","tags":["databases"],"description":"Get a collection by its unique ID. This endpoint response returns a JSON object with the collection metadata.","responses":{"200":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"getCollection","weight":61,"cookies":false,"type":"","demo":"databases\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]},"put":{"summary":"Update collection","operationId":"databasesUpdateCollection","tags":["databases"],"description":"Update a collection by its unique ID.","responses":{"200":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"updateCollection","weight":63,"cookies":false,"type":"","demo":"databases\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":false},"enabled":{"type":"boolean","description":"Is collection enabled? When set to 'disabled', users cannot access the collection but Server SDKs with and API key can still read and write to the collection. No data is lost when this is toggled.","x-example":false}},"required":["name"]}}}}},"delete":{"summary":"Delete collection","operationId":"databasesDeleteCollection","tags":["databases"],"description":"Delete a collection by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteCollection","weight":64,"cookies":false,"type":"","demo":"databases\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes":{"get":{"summary":"List attributes","operationId":"databasesListAttributes","tags":["databases"],"description":"","responses":{"200":{"description":"Attributes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeList"}}}}},"x-appwrite":{"method":"listAttributes","weight":75,"cookies":false,"type":"","demo":"databases\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: key, type, size, required, array, status, error","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create boolean attribute","operationId":"databasesCreateBooleanAttribute","tags":["databases"],"description":"Create a boolean attribute.\n","responses":{"202":{"description":"AttributeBoolean","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeBoolean"}}}}},"x-appwrite":{"method":"createBooleanAttribute","weight":72,"cookies":false,"type":"","demo":"databases\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":false},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean\/{key}":{"patch":{"summary":"Update boolean attribute","operationId":"databasesUpdateBooleanAttribute","tags":["databases"],"description":"","responses":{"200":{"description":"AttributeBoolean","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeBoolean"}}}}},"x-appwrite":{"method":"updateBooleanAttribute","weight":84,"cookies":false,"type":"","demo":"databases\/update-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":false,"x-nullable":true}},"required":["required","default"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/datetime":{"post":{"summary":"Create datetime attribute","operationId":"databasesCreateDatetimeAttribute","tags":["databases"],"description":"","responses":{"202":{"description":"AttributeDatetime","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeDatetime"}}}}},"x-appwrite":{"method":"createDatetimeAttribute","weight":73,"cookies":false,"type":"","demo":"databases\/create-datetime-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-datetime-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for the attribute in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/datetime\/{key}":{"patch":{"summary":"Update dateTime attribute","operationId":"databasesUpdateDatetimeAttribute","tags":["databases"],"description":"","responses":{"200":{"description":"AttributeDatetime","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeDatetime"}}}}},"x-appwrite":{"method":"updateDatetimeAttribute","weight":85,"cookies":false,"type":"","demo":"databases\/update-datetime-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-datetime-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null,"x-nullable":true}},"required":["required","default"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create email attribute","operationId":"databasesCreateEmailAttribute","tags":["databases"],"description":"Create an email attribute.\n","responses":{"202":{"description":"AttributeEmail","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeEmail"}}}}},"x-appwrite":{"method":"createEmailAttribute","weight":66,"cookies":false,"type":"","demo":"databases\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"email@example.com"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/email\/{key}":{"patch":{"summary":"Update email attribute","operationId":"databasesUpdateEmailAttribute","tags":["databases"],"description":"Update an email attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeEmail","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeEmail"}}}}},"x-appwrite":{"method":"updateEmailAttribute","weight":78,"cookies":false,"type":"","demo":"databases\/update-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"email@example.com","x-nullable":true}},"required":["required","default"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create enum attribute","operationId":"databasesCreateEnumAttribute","tags":["databases"],"description":"","responses":{"202":{"description":"AttributeEnum","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeEnum"}}}}},"x-appwrite":{"method":"createEnumAttribute","weight":67,"cookies":false,"type":"","demo":"databases\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"elements":{"type":"array","description":"Array of elements in enumerated type. Uses length of longest element to determine size. Maximum of 100 elements are allowed, each 255 characters long.","x-example":null,"items":{"type":"string"}},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","elements","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/enum\/{key}":{"patch":{"summary":"Update enum attribute","operationId":"databasesUpdateEnumAttribute","tags":["databases"],"description":"Update an enum attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeEnum","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeEnum"}}}}},"x-appwrite":{"method":"updateEnumAttribute","weight":79,"cookies":false,"type":"","demo":"databases\/update-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-enum-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"elements":{"type":"array","description":"Array of elements in enumerated type. Uses length of longest element to determine size. Maximum of 100 elements are allowed, each 255 characters long.","x-example":null,"items":{"type":"string"}},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"[DEFAULT]","x-nullable":true}},"required":["elements","required","default"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create float attribute","operationId":"databasesCreateFloatAttribute","tags":["databases"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeFloat","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeFloat"}}}}},"x-appwrite":{"method":"createFloatAttribute","weight":71,"cookies":false,"type":"","demo":"databases\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"min":{"type":"number","description":"Minimum value to enforce on new documents","x-example":null},"max":{"type":"number","description":"Maximum value to enforce on new documents","x-example":null},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/float\/{key}":{"patch":{"summary":"Update float attribute","operationId":"databasesUpdateFloatAttribute","tags":["databases"],"description":"Update a float attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeFloat","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeFloat"}}}}},"x-appwrite":{"method":"updateFloatAttribute","weight":83,"cookies":false,"type":"","demo":"databases\/update-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"min":{"type":"number","description":"Minimum value to enforce on new documents","x-example":null},"max":{"type":"number","description":"Maximum value to enforce on new documents","x-example":null},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null,"x-nullable":true}},"required":["required","min","max","default"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create integer attribute","operationId":"databasesCreateIntegerAttribute","tags":["databases"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeInteger","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeInteger"}}}}},"x-appwrite":{"method":"createIntegerAttribute","weight":70,"cookies":false,"type":"","demo":"databases\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"min":{"type":"integer","description":"Minimum value to enforce on new documents","x-example":null},"max":{"type":"integer","description":"Maximum value to enforce on new documents","x-example":null},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/integer\/{key}":{"patch":{"summary":"Update integer attribute","operationId":"databasesUpdateIntegerAttribute","tags":["databases"],"description":"Update an integer attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeInteger","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeInteger"}}}}},"x-appwrite":{"method":"updateIntegerAttribute","weight":82,"cookies":false,"type":"","demo":"databases\/update-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"min":{"type":"integer","description":"Minimum value to enforce on new documents","x-example":null},"max":{"type":"integer","description":"Maximum value to enforce on new documents","x-example":null},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null,"x-nullable":true}},"required":["required","min","max","default"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP address attribute","operationId":"databasesCreateIpAttribute","tags":["databases"],"description":"Create IP address attribute.\n","responses":{"202":{"description":"AttributeIP","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeIp"}}}}},"x-appwrite":{"method":"createIpAttribute","weight":68,"cookies":false,"type":"","demo":"databases\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/ip\/{key}":{"patch":{"summary":"Update IP address attribute","operationId":"databasesUpdateIpAttribute","tags":["databases"],"description":"Update an ip attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeIP","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeIp"}}}}},"x-appwrite":{"method":"updateIpAttribute","weight":80,"cookies":false,"type":"","demo":"databases\/update-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null,"x-nullable":true}},"required":["required","default"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/relationship":{"post":{"summary":"Create relationship attribute","operationId":"databasesCreateRelationshipAttribute","tags":["databases"],"description":"Create relationship attribute. [Learn more about relationship attributes](https:\/\/appwrite.io\/docs\/databases-relationships#relationship-attributes).\n","responses":{"202":{"description":"AttributeRelationship","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeRelationship"}}}}},"x-appwrite":{"method":"createRelationshipAttribute","weight":74,"cookies":false,"type":"","demo":"databases\/create-relationship-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-relationship-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"relatedCollectionId":{"type":"string","description":"Related Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","x-example":"[RELATED_COLLECTION_ID]"},"type":{"type":"string","description":"Relation type","x-example":"oneToOne","enum":["oneToOne","manyToOne","manyToMany","oneToMany"],"x-enum-name":"RelationshipType","x-enum-keys":[]},"twoWay":{"type":"boolean","description":"Is Two Way?","x-example":false},"key":{"type":"string","description":"Attribute Key.","x-example":null},"twoWayKey":{"type":"string","description":"Two Way Attribute Key.","x-example":null},"onDelete":{"type":"string","description":"Constraints option","x-example":"cascade","enum":["cascade","restrict","setNull"],"x-enum-name":"RelationMutate","x-enum-keys":[]}},"required":["relatedCollectionId","type"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create string attribute","operationId":"databasesCreateStringAttribute","tags":["databases"],"description":"Create a string attribute.\n","responses":{"202":{"description":"AttributeString","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeString"}}}}},"x-appwrite":{"method":"createStringAttribute","weight":65,"cookies":false,"type":"","demo":"databases\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"size":{"type":"integer","description":"Attribute size for text attributes, in number of characters.","x-example":1},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false},"encrypt":{"type":"boolean","description":"Toggle encryption for the attribute. Encryption enhances security by not storing any plain text values in the database. However, encrypted attributes cannot be queried.","x-example":false}},"required":["key","size","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/string\/{key}":{"patch":{"summary":"Update string attribute","operationId":"databasesUpdateStringAttribute","tags":["databases"],"description":"Update a string attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeString","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeString"}}}}},"x-appwrite":{"method":"updateStringAttribute","weight":77,"cookies":false,"type":"","demo":"databases\/update-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"[DEFAULT]","x-nullable":true}},"required":["required","default"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL attribute","operationId":"databasesCreateUrlAttribute","tags":["databases"],"description":"Create a URL attribute.\n","responses":{"202":{"description":"AttributeURL","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeUrl"}}}}},"x-appwrite":{"method":"createUrlAttribute","weight":69,"cookies":false,"type":"","demo":"databases\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"https:\/\/example.com"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url\/{key}":{"patch":{"summary":"Update URL attribute","operationId":"databasesUpdateUrlAttribute","tags":["databases"],"description":"Update an url attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeURL","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeUrl"}}}}},"x-appwrite":{"method":"updateUrlAttribute","weight":81,"cookies":false,"type":"","demo":"databases\/update-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"https:\/\/example.com","x-nullable":true}},"required":["required","default"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get attribute","operationId":"databasesGetAttribute","tags":["databases"],"description":"","responses":{"200":{"description":"AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, or AttributeDatetime, or AttributeRelationship, or AttributeString","content":{"application\/json":{"schema":{"oneOf":[{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeRelationship"},{"$ref":"#\/components\/schemas\/attributeString"}]}}}}},"x-appwrite":{"method":"getAttribute","weight":76,"cookies":false,"type":"","demo":"databases\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}]},"delete":{"summary":"Delete attribute","operationId":"databasesDeleteAttribute","tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":87,"cookies":false,"type":"","demo":"databases\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/{key}\/relationship":{"patch":{"summary":"Update relationship attribute","operationId":"databasesUpdateRelationshipAttribute","tags":["databases"],"description":"Update relationship attribute. [Learn more about relationship attributes](https:\/\/appwrite.io\/docs\/databases-relationships#relationship-attributes).\n","responses":{"200":{"description":"AttributeRelationship","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeRelationship"}}}}},"x-appwrite":{"method":"updateRelationshipAttribute","weight":86,"cookies":false,"type":"","demo":"databases\/update-relationship-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-relationship-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"onDelete":{"type":"string","description":"Constraints option","x-example":"cascade","enum":["cascade","restrict","setNull"],"x-enum-name":"RelationMutate","x-enum-keys":[]}}}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List documents","operationId":"databasesListDocuments","tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/documentList"}}}}},"x-appwrite":{"method":"listDocuments","weight":93,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"post":{"summary":"Create document","operationId":"databasesCreateDocument","tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"createDocument","weight":92,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, only the current user is granted all permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get document","operationId":"databasesGetDocument","tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"getDocument","weight":94,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only method allowed is select.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"patch":{"summary":"Update document","operationId":"databasesUpdateDocument","tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"updateDocument","weight":96,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete document","operationId":"databasesDeleteDocument","tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":97,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes":{"get":{"summary":"List indexes","operationId":"databasesListIndexes","tags":["databases"],"description":"","responses":{"200":{"description":"Indexes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/indexList"}}}}},"x-appwrite":{"method":"listIndexes","weight":89,"cookies":false,"type":"","demo":"databases\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: key, type, status, attributes, error","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"post":{"summary":"Create index","operationId":"databasesCreateIndex","tags":["databases"],"description":"","responses":{"202":{"description":"Index","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/index"}}}}},"x-appwrite":{"method":"createIndex","weight":88,"cookies":false,"type":"","demo":"databases\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Index Key.","x-example":null},"type":{"type":"string","description":"Index type.","x-example":"key","enum":["key","fulltext","unique","spatial","array"],"x-enum-name":"IndexType","x-enum-keys":[]},"attributes":{"type":"array","description":"Array of attributes to index. Maximum of 100 attributes are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders. Maximum of 100 orders are allowed.","x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get index","operationId":"databasesGetIndex","tags":["databases"],"description":"","responses":{"200":{"description":"Index","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/index"}}}}},"x-appwrite":{"method":"getIndex","weight":90,"cookies":false,"type":"","demo":"databases\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Index Key.","required":true,"schema":{"type":"string"},"in":"path"}]},"delete":{"summary":"Delete index","operationId":"databasesDeleteIndex","tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":91,"cookies":false,"type":"","demo":"databases\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Index Key.","required":true,"schema":{"type":"string"},"in":"path"}]}},"\/functions":{"get":{"summary":"List functions","operationId":"functionsList","tags":["functions"],"description":"Get a list of all the project's functions. You can use the query params to filter your results.","responses":{"200":{"description":"Functions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/functionList"}}}}},"x-appwrite":{"method":"list","weight":253,"cookies":false,"type":"","demo":"functions\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-functions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, runtime, deployment, schedule, scheduleNext, schedulePrevious, timeout, entrypoint, commands, installationId","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create function","operationId":"functionsCreate","tags":["functions"],"description":"Create a new function. You can pass a list of [permissions](https:\/\/appwrite.io\/docs\/permissions) to allow different project users or team with access to execute the function using the client API.","responses":{"201":{"description":"Function","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/function"}}}}},"x-appwrite":{"method":"create","weight":252,"cookies":false,"type":"","demo":"functions\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"functionId":{"type":"string","description":"Function ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[FUNCTION_ID]"},"name":{"type":"string","description":"Function name. Max length: 128 chars.","x-example":"[NAME]"},"runtime":{"type":"string","description":"Execution runtime.","x-example":"node-18.0","enum":["node-18.0","php-8.0","ruby-3.1","python-3.9"],"x-enum-name":null,"x-enum-keys":[]},"execute":{"type":"array","description":"An array of role strings with execution permissions. By default no user is granted with any execute permissions. [learn more about roles](https:\/\/appwrite.io\/docs\/permissions#permission-roles). Maximum of 100 roles are allowed, each 64 characters long.","x-example":"[\"any\"]","items":{"type":"string"}},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","x-example":null},"timeout":{"type":"integer","description":"Function maximum execution time in seconds.","x-example":1},"enabled":{"type":"boolean","description":"Is function enabled? When set to 'disabled', users cannot access the function but Server SDKs with and API key can still access the function. No data is lost when this is toggled.","x-example":false},"logging":{"type":"boolean","description":"Whether executions will be logged. When set to false, executions will not be logged, but will reduce resource used by your Appwrite project.","x-example":false},"entrypoint":{"type":"string","description":"Entrypoint File. This path is relative to the \"providerRootDirectory\".","x-example":"[ENTRYPOINT]"},"commands":{"type":"string","description":"Build Commands.","x-example":"[COMMANDS]"},"installationId":{"type":"string","description":"Appwrite Installation ID for VCS (Version Control System) deployment.","x-example":"[INSTALLATION_ID]"},"providerRepositoryId":{"type":"string","description":"Repository ID of the repo linked to the function.","x-example":"[PROVIDER_REPOSITORY_ID]"},"providerBranch":{"type":"string","description":"Production branch for the repo linked to the function.","x-example":"[PROVIDER_BRANCH]"},"providerSilentMode":{"type":"boolean","description":"Is the VCS (Version Control System) connection in silent mode for the repo linked to the function? In silent mode, comments will not be made on commits and pull requests.","x-example":false},"providerRootDirectory":{"type":"string","description":"Path to function code in the linked repo.","x-example":"[PROVIDER_ROOT_DIRECTORY]"},"templateRepository":{"type":"string","description":"Repository name of the template.","x-example":"[TEMPLATE_REPOSITORY]"},"templateOwner":{"type":"string","description":"The name of the owner of the template.","x-example":"[TEMPLATE_OWNER]"},"templateRootDirectory":{"type":"string","description":"Path to function code in the template repo.","x-example":"[TEMPLATE_ROOT_DIRECTORY]"},"templateBranch":{"type":"string","description":"Production branch for the repo linked to the function template.","x-example":"[TEMPLATE_BRANCH]"}},"required":["functionId","name","runtime"]}}}}}},"\/functions\/runtimes":{"get":{"summary":"List runtimes","operationId":"functionsListRuntimes","tags":["functions"],"description":"Get a list of all runtimes that are currently active on your instance.","responses":{"200":{"description":"Runtimes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/runtimeList"}}}}},"x-appwrite":{"method":"listRuntimes","weight":254,"cookies":false,"type":"","demo":"functions\/list-runtimes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-runtimes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/functions\/{functionId}":{"get":{"summary":"Get function","operationId":"functionsGet","tags":["functions"],"description":"Get a function by its unique ID.","responses":{"200":{"description":"Function","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/function"}}}}},"x-appwrite":{"method":"get","weight":255,"cookies":false,"type":"","demo":"functions\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}]},"put":{"summary":"Update function","operationId":"functionsUpdate","tags":["functions"],"description":"Update function by its unique ID.","responses":{"200":{"description":"Function","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/function"}}}}},"x-appwrite":{"method":"update","weight":258,"cookies":false,"type":"","demo":"functions\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Function name. Max length: 128 chars.","x-example":"[NAME]"},"runtime":{"type":"string","description":"Execution runtime.","x-example":"node-18.0","enum":["node-18.0","php-8.0","ruby-3.1","python-3.9"],"x-enum-name":null,"x-enum-keys":[]},"execute":{"type":"array","description":"An array of role strings with execution permissions. By default no user is granted with any execute permissions. [learn more about roles](https:\/\/appwrite.io\/docs\/permissions#permission-roles). Maximum of 100 roles are allowed, each 64 characters long.","x-example":"[\"any\"]","items":{"type":"string"}},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","x-example":null},"timeout":{"type":"integer","description":"Maximum execution time in seconds.","x-example":1},"enabled":{"type":"boolean","description":"Is function enabled? When set to 'disabled', users cannot access the function but Server SDKs with and API key can still access the function. No data is lost when this is toggled.","x-example":false},"logging":{"type":"boolean","description":"Whether executions will be logged. When set to false, executions will not be logged, but will reduce resource used by your Appwrite project.","x-example":false},"entrypoint":{"type":"string","description":"Entrypoint File. This path is relative to the \"providerRootDirectory\".","x-example":"[ENTRYPOINT]"},"commands":{"type":"string","description":"Build Commands.","x-example":"[COMMANDS]"},"installationId":{"type":"string","description":"Appwrite Installation ID for VCS (Version Controle System) deployment.","x-example":"[INSTALLATION_ID]"},"providerRepositoryId":{"type":"string","description":"Repository ID of the repo linked to the function","x-example":"[PROVIDER_REPOSITORY_ID]"},"providerBranch":{"type":"string","description":"Production branch for the repo linked to the function","x-example":"[PROVIDER_BRANCH]"},"providerSilentMode":{"type":"boolean","description":"Is the VCS (Version Control System) connection in silent mode for the repo linked to the function? In silent mode, comments will not be made on commits and pull requests.","x-example":false},"providerRootDirectory":{"type":"string","description":"Path to function code in the linked repo.","x-example":"[PROVIDER_ROOT_DIRECTORY]"}},"required":["name"]}}}}},"delete":{"summary":"Delete function","operationId":"functionsDelete","tags":["functions"],"description":"Delete a function by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":261,"cookies":false,"type":"","demo":"functions\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/deployments":{"get":{"summary":"List deployments","operationId":"functionsListDeployments","tags":["functions"],"description":"Get a list of all the project's code deployments. You can use the query params to filter your results.","responses":{"200":{"description":"Deployments List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deploymentList"}}}}},"x-appwrite":{"method":"listDeployments","weight":263,"cookies":false,"type":"","demo":"functions\/list-deployments.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-deployments.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: size, buildId, activate, entrypoint, commands","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create deployment","operationId":"functionsCreateDeployment","tags":["functions"],"description":"Create a new function code deployment. Use this endpoint to upload a new version of your code function. To execute your newly uploaded code, you'll need to update the function's deployment to use your new deployment UID.\n\nThis endpoint accepts a tar.gz file compressed with your code. Make sure to include any dependencies your code has within the compressed file. You can learn more about code packaging in the [Appwrite Cloud Functions tutorial](https:\/\/appwrite.io\/docs\/functions).\n\nUse the \"command\" param to set the entrypoint used to execute your code.","responses":{"202":{"description":"Deployment","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deployment"}}}}},"x-appwrite":{"method":"createDeployment","weight":262,"cookies":false,"type":"","demo":"functions\/create-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":true,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}],"requestBody":{"content":{"multipart\/form-data":{"schema":{"type":"object","properties":{"entrypoint":{"type":"string","description":"Entrypoint File.","x-example":"[ENTRYPOINT]"},"commands":{"type":"string","description":"Build Commands.","x-example":"[COMMANDS]"},"code":{"type":"string","description":"Gzip file with your code package. When used with the Appwrite CLI, pass the path to your code directory, and the CLI will automatically package your code. Use a path that is within the current directory.","x-example":null},"activate":{"type":"boolean","description":"Automatically activate the deployment when it is finished building.","x-example":false}},"required":["code","activate"]}}}}}},"\/functions\/{functionId}\/deployments\/{deploymentId}":{"get":{"summary":"Get deployment","operationId":"functionsGetDeployment","tags":["functions"],"description":"Get a code deployment by its unique ID.","responses":{"200":{"description":"Deployment","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deployment"}}}}},"x-appwrite":{"method":"getDeployment","weight":264,"cookies":false,"type":"","demo":"functions\/get-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"schema":{"type":"string","x-example":"[DEPLOYMENT_ID]"},"in":"path"}]},"patch":{"summary":"Update function deployment","operationId":"functionsUpdateDeployment","tags":["functions"],"description":"Update the function code deployment ID using the unique function ID. Use this endpoint to switch the code deployment that should be executed by the execution endpoint.","responses":{"200":{"description":"Function","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/function"}}}}},"x-appwrite":{"method":"updateDeployment","weight":260,"cookies":false,"type":"","demo":"functions\/update-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-function-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"schema":{"type":"string","x-example":"[DEPLOYMENT_ID]"},"in":"path"}]},"delete":{"summary":"Delete deployment","operationId":"functionsDeleteDeployment","tags":["functions"],"description":"Delete a code deployment by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDeployment","weight":265,"cookies":false,"type":"","demo":"functions\/delete-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"schema":{"type":"string","x-example":"[DEPLOYMENT_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/deployments\/{deploymentId}\/builds\/{buildId}":{"post":{"summary":"Create build","operationId":"functionsCreateBuild","tags":["functions"],"description":"Create a new build for an Appwrite Function deployment. This endpoint can be used to retry a failed build.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"createBuild","weight":266,"cookies":false,"type":"","demo":"functions\/create-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"schema":{"type":"string","x-example":"[DEPLOYMENT_ID]"},"in":"path"},{"name":"buildId","description":"Build unique ID.","required":true,"schema":{"type":"string","x-example":"[BUILD_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/deployments\/{deploymentId}\/download":{"get":{"summary":"Download Deployment","operationId":"functionsDownloadDeployment","tags":["functions"],"description":"Get a Deployment's contents by its unique ID. This endpoint supports range requests for partial or streaming file download.","responses":{"200":{"description":"File"}},"x-appwrite":{"method":"downloadDeployment","weight":259,"cookies":false,"type":"location","demo":"functions\/download-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/download-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"schema":{"type":"string","x-example":"[DEPLOYMENT_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List executions","operationId":"functionsListExecutions","tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/executionList"}}}}},"x-appwrite":{"method":"listExecutions","weight":268,"cookies":false,"type":"","demo":"functions\/list-executions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-executions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, responseStatusCode, duration","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create execution","operationId":"functionsCreateExecution","tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/execution"}}}}},"x-appwrite":{"method":"createExecution","weight":267,"cookies":false,"type":"","demo":"functions\/create-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-execution.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"body":{"type":"string","description":"HTTP body of execution. Default value is empty string.","x-example":"[BODY]"},"async":{"type":"boolean","description":"Execute code in the background. Default value is false.","x-example":false},"path":{"type":"string","description":"HTTP path of execution. Path can include query params. Default value is \/","x-example":"[PATH]"},"method":{"type":"string","description":"HTTP method of execution. Default value is GET.","x-example":"GET","enum":["GET","POST","PUT","PATCH","DELETE","OPTIONS"],"x-enum-name":null,"x-enum-keys":[]},"headers":{"type":"object","description":"HTTP headers of execution. Defaults to empty.","x-example":"{}"}}}}}}}},"\/functions\/{functionId}\/executions\/{executionId}":{"get":{"summary":"Get execution","operationId":"functionsGetExecution","tags":["functions"],"description":"Get a function execution log by its unique ID.","responses":{"200":{"description":"Execution","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/execution"}}}}},"x-appwrite":{"method":"getExecution","weight":269,"cookies":false,"type":"","demo":"functions\/get-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-execution.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"executionId","description":"Execution ID.","required":true,"schema":{"type":"string","x-example":"[EXECUTION_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/variables":{"get":{"summary":"List variables","operationId":"functionsListVariables","tags":["functions"],"description":"Get a list of all variables of a specific function.","responses":{"200":{"description":"Variables List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variableList"}}}}},"x-appwrite":{"method":"listVariables","weight":271,"cookies":false,"type":"","demo":"functions\/list-variables.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-variables.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}]},"post":{"summary":"Create variable","operationId":"functionsCreateVariable","tags":["functions"],"description":"Create a new function environment variable. These variables can be accessed in the function at runtime as environment variables.","responses":{"201":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"createVariable","weight":270,"cookies":false,"type":"","demo":"functions\/create-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","x-example":"[VALUE]"}},"required":["key","value"]}}}}}},"\/functions\/{functionId}\/variables\/{variableId}":{"get":{"summary":"Get variable","operationId":"functionsGetVariable","tags":["functions"],"description":"Get a variable by its unique ID.","responses":{"200":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"getVariable","weight":272,"cookies":false,"type":"","demo":"functions\/get-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}]},"put":{"summary":"Update variable","operationId":"functionsUpdateVariable","tags":["functions"],"description":"Update variable by its unique ID.","responses":{"200":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"updateVariable","weight":273,"cookies":false,"type":"","demo":"functions\/update-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","x-example":"[VALUE]"}},"required":["key"]}}}}},"delete":{"summary":"Delete variable","operationId":"functionsDeleteVariable","tags":["functions"],"description":"Delete a variable by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteVariable","weight":274,"cookies":false,"type":"","demo":"functions\/delete-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}]}},"\/graphql":{"post":{"summary":"GraphQL endpoint","operationId":"graphqlQuery","tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/any"}}}}},"x-appwrite":{"method":"query","weight":289,"cookies":false,"type":"graphql","demo":"graphql\/query.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"Session":[],"JWT":[]}]}},"\/graphql\/mutation":{"post":{"summary":"GraphQL endpoint","operationId":"graphqlMutation","tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/any"}}}}},"x-appwrite":{"method":"mutation","weight":288,"cookies":false,"type":"graphql","demo":"graphql\/mutation.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"Session":[],"JWT":[]}]}},"\/health":{"get":{"summary":"Get HTTP","operationId":"healthGet","tags":["health"],"description":"Check the Appwrite HTTP server is up and responsive.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"get","weight":109,"cookies":false,"type":"","demo":"health\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/anti-virus":{"get":{"summary":"Get antivirus","operationId":"healthGetAntivirus","tags":["health"],"description":"Check the Appwrite Antivirus server is up and connection is successful.","responses":{"200":{"description":"Health Antivirus","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthAntivirus"}}}}},"x-appwrite":{"method":"getAntivirus","weight":127,"cookies":false,"type":"","demo":"health\/get-antivirus.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-storage-anti-virus.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/cache":{"get":{"summary":"Get cache","operationId":"healthGetCache","tags":["health"],"description":"Check the Appwrite in-memory cache servers are up and connection is successful.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"getCache","weight":112,"cookies":false,"type":"","demo":"health\/get-cache.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-cache.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/db":{"get":{"summary":"Get DB","operationId":"healthGetDB","tags":["health"],"description":"Check the Appwrite database servers are up and connection is successful.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"getDB","weight":111,"cookies":false,"type":"","demo":"health\/get-d-b.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-db.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/pubsub":{"get":{"summary":"Get pubsub","operationId":"healthGetPubSub","tags":["health"],"description":"Check the Appwrite pub-sub servers are up and connection is successful.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"getPubSub","weight":114,"cookies":false,"type":"","demo":"health\/get-pub-sub.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-pubsub.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/queue":{"get":{"summary":"Get queue","operationId":"healthGetQueue","tags":["health"],"description":"Check the Appwrite queue messaging servers are up and connection is successful.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"getQueue","weight":113,"cookies":false,"type":"","demo":"health\/get-queue.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/queue\/builds":{"get":{"summary":"Get builds queue","operationId":"healthGetQueueBuilds","tags":["health"],"description":"Get the number of builds that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueBuilds","weight":119,"cookies":false,"type":"","demo":"health\/get-queue-builds.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-builds.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/certificates":{"get":{"summary":"Get certificates queue","operationId":"healthGetQueueCertificates","tags":["health"],"description":"Get the number of certificates that are waiting to be issued against [Letsencrypt](https:\/\/letsencrypt.org\/) in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueCertificates","weight":118,"cookies":false,"type":"","demo":"health\/get-queue-certificates.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-certificates.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/databases":{"get":{"summary":"Get databases queue","operationId":"healthGetQueueDatabases","tags":["health"],"description":"Get the number of database changes that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueDatabases","weight":120,"cookies":false,"type":"","demo":"health\/get-queue-databases.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-databases.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"name","description":"Queue name for which to check the queue size","required":false,"schema":{"type":"string","x-example":"[NAME]","default":"database_db_main"},"in":"query"},{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/deletes":{"get":{"summary":"Get deletes queue","operationId":"healthGetQueueDeletes","tags":["health"],"description":"Get the number of background destructive changes that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueDeletes","weight":121,"cookies":false,"type":"","demo":"health\/get-queue-deletes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-deletes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/functions":{"get":{"summary":"Get functions queue","operationId":"healthGetQueueFunctions","tags":["health"],"description":"","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueFunctions","weight":125,"cookies":false,"type":"","demo":"health\/get-queue-functions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-functions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/logs":{"get":{"summary":"Get logs queue","operationId":"healthGetQueueLogs","tags":["health"],"description":"Get the number of logs that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueLogs","weight":117,"cookies":false,"type":"","demo":"health\/get-queue-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/mails":{"get":{"summary":"Get mails queue","operationId":"healthGetQueueMails","tags":["health"],"description":"Get the number of mails that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueMails","weight":122,"cookies":false,"type":"","demo":"health\/get-queue-mails.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-mails.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/messaging":{"get":{"summary":"Get messaging queue","operationId":"healthGetQueueMessaging","tags":["health"],"description":"Get the number of messages that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueMessaging","weight":123,"cookies":false,"type":"","demo":"health\/get-queue-messaging.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-messaging.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/migrations":{"get":{"summary":"Get migrations queue","operationId":"healthGetQueueMigrations","tags":["health"],"description":"Get the number of migrations that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueMigrations","weight":124,"cookies":false,"type":"","demo":"health\/get-queue-migrations.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-migrations.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/webhooks":{"get":{"summary":"Get webhooks queue","operationId":"healthGetQueueWebhooks","tags":["health"],"description":"Get the number of webhooks that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueWebhooks","weight":116,"cookies":false,"type":"","demo":"health\/get-queue-webhooks.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-webhooks.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/storage\/local":{"get":{"summary":"Get local storage","operationId":"healthGetStorageLocal","tags":["health"],"description":"Check the Appwrite local storage device is up and connection is successful.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"getStorageLocal","weight":126,"cookies":false,"type":"","demo":"health\/get-storage-local.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-storage-local.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/time":{"get":{"summary":"Get time","operationId":"healthGetTime","tags":["health"],"description":"Check the Appwrite server time is synced with Google remote NTP server. We use this technology to smoothly handle leap seconds with no disruptive events. The [Network Time Protocol](https:\/\/en.wikipedia.org\/wiki\/Network_Time_Protocol) (NTP) is used by hundreds of millions of computers and devices to synchronize their clocks over the Internet. If your computer sets its own clock, it likely uses NTP.","responses":{"200":{"description":"Health Time","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthTime"}}}}},"x-appwrite":{"method":"getTime","weight":115,"cookies":false,"type":"","demo":"health\/get-time.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-time.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/locale":{"get":{"summary":"Get user locale","operationId":"localeGet","tags":["locale"],"description":"Get the current user location based on IP. Returns an object with user country code, country name, continent name, continent code, ip address and suggested currency. You can use the locale header to get the data in a supported language.\n\n([IP Geolocation by DB-IP](https:\/\/db-ip.com))","responses":{"200":{"description":"Locale","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/locale"}}}}},"x-appwrite":{"method":"get","weight":101,"cookies":false,"type":"","demo":"locale\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-locale.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/localed","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}]}},"\/locale\/codes":{"get":{"summary":"List Locale Codes","operationId":"localeListCodes","tags":["locale"],"description":"List of all locale codes in [ISO 639-1](https:\/\/en.wikipedia.org\/wiki\/List_of_ISO_639-1_codes).","responses":{"200":{"description":"Locale codes list","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/localeCodeList"}}}}},"x-appwrite":{"method":"listCodes","weight":102,"cookies":false,"type":"","demo":"locale\/list-codes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-locale-codes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/localeCode","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}]}},"\/locale\/continents":{"get":{"summary":"List continents","operationId":"localeListContinents","tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/continentList"}}}}},"x-appwrite":{"method":"listContinents","weight":106,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/continents","offline-key":"","offline-response-key":"code","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List countries","operationId":"localeListCountries","tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountries","weight":103,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/countries","offline-key":"","offline-response-key":"code","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU countries","operationId":"localeListCountriesEU","tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountriesEU","weight":104,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/countries\/eu","offline-key":"","offline-response-key":"code","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List countries phone codes","operationId":"localeListCountriesPhones","tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/phoneList"}}}}},"x-appwrite":{"method":"listCountriesPhones","weight":105,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/countries\/phones","offline-key":"","offline-response-key":"countryCode","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List currencies","operationId":"localeListCurrencies","tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/currencyList"}}}}},"x-appwrite":{"method":"listCurrencies","weight":107,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/currencies","offline-key":"","offline-response-key":"code","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List languages","operationId":"localeListLanguages","tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/languageList"}}}}},"x-appwrite":{"method":"listLanguages","weight":108,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/languages","offline-key":"","offline-response-key":"code","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}]}},"\/messaging\/messages":{"get":{"summary":"List messages","operationId":"messagingListMessages","tags":["messaging"],"description":"","responses":{"200":{"description":"Message list","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/messageList"}}}}},"x-appwrite":{"method":"listMessages","weight":346,"cookies":false,"type":"","demo":"messaging\/list-messages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-messages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, provider, type, enabled","required":false,"schema":{"type":"string","default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]}},"\/messaging\/messages\/email":{"post":{"summary":"Create an email.","operationId":"messagingCreateEmailMessage","tags":["messaging"],"description":"","responses":{"201":{"description":"Message","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/message"}}}}},"x-appwrite":{"method":"createEmailMessage","weight":343,"cookies":false,"type":"","demo":"messaging\/create-email-message.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"messageId":{"type":"string","description":"Message ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[MESSAGE_ID]"},"subject":{"type":"string","description":"Email Subject.","x-example":"[SUBJECT]"},"content":{"type":"string","description":"Email Content.","x-example":"[CONTENT]"},"topics":{"type":"array","description":"List of Topic IDs.","x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","x-example":null,"items":{"type":"string"}},"cc":{"type":"array","description":"Array of target IDs to be added as CC.","x-example":null,"items":{"type":"string"}},"bcc":{"type":"array","description":"Array of target IDs to be added as BCC.","x-example":null,"items":{"type":"string"}},"description":{"type":"string","description":"Description for message.","x-example":"[DESCRIPTION]"},"status":{"type":"string","description":"Message Status. Value must be either draft or cancelled or processing.","x-example":"draft","enum":["draft","canceled","processing"],"x-enum-name":null,"x-enum-keys":[]},"html":{"type":"boolean","description":"Is content of type HTML","x-example":false},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","x-example":null}},"required":["messageId","subject","content"]}}}}}},"\/messaging\/messages\/email\/{messageId}":{"patch":{"summary":"Update an email.","operationId":"messagingUpdateEmail","tags":["messaging"],"description":"","responses":{"200":{"description":"Message","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/message"}}}}},"x-appwrite":{"method":"updateEmail","weight":349,"cookies":false,"type":"","demo":"messaging\/update-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"schema":{"type":"string","x-example":"[MESSAGE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"topics":{"type":"array","description":"List of Topic IDs.","x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","x-example":null,"items":{"type":"string"}},"subject":{"type":"string","description":"Email Subject.","x-example":"[SUBJECT]"},"description":{"type":"string","description":"Description for Message.","x-example":"[DESCRIPTION]"},"content":{"type":"string","description":"Email Content.","x-example":"[CONTENT]"},"status":{"type":"string","description":"Message Status. Value must be either draft or cancelled or processing.","x-example":"draft","enum":["draft","cancelled","processing"],"x-enum-name":null,"x-enum-keys":[]},"html":{"type":"boolean","description":"Is content of type HTML","x-example":false},"cc":{"type":"array","description":"Array of target IDs to be added as CC.","x-example":null,"items":{"type":"string"}},"bcc":{"type":"array","description":"Array of target IDs to be added as BCC.","x-example":null,"items":{"type":"string"}},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","x-example":null}}}}}}}},"\/messaging\/messages\/push":{"post":{"summary":"Create a push notification.","operationId":"messagingCreatePushMessage","tags":["messaging"],"description":"","responses":{"201":{"description":"Message","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/message"}}}}},"x-appwrite":{"method":"createPushMessage","weight":345,"cookies":false,"type":"","demo":"messaging\/create-push-message.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-push-notification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"messageId":{"type":"string","description":"Message ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[MESSAGE_ID]"},"title":{"type":"string","description":"Title for push notification.","x-example":"[TITLE]"},"body":{"type":"string","description":"Body for push notification.","x-example":"[BODY]"},"topics":{"type":"array","description":"List of Topic IDs.","x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","x-example":null,"items":{"type":"string"}},"description":{"type":"string","description":"Description for Message.","x-example":"[DESCRIPTION]"},"data":{"type":"object","description":"Additional Data for push notification.","x-example":"{}"},"action":{"type":"string","description":"Action for push notification.","x-example":"[ACTION]"},"icon":{"type":"string","description":"Icon for push notification. Available only for Android and Web Platform.","x-example":"[ICON]"},"sound":{"type":"string","description":"Sound for push notification. Available only for Android and IOS Platform.","x-example":"[SOUND]"},"color":{"type":"string","description":"Color for push notification. Available only for Android Platform.","x-example":"[COLOR]"},"tag":{"type":"string","description":"Tag for push notification. Available only for Android Platform.","x-example":"[TAG]"},"badge":{"type":"string","description":"Badge for push notification. Available only for IOS Platform.","x-example":"[BADGE]"},"status":{"type":"string","description":"Message Status. Value must be either draft or cancelled or processing.","x-example":"draft","enum":["draft","canceled","processing"],"x-enum-name":null,"x-enum-keys":[]},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","x-example":null}},"required":["messageId","title","body"]}}}}}},"\/messaging\/messages\/push\/{messageId}":{"patch":{"summary":"Update a push notification.","operationId":"messagingUpdatePushNotification","tags":["messaging"],"description":"","responses":{"200":{"description":"Message","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/message"}}}}},"x-appwrite":{"method":"updatePushNotification","weight":351,"cookies":false,"type":"","demo":"messaging\/update-push-notification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-push-notification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"schema":{"type":"string","x-example":"[MESSAGE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"topics":{"type":"array","description":"List of Topic IDs.","x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","x-example":null,"items":{"type":"string"}},"description":{"type":"string","description":"Description for Message.","x-example":"[DESCRIPTION]"},"title":{"type":"string","description":"Title for push notification.","x-example":"[TITLE]"},"body":{"type":"string","description":"Body for push notification.","x-example":"[BODY]"},"data":{"type":"object","description":"Additional Data for push notification.","x-example":"{}"},"action":{"type":"string","description":"Action for push notification.","x-example":"[ACTION]"},"icon":{"type":"string","description":"Icon for push notification. Available only for Android and Web platforms.","x-example":"[ICON]"},"sound":{"type":"string","description":"Sound for push notification. Available only for Android and iOS platforms.","x-example":"[SOUND]"},"color":{"type":"string","description":"Color for push notification. Available only for Android platforms.","x-example":"[COLOR]"},"tag":{"type":"string","description":"Tag for push notification. Available only for Android platforms.","x-example":"[TAG]"},"badge":{"type":"integer","description":"Badge for push notification. Available only for iOS platforms.","x-example":null},"status":{"type":"string","description":"Message Status. Value must be either draft, cancelled, or processing.","x-example":"draft","enum":["draft","cancelled","processing"],"x-enum-name":null,"x-enum-keys":[]},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","x-example":null}}}}}}}},"\/messaging\/messages\/sms":{"post":{"summary":"Create an SMS.","operationId":"messagingCreateSMSMessage","tags":["messaging"],"description":"","responses":{"201":{"description":"Message","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/message"}}}}},"x-appwrite":{"method":"createSMSMessage","weight":344,"cookies":false,"type":"","demo":"messaging\/create-s-m-s-message.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-sms.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"messageId":{"type":"string","description":"Message ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[MESSAGE_ID]"},"content":{"type":"string","description":"SMS Content.","x-example":"[CONTENT]"},"topics":{"type":"array","description":"List of Topic IDs.","x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","x-example":null,"items":{"type":"string"}},"description":{"type":"string","description":"Description for Message.","x-example":"[DESCRIPTION]"},"status":{"type":"string","description":"Message Status. Value must be either draft or cancelled or processing.","x-example":"draft","enum":["draft","canceled","processing"],"x-enum-name":null,"x-enum-keys":[]},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","x-example":null}},"required":["messageId","content"]}}}}}},"\/messaging\/messages\/sms\/{messageId}":{"patch":{"summary":"Update an SMS.","operationId":"messagingUpdateSMS","tags":["messaging"],"description":"","responses":{"200":{"description":"Message","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/message"}}}}},"x-appwrite":{"method":"updateSMS","weight":350,"cookies":false,"type":"","demo":"messaging\/update-s-m-s.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"schema":{"type":"string","x-example":"[MESSAGE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"topics":{"type":"array","description":"List of Topic IDs.","x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","x-example":null,"items":{"type":"string"}},"description":{"type":"string","description":"Description for Message.","x-example":"[DESCRIPTION]"},"content":{"type":"string","description":"Email Content.","x-example":"[CONTENT]"},"status":{"type":"string","description":"Message Status. Value must be either draft or cancelled or processing.","x-example":"draft","enum":["draft","cancelled","processing"],"x-enum-name":null,"x-enum-keys":[]},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","x-example":null}}}}}}}},"\/messaging\/messages\/{messageId}":{"get":{"summary":"Get a message","operationId":"messagingGetMessage","tags":["messaging"],"description":"","responses":{"200":{"description":"Message","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/message"}}}}},"x-appwrite":{"method":"getMessage","weight":348,"cookies":false,"type":"","demo":"messaging\/get-message.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/get-message.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"schema":{"type":"string","x-example":"[MESSAGE_ID]"},"in":"path"}]}},"\/messaging\/messages\/{messageId}\/logs":{"get":{"summary":"List message logs","operationId":"messagingListMessageLogs","tags":["messaging"],"description":"","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listMessageLogs","weight":347,"cookies":false,"type":"","demo":"messaging\/list-message-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/messages\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"schema":{"type":"string","x-example":"[MESSAGE_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/messaging\/providers":{"get":{"summary":"List providers","operationId":"messagingListProviders","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider list","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/providerList"}}}}},"x-appwrite":{"method":"listProviders","weight":319,"cookies":false,"type":"","demo":"messaging\/list-providers.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-providers.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, provider, type, enabled","required":false,"schema":{"type":"string","default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]}},"\/messaging\/providers\/apns":{"post":{"summary":"Create APNS provider","operationId":"messagingCreateApnsProvider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createApnsProvider","weight":318,"cookies":false,"type":"","demo":"messaging\/create-apns-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-apns-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"authKey":{"type":"string","description":"APNS authentication key.","x-example":"[AUTH_KEY]"},"authKeyId":{"type":"string","description":"APNS authentication key ID.","x-example":"[AUTH_KEY_ID]"},"teamId":{"type":"string","description":"APNS team ID.","x-example":"[TEAM_ID]"},"bundleId":{"type":"string","description":"APNS bundle ID.","x-example":"[BUNDLE_ID]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name"]}}}}}},"\/messaging\/providers\/apns\/{providerId}":{"patch":{"summary":"Update APNS provider","operationId":"messagingUpdateApnsProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateApnsProvider","weight":330,"cookies":false,"type":"","demo":"messaging\/update-apns-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-apns-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"authKey":{"type":"string","description":"APNS authentication key.","x-example":"[AUTH_KEY]"},"authKeyId":{"type":"string","description":"APNS authentication key ID.","x-example":"[AUTH_KEY_ID]"},"teamId":{"type":"string","description":"APNS team ID.","x-example":"[TEAM_ID]"},"bundleId":{"type":"string","description":"APNS bundle ID.","x-example":"[BUNDLE_ID]"}}}}}}}},"\/messaging\/providers\/fcm":{"post":{"summary":"Create FCM provider","operationId":"messagingCreateFcmProvider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createFcmProvider","weight":317,"cookies":false,"type":"","demo":"messaging\/create-fcm-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-fcm-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"serviceAccountJSON":{"type":"object","description":"FCM service account JSON.","x-example":"{}"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name"]}}}}}},"\/messaging\/providers\/fcm\/{providerId}":{"patch":{"summary":"Update FCM provider","operationId":"messagingUpdateFcmProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateFcmProvider","weight":329,"cookies":false,"type":"","demo":"messaging\/update-fcm-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-fcm-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"serviceAccountJSON":{"type":"object","description":"FCM service account JSON.","x-example":"{}"}}}}}}}},"\/messaging\/providers\/mailgun":{"post":{"summary":"Create Mailgun provider","operationId":"messagingCreateMailgunProvider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createMailgunProvider","weight":310,"cookies":false,"type":"","demo":"messaging\/create-mailgun-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-mailgun-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"apiKey":{"type":"string","description":"Mailgun API Key.","x-example":"[API_KEY]"},"domain":{"type":"string","description":"Mailgun Domain.","x-example":"[DOMAIN]"},"isEuRegion":{"type":"boolean","description":"Set as EU region.","x-example":false},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"fromName":{"type":"string","description":"Sender Name.","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the reply to field for the mail. Default value is sender name. Reply to name must have reply to email as well.","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the reply to field for the mail. Default value is sender email. Reply to email must have reply to name as well.","x-example":"[REPLY_TO_EMAIL]"}},"required":["providerId","name"]}}}}}},"\/messaging\/providers\/mailgun\/{providerId}":{"patch":{"summary":"Update Mailgun provider","operationId":"messagingUpdateMailgunProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateMailgunProvider","weight":322,"cookies":false,"type":"","demo":"messaging\/update-mailgun-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-mailgun-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"apiKey":{"type":"string","description":"Mailgun API Key.","x-example":"[API_KEY]"},"domain":{"type":"string","description":"Mailgun Domain.","x-example":"[DOMAIN]"},"isEuRegion":{"type":"boolean","description":"Set as EU region.","x-example":false},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"fromName":{"type":"string","description":"Sender Name.","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the reply to field for the mail. Default value is sender name.","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the reply to field for the mail. Default value is sender email.","x-example":"[REPLY_TO_EMAIL]"}}}}}}}},"\/messaging\/providers\/msg91":{"post":{"summary":"Create Msg91 provider","operationId":"messagingCreateMsg91Provider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createMsg91Provider","weight":312,"cookies":false,"type":"","demo":"messaging\/create-msg91provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-msg91-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"senderId":{"type":"string","description":"Msg91 Sender ID.","x-example":"[SENDER_ID]"},"authKey":{"type":"string","description":"Msg91 Auth Key.","x-example":"[AUTH_KEY]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name"]}}}}}},"\/messaging\/providers\/msg91\/{providerId}":{"patch":{"summary":"Update Msg91 provider","operationId":"messagingUpdateMsg91Provider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateMsg91Provider","weight":324,"cookies":false,"type":"","demo":"messaging\/update-msg91provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-msg91-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"senderId":{"type":"string","description":"Msg91 Sender ID.","x-example":"[SENDER_ID]"},"authKey":{"type":"string","description":"Msg91 Auth Key.","x-example":"[AUTH_KEY]"},"from":{"type":"string","description":"Sender number.","x-example":"[FROM]"}}}}}}}},"\/messaging\/providers\/sendgrid":{"post":{"summary":"Create Sendgrid provider","operationId":"messagingCreateSendgridProvider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createSendgridProvider","weight":311,"cookies":false,"type":"","demo":"messaging\/create-sendgrid-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-sengrid-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"apiKey":{"type":"string","description":"Sendgrid API key.","x-example":"[API_KEY]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"fromName":{"type":"string","description":"Sender Name.","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the reply to field for the mail. Default value is sender name.","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the reply to field for the mail. Default value is sender email.","x-example":"[REPLY_TO_EMAIL]"}},"required":["providerId","name"]}}}}}},"\/messaging\/providers\/sendgrid\/{providerId}":{"patch":{"summary":"Update Sendgrid provider","operationId":"messagingUpdateSendgridProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateSendgridProvider","weight":323,"cookies":false,"type":"","demo":"messaging\/update-sendgrid-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-sendgrid-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"apiKey":{"type":"string","description":"Sendgrid API key.","x-example":"[API_KEY]"},"fromName":{"type":"string","description":"Sender Name.","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the Reply To field for the mail. Default value is Sender Name.","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the Reply To field for the mail. Default value is Sender Email.","x-example":"[REPLY_TO_EMAIL]"}}}}}}}},"\/messaging\/providers\/telesign":{"post":{"summary":"Create Telesign provider","operationId":"messagingCreateTelesignProvider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createTelesignProvider","weight":313,"cookies":false,"type":"","demo":"messaging\/create-telesign-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-telesign-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"username":{"type":"string","description":"Telesign username.","x-example":"[USERNAME]"},"password":{"type":"string","description":"Telesign password.","x-example":"[PASSWORD]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name"]}}}}}},"\/messaging\/providers\/telesign\/{providerId}":{"patch":{"summary":"Update Telesign provider","operationId":"messagingUpdateTelesignProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateTelesignProvider","weight":325,"cookies":false,"type":"","demo":"messaging\/update-telesign-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-telesign-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"username":{"type":"string","description":"Telesign username.","x-example":"[USERNAME]"},"password":{"type":"string","description":"Telesign password.","x-example":"[PASSWORD]"},"from":{"type":"string","description":"Sender number.","x-example":"[FROM]"}}}}}}}},"\/messaging\/providers\/textmagic":{"post":{"summary":"Create Textmagic provider","operationId":"messagingCreateTextmagicProvider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createTextmagicProvider","weight":314,"cookies":false,"type":"","demo":"messaging\/create-textmagic-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-textmagic-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"username":{"type":"string","description":"Textmagic username.","x-example":"[USERNAME]"},"apiKey":{"type":"string","description":"Textmagic apiKey.","x-example":"[API_KEY]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name"]}}}}}},"\/messaging\/providers\/textmagic\/{providerId}":{"patch":{"summary":"Update Textmagic provider","operationId":"messagingUpdateTextmagicProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateTextmagicProvider","weight":326,"cookies":false,"type":"","demo":"messaging\/update-textmagic-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-textmagic-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"username":{"type":"string","description":"Textmagic username.","x-example":"[USERNAME]"},"apiKey":{"type":"string","description":"Textmagic apiKey.","x-example":"[API_KEY]"},"from":{"type":"string","description":"Sender number.","x-example":"[FROM]"}}}}}}}},"\/messaging\/providers\/twilio":{"post":{"summary":"Create Twilio provider","operationId":"messagingCreateTwilioProvider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createTwilioProvider","weight":315,"cookies":false,"type":"","demo":"messaging\/create-twilio-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-twilio-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"accountSid":{"type":"string","description":"Twilio account secret ID.","x-example":"[ACCOUNT_SID]"},"authToken":{"type":"string","description":"Twilio authentication token.","x-example":"[AUTH_TOKEN]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name"]}}}}}},"\/messaging\/providers\/twilio\/{providerId}":{"patch":{"summary":"Update Twilio provider","operationId":"messagingUpdateTwilioProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateTwilioProvider","weight":327,"cookies":false,"type":"","demo":"messaging\/update-twilio-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-twilio-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"accountSid":{"type":"string","description":"Twilio account secret ID.","x-example":"[ACCOUNT_SID]"},"authToken":{"type":"string","description":"Twilio authentication token.","x-example":"[AUTH_TOKEN]"},"from":{"type":"string","description":"Sender number.","x-example":"[FROM]"}}}}}}}},"\/messaging\/providers\/vonage":{"post":{"summary":"Create Vonage provider","operationId":"messagingCreateVonageProvider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createVonageProvider","weight":316,"cookies":false,"type":"","demo":"messaging\/create-vonage-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-vonage-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"apiKey":{"type":"string","description":"Vonage API key.","x-example":"[API_KEY]"},"apiSecret":{"type":"string","description":"Vonage API secret.","x-example":"[API_SECRET]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name"]}}}}}},"\/messaging\/providers\/vonage\/{providerId}":{"patch":{"summary":"Update Vonage provider","operationId":"messagingUpdateVonageProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateVonageProvider","weight":328,"cookies":false,"type":"","demo":"messaging\/update-vonage-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-vonage-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"apiKey":{"type":"string","description":"Vonage API key.","x-example":"[API_KEY]"},"apiSecret":{"type":"string","description":"Vonage API secret.","x-example":"[API_SECRET]"},"from":{"type":"string","description":"Sender number.","x-example":"[FROM]"}}}}}}}},"\/messaging\/providers\/{providerId}":{"get":{"summary":"Get provider","operationId":"messagingGetProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"getProvider","weight":321,"cookies":false,"type":"","demo":"messaging\/get-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/get-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}]},"delete":{"summary":"Delete provider","operationId":"messagingDeleteProvider","tags":["messaging"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteProvider","weight":331,"cookies":false,"type":"","demo":"messaging\/delete-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}]}},"\/messaging\/providers\/{providerId}\/logs":{"get":{"summary":"List provider logs","operationId":"messagingListProviderLogs","tags":["messaging"],"description":"","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listProviderLogs","weight":320,"cookies":false,"type":"","demo":"messaging\/list-provider-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/providers\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/messaging\/subscribers\/{subscriberId}\/logs":{"get":{"summary":"List subscriber logs","operationId":"messagingListSubscriberLogs","tags":["messaging"],"description":"","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listSubscriberLogs","weight":340,"cookies":false,"type":"","demo":"messaging\/list-subscriber-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/subscribers\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"subscriberId","description":"Subscriber ID.","required":true,"schema":{"type":"string","x-example":"[SUBSCRIBER_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/messaging\/topics":{"get":{"summary":"List topics.","operationId":"messagingListTopics","tags":["messaging"],"description":"","responses":{"200":{"description":"Topic list","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/topicList"}}}}},"x-appwrite":{"method":"listTopics","weight":333,"cookies":false,"type":"","demo":"messaging\/list-topics.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-topics.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, description, total","required":false,"schema":{"type":"string","default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create a topic.","operationId":"messagingCreateTopic","tags":["messaging"],"description":"","responses":{"201":{"description":"Topic","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/topic"}}}}},"x-appwrite":{"method":"createTopic","weight":332,"cookies":false,"type":"","demo":"messaging\/create-topic.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-topic.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"topicId":{"type":"string","description":"Topic ID. Choose a custom Topic ID or a new Topic ID.","x-example":"[TOPIC_ID]"},"name":{"type":"string","description":"Topic Name.","x-example":"[NAME]"},"description":{"type":"string","description":"Topic Description.","x-example":"[DESCRIPTION]"}},"required":["topicId","name"]}}}}}},"\/messaging\/topics\/{topicId}":{"get":{"summary":"Get a topic.","operationId":"messagingGetTopic","tags":["messaging"],"description":"","responses":{"200":{"description":"Topic","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/topic"}}}}},"x-appwrite":{"method":"getTopic","weight":335,"cookies":false,"type":"","demo":"messaging\/get-topic.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/get-topic.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID.","required":true,"schema":{"type":"string","x-example":"[TOPIC_ID]"},"in":"path"}]},"patch":{"summary":"Update a topic.","operationId":"messagingUpdateTopic","tags":["messaging"],"description":"","responses":{"200":{"description":"Topic","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/topic"}}}}},"x-appwrite":{"method":"updateTopic","weight":336,"cookies":false,"type":"","demo":"messaging\/update-topic.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-topic.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID.","required":true,"schema":{"type":"string","x-example":"[TOPIC_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Topic Name.","x-example":"[NAME]"},"description":{"type":"string","description":"Topic Description.","x-example":"[DESCRIPTION]"}}}}}}},"delete":{"summary":"Delete a topic.","operationId":"messagingDeleteTopic","tags":["messaging"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteTopic","weight":337,"cookies":false,"type":"","demo":"messaging\/delete-topic.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-topic.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID.","required":true,"schema":{"type":"string","x-example":"[TOPIC_ID]"},"in":"path"}]}},"\/messaging\/topics\/{topicId}\/logs":{"get":{"summary":"List topic logs","operationId":"messagingListTopicLogs","tags":["messaging"],"description":"","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listTopicLogs","weight":334,"cookies":false,"type":"","demo":"messaging\/list-topic-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/topics\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID.","required":true,"schema":{"type":"string","x-example":"[TOPIC_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/messaging\/topics\/{topicId}\/subscribers":{"get":{"summary":"List subscribers.","operationId":"messagingListSubscribers","tags":["messaging"],"description":"","responses":{"200":{"description":"Subscriber list","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/subscriberList"}}}}},"x-appwrite":{"method":"listSubscribers","weight":339,"cookies":false,"type":"","demo":"messaging\/list-subscribers.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-subscribers.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID subscribed to.","required":true,"schema":{"type":"string","x-example":"[TOPIC_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, provider, type, enabled","required":false,"schema":{"type":"string","default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create a subscriber.","operationId":"messagingCreateSubscriber","tags":["messaging"],"description":"","responses":{"201":{"description":"Subscriber","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/subscriber"}}}}},"x-appwrite":{"method":"createSubscriber","weight":338,"cookies":false,"type":"","demo":"messaging\/create-subscriber.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-subscriber.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.write","platforms":["server","client","console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[],"Session":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID to subscribe to.","required":true,"schema":{"type":"string","x-example":"[TOPIC_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"subscriberId":{"type":"string","description":"Subscriber ID. Choose a custom Subscriber ID or a new Subscriber ID.","x-example":"[SUBSCRIBER_ID]"},"targetId":{"type":"string","description":"Target ID. The target ID to link to the specified Topic ID.","x-example":"[TARGET_ID]"}},"required":["subscriberId","targetId"]}}}}}},"\/messaging\/topics\/{topicId}\/subscribers\/{subscriberId}":{"get":{"summary":"Get a subscriber.","operationId":"messagingGetSubscriber","tags":["messaging"],"description":"","responses":{"200":{"description":"Subscriber","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/subscriber"}}}}},"x-appwrite":{"method":"getSubscriber","weight":341,"cookies":false,"type":"","demo":"messaging\/get-subscriber.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/get-subscriber.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID subscribed to.","required":true,"schema":{"type":"string","x-example":"[TOPIC_ID]"},"in":"path"},{"name":"subscriberId","description":"Subscriber ID.","required":true,"schema":{"type":"string","x-example":"[SUBSCRIBER_ID]"},"in":"path"}]},"delete":{"summary":"Delete a subscriber.","operationId":"messagingDeleteSubscriber","tags":["messaging"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSubscriber","weight":342,"cookies":false,"type":"","demo":"messaging\/delete-subscriber.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-subscriber.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.write","platforms":["server","client","console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[],"Session":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID subscribed to.","required":true,"schema":{"type":"string","x-example":"[TOPIC_ID]"},"in":"path"},{"name":"subscriberId","description":"Subscriber ID.","required":true,"schema":{"type":"string","x-example":"[SUBSCRIBER_ID]"},"in":"path"}]}},"\/storage\/buckets":{"get":{"summary":"List buckets","operationId":"storageListBuckets","tags":["storage"],"description":"Get a list of all the storage buckets. You can use the query params to filter your results.","responses":{"200":{"description":"Buckets List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/bucketList"}}}}},"x-appwrite":{"method":"listBuckets","weight":176,"cookies":false,"type":"","demo":"storage\/list-buckets.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/list-buckets.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: enabled, name, fileSecurity, maximumFileSize, encryption, antivirus","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create bucket","operationId":"storageCreateBucket","tags":["storage"],"description":"Create a new storage bucket.","responses":{"201":{"description":"Bucket","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/bucket"}}}}},"x-appwrite":{"method":"createBucket","weight":175,"cookies":false,"type":"","demo":"storage\/create-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"bucketId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, no user is granted with any permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":false},"enabled":{"type":"boolean","description":"Is bucket enabled? When set to 'disabled', users cannot access the files in this bucket but Server SDKs with and API key can still access the bucket. No files are lost when this is toggled.","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB.","x-example":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","x-example":"none","enum":["none","gzip","zstd"],"x-enum-name":null,"x-enum-keys":[]},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","x-example":false}},"required":["bucketId","name"]}}}}}},"\/storage\/buckets\/{bucketId}":{"get":{"summary":"Get bucket","operationId":"storageGetBucket","tags":["storage"],"description":"Get a storage bucket by its unique ID. This endpoint response returns a JSON object with the storage bucket metadata.","responses":{"200":{"description":"Bucket","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/bucket"}}}}},"x-appwrite":{"method":"getBucket","weight":177,"cookies":false,"type":"","demo":"storage\/get-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"bucketId","description":"Bucket unique ID.","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"}]},"put":{"summary":"Update bucket","operationId":"storageUpdateBucket","tags":["storage"],"description":"Update a storage bucket by its unique ID.","responses":{"200":{"description":"Bucket","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/bucket"}}}}},"x-appwrite":{"method":"updateBucket","weight":178,"cookies":false,"type":"","demo":"storage\/update-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"bucketId","description":"Bucket unique ID.","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Bucket name","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":false},"enabled":{"type":"boolean","description":"Is bucket enabled? When set to 'disabled', users cannot access the files in this bucket but Server SDKs with and API key can still access the bucket. No files are lost when this is toggled.","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB.","x-example":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","x-example":"none","enum":["none","gzip","zstd"],"x-enum-name":null,"x-enum-keys":[]},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","x-example":false}},"required":["name"]}}}}},"delete":{"summary":"Delete bucket","operationId":"storageDeleteBucket","tags":["storage"],"description":"Delete a storage bucket by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteBucket","weight":179,"cookies":false,"type":"","demo":"storage\/delete-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"bucketId","description":"Bucket unique ID.","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files":{"get":{"summary":"List files","operationId":"storageListFiles","tags":["storage"],"description":"Get a list of all the user files. You can use the query params to filter your results.","responses":{"200":{"description":"Files List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/fileList"}}}}},"x-appwrite":{"method":"listFiles","weight":181,"cookies":false,"type":"","demo":"storage\/list-files.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/list-files.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create file","operationId":"storageCreateFile","tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"createFile","weight":180,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId},chunkId:{chunkId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"}],"requestBody":{"content":{"multipart\/form-data":{"schema":{"type":"object","properties":{"fileId":{"type":"string","description":"File ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[FILE_ID]","x-upload-id":true},"file":{"type":"string","description":"Binary file. Appwrite SDKs provide helpers to handle file input. [Learn about file input](https:\/\/appwrite.io\/docs\/storage#file-input).","x-example":null},"permissions":{"type":"array","description":"An array of permission strings. By default, only the current user is granted all permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["fileId","file"]}}}}}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get file","operationId":"storageGetFile","tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"getFile","weight":182,"cookies":false,"type":"","demo":"storage\/get-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File ID.","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"}]},"put":{"summary":"Update file","operationId":"storageUpdateFile","tags":["storage"],"description":"Update a file by its unique ID. Only users with write permissions have access to update this resource.","responses":{"200":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"updateFile","weight":186,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File unique ID.","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Name of the file","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission string. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":187,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File ID.","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/download":{"get":{"summary":"Get file for download","operationId":"storageGetFileDownload","tags":["storage"],"description":"Get a file content by its unique ID. The endpoint response return with a 'Content-Disposition: attachment' header that tells the browser to start downloading the file to user downloads directory.","responses":{"200":{"description":"File"}},"x-appwrite":{"method":"getFileDownload","weight":184,"cookies":false,"type":"location","demo":"storage\/get-file-download.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-download.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File ID.","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/preview":{"get":{"summary":"Get file preview","operationId":"storageGetFilePreview","tags":["storage"],"description":"Get a file preview image. Currently, this method supports preview for image files (jpg, png, and gif), other supported formats, like pdf, docs, slides, and spreadsheets, will return the file icon image. You can also pass query string arguments for cutting and resizing your preview image. Preview is supported only for image files smaller than 10MB.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFilePreview","weight":183,"cookies":false,"type":"location","demo":"storage\/get-file-preview.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-preview.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File ID","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"},{"name":"width","description":"Resize preview image width, Pass an integer between 0 to 4000.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 4000.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"gravity","description":"Image crop gravity. Can be one of center,top-left,top,top-right,left,right,bottom-left,bottom,bottom-right","required":false,"schema":{"type":"string","x-example":"center","enum":["center","top-left","top","top-right","left","right","bottom-left","bottom","bottom-right"],"x-enum-name":"ImageGravity","x-enum-keys":[],"default":"center"},"in":"query"},{"name":"quality","description":"Preview image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"borderWidth","description":"Preview image border in pixels. Pass an integer between 0 to 100. Defaults to 0.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"borderColor","description":"Preview image border color. Use a valid HEX color, no # is needed for prefix.","required":false,"schema":{"type":"string","default":""},"in":"query"},{"name":"borderRadius","description":"Preview image border radius in pixels. Pass an integer between 0 to 4000.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"opacity","description":"Preview image opacity. Only works with images having an alpha channel (like png). Pass a number between 0 to 1.","required":false,"schema":{"type":"number","format":"float","x-example":0,"default":1},"in":"query"},{"name":"rotation","description":"Preview image rotation in degrees. Pass an integer between -360 and 360.","required":false,"schema":{"type":"integer","format":"int32","x-example":-360,"default":0},"in":"query"},{"name":"background","description":"Preview image background color. Only works with transparent images (png). Use a valid HEX color, no # is needed for prefix.","required":false,"schema":{"type":"string","default":""},"in":"query"},{"name":"output","description":"Output format type (jpeg, jpg, png, gif and webp).","required":false,"schema":{"type":"string","x-example":"jpg","enum":["jpg","jpeg","gif","png","webp"],"x-enum-name":"ImageFormat","x-enum-keys":[],"default":""},"in":"query"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/view":{"get":{"summary":"Get file for view","operationId":"storageGetFileView","tags":["storage"],"description":"Get a file content by its unique ID. This endpoint is similar to the download method but returns with no 'Content-Disposition: attachment' header.","responses":{"200":{"description":"File"}},"x-appwrite":{"method":"getFileView","weight":185,"cookies":false,"type":"location","demo":"storage\/get-file-view.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-view.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File ID.","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"}]}},"\/teams":{"get":{"summary":"List teams","operationId":"teamsList","tags":["teams"],"description":"Get a list of all the teams in which the current user is a member. You can use the parameters to filter your results.","responses":{"200":{"description":"Teams List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/teamList"}}}}},"x-appwrite":{"method":"list","weight":191,"cookies":false,"type":"","demo":"teams\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-teams.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create team","operationId":"teamsCreate","tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"create","weight":190,"cookies":false,"type":"","demo":"teams\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/create-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"teamId":{"type":"string","description":"Team ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[TEAM_ID]"},"name":{"type":"string","description":"Team name. Max length: 128 chars.","x-example":"[NAME]"},"roles":{"type":"array","description":"Array of strings. Use this param to set the roles in the team for the user who created it. The default role is **owner**. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}}}}},"\/teams\/{teamId}":{"get":{"summary":"Get team","operationId":"teamsGet","tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"get","weight":192,"cookies":false,"type":"","demo":"teams\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams","offline-key":"{teamId}","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}]},"put":{"summary":"Update name","operationId":"teamsUpdateName","tags":["teams"],"description":"Update the team's name by its unique ID.","responses":{"200":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"updateName","weight":194,"cookies":false,"type":"","demo":"teams\/update-name.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-name.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams","offline-key":"{teamId}","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"New team name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["name"]}}}}},"delete":{"summary":"Delete team","operationId":"teamsDelete","tags":["teams"],"description":"Delete a team using its ID. Only team members with the owner role can delete the team.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":196,"cookies":false,"type":"","demo":"teams\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/delete-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}]}},"\/teams\/{teamId}\/memberships":{"get":{"summary":"List team memberships","operationId":"teamsListMemberships","tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"listMemberships","weight":198,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/memberships","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create team membership","operationId":"teamsCreateMembership","tags":["teams"],"description":"Invite a new member to join your team. Provide an ID for existing users, or invite unregistered users using an email or phone number. If initiated from a Client SDK, Appwrite will send an email or sms with a link to join the team to the invited user, and an account will be created for them if one doesn't exist. If initiated from a Server SDK, the new member will be added automatically to the team.\n\nYou only need to provide one of a user ID, email, or phone number. Appwrite will prioritize accepting the user ID > email > phone number if you provide more than one of these parameters.\n\nUse the `url` parameter to redirect the user from the invitation email to your app. After the user is redirected, use the [Update Team Membership Status](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/teams#updateMembershipStatus) endpoint to allow the user to accept the invitation to the team. \n\nPlease note that to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) Appwrite will accept the only redirect URLs under the domains you have added as a platform on the Appwrite Console.\n","responses":{"201":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"createMembership","weight":197,"cookies":false,"type":"","demo":"teams\/create-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/create-team-membership.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"email":{"type":"string","description":"Email of the new team member.","x-example":"email@example.com"},"userId":{"type":"string","description":"ID of the user to be added to a team.","x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"roles":{"type":"array","description":"Array of strings. Use this param to set the user roles in the team. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"},"name":{"type":"string","description":"Name of the new team member. Max length: 128 chars.","x-example":"[NAME]"}},"required":["roles"]}}}}}},"\/teams\/{teamId}\/memberships\/{membershipId}":{"get":{"summary":"Get team membership","operationId":"teamsGetMembership","tags":["teams"],"description":"Get a team member by the membership unique id. All team members have read access for this resource.","responses":{"200":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"getMembership","weight":199,"cookies":false,"type":"","demo":"teams\/get-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-member.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/memberships","offline-key":"{membershipId}","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"schema":{"type":"string","x-example":"[MEMBERSHIP_ID]"},"in":"path"}]},"patch":{"summary":"Update membership","operationId":"teamsUpdateMembership","tags":["teams"],"description":"Modify the roles of a team member. Only team members with the owner role have access to this endpoint. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions).\n","responses":{"200":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"updateMembership","weight":200,"cookies":false,"type":"","demo":"teams\/update-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"schema":{"type":"string","x-example":"[MEMBERSHIP_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"roles":{"type":"array","description":"An array of strings. Use this param to set the user's roles in the team. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["roles"]}}}}},"delete":{"summary":"Delete team membership","operationId":"teamsDeleteMembership","tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":202,"cookies":false,"type":"","demo":"teams\/delete-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/delete-team-membership.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"schema":{"type":"string","x-example":"[MEMBERSHIP_ID]"},"in":"path"}]}},"\/teams\/{teamId}\/memberships\/{membershipId}\/status":{"patch":{"summary":"Update team membership status","operationId":"teamsUpdateMembershipStatus","tags":["teams"],"description":"Use this endpoint to allow a user to accept an invitation to join a team after being redirected back to your app from the invitation email received by the user.\n\nIf the request is successful, a session for the user is automatically created.\n","responses":{"200":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"updateMembershipStatus","weight":201,"cookies":false,"type":"","demo":"teams\/update-membership-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"public","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"schema":{"type":"string","x-example":"[MEMBERSHIP_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Secret key.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/teams\/{teamId}\/prefs":{"get":{"summary":"Get team preferences","operationId":"teamsGetPrefs","tags":["teams"],"description":"Get the team's shared preferences by its unique ID. If a preference doesn't need to be shared by all team members, prefer storing them in [user preferences](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#getPrefs).","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"getPrefs","weight":193,"cookies":false,"type":"","demo":"teams\/get-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/prefs","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}]},"put":{"summary":"Update preferences","operationId":"teamsUpdatePrefs","tags":["teams"],"description":"Update the team's preferences by its unique ID. The object you pass is stored as is and replaces any previous value. The maximum allowed prefs size is 64kB and throws an error if exceeded.","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"updatePrefs","weight":195,"cookies":false,"type":"","demo":"teams\/update-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/prefs","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"prefs":{"type":"object","description":"Prefs key-value JSON object.","x-example":"{}"}},"required":["prefs"]}}}}}},"\/users":{"get":{"summary":"List users","operationId":"usersList","tags":["users"],"description":"Get a list of all the project's users. You can use the query params to filter your results.","responses":{"200":{"description":"Users List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/userList"}}}}},"x-appwrite":{"method":"list","weight":213,"cookies":false,"type":"","demo":"users\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-users.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, email, phone, status, passwordUpdate, registration, emailVerification, phoneVerification","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create user","operationId":"usersCreate","tags":["users"],"description":"Create a new user.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"create","weight":204,"cookies":false,"type":"","demo":"users\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"password":{"type":"string","description":"Plain text user password. Must be at least 8 chars.","x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId"]}}}}}},"\/users\/argon2":{"post":{"summary":"Create user with Argon2 password","operationId":"usersCreateArgon2User","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Argon2](https:\/\/en.wikipedia.org\/wiki\/Argon2) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createArgon2User","weight":207,"cookies":false,"type":"","demo":"users\/create-argon2user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-argon2-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Argon2.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/bcrypt":{"post":{"summary":"Create user with bcrypt password","operationId":"usersCreateBcryptUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Bcrypt](https:\/\/en.wikipedia.org\/wiki\/Bcrypt) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createBcryptUser","weight":205,"cookies":false,"type":"","demo":"users\/create-bcrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-bcrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Bcrypt.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/identities":{"get":{"summary":"List Identities","operationId":"usersListIdentities","tags":["users"],"description":"Get identities for all users.","responses":{"200":{"description":"Identities List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/identityList"}}}}},"x-appwrite":{"method":"listIdentities","weight":221,"cookies":false,"type":"","demo":"users\/list-identities.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-identities.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, provider, providerUid, providerEmail, providerAccessTokenExpiry","required":false,"schema":{"type":"string","default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]}},"\/users\/identities\/{identityId}":{"delete":{"summary":"Delete identity","operationId":"usersDeleteIdentity","tags":["users"],"description":"Delete an identity by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIdentity","weight":238,"cookies":false,"type":"","demo":"users\/delete-identity.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-identity.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"identityId","description":"Identity ID.","required":true,"schema":{"type":"string","x-example":"[IDENTITY_ID]"},"in":"path"}]}},"\/users\/md5":{"post":{"summary":"Create user with MD5 password","operationId":"usersCreateMD5User","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [MD5](https:\/\/en.wikipedia.org\/wiki\/MD5) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createMD5User","weight":206,"cookies":false,"type":"","demo":"users\/create-m-d5user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-md5-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using MD5.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/phpass":{"post":{"summary":"Create user with PHPass password","operationId":"usersCreatePHPassUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [PHPass](https:\/\/www.openwall.com\/phpass\/) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createPHPassUser","weight":209,"cookies":false,"type":"","demo":"users\/create-p-h-pass-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-phpass-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or pass the string `ID.unique()`to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using PHPass.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/scrypt":{"post":{"summary":"Create user with Scrypt password","operationId":"usersCreateScryptUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt](https:\/\/github.com\/Tarsnap\/scrypt) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createScryptUser","weight":210,"cookies":false,"type":"","demo":"users\/create-scrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt.","x-example":"password"},"passwordSalt":{"type":"string","description":"Optional salt used to hash password.","x-example":"[PASSWORD_SALT]"},"passwordCpu":{"type":"integer","description":"Optional CPU cost used to hash password.","x-example":null},"passwordMemory":{"type":"integer","description":"Optional memory cost used to hash password.","x-example":null},"passwordParallel":{"type":"integer","description":"Optional parallelization cost used to hash password.","x-example":null},"passwordLength":{"type":"integer","description":"Optional hash length used to hash password.","x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordCpu","passwordMemory","passwordParallel","passwordLength"]}}}}}},"\/users\/scrypt-modified":{"post":{"summary":"Create user with Scrypt modified password","operationId":"usersCreateScryptModifiedUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt Modified](https:\/\/gist.github.com\/Meldiron\/eecf84a0225eccb5a378d45bb27462cc) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createScryptModifiedUser","weight":211,"cookies":false,"type":"","demo":"users\/create-scrypt-modified-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-modified-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt Modified.","x-example":"password"},"passwordSalt":{"type":"string","description":"Salt used to hash password.","x-example":"[PASSWORD_SALT]"},"passwordSaltSeparator":{"type":"string","description":"Salt separator used to hash password.","x-example":"[PASSWORD_SALT_SEPARATOR]"},"passwordSignerKey":{"type":"string","description":"Signer key used to hash password.","x-example":"[PASSWORD_SIGNER_KEY]"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordSaltSeparator","passwordSignerKey"]}}}}}},"\/users\/sha":{"post":{"summary":"Create user with SHA password","operationId":"usersCreateSHAUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [SHA](https:\/\/en.wikipedia.org\/wiki\/Secure_Hash_Algorithm) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createSHAUser","weight":208,"cookies":false,"type":"","demo":"users\/create-s-h-a-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-sha-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using SHA.","x-example":"password"},"passwordVersion":{"type":"string","description":"Optional SHA version used to hash password. Allowed values are: 'sha1', 'sha224', 'sha256', 'sha384', 'sha512\/224', 'sha512\/256', 'sha512', 'sha3-224', 'sha3-256', 'sha3-384', 'sha3-512'","x-example":"sha1","enum":["sha1","sha224","sha256","sha384","sha512\/224","sha512\/256","sha512","sha3-224","sha3-256","sha3-384","sha3-512"],"x-enum-name":null,"x-enum-keys":[]},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/{userId}":{"get":{"summary":"Get user","operationId":"usersGet","tags":["users"],"description":"Get a user by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"get","weight":214,"cookies":false,"type":"","demo":"users\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]},"delete":{"summary":"Delete user","operationId":"usersDelete","tags":["users"],"description":"Delete a user by its unique ID, thereby releasing it's ID. Since ID is released and can be reused, all user-related resources like documents or storage files should be deleted before user deletion. If you want to keep ID reserved, use the [updateStatus](https:\/\/appwrite.io\/docs\/server\/users#usersUpdateStatus) endpoint instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":236,"cookies":false,"type":"","demo":"users\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]}},"\/users\/{userId}\/email":{"patch":{"summary":"Update email","operationId":"usersUpdateEmail","tags":["users"],"description":"Update the user email by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateEmail","weight":227,"cookies":false,"type":"","demo":"users\/update-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","x-example":"email@example.com"}},"required":["email"]}}}}}},"\/users\/{userId}\/labels":{"put":{"summary":"Update user labels","operationId":"usersUpdateLabels","tags":["users"],"description":"Update the user labels by its unique ID. \n\nLabels can be used to grant access to resources. While teams are a way for user's to share access to a resource, labels can be defined by the developer to grant access without an invitation. See the [Permissions docs](https:\/\/appwrite.io\/docs\/permissions) for more info.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateLabels","weight":223,"cookies":false,"type":"","demo":"users\/update-labels.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-labels.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"labels":{"type":"array","description":"Array of user labels. Replaces the previous labels. Maximum of 100 labels are allowed, each up to 36 alphanumeric characters long.","x-example":null,"items":{"type":"string"}}},"required":["labels"]}}}}}},"\/users\/{userId}\/logs":{"get":{"summary":"List user logs","operationId":"usersListLogs","tags":["users"],"description":"Get the user activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listLogs","weight":219,"cookies":false,"type":"","demo":"users\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/users\/{userId}\/memberships":{"get":{"summary":"List user memberships","operationId":"usersListMemberships","tags":["users"],"description":"Get the user membership list by its unique ID.","responses":{"200":{"description":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"listMemberships","weight":218,"cookies":false,"type":"","demo":"users\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-memberships.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]}},"\/users\/{userId}\/name":{"patch":{"summary":"Update name","operationId":"usersUpdateName","tags":["users"],"description":"Update the user name by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateName","weight":225,"cookies":false,"type":"","demo":"users\/update-name.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-name.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["name"]}}}}}},"\/users\/{userId}\/password":{"patch":{"summary":"Update password","operationId":"usersUpdatePassword","tags":["users"],"description":"Update the user password by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePassword","weight":226,"cookies":false,"type":"","demo":"users\/update-password.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-password.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"password":{"type":"string","description":"New user password. Must be at least 8 chars.","x-example":null}},"required":["password"]}}}}}},"\/users\/{userId}\/phone":{"patch":{"summary":"Update phone","operationId":"usersUpdatePhone","tags":["users"],"description":"Update the user phone by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePhone","weight":228,"cookies":false,"type":"","demo":"users\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"number":{"type":"string","description":"User phone number.","x-example":"+12065550100"}},"required":["number"]}}}}}},"\/users\/{userId}\/prefs":{"get":{"summary":"Get user preferences","operationId":"usersGetPrefs","tags":["users"],"description":"Get the user preferences by its unique ID.","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"getPrefs","weight":215,"cookies":false,"type":"","demo":"users\/get-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]},"patch":{"summary":"Update user preferences","operationId":"usersUpdatePrefs","tags":["users"],"description":"Update the user preferences by its unique ID. The object you pass is stored as is, and replaces any previous value. The maximum allowed prefs size is 64kB and throws error if exceeded.","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"updatePrefs","weight":230,"cookies":false,"type":"","demo":"users\/update-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"prefs":{"type":"object","description":"Prefs key-value JSON object.","x-example":"{}"}},"required":["prefs"]}}}}}},"\/users\/{userId}\/sessions":{"get":{"summary":"List user sessions","operationId":"usersListSessions","tags":["users"],"description":"Get the user sessions list by its unique ID.","responses":{"200":{"description":"Sessions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/sessionList"}}}}},"x-appwrite":{"method":"listSessions","weight":217,"cookies":false,"type":"","demo":"users\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]},"post":{"summary":"Create session","operationId":"usersCreateSession","tags":["users"],"description":"Creates a session for a user. Returns an immediately usable session object.\n\nIf you want to generate a token for a custom authentication flow, use the [POST \/users\/{userId}\/tokens](https:\/\/appwrite.io\/docs\/server\/users#createToken) endpoint.","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"createSession","weight":232,"cookies":false,"type":"","demo":"users\/create-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-session.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]},"delete":{"summary":"Delete user sessions","operationId":"usersDeleteSessions","tags":["users"],"description":"Delete all user's sessions by using the user's unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":235,"cookies":false,"type":"","demo":"users\/delete-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]}},"\/users\/{userId}\/sessions\/{sessionId}":{"delete":{"summary":"Delete user session","operationId":"usersDeleteSession","tags":["users"],"description":"Delete a user sessions by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSession","weight":234,"cookies":false,"type":"","demo":"users\/delete-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-user-session.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"sessionId","description":"Session ID.","required":true,"schema":{"type":"string","x-example":"[SESSION_ID]"},"in":"path"}]}},"\/users\/{userId}\/status":{"patch":{"summary":"Update user status","operationId":"usersUpdateStatus","tags":["users"],"description":"Update the user status by its unique ID. Use this endpoint as an alternative to deleting a user if you want to keep user's ID reserved.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateStatus","weight":222,"cookies":false,"type":"","demo":"users\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"status":{"type":"boolean","description":"User Status. To activate the user pass `true` and to block the user pass `false`.","x-example":false}},"required":["status"]}}}}}},"\/users\/{userId}\/targets":{"get":{"summary":"List User Targets","operationId":"usersListTargets","tags":["users"],"description":"","responses":{"200":{"description":"Target list","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/targetList"}}}}},"x-appwrite":{"method":"listTargets","weight":220,"cookies":false,"type":"","demo":"users\/list-targets.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-targets.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.read","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, email, phone, status, passwordUpdate, registration, emailVerification, phoneVerification","required":false,"schema":{"type":"string","default":[]},"in":"query"}]},"post":{"summary":"Create User Target","operationId":"usersCreateTarget","tags":["users"],"description":"","responses":{"201":{"description":"Target","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/target"}}}}},"x-appwrite":{"method":"createTarget","weight":212,"cookies":false,"type":"","demo":"users\/create-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-target.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"targetId":{"type":"string","description":"Target ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[TARGET_ID]"},"providerType":{"type":"string","description":"The target provider type. Can be one of the following: `email`, `sms` or `push`.","x-example":"email","enum":["email","sms","push"],"x-enum-name":null,"x-enum-keys":[]},"identifier":{"type":"string","description":"The target identifier (token, email, phone etc.)","x-example":"[IDENTIFIER]"},"providerId":{"type":"string","description":"Provider ID. Message will be sent to this target from the specified provider ID. If no provider ID is set the first setup provider will be used.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Target name. Max length: 128 chars. For example: My Awesome App Galaxy S23.","x-example":"[NAME]"}},"required":["targetId","providerType","identifier"]}}}}}},"\/users\/{userId}\/targets\/{targetId}":{"get":{"summary":"Get User Target","operationId":"usersGetTarget","tags":["users"],"description":"","responses":{"200":{"description":"Target","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/target"}}}}},"x-appwrite":{"method":"getTarget","weight":216,"cookies":false,"type":"","demo":"users\/get-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-target.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.read","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"targetId","description":"Target ID.","required":true,"schema":{"type":"string","x-example":"[TARGET_ID]"},"in":"path"}]},"patch":{"summary":"Update User target","operationId":"usersUpdateTarget","tags":["users"],"description":"","responses":{"200":{"description":"Target","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/target"}}}}},"x-appwrite":{"method":"updateTarget","weight":231,"cookies":false,"type":"","demo":"users\/update-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-target.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"targetId","description":"Target ID.","required":true,"schema":{"type":"string","x-example":"[TARGET_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"identifier":{"type":"string","description":"The target identifier (token, email, phone etc.)","x-example":"[IDENTIFIER]"},"providerId":{"type":"string","description":"Provider ID. Message will be sent to this target from the specified provider ID. If no provider ID is set the first setup provider will be used.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Target name. Max length: 128 chars. For example: My Awesome App Galaxy S23.","x-example":"[NAME]"}}}}}}},"delete":{"summary":"Delete user target","operationId":"usersDeleteTarget","tags":["users"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteTarget","weight":237,"cookies":false,"type":"","demo":"users\/delete-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-target.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"targetId","description":"Target ID.","required":true,"schema":{"type":"string","x-example":"[TARGET_ID]"},"in":"path"}]}},"\/users\/{userId}\/tokens":{"post":{"summary":"Create token","operationId":"usersCreateToken","tags":["users"],"description":"Returns a token with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [PUT \/account\/sessions\/custom](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateCustomSession) endpoint to complete the login process.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createToken","weight":233,"cookies":false,"type":"","demo":"users\/create-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-token.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"length":{"type":"integer","description":"Token length in characters. The default length is 6 characters","x-example":4},"expire":{"type":"integer","description":"Token expiration period in seconds. The default expiration is 15 minutes.","x-example":60}}}}}}}},"\/users\/{userId}\/verification":{"patch":{"summary":"Update email verification","operationId":"usersUpdateEmailVerification","tags":["users"],"description":"Update the user email verification status by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateEmailVerification","weight":229,"cookies":false,"type":"","demo":"users\/update-email-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-email-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"emailVerification":{"type":"boolean","description":"User email verification status.","x-example":false}},"required":["emailVerification"]}}}}}},"\/users\/{userId}\/verification\/phone":{"patch":{"summary":"Update phone verification","operationId":"usersUpdatePhoneVerification","tags":["users"],"description":"Update the user phone verification status by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePhoneVerification","weight":224,"cookies":false,"type":"","demo":"users\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"phoneVerification":{"type":"boolean","description":"User phone verification status.","x-example":false}},"required":["phoneVerification"]}}}}}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"project","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]},{"name":"proxy","description":"The Proxy Service allows you to configure actions for your domains beyond DNS configuration.","x-globalAttributes":[]},{"name":"graphql","description":"The GraphQL API allows you to query and mutate your Appwrite server using GraphQL.","x-globalAttributes":[]},{"name":"console","description":"The Console service allows you to interact with console relevant informations.","x-globalAttributes":[]},{"name":"migrations","description":"The Migrations service allows you to migrate third-party data to your Appwrite project.","x-globalAttributes":[]},{"name":"messaging","description":"The Messaging service allows you to send messages to any provider type (SMTP, push notification, SMS, etc.).","x-globalAttributes":[]}],"components":{"schemas":{"any":{"description":"Any","type":"object","additionalProperties":true},"error":{"description":"Error","type":"object","properties":{"message":{"type":"string","description":"Error message.","x-example":"Not found"},"code":{"type":"string","description":"Error code.","x-example":"404"},"type":{"type":"string","description":"Error type. You can learn more about all the error types at https:\/\/appwrite.io\/docs\/error-codes#errorTypes","x-example":"not_found"},"version":{"type":"string","description":"Server version number.","x-example":"1.0"}},"required":["message","code","type","version"]},"documentList":{"description":"Documents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of documents documents that matched your query.","x-example":5,"format":"int32"},"documents":{"type":"array","description":"List of documents.","items":{"$ref":"#\/components\/schemas\/document"},"x-example":""}},"required":["total","documents"]},"collectionList":{"description":"Collections List","type":"object","properties":{"total":{"type":"integer","description":"Total number of collections documents that matched your query.","x-example":5,"format":"int32"},"collections":{"type":"array","description":"List of collections.","items":{"$ref":"#\/components\/schemas\/collection"},"x-example":""}},"required":["total","collections"]},"databaseList":{"description":"Databases List","type":"object","properties":{"total":{"type":"integer","description":"Total number of databases documents that matched your query.","x-example":5,"format":"int32"},"databases":{"type":"array","description":"List of databases.","items":{"$ref":"#\/components\/schemas\/database"},"x-example":""}},"required":["total","databases"]},"indexList":{"description":"Indexes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of indexes documents that matched your query.","x-example":5,"format":"int32"},"indexes":{"type":"array","description":"List of indexes.","items":{"$ref":"#\/components\/schemas\/index"},"x-example":""}},"required":["total","indexes"]},"userList":{"description":"Users List","type":"object","properties":{"total":{"type":"integer","description":"Total number of users documents that matched your query.","x-example":5,"format":"int32"},"users":{"type":"array","description":"List of users.","items":{"$ref":"#\/components\/schemas\/user"},"x-example":""}},"required":["total","users"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of sessions documents that matched your query.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"$ref":"#\/components\/schemas\/session"},"x-example":""}},"required":["total","sessions"]},"identityList":{"description":"Identities List","type":"object","properties":{"total":{"type":"integer","description":"Total number of identities documents that matched your query.","x-example":5,"format":"int32"},"identities":{"type":"array","description":"List of identities.","items":{"$ref":"#\/components\/schemas\/identity"},"x-example":""}},"required":["total","identities"]},"logList":{"description":"Logs List","type":"object","properties":{"total":{"type":"integer","description":"Total number of logs documents that matched your query.","x-example":5,"format":"int32"},"logs":{"type":"array","description":"List of logs.","items":{"$ref":"#\/components\/schemas\/log"},"x-example":""}},"required":["total","logs"]},"fileList":{"description":"Files List","type":"object","properties":{"total":{"type":"integer","description":"Total number of files documents that matched your query.","x-example":5,"format":"int32"},"files":{"type":"array","description":"List of files.","items":{"$ref":"#\/components\/schemas\/file"},"x-example":""}},"required":["total","files"]},"bucketList":{"description":"Buckets List","type":"object","properties":{"total":{"type":"integer","description":"Total number of buckets documents that matched your query.","x-example":5,"format":"int32"},"buckets":{"type":"array","description":"List of buckets.","items":{"$ref":"#\/components\/schemas\/bucket"},"x-example":""}},"required":["total","buckets"]},"teamList":{"description":"Teams List","type":"object","properties":{"total":{"type":"integer","description":"Total number of teams documents that matched your query.","x-example":5,"format":"int32"},"teams":{"type":"array","description":"List of teams.","items":{"$ref":"#\/components\/schemas\/team"},"x-example":""}},"required":["total","teams"]},"membershipList":{"description":"Memberships List","type":"object","properties":{"total":{"type":"integer","description":"Total number of memberships documents that matched your query.","x-example":5,"format":"int32"},"memberships":{"type":"array","description":"List of memberships.","items":{"$ref":"#\/components\/schemas\/membership"},"x-example":""}},"required":["total","memberships"]},"functionList":{"description":"Functions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of functions documents that matched your query.","x-example":5,"format":"int32"},"functions":{"type":"array","description":"List of functions.","items":{"$ref":"#\/components\/schemas\/function"},"x-example":""}},"required":["total","functions"]},"runtimeList":{"description":"Runtimes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of runtimes documents that matched your query.","x-example":5,"format":"int32"},"runtimes":{"type":"array","description":"List of runtimes.","items":{"$ref":"#\/components\/schemas\/runtime"},"x-example":""}},"required":["total","runtimes"]},"deploymentList":{"description":"Deployments List","type":"object","properties":{"total":{"type":"integer","description":"Total number of deployments documents that matched your query.","x-example":5,"format":"int32"},"deployments":{"type":"array","description":"List of deployments.","items":{"$ref":"#\/components\/schemas\/deployment"},"x-example":""}},"required":["total","deployments"]},"executionList":{"description":"Executions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of executions documents that matched your query.","x-example":5,"format":"int32"},"executions":{"type":"array","description":"List of executions.","items":{"$ref":"#\/components\/schemas\/execution"},"x-example":""}},"required":["total","executions"]},"countryList":{"description":"Countries List","type":"object","properties":{"total":{"type":"integer","description":"Total number of countries documents that matched your query.","x-example":5,"format":"int32"},"countries":{"type":"array","description":"List of countries.","items":{"$ref":"#\/components\/schemas\/country"},"x-example":""}},"required":["total","countries"]},"continentList":{"description":"Continents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of continents documents that matched your query.","x-example":5,"format":"int32"},"continents":{"type":"array","description":"List of continents.","items":{"$ref":"#\/components\/schemas\/continent"},"x-example":""}},"required":["total","continents"]},"languageList":{"description":"Languages List","type":"object","properties":{"total":{"type":"integer","description":"Total number of languages documents that matched your query.","x-example":5,"format":"int32"},"languages":{"type":"array","description":"List of languages.","items":{"$ref":"#\/components\/schemas\/language"},"x-example":""}},"required":["total","languages"]},"currencyList":{"description":"Currencies List","type":"object","properties":{"total":{"type":"integer","description":"Total number of currencies documents that matched your query.","x-example":5,"format":"int32"},"currencies":{"type":"array","description":"List of currencies.","items":{"$ref":"#\/components\/schemas\/currency"},"x-example":""}},"required":["total","currencies"]},"phoneList":{"description":"Phones List","type":"object","properties":{"total":{"type":"integer","description":"Total number of phones documents that matched your query.","x-example":5,"format":"int32"},"phones":{"type":"array","description":"List of phones.","items":{"$ref":"#\/components\/schemas\/phone"},"x-example":""}},"required":["total","phones"]},"variableList":{"description":"Variables List","type":"object","properties":{"total":{"type":"integer","description":"Total number of variables documents that matched your query.","x-example":5,"format":"int32"},"variables":{"type":"array","description":"List of variables.","items":{"$ref":"#\/components\/schemas\/variable"},"x-example":""}},"required":["total","variables"]},"localeCodeList":{"description":"Locale codes list","type":"object","properties":{"total":{"type":"integer","description":"Total number of localeCodes documents that matched your query.","x-example":5,"format":"int32"},"localeCodes":{"type":"array","description":"List of localeCodes.","items":{"$ref":"#\/components\/schemas\/localeCode"},"x-example":""}},"required":["total","localeCodes"]},"providerList":{"description":"Provider list","type":"object","properties":{"total":{"type":"integer","description":"Total number of providers documents that matched your query.","x-example":5,"format":"int32"},"providers":{"type":"array","description":"List of providers.","items":{"$ref":"#\/components\/schemas\/provider"},"x-example":""}},"required":["total","providers"]},"messageList":{"description":"Message list","type":"object","properties":{"total":{"type":"integer","description":"Total number of messages documents that matched your query.","x-example":5,"format":"int32"},"messages":{"type":"array","description":"List of messages.","items":{"$ref":"#\/components\/schemas\/message"},"x-example":""}},"required":["total","messages"]},"topicList":{"description":"Topic list","type":"object","properties":{"total":{"type":"integer","description":"Total number of topics documents that matched your query.","x-example":5,"format":"int32"},"topics":{"type":"array","description":"List of topics.","items":{"$ref":"#\/components\/schemas\/topic"},"x-example":""}},"required":["total","topics"]},"subscriberList":{"description":"Subscriber list","type":"object","properties":{"total":{"type":"integer","description":"Total number of subscribers documents that matched your query.","x-example":5,"format":"int32"},"subscribers":{"type":"array","description":"List of subscribers.","items":{"$ref":"#\/components\/schemas\/subscriber"},"x-example":""}},"required":["total","subscribers"]},"targetList":{"description":"Target list","type":"object","properties":{"total":{"type":"integer","description":"Total number of targets documents that matched your query.","x-example":5,"format":"int32"},"targets":{"type":"array","description":"List of targets.","items":{"$ref":"#\/components\/schemas\/target"},"x-example":""}},"required":["total","targets"]},"database":{"description":"Database","type":"object","properties":{"$id":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Database name.","x-example":"My Database"},"$createdAt":{"type":"string","description":"Database creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Database update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"enabled":{"type":"boolean","description":"If database is enabled. Can be 'enabled' or 'disabled'. When disabled, the database is inaccessible to users, but remains accessible to Server SDKs using API keys.","x-example":false}},"required":["$id","name","$createdAt","$updatedAt","enabled"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Collection creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Collection update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Collection permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled. Can be 'enabled' or 'disabled'. When disabled, the collection is inaccessible to users, but remains accessible to Server SDKs using API keys.","x-example":false},"documentSecurity":{"type":"boolean","description":"Whether document-level permissions are enabled. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":true},"attributes":{"type":"array","description":"Collection attributes.","items":{"anyOf":[{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeRelationship"},{"$ref":"#\/components\/schemas\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"$ref":"#\/components\/schemas\/index"},"x-example":{}}},"required":["$id","$createdAt","$updatedAt","$permissions","databaseId","name","enabled","documentSecurity","attributes","indexes"]},"attributeList":{"description":"Attributes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of attributes in the given collection.","x-example":5,"format":"int32"},"attributes":{"type":"array","description":"List of attributes.","items":{"anyOf":[{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeRelationship"},{"$ref":"#\/components\/schemas\/attributeString"}]},"x-example":""}},"required":["total","attributes"]},"attributeString":{"description":"AttributeString","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"fullName"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"size":{"type":"integer","description":"Attribute size.","x-example":128,"format":"int32"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"default","nullable":true}},"required":["key","type","status","error","required","size"]},"attributeInteger":{"description":"AttributeInteger","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"count"},"type":{"type":"string","description":"Attribute type.","x-example":"integer"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"min":{"type":"integer","description":"Minimum value to enforce for new documents.","x-example":1,"format":"int32","nullable":true},"max":{"type":"integer","description":"Maximum value to enforce for new documents.","x-example":10,"format":"int32","nullable":true},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":10,"format":"int32","nullable":true}},"required":["key","type","status","error","required"]},"attributeFloat":{"description":"AttributeFloat","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"percentageCompleted"},"type":{"type":"string","description":"Attribute type.","x-example":"double"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"min":{"type":"number","description":"Minimum value to enforce for new documents.","x-example":1.5,"format":"double","nullable":true},"max":{"type":"number","description":"Maximum value to enforce for new documents.","x-example":10.5,"format":"double","nullable":true},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":2.5,"format":"double","nullable":true}},"required":["key","type","status","error","required"]},"attributeBoolean":{"description":"AttributeBoolean","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"isEnabled"},"type":{"type":"string","description":"Attribute type.","x-example":"boolean"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":false,"nullable":true}},"required":["key","type","status","error","required"]},"attributeEmail":{"description":"AttributeEmail","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"userEmail"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"format":{"type":"string","description":"String format.","x-example":"email"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"default@example.com","nullable":true}},"required":["key","type","status","error","required","format"]},"attributeEnum":{"description":"AttributeEnum","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"status"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"elements":{"type":"array","description":"Array of elements in enumerated type.","items":{"type":"string"},"x-example":"element"},"format":{"type":"string","description":"String format.","x-example":"enum"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"element","nullable":true}},"required":["key","type","status","error","required","elements","format"]},"attributeIp":{"description":"AttributeIP","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"ipAddress"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"format":{"type":"string","description":"String format.","x-example":"ip"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"192.0.2.0","nullable":true}},"required":["key","type","status","error","required","format"]},"attributeUrl":{"description":"AttributeURL","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"githubUrl"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"format":{"type":"string","description":"String format.","x-example":"url"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"http:\/\/example.com","nullable":true}},"required":["key","type","status","error","required","format"]},"attributeDatetime":{"description":"AttributeDatetime","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"birthDay"},"type":{"type":"string","description":"Attribute type.","x-example":"datetime"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"format":{"type":"string","description":"ISO 8601 format.","x-example":"datetime"},"default":{"type":"string","description":"Default value for attribute when not provided. Only null is optional","x-example":"2020-10-15T06:38:00.000+00:00","nullable":true}},"required":["key","type","status","error","required","format"]},"attributeRelationship":{"description":"AttributeRelationship","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"fullName"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"relatedCollection":{"type":"string","description":"The ID of the related collection.","x-example":"collection"},"relationType":{"type":"string","description":"The type of the relationship.","x-example":"oneToOne|oneToMany|manyToOne|manyToMany"},"twoWay":{"type":"boolean","description":"Is the relationship two-way?","x-example":false},"twoWayKey":{"type":"string","description":"The key of the two-way relationship.","x-example":"string"},"onDelete":{"type":"string","description":"How deleting the parent document will propagate to child documents.","x-example":"restrict|cascade|setNull"},"side":{"type":"string","description":"Whether this is the parent or child side of the relationship","x-example":"parent|child"}},"required":["key","type","status","error","required","relatedCollection","relationType","twoWay","twoWayKey","onDelete","side"]},"index":{"description":"Index","type":"object","properties":{"key":{"type":"string","description":"Index Key.","x-example":"index1"},"type":{"type":"string","description":"Index type.","x-example":"primary"},"status":{"type":"string","description":"Index status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an index.","x-example":"string"},"attributes":{"type":"array","description":"Index attributes.","items":{"type":"string"},"x-example":[]},"orders":{"type":"array","description":"Index orders.","items":{"type":"string"},"x-example":[],"nullable":true}},"required":["key","type","status","error","attributes"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"user":{"description":"User","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"password":{"type":"string","description":"Hashed user password.","x-example":"$argon2id$v=19$m=2048,t=4,p=3$aUZjLnliVWRINmFNTWMudg$5S+x+7uA31xFnrHFT47yFwcJeaP0w92L\/4LdgrVRXxE","nullable":true},"hash":{"type":"string","description":"Password hashing algorithm.","x-example":"argon2","nullable":true},"hashOptions":{"type":"object","description":"Password hashing algorithm configuration.","x-example":{},"items":{"oneOf":[{"$ref":"#\/components\/schemas\/algoArgon2"},{"$ref":"#\/components\/schemas\/algoScrypt"},{"$ref":"#\/components\/schemas\/algoScryptModified"},{"$ref":"#\/components\/schemas\/algoBcrypt"},{"$ref":"#\/components\/schemas\/algoPhpass"},{"$ref":"#\/components\/schemas\/algoSha"},{"$ref":"#\/components\/schemas\/algoMd5"}]},"nullable":true},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"labels":{"type":"array","description":"Labels for the user.","items":{"type":"string"},"x-example":["vip"]},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"$ref":"#\/components\/schemas\/preferences"}},"targets":{"type":"array","description":"A user-owned message receiver. A single user may have multiple e.g. emails, phones, and a browser. Each target is registered with a single provider.","items":{"$ref":"#\/components\/schemas\/target"},"x-example":[]},"accessedAt":{"type":"string","description":"Most recent access date in ISO 8601 format. This attribute is only updated again after 24 hours.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","$updatedAt","name","registration","status","labels","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs","targets","accessedAt"]},"algoMd5":{"description":"AlgoMD5","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"md5"}},"required":["type"]},"algoSha":{"description":"AlgoSHA","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"sha"}},"required":["type"]},"algoPhpass":{"description":"AlgoPHPass","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"phpass"}},"required":["type"]},"algoBcrypt":{"description":"AlgoBcrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"bcrypt"}},"required":["type"]},"algoScrypt":{"description":"AlgoScrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scrypt"},"costCpu":{"type":"integer","description":"CPU complexity of computed hash.","x-example":8,"format":"int32"},"costMemory":{"type":"integer","description":"Memory complexity of computed hash.","x-example":14,"format":"int32"},"costParallel":{"type":"integer","description":"Parallelization of computed hash.","x-example":1,"format":"int32"},"length":{"type":"integer","description":"Length used to compute hash.","x-example":64,"format":"int32"}},"required":["type","costCpu","costMemory","costParallel","length"]},"algoScryptModified":{"description":"AlgoScryptModified","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scryptMod"},"salt":{"type":"string","description":"Salt used to compute hash.","x-example":"UxLMreBr6tYyjQ=="},"saltSeparator":{"type":"string","description":"Separator used to compute hash.","x-example":"Bw=="},"signerKey":{"type":"string","description":"Key used to compute hash.","x-example":"XyEKE9RcTDeLEsL\/RjwPDBv\/RqDl8fb3gpYEOQaPihbxf1ZAtSOHCjuAAa7Q3oHpCYhXSN9tizHgVOwn6krflQ=="}},"required":["type","salt","saltSeparator","signerKey"]},"algoArgon2":{"description":"AlgoArgon2","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"argon2"},"memoryCost":{"type":"integer","description":"Memory used to compute hash.","x-example":65536,"format":"int32"},"timeCost":{"type":"integer","description":"Amount of time consumed to compute hash","x-example":4,"format":"int32"},"threads":{"type":"integer","description":"Number of threads used to compute hash.","x-example":3,"format":"int32"}},"required":["type","memoryCost","timeCost","threads"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true},"secret":{"type":"string","description":"Secret used to authenticate the user. Only included if the request was made with an API key","x-example":"5e5bb8c16897e"}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current","secret"]},"identity":{"description":"Identity","type":"object","properties":{"$id":{"type":"string","description":"Identity ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Identity creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Identity update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"provider":{"type":"string","description":"Identity Provider.","x-example":"email"},"providerUid":{"type":"string","description":"ID of the User in the Identity Provider.","x-example":"5e5bb8c16897e"},"providerEmail":{"type":"string","description":"Email of the User in the Identity Provider.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Identity Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Identity Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"}},"required":["$id","$createdAt","$updatedAt","userId","provider","providerUid","providerEmail","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"securityPhrase":{"type":"string","description":"Security phrase of a token. Empty if security phrase was not requested when creating a token. It includes randomly generated phrase which is also sent in the external resource such as email.","x-example":"Golden Fox"}},"required":["$id","$createdAt","userId","secret","expire","securityPhrase"]},"jwt":{"description":"JWT","type":"object","properties":{"jwt":{"type":"string","description":"JWT encoded string.","x-example":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c"}},"required":["jwt"]},"locale":{"description":"Locale","type":"object","properties":{"ip":{"type":"string","description":"User IP address.","x-example":"127.0.0.1"},"countryCode":{"type":"string","description":"Country code in [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) two-character format","x-example":"US"},"country":{"type":"string","description":"Country name. This field support localization.","x-example":"United States"},"continentCode":{"type":"string","description":"Continent code. A two character continent code \"AF\" for Africa, \"AN\" for Antarctica, \"AS\" for Asia, \"EU\" for Europe, \"NA\" for North America, \"OC\" for Oceania, and \"SA\" for South America.","x-example":"NA"},"continent":{"type":"string","description":"Continent name. This field support localization.","x-example":"North America"},"eu":{"type":"boolean","description":"True if country is part of the European Union.","x-example":false},"currency":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format","x-example":"USD"}},"required":["ip","countryCode","country","continentCode","continent","eu","currency"]},"localeCode":{"description":"LocaleCode","type":"object","properties":{"code":{"type":"string","description":"Locale codes in [ISO 639-1](https:\/\/en.wikipedia.org\/wiki\/List_of_ISO_639-1_codes)","x-example":"en-us"},"name":{"type":"string","description":"Locale name","x-example":"US"}},"required":["code","name"]},"file":{"description":"File","type":"object","properties":{"$id":{"type":"string","description":"File ID.","x-example":"5e5ea5c16897e"},"bucketId":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Bucket creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Bucket update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Bucket permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"fileSecurity":{"type":"boolean","description":"Whether file-level security is enabled. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":true},"name":{"type":"string","description":"Bucket name.","x-example":"Documents"},"enabled":{"type":"boolean","description":"Bucket enabled.","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size supported.","x-example":100,"format":"int32"},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions.","items":{"type":"string"},"x-example":["jpg","png"]},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Will be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd).","x-example":"gzip"},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$createdAt","$updatedAt","$permissions","fileSecurity","name","enabled","maximumFileSize","allowedFileExtensions","compression","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"},"prefs":{"type":"object","description":"Team preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"$ref":"#\/components\/schemas\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","total","prefs"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":["owner"]}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Function creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Function update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"users"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"enabled":{"type":"boolean","description":"Function enabled.","x-example":false},"live":{"type":"boolean","description":"Is the function deployed with the latest configuration? This is set to false if you've changed an environment variables, entrypoint, commands, or other settings that needs redeploy to be applied. When the value is false, redeploy the function to update it with the latest configuration.","x-example":false},"logging":{"type":"boolean","description":"Whether executions will be logged. When set to false, executions will not be logged, but will reduce resource used by your Appwrite project.","x-example":false},"runtime":{"type":"string","description":"Function execution runtime.","x-example":"python-3.8"},"deployment":{"type":"string","description":"Function's active deployment ID.","x-example":"5e5ea5c16897e"},"vars":{"type":"array","description":"Function variables.","items":{"$ref":"#\/components\/schemas\/variable"},"x-example":[]},"events":{"type":"array","description":"Function trigger events.","items":{"type":"string"},"x-example":"account.create"},"schedule":{"type":"string","description":"Function execution schedult in CRON format.","x-example":"5 4 * * *"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":300,"format":"int32"},"entrypoint":{"type":"string","description":"The entrypoint file used to execute the deployment.","x-example":"index.js"},"commands":{"type":"string","description":"The build command used to build the deployment.","x-example":"npm install"},"version":{"type":"string","description":"Version of Open Runtimes used for the function.","x-example":"v2"},"installationId":{"type":"string","description":"Function VCS (Version Control System) installation id.","x-example":"6m40at4ejk5h2u9s1hboo"},"providerRepositoryId":{"type":"string","description":"VCS (Version Control System) Repository ID","x-example":"appwrite"},"providerBranch":{"type":"string","description":"VCS (Version Control System) branch name","x-example":"main"},"providerRootDirectory":{"type":"string","description":"Path to function in VCS (Version Control System) repository","x-example":"functions\/helloWorld"},"providerSilentMode":{"type":"boolean","description":"Is VCS (Version Control System) connection is in silent mode? When in silence mode, no comments will be posted on the repository pull or merge requests","x-example":false}},"required":["$id","$createdAt","$updatedAt","execute","name","enabled","live","logging","runtime","deployment","vars","events","schedule","timeout","entrypoint","commands","version","installationId","providerRepositoryId","providerBranch","providerRootDirectory","providerSilentMode"]},"runtime":{"description":"Runtime","type":"object","properties":{"$id":{"type":"string","description":"Runtime ID.","x-example":"python-3.8"},"name":{"type":"string","description":"Runtime Name.","x-example":"Python"},"version":{"type":"string","description":"Runtime version.","x-example":"3.8"},"base":{"type":"string","description":"Base Docker image used to build the runtime.","x-example":"python:3.8-alpine"},"image":{"type":"string","description":"Image name of Docker Hub.","x-example":"appwrite\\\/runtime-for-python:3.8"},"logo":{"type":"string","description":"Name of the logo image.","x-example":"python.png"},"supports":{"type":"array","description":"List of supported architectures.","items":{"type":"string"},"x-example":"amd64"}},"required":["$id","name","version","base","image","logo","supports"]},"deployment":{"description":"Deployment","type":"object","properties":{"$id":{"type":"string","description":"Deployment ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Deployment creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Deployment update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"type":{"type":"string","description":"Type of deployment.","x-example":"vcs"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"index.js"},"size":{"type":"integer","description":"The code size in bytes.","x-example":128,"format":"int32"},"buildId":{"type":"string","description":"The current build ID.","x-example":"5e5ea5c16897e"},"activate":{"type":"boolean","description":"Whether the deployment should be automatically activated.","x-example":true},"status":{"type":"string","description":"The deployment status. Possible values are \"processing\", \"building\", \"waiting\", \"ready\", and \"failed\".","x-example":"ready"},"buildLogs":{"type":"string","description":"The build logs.","x-example":"Compiling source files..."},"buildTime":{"type":"integer","description":"The current build time in seconds.","x-example":128,"format":"int32"},"providerRepositoryName":{"type":"string","description":"The name of the vcs provider repository","x-example":"database"},"providerRepositoryOwner":{"type":"string","description":"The name of the vcs provider repository owner","x-example":"utopia"},"providerRepositoryUrl":{"type":"string","description":"The url of the vcs provider repository","x-example":"https:\/\/github.com\/vermakhushboo\/g4-node-function"},"providerBranch":{"type":"string","description":"The branch of the vcs repository","x-example":"0.7.x"},"providerCommitHash":{"type":"string","description":"The commit hash of the vcs commit","x-example":"7c3f25d"},"providerCommitAuthorUrl":{"type":"string","description":"The url of vcs commit author","x-example":"https:\/\/github.com\/vermakhushboo"},"providerCommitAuthor":{"type":"string","description":"The name of vcs commit author","x-example":"Khushboo Verma"},"providerCommitMessage":{"type":"string","description":"The commit message","x-example":"Update index.js"},"providerCommitUrl":{"type":"string","description":"The url of the vcs commit","x-example":"https:\/\/github.com\/vermakhushboo\/g4-node-function\/commit\/60c0416257a9cbcdd96b2d370c38d8f8d150ccfb"},"providerBranchUrl":{"type":"string","description":"The branch of the vcs repository","x-example":"https:\/\/github.com\/vermakhushboo\/appwrite\/tree\/0.7.x"}},"required":["$id","$createdAt","$updatedAt","type","resourceId","resourceType","entrypoint","size","buildId","activate","status","buildLogs","buildTime","providerRepositoryName","providerRepositoryOwner","providerRepositoryUrl","providerBranch","providerCommitHash","providerCommitAuthorUrl","providerCommitAuthor","providerCommitMessage","providerCommitUrl","providerBranchUrl"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"requestMethod":{"type":"string","description":"HTTP request method type.","x-example":"GET"},"requestPath":{"type":"string","description":"HTTP request path and query.","x-example":"\/articles?id=5"},"requestHeaders":{"type":"array","description":"HTTP response headers as a key-value object. This will return only whitelisted headers. All headers are returned if execution is created as synchronous.","items":{"$ref":"#\/components\/schemas\/headers"},"x-example":[{"Content-Type":"application\/json"}]},"responseStatusCode":{"type":"integer","description":"HTTP response status code.","x-example":200,"format":"int32"},"responseBody":{"type":"string","description":"HTTP response body. This will return empty unless execution is created as synchronous.","x-example":"Developers are awesome."},"responseHeaders":{"type":"array","description":"HTTP response headers as a key-value object. This will return only whitelisted headers. All headers are returned if execution is created as synchronous.","items":{"$ref":"#\/components\/schemas\/headers"},"x-example":[{"Content-Type":"application\/json"}]},"logs":{"type":"string","description":"Function logs. Includes the last 4,000 characters. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"errors":{"type":"string","description":"Function errors. Includes the last 4,000 characters. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"Function execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","requestMethod","requestPath","requestHeaders","responseStatusCode","responseBody","responseHeaders","logs","errors","duration"]},"variable":{"description":"Variable","type":"object","properties":{"$id":{"type":"string","description":"Variable ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"key":{"type":"string","description":"Variable key.","x-example":"API_KEY"},"value":{"type":"string","description":"Variable value.","x-example":"myPa$$word1"},"resourceType":{"type":"string","description":"Service to which the variable belongs. Possible values are \"project\", \"function\"","x-example":"function"},"resourceId":{"type":"string","description":"ID of resource to which the variable belongs. If resourceType is \"project\", it is empty. If resourceType is \"function\", it is ID of the function.","x-example":"myAwesomeFunction"}},"required":["$id","$createdAt","$updatedAt","key","value","resourceType","resourceId"]},"country":{"description":"Country","type":"object","properties":{"name":{"type":"string","description":"Country name.","x-example":"United States"},"code":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"}},"required":["name","code"]},"continent":{"description":"Continent","type":"object","properties":{"name":{"type":"string","description":"Continent name.","x-example":"Europe"},"code":{"type":"string","description":"Continent two letter code.","x-example":"EU"}},"required":["name","code"]},"language":{"description":"Language","type":"object","properties":{"name":{"type":"string","description":"Language name.","x-example":"Italian"},"code":{"type":"string","description":"Language two-character ISO 639-1 codes.","x-example":"it"},"nativeName":{"type":"string","description":"Language native name.","x-example":"Italiano"}},"required":["name","code","nativeName"]},"currency":{"description":"Currency","type":"object","properties":{"symbol":{"type":"string","description":"Currency symbol.","x-example":"$"},"name":{"type":"string","description":"Currency name.","x-example":"US dollar"},"symbolNative":{"type":"string","description":"Currency native symbol.","x-example":"$"},"decimalDigits":{"type":"integer","description":"Number of decimal digits.","x-example":2,"format":"int32"},"rounding":{"type":"number","description":"Currency digit rounding.","x-example":0,"format":"double"},"code":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format.","x-example":"USD"},"namePlural":{"type":"string","description":"Currency plural name","x-example":"US dollars"}},"required":["symbol","name","symbolNative","decimalDigits","rounding","code","namePlural"]},"phone":{"description":"Phone","type":"object","properties":{"code":{"type":"string","description":"Phone code.","x-example":"+1"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["code","countryCode","countryName"]},"healthAntivirus":{"description":"Health Antivirus","type":"object","properties":{"version":{"type":"string","description":"Antivirus version.","x-example":"1.0.0"},"status":{"type":"string","description":"Antivirus status. Possible values can are: `disabled`, `offline`, `online`","x-example":"online"}},"required":["version","status"]},"healthQueue":{"description":"Health Queue","type":"object","properties":{"size":{"type":"integer","description":"Amount of actions in the queue.","x-example":8,"format":"int32"}},"required":["size"]},"healthStatus":{"description":"Health Status","type":"object","properties":{"name":{"type":"string","description":"Name of the service.","x-example":"database"},"ping":{"type":"integer","description":"Duration in milliseconds how long the health check took.","x-example":128,"format":"int32"},"status":{"type":"string","description":"Service status. Possible values can are: `pass`, `fail`","x-example":"pass"}},"required":["name","ping","status"]},"healthTime":{"description":"Health Time","type":"object","properties":{"remoteTime":{"type":"integer","description":"Current unix timestamp on trustful remote server.","x-example":1639490751,"format":"int32"},"localTime":{"type":"integer","description":"Current unix timestamp of local server where Appwrite runs.","x-example":1639490844,"format":"int32"},"diff":{"type":"integer","description":"Difference of unix remote and local timestamps in milliseconds.","x-example":93,"format":"int32"}},"required":["remoteTime","localTime","diff"]},"headers":{"description":"Headers","type":"object","properties":{"name":{"type":"string","description":"Header name.","x-example":"Content-Type"},"value":{"type":"string","description":"Header value.","x-example":"application\/json"}},"required":["name","value"]},"provider":{"description":"Provider","type":"object","properties":{"$id":{"type":"string","description":"Provider ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Provider creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Provider update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"The name for the provider instance.","x-example":"Mailgun"},"provider":{"type":"string","description":"The name of the provider service.","x-example":"mailgun"},"enabled":{"type":"boolean","description":"Is provider enabled?","x-example":true},"type":{"type":"string","description":"Type of provider.","x-example":"sms"},"credentials":{"type":"object","description":"Provider credentials.","x-example":{"key":"123456789"}},"options":{"type":"object","description":"Provider options.","x-example":{"from":"sender-email@mydomain"},"nullable":true}},"required":["$id","$createdAt","$updatedAt","name","provider","enabled","type","credentials"]},"message":{"description":"Message","type":"object","properties":{"$id":{"type":"string","description":"Message ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Message creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Message update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerType":{"type":"string","description":"Message provider type.","x-example":"email"},"topics":{"type":"array","description":"Topic IDs set as recipients.","items":{"type":"string"},"x-example":["5e5ea5c16897e"]},"users":{"type":"array","description":"User IDs set as recipients.","items":{"type":"string"},"x-example":["5e5ea5c16897e"]},"targets":{"type":"array","description":"Target IDs set as recipients.","items":{"type":"string"},"x-example":["5e5ea5c16897e"]},"scheduledAt":{"type":"string","description":"The scheduled time for message.","x-example":"2020-10-15T06:38:00.000+00:00","nullable":true},"deliveredAt":{"type":"string","description":"The time when the message was delivered.","x-example":"2020-10-15T06:38:00.000+00:00","nullable":true},"deliveryErrors":{"type":"array","description":"Delivery errors if any.","items":{"type":"string"},"x-example":["Failed to send message to target 5e5ea5c16897e: Credentials not valid."],"nullable":true},"deliveredTotal":{"type":"integer","description":"Number of recipients the message was delivered to.","x-example":1,"format":"int32"},"data":{"type":"object","description":"Data of the message.","x-example":{"subject":"Welcome to Appwrite","content":"Hi there, welcome to Appwrite family."}},"status":{"type":"string","description":"Status of delivery.","x-example":"Message status can be one of the following: processing, sent, cancelled, failed."},"description":{"type":"string","description":"Message description.","x-example":"Welcome Email.","nullable":true}},"required":["$id","$createdAt","$updatedAt","providerType","topics","users","targets","deliveredTotal","data","status"]},"topic":{"description":"Topic","type":"object","properties":{"$id":{"type":"string","description":"Topic ID.","x-example":"259125845563242502"},"$createdAt":{"type":"string","description":"Topic creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Topic update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"The name of the topic.","x-example":"events"},"total":{"type":"integer","description":"Total count of subscribers subscribed to topic.","x-example":100,"format":"int32"},"description":{"type":"string","description":"Description of the topic.","x-example":"All events related messages will be sent to this topic.","nullable":true}},"required":["$id","$createdAt","$updatedAt","name","total"]},"subscriber":{"description":"Subscriber","type":"object","properties":{"$id":{"type":"string","description":"Subscriber ID.","x-example":"259125845563242502"},"$createdAt":{"type":"string","description":"Subscriber creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Subscriber update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"targetId":{"type":"string","description":"Target ID.","x-example":"259125845563242502"},"target":{"type":"object","description":"Target.","x-example":{"$id":"259125845563242502","$createdAt":"2020-10-15T06:38:00.000+00:00","$updatedAt":"2020-10-15T06:38:00.000+00:00","providerType":"email","providerId":"259125845563242502","name":"ageon-app-email","identifier":"random-mail@email.org","userId":"5e5ea5c16897e"},"items":{"$ref":"#\/components\/schemas\/target"}},"userId":{"type":"string","description":"Topic ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User Name.","x-example":"Aegon Targaryen"},"topicId":{"type":"string","description":"Topic ID.","x-example":"259125845563242502"},"providerType":{"type":"string","description":"The target provider type. Can be one of the following: `email`, `sms` or `push`.","x-example":"email"}},"required":["$id","$createdAt","$updatedAt","targetId","target","userId","userName","topicId","providerType"]},"target":{"description":"Target","type":"object","properties":{"$id":{"type":"string","description":"Target ID.","x-example":"259125845563242502"},"$createdAt":{"type":"string","description":"Target creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Target update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Target Name.","x-example":"Aegon apple token"},"userId":{"type":"string","description":"User ID.","x-example":"259125845563242502"},"providerId":{"type":"string","description":"Provider ID.","x-example":"259125845563242502","nullable":true},"providerType":{"type":"string","description":"The target provider type. Can be one of the following: `email`, `sms` or `push`.","x-example":"email"},"identifier":{"type":"string","description":"The target identifier.","x-example":"token"}},"required":["$id","$createdAt","$updatedAt","name","userId","providerType","identifier"]}},"securitySchemes":{"Project":{"type":"apiKey","name":"X-Appwrite-Project","description":"Your project ID","in":"header","x-appwrite":{"demo":"5df5acd0d48c2"}},"Key":{"type":"apiKey","name":"X-Appwrite-Key","description":"Your secret API key","in":"header","x-appwrite":{"demo":"919c2d18fb5d4...a2ae413da83346ad2"}},"JWT":{"type":"apiKey","name":"X-Appwrite-JWT","description":"Your secret JSON Web Token","in":"header"},"Locale":{"type":"apiKey","name":"X-Appwrite-Locale","description":"","in":"header","x-appwrite":{"demo":"en"}},"Session":{"type":"apiKey","name":"X-Appwrite-Session","description":"The user session to authenticate with","in":"header"},"ForwardedFor":{"type":"apiKey","name":"X-Forwarded-For","description":"The IP address of the client that made the request","in":"header"},"ForwardedUserAgent":{"type":"apiKey","name":"X-Forwarded-User-Agent","description":"The user agent string of the client that made the request","in":"header"}}},"externalDocs":{"description":"Full API docs, specs and tutorials","url":"https:\/\/appwrite.io\/docs"}} \ No newline at end of file +{"openapi":"3.0.0","info":{"version":"1.4.13","title":"Appwrite","description":"Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https:\/\/appwrite.io\/docs](https:\/\/appwrite.io\/docs)","termsOfService":"https:\/\/appwrite.io\/policy\/terms","contact":{"name":"Appwrite Team","url":"https:\/\/appwrite.io\/support","email":"team@appwrite.io"},"license":{"name":"BSD-3-Clause","url":"https:\/\/raw.githubusercontent.com\/appwrite\/appwrite\/master\/LICENSE"}},"servers":[{"url":"https:\/\/HOSTNAME\/v1"}],"paths":{"\/account":{"get":{"summary":"Get account","operationId":"accountGet","tags":["account"],"description":"Get the currently logged in user.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"get","weight":22,"cookies":false,"type":"","demo":"account\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]},"post":{"summary":"Create account","operationId":"accountCreate","tags":["account"],"description":"Use this endpoint to allow a new user to register a new account in your project. After the user registration completes successfully, you can use the [\/account\/verfication](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createVerification) route to start verifying the user email address. To allow the new user to login to their new account, you need to create a new [account session](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createEmailSession).","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"create","weight":7,"cookies":false,"type":"","demo":"account\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"New user password. Must be between 8 and 256 chars.","x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/account\/email":{"patch":{"summary":"Update email","operationId":"accountUpdateEmail","tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateEmail","weight":29,"cookies":false,"type":"","demo":"account\/update-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","x-example":"password"}},"required":["email","password"]}}}}}},"\/account\/identities":{"get":{"summary":"List Identities","operationId":"accountListIdentities","tags":["account"],"description":"Get the list of identities for the currently logged in user.","responses":{"200":{"description":"Identities List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/identityList"}}}}},"x-appwrite":{"method":"listIdentities","weight":13,"cookies":false,"type":"","demo":"account\/list-identities.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-identities.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/identities","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, provider, providerUid, providerEmail, providerAccessTokenExpiry","required":false,"schema":{"type":"string","default":[]},"in":"query"}]}},"\/account\/identities\/{identityId}":{"delete":{"summary":"Delete identity","operationId":"accountDeleteIdentity","tags":["account"],"description":"Delete an identity by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIdentity","weight":14,"cookies":false,"type":"","demo":"account\/delete-identity.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-identity.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"identityId","description":"Identity ID.","required":true,"schema":{"type":"string","x-example":"[IDENTITY_ID]"},"in":"path"}]}},"\/account\/jwt":{"post":{"summary":"Create JWT","operationId":"accountCreateJWT","tags":["account"],"description":"Use this endpoint to create a JSON Web Token. You can use the resulting JWT to authenticate on behalf of the current user when working with the Appwrite server-side API and SDKs. The JWT secret is valid for 15 minutes from its creation and will be invalid if the user will logout in that time frame.","responses":{"201":{"description":"JWT","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/jwt"}}}}},"x-appwrite":{"method":"createJWT","weight":20,"cookies":false,"type":"","demo":"account\/create-j-w-t.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-jwt.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"accounts.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"List logs","operationId":"accountListLogs","tags":["account"],"description":"Get the list of latest security activity logs for the currently logged in user. Each log returns user IP address, location and date and time of log.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listLogs","weight":25,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update name","operationId":"accountUpdateName","tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateName","weight":27,"cookies":false,"type":"","demo":"account\/update-name.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-name.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["name"]}}}}}},"\/account\/password":{"patch":{"summary":"Update password","operationId":"accountUpdatePassword","tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePassword","weight":28,"cookies":false,"type":"","demo":"account\/update-password.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-password.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"password":{"type":"string","description":"New user password. Must be at least 8 chars.","x-example":null},"oldPassword":{"type":"string","description":"Current user password. Must be at least 8 chars.","x-example":"password"}},"required":["password"]}}}}}},"\/account\/phone":{"patch":{"summary":"Update phone","operationId":"accountUpdatePhone","tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createPhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePhone","weight":30,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","x-example":"password"}},"required":["phone","password"]}}}}}},"\/account\/prefs":{"get":{"summary":"Get account preferences","operationId":"accountGetPrefs","tags":["account"],"description":"Get the preferences as a key-value object for the currently logged in user.","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"getPrefs","weight":23,"cookies":false,"type":"","demo":"account\/get-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/prefs","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]},"patch":{"summary":"Update preferences","operationId":"accountUpdatePrefs","tags":["account"],"description":"Update currently logged in user account preferences. The object you pass is stored as is, and replaces any previous value. The maximum allowed prefs size is 64kB and throws error if exceeded.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePrefs","weight":31,"cookies":false,"type":"","demo":"account\/update-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/prefs","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"prefs":{"type":"object","description":"Prefs key-value JSON object.","x-example":"{}"}},"required":["prefs"]}}}}}},"\/account\/recovery":{"post":{"summary":"Create password recovery","operationId":"accountCreateRecovery","tags":["account"],"description":"Sends the user an email with a temporary secret key for password reset. When the user clicks the confirmation link he is redirected back to your app password reset URL with the secret key and email address values attached to the URL query string. Use the query string params to submit a request to the [PUT \/account\/recovery](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateRecovery) endpoint to complete the process. The verification link sent to the user's email address is valid for 1 hour.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createRecovery","weight":36,"cookies":false,"type":"","demo":"account\/create-recovery.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-recovery.md","rate-limit":10,"rate-time":3600,"rate-key":["url:{url},email:{param-email}","ip:{ip}"],"scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"url":{"type":"string","description":"URL to redirect the user back to your app from the recovery email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"}},"required":["email","url"]}}}}},"put":{"summary":"Create password recovery (confirmation)","operationId":"accountUpdateRecovery","tags":["account"],"description":"Use this endpoint to complete the user account password reset. Both the **userId** and **secret** arguments will be passed as query parameters to the redirect URL you have provided when sending your request to the [POST \/account\/recovery](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createRecovery) endpoint.\n\nPlease note that in order to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) the only valid redirect URLs are the ones from domains you have set when adding your platforms in the console interface.","responses":{"200":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"updateRecovery","weight":37,"cookies":false,"type":"","demo":"account\/update-recovery.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-recovery.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid reset token.","x-example":"[SECRET]"},"password":{"type":"string","description":"New user password. Must be between 8 and 256 chars.","x-example":null}},"required":["userId","secret","password"]}}}}}},"\/account\/sessions":{"get":{"summary":"List sessions","operationId":"accountListSessions","tags":["account"],"description":"Get the list of active sessions across different devices for the currently logged in user.","responses":{"200":{"description":"Sessions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/sessionList"}}}}},"x-appwrite":{"method":"listSessions","weight":24,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/sessions","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]},"delete":{"summary":"Delete sessions","operationId":"accountDeleteSessions","tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":35,"cookies":false,"type":"","demo":"account\/delete-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-sessions.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/account\/sessions\/anonymous":{"post":{"summary":"Create anonymous session","operationId":"accountCreateAnonymousSession","tags":["account"],"description":"Use this endpoint to allow a new user to register an anonymous account in your project. This route will also create a new session for the user. To allow the new user to convert an anonymous account to a normal account, you need to update its [email and password](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateEmail) or create an [OAuth2 session](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#CreateOAuth2Session).","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"createAnonymousSession","weight":19,"cookies":false,"type":"","demo":"account\/create-anonymous-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-anonymous.md","rate-limit":50,"rate-time":3600,"rate-key":"ip:{ip}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/sessions\/email":{"post":{"summary":"Create email password session","operationId":"accountCreateEmailPasswordSession","tags":["account"],"description":"Allow the user to login into their account by providing a valid email and password combination. This route will create a new session for the user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"createEmailPasswordSession","weight":8,"cookies":false,"type":"","demo":"account\/create-email-password-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-email-password.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","x-example":"password"}},"required":["email","password"]}}}}}},"\/account\/sessions\/magic-url":{"put":{"summary":"Create session (deprecated)","operationId":"accountUpdateMagicURLSession","tags":["account"],"description":"Use this endpoint to create a session from token. Provide the **userId** and **secret** parameters from the successful response of authentication flows initiated by token creation. For example, magic URL and phone login.","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateMagicURLSession","weight":16,"cookies":false,"type":"","demo":"account\/update-magic-u-r-l-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session.md","rate-limit":10,"rate-time":3600,"rate-key":"ip:{ip},userId:{param-userId}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/account\/sessions\/oauth2\/{provider}":{"get":{"summary":"Create OAuth2 session","operationId":"accountCreateOAuth2Session","tags":["account"],"description":"Allow the user to login to their account using the OAuth2 provider of their choice. Each OAuth2 provider should be enabled from the Appwrite console first. Use the success and failure arguments to provide a redirect URL's back to your app when login is completed.\n\nIf there is already an active session, the new session will be attached to the logged-in account. If there are no active sessions, the server will attempt to look for a user with the same email address as the email received from the OAuth2 provider and attach the new session to the existing user. If no matching user is found - the server will create a new user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).\n","responses":{"301":{"description":"File"}},"x-appwrite":{"method":"createOAuth2Session","weight":9,"cookies":false,"type":"webAuth","demo":"account\/create-o-auth2session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-oauth2.md","rate-limit":50,"rate-time":3600,"rate-key":"ip:{ip}","scope":"sessions.write","platforms":["client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"provider","description":"OAuth2 Provider. Currently, supported providers are: amazon, apple, auth0, authentik, autodesk, bitbucket, bitly, box, dailymotion, discord, disqus, dropbox, etsy, facebook, github, gitlab, google, linkedin, microsoft, notion, oidc, okta, paypal, paypalSandbox, podio, salesforce, slack, spotify, stripe, tradeshift, tradeshiftBox, twitch, wordpress, yahoo, yammer, yandex, zoho, zoom.","required":true,"schema":{"type":"string","x-example":"amazon","enum":["amazon","apple","auth0","authentik","autodesk","bitbucket","bitly","box","dailymotion","discord","disqus","dropbox","etsy","facebook","github","gitlab","google","linkedin","microsoft","notion","oidc","okta","paypal","paypalSandbox","podio","salesforce","slack","spotify","stripe","tradeshift","tradeshiftBox","twitch","wordpress","yahoo","yammer","yandex","zoho","zoom","mock"],"x-enum-name":"Provider","x-enum-keys":[]},"in":"path"},{"name":"success","description":"URL to redirect back to your app after a successful login attempt. Only URLs from hostnames in your project's platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","required":false,"schema":{"type":"string","format":"url","x-example":"https:\/\/example.com","default":""},"in":"query"},{"name":"failure","description":"URL to redirect back to your app after a failed login attempt. Only URLs from hostnames in your project's platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","required":false,"schema":{"type":"string","format":"url","x-example":"https:\/\/example.com","default":""},"in":"query"},{"name":"token","description":"Include token credentials in the final redirect, useful for server-side integrations, or when cookies are not available.","required":false,"schema":{"type":"boolean","x-example":false,"default":false},"in":"query"},{"name":"scopes","description":"A list of custom OAuth2 scopes. Check each provider internal docs for a list of supported scopes. Maximum of 100 scopes are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/sessions\/token":{"post":{"summary":"Create session","operationId":"accountCreateSession","tags":["account"],"description":"Use this endpoint to create a session from token. Provide the **userId** and **secret** parameters from the successful response of authentication flows initiated by token creation. For example, magic URL and phone login.","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"createSession","weight":17,"cookies":false,"type":"","demo":"account\/create-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session.md","rate-limit":10,"rate-time":3600,"rate-key":"ip:{ip},userId:{param-userId}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Secret of a token generated by login methods. For example, the `createMagicURLToken` or `createPhoneToken` methods.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/account\/sessions\/{sessionId}":{"get":{"summary":"Get session","operationId":"accountGetSession","tags":["account"],"description":"Use this endpoint to get a logged in user's session using a Session ID. Inputting 'current' will return the current session being used.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"getSession","weight":26,"cookies":false,"type":"","demo":"account\/get-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-session.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/sessions","offline-key":"{sessionId}","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to get the current device session.","required":true,"schema":{"type":"string","x-example":"[SESSION_ID]"},"in":"path"}]},"patch":{"summary":"Update OAuth session (refresh tokens)","operationId":"accountUpdateSession","tags":["account"],"description":"Access tokens have limited lifespan and expire to mitigate security risks. If session was created using an OAuth provider, this route can be used to \"refresh\" the access token.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateSession","weight":34,"cookies":false,"type":"","demo":"account\/update-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-session.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to update the current device session.","required":true,"schema":{"type":"string","x-example":"[SESSION_ID]"},"in":"path"}]},"delete":{"summary":"Delete session","operationId":"accountDeleteSession","tags":["account"],"description":"Logout the user. Use 'current' as the session ID to logout on this device, use a session ID to logout on another device. If you're looking to logout the user on all devices, use [Delete Sessions](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#deleteSessions) instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSession","weight":33,"cookies":false,"type":"","demo":"account\/delete-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-session.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to delete the current device session.","required":true,"schema":{"type":"string","x-example":"[SESSION_ID]"},"in":"path"}]}},"\/account\/status":{"patch":{"summary":"Update status","operationId":"accountUpdateStatus","tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateStatus","weight":32,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/account\/tokens\/magic-url":{"post":{"summary":"Create magic URL token","operationId":"accountCreateMagicURLToken","tags":["account"],"description":"Sends the user an email with a secret key for creating a session. If the provided user ID has not been registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [PUT \/account\/sessions\/magic-url](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateMagicURLSession) endpoint to complete the login process. The link sent to the user's email address is valid for 1 hour. If you are on a mobile device you can leave the URL parameter empty, so that the login completion will be handled by your Appwrite instance by default.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).\n","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createMagicURLToken","weight":15,"cookies":false,"type":"","demo":"account\/create-magic-u-r-l-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-token-magic-url.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"url":{"type":"string","description":"URL to redirect the user back to your app from the magic URL login. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"},"securityPhrase":{"type":"boolean","description":"Toggle for security phrase. If enabled, email will be send with a randomly generated phrase and the phrase will also be included in the response. Confirming phrases match increases the security of authentication flow.","x-example":false}},"required":["userId","email"]}}}}}},"\/account\/tokens\/phone":{"post":{"summary":"Create phone token","operationId":"accountCreatePhoneToken","tags":["account"],"description":"Sends the user an SMS with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [PUT \/account\/sessions\/phone](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updatePhoneSession) endpoint to complete the login process. The secret sent to the user's phone is valid for 15 minutes.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createPhoneToken","weight":18,"cookies":false,"type":"","demo":"account\/create-phone-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-token-phone.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},phone:{param-phone}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"}},"required":["userId","phone"]}}}}}},"\/account\/verification":{"post":{"summary":"Create email verification","operationId":"accountCreateVerification","tags":["account"],"description":"Use this endpoint to send a verification message to your user email address to confirm they are the valid owners of that address. Both the **userId** and **secret** arguments will be passed as query parameters to the URL you have provided to be attached to the verification email. The provided URL should redirect the user back to your app and allow you to complete the verification process by verifying both the **userId** and **secret** parameters. Learn more about how to [complete the verification process](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateVerification). The verification link sent to the user's email address is valid for 7 days.\n\nPlease note that in order to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md), the only valid redirect URLs are the ones from domains you have set when adding your platforms in the console interface.\n","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createVerification","weight":38,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"url":{"type":"string","description":"URL to redirect the user back to your app from the verification email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"}},"required":["url"]}}}}},"put":{"summary":"Create email verification (confirmation)","operationId":"accountUpdateVerification","tags":["account"],"description":"Use this endpoint to complete the user email verification process. Use both the **userId** and **secret** parameters that were attached to your app URL to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"updateVerification","weight":39,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/account\/verification\/phone":{"post":{"summary":"Create phone verification","operationId":"accountCreatePhoneVerification","tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updatePhone) endpoint. Learn more about how to [complete the verification process](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createPhoneVerification","weight":40,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{userId}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]},"put":{"summary":"Create phone verification (confirmation)","operationId":"accountUpdatePhoneVerification","tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"updatePhoneVerification","weight":41,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/avatars\/browsers\/{code}":{"get":{"summary":"Get browser icon","operationId":"avatarsGetBrowser","tags":["avatars"],"description":"You can use this endpoint to show different browser icons to your users. The code argument receives the browser code as it appears in your user [GET \/account\/sessions](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#getSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getBrowser","weight":44,"cookies":false,"type":"location","demo":"avatars\/get-browser.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-browser.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Browser Code.","required":true,"schema":{"type":"string","x-example":"aa","enum":["aa","an","ch","ci","cm","cr","ff","sf","mf","ps","oi","om","op","on"],"x-enum-name":"Browser","x-enum-keys":["Avant Browser","Android WebView Beta","Google Chrome","Google Chrome (iOS)","Google Chrome (Mobile)","Chromium","Mozilla Firefox","Safari","Mobile Safari","Microsoft Edge","Microsoft Edge (iOS)","Opera Mini","Opera","Opera (Next)"]},"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"}]}},"\/avatars\/credit-cards\/{code}":{"get":{"summary":"Get credit card icon","operationId":"avatarsGetCreditCard","tags":["avatars"],"description":"The credit card endpoint will return you the icon of the credit card provider you need. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getCreditCard","weight":43,"cookies":false,"type":"location","demo":"avatars\/get-credit-card.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-credit-card.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Credit Card Code. Possible values: amex, argencard, cabal, censosud, diners, discover, elo, hipercard, jcb, mastercard, naranja, targeta-shopping, union-china-pay, visa, mir, maestro.","required":true,"schema":{"type":"string","x-example":"amex","enum":["amex","argencard","cabal","censosud","diners","discover","elo","hipercard","jcb","mastercard","naranja","targeta-shopping","union-china-pay","visa","mir","maestro"],"x-enum-name":"CreditCard","x-enum-keys":["American Express","Argencard","Cabal","Consosud","Diners Club","Discover","Elo","Hipercard","JCB","Mastercard","Naranja","Tarjeta Shopping","Union China Pay","Visa","MIR","Maestro"]},"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"}]}},"\/avatars\/favicon":{"get":{"summary":"Get favicon","operationId":"avatarsGetFavicon","tags":["avatars"],"description":"Use this endpoint to fetch the favorite icon (AKA favicon) of any remote website URL.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFavicon","weight":47,"cookies":false,"type":"location","demo":"avatars\/get-favicon.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-favicon.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"url","description":"Website URL which you want to fetch the favicon from.","required":true,"schema":{"type":"string","format":"url","x-example":"https:\/\/example.com"},"in":"query"}]}},"\/avatars\/flags\/{code}":{"get":{"summary":"Get country flag","operationId":"avatarsGetFlag","tags":["avatars"],"description":"You can use this endpoint to show different country flags icons to your users. The code argument receives the 2 letter country code. Use width, height and quality arguments to change the output settings. Country codes follow the [ISO 3166-1](https:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFlag","weight":45,"cookies":false,"type":"location","demo":"avatars\/get-flag.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-flag.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Country Code. ISO Alpha-2 country code format.","required":true,"schema":{"type":"string","x-example":"af","enum":["af","ao","al","ad","ae","ar","am","ag","au","at","az","bi","be","bj","bf","bd","bg","bh","bs","ba","by","bz","bo","br","bb","bn","bt","bw","cf","ca","ch","cl","cn","ci","cm","cd","cg","co","km","cv","cr","cu","cy","cz","de","dj","dm","dk","do","dz","ec","eg","er","es","ee","et","fi","fj","fr","fm","ga","gb","ge","gh","gn","gm","gw","gq","gr","gd","gt","gy","hn","hr","ht","hu","id","in","ie","ir","iq","is","il","it","jm","jo","jp","kz","ke","kg","kh","ki","kn","kr","kw","la","lb","lr","ly","lc","li","lk","ls","lt","lu","lv","ma","mc","md","mg","mv","mx","mh","mk","ml","mt","mm","me","mn","mz","mr","mu","mw","my","na","ne","ng","ni","nl","no","np","nr","nz","om","pk","pa","pe","ph","pw","pg","pl","kp","pt","py","qa","ro","ru","rw","sa","sd","sn","sg","sb","sl","sv","sm","so","rs","ss","st","sr","sk","si","se","sz","sc","sy","td","tg","th","tj","tm","tl","to","tt","tn","tr","tv","tz","ug","ua","uy","us","uz","va","vc","ve","vn","vu","ws","ye","za","zm","zw"],"x-enum-name":"Flag","x-enum-keys":["Afghanistan","Angola","Albania","Andorra","United Arab Emirates","Argentina","Armenia","Antigua and Barbuda","Australia","Austria","Azerbaijan","Burundi","Belgium","Benin","Burkina Faso","Bangladesh","Bulgaria","Bahrain","Bahamas","Bosnia and Herzegovina","Belarus","Belize","Bolivia","Brazil","Barbados","Brunei Darussalam","Bhutan","Botswana","Central African Republic","Canada","Switzerland","Chile","China","C\u00f4te d'Ivoire","Cameroon","Democratic Republic of the Congo","Republic of the Congo","Colombia","Comoros","Cape Verde","Costa Rica","Cuba","Cyprus","Czech Republic","Germany","Djibouti","Dominica","Denmark","Dominican Republic","Algeria","Ecuador","Egypt","Eritrea","Spain","Estonia","Ethiopia","Finland","Fiji","France","Micronesia (Federated States of)","Gabon","United Kingdom","Georgia","Ghana","Guinea","Gambia","Guinea-Bissau","Equatorial Guinea","Greece","Grenada","Guatemala","Guyana","Honduras","Croatia","Haiti","Hungary","Indonesia","India","Ireland","Iran (Islamic Republic of)","Iraq","Iceland","Israel","Italy","Jamaica","Jordan","Japan","Kazakhstan","Kenya","Kyrgyzstan","Cambodia","Kiribati","Saint Kitts and Nevis","South Korea","Kuwait","Lao People's Democratic Republic","Lebanon","Liberia","Libya","Saint Lucia","Liechtenstein","Sri Lanka","Lesotho","Lithuania","Luxembourg","Latvia","Morocco","Monaco","Moldova","Madagascar","Maldives","Mexico","Marshall Islands","North Macedonia","Mali","Malta","Myanmar","Montenegro","Mongolia","Mozambique","Mauritania","Mauritius","Malawi","Malaysia","Namibia","Niger","Nigeria","Nicaragua","Netherlands","Norway","Nepal","Nauru","New Zealand","Oman","Pakistan","Panama","Peru","Philippines","Palau","Papua New Guinea","Poland","North Korea","Portugal","Paraguay","Qatar","Romania","Russia","Rwanda","Saudi Arabia","Sudan","Senegal","Singapore","Solomon Islands","Sierra Leone","El Salvador","San Marino","Somalia","Serbia","South Sudan","Sao Tome and Principe","Suriname","Slovakia","Slovenia","Sweden","Eswatini","Seychelles","Syria","Chad","Togo","Thailand","Tajikistan","Turkmenistan","Timor-Leste","Tonga","Trinidad and Tobago","Tunisia","Turkey","Tuvalu","Tanzania","Uganda","Ukraine","Uruguay","United States","Uzbekistan","Vatican City","Saint Vincent and the Grenadines","Venezuela","Vietnam","Vanuatu","Samoa","Yemen","South Africa","Zambia","Zimbabwe"]},"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"}]}},"\/avatars\/image":{"get":{"summary":"Get image from URL","operationId":"avatarsGetImage","tags":["avatars"],"description":"Use this endpoint to fetch a remote image URL and crop it to any image size you want. This endpoint is very useful if you need to crop and display remote images in your app or in case you want to make sure a 3rd party image is properly served using a TLS protocol.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getImage","weight":46,"cookies":false,"type":"location","demo":"avatars\/get-image.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-image.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"url","description":"Image URL which you want to crop.","required":true,"schema":{"type":"string","format":"url","x-example":"https:\/\/example.com"},"in":"query"},{"name":"width","description":"Resize preview image width, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get user initials","operationId":"avatarsGetInitials","tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getInitials","weight":49,"cookies":false,"type":"location","demo":"avatars\/get-initials.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-initials.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"name","description":"Full Name. When empty, current user name or email will be used. Max length: 128 chars.","required":false,"schema":{"type":"string","x-example":"[NAME]","default":""},"in":"query"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":500},"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":500},"in":"query"},{"name":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"schema":{"type":"string","default":""},"in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR code","operationId":"avatarsGetQR","tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getQR","weight":48,"cookies":false,"type":"location","demo":"avatars\/get-q-r.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-qr.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"text","description":"Plain text to be converted to QR code image.","required":true,"schema":{"type":"string","x-example":"[TEXT]"},"in":"query"},{"name":"size","description":"QR code size. Pass an integer between 1 to 1000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":1,"default":400},"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":1},"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"schema":{"type":"boolean","x-example":false,"default":false},"in":"query"}]}},"\/databases":{"get":{"summary":"List databases","operationId":"databasesList","tags":["databases"],"description":"Get a list of all databases from the current Appwrite project. You can use the search parameter to filter your results.","responses":{"200":{"description":"Databases List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/databaseList"}}}}},"x-appwrite":{"method":"list","weight":54,"cookies":false,"type":"","demo":"databases\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create database","operationId":"databasesCreate","tags":["databases"],"description":"Create a new Database.\n","responses":{"201":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"create","weight":53,"cookies":false,"type":"","demo":"databases\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"databaseId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[DATABASE_ID]","x-global":true},"name":{"type":"string","description":"Database name. Max length: 128 chars.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Is the database enabled? When set to 'disabled', users cannot access the database but Server SDKs with an API key can still read and write to the database. No data is lost when this is toggled.","x-example":false}},"required":["databaseId","name"]}}}}}},"\/databases\/{databaseId}":{"get":{"summary":"Get database","operationId":"databasesGet","tags":["databases"],"description":"Get a database by its unique ID. This endpoint response returns a JSON object with the database metadata.","responses":{"200":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"get","weight":55,"cookies":false,"type":"","demo":"databases\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}]},"put":{"summary":"Update database","operationId":"databasesUpdate","tags":["databases"],"description":"Update a database by its unique ID.","responses":{"200":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"update","weight":57,"cookies":false,"type":"","demo":"databases\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Database name. Max length: 128 chars.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Is database enabled? When set to 'disabled', users cannot access the database but Server SDKs with an API key can still read and write to the database. No data is lost when this is toggled.","x-example":false}},"required":["name"]}}}}},"delete":{"summary":"Delete database","operationId":"databasesDelete","tags":["databases"],"description":"Delete a database by its unique ID. Only API keys with with databases.write scope can delete a database.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":58,"cookies":false,"type":"","demo":"databases\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections":{"get":{"summary":"List collections","operationId":"databasesListCollections","tags":["databases"],"description":"Get a list of all collections that belong to the provided databaseId. You can use the search parameter to filter your results.","responses":{"200":{"description":"Collections List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collectionList"}}}}},"x-appwrite":{"method":"listCollections","weight":60,"cookies":false,"type":"","demo":"databases\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, documentSecurity","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create collection","operationId":"databasesCreateCollection","tags":["databases"],"description":"Create a new Collection. Before using this route, you should create a new database resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"createCollection","weight":59,"cookies":false,"type":"","demo":"databases\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permissions strings. By default, no user is granted with any permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":false},"enabled":{"type":"boolean","description":"Is collection enabled? When set to 'disabled', users cannot access the collection but Server SDKs with and API key can still read and write to the collection. No data is lost when this is toggled.","x-example":false}},"required":["collectionId","name"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}":{"get":{"summary":"Get collection","operationId":"databasesGetCollection","tags":["databases"],"description":"Get a collection by its unique ID. This endpoint response returns a JSON object with the collection metadata.","responses":{"200":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"getCollection","weight":61,"cookies":false,"type":"","demo":"databases\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]},"put":{"summary":"Update collection","operationId":"databasesUpdateCollection","tags":["databases"],"description":"Update a collection by its unique ID.","responses":{"200":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"updateCollection","weight":63,"cookies":false,"type":"","demo":"databases\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":false},"enabled":{"type":"boolean","description":"Is collection enabled? When set to 'disabled', users cannot access the collection but Server SDKs with and API key can still read and write to the collection. No data is lost when this is toggled.","x-example":false}},"required":["name"]}}}}},"delete":{"summary":"Delete collection","operationId":"databasesDeleteCollection","tags":["databases"],"description":"Delete a collection by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteCollection","weight":64,"cookies":false,"type":"","demo":"databases\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes":{"get":{"summary":"List attributes","operationId":"databasesListAttributes","tags":["databases"],"description":"","responses":{"200":{"description":"Attributes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeList"}}}}},"x-appwrite":{"method":"listAttributes","weight":75,"cookies":false,"type":"","demo":"databases\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: key, type, size, required, array, status, error","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create boolean attribute","operationId":"databasesCreateBooleanAttribute","tags":["databases"],"description":"Create a boolean attribute.\n","responses":{"202":{"description":"AttributeBoolean","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeBoolean"}}}}},"x-appwrite":{"method":"createBooleanAttribute","weight":72,"cookies":false,"type":"","demo":"databases\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":false},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean\/{key}":{"patch":{"summary":"Update boolean attribute","operationId":"databasesUpdateBooleanAttribute","tags":["databases"],"description":"","responses":{"200":{"description":"AttributeBoolean","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeBoolean"}}}}},"x-appwrite":{"method":"updateBooleanAttribute","weight":84,"cookies":false,"type":"","demo":"databases\/update-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":false,"x-nullable":true}},"required":["required","default"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/datetime":{"post":{"summary":"Create datetime attribute","operationId":"databasesCreateDatetimeAttribute","tags":["databases"],"description":"","responses":{"202":{"description":"AttributeDatetime","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeDatetime"}}}}},"x-appwrite":{"method":"createDatetimeAttribute","weight":73,"cookies":false,"type":"","demo":"databases\/create-datetime-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-datetime-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for the attribute in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/datetime\/{key}":{"patch":{"summary":"Update dateTime attribute","operationId":"databasesUpdateDatetimeAttribute","tags":["databases"],"description":"","responses":{"200":{"description":"AttributeDatetime","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeDatetime"}}}}},"x-appwrite":{"method":"updateDatetimeAttribute","weight":85,"cookies":false,"type":"","demo":"databases\/update-datetime-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-datetime-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null,"x-nullable":true}},"required":["required","default"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create email attribute","operationId":"databasesCreateEmailAttribute","tags":["databases"],"description":"Create an email attribute.\n","responses":{"202":{"description":"AttributeEmail","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeEmail"}}}}},"x-appwrite":{"method":"createEmailAttribute","weight":66,"cookies":false,"type":"","demo":"databases\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"email@example.com"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/email\/{key}":{"patch":{"summary":"Update email attribute","operationId":"databasesUpdateEmailAttribute","tags":["databases"],"description":"Update an email attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeEmail","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeEmail"}}}}},"x-appwrite":{"method":"updateEmailAttribute","weight":78,"cookies":false,"type":"","demo":"databases\/update-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"email@example.com","x-nullable":true}},"required":["required","default"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create enum attribute","operationId":"databasesCreateEnumAttribute","tags":["databases"],"description":"","responses":{"202":{"description":"AttributeEnum","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeEnum"}}}}},"x-appwrite":{"method":"createEnumAttribute","weight":67,"cookies":false,"type":"","demo":"databases\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"elements":{"type":"array","description":"Array of elements in enumerated type. Uses length of longest element to determine size. Maximum of 100 elements are allowed, each 255 characters long.","x-example":null,"items":{"type":"string"}},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","elements","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/enum\/{key}":{"patch":{"summary":"Update enum attribute","operationId":"databasesUpdateEnumAttribute","tags":["databases"],"description":"Update an enum attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeEnum","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeEnum"}}}}},"x-appwrite":{"method":"updateEnumAttribute","weight":79,"cookies":false,"type":"","demo":"databases\/update-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-enum-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"elements":{"type":"array","description":"Array of elements in enumerated type. Uses length of longest element to determine size. Maximum of 100 elements are allowed, each 255 characters long.","x-example":null,"items":{"type":"string"}},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"[DEFAULT]","x-nullable":true}},"required":["elements","required","default"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create float attribute","operationId":"databasesCreateFloatAttribute","tags":["databases"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeFloat","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeFloat"}}}}},"x-appwrite":{"method":"createFloatAttribute","weight":71,"cookies":false,"type":"","demo":"databases\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"min":{"type":"number","description":"Minimum value to enforce on new documents","x-example":null},"max":{"type":"number","description":"Maximum value to enforce on new documents","x-example":null},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/float\/{key}":{"patch":{"summary":"Update float attribute","operationId":"databasesUpdateFloatAttribute","tags":["databases"],"description":"Update a float attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeFloat","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeFloat"}}}}},"x-appwrite":{"method":"updateFloatAttribute","weight":83,"cookies":false,"type":"","demo":"databases\/update-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"min":{"type":"number","description":"Minimum value to enforce on new documents","x-example":null},"max":{"type":"number","description":"Maximum value to enforce on new documents","x-example":null},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null,"x-nullable":true}},"required":["required","min","max","default"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create integer attribute","operationId":"databasesCreateIntegerAttribute","tags":["databases"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeInteger","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeInteger"}}}}},"x-appwrite":{"method":"createIntegerAttribute","weight":70,"cookies":false,"type":"","demo":"databases\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"min":{"type":"integer","description":"Minimum value to enforce on new documents","x-example":null},"max":{"type":"integer","description":"Maximum value to enforce on new documents","x-example":null},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/integer\/{key}":{"patch":{"summary":"Update integer attribute","operationId":"databasesUpdateIntegerAttribute","tags":["databases"],"description":"Update an integer attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeInteger","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeInteger"}}}}},"x-appwrite":{"method":"updateIntegerAttribute","weight":82,"cookies":false,"type":"","demo":"databases\/update-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"min":{"type":"integer","description":"Minimum value to enforce on new documents","x-example":null},"max":{"type":"integer","description":"Maximum value to enforce on new documents","x-example":null},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null,"x-nullable":true}},"required":["required","min","max","default"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP address attribute","operationId":"databasesCreateIpAttribute","tags":["databases"],"description":"Create IP address attribute.\n","responses":{"202":{"description":"AttributeIP","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeIp"}}}}},"x-appwrite":{"method":"createIpAttribute","weight":68,"cookies":false,"type":"","demo":"databases\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/ip\/{key}":{"patch":{"summary":"Update IP address attribute","operationId":"databasesUpdateIpAttribute","tags":["databases"],"description":"Update an ip attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeIP","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeIp"}}}}},"x-appwrite":{"method":"updateIpAttribute","weight":80,"cookies":false,"type":"","demo":"databases\/update-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null,"x-nullable":true}},"required":["required","default"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/relationship":{"post":{"summary":"Create relationship attribute","operationId":"databasesCreateRelationshipAttribute","tags":["databases"],"description":"Create relationship attribute. [Learn more about relationship attributes](https:\/\/appwrite.io\/docs\/databases-relationships#relationship-attributes).\n","responses":{"202":{"description":"AttributeRelationship","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeRelationship"}}}}},"x-appwrite":{"method":"createRelationshipAttribute","weight":74,"cookies":false,"type":"","demo":"databases\/create-relationship-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-relationship-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"relatedCollectionId":{"type":"string","description":"Related Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","x-example":"[RELATED_COLLECTION_ID]"},"type":{"type":"string","description":"Relation type","x-example":"oneToOne","enum":["oneToOne","manyToOne","manyToMany","oneToMany"],"x-enum-name":"RelationshipType","x-enum-keys":[]},"twoWay":{"type":"boolean","description":"Is Two Way?","x-example":false},"key":{"type":"string","description":"Attribute Key.","x-example":null},"twoWayKey":{"type":"string","description":"Two Way Attribute Key.","x-example":null},"onDelete":{"type":"string","description":"Constraints option","x-example":"cascade","enum":["cascade","restrict","setNull"],"x-enum-name":"RelationMutate","x-enum-keys":[]}},"required":["relatedCollectionId","type"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create string attribute","operationId":"databasesCreateStringAttribute","tags":["databases"],"description":"Create a string attribute.\n","responses":{"202":{"description":"AttributeString","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeString"}}}}},"x-appwrite":{"method":"createStringAttribute","weight":65,"cookies":false,"type":"","demo":"databases\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"size":{"type":"integer","description":"Attribute size for text attributes, in number of characters.","x-example":1},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false},"encrypt":{"type":"boolean","description":"Toggle encryption for the attribute. Encryption enhances security by not storing any plain text values in the database. However, encrypted attributes cannot be queried.","x-example":false}},"required":["key","size","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/string\/{key}":{"patch":{"summary":"Update string attribute","operationId":"databasesUpdateStringAttribute","tags":["databases"],"description":"Update a string attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeString","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeString"}}}}},"x-appwrite":{"method":"updateStringAttribute","weight":77,"cookies":false,"type":"","demo":"databases\/update-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"[DEFAULT]","x-nullable":true}},"required":["required","default"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL attribute","operationId":"databasesCreateUrlAttribute","tags":["databases"],"description":"Create a URL attribute.\n","responses":{"202":{"description":"AttributeURL","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeUrl"}}}}},"x-appwrite":{"method":"createUrlAttribute","weight":69,"cookies":false,"type":"","demo":"databases\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"https:\/\/example.com"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url\/{key}":{"patch":{"summary":"Update URL attribute","operationId":"databasesUpdateUrlAttribute","tags":["databases"],"description":"Update an url attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeURL","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeUrl"}}}}},"x-appwrite":{"method":"updateUrlAttribute","weight":81,"cookies":false,"type":"","demo":"databases\/update-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"https:\/\/example.com","x-nullable":true}},"required":["required","default"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get attribute","operationId":"databasesGetAttribute","tags":["databases"],"description":"","responses":{"200":{"description":"AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, or AttributeDatetime, or AttributeRelationship, or AttributeString","content":{"application\/json":{"schema":{"oneOf":[{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeRelationship"},{"$ref":"#\/components\/schemas\/attributeString"}]}}}}},"x-appwrite":{"method":"getAttribute","weight":76,"cookies":false,"type":"","demo":"databases\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}]},"delete":{"summary":"Delete attribute","operationId":"databasesDeleteAttribute","tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":87,"cookies":false,"type":"","demo":"databases\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/{key}\/relationship":{"patch":{"summary":"Update relationship attribute","operationId":"databasesUpdateRelationshipAttribute","tags":["databases"],"description":"Update relationship attribute. [Learn more about relationship attributes](https:\/\/appwrite.io\/docs\/databases-relationships#relationship-attributes).\n","responses":{"200":{"description":"AttributeRelationship","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeRelationship"}}}}},"x-appwrite":{"method":"updateRelationshipAttribute","weight":86,"cookies":false,"type":"","demo":"databases\/update-relationship-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-relationship-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"onDelete":{"type":"string","description":"Constraints option","x-example":"cascade","enum":["cascade","restrict","setNull"],"x-enum-name":"RelationMutate","x-enum-keys":[]}}}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List documents","operationId":"databasesListDocuments","tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/documentList"}}}}},"x-appwrite":{"method":"listDocuments","weight":93,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"post":{"summary":"Create document","operationId":"databasesCreateDocument","tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"createDocument","weight":92,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, only the current user is granted all permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get document","operationId":"databasesGetDocument","tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"getDocument","weight":94,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only method allowed is select.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"patch":{"summary":"Update document","operationId":"databasesUpdateDocument","tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"updateDocument","weight":96,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete document","operationId":"databasesDeleteDocument","tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":97,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes":{"get":{"summary":"List indexes","operationId":"databasesListIndexes","tags":["databases"],"description":"","responses":{"200":{"description":"Indexes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/indexList"}}}}},"x-appwrite":{"method":"listIndexes","weight":89,"cookies":false,"type":"","demo":"databases\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: key, type, status, attributes, error","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"post":{"summary":"Create index","operationId":"databasesCreateIndex","tags":["databases"],"description":"","responses":{"202":{"description":"Index","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/index"}}}}},"x-appwrite":{"method":"createIndex","weight":88,"cookies":false,"type":"","demo":"databases\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Index Key.","x-example":null},"type":{"type":"string","description":"Index type.","x-example":"key","enum":["key","fulltext","unique","spatial","array"],"x-enum-name":"IndexType","x-enum-keys":[]},"attributes":{"type":"array","description":"Array of attributes to index. Maximum of 100 attributes are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders. Maximum of 100 orders are allowed.","x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get index","operationId":"databasesGetIndex","tags":["databases"],"description":"","responses":{"200":{"description":"Index","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/index"}}}}},"x-appwrite":{"method":"getIndex","weight":90,"cookies":false,"type":"","demo":"databases\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Index Key.","required":true,"schema":{"type":"string"},"in":"path"}]},"delete":{"summary":"Delete index","operationId":"databasesDeleteIndex","tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":91,"cookies":false,"type":"","demo":"databases\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Index Key.","required":true,"schema":{"type":"string"},"in":"path"}]}},"\/functions":{"get":{"summary":"List functions","operationId":"functionsList","tags":["functions"],"description":"Get a list of all the project's functions. You can use the query params to filter your results.","responses":{"200":{"description":"Functions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/functionList"}}}}},"x-appwrite":{"method":"list","weight":253,"cookies":false,"type":"","demo":"functions\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-functions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, runtime, deployment, schedule, scheduleNext, schedulePrevious, timeout, entrypoint, commands, installationId","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create function","operationId":"functionsCreate","tags":["functions"],"description":"Create a new function. You can pass a list of [permissions](https:\/\/appwrite.io\/docs\/permissions) to allow different project users or team with access to execute the function using the client API.","responses":{"201":{"description":"Function","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/function"}}}}},"x-appwrite":{"method":"create","weight":252,"cookies":false,"type":"","demo":"functions\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"functionId":{"type":"string","description":"Function ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[FUNCTION_ID]"},"name":{"type":"string","description":"Function name. Max length: 128 chars.","x-example":"[NAME]"},"runtime":{"type":"string","description":"Execution runtime.","x-example":"node-18.0","enum":["node-18.0","php-8.0","ruby-3.1","python-3.9"],"x-enum-name":null,"x-enum-keys":[]},"execute":{"type":"array","description":"An array of role strings with execution permissions. By default no user is granted with any execute permissions. [learn more about roles](https:\/\/appwrite.io\/docs\/permissions#permission-roles). Maximum of 100 roles are allowed, each 64 characters long.","x-example":"[\"any\"]","items":{"type":"string"}},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","x-example":null},"timeout":{"type":"integer","description":"Function maximum execution time in seconds.","x-example":1},"enabled":{"type":"boolean","description":"Is function enabled? When set to 'disabled', users cannot access the function but Server SDKs with and API key can still access the function. No data is lost when this is toggled.","x-example":false},"logging":{"type":"boolean","description":"Whether executions will be logged. When set to false, executions will not be logged, but will reduce resource used by your Appwrite project.","x-example":false},"entrypoint":{"type":"string","description":"Entrypoint File. This path is relative to the \"providerRootDirectory\".","x-example":"[ENTRYPOINT]"},"commands":{"type":"string","description":"Build Commands.","x-example":"[COMMANDS]"},"installationId":{"type":"string","description":"Appwrite Installation ID for VCS (Version Control System) deployment.","x-example":"[INSTALLATION_ID]"},"providerRepositoryId":{"type":"string","description":"Repository ID of the repo linked to the function.","x-example":"[PROVIDER_REPOSITORY_ID]"},"providerBranch":{"type":"string","description":"Production branch for the repo linked to the function.","x-example":"[PROVIDER_BRANCH]"},"providerSilentMode":{"type":"boolean","description":"Is the VCS (Version Control System) connection in silent mode for the repo linked to the function? In silent mode, comments will not be made on commits and pull requests.","x-example":false},"providerRootDirectory":{"type":"string","description":"Path to function code in the linked repo.","x-example":"[PROVIDER_ROOT_DIRECTORY]"},"templateRepository":{"type":"string","description":"Repository name of the template.","x-example":"[TEMPLATE_REPOSITORY]"},"templateOwner":{"type":"string","description":"The name of the owner of the template.","x-example":"[TEMPLATE_OWNER]"},"templateRootDirectory":{"type":"string","description":"Path to function code in the template repo.","x-example":"[TEMPLATE_ROOT_DIRECTORY]"},"templateBranch":{"type":"string","description":"Production branch for the repo linked to the function template.","x-example":"[TEMPLATE_BRANCH]"}},"required":["functionId","name","runtime"]}}}}}},"\/functions\/runtimes":{"get":{"summary":"List runtimes","operationId":"functionsListRuntimes","tags":["functions"],"description":"Get a list of all runtimes that are currently active on your instance.","responses":{"200":{"description":"Runtimes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/runtimeList"}}}}},"x-appwrite":{"method":"listRuntimes","weight":254,"cookies":false,"type":"","demo":"functions\/list-runtimes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-runtimes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/functions\/{functionId}":{"get":{"summary":"Get function","operationId":"functionsGet","tags":["functions"],"description":"Get a function by its unique ID.","responses":{"200":{"description":"Function","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/function"}}}}},"x-appwrite":{"method":"get","weight":255,"cookies":false,"type":"","demo":"functions\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}]},"put":{"summary":"Update function","operationId":"functionsUpdate","tags":["functions"],"description":"Update function by its unique ID.","responses":{"200":{"description":"Function","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/function"}}}}},"x-appwrite":{"method":"update","weight":258,"cookies":false,"type":"","demo":"functions\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Function name. Max length: 128 chars.","x-example":"[NAME]"},"runtime":{"type":"string","description":"Execution runtime.","x-example":"node-18.0","enum":["node-18.0","php-8.0","ruby-3.1","python-3.9"],"x-enum-name":null,"x-enum-keys":[]},"execute":{"type":"array","description":"An array of role strings with execution permissions. By default no user is granted with any execute permissions. [learn more about roles](https:\/\/appwrite.io\/docs\/permissions#permission-roles). Maximum of 100 roles are allowed, each 64 characters long.","x-example":"[\"any\"]","items":{"type":"string"}},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","x-example":null},"timeout":{"type":"integer","description":"Maximum execution time in seconds.","x-example":1},"enabled":{"type":"boolean","description":"Is function enabled? When set to 'disabled', users cannot access the function but Server SDKs with and API key can still access the function. No data is lost when this is toggled.","x-example":false},"logging":{"type":"boolean","description":"Whether executions will be logged. When set to false, executions will not be logged, but will reduce resource used by your Appwrite project.","x-example":false},"entrypoint":{"type":"string","description":"Entrypoint File. This path is relative to the \"providerRootDirectory\".","x-example":"[ENTRYPOINT]"},"commands":{"type":"string","description":"Build Commands.","x-example":"[COMMANDS]"},"installationId":{"type":"string","description":"Appwrite Installation ID for VCS (Version Controle System) deployment.","x-example":"[INSTALLATION_ID]"},"providerRepositoryId":{"type":"string","description":"Repository ID of the repo linked to the function","x-example":"[PROVIDER_REPOSITORY_ID]"},"providerBranch":{"type":"string","description":"Production branch for the repo linked to the function","x-example":"[PROVIDER_BRANCH]"},"providerSilentMode":{"type":"boolean","description":"Is the VCS (Version Control System) connection in silent mode for the repo linked to the function? In silent mode, comments will not be made on commits and pull requests.","x-example":false},"providerRootDirectory":{"type":"string","description":"Path to function code in the linked repo.","x-example":"[PROVIDER_ROOT_DIRECTORY]"}},"required":["name"]}}}}},"delete":{"summary":"Delete function","operationId":"functionsDelete","tags":["functions"],"description":"Delete a function by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":261,"cookies":false,"type":"","demo":"functions\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/deployments":{"get":{"summary":"List deployments","operationId":"functionsListDeployments","tags":["functions"],"description":"Get a list of all the project's code deployments. You can use the query params to filter your results.","responses":{"200":{"description":"Deployments List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deploymentList"}}}}},"x-appwrite":{"method":"listDeployments","weight":263,"cookies":false,"type":"","demo":"functions\/list-deployments.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-deployments.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: size, buildId, activate, entrypoint, commands","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create deployment","operationId":"functionsCreateDeployment","tags":["functions"],"description":"Create a new function code deployment. Use this endpoint to upload a new version of your code function. To execute your newly uploaded code, you'll need to update the function's deployment to use your new deployment UID.\n\nThis endpoint accepts a tar.gz file compressed with your code. Make sure to include any dependencies your code has within the compressed file. You can learn more about code packaging in the [Appwrite Cloud Functions tutorial](https:\/\/appwrite.io\/docs\/functions).\n\nUse the \"command\" param to set the entrypoint used to execute your code.","responses":{"202":{"description":"Deployment","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deployment"}}}}},"x-appwrite":{"method":"createDeployment","weight":262,"cookies":false,"type":"","demo":"functions\/create-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":true,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}],"requestBody":{"content":{"multipart\/form-data":{"schema":{"type":"object","properties":{"entrypoint":{"type":"string","description":"Entrypoint File.","x-example":"[ENTRYPOINT]"},"commands":{"type":"string","description":"Build Commands.","x-example":"[COMMANDS]"},"code":{"type":"string","description":"Gzip file with your code package. When used with the Appwrite CLI, pass the path to your code directory, and the CLI will automatically package your code. Use a path that is within the current directory.","x-example":null},"activate":{"type":"boolean","description":"Automatically activate the deployment when it is finished building.","x-example":false}},"required":["code","activate"]}}}}}},"\/functions\/{functionId}\/deployments\/{deploymentId}":{"get":{"summary":"Get deployment","operationId":"functionsGetDeployment","tags":["functions"],"description":"Get a code deployment by its unique ID.","responses":{"200":{"description":"Deployment","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deployment"}}}}},"x-appwrite":{"method":"getDeployment","weight":264,"cookies":false,"type":"","demo":"functions\/get-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"schema":{"type":"string","x-example":"[DEPLOYMENT_ID]"},"in":"path"}]},"patch":{"summary":"Update function deployment","operationId":"functionsUpdateDeployment","tags":["functions"],"description":"Update the function code deployment ID using the unique function ID. Use this endpoint to switch the code deployment that should be executed by the execution endpoint.","responses":{"200":{"description":"Function","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/function"}}}}},"x-appwrite":{"method":"updateDeployment","weight":260,"cookies":false,"type":"","demo":"functions\/update-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-function-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"schema":{"type":"string","x-example":"[DEPLOYMENT_ID]"},"in":"path"}]},"delete":{"summary":"Delete deployment","operationId":"functionsDeleteDeployment","tags":["functions"],"description":"Delete a code deployment by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDeployment","weight":265,"cookies":false,"type":"","demo":"functions\/delete-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"schema":{"type":"string","x-example":"[DEPLOYMENT_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/deployments\/{deploymentId}\/builds\/{buildId}":{"post":{"summary":"Create build","operationId":"functionsCreateBuild","tags":["functions"],"description":"Create a new build for an Appwrite Function deployment. This endpoint can be used to retry a failed build.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"createBuild","weight":266,"cookies":false,"type":"","demo":"functions\/create-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"schema":{"type":"string","x-example":"[DEPLOYMENT_ID]"},"in":"path"},{"name":"buildId","description":"Build unique ID.","required":true,"schema":{"type":"string","x-example":"[BUILD_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/deployments\/{deploymentId}\/download":{"get":{"summary":"Download Deployment","operationId":"functionsDownloadDeployment","tags":["functions"],"description":"Get a Deployment's contents by its unique ID. This endpoint supports range requests for partial or streaming file download.","responses":{"200":{"description":"File"}},"x-appwrite":{"method":"downloadDeployment","weight":259,"cookies":false,"type":"location","demo":"functions\/download-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/download-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"schema":{"type":"string","x-example":"[DEPLOYMENT_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List executions","operationId":"functionsListExecutions","tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/executionList"}}}}},"x-appwrite":{"method":"listExecutions","weight":268,"cookies":false,"type":"","demo":"functions\/list-executions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-executions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, responseStatusCode, duration","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create execution","operationId":"functionsCreateExecution","tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/execution"}}}}},"x-appwrite":{"method":"createExecution","weight":267,"cookies":false,"type":"","demo":"functions\/create-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-execution.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"body":{"type":"string","description":"HTTP body of execution. Default value is empty string.","x-example":"[BODY]"},"async":{"type":"boolean","description":"Execute code in the background. Default value is false.","x-example":false},"path":{"type":"string","description":"HTTP path of execution. Path can include query params. Default value is \/","x-example":"[PATH]"},"method":{"type":"string","description":"HTTP method of execution. Default value is GET.","x-example":"GET","enum":["GET","POST","PUT","PATCH","DELETE","OPTIONS"],"x-enum-name":null,"x-enum-keys":[]},"headers":{"type":"object","description":"HTTP headers of execution. Defaults to empty.","x-example":"{}"}}}}}}}},"\/functions\/{functionId}\/executions\/{executionId}":{"get":{"summary":"Get execution","operationId":"functionsGetExecution","tags":["functions"],"description":"Get a function execution log by its unique ID.","responses":{"200":{"description":"Execution","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/execution"}}}}},"x-appwrite":{"method":"getExecution","weight":269,"cookies":false,"type":"","demo":"functions\/get-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-execution.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"executionId","description":"Execution ID.","required":true,"schema":{"type":"string","x-example":"[EXECUTION_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/variables":{"get":{"summary":"List variables","operationId":"functionsListVariables","tags":["functions"],"description":"Get a list of all variables of a specific function.","responses":{"200":{"description":"Variables List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variableList"}}}}},"x-appwrite":{"method":"listVariables","weight":271,"cookies":false,"type":"","demo":"functions\/list-variables.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-variables.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}]},"post":{"summary":"Create variable","operationId":"functionsCreateVariable","tags":["functions"],"description":"Create a new function environment variable. These variables can be accessed in the function at runtime as environment variables.","responses":{"201":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"createVariable","weight":270,"cookies":false,"type":"","demo":"functions\/create-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","x-example":"[VALUE]"}},"required":["key","value"]}}}}}},"\/functions\/{functionId}\/variables\/{variableId}":{"get":{"summary":"Get variable","operationId":"functionsGetVariable","tags":["functions"],"description":"Get a variable by its unique ID.","responses":{"200":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"getVariable","weight":272,"cookies":false,"type":"","demo":"functions\/get-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}]},"put":{"summary":"Update variable","operationId":"functionsUpdateVariable","tags":["functions"],"description":"Update variable by its unique ID.","responses":{"200":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"updateVariable","weight":273,"cookies":false,"type":"","demo":"functions\/update-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","x-example":"[VALUE]"}},"required":["key"]}}}}},"delete":{"summary":"Delete variable","operationId":"functionsDeleteVariable","tags":["functions"],"description":"Delete a variable by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteVariable","weight":274,"cookies":false,"type":"","demo":"functions\/delete-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}]}},"\/graphql":{"post":{"summary":"GraphQL endpoint","operationId":"graphqlQuery","tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/any"}}}}},"x-appwrite":{"method":"query","weight":289,"cookies":false,"type":"graphql","demo":"graphql\/query.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"Session":[],"JWT":[]}]}},"\/graphql\/mutation":{"post":{"summary":"GraphQL endpoint","operationId":"graphqlMutation","tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/any"}}}}},"x-appwrite":{"method":"mutation","weight":288,"cookies":false,"type":"graphql","demo":"graphql\/mutation.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"Session":[],"JWT":[]}]}},"\/health":{"get":{"summary":"Get HTTP","operationId":"healthGet","tags":["health"],"description":"Check the Appwrite HTTP server is up and responsive.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"get","weight":109,"cookies":false,"type":"","demo":"health\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/anti-virus":{"get":{"summary":"Get antivirus","operationId":"healthGetAntivirus","tags":["health"],"description":"Check the Appwrite Antivirus server is up and connection is successful.","responses":{"200":{"description":"Health Antivirus","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthAntivirus"}}}}},"x-appwrite":{"method":"getAntivirus","weight":127,"cookies":false,"type":"","demo":"health\/get-antivirus.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-storage-anti-virus.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/cache":{"get":{"summary":"Get cache","operationId":"healthGetCache","tags":["health"],"description":"Check the Appwrite in-memory cache servers are up and connection is successful.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"getCache","weight":112,"cookies":false,"type":"","demo":"health\/get-cache.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-cache.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/db":{"get":{"summary":"Get DB","operationId":"healthGetDB","tags":["health"],"description":"Check the Appwrite database servers are up and connection is successful.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"getDB","weight":111,"cookies":false,"type":"","demo":"health\/get-d-b.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-db.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/pubsub":{"get":{"summary":"Get pubsub","operationId":"healthGetPubSub","tags":["health"],"description":"Check the Appwrite pub-sub servers are up and connection is successful.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"getPubSub","weight":114,"cookies":false,"type":"","demo":"health\/get-pub-sub.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-pubsub.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/queue":{"get":{"summary":"Get queue","operationId":"healthGetQueue","tags":["health"],"description":"Check the Appwrite queue messaging servers are up and connection is successful.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"getQueue","weight":113,"cookies":false,"type":"","demo":"health\/get-queue.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/queue\/builds":{"get":{"summary":"Get builds queue","operationId":"healthGetQueueBuilds","tags":["health"],"description":"Get the number of builds that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueBuilds","weight":119,"cookies":false,"type":"","demo":"health\/get-queue-builds.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-builds.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/certificates":{"get":{"summary":"Get certificates queue","operationId":"healthGetQueueCertificates","tags":["health"],"description":"Get the number of certificates that are waiting to be issued against [Letsencrypt](https:\/\/letsencrypt.org\/) in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueCertificates","weight":118,"cookies":false,"type":"","demo":"health\/get-queue-certificates.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-certificates.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/databases":{"get":{"summary":"Get databases queue","operationId":"healthGetQueueDatabases","tags":["health"],"description":"Get the number of database changes that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueDatabases","weight":120,"cookies":false,"type":"","demo":"health\/get-queue-databases.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-databases.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"name","description":"Queue name for which to check the queue size","required":false,"schema":{"type":"string","x-example":"[NAME]","default":"database_db_main"},"in":"query"},{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/deletes":{"get":{"summary":"Get deletes queue","operationId":"healthGetQueueDeletes","tags":["health"],"description":"Get the number of background destructive changes that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueDeletes","weight":121,"cookies":false,"type":"","demo":"health\/get-queue-deletes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-deletes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/functions":{"get":{"summary":"Get functions queue","operationId":"healthGetQueueFunctions","tags":["health"],"description":"","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueFunctions","weight":125,"cookies":false,"type":"","demo":"health\/get-queue-functions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-functions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/logs":{"get":{"summary":"Get logs queue","operationId":"healthGetQueueLogs","tags":["health"],"description":"Get the number of logs that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueLogs","weight":117,"cookies":false,"type":"","demo":"health\/get-queue-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/mails":{"get":{"summary":"Get mails queue","operationId":"healthGetQueueMails","tags":["health"],"description":"Get the number of mails that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueMails","weight":122,"cookies":false,"type":"","demo":"health\/get-queue-mails.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-mails.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/messaging":{"get":{"summary":"Get messaging queue","operationId":"healthGetQueueMessaging","tags":["health"],"description":"Get the number of messages that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueMessaging","weight":123,"cookies":false,"type":"","demo":"health\/get-queue-messaging.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-messaging.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/migrations":{"get":{"summary":"Get migrations queue","operationId":"healthGetQueueMigrations","tags":["health"],"description":"Get the number of migrations that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueMigrations","weight":124,"cookies":false,"type":"","demo":"health\/get-queue-migrations.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-migrations.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/webhooks":{"get":{"summary":"Get webhooks queue","operationId":"healthGetQueueWebhooks","tags":["health"],"description":"Get the number of webhooks that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueWebhooks","weight":116,"cookies":false,"type":"","demo":"health\/get-queue-webhooks.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-webhooks.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/storage\/local":{"get":{"summary":"Get local storage","operationId":"healthGetStorageLocal","tags":["health"],"description":"Check the Appwrite local storage device is up and connection is successful.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"getStorageLocal","weight":126,"cookies":false,"type":"","demo":"health\/get-storage-local.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-storage-local.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/time":{"get":{"summary":"Get time","operationId":"healthGetTime","tags":["health"],"description":"Check the Appwrite server time is synced with Google remote NTP server. We use this technology to smoothly handle leap seconds with no disruptive events. The [Network Time Protocol](https:\/\/en.wikipedia.org\/wiki\/Network_Time_Protocol) (NTP) is used by hundreds of millions of computers and devices to synchronize their clocks over the Internet. If your computer sets its own clock, it likely uses NTP.","responses":{"200":{"description":"Health Time","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthTime"}}}}},"x-appwrite":{"method":"getTime","weight":115,"cookies":false,"type":"","demo":"health\/get-time.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-time.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/locale":{"get":{"summary":"Get user locale","operationId":"localeGet","tags":["locale"],"description":"Get the current user location based on IP. Returns an object with user country code, country name, continent name, continent code, ip address and suggested currency. You can use the locale header to get the data in a supported language.\n\n([IP Geolocation by DB-IP](https:\/\/db-ip.com))","responses":{"200":{"description":"Locale","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/locale"}}}}},"x-appwrite":{"method":"get","weight":101,"cookies":false,"type":"","demo":"locale\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-locale.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/localed","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}]}},"\/locale\/codes":{"get":{"summary":"List Locale Codes","operationId":"localeListCodes","tags":["locale"],"description":"List of all locale codes in [ISO 639-1](https:\/\/en.wikipedia.org\/wiki\/List_of_ISO_639-1_codes).","responses":{"200":{"description":"Locale codes list","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/localeCodeList"}}}}},"x-appwrite":{"method":"listCodes","weight":102,"cookies":false,"type":"","demo":"locale\/list-codes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-locale-codes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/localeCode","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}]}},"\/locale\/continents":{"get":{"summary":"List continents","operationId":"localeListContinents","tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/continentList"}}}}},"x-appwrite":{"method":"listContinents","weight":106,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/continents","offline-key":"","offline-response-key":"code","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List countries","operationId":"localeListCountries","tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountries","weight":103,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/countries","offline-key":"","offline-response-key":"code","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU countries","operationId":"localeListCountriesEU","tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountriesEU","weight":104,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/countries\/eu","offline-key":"","offline-response-key":"code","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List countries phone codes","operationId":"localeListCountriesPhones","tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/phoneList"}}}}},"x-appwrite":{"method":"listCountriesPhones","weight":105,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/countries\/phones","offline-key":"","offline-response-key":"countryCode","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List currencies","operationId":"localeListCurrencies","tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/currencyList"}}}}},"x-appwrite":{"method":"listCurrencies","weight":107,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/currencies","offline-key":"","offline-response-key":"code","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List languages","operationId":"localeListLanguages","tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/languageList"}}}}},"x-appwrite":{"method":"listLanguages","weight":108,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/languages","offline-key":"","offline-response-key":"code","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}]}},"\/messaging\/messages":{"get":{"summary":"List messages","operationId":"messagingListMessages","tags":["messaging"],"description":"","responses":{"200":{"description":"Message list","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/messageList"}}}}},"x-appwrite":{"method":"listMessages","weight":346,"cookies":false,"type":"","demo":"messaging\/list-messages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-messages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: scheduledAt, deliveredAt, deliveredTotal, status, description, providerType","required":false,"schema":{"type":"string","default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]}},"\/messaging\/messages\/email":{"post":{"summary":"Create an email.","operationId":"messagingCreateEmail","tags":["messaging"],"description":"","responses":{"201":{"description":"Message","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/message"}}}}},"x-appwrite":{"method":"createEmail","weight":343,"cookies":false,"type":"","demo":"messaging\/create-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"messageId":{"type":"string","description":"Message ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[MESSAGE_ID]"},"subject":{"type":"string","description":"Email Subject.","x-example":"[SUBJECT]"},"content":{"type":"string","description":"Email Content.","x-example":"[CONTENT]"},"topics":{"type":"array","description":"List of Topic IDs.","x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","x-example":null,"items":{"type":"string"}},"cc":{"type":"array","description":"Array of target IDs to be added as CC.","x-example":null,"items":{"type":"string"}},"bcc":{"type":"array","description":"Array of target IDs to be added as BCC.","x-example":null,"items":{"type":"string"}},"description":{"type":"string","description":"Description for message.","x-example":"[DESCRIPTION]"},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":null,"x-enum-keys":[]},"html":{"type":"boolean","description":"Is content of type HTML","x-example":false},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","x-example":null}},"required":["messageId","subject","content"]}}}}}},"\/messaging\/messages\/email\/{messageId}":{"patch":{"summary":"Update an email.","operationId":"messagingUpdateEmail","tags":["messaging"],"description":"","responses":{"200":{"description":"Message","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/message"}}}}},"x-appwrite":{"method":"updateEmail","weight":350,"cookies":false,"type":"","demo":"messaging\/update-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"schema":{"type":"string","x-example":"[MESSAGE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"topics":{"type":"array","description":"List of Topic IDs.","x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","x-example":null,"items":{"type":"string"}},"subject":{"type":"string","description":"Email Subject.","x-example":"[SUBJECT]"},"description":{"type":"string","description":"Description for Message.","x-example":"[DESCRIPTION]"},"content":{"type":"string","description":"Email Content.","x-example":"[CONTENT]"},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":null,"x-enum-keys":[]},"html":{"type":"boolean","description":"Is content of type HTML","x-example":false},"cc":{"type":"array","description":"Array of target IDs to be added as CC.","x-example":null,"items":{"type":"string"}},"bcc":{"type":"array","description":"Array of target IDs to be added as BCC.","x-example":null,"items":{"type":"string"}},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","x-example":null}}}}}}}},"\/messaging\/messages\/push":{"post":{"summary":"Create a push notification.","operationId":"messagingCreatePush","tags":["messaging"],"description":"","responses":{"201":{"description":"Message","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/message"}}}}},"x-appwrite":{"method":"createPush","weight":345,"cookies":false,"type":"","demo":"messaging\/create-push.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-push-notification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"messageId":{"type":"string","description":"Message ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[MESSAGE_ID]"},"title":{"type":"string","description":"Title for push notification.","x-example":"[TITLE]"},"body":{"type":"string","description":"Body for push notification.","x-example":"[BODY]"},"topics":{"type":"array","description":"List of Topic IDs.","x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","x-example":null,"items":{"type":"string"}},"description":{"type":"string","description":"Description for Message.","x-example":"[DESCRIPTION]"},"data":{"type":"object","description":"Additional Data for push notification.","x-example":"{}"},"action":{"type":"string","description":"Action for push notification.","x-example":"[ACTION]"},"icon":{"type":"string","description":"Icon for push notification. Available only for Android and Web Platform.","x-example":"[ICON]"},"sound":{"type":"string","description":"Sound for push notification. Available only for Android and IOS Platform.","x-example":"[SOUND]"},"color":{"type":"string","description":"Color for push notification. Available only for Android Platform.","x-example":"[COLOR]"},"tag":{"type":"string","description":"Tag for push notification. Available only for Android Platform.","x-example":"[TAG]"},"badge":{"type":"string","description":"Badge for push notification. Available only for IOS Platform.","x-example":"[BADGE]"},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":null,"x-enum-keys":[]},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","x-example":null}},"required":["messageId","title","body"]}}}}}},"\/messaging\/messages\/push\/{messageId}":{"patch":{"summary":"Update a push notification.","operationId":"messagingUpdatePushNotification","tags":["messaging"],"description":"","responses":{"200":{"description":"Message","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/message"}}}}},"x-appwrite":{"method":"updatePushNotification","weight":352,"cookies":false,"type":"","demo":"messaging\/update-push-notification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-push-notification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"schema":{"type":"string","x-example":"[MESSAGE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"topics":{"type":"array","description":"List of Topic IDs.","x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","x-example":null,"items":{"type":"string"}},"description":{"type":"string","description":"Description for Message.","x-example":"[DESCRIPTION]"},"title":{"type":"string","description":"Title for push notification.","x-example":"[TITLE]"},"body":{"type":"string","description":"Body for push notification.","x-example":"[BODY]"},"data":{"type":"object","description":"Additional Data for push notification.","x-example":"{}"},"action":{"type":"string","description":"Action for push notification.","x-example":"[ACTION]"},"icon":{"type":"string","description":"Icon for push notification. Available only for Android and Web platforms.","x-example":"[ICON]"},"sound":{"type":"string","description":"Sound for push notification. Available only for Android and iOS platforms.","x-example":"[SOUND]"},"color":{"type":"string","description":"Color for push notification. Available only for Android platforms.","x-example":"[COLOR]"},"tag":{"type":"string","description":"Tag for push notification. Available only for Android platforms.","x-example":"[TAG]"},"badge":{"type":"integer","description":"Badge for push notification. Available only for iOS platforms.","x-example":null},"status":{"type":"string","description":"Message Status. Value must be either draft, cancelled, or processing.","x-example":"draft","enum":["draft","cancelled","processing"],"x-enum-name":null,"x-enum-keys":[]},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","x-example":null}}}}}}}},"\/messaging\/messages\/sms":{"post":{"summary":"Create an SMS.","operationId":"messagingCreateSMS","tags":["messaging"],"description":"","responses":{"201":{"description":"Message","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/message"}}}}},"x-appwrite":{"method":"createSMS","weight":344,"cookies":false,"type":"","demo":"messaging\/create-s-m-s.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-sms.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"messageId":{"type":"string","description":"Message ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[MESSAGE_ID]"},"content":{"type":"string","description":"SMS Content.","x-example":"[CONTENT]"},"topics":{"type":"array","description":"List of Topic IDs.","x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","x-example":null,"items":{"type":"string"}},"description":{"type":"string","description":"Description for Message.","x-example":"[DESCRIPTION]"},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":null,"x-enum-keys":[]},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","x-example":null}},"required":["messageId","content"]}}}}}},"\/messaging\/messages\/sms\/{messageId}":{"patch":{"summary":"Update an SMS.","operationId":"messagingUpdateSMS","tags":["messaging"],"description":"","responses":{"200":{"description":"Message","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/message"}}}}},"x-appwrite":{"method":"updateSMS","weight":351,"cookies":false,"type":"","demo":"messaging\/update-s-m-s.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"schema":{"type":"string","x-example":"[MESSAGE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"topics":{"type":"array","description":"List of Topic IDs.","x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","x-example":null,"items":{"type":"string"}},"description":{"type":"string","description":"Description for Message.","x-example":"[DESCRIPTION]"},"content":{"type":"string","description":"Email Content.","x-example":"[CONTENT]"},"status":{"type":"string","description":"Message Status. Value must be either draft or cancelled or processing.","x-example":"draft","enum":["draft","cancelled","processing"],"x-enum-name":null,"x-enum-keys":[]},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","x-example":null}}}}}}}},"\/messaging\/messages\/{messageId}":{"get":{"summary":"Get a message","operationId":"messagingGetMessage","tags":["messaging"],"description":"","responses":{"200":{"description":"Message","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/message"}}}}},"x-appwrite":{"method":"getMessage","weight":349,"cookies":false,"type":"","demo":"messaging\/get-message.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/get-message.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"schema":{"type":"string","x-example":"[MESSAGE_ID]"},"in":"path"}]}},"\/messaging\/messages\/{messageId}\/logs":{"get":{"summary":"List message logs","operationId":"messagingListMessageLogs","tags":["messaging"],"description":"","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listMessageLogs","weight":347,"cookies":false,"type":"","demo":"messaging\/list-message-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/messages\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"schema":{"type":"string","x-example":"[MESSAGE_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/messaging\/messages\/{messageId}\/targets":{"get":{"summary":"List message targets","operationId":"messagingListTargets","tags":["messaging"],"description":"List the targets associated with a message as set via the targets attribute.","responses":{"200":{"description":"Target list","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/targetList"}}}}},"x-appwrite":{"method":"listTargets","weight":348,"cookies":false,"type":"","demo":"messaging\/list-targets.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-message-targets.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"schema":{"type":"string","x-example":"[MESSAGE_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, providerId, identifier, providerType","required":false,"schema":{"type":"string","default":[]},"in":"query"}]}},"\/messaging\/providers":{"get":{"summary":"List providers","operationId":"messagingListProviders","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider list","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/providerList"}}}}},"x-appwrite":{"method":"listProviders","weight":319,"cookies":false,"type":"","demo":"messaging\/list-providers.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-providers.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, provider, type, enabled","required":false,"schema":{"type":"string","default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]}},"\/messaging\/providers\/apns":{"post":{"summary":"Create APNS provider","operationId":"messagingCreateAPNSProvider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createAPNSProvider","weight":318,"cookies":false,"type":"","demo":"messaging\/create-a-p-n-s-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-apns-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"authKey":{"type":"string","description":"APNS authentication key.","x-example":"[AUTH_KEY]"},"authKeyId":{"type":"string","description":"APNS authentication key ID.","x-example":"[AUTH_KEY_ID]"},"teamId":{"type":"string","description":"APNS team ID.","x-example":"[TEAM_ID]"},"bundleId":{"type":"string","description":"APNS bundle ID.","x-example":"[BUNDLE_ID]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name"]}}}}}},"\/messaging\/providers\/apns\/{providerId}":{"patch":{"summary":"Update APNS provider","operationId":"messagingUpdateAPNSProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateAPNSProvider","weight":330,"cookies":false,"type":"","demo":"messaging\/update-a-p-n-s-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-apns-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"authKey":{"type":"string","description":"APNS authentication key.","x-example":"[AUTH_KEY]"},"authKeyId":{"type":"string","description":"APNS authentication key ID.","x-example":"[AUTH_KEY_ID]"},"teamId":{"type":"string","description":"APNS team ID.","x-example":"[TEAM_ID]"},"bundleId":{"type":"string","description":"APNS bundle ID.","x-example":"[BUNDLE_ID]"}}}}}}}},"\/messaging\/providers\/fcm":{"post":{"summary":"Create FCM provider","operationId":"messagingCreateFCMProvider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createFCMProvider","weight":317,"cookies":false,"type":"","demo":"messaging\/create-f-c-m-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-fcm-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"serviceAccountJSON":{"type":"object","description":"FCM service account JSON.","x-example":"{}"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name"]}}}}}},"\/messaging\/providers\/fcm\/{providerId}":{"patch":{"summary":"Update FCM provider","operationId":"messagingUpdateFCMProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateFCMProvider","weight":329,"cookies":false,"type":"","demo":"messaging\/update-f-c-m-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-fcm-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"serviceAccountJSON":{"type":"object","description":"FCM service account JSON.","x-example":"{}"}}}}}}}},"\/messaging\/providers\/mailgun":{"post":{"summary":"Create Mailgun provider","operationId":"messagingCreateMailgunProvider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createMailgunProvider","weight":310,"cookies":false,"type":"","demo":"messaging\/create-mailgun-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-mailgun-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"apiKey":{"type":"string","description":"Mailgun API Key.","x-example":"[API_KEY]"},"domain":{"type":"string","description":"Mailgun Domain.","x-example":"[DOMAIN]"},"isEuRegion":{"type":"boolean","description":"Set as EU region.","x-example":false},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"fromName":{"type":"string","description":"Sender Name.","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the reply to field for the mail. Default value is sender name. Reply to name must have reply to email as well.","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the reply to field for the mail. Default value is sender email. Reply to email must have reply to name as well.","x-example":"[REPLY_TO_EMAIL]"}},"required":["providerId","name"]}}}}}},"\/messaging\/providers\/mailgun\/{providerId}":{"patch":{"summary":"Update Mailgun provider","operationId":"messagingUpdateMailgunProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateMailgunProvider","weight":322,"cookies":false,"type":"","demo":"messaging\/update-mailgun-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-mailgun-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"apiKey":{"type":"string","description":"Mailgun API Key.","x-example":"[API_KEY]"},"domain":{"type":"string","description":"Mailgun Domain.","x-example":"[DOMAIN]"},"isEuRegion":{"type":"boolean","description":"Set as EU region.","x-example":false},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"fromName":{"type":"string","description":"Sender Name.","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the reply to field for the mail. Default value is sender name.","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the reply to field for the mail. Default value is sender email.","x-example":"[REPLY_TO_EMAIL]"}}}}}}}},"\/messaging\/providers\/msg91":{"post":{"summary":"Create Msg91 provider","operationId":"messagingCreateMsg91Provider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createMsg91Provider","weight":312,"cookies":false,"type":"","demo":"messaging\/create-msg91provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-msg91-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"senderId":{"type":"string","description":"Msg91 Sender ID.","x-example":"[SENDER_ID]"},"authKey":{"type":"string","description":"Msg91 Auth Key.","x-example":"[AUTH_KEY]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name"]}}}}}},"\/messaging\/providers\/msg91\/{providerId}":{"patch":{"summary":"Update Msg91 provider","operationId":"messagingUpdateMsg91Provider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateMsg91Provider","weight":324,"cookies":false,"type":"","demo":"messaging\/update-msg91provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-msg91-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"senderId":{"type":"string","description":"Msg91 Sender ID.","x-example":"[SENDER_ID]"},"authKey":{"type":"string","description":"Msg91 Auth Key.","x-example":"[AUTH_KEY]"},"from":{"type":"string","description":"Sender number.","x-example":"[FROM]"}}}}}}}},"\/messaging\/providers\/sendgrid":{"post":{"summary":"Create Sendgrid provider","operationId":"messagingCreateSendgridProvider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createSendgridProvider","weight":311,"cookies":false,"type":"","demo":"messaging\/create-sendgrid-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-sengrid-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"apiKey":{"type":"string","description":"Sendgrid API key.","x-example":"[API_KEY]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"fromName":{"type":"string","description":"Sender Name.","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the reply to field for the mail. Default value is sender name.","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the reply to field for the mail. Default value is sender email.","x-example":"[REPLY_TO_EMAIL]"}},"required":["providerId","name"]}}}}}},"\/messaging\/providers\/sendgrid\/{providerId}":{"patch":{"summary":"Update Sendgrid provider","operationId":"messagingUpdateSendgridProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateSendgridProvider","weight":323,"cookies":false,"type":"","demo":"messaging\/update-sendgrid-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-sendgrid-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"apiKey":{"type":"string","description":"Sendgrid API key.","x-example":"[API_KEY]"},"fromName":{"type":"string","description":"Sender Name.","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the Reply To field for the mail. Default value is Sender Name.","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the Reply To field for the mail. Default value is Sender Email.","x-example":"[REPLY_TO_EMAIL]"}}}}}}}},"\/messaging\/providers\/telesign":{"post":{"summary":"Create Telesign provider","operationId":"messagingCreateTelesignProvider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createTelesignProvider","weight":313,"cookies":false,"type":"","demo":"messaging\/create-telesign-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-telesign-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"username":{"type":"string","description":"Telesign username.","x-example":"[USERNAME]"},"password":{"type":"string","description":"Telesign password.","x-example":"[PASSWORD]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name"]}}}}}},"\/messaging\/providers\/telesign\/{providerId}":{"patch":{"summary":"Update Telesign provider","operationId":"messagingUpdateTelesignProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateTelesignProvider","weight":325,"cookies":false,"type":"","demo":"messaging\/update-telesign-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-telesign-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"username":{"type":"string","description":"Telesign username.","x-example":"[USERNAME]"},"password":{"type":"string","description":"Telesign password.","x-example":"[PASSWORD]"},"from":{"type":"string","description":"Sender number.","x-example":"[FROM]"}}}}}}}},"\/messaging\/providers\/textmagic":{"post":{"summary":"Create Textmagic provider","operationId":"messagingCreateTextmagicProvider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createTextmagicProvider","weight":314,"cookies":false,"type":"","demo":"messaging\/create-textmagic-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-textmagic-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"username":{"type":"string","description":"Textmagic username.","x-example":"[USERNAME]"},"apiKey":{"type":"string","description":"Textmagic apiKey.","x-example":"[API_KEY]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name"]}}}}}},"\/messaging\/providers\/textmagic\/{providerId}":{"patch":{"summary":"Update Textmagic provider","operationId":"messagingUpdateTextmagicProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateTextmagicProvider","weight":326,"cookies":false,"type":"","demo":"messaging\/update-textmagic-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-textmagic-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"username":{"type":"string","description":"Textmagic username.","x-example":"[USERNAME]"},"apiKey":{"type":"string","description":"Textmagic apiKey.","x-example":"[API_KEY]"},"from":{"type":"string","description":"Sender number.","x-example":"[FROM]"}}}}}}}},"\/messaging\/providers\/twilio":{"post":{"summary":"Create Twilio provider","operationId":"messagingCreateTwilioProvider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createTwilioProvider","weight":315,"cookies":false,"type":"","demo":"messaging\/create-twilio-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-twilio-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"accountSid":{"type":"string","description":"Twilio account secret ID.","x-example":"[ACCOUNT_SID]"},"authToken":{"type":"string","description":"Twilio authentication token.","x-example":"[AUTH_TOKEN]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name"]}}}}}},"\/messaging\/providers\/twilio\/{providerId}":{"patch":{"summary":"Update Twilio provider","operationId":"messagingUpdateTwilioProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateTwilioProvider","weight":327,"cookies":false,"type":"","demo":"messaging\/update-twilio-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-twilio-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"accountSid":{"type":"string","description":"Twilio account secret ID.","x-example":"[ACCOUNT_SID]"},"authToken":{"type":"string","description":"Twilio authentication token.","x-example":"[AUTH_TOKEN]"},"from":{"type":"string","description":"Sender number.","x-example":"[FROM]"}}}}}}}},"\/messaging\/providers\/vonage":{"post":{"summary":"Create Vonage provider","operationId":"messagingCreateVonageProvider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createVonageProvider","weight":316,"cookies":false,"type":"","demo":"messaging\/create-vonage-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-vonage-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"apiKey":{"type":"string","description":"Vonage API key.","x-example":"[API_KEY]"},"apiSecret":{"type":"string","description":"Vonage API secret.","x-example":"[API_SECRET]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name"]}}}}}},"\/messaging\/providers\/vonage\/{providerId}":{"patch":{"summary":"Update Vonage provider","operationId":"messagingUpdateVonageProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateVonageProvider","weight":328,"cookies":false,"type":"","demo":"messaging\/update-vonage-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-vonage-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"apiKey":{"type":"string","description":"Vonage API key.","x-example":"[API_KEY]"},"apiSecret":{"type":"string","description":"Vonage API secret.","x-example":"[API_SECRET]"},"from":{"type":"string","description":"Sender number.","x-example":"[FROM]"}}}}}}}},"\/messaging\/providers\/{providerId}":{"get":{"summary":"Get provider","operationId":"messagingGetProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"getProvider","weight":321,"cookies":false,"type":"","demo":"messaging\/get-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/get-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}]},"delete":{"summary":"Delete provider","operationId":"messagingDeleteProvider","tags":["messaging"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteProvider","weight":331,"cookies":false,"type":"","demo":"messaging\/delete-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}]}},"\/messaging\/providers\/{providerId}\/logs":{"get":{"summary":"List provider logs","operationId":"messagingListProviderLogs","tags":["messaging"],"description":"","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listProviderLogs","weight":320,"cookies":false,"type":"","demo":"messaging\/list-provider-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/providers\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/messaging\/subscribers\/{subscriberId}\/logs":{"get":{"summary":"List subscriber logs","operationId":"messagingListSubscriberLogs","tags":["messaging"],"description":"","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listSubscriberLogs","weight":340,"cookies":false,"type":"","demo":"messaging\/list-subscriber-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/subscribers\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"subscriberId","description":"Subscriber ID.","required":true,"schema":{"type":"string","x-example":"[SUBSCRIBER_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/messaging\/topics":{"get":{"summary":"List topics.","operationId":"messagingListTopics","tags":["messaging"],"description":"","responses":{"200":{"description":"Topic list","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/topicList"}}}}},"x-appwrite":{"method":"listTopics","weight":333,"cookies":false,"type":"","demo":"messaging\/list-topics.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-topics.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, description, total","required":false,"schema":{"type":"string","default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create a topic.","operationId":"messagingCreateTopic","tags":["messaging"],"description":"","responses":{"201":{"description":"Topic","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/topic"}}}}},"x-appwrite":{"method":"createTopic","weight":332,"cookies":false,"type":"","demo":"messaging\/create-topic.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-topic.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"topicId":{"type":"string","description":"Topic ID. Choose a custom Topic ID or a new Topic ID.","x-example":"[TOPIC_ID]"},"name":{"type":"string","description":"Topic Name.","x-example":"[NAME]"},"description":{"type":"string","description":"Topic Description.","x-example":"[DESCRIPTION]"}},"required":["topicId","name"]}}}}}},"\/messaging\/topics\/{topicId}":{"get":{"summary":"Get a topic.","operationId":"messagingGetTopic","tags":["messaging"],"description":"","responses":{"200":{"description":"Topic","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/topic"}}}}},"x-appwrite":{"method":"getTopic","weight":335,"cookies":false,"type":"","demo":"messaging\/get-topic.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/get-topic.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID.","required":true,"schema":{"type":"string","x-example":"[TOPIC_ID]"},"in":"path"}]},"patch":{"summary":"Update a topic.","operationId":"messagingUpdateTopic","tags":["messaging"],"description":"","responses":{"200":{"description":"Topic","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/topic"}}}}},"x-appwrite":{"method":"updateTopic","weight":336,"cookies":false,"type":"","demo":"messaging\/update-topic.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-topic.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID.","required":true,"schema":{"type":"string","x-example":"[TOPIC_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Topic Name.","x-example":"[NAME]"},"description":{"type":"string","description":"Topic Description.","x-example":"[DESCRIPTION]"}}}}}}},"delete":{"summary":"Delete a topic.","operationId":"messagingDeleteTopic","tags":["messaging"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteTopic","weight":337,"cookies":false,"type":"","demo":"messaging\/delete-topic.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-topic.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID.","required":true,"schema":{"type":"string","x-example":"[TOPIC_ID]"},"in":"path"}]}},"\/messaging\/topics\/{topicId}\/logs":{"get":{"summary":"List topic logs","operationId":"messagingListTopicLogs","tags":["messaging"],"description":"","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listTopicLogs","weight":334,"cookies":false,"type":"","demo":"messaging\/list-topic-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/topics\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID.","required":true,"schema":{"type":"string","x-example":"[TOPIC_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/messaging\/topics\/{topicId}\/subscribers":{"get":{"summary":"List subscribers.","operationId":"messagingListSubscribers","tags":["messaging"],"description":"","responses":{"200":{"description":"Subscriber list","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/subscriberList"}}}}},"x-appwrite":{"method":"listSubscribers","weight":339,"cookies":false,"type":"","demo":"messaging\/list-subscribers.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-subscribers.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID subscribed to.","required":true,"schema":{"type":"string","x-example":"[TOPIC_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, provider, type, enabled","required":false,"schema":{"type":"string","default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create a subscriber.","operationId":"messagingCreateSubscriber","tags":["messaging"],"description":"","responses":{"201":{"description":"Subscriber","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/subscriber"}}}}},"x-appwrite":{"method":"createSubscriber","weight":338,"cookies":false,"type":"","demo":"messaging\/create-subscriber.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-subscriber.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.write","platforms":["server","client","console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[],"Session":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID to subscribe to.","required":true,"schema":{"type":"string","x-example":"[TOPIC_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"subscriberId":{"type":"string","description":"Subscriber ID. Choose a custom Subscriber ID or a new Subscriber ID.","x-example":"[SUBSCRIBER_ID]"},"targetId":{"type":"string","description":"Target ID. The target ID to link to the specified Topic ID.","x-example":"[TARGET_ID]"}},"required":["subscriberId","targetId"]}}}}}},"\/messaging\/topics\/{topicId}\/subscribers\/{subscriberId}":{"get":{"summary":"Get a subscriber.","operationId":"messagingGetSubscriber","tags":["messaging"],"description":"","responses":{"200":{"description":"Subscriber","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/subscriber"}}}}},"x-appwrite":{"method":"getSubscriber","weight":341,"cookies":false,"type":"","demo":"messaging\/get-subscriber.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/get-subscriber.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID subscribed to.","required":true,"schema":{"type":"string","x-example":"[TOPIC_ID]"},"in":"path"},{"name":"subscriberId","description":"Subscriber ID.","required":true,"schema":{"type":"string","x-example":"[SUBSCRIBER_ID]"},"in":"path"}]},"delete":{"summary":"Delete a subscriber.","operationId":"messagingDeleteSubscriber","tags":["messaging"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSubscriber","weight":342,"cookies":false,"type":"","demo":"messaging\/delete-subscriber.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-subscriber.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.write","platforms":["server","client","console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[],"Session":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID subscribed to.","required":true,"schema":{"type":"string","x-example":"[TOPIC_ID]"},"in":"path"},{"name":"subscriberId","description":"Subscriber ID.","required":true,"schema":{"type":"string","x-example":"[SUBSCRIBER_ID]"},"in":"path"}]}},"\/storage\/buckets":{"get":{"summary":"List buckets","operationId":"storageListBuckets","tags":["storage"],"description":"Get a list of all the storage buckets. You can use the query params to filter your results.","responses":{"200":{"description":"Buckets List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/bucketList"}}}}},"x-appwrite":{"method":"listBuckets","weight":176,"cookies":false,"type":"","demo":"storage\/list-buckets.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/list-buckets.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: enabled, name, fileSecurity, maximumFileSize, encryption, antivirus","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create bucket","operationId":"storageCreateBucket","tags":["storage"],"description":"Create a new storage bucket.","responses":{"201":{"description":"Bucket","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/bucket"}}}}},"x-appwrite":{"method":"createBucket","weight":175,"cookies":false,"type":"","demo":"storage\/create-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"bucketId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, no user is granted with any permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":false},"enabled":{"type":"boolean","description":"Is bucket enabled? When set to 'disabled', users cannot access the files in this bucket but Server SDKs with and API key can still access the bucket. No files are lost when this is toggled.","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB.","x-example":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","x-example":"none","enum":["none","gzip","zstd"],"x-enum-name":null,"x-enum-keys":[]},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","x-example":false}},"required":["bucketId","name"]}}}}}},"\/storage\/buckets\/{bucketId}":{"get":{"summary":"Get bucket","operationId":"storageGetBucket","tags":["storage"],"description":"Get a storage bucket by its unique ID. This endpoint response returns a JSON object with the storage bucket metadata.","responses":{"200":{"description":"Bucket","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/bucket"}}}}},"x-appwrite":{"method":"getBucket","weight":177,"cookies":false,"type":"","demo":"storage\/get-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"bucketId","description":"Bucket unique ID.","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"}]},"put":{"summary":"Update bucket","operationId":"storageUpdateBucket","tags":["storage"],"description":"Update a storage bucket by its unique ID.","responses":{"200":{"description":"Bucket","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/bucket"}}}}},"x-appwrite":{"method":"updateBucket","weight":178,"cookies":false,"type":"","demo":"storage\/update-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"bucketId","description":"Bucket unique ID.","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Bucket name","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":false},"enabled":{"type":"boolean","description":"Is bucket enabled? When set to 'disabled', users cannot access the files in this bucket but Server SDKs with and API key can still access the bucket. No files are lost when this is toggled.","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB.","x-example":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","x-example":"none","enum":["none","gzip","zstd"],"x-enum-name":null,"x-enum-keys":[]},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","x-example":false}},"required":["name"]}}}}},"delete":{"summary":"Delete bucket","operationId":"storageDeleteBucket","tags":["storage"],"description":"Delete a storage bucket by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteBucket","weight":179,"cookies":false,"type":"","demo":"storage\/delete-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"bucketId","description":"Bucket unique ID.","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files":{"get":{"summary":"List files","operationId":"storageListFiles","tags":["storage"],"description":"Get a list of all the user files. You can use the query params to filter your results.","responses":{"200":{"description":"Files List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/fileList"}}}}},"x-appwrite":{"method":"listFiles","weight":181,"cookies":false,"type":"","demo":"storage\/list-files.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/list-files.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create file","operationId":"storageCreateFile","tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"createFile","weight":180,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId},chunkId:{chunkId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"}],"requestBody":{"content":{"multipart\/form-data":{"schema":{"type":"object","properties":{"fileId":{"type":"string","description":"File ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[FILE_ID]","x-upload-id":true},"file":{"type":"string","description":"Binary file. Appwrite SDKs provide helpers to handle file input. [Learn about file input](https:\/\/appwrite.io\/docs\/storage#file-input).","x-example":null},"permissions":{"type":"array","description":"An array of permission strings. By default, only the current user is granted all permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["fileId","file"]}}}}}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get file","operationId":"storageGetFile","tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"getFile","weight":182,"cookies":false,"type":"","demo":"storage\/get-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File ID.","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"}]},"put":{"summary":"Update file","operationId":"storageUpdateFile","tags":["storage"],"description":"Update a file by its unique ID. Only users with write permissions have access to update this resource.","responses":{"200":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"updateFile","weight":186,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File unique ID.","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Name of the file","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission string. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":187,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File ID.","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/download":{"get":{"summary":"Get file for download","operationId":"storageGetFileDownload","tags":["storage"],"description":"Get a file content by its unique ID. The endpoint response return with a 'Content-Disposition: attachment' header that tells the browser to start downloading the file to user downloads directory.","responses":{"200":{"description":"File"}},"x-appwrite":{"method":"getFileDownload","weight":184,"cookies":false,"type":"location","demo":"storage\/get-file-download.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-download.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File ID.","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/preview":{"get":{"summary":"Get file preview","operationId":"storageGetFilePreview","tags":["storage"],"description":"Get a file preview image. Currently, this method supports preview for image files (jpg, png, and gif), other supported formats, like pdf, docs, slides, and spreadsheets, will return the file icon image. You can also pass query string arguments for cutting and resizing your preview image. Preview is supported only for image files smaller than 10MB.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFilePreview","weight":183,"cookies":false,"type":"location","demo":"storage\/get-file-preview.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-preview.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File ID","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"},{"name":"width","description":"Resize preview image width, Pass an integer between 0 to 4000.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 4000.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"gravity","description":"Image crop gravity. Can be one of center,top-left,top,top-right,left,right,bottom-left,bottom,bottom-right","required":false,"schema":{"type":"string","x-example":"center","enum":["center","top-left","top","top-right","left","right","bottom-left","bottom","bottom-right"],"x-enum-name":"ImageGravity","x-enum-keys":[],"default":"center"},"in":"query"},{"name":"quality","description":"Preview image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"borderWidth","description":"Preview image border in pixels. Pass an integer between 0 to 100. Defaults to 0.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"borderColor","description":"Preview image border color. Use a valid HEX color, no # is needed for prefix.","required":false,"schema":{"type":"string","default":""},"in":"query"},{"name":"borderRadius","description":"Preview image border radius in pixels. Pass an integer between 0 to 4000.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"opacity","description":"Preview image opacity. Only works with images having an alpha channel (like png). Pass a number between 0 to 1.","required":false,"schema":{"type":"number","format":"float","x-example":0,"default":1},"in":"query"},{"name":"rotation","description":"Preview image rotation in degrees. Pass an integer between -360 and 360.","required":false,"schema":{"type":"integer","format":"int32","x-example":-360,"default":0},"in":"query"},{"name":"background","description":"Preview image background color. Only works with transparent images (png). Use a valid HEX color, no # is needed for prefix.","required":false,"schema":{"type":"string","default":""},"in":"query"},{"name":"output","description":"Output format type (jpeg, jpg, png, gif and webp).","required":false,"schema":{"type":"string","x-example":"jpg","enum":["jpg","jpeg","gif","png","webp"],"x-enum-name":"ImageFormat","x-enum-keys":[],"default":""},"in":"query"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/view":{"get":{"summary":"Get file for view","operationId":"storageGetFileView","tags":["storage"],"description":"Get a file content by its unique ID. This endpoint is similar to the download method but returns with no 'Content-Disposition: attachment' header.","responses":{"200":{"description":"File"}},"x-appwrite":{"method":"getFileView","weight":185,"cookies":false,"type":"location","demo":"storage\/get-file-view.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-view.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File ID.","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"}]}},"\/teams":{"get":{"summary":"List teams","operationId":"teamsList","tags":["teams"],"description":"Get a list of all the teams in which the current user is a member. You can use the parameters to filter your results.","responses":{"200":{"description":"Teams List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/teamList"}}}}},"x-appwrite":{"method":"list","weight":191,"cookies":false,"type":"","demo":"teams\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-teams.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create team","operationId":"teamsCreate","tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"create","weight":190,"cookies":false,"type":"","demo":"teams\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/create-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"teamId":{"type":"string","description":"Team ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[TEAM_ID]"},"name":{"type":"string","description":"Team name. Max length: 128 chars.","x-example":"[NAME]"},"roles":{"type":"array","description":"Array of strings. Use this param to set the roles in the team for the user who created it. The default role is **owner**. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}}}}},"\/teams\/{teamId}":{"get":{"summary":"Get team","operationId":"teamsGet","tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"get","weight":192,"cookies":false,"type":"","demo":"teams\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams","offline-key":"{teamId}","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}]},"put":{"summary":"Update name","operationId":"teamsUpdateName","tags":["teams"],"description":"Update the team's name by its unique ID.","responses":{"200":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"updateName","weight":194,"cookies":false,"type":"","demo":"teams\/update-name.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-name.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams","offline-key":"{teamId}","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"New team name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["name"]}}}}},"delete":{"summary":"Delete team","operationId":"teamsDelete","tags":["teams"],"description":"Delete a team using its ID. Only team members with the owner role can delete the team.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":196,"cookies":false,"type":"","demo":"teams\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/delete-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}]}},"\/teams\/{teamId}\/memberships":{"get":{"summary":"List team memberships","operationId":"teamsListMemberships","tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"listMemberships","weight":198,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/memberships","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create team membership","operationId":"teamsCreateMembership","tags":["teams"],"description":"Invite a new member to join your team. Provide an ID for existing users, or invite unregistered users using an email or phone number. If initiated from a Client SDK, Appwrite will send an email or sms with a link to join the team to the invited user, and an account will be created for them if one doesn't exist. If initiated from a Server SDK, the new member will be added automatically to the team.\n\nYou only need to provide one of a user ID, email, or phone number. Appwrite will prioritize accepting the user ID > email > phone number if you provide more than one of these parameters.\n\nUse the `url` parameter to redirect the user from the invitation email to your app. After the user is redirected, use the [Update Team Membership Status](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/teams#updateMembershipStatus) endpoint to allow the user to accept the invitation to the team. \n\nPlease note that to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) Appwrite will accept the only redirect URLs under the domains you have added as a platform on the Appwrite Console.\n","responses":{"201":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"createMembership","weight":197,"cookies":false,"type":"","demo":"teams\/create-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/create-team-membership.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"email":{"type":"string","description":"Email of the new team member.","x-example":"email@example.com"},"userId":{"type":"string","description":"ID of the user to be added to a team.","x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"roles":{"type":"array","description":"Array of strings. Use this param to set the user roles in the team. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"},"name":{"type":"string","description":"Name of the new team member. Max length: 128 chars.","x-example":"[NAME]"}},"required":["roles"]}}}}}},"\/teams\/{teamId}\/memberships\/{membershipId}":{"get":{"summary":"Get team membership","operationId":"teamsGetMembership","tags":["teams"],"description":"Get a team member by the membership unique id. All team members have read access for this resource.","responses":{"200":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"getMembership","weight":199,"cookies":false,"type":"","demo":"teams\/get-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-member.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/memberships","offline-key":"{membershipId}","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"schema":{"type":"string","x-example":"[MEMBERSHIP_ID]"},"in":"path"}]},"patch":{"summary":"Update membership","operationId":"teamsUpdateMembership","tags":["teams"],"description":"Modify the roles of a team member. Only team members with the owner role have access to this endpoint. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions).\n","responses":{"200":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"updateMembership","weight":200,"cookies":false,"type":"","demo":"teams\/update-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"schema":{"type":"string","x-example":"[MEMBERSHIP_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"roles":{"type":"array","description":"An array of strings. Use this param to set the user's roles in the team. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["roles"]}}}}},"delete":{"summary":"Delete team membership","operationId":"teamsDeleteMembership","tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":202,"cookies":false,"type":"","demo":"teams\/delete-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/delete-team-membership.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"schema":{"type":"string","x-example":"[MEMBERSHIP_ID]"},"in":"path"}]}},"\/teams\/{teamId}\/memberships\/{membershipId}\/status":{"patch":{"summary":"Update team membership status","operationId":"teamsUpdateMembershipStatus","tags":["teams"],"description":"Use this endpoint to allow a user to accept an invitation to join a team after being redirected back to your app from the invitation email received by the user.\n\nIf the request is successful, a session for the user is automatically created.\n","responses":{"200":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"updateMembershipStatus","weight":201,"cookies":false,"type":"","demo":"teams\/update-membership-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"public","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"schema":{"type":"string","x-example":"[MEMBERSHIP_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Secret key.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/teams\/{teamId}\/prefs":{"get":{"summary":"Get team preferences","operationId":"teamsGetPrefs","tags":["teams"],"description":"Get the team's shared preferences by its unique ID. If a preference doesn't need to be shared by all team members, prefer storing them in [user preferences](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#getPrefs).","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"getPrefs","weight":193,"cookies":false,"type":"","demo":"teams\/get-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/prefs","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}]},"put":{"summary":"Update preferences","operationId":"teamsUpdatePrefs","tags":["teams"],"description":"Update the team's preferences by its unique ID. The object you pass is stored as is and replaces any previous value. The maximum allowed prefs size is 64kB and throws an error if exceeded.","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"updatePrefs","weight":195,"cookies":false,"type":"","demo":"teams\/update-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/prefs","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"prefs":{"type":"object","description":"Prefs key-value JSON object.","x-example":"{}"}},"required":["prefs"]}}}}}},"\/users":{"get":{"summary":"List users","operationId":"usersList","tags":["users"],"description":"Get a list of all the project's users. You can use the query params to filter your results.","responses":{"200":{"description":"Users List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/userList"}}}}},"x-appwrite":{"method":"list","weight":213,"cookies":false,"type":"","demo":"users\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-users.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, email, phone, status, passwordUpdate, registration, emailVerification, phoneVerification","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create user","operationId":"usersCreate","tags":["users"],"description":"Create a new user.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"create","weight":204,"cookies":false,"type":"","demo":"users\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"password":{"type":"string","description":"Plain text user password. Must be at least 8 chars.","x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId"]}}}}}},"\/users\/argon2":{"post":{"summary":"Create user with Argon2 password","operationId":"usersCreateArgon2User","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Argon2](https:\/\/en.wikipedia.org\/wiki\/Argon2) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createArgon2User","weight":207,"cookies":false,"type":"","demo":"users\/create-argon2user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-argon2-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Argon2.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/bcrypt":{"post":{"summary":"Create user with bcrypt password","operationId":"usersCreateBcryptUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Bcrypt](https:\/\/en.wikipedia.org\/wiki\/Bcrypt) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createBcryptUser","weight":205,"cookies":false,"type":"","demo":"users\/create-bcrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-bcrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Bcrypt.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/identities":{"get":{"summary":"List Identities","operationId":"usersListIdentities","tags":["users"],"description":"Get identities for all users.","responses":{"200":{"description":"Identities List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/identityList"}}}}},"x-appwrite":{"method":"listIdentities","weight":221,"cookies":false,"type":"","demo":"users\/list-identities.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-identities.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, provider, providerUid, providerEmail, providerAccessTokenExpiry","required":false,"schema":{"type":"string","default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]}},"\/users\/identities\/{identityId}":{"delete":{"summary":"Delete identity","operationId":"usersDeleteIdentity","tags":["users"],"description":"Delete an identity by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIdentity","weight":238,"cookies":false,"type":"","demo":"users\/delete-identity.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-identity.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"identityId","description":"Identity ID.","required":true,"schema":{"type":"string","x-example":"[IDENTITY_ID]"},"in":"path"}]}},"\/users\/md5":{"post":{"summary":"Create user with MD5 password","operationId":"usersCreateMD5User","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [MD5](https:\/\/en.wikipedia.org\/wiki\/MD5) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createMD5User","weight":206,"cookies":false,"type":"","demo":"users\/create-m-d5user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-md5-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using MD5.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/phpass":{"post":{"summary":"Create user with PHPass password","operationId":"usersCreatePHPassUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [PHPass](https:\/\/www.openwall.com\/phpass\/) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createPHPassUser","weight":209,"cookies":false,"type":"","demo":"users\/create-p-h-pass-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-phpass-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or pass the string `ID.unique()`to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using PHPass.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/scrypt":{"post":{"summary":"Create user with Scrypt password","operationId":"usersCreateScryptUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt](https:\/\/github.com\/Tarsnap\/scrypt) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createScryptUser","weight":210,"cookies":false,"type":"","demo":"users\/create-scrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt.","x-example":"password"},"passwordSalt":{"type":"string","description":"Optional salt used to hash password.","x-example":"[PASSWORD_SALT]"},"passwordCpu":{"type":"integer","description":"Optional CPU cost used to hash password.","x-example":null},"passwordMemory":{"type":"integer","description":"Optional memory cost used to hash password.","x-example":null},"passwordParallel":{"type":"integer","description":"Optional parallelization cost used to hash password.","x-example":null},"passwordLength":{"type":"integer","description":"Optional hash length used to hash password.","x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordCpu","passwordMemory","passwordParallel","passwordLength"]}}}}}},"\/users\/scrypt-modified":{"post":{"summary":"Create user with Scrypt modified password","operationId":"usersCreateScryptModifiedUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt Modified](https:\/\/gist.github.com\/Meldiron\/eecf84a0225eccb5a378d45bb27462cc) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createScryptModifiedUser","weight":211,"cookies":false,"type":"","demo":"users\/create-scrypt-modified-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-modified-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt Modified.","x-example":"password"},"passwordSalt":{"type":"string","description":"Salt used to hash password.","x-example":"[PASSWORD_SALT]"},"passwordSaltSeparator":{"type":"string","description":"Salt separator used to hash password.","x-example":"[PASSWORD_SALT_SEPARATOR]"},"passwordSignerKey":{"type":"string","description":"Signer key used to hash password.","x-example":"[PASSWORD_SIGNER_KEY]"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordSaltSeparator","passwordSignerKey"]}}}}}},"\/users\/sha":{"post":{"summary":"Create user with SHA password","operationId":"usersCreateSHAUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [SHA](https:\/\/en.wikipedia.org\/wiki\/Secure_Hash_Algorithm) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createSHAUser","weight":208,"cookies":false,"type":"","demo":"users\/create-s-h-a-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-sha-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using SHA.","x-example":"password"},"passwordVersion":{"type":"string","description":"Optional SHA version used to hash password. Allowed values are: 'sha1', 'sha224', 'sha256', 'sha384', 'sha512\/224', 'sha512\/256', 'sha512', 'sha3-224', 'sha3-256', 'sha3-384', 'sha3-512'","x-example":"sha1","enum":["sha1","sha224","sha256","sha384","sha512\/224","sha512\/256","sha512","sha3-224","sha3-256","sha3-384","sha3-512"],"x-enum-name":null,"x-enum-keys":[]},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/{userId}":{"get":{"summary":"Get user","operationId":"usersGet","tags":["users"],"description":"Get a user by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"get","weight":214,"cookies":false,"type":"","demo":"users\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]},"delete":{"summary":"Delete user","operationId":"usersDelete","tags":["users"],"description":"Delete a user by its unique ID, thereby releasing it's ID. Since ID is released and can be reused, all user-related resources like documents or storage files should be deleted before user deletion. If you want to keep ID reserved, use the [updateStatus](https:\/\/appwrite.io\/docs\/server\/users#usersUpdateStatus) endpoint instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":236,"cookies":false,"type":"","demo":"users\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]}},"\/users\/{userId}\/email":{"patch":{"summary":"Update email","operationId":"usersUpdateEmail","tags":["users"],"description":"Update the user email by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateEmail","weight":227,"cookies":false,"type":"","demo":"users\/update-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","x-example":"email@example.com"}},"required":["email"]}}}}}},"\/users\/{userId}\/labels":{"put":{"summary":"Update user labels","operationId":"usersUpdateLabels","tags":["users"],"description":"Update the user labels by its unique ID. \n\nLabels can be used to grant access to resources. While teams are a way for user's to share access to a resource, labels can be defined by the developer to grant access without an invitation. See the [Permissions docs](https:\/\/appwrite.io\/docs\/permissions) for more info.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateLabels","weight":223,"cookies":false,"type":"","demo":"users\/update-labels.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-labels.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"labels":{"type":"array","description":"Array of user labels. Replaces the previous labels. Maximum of 100 labels are allowed, each up to 36 alphanumeric characters long.","x-example":null,"items":{"type":"string"}}},"required":["labels"]}}}}}},"\/users\/{userId}\/logs":{"get":{"summary":"List user logs","operationId":"usersListLogs","tags":["users"],"description":"Get the user activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listLogs","weight":219,"cookies":false,"type":"","demo":"users\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/users\/{userId}\/memberships":{"get":{"summary":"List user memberships","operationId":"usersListMemberships","tags":["users"],"description":"Get the user membership list by its unique ID.","responses":{"200":{"description":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"listMemberships","weight":218,"cookies":false,"type":"","demo":"users\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-memberships.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]}},"\/users\/{userId}\/name":{"patch":{"summary":"Update name","operationId":"usersUpdateName","tags":["users"],"description":"Update the user name by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateName","weight":225,"cookies":false,"type":"","demo":"users\/update-name.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-name.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["name"]}}}}}},"\/users\/{userId}\/password":{"patch":{"summary":"Update password","operationId":"usersUpdatePassword","tags":["users"],"description":"Update the user password by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePassword","weight":226,"cookies":false,"type":"","demo":"users\/update-password.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-password.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"password":{"type":"string","description":"New user password. Must be at least 8 chars.","x-example":null}},"required":["password"]}}}}}},"\/users\/{userId}\/phone":{"patch":{"summary":"Update phone","operationId":"usersUpdatePhone","tags":["users"],"description":"Update the user phone by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePhone","weight":228,"cookies":false,"type":"","demo":"users\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"number":{"type":"string","description":"User phone number.","x-example":"+12065550100"}},"required":["number"]}}}}}},"\/users\/{userId}\/prefs":{"get":{"summary":"Get user preferences","operationId":"usersGetPrefs","tags":["users"],"description":"Get the user preferences by its unique ID.","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"getPrefs","weight":215,"cookies":false,"type":"","demo":"users\/get-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]},"patch":{"summary":"Update user preferences","operationId":"usersUpdatePrefs","tags":["users"],"description":"Update the user preferences by its unique ID. The object you pass is stored as is, and replaces any previous value. The maximum allowed prefs size is 64kB and throws error if exceeded.","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"updatePrefs","weight":230,"cookies":false,"type":"","demo":"users\/update-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"prefs":{"type":"object","description":"Prefs key-value JSON object.","x-example":"{}"}},"required":["prefs"]}}}}}},"\/users\/{userId}\/sessions":{"get":{"summary":"List user sessions","operationId":"usersListSessions","tags":["users"],"description":"Get the user sessions list by its unique ID.","responses":{"200":{"description":"Sessions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/sessionList"}}}}},"x-appwrite":{"method":"listSessions","weight":217,"cookies":false,"type":"","demo":"users\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]},"post":{"summary":"Create session","operationId":"usersCreateSession","tags":["users"],"description":"Creates a session for a user. Returns an immediately usable session object.\n\nIf you want to generate a token for a custom authentication flow, use the [POST \/users\/{userId}\/tokens](https:\/\/appwrite.io\/docs\/server\/users#createToken) endpoint.","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"createSession","weight":232,"cookies":false,"type":"","demo":"users\/create-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-session.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]},"delete":{"summary":"Delete user sessions","operationId":"usersDeleteSessions","tags":["users"],"description":"Delete all user's sessions by using the user's unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":235,"cookies":false,"type":"","demo":"users\/delete-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]}},"\/users\/{userId}\/sessions\/{sessionId}":{"delete":{"summary":"Delete user session","operationId":"usersDeleteSession","tags":["users"],"description":"Delete a user sessions by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSession","weight":234,"cookies":false,"type":"","demo":"users\/delete-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-user-session.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"sessionId","description":"Session ID.","required":true,"schema":{"type":"string","x-example":"[SESSION_ID]"},"in":"path"}]}},"\/users\/{userId}\/status":{"patch":{"summary":"Update user status","operationId":"usersUpdateStatus","tags":["users"],"description":"Update the user status by its unique ID. Use this endpoint as an alternative to deleting a user if you want to keep user's ID reserved.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateStatus","weight":222,"cookies":false,"type":"","demo":"users\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"status":{"type":"boolean","description":"User Status. To activate the user pass `true` and to block the user pass `false`.","x-example":false}},"required":["status"]}}}}}},"\/users\/{userId}\/targets":{"get":{"summary":"List User Targets","operationId":"usersListTargets","tags":["users"],"description":"","responses":{"200":{"description":"Target list","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/targetList"}}}}},"x-appwrite":{"method":"listTargets","weight":220,"cookies":false,"type":"","demo":"users\/list-targets.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-targets.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.read","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, email, phone, status, passwordUpdate, registration, emailVerification, phoneVerification","required":false,"schema":{"type":"string","default":[]},"in":"query"}]},"post":{"summary":"Create User Target","operationId":"usersCreateTarget","tags":["users"],"description":"","responses":{"201":{"description":"Target","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/target"}}}}},"x-appwrite":{"method":"createTarget","weight":212,"cookies":false,"type":"","demo":"users\/create-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-target.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"targetId":{"type":"string","description":"Target ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[TARGET_ID]"},"providerType":{"type":"string","description":"The target provider type. Can be one of the following: `email`, `sms` or `push`.","x-example":"email","enum":["email","sms","push"],"x-enum-name":null,"x-enum-keys":[]},"identifier":{"type":"string","description":"The target identifier (token, email, phone etc.)","x-example":"[IDENTIFIER]"},"providerId":{"type":"string","description":"Provider ID. Message will be sent to this target from the specified provider ID. If no provider ID is set the first setup provider will be used.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Target name. Max length: 128 chars. For example: My Awesome App Galaxy S23.","x-example":"[NAME]"}},"required":["targetId","providerType","identifier"]}}}}}},"\/users\/{userId}\/targets\/{targetId}":{"get":{"summary":"Get User Target","operationId":"usersGetTarget","tags":["users"],"description":"","responses":{"200":{"description":"Target","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/target"}}}}},"x-appwrite":{"method":"getTarget","weight":216,"cookies":false,"type":"","demo":"users\/get-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-target.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.read","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"targetId","description":"Target ID.","required":true,"schema":{"type":"string","x-example":"[TARGET_ID]"},"in":"path"}]},"patch":{"summary":"Update User target","operationId":"usersUpdateTarget","tags":["users"],"description":"","responses":{"200":{"description":"Target","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/target"}}}}},"x-appwrite":{"method":"updateTarget","weight":231,"cookies":false,"type":"","demo":"users\/update-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-target.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"targetId","description":"Target ID.","required":true,"schema":{"type":"string","x-example":"[TARGET_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"identifier":{"type":"string","description":"The target identifier (token, email, phone etc.)","x-example":"[IDENTIFIER]"},"providerId":{"type":"string","description":"Provider ID. Message will be sent to this target from the specified provider ID. If no provider ID is set the first setup provider will be used.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Target name. Max length: 128 chars. For example: My Awesome App Galaxy S23.","x-example":"[NAME]"}}}}}}},"delete":{"summary":"Delete user target","operationId":"usersDeleteTarget","tags":["users"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteTarget","weight":237,"cookies":false,"type":"","demo":"users\/delete-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-target.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"targetId","description":"Target ID.","required":true,"schema":{"type":"string","x-example":"[TARGET_ID]"},"in":"path"}]}},"\/users\/{userId}\/tokens":{"post":{"summary":"Create token","operationId":"usersCreateToken","tags":["users"],"description":"Returns a token with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [PUT \/account\/sessions\/custom](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateCustomSession) endpoint to complete the login process.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createToken","weight":233,"cookies":false,"type":"","demo":"users\/create-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-token.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"length":{"type":"integer","description":"Token length in characters. The default length is 6 characters","x-example":4},"expire":{"type":"integer","description":"Token expiration period in seconds. The default expiration is 15 minutes.","x-example":60}}}}}}}},"\/users\/{userId}\/verification":{"patch":{"summary":"Update email verification","operationId":"usersUpdateEmailVerification","tags":["users"],"description":"Update the user email verification status by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateEmailVerification","weight":229,"cookies":false,"type":"","demo":"users\/update-email-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-email-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"emailVerification":{"type":"boolean","description":"User email verification status.","x-example":false}},"required":["emailVerification"]}}}}}},"\/users\/{userId}\/verification\/phone":{"patch":{"summary":"Update phone verification","operationId":"usersUpdatePhoneVerification","tags":["users"],"description":"Update the user phone verification status by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePhoneVerification","weight":224,"cookies":false,"type":"","demo":"users\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"phoneVerification":{"type":"boolean","description":"User phone verification status.","x-example":false}},"required":["phoneVerification"]}}}}}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"project","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]},{"name":"proxy","description":"The Proxy Service allows you to configure actions for your domains beyond DNS configuration.","x-globalAttributes":[]},{"name":"graphql","description":"The GraphQL API allows you to query and mutate your Appwrite server using GraphQL.","x-globalAttributes":[]},{"name":"console","description":"The Console service allows you to interact with console relevant informations.","x-globalAttributes":[]},{"name":"migrations","description":"The Migrations service allows you to migrate third-party data to your Appwrite project.","x-globalAttributes":[]},{"name":"messaging","description":"The Messaging service allows you to send messages to any provider type (SMTP, push notification, SMS, etc.).","x-globalAttributes":[]}],"components":{"schemas":{"any":{"description":"Any","type":"object","additionalProperties":true},"error":{"description":"Error","type":"object","properties":{"message":{"type":"string","description":"Error message.","x-example":"Not found"},"code":{"type":"string","description":"Error code.","x-example":"404"},"type":{"type":"string","description":"Error type. You can learn more about all the error types at https:\/\/appwrite.io\/docs\/error-codes#errorTypes","x-example":"not_found"},"version":{"type":"string","description":"Server version number.","x-example":"1.0"}},"required":["message","code","type","version"]},"documentList":{"description":"Documents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of documents documents that matched your query.","x-example":5,"format":"int32"},"documents":{"type":"array","description":"List of documents.","items":{"$ref":"#\/components\/schemas\/document"},"x-example":""}},"required":["total","documents"]},"collectionList":{"description":"Collections List","type":"object","properties":{"total":{"type":"integer","description":"Total number of collections documents that matched your query.","x-example":5,"format":"int32"},"collections":{"type":"array","description":"List of collections.","items":{"$ref":"#\/components\/schemas\/collection"},"x-example":""}},"required":["total","collections"]},"databaseList":{"description":"Databases List","type":"object","properties":{"total":{"type":"integer","description":"Total number of databases documents that matched your query.","x-example":5,"format":"int32"},"databases":{"type":"array","description":"List of databases.","items":{"$ref":"#\/components\/schemas\/database"},"x-example":""}},"required":["total","databases"]},"indexList":{"description":"Indexes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of indexes documents that matched your query.","x-example":5,"format":"int32"},"indexes":{"type":"array","description":"List of indexes.","items":{"$ref":"#\/components\/schemas\/index"},"x-example":""}},"required":["total","indexes"]},"userList":{"description":"Users List","type":"object","properties":{"total":{"type":"integer","description":"Total number of users documents that matched your query.","x-example":5,"format":"int32"},"users":{"type":"array","description":"List of users.","items":{"$ref":"#\/components\/schemas\/user"},"x-example":""}},"required":["total","users"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of sessions documents that matched your query.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"$ref":"#\/components\/schemas\/session"},"x-example":""}},"required":["total","sessions"]},"identityList":{"description":"Identities List","type":"object","properties":{"total":{"type":"integer","description":"Total number of identities documents that matched your query.","x-example":5,"format":"int32"},"identities":{"type":"array","description":"List of identities.","items":{"$ref":"#\/components\/schemas\/identity"},"x-example":""}},"required":["total","identities"]},"logList":{"description":"Logs List","type":"object","properties":{"total":{"type":"integer","description":"Total number of logs documents that matched your query.","x-example":5,"format":"int32"},"logs":{"type":"array","description":"List of logs.","items":{"$ref":"#\/components\/schemas\/log"},"x-example":""}},"required":["total","logs"]},"fileList":{"description":"Files List","type":"object","properties":{"total":{"type":"integer","description":"Total number of files documents that matched your query.","x-example":5,"format":"int32"},"files":{"type":"array","description":"List of files.","items":{"$ref":"#\/components\/schemas\/file"},"x-example":""}},"required":["total","files"]},"bucketList":{"description":"Buckets List","type":"object","properties":{"total":{"type":"integer","description":"Total number of buckets documents that matched your query.","x-example":5,"format":"int32"},"buckets":{"type":"array","description":"List of buckets.","items":{"$ref":"#\/components\/schemas\/bucket"},"x-example":""}},"required":["total","buckets"]},"teamList":{"description":"Teams List","type":"object","properties":{"total":{"type":"integer","description":"Total number of teams documents that matched your query.","x-example":5,"format":"int32"},"teams":{"type":"array","description":"List of teams.","items":{"$ref":"#\/components\/schemas\/team"},"x-example":""}},"required":["total","teams"]},"membershipList":{"description":"Memberships List","type":"object","properties":{"total":{"type":"integer","description":"Total number of memberships documents that matched your query.","x-example":5,"format":"int32"},"memberships":{"type":"array","description":"List of memberships.","items":{"$ref":"#\/components\/schemas\/membership"},"x-example":""}},"required":["total","memberships"]},"functionList":{"description":"Functions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of functions documents that matched your query.","x-example":5,"format":"int32"},"functions":{"type":"array","description":"List of functions.","items":{"$ref":"#\/components\/schemas\/function"},"x-example":""}},"required":["total","functions"]},"runtimeList":{"description":"Runtimes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of runtimes documents that matched your query.","x-example":5,"format":"int32"},"runtimes":{"type":"array","description":"List of runtimes.","items":{"$ref":"#\/components\/schemas\/runtime"},"x-example":""}},"required":["total","runtimes"]},"deploymentList":{"description":"Deployments List","type":"object","properties":{"total":{"type":"integer","description":"Total number of deployments documents that matched your query.","x-example":5,"format":"int32"},"deployments":{"type":"array","description":"List of deployments.","items":{"$ref":"#\/components\/schemas\/deployment"},"x-example":""}},"required":["total","deployments"]},"executionList":{"description":"Executions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of executions documents that matched your query.","x-example":5,"format":"int32"},"executions":{"type":"array","description":"List of executions.","items":{"$ref":"#\/components\/schemas\/execution"},"x-example":""}},"required":["total","executions"]},"countryList":{"description":"Countries List","type":"object","properties":{"total":{"type":"integer","description":"Total number of countries documents that matched your query.","x-example":5,"format":"int32"},"countries":{"type":"array","description":"List of countries.","items":{"$ref":"#\/components\/schemas\/country"},"x-example":""}},"required":["total","countries"]},"continentList":{"description":"Continents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of continents documents that matched your query.","x-example":5,"format":"int32"},"continents":{"type":"array","description":"List of continents.","items":{"$ref":"#\/components\/schemas\/continent"},"x-example":""}},"required":["total","continents"]},"languageList":{"description":"Languages List","type":"object","properties":{"total":{"type":"integer","description":"Total number of languages documents that matched your query.","x-example":5,"format":"int32"},"languages":{"type":"array","description":"List of languages.","items":{"$ref":"#\/components\/schemas\/language"},"x-example":""}},"required":["total","languages"]},"currencyList":{"description":"Currencies List","type":"object","properties":{"total":{"type":"integer","description":"Total number of currencies documents that matched your query.","x-example":5,"format":"int32"},"currencies":{"type":"array","description":"List of currencies.","items":{"$ref":"#\/components\/schemas\/currency"},"x-example":""}},"required":["total","currencies"]},"phoneList":{"description":"Phones List","type":"object","properties":{"total":{"type":"integer","description":"Total number of phones documents that matched your query.","x-example":5,"format":"int32"},"phones":{"type":"array","description":"List of phones.","items":{"$ref":"#\/components\/schemas\/phone"},"x-example":""}},"required":["total","phones"]},"variableList":{"description":"Variables List","type":"object","properties":{"total":{"type":"integer","description":"Total number of variables documents that matched your query.","x-example":5,"format":"int32"},"variables":{"type":"array","description":"List of variables.","items":{"$ref":"#\/components\/schemas\/variable"},"x-example":""}},"required":["total","variables"]},"localeCodeList":{"description":"Locale codes list","type":"object","properties":{"total":{"type":"integer","description":"Total number of localeCodes documents that matched your query.","x-example":5,"format":"int32"},"localeCodes":{"type":"array","description":"List of localeCodes.","items":{"$ref":"#\/components\/schemas\/localeCode"},"x-example":""}},"required":["total","localeCodes"]},"providerList":{"description":"Provider list","type":"object","properties":{"total":{"type":"integer","description":"Total number of providers documents that matched your query.","x-example":5,"format":"int32"},"providers":{"type":"array","description":"List of providers.","items":{"$ref":"#\/components\/schemas\/provider"},"x-example":""}},"required":["total","providers"]},"messageList":{"description":"Message list","type":"object","properties":{"total":{"type":"integer","description":"Total number of messages documents that matched your query.","x-example":5,"format":"int32"},"messages":{"type":"array","description":"List of messages.","items":{"$ref":"#\/components\/schemas\/message"},"x-example":""}},"required":["total","messages"]},"topicList":{"description":"Topic list","type":"object","properties":{"total":{"type":"integer","description":"Total number of topics documents that matched your query.","x-example":5,"format":"int32"},"topics":{"type":"array","description":"List of topics.","items":{"$ref":"#\/components\/schemas\/topic"},"x-example":""}},"required":["total","topics"]},"subscriberList":{"description":"Subscriber list","type":"object","properties":{"total":{"type":"integer","description":"Total number of subscribers documents that matched your query.","x-example":5,"format":"int32"},"subscribers":{"type":"array","description":"List of subscribers.","items":{"$ref":"#\/components\/schemas\/subscriber"},"x-example":""}},"required":["total","subscribers"]},"targetList":{"description":"Target list","type":"object","properties":{"total":{"type":"integer","description":"Total number of targets documents that matched your query.","x-example":5,"format":"int32"},"targets":{"type":"array","description":"List of targets.","items":{"$ref":"#\/components\/schemas\/target"},"x-example":""}},"required":["total","targets"]},"database":{"description":"Database","type":"object","properties":{"$id":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Database name.","x-example":"My Database"},"$createdAt":{"type":"string","description":"Database creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Database update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"enabled":{"type":"boolean","description":"If database is enabled. Can be 'enabled' or 'disabled'. When disabled, the database is inaccessible to users, but remains accessible to Server SDKs using API keys.","x-example":false}},"required":["$id","name","$createdAt","$updatedAt","enabled"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Collection creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Collection update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Collection permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled. Can be 'enabled' or 'disabled'. When disabled, the collection is inaccessible to users, but remains accessible to Server SDKs using API keys.","x-example":false},"documentSecurity":{"type":"boolean","description":"Whether document-level permissions are enabled. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":true},"attributes":{"type":"array","description":"Collection attributes.","items":{"anyOf":[{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeRelationship"},{"$ref":"#\/components\/schemas\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"$ref":"#\/components\/schemas\/index"},"x-example":{}}},"required":["$id","$createdAt","$updatedAt","$permissions","databaseId","name","enabled","documentSecurity","attributes","indexes"]},"attributeList":{"description":"Attributes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of attributes in the given collection.","x-example":5,"format":"int32"},"attributes":{"type":"array","description":"List of attributes.","items":{"anyOf":[{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeRelationship"},{"$ref":"#\/components\/schemas\/attributeString"}]},"x-example":""}},"required":["total","attributes"]},"attributeString":{"description":"AttributeString","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"fullName"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"size":{"type":"integer","description":"Attribute size.","x-example":128,"format":"int32"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"default","nullable":true}},"required":["key","type","status","error","required","size"]},"attributeInteger":{"description":"AttributeInteger","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"count"},"type":{"type":"string","description":"Attribute type.","x-example":"integer"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"min":{"type":"integer","description":"Minimum value to enforce for new documents.","x-example":1,"format":"int32","nullable":true},"max":{"type":"integer","description":"Maximum value to enforce for new documents.","x-example":10,"format":"int32","nullable":true},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":10,"format":"int32","nullable":true}},"required":["key","type","status","error","required"]},"attributeFloat":{"description":"AttributeFloat","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"percentageCompleted"},"type":{"type":"string","description":"Attribute type.","x-example":"double"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"min":{"type":"number","description":"Minimum value to enforce for new documents.","x-example":1.5,"format":"double","nullable":true},"max":{"type":"number","description":"Maximum value to enforce for new documents.","x-example":10.5,"format":"double","nullable":true},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":2.5,"format":"double","nullable":true}},"required":["key","type","status","error","required"]},"attributeBoolean":{"description":"AttributeBoolean","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"isEnabled"},"type":{"type":"string","description":"Attribute type.","x-example":"boolean"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":false,"nullable":true}},"required":["key","type","status","error","required"]},"attributeEmail":{"description":"AttributeEmail","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"userEmail"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"format":{"type":"string","description":"String format.","x-example":"email"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"default@example.com","nullable":true}},"required":["key","type","status","error","required","format"]},"attributeEnum":{"description":"AttributeEnum","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"status"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"elements":{"type":"array","description":"Array of elements in enumerated type.","items":{"type":"string"},"x-example":"element"},"format":{"type":"string","description":"String format.","x-example":"enum"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"element","nullable":true}},"required":["key","type","status","error","required","elements","format"]},"attributeIp":{"description":"AttributeIP","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"ipAddress"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"format":{"type":"string","description":"String format.","x-example":"ip"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"192.0.2.0","nullable":true}},"required":["key","type","status","error","required","format"]},"attributeUrl":{"description":"AttributeURL","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"githubUrl"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"format":{"type":"string","description":"String format.","x-example":"url"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"http:\/\/example.com","nullable":true}},"required":["key","type","status","error","required","format"]},"attributeDatetime":{"description":"AttributeDatetime","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"birthDay"},"type":{"type":"string","description":"Attribute type.","x-example":"datetime"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"format":{"type":"string","description":"ISO 8601 format.","x-example":"datetime"},"default":{"type":"string","description":"Default value for attribute when not provided. Only null is optional","x-example":"2020-10-15T06:38:00.000+00:00","nullable":true}},"required":["key","type","status","error","required","format"]},"attributeRelationship":{"description":"AttributeRelationship","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"fullName"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"relatedCollection":{"type":"string","description":"The ID of the related collection.","x-example":"collection"},"relationType":{"type":"string","description":"The type of the relationship.","x-example":"oneToOne|oneToMany|manyToOne|manyToMany"},"twoWay":{"type":"boolean","description":"Is the relationship two-way?","x-example":false},"twoWayKey":{"type":"string","description":"The key of the two-way relationship.","x-example":"string"},"onDelete":{"type":"string","description":"How deleting the parent document will propagate to child documents.","x-example":"restrict|cascade|setNull"},"side":{"type":"string","description":"Whether this is the parent or child side of the relationship","x-example":"parent|child"}},"required":["key","type","status","error","required","relatedCollection","relationType","twoWay","twoWayKey","onDelete","side"]},"index":{"description":"Index","type":"object","properties":{"key":{"type":"string","description":"Index Key.","x-example":"index1"},"type":{"type":"string","description":"Index type.","x-example":"primary"},"status":{"type":"string","description":"Index status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an index.","x-example":"string"},"attributes":{"type":"array","description":"Index attributes.","items":{"type":"string"},"x-example":[]},"orders":{"type":"array","description":"Index orders.","items":{"type":"string"},"x-example":[],"nullable":true}},"required":["key","type","status","error","attributes"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"user":{"description":"User","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"password":{"type":"string","description":"Hashed user password.","x-example":"$argon2id$v=19$m=2048,t=4,p=3$aUZjLnliVWRINmFNTWMudg$5S+x+7uA31xFnrHFT47yFwcJeaP0w92L\/4LdgrVRXxE","nullable":true},"hash":{"type":"string","description":"Password hashing algorithm.","x-example":"argon2","nullable":true},"hashOptions":{"type":"object","description":"Password hashing algorithm configuration.","x-example":{},"items":{"oneOf":[{"$ref":"#\/components\/schemas\/algoArgon2"},{"$ref":"#\/components\/schemas\/algoScrypt"},{"$ref":"#\/components\/schemas\/algoScryptModified"},{"$ref":"#\/components\/schemas\/algoBcrypt"},{"$ref":"#\/components\/schemas\/algoPhpass"},{"$ref":"#\/components\/schemas\/algoSha"},{"$ref":"#\/components\/schemas\/algoMd5"}]},"nullable":true},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"labels":{"type":"array","description":"Labels for the user.","items":{"type":"string"},"x-example":["vip"]},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"$ref":"#\/components\/schemas\/preferences"}},"targets":{"type":"array","description":"A user-owned message receiver. A single user may have multiple e.g. emails, phones, and a browser. Each target is registered with a single provider.","items":{"$ref":"#\/components\/schemas\/target"},"x-example":[]},"accessedAt":{"type":"string","description":"Most recent access date in ISO 8601 format. This attribute is only updated again after 24 hours.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","$updatedAt","name","registration","status","labels","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs","targets","accessedAt"]},"algoMd5":{"description":"AlgoMD5","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"md5"}},"required":["type"]},"algoSha":{"description":"AlgoSHA","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"sha"}},"required":["type"]},"algoPhpass":{"description":"AlgoPHPass","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"phpass"}},"required":["type"]},"algoBcrypt":{"description":"AlgoBcrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"bcrypt"}},"required":["type"]},"algoScrypt":{"description":"AlgoScrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scrypt"},"costCpu":{"type":"integer","description":"CPU complexity of computed hash.","x-example":8,"format":"int32"},"costMemory":{"type":"integer","description":"Memory complexity of computed hash.","x-example":14,"format":"int32"},"costParallel":{"type":"integer","description":"Parallelization of computed hash.","x-example":1,"format":"int32"},"length":{"type":"integer","description":"Length used to compute hash.","x-example":64,"format":"int32"}},"required":["type","costCpu","costMemory","costParallel","length"]},"algoScryptModified":{"description":"AlgoScryptModified","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scryptMod"},"salt":{"type":"string","description":"Salt used to compute hash.","x-example":"UxLMreBr6tYyjQ=="},"saltSeparator":{"type":"string","description":"Separator used to compute hash.","x-example":"Bw=="},"signerKey":{"type":"string","description":"Key used to compute hash.","x-example":"XyEKE9RcTDeLEsL\/RjwPDBv\/RqDl8fb3gpYEOQaPihbxf1ZAtSOHCjuAAa7Q3oHpCYhXSN9tizHgVOwn6krflQ=="}},"required":["type","salt","saltSeparator","signerKey"]},"algoArgon2":{"description":"AlgoArgon2","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"argon2"},"memoryCost":{"type":"integer","description":"Memory used to compute hash.","x-example":65536,"format":"int32"},"timeCost":{"type":"integer","description":"Amount of time consumed to compute hash","x-example":4,"format":"int32"},"threads":{"type":"integer","description":"Number of threads used to compute hash.","x-example":3,"format":"int32"}},"required":["type","memoryCost","timeCost","threads"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true},"secret":{"type":"string","description":"Secret used to authenticate the user. Only included if the request was made with an API key","x-example":"5e5bb8c16897e"}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current","secret"]},"identity":{"description":"Identity","type":"object","properties":{"$id":{"type":"string","description":"Identity ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Identity creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Identity update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"provider":{"type":"string","description":"Identity Provider.","x-example":"email"},"providerUid":{"type":"string","description":"ID of the User in the Identity Provider.","x-example":"5e5bb8c16897e"},"providerEmail":{"type":"string","description":"Email of the User in the Identity Provider.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Identity Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Identity Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"}},"required":["$id","$createdAt","$updatedAt","userId","provider","providerUid","providerEmail","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"securityPhrase":{"type":"string","description":"Security phrase of a token. Empty if security phrase was not requested when creating a token. It includes randomly generated phrase which is also sent in the external resource such as email.","x-example":"Golden Fox"}},"required":["$id","$createdAt","userId","secret","expire","securityPhrase"]},"jwt":{"description":"JWT","type":"object","properties":{"jwt":{"type":"string","description":"JWT encoded string.","x-example":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c"}},"required":["jwt"]},"locale":{"description":"Locale","type":"object","properties":{"ip":{"type":"string","description":"User IP address.","x-example":"127.0.0.1"},"countryCode":{"type":"string","description":"Country code in [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) two-character format","x-example":"US"},"country":{"type":"string","description":"Country name. This field support localization.","x-example":"United States"},"continentCode":{"type":"string","description":"Continent code. A two character continent code \"AF\" for Africa, \"AN\" for Antarctica, \"AS\" for Asia, \"EU\" for Europe, \"NA\" for North America, \"OC\" for Oceania, and \"SA\" for South America.","x-example":"NA"},"continent":{"type":"string","description":"Continent name. This field support localization.","x-example":"North America"},"eu":{"type":"boolean","description":"True if country is part of the European Union.","x-example":false},"currency":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format","x-example":"USD"}},"required":["ip","countryCode","country","continentCode","continent","eu","currency"]},"localeCode":{"description":"LocaleCode","type":"object","properties":{"code":{"type":"string","description":"Locale codes in [ISO 639-1](https:\/\/en.wikipedia.org\/wiki\/List_of_ISO_639-1_codes)","x-example":"en-us"},"name":{"type":"string","description":"Locale name","x-example":"US"}},"required":["code","name"]},"file":{"description":"File","type":"object","properties":{"$id":{"type":"string","description":"File ID.","x-example":"5e5ea5c16897e"},"bucketId":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Bucket creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Bucket update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Bucket permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"fileSecurity":{"type":"boolean","description":"Whether file-level security is enabled. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":true},"name":{"type":"string","description":"Bucket name.","x-example":"Documents"},"enabled":{"type":"boolean","description":"Bucket enabled.","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size supported.","x-example":100,"format":"int32"},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions.","items":{"type":"string"},"x-example":["jpg","png"]},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Will be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd).","x-example":"gzip"},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$createdAt","$updatedAt","$permissions","fileSecurity","name","enabled","maximumFileSize","allowedFileExtensions","compression","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"},"prefs":{"type":"object","description":"Team preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"$ref":"#\/components\/schemas\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","total","prefs"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":["owner"]}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Function creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Function update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"users"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"enabled":{"type":"boolean","description":"Function enabled.","x-example":false},"live":{"type":"boolean","description":"Is the function deployed with the latest configuration? This is set to false if you've changed an environment variables, entrypoint, commands, or other settings that needs redeploy to be applied. When the value is false, redeploy the function to update it with the latest configuration.","x-example":false},"logging":{"type":"boolean","description":"Whether executions will be logged. When set to false, executions will not be logged, but will reduce resource used by your Appwrite project.","x-example":false},"runtime":{"type":"string","description":"Function execution runtime.","x-example":"python-3.8"},"deployment":{"type":"string","description":"Function's active deployment ID.","x-example":"5e5ea5c16897e"},"vars":{"type":"array","description":"Function variables.","items":{"$ref":"#\/components\/schemas\/variable"},"x-example":[]},"events":{"type":"array","description":"Function trigger events.","items":{"type":"string"},"x-example":"account.create"},"schedule":{"type":"string","description":"Function execution schedult in CRON format.","x-example":"5 4 * * *"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":300,"format":"int32"},"entrypoint":{"type":"string","description":"The entrypoint file used to execute the deployment.","x-example":"index.js"},"commands":{"type":"string","description":"The build command used to build the deployment.","x-example":"npm install"},"version":{"type":"string","description":"Version of Open Runtimes used for the function.","x-example":"v2"},"installationId":{"type":"string","description":"Function VCS (Version Control System) installation id.","x-example":"6m40at4ejk5h2u9s1hboo"},"providerRepositoryId":{"type":"string","description":"VCS (Version Control System) Repository ID","x-example":"appwrite"},"providerBranch":{"type":"string","description":"VCS (Version Control System) branch name","x-example":"main"},"providerRootDirectory":{"type":"string","description":"Path to function in VCS (Version Control System) repository","x-example":"functions\/helloWorld"},"providerSilentMode":{"type":"boolean","description":"Is VCS (Version Control System) connection is in silent mode? When in silence mode, no comments will be posted on the repository pull or merge requests","x-example":false}},"required":["$id","$createdAt","$updatedAt","execute","name","enabled","live","logging","runtime","deployment","vars","events","schedule","timeout","entrypoint","commands","version","installationId","providerRepositoryId","providerBranch","providerRootDirectory","providerSilentMode"]},"runtime":{"description":"Runtime","type":"object","properties":{"$id":{"type":"string","description":"Runtime ID.","x-example":"python-3.8"},"name":{"type":"string","description":"Runtime Name.","x-example":"Python"},"version":{"type":"string","description":"Runtime version.","x-example":"3.8"},"base":{"type":"string","description":"Base Docker image used to build the runtime.","x-example":"python:3.8-alpine"},"image":{"type":"string","description":"Image name of Docker Hub.","x-example":"appwrite\\\/runtime-for-python:3.8"},"logo":{"type":"string","description":"Name of the logo image.","x-example":"python.png"},"supports":{"type":"array","description":"List of supported architectures.","items":{"type":"string"},"x-example":"amd64"}},"required":["$id","name","version","base","image","logo","supports"]},"deployment":{"description":"Deployment","type":"object","properties":{"$id":{"type":"string","description":"Deployment ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Deployment creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Deployment update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"type":{"type":"string","description":"Type of deployment.","x-example":"vcs"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"index.js"},"size":{"type":"integer","description":"The code size in bytes.","x-example":128,"format":"int32"},"buildId":{"type":"string","description":"The current build ID.","x-example":"5e5ea5c16897e"},"activate":{"type":"boolean","description":"Whether the deployment should be automatically activated.","x-example":true},"status":{"type":"string","description":"The deployment status. Possible values are \"processing\", \"building\", \"waiting\", \"ready\", and \"failed\".","x-example":"ready"},"buildLogs":{"type":"string","description":"The build logs.","x-example":"Compiling source files..."},"buildTime":{"type":"integer","description":"The current build time in seconds.","x-example":128,"format":"int32"},"providerRepositoryName":{"type":"string","description":"The name of the vcs provider repository","x-example":"database"},"providerRepositoryOwner":{"type":"string","description":"The name of the vcs provider repository owner","x-example":"utopia"},"providerRepositoryUrl":{"type":"string","description":"The url of the vcs provider repository","x-example":"https:\/\/github.com\/vermakhushboo\/g4-node-function"},"providerBranch":{"type":"string","description":"The branch of the vcs repository","x-example":"0.7.x"},"providerCommitHash":{"type":"string","description":"The commit hash of the vcs commit","x-example":"7c3f25d"},"providerCommitAuthorUrl":{"type":"string","description":"The url of vcs commit author","x-example":"https:\/\/github.com\/vermakhushboo"},"providerCommitAuthor":{"type":"string","description":"The name of vcs commit author","x-example":"Khushboo Verma"},"providerCommitMessage":{"type":"string","description":"The commit message","x-example":"Update index.js"},"providerCommitUrl":{"type":"string","description":"The url of the vcs commit","x-example":"https:\/\/github.com\/vermakhushboo\/g4-node-function\/commit\/60c0416257a9cbcdd96b2d370c38d8f8d150ccfb"},"providerBranchUrl":{"type":"string","description":"The branch of the vcs repository","x-example":"https:\/\/github.com\/vermakhushboo\/appwrite\/tree\/0.7.x"}},"required":["$id","$createdAt","$updatedAt","type","resourceId","resourceType","entrypoint","size","buildId","activate","status","buildLogs","buildTime","providerRepositoryName","providerRepositoryOwner","providerRepositoryUrl","providerBranch","providerCommitHash","providerCommitAuthorUrl","providerCommitAuthor","providerCommitMessage","providerCommitUrl","providerBranchUrl"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"requestMethod":{"type":"string","description":"HTTP request method type.","x-example":"GET"},"requestPath":{"type":"string","description":"HTTP request path and query.","x-example":"\/articles?id=5"},"requestHeaders":{"type":"array","description":"HTTP response headers as a key-value object. This will return only whitelisted headers. All headers are returned if execution is created as synchronous.","items":{"$ref":"#\/components\/schemas\/headers"},"x-example":[{"Content-Type":"application\/json"}]},"responseStatusCode":{"type":"integer","description":"HTTP response status code.","x-example":200,"format":"int32"},"responseBody":{"type":"string","description":"HTTP response body. This will return empty unless execution is created as synchronous.","x-example":"Developers are awesome."},"responseHeaders":{"type":"array","description":"HTTP response headers as a key-value object. This will return only whitelisted headers. All headers are returned if execution is created as synchronous.","items":{"$ref":"#\/components\/schemas\/headers"},"x-example":[{"Content-Type":"application\/json"}]},"logs":{"type":"string","description":"Function logs. Includes the last 4,000 characters. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"errors":{"type":"string","description":"Function errors. Includes the last 4,000 characters. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"Function execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","requestMethod","requestPath","requestHeaders","responseStatusCode","responseBody","responseHeaders","logs","errors","duration"]},"variable":{"description":"Variable","type":"object","properties":{"$id":{"type":"string","description":"Variable ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"key":{"type":"string","description":"Variable key.","x-example":"API_KEY"},"value":{"type":"string","description":"Variable value.","x-example":"myPa$$word1"},"resourceType":{"type":"string","description":"Service to which the variable belongs. Possible values are \"project\", \"function\"","x-example":"function"},"resourceId":{"type":"string","description":"ID of resource to which the variable belongs. If resourceType is \"project\", it is empty. If resourceType is \"function\", it is ID of the function.","x-example":"myAwesomeFunction"}},"required":["$id","$createdAt","$updatedAt","key","value","resourceType","resourceId"]},"country":{"description":"Country","type":"object","properties":{"name":{"type":"string","description":"Country name.","x-example":"United States"},"code":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"}},"required":["name","code"]},"continent":{"description":"Continent","type":"object","properties":{"name":{"type":"string","description":"Continent name.","x-example":"Europe"},"code":{"type":"string","description":"Continent two letter code.","x-example":"EU"}},"required":["name","code"]},"language":{"description":"Language","type":"object","properties":{"name":{"type":"string","description":"Language name.","x-example":"Italian"},"code":{"type":"string","description":"Language two-character ISO 639-1 codes.","x-example":"it"},"nativeName":{"type":"string","description":"Language native name.","x-example":"Italiano"}},"required":["name","code","nativeName"]},"currency":{"description":"Currency","type":"object","properties":{"symbol":{"type":"string","description":"Currency symbol.","x-example":"$"},"name":{"type":"string","description":"Currency name.","x-example":"US dollar"},"symbolNative":{"type":"string","description":"Currency native symbol.","x-example":"$"},"decimalDigits":{"type":"integer","description":"Number of decimal digits.","x-example":2,"format":"int32"},"rounding":{"type":"number","description":"Currency digit rounding.","x-example":0,"format":"double"},"code":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format.","x-example":"USD"},"namePlural":{"type":"string","description":"Currency plural name","x-example":"US dollars"}},"required":["symbol","name","symbolNative","decimalDigits","rounding","code","namePlural"]},"phone":{"description":"Phone","type":"object","properties":{"code":{"type":"string","description":"Phone code.","x-example":"+1"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["code","countryCode","countryName"]},"healthAntivirus":{"description":"Health Antivirus","type":"object","properties":{"version":{"type":"string","description":"Antivirus version.","x-example":"1.0.0"},"status":{"type":"string","description":"Antivirus status. Possible values can are: `disabled`, `offline`, `online`","x-example":"online"}},"required":["version","status"]},"healthQueue":{"description":"Health Queue","type":"object","properties":{"size":{"type":"integer","description":"Amount of actions in the queue.","x-example":8,"format":"int32"}},"required":["size"]},"healthStatus":{"description":"Health Status","type":"object","properties":{"name":{"type":"string","description":"Name of the service.","x-example":"database"},"ping":{"type":"integer","description":"Duration in milliseconds how long the health check took.","x-example":128,"format":"int32"},"status":{"type":"string","description":"Service status. Possible values can are: `pass`, `fail`","x-example":"pass"}},"required":["name","ping","status"]},"healthTime":{"description":"Health Time","type":"object","properties":{"remoteTime":{"type":"integer","description":"Current unix timestamp on trustful remote server.","x-example":1639490751,"format":"int32"},"localTime":{"type":"integer","description":"Current unix timestamp of local server where Appwrite runs.","x-example":1639490844,"format":"int32"},"diff":{"type":"integer","description":"Difference of unix remote and local timestamps in milliseconds.","x-example":93,"format":"int32"}},"required":["remoteTime","localTime","diff"]},"headers":{"description":"Headers","type":"object","properties":{"name":{"type":"string","description":"Header name.","x-example":"Content-Type"},"value":{"type":"string","description":"Header value.","x-example":"application\/json"}},"required":["name","value"]},"provider":{"description":"Provider","type":"object","properties":{"$id":{"type":"string","description":"Provider ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Provider creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Provider update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"The name for the provider instance.","x-example":"Mailgun"},"provider":{"type":"string","description":"The name of the provider service.","x-example":"mailgun"},"enabled":{"type":"boolean","description":"Is provider enabled?","x-example":true},"type":{"type":"string","description":"Type of provider.","x-example":"sms"},"credentials":{"type":"object","description":"Provider credentials.","x-example":{"key":"123456789"}},"options":{"type":"object","description":"Provider options.","x-example":{"from":"sender-email@mydomain"},"nullable":true}},"required":["$id","$createdAt","$updatedAt","name","provider","enabled","type","credentials"]},"message":{"description":"Message","type":"object","properties":{"$id":{"type":"string","description":"Message ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Message creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Message update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerType":{"type":"string","description":"Message provider type.","x-example":"email"},"topics":{"type":"array","description":"Topic IDs set as recipients.","items":{"type":"string"},"x-example":["5e5ea5c16897e"]},"users":{"type":"array","description":"User IDs set as recipients.","items":{"type":"string"},"x-example":["5e5ea5c16897e"]},"targets":{"type":"array","description":"Target IDs set as recipients.","items":{"type":"string"},"x-example":["5e5ea5c16897e"]},"scheduledAt":{"type":"string","description":"The scheduled time for message.","x-example":"2020-10-15T06:38:00.000+00:00","nullable":true},"deliveredAt":{"type":"string","description":"The time when the message was delivered.","x-example":"2020-10-15T06:38:00.000+00:00","nullable":true},"deliveryErrors":{"type":"array","description":"Delivery errors if any.","items":{"type":"string"},"x-example":["Failed to send message to target 5e5ea5c16897e: Credentials not valid."],"nullable":true},"deliveredTotal":{"type":"integer","description":"Number of recipients the message was delivered to.","x-example":1,"format":"int32"},"data":{"type":"object","description":"Data of the message.","x-example":{"subject":"Welcome to Appwrite","content":"Hi there, welcome to Appwrite family."}},"status":{"type":"string","description":"Status of delivery.","x-example":"Message status can be one of the following: processing, sent, cancelled, failed."},"description":{"type":"string","description":"Message description.","x-example":"Welcome Email.","nullable":true}},"required":["$id","$createdAt","$updatedAt","providerType","topics","users","targets","deliveredTotal","data","status"]},"topic":{"description":"Topic","type":"object","properties":{"$id":{"type":"string","description":"Topic ID.","x-example":"259125845563242502"},"$createdAt":{"type":"string","description":"Topic creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Topic update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"The name of the topic.","x-example":"events"},"total":{"type":"integer","description":"Total count of subscribers subscribed to topic.","x-example":100,"format":"int32"},"description":{"type":"string","description":"Description of the topic.","x-example":"All events related messages will be sent to this topic.","nullable":true}},"required":["$id","$createdAt","$updatedAt","name","total"]},"subscriber":{"description":"Subscriber","type":"object","properties":{"$id":{"type":"string","description":"Subscriber ID.","x-example":"259125845563242502"},"$createdAt":{"type":"string","description":"Subscriber creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Subscriber update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"targetId":{"type":"string","description":"Target ID.","x-example":"259125845563242502"},"target":{"type":"object","description":"Target.","x-example":{"$id":"259125845563242502","$createdAt":"2020-10-15T06:38:00.000+00:00","$updatedAt":"2020-10-15T06:38:00.000+00:00","providerType":"email","providerId":"259125845563242502","name":"ageon-app-email","identifier":"random-mail@email.org","userId":"5e5ea5c16897e"},"items":{"$ref":"#\/components\/schemas\/target"}},"userId":{"type":"string","description":"Topic ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User Name.","x-example":"Aegon Targaryen"},"topicId":{"type":"string","description":"Topic ID.","x-example":"259125845563242502"},"providerType":{"type":"string","description":"The target provider type. Can be one of the following: `email`, `sms` or `push`.","x-example":"email"}},"required":["$id","$createdAt","$updatedAt","targetId","target","userId","userName","topicId","providerType"]},"target":{"description":"Target","type":"object","properties":{"$id":{"type":"string","description":"Target ID.","x-example":"259125845563242502"},"$createdAt":{"type":"string","description":"Target creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Target update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Target Name.","x-example":"Aegon apple token"},"userId":{"type":"string","description":"User ID.","x-example":"259125845563242502"},"providerId":{"type":"string","description":"Provider ID.","x-example":"259125845563242502","nullable":true},"providerType":{"type":"string","description":"The target provider type. Can be one of the following: `email`, `sms` or `push`.","x-example":"email"},"identifier":{"type":"string","description":"The target identifier.","x-example":"token"}},"required":["$id","$createdAt","$updatedAt","name","userId","providerType","identifier"]}},"securitySchemes":{"Project":{"type":"apiKey","name":"X-Appwrite-Project","description":"Your project ID","in":"header","x-appwrite":{"demo":"5df5acd0d48c2"}},"Key":{"type":"apiKey","name":"X-Appwrite-Key","description":"Your secret API key","in":"header","x-appwrite":{"demo":"919c2d18fb5d4...a2ae413da83346ad2"}},"JWT":{"type":"apiKey","name":"X-Appwrite-JWT","description":"Your secret JSON Web Token","in":"header"},"Locale":{"type":"apiKey","name":"X-Appwrite-Locale","description":"","in":"header","x-appwrite":{"demo":"en"}},"Session":{"type":"apiKey","name":"X-Appwrite-Session","description":"The user session to authenticate with","in":"header"},"ForwardedFor":{"type":"apiKey","name":"X-Forwarded-For","description":"The IP address of the client that made the request","in":"header"},"ForwardedUserAgent":{"type":"apiKey","name":"X-Forwarded-User-Agent","description":"The user agent string of the client that made the request","in":"header"}}},"externalDocs":{"description":"Full API docs, specs and tutorials","url":"https:\/\/appwrite.io\/docs"}} \ No newline at end of file diff --git a/app/config/specs/swagger2-latest-client.json b/app/config/specs/swagger2-latest-client.json index ec059983c2..232dcc1d75 100644 --- a/app/config/specs/swagger2-latest-client.json +++ b/app/config/specs/swagger2-latest-client.json @@ -1 +1 @@ -{"swagger":"2.0","info":{"version":"1.4.13","title":"Appwrite","description":"Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https:\/\/appwrite.io\/docs](https:\/\/appwrite.io\/docs)","termsOfService":"https:\/\/appwrite.io\/policy\/terms","contact":{"name":"Appwrite Team","url":"https:\/\/appwrite.io\/support","email":"team@appwrite.io"},"license":{"name":"BSD-3-Clause","url":"https:\/\/raw.githubusercontent.com\/appwrite\/appwrite\/master\/LICENSE"}},"host":"HOSTNAME","basePath":"\/v1","schemes":["https"],"consumes":["application\/json","multipart\/form-data"],"produces":["application\/json"],"securityDefinitions":{"Project":{"type":"apiKey","name":"X-Appwrite-Project","description":"Your project ID","in":"header","x-appwrite":{"demo":"5df5acd0d48c2"}},"JWT":{"type":"apiKey","name":"X-Appwrite-JWT","description":"Your secret JSON Web Token","in":"header","x-appwrite":{"demo":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ..."}},"Locale":{"type":"apiKey","name":"X-Appwrite-Locale","description":"","in":"header","x-appwrite":{"demo":"en"}},"Session":{"type":"apiKey","name":"X-Appwrite-Session","description":"The user session to authenticate with","in":"header"}},"paths":{"\/account":{"get":{"summary":"Get account","operationId":"accountGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get the currently logged in user.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"get","weight":22,"cookies":false,"type":"","demo":"account\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]},"post":{"summary":"Create account","operationId":"accountCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to allow a new user to register a new account in your project. After the user registration completes successfully, you can use the [\/account\/verfication](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createVerification) route to start verifying the user email address. To allow the new user to login to their new account, you need to create a new [account session](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createEmailSession).","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"create","weight":7,"cookies":false,"type":"","demo":"account\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"New user password. Must be between 8 and 256 chars.","default":null,"x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/account\/email":{"patch":{"summary":"Update email","operationId":"accountUpdateEmail","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateEmail","weight":29,"cookies":false,"type":"","demo":"account\/update-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["email","password"]}}]}},"\/account\/identities":{"get":{"summary":"List Identities","operationId":"accountListIdentities","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get the list of identities for the currently logged in user.","responses":{"200":{"description":"Identities List","schema":{"$ref":"#\/definitions\/identityList"}}},"x-appwrite":{"method":"listIdentities","weight":13,"cookies":false,"type":"","demo":"account\/list-identities.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-identities.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/identities","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, provider, providerUid, providerEmail, providerAccessTokenExpiry","required":false,"type":"string","default":[],"in":"query"}]}},"\/account\/identities\/{identityId}":{"delete":{"summary":"Delete identity","operationId":"accountDeleteIdentity","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Delete an identity by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIdentity","weight":14,"cookies":false,"type":"","demo":"account\/delete-identity.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-identity.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"identityId","description":"Identity ID.","required":true,"type":"string","x-example":"[IDENTITY_ID]","in":"path"}]}},"\/account\/jwt":{"post":{"summary":"Create JWT","operationId":"accountCreateJWT","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to create a JSON Web Token. You can use the resulting JWT to authenticate on behalf of the current user when working with the Appwrite server-side API and SDKs. The JWT secret is valid for 15 minutes from its creation and will be invalid if the user will logout in that time frame.","responses":{"201":{"description":"JWT","schema":{"$ref":"#\/definitions\/jwt"}}},"x-appwrite":{"method":"createJWT","weight":20,"cookies":false,"type":"","demo":"account\/create-j-w-t.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-jwt.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"List logs","operationId":"accountListLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get the list of latest security activity logs for the currently logged in user. Each log returns user IP address, location and date and time of log.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listLogs","weight":25,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update name","operationId":"accountUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateName","weight":27,"cookies":false,"type":"","demo":"account\/update-name.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-name.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"User name. Max length: 128 chars.","default":null,"x-example":"[NAME]"}},"required":["name"]}}]}},"\/account\/password":{"patch":{"summary":"Update password","operationId":"accountUpdatePassword","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePassword","weight":28,"cookies":false,"type":"","demo":"account\/update-password.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-password.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"password":{"type":"string","description":"New user password. Must be at least 8 chars.","default":null,"x-example":null},"oldPassword":{"type":"string","description":"Current user password. Must be at least 8 chars.","default":"","x-example":"password"}},"required":["password"]}}]}},"\/account\/phone":{"patch":{"summary":"Update phone","operationId":"accountUpdatePhone","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createPhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePhone","weight":30,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["phone","password"]}}]}},"\/account\/prefs":{"get":{"summary":"Get account preferences","operationId":"accountGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get the preferences as a key-value object for the currently logged in user.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":23,"cookies":false,"type":"","demo":"account\/get-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/prefs","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]},"patch":{"summary":"Update preferences","operationId":"accountUpdatePrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account preferences. The object you pass is stored as is, and replaces any previous value. The maximum allowed prefs size is 64kB and throws error if exceeded.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePrefs","weight":31,"cookies":false,"type":"","demo":"account\/update-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/prefs","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"prefs":{"type":"object","description":"Prefs key-value JSON object.","default":{},"x-example":"{}"}},"required":["prefs"]}}]}},"\/account\/recovery":{"post":{"summary":"Create password recovery","operationId":"accountCreateRecovery","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Sends the user an email with a temporary secret key for password reset. When the user clicks the confirmation link he is redirected back to your app password reset URL with the secret key and email address values attached to the URL query string. Use the query string params to submit a request to the [PUT \/account\/recovery](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateRecovery) endpoint to complete the process. The verification link sent to the user's email address is valid for 1 hour.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createRecovery","weight":36,"cookies":false,"type":"","demo":"account\/create-recovery.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-recovery.md","rate-limit":10,"rate-time":3600,"rate-key":["url:{url},email:{param-email}","ip:{ip}"],"scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"url":{"type":"string","description":"URL to redirect the user back to your app from the recovery email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":null,"x-example":"https:\/\/example.com"}},"required":["email","url"]}}]},"put":{"summary":"Create password recovery (confirmation)","operationId":"accountUpdateRecovery","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete the user account password reset. Both the **userId** and **secret** arguments will be passed as query parameters to the redirect URL you have provided when sending your request to the [POST \/account\/recovery](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createRecovery) endpoint.\n\nPlease note that in order to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) the only valid redirect URLs are the ones from domains you have set when adding your platforms in the console interface.","responses":{"200":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"updateRecovery","weight":37,"cookies":false,"type":"","demo":"account\/update-recovery.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-recovery.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid reset token.","default":null,"x-example":"[SECRET]"},"password":{"type":"string","description":"New user password. Must be between 8 and 256 chars.","default":null,"x-example":null}},"required":["userId","secret","password"]}}]}},"\/account\/sessions":{"get":{"summary":"List sessions","operationId":"accountListSessions","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get the list of active sessions across different devices for the currently logged in user.","responses":{"200":{"description":"Sessions List","schema":{"$ref":"#\/definitions\/sessionList"}}},"x-appwrite":{"method":"listSessions","weight":24,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/sessions","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]},"delete":{"summary":"Delete sessions","operationId":"accountDeleteSessions","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":35,"cookies":false,"type":"","demo":"account\/delete-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-sessions.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/account\/sessions\/anonymous":{"post":{"summary":"Create anonymous session","operationId":"accountCreateAnonymousSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to allow a new user to register an anonymous account in your project. This route will also create a new session for the user. To allow the new user to convert an anonymous account to a normal account, you need to update its [email and password](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateEmail) or create an [OAuth2 session](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#CreateOAuth2Session).","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"createAnonymousSession","weight":19,"cookies":false,"type":"","demo":"account\/create-anonymous-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-anonymous.md","rate-limit":50,"rate-time":3600,"rate-key":"ip:{ip}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/sessions\/email":{"post":{"summary":"Create email password session","operationId":"accountCreateEmailPasswordSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Allow the user to login into their account by providing a valid email and password combination. This route will create a new session for the user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"createEmailPasswordSession","weight":8,"cookies":false,"type":"","demo":"account\/create-email-password-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-email-password.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["email","password"]}}]}},"\/account\/sessions\/magic-url":{"put":{"summary":"Create session (deprecated)","operationId":"accountUpdateMagicURLSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to create a session from token. Provide the **userId** and **secret** parameters from the successful response of authentication flows initiated by token creation. For example, magic URL and phone login.","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateMagicURLSession","weight":16,"cookies":false,"type":"","demo":"account\/update-magic-u-r-l-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session.md","rate-limit":10,"rate-time":3600,"rate-key":"ip:{ip},userId:{param-userId}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/account\/sessions\/oauth2\/{provider}":{"get":{"summary":"Create OAuth2 session","operationId":"accountCreateOAuth2Session","consumes":["application\/json"],"produces":["text\/html"],"tags":["account"],"description":"Allow the user to login to their account using the OAuth2 provider of their choice. Each OAuth2 provider should be enabled from the Appwrite console first. Use the success and failure arguments to provide a redirect URL's back to your app when login is completed.\n\nIf there is already an active session, the new session will be attached to the logged-in account. If there are no active sessions, the server will attempt to look for a user with the same email address as the email received from the OAuth2 provider and attach the new session to the existing user. If no matching user is found - the server will create a new user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).\n","responses":{"301":{"description":"No content"}},"x-appwrite":{"method":"createOAuth2Session","weight":9,"cookies":false,"type":"webAuth","demo":"account\/create-o-auth2session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-oauth2.md","rate-limit":50,"rate-time":3600,"rate-key":"ip:{ip}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"provider","description":"OAuth2 Provider. Currently, supported providers are: amazon, apple, auth0, authentik, autodesk, bitbucket, bitly, box, dailymotion, discord, disqus, dropbox, etsy, facebook, github, gitlab, google, linkedin, microsoft, notion, oidc, okta, paypal, paypalSandbox, podio, salesforce, slack, spotify, stripe, tradeshift, tradeshiftBox, twitch, wordpress, yahoo, yammer, yandex, zoho, zoom.","required":true,"type":"string","x-example":"amazon","enum":["amazon","apple","auth0","authentik","autodesk","bitbucket","bitly","box","dailymotion","discord","disqus","dropbox","etsy","facebook","github","gitlab","google","linkedin","microsoft","notion","oidc","okta","paypal","paypalSandbox","podio","salesforce","slack","spotify","stripe","tradeshift","tradeshiftBox","twitch","wordpress","yahoo","yammer","yandex","zoho","zoom","mock"],"x-enum-name":"Provider","x-enum-keys":[],"in":"path"},{"name":"success","description":"URL to redirect back to your app after a successful login attempt. Only URLs from hostnames in your project's platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","required":false,"type":"string","format":"url","x-example":"https:\/\/example.com","default":"","in":"query"},{"name":"failure","description":"URL to redirect back to your app after a failed login attempt. Only URLs from hostnames in your project's platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","required":false,"type":"string","format":"url","x-example":"https:\/\/example.com","default":"","in":"query"},{"name":"token","description":"Include token credentials in the final redirect, useful for server-side integrations, or when cookies are not available.","required":false,"type":"boolean","x-example":false,"default":false,"in":"query"},{"name":"scopes","description":"A list of custom OAuth2 scopes. Check each provider internal docs for a list of supported scopes. Maximum of 100 scopes are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/sessions\/token":{"post":{"summary":"Create session","operationId":"accountCreateSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to create a session from token. Provide the **userId** and **secret** parameters from the successful response of authentication flows initiated by token creation. For example, magic URL and phone login.","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"createSession","weight":17,"cookies":false,"type":"","demo":"account\/create-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session.md","rate-limit":10,"rate-time":3600,"rate-key":"ip:{ip},userId:{param-userId}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Secret of a token generated by login methods. For example, the `createMagicURLToken` or `createPhoneToken` methods.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/account\/sessions\/{sessionId}":{"get":{"summary":"Get session","operationId":"accountGetSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to get a logged in user's session using a Session ID. Inputting 'current' will return the current session being used.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"getSession","weight":26,"cookies":false,"type":"","demo":"account\/get-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-session.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/sessions","offline-key":"{sessionId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to get the current device session.","required":true,"type":"string","x-example":"[SESSION_ID]","in":"path"}]},"patch":{"summary":"Update OAuth session (refresh tokens)","operationId":"accountUpdateSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Access tokens have limited lifespan and expire to mitigate security risks. If session was created using an OAuth provider, this route can be used to \"refresh\" the access token.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateSession","weight":34,"cookies":false,"type":"","demo":"account\/update-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-session.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to update the current device session.","required":true,"type":"string","x-example":"[SESSION_ID]","in":"path"}]},"delete":{"summary":"Delete session","operationId":"accountDeleteSession","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Logout the user. Use 'current' as the session ID to logout on this device, use a session ID to logout on another device. If you're looking to logout the user on all devices, use [Delete Sessions](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#deleteSessions) instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSession","weight":33,"cookies":false,"type":"","demo":"account\/delete-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-session.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to delete the current device session.","required":true,"type":"string","x-example":"[SESSION_ID]","in":"path"}]}},"\/account\/status":{"patch":{"summary":"Update status","operationId":"accountUpdateStatus","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateStatus","weight":32,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/account\/targets\/{targetId}\/push":{"put":{"summary":"Update Account's push target","operationId":"accountUpdatePushTarget","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"200":{"description":"Target","schema":{"$ref":"#\/definitions\/target"}}},"x-appwrite":{"method":"updatePushTarget","weight":42,"cookies":false,"type":"","demo":"account\/update-push-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"","platforms":["client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id"},"parameters":[{"name":"targetId","description":"Target ID.","required":true,"type":"string","x-example":"[TARGET_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"identifier":{"type":"string","description":"The target identifier (token, email, phone etc.)","default":null,"x-example":"[IDENTIFIER]"}},"required":["identifier"]}}]}},"\/account\/tokens\/magic-url":{"post":{"summary":"Create magic URL token","operationId":"accountCreateMagicURLToken","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Sends the user an email with a secret key for creating a session. If the provided user ID has not been registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [PUT \/account\/sessions\/magic-url](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateMagicURLSession) endpoint to complete the login process. The link sent to the user's email address is valid for 1 hour. If you are on a mobile device you can leave the URL parameter empty, so that the login completion will be handled by your Appwrite instance by default.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).\n","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createMagicURLToken","weight":15,"cookies":false,"type":"","demo":"account\/create-magic-u-r-l-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-token-magic-url.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"url":{"type":"string","description":"URL to redirect the user back to your app from the magic URL login. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":"","x-example":"https:\/\/example.com"},"securityPhrase":{"type":"boolean","description":"Toggle for security phrase. If enabled, email will be send with a randomly generated phrase and the phrase will also be included in the response. Confirming phrases match increases the security of authentication flow.","default":false,"x-example":false}},"required":["userId","email"]}}]}},"\/account\/tokens\/phone":{"post":{"summary":"Create phone token","operationId":"accountCreatePhoneToken","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Sends the user an SMS with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [PUT \/account\/sessions\/phone](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updatePhoneSession) endpoint to complete the login process. The secret sent to the user's phone is valid for 15 minutes.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createPhoneToken","weight":18,"cookies":false,"type":"","demo":"account\/create-phone-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-token-phone.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},phone:{param-phone}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"}},"required":["userId","phone"]}}]}},"\/account\/verification":{"post":{"summary":"Create email verification","operationId":"accountCreateVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to send a verification message to your user email address to confirm they are the valid owners of that address. Both the **userId** and **secret** arguments will be passed as query parameters to the URL you have provided to be attached to the verification email. The provided URL should redirect the user back to your app and allow you to complete the verification process by verifying both the **userId** and **secret** parameters. Learn more about how to [complete the verification process](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateVerification). The verification link sent to the user's email address is valid for 7 days.\n\nPlease note that in order to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md), the only valid redirect URLs are the ones from domains you have set when adding your platforms in the console interface.\n","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createVerification","weight":38,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"url":{"type":"string","description":"URL to redirect the user back to your app from the verification email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":null,"x-example":"https:\/\/example.com"}},"required":["url"]}}]},"put":{"summary":"Create email verification (confirmation)","operationId":"accountUpdateVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete the user email verification process. Use both the **userId** and **secret** parameters that were attached to your app URL to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"updateVerification","weight":39,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/account\/verification\/phone":{"post":{"summary":"Create phone verification","operationId":"accountCreatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updatePhone) endpoint. Learn more about how to [complete the verification process](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createPhoneVerification","weight":40,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{userId}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]},"put":{"summary":"Create phone verification (confirmation)","operationId":"accountUpdatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"updatePhoneVerification","weight":41,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/avatars\/browsers\/{code}":{"get":{"summary":"Get browser icon","operationId":"avatarsGetBrowser","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"You can use this endpoint to show different browser icons to your users. The code argument receives the browser code as it appears in your user [GET \/account\/sessions](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#getSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getBrowser","weight":44,"cookies":false,"type":"location","demo":"avatars\/get-browser.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-browser.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"code","description":"Browser Code.","required":true,"type":"string","x-example":"aa","enum":["aa","an","ch","ci","cm","cr","ff","sf","mf","ps","oi","om","op","on"],"x-enum-name":"Browser","x-enum-keys":["Avant Browser","Android WebView Beta","Google Chrome","Google Chrome (iOS)","Google Chrome (Mobile)","Chromium","Mozilla Firefox","Safari","Mobile Safari","Microsoft Edge","Microsoft Edge (iOS)","Opera Mini","Opera","Opera (Next)"],"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"}]}},"\/avatars\/credit-cards\/{code}":{"get":{"summary":"Get credit card icon","operationId":"avatarsGetCreditCard","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"The credit card endpoint will return you the icon of the credit card provider you need. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getCreditCard","weight":43,"cookies":false,"type":"location","demo":"avatars\/get-credit-card.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-credit-card.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"code","description":"Credit Card Code. Possible values: amex, argencard, cabal, censosud, diners, discover, elo, hipercard, jcb, mastercard, naranja, targeta-shopping, union-china-pay, visa, mir, maestro.","required":true,"type":"string","x-example":"amex","enum":["amex","argencard","cabal","censosud","diners","discover","elo","hipercard","jcb","mastercard","naranja","targeta-shopping","union-china-pay","visa","mir","maestro"],"x-enum-name":"CreditCard","x-enum-keys":["American Express","Argencard","Cabal","Consosud","Diners Club","Discover","Elo","Hipercard","JCB","Mastercard","Naranja","Tarjeta Shopping","Union China Pay","Visa","MIR","Maestro"],"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"}]}},"\/avatars\/favicon":{"get":{"summary":"Get favicon","operationId":"avatarsGetFavicon","consumes":["application\/json"],"produces":["image\/*"],"tags":["avatars"],"description":"Use this endpoint to fetch the favorite icon (AKA favicon) of any remote website URL.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFavicon","weight":47,"cookies":false,"type":"location","demo":"avatars\/get-favicon.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-favicon.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"url","description":"Website URL which you want to fetch the favicon from.","required":true,"type":"string","format":"url","x-example":"https:\/\/example.com","in":"query"}]}},"\/avatars\/flags\/{code}":{"get":{"summary":"Get country flag","operationId":"avatarsGetFlag","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"You can use this endpoint to show different country flags icons to your users. The code argument receives the 2 letter country code. Use width, height and quality arguments to change the output settings. Country codes follow the [ISO 3166-1](https:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFlag","weight":45,"cookies":false,"type":"location","demo":"avatars\/get-flag.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-flag.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"code","description":"Country Code. ISO Alpha-2 country code format.","required":true,"type":"string","x-example":"af","enum":["af","ao","al","ad","ae","ar","am","ag","au","at","az","bi","be","bj","bf","bd","bg","bh","bs","ba","by","bz","bo","br","bb","bn","bt","bw","cf","ca","ch","cl","cn","ci","cm","cd","cg","co","km","cv","cr","cu","cy","cz","de","dj","dm","dk","do","dz","ec","eg","er","es","ee","et","fi","fj","fr","fm","ga","gb","ge","gh","gn","gm","gw","gq","gr","gd","gt","gy","hn","hr","ht","hu","id","in","ie","ir","iq","is","il","it","jm","jo","jp","kz","ke","kg","kh","ki","kn","kr","kw","la","lb","lr","ly","lc","li","lk","ls","lt","lu","lv","ma","mc","md","mg","mv","mx","mh","mk","ml","mt","mm","me","mn","mz","mr","mu","mw","my","na","ne","ng","ni","nl","no","np","nr","nz","om","pk","pa","pe","ph","pw","pg","pl","kp","pt","py","qa","ro","ru","rw","sa","sd","sn","sg","sb","sl","sv","sm","so","rs","ss","st","sr","sk","si","se","sz","sc","sy","td","tg","th","tj","tm","tl","to","tt","tn","tr","tv","tz","ug","ua","uy","us","uz","va","vc","ve","vn","vu","ws","ye","za","zm","zw"],"x-enum-name":"Flag","x-enum-keys":["Afghanistan","Angola","Albania","Andorra","United Arab Emirates","Argentina","Armenia","Antigua and Barbuda","Australia","Austria","Azerbaijan","Burundi","Belgium","Benin","Burkina Faso","Bangladesh","Bulgaria","Bahrain","Bahamas","Bosnia and Herzegovina","Belarus","Belize","Bolivia","Brazil","Barbados","Brunei Darussalam","Bhutan","Botswana","Central African Republic","Canada","Switzerland","Chile","China","C\u00f4te d'Ivoire","Cameroon","Democratic Republic of the Congo","Republic of the Congo","Colombia","Comoros","Cape Verde","Costa Rica","Cuba","Cyprus","Czech Republic","Germany","Djibouti","Dominica","Denmark","Dominican Republic","Algeria","Ecuador","Egypt","Eritrea","Spain","Estonia","Ethiopia","Finland","Fiji","France","Micronesia (Federated States of)","Gabon","United Kingdom","Georgia","Ghana","Guinea","Gambia","Guinea-Bissau","Equatorial Guinea","Greece","Grenada","Guatemala","Guyana","Honduras","Croatia","Haiti","Hungary","Indonesia","India","Ireland","Iran (Islamic Republic of)","Iraq","Iceland","Israel","Italy","Jamaica","Jordan","Japan","Kazakhstan","Kenya","Kyrgyzstan","Cambodia","Kiribati","Saint Kitts and Nevis","South Korea","Kuwait","Lao People's Democratic Republic","Lebanon","Liberia","Libya","Saint Lucia","Liechtenstein","Sri Lanka","Lesotho","Lithuania","Luxembourg","Latvia","Morocco","Monaco","Moldova","Madagascar","Maldives","Mexico","Marshall Islands","North Macedonia","Mali","Malta","Myanmar","Montenegro","Mongolia","Mozambique","Mauritania","Mauritius","Malawi","Malaysia","Namibia","Niger","Nigeria","Nicaragua","Netherlands","Norway","Nepal","Nauru","New Zealand","Oman","Pakistan","Panama","Peru","Philippines","Palau","Papua New Guinea","Poland","North Korea","Portugal","Paraguay","Qatar","Romania","Russia","Rwanda","Saudi Arabia","Sudan","Senegal","Singapore","Solomon Islands","Sierra Leone","El Salvador","San Marino","Somalia","Serbia","South Sudan","Sao Tome and Principe","Suriname","Slovakia","Slovenia","Sweden","Eswatini","Seychelles","Syria","Chad","Togo","Thailand","Tajikistan","Turkmenistan","Timor-Leste","Tonga","Trinidad and Tobago","Tunisia","Turkey","Tuvalu","Tanzania","Uganda","Ukraine","Uruguay","United States","Uzbekistan","Vatican City","Saint Vincent and the Grenadines","Venezuela","Vietnam","Vanuatu","Samoa","Yemen","South Africa","Zambia","Zimbabwe"],"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"}]}},"\/avatars\/image":{"get":{"summary":"Get image from URL","operationId":"avatarsGetImage","consumes":["application\/json"],"produces":["image\/*"],"tags":["avatars"],"description":"Use this endpoint to fetch a remote image URL and crop it to any image size you want. This endpoint is very useful if you need to crop and display remote images in your app or in case you want to make sure a 3rd party image is properly served using a TLS protocol.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getImage","weight":46,"cookies":false,"type":"location","demo":"avatars\/get-image.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-image.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"url","description":"Image URL which you want to crop.","required":true,"type":"string","format":"url","x-example":"https:\/\/example.com","in":"query"},{"name":"width","description":"Resize preview image width, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get user initials","operationId":"avatarsGetInitials","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getInitials","weight":49,"cookies":false,"type":"location","demo":"avatars\/get-initials.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-initials.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"name","description":"Full Name. When empty, current user name or email will be used. Max length: 128 chars.","required":false,"type":"string","x-example":"[NAME]","default":"","in":"query"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":500,"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":500,"in":"query"},{"name":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"type":"string","default":"","in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR code","operationId":"avatarsGetQR","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getQR","weight":48,"cookies":false,"type":"location","demo":"avatars\/get-q-r.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-qr.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"text","description":"Plain text to be converted to QR code image.","required":true,"type":"string","x-example":"[TEXT]","in":"query"},{"name":"size","description":"QR code size. Pass an integer between 1 to 1000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":1,"default":400,"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"type":"integer","format":"int32","x-example":0,"default":1,"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"type":"boolean","x-example":false,"default":false,"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List documents","operationId":"databasesListDocuments","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","schema":{"$ref":"#\/definitions\/documentList"}}},"x-appwrite":{"method":"listDocuments","weight":93,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"post":{"summary":"Create document","operationId":"databasesCreateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"createDocument","weight":92,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","default":{},"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, only the current user is granted all permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get document","operationId":"databasesGetDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"getDocument","weight":94,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only method allowed is select.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"patch":{"summary":"Update document","operationId":"databasesUpdateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"updateDocument","weight":96,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","default":[],"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete document","operationId":"databasesDeleteDocument","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":97,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List executions","operationId":"functionsListExecutions","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","schema":{"$ref":"#\/definitions\/executionList"}}},"x-appwrite":{"method":"listExecutions","weight":268,"cookies":false,"type":"","demo":"functions\/list-executions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-executions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, responseStatusCode, duration","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create execution","operationId":"functionsCreateExecution","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","schema":{"$ref":"#\/definitions\/execution"}}},"x-appwrite":{"method":"createExecution","weight":267,"cookies":false,"type":"","demo":"functions\/create-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-execution.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"body":{"type":"string","description":"HTTP body of execution. Default value is empty string.","default":"","x-example":"[BODY]"},"async":{"type":"boolean","description":"Execute code in the background. Default value is false.","default":false,"x-example":false},"path":{"type":"string","description":"HTTP path of execution. Path can include query params. Default value is \/","default":"\/","x-example":"[PATH]"},"method":{"type":"string","description":"HTTP method of execution. Default value is GET.","default":"POST","x-example":"GET","enum":["GET","POST","PUT","PATCH","DELETE","OPTIONS"],"x-enum-name":null,"x-enum-keys":[]},"headers":{"type":"object","description":"HTTP headers of execution. Defaults to empty.","default":[],"x-example":"{}"}}}}]}},"\/functions\/{functionId}\/executions\/{executionId}":{"get":{"summary":"Get execution","operationId":"functionsGetExecution","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a function execution log by its unique ID.","responses":{"200":{"description":"Execution","schema":{"$ref":"#\/definitions\/execution"}}},"x-appwrite":{"method":"getExecution","weight":269,"cookies":false,"type":"","demo":"functions\/get-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-execution.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"executionId","description":"Execution ID.","required":true,"type":"string","x-example":"[EXECUTION_ID]","in":"path"}]}},"\/graphql":{"post":{"summary":"GraphQL endpoint","operationId":"graphqlQuery","consumes":["application\/json"],"produces":["application\/json"],"tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","schema":{"$ref":"#\/definitions\/any"}}},"x-appwrite":{"method":"query","weight":289,"cookies":false,"type":"graphql","demo":"graphql\/query.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"query":{"type":"object","description":"The query or queries to execute.","default":{},"x-example":"{}"}},"required":["query"]}}]}},"\/graphql\/mutation":{"post":{"summary":"GraphQL endpoint","operationId":"graphqlMutation","consumes":["application\/json"],"produces":["application\/json"],"tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","schema":{"$ref":"#\/definitions\/any"}}},"x-appwrite":{"method":"mutation","weight":288,"cookies":false,"type":"graphql","demo":"graphql\/mutation.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"query":{"type":"object","description":"The query or queries to execute.","default":{},"x-example":"{}"}},"required":["query"]}}]}},"\/locale":{"get":{"summary":"Get user locale","operationId":"localeGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"Get the current user location based on IP. Returns an object with user country code, country name, continent name, continent code, ip address and suggested currency. You can use the locale header to get the data in a supported language.\n\n([IP Geolocation by DB-IP](https:\/\/db-ip.com))","responses":{"200":{"description":"Locale","schema":{"$ref":"#\/definitions\/locale"}}},"x-appwrite":{"method":"get","weight":101,"cookies":false,"type":"","demo":"locale\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-locale.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/localed","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/locale\/codes":{"get":{"summary":"List Locale Codes","operationId":"localeListCodes","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all locale codes in [ISO 639-1](https:\/\/en.wikipedia.org\/wiki\/List_of_ISO_639-1_codes).","responses":{"200":{"description":"Locale codes list","schema":{"$ref":"#\/definitions\/localeCodeList"}}},"x-appwrite":{"method":"listCodes","weight":102,"cookies":false,"type":"","demo":"locale\/list-codes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-locale-codes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/localeCode","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/locale\/continents":{"get":{"summary":"List continents","operationId":"localeListContinents","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","schema":{"$ref":"#\/definitions\/continentList"}}},"x-appwrite":{"method":"listContinents","weight":106,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/continents","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List countries","operationId":"localeListCountries","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountries","weight":103,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/countries","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU countries","operationId":"localeListCountriesEU","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountriesEU","weight":104,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/countries\/eu","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List countries phone codes","operationId":"localeListCountriesPhones","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","schema":{"$ref":"#\/definitions\/phoneList"}}},"x-appwrite":{"method":"listCountriesPhones","weight":105,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/countries\/phones","offline-key":"","offline-response-key":"countryCode","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List currencies","operationId":"localeListCurrencies","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","schema":{"$ref":"#\/definitions\/currencyList"}}},"x-appwrite":{"method":"listCurrencies","weight":107,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/currencies","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List languages","operationId":"localeListLanguages","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","schema":{"$ref":"#\/definitions\/languageList"}}},"x-appwrite":{"method":"listLanguages","weight":108,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/languages","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/messaging\/topics\/{topicId}\/subscribers":{"post":{"summary":"Create a subscriber.","operationId":"messagingCreateSubscriber","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Subscriber","schema":{"$ref":"#\/definitions\/subscriber"}}},"x-appwrite":{"method":"createSubscriber","weight":338,"cookies":false,"type":"","demo":"messaging\/create-subscriber.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-subscriber.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.write","platforms":["server","client","console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[],"Session":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID to subscribe to.","required":true,"type":"string","x-example":"[TOPIC_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"subscriberId":{"type":"string","description":"Subscriber ID. Choose a custom Subscriber ID or a new Subscriber ID.","default":null,"x-example":"[SUBSCRIBER_ID]"},"targetId":{"type":"string","description":"Target ID. The target ID to link to the specified Topic ID.","default":null,"x-example":"[TARGET_ID]"}},"required":["subscriberId","targetId"]}}]}},"\/messaging\/topics\/{topicId}\/subscribers\/{subscriberId}":{"delete":{"summary":"Delete a subscriber.","operationId":"messagingDeleteSubscriber","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSubscriber","weight":342,"cookies":false,"type":"","demo":"messaging\/delete-subscriber.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-subscriber.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.write","platforms":["server","client","console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[],"Session":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID subscribed to.","required":true,"type":"string","x-example":"[TOPIC_ID]","in":"path"},{"name":"subscriberId","description":"Subscriber ID.","required":true,"type":"string","x-example":"[SUBSCRIBER_ID]","in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files":{"get":{"summary":"List files","operationId":"storageListFiles","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a list of all the user files. You can use the query params to filter your results.","responses":{"200":{"description":"Files List","schema":{"$ref":"#\/definitions\/fileList"}}},"x-appwrite":{"method":"listFiles","weight":181,"cookies":false,"type":"","demo":"storage\/list-files.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/list-files.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create file","operationId":"storageCreateFile","consumes":["multipart\/form-data"],"produces":["application\/json"],"tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"createFile","weight":180,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId},chunkId:{chunkId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","required":true,"x-upload-id":true,"type":"string","x-example":"[FILE_ID]","in":"formData"},{"name":"file","description":"Binary file. Appwrite SDKs provide helpers to handle file input. [Learn about file input](https:\/\/appwrite.io\/docs\/storage#file-input).","required":true,"type":"file","in":"formData"},{"name":"permissions","description":"An array of permission strings. By default, only the current user is granted all permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"x-example":"[\"read(\"any\")\"]","in":"formData"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get file","operationId":"storageGetFile","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"getFile","weight":182,"cookies":false,"type":"","demo":"storage\/get-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID.","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"}]},"put":{"summary":"Update file","operationId":"storageUpdateFile","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Update a file by its unique ID. Only users with write permissions have access to update this resource.","responses":{"200":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"updateFile","weight":186,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File unique ID.","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Name of the file","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission string. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","consumes":["application\/json"],"produces":[],"tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":187,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID.","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/download":{"get":{"summary":"Get file for download","operationId":"storageGetFileDownload","consumes":["application\/json"],"produces":["*\/*"],"tags":["storage"],"description":"Get a file content by its unique ID. The endpoint response return with a 'Content-Disposition: attachment' header that tells the browser to start downloading the file to user downloads directory.","responses":{"200":{"description":"File","schema":{"type":"file"}}},"x-appwrite":{"method":"getFileDownload","weight":184,"cookies":false,"type":"location","demo":"storage\/get-file-download.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-download.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID.","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/preview":{"get":{"summary":"Get file preview","operationId":"storageGetFilePreview","consumes":["application\/json"],"produces":["image\/*"],"tags":["storage"],"description":"Get a file preview image. Currently, this method supports preview for image files (jpg, png, and gif), other supported formats, like pdf, docs, slides, and spreadsheets, will return the file icon image. You can also pass query string arguments for cutting and resizing your preview image. Preview is supported only for image files smaller than 10MB.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFilePreview","weight":183,"cookies":false,"type":"location","demo":"storage\/get-file-preview.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-preview.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"},{"name":"width","description":"Resize preview image width, Pass an integer between 0 to 4000.","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 4000.","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"gravity","description":"Image crop gravity. Can be one of center,top-left,top,top-right,left,right,bottom-left,bottom,bottom-right","required":false,"type":"string","x-example":"center","enum":["center","top-left","top","top-right","left","right","bottom-left","bottom","bottom-right"],"x-enum-name":"ImageGravity","x-enum-keys":[],"default":"center","in":"query"},{"name":"quality","description":"Preview image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"borderWidth","description":"Preview image border in pixels. Pass an integer between 0 to 100. Defaults to 0.","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"borderColor","description":"Preview image border color. Use a valid HEX color, no # is needed for prefix.","required":false,"type":"string","default":"","in":"query"},{"name":"borderRadius","description":"Preview image border radius in pixels. Pass an integer between 0 to 4000.","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"opacity","description":"Preview image opacity. Only works with images having an alpha channel (like png). Pass a number between 0 to 1.","required":false,"type":"number","format":"float","x-example":0,"default":1,"in":"query"},{"name":"rotation","description":"Preview image rotation in degrees. Pass an integer between -360 and 360.","required":false,"type":"integer","format":"int32","x-example":-360,"default":0,"in":"query"},{"name":"background","description":"Preview image background color. Only works with transparent images (png). Use a valid HEX color, no # is needed for prefix.","required":false,"type":"string","default":"","in":"query"},{"name":"output","description":"Output format type (jpeg, jpg, png, gif and webp).","required":false,"type":"string","x-example":"jpg","enum":["jpg","jpeg","gif","png","webp"],"x-enum-name":"ImageFormat","x-enum-keys":[],"default":"","in":"query"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/view":{"get":{"summary":"Get file for view","operationId":"storageGetFileView","consumes":["application\/json"],"produces":["*\/*"],"tags":["storage"],"description":"Get a file content by its unique ID. This endpoint is similar to the download method but returns with no 'Content-Disposition: attachment' header.","responses":{"200":{"description":"File","schema":{"type":"file"}}},"x-appwrite":{"method":"getFileView","weight":185,"cookies":false,"type":"location","demo":"storage\/get-file-view.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-view.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID.","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"}]}},"\/teams":{"get":{"summary":"List teams","operationId":"teamsList","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get a list of all the teams in which the current user is a member. You can use the parameters to filter your results.","responses":{"200":{"description":"Teams List","schema":{"$ref":"#\/definitions\/teamList"}}},"x-appwrite":{"method":"list","weight":191,"cookies":false,"type":"","demo":"teams\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-teams.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create team","operationId":"teamsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"create","weight":190,"cookies":false,"type":"","demo":"teams\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/create-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"teamId":{"type":"string","description":"Team ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[TEAM_ID]"},"name":{"type":"string","description":"Team name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"roles":{"type":"array","description":"Array of strings. Use this param to set the roles in the team for the user who created it. The default role is **owner**. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","default":["owner"],"x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}]}},"\/teams\/{teamId}":{"get":{"summary":"Get team","operationId":"teamsGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"get","weight":192,"cookies":false,"type":"","demo":"teams\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams","offline-key":"{teamId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"}]},"put":{"summary":"Update name","operationId":"teamsUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Update the team's name by its unique ID.","responses":{"200":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"updateName","weight":194,"cookies":false,"type":"","demo":"teams\/update-name.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-name.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams","offline-key":"{teamId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"New team name. Max length: 128 chars.","default":null,"x-example":"[NAME]"}},"required":["name"]}}]},"delete":{"summary":"Delete team","operationId":"teamsDelete","consumes":["application\/json"],"produces":[],"tags":["teams"],"description":"Delete a team using its ID. Only team members with the owner role can delete the team.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":196,"cookies":false,"type":"","demo":"teams\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/delete-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"}]}},"\/teams\/{teamId}\/memberships":{"get":{"summary":"List team memberships","operationId":"teamsListMemberships","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"listMemberships","weight":198,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/memberships","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create team membership","operationId":"teamsCreateMembership","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Invite a new member to join your team. Provide an ID for existing users, or invite unregistered users using an email or phone number. If initiated from a Client SDK, Appwrite will send an email or sms with a link to join the team to the invited user, and an account will be created for them if one doesn't exist. If initiated from a Server SDK, the new member will be added automatically to the team.\n\nYou only need to provide one of a user ID, email, or phone number. Appwrite will prioritize accepting the user ID > email > phone number if you provide more than one of these parameters.\n\nUse the `url` parameter to redirect the user from the invitation email to your app. After the user is redirected, use the [Update Team Membership Status](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/teams#updateMembershipStatus) endpoint to allow the user to accept the invitation to the team. \n\nPlease note that to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) Appwrite will accept the only redirect URLs under the domains you have added as a platform on the Appwrite Console.\n","responses":{"201":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"createMembership","weight":197,"cookies":false,"type":"","demo":"teams\/create-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/create-team-membership.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"email":{"type":"string","description":"Email of the new team member.","default":"","x-example":"email@example.com"},"userId":{"type":"string","description":"ID of the user to be added to a team.","default":"","x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":"","x-example":"+12065550100"},"roles":{"type":"array","description":"Array of strings. Use this param to set the user roles in the team. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":"","x-example":"https:\/\/example.com"},"name":{"type":"string","description":"Name of the new team member. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["roles"]}}]}},"\/teams\/{teamId}\/memberships\/{membershipId}":{"get":{"summary":"Get team membership","operationId":"teamsGetMembership","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get a team member by the membership unique id. All team members have read access for this resource.","responses":{"200":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"getMembership","weight":199,"cookies":false,"type":"","demo":"teams\/get-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-member.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/memberships","offline-key":"{membershipId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"type":"string","x-example":"[MEMBERSHIP_ID]","in":"path"}]},"patch":{"summary":"Update membership","operationId":"teamsUpdateMembership","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Modify the roles of a team member. Only team members with the owner role have access to this endpoint. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions).\n","responses":{"200":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"updateMembership","weight":200,"cookies":false,"type":"","demo":"teams\/update-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"type":"string","x-example":"[MEMBERSHIP_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"roles":{"type":"array","description":"An array of strings. Use this param to set the user's roles in the team. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}}},"required":["roles"]}}]},"delete":{"summary":"Delete team membership","operationId":"teamsDeleteMembership","consumes":["application\/json"],"produces":[],"tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":202,"cookies":false,"type":"","demo":"teams\/delete-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/delete-team-membership.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"type":"string","x-example":"[MEMBERSHIP_ID]","in":"path"}]}},"\/teams\/{teamId}\/memberships\/{membershipId}\/status":{"patch":{"summary":"Update team membership status","operationId":"teamsUpdateMembershipStatus","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Use this endpoint to allow a user to accept an invitation to join a team after being redirected back to your app from the invitation email received by the user.\n\nIf the request is successful, a session for the user is automatically created.\n","responses":{"200":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"updateMembershipStatus","weight":201,"cookies":false,"type":"","demo":"teams\/update-membership-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"public","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"type":"string","x-example":"[MEMBERSHIP_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Secret key.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/teams\/{teamId}\/prefs":{"get":{"summary":"Get team preferences","operationId":"teamsGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get the team's shared preferences by its unique ID. If a preference doesn't need to be shared by all team members, prefer storing them in [user preferences](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#getPrefs).","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":193,"cookies":false,"type":"","demo":"teams\/get-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/prefs","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"}]},"put":{"summary":"Update preferences","operationId":"teamsUpdatePrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Update the team's preferences by its unique ID. The object you pass is stored as is and replaces any previous value. The maximum allowed prefs size is 64kB and throws an error if exceeded.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"updatePrefs","weight":195,"cookies":false,"type":"","demo":"teams\/update-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/prefs","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"prefs":{"type":"object","description":"Prefs key-value JSON object.","default":{},"x-example":"{}"}},"required":["prefs"]}}]}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"project","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]},{"name":"proxy","description":"The Proxy Service allows you to configure actions for your domains beyond DNS configuration.","x-globalAttributes":[]},{"name":"graphql","description":"The GraphQL API allows you to query and mutate your Appwrite server using GraphQL.","x-globalAttributes":[]},{"name":"console","description":"The Console service allows you to interact with console relevant informations.","x-globalAttributes":[]},{"name":"migrations","description":"The Migrations service allows you to migrate third-party data to your Appwrite project.","x-globalAttributes":[]},{"name":"messaging","description":"The Messaging service allows you to send messages to any provider type (SMTP, push notification, SMS, etc.).","x-globalAttributes":[]}],"definitions":{"any":{"description":"Any","type":"object","additionalProperties":true},"documentList":{"description":"Documents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of documents documents that matched your query.","x-example":5,"format":"int32"},"documents":{"type":"array","description":"List of documents.","items":{"type":"object","$ref":"#\/definitions\/document"},"x-example":""}},"required":["total","documents"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of sessions documents that matched your query.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"type":"object","$ref":"#\/definitions\/session"},"x-example":""}},"required":["total","sessions"]},"identityList":{"description":"Identities List","type":"object","properties":{"total":{"type":"integer","description":"Total number of identities documents that matched your query.","x-example":5,"format":"int32"},"identities":{"type":"array","description":"List of identities.","items":{"type":"object","$ref":"#\/definitions\/identity"},"x-example":""}},"required":["total","identities"]},"logList":{"description":"Logs List","type":"object","properties":{"total":{"type":"integer","description":"Total number of logs documents that matched your query.","x-example":5,"format":"int32"},"logs":{"type":"array","description":"List of logs.","items":{"type":"object","$ref":"#\/definitions\/log"},"x-example":""}},"required":["total","logs"]},"fileList":{"description":"Files List","type":"object","properties":{"total":{"type":"integer","description":"Total number of files documents that matched your query.","x-example":5,"format":"int32"},"files":{"type":"array","description":"List of files.","items":{"type":"object","$ref":"#\/definitions\/file"},"x-example":""}},"required":["total","files"]},"teamList":{"description":"Teams List","type":"object","properties":{"total":{"type":"integer","description":"Total number of teams documents that matched your query.","x-example":5,"format":"int32"},"teams":{"type":"array","description":"List of teams.","items":{"type":"object","$ref":"#\/definitions\/team"},"x-example":""}},"required":["total","teams"]},"membershipList":{"description":"Memberships List","type":"object","properties":{"total":{"type":"integer","description":"Total number of memberships documents that matched your query.","x-example":5,"format":"int32"},"memberships":{"type":"array","description":"List of memberships.","items":{"type":"object","$ref":"#\/definitions\/membership"},"x-example":""}},"required":["total","memberships"]},"executionList":{"description":"Executions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of executions documents that matched your query.","x-example":5,"format":"int32"},"executions":{"type":"array","description":"List of executions.","items":{"type":"object","$ref":"#\/definitions\/execution"},"x-example":""}},"required":["total","executions"]},"countryList":{"description":"Countries List","type":"object","properties":{"total":{"type":"integer","description":"Total number of countries documents that matched your query.","x-example":5,"format":"int32"},"countries":{"type":"array","description":"List of countries.","items":{"type":"object","$ref":"#\/definitions\/country"},"x-example":""}},"required":["total","countries"]},"continentList":{"description":"Continents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of continents documents that matched your query.","x-example":5,"format":"int32"},"continents":{"type":"array","description":"List of continents.","items":{"type":"object","$ref":"#\/definitions\/continent"},"x-example":""}},"required":["total","continents"]},"languageList":{"description":"Languages List","type":"object","properties":{"total":{"type":"integer","description":"Total number of languages documents that matched your query.","x-example":5,"format":"int32"},"languages":{"type":"array","description":"List of languages.","items":{"type":"object","$ref":"#\/definitions\/language"},"x-example":""}},"required":["total","languages"]},"currencyList":{"description":"Currencies List","type":"object","properties":{"total":{"type":"integer","description":"Total number of currencies documents that matched your query.","x-example":5,"format":"int32"},"currencies":{"type":"array","description":"List of currencies.","items":{"type":"object","$ref":"#\/definitions\/currency"},"x-example":""}},"required":["total","currencies"]},"phoneList":{"description":"Phones List","type":"object","properties":{"total":{"type":"integer","description":"Total number of phones documents that matched your query.","x-example":5,"format":"int32"},"phones":{"type":"array","description":"List of phones.","items":{"type":"object","$ref":"#\/definitions\/phone"},"x-example":""}},"required":["total","phones"]},"localeCodeList":{"description":"Locale codes list","type":"object","properties":{"total":{"type":"integer","description":"Total number of localeCodes documents that matched your query.","x-example":5,"format":"int32"},"localeCodes":{"type":"array","description":"List of localeCodes.","items":{"type":"object","$ref":"#\/definitions\/localeCode"},"x-example":""}},"required":["total","localeCodes"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"user":{"description":"User","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"password":{"type":"string","description":"Hashed user password.","x-example":"$argon2id$v=19$m=2048,t=4,p=3$aUZjLnliVWRINmFNTWMudg$5S+x+7uA31xFnrHFT47yFwcJeaP0w92L\/4LdgrVRXxE","x-nullable":true},"hash":{"type":"string","description":"Password hashing algorithm.","x-example":"argon2","x-nullable":true},"hashOptions":{"type":"object","description":"Password hashing algorithm configuration.","x-example":{},"items":{"x-oneOf":[{"$ref":"#\/definitions\/algoArgon2"},{"$ref":"#\/definitions\/algoScrypt"},{"$ref":"#\/definitions\/algoScryptModified"},{"$ref":"#\/definitions\/algoBcrypt"},{"$ref":"#\/definitions\/algoPhpass"},{"$ref":"#\/definitions\/algoSha"},{"$ref":"#\/definitions\/algoMd5"}]},"x-nullable":true},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"labels":{"type":"array","description":"Labels for the user.","items":{"type":"string"},"x-example":["vip"]},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"type":"object","$ref":"#\/definitions\/preferences"}},"targets":{"type":"array","description":"A user-owned message receiver. A single user may have multiple e.g. emails, phones, and a browser. Each target is registered with a single provider.","items":{"type":"object","$ref":"#\/definitions\/target"},"x-example":[]},"accessedAt":{"type":"string","description":"Most recent access date in ISO 8601 format. This attribute is only updated again after 24 hours.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","$updatedAt","name","registration","status","labels","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs","targets","accessedAt"]},"algoMd5":{"description":"AlgoMD5","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"md5"}},"required":["type"]},"algoSha":{"description":"AlgoSHA","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"sha"}},"required":["type"]},"algoPhpass":{"description":"AlgoPHPass","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"phpass"}},"required":["type"]},"algoBcrypt":{"description":"AlgoBcrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"bcrypt"}},"required":["type"]},"algoScrypt":{"description":"AlgoScrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scrypt"},"costCpu":{"type":"integer","description":"CPU complexity of computed hash.","x-example":8,"format":"int32"},"costMemory":{"type":"integer","description":"Memory complexity of computed hash.","x-example":14,"format":"int32"},"costParallel":{"type":"integer","description":"Parallelization of computed hash.","x-example":1,"format":"int32"},"length":{"type":"integer","description":"Length used to compute hash.","x-example":64,"format":"int32"}},"required":["type","costCpu","costMemory","costParallel","length"]},"algoScryptModified":{"description":"AlgoScryptModified","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scryptMod"},"salt":{"type":"string","description":"Salt used to compute hash.","x-example":"UxLMreBr6tYyjQ=="},"saltSeparator":{"type":"string","description":"Separator used to compute hash.","x-example":"Bw=="},"signerKey":{"type":"string","description":"Key used to compute hash.","x-example":"XyEKE9RcTDeLEsL\/RjwPDBv\/RqDl8fb3gpYEOQaPihbxf1ZAtSOHCjuAAa7Q3oHpCYhXSN9tizHgVOwn6krflQ=="}},"required":["type","salt","saltSeparator","signerKey"]},"algoArgon2":{"description":"AlgoArgon2","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"argon2"},"memoryCost":{"type":"integer","description":"Memory used to compute hash.","x-example":65536,"format":"int32"},"timeCost":{"type":"integer","description":"Amount of time consumed to compute hash","x-example":4,"format":"int32"},"threads":{"type":"integer","description":"Number of threads used to compute hash.","x-example":3,"format":"int32"}},"required":["type","memoryCost","timeCost","threads"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true},"secret":{"type":"string","description":"Secret used to authenticate the user. Only included if the request was made with an API key","x-example":"5e5bb8c16897e"}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current","secret"]},"identity":{"description":"Identity","type":"object","properties":{"$id":{"type":"string","description":"Identity ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Identity creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Identity update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"provider":{"type":"string","description":"Identity Provider.","x-example":"email"},"providerUid":{"type":"string","description":"ID of the User in the Identity Provider.","x-example":"5e5bb8c16897e"},"providerEmail":{"type":"string","description":"Email of the User in the Identity Provider.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Identity Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Identity Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"}},"required":["$id","$createdAt","$updatedAt","userId","provider","providerUid","providerEmail","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"securityPhrase":{"type":"string","description":"Security phrase of a token. Empty if security phrase was not requested when creating a token. It includes randomly generated phrase which is also sent in the external resource such as email.","x-example":"Golden Fox"}},"required":["$id","$createdAt","userId","secret","expire","securityPhrase"]},"jwt":{"description":"JWT","type":"object","properties":{"jwt":{"type":"string","description":"JWT encoded string.","x-example":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c"}},"required":["jwt"]},"locale":{"description":"Locale","type":"object","properties":{"ip":{"type":"string","description":"User IP address.","x-example":"127.0.0.1"},"countryCode":{"type":"string","description":"Country code in [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) two-character format","x-example":"US"},"country":{"type":"string","description":"Country name. This field support localization.","x-example":"United States"},"continentCode":{"type":"string","description":"Continent code. A two character continent code \"AF\" for Africa, \"AN\" for Antarctica, \"AS\" for Asia, \"EU\" for Europe, \"NA\" for North America, \"OC\" for Oceania, and \"SA\" for South America.","x-example":"NA"},"continent":{"type":"string","description":"Continent name. This field support localization.","x-example":"North America"},"eu":{"type":"boolean","description":"True if country is part of the European Union.","x-example":false},"currency":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format","x-example":"USD"}},"required":["ip","countryCode","country","continentCode","continent","eu","currency"]},"localeCode":{"description":"LocaleCode","type":"object","properties":{"code":{"type":"string","description":"Locale codes in [ISO 639-1](https:\/\/en.wikipedia.org\/wiki\/List_of_ISO_639-1_codes)","x-example":"en-us"},"name":{"type":"string","description":"Locale name","x-example":"US"}},"required":["code","name"]},"file":{"description":"File","type":"object","properties":{"$id":{"type":"string","description":"File ID.","x-example":"5e5ea5c16897e"},"bucketId":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"},"prefs":{"type":"object","description":"Team preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"type":"object","$ref":"#\/definitions\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","total","prefs"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":["owner"]}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","roles"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"requestMethod":{"type":"string","description":"HTTP request method type.","x-example":"GET"},"requestPath":{"type":"string","description":"HTTP request path and query.","x-example":"\/articles?id=5"},"requestHeaders":{"type":"array","description":"HTTP response headers as a key-value object. This will return only whitelisted headers. All headers are returned if execution is created as synchronous.","items":{"type":"object","$ref":"#\/definitions\/headers"},"x-example":[{"Content-Type":"application\/json"}]},"responseStatusCode":{"type":"integer","description":"HTTP response status code.","x-example":200,"format":"int32"},"responseBody":{"type":"string","description":"HTTP response body. This will return empty unless execution is created as synchronous.","x-example":"Developers are awesome."},"responseHeaders":{"type":"array","description":"HTTP response headers as a key-value object. This will return only whitelisted headers. All headers are returned if execution is created as synchronous.","items":{"type":"object","$ref":"#\/definitions\/headers"},"x-example":[{"Content-Type":"application\/json"}]},"logs":{"type":"string","description":"Function logs. Includes the last 4,000 characters. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"errors":{"type":"string","description":"Function errors. Includes the last 4,000 characters. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"Function execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","requestMethod","requestPath","requestHeaders","responseStatusCode","responseBody","responseHeaders","logs","errors","duration"]},"country":{"description":"Country","type":"object","properties":{"name":{"type":"string","description":"Country name.","x-example":"United States"},"code":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"}},"required":["name","code"]},"continent":{"description":"Continent","type":"object","properties":{"name":{"type":"string","description":"Continent name.","x-example":"Europe"},"code":{"type":"string","description":"Continent two letter code.","x-example":"EU"}},"required":["name","code"]},"language":{"description":"Language","type":"object","properties":{"name":{"type":"string","description":"Language name.","x-example":"Italian"},"code":{"type":"string","description":"Language two-character ISO 639-1 codes.","x-example":"it"},"nativeName":{"type":"string","description":"Language native name.","x-example":"Italiano"}},"required":["name","code","nativeName"]},"currency":{"description":"Currency","type":"object","properties":{"symbol":{"type":"string","description":"Currency symbol.","x-example":"$"},"name":{"type":"string","description":"Currency name.","x-example":"US dollar"},"symbolNative":{"type":"string","description":"Currency native symbol.","x-example":"$"},"decimalDigits":{"type":"integer","description":"Number of decimal digits.","x-example":2,"format":"int32"},"rounding":{"type":"number","description":"Currency digit rounding.","x-example":0,"format":"double"},"code":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format.","x-example":"USD"},"namePlural":{"type":"string","description":"Currency plural name","x-example":"US dollars"}},"required":["symbol","name","symbolNative","decimalDigits","rounding","code","namePlural"]},"phone":{"description":"Phone","type":"object","properties":{"code":{"type":"string","description":"Phone code.","x-example":"+1"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["code","countryCode","countryName"]},"headers":{"description":"Headers","type":"object","properties":{"name":{"type":"string","description":"Header name.","x-example":"Content-Type"},"value":{"type":"string","description":"Header value.","x-example":"application\/json"}},"required":["name","value"]},"subscriber":{"description":"Subscriber","type":"object","properties":{"$id":{"type":"string","description":"Subscriber ID.","x-example":"259125845563242502"},"$createdAt":{"type":"string","description":"Subscriber creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Subscriber update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"targetId":{"type":"string","description":"Target ID.","x-example":"259125845563242502"},"target":{"type":"object","description":"Target.","x-example":{"$id":"259125845563242502","$createdAt":"2020-10-15T06:38:00.000+00:00","$updatedAt":"2020-10-15T06:38:00.000+00:00","providerType":"email","providerId":"259125845563242502","name":"ageon-app-email","identifier":"random-mail@email.org","userId":"5e5ea5c16897e"},"items":{"type":"object","$ref":"#\/definitions\/target"}},"userId":{"type":"string","description":"Topic ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User Name.","x-example":"Aegon Targaryen"},"topicId":{"type":"string","description":"Topic ID.","x-example":"259125845563242502"},"providerType":{"type":"string","description":"The target provider type. Can be one of the following: `email`, `sms` or `push`.","x-example":"email"}},"required":["$id","$createdAt","$updatedAt","targetId","target","userId","userName","topicId","providerType"]},"target":{"description":"Target","type":"object","properties":{"$id":{"type":"string","description":"Target ID.","x-example":"259125845563242502"},"$createdAt":{"type":"string","description":"Target creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Target update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Target Name.","x-example":"Aegon apple token"},"userId":{"type":"string","description":"User ID.","x-example":"259125845563242502"},"providerId":{"type":"string","description":"Provider ID.","x-example":"259125845563242502","x-nullable":true},"providerType":{"type":"string","description":"The target provider type. Can be one of the following: `email`, `sms` or `push`.","x-example":"email"},"identifier":{"type":"string","description":"The target identifier.","x-example":"token"}},"required":["$id","$createdAt","$updatedAt","name","userId","providerType","identifier"]}},"externalDocs":{"description":"Full API docs, specs and tutorials","url":"https:\/\/appwrite.io\/docs"}} \ No newline at end of file +{"swagger":"2.0","info":{"version":"1.4.13","title":"Appwrite","description":"Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https:\/\/appwrite.io\/docs](https:\/\/appwrite.io\/docs)","termsOfService":"https:\/\/appwrite.io\/policy\/terms","contact":{"name":"Appwrite Team","url":"https:\/\/appwrite.io\/support","email":"team@appwrite.io"},"license":{"name":"BSD-3-Clause","url":"https:\/\/raw.githubusercontent.com\/appwrite\/appwrite\/master\/LICENSE"}},"host":"HOSTNAME","basePath":"\/v1","schemes":["https"],"consumes":["application\/json","multipart\/form-data"],"produces":["application\/json"],"securityDefinitions":{"Project":{"type":"apiKey","name":"X-Appwrite-Project","description":"Your project ID","in":"header","x-appwrite":{"demo":"5df5acd0d48c2"}},"JWT":{"type":"apiKey","name":"X-Appwrite-JWT","description":"Your secret JSON Web Token","in":"header","x-appwrite":{"demo":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ..."}},"Locale":{"type":"apiKey","name":"X-Appwrite-Locale","description":"","in":"header","x-appwrite":{"demo":"en"}},"Session":{"type":"apiKey","name":"X-Appwrite-Session","description":"The user session to authenticate with","in":"header"}},"paths":{"\/account":{"get":{"summary":"Get account","operationId":"accountGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get the currently logged in user.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"get","weight":22,"cookies":false,"type":"","demo":"account\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]},"post":{"summary":"Create account","operationId":"accountCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to allow a new user to register a new account in your project. After the user registration completes successfully, you can use the [\/account\/verfication](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createVerification) route to start verifying the user email address. To allow the new user to login to their new account, you need to create a new [account session](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createEmailSession).","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"create","weight":7,"cookies":false,"type":"","demo":"account\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"New user password. Must be between 8 and 256 chars.","default":null,"x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/account\/email":{"patch":{"summary":"Update email","operationId":"accountUpdateEmail","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateEmail","weight":29,"cookies":false,"type":"","demo":"account\/update-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["email","password"]}}]}},"\/account\/identities":{"get":{"summary":"List Identities","operationId":"accountListIdentities","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get the list of identities for the currently logged in user.","responses":{"200":{"description":"Identities List","schema":{"$ref":"#\/definitions\/identityList"}}},"x-appwrite":{"method":"listIdentities","weight":13,"cookies":false,"type":"","demo":"account\/list-identities.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-identities.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/identities","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, provider, providerUid, providerEmail, providerAccessTokenExpiry","required":false,"type":"string","default":[],"in":"query"}]}},"\/account\/identities\/{identityId}":{"delete":{"summary":"Delete identity","operationId":"accountDeleteIdentity","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Delete an identity by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIdentity","weight":14,"cookies":false,"type":"","demo":"account\/delete-identity.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-identity.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"identityId","description":"Identity ID.","required":true,"type":"string","x-example":"[IDENTITY_ID]","in":"path"}]}},"\/account\/jwt":{"post":{"summary":"Create JWT","operationId":"accountCreateJWT","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to create a JSON Web Token. You can use the resulting JWT to authenticate on behalf of the current user when working with the Appwrite server-side API and SDKs. The JWT secret is valid for 15 minutes from its creation and will be invalid if the user will logout in that time frame.","responses":{"201":{"description":"JWT","schema":{"$ref":"#\/definitions\/jwt"}}},"x-appwrite":{"method":"createJWT","weight":20,"cookies":false,"type":"","demo":"account\/create-j-w-t.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-jwt.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"List logs","operationId":"accountListLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get the list of latest security activity logs for the currently logged in user. Each log returns user IP address, location and date and time of log.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listLogs","weight":25,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update name","operationId":"accountUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateName","weight":27,"cookies":false,"type":"","demo":"account\/update-name.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-name.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"User name. Max length: 128 chars.","default":null,"x-example":"[NAME]"}},"required":["name"]}}]}},"\/account\/password":{"patch":{"summary":"Update password","operationId":"accountUpdatePassword","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePassword","weight":28,"cookies":false,"type":"","demo":"account\/update-password.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-password.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"password":{"type":"string","description":"New user password. Must be at least 8 chars.","default":null,"x-example":null},"oldPassword":{"type":"string","description":"Current user password. Must be at least 8 chars.","default":"","x-example":"password"}},"required":["password"]}}]}},"\/account\/phone":{"patch":{"summary":"Update phone","operationId":"accountUpdatePhone","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createPhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePhone","weight":30,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["phone","password"]}}]}},"\/account\/prefs":{"get":{"summary":"Get account preferences","operationId":"accountGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get the preferences as a key-value object for the currently logged in user.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":23,"cookies":false,"type":"","demo":"account\/get-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/prefs","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]},"patch":{"summary":"Update preferences","operationId":"accountUpdatePrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account preferences. The object you pass is stored as is, and replaces any previous value. The maximum allowed prefs size is 64kB and throws error if exceeded.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePrefs","weight":31,"cookies":false,"type":"","demo":"account\/update-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/prefs","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"prefs":{"type":"object","description":"Prefs key-value JSON object.","default":{},"x-example":"{}"}},"required":["prefs"]}}]}},"\/account\/recovery":{"post":{"summary":"Create password recovery","operationId":"accountCreateRecovery","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Sends the user an email with a temporary secret key for password reset. When the user clicks the confirmation link he is redirected back to your app password reset URL with the secret key and email address values attached to the URL query string. Use the query string params to submit a request to the [PUT \/account\/recovery](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateRecovery) endpoint to complete the process. The verification link sent to the user's email address is valid for 1 hour.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createRecovery","weight":36,"cookies":false,"type":"","demo":"account\/create-recovery.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-recovery.md","rate-limit":10,"rate-time":3600,"rate-key":["url:{url},email:{param-email}","ip:{ip}"],"scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"url":{"type":"string","description":"URL to redirect the user back to your app from the recovery email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":null,"x-example":"https:\/\/example.com"}},"required":["email","url"]}}]},"put":{"summary":"Create password recovery (confirmation)","operationId":"accountUpdateRecovery","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete the user account password reset. Both the **userId** and **secret** arguments will be passed as query parameters to the redirect URL you have provided when sending your request to the [POST \/account\/recovery](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createRecovery) endpoint.\n\nPlease note that in order to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) the only valid redirect URLs are the ones from domains you have set when adding your platforms in the console interface.","responses":{"200":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"updateRecovery","weight":37,"cookies":false,"type":"","demo":"account\/update-recovery.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-recovery.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid reset token.","default":null,"x-example":"[SECRET]"},"password":{"type":"string","description":"New user password. Must be between 8 and 256 chars.","default":null,"x-example":null}},"required":["userId","secret","password"]}}]}},"\/account\/sessions":{"get":{"summary":"List sessions","operationId":"accountListSessions","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get the list of active sessions across different devices for the currently logged in user.","responses":{"200":{"description":"Sessions List","schema":{"$ref":"#\/definitions\/sessionList"}}},"x-appwrite":{"method":"listSessions","weight":24,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/sessions","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]},"delete":{"summary":"Delete sessions","operationId":"accountDeleteSessions","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":35,"cookies":false,"type":"","demo":"account\/delete-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-sessions.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/account\/sessions\/anonymous":{"post":{"summary":"Create anonymous session","operationId":"accountCreateAnonymousSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to allow a new user to register an anonymous account in your project. This route will also create a new session for the user. To allow the new user to convert an anonymous account to a normal account, you need to update its [email and password](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateEmail) or create an [OAuth2 session](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#CreateOAuth2Session).","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"createAnonymousSession","weight":19,"cookies":false,"type":"","demo":"account\/create-anonymous-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-anonymous.md","rate-limit":50,"rate-time":3600,"rate-key":"ip:{ip}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/sessions\/email":{"post":{"summary":"Create email password session","operationId":"accountCreateEmailPasswordSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Allow the user to login into their account by providing a valid email and password combination. This route will create a new session for the user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"createEmailPasswordSession","weight":8,"cookies":false,"type":"","demo":"account\/create-email-password-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-email-password.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["email","password"]}}]}},"\/account\/sessions\/magic-url":{"put":{"summary":"Create session (deprecated)","operationId":"accountUpdateMagicURLSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to create a session from token. Provide the **userId** and **secret** parameters from the successful response of authentication flows initiated by token creation. For example, magic URL and phone login.","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateMagicURLSession","weight":16,"cookies":false,"type":"","demo":"account\/update-magic-u-r-l-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session.md","rate-limit":10,"rate-time":3600,"rate-key":"ip:{ip},userId:{param-userId}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/account\/sessions\/oauth2\/{provider}":{"get":{"summary":"Create OAuth2 session","operationId":"accountCreateOAuth2Session","consumes":["application\/json"],"produces":["text\/html"],"tags":["account"],"description":"Allow the user to login to their account using the OAuth2 provider of their choice. Each OAuth2 provider should be enabled from the Appwrite console first. Use the success and failure arguments to provide a redirect URL's back to your app when login is completed.\n\nIf there is already an active session, the new session will be attached to the logged-in account. If there are no active sessions, the server will attempt to look for a user with the same email address as the email received from the OAuth2 provider and attach the new session to the existing user. If no matching user is found - the server will create a new user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).\n","responses":{"301":{"description":"No content"}},"x-appwrite":{"method":"createOAuth2Session","weight":9,"cookies":false,"type":"webAuth","demo":"account\/create-o-auth2session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-oauth2.md","rate-limit":50,"rate-time":3600,"rate-key":"ip:{ip}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"provider","description":"OAuth2 Provider. Currently, supported providers are: amazon, apple, auth0, authentik, autodesk, bitbucket, bitly, box, dailymotion, discord, disqus, dropbox, etsy, facebook, github, gitlab, google, linkedin, microsoft, notion, oidc, okta, paypal, paypalSandbox, podio, salesforce, slack, spotify, stripe, tradeshift, tradeshiftBox, twitch, wordpress, yahoo, yammer, yandex, zoho, zoom.","required":true,"type":"string","x-example":"amazon","enum":["amazon","apple","auth0","authentik","autodesk","bitbucket","bitly","box","dailymotion","discord","disqus","dropbox","etsy","facebook","github","gitlab","google","linkedin","microsoft","notion","oidc","okta","paypal","paypalSandbox","podio","salesforce","slack","spotify","stripe","tradeshift","tradeshiftBox","twitch","wordpress","yahoo","yammer","yandex","zoho","zoom","mock"],"x-enum-name":"Provider","x-enum-keys":[],"in":"path"},{"name":"success","description":"URL to redirect back to your app after a successful login attempt. Only URLs from hostnames in your project's platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","required":false,"type":"string","format":"url","x-example":"https:\/\/example.com","default":"","in":"query"},{"name":"failure","description":"URL to redirect back to your app after a failed login attempt. Only URLs from hostnames in your project's platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","required":false,"type":"string","format":"url","x-example":"https:\/\/example.com","default":"","in":"query"},{"name":"token","description":"Include token credentials in the final redirect, useful for server-side integrations, or when cookies are not available.","required":false,"type":"boolean","x-example":false,"default":false,"in":"query"},{"name":"scopes","description":"A list of custom OAuth2 scopes. Check each provider internal docs for a list of supported scopes. Maximum of 100 scopes are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/sessions\/token":{"post":{"summary":"Create session","operationId":"accountCreateSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to create a session from token. Provide the **userId** and **secret** parameters from the successful response of authentication flows initiated by token creation. For example, magic URL and phone login.","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"createSession","weight":17,"cookies":false,"type":"","demo":"account\/create-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session.md","rate-limit":10,"rate-time":3600,"rate-key":"ip:{ip},userId:{param-userId}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Secret of a token generated by login methods. For example, the `createMagicURLToken` or `createPhoneToken` methods.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/account\/sessions\/{sessionId}":{"get":{"summary":"Get session","operationId":"accountGetSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to get a logged in user's session using a Session ID. Inputting 'current' will return the current session being used.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"getSession","weight":26,"cookies":false,"type":"","demo":"account\/get-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-session.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/sessions","offline-key":"{sessionId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to get the current device session.","required":true,"type":"string","x-example":"[SESSION_ID]","in":"path"}]},"patch":{"summary":"Update OAuth session (refresh tokens)","operationId":"accountUpdateSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Access tokens have limited lifespan and expire to mitigate security risks. If session was created using an OAuth provider, this route can be used to \"refresh\" the access token.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateSession","weight":34,"cookies":false,"type":"","demo":"account\/update-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-session.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to update the current device session.","required":true,"type":"string","x-example":"[SESSION_ID]","in":"path"}]},"delete":{"summary":"Delete session","operationId":"accountDeleteSession","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Logout the user. Use 'current' as the session ID to logout on this device, use a session ID to logout on another device. If you're looking to logout the user on all devices, use [Delete Sessions](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#deleteSessions) instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSession","weight":33,"cookies":false,"type":"","demo":"account\/delete-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-session.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to delete the current device session.","required":true,"type":"string","x-example":"[SESSION_ID]","in":"path"}]}},"\/account\/status":{"patch":{"summary":"Update status","operationId":"accountUpdateStatus","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateStatus","weight":32,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/account\/targets\/push":{"post":{"summary":"Create Account's push target","operationId":"accountCreatePushTarget","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"201":{"description":"Target","schema":{"$ref":"#\/definitions\/target"}}},"x-appwrite":{"method":"createPushTarget","weight":21,"cookies":false,"type":"","demo":"account\/create-push-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"targetId":{"type":"string","description":"Target ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[TARGET_ID]"},"identifier":{"type":"string","description":"The target identifier (token, email, phone etc.)","default":null,"x-example":"[IDENTIFIER]"},"providerId":{"type":"string","description":"Provider ID. Message will be sent to this target from the specified provider ID. If no provider ID is set the first setup provider will be used.","default":"","x-example":"[PROVIDER_ID]"}},"required":["targetId","identifier"]}}]}},"\/account\/targets\/{targetId}\/push":{"put":{"summary":"Update Account's push target","operationId":"accountUpdatePushTarget","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"200":{"description":"Target","schema":{"$ref":"#\/definitions\/target"}}},"x-appwrite":{"method":"updatePushTarget","weight":42,"cookies":false,"type":"","demo":"account\/update-push-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[]}],"parameters":[{"name":"targetId","description":"Target ID.","required":true,"type":"string","x-example":"[TARGET_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"identifier":{"type":"string","description":"The target identifier (token, email, phone etc.)","default":null,"x-example":"[IDENTIFIER]"}},"required":["identifier"]}}]}},"\/account\/tokens\/magic-url":{"post":{"summary":"Create magic URL token","operationId":"accountCreateMagicURLToken","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Sends the user an email with a secret key for creating a session. If the provided user ID has not been registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [PUT \/account\/sessions\/magic-url](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateMagicURLSession) endpoint to complete the login process. The link sent to the user's email address is valid for 1 hour. If you are on a mobile device you can leave the URL parameter empty, so that the login completion will be handled by your Appwrite instance by default.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).\n","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createMagicURLToken","weight":15,"cookies":false,"type":"","demo":"account\/create-magic-u-r-l-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-token-magic-url.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"url":{"type":"string","description":"URL to redirect the user back to your app from the magic URL login. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":"","x-example":"https:\/\/example.com"},"securityPhrase":{"type":"boolean","description":"Toggle for security phrase. If enabled, email will be send with a randomly generated phrase and the phrase will also be included in the response. Confirming phrases match increases the security of authentication flow.","default":false,"x-example":false}},"required":["userId","email"]}}]}},"\/account\/tokens\/phone":{"post":{"summary":"Create phone token","operationId":"accountCreatePhoneToken","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Sends the user an SMS with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [PUT \/account\/sessions\/phone](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updatePhoneSession) endpoint to complete the login process. The secret sent to the user's phone is valid for 15 minutes.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createPhoneToken","weight":18,"cookies":false,"type":"","demo":"account\/create-phone-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-token-phone.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},phone:{param-phone}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"}},"required":["userId","phone"]}}]}},"\/account\/verification":{"post":{"summary":"Create email verification","operationId":"accountCreateVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to send a verification message to your user email address to confirm they are the valid owners of that address. Both the **userId** and **secret** arguments will be passed as query parameters to the URL you have provided to be attached to the verification email. The provided URL should redirect the user back to your app and allow you to complete the verification process by verifying both the **userId** and **secret** parameters. Learn more about how to [complete the verification process](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateVerification). The verification link sent to the user's email address is valid for 7 days.\n\nPlease note that in order to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md), the only valid redirect URLs are the ones from domains you have set when adding your platforms in the console interface.\n","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createVerification","weight":38,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"url":{"type":"string","description":"URL to redirect the user back to your app from the verification email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":null,"x-example":"https:\/\/example.com"}},"required":["url"]}}]},"put":{"summary":"Create email verification (confirmation)","operationId":"accountUpdateVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete the user email verification process. Use both the **userId** and **secret** parameters that were attached to your app URL to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"updateVerification","weight":39,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/account\/verification\/phone":{"post":{"summary":"Create phone verification","operationId":"accountCreatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updatePhone) endpoint. Learn more about how to [complete the verification process](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createPhoneVerification","weight":40,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{userId}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]},"put":{"summary":"Create phone verification (confirmation)","operationId":"accountUpdatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"updatePhoneVerification","weight":41,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/avatars\/browsers\/{code}":{"get":{"summary":"Get browser icon","operationId":"avatarsGetBrowser","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"You can use this endpoint to show different browser icons to your users. The code argument receives the browser code as it appears in your user [GET \/account\/sessions](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#getSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getBrowser","weight":44,"cookies":false,"type":"location","demo":"avatars\/get-browser.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-browser.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"code","description":"Browser Code.","required":true,"type":"string","x-example":"aa","enum":["aa","an","ch","ci","cm","cr","ff","sf","mf","ps","oi","om","op","on"],"x-enum-name":"Browser","x-enum-keys":["Avant Browser","Android WebView Beta","Google Chrome","Google Chrome (iOS)","Google Chrome (Mobile)","Chromium","Mozilla Firefox","Safari","Mobile Safari","Microsoft Edge","Microsoft Edge (iOS)","Opera Mini","Opera","Opera (Next)"],"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"}]}},"\/avatars\/credit-cards\/{code}":{"get":{"summary":"Get credit card icon","operationId":"avatarsGetCreditCard","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"The credit card endpoint will return you the icon of the credit card provider you need. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getCreditCard","weight":43,"cookies":false,"type":"location","demo":"avatars\/get-credit-card.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-credit-card.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"code","description":"Credit Card Code. Possible values: amex, argencard, cabal, censosud, diners, discover, elo, hipercard, jcb, mastercard, naranja, targeta-shopping, union-china-pay, visa, mir, maestro.","required":true,"type":"string","x-example":"amex","enum":["amex","argencard","cabal","censosud","diners","discover","elo","hipercard","jcb","mastercard","naranja","targeta-shopping","union-china-pay","visa","mir","maestro"],"x-enum-name":"CreditCard","x-enum-keys":["American Express","Argencard","Cabal","Consosud","Diners Club","Discover","Elo","Hipercard","JCB","Mastercard","Naranja","Tarjeta Shopping","Union China Pay","Visa","MIR","Maestro"],"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"}]}},"\/avatars\/favicon":{"get":{"summary":"Get favicon","operationId":"avatarsGetFavicon","consumes":["application\/json"],"produces":["image\/*"],"tags":["avatars"],"description":"Use this endpoint to fetch the favorite icon (AKA favicon) of any remote website URL.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFavicon","weight":47,"cookies":false,"type":"location","demo":"avatars\/get-favicon.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-favicon.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"url","description":"Website URL which you want to fetch the favicon from.","required":true,"type":"string","format":"url","x-example":"https:\/\/example.com","in":"query"}]}},"\/avatars\/flags\/{code}":{"get":{"summary":"Get country flag","operationId":"avatarsGetFlag","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"You can use this endpoint to show different country flags icons to your users. The code argument receives the 2 letter country code. Use width, height and quality arguments to change the output settings. Country codes follow the [ISO 3166-1](https:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFlag","weight":45,"cookies":false,"type":"location","demo":"avatars\/get-flag.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-flag.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"code","description":"Country Code. ISO Alpha-2 country code format.","required":true,"type":"string","x-example":"af","enum":["af","ao","al","ad","ae","ar","am","ag","au","at","az","bi","be","bj","bf","bd","bg","bh","bs","ba","by","bz","bo","br","bb","bn","bt","bw","cf","ca","ch","cl","cn","ci","cm","cd","cg","co","km","cv","cr","cu","cy","cz","de","dj","dm","dk","do","dz","ec","eg","er","es","ee","et","fi","fj","fr","fm","ga","gb","ge","gh","gn","gm","gw","gq","gr","gd","gt","gy","hn","hr","ht","hu","id","in","ie","ir","iq","is","il","it","jm","jo","jp","kz","ke","kg","kh","ki","kn","kr","kw","la","lb","lr","ly","lc","li","lk","ls","lt","lu","lv","ma","mc","md","mg","mv","mx","mh","mk","ml","mt","mm","me","mn","mz","mr","mu","mw","my","na","ne","ng","ni","nl","no","np","nr","nz","om","pk","pa","pe","ph","pw","pg","pl","kp","pt","py","qa","ro","ru","rw","sa","sd","sn","sg","sb","sl","sv","sm","so","rs","ss","st","sr","sk","si","se","sz","sc","sy","td","tg","th","tj","tm","tl","to","tt","tn","tr","tv","tz","ug","ua","uy","us","uz","va","vc","ve","vn","vu","ws","ye","za","zm","zw"],"x-enum-name":"Flag","x-enum-keys":["Afghanistan","Angola","Albania","Andorra","United Arab Emirates","Argentina","Armenia","Antigua and Barbuda","Australia","Austria","Azerbaijan","Burundi","Belgium","Benin","Burkina Faso","Bangladesh","Bulgaria","Bahrain","Bahamas","Bosnia and Herzegovina","Belarus","Belize","Bolivia","Brazil","Barbados","Brunei Darussalam","Bhutan","Botswana","Central African Republic","Canada","Switzerland","Chile","China","C\u00f4te d'Ivoire","Cameroon","Democratic Republic of the Congo","Republic of the Congo","Colombia","Comoros","Cape Verde","Costa Rica","Cuba","Cyprus","Czech Republic","Germany","Djibouti","Dominica","Denmark","Dominican Republic","Algeria","Ecuador","Egypt","Eritrea","Spain","Estonia","Ethiopia","Finland","Fiji","France","Micronesia (Federated States of)","Gabon","United Kingdom","Georgia","Ghana","Guinea","Gambia","Guinea-Bissau","Equatorial Guinea","Greece","Grenada","Guatemala","Guyana","Honduras","Croatia","Haiti","Hungary","Indonesia","India","Ireland","Iran (Islamic Republic of)","Iraq","Iceland","Israel","Italy","Jamaica","Jordan","Japan","Kazakhstan","Kenya","Kyrgyzstan","Cambodia","Kiribati","Saint Kitts and Nevis","South Korea","Kuwait","Lao People's Democratic Republic","Lebanon","Liberia","Libya","Saint Lucia","Liechtenstein","Sri Lanka","Lesotho","Lithuania","Luxembourg","Latvia","Morocco","Monaco","Moldova","Madagascar","Maldives","Mexico","Marshall Islands","North Macedonia","Mali","Malta","Myanmar","Montenegro","Mongolia","Mozambique","Mauritania","Mauritius","Malawi","Malaysia","Namibia","Niger","Nigeria","Nicaragua","Netherlands","Norway","Nepal","Nauru","New Zealand","Oman","Pakistan","Panama","Peru","Philippines","Palau","Papua New Guinea","Poland","North Korea","Portugal","Paraguay","Qatar","Romania","Russia","Rwanda","Saudi Arabia","Sudan","Senegal","Singapore","Solomon Islands","Sierra Leone","El Salvador","San Marino","Somalia","Serbia","South Sudan","Sao Tome and Principe","Suriname","Slovakia","Slovenia","Sweden","Eswatini","Seychelles","Syria","Chad","Togo","Thailand","Tajikistan","Turkmenistan","Timor-Leste","Tonga","Trinidad and Tobago","Tunisia","Turkey","Tuvalu","Tanzania","Uganda","Ukraine","Uruguay","United States","Uzbekistan","Vatican City","Saint Vincent and the Grenadines","Venezuela","Vietnam","Vanuatu","Samoa","Yemen","South Africa","Zambia","Zimbabwe"],"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"}]}},"\/avatars\/image":{"get":{"summary":"Get image from URL","operationId":"avatarsGetImage","consumes":["application\/json"],"produces":["image\/*"],"tags":["avatars"],"description":"Use this endpoint to fetch a remote image URL and crop it to any image size you want. This endpoint is very useful if you need to crop and display remote images in your app or in case you want to make sure a 3rd party image is properly served using a TLS protocol.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getImage","weight":46,"cookies":false,"type":"location","demo":"avatars\/get-image.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-image.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"url","description":"Image URL which you want to crop.","required":true,"type":"string","format":"url","x-example":"https:\/\/example.com","in":"query"},{"name":"width","description":"Resize preview image width, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get user initials","operationId":"avatarsGetInitials","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getInitials","weight":49,"cookies":false,"type":"location","demo":"avatars\/get-initials.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-initials.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"name","description":"Full Name. When empty, current user name or email will be used. Max length: 128 chars.","required":false,"type":"string","x-example":"[NAME]","default":"","in":"query"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":500,"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":500,"in":"query"},{"name":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"type":"string","default":"","in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR code","operationId":"avatarsGetQR","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getQR","weight":48,"cookies":false,"type":"location","demo":"avatars\/get-q-r.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-qr.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"text","description":"Plain text to be converted to QR code image.","required":true,"type":"string","x-example":"[TEXT]","in":"query"},{"name":"size","description":"QR code size. Pass an integer between 1 to 1000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":1,"default":400,"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"type":"integer","format":"int32","x-example":0,"default":1,"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"type":"boolean","x-example":false,"default":false,"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List documents","operationId":"databasesListDocuments","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","schema":{"$ref":"#\/definitions\/documentList"}}},"x-appwrite":{"method":"listDocuments","weight":93,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"post":{"summary":"Create document","operationId":"databasesCreateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"createDocument","weight":92,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","default":{},"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, only the current user is granted all permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get document","operationId":"databasesGetDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"getDocument","weight":94,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only method allowed is select.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"patch":{"summary":"Update document","operationId":"databasesUpdateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"updateDocument","weight":96,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","default":[],"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete document","operationId":"databasesDeleteDocument","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":97,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List executions","operationId":"functionsListExecutions","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","schema":{"$ref":"#\/definitions\/executionList"}}},"x-appwrite":{"method":"listExecutions","weight":268,"cookies":false,"type":"","demo":"functions\/list-executions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-executions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, responseStatusCode, duration","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create execution","operationId":"functionsCreateExecution","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","schema":{"$ref":"#\/definitions\/execution"}}},"x-appwrite":{"method":"createExecution","weight":267,"cookies":false,"type":"","demo":"functions\/create-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-execution.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"body":{"type":"string","description":"HTTP body of execution. Default value is empty string.","default":"","x-example":"[BODY]"},"async":{"type":"boolean","description":"Execute code in the background. Default value is false.","default":false,"x-example":false},"path":{"type":"string","description":"HTTP path of execution. Path can include query params. Default value is \/","default":"\/","x-example":"[PATH]"},"method":{"type":"string","description":"HTTP method of execution. Default value is GET.","default":"POST","x-example":"GET","enum":["GET","POST","PUT","PATCH","DELETE","OPTIONS"],"x-enum-name":null,"x-enum-keys":[]},"headers":{"type":"object","description":"HTTP headers of execution. Defaults to empty.","default":[],"x-example":"{}"}}}}]}},"\/functions\/{functionId}\/executions\/{executionId}":{"get":{"summary":"Get execution","operationId":"functionsGetExecution","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a function execution log by its unique ID.","responses":{"200":{"description":"Execution","schema":{"$ref":"#\/definitions\/execution"}}},"x-appwrite":{"method":"getExecution","weight":269,"cookies":false,"type":"","demo":"functions\/get-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-execution.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"executionId","description":"Execution ID.","required":true,"type":"string","x-example":"[EXECUTION_ID]","in":"path"}]}},"\/graphql":{"post":{"summary":"GraphQL endpoint","operationId":"graphqlQuery","consumes":["application\/json"],"produces":["application\/json"],"tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","schema":{"$ref":"#\/definitions\/any"}}},"x-appwrite":{"method":"query","weight":289,"cookies":false,"type":"graphql","demo":"graphql\/query.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"query":{"type":"object","description":"The query or queries to execute.","default":{},"x-example":"{}"}},"required":["query"]}}]}},"\/graphql\/mutation":{"post":{"summary":"GraphQL endpoint","operationId":"graphqlMutation","consumes":["application\/json"],"produces":["application\/json"],"tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","schema":{"$ref":"#\/definitions\/any"}}},"x-appwrite":{"method":"mutation","weight":288,"cookies":false,"type":"graphql","demo":"graphql\/mutation.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"query":{"type":"object","description":"The query or queries to execute.","default":{},"x-example":"{}"}},"required":["query"]}}]}},"\/locale":{"get":{"summary":"Get user locale","operationId":"localeGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"Get the current user location based on IP. Returns an object with user country code, country name, continent name, continent code, ip address and suggested currency. You can use the locale header to get the data in a supported language.\n\n([IP Geolocation by DB-IP](https:\/\/db-ip.com))","responses":{"200":{"description":"Locale","schema":{"$ref":"#\/definitions\/locale"}}},"x-appwrite":{"method":"get","weight":101,"cookies":false,"type":"","demo":"locale\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-locale.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/localed","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/locale\/codes":{"get":{"summary":"List Locale Codes","operationId":"localeListCodes","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all locale codes in [ISO 639-1](https:\/\/en.wikipedia.org\/wiki\/List_of_ISO_639-1_codes).","responses":{"200":{"description":"Locale codes list","schema":{"$ref":"#\/definitions\/localeCodeList"}}},"x-appwrite":{"method":"listCodes","weight":102,"cookies":false,"type":"","demo":"locale\/list-codes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-locale-codes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/localeCode","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/locale\/continents":{"get":{"summary":"List continents","operationId":"localeListContinents","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","schema":{"$ref":"#\/definitions\/continentList"}}},"x-appwrite":{"method":"listContinents","weight":106,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/continents","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List countries","operationId":"localeListCountries","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountries","weight":103,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/countries","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU countries","operationId":"localeListCountriesEU","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountriesEU","weight":104,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/countries\/eu","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List countries phone codes","operationId":"localeListCountriesPhones","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","schema":{"$ref":"#\/definitions\/phoneList"}}},"x-appwrite":{"method":"listCountriesPhones","weight":105,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/countries\/phones","offline-key":"","offline-response-key":"countryCode","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List currencies","operationId":"localeListCurrencies","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","schema":{"$ref":"#\/definitions\/currencyList"}}},"x-appwrite":{"method":"listCurrencies","weight":107,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/currencies","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List languages","operationId":"localeListLanguages","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","schema":{"$ref":"#\/definitions\/languageList"}}},"x-appwrite":{"method":"listLanguages","weight":108,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/languages","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/messaging\/topics\/{topicId}\/subscribers":{"post":{"summary":"Create a subscriber.","operationId":"messagingCreateSubscriber","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Subscriber","schema":{"$ref":"#\/definitions\/subscriber"}}},"x-appwrite":{"method":"createSubscriber","weight":338,"cookies":false,"type":"","demo":"messaging\/create-subscriber.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-subscriber.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.write","platforms":["server","client","console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[],"Session":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID to subscribe to.","required":true,"type":"string","x-example":"[TOPIC_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"subscriberId":{"type":"string","description":"Subscriber ID. Choose a custom Subscriber ID or a new Subscriber ID.","default":null,"x-example":"[SUBSCRIBER_ID]"},"targetId":{"type":"string","description":"Target ID. The target ID to link to the specified Topic ID.","default":null,"x-example":"[TARGET_ID]"}},"required":["subscriberId","targetId"]}}]}},"\/messaging\/topics\/{topicId}\/subscribers\/{subscriberId}":{"delete":{"summary":"Delete a subscriber.","operationId":"messagingDeleteSubscriber","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSubscriber","weight":342,"cookies":false,"type":"","demo":"messaging\/delete-subscriber.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-subscriber.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.write","platforms":["server","client","console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[],"Session":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID subscribed to.","required":true,"type":"string","x-example":"[TOPIC_ID]","in":"path"},{"name":"subscriberId","description":"Subscriber ID.","required":true,"type":"string","x-example":"[SUBSCRIBER_ID]","in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files":{"get":{"summary":"List files","operationId":"storageListFiles","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a list of all the user files. You can use the query params to filter your results.","responses":{"200":{"description":"Files List","schema":{"$ref":"#\/definitions\/fileList"}}},"x-appwrite":{"method":"listFiles","weight":181,"cookies":false,"type":"","demo":"storage\/list-files.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/list-files.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create file","operationId":"storageCreateFile","consumes":["multipart\/form-data"],"produces":["application\/json"],"tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"createFile","weight":180,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId},chunkId:{chunkId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","required":true,"x-upload-id":true,"type":"string","x-example":"[FILE_ID]","in":"formData"},{"name":"file","description":"Binary file. Appwrite SDKs provide helpers to handle file input. [Learn about file input](https:\/\/appwrite.io\/docs\/storage#file-input).","required":true,"type":"file","in":"formData"},{"name":"permissions","description":"An array of permission strings. By default, only the current user is granted all permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"x-example":"[\"read(\"any\")\"]","in":"formData"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get file","operationId":"storageGetFile","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"getFile","weight":182,"cookies":false,"type":"","demo":"storage\/get-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID.","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"}]},"put":{"summary":"Update file","operationId":"storageUpdateFile","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Update a file by its unique ID. Only users with write permissions have access to update this resource.","responses":{"200":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"updateFile","weight":186,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File unique ID.","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Name of the file","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission string. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","consumes":["application\/json"],"produces":[],"tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":187,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID.","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/download":{"get":{"summary":"Get file for download","operationId":"storageGetFileDownload","consumes":["application\/json"],"produces":["*\/*"],"tags":["storage"],"description":"Get a file content by its unique ID. The endpoint response return with a 'Content-Disposition: attachment' header that tells the browser to start downloading the file to user downloads directory.","responses":{"200":{"description":"File","schema":{"type":"file"}}},"x-appwrite":{"method":"getFileDownload","weight":184,"cookies":false,"type":"location","demo":"storage\/get-file-download.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-download.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID.","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/preview":{"get":{"summary":"Get file preview","operationId":"storageGetFilePreview","consumes":["application\/json"],"produces":["image\/*"],"tags":["storage"],"description":"Get a file preview image. Currently, this method supports preview for image files (jpg, png, and gif), other supported formats, like pdf, docs, slides, and spreadsheets, will return the file icon image. You can also pass query string arguments for cutting and resizing your preview image. Preview is supported only for image files smaller than 10MB.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFilePreview","weight":183,"cookies":false,"type":"location","demo":"storage\/get-file-preview.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-preview.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"},{"name":"width","description":"Resize preview image width, Pass an integer between 0 to 4000.","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 4000.","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"gravity","description":"Image crop gravity. Can be one of center,top-left,top,top-right,left,right,bottom-left,bottom,bottom-right","required":false,"type":"string","x-example":"center","enum":["center","top-left","top","top-right","left","right","bottom-left","bottom","bottom-right"],"x-enum-name":"ImageGravity","x-enum-keys":[],"default":"center","in":"query"},{"name":"quality","description":"Preview image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"borderWidth","description":"Preview image border in pixels. Pass an integer between 0 to 100. Defaults to 0.","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"borderColor","description":"Preview image border color. Use a valid HEX color, no # is needed for prefix.","required":false,"type":"string","default":"","in":"query"},{"name":"borderRadius","description":"Preview image border radius in pixels. Pass an integer between 0 to 4000.","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"opacity","description":"Preview image opacity. Only works with images having an alpha channel (like png). Pass a number between 0 to 1.","required":false,"type":"number","format":"float","x-example":0,"default":1,"in":"query"},{"name":"rotation","description":"Preview image rotation in degrees. Pass an integer between -360 and 360.","required":false,"type":"integer","format":"int32","x-example":-360,"default":0,"in":"query"},{"name":"background","description":"Preview image background color. Only works with transparent images (png). Use a valid HEX color, no # is needed for prefix.","required":false,"type":"string","default":"","in":"query"},{"name":"output","description":"Output format type (jpeg, jpg, png, gif and webp).","required":false,"type":"string","x-example":"jpg","enum":["jpg","jpeg","gif","png","webp"],"x-enum-name":"ImageFormat","x-enum-keys":[],"default":"","in":"query"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/view":{"get":{"summary":"Get file for view","operationId":"storageGetFileView","consumes":["application\/json"],"produces":["*\/*"],"tags":["storage"],"description":"Get a file content by its unique ID. This endpoint is similar to the download method but returns with no 'Content-Disposition: attachment' header.","responses":{"200":{"description":"File","schema":{"type":"file"}}},"x-appwrite":{"method":"getFileView","weight":185,"cookies":false,"type":"location","demo":"storage\/get-file-view.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-view.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID.","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"}]}},"\/teams":{"get":{"summary":"List teams","operationId":"teamsList","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get a list of all the teams in which the current user is a member. You can use the parameters to filter your results.","responses":{"200":{"description":"Teams List","schema":{"$ref":"#\/definitions\/teamList"}}},"x-appwrite":{"method":"list","weight":191,"cookies":false,"type":"","demo":"teams\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-teams.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create team","operationId":"teamsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"create","weight":190,"cookies":false,"type":"","demo":"teams\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/create-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"teamId":{"type":"string","description":"Team ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[TEAM_ID]"},"name":{"type":"string","description":"Team name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"roles":{"type":"array","description":"Array of strings. Use this param to set the roles in the team for the user who created it. The default role is **owner**. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","default":["owner"],"x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}]}},"\/teams\/{teamId}":{"get":{"summary":"Get team","operationId":"teamsGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"get","weight":192,"cookies":false,"type":"","demo":"teams\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams","offline-key":"{teamId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"}]},"put":{"summary":"Update name","operationId":"teamsUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Update the team's name by its unique ID.","responses":{"200":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"updateName","weight":194,"cookies":false,"type":"","demo":"teams\/update-name.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-name.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams","offline-key":"{teamId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"New team name. Max length: 128 chars.","default":null,"x-example":"[NAME]"}},"required":["name"]}}]},"delete":{"summary":"Delete team","operationId":"teamsDelete","consumes":["application\/json"],"produces":[],"tags":["teams"],"description":"Delete a team using its ID. Only team members with the owner role can delete the team.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":196,"cookies":false,"type":"","demo":"teams\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/delete-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"}]}},"\/teams\/{teamId}\/memberships":{"get":{"summary":"List team memberships","operationId":"teamsListMemberships","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"listMemberships","weight":198,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/memberships","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create team membership","operationId":"teamsCreateMembership","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Invite a new member to join your team. Provide an ID for existing users, or invite unregistered users using an email or phone number. If initiated from a Client SDK, Appwrite will send an email or sms with a link to join the team to the invited user, and an account will be created for them if one doesn't exist. If initiated from a Server SDK, the new member will be added automatically to the team.\n\nYou only need to provide one of a user ID, email, or phone number. Appwrite will prioritize accepting the user ID > email > phone number if you provide more than one of these parameters.\n\nUse the `url` parameter to redirect the user from the invitation email to your app. After the user is redirected, use the [Update Team Membership Status](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/teams#updateMembershipStatus) endpoint to allow the user to accept the invitation to the team. \n\nPlease note that to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) Appwrite will accept the only redirect URLs under the domains you have added as a platform on the Appwrite Console.\n","responses":{"201":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"createMembership","weight":197,"cookies":false,"type":"","demo":"teams\/create-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/create-team-membership.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"email":{"type":"string","description":"Email of the new team member.","default":"","x-example":"email@example.com"},"userId":{"type":"string","description":"ID of the user to be added to a team.","default":"","x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":"","x-example":"+12065550100"},"roles":{"type":"array","description":"Array of strings. Use this param to set the user roles in the team. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":"","x-example":"https:\/\/example.com"},"name":{"type":"string","description":"Name of the new team member. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["roles"]}}]}},"\/teams\/{teamId}\/memberships\/{membershipId}":{"get":{"summary":"Get team membership","operationId":"teamsGetMembership","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get a team member by the membership unique id. All team members have read access for this resource.","responses":{"200":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"getMembership","weight":199,"cookies":false,"type":"","demo":"teams\/get-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-member.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/memberships","offline-key":"{membershipId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"type":"string","x-example":"[MEMBERSHIP_ID]","in":"path"}]},"patch":{"summary":"Update membership","operationId":"teamsUpdateMembership","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Modify the roles of a team member. Only team members with the owner role have access to this endpoint. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions).\n","responses":{"200":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"updateMembership","weight":200,"cookies":false,"type":"","demo":"teams\/update-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"type":"string","x-example":"[MEMBERSHIP_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"roles":{"type":"array","description":"An array of strings. Use this param to set the user's roles in the team. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}}},"required":["roles"]}}]},"delete":{"summary":"Delete team membership","operationId":"teamsDeleteMembership","consumes":["application\/json"],"produces":[],"tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":202,"cookies":false,"type":"","demo":"teams\/delete-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/delete-team-membership.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"type":"string","x-example":"[MEMBERSHIP_ID]","in":"path"}]}},"\/teams\/{teamId}\/memberships\/{membershipId}\/status":{"patch":{"summary":"Update team membership status","operationId":"teamsUpdateMembershipStatus","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Use this endpoint to allow a user to accept an invitation to join a team after being redirected back to your app from the invitation email received by the user.\n\nIf the request is successful, a session for the user is automatically created.\n","responses":{"200":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"updateMembershipStatus","weight":201,"cookies":false,"type":"","demo":"teams\/update-membership-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"public","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"type":"string","x-example":"[MEMBERSHIP_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Secret key.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/teams\/{teamId}\/prefs":{"get":{"summary":"Get team preferences","operationId":"teamsGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get the team's shared preferences by its unique ID. If a preference doesn't need to be shared by all team members, prefer storing them in [user preferences](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#getPrefs).","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":193,"cookies":false,"type":"","demo":"teams\/get-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/prefs","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"}]},"put":{"summary":"Update preferences","operationId":"teamsUpdatePrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Update the team's preferences by its unique ID. The object you pass is stored as is and replaces any previous value. The maximum allowed prefs size is 64kB and throws an error if exceeded.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"updatePrefs","weight":195,"cookies":false,"type":"","demo":"teams\/update-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/prefs","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"prefs":{"type":"object","description":"Prefs key-value JSON object.","default":{},"x-example":"{}"}},"required":["prefs"]}}]}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"project","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]},{"name":"proxy","description":"The Proxy Service allows you to configure actions for your domains beyond DNS configuration.","x-globalAttributes":[]},{"name":"graphql","description":"The GraphQL API allows you to query and mutate your Appwrite server using GraphQL.","x-globalAttributes":[]},{"name":"console","description":"The Console service allows you to interact with console relevant informations.","x-globalAttributes":[]},{"name":"migrations","description":"The Migrations service allows you to migrate third-party data to your Appwrite project.","x-globalAttributes":[]},{"name":"messaging","description":"The Messaging service allows you to send messages to any provider type (SMTP, push notification, SMS, etc.).","x-globalAttributes":[]}],"definitions":{"any":{"description":"Any","type":"object","additionalProperties":true},"documentList":{"description":"Documents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of documents documents that matched your query.","x-example":5,"format":"int32"},"documents":{"type":"array","description":"List of documents.","items":{"type":"object","$ref":"#\/definitions\/document"},"x-example":""}},"required":["total","documents"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of sessions documents that matched your query.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"type":"object","$ref":"#\/definitions\/session"},"x-example":""}},"required":["total","sessions"]},"identityList":{"description":"Identities List","type":"object","properties":{"total":{"type":"integer","description":"Total number of identities documents that matched your query.","x-example":5,"format":"int32"},"identities":{"type":"array","description":"List of identities.","items":{"type":"object","$ref":"#\/definitions\/identity"},"x-example":""}},"required":["total","identities"]},"logList":{"description":"Logs List","type":"object","properties":{"total":{"type":"integer","description":"Total number of logs documents that matched your query.","x-example":5,"format":"int32"},"logs":{"type":"array","description":"List of logs.","items":{"type":"object","$ref":"#\/definitions\/log"},"x-example":""}},"required":["total","logs"]},"fileList":{"description":"Files List","type":"object","properties":{"total":{"type":"integer","description":"Total number of files documents that matched your query.","x-example":5,"format":"int32"},"files":{"type":"array","description":"List of files.","items":{"type":"object","$ref":"#\/definitions\/file"},"x-example":""}},"required":["total","files"]},"teamList":{"description":"Teams List","type":"object","properties":{"total":{"type":"integer","description":"Total number of teams documents that matched your query.","x-example":5,"format":"int32"},"teams":{"type":"array","description":"List of teams.","items":{"type":"object","$ref":"#\/definitions\/team"},"x-example":""}},"required":["total","teams"]},"membershipList":{"description":"Memberships List","type":"object","properties":{"total":{"type":"integer","description":"Total number of memberships documents that matched your query.","x-example":5,"format":"int32"},"memberships":{"type":"array","description":"List of memberships.","items":{"type":"object","$ref":"#\/definitions\/membership"},"x-example":""}},"required":["total","memberships"]},"executionList":{"description":"Executions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of executions documents that matched your query.","x-example":5,"format":"int32"},"executions":{"type":"array","description":"List of executions.","items":{"type":"object","$ref":"#\/definitions\/execution"},"x-example":""}},"required":["total","executions"]},"countryList":{"description":"Countries List","type":"object","properties":{"total":{"type":"integer","description":"Total number of countries documents that matched your query.","x-example":5,"format":"int32"},"countries":{"type":"array","description":"List of countries.","items":{"type":"object","$ref":"#\/definitions\/country"},"x-example":""}},"required":["total","countries"]},"continentList":{"description":"Continents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of continents documents that matched your query.","x-example":5,"format":"int32"},"continents":{"type":"array","description":"List of continents.","items":{"type":"object","$ref":"#\/definitions\/continent"},"x-example":""}},"required":["total","continents"]},"languageList":{"description":"Languages List","type":"object","properties":{"total":{"type":"integer","description":"Total number of languages documents that matched your query.","x-example":5,"format":"int32"},"languages":{"type":"array","description":"List of languages.","items":{"type":"object","$ref":"#\/definitions\/language"},"x-example":""}},"required":["total","languages"]},"currencyList":{"description":"Currencies List","type":"object","properties":{"total":{"type":"integer","description":"Total number of currencies documents that matched your query.","x-example":5,"format":"int32"},"currencies":{"type":"array","description":"List of currencies.","items":{"type":"object","$ref":"#\/definitions\/currency"},"x-example":""}},"required":["total","currencies"]},"phoneList":{"description":"Phones List","type":"object","properties":{"total":{"type":"integer","description":"Total number of phones documents that matched your query.","x-example":5,"format":"int32"},"phones":{"type":"array","description":"List of phones.","items":{"type":"object","$ref":"#\/definitions\/phone"},"x-example":""}},"required":["total","phones"]},"localeCodeList":{"description":"Locale codes list","type":"object","properties":{"total":{"type":"integer","description":"Total number of localeCodes documents that matched your query.","x-example":5,"format":"int32"},"localeCodes":{"type":"array","description":"List of localeCodes.","items":{"type":"object","$ref":"#\/definitions\/localeCode"},"x-example":""}},"required":["total","localeCodes"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"user":{"description":"User","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"password":{"type":"string","description":"Hashed user password.","x-example":"$argon2id$v=19$m=2048,t=4,p=3$aUZjLnliVWRINmFNTWMudg$5S+x+7uA31xFnrHFT47yFwcJeaP0w92L\/4LdgrVRXxE","x-nullable":true},"hash":{"type":"string","description":"Password hashing algorithm.","x-example":"argon2","x-nullable":true},"hashOptions":{"type":"object","description":"Password hashing algorithm configuration.","x-example":{},"items":{"x-oneOf":[{"$ref":"#\/definitions\/algoArgon2"},{"$ref":"#\/definitions\/algoScrypt"},{"$ref":"#\/definitions\/algoScryptModified"},{"$ref":"#\/definitions\/algoBcrypt"},{"$ref":"#\/definitions\/algoPhpass"},{"$ref":"#\/definitions\/algoSha"},{"$ref":"#\/definitions\/algoMd5"}]},"x-nullable":true},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"labels":{"type":"array","description":"Labels for the user.","items":{"type":"string"},"x-example":["vip"]},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"type":"object","$ref":"#\/definitions\/preferences"}},"targets":{"type":"array","description":"A user-owned message receiver. A single user may have multiple e.g. emails, phones, and a browser. Each target is registered with a single provider.","items":{"type":"object","$ref":"#\/definitions\/target"},"x-example":[]},"accessedAt":{"type":"string","description":"Most recent access date in ISO 8601 format. This attribute is only updated again after 24 hours.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","$updatedAt","name","registration","status","labels","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs","targets","accessedAt"]},"algoMd5":{"description":"AlgoMD5","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"md5"}},"required":["type"]},"algoSha":{"description":"AlgoSHA","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"sha"}},"required":["type"]},"algoPhpass":{"description":"AlgoPHPass","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"phpass"}},"required":["type"]},"algoBcrypt":{"description":"AlgoBcrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"bcrypt"}},"required":["type"]},"algoScrypt":{"description":"AlgoScrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scrypt"},"costCpu":{"type":"integer","description":"CPU complexity of computed hash.","x-example":8,"format":"int32"},"costMemory":{"type":"integer","description":"Memory complexity of computed hash.","x-example":14,"format":"int32"},"costParallel":{"type":"integer","description":"Parallelization of computed hash.","x-example":1,"format":"int32"},"length":{"type":"integer","description":"Length used to compute hash.","x-example":64,"format":"int32"}},"required":["type","costCpu","costMemory","costParallel","length"]},"algoScryptModified":{"description":"AlgoScryptModified","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scryptMod"},"salt":{"type":"string","description":"Salt used to compute hash.","x-example":"UxLMreBr6tYyjQ=="},"saltSeparator":{"type":"string","description":"Separator used to compute hash.","x-example":"Bw=="},"signerKey":{"type":"string","description":"Key used to compute hash.","x-example":"XyEKE9RcTDeLEsL\/RjwPDBv\/RqDl8fb3gpYEOQaPihbxf1ZAtSOHCjuAAa7Q3oHpCYhXSN9tizHgVOwn6krflQ=="}},"required":["type","salt","saltSeparator","signerKey"]},"algoArgon2":{"description":"AlgoArgon2","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"argon2"},"memoryCost":{"type":"integer","description":"Memory used to compute hash.","x-example":65536,"format":"int32"},"timeCost":{"type":"integer","description":"Amount of time consumed to compute hash","x-example":4,"format":"int32"},"threads":{"type":"integer","description":"Number of threads used to compute hash.","x-example":3,"format":"int32"}},"required":["type","memoryCost","timeCost","threads"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true},"secret":{"type":"string","description":"Secret used to authenticate the user. Only included if the request was made with an API key","x-example":"5e5bb8c16897e"}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current","secret"]},"identity":{"description":"Identity","type":"object","properties":{"$id":{"type":"string","description":"Identity ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Identity creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Identity update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"provider":{"type":"string","description":"Identity Provider.","x-example":"email"},"providerUid":{"type":"string","description":"ID of the User in the Identity Provider.","x-example":"5e5bb8c16897e"},"providerEmail":{"type":"string","description":"Email of the User in the Identity Provider.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Identity Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Identity Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"}},"required":["$id","$createdAt","$updatedAt","userId","provider","providerUid","providerEmail","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"securityPhrase":{"type":"string","description":"Security phrase of a token. Empty if security phrase was not requested when creating a token. It includes randomly generated phrase which is also sent in the external resource such as email.","x-example":"Golden Fox"}},"required":["$id","$createdAt","userId","secret","expire","securityPhrase"]},"jwt":{"description":"JWT","type":"object","properties":{"jwt":{"type":"string","description":"JWT encoded string.","x-example":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c"}},"required":["jwt"]},"locale":{"description":"Locale","type":"object","properties":{"ip":{"type":"string","description":"User IP address.","x-example":"127.0.0.1"},"countryCode":{"type":"string","description":"Country code in [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) two-character format","x-example":"US"},"country":{"type":"string","description":"Country name. This field support localization.","x-example":"United States"},"continentCode":{"type":"string","description":"Continent code. A two character continent code \"AF\" for Africa, \"AN\" for Antarctica, \"AS\" for Asia, \"EU\" for Europe, \"NA\" for North America, \"OC\" for Oceania, and \"SA\" for South America.","x-example":"NA"},"continent":{"type":"string","description":"Continent name. This field support localization.","x-example":"North America"},"eu":{"type":"boolean","description":"True if country is part of the European Union.","x-example":false},"currency":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format","x-example":"USD"}},"required":["ip","countryCode","country","continentCode","continent","eu","currency"]},"localeCode":{"description":"LocaleCode","type":"object","properties":{"code":{"type":"string","description":"Locale codes in [ISO 639-1](https:\/\/en.wikipedia.org\/wiki\/List_of_ISO_639-1_codes)","x-example":"en-us"},"name":{"type":"string","description":"Locale name","x-example":"US"}},"required":["code","name"]},"file":{"description":"File","type":"object","properties":{"$id":{"type":"string","description":"File ID.","x-example":"5e5ea5c16897e"},"bucketId":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"},"prefs":{"type":"object","description":"Team preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"type":"object","$ref":"#\/definitions\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","total","prefs"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":["owner"]}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","roles"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"requestMethod":{"type":"string","description":"HTTP request method type.","x-example":"GET"},"requestPath":{"type":"string","description":"HTTP request path and query.","x-example":"\/articles?id=5"},"requestHeaders":{"type":"array","description":"HTTP response headers as a key-value object. This will return only whitelisted headers. All headers are returned if execution is created as synchronous.","items":{"type":"object","$ref":"#\/definitions\/headers"},"x-example":[{"Content-Type":"application\/json"}]},"responseStatusCode":{"type":"integer","description":"HTTP response status code.","x-example":200,"format":"int32"},"responseBody":{"type":"string","description":"HTTP response body. This will return empty unless execution is created as synchronous.","x-example":"Developers are awesome."},"responseHeaders":{"type":"array","description":"HTTP response headers as a key-value object. This will return only whitelisted headers. All headers are returned if execution is created as synchronous.","items":{"type":"object","$ref":"#\/definitions\/headers"},"x-example":[{"Content-Type":"application\/json"}]},"logs":{"type":"string","description":"Function logs. Includes the last 4,000 characters. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"errors":{"type":"string","description":"Function errors. Includes the last 4,000 characters. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"Function execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","requestMethod","requestPath","requestHeaders","responseStatusCode","responseBody","responseHeaders","logs","errors","duration"]},"country":{"description":"Country","type":"object","properties":{"name":{"type":"string","description":"Country name.","x-example":"United States"},"code":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"}},"required":["name","code"]},"continent":{"description":"Continent","type":"object","properties":{"name":{"type":"string","description":"Continent name.","x-example":"Europe"},"code":{"type":"string","description":"Continent two letter code.","x-example":"EU"}},"required":["name","code"]},"language":{"description":"Language","type":"object","properties":{"name":{"type":"string","description":"Language name.","x-example":"Italian"},"code":{"type":"string","description":"Language two-character ISO 639-1 codes.","x-example":"it"},"nativeName":{"type":"string","description":"Language native name.","x-example":"Italiano"}},"required":["name","code","nativeName"]},"currency":{"description":"Currency","type":"object","properties":{"symbol":{"type":"string","description":"Currency symbol.","x-example":"$"},"name":{"type":"string","description":"Currency name.","x-example":"US dollar"},"symbolNative":{"type":"string","description":"Currency native symbol.","x-example":"$"},"decimalDigits":{"type":"integer","description":"Number of decimal digits.","x-example":2,"format":"int32"},"rounding":{"type":"number","description":"Currency digit rounding.","x-example":0,"format":"double"},"code":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format.","x-example":"USD"},"namePlural":{"type":"string","description":"Currency plural name","x-example":"US dollars"}},"required":["symbol","name","symbolNative","decimalDigits","rounding","code","namePlural"]},"phone":{"description":"Phone","type":"object","properties":{"code":{"type":"string","description":"Phone code.","x-example":"+1"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["code","countryCode","countryName"]},"headers":{"description":"Headers","type":"object","properties":{"name":{"type":"string","description":"Header name.","x-example":"Content-Type"},"value":{"type":"string","description":"Header value.","x-example":"application\/json"}},"required":["name","value"]},"subscriber":{"description":"Subscriber","type":"object","properties":{"$id":{"type":"string","description":"Subscriber ID.","x-example":"259125845563242502"},"$createdAt":{"type":"string","description":"Subscriber creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Subscriber update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"targetId":{"type":"string","description":"Target ID.","x-example":"259125845563242502"},"target":{"type":"object","description":"Target.","x-example":{"$id":"259125845563242502","$createdAt":"2020-10-15T06:38:00.000+00:00","$updatedAt":"2020-10-15T06:38:00.000+00:00","providerType":"email","providerId":"259125845563242502","name":"ageon-app-email","identifier":"random-mail@email.org","userId":"5e5ea5c16897e"},"items":{"type":"object","$ref":"#\/definitions\/target"}},"userId":{"type":"string","description":"Topic ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User Name.","x-example":"Aegon Targaryen"},"topicId":{"type":"string","description":"Topic ID.","x-example":"259125845563242502"},"providerType":{"type":"string","description":"The target provider type. Can be one of the following: `email`, `sms` or `push`.","x-example":"email"}},"required":["$id","$createdAt","$updatedAt","targetId","target","userId","userName","topicId","providerType"]},"target":{"description":"Target","type":"object","properties":{"$id":{"type":"string","description":"Target ID.","x-example":"259125845563242502"},"$createdAt":{"type":"string","description":"Target creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Target update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Target Name.","x-example":"Aegon apple token"},"userId":{"type":"string","description":"User ID.","x-example":"259125845563242502"},"providerId":{"type":"string","description":"Provider ID.","x-example":"259125845563242502","x-nullable":true},"providerType":{"type":"string","description":"The target provider type. Can be one of the following: `email`, `sms` or `push`.","x-example":"email"},"identifier":{"type":"string","description":"The target identifier.","x-example":"token"}},"required":["$id","$createdAt","$updatedAt","name","userId","providerType","identifier"]}},"externalDocs":{"description":"Full API docs, specs and tutorials","url":"https:\/\/appwrite.io\/docs"}} \ No newline at end of file diff --git a/app/config/specs/swagger2-latest-console.json b/app/config/specs/swagger2-latest-console.json index 32342e0873..2fdf5c58f7 100644 --- a/app/config/specs/swagger2-latest-console.json +++ b/app/config/specs/swagger2-latest-console.json @@ -1 +1 @@ -{"swagger":"2.0","info":{"version":"1.4.13","title":"Appwrite","description":"Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https:\/\/appwrite.io\/docs](https:\/\/appwrite.io\/docs)","termsOfService":"https:\/\/appwrite.io\/policy\/terms","contact":{"name":"Appwrite Team","url":"https:\/\/appwrite.io\/support","email":"team@appwrite.io"},"license":{"name":"BSD-3-Clause","url":"https:\/\/raw.githubusercontent.com\/appwrite\/appwrite\/master\/LICENSE"}},"host":"HOSTNAME","basePath":"\/v1","schemes":["https"],"consumes":["application\/json","multipart\/form-data"],"produces":["application\/json"],"securityDefinitions":{"Project":{"type":"apiKey","name":"X-Appwrite-Project","description":"Your project ID","in":"header","x-appwrite":{"demo":"5df5acd0d48c2"}},"Key":{"type":"apiKey","name":"X-Appwrite-Key","description":"Your secret API key","in":"header","x-appwrite":{"demo":"919c2d18fb5d4...a2ae413da83346ad2"}},"JWT":{"type":"apiKey","name":"X-Appwrite-JWT","description":"Your secret JSON Web Token","in":"header","x-appwrite":{"demo":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ..."}},"Locale":{"type":"apiKey","name":"X-Appwrite-Locale","description":"","in":"header","x-appwrite":{"demo":"en"}},"Mode":{"type":"apiKey","name":"X-Appwrite-Mode","description":"","in":"header","x-appwrite":{"demo":""}}},"paths":{"\/account":{"get":{"summary":"Get account","operationId":"accountGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get the currently logged in user.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"get","weight":22,"cookies":false,"type":"","demo":"account\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"post":{"summary":"Create account","operationId":"accountCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to allow a new user to register a new account in your project. After the user registration completes successfully, you can use the [\/account\/verfication](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createVerification) route to start verifying the user email address. To allow the new user to login to their new account, you need to create a new [account session](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createEmailSession).","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"create","weight":7,"cookies":false,"type":"","demo":"account\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"New user password. Must be between 8 and 256 chars.","default":null,"x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/account\/email":{"patch":{"summary":"Update email","operationId":"accountUpdateEmail","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateEmail","weight":29,"cookies":false,"type":"","demo":"account\/update-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["email","password"]}}]}},"\/account\/identities":{"get":{"summary":"List Identities","operationId":"accountListIdentities","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get the list of identities for the currently logged in user.","responses":{"200":{"description":"Identities List","schema":{"$ref":"#\/definitions\/identityList"}}},"x-appwrite":{"method":"listIdentities","weight":13,"cookies":false,"type":"","demo":"account\/list-identities.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-identities.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/identities","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, provider, providerUid, providerEmail, providerAccessTokenExpiry","required":false,"type":"string","default":[],"in":"query"}]}},"\/account\/identities\/{identityId}":{"delete":{"summary":"Delete identity","operationId":"accountDeleteIdentity","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Delete an identity by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIdentity","weight":14,"cookies":false,"type":"","demo":"account\/delete-identity.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-identity.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"identityId","description":"Identity ID.","required":true,"type":"string","x-example":"[IDENTITY_ID]","in":"path"}]}},"\/account\/jwt":{"post":{"summary":"Create JWT","operationId":"accountCreateJWT","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to create a JSON Web Token. You can use the resulting JWT to authenticate on behalf of the current user when working with the Appwrite server-side API and SDKs. The JWT secret is valid for 15 minutes from its creation and will be invalid if the user will logout in that time frame.","responses":{"201":{"description":"JWT","schema":{"$ref":"#\/definitions\/jwt"}}},"x-appwrite":{"method":"createJWT","weight":20,"cookies":false,"type":"","demo":"account\/create-j-w-t.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-jwt.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"List logs","operationId":"accountListLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get the list of latest security activity logs for the currently logged in user. Each log returns user IP address, location and date and time of log.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listLogs","weight":25,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update name","operationId":"accountUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateName","weight":27,"cookies":false,"type":"","demo":"account\/update-name.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-name.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"User name. Max length: 128 chars.","default":null,"x-example":"[NAME]"}},"required":["name"]}}]}},"\/account\/password":{"patch":{"summary":"Update password","operationId":"accountUpdatePassword","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePassword","weight":28,"cookies":false,"type":"","demo":"account\/update-password.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-password.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"password":{"type":"string","description":"New user password. Must be at least 8 chars.","default":null,"x-example":null},"oldPassword":{"type":"string","description":"Current user password. Must be at least 8 chars.","default":"","x-example":"password"}},"required":["password"]}}]}},"\/account\/phone":{"patch":{"summary":"Update phone","operationId":"accountUpdatePhone","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createPhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePhone","weight":30,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["phone","password"]}}]}},"\/account\/prefs":{"get":{"summary":"Get account preferences","operationId":"accountGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get the preferences as a key-value object for the currently logged in user.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":23,"cookies":false,"type":"","demo":"account\/get-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/prefs","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"patch":{"summary":"Update preferences","operationId":"accountUpdatePrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account preferences. The object you pass is stored as is, and replaces any previous value. The maximum allowed prefs size is 64kB and throws error if exceeded.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePrefs","weight":31,"cookies":false,"type":"","demo":"account\/update-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/prefs","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"prefs":{"type":"object","description":"Prefs key-value JSON object.","default":{},"x-example":"{}"}},"required":["prefs"]}}]}},"\/account\/recovery":{"post":{"summary":"Create password recovery","operationId":"accountCreateRecovery","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Sends the user an email with a temporary secret key for password reset. When the user clicks the confirmation link he is redirected back to your app password reset URL with the secret key and email address values attached to the URL query string. Use the query string params to submit a request to the [PUT \/account\/recovery](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateRecovery) endpoint to complete the process. The verification link sent to the user's email address is valid for 1 hour.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createRecovery","weight":36,"cookies":false,"type":"","demo":"account\/create-recovery.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-recovery.md","rate-limit":10,"rate-time":3600,"rate-key":["url:{url},email:{param-email}","ip:{ip}"],"scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"url":{"type":"string","description":"URL to redirect the user back to your app from the recovery email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":null,"x-example":"https:\/\/example.com"}},"required":["email","url"]}}]},"put":{"summary":"Create password recovery (confirmation)","operationId":"accountUpdateRecovery","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete the user account password reset. Both the **userId** and **secret** arguments will be passed as query parameters to the redirect URL you have provided when sending your request to the [POST \/account\/recovery](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createRecovery) endpoint.\n\nPlease note that in order to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) the only valid redirect URLs are the ones from domains you have set when adding your platforms in the console interface.","responses":{"200":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"updateRecovery","weight":37,"cookies":false,"type":"","demo":"account\/update-recovery.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-recovery.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid reset token.","default":null,"x-example":"[SECRET]"},"password":{"type":"string","description":"New user password. Must be between 8 and 256 chars.","default":null,"x-example":null}},"required":["userId","secret","password"]}}]}},"\/account\/sessions":{"get":{"summary":"List sessions","operationId":"accountListSessions","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get the list of active sessions across different devices for the currently logged in user.","responses":{"200":{"description":"Sessions List","schema":{"$ref":"#\/definitions\/sessionList"}}},"x-appwrite":{"method":"listSessions","weight":24,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/sessions","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete sessions","operationId":"accountDeleteSessions","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":35,"cookies":false,"type":"","demo":"account\/delete-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-sessions.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/account\/sessions\/anonymous":{"post":{"summary":"Create anonymous session","operationId":"accountCreateAnonymousSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to allow a new user to register an anonymous account in your project. This route will also create a new session for the user. To allow the new user to convert an anonymous account to a normal account, you need to update its [email and password](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateEmail) or create an [OAuth2 session](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#CreateOAuth2Session).","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"createAnonymousSession","weight":19,"cookies":false,"type":"","demo":"account\/create-anonymous-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-anonymous.md","rate-limit":50,"rate-time":3600,"rate-key":"ip:{ip}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/sessions\/email":{"post":{"summary":"Create email password session","operationId":"accountCreateEmailPasswordSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Allow the user to login into their account by providing a valid email and password combination. This route will create a new session for the user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"createEmailPasswordSession","weight":8,"cookies":false,"type":"","demo":"account\/create-email-password-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-email-password.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["email","password"]}}]}},"\/account\/sessions\/magic-url":{"put":{"summary":"Create session (deprecated)","operationId":"accountUpdateMagicURLSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to create a session from token. Provide the **userId** and **secret** parameters from the successful response of authentication flows initiated by token creation. For example, magic URL and phone login.","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateMagicURLSession","weight":16,"cookies":false,"type":"","demo":"account\/update-magic-u-r-l-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session.md","rate-limit":10,"rate-time":3600,"rate-key":"ip:{ip},userId:{param-userId}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/account\/sessions\/oauth2\/{provider}":{"get":{"summary":"Create OAuth2 session","operationId":"accountCreateOAuth2Session","consumes":["application\/json"],"produces":["text\/html"],"tags":["account"],"description":"Allow the user to login to their account using the OAuth2 provider of their choice. Each OAuth2 provider should be enabled from the Appwrite console first. Use the success and failure arguments to provide a redirect URL's back to your app when login is completed.\n\nIf there is already an active session, the new session will be attached to the logged-in account. If there are no active sessions, the server will attempt to look for a user with the same email address as the email received from the OAuth2 provider and attach the new session to the existing user. If no matching user is found - the server will create a new user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).\n","responses":{"301":{"description":"No content"}},"x-appwrite":{"method":"createOAuth2Session","weight":9,"cookies":false,"type":"webAuth","demo":"account\/create-o-auth2session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-oauth2.md","rate-limit":50,"rate-time":3600,"rate-key":"ip:{ip}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"provider","description":"OAuth2 Provider. Currently, supported providers are: amazon, apple, auth0, authentik, autodesk, bitbucket, bitly, box, dailymotion, discord, disqus, dropbox, etsy, facebook, github, gitlab, google, linkedin, microsoft, notion, oidc, okta, paypal, paypalSandbox, podio, salesforce, slack, spotify, stripe, tradeshift, tradeshiftBox, twitch, wordpress, yahoo, yammer, yandex, zoho, zoom.","required":true,"type":"string","x-example":"amazon","enum":["amazon","apple","auth0","authentik","autodesk","bitbucket","bitly","box","dailymotion","discord","disqus","dropbox","etsy","facebook","github","gitlab","google","linkedin","microsoft","notion","oidc","okta","paypal","paypalSandbox","podio","salesforce","slack","spotify","stripe","tradeshift","tradeshiftBox","twitch","wordpress","yahoo","yammer","yandex","zoho","zoom","mock"],"x-enum-name":"Provider","x-enum-keys":[],"in":"path"},{"name":"success","description":"URL to redirect back to your app after a successful login attempt. Only URLs from hostnames in your project's platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","required":false,"type":"string","format":"url","x-example":"https:\/\/example.com","default":"","in":"query"},{"name":"failure","description":"URL to redirect back to your app after a failed login attempt. Only URLs from hostnames in your project's platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","required":false,"type":"string","format":"url","x-example":"https:\/\/example.com","default":"","in":"query"},{"name":"token","description":"Include token credentials in the final redirect, useful for server-side integrations, or when cookies are not available.","required":false,"type":"boolean","x-example":false,"default":false,"in":"query"},{"name":"scopes","description":"A list of custom OAuth2 scopes. Check each provider internal docs for a list of supported scopes. Maximum of 100 scopes are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/sessions\/token":{"post":{"summary":"Create session","operationId":"accountCreateSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to create a session from token. Provide the **userId** and **secret** parameters from the successful response of authentication flows initiated by token creation. For example, magic URL and phone login.","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"createSession","weight":17,"cookies":false,"type":"","demo":"account\/create-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session.md","rate-limit":10,"rate-time":3600,"rate-key":"ip:{ip},userId:{param-userId}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Secret of a token generated by login methods. For example, the `createMagicURLToken` or `createPhoneToken` methods.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/account\/sessions\/{sessionId}":{"get":{"summary":"Get session","operationId":"accountGetSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to get a logged in user's session using a Session ID. Inputting 'current' will return the current session being used.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"getSession","weight":26,"cookies":false,"type":"","demo":"account\/get-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-session.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/sessions","offline-key":"{sessionId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to get the current device session.","required":true,"type":"string","x-example":"[SESSION_ID]","in":"path"}]},"patch":{"summary":"Update OAuth session (refresh tokens)","operationId":"accountUpdateSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Access tokens have limited lifespan and expire to mitigate security risks. If session was created using an OAuth provider, this route can be used to \"refresh\" the access token.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateSession","weight":34,"cookies":false,"type":"","demo":"account\/update-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-session.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to update the current device session.","required":true,"type":"string","x-example":"[SESSION_ID]","in":"path"}]},"delete":{"summary":"Delete session","operationId":"accountDeleteSession","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Logout the user. Use 'current' as the session ID to logout on this device, use a session ID to logout on another device. If you're looking to logout the user on all devices, use [Delete Sessions](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#deleteSessions) instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSession","weight":33,"cookies":false,"type":"","demo":"account\/delete-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-session.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to delete the current device session.","required":true,"type":"string","x-example":"[SESSION_ID]","in":"path"}]}},"\/account\/status":{"patch":{"summary":"Update status","operationId":"accountUpdateStatus","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateStatus","weight":32,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/account\/targets\/{targetId}\/push":{"put":{"summary":"Update Account's push target","operationId":"accountUpdatePushTarget","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"200":{"description":"Target","schema":{"$ref":"#\/definitions\/target"}}},"x-appwrite":{"method":"updatePushTarget","weight":42,"cookies":false,"type":"","demo":"account\/update-push-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"","platforms":["client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id"},"parameters":[{"name":"targetId","description":"Target ID.","required":true,"type":"string","x-example":"[TARGET_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"identifier":{"type":"string","description":"The target identifier (token, email, phone etc.)","default":null,"x-example":"[IDENTIFIER]"}},"required":["identifier"]}}]}},"\/account\/tokens\/magic-url":{"post":{"summary":"Create magic URL token","operationId":"accountCreateMagicURLToken","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Sends the user an email with a secret key for creating a session. If the provided user ID has not been registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [PUT \/account\/sessions\/magic-url](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateMagicURLSession) endpoint to complete the login process. The link sent to the user's email address is valid for 1 hour. If you are on a mobile device you can leave the URL parameter empty, so that the login completion will be handled by your Appwrite instance by default.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).\n","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createMagicURLToken","weight":15,"cookies":false,"type":"","demo":"account\/create-magic-u-r-l-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-token-magic-url.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"url":{"type":"string","description":"URL to redirect the user back to your app from the magic URL login. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":"","x-example":"https:\/\/example.com"},"securityPhrase":{"type":"boolean","description":"Toggle for security phrase. If enabled, email will be send with a randomly generated phrase and the phrase will also be included in the response. Confirming phrases match increases the security of authentication flow.","default":false,"x-example":false}},"required":["userId","email"]}}]}},"\/account\/tokens\/phone":{"post":{"summary":"Create phone token","operationId":"accountCreatePhoneToken","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Sends the user an SMS with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [PUT \/account\/sessions\/phone](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updatePhoneSession) endpoint to complete the login process. The secret sent to the user's phone is valid for 15 minutes.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createPhoneToken","weight":18,"cookies":false,"type":"","demo":"account\/create-phone-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-token-phone.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},phone:{param-phone}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"}},"required":["userId","phone"]}}]}},"\/account\/verification":{"post":{"summary":"Create email verification","operationId":"accountCreateVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to send a verification message to your user email address to confirm they are the valid owners of that address. Both the **userId** and **secret** arguments will be passed as query parameters to the URL you have provided to be attached to the verification email. The provided URL should redirect the user back to your app and allow you to complete the verification process by verifying both the **userId** and **secret** parameters. Learn more about how to [complete the verification process](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateVerification). The verification link sent to the user's email address is valid for 7 days.\n\nPlease note that in order to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md), the only valid redirect URLs are the ones from domains you have set when adding your platforms in the console interface.\n","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createVerification","weight":38,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"url":{"type":"string","description":"URL to redirect the user back to your app from the verification email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":null,"x-example":"https:\/\/example.com"}},"required":["url"]}}]},"put":{"summary":"Create email verification (confirmation)","operationId":"accountUpdateVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete the user email verification process. Use both the **userId** and **secret** parameters that were attached to your app URL to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"updateVerification","weight":39,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/account\/verification\/phone":{"post":{"summary":"Create phone verification","operationId":"accountCreatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updatePhone) endpoint. Learn more about how to [complete the verification process](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createPhoneVerification","weight":40,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{userId}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"put":{"summary":"Create phone verification (confirmation)","operationId":"accountUpdatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"updatePhoneVerification","weight":41,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/avatars\/browsers\/{code}":{"get":{"summary":"Get browser icon","operationId":"avatarsGetBrowser","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"You can use this endpoint to show different browser icons to your users. The code argument receives the browser code as it appears in your user [GET \/account\/sessions](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#getSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getBrowser","weight":44,"cookies":false,"type":"location","demo":"avatars\/get-browser.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-browser.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Browser Code.","required":true,"type":"string","x-example":"aa","enum":["aa","an","ch","ci","cm","cr","ff","sf","mf","ps","oi","om","op","on"],"x-enum-name":"Browser","x-enum-keys":["Avant Browser","Android WebView Beta","Google Chrome","Google Chrome (iOS)","Google Chrome (Mobile)","Chromium","Mozilla Firefox","Safari","Mobile Safari","Microsoft Edge","Microsoft Edge (iOS)","Opera Mini","Opera","Opera (Next)"],"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"}]}},"\/avatars\/credit-cards\/{code}":{"get":{"summary":"Get credit card icon","operationId":"avatarsGetCreditCard","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"The credit card endpoint will return you the icon of the credit card provider you need. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getCreditCard","weight":43,"cookies":false,"type":"location","demo":"avatars\/get-credit-card.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-credit-card.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Credit Card Code. Possible values: amex, argencard, cabal, censosud, diners, discover, elo, hipercard, jcb, mastercard, naranja, targeta-shopping, union-china-pay, visa, mir, maestro.","required":true,"type":"string","x-example":"amex","enum":["amex","argencard","cabal","censosud","diners","discover","elo","hipercard","jcb","mastercard","naranja","targeta-shopping","union-china-pay","visa","mir","maestro"],"x-enum-name":"CreditCard","x-enum-keys":["American Express","Argencard","Cabal","Consosud","Diners Club","Discover","Elo","Hipercard","JCB","Mastercard","Naranja","Tarjeta Shopping","Union China Pay","Visa","MIR","Maestro"],"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"}]}},"\/avatars\/favicon":{"get":{"summary":"Get favicon","operationId":"avatarsGetFavicon","consumes":["application\/json"],"produces":["image\/*"],"tags":["avatars"],"description":"Use this endpoint to fetch the favorite icon (AKA favicon) of any remote website URL.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFavicon","weight":47,"cookies":false,"type":"location","demo":"avatars\/get-favicon.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-favicon.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"url","description":"Website URL which you want to fetch the favicon from.","required":true,"type":"string","format":"url","x-example":"https:\/\/example.com","in":"query"}]}},"\/avatars\/flags\/{code}":{"get":{"summary":"Get country flag","operationId":"avatarsGetFlag","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"You can use this endpoint to show different country flags icons to your users. The code argument receives the 2 letter country code. Use width, height and quality arguments to change the output settings. Country codes follow the [ISO 3166-1](https:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFlag","weight":45,"cookies":false,"type":"location","demo":"avatars\/get-flag.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-flag.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Country Code. ISO Alpha-2 country code format.","required":true,"type":"string","x-example":"af","enum":["af","ao","al","ad","ae","ar","am","ag","au","at","az","bi","be","bj","bf","bd","bg","bh","bs","ba","by","bz","bo","br","bb","bn","bt","bw","cf","ca","ch","cl","cn","ci","cm","cd","cg","co","km","cv","cr","cu","cy","cz","de","dj","dm","dk","do","dz","ec","eg","er","es","ee","et","fi","fj","fr","fm","ga","gb","ge","gh","gn","gm","gw","gq","gr","gd","gt","gy","hn","hr","ht","hu","id","in","ie","ir","iq","is","il","it","jm","jo","jp","kz","ke","kg","kh","ki","kn","kr","kw","la","lb","lr","ly","lc","li","lk","ls","lt","lu","lv","ma","mc","md","mg","mv","mx","mh","mk","ml","mt","mm","me","mn","mz","mr","mu","mw","my","na","ne","ng","ni","nl","no","np","nr","nz","om","pk","pa","pe","ph","pw","pg","pl","kp","pt","py","qa","ro","ru","rw","sa","sd","sn","sg","sb","sl","sv","sm","so","rs","ss","st","sr","sk","si","se","sz","sc","sy","td","tg","th","tj","tm","tl","to","tt","tn","tr","tv","tz","ug","ua","uy","us","uz","va","vc","ve","vn","vu","ws","ye","za","zm","zw"],"x-enum-name":"Flag","x-enum-keys":["Afghanistan","Angola","Albania","Andorra","United Arab Emirates","Argentina","Armenia","Antigua and Barbuda","Australia","Austria","Azerbaijan","Burundi","Belgium","Benin","Burkina Faso","Bangladesh","Bulgaria","Bahrain","Bahamas","Bosnia and Herzegovina","Belarus","Belize","Bolivia","Brazil","Barbados","Brunei Darussalam","Bhutan","Botswana","Central African Republic","Canada","Switzerland","Chile","China","C\u00f4te d'Ivoire","Cameroon","Democratic Republic of the Congo","Republic of the Congo","Colombia","Comoros","Cape Verde","Costa Rica","Cuba","Cyprus","Czech Republic","Germany","Djibouti","Dominica","Denmark","Dominican Republic","Algeria","Ecuador","Egypt","Eritrea","Spain","Estonia","Ethiopia","Finland","Fiji","France","Micronesia (Federated States of)","Gabon","United Kingdom","Georgia","Ghana","Guinea","Gambia","Guinea-Bissau","Equatorial Guinea","Greece","Grenada","Guatemala","Guyana","Honduras","Croatia","Haiti","Hungary","Indonesia","India","Ireland","Iran (Islamic Republic of)","Iraq","Iceland","Israel","Italy","Jamaica","Jordan","Japan","Kazakhstan","Kenya","Kyrgyzstan","Cambodia","Kiribati","Saint Kitts and Nevis","South Korea","Kuwait","Lao People's Democratic Republic","Lebanon","Liberia","Libya","Saint Lucia","Liechtenstein","Sri Lanka","Lesotho","Lithuania","Luxembourg","Latvia","Morocco","Monaco","Moldova","Madagascar","Maldives","Mexico","Marshall Islands","North Macedonia","Mali","Malta","Myanmar","Montenegro","Mongolia","Mozambique","Mauritania","Mauritius","Malawi","Malaysia","Namibia","Niger","Nigeria","Nicaragua","Netherlands","Norway","Nepal","Nauru","New Zealand","Oman","Pakistan","Panama","Peru","Philippines","Palau","Papua New Guinea","Poland","North Korea","Portugal","Paraguay","Qatar","Romania","Russia","Rwanda","Saudi Arabia","Sudan","Senegal","Singapore","Solomon Islands","Sierra Leone","El Salvador","San Marino","Somalia","Serbia","South Sudan","Sao Tome and Principe","Suriname","Slovakia","Slovenia","Sweden","Eswatini","Seychelles","Syria","Chad","Togo","Thailand","Tajikistan","Turkmenistan","Timor-Leste","Tonga","Trinidad and Tobago","Tunisia","Turkey","Tuvalu","Tanzania","Uganda","Ukraine","Uruguay","United States","Uzbekistan","Vatican City","Saint Vincent and the Grenadines","Venezuela","Vietnam","Vanuatu","Samoa","Yemen","South Africa","Zambia","Zimbabwe"],"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"}]}},"\/avatars\/image":{"get":{"summary":"Get image from URL","operationId":"avatarsGetImage","consumes":["application\/json"],"produces":["image\/*"],"tags":["avatars"],"description":"Use this endpoint to fetch a remote image URL and crop it to any image size you want. This endpoint is very useful if you need to crop and display remote images in your app or in case you want to make sure a 3rd party image is properly served using a TLS protocol.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getImage","weight":46,"cookies":false,"type":"location","demo":"avatars\/get-image.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-image.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"url","description":"Image URL which you want to crop.","required":true,"type":"string","format":"url","x-example":"https:\/\/example.com","in":"query"},{"name":"width","description":"Resize preview image width, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get user initials","operationId":"avatarsGetInitials","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getInitials","weight":49,"cookies":false,"type":"location","demo":"avatars\/get-initials.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-initials.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"name","description":"Full Name. When empty, current user name or email will be used. Max length: 128 chars.","required":false,"type":"string","x-example":"[NAME]","default":"","in":"query"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":500,"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":500,"in":"query"},{"name":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"type":"string","default":"","in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR code","operationId":"avatarsGetQR","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getQR","weight":48,"cookies":false,"type":"location","demo":"avatars\/get-q-r.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-qr.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"text","description":"Plain text to be converted to QR code image.","required":true,"type":"string","x-example":"[TEXT]","in":"query"},{"name":"size","description":"QR code size. Pass an integer between 1 to 1000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":1,"default":400,"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"type":"integer","format":"int32","x-example":0,"default":1,"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"type":"boolean","x-example":false,"default":false,"in":"query"}]}},"\/console\/assistant":{"post":{"summary":"Ask Query","operationId":"assistantChat","consumes":["application\/json"],"produces":["text\/plain"],"tags":["assistant"],"description":"","responses":{"200":{"description":"File","schema":{"type":"file"}}},"x-appwrite":{"method":"chat","weight":291,"cookies":false,"type":"","demo":"assistant\/chat.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/assistant\/chat.md","rate-limit":15,"rate-time":3600,"rate-key":"userId:{userId}","scope":"assistant.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"prompt":{"type":"string","description":"Prompt. A string containing questions asked to the AI assistant.","default":null,"x-example":"[PROMPT]"}},"required":["prompt"]}}]}},"\/console\/variables":{"get":{"summary":"Get variables","operationId":"consoleVariables","consumes":["application\/json"],"produces":["application\/json"],"tags":["console"],"description":"Get all Environment Variables that are relevant for the console.","responses":{"200":{"description":"Console Variables","schema":{"$ref":"#\/definitions\/consoleVariables"}}},"x-appwrite":{"method":"variables","weight":290,"cookies":false,"type":"","demo":"console\/variables.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/console\/variables.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/databases":{"get":{"summary":"List databases","operationId":"databasesList","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all databases from the current Appwrite project. You can use the search parameter to filter your results.","responses":{"200":{"description":"Databases List","schema":{"$ref":"#\/definitions\/databaseList"}}},"x-appwrite":{"method":"list","weight":54,"cookies":false,"type":"","demo":"databases\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create database","operationId":"databasesCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Database.\n","responses":{"201":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"create","weight":53,"cookies":false,"type":"","demo":"databases\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"databaseId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[DATABASE_ID]","x-global":true},"name":{"type":"string","description":"Database name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Is the database enabled? When set to 'disabled', users cannot access the database but Server SDKs with an API key can still read and write to the database. No data is lost when this is toggled.","default":true,"x-example":false}},"required":["databaseId","name"]}}]}},"\/databases\/usage":{"get":{"summary":"Get usage stats for the database","operationId":"databasesGetUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"UsageDatabases","schema":{"$ref":"#\/definitions\/usageDatabases"}}},"x-appwrite":{"method":"getUsage","weight":98,"cookies":false,"type":"","demo":"databases\/get-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"`Date range.","required":false,"type":"string","x-example":"24h","enum":["24h","7d","30d","90d"],"x-enum-name":null,"x-enum-keys":["Twenty Four Hours","Seven Days","Thirty Days","Ninety Days"],"default":"30d","in":"query"}]}},"\/databases\/{databaseId}":{"get":{"summary":"Get database","operationId":"databasesGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a database by its unique ID. This endpoint response returns a JSON object with the database metadata.","responses":{"200":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"get","weight":55,"cookies":false,"type":"","demo":"databases\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"}]},"put":{"summary":"Update database","operationId":"databasesUpdate","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a database by its unique ID.","responses":{"200":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"update","weight":57,"cookies":false,"type":"","demo":"databases\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Database name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Is database enabled? When set to 'disabled', users cannot access the database but Server SDKs with an API key can still read and write to the database. No data is lost when this is toggled.","default":true,"x-example":false}},"required":["name"]}}]},"delete":{"summary":"Delete database","operationId":"databasesDelete","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a database by its unique ID. Only API keys with with databases.write scope can delete a database.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":58,"cookies":false,"type":"","demo":"databases\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections":{"get":{"summary":"List collections","operationId":"databasesListCollections","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all collections that belong to the provided databaseId. You can use the search parameter to filter your results.","responses":{"200":{"description":"Collections List","schema":{"$ref":"#\/definitions\/collectionList"}}},"x-appwrite":{"method":"listCollections","weight":60,"cookies":false,"type":"","demo":"databases\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, documentSecurity","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create collection","operationId":"databasesCreateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Collection. Before using this route, you should create a new database resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"createCollection","weight":59,"cookies":false,"type":"","demo":"databases\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permissions strings. By default, no user is granted with any permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":false,"x-example":false},"enabled":{"type":"boolean","description":"Is collection enabled? When set to 'disabled', users cannot access the collection but Server SDKs with and API key can still read and write to the collection. No data is lost when this is toggled.","default":true,"x-example":false}},"required":["collectionId","name"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}":{"get":{"summary":"Get collection","operationId":"databasesGetCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a collection by its unique ID. This endpoint response returns a JSON object with the collection metadata.","responses":{"200":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"getCollection","weight":61,"cookies":false,"type":"","demo":"databases\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]},"put":{"summary":"Update collection","operationId":"databasesUpdateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a collection by its unique ID.","responses":{"200":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"updateCollection","weight":63,"cookies":false,"type":"","demo":"databases\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":false,"x-example":false},"enabled":{"type":"boolean","description":"Is collection enabled? When set to 'disabled', users cannot access the collection but Server SDKs with and API key can still read and write to the collection. No data is lost when this is toggled.","default":true,"x-example":false}},"required":["name"]}}]},"delete":{"summary":"Delete collection","operationId":"databasesDeleteCollection","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a collection by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteCollection","weight":64,"cookies":false,"type":"","demo":"databases\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes":{"get":{"summary":"List attributes","operationId":"databasesListAttributes","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Attributes List","schema":{"$ref":"#\/definitions\/attributeList"}}},"x-appwrite":{"method":"listAttributes","weight":75,"cookies":false,"type":"","demo":"databases\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: key, type, size, required, array, status, error","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create boolean attribute","operationId":"databasesCreateBooleanAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a boolean attribute.\n","responses":{"202":{"description":"AttributeBoolean","schema":{"$ref":"#\/definitions\/attributeBoolean"}}},"x-appwrite":{"method":"createBooleanAttribute","weight":72,"cookies":false,"type":"","demo":"databases\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":false},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean\/{key}":{"patch":{"summary":"Update boolean attribute","operationId":"databasesUpdateBooleanAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"","responses":{"200":{"description":"AttributeBoolean","schema":{"$ref":"#\/definitions\/attributeBoolean"}}},"x-appwrite":{"method":"updateBooleanAttribute","weight":84,"cookies":false,"type":"","demo":"databases\/update-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":false,"x-nullable":true}},"required":["required","default"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/datetime":{"post":{"summary":"Create datetime attribute","operationId":"databasesCreateDatetimeAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"AttributeDatetime","schema":{"$ref":"#\/definitions\/attributeDatetime"}}},"x-appwrite":{"method":"createDatetimeAttribute","weight":73,"cookies":false,"type":"","demo":"databases\/create-datetime-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-datetime-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for the attribute in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/datetime\/{key}":{"patch":{"summary":"Update dateTime attribute","operationId":"databasesUpdateDatetimeAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"","responses":{"200":{"description":"AttributeDatetime","schema":{"$ref":"#\/definitions\/attributeDatetime"}}},"x-appwrite":{"method":"updateDatetimeAttribute","weight":85,"cookies":false,"type":"","demo":"databases\/update-datetime-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-datetime-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null,"x-nullable":true}},"required":["required","default"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create email attribute","operationId":"databasesCreateEmailAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create an email attribute.\n","responses":{"202":{"description":"AttributeEmail","schema":{"$ref":"#\/definitions\/attributeEmail"}}},"x-appwrite":{"method":"createEmailAttribute","weight":66,"cookies":false,"type":"","demo":"databases\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"email@example.com"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/email\/{key}":{"patch":{"summary":"Update email attribute","operationId":"databasesUpdateEmailAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Update an email attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeEmail","schema":{"$ref":"#\/definitions\/attributeEmail"}}},"x-appwrite":{"method":"updateEmailAttribute","weight":78,"cookies":false,"type":"","demo":"databases\/update-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"email@example.com","x-nullable":true}},"required":["required","default"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create enum attribute","operationId":"databasesCreateEnumAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"AttributeEnum","schema":{"$ref":"#\/definitions\/attributeEnum"}}},"x-appwrite":{"method":"createEnumAttribute","weight":67,"cookies":false,"type":"","demo":"databases\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"elements":{"type":"array","description":"Array of elements in enumerated type. Uses length of longest element to determine size. Maximum of 100 elements are allowed, each 255 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","elements","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/enum\/{key}":{"patch":{"summary":"Update enum attribute","operationId":"databasesUpdateEnumAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Update an enum attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeEnum","schema":{"$ref":"#\/definitions\/attributeEnum"}}},"x-appwrite":{"method":"updateEnumAttribute","weight":79,"cookies":false,"type":"","demo":"databases\/update-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-enum-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"elements":{"type":"array","description":"Array of elements in enumerated type. Uses length of longest element to determine size. Maximum of 100 elements are allowed, each 255 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"[DEFAULT]","x-nullable":true}},"required":["elements","required","default"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create float attribute","operationId":"databasesCreateFloatAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeFloat","schema":{"$ref":"#\/definitions\/attributeFloat"}}},"x-appwrite":{"method":"createFloatAttribute","weight":71,"cookies":false,"type":"","demo":"databases\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"min":{"type":"number","description":"Minimum value to enforce on new documents","default":null,"x-example":null},"max":{"type":"number","description":"Maximum value to enforce on new documents","default":null,"x-example":null},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/float\/{key}":{"patch":{"summary":"Update float attribute","operationId":"databasesUpdateFloatAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Update a float attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeFloat","schema":{"$ref":"#\/definitions\/attributeFloat"}}},"x-appwrite":{"method":"updateFloatAttribute","weight":83,"cookies":false,"type":"","demo":"databases\/update-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"min":{"type":"number","description":"Minimum value to enforce on new documents","default":null,"x-example":null},"max":{"type":"number","description":"Maximum value to enforce on new documents","default":null,"x-example":null},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null,"x-nullable":true}},"required":["required","min","max","default"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create integer attribute","operationId":"databasesCreateIntegerAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeInteger","schema":{"$ref":"#\/definitions\/attributeInteger"}}},"x-appwrite":{"method":"createIntegerAttribute","weight":70,"cookies":false,"type":"","demo":"databases\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"min":{"type":"integer","description":"Minimum value to enforce on new documents","default":null,"x-example":null},"max":{"type":"integer","description":"Maximum value to enforce on new documents","default":null,"x-example":null},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/integer\/{key}":{"patch":{"summary":"Update integer attribute","operationId":"databasesUpdateIntegerAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Update an integer attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeInteger","schema":{"$ref":"#\/definitions\/attributeInteger"}}},"x-appwrite":{"method":"updateIntegerAttribute","weight":82,"cookies":false,"type":"","demo":"databases\/update-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"min":{"type":"integer","description":"Minimum value to enforce on new documents","default":null,"x-example":null},"max":{"type":"integer","description":"Maximum value to enforce on new documents","default":null,"x-example":null},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null,"x-nullable":true}},"required":["required","min","max","default"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP address attribute","operationId":"databasesCreateIpAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create IP address attribute.\n","responses":{"202":{"description":"AttributeIP","schema":{"$ref":"#\/definitions\/attributeIp"}}},"x-appwrite":{"method":"createIpAttribute","weight":68,"cookies":false,"type":"","demo":"databases\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/ip\/{key}":{"patch":{"summary":"Update IP address attribute","operationId":"databasesUpdateIpAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Update an ip attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeIP","schema":{"$ref":"#\/definitions\/attributeIp"}}},"x-appwrite":{"method":"updateIpAttribute","weight":80,"cookies":false,"type":"","demo":"databases\/update-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null,"x-nullable":true}},"required":["required","default"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/relationship":{"post":{"summary":"Create relationship attribute","operationId":"databasesCreateRelationshipAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create relationship attribute. [Learn more about relationship attributes](https:\/\/appwrite.io\/docs\/databases-relationships#relationship-attributes).\n","responses":{"202":{"description":"AttributeRelationship","schema":{"$ref":"#\/definitions\/attributeRelationship"}}},"x-appwrite":{"method":"createRelationshipAttribute","weight":74,"cookies":false,"type":"","demo":"databases\/create-relationship-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-relationship-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"relatedCollectionId":{"type":"string","description":"Related Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","default":null,"x-example":"[RELATED_COLLECTION_ID]"},"type":{"type":"string","description":"Relation type","default":null,"x-example":"oneToOne","enum":["oneToOne","manyToOne","manyToMany","oneToMany"],"x-enum-name":"RelationshipType","x-enum-keys":[]},"twoWay":{"type":"boolean","description":"Is Two Way?","default":false,"x-example":false},"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"twoWayKey":{"type":"string","description":"Two Way Attribute Key.","default":null,"x-example":null},"onDelete":{"type":"string","description":"Constraints option","default":"restrict","x-example":"cascade","enum":["cascade","restrict","setNull"],"x-enum-name":"RelationMutate","x-enum-keys":[]}},"required":["relatedCollectionId","type"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create string attribute","operationId":"databasesCreateStringAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a string attribute.\n","responses":{"202":{"description":"AttributeString","schema":{"$ref":"#\/definitions\/attributeString"}}},"x-appwrite":{"method":"createStringAttribute","weight":65,"cookies":false,"type":"","demo":"databases\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"size":{"type":"integer","description":"Attribute size for text attributes, in number of characters.","default":null,"x-example":1},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false},"encrypt":{"type":"boolean","description":"Toggle encryption for the attribute. Encryption enhances security by not storing any plain text values in the database. However, encrypted attributes cannot be queried.","default":false,"x-example":false}},"required":["key","size","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/string\/{key}":{"patch":{"summary":"Update string attribute","operationId":"databasesUpdateStringAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Update a string attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeString","schema":{"$ref":"#\/definitions\/attributeString"}}},"x-appwrite":{"method":"updateStringAttribute","weight":77,"cookies":false,"type":"","demo":"databases\/update-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"[DEFAULT]","x-nullable":true}},"required":["required","default"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL attribute","operationId":"databasesCreateUrlAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a URL attribute.\n","responses":{"202":{"description":"AttributeURL","schema":{"$ref":"#\/definitions\/attributeUrl"}}},"x-appwrite":{"method":"createUrlAttribute","weight":69,"cookies":false,"type":"","demo":"databases\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"https:\/\/example.com"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url\/{key}":{"patch":{"summary":"Update URL attribute","operationId":"databasesUpdateUrlAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Update an url attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeURL","schema":{"$ref":"#\/definitions\/attributeUrl"}}},"x-appwrite":{"method":"updateUrlAttribute","weight":81,"cookies":false,"type":"","demo":"databases\/update-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"https:\/\/example.com","x-nullable":true}},"required":["required","default"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get attribute","operationId":"databasesGetAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, or AttributeDatetime, or AttributeRelationship, or AttributeString","schema":{"x-oneOf":[{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeRelationship"},{"$ref":"#\/definitions\/attributeString"}]}}},"x-appwrite":{"method":"getAttribute","weight":76,"cookies":false,"type":"","demo":"databases\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"}]},"delete":{"summary":"Delete attribute","operationId":"databasesDeleteAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":87,"cookies":false,"type":"","demo":"databases\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/{key}\/relationship":{"patch":{"summary":"Update relationship attribute","operationId":"databasesUpdateRelationshipAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Update relationship attribute. [Learn more about relationship attributes](https:\/\/appwrite.io\/docs\/databases-relationships#relationship-attributes).\n","responses":{"200":{"description":"AttributeRelationship","schema":{"$ref":"#\/definitions\/attributeRelationship"}}},"x-appwrite":{"method":"updateRelationshipAttribute","weight":86,"cookies":false,"type":"","demo":"databases\/update-relationship-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-relationship-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"onDelete":{"type":"string","description":"Constraints option","default":null,"x-example":"cascade","enum":["cascade","restrict","setNull"],"x-enum-name":"RelationMutate","x-enum-keys":[]}}}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List documents","operationId":"databasesListDocuments","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","schema":{"$ref":"#\/definitions\/documentList"}}},"x-appwrite":{"method":"listDocuments","weight":93,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"post":{"summary":"Create document","operationId":"databasesCreateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"createDocument","weight":92,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","default":{},"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, only the current user is granted all permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get document","operationId":"databasesGetDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"getDocument","weight":94,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only method allowed is select.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"patch":{"summary":"Update document","operationId":"databasesUpdateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"updateDocument","weight":96,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","default":[],"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete document","operationId":"databasesDeleteDocument","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":97,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}\/logs":{"get":{"summary":"List document logs","operationId":"databasesListDocumentLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get the document activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listDocumentLogs","weight":95,"cookies":false,"type":"","demo":"databases\/list-document-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes":{"get":{"summary":"List indexes","operationId":"databasesListIndexes","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Indexes List","schema":{"$ref":"#\/definitions\/indexList"}}},"x-appwrite":{"method":"listIndexes","weight":89,"cookies":false,"type":"","demo":"databases\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: key, type, status, attributes, error","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"post":{"summary":"Create index","operationId":"databasesCreateIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"createIndex","weight":88,"cookies":false,"type":"","demo":"databases\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Index Key.","default":null,"x-example":null},"type":{"type":"string","description":"Index type.","default":null,"x-example":"key","enum":["key","fulltext","unique","spatial","array"],"x-enum-name":"IndexType","x-enum-keys":[]},"attributes":{"type":"array","description":"Array of attributes to index. Maximum of 100 attributes are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders. Maximum of 100 orders are allowed.","default":[],"x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get index","operationId":"databasesGetIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"getIndex","weight":90,"cookies":false,"type":"","demo":"databases\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Index Key.","required":true,"type":"string","in":"path"}]},"delete":{"summary":"Delete index","operationId":"databasesDeleteIndex","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":91,"cookies":false,"type":"","demo":"databases\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Index Key.","required":true,"type":"string","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/logs":{"get":{"summary":"List collection logs","operationId":"databasesListCollectionLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get the collection activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listCollectionLogs","weight":62,"cookies":false,"type":"","demo":"databases\/list-collection-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/usage":{"get":{"summary":"Get usage stats for a collection","operationId":"databasesGetCollectionUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"UsageCollection","schema":{"$ref":"#\/definitions\/usageCollection"}}},"x-appwrite":{"method":"getCollectionUsage","weight":100,"cookies":false,"type":"","demo":"databases\/get-collection-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","enum":["24h","7d","30d","90d"],"x-enum-name":null,"x-enum-keys":["Twenty Four Hours","Seven Days","Thirty Days","Ninety Days"],"default":"30d","in":"query"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/databases\/{databaseId}\/logs":{"get":{"summary":"List database logs","operationId":"databasesListLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get the database activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listLogs","weight":56,"cookies":false,"type":"","demo":"databases\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/databases\/{databaseId}\/usage":{"get":{"summary":"Get usage stats for the database","operationId":"databasesGetDatabaseUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"UsageDatabase","schema":{"$ref":"#\/definitions\/usageDatabase"}}},"x-appwrite":{"method":"getDatabaseUsage","weight":99,"cookies":false,"type":"","demo":"databases\/get-database-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"range","description":"`Date range.","required":false,"type":"string","x-example":"24h","enum":["24h","7d","30d","90d"],"x-enum-name":null,"x-enum-keys":["Twenty Four Hours","Seven Days","Thirty Days","Ninety Days"],"default":"30d","in":"query"}]}},"\/functions":{"get":{"summary":"List functions","operationId":"functionsList","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the project's functions. You can use the query params to filter your results.","responses":{"200":{"description":"Functions List","schema":{"$ref":"#\/definitions\/functionList"}}},"x-appwrite":{"method":"list","weight":253,"cookies":false,"type":"","demo":"functions\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-functions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, runtime, deployment, schedule, scheduleNext, schedulePrevious, timeout, entrypoint, commands, installationId","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create function","operationId":"functionsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function. You can pass a list of [permissions](https:\/\/appwrite.io\/docs\/permissions) to allow different project users or team with access to execute the function using the client API.","responses":{"201":{"description":"Function","schema":{"$ref":"#\/definitions\/function"}}},"x-appwrite":{"method":"create","weight":252,"cookies":false,"type":"","demo":"functions\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"functionId":{"type":"string","description":"Function ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[FUNCTION_ID]"},"name":{"type":"string","description":"Function name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"runtime":{"type":"string","description":"Execution runtime.","default":null,"x-example":"node-18.0","enum":["node-18.0","php-8.0","ruby-3.1","python-3.9"],"x-enum-name":null,"x-enum-keys":[]},"execute":{"type":"array","description":"An array of role strings with execution permissions. By default no user is granted with any execute permissions. [learn more about roles](https:\/\/appwrite.io\/docs\/permissions#permission-roles). Maximum of 100 roles are allowed, each 64 characters long.","default":[],"x-example":"[\"any\"]","items":{"type":"string"}},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","default":[],"x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","default":"","x-example":null},"timeout":{"type":"integer","description":"Function maximum execution time in seconds.","default":15,"x-example":1},"enabled":{"type":"boolean","description":"Is function enabled? When set to 'disabled', users cannot access the function but Server SDKs with and API key can still access the function. No data is lost when this is toggled.","default":true,"x-example":false},"logging":{"type":"boolean","description":"Whether executions will be logged. When set to false, executions will not be logged, but will reduce resource used by your Appwrite project.","default":true,"x-example":false},"entrypoint":{"type":"string","description":"Entrypoint File. This path is relative to the \"providerRootDirectory\".","default":"","x-example":"[ENTRYPOINT]"},"commands":{"type":"string","description":"Build Commands.","default":"","x-example":"[COMMANDS]"},"installationId":{"type":"string","description":"Appwrite Installation ID for VCS (Version Control System) deployment.","default":"","x-example":"[INSTALLATION_ID]"},"providerRepositoryId":{"type":"string","description":"Repository ID of the repo linked to the function.","default":"","x-example":"[PROVIDER_REPOSITORY_ID]"},"providerBranch":{"type":"string","description":"Production branch for the repo linked to the function.","default":"","x-example":"[PROVIDER_BRANCH]"},"providerSilentMode":{"type":"boolean","description":"Is the VCS (Version Control System) connection in silent mode for the repo linked to the function? In silent mode, comments will not be made on commits and pull requests.","default":false,"x-example":false},"providerRootDirectory":{"type":"string","description":"Path to function code in the linked repo.","default":"","x-example":"[PROVIDER_ROOT_DIRECTORY]"},"templateRepository":{"type":"string","description":"Repository name of the template.","default":"","x-example":"[TEMPLATE_REPOSITORY]"},"templateOwner":{"type":"string","description":"The name of the owner of the template.","default":"","x-example":"[TEMPLATE_OWNER]"},"templateRootDirectory":{"type":"string","description":"Path to function code in the template repo.","default":"","x-example":"[TEMPLATE_ROOT_DIRECTORY]"},"templateBranch":{"type":"string","description":"Production branch for the repo linked to the function template.","default":"","x-example":"[TEMPLATE_BRANCH]"}},"required":["functionId","name","runtime"]}}]}},"\/functions\/runtimes":{"get":{"summary":"List runtimes","operationId":"functionsListRuntimes","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all runtimes that are currently active on your instance.","responses":{"200":{"description":"Runtimes List","schema":{"$ref":"#\/definitions\/runtimeList"}}},"x-appwrite":{"method":"listRuntimes","weight":254,"cookies":false,"type":"","demo":"functions\/list-runtimes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-runtimes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/functions\/usage":{"get":{"summary":"Get functions usage","operationId":"functionsGetUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"","responses":{"200":{"description":"UsageFunctions","schema":{"$ref":"#\/definitions\/usageFunctions"}}},"x-appwrite":{"method":"getUsage","weight":257,"cookies":false,"type":"","demo":"functions\/get-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","enum":["24h","7d","30d","90d"],"x-enum-name":null,"x-enum-keys":[],"default":"30d","in":"query"}]}},"\/functions\/{functionId}":{"get":{"summary":"Get function","operationId":"functionsGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a function by its unique ID.","responses":{"200":{"description":"Function","schema":{"$ref":"#\/definitions\/function"}}},"x-appwrite":{"method":"get","weight":255,"cookies":false,"type":"","demo":"functions\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"}]},"put":{"summary":"Update function","operationId":"functionsUpdate","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Update function by its unique ID.","responses":{"200":{"description":"Function","schema":{"$ref":"#\/definitions\/function"}}},"x-appwrite":{"method":"update","weight":258,"cookies":false,"type":"","demo":"functions\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Function name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"runtime":{"type":"string","description":"Execution runtime.","default":"","x-example":"node-18.0","enum":["node-18.0","php-8.0","ruby-3.1","python-3.9"],"x-enum-name":null,"x-enum-keys":[]},"execute":{"type":"array","description":"An array of role strings with execution permissions. By default no user is granted with any execute permissions. [learn more about roles](https:\/\/appwrite.io\/docs\/permissions#permission-roles). Maximum of 100 roles are allowed, each 64 characters long.","default":[],"x-example":"[\"any\"]","items":{"type":"string"}},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","default":[],"x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","default":"","x-example":null},"timeout":{"type":"integer","description":"Maximum execution time in seconds.","default":15,"x-example":1},"enabled":{"type":"boolean","description":"Is function enabled? When set to 'disabled', users cannot access the function but Server SDKs with and API key can still access the function. No data is lost when this is toggled.","default":true,"x-example":false},"logging":{"type":"boolean","description":"Whether executions will be logged. When set to false, executions will not be logged, but will reduce resource used by your Appwrite project.","default":true,"x-example":false},"entrypoint":{"type":"string","description":"Entrypoint File. This path is relative to the \"providerRootDirectory\".","default":"","x-example":"[ENTRYPOINT]"},"commands":{"type":"string","description":"Build Commands.","default":"","x-example":"[COMMANDS]"},"installationId":{"type":"string","description":"Appwrite Installation ID for VCS (Version Controle System) deployment.","default":"","x-example":"[INSTALLATION_ID]"},"providerRepositoryId":{"type":"string","description":"Repository ID of the repo linked to the function","default":"","x-example":"[PROVIDER_REPOSITORY_ID]"},"providerBranch":{"type":"string","description":"Production branch for the repo linked to the function","default":"","x-example":"[PROVIDER_BRANCH]"},"providerSilentMode":{"type":"boolean","description":"Is the VCS (Version Control System) connection in silent mode for the repo linked to the function? In silent mode, comments will not be made on commits and pull requests.","default":false,"x-example":false},"providerRootDirectory":{"type":"string","description":"Path to function code in the linked repo.","default":"","x-example":"[PROVIDER_ROOT_DIRECTORY]"}},"required":["name"]}}]},"delete":{"summary":"Delete function","operationId":"functionsDelete","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"Delete a function by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":261,"cookies":false,"type":"","demo":"functions\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"}]}},"\/functions\/{functionId}\/deployments":{"get":{"summary":"List deployments","operationId":"functionsListDeployments","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the project's code deployments. You can use the query params to filter your results.","responses":{"200":{"description":"Deployments List","schema":{"$ref":"#\/definitions\/deploymentList"}}},"x-appwrite":{"method":"listDeployments","weight":263,"cookies":false,"type":"","demo":"functions\/list-deployments.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-deployments.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: size, buildId, activate, entrypoint, commands","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create deployment","operationId":"functionsCreateDeployment","consumes":["multipart\/form-data"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function code deployment. Use this endpoint to upload a new version of your code function. To execute your newly uploaded code, you'll need to update the function's deployment to use your new deployment UID.\n\nThis endpoint accepts a tar.gz file compressed with your code. Make sure to include any dependencies your code has within the compressed file. You can learn more about code packaging in the [Appwrite Cloud Functions tutorial](https:\/\/appwrite.io\/docs\/functions).\n\nUse the \"command\" param to set the entrypoint used to execute your code.","responses":{"202":{"description":"Deployment","schema":{"$ref":"#\/definitions\/deployment"}}},"x-appwrite":{"method":"createDeployment","weight":262,"cookies":false,"type":"","demo":"functions\/create-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":true,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"entrypoint","description":"Entrypoint File.","required":false,"type":"string","x-example":"[ENTRYPOINT]","in":"formData"},{"name":"commands","description":"Build Commands.","required":false,"type":"string","x-example":"[COMMANDS]","in":"formData"},{"name":"code","description":"Gzip file with your code package. When used with the Appwrite CLI, pass the path to your code directory, and the CLI will automatically package your code. Use a path that is within the current directory.","required":true,"type":"file","in":"formData"},{"name":"activate","description":"Automatically activate the deployment when it is finished building.","required":true,"type":"boolean","x-example":false,"in":"formData"}]}},"\/functions\/{functionId}\/deployments\/{deploymentId}":{"get":{"summary":"Get deployment","operationId":"functionsGetDeployment","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a code deployment by its unique ID.","responses":{"200":{"description":"Deployment","schema":{"$ref":"#\/definitions\/deployment"}}},"x-appwrite":{"method":"getDeployment","weight":264,"cookies":false,"type":"","demo":"functions\/get-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"type":"string","x-example":"[DEPLOYMENT_ID]","in":"path"}]},"patch":{"summary":"Update function deployment","operationId":"functionsUpdateDeployment","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Update the function code deployment ID using the unique function ID. Use this endpoint to switch the code deployment that should be executed by the execution endpoint.","responses":{"200":{"description":"Function","schema":{"$ref":"#\/definitions\/function"}}},"x-appwrite":{"method":"updateDeployment","weight":260,"cookies":false,"type":"","demo":"functions\/update-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-function-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"type":"string","x-example":"[DEPLOYMENT_ID]","in":"path"}]},"delete":{"summary":"Delete deployment","operationId":"functionsDeleteDeployment","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"Delete a code deployment by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDeployment","weight":265,"cookies":false,"type":"","demo":"functions\/delete-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"type":"string","x-example":"[DEPLOYMENT_ID]","in":"path"}]}},"\/functions\/{functionId}\/deployments\/{deploymentId}\/builds\/{buildId}":{"post":{"summary":"Create build","operationId":"functionsCreateBuild","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"Create a new build for an Appwrite Function deployment. This endpoint can be used to retry a failed build.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"createBuild","weight":266,"cookies":false,"type":"","demo":"functions\/create-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"type":"string","x-example":"[DEPLOYMENT_ID]","in":"path"},{"name":"buildId","description":"Build unique ID.","required":true,"type":"string","x-example":"[BUILD_ID]","in":"path"}]}},"\/functions\/{functionId}\/deployments\/{deploymentId}\/download":{"get":{"summary":"Download Deployment","operationId":"functionsDownloadDeployment","consumes":["application\/json"],"produces":["*\/*"],"tags":["functions"],"description":"Get a Deployment's contents by its unique ID. This endpoint supports range requests for partial or streaming file download.","responses":{"200":{"description":"File","schema":{"type":"file"}}},"x-appwrite":{"method":"downloadDeployment","weight":259,"cookies":false,"type":"location","demo":"functions\/download-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/download-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"type":"string","x-example":"[DEPLOYMENT_ID]","in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List executions","operationId":"functionsListExecutions","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","schema":{"$ref":"#\/definitions\/executionList"}}},"x-appwrite":{"method":"listExecutions","weight":268,"cookies":false,"type":"","demo":"functions\/list-executions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-executions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, responseStatusCode, duration","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create execution","operationId":"functionsCreateExecution","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","schema":{"$ref":"#\/definitions\/execution"}}},"x-appwrite":{"method":"createExecution","weight":267,"cookies":false,"type":"","demo":"functions\/create-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-execution.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"body":{"type":"string","description":"HTTP body of execution. Default value is empty string.","default":"","x-example":"[BODY]"},"async":{"type":"boolean","description":"Execute code in the background. Default value is false.","default":false,"x-example":false},"path":{"type":"string","description":"HTTP path of execution. Path can include query params. Default value is \/","default":"\/","x-example":"[PATH]"},"method":{"type":"string","description":"HTTP method of execution. Default value is GET.","default":"POST","x-example":"GET","enum":["GET","POST","PUT","PATCH","DELETE","OPTIONS"],"x-enum-name":null,"x-enum-keys":[]},"headers":{"type":"object","description":"HTTP headers of execution. Defaults to empty.","default":[],"x-example":"{}"}}}}]}},"\/functions\/{functionId}\/executions\/{executionId}":{"get":{"summary":"Get execution","operationId":"functionsGetExecution","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a function execution log by its unique ID.","responses":{"200":{"description":"Execution","schema":{"$ref":"#\/definitions\/execution"}}},"x-appwrite":{"method":"getExecution","weight":269,"cookies":false,"type":"","demo":"functions\/get-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-execution.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"executionId","description":"Execution ID.","required":true,"type":"string","x-example":"[EXECUTION_ID]","in":"path"}]}},"\/functions\/{functionId}\/usage":{"get":{"summary":"Get function usage","operationId":"functionsGetFunctionUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"","responses":{"200":{"description":"UsageFunctions","schema":{"$ref":"#\/definitions\/usageFunctions"}}},"x-appwrite":{"method":"getFunctionUsage","weight":256,"cookies":false,"type":"","demo":"functions\/get-function-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","enum":["24h","7d","30d","90d"],"x-enum-name":null,"x-enum-keys":[],"default":"30d","in":"query"}]}},"\/functions\/{functionId}\/variables":{"get":{"summary":"List variables","operationId":"functionsListVariables","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all variables of a specific function.","responses":{"200":{"description":"Variables List","schema":{"$ref":"#\/definitions\/variableList"}}},"x-appwrite":{"method":"listVariables","weight":271,"cookies":false,"type":"","demo":"functions\/list-variables.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-variables.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"}]},"post":{"summary":"Create variable","operationId":"functionsCreateVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function environment variable. These variables can be accessed in the function at runtime as environment variables.","responses":{"201":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"createVariable","weight":270,"cookies":false,"type":"","demo":"functions\/create-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","default":null,"x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","default":null,"x-example":"[VALUE]"}},"required":["key","value"]}}]}},"\/functions\/{functionId}\/variables\/{variableId}":{"get":{"summary":"Get variable","operationId":"functionsGetVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a variable by its unique ID.","responses":{"200":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"getVariable","weight":272,"cookies":false,"type":"","demo":"functions\/get-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"}]},"put":{"summary":"Update variable","operationId":"functionsUpdateVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Update variable by its unique ID.","responses":{"200":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"updateVariable","weight":273,"cookies":false,"type":"","demo":"functions\/update-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","default":null,"x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","default":null,"x-example":"[VALUE]"}},"required":["key"]}}]},"delete":{"summary":"Delete variable","operationId":"functionsDeleteVariable","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"Delete a variable by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteVariable","weight":274,"cookies":false,"type":"","demo":"functions\/delete-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"}]}},"\/graphql":{"post":{"summary":"GraphQL endpoint","operationId":"graphqlQuery","consumes":["application\/json"],"produces":["application\/json"],"tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","schema":{"$ref":"#\/definitions\/any"}}},"x-appwrite":{"method":"query","weight":289,"cookies":false,"type":"graphql","demo":"graphql\/query.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"query":{"type":"object","description":"The query or queries to execute.","default":{},"x-example":"{}"}},"required":["query"]}}]}},"\/graphql\/mutation":{"post":{"summary":"GraphQL endpoint","operationId":"graphqlMutation","consumes":["application\/json"],"produces":["application\/json"],"tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","schema":{"$ref":"#\/definitions\/any"}}},"x-appwrite":{"method":"mutation","weight":288,"cookies":false,"type":"graphql","demo":"graphql\/mutation.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"query":{"type":"object","description":"The query or queries to execute.","default":{},"x-example":"{}"}},"required":["query"]}}]}},"\/health":{"get":{"summary":"Get HTTP","operationId":"healthGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite HTTP server is up and responsive.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"get","weight":109,"cookies":false,"type":"","demo":"health\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/anti-virus":{"get":{"summary":"Get antivirus","operationId":"healthGetAntivirus","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite Antivirus server is up and connection is successful.","responses":{"200":{"description":"Health Antivirus","schema":{"$ref":"#\/definitions\/healthAntivirus"}}},"x-appwrite":{"method":"getAntivirus","weight":127,"cookies":false,"type":"","demo":"health\/get-antivirus.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-storage-anti-virus.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/cache":{"get":{"summary":"Get cache","operationId":"healthGetCache","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite in-memory cache servers are up and connection is successful.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"getCache","weight":112,"cookies":false,"type":"","demo":"health\/get-cache.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-cache.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/db":{"get":{"summary":"Get DB","operationId":"healthGetDB","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite database servers are up and connection is successful.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"getDB","weight":111,"cookies":false,"type":"","demo":"health\/get-d-b.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-db.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/pubsub":{"get":{"summary":"Get pubsub","operationId":"healthGetPubSub","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite pub-sub servers are up and connection is successful.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"getPubSub","weight":114,"cookies":false,"type":"","demo":"health\/get-pub-sub.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-pubsub.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/queue":{"get":{"summary":"Get queue","operationId":"healthGetQueue","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite queue messaging servers are up and connection is successful.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"getQueue","weight":113,"cookies":false,"type":"","demo":"health\/get-queue.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/queue\/builds":{"get":{"summary":"Get builds queue","operationId":"healthGetQueueBuilds","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of builds that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueBuilds","weight":119,"cookies":false,"type":"","demo":"health\/get-queue-builds.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-builds.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/certificates":{"get":{"summary":"Get certificates queue","operationId":"healthGetQueueCertificates","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of certificates that are waiting to be issued against [Letsencrypt](https:\/\/letsencrypt.org\/) in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueCertificates","weight":118,"cookies":false,"type":"","demo":"health\/get-queue-certificates.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-certificates.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/databases":{"get":{"summary":"Get databases queue","operationId":"healthGetQueueDatabases","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of database changes that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueDatabases","weight":120,"cookies":false,"type":"","demo":"health\/get-queue-databases.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-databases.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"name","description":"Queue name for which to check the queue size","required":false,"type":"string","x-example":"[NAME]","default":"database_db_main","in":"query"},{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/deletes":{"get":{"summary":"Get deletes queue","operationId":"healthGetQueueDeletes","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of background destructive changes that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueDeletes","weight":121,"cookies":false,"type":"","demo":"health\/get-queue-deletes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-deletes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/functions":{"get":{"summary":"Get functions queue","operationId":"healthGetQueueFunctions","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueFunctions","weight":125,"cookies":false,"type":"","demo":"health\/get-queue-functions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-functions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/logs":{"get":{"summary":"Get logs queue","operationId":"healthGetQueueLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of logs that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueLogs","weight":117,"cookies":false,"type":"","demo":"health\/get-queue-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/mails":{"get":{"summary":"Get mails queue","operationId":"healthGetQueueMails","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of mails that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueMails","weight":122,"cookies":false,"type":"","demo":"health\/get-queue-mails.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-mails.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/messaging":{"get":{"summary":"Get messaging queue","operationId":"healthGetQueueMessaging","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of messages that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueMessaging","weight":123,"cookies":false,"type":"","demo":"health\/get-queue-messaging.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-messaging.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/migrations":{"get":{"summary":"Get migrations queue","operationId":"healthGetQueueMigrations","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of migrations that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueMigrations","weight":124,"cookies":false,"type":"","demo":"health\/get-queue-migrations.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-migrations.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/webhooks":{"get":{"summary":"Get webhooks queue","operationId":"healthGetQueueWebhooks","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of webhooks that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueWebhooks","weight":116,"cookies":false,"type":"","demo":"health\/get-queue-webhooks.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-webhooks.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/storage\/local":{"get":{"summary":"Get local storage","operationId":"healthGetStorageLocal","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite local storage device is up and connection is successful.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"getStorageLocal","weight":126,"cookies":false,"type":"","demo":"health\/get-storage-local.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-storage-local.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/time":{"get":{"summary":"Get time","operationId":"healthGetTime","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite server time is synced with Google remote NTP server. We use this technology to smoothly handle leap seconds with no disruptive events. The [Network Time Protocol](https:\/\/en.wikipedia.org\/wiki\/Network_Time_Protocol) (NTP) is used by hundreds of millions of computers and devices to synchronize their clocks over the Internet. If your computer sets its own clock, it likely uses NTP.","responses":{"200":{"description":"Health Time","schema":{"$ref":"#\/definitions\/healthTime"}}},"x-appwrite":{"method":"getTime","weight":115,"cookies":false,"type":"","demo":"health\/get-time.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-time.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/locale":{"get":{"summary":"Get user locale","operationId":"localeGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"Get the current user location based on IP. Returns an object with user country code, country name, continent name, continent code, ip address and suggested currency. You can use the locale header to get the data in a supported language.\n\n([IP Geolocation by DB-IP](https:\/\/db-ip.com))","responses":{"200":{"description":"Locale","schema":{"$ref":"#\/definitions\/locale"}}},"x-appwrite":{"method":"get","weight":101,"cookies":false,"type":"","demo":"locale\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-locale.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/localed","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/codes":{"get":{"summary":"List Locale Codes","operationId":"localeListCodes","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all locale codes in [ISO 639-1](https:\/\/en.wikipedia.org\/wiki\/List_of_ISO_639-1_codes).","responses":{"200":{"description":"Locale codes list","schema":{"$ref":"#\/definitions\/localeCodeList"}}},"x-appwrite":{"method":"listCodes","weight":102,"cookies":false,"type":"","demo":"locale\/list-codes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-locale-codes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/localeCode","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/continents":{"get":{"summary":"List continents","operationId":"localeListContinents","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","schema":{"$ref":"#\/definitions\/continentList"}}},"x-appwrite":{"method":"listContinents","weight":106,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/continents","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List countries","operationId":"localeListCountries","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountries","weight":103,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/countries","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU countries","operationId":"localeListCountriesEU","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountriesEU","weight":104,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/countries\/eu","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List countries phone codes","operationId":"localeListCountriesPhones","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","schema":{"$ref":"#\/definitions\/phoneList"}}},"x-appwrite":{"method":"listCountriesPhones","weight":105,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/countries\/phones","offline-key":"","offline-response-key":"countryCode","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List currencies","operationId":"localeListCurrencies","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","schema":{"$ref":"#\/definitions\/currencyList"}}},"x-appwrite":{"method":"listCurrencies","weight":107,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/currencies","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List languages","operationId":"localeListLanguages","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","schema":{"$ref":"#\/definitions\/languageList"}}},"x-appwrite":{"method":"listLanguages","weight":108,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/languages","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/messaging\/messages":{"get":{"summary":"List messages","operationId":"messagingListMessages","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Message list","schema":{"$ref":"#\/definitions\/messageList"}}},"x-appwrite":{"method":"listMessages","weight":346,"cookies":false,"type":"","demo":"messaging\/list-messages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-messages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, provider, type, enabled","required":false,"type":"string","default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]}},"\/messaging\/messages\/email":{"post":{"summary":"Create an email.","operationId":"messagingCreateEmailMessage","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Message","schema":{"$ref":"#\/definitions\/message"}}},"x-appwrite":{"method":"createEmailMessage","weight":343,"cookies":false,"type":"","demo":"messaging\/create-email-message.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"messageId":{"type":"string","description":"Message ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[MESSAGE_ID]"},"subject":{"type":"string","description":"Email Subject.","default":null,"x-example":"[SUBJECT]"},"content":{"type":"string","description":"Email Content.","default":null,"x-example":"[CONTENT]"},"topics":{"type":"array","description":"List of Topic IDs.","default":[],"x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","default":[],"x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","default":[],"x-example":null,"items":{"type":"string"}},"cc":{"type":"array","description":"Array of target IDs to be added as CC.","default":[],"x-example":null,"items":{"type":"string"}},"bcc":{"type":"array","description":"Array of target IDs to be added as BCC.","default":[],"x-example":null,"items":{"type":"string"}},"description":{"type":"string","description":"Description for message.","default":"","x-example":"[DESCRIPTION]"},"status":{"type":"string","description":"Message Status. Value must be either draft or cancelled or processing.","default":"processing","x-example":"draft","enum":["draft","canceled","processing"],"x-enum-name":null,"x-enum-keys":[]},"html":{"type":"boolean","description":"Is content of type HTML","default":false,"x-example":false},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","default":null,"x-example":null}},"required":["messageId","subject","content"]}}]}},"\/messaging\/messages\/email\/{messageId}":{"patch":{"summary":"Update an email.","operationId":"messagingUpdateEmail","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Message","schema":{"$ref":"#\/definitions\/message"}}},"x-appwrite":{"method":"updateEmail","weight":349,"cookies":false,"type":"","demo":"messaging\/update-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"type":"string","x-example":"[MESSAGE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"topics":{"type":"array","description":"List of Topic IDs.","default":null,"x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","default":null,"x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","default":null,"x-example":null,"items":{"type":"string"}},"subject":{"type":"string","description":"Email Subject.","default":null,"x-example":"[SUBJECT]"},"description":{"type":"string","description":"Description for Message.","default":null,"x-example":"[DESCRIPTION]"},"content":{"type":"string","description":"Email Content.","default":null,"x-example":"[CONTENT]"},"status":{"type":"string","description":"Message Status. Value must be either draft or cancelled or processing.","default":null,"x-example":"draft","enum":["draft","cancelled","processing"],"x-enum-name":null,"x-enum-keys":[]},"html":{"type":"boolean","description":"Is content of type HTML","default":null,"x-example":false},"cc":{"type":"array","description":"Array of target IDs to be added as CC.","default":null,"x-example":null,"items":{"type":"string"}},"bcc":{"type":"array","description":"Array of target IDs to be added as BCC.","default":null,"x-example":null,"items":{"type":"string"}},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","default":null,"x-example":null}}}}]}},"\/messaging\/messages\/push":{"post":{"summary":"Create a push notification.","operationId":"messagingCreatePushMessage","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Message","schema":{"$ref":"#\/definitions\/message"}}},"x-appwrite":{"method":"createPushMessage","weight":345,"cookies":false,"type":"","demo":"messaging\/create-push-message.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-push-notification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"messageId":{"type":"string","description":"Message ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[MESSAGE_ID]"},"title":{"type":"string","description":"Title for push notification.","default":null,"x-example":"[TITLE]"},"body":{"type":"string","description":"Body for push notification.","default":null,"x-example":"[BODY]"},"topics":{"type":"array","description":"List of Topic IDs.","default":[],"x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","default":[],"x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","default":[],"x-example":null,"items":{"type":"string"}},"description":{"type":"string","description":"Description for Message.","default":"","x-example":"[DESCRIPTION]"},"data":{"type":"object","description":"Additional Data for push notification.","default":{},"x-example":"{}"},"action":{"type":"string","description":"Action for push notification.","default":"","x-example":"[ACTION]"},"icon":{"type":"string","description":"Icon for push notification. Available only for Android and Web Platform.","default":"","x-example":"[ICON]"},"sound":{"type":"string","description":"Sound for push notification. Available only for Android and IOS Platform.","default":"","x-example":"[SOUND]"},"color":{"type":"string","description":"Color for push notification. Available only for Android Platform.","default":"","x-example":"[COLOR]"},"tag":{"type":"string","description":"Tag for push notification. Available only for Android Platform.","default":"","x-example":"[TAG]"},"badge":{"type":"string","description":"Badge for push notification. Available only for IOS Platform.","default":"","x-example":"[BADGE]"},"status":{"type":"string","description":"Message Status. Value must be either draft or cancelled or processing.","default":"processing","x-example":"draft","enum":["draft","canceled","processing"],"x-enum-name":null,"x-enum-keys":[]},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","default":null,"x-example":null}},"required":["messageId","title","body"]}}]}},"\/messaging\/messages\/push\/{messageId}":{"patch":{"summary":"Update a push notification.","operationId":"messagingUpdatePushNotification","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Message","schema":{"$ref":"#\/definitions\/message"}}},"x-appwrite":{"method":"updatePushNotification","weight":351,"cookies":false,"type":"","demo":"messaging\/update-push-notification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-push-notification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"type":"string","x-example":"[MESSAGE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"topics":{"type":"array","description":"List of Topic IDs.","default":null,"x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","default":null,"x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","default":null,"x-example":null,"items":{"type":"string"}},"description":{"type":"string","description":"Description for Message.","default":null,"x-example":"[DESCRIPTION]"},"title":{"type":"string","description":"Title for push notification.","default":null,"x-example":"[TITLE]"},"body":{"type":"string","description":"Body for push notification.","default":null,"x-example":"[BODY]"},"data":{"type":"object","description":"Additional Data for push notification.","default":{},"x-example":"{}"},"action":{"type":"string","description":"Action for push notification.","default":null,"x-example":"[ACTION]"},"icon":{"type":"string","description":"Icon for push notification. Available only for Android and Web platforms.","default":null,"x-example":"[ICON]"},"sound":{"type":"string","description":"Sound for push notification. Available only for Android and iOS platforms.","default":null,"x-example":"[SOUND]"},"color":{"type":"string","description":"Color for push notification. Available only for Android platforms.","default":null,"x-example":"[COLOR]"},"tag":{"type":"string","description":"Tag for push notification. Available only for Android platforms.","default":null,"x-example":"[TAG]"},"badge":{"type":"integer","description":"Badge for push notification. Available only for iOS platforms.","default":null,"x-example":null},"status":{"type":"string","description":"Message Status. Value must be either draft, cancelled, or processing.","default":null,"x-example":"draft","enum":["draft","cancelled","processing"],"x-enum-name":null,"x-enum-keys":[]},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","default":null,"x-example":null}}}}]}},"\/messaging\/messages\/sms":{"post":{"summary":"Create an SMS.","operationId":"messagingCreateSMSMessage","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Message","schema":{"$ref":"#\/definitions\/message"}}},"x-appwrite":{"method":"createSMSMessage","weight":344,"cookies":false,"type":"","demo":"messaging\/create-s-m-s-message.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-sms.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"messageId":{"type":"string","description":"Message ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[MESSAGE_ID]"},"content":{"type":"string","description":"SMS Content.","default":null,"x-example":"[CONTENT]"},"topics":{"type":"array","description":"List of Topic IDs.","default":[],"x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","default":[],"x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","default":[],"x-example":null,"items":{"type":"string"}},"description":{"type":"string","description":"Description for Message.","default":"","x-example":"[DESCRIPTION]"},"status":{"type":"string","description":"Message Status. Value must be either draft or cancelled or processing.","default":"processing","x-example":"draft","enum":["draft","canceled","processing"],"x-enum-name":null,"x-enum-keys":[]},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","default":null,"x-example":null}},"required":["messageId","content"]}}]}},"\/messaging\/messages\/sms\/{messageId}":{"patch":{"summary":"Update an SMS.","operationId":"messagingUpdateSMS","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Message","schema":{"$ref":"#\/definitions\/message"}}},"x-appwrite":{"method":"updateSMS","weight":350,"cookies":false,"type":"","demo":"messaging\/update-s-m-s.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"type":"string","x-example":"[MESSAGE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"topics":{"type":"array","description":"List of Topic IDs.","default":null,"x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","default":null,"x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","default":null,"x-example":null,"items":{"type":"string"}},"description":{"type":"string","description":"Description for Message.","default":null,"x-example":"[DESCRIPTION]"},"content":{"type":"string","description":"Email Content.","default":null,"x-example":"[CONTENT]"},"status":{"type":"string","description":"Message Status. Value must be either draft or cancelled or processing.","default":null,"x-example":"draft","enum":["draft","cancelled","processing"],"x-enum-name":null,"x-enum-keys":[]},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","default":null,"x-example":null}}}}]}},"\/messaging\/messages\/{messageId}":{"get":{"summary":"Get a message","operationId":"messagingGetMessage","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Message","schema":{"$ref":"#\/definitions\/message"}}},"x-appwrite":{"method":"getMessage","weight":348,"cookies":false,"type":"","demo":"messaging\/get-message.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/get-message.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"type":"string","x-example":"[MESSAGE_ID]","in":"path"}]}},"\/messaging\/messages\/{messageId}\/logs":{"get":{"summary":"List message logs","operationId":"messagingListMessageLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listMessageLogs","weight":347,"cookies":false,"type":"","demo":"messaging\/list-message-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/messages\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"type":"string","x-example":"[MESSAGE_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/messaging\/providers":{"get":{"summary":"List providers","operationId":"messagingListProviders","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider list","schema":{"$ref":"#\/definitions\/providerList"}}},"x-appwrite":{"method":"listProviders","weight":319,"cookies":false,"type":"","demo":"messaging\/list-providers.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-providers.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, provider, type, enabled","required":false,"type":"string","default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]}},"\/messaging\/providers\/apns":{"post":{"summary":"Create APNS provider","operationId":"messagingCreateApnsProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createApnsProvider","weight":318,"cookies":false,"type":"","demo":"messaging\/create-apns-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-apns-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"authKey":{"type":"string","description":"APNS authentication key.","default":"","x-example":"[AUTH_KEY]"},"authKeyId":{"type":"string","description":"APNS authentication key ID.","default":"","x-example":"[AUTH_KEY_ID]"},"teamId":{"type":"string","description":"APNS team ID.","default":"","x-example":"[TEAM_ID]"},"bundleId":{"type":"string","description":"APNS bundle ID.","default":"","x-example":"[BUNDLE_ID]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name"]}}]}},"\/messaging\/providers\/apns\/{providerId}":{"patch":{"summary":"Update APNS provider","operationId":"messagingUpdateApnsProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateApnsProvider","weight":330,"cookies":false,"type":"","demo":"messaging\/update-apns-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-apns-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"authKey":{"type":"string","description":"APNS authentication key.","default":"","x-example":"[AUTH_KEY]"},"authKeyId":{"type":"string","description":"APNS authentication key ID.","default":"","x-example":"[AUTH_KEY_ID]"},"teamId":{"type":"string","description":"APNS team ID.","default":"","x-example":"[TEAM_ID]"},"bundleId":{"type":"string","description":"APNS bundle ID.","default":"","x-example":"[BUNDLE_ID]"}}}}]}},"\/messaging\/providers\/fcm":{"post":{"summary":"Create FCM provider","operationId":"messagingCreateFcmProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createFcmProvider","weight":317,"cookies":false,"type":"","demo":"messaging\/create-fcm-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-fcm-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"serviceAccountJSON":{"type":"object","description":"FCM service account JSON.","default":{},"x-example":"{}"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name"]}}]}},"\/messaging\/providers\/fcm\/{providerId}":{"patch":{"summary":"Update FCM provider","operationId":"messagingUpdateFcmProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateFcmProvider","weight":329,"cookies":false,"type":"","demo":"messaging\/update-fcm-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-fcm-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"serviceAccountJSON":{"type":"object","description":"FCM service account JSON.","default":{},"x-example":"{}"}}}}]}},"\/messaging\/providers\/mailgun":{"post":{"summary":"Create Mailgun provider","operationId":"messagingCreateMailgunProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createMailgunProvider","weight":310,"cookies":false,"type":"","demo":"messaging\/create-mailgun-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-mailgun-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"apiKey":{"type":"string","description":"Mailgun API Key.","default":"","x-example":"[API_KEY]"},"domain":{"type":"string","description":"Mailgun Domain.","default":"","x-example":"[DOMAIN]"},"isEuRegion":{"type":"boolean","description":"Set as EU region.","default":null,"x-example":false},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"fromName":{"type":"string","description":"Sender Name.","default":"","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","default":"","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the reply to field for the mail. Default value is sender name. Reply to name must have reply to email as well.","default":"","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the reply to field for the mail. Default value is sender email. Reply to email must have reply to name as well.","default":"","x-example":"[REPLY_TO_EMAIL]"}},"required":["providerId","name"]}}]}},"\/messaging\/providers\/mailgun\/{providerId}":{"patch":{"summary":"Update Mailgun provider","operationId":"messagingUpdateMailgunProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateMailgunProvider","weight":322,"cookies":false,"type":"","demo":"messaging\/update-mailgun-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-mailgun-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"apiKey":{"type":"string","description":"Mailgun API Key.","default":"","x-example":"[API_KEY]"},"domain":{"type":"string","description":"Mailgun Domain.","default":"","x-example":"[DOMAIN]"},"isEuRegion":{"type":"boolean","description":"Set as EU region.","default":null,"x-example":false},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"fromName":{"type":"string","description":"Sender Name.","default":"","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","default":"","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the reply to field for the mail. Default value is sender name.","default":"","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the reply to field for the mail. Default value is sender email.","default":"","x-example":"[REPLY_TO_EMAIL]"}}}}]}},"\/messaging\/providers\/msg91":{"post":{"summary":"Create Msg91 provider","operationId":"messagingCreateMsg91Provider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createMsg91Provider","weight":312,"cookies":false,"type":"","demo":"messaging\/create-msg91provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-msg91-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":"","x-example":"+12065550100"},"senderId":{"type":"string","description":"Msg91 Sender ID.","default":"","x-example":"[SENDER_ID]"},"authKey":{"type":"string","description":"Msg91 Auth Key.","default":"","x-example":"[AUTH_KEY]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name"]}}]}},"\/messaging\/providers\/msg91\/{providerId}":{"patch":{"summary":"Update Msg91 provider","operationId":"messagingUpdateMsg91Provider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateMsg91Provider","weight":324,"cookies":false,"type":"","demo":"messaging\/update-msg91provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-msg91-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"senderId":{"type":"string","description":"Msg91 Sender ID.","default":"","x-example":"[SENDER_ID]"},"authKey":{"type":"string","description":"Msg91 Auth Key.","default":"","x-example":"[AUTH_KEY]"},"from":{"type":"string","description":"Sender number.","default":"","x-example":"[FROM]"}}}}]}},"\/messaging\/providers\/sendgrid":{"post":{"summary":"Create Sendgrid provider","operationId":"messagingCreateSendgridProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createSendgridProvider","weight":311,"cookies":false,"type":"","demo":"messaging\/create-sendgrid-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-sengrid-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"apiKey":{"type":"string","description":"Sendgrid API key.","default":"","x-example":"[API_KEY]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"fromName":{"type":"string","description":"Sender Name.","default":"","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","default":"","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the reply to field for the mail. Default value is sender name.","default":"","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the reply to field for the mail. Default value is sender email.","default":"","x-example":"[REPLY_TO_EMAIL]"}},"required":["providerId","name"]}}]}},"\/messaging\/providers\/sendgrid\/{providerId}":{"patch":{"summary":"Update Sendgrid provider","operationId":"messagingUpdateSendgridProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateSendgridProvider","weight":323,"cookies":false,"type":"","demo":"messaging\/update-sendgrid-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-sendgrid-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"apiKey":{"type":"string","description":"Sendgrid API key.","default":"","x-example":"[API_KEY]"},"fromName":{"type":"string","description":"Sender Name.","default":"","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","default":"","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the Reply To field for the mail. Default value is Sender Name.","default":"","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the Reply To field for the mail. Default value is Sender Email.","default":"","x-example":"[REPLY_TO_EMAIL]"}}}}]}},"\/messaging\/providers\/telesign":{"post":{"summary":"Create Telesign provider","operationId":"messagingCreateTelesignProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createTelesignProvider","weight":313,"cookies":false,"type":"","demo":"messaging\/create-telesign-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-telesign-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":"","x-example":"+12065550100"},"username":{"type":"string","description":"Telesign username.","default":"","x-example":"[USERNAME]"},"password":{"type":"string","description":"Telesign password.","default":"","x-example":"[PASSWORD]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name"]}}]}},"\/messaging\/providers\/telesign\/{providerId}":{"patch":{"summary":"Update Telesign provider","operationId":"messagingUpdateTelesignProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateTelesignProvider","weight":325,"cookies":false,"type":"","demo":"messaging\/update-telesign-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-telesign-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"username":{"type":"string","description":"Telesign username.","default":"","x-example":"[USERNAME]"},"password":{"type":"string","description":"Telesign password.","default":"","x-example":"[PASSWORD]"},"from":{"type":"string","description":"Sender number.","default":"","x-example":"[FROM]"}}}}]}},"\/messaging\/providers\/textmagic":{"post":{"summary":"Create Textmagic provider","operationId":"messagingCreateTextmagicProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createTextmagicProvider","weight":314,"cookies":false,"type":"","demo":"messaging\/create-textmagic-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-textmagic-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":"","x-example":"+12065550100"},"username":{"type":"string","description":"Textmagic username.","default":"","x-example":"[USERNAME]"},"apiKey":{"type":"string","description":"Textmagic apiKey.","default":"","x-example":"[API_KEY]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name"]}}]}},"\/messaging\/providers\/textmagic\/{providerId}":{"patch":{"summary":"Update Textmagic provider","operationId":"messagingUpdateTextmagicProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateTextmagicProvider","weight":326,"cookies":false,"type":"","demo":"messaging\/update-textmagic-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-textmagic-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"username":{"type":"string","description":"Textmagic username.","default":"","x-example":"[USERNAME]"},"apiKey":{"type":"string","description":"Textmagic apiKey.","default":"","x-example":"[API_KEY]"},"from":{"type":"string","description":"Sender number.","default":"","x-example":"[FROM]"}}}}]}},"\/messaging\/providers\/twilio":{"post":{"summary":"Create Twilio provider","operationId":"messagingCreateTwilioProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createTwilioProvider","weight":315,"cookies":false,"type":"","demo":"messaging\/create-twilio-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-twilio-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":"","x-example":"+12065550100"},"accountSid":{"type":"string","description":"Twilio account secret ID.","default":"","x-example":"[ACCOUNT_SID]"},"authToken":{"type":"string","description":"Twilio authentication token.","default":"","x-example":"[AUTH_TOKEN]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name"]}}]}},"\/messaging\/providers\/twilio\/{providerId}":{"patch":{"summary":"Update Twilio provider","operationId":"messagingUpdateTwilioProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateTwilioProvider","weight":327,"cookies":false,"type":"","demo":"messaging\/update-twilio-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-twilio-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"accountSid":{"type":"string","description":"Twilio account secret ID.","default":"","x-example":"[ACCOUNT_SID]"},"authToken":{"type":"string","description":"Twilio authentication token.","default":"","x-example":"[AUTH_TOKEN]"},"from":{"type":"string","description":"Sender number.","default":"","x-example":"[FROM]"}}}}]}},"\/messaging\/providers\/vonage":{"post":{"summary":"Create Vonage provider","operationId":"messagingCreateVonageProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createVonageProvider","weight":316,"cookies":false,"type":"","demo":"messaging\/create-vonage-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-vonage-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":"","x-example":"+12065550100"},"apiKey":{"type":"string","description":"Vonage API key.","default":"","x-example":"[API_KEY]"},"apiSecret":{"type":"string","description":"Vonage API secret.","default":"","x-example":"[API_SECRET]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name"]}}]}},"\/messaging\/providers\/vonage\/{providerId}":{"patch":{"summary":"Update Vonage provider","operationId":"messagingUpdateVonageProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateVonageProvider","weight":328,"cookies":false,"type":"","demo":"messaging\/update-vonage-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-vonage-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"apiKey":{"type":"string","description":"Vonage API key.","default":"","x-example":"[API_KEY]"},"apiSecret":{"type":"string","description":"Vonage API secret.","default":"","x-example":"[API_SECRET]"},"from":{"type":"string","description":"Sender number.","default":"","x-example":"[FROM]"}}}}]}},"\/messaging\/providers\/{providerId}":{"get":{"summary":"Get provider","operationId":"messagingGetProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"getProvider","weight":321,"cookies":false,"type":"","demo":"messaging\/get-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/get-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"}]},"delete":{"summary":"Delete provider","operationId":"messagingDeleteProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteProvider","weight":331,"cookies":false,"type":"","demo":"messaging\/delete-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"}]}},"\/messaging\/providers\/{providerId}\/logs":{"get":{"summary":"List provider logs","operationId":"messagingListProviderLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listProviderLogs","weight":320,"cookies":false,"type":"","demo":"messaging\/list-provider-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/providers\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/messaging\/subscribers\/{subscriberId}\/logs":{"get":{"summary":"List subscriber logs","operationId":"messagingListSubscriberLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listSubscriberLogs","weight":340,"cookies":false,"type":"","demo":"messaging\/list-subscriber-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/subscribers\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"subscriberId","description":"Subscriber ID.","required":true,"type":"string","x-example":"[SUBSCRIBER_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/messaging\/topics":{"get":{"summary":"List topics.","operationId":"messagingListTopics","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Topic list","schema":{"$ref":"#\/definitions\/topicList"}}},"x-appwrite":{"method":"listTopics","weight":333,"cookies":false,"type":"","demo":"messaging\/list-topics.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-topics.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, description, total","required":false,"type":"string","default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create a topic.","operationId":"messagingCreateTopic","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Topic","schema":{"$ref":"#\/definitions\/topic"}}},"x-appwrite":{"method":"createTopic","weight":332,"cookies":false,"type":"","demo":"messaging\/create-topic.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-topic.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"topicId":{"type":"string","description":"Topic ID. Choose a custom Topic ID or a new Topic ID.","default":null,"x-example":"[TOPIC_ID]"},"name":{"type":"string","description":"Topic Name.","default":null,"x-example":"[NAME]"},"description":{"type":"string","description":"Topic Description.","default":"","x-example":"[DESCRIPTION]"}},"required":["topicId","name"]}}]}},"\/messaging\/topics\/{topicId}":{"get":{"summary":"Get a topic.","operationId":"messagingGetTopic","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Topic","schema":{"$ref":"#\/definitions\/topic"}}},"x-appwrite":{"method":"getTopic","weight":335,"cookies":false,"type":"","demo":"messaging\/get-topic.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/get-topic.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID.","required":true,"type":"string","x-example":"[TOPIC_ID]","in":"path"}]},"patch":{"summary":"Update a topic.","operationId":"messagingUpdateTopic","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Topic","schema":{"$ref":"#\/definitions\/topic"}}},"x-appwrite":{"method":"updateTopic","weight":336,"cookies":false,"type":"","demo":"messaging\/update-topic.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-topic.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID.","required":true,"type":"string","x-example":"[TOPIC_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Topic Name.","default":"","x-example":"[NAME]"},"description":{"type":"string","description":"Topic Description.","default":"","x-example":"[DESCRIPTION]"}}}}]},"delete":{"summary":"Delete a topic.","operationId":"messagingDeleteTopic","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteTopic","weight":337,"cookies":false,"type":"","demo":"messaging\/delete-topic.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-topic.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID.","required":true,"type":"string","x-example":"[TOPIC_ID]","in":"path"}]}},"\/messaging\/topics\/{topicId}\/logs":{"get":{"summary":"List topic logs","operationId":"messagingListTopicLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listTopicLogs","weight":334,"cookies":false,"type":"","demo":"messaging\/list-topic-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/topics\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID.","required":true,"type":"string","x-example":"[TOPIC_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/messaging\/topics\/{topicId}\/subscribers":{"get":{"summary":"List subscribers.","operationId":"messagingListSubscribers","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Subscriber list","schema":{"$ref":"#\/definitions\/subscriberList"}}},"x-appwrite":{"method":"listSubscribers","weight":339,"cookies":false,"type":"","demo":"messaging\/list-subscribers.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-subscribers.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID subscribed to.","required":true,"type":"string","x-example":"[TOPIC_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, provider, type, enabled","required":false,"type":"string","default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create a subscriber.","operationId":"messagingCreateSubscriber","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Subscriber","schema":{"$ref":"#\/definitions\/subscriber"}}},"x-appwrite":{"method":"createSubscriber","weight":338,"cookies":false,"type":"","demo":"messaging\/create-subscriber.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-subscriber.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.write","platforms":["server","client","console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID to subscribe to.","required":true,"type":"string","x-example":"[TOPIC_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"subscriberId":{"type":"string","description":"Subscriber ID. Choose a custom Subscriber ID or a new Subscriber ID.","default":null,"x-example":"[SUBSCRIBER_ID]"},"targetId":{"type":"string","description":"Target ID. The target ID to link to the specified Topic ID.","default":null,"x-example":"[TARGET_ID]"}},"required":["subscriberId","targetId"]}}]}},"\/messaging\/topics\/{topicId}\/subscribers\/{subscriberId}":{"get":{"summary":"Get a subscriber.","operationId":"messagingGetSubscriber","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Subscriber","schema":{"$ref":"#\/definitions\/subscriber"}}},"x-appwrite":{"method":"getSubscriber","weight":341,"cookies":false,"type":"","demo":"messaging\/get-subscriber.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/get-subscriber.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID subscribed to.","required":true,"type":"string","x-example":"[TOPIC_ID]","in":"path"},{"name":"subscriberId","description":"Subscriber ID.","required":true,"type":"string","x-example":"[SUBSCRIBER_ID]","in":"path"}]},"delete":{"summary":"Delete a subscriber.","operationId":"messagingDeleteSubscriber","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSubscriber","weight":342,"cookies":false,"type":"","demo":"messaging\/delete-subscriber.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-subscriber.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.write","platforms":["server","client","console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID subscribed to.","required":true,"type":"string","x-example":"[TOPIC_ID]","in":"path"},{"name":"subscriberId","description":"Subscriber ID.","required":true,"type":"string","x-example":"[SUBSCRIBER_ID]","in":"path"}]}},"\/migrations":{"get":{"summary":"List Migrations","operationId":"migrationsList","consumes":["application\/json"],"produces":["application\/json"],"tags":["migrations"],"description":"","responses":{"200":{"description":"Migrations List","schema":{"$ref":"#\/definitions\/migrationList"}}},"x-appwrite":{"method":"list","weight":297,"cookies":false,"type":"","demo":"migrations\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/list-migrations.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: status, stage, source, resources, statusCounters, resourceData, errors","required":false,"type":"string","default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]}},"\/migrations\/appwrite":{"post":{"summary":"Migrate Appwrite Data","operationId":"migrationsCreateAppwriteMigration","consumes":["application\/json"],"produces":["application\/json"],"tags":["migrations"],"description":"","responses":{"202":{"description":"Migration","schema":{"$ref":"#\/definitions\/migration"}}},"x-appwrite":{"method":"createAppwriteMigration","weight":292,"cookies":false,"type":"","demo":"migrations\/create-appwrite-migration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-appwrite.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"resources":{"type":"array","description":"List of resources to migrate","default":null,"x-example":null,"items":{"type":"string"}},"endpoint":{"type":"string","description":"Source's Appwrite Endpoint","default":null,"x-example":"https:\/\/example.com"},"projectId":{"type":"string","description":"Source's Project ID","default":null,"x-example":"[PROJECT_ID]"},"apiKey":{"type":"string","description":"Source's API Key","default":null,"x-example":"[API_KEY]"}},"required":["resources","endpoint","projectId","apiKey"]}}]}},"\/migrations\/appwrite\/report":{"get":{"summary":"Generate a report on Appwrite Data","operationId":"migrationsGetAppwriteReport","consumes":["application\/json"],"produces":["application\/json"],"tags":["migrations"],"description":"","responses":{"200":{"description":"Migration Report","schema":{"$ref":"#\/definitions\/migrationReport"}}},"x-appwrite":{"method":"getAppwriteReport","weight":299,"cookies":false,"type":"","demo":"migrations\/get-appwrite-report.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-appwrite-report.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"resources","description":"List of resources to migrate","required":true,"type":"array","collectionFormat":"multi","items":{"type":"string"},"in":"query"},{"name":"endpoint","description":"Source's Appwrite Endpoint","required":true,"type":"string","format":"url","x-example":"https:\/\/example.com","in":"query"},{"name":"projectID","description":"Source's Project ID","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"query"},{"name":"key","description":"Source's API Key","required":true,"type":"string","x-example":"[KEY]","in":"query"}]}},"\/migrations\/firebase":{"post":{"summary":"Migrate Firebase Data (Service Account)","operationId":"migrationsCreateFirebaseMigration","consumes":["application\/json"],"produces":["application\/json"],"tags":["migrations"],"description":"","responses":{"202":{"description":"Migration","schema":{"$ref":"#\/definitions\/migration"}}},"x-appwrite":{"method":"createFirebaseMigration","weight":294,"cookies":false,"type":"","demo":"migrations\/create-firebase-migration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-firebase.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"resources":{"type":"array","description":"List of resources to migrate","default":null,"x-example":null,"items":{"type":"string"}},"serviceAccount":{"type":"string","description":"JSON of the Firebase service account credentials","default":null,"x-example":"[SERVICE_ACCOUNT]"}},"required":["resources","serviceAccount"]}}]}},"\/migrations\/firebase\/deauthorize":{"get":{"summary":"Revoke Appwrite's authorization to access Firebase Projects","operationId":"migrationsDeleteFirebaseAuth","consumes":["application\/json"],"produces":["application\/json"],"tags":["migrations"],"description":"","responses":{"200":{"description":"File","schema":{"type":"file"}}},"x-appwrite":{"method":"deleteFirebaseAuth","weight":305,"cookies":false,"type":"","demo":"migrations\/delete-firebase-auth.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/migrations\/firebase\/oauth":{"post":{"summary":"Migrate Firebase Data (OAuth)","operationId":"migrationsCreateFirebaseOAuthMigration","consumes":["application\/json"],"produces":["application\/json"],"tags":["migrations"],"description":"","responses":{"202":{"description":"Migration","schema":{"$ref":"#\/definitions\/migration"}}},"x-appwrite":{"method":"createFirebaseOAuthMigration","weight":293,"cookies":false,"type":"","demo":"migrations\/create-firebase-o-auth-migration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-firebase.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"resources":{"type":"array","description":"List of resources to migrate","default":null,"x-example":null,"items":{"type":"string"}},"projectId":{"type":"string","description":"Project ID of the Firebase Project","default":null,"x-example":"[PROJECT_ID]"}},"required":["resources","projectId"]}}]}},"\/migrations\/firebase\/projects":{"get":{"summary":"List Firebase Projects","operationId":"migrationsListFirebaseProjects","consumes":["application\/json"],"produces":["application\/json"],"tags":["migrations"],"description":"","responses":{"200":{"description":"Migrations Firebase Projects List","schema":{"$ref":"#\/definitions\/firebaseProjectList"}}},"x-appwrite":{"method":"listFirebaseProjects","weight":304,"cookies":false,"type":"","demo":"migrations\/list-firebase-projects.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/migrations\/firebase\/report":{"get":{"summary":"Generate a report on Firebase Data","operationId":"migrationsGetFirebaseReport","consumes":["application\/json"],"produces":["application\/json"],"tags":["migrations"],"description":"","responses":{"200":{"description":"Migration Report","schema":{"$ref":"#\/definitions\/migrationReport"}}},"x-appwrite":{"method":"getFirebaseReport","weight":300,"cookies":false,"type":"","demo":"migrations\/get-firebase-report.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-firebase-report.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"resources","description":"List of resources to migrate","required":true,"type":"array","collectionFormat":"multi","items":{"type":"string"},"in":"query"},{"name":"serviceAccount","description":"JSON of the Firebase service account credentials","required":true,"type":"string","x-example":"[SERVICE_ACCOUNT]","in":"query"}]}},"\/migrations\/firebase\/report\/oauth":{"get":{"summary":"Generate a report on Firebase Data using OAuth","operationId":"migrationsGetFirebaseReportOAuth","consumes":["application\/json"],"produces":["application\/json"],"tags":["migrations"],"description":"","responses":{"200":{"description":"Migration Report","schema":{"$ref":"#\/definitions\/migrationReport"}}},"x-appwrite":{"method":"getFirebaseReportOAuth","weight":301,"cookies":false,"type":"","demo":"migrations\/get-firebase-report-o-auth.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-firebase-report.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"resources","description":"List of resources to migrate","required":true,"type":"array","collectionFormat":"multi","items":{"type":"string"},"in":"query"},{"name":"projectId","description":"Project ID","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"query"}]}},"\/migrations\/nhost":{"post":{"summary":"Migrate NHost Data","operationId":"migrationsCreateNHostMigration","consumes":["application\/json"],"produces":["application\/json"],"tags":["migrations"],"description":"","responses":{"202":{"description":"Migration","schema":{"$ref":"#\/definitions\/migration"}}},"x-appwrite":{"method":"createNHostMigration","weight":296,"cookies":false,"type":"","demo":"migrations\/create-n-host-migration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-nhost.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"resources":{"type":"array","description":"List of resources to migrate","default":null,"x-example":null,"items":{"type":"string"}},"subdomain":{"type":"string","description":"Source's Subdomain","default":null,"x-example":"[SUBDOMAIN]"},"region":{"type":"string","description":"Source's Region","default":null,"x-example":"[REGION]"},"adminSecret":{"type":"string","description":"Source's Admin Secret","default":null,"x-example":"[ADMIN_SECRET]"},"database":{"type":"string","description":"Source's Database Name","default":null,"x-example":"[DATABASE]"},"username":{"type":"string","description":"Source's Database Username","default":null,"x-example":"[USERNAME]"},"password":{"type":"string","description":"Source's Database Password","default":null,"x-example":"[PASSWORD]"},"port":{"type":"integer","description":"Source's Database Port","default":5432,"x-example":null}},"required":["resources","subdomain","region","adminSecret","database","username","password"]}}]}},"\/migrations\/nhost\/report":{"get":{"summary":"Generate a report on NHost Data","operationId":"migrationsGetNHostReport","consumes":["application\/json"],"produces":["application\/json"],"tags":["migrations"],"description":"","responses":{"200":{"description":"Migration Report","schema":{"$ref":"#\/definitions\/migrationReport"}}},"x-appwrite":{"method":"getNHostReport","weight":307,"cookies":false,"type":"","demo":"migrations\/get-n-host-report.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-nhost-report.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"resources","description":"List of resources to migrate.","required":true,"type":"array","collectionFormat":"multi","items":{"type":"string"},"in":"query"},{"name":"subdomain","description":"Source's Subdomain.","required":true,"type":"string","x-example":"[SUBDOMAIN]","in":"query"},{"name":"region","description":"Source's Region.","required":true,"type":"string","x-example":"[REGION]","in":"query"},{"name":"adminSecret","description":"Source's Admin Secret.","required":true,"type":"string","x-example":"[ADMIN_SECRET]","in":"query"},{"name":"database","description":"Source's Database Name.","required":true,"type":"string","x-example":"[DATABASE]","in":"query"},{"name":"username","description":"Source's Database Username.","required":true,"type":"string","x-example":"[USERNAME]","in":"query"},{"name":"password","description":"Source's Database Password.","required":true,"type":"string","x-example":"[PASSWORD]","in":"query"},{"name":"port","description":"Source's Database Port.","required":false,"type":"integer","format":"int32","default":5432,"in":"query"}]}},"\/migrations\/supabase":{"post":{"summary":"Migrate Supabase Data","operationId":"migrationsCreateSupabaseMigration","consumes":["application\/json"],"produces":["application\/json"],"tags":["migrations"],"description":"","responses":{"202":{"description":"Migration","schema":{"$ref":"#\/definitions\/migration"}}},"x-appwrite":{"method":"createSupabaseMigration","weight":295,"cookies":false,"type":"","demo":"migrations\/create-supabase-migration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-supabase.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"resources":{"type":"array","description":"List of resources to migrate","default":null,"x-example":null,"items":{"type":"string"}},"endpoint":{"type":"string","description":"Source's Supabase Endpoint","default":null,"x-example":"https:\/\/example.com"},"apiKey":{"type":"string","description":"Source's API Key","default":null,"x-example":"[API_KEY]"},"databaseHost":{"type":"string","description":"Source's Database Host","default":null,"x-example":"[DATABASE_HOST]"},"username":{"type":"string","description":"Source's Database Username","default":null,"x-example":"[USERNAME]"},"password":{"type":"string","description":"Source's Database Password","default":null,"x-example":"[PASSWORD]"},"port":{"type":"integer","description":"Source's Database Port","default":5432,"x-example":null}},"required":["resources","endpoint","apiKey","databaseHost","username","password"]}}]}},"\/migrations\/supabase\/report":{"get":{"summary":"Generate a report on Supabase Data","operationId":"migrationsGetSupabaseReport","consumes":["application\/json"],"produces":["application\/json"],"tags":["migrations"],"description":"","responses":{"200":{"description":"Migration Report","schema":{"$ref":"#\/definitions\/migrationReport"}}},"x-appwrite":{"method":"getSupabaseReport","weight":306,"cookies":false,"type":"","demo":"migrations\/get-supabase-report.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-supabase-report.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"resources","description":"List of resources to migrate","required":true,"type":"array","collectionFormat":"multi","items":{"type":"string"},"in":"query"},{"name":"endpoint","description":"Source's Supabase Endpoint.","required":true,"type":"string","format":"url","x-example":"https:\/\/example.com","in":"query"},{"name":"apiKey","description":"Source's API Key.","required":true,"type":"string","x-example":"[API_KEY]","in":"query"},{"name":"databaseHost","description":"Source's Database Host.","required":true,"type":"string","x-example":"[DATABASE_HOST]","in":"query"},{"name":"username","description":"Source's Database Username.","required":true,"type":"string","x-example":"[USERNAME]","in":"query"},{"name":"password","description":"Source's Database Password.","required":true,"type":"string","x-example":"[PASSWORD]","in":"query"},{"name":"port","description":"Source's Database Port.","required":false,"type":"integer","format":"int32","default":5432,"in":"query"}]}},"\/migrations\/{migrationId}":{"get":{"summary":"Get Migration","operationId":"migrationsGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["migrations"],"description":"","responses":{"200":{"description":"Migration","schema":{"$ref":"#\/definitions\/migration"}}},"x-appwrite":{"method":"get","weight":298,"cookies":false,"type":"","demo":"migrations\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/get-migration.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"migrationId","description":"Migration unique ID.","required":true,"type":"string","x-example":"[MIGRATION_ID]","in":"path"}]},"patch":{"summary":"Retry Migration","operationId":"migrationsRetry","consumes":["application\/json"],"produces":["application\/json"],"tags":["migrations"],"description":"","responses":{"202":{"description":"Migration","schema":{"$ref":"#\/definitions\/migration"}}},"x-appwrite":{"method":"retry","weight":308,"cookies":false,"type":"","demo":"migrations\/retry.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/retry-migration.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"migrationId","description":"Migration unique ID.","required":true,"type":"string","x-example":"[MIGRATION_ID]","in":"path"}]},"delete":{"summary":"Delete Migration","operationId":"migrationsDelete","consumes":["application\/json"],"produces":[],"tags":["migrations"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":309,"cookies":false,"type":"","demo":"migrations\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-migration.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"migrationId","description":"Migration ID.","required":true,"type":"string","x-example":"[MIGRATION_ID]","in":"path"}]}},"\/project\/usage":{"get":{"summary":"Get usage stats for a project","operationId":"projectGetUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["project"],"description":"","responses":{"200":{"description":"UsageProject","schema":{"$ref":"#\/definitions\/usageProject"}}},"x-appwrite":{"method":"getUsage","weight":169,"cookies":false,"type":"","demo":"project\/get-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","enum":["24h","7d","30d","90d"],"x-enum-name":null,"x-enum-keys":[],"default":"30d","in":"query"}]}},"\/project\/variables":{"get":{"summary":"List Variables","operationId":"projectListVariables","consumes":["application\/json"],"produces":["application\/json"],"tags":["project"],"description":"Get a list of all project variables. These variables will be accessible in all Appwrite Functions at runtime.","responses":{"200":{"description":"Variables List","schema":{"$ref":"#\/definitions\/variableList"}}},"x-appwrite":{"method":"listVariables","weight":171,"cookies":false,"type":"","demo":"project\/list-variables.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/project\/list-variables.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]},"post":{"summary":"Create Variable","operationId":"projectCreateVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["project"],"description":"Create a new project variable. This variable will be accessible in all Appwrite Functions at runtime.","responses":{"201":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"createVariable","weight":170,"cookies":false,"type":"","demo":"project\/create-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/project\/create-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","default":null,"x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","default":null,"x-example":"[VALUE]"}},"required":["key","value"]}}]}},"\/project\/variables\/{variableId}":{"get":{"summary":"Get Variable","operationId":"projectGetVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["project"],"description":"Get a project variable by its unique ID.","responses":{"200":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"getVariable","weight":172,"cookies":false,"type":"","demo":"project\/get-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/project\/get-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"}]},"put":{"summary":"Update Variable","operationId":"projectUpdateVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["project"],"description":"Update project variable by its unique ID. This variable will be accessible in all Appwrite Functions at runtime.","responses":{"200":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"updateVariable","weight":173,"cookies":false,"type":"","demo":"project\/update-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/project\/update-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","default":null,"x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","default":null,"x-example":"[VALUE]"}},"required":["key"]}}]},"delete":{"summary":"Delete Variable","operationId":"projectDeleteVariable","consumes":["application\/json"],"produces":[],"tags":["project"],"description":"Delete a project variable by its unique ID. ","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteVariable","weight":174,"cookies":false,"type":"","demo":"project\/delete-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/project\/delete-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"}]}},"\/projects":{"get":{"summary":"List projects","operationId":"projectsList","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Projects List","schema":{"$ref":"#\/definitions\/projectList"}}},"x-appwrite":{"method":"list","weight":130,"cookies":false,"type":"","demo":"projects\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, teamId","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create project","operationId":"projectsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"201":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"create","weight":129,"cookies":false,"type":"","demo":"projects\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"projectId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, and hyphen. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":null},"name":{"type":"string","description":"Project name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"teamId":{"type":"string","description":"Team unique ID.","default":null,"x-example":"[TEAM_ID]"},"region":{"type":"string","description":"Project Region.","default":"default","x-example":"default","enum":["default"],"x-enum-name":null,"x-enum-keys":[]},"description":{"type":"string","description":"Project description. Max length: 256 chars.","default":"","x-example":"[DESCRIPTION]"},"logo":{"type":"string","description":"Project logo.","default":"","x-example":"[LOGO]"},"url":{"type":"string","description":"Project URL.","default":"","x-example":"https:\/\/example.com"},"legalName":{"type":"string","description":"Project legal Name. Max length: 256 chars.","default":"","x-example":"[LEGAL_NAME]"},"legalCountry":{"type":"string","description":"Project legal Country. Max length: 256 chars.","default":"","x-example":"[LEGAL_COUNTRY]"},"legalState":{"type":"string","description":"Project legal State. Max length: 256 chars.","default":"","x-example":"[LEGAL_STATE]"},"legalCity":{"type":"string","description":"Project legal City. Max length: 256 chars.","default":"","x-example":"[LEGAL_CITY]"},"legalAddress":{"type":"string","description":"Project legal Address. Max length: 256 chars.","default":"","x-example":"[LEGAL_ADDRESS]"},"legalTaxId":{"type":"string","description":"Project legal Tax ID. Max length: 256 chars.","default":"","x-example":"[LEGAL_TAX_ID]"}},"required":["projectId","name","teamId"]}}]}},"\/projects\/{projectId}":{"get":{"summary":"Get project","operationId":"projectsGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"get","weight":131,"cookies":false,"type":"","demo":"projects\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"}]},"patch":{"summary":"Update project","operationId":"projectsUpdate","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"update","weight":133,"cookies":false,"type":"","demo":"projects\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Project name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"description":{"type":"string","description":"Project description. Max length: 256 chars.","default":"","x-example":"[DESCRIPTION]"},"logo":{"type":"string","description":"Project logo.","default":"","x-example":"[LOGO]"},"url":{"type":"string","description":"Project URL.","default":"","x-example":"https:\/\/example.com"},"legalName":{"type":"string","description":"Project legal name. Max length: 256 chars.","default":"","x-example":"[LEGAL_NAME]"},"legalCountry":{"type":"string","description":"Project legal country. Max length: 256 chars.","default":"","x-example":"[LEGAL_COUNTRY]"},"legalState":{"type":"string","description":"Project legal state. Max length: 256 chars.","default":"","x-example":"[LEGAL_STATE]"},"legalCity":{"type":"string","description":"Project legal city. Max length: 256 chars.","default":"","x-example":"[LEGAL_CITY]"},"legalAddress":{"type":"string","description":"Project legal address. Max length: 256 chars.","default":"","x-example":"[LEGAL_ADDRESS]"},"legalTaxId":{"type":"string","description":"Project legal tax ID. Max length: 256 chars.","default":"","x-example":"[LEGAL_TAX_ID]"}},"required":["name"]}}]},"delete":{"summary":"Delete project","operationId":"projectsDelete","consumes":["application\/json"],"produces":[],"tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":145,"cookies":false,"type":"","demo":"projects\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"}]}},"\/projects\/{projectId}\/auth\/duration":{"patch":{"summary":"Update project authentication duration","operationId":"projectsUpdateAuthDuration","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateAuthDuration","weight":139,"cookies":false,"type":"","demo":"projects\/update-auth-duration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"duration":{"type":"integer","description":"Project session length in seconds. Max length: 31536000 seconds.","default":null,"x-example":0}},"required":["duration"]}}]}},"\/projects\/{projectId}\/auth\/limit":{"patch":{"summary":"Update project users limit","operationId":"projectsUpdateAuthLimit","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateAuthLimit","weight":138,"cookies":false,"type":"","demo":"projects\/update-auth-limit.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"limit":{"type":"integer","description":"Set the max number of users allowed in this project. Use 0 for unlimited.","default":null,"x-example":0}},"required":["limit"]}}]}},"\/projects\/{projectId}\/auth\/max-sessions":{"patch":{"summary":"Update project user sessions limit","operationId":"projectsUpdateAuthSessionsLimit","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateAuthSessionsLimit","weight":144,"cookies":false,"type":"","demo":"projects\/update-auth-sessions-limit.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"limit":{"type":"integer","description":"Set the max number of users allowed in this project. Value allowed is between 1-100. Default is 10","default":null,"x-example":1}},"required":["limit"]}}]}},"\/projects\/{projectId}\/auth\/password-dictionary":{"patch":{"summary":"Update authentication password dictionary status. Use this endpoint to enable or disable the dicitonary check for user password","operationId":"projectsUpdateAuthPasswordDictionary","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateAuthPasswordDictionary","weight":142,"cookies":false,"type":"","demo":"projects\/update-auth-password-dictionary.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Set whether or not to enable checking user's password against most commonly used passwords. Default is false.","default":null,"x-example":false}},"required":["enabled"]}}]}},"\/projects\/{projectId}\/auth\/password-history":{"patch":{"summary":"Update authentication password history. Use this endpoint to set the number of password history to save and 0 to disable password history.","operationId":"projectsUpdateAuthPasswordHistory","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateAuthPasswordHistory","weight":141,"cookies":false,"type":"","demo":"projects\/update-auth-password-history.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"limit":{"type":"integer","description":"Set the max number of passwords to store in user history. User can't choose a new password that is already stored in the password history list. Max number of passwords allowed in history is20. Default value is 0","default":null,"x-example":0}},"required":["limit"]}}]}},"\/projects\/{projectId}\/auth\/personal-data":{"patch":{"summary":"Enable or disable checking user passwords for similarity with their personal data.","operationId":"projectsUpdatePersonalDataCheck","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updatePersonalDataCheck","weight":143,"cookies":false,"type":"","demo":"projects\/update-personal-data-check.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Set whether or not to check a password for similarity with personal data. Default is false.","default":null,"x-example":false}},"required":["enabled"]}}]}},"\/projects\/{projectId}\/auth\/{method}":{"patch":{"summary":"Update project auth method status. Use this endpoint to enable or disable a given auth method for this project.","operationId":"projectsUpdateAuthStatus","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateAuthStatus","weight":140,"cookies":false,"type":"","demo":"projects\/update-auth-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"method","description":"Auth Method. Possible values: email-password,magic-url,anonymous,invites,jwt,phone","required":true,"type":"string","x-example":"email-password","enum":["email-password","magic-url","anonymous","invites","jwt","phone"],"x-enum-name":null,"x-enum-keys":[],"in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"status":{"type":"boolean","description":"Set the status of this auth method.","default":null,"x-example":false}},"required":["status"]}}]}},"\/projects\/{projectId}\/keys":{"get":{"summary":"List keys","operationId":"projectsListKeys","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"API Keys List","schema":{"$ref":"#\/definitions\/keyList"}}},"x-appwrite":{"method":"listKeys","weight":153,"cookies":false,"type":"","demo":"projects\/list-keys.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"}]},"post":{"summary":"Create key","operationId":"projectsCreateKey","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"201":{"description":"Key","schema":{"$ref":"#\/definitions\/key"}}},"x-appwrite":{"method":"createKey","weight":152,"cookies":false,"type":"","demo":"projects\/create-key.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Key name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"scopes":{"type":"array","description":"Key scopes list. Maximum of 100 scopes are allowed.","default":null,"x-example":null,"items":{"type":"string"}},"expire":{"type":"string","description":"Expiration time in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. Use null for unlimited expiration.","default":null,"x-example":null}},"required":["name","scopes"]}}]}},"\/projects\/{projectId}\/keys\/{keyId}":{"get":{"summary":"Get key","operationId":"projectsGetKey","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Key","schema":{"$ref":"#\/definitions\/key"}}},"x-appwrite":{"method":"getKey","weight":154,"cookies":false,"type":"","demo":"projects\/get-key.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"keyId","description":"Key unique ID.","required":true,"type":"string","x-example":"[KEY_ID]","in":"path"}]},"put":{"summary":"Update key","operationId":"projectsUpdateKey","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Key","schema":{"$ref":"#\/definitions\/key"}}},"x-appwrite":{"method":"updateKey","weight":155,"cookies":false,"type":"","demo":"projects\/update-key.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"keyId","description":"Key unique ID.","required":true,"type":"string","x-example":"[KEY_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Key name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"scopes":{"type":"array","description":"Key scopes list. Maximum of 100 events are allowed.","default":null,"x-example":null,"items":{"type":"string"}},"expire":{"type":"string","description":"Expiration time in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. Use null for unlimited expiration.","default":null,"x-example":null}},"required":["name","scopes"]}}]},"delete":{"summary":"Delete key","operationId":"projectsDeleteKey","consumes":["application\/json"],"produces":[],"tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteKey","weight":156,"cookies":false,"type":"","demo":"projects\/delete-key.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"keyId","description":"Key unique ID.","required":true,"type":"string","x-example":"[KEY_ID]","in":"path"}]}},"\/projects\/{projectId}\/oauth2":{"patch":{"summary":"Update project OAuth2","operationId":"projectsUpdateOAuth2","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateOAuth2","weight":137,"cookies":false,"type":"","demo":"projects\/update-o-auth2.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"provider":{"type":"string","description":"Provider Name","default":null,"x-example":"amazon","enum":["amazon","apple","auth0","authentik","autodesk","bitbucket","bitly","box","dailymotion","discord","disqus","dropbox","etsy","facebook","github","gitlab","google","linkedin","microsoft","notion","oidc","okta","paypal","paypalSandbox","podio","salesforce","slack","spotify","stripe","tradeshift","tradeshiftBox","twitch","wordpress","yahoo","yammer","yandex","zoho","zoom","mock"],"x-enum-name":null,"x-enum-keys":[]},"appId":{"type":"string","description":"Provider app ID. Max length: 256 chars.","default":null,"x-example":"[APP_ID]"},"secret":{"type":"string","description":"Provider secret key. Max length: 512 chars.","default":null,"x-example":"[SECRET]"},"enabled":{"type":"boolean","description":"Provider status. Set to 'false' to disable new session creation.","default":null,"x-example":false}},"required":["provider"]}}]}},"\/projects\/{projectId}\/platforms":{"get":{"summary":"List platforms","operationId":"projectsListPlatforms","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Platforms List","schema":{"$ref":"#\/definitions\/platformList"}}},"x-appwrite":{"method":"listPlatforms","weight":158,"cookies":false,"type":"","demo":"projects\/list-platforms.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"}]},"post":{"summary":"Create platform","operationId":"projectsCreatePlatform","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"201":{"description":"Platform","schema":{"$ref":"#\/definitions\/platform"}}},"x-appwrite":{"method":"createPlatform","weight":157,"cookies":false,"type":"","demo":"projects\/create-platform.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"type":{"type":"string","description":"Platform type.","default":null,"x-example":"web","enum":["web","flutter-web","flutter-ios","flutter-android","flutter-linux","flutter-macos","flutter-windows","apple-ios","apple-macos","apple-watchos","apple-tvos","android","unity"],"x-enum-name":"PlatformType","x-enum-keys":[]},"name":{"type":"string","description":"Platform name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"key":{"type":"string","description":"Package name for Android or bundle ID for iOS or macOS. Max length: 256 chars.","default":"","x-example":"[KEY]"},"store":{"type":"string","description":"App store or Google Play store ID. Max length: 256 chars.","default":"","x-example":"[STORE]"},"hostname":{"type":"string","description":"Platform client hostname. Max length: 256 chars.","default":"","x-example":null}},"required":["type","name"]}}]}},"\/projects\/{projectId}\/platforms\/{platformId}":{"get":{"summary":"Get platform","operationId":"projectsGetPlatform","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Platform","schema":{"$ref":"#\/definitions\/platform"}}},"x-appwrite":{"method":"getPlatform","weight":159,"cookies":false,"type":"","demo":"projects\/get-platform.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"platformId","description":"Platform unique ID.","required":true,"type":"string","x-example":"[PLATFORM_ID]","in":"path"}]},"put":{"summary":"Update platform","operationId":"projectsUpdatePlatform","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Platform","schema":{"$ref":"#\/definitions\/platform"}}},"x-appwrite":{"method":"updatePlatform","weight":160,"cookies":false,"type":"","demo":"projects\/update-platform.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"platformId","description":"Platform unique ID.","required":true,"type":"string","x-example":"[PLATFORM_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Platform name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"key":{"type":"string","description":"Package name for android or bundle ID for iOS. Max length: 256 chars.","default":"","x-example":"[KEY]"},"store":{"type":"string","description":"App store or Google Play store ID. Max length: 256 chars.","default":"","x-example":"[STORE]"},"hostname":{"type":"string","description":"Platform client URL. Max length: 256 chars.","default":"","x-example":null}},"required":["name"]}}]},"delete":{"summary":"Delete platform","operationId":"projectsDeletePlatform","consumes":["application\/json"],"produces":[],"tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deletePlatform","weight":161,"cookies":false,"type":"","demo":"projects\/delete-platform.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"platformId","description":"Platform unique ID.","required":true,"type":"string","x-example":"[PLATFORM_ID]","in":"path"}]}},"\/projects\/{projectId}\/service":{"patch":{"summary":"Update service status","operationId":"projectsUpdateServiceStatus","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateServiceStatus","weight":135,"cookies":false,"type":"","demo":"projects\/update-service-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"service":{"type":"string","description":"Service name.","default":null,"x-example":"account","enum":["account","avatars","databases","locale","health","storage","teams","users","functions","graphql","messaging"],"x-enum-name":null,"x-enum-keys":[]},"status":{"type":"boolean","description":"Service status.","default":null,"x-example":false}},"required":["service","status"]}}]}},"\/projects\/{projectId}\/service\/all":{"patch":{"summary":"Update all service status","operationId":"projectsUpdateServiceStatusAll","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateServiceStatusAll","weight":136,"cookies":false,"type":"","demo":"projects\/update-service-status-all.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"status":{"type":"boolean","description":"Service status.","default":null,"x-example":false}},"required":["status"]}}]}},"\/projects\/{projectId}\/smtp":{"patch":{"summary":"Update SMTP configuration","operationId":"projectsUpdateSmtpConfiguration","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateSmtpConfiguration","weight":162,"cookies":false,"type":"","demo":"projects\/update-smtp-configuration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enable custom SMTP service","default":null,"x-example":false},"senderName":{"type":"string","description":"Name of the email sender","default":"","x-example":"[SENDER_NAME]"},"senderEmail":{"type":"string","description":"Email of the sender","default":"","x-example":"email@example.com"},"replyTo":{"type":"string","description":"Reply to email","default":"","x-example":"email@example.com"},"host":{"type":"string","description":"SMTP server host name","default":"","x-example":null},"port":{"type":"integer","description":"SMTP server port","default":587,"x-example":null},"username":{"type":"string","description":"SMTP server username","default":"","x-example":"[USERNAME]"},"password":{"type":"string","description":"SMTP server password","default":"","x-example":"[PASSWORD]"},"secure":{"type":"string","description":"Does SMTP server use secure connection","default":"","x-example":"tls","enum":["tls"],"x-enum-name":null,"x-enum-keys":[]}},"required":["enabled"]}}]}},"\/projects\/{projectId}\/team":{"patch":{"summary":"Update Project Team","operationId":"projectsUpdateTeam","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateTeam","weight":134,"cookies":false,"type":"","demo":"projects\/update-team.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"teamId":{"type":"string","description":"Team ID of the team to transfer project to.","default":null,"x-example":"[TEAM_ID]"}},"required":["teamId"]}}]}},"\/projects\/{projectId}\/templates\/email\/{type}\/{locale}":{"get":{"summary":"Get custom email template","operationId":"projectsGetEmailTemplate","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"EmailTemplate","schema":{"$ref":"#\/definitions\/emailTemplate"}}},"x-appwrite":{"method":"getEmailTemplate","weight":164,"cookies":false,"type":"","demo":"projects\/get-email-template.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"type","description":"Template type","required":true,"type":"string","x-example":"verification","enum":["verification","magicsession","recovery","invitation"],"x-enum-name":null,"x-enum-keys":[],"in":"path"},{"name":"locale","description":"Template locale","required":true,"type":"string","x-example":"af","enum":["af","ar-ae","ar-bh","ar-dz","ar-eg","ar-iq","ar-jo","ar-kw","ar-lb","ar-ly","ar-ma","ar-om","ar-qa","ar-sa","ar-sy","ar-tn","ar-ye","as","az","be","bg","bh","bn","bs","ca","cs","cy","da","de","de-at","de-ch","de-li","de-lu","el","en","en-au","en-bz","en-ca","en-gb","en-ie","en-jm","en-nz","en-tt","en-us","en-za","eo","es","es-ar","es-bo","es-cl","es-co","es-cr","es-do","es-ec","es-gt","es-hn","es-mx","es-ni","es-pa","es-pe","es-pr","es-py","es-sv","es-uy","es-ve","et","eu","fa","fi","fo","fr","fr-be","fr-ca","fr-ch","fr-lu","ga","gd","he","hi","hr","hu","id","is","it","it-ch","ja","ji","ko","ku","lt","lv","mk","ml","ms","mt","nb","ne","nl","nl-be","nn","no","pa","pl","pt","pt-br","rm","ro","ro-md","ru","ru-md","sb","sk","sl","sq","sr","sv","sv-fi","th","tn","tr","ts","ua","ur","ve","vi","xh","zh-cn","zh-hk","zh-sg","zh-tw","zu"],"x-enum-name":null,"x-enum-keys":[],"in":"path"}]},"patch":{"summary":"Update custom email templates","operationId":"projectsUpdateEmailTemplate","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateEmailTemplate","weight":166,"cookies":false,"type":"","demo":"projects\/update-email-template.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"type","description":"Template type","required":true,"type":"string","x-example":"verification","enum":["verification","magicsession","recovery","invitation"],"x-enum-name":null,"x-enum-keys":[],"in":"path"},{"name":"locale","description":"Template locale","required":true,"type":"string","x-example":"af","enum":["af","ar-ae","ar-bh","ar-dz","ar-eg","ar-iq","ar-jo","ar-kw","ar-lb","ar-ly","ar-ma","ar-om","ar-qa","ar-sa","ar-sy","ar-tn","ar-ye","as","az","be","bg","bh","bn","bs","ca","cs","cy","da","de","de-at","de-ch","de-li","de-lu","el","en","en-au","en-bz","en-ca","en-gb","en-ie","en-jm","en-nz","en-tt","en-us","en-za","eo","es","es-ar","es-bo","es-cl","es-co","es-cr","es-do","es-ec","es-gt","es-hn","es-mx","es-ni","es-pa","es-pe","es-pr","es-py","es-sv","es-uy","es-ve","et","eu","fa","fi","fo","fr","fr-be","fr-ca","fr-ch","fr-lu","ga","gd","he","hi","hr","hu","id","is","it","it-ch","ja","ji","ko","ku","lt","lv","mk","ml","ms","mt","nb","ne","nl","nl-be","nn","no","pa","pl","pt","pt-br","rm","ro","ro-md","ru","ru-md","sb","sk","sl","sq","sr","sv","sv-fi","th","tn","tr","ts","ua","ur","ve","vi","xh","zh-cn","zh-hk","zh-sg","zh-tw","zu"],"x-enum-name":null,"x-enum-keys":[],"in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"subject":{"type":"string","description":"Email Subject","default":null,"x-example":"[SUBJECT]"},"message":{"type":"string","description":"Template message","default":null,"x-example":"[MESSAGE]"},"senderName":{"type":"string","description":"Name of the email sender","default":"","x-example":"[SENDER_NAME]"},"senderEmail":{"type":"string","description":"Email of the sender","default":"","x-example":"email@example.com"},"replyTo":{"type":"string","description":"Reply to email","default":"","x-example":"email@example.com"}},"required":["subject","message"]}}]},"delete":{"summary":"Reset custom email template","operationId":"projectsDeleteEmailTemplate","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"EmailTemplate","schema":{"$ref":"#\/definitions\/emailTemplate"}}},"x-appwrite":{"method":"deleteEmailTemplate","weight":168,"cookies":false,"type":"","demo":"projects\/delete-email-template.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"type","description":"Template type","required":true,"type":"string","x-example":"verification","enum":["verification","magicsession","recovery","invitation"],"x-enum-name":null,"x-enum-keys":[],"in":"path"},{"name":"locale","description":"Template locale","required":true,"type":"string","x-example":"af","enum":["af","ar-ae","ar-bh","ar-dz","ar-eg","ar-iq","ar-jo","ar-kw","ar-lb","ar-ly","ar-ma","ar-om","ar-qa","ar-sa","ar-sy","ar-tn","ar-ye","as","az","be","bg","bh","bn","bs","ca","cs","cy","da","de","de-at","de-ch","de-li","de-lu","el","en","en-au","en-bz","en-ca","en-gb","en-ie","en-jm","en-nz","en-tt","en-us","en-za","eo","es","es-ar","es-bo","es-cl","es-co","es-cr","es-do","es-ec","es-gt","es-hn","es-mx","es-ni","es-pa","es-pe","es-pr","es-py","es-sv","es-uy","es-ve","et","eu","fa","fi","fo","fr","fr-be","fr-ca","fr-ch","fr-lu","ga","gd","he","hi","hr","hu","id","is","it","it-ch","ja","ji","ko","ku","lt","lv","mk","ml","ms","mt","nb","ne","nl","nl-be","nn","no","pa","pl","pt","pt-br","rm","ro","ro-md","ru","ru-md","sb","sk","sl","sq","sr","sv","sv-fi","th","tn","tr","ts","ua","ur","ve","vi","xh","zh-cn","zh-hk","zh-sg","zh-tw","zu"],"x-enum-name":null,"x-enum-keys":[],"in":"path"}]}},"\/projects\/{projectId}\/templates\/sms\/{type}\/{locale}":{"get":{"summary":"Get custom SMS template","operationId":"projectsGetSmsTemplate","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"SmsTemplate","schema":{"$ref":"#\/definitions\/smsTemplate"}}},"x-appwrite":{"method":"getSmsTemplate","weight":163,"cookies":false,"type":"","demo":"projects\/get-sms-template.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"type","description":"Template type","required":true,"type":"string","x-example":"verification","enum":["verification","login","invitation"],"x-enum-name":null,"x-enum-keys":[],"in":"path"},{"name":"locale","description":"Template locale","required":true,"type":"string","x-example":"af","enum":["af","ar-ae","ar-bh","ar-dz","ar-eg","ar-iq","ar-jo","ar-kw","ar-lb","ar-ly","ar-ma","ar-om","ar-qa","ar-sa","ar-sy","ar-tn","ar-ye","as","az","be","bg","bh","bn","bs","ca","cs","cy","da","de","de-at","de-ch","de-li","de-lu","el","en","en-au","en-bz","en-ca","en-gb","en-ie","en-jm","en-nz","en-tt","en-us","en-za","eo","es","es-ar","es-bo","es-cl","es-co","es-cr","es-do","es-ec","es-gt","es-hn","es-mx","es-ni","es-pa","es-pe","es-pr","es-py","es-sv","es-uy","es-ve","et","eu","fa","fi","fo","fr","fr-be","fr-ca","fr-ch","fr-lu","ga","gd","he","hi","hr","hu","id","is","it","it-ch","ja","ji","ko","ku","lt","lv","mk","ml","ms","mt","nb","ne","nl","nl-be","nn","no","pa","pl","pt","pt-br","rm","ro","ro-md","ru","ru-md","sb","sk","sl","sq","sr","sv","sv-fi","th","tn","tr","ts","ua","ur","ve","vi","xh","zh-cn","zh-hk","zh-sg","zh-tw","zu"],"x-enum-name":null,"x-enum-keys":[],"in":"path"}]},"patch":{"summary":"Update custom SMS template","operationId":"projectsUpdateSmsTemplate","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"SmsTemplate","schema":{"$ref":"#\/definitions\/smsTemplate"}}},"x-appwrite":{"method":"updateSmsTemplate","weight":165,"cookies":false,"type":"","demo":"projects\/update-sms-template.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"type","description":"Template type","required":true,"type":"string","x-example":"verification","enum":["verification","login","invitation"],"x-enum-name":null,"x-enum-keys":[],"in":"path"},{"name":"locale","description":"Template locale","required":true,"type":"string","x-example":"af","enum":["af","ar-ae","ar-bh","ar-dz","ar-eg","ar-iq","ar-jo","ar-kw","ar-lb","ar-ly","ar-ma","ar-om","ar-qa","ar-sa","ar-sy","ar-tn","ar-ye","as","az","be","bg","bh","bn","bs","ca","cs","cy","da","de","de-at","de-ch","de-li","de-lu","el","en","en-au","en-bz","en-ca","en-gb","en-ie","en-jm","en-nz","en-tt","en-us","en-za","eo","es","es-ar","es-bo","es-cl","es-co","es-cr","es-do","es-ec","es-gt","es-hn","es-mx","es-ni","es-pa","es-pe","es-pr","es-py","es-sv","es-uy","es-ve","et","eu","fa","fi","fo","fr","fr-be","fr-ca","fr-ch","fr-lu","ga","gd","he","hi","hr","hu","id","is","it","it-ch","ja","ji","ko","ku","lt","lv","mk","ml","ms","mt","nb","ne","nl","nl-be","nn","no","pa","pl","pt","pt-br","rm","ro","ro-md","ru","ru-md","sb","sk","sl","sq","sr","sv","sv-fi","th","tn","tr","ts","ua","ur","ve","vi","xh","zh-cn","zh-hk","zh-sg","zh-tw","zu"],"x-enum-name":null,"x-enum-keys":[],"in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"message":{"type":"string","description":"Template message","default":null,"x-example":"[MESSAGE]"}},"required":["message"]}}]},"delete":{"summary":"Reset custom SMS template","operationId":"projectsDeleteSmsTemplate","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"SmsTemplate","schema":{"$ref":"#\/definitions\/smsTemplate"}}},"x-appwrite":{"method":"deleteSmsTemplate","weight":167,"cookies":false,"type":"","demo":"projects\/delete-sms-template.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"type","description":"Template type","required":true,"type":"string","x-example":"verification","enum":["verification","login","invitation"],"x-enum-name":null,"x-enum-keys":[],"in":"path"},{"name":"locale","description":"Template locale","required":true,"type":"string","x-example":"af","enum":["af","ar-ae","ar-bh","ar-dz","ar-eg","ar-iq","ar-jo","ar-kw","ar-lb","ar-ly","ar-ma","ar-om","ar-qa","ar-sa","ar-sy","ar-tn","ar-ye","as","az","be","bg","bh","bn","bs","ca","cs","cy","da","de","de-at","de-ch","de-li","de-lu","el","en","en-au","en-bz","en-ca","en-gb","en-ie","en-jm","en-nz","en-tt","en-us","en-za","eo","es","es-ar","es-bo","es-cl","es-co","es-cr","es-do","es-ec","es-gt","es-hn","es-mx","es-ni","es-pa","es-pe","es-pr","es-py","es-sv","es-uy","es-ve","et","eu","fa","fi","fo","fr","fr-be","fr-ca","fr-ch","fr-lu","ga","gd","he","hi","hr","hu","id","is","it","it-ch","ja","ji","ko","ku","lt","lv","mk","ml","ms","mt","nb","ne","nl","nl-be","nn","no","pa","pl","pt","pt-br","rm","ro","ro-md","ru","ru-md","sb","sk","sl","sq","sr","sv","sv-fi","th","tn","tr","ts","ua","ur","ve","vi","xh","zh-cn","zh-hk","zh-sg","zh-tw","zu"],"x-enum-name":null,"x-enum-keys":[],"in":"path"}]}},"\/projects\/{projectId}\/usage":{"get":{"summary":"Get usage stats for a project","operationId":"projectsGetUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"UsageProject","schema":{"$ref":"#\/definitions\/usageProject"}}},"x-appwrite":{"method":"getUsage","weight":132,"cookies":false,"type":"","demo":"projects\/get-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","enum":["24h","7d","30d","90d"],"x-enum-name":null,"x-enum-keys":[],"default":"30d","in":"query"}]}},"\/projects\/{projectId}\/webhooks":{"get":{"summary":"List webhooks","operationId":"projectsListWebhooks","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Webhooks List","schema":{"$ref":"#\/definitions\/webhookList"}}},"x-appwrite":{"method":"listWebhooks","weight":147,"cookies":false,"type":"","demo":"projects\/list-webhooks.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"}]},"post":{"summary":"Create webhook","operationId":"projectsCreateWebhook","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"201":{"description":"Webhook","schema":{"$ref":"#\/definitions\/webhook"}}},"x-appwrite":{"method":"createWebhook","weight":146,"cookies":false,"type":"","demo":"projects\/create-webhook.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Webhook name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","default":null,"x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"Webhook URL.","default":null,"x-example":"https:\/\/example.com"},"security":{"type":"boolean","description":"Certificate verification, false for disabled or true for enabled.","default":null,"x-example":false},"httpUser":{"type":"string","description":"Webhook HTTP user. Max length: 256 chars.","default":"","x-example":"[HTTP_USER]"},"httpPass":{"type":"string","description":"Webhook HTTP password. Max length: 256 chars.","default":"","x-example":"[HTTP_PASS]"}},"required":["name","events","url","security"]}}]}},"\/projects\/{projectId}\/webhooks\/{webhookId}":{"get":{"summary":"Get webhook","operationId":"projectsGetWebhook","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Webhook","schema":{"$ref":"#\/definitions\/webhook"}}},"x-appwrite":{"method":"getWebhook","weight":148,"cookies":false,"type":"","demo":"projects\/get-webhook.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"webhookId","description":"Webhook unique ID.","required":true,"type":"string","x-example":"[WEBHOOK_ID]","in":"path"}]},"put":{"summary":"Update webhook","operationId":"projectsUpdateWebhook","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Webhook","schema":{"$ref":"#\/definitions\/webhook"}}},"x-appwrite":{"method":"updateWebhook","weight":149,"cookies":false,"type":"","demo":"projects\/update-webhook.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"webhookId","description":"Webhook unique ID.","required":true,"type":"string","x-example":"[WEBHOOK_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Webhook name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","default":null,"x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"Webhook URL.","default":null,"x-example":"https:\/\/example.com"},"security":{"type":"boolean","description":"Certificate verification, false for disabled or true for enabled.","default":null,"x-example":false},"httpUser":{"type":"string","description":"Webhook HTTP user. Max length: 256 chars.","default":"","x-example":"[HTTP_USER]"},"httpPass":{"type":"string","description":"Webhook HTTP password. Max length: 256 chars.","default":"","x-example":"[HTTP_PASS]"}},"required":["name","events","url","security"]}}]},"delete":{"summary":"Delete webhook","operationId":"projectsDeleteWebhook","consumes":["application\/json"],"produces":[],"tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteWebhook","weight":151,"cookies":false,"type":"","demo":"projects\/delete-webhook.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"webhookId","description":"Webhook unique ID.","required":true,"type":"string","x-example":"[WEBHOOK_ID]","in":"path"}]}},"\/projects\/{projectId}\/webhooks\/{webhookId}\/signature":{"patch":{"summary":"Update webhook signature key","operationId":"projectsUpdateWebhookSignature","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Webhook","schema":{"$ref":"#\/definitions\/webhook"}}},"x-appwrite":{"method":"updateWebhookSignature","weight":150,"cookies":false,"type":"","demo":"projects\/update-webhook-signature.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"webhookId","description":"Webhook unique ID.","required":true,"type":"string","x-example":"[WEBHOOK_ID]","in":"path"}]}},"\/proxy\/rules":{"get":{"summary":"List Rules","operationId":"proxyListRules","consumes":["application\/json"],"produces":["application\/json"],"tags":["proxy"],"description":"Get a list of all the proxy rules. You can use the query params to filter your results.","responses":{"200":{"description":"Rule List","schema":{"$ref":"#\/definitions\/proxyRuleList"}}},"x-appwrite":{"method":"listRules","weight":276,"cookies":false,"type":"","demo":"proxy\/list-rules.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/proxy\/list-rules.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"rules.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: domain, resourceType, resourceId, url","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Rule","operationId":"proxyCreateRule","consumes":["application\/json"],"produces":["application\/json"],"tags":["proxy"],"description":"Create a new proxy rule.","responses":{"201":{"description":"Rule","schema":{"$ref":"#\/definitions\/proxyRule"}}},"x-appwrite":{"method":"createRule","weight":275,"cookies":false,"type":"","demo":"proxy\/create-rule.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/proxy\/create-rule.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"rules.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"domain":{"type":"string","description":"Domain name.","default":null,"x-example":null},"resourceType":{"type":"string","description":"Action definition for the rule. Possible values are \"api\", \"function\"","default":null,"x-example":"api","enum":["api","function"],"x-enum-name":null,"x-enum-keys":[]},"resourceId":{"type":"string","description":"ID of resource for the action type. If resourceType is \"api\", leave empty. If resourceType is \"function\", provide ID of the function.","default":"","x-example":"[RESOURCE_ID]"}},"required":["domain","resourceType"]}}]}},"\/proxy\/rules\/{ruleId}":{"get":{"summary":"Get Rule","operationId":"proxyGetRule","consumes":["application\/json"],"produces":["application\/json"],"tags":["proxy"],"description":"Get a proxy rule by its unique ID.","responses":{"200":{"description":"Rule","schema":{"$ref":"#\/definitions\/proxyRule"}}},"x-appwrite":{"method":"getRule","weight":277,"cookies":false,"type":"","demo":"proxy\/get-rule.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/proxy\/get-rule.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"rules.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"ruleId","description":"Rule ID.","required":true,"type":"string","x-example":"[RULE_ID]","in":"path"}]},"delete":{"summary":"Delete Rule","operationId":"proxyDeleteRule","consumes":["application\/json"],"produces":[],"tags":["proxy"],"description":"Delete a proxy rule by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteRule","weight":278,"cookies":false,"type":"","demo":"proxy\/delete-rule.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/proxy\/delete-rule.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"rules.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"ruleId","description":"Rule ID.","required":true,"type":"string","x-example":"[RULE_ID]","in":"path"}]}},"\/proxy\/rules\/{ruleId}\/verification":{"patch":{"summary":"Update Rule Verification Status","operationId":"proxyUpdateRuleVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["proxy"],"description":"","responses":{"200":{"description":"Rule","schema":{"$ref":"#\/definitions\/proxyRule"}}},"x-appwrite":{"method":"updateRuleVerification","weight":279,"cookies":false,"type":"","demo":"proxy\/update-rule-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"rules.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"ruleId","description":"Rule ID.","required":true,"type":"string","x-example":"[RULE_ID]","in":"path"}]}},"\/storage\/buckets":{"get":{"summary":"List buckets","operationId":"storageListBuckets","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a list of all the storage buckets. You can use the query params to filter your results.","responses":{"200":{"description":"Buckets List","schema":{"$ref":"#\/definitions\/bucketList"}}},"x-appwrite":{"method":"listBuckets","weight":176,"cookies":false,"type":"","demo":"storage\/list-buckets.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/list-buckets.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: enabled, name, fileSecurity, maximumFileSize, encryption, antivirus","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create bucket","operationId":"storageCreateBucket","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Create a new storage bucket.","responses":{"201":{"description":"Bucket","schema":{"$ref":"#\/definitions\/bucket"}}},"x-appwrite":{"method":"createBucket","weight":175,"cookies":false,"type":"","demo":"storage\/create-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"bucketId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, no user is granted with any permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":false,"x-example":false},"enabled":{"type":"boolean","description":"Is bucket enabled? When set to 'disabled', users cannot access the files in this bucket but Server SDKs with and API key can still access the bucket. No files are lost when this is toggled.","default":true,"x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB.","default":30000000,"x-example":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","default":[],"x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","default":"none","x-example":"none","enum":["none","gzip","zstd"],"x-enum-name":null,"x-enum-keys":[]},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","default":true,"x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","default":true,"x-example":false}},"required":["bucketId","name"]}}]}},"\/storage\/buckets\/{bucketId}":{"get":{"summary":"Get bucket","operationId":"storageGetBucket","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a storage bucket by its unique ID. This endpoint response returns a JSON object with the storage bucket metadata.","responses":{"200":{"description":"Bucket","schema":{"$ref":"#\/definitions\/bucket"}}},"x-appwrite":{"method":"getBucket","weight":177,"cookies":false,"type":"","demo":"storage\/get-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"bucketId","description":"Bucket unique ID.","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"}]},"put":{"summary":"Update bucket","operationId":"storageUpdateBucket","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Update a storage bucket by its unique ID.","responses":{"200":{"description":"Bucket","schema":{"$ref":"#\/definitions\/bucket"}}},"x-appwrite":{"method":"updateBucket","weight":178,"cookies":false,"type":"","demo":"storage\/update-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"bucketId","description":"Bucket unique ID.","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Bucket name","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":false,"x-example":false},"enabled":{"type":"boolean","description":"Is bucket enabled? When set to 'disabled', users cannot access the files in this bucket but Server SDKs with and API key can still access the bucket. No files are lost when this is toggled.","default":true,"x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB.","default":null,"x-example":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","default":[],"x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","default":"none","x-example":"none","enum":["none","gzip","zstd"],"x-enum-name":null,"x-enum-keys":[]},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","default":true,"x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","default":true,"x-example":false}},"required":["name"]}}]},"delete":{"summary":"Delete bucket","operationId":"storageDeleteBucket","consumes":["application\/json"],"produces":[],"tags":["storage"],"description":"Delete a storage bucket by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteBucket","weight":179,"cookies":false,"type":"","demo":"storage\/delete-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"bucketId","description":"Bucket unique ID.","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files":{"get":{"summary":"List files","operationId":"storageListFiles","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a list of all the user files. You can use the query params to filter your results.","responses":{"200":{"description":"Files List","schema":{"$ref":"#\/definitions\/fileList"}}},"x-appwrite":{"method":"listFiles","weight":181,"cookies":false,"type":"","demo":"storage\/list-files.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/list-files.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create file","operationId":"storageCreateFile","consumes":["multipart\/form-data"],"produces":["application\/json"],"tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"createFile","weight":180,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId},chunkId:{chunkId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","required":true,"x-upload-id":true,"type":"string","x-example":"[FILE_ID]","in":"formData"},{"name":"file","description":"Binary file. Appwrite SDKs provide helpers to handle file input. [Learn about file input](https:\/\/appwrite.io\/docs\/storage#file-input).","required":true,"type":"file","in":"formData"},{"name":"permissions","description":"An array of permission strings. By default, only the current user is granted all permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"x-example":"[\"read(\"any\")\"]","in":"formData"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get file","operationId":"storageGetFile","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"getFile","weight":182,"cookies":false,"type":"","demo":"storage\/get-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID.","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"}]},"put":{"summary":"Update file","operationId":"storageUpdateFile","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Update a file by its unique ID. Only users with write permissions have access to update this resource.","responses":{"200":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"updateFile","weight":186,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File unique ID.","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Name of the file","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission string. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","consumes":["application\/json"],"produces":[],"tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":187,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID.","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/download":{"get":{"summary":"Get file for download","operationId":"storageGetFileDownload","consumes":["application\/json"],"produces":["*\/*"],"tags":["storage"],"description":"Get a file content by its unique ID. The endpoint response return with a 'Content-Disposition: attachment' header that tells the browser to start downloading the file to user downloads directory.","responses":{"200":{"description":"File","schema":{"type":"file"}}},"x-appwrite":{"method":"getFileDownload","weight":184,"cookies":false,"type":"location","demo":"storage\/get-file-download.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-download.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID.","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/preview":{"get":{"summary":"Get file preview","operationId":"storageGetFilePreview","consumes":["application\/json"],"produces":["image\/*"],"tags":["storage"],"description":"Get a file preview image. Currently, this method supports preview for image files (jpg, png, and gif), other supported formats, like pdf, docs, slides, and spreadsheets, will return the file icon image. You can also pass query string arguments for cutting and resizing your preview image. Preview is supported only for image files smaller than 10MB.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFilePreview","weight":183,"cookies":false,"type":"location","demo":"storage\/get-file-preview.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-preview.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"},{"name":"width","description":"Resize preview image width, Pass an integer between 0 to 4000.","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 4000.","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"gravity","description":"Image crop gravity. Can be one of center,top-left,top,top-right,left,right,bottom-left,bottom,bottom-right","required":false,"type":"string","x-example":"center","enum":["center","top-left","top","top-right","left","right","bottom-left","bottom","bottom-right"],"x-enum-name":"ImageGravity","x-enum-keys":[],"default":"center","in":"query"},{"name":"quality","description":"Preview image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"borderWidth","description":"Preview image border in pixels. Pass an integer between 0 to 100. Defaults to 0.","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"borderColor","description":"Preview image border color. Use a valid HEX color, no # is needed for prefix.","required":false,"type":"string","default":"","in":"query"},{"name":"borderRadius","description":"Preview image border radius in pixels. Pass an integer between 0 to 4000.","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"opacity","description":"Preview image opacity. Only works with images having an alpha channel (like png). Pass a number between 0 to 1.","required":false,"type":"number","format":"float","x-example":0,"default":1,"in":"query"},{"name":"rotation","description":"Preview image rotation in degrees. Pass an integer between -360 and 360.","required":false,"type":"integer","format":"int32","x-example":-360,"default":0,"in":"query"},{"name":"background","description":"Preview image background color. Only works with transparent images (png). Use a valid HEX color, no # is needed for prefix.","required":false,"type":"string","default":"","in":"query"},{"name":"output","description":"Output format type (jpeg, jpg, png, gif and webp).","required":false,"type":"string","x-example":"jpg","enum":["jpg","jpeg","gif","png","webp"],"x-enum-name":"ImageFormat","x-enum-keys":[],"default":"","in":"query"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/view":{"get":{"summary":"Get file for view","operationId":"storageGetFileView","consumes":["application\/json"],"produces":["*\/*"],"tags":["storage"],"description":"Get a file content by its unique ID. This endpoint is similar to the download method but returns with no 'Content-Disposition: attachment' header.","responses":{"200":{"description":"File","schema":{"type":"file"}}},"x-appwrite":{"method":"getFileView","weight":185,"cookies":false,"type":"location","demo":"storage\/get-file-view.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-view.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID.","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"}]}},"\/storage\/usage":{"get":{"summary":"Get usage stats for storage","operationId":"storageGetUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"","responses":{"200":{"description":"StorageUsage","schema":{"$ref":"#\/definitions\/usageStorage"}}},"x-appwrite":{"method":"getUsage","weight":188,"cookies":false,"type":"","demo":"storage\/get-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","enum":["24h","7d","30d","90d"],"x-enum-name":null,"x-enum-keys":["Twenty Four Hours","Seven Days","Thirty Days","Ninety Days"],"default":"30d","in":"query"}]}},"\/storage\/{bucketId}\/usage":{"get":{"summary":"Get usage stats for a storage bucket","operationId":"storageGetBucketUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"","responses":{"200":{"description":"UsageBuckets","schema":{"$ref":"#\/definitions\/usageBuckets"}}},"x-appwrite":{"method":"getBucketUsage","weight":189,"cookies":false,"type":"","demo":"storage\/get-bucket-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"bucketId","description":"Bucket ID.","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","enum":["24h","7d","30d","90d"],"x-enum-name":null,"x-enum-keys":["Twenty Four Hours","Seven Days","Thirty Days","Ninety Days"],"default":"30d","in":"query"}]}},"\/teams":{"get":{"summary":"List teams","operationId":"teamsList","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get a list of all the teams in which the current user is a member. You can use the parameters to filter your results.","responses":{"200":{"description":"Teams List","schema":{"$ref":"#\/definitions\/teamList"}}},"x-appwrite":{"method":"list","weight":191,"cookies":false,"type":"","demo":"teams\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-teams.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create team","operationId":"teamsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"create","weight":190,"cookies":false,"type":"","demo":"teams\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/create-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"teamId":{"type":"string","description":"Team ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[TEAM_ID]"},"name":{"type":"string","description":"Team name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"roles":{"type":"array","description":"Array of strings. Use this param to set the roles in the team for the user who created it. The default role is **owner**. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","default":["owner"],"x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}]}},"\/teams\/{teamId}":{"get":{"summary":"Get team","operationId":"teamsGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"get","weight":192,"cookies":false,"type":"","demo":"teams\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams","offline-key":"{teamId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"}]},"put":{"summary":"Update name","operationId":"teamsUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Update the team's name by its unique ID.","responses":{"200":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"updateName","weight":194,"cookies":false,"type":"","demo":"teams\/update-name.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-name.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams","offline-key":"{teamId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"New team name. Max length: 128 chars.","default":null,"x-example":"[NAME]"}},"required":["name"]}}]},"delete":{"summary":"Delete team","operationId":"teamsDelete","consumes":["application\/json"],"produces":[],"tags":["teams"],"description":"Delete a team using its ID. Only team members with the owner role can delete the team.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":196,"cookies":false,"type":"","demo":"teams\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/delete-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"}]}},"\/teams\/{teamId}\/logs":{"get":{"summary":"List team logs","operationId":"teamsListLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get the team activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listLogs","weight":203,"cookies":false,"type":"","demo":"teams\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/teams\/{teamId}\/memberships":{"get":{"summary":"List team memberships","operationId":"teamsListMemberships","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"listMemberships","weight":198,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/memberships","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create team membership","operationId":"teamsCreateMembership","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Invite a new member to join your team. Provide an ID for existing users, or invite unregistered users using an email or phone number. If initiated from a Client SDK, Appwrite will send an email or sms with a link to join the team to the invited user, and an account will be created for them if one doesn't exist. If initiated from a Server SDK, the new member will be added automatically to the team.\n\nYou only need to provide one of a user ID, email, or phone number. Appwrite will prioritize accepting the user ID > email > phone number if you provide more than one of these parameters.\n\nUse the `url` parameter to redirect the user from the invitation email to your app. After the user is redirected, use the [Update Team Membership Status](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/teams#updateMembershipStatus) endpoint to allow the user to accept the invitation to the team. \n\nPlease note that to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) Appwrite will accept the only redirect URLs under the domains you have added as a platform on the Appwrite Console.\n","responses":{"201":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"createMembership","weight":197,"cookies":false,"type":"","demo":"teams\/create-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/create-team-membership.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"email":{"type":"string","description":"Email of the new team member.","default":"","x-example":"email@example.com"},"userId":{"type":"string","description":"ID of the user to be added to a team.","default":"","x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":"","x-example":"+12065550100"},"roles":{"type":"array","description":"Array of strings. Use this param to set the user roles in the team. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":"","x-example":"https:\/\/example.com"},"name":{"type":"string","description":"Name of the new team member. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["roles"]}}]}},"\/teams\/{teamId}\/memberships\/{membershipId}":{"get":{"summary":"Get team membership","operationId":"teamsGetMembership","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get a team member by the membership unique id. All team members have read access for this resource.","responses":{"200":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"getMembership","weight":199,"cookies":false,"type":"","demo":"teams\/get-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-member.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/memberships","offline-key":"{membershipId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"type":"string","x-example":"[MEMBERSHIP_ID]","in":"path"}]},"patch":{"summary":"Update membership","operationId":"teamsUpdateMembership","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Modify the roles of a team member. Only team members with the owner role have access to this endpoint. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions).\n","responses":{"200":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"updateMembership","weight":200,"cookies":false,"type":"","demo":"teams\/update-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"type":"string","x-example":"[MEMBERSHIP_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"roles":{"type":"array","description":"An array of strings. Use this param to set the user's roles in the team. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}}},"required":["roles"]}}]},"delete":{"summary":"Delete team membership","operationId":"teamsDeleteMembership","consumes":["application\/json"],"produces":[],"tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":202,"cookies":false,"type":"","demo":"teams\/delete-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/delete-team-membership.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"type":"string","x-example":"[MEMBERSHIP_ID]","in":"path"}]}},"\/teams\/{teamId}\/memberships\/{membershipId}\/status":{"patch":{"summary":"Update team membership status","operationId":"teamsUpdateMembershipStatus","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Use this endpoint to allow a user to accept an invitation to join a team after being redirected back to your app from the invitation email received by the user.\n\nIf the request is successful, a session for the user is automatically created.\n","responses":{"200":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"updateMembershipStatus","weight":201,"cookies":false,"type":"","demo":"teams\/update-membership-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"public","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"type":"string","x-example":"[MEMBERSHIP_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Secret key.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/teams\/{teamId}\/prefs":{"get":{"summary":"Get team preferences","operationId":"teamsGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get the team's shared preferences by its unique ID. If a preference doesn't need to be shared by all team members, prefer storing them in [user preferences](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#getPrefs).","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":193,"cookies":false,"type":"","demo":"teams\/get-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/prefs","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"}]},"put":{"summary":"Update preferences","operationId":"teamsUpdatePrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Update the team's preferences by its unique ID. The object you pass is stored as is and replaces any previous value. The maximum allowed prefs size is 64kB and throws an error if exceeded.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"updatePrefs","weight":195,"cookies":false,"type":"","demo":"teams\/update-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/prefs","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"prefs":{"type":"object","description":"Prefs key-value JSON object.","default":{},"x-example":"{}"}},"required":["prefs"]}}]}},"\/users":{"get":{"summary":"List users","operationId":"usersList","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get a list of all the project's users. You can use the query params to filter your results.","responses":{"200":{"description":"Users List","schema":{"$ref":"#\/definitions\/userList"}}},"x-appwrite":{"method":"list","weight":213,"cookies":false,"type":"","demo":"users\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-users.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, email, phone, status, passwordUpdate, registration, emailVerification, phoneVerification","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create user","operationId":"usersCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"create","weight":204,"cookies":false,"type":"","demo":"users\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"},"password":{"type":"string","description":"Plain text user password. Must be at least 8 chars.","default":"","x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId"]}}]}},"\/users\/argon2":{"post":{"summary":"Create user with Argon2 password","operationId":"usersCreateArgon2User","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Argon2](https:\/\/en.wikipedia.org\/wiki\/Argon2) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createArgon2User","weight":207,"cookies":false,"type":"","demo":"users\/create-argon2user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-argon2-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Argon2.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/bcrypt":{"post":{"summary":"Create user with bcrypt password","operationId":"usersCreateBcryptUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Bcrypt](https:\/\/en.wikipedia.org\/wiki\/Bcrypt) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createBcryptUser","weight":205,"cookies":false,"type":"","demo":"users\/create-bcrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-bcrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Bcrypt.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/identities":{"get":{"summary":"List Identities","operationId":"usersListIdentities","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get identities for all users.","responses":{"200":{"description":"Identities List","schema":{"$ref":"#\/definitions\/identityList"}}},"x-appwrite":{"method":"listIdentities","weight":221,"cookies":false,"type":"","demo":"users\/list-identities.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-identities.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, provider, providerUid, providerEmail, providerAccessTokenExpiry","required":false,"type":"string","default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]}},"\/users\/identities\/{identityId}":{"delete":{"summary":"Delete identity","operationId":"usersDeleteIdentity","consumes":["application\/json"],"produces":[],"tags":["users"],"description":"Delete an identity by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIdentity","weight":238,"cookies":false,"type":"","demo":"users\/delete-identity.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-identity.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"identityId","description":"Identity ID.","required":true,"type":"string","x-example":"[IDENTITY_ID]","in":"path"}]}},"\/users\/md5":{"post":{"summary":"Create user with MD5 password","operationId":"usersCreateMD5User","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [MD5](https:\/\/en.wikipedia.org\/wiki\/MD5) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createMD5User","weight":206,"cookies":false,"type":"","demo":"users\/create-m-d5user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-md5-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using MD5.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/phpass":{"post":{"summary":"Create user with PHPass password","operationId":"usersCreatePHPassUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [PHPass](https:\/\/www.openwall.com\/phpass\/) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createPHPassUser","weight":209,"cookies":false,"type":"","demo":"users\/create-p-h-pass-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-phpass-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or pass the string `ID.unique()`to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using PHPass.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/scrypt":{"post":{"summary":"Create user with Scrypt password","operationId":"usersCreateScryptUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt](https:\/\/github.com\/Tarsnap\/scrypt) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createScryptUser","weight":210,"cookies":false,"type":"","demo":"users\/create-scrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt.","default":null,"x-example":"password"},"passwordSalt":{"type":"string","description":"Optional salt used to hash password.","default":null,"x-example":"[PASSWORD_SALT]"},"passwordCpu":{"type":"integer","description":"Optional CPU cost used to hash password.","default":null,"x-example":null},"passwordMemory":{"type":"integer","description":"Optional memory cost used to hash password.","default":null,"x-example":null},"passwordParallel":{"type":"integer","description":"Optional parallelization cost used to hash password.","default":null,"x-example":null},"passwordLength":{"type":"integer","description":"Optional hash length used to hash password.","default":null,"x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordCpu","passwordMemory","passwordParallel","passwordLength"]}}]}},"\/users\/scrypt-modified":{"post":{"summary":"Create user with Scrypt modified password","operationId":"usersCreateScryptModifiedUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt Modified](https:\/\/gist.github.com\/Meldiron\/eecf84a0225eccb5a378d45bb27462cc) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createScryptModifiedUser","weight":211,"cookies":false,"type":"","demo":"users\/create-scrypt-modified-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-modified-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt Modified.","default":null,"x-example":"password"},"passwordSalt":{"type":"string","description":"Salt used to hash password.","default":null,"x-example":"[PASSWORD_SALT]"},"passwordSaltSeparator":{"type":"string","description":"Salt separator used to hash password.","default":null,"x-example":"[PASSWORD_SALT_SEPARATOR]"},"passwordSignerKey":{"type":"string","description":"Signer key used to hash password.","default":null,"x-example":"[PASSWORD_SIGNER_KEY]"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordSaltSeparator","passwordSignerKey"]}}]}},"\/users\/sha":{"post":{"summary":"Create user with SHA password","operationId":"usersCreateSHAUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [SHA](https:\/\/en.wikipedia.org\/wiki\/Secure_Hash_Algorithm) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createSHAUser","weight":208,"cookies":false,"type":"","demo":"users\/create-s-h-a-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-sha-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using SHA.","default":null,"x-example":"password"},"passwordVersion":{"type":"string","description":"Optional SHA version used to hash password. Allowed values are: 'sha1', 'sha224', 'sha256', 'sha384', 'sha512\/224', 'sha512\/256', 'sha512', 'sha3-224', 'sha3-256', 'sha3-384', 'sha3-512'","default":"","x-example":"sha1","enum":["sha1","sha224","sha256","sha384","sha512\/224","sha512\/256","sha512","sha3-224","sha3-256","sha3-384","sha3-512"],"x-enum-name":null,"x-enum-keys":[]},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/usage":{"get":{"summary":"Get usage stats for the users API","operationId":"usersGetUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"","responses":{"200":{"description":"UsageUsers","schema":{"$ref":"#\/definitions\/usageUsers"}}},"x-appwrite":{"method":"getUsage","weight":239,"cookies":false,"type":"","demo":"users\/get-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","enum":["24h","7d","30d","90d"],"x-enum-name":null,"x-enum-keys":["Twenty Four Hours","Seven Days","Thirty Days","Ninety Days"],"default":"30d","in":"query"},{"name":"provider","description":"Provider Name.","required":false,"type":"string","x-example":"email","default":"","in":"query"}]}},"\/users\/{userId}":{"get":{"summary":"Get user","operationId":"usersGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get a user by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"get","weight":214,"cookies":false,"type":"","demo":"users\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]},"delete":{"summary":"Delete user","operationId":"usersDelete","consumes":["application\/json"],"produces":[],"tags":["users"],"description":"Delete a user by its unique ID, thereby releasing it's ID. Since ID is released and can be reused, all user-related resources like documents or storage files should be deleted before user deletion. If you want to keep ID reserved, use the [updateStatus](https:\/\/appwrite.io\/docs\/server\/users#usersUpdateStatus) endpoint instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":236,"cookies":false,"type":"","demo":"users\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]}},"\/users\/{userId}\/email":{"patch":{"summary":"Update email","operationId":"usersUpdateEmail","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user email by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateEmail","weight":227,"cookies":false,"type":"","demo":"users\/update-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"}},"required":["email"]}}]}},"\/users\/{userId}\/labels":{"put":{"summary":"Update user labels","operationId":"usersUpdateLabels","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user labels by its unique ID. \n\nLabels can be used to grant access to resources. While teams are a way for user's to share access to a resource, labels can be defined by the developer to grant access without an invitation. See the [Permissions docs](https:\/\/appwrite.io\/docs\/permissions) for more info.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateLabels","weight":223,"cookies":false,"type":"","demo":"users\/update-labels.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-labels.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"labels":{"type":"array","description":"Array of user labels. Replaces the previous labels. Maximum of 100 labels are allowed, each up to 36 alphanumeric characters long.","default":null,"x-example":null,"items":{"type":"string"}}},"required":["labels"]}}]}},"\/users\/{userId}\/logs":{"get":{"summary":"List user logs","operationId":"usersListLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listLogs","weight":219,"cookies":false,"type":"","demo":"users\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/users\/{userId}\/memberships":{"get":{"summary":"List user memberships","operationId":"usersListMemberships","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user membership list by its unique ID.","responses":{"200":{"description":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"listMemberships","weight":218,"cookies":false,"type":"","demo":"users\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-memberships.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]}},"\/users\/{userId}\/name":{"patch":{"summary":"Update name","operationId":"usersUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user name by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateName","weight":225,"cookies":false,"type":"","demo":"users\/update-name.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-name.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"User name. Max length: 128 chars.","default":null,"x-example":"[NAME]"}},"required":["name"]}}]}},"\/users\/{userId}\/password":{"patch":{"summary":"Update password","operationId":"usersUpdatePassword","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user password by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePassword","weight":226,"cookies":false,"type":"","demo":"users\/update-password.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-password.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"password":{"type":"string","description":"New user password. Must be at least 8 chars.","default":null,"x-example":null}},"required":["password"]}}]}},"\/users\/{userId}\/phone":{"patch":{"summary":"Update phone","operationId":"usersUpdatePhone","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user phone by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePhone","weight":228,"cookies":false,"type":"","demo":"users\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"number":{"type":"string","description":"User phone number.","default":null,"x-example":"+12065550100"}},"required":["number"]}}]}},"\/users\/{userId}\/prefs":{"get":{"summary":"Get user preferences","operationId":"usersGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user preferences by its unique ID.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":215,"cookies":false,"type":"","demo":"users\/get-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]},"patch":{"summary":"Update user preferences","operationId":"usersUpdatePrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user preferences by its unique ID. The object you pass is stored as is, and replaces any previous value. The maximum allowed prefs size is 64kB and throws error if exceeded.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"updatePrefs","weight":230,"cookies":false,"type":"","demo":"users\/update-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"prefs":{"type":"object","description":"Prefs key-value JSON object.","default":{},"x-example":"{}"}},"required":["prefs"]}}]}},"\/users\/{userId}\/sessions":{"get":{"summary":"List user sessions","operationId":"usersListSessions","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user sessions list by its unique ID.","responses":{"200":{"description":"Sessions List","schema":{"$ref":"#\/definitions\/sessionList"}}},"x-appwrite":{"method":"listSessions","weight":217,"cookies":false,"type":"","demo":"users\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]},"post":{"summary":"Create session","operationId":"usersCreateSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Creates a session for a user. Returns an immediately usable session object.\n\nIf you want to generate a token for a custom authentication flow, use the [POST \/users\/{userId}\/tokens](https:\/\/appwrite.io\/docs\/server\/users#createToken) endpoint.","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"createSession","weight":232,"cookies":false,"type":"","demo":"users\/create-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-session.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]},"delete":{"summary":"Delete user sessions","operationId":"usersDeleteSessions","consumes":["application\/json"],"produces":[],"tags":["users"],"description":"Delete all user's sessions by using the user's unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":235,"cookies":false,"type":"","demo":"users\/delete-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]}},"\/users\/{userId}\/sessions\/{sessionId}":{"delete":{"summary":"Delete user session","operationId":"usersDeleteSession","consumes":["application\/json"],"produces":[],"tags":["users"],"description":"Delete a user sessions by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSession","weight":234,"cookies":false,"type":"","demo":"users\/delete-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-user-session.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"sessionId","description":"Session ID.","required":true,"type":"string","x-example":"[SESSION_ID]","in":"path"}]}},"\/users\/{userId}\/status":{"patch":{"summary":"Update user status","operationId":"usersUpdateStatus","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user status by its unique ID. Use this endpoint as an alternative to deleting a user if you want to keep user's ID reserved.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateStatus","weight":222,"cookies":false,"type":"","demo":"users\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"status":{"type":"boolean","description":"User Status. To activate the user pass `true` and to block the user pass `false`.","default":null,"x-example":false}},"required":["status"]}}]}},"\/users\/{userId}\/targets":{"get":{"summary":"List User Targets","operationId":"usersListTargets","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"","responses":{"200":{"description":"Target list","schema":{"$ref":"#\/definitions\/targetList"}}},"x-appwrite":{"method":"listTargets","weight":220,"cookies":false,"type":"","demo":"users\/list-targets.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-targets.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.read","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, email, phone, status, passwordUpdate, registration, emailVerification, phoneVerification","required":false,"type":"string","default":[],"in":"query"}]},"post":{"summary":"Create User Target","operationId":"usersCreateTarget","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"","responses":{"201":{"description":"Target","schema":{"$ref":"#\/definitions\/target"}}},"x-appwrite":{"method":"createTarget","weight":212,"cookies":false,"type":"","demo":"users\/create-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-target.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"targetId":{"type":"string","description":"Target ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[TARGET_ID]"},"providerType":{"type":"string","description":"The target provider type. Can be one of the following: `email`, `sms` or `push`.","default":null,"x-example":"email","enum":["email","sms","push"],"x-enum-name":null,"x-enum-keys":[]},"identifier":{"type":"string","description":"The target identifier (token, email, phone etc.)","default":null,"x-example":"[IDENTIFIER]"},"providerId":{"type":"string","description":"Provider ID. Message will be sent to this target from the specified provider ID. If no provider ID is set the first setup provider will be used.","default":"","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Target name. Max length: 128 chars. For example: My Awesome App Galaxy S23.","default":"","x-example":"[NAME]"}},"required":["targetId","providerType","identifier"]}}]}},"\/users\/{userId}\/targets\/{targetId}":{"get":{"summary":"Get User Target","operationId":"usersGetTarget","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"","responses":{"200":{"description":"Target","schema":{"$ref":"#\/definitions\/target"}}},"x-appwrite":{"method":"getTarget","weight":216,"cookies":false,"type":"","demo":"users\/get-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-target.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.read","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"targetId","description":"Target ID.","required":true,"type":"string","x-example":"[TARGET_ID]","in":"path"}]},"patch":{"summary":"Update User target","operationId":"usersUpdateTarget","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"","responses":{"200":{"description":"Target","schema":{"$ref":"#\/definitions\/target"}}},"x-appwrite":{"method":"updateTarget","weight":231,"cookies":false,"type":"","demo":"users\/update-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-target.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"targetId","description":"Target ID.","required":true,"type":"string","x-example":"[TARGET_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"identifier":{"type":"string","description":"The target identifier (token, email, phone etc.)","default":"","x-example":"[IDENTIFIER]"},"providerId":{"type":"string","description":"Provider ID. Message will be sent to this target from the specified provider ID. If no provider ID is set the first setup provider will be used.","default":"","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Target name. Max length: 128 chars. For example: My Awesome App Galaxy S23.","default":"","x-example":"[NAME]"}}}}]},"delete":{"summary":"Delete user target","operationId":"usersDeleteTarget","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteTarget","weight":237,"cookies":false,"type":"","demo":"users\/delete-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-target.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"targetId","description":"Target ID.","required":true,"type":"string","x-example":"[TARGET_ID]","in":"path"}]}},"\/users\/{userId}\/tokens":{"post":{"summary":"Create token","operationId":"usersCreateToken","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Returns a token with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [PUT \/account\/sessions\/custom](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateCustomSession) endpoint to complete the login process.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createToken","weight":233,"cookies":false,"type":"","demo":"users\/create-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-token.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"length":{"type":"integer","description":"Token length in characters. The default length is 6 characters","default":6,"x-example":4},"expire":{"type":"integer","description":"Token expiration period in seconds. The default expiration is 15 minutes.","default":900,"x-example":60}}}}]}},"\/users\/{userId}\/verification":{"patch":{"summary":"Update email verification","operationId":"usersUpdateEmailVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user email verification status by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateEmailVerification","weight":229,"cookies":false,"type":"","demo":"users\/update-email-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-email-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"emailVerification":{"type":"boolean","description":"User email verification status.","default":null,"x-example":false}},"required":["emailVerification"]}}]}},"\/users\/{userId}\/verification\/phone":{"patch":{"summary":"Update phone verification","operationId":"usersUpdatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user phone verification status by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePhoneVerification","weight":224,"cookies":false,"type":"","demo":"users\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"phoneVerification":{"type":"boolean","description":"User phone verification status.","default":null,"x-example":false}},"required":["phoneVerification"]}}]}},"\/vcs\/github\/installations\/{installationId}\/providerRepositories":{"get":{"summary":"List Repositories","operationId":"vcsListRepositories","consumes":["application\/json"],"produces":["application\/json"],"tags":["vcs"],"description":"","responses":{"200":{"description":"Provider Repositories List","schema":{"$ref":"#\/definitions\/providerRepositoryList"}}},"x-appwrite":{"method":"listRepositories","weight":243,"cookies":false,"type":"","demo":"vcs\/list-repositories.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"type":"string","x-example":"[INSTALLATION_ID]","in":"path"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create repository","operationId":"vcsCreateRepository","consumes":["application\/json"],"produces":["application\/json"],"tags":["vcs"],"description":"","responses":{"200":{"description":"ProviderRepository","schema":{"$ref":"#\/definitions\/providerRepository"}}},"x-appwrite":{"method":"createRepository","weight":244,"cookies":false,"type":"","demo":"vcs\/create-repository.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"type":"string","x-example":"[INSTALLATION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Repository name (slug)","default":null,"x-example":"[NAME]"},"private":{"type":"boolean","description":"Mark repository public or private","default":null,"x-example":false}},"required":["name","private"]}}]}},"\/vcs\/github\/installations\/{installationId}\/providerRepositories\/{providerRepositoryId}":{"get":{"summary":"Get repository","operationId":"vcsGetRepository","consumes":["application\/json"],"produces":["application\/json"],"tags":["vcs"],"description":"","responses":{"200":{"description":"ProviderRepository","schema":{"$ref":"#\/definitions\/providerRepository"}}},"x-appwrite":{"method":"getRepository","weight":245,"cookies":false,"type":"","demo":"vcs\/get-repository.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"type":"string","x-example":"[INSTALLATION_ID]","in":"path"},{"name":"providerRepositoryId","description":"Repository Id","required":true,"type":"string","x-example":"[PROVIDER_REPOSITORY_ID]","in":"path"}]}},"\/vcs\/github\/installations\/{installationId}\/providerRepositories\/{providerRepositoryId}\/branches":{"get":{"summary":"List Repository Branches","operationId":"vcsListRepositoryBranches","consumes":["application\/json"],"produces":["application\/json"],"tags":["vcs"],"description":"","responses":{"200":{"description":"Branches List","schema":{"$ref":"#\/definitions\/branchList"}}},"x-appwrite":{"method":"listRepositoryBranches","weight":246,"cookies":false,"type":"","demo":"vcs\/list-repository-branches.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"type":"string","x-example":"[INSTALLATION_ID]","in":"path"},{"name":"providerRepositoryId","description":"Repository Id","required":true,"type":"string","x-example":"[PROVIDER_REPOSITORY_ID]","in":"path"}]}},"\/vcs\/github\/installations\/{installationId}\/providerRepositories\/{providerRepositoryId}\/detection":{"post":{"summary":"Detect runtime settings from source code","operationId":"vcsCreateRepositoryDetection","consumes":["application\/json"],"produces":["application\/json"],"tags":["vcs"],"description":"","responses":{"200":{"description":"Detection","schema":{"$ref":"#\/definitions\/detection"}}},"x-appwrite":{"method":"createRepositoryDetection","weight":242,"cookies":false,"type":"","demo":"vcs\/create-repository-detection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"type":"string","x-example":"[INSTALLATION_ID]","in":"path"},{"name":"providerRepositoryId","description":"Repository Id","required":true,"type":"string","x-example":"[PROVIDER_REPOSITORY_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerRootDirectory":{"type":"string","description":"Path to Root Directory","default":"","x-example":"[PROVIDER_ROOT_DIRECTORY]"}}}}]}},"\/vcs\/github\/installations\/{installationId}\/repositories\/{repositoryId}":{"patch":{"summary":"Authorize external deployment","operationId":"vcsUpdateExternalDeployments","consumes":["application\/json"],"produces":[],"tags":["vcs"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"updateExternalDeployments","weight":251,"cookies":false,"type":"","demo":"vcs\/update-external-deployments.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"type":"string","x-example":"[INSTALLATION_ID]","in":"path"},{"name":"repositoryId","description":"VCS Repository Id","required":true,"type":"string","x-example":"[REPOSITORY_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerPullRequestId":{"type":"string","description":"GitHub Pull Request Id","default":null,"x-example":"[PROVIDER_PULL_REQUEST_ID]"}},"required":["providerPullRequestId"]}}]}},"\/vcs\/installations":{"get":{"summary":"List installations","operationId":"vcsListInstallations","consumes":["application\/json"],"produces":["application\/json"],"tags":["vcs"],"description":"","responses":{"200":{"description":"Installations List","schema":{"$ref":"#\/definitions\/installationList"}}},"x-appwrite":{"method":"listInstallations","weight":248,"cookies":false,"type":"","demo":"vcs\/list-installations.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/vcs\/list-installations.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: provider, organization","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]}},"\/vcs\/installations\/{installationId}":{"get":{"summary":"Get installation","operationId":"vcsGetInstallation","consumes":["application\/json"],"produces":["application\/json"],"tags":["vcs"],"description":"","responses":{"200":{"description":"Installation","schema":{"$ref":"#\/definitions\/installation"}}},"x-appwrite":{"method":"getInstallation","weight":249,"cookies":false,"type":"","demo":"vcs\/get-installation.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/vcs\/get-installation.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"type":"string","x-example":"[INSTALLATION_ID]","in":"path"}]},"delete":{"summary":"Delete Installation","operationId":"vcsDeleteInstallation","consumes":["application\/json"],"produces":[],"tags":["vcs"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteInstallation","weight":250,"cookies":false,"type":"","demo":"vcs\/delete-installation.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/vcs\/delete-installation.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"type":"string","x-example":"[INSTALLATION_ID]","in":"path"}]}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"project","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]},{"name":"proxy","description":"The Proxy Service allows you to configure actions for your domains beyond DNS configuration.","x-globalAttributes":[]},{"name":"graphql","description":"The GraphQL API allows you to query and mutate your Appwrite server using GraphQL.","x-globalAttributes":[]},{"name":"console","description":"The Console service allows you to interact with console relevant informations.","x-globalAttributes":[]},{"name":"migrations","description":"The Migrations service allows you to migrate third-party data to your Appwrite project.","x-globalAttributes":[]},{"name":"messaging","description":"The Messaging service allows you to send messages to any provider type (SMTP, push notification, SMS, etc.).","x-globalAttributes":[]}],"definitions":{"any":{"description":"Any","type":"object","additionalProperties":true},"documentList":{"description":"Documents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of documents documents that matched your query.","x-example":5,"format":"int32"},"documents":{"type":"array","description":"List of documents.","items":{"type":"object","$ref":"#\/definitions\/document"},"x-example":""}},"required":["total","documents"]},"collectionList":{"description":"Collections List","type":"object","properties":{"total":{"type":"integer","description":"Total number of collections documents that matched your query.","x-example":5,"format":"int32"},"collections":{"type":"array","description":"List of collections.","items":{"type":"object","$ref":"#\/definitions\/collection"},"x-example":""}},"required":["total","collections"]},"databaseList":{"description":"Databases List","type":"object","properties":{"total":{"type":"integer","description":"Total number of databases documents that matched your query.","x-example":5,"format":"int32"},"databases":{"type":"array","description":"List of databases.","items":{"type":"object","$ref":"#\/definitions\/database"},"x-example":""}},"required":["total","databases"]},"indexList":{"description":"Indexes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of indexes documents that matched your query.","x-example":5,"format":"int32"},"indexes":{"type":"array","description":"List of indexes.","items":{"type":"object","$ref":"#\/definitions\/index"},"x-example":""}},"required":["total","indexes"]},"userList":{"description":"Users List","type":"object","properties":{"total":{"type":"integer","description":"Total number of users documents that matched your query.","x-example":5,"format":"int32"},"users":{"type":"array","description":"List of users.","items":{"type":"object","$ref":"#\/definitions\/user"},"x-example":""}},"required":["total","users"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of sessions documents that matched your query.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"type":"object","$ref":"#\/definitions\/session"},"x-example":""}},"required":["total","sessions"]},"identityList":{"description":"Identities List","type":"object","properties":{"total":{"type":"integer","description":"Total number of identities documents that matched your query.","x-example":5,"format":"int32"},"identities":{"type":"array","description":"List of identities.","items":{"type":"object","$ref":"#\/definitions\/identity"},"x-example":""}},"required":["total","identities"]},"logList":{"description":"Logs List","type":"object","properties":{"total":{"type":"integer","description":"Total number of logs documents that matched your query.","x-example":5,"format":"int32"},"logs":{"type":"array","description":"List of logs.","items":{"type":"object","$ref":"#\/definitions\/log"},"x-example":""}},"required":["total","logs"]},"fileList":{"description":"Files List","type":"object","properties":{"total":{"type":"integer","description":"Total number of files documents that matched your query.","x-example":5,"format":"int32"},"files":{"type":"array","description":"List of files.","items":{"type":"object","$ref":"#\/definitions\/file"},"x-example":""}},"required":["total","files"]},"bucketList":{"description":"Buckets List","type":"object","properties":{"total":{"type":"integer","description":"Total number of buckets documents that matched your query.","x-example":5,"format":"int32"},"buckets":{"type":"array","description":"List of buckets.","items":{"type":"object","$ref":"#\/definitions\/bucket"},"x-example":""}},"required":["total","buckets"]},"teamList":{"description":"Teams List","type":"object","properties":{"total":{"type":"integer","description":"Total number of teams documents that matched your query.","x-example":5,"format":"int32"},"teams":{"type":"array","description":"List of teams.","items":{"type":"object","$ref":"#\/definitions\/team"},"x-example":""}},"required":["total","teams"]},"membershipList":{"description":"Memberships List","type":"object","properties":{"total":{"type":"integer","description":"Total number of memberships documents that matched your query.","x-example":5,"format":"int32"},"memberships":{"type":"array","description":"List of memberships.","items":{"type":"object","$ref":"#\/definitions\/membership"},"x-example":""}},"required":["total","memberships"]},"functionList":{"description":"Functions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of functions documents that matched your query.","x-example":5,"format":"int32"},"functions":{"type":"array","description":"List of functions.","items":{"type":"object","$ref":"#\/definitions\/function"},"x-example":""}},"required":["total","functions"]},"installationList":{"description":"Installations List","type":"object","properties":{"total":{"type":"integer","description":"Total number of installations documents that matched your query.","x-example":5,"format":"int32"},"installations":{"type":"array","description":"List of installations.","items":{"type":"object","$ref":"#\/definitions\/installation"},"x-example":""}},"required":["total","installations"]},"providerRepositoryList":{"description":"Provider Repositories List","type":"object","properties":{"total":{"type":"integer","description":"Total number of providerRepositories documents that matched your query.","x-example":5,"format":"int32"},"providerRepositories":{"type":"array","description":"List of providerRepositories.","items":{"type":"object","$ref":"#\/definitions\/providerRepository"},"x-example":""}},"required":["total","providerRepositories"]},"branchList":{"description":"Branches List","type":"object","properties":{"total":{"type":"integer","description":"Total number of branches documents that matched your query.","x-example":5,"format":"int32"},"branches":{"type":"array","description":"List of branches.","items":{"type":"object","$ref":"#\/definitions\/branch"},"x-example":""}},"required":["total","branches"]},"runtimeList":{"description":"Runtimes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of runtimes documents that matched your query.","x-example":5,"format":"int32"},"runtimes":{"type":"array","description":"List of runtimes.","items":{"type":"object","$ref":"#\/definitions\/runtime"},"x-example":""}},"required":["total","runtimes"]},"deploymentList":{"description":"Deployments List","type":"object","properties":{"total":{"type":"integer","description":"Total number of deployments documents that matched your query.","x-example":5,"format":"int32"},"deployments":{"type":"array","description":"List of deployments.","items":{"type":"object","$ref":"#\/definitions\/deployment"},"x-example":""}},"required":["total","deployments"]},"executionList":{"description":"Executions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of executions documents that matched your query.","x-example":5,"format":"int32"},"executions":{"type":"array","description":"List of executions.","items":{"type":"object","$ref":"#\/definitions\/execution"},"x-example":""}},"required":["total","executions"]},"projectList":{"description":"Projects List","type":"object","properties":{"total":{"type":"integer","description":"Total number of projects documents that matched your query.","x-example":5,"format":"int32"},"projects":{"type":"array","description":"List of projects.","items":{"type":"object","$ref":"#\/definitions\/project"},"x-example":""}},"required":["total","projects"]},"webhookList":{"description":"Webhooks List","type":"object","properties":{"total":{"type":"integer","description":"Total number of webhooks documents that matched your query.","x-example":5,"format":"int32"},"webhooks":{"type":"array","description":"List of webhooks.","items":{"type":"object","$ref":"#\/definitions\/webhook"},"x-example":""}},"required":["total","webhooks"]},"keyList":{"description":"API Keys List","type":"object","properties":{"total":{"type":"integer","description":"Total number of keys documents that matched your query.","x-example":5,"format":"int32"},"keys":{"type":"array","description":"List of keys.","items":{"type":"object","$ref":"#\/definitions\/key"},"x-example":""}},"required":["total","keys"]},"platformList":{"description":"Platforms List","type":"object","properties":{"total":{"type":"integer","description":"Total number of platforms documents that matched your query.","x-example":5,"format":"int32"},"platforms":{"type":"array","description":"List of platforms.","items":{"type":"object","$ref":"#\/definitions\/platform"},"x-example":""}},"required":["total","platforms"]},"countryList":{"description":"Countries List","type":"object","properties":{"total":{"type":"integer","description":"Total number of countries documents that matched your query.","x-example":5,"format":"int32"},"countries":{"type":"array","description":"List of countries.","items":{"type":"object","$ref":"#\/definitions\/country"},"x-example":""}},"required":["total","countries"]},"continentList":{"description":"Continents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of continents documents that matched your query.","x-example":5,"format":"int32"},"continents":{"type":"array","description":"List of continents.","items":{"type":"object","$ref":"#\/definitions\/continent"},"x-example":""}},"required":["total","continents"]},"languageList":{"description":"Languages List","type":"object","properties":{"total":{"type":"integer","description":"Total number of languages documents that matched your query.","x-example":5,"format":"int32"},"languages":{"type":"array","description":"List of languages.","items":{"type":"object","$ref":"#\/definitions\/language"},"x-example":""}},"required":["total","languages"]},"currencyList":{"description":"Currencies List","type":"object","properties":{"total":{"type":"integer","description":"Total number of currencies documents that matched your query.","x-example":5,"format":"int32"},"currencies":{"type":"array","description":"List of currencies.","items":{"type":"object","$ref":"#\/definitions\/currency"},"x-example":""}},"required":["total","currencies"]},"phoneList":{"description":"Phones List","type":"object","properties":{"total":{"type":"integer","description":"Total number of phones documents that matched your query.","x-example":5,"format":"int32"},"phones":{"type":"array","description":"List of phones.","items":{"type":"object","$ref":"#\/definitions\/phone"},"x-example":""}},"required":["total","phones"]},"variableList":{"description":"Variables List","type":"object","properties":{"total":{"type":"integer","description":"Total number of variables documents that matched your query.","x-example":5,"format":"int32"},"variables":{"type":"array","description":"List of variables.","items":{"type":"object","$ref":"#\/definitions\/variable"},"x-example":""}},"required":["total","variables"]},"proxyRuleList":{"description":"Rule List","type":"object","properties":{"total":{"type":"integer","description":"Total number of rules documents that matched your query.","x-example":5,"format":"int32"},"rules":{"type":"array","description":"List of rules.","items":{"type":"object","$ref":"#\/definitions\/proxyRule"},"x-example":""}},"required":["total","rules"]},"localeCodeList":{"description":"Locale codes list","type":"object","properties":{"total":{"type":"integer","description":"Total number of localeCodes documents that matched your query.","x-example":5,"format":"int32"},"localeCodes":{"type":"array","description":"List of localeCodes.","items":{"type":"object","$ref":"#\/definitions\/localeCode"},"x-example":""}},"required":["total","localeCodes"]},"providerList":{"description":"Provider list","type":"object","properties":{"total":{"type":"integer","description":"Total number of providers documents that matched your query.","x-example":5,"format":"int32"},"providers":{"type":"array","description":"List of providers.","items":{"type":"object","$ref":"#\/definitions\/provider"},"x-example":""}},"required":["total","providers"]},"messageList":{"description":"Message list","type":"object","properties":{"total":{"type":"integer","description":"Total number of messages documents that matched your query.","x-example":5,"format":"int32"},"messages":{"type":"array","description":"List of messages.","items":{"type":"object","$ref":"#\/definitions\/message"},"x-example":""}},"required":["total","messages"]},"topicList":{"description":"Topic list","type":"object","properties":{"total":{"type":"integer","description":"Total number of topics documents that matched your query.","x-example":5,"format":"int32"},"topics":{"type":"array","description":"List of topics.","items":{"type":"object","$ref":"#\/definitions\/topic"},"x-example":""}},"required":["total","topics"]},"subscriberList":{"description":"Subscriber list","type":"object","properties":{"total":{"type":"integer","description":"Total number of subscribers documents that matched your query.","x-example":5,"format":"int32"},"subscribers":{"type":"array","description":"List of subscribers.","items":{"type":"object","$ref":"#\/definitions\/subscriber"},"x-example":""}},"required":["total","subscribers"]},"targetList":{"description":"Target list","type":"object","properties":{"total":{"type":"integer","description":"Total number of targets documents that matched your query.","x-example":5,"format":"int32"},"targets":{"type":"array","description":"List of targets.","items":{"type":"object","$ref":"#\/definitions\/target"},"x-example":""}},"required":["total","targets"]},"migrationList":{"description":"Migrations List","type":"object","properties":{"total":{"type":"integer","description":"Total number of migrations documents that matched your query.","x-example":5,"format":"int32"},"migrations":{"type":"array","description":"List of migrations.","items":{"type":"object","$ref":"#\/definitions\/migration"},"x-example":""}},"required":["total","migrations"]},"firebaseProjectList":{"description":"Migrations Firebase Projects List","type":"object","properties":{"total":{"type":"integer","description":"Total number of projects documents that matched your query.","x-example":5,"format":"int32"},"projects":{"type":"array","description":"List of projects.","items":{"type":"object","$ref":"#\/definitions\/firebaseProject"},"x-example":""}},"required":["total","projects"]},"database":{"description":"Database","type":"object","properties":{"$id":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Database name.","x-example":"My Database"},"$createdAt":{"type":"string","description":"Database creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Database update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"enabled":{"type":"boolean","description":"If database is enabled. Can be 'enabled' or 'disabled'. When disabled, the database is inaccessible to users, but remains accessible to Server SDKs using API keys.","x-example":false}},"required":["$id","name","$createdAt","$updatedAt","enabled"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Collection creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Collection update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Collection permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled. Can be 'enabled' or 'disabled'. When disabled, the collection is inaccessible to users, but remains accessible to Server SDKs using API keys.","x-example":false},"documentSecurity":{"type":"boolean","description":"Whether document-level permissions are enabled. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":true},"attributes":{"type":"array","description":"Collection attributes.","items":{"x-anyOf":[{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeRelationship"},{"$ref":"#\/definitions\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"type":"object","$ref":"#\/definitions\/index"},"x-example":{}}},"required":["$id","$createdAt","$updatedAt","$permissions","databaseId","name","enabled","documentSecurity","attributes","indexes"]},"attributeList":{"description":"Attributes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of attributes in the given collection.","x-example":5,"format":"int32"},"attributes":{"type":"array","description":"List of attributes.","items":{"x-anyOf":[{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeRelationship"},{"$ref":"#\/definitions\/attributeString"}]},"x-example":""}},"required":["total","attributes"]},"attributeString":{"description":"AttributeString","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"fullName"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"size":{"type":"integer","description":"Attribute size.","x-example":128,"format":"int32"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"default","x-nullable":true}},"required":["key","type","status","error","required","size"]},"attributeInteger":{"description":"AttributeInteger","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"count"},"type":{"type":"string","description":"Attribute type.","x-example":"integer"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"min":{"type":"integer","description":"Minimum value to enforce for new documents.","x-example":1,"format":"int32","x-nullable":true},"max":{"type":"integer","description":"Maximum value to enforce for new documents.","x-example":10,"format":"int32","x-nullable":true},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":10,"format":"int32","x-nullable":true}},"required":["key","type","status","error","required"]},"attributeFloat":{"description":"AttributeFloat","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"percentageCompleted"},"type":{"type":"string","description":"Attribute type.","x-example":"double"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"min":{"type":"number","description":"Minimum value to enforce for new documents.","x-example":1.5,"format":"double","x-nullable":true},"max":{"type":"number","description":"Maximum value to enforce for new documents.","x-example":10.5,"format":"double","x-nullable":true},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":2.5,"format":"double","x-nullable":true}},"required":["key","type","status","error","required"]},"attributeBoolean":{"description":"AttributeBoolean","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"isEnabled"},"type":{"type":"string","description":"Attribute type.","x-example":"boolean"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":false,"x-nullable":true}},"required":["key","type","status","error","required"]},"attributeEmail":{"description":"AttributeEmail","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"userEmail"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"format":{"type":"string","description":"String format.","x-example":"email"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"default@example.com","x-nullable":true}},"required":["key","type","status","error","required","format"]},"attributeEnum":{"description":"AttributeEnum","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"status"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"elements":{"type":"array","description":"Array of elements in enumerated type.","items":{"type":"string"},"x-example":"element"},"format":{"type":"string","description":"String format.","x-example":"enum"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"element","x-nullable":true}},"required":["key","type","status","error","required","elements","format"]},"attributeIp":{"description":"AttributeIP","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"ipAddress"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"format":{"type":"string","description":"String format.","x-example":"ip"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"192.0.2.0","x-nullable":true}},"required":["key","type","status","error","required","format"]},"attributeUrl":{"description":"AttributeURL","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"githubUrl"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"format":{"type":"string","description":"String format.","x-example":"url"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"http:\/\/example.com","x-nullable":true}},"required":["key","type","status","error","required","format"]},"attributeDatetime":{"description":"AttributeDatetime","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"birthDay"},"type":{"type":"string","description":"Attribute type.","x-example":"datetime"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"format":{"type":"string","description":"ISO 8601 format.","x-example":"datetime"},"default":{"type":"string","description":"Default value for attribute when not provided. Only null is optional","x-example":"2020-10-15T06:38:00.000+00:00","x-nullable":true}},"required":["key","type","status","error","required","format"]},"attributeRelationship":{"description":"AttributeRelationship","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"fullName"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"relatedCollection":{"type":"string","description":"The ID of the related collection.","x-example":"collection"},"relationType":{"type":"string","description":"The type of the relationship.","x-example":"oneToOne|oneToMany|manyToOne|manyToMany"},"twoWay":{"type":"boolean","description":"Is the relationship two-way?","x-example":false},"twoWayKey":{"type":"string","description":"The key of the two-way relationship.","x-example":"string"},"onDelete":{"type":"string","description":"How deleting the parent document will propagate to child documents.","x-example":"restrict|cascade|setNull"},"side":{"type":"string","description":"Whether this is the parent or child side of the relationship","x-example":"parent|child"}},"required":["key","type","status","error","required","relatedCollection","relationType","twoWay","twoWayKey","onDelete","side"]},"index":{"description":"Index","type":"object","properties":{"key":{"type":"string","description":"Index Key.","x-example":"index1"},"type":{"type":"string","description":"Index type.","x-example":"primary"},"status":{"type":"string","description":"Index status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an index.","x-example":"string"},"attributes":{"type":"array","description":"Index attributes.","items":{"type":"string"},"x-example":[]},"orders":{"type":"array","description":"Index orders.","items":{"type":"string"},"x-example":[],"x-nullable":true}},"required":["key","type","status","error","attributes"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"user":{"description":"User","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"password":{"type":"string","description":"Hashed user password.","x-example":"$argon2id$v=19$m=2048,t=4,p=3$aUZjLnliVWRINmFNTWMudg$5S+x+7uA31xFnrHFT47yFwcJeaP0w92L\/4LdgrVRXxE","x-nullable":true},"hash":{"type":"string","description":"Password hashing algorithm.","x-example":"argon2","x-nullable":true},"hashOptions":{"type":"object","description":"Password hashing algorithm configuration.","x-example":{},"items":{"x-oneOf":[{"$ref":"#\/definitions\/algoArgon2"},{"$ref":"#\/definitions\/algoScrypt"},{"$ref":"#\/definitions\/algoScryptModified"},{"$ref":"#\/definitions\/algoBcrypt"},{"$ref":"#\/definitions\/algoPhpass"},{"$ref":"#\/definitions\/algoSha"},{"$ref":"#\/definitions\/algoMd5"}]},"x-nullable":true},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"labels":{"type":"array","description":"Labels for the user.","items":{"type":"string"},"x-example":["vip"]},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"type":"object","$ref":"#\/definitions\/preferences"}},"targets":{"type":"array","description":"A user-owned message receiver. A single user may have multiple e.g. emails, phones, and a browser. Each target is registered with a single provider.","items":{"type":"object","$ref":"#\/definitions\/target"},"x-example":[]},"accessedAt":{"type":"string","description":"Most recent access date in ISO 8601 format. This attribute is only updated again after 24 hours.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","$updatedAt","name","registration","status","labels","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs","targets","accessedAt"]},"algoMd5":{"description":"AlgoMD5","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"md5"}},"required":["type"]},"algoSha":{"description":"AlgoSHA","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"sha"}},"required":["type"]},"algoPhpass":{"description":"AlgoPHPass","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"phpass"}},"required":["type"]},"algoBcrypt":{"description":"AlgoBcrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"bcrypt"}},"required":["type"]},"algoScrypt":{"description":"AlgoScrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scrypt"},"costCpu":{"type":"integer","description":"CPU complexity of computed hash.","x-example":8,"format":"int32"},"costMemory":{"type":"integer","description":"Memory complexity of computed hash.","x-example":14,"format":"int32"},"costParallel":{"type":"integer","description":"Parallelization of computed hash.","x-example":1,"format":"int32"},"length":{"type":"integer","description":"Length used to compute hash.","x-example":64,"format":"int32"}},"required":["type","costCpu","costMemory","costParallel","length"]},"algoScryptModified":{"description":"AlgoScryptModified","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scryptMod"},"salt":{"type":"string","description":"Salt used to compute hash.","x-example":"UxLMreBr6tYyjQ=="},"saltSeparator":{"type":"string","description":"Separator used to compute hash.","x-example":"Bw=="},"signerKey":{"type":"string","description":"Key used to compute hash.","x-example":"XyEKE9RcTDeLEsL\/RjwPDBv\/RqDl8fb3gpYEOQaPihbxf1ZAtSOHCjuAAa7Q3oHpCYhXSN9tizHgVOwn6krflQ=="}},"required":["type","salt","saltSeparator","signerKey"]},"algoArgon2":{"description":"AlgoArgon2","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"argon2"},"memoryCost":{"type":"integer","description":"Memory used to compute hash.","x-example":65536,"format":"int32"},"timeCost":{"type":"integer","description":"Amount of time consumed to compute hash","x-example":4,"format":"int32"},"threads":{"type":"integer","description":"Number of threads used to compute hash.","x-example":3,"format":"int32"}},"required":["type","memoryCost","timeCost","threads"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true},"secret":{"type":"string","description":"Secret used to authenticate the user. Only included if the request was made with an API key","x-example":"5e5bb8c16897e"}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current","secret"]},"identity":{"description":"Identity","type":"object","properties":{"$id":{"type":"string","description":"Identity ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Identity creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Identity update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"provider":{"type":"string","description":"Identity Provider.","x-example":"email"},"providerUid":{"type":"string","description":"ID of the User in the Identity Provider.","x-example":"5e5bb8c16897e"},"providerEmail":{"type":"string","description":"Email of the User in the Identity Provider.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Identity Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Identity Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"}},"required":["$id","$createdAt","$updatedAt","userId","provider","providerUid","providerEmail","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"securityPhrase":{"type":"string","description":"Security phrase of a token. Empty if security phrase was not requested when creating a token. It includes randomly generated phrase which is also sent in the external resource such as email.","x-example":"Golden Fox"}},"required":["$id","$createdAt","userId","secret","expire","securityPhrase"]},"jwt":{"description":"JWT","type":"object","properties":{"jwt":{"type":"string","description":"JWT encoded string.","x-example":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c"}},"required":["jwt"]},"locale":{"description":"Locale","type":"object","properties":{"ip":{"type":"string","description":"User IP address.","x-example":"127.0.0.1"},"countryCode":{"type":"string","description":"Country code in [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) two-character format","x-example":"US"},"country":{"type":"string","description":"Country name. This field support localization.","x-example":"United States"},"continentCode":{"type":"string","description":"Continent code. A two character continent code \"AF\" for Africa, \"AN\" for Antarctica, \"AS\" for Asia, \"EU\" for Europe, \"NA\" for North America, \"OC\" for Oceania, and \"SA\" for South America.","x-example":"NA"},"continent":{"type":"string","description":"Continent name. This field support localization.","x-example":"North America"},"eu":{"type":"boolean","description":"True if country is part of the European Union.","x-example":false},"currency":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format","x-example":"USD"}},"required":["ip","countryCode","country","continentCode","continent","eu","currency"]},"localeCode":{"description":"LocaleCode","type":"object","properties":{"code":{"type":"string","description":"Locale codes in [ISO 639-1](https:\/\/en.wikipedia.org\/wiki\/List_of_ISO_639-1_codes)","x-example":"en-us"},"name":{"type":"string","description":"Locale name","x-example":"US"}},"required":["code","name"]},"file":{"description":"File","type":"object","properties":{"$id":{"type":"string","description":"File ID.","x-example":"5e5ea5c16897e"},"bucketId":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Bucket creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Bucket update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Bucket permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"fileSecurity":{"type":"boolean","description":"Whether file-level security is enabled. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":true},"name":{"type":"string","description":"Bucket name.","x-example":"Documents"},"enabled":{"type":"boolean","description":"Bucket enabled.","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size supported.","x-example":100,"format":"int32"},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions.","items":{"type":"string"},"x-example":["jpg","png"]},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Will be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd).","x-example":"gzip"},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$createdAt","$updatedAt","$permissions","fileSecurity","name","enabled","maximumFileSize","allowedFileExtensions","compression","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"},"prefs":{"type":"object","description":"Team preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"type":"object","$ref":"#\/definitions\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","total","prefs"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":["owner"]}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Function creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Function update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"users"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"enabled":{"type":"boolean","description":"Function enabled.","x-example":false},"live":{"type":"boolean","description":"Is the function deployed with the latest configuration? This is set to false if you've changed an environment variables, entrypoint, commands, or other settings that needs redeploy to be applied. When the value is false, redeploy the function to update it with the latest configuration.","x-example":false},"logging":{"type":"boolean","description":"Whether executions will be logged. When set to false, executions will not be logged, but will reduce resource used by your Appwrite project.","x-example":false},"runtime":{"type":"string","description":"Function execution runtime.","x-example":"python-3.8"},"deployment":{"type":"string","description":"Function's active deployment ID.","x-example":"5e5ea5c16897e"},"vars":{"type":"array","description":"Function variables.","items":{"type":"object","$ref":"#\/definitions\/variable"},"x-example":[]},"events":{"type":"array","description":"Function trigger events.","items":{"type":"string"},"x-example":"account.create"},"schedule":{"type":"string","description":"Function execution schedult in CRON format.","x-example":"5 4 * * *"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":300,"format":"int32"},"entrypoint":{"type":"string","description":"The entrypoint file used to execute the deployment.","x-example":"index.js"},"commands":{"type":"string","description":"The build command used to build the deployment.","x-example":"npm install"},"version":{"type":"string","description":"Version of Open Runtimes used for the function.","x-example":"v2"},"installationId":{"type":"string","description":"Function VCS (Version Control System) installation id.","x-example":"6m40at4ejk5h2u9s1hboo"},"providerRepositoryId":{"type":"string","description":"VCS (Version Control System) Repository ID","x-example":"appwrite"},"providerBranch":{"type":"string","description":"VCS (Version Control System) branch name","x-example":"main"},"providerRootDirectory":{"type":"string","description":"Path to function in VCS (Version Control System) repository","x-example":"functions\/helloWorld"},"providerSilentMode":{"type":"boolean","description":"Is VCS (Version Control System) connection is in silent mode? When in silence mode, no comments will be posted on the repository pull or merge requests","x-example":false}},"required":["$id","$createdAt","$updatedAt","execute","name","enabled","live","logging","runtime","deployment","vars","events","schedule","timeout","entrypoint","commands","version","installationId","providerRepositoryId","providerBranch","providerRootDirectory","providerSilentMode"]},"installation":{"description":"Installation","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Function creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Function update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"VCS (Version Control System) provider name.","x-example":"github"},"organization":{"type":"string","description":"VCS (Version Control System) organization name.","x-example":"appwrite"},"providerInstallationId":{"type":"string","description":"VCS (Version Control System) installation ID.","x-example":"5322"}},"required":["$id","$createdAt","$updatedAt","provider","organization","providerInstallationId"]},"providerRepository":{"description":"ProviderRepository","type":"object","properties":{"id":{"type":"string","description":"VCS (Version Control System) repository ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"VCS (Version Control System) repository name.","x-example":"appwrite"},"organization":{"type":"string","description":"VCS (Version Control System) organization name","x-example":"appwrite"},"provider":{"type":"string","description":"VCS (Version Control System) provider name.","x-example":"github"},"private":{"type":"boolean","description":"Is VCS (Version Control System) repository private?","x-example":true},"runtime":{"type":"string","description":"Auto-detected runtime suggestion. Empty if getting response of getRuntime().","x-example":"node"},"pushedAt":{"type":"string","description":"Last commit date in ISO 8601 format.","x-example":"datetime"}},"required":["id","name","organization","provider","private","runtime","pushedAt"]},"detection":{"description":"Detection","type":"object","properties":{"runtime":{"type":"string","description":"Runtime","x-example":"node"}},"required":["runtime"]},"branch":{"description":"Branch","type":"object","properties":{"name":{"type":"string","description":"Branch Name.","x-example":"main"}},"required":["name"]},"runtime":{"description":"Runtime","type":"object","properties":{"$id":{"type":"string","description":"Runtime ID.","x-example":"python-3.8"},"name":{"type":"string","description":"Runtime Name.","x-example":"Python"},"version":{"type":"string","description":"Runtime version.","x-example":"3.8"},"base":{"type":"string","description":"Base Docker image used to build the runtime.","x-example":"python:3.8-alpine"},"image":{"type":"string","description":"Image name of Docker Hub.","x-example":"appwrite\\\/runtime-for-python:3.8"},"logo":{"type":"string","description":"Name of the logo image.","x-example":"python.png"},"supports":{"type":"array","description":"List of supported architectures.","items":{"type":"string"},"x-example":"amd64"}},"required":["$id","name","version","base","image","logo","supports"]},"deployment":{"description":"Deployment","type":"object","properties":{"$id":{"type":"string","description":"Deployment ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Deployment creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Deployment update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"type":{"type":"string","description":"Type of deployment.","x-example":"vcs"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"index.js"},"size":{"type":"integer","description":"The code size in bytes.","x-example":128,"format":"int32"},"buildId":{"type":"string","description":"The current build ID.","x-example":"5e5ea5c16897e"},"activate":{"type":"boolean","description":"Whether the deployment should be automatically activated.","x-example":true},"status":{"type":"string","description":"The deployment status. Possible values are \"processing\", \"building\", \"waiting\", \"ready\", and \"failed\".","x-example":"ready"},"buildLogs":{"type":"string","description":"The build logs.","x-example":"Compiling source files..."},"buildTime":{"type":"integer","description":"The current build time in seconds.","x-example":128,"format":"int32"},"providerRepositoryName":{"type":"string","description":"The name of the vcs provider repository","x-example":"database"},"providerRepositoryOwner":{"type":"string","description":"The name of the vcs provider repository owner","x-example":"utopia"},"providerRepositoryUrl":{"type":"string","description":"The url of the vcs provider repository","x-example":"https:\/\/github.com\/vermakhushboo\/g4-node-function"},"providerBranch":{"type":"string","description":"The branch of the vcs repository","x-example":"0.7.x"},"providerCommitHash":{"type":"string","description":"The commit hash of the vcs commit","x-example":"7c3f25d"},"providerCommitAuthorUrl":{"type":"string","description":"The url of vcs commit author","x-example":"https:\/\/github.com\/vermakhushboo"},"providerCommitAuthor":{"type":"string","description":"The name of vcs commit author","x-example":"Khushboo Verma"},"providerCommitMessage":{"type":"string","description":"The commit message","x-example":"Update index.js"},"providerCommitUrl":{"type":"string","description":"The url of the vcs commit","x-example":"https:\/\/github.com\/vermakhushboo\/g4-node-function\/commit\/60c0416257a9cbcdd96b2d370c38d8f8d150ccfb"},"providerBranchUrl":{"type":"string","description":"The branch of the vcs repository","x-example":"https:\/\/github.com\/vermakhushboo\/appwrite\/tree\/0.7.x"}},"required":["$id","$createdAt","$updatedAt","type","resourceId","resourceType","entrypoint","size","buildId","activate","status","buildLogs","buildTime","providerRepositoryName","providerRepositoryOwner","providerRepositoryUrl","providerBranch","providerCommitHash","providerCommitAuthorUrl","providerCommitAuthor","providerCommitMessage","providerCommitUrl","providerBranchUrl"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"requestMethod":{"type":"string","description":"HTTP request method type.","x-example":"GET"},"requestPath":{"type":"string","description":"HTTP request path and query.","x-example":"\/articles?id=5"},"requestHeaders":{"type":"array","description":"HTTP response headers as a key-value object. This will return only whitelisted headers. All headers are returned if execution is created as synchronous.","items":{"type":"object","$ref":"#\/definitions\/headers"},"x-example":[{"Content-Type":"application\/json"}]},"responseStatusCode":{"type":"integer","description":"HTTP response status code.","x-example":200,"format":"int32"},"responseBody":{"type":"string","description":"HTTP response body. This will return empty unless execution is created as synchronous.","x-example":"Developers are awesome."},"responseHeaders":{"type":"array","description":"HTTP response headers as a key-value object. This will return only whitelisted headers. All headers are returned if execution is created as synchronous.","items":{"type":"object","$ref":"#\/definitions\/headers"},"x-example":[{"Content-Type":"application\/json"}]},"logs":{"type":"string","description":"Function logs. Includes the last 4,000 characters. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"errors":{"type":"string","description":"Function errors. Includes the last 4,000 characters. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"Function execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","requestMethod","requestPath","requestHeaders","responseStatusCode","responseBody","responseHeaders","logs","errors","duration"]},"project":{"description":"Project","type":"object","properties":{"$id":{"type":"string","description":"Project ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Project creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Project update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Project name.","x-example":"New Project"},"description":{"type":"string","description":"Project description.","x-example":"This is a new project."},"teamId":{"type":"string","description":"Project team ID.","x-example":"1592981250"},"logo":{"type":"string","description":"Project logo file ID.","x-example":"5f5c451b403cb"},"url":{"type":"string","description":"Project website URL.","x-example":"5f5c451b403cb"},"legalName":{"type":"string","description":"Company legal name.","x-example":"Company LTD."},"legalCountry":{"type":"string","description":"Country code in [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) two-character format.","x-example":"US"},"legalState":{"type":"string","description":"State name.","x-example":"New York"},"legalCity":{"type":"string","description":"City name.","x-example":"New York City."},"legalAddress":{"type":"string","description":"Company Address.","x-example":"620 Eighth Avenue, New York, NY 10018"},"legalTaxId":{"type":"string","description":"Company Tax ID.","x-example":"131102020"},"authDuration":{"type":"integer","description":"Session duration in seconds.","x-example":60,"format":"int32"},"authLimit":{"type":"integer","description":"Max users allowed. 0 is unlimited.","x-example":100,"format":"int32"},"authSessionsLimit":{"type":"integer","description":"Max sessions allowed per user. 100 maximum.","x-example":10,"format":"int32"},"authPasswordHistory":{"type":"integer","description":"Max allowed passwords in the history list per user. Max passwords limit allowed in history is 20. Use 0 for disabling password history.","x-example":5,"format":"int32"},"authPasswordDictionary":{"type":"boolean","description":"Whether or not to check user's password against most commonly used passwords.","x-example":true},"authPersonalDataCheck":{"type":"boolean","description":"Whether or not to check the user password for similarity with their personal data.","x-example":true},"oAuthProviders":{"type":"array","description":"List of Auth Providers.","items":{"type":"object","$ref":"#\/definitions\/authProvider"},"x-example":[{}]},"platforms":{"type":"array","description":"List of Platforms.","items":{"type":"object","$ref":"#\/definitions\/platform"},"x-example":{}},"webhooks":{"type":"array","description":"List of Webhooks.","items":{"type":"object","$ref":"#\/definitions\/webhook"},"x-example":{}},"keys":{"type":"array","description":"List of API Keys.","items":{"type":"object","$ref":"#\/definitions\/key"},"x-example":{}},"smtpEnabled":{"type":"boolean","description":"Status for custom SMTP","x-example":false},"smtpSenderName":{"type":"string","description":"SMTP sender name","x-example":"John Appwrite"},"smtpSenderEmail":{"type":"string","description":"SMTP sender email","x-example":"john@appwrite.io"},"smtpReplyTo":{"type":"string","description":"SMTP reply to email","x-example":"support@appwrite.io"},"smtpHost":{"type":"string","description":"SMTP server host name","x-example":"mail.appwrite.io"},"smtpPort":{"type":"integer","description":"SMTP server port","x-example":25,"format":"int32"},"smtpUsername":{"type":"string","description":"SMTP server username","x-example":"emailuser"},"smtpPassword":{"type":"string","description":"SMTP server password","x-example":"securepassword"},"smtpSecure":{"type":"string","description":"SMTP server secure protocol","x-example":"tls"},"authEmailPassword":{"type":"boolean","description":"Email\/Password auth method status","x-example":true},"authUsersAuthMagicURL":{"type":"boolean","description":"Magic URL auth method status","x-example":true},"authAnonymous":{"type":"boolean","description":"Anonymous auth method status","x-example":true},"authInvites":{"type":"boolean","description":"Invites auth method status","x-example":true},"authJWT":{"type":"boolean","description":"JWT auth method status","x-example":true},"authPhone":{"type":"boolean","description":"Phone auth method status","x-example":true},"serviceStatusForAccount":{"type":"boolean","description":"Account service status","x-example":true},"serviceStatusForAvatars":{"type":"boolean","description":"Avatars service status","x-example":true},"serviceStatusForDatabases":{"type":"boolean","description":"Databases service status","x-example":true},"serviceStatusForLocale":{"type":"boolean","description":"Locale service status","x-example":true},"serviceStatusForHealth":{"type":"boolean","description":"Health service status","x-example":true},"serviceStatusForStorage":{"type":"boolean","description":"Storage service status","x-example":true},"serviceStatusForTeams":{"type":"boolean","description":"Teams service status","x-example":true},"serviceStatusForUsers":{"type":"boolean","description":"Users service status","x-example":true},"serviceStatusForFunctions":{"type":"boolean","description":"Functions service status","x-example":true},"serviceStatusForGraphql":{"type":"boolean","description":"GraphQL service status","x-example":true},"serviceStatusForMessaging":{"type":"boolean","description":"Messaging service status","x-example":true}},"required":["$id","$createdAt","$updatedAt","name","description","teamId","logo","url","legalName","legalCountry","legalState","legalCity","legalAddress","legalTaxId","authDuration","authLimit","authSessionsLimit","authPasswordHistory","authPasswordDictionary","authPersonalDataCheck","oAuthProviders","platforms","webhooks","keys","smtpEnabled","smtpSenderName","smtpSenderEmail","smtpReplyTo","smtpHost","smtpPort","smtpUsername","smtpPassword","smtpSecure","authEmailPassword","authUsersAuthMagicURL","authAnonymous","authInvites","authJWT","authPhone","serviceStatusForAccount","serviceStatusForAvatars","serviceStatusForDatabases","serviceStatusForLocale","serviceStatusForHealth","serviceStatusForStorage","serviceStatusForTeams","serviceStatusForUsers","serviceStatusForFunctions","serviceStatusForGraphql","serviceStatusForMessaging"]},"webhook":{"description":"Webhook","type":"object","properties":{"$id":{"type":"string","description":"Webhook ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Webhook creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Webhook update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Webhook name.","x-example":"My Webhook"},"url":{"type":"string","description":"Webhook URL endpoint.","x-example":"https:\/\/example.com\/webhook"},"events":{"type":"array","description":"Webhook trigger events.","items":{"type":"string"},"x-example":"database.collections.update"},"security":{"type":"boolean","description":"Indicated if SSL \/ TLS Certificate verification is enabled.","x-example":true},"httpUser":{"type":"string","description":"HTTP basic authentication username.","x-example":"username"},"httpPass":{"type":"string","description":"HTTP basic authentication password.","x-example":"password"},"signatureKey":{"type":"string","description":"Signature key which can be used to validated incoming","x-example":"ad3d581ca230e2b7059c545e5a"}},"required":["$id","$createdAt","$updatedAt","name","url","events","security","httpUser","httpPass","signatureKey"]},"key":{"description":"Key","type":"object","properties":{"$id":{"type":"string","description":"Key ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Key creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Key update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Key name.","x-example":"My API Key"},"expire":{"type":"string","description":"Key expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"scopes":{"type":"array","description":"Allowed permission scopes.","items":{"type":"string"},"x-example":"users.read"},"secret":{"type":"string","description":"Secret key.","x-example":"919c2d18fb5d4...a2ae413da83346ad2"},"accessedAt":{"type":"string","description":"Most recent access date in ISO 8601 format. This attribute is only updated again after 24 hours.","x-example":"2020-10-15T06:38:00.000+00:00"},"sdks":{"type":"array","description":"List of SDK user agents that used this key.","items":{"type":"string"},"x-example":"appwrite:flutter"}},"required":["$id","$createdAt","$updatedAt","name","expire","scopes","secret","accessedAt","sdks"]},"authProvider":{"description":"AuthProvider","type":"object","properties":{"key":{"type":"string","description":"Auth Provider.","x-example":"github"},"name":{"type":"string","description":"Auth Provider name.","x-example":"GitHub"},"appId":{"type":"string","description":"OAuth 2.0 application ID.","x-example":"259125845563242502"},"secret":{"type":"string","description":"OAuth 2.0 application secret. Might be JSON string if provider requires extra configuration.","x-example":"Bpw_g9c2TGXxfgLshDbSaL8tsCcqgczQ"},"enabled":{"type":"boolean","description":"Auth Provider is active and can be used to create session.","x-example":""}},"required":["key","name","appId","secret","enabled"]},"platform":{"description":"Platform","type":"object","properties":{"$id":{"type":"string","description":"Platform ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Platform creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Platform update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Platform name.","x-example":"My Web App"},"type":{"type":"string","description":"Platform type. Possible values are: web, flutter-web, flutter-ios, flutter-android, ios, android, and unity.","x-example":"web"},"key":{"type":"string","description":"Platform Key. iOS bundle ID or Android package name. Empty string for other platforms.","x-example":"com.company.appname"},"store":{"type":"string","description":"App store or Google Play store ID.","x-example":""},"hostname":{"type":"string","description":"Web app hostname. Empty string for other platforms.","x-example":true},"httpUser":{"type":"string","description":"HTTP basic authentication username.","x-example":"username"},"httpPass":{"type":"string","description":"HTTP basic authentication password.","x-example":"password"}},"required":["$id","$createdAt","$updatedAt","name","type","key","store","hostname","httpUser","httpPass"]},"variable":{"description":"Variable","type":"object","properties":{"$id":{"type":"string","description":"Variable ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"key":{"type":"string","description":"Variable key.","x-example":"API_KEY"},"value":{"type":"string","description":"Variable value.","x-example":"myPa$$word1"},"resourceType":{"type":"string","description":"Service to which the variable belongs. Possible values are \"project\", \"function\"","x-example":"function"},"resourceId":{"type":"string","description":"ID of resource to which the variable belongs. If resourceType is \"project\", it is empty. If resourceType is \"function\", it is ID of the function.","x-example":"myAwesomeFunction"}},"required":["$id","$createdAt","$updatedAt","key","value","resourceType","resourceId"]},"country":{"description":"Country","type":"object","properties":{"name":{"type":"string","description":"Country name.","x-example":"United States"},"code":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"}},"required":["name","code"]},"continent":{"description":"Continent","type":"object","properties":{"name":{"type":"string","description":"Continent name.","x-example":"Europe"},"code":{"type":"string","description":"Continent two letter code.","x-example":"EU"}},"required":["name","code"]},"language":{"description":"Language","type":"object","properties":{"name":{"type":"string","description":"Language name.","x-example":"Italian"},"code":{"type":"string","description":"Language two-character ISO 639-1 codes.","x-example":"it"},"nativeName":{"type":"string","description":"Language native name.","x-example":"Italiano"}},"required":["name","code","nativeName"]},"currency":{"description":"Currency","type":"object","properties":{"symbol":{"type":"string","description":"Currency symbol.","x-example":"$"},"name":{"type":"string","description":"Currency name.","x-example":"US dollar"},"symbolNative":{"type":"string","description":"Currency native symbol.","x-example":"$"},"decimalDigits":{"type":"integer","description":"Number of decimal digits.","x-example":2,"format":"int32"},"rounding":{"type":"number","description":"Currency digit rounding.","x-example":0,"format":"double"},"code":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format.","x-example":"USD"},"namePlural":{"type":"string","description":"Currency plural name","x-example":"US dollars"}},"required":["symbol","name","symbolNative","decimalDigits","rounding","code","namePlural"]},"phone":{"description":"Phone","type":"object","properties":{"code":{"type":"string","description":"Phone code.","x-example":"+1"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["code","countryCode","countryName"]},"healthAntivirus":{"description":"Health Antivirus","type":"object","properties":{"version":{"type":"string","description":"Antivirus version.","x-example":"1.0.0"},"status":{"type":"string","description":"Antivirus status. Possible values can are: `disabled`, `offline`, `online`","x-example":"online"}},"required":["version","status"]},"healthQueue":{"description":"Health Queue","type":"object","properties":{"size":{"type":"integer","description":"Amount of actions in the queue.","x-example":8,"format":"int32"}},"required":["size"]},"healthStatus":{"description":"Health Status","type":"object","properties":{"name":{"type":"string","description":"Name of the service.","x-example":"database"},"ping":{"type":"integer","description":"Duration in milliseconds how long the health check took.","x-example":128,"format":"int32"},"status":{"type":"string","description":"Service status. Possible values can are: `pass`, `fail`","x-example":"pass"}},"required":["name","ping","status"]},"healthTime":{"description":"Health Time","type":"object","properties":{"remoteTime":{"type":"integer","description":"Current unix timestamp on trustful remote server.","x-example":1639490751,"format":"int32"},"localTime":{"type":"integer","description":"Current unix timestamp of local server where Appwrite runs.","x-example":1639490844,"format":"int32"},"diff":{"type":"integer","description":"Difference of unix remote and local timestamps in milliseconds.","x-example":93,"format":"int32"}},"required":["remoteTime","localTime","diff"]},"metric":{"description":"Metric","type":"object","properties":{"value":{"type":"integer","description":"The value of this metric at the timestamp.","x-example":1,"format":"int32"},"date":{"type":"string","description":"The date at which this metric was aggregated in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["value","date"]},"usageDatabases":{"description":"UsageDatabases","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"databasesCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsCount":{"type":"array","description":"Aggregated stats for total number of collections.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"databasesCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"databasesRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"databasesUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"databasesDelete":{"type":"array","description":"Aggregated stats for total number of collections.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsCreate":{"type":"array","description":"Aggregated stats for collections created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsRead":{"type":"array","description":"Aggregated stats for collections read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsUpdate":{"type":"array","description":"Aggregated stats for collections updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsDelete":{"type":"array","description":"Aggregated stats for collections delete.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","databasesCount","documentsCount","collectionsCount","databasesCreate","databasesRead","databasesUpdate","databasesDelete","documentsCreate","documentsRead","documentsUpdate","documentsDelete","collectionsCreate","collectionsRead","collectionsUpdate","collectionsDelete"]},"usageDatabase":{"description":"UsageDatabase","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"documentsCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsCount":{"type":"array","description":"Aggregated stats for total number of collections.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsCreate":{"type":"array","description":"Aggregated stats for collections created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsRead":{"type":"array","description":"Aggregated stats for collections read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsUpdate":{"type":"array","description":"Aggregated stats for collections updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsDelete":{"type":"array","description":"Aggregated stats for collections delete.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","documentsCount","collectionsCount","documentsCreate","documentsRead","documentsUpdate","documentsDelete","collectionsCreate","collectionsRead","collectionsUpdate","collectionsDelete"]},"usageCollection":{"description":"UsageCollection","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"documentsCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","documentsCount","documentsCreate","documentsRead","documentsUpdate","documentsDelete"]},"usageUsers":{"description":"UsageUsers","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"usersCount":{"type":"array","description":"Aggregated stats for total number of users.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"usersCreate":{"type":"array","description":"Aggregated stats for users created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"usersRead":{"type":"array","description":"Aggregated stats for users read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"usersUpdate":{"type":"array","description":"Aggregated stats for users updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"usersDelete":{"type":"array","description":"Aggregated stats for users deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"sessionsCreate":{"type":"array","description":"Aggregated stats for sessions created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"sessionsProviderCreate":{"type":"array","description":"Aggregated stats for sessions created for a provider ( email, anonymous or oauth2 ).","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"sessionsDelete":{"type":"array","description":"Aggregated stats for sessions deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","usersCount","usersCreate","usersRead","usersUpdate","usersDelete","sessionsCreate","sessionsProviderCreate","sessionsDelete"]},"usageStorage":{"description":"StorageUsage","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"storage":{"type":"array","description":"Aggregated stats for the occupied storage size (in bytes).","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesCount":{"type":"array","description":"Aggregated stats for total number of files.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"bucketsCount":{"type":"array","description":"Aggregated stats for total number of buckets.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"bucketsCreate":{"type":"array","description":"Aggregated stats for buckets created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"bucketsRead":{"type":"array","description":"Aggregated stats for buckets read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"bucketsUpdate":{"type":"array","description":"Aggregated stats for buckets updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"bucketsDelete":{"type":"array","description":"Aggregated stats for buckets deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesCreate":{"type":"array","description":"Aggregated stats for files created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesRead":{"type":"array","description":"Aggregated stats for files read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesUpdate":{"type":"array","description":"Aggregated stats for files updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesDelete":{"type":"array","description":"Aggregated stats for files deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","storage","filesCount","bucketsCount","bucketsCreate","bucketsRead","bucketsUpdate","bucketsDelete","filesCreate","filesRead","filesUpdate","filesDelete"]},"usageBuckets":{"description":"UsageBuckets","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"filesCount":{"type":"array","description":"Aggregated stats for total number of files in this bucket.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesStorage":{"type":"array","description":"Aggregated stats for total storage of files in this bucket.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesCreate":{"type":"array","description":"Aggregated stats for files created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesRead":{"type":"array","description":"Aggregated stats for files read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesUpdate":{"type":"array","description":"Aggregated stats for files updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesDelete":{"type":"array","description":"Aggregated stats for files deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","filesCount","filesStorage","filesCreate","filesRead","filesUpdate","filesDelete"]},"usageFunctions":{"description":"UsageFunctions","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"executionsTotal":{"type":"array","description":"Aggregated stats for number of function executions.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"executionsFailure":{"type":"array","description":"Aggregated stats for function execution failures.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"executionsSuccess":{"type":"array","description":"Aggregated stats for function execution successes.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"executionsTime":{"type":"array","description":"Aggregated stats for function execution duration.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"buildsTotal":{"type":"array","description":"Aggregated stats for number of function builds.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"buildsFailure":{"type":"array","description":"Aggregated stats for function build failures.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"buildsSuccess":{"type":"array","description":"Aggregated stats for function build successes.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"buildsTime":{"type":"array","description":"Aggregated stats for function build duration.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","executionsTotal","executionsFailure","executionsSuccess","executionsTime","buildsTotal","buildsFailure","buildsSuccess","buildsTime"]},"usageProject":{"description":"UsageProject","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"requests":{"type":"array","description":"Aggregated stats for number of requests.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"network":{"type":"array","description":"Aggregated stats for consumed bandwidth.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"executions":{"type":"array","description":"Aggregated stats for function executions.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documents":{"type":"array","description":"Aggregated stats for number of documents.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"databases":{"type":"array","description":"Aggregated stats for number of databases.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"users":{"type":"array","description":"Aggregated stats for number of users.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"storage":{"type":"array","description":"Aggregated stats for the occupied storage size (in bytes).","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"buckets":{"type":"array","description":"Aggregated stats for number of buckets.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","requests","network","executions","documents","databases","users","storage","buckets"]},"headers":{"description":"Headers","type":"object","properties":{"name":{"type":"string","description":"Header name.","x-example":"Content-Type"},"value":{"type":"string","description":"Header value.","x-example":"application\/json"}},"required":["name","value"]},"proxyRule":{"description":"Rule","type":"object","properties":{"$id":{"type":"string","description":"Rule ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Rule creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Rule update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"domain":{"type":"string","description":"Domain name.","x-example":"appwrite.company.com"},"resourceType":{"type":"string","description":"Action definition for the rule. Possible values are \"api\", \"function\", or \"redirect\"","x-example":"function"},"resourceId":{"type":"string","description":"ID of resource for the action type. If resourceType is \"api\" or \"url\", it is empty. If resourceType is \"function\", it is ID of the function.","x-example":"myAwesomeFunction"},"status":{"type":"string","description":"Domain verification status. Possible values are \"created\", \"verifying\", \"verified\" and \"unverified\"","x-example":"verified"},"logs":{"type":"string","description":"Certificate generation logs. This will return an empty string if generation did not run, or succeeded.","x-example":"HTTP challegne failed."},"renewAt":{"type":"string","description":"Certificate auto-renewal date in ISO 8601 format.","x-example":"datetime"}},"required":["$id","$createdAt","$updatedAt","domain","resourceType","resourceId","status","logs","renewAt"]},"smsTemplate":{"description":"SmsTemplate","type":"object","properties":{"type":{"type":"string","description":"Template type","x-example":"verification"},"locale":{"type":"string","description":"Template locale","x-example":"en_us"},"message":{"type":"string","description":"Template message","x-example":"Click on the link to verify your account."}},"required":["type","locale","message"]},"emailTemplate":{"description":"EmailTemplate","type":"object","properties":{"type":{"type":"string","description":"Template type","x-example":"verification"},"locale":{"type":"string","description":"Template locale","x-example":"en_us"},"message":{"type":"string","description":"Template message","x-example":"Click on the link to verify your account."},"senderName":{"type":"string","description":"Name of the sender","x-example":"My User"},"senderEmail":{"type":"string","description":"Email of the sender","x-example":"mail@appwrite.io"},"replyTo":{"type":"string","description":"Reply to email address","x-example":"emails@appwrite.io"},"subject":{"type":"string","description":"Email subject","x-example":"Please verify your email address"}},"required":["type","locale","message","senderName","senderEmail","replyTo","subject"]},"consoleVariables":{"description":"Console Variables","type":"object","properties":{"_APP_DOMAIN_TARGET":{"type":"string","description":"CNAME target for your Appwrite custom domains.","x-example":"appwrite.io"},"_APP_STORAGE_LIMIT":{"type":"integer","description":"Maximum file size allowed for file upload in bytes.","x-example":"30000000","format":"int32"},"_APP_FUNCTIONS_SIZE_LIMIT":{"type":"integer","description":"Maximum file size allowed for deployment in bytes.","x-example":"30000000","format":"int32"},"_APP_USAGE_STATS":{"type":"string","description":"Defines if usage stats are enabled. This value is set to 'enabled' by default, to disable the usage stats set the value to 'disabled'.","x-example":"enabled"},"_APP_VCS_ENABLED":{"type":"boolean","description":"Defines if VCS (Version Control System) is enabled.","x-example":true},"_APP_DOMAIN_ENABLED":{"type":"boolean","description":"Defines if main domain is configured. If so, custom domains can be created.","x-example":true},"_APP_ASSISTANT_ENABLED":{"type":"boolean","description":"Defines if AI assistant is enabled.","x-example":true}},"required":["_APP_DOMAIN_TARGET","_APP_STORAGE_LIMIT","_APP_FUNCTIONS_SIZE_LIMIT","_APP_USAGE_STATS","_APP_VCS_ENABLED","_APP_DOMAIN_ENABLED","_APP_ASSISTANT_ENABLED"]},"provider":{"description":"Provider","type":"object","properties":{"$id":{"type":"string","description":"Provider ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Provider creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Provider update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"The name for the provider instance.","x-example":"Mailgun"},"provider":{"type":"string","description":"The name of the provider service.","x-example":"mailgun"},"enabled":{"type":"boolean","description":"Is provider enabled?","x-example":true},"type":{"type":"string","description":"Type of provider.","x-example":"sms"},"credentials":{"type":"object","additionalProperties":true,"description":"Provider credentials.","x-example":{"key":"123456789"}},"options":{"type":"object","additionalProperties":true,"description":"Provider options.","x-example":{"from":"sender-email@mydomain"}}},"required":["$id","$createdAt","$updatedAt","name","provider","enabled","type","credentials"]},"message":{"description":"Message","type":"object","properties":{"$id":{"type":"string","description":"Message ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Message creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Message update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerType":{"type":"string","description":"Message provider type.","x-example":"email"},"topics":{"type":"array","description":"Topic IDs set as recipients.","items":{"type":"string"},"x-example":["5e5ea5c16897e"]},"users":{"type":"array","description":"User IDs set as recipients.","items":{"type":"string"},"x-example":["5e5ea5c16897e"]},"targets":{"type":"array","description":"Target IDs set as recipients.","items":{"type":"string"},"x-example":["5e5ea5c16897e"]},"scheduledAt":{"type":"string","description":"The scheduled time for message.","x-example":"2020-10-15T06:38:00.000+00:00","x-nullable":true},"deliveredAt":{"type":"string","description":"The time when the message was delivered.","x-example":"2020-10-15T06:38:00.000+00:00","x-nullable":true},"deliveryErrors":{"type":"array","description":"Delivery errors if any.","items":{"type":"string"},"x-example":["Failed to send message to target 5e5ea5c16897e: Credentials not valid."],"x-nullable":true},"deliveredTotal":{"type":"integer","description":"Number of recipients the message was delivered to.","x-example":1,"format":"int32"},"data":{"type":"object","additionalProperties":true,"description":"Data of the message.","x-example":{"subject":"Welcome to Appwrite","content":"Hi there, welcome to Appwrite family."}},"status":{"type":"string","description":"Status of delivery.","x-example":"Message status can be one of the following: processing, sent, cancelled, failed."},"description":{"type":"string","description":"Message description.","x-example":"Welcome Email.","x-nullable":true}},"required":["$id","$createdAt","$updatedAt","providerType","topics","users","targets","deliveredTotal","data","status"]},"topic":{"description":"Topic","type":"object","properties":{"$id":{"type":"string","description":"Topic ID.","x-example":"259125845563242502"},"$createdAt":{"type":"string","description":"Topic creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Topic update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"The name of the topic.","x-example":"events"},"total":{"type":"integer","description":"Total count of subscribers subscribed to topic.","x-example":100,"format":"int32"},"description":{"type":"string","description":"Description of the topic.","x-example":"All events related messages will be sent to this topic.","x-nullable":true}},"required":["$id","$createdAt","$updatedAt","name","total"]},"subscriber":{"description":"Subscriber","type":"object","properties":{"$id":{"type":"string","description":"Subscriber ID.","x-example":"259125845563242502"},"$createdAt":{"type":"string","description":"Subscriber creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Subscriber update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"targetId":{"type":"string","description":"Target ID.","x-example":"259125845563242502"},"target":{"type":"object","description":"Target.","x-example":{"$id":"259125845563242502","$createdAt":"2020-10-15T06:38:00.000+00:00","$updatedAt":"2020-10-15T06:38:00.000+00:00","providerType":"email","providerId":"259125845563242502","name":"ageon-app-email","identifier":"random-mail@email.org","userId":"5e5ea5c16897e"},"items":{"type":"object","$ref":"#\/definitions\/target"}},"userId":{"type":"string","description":"Topic ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User Name.","x-example":"Aegon Targaryen"},"topicId":{"type":"string","description":"Topic ID.","x-example":"259125845563242502"},"providerType":{"type":"string","description":"The target provider type. Can be one of the following: `email`, `sms` or `push`.","x-example":"email"}},"required":["$id","$createdAt","$updatedAt","targetId","target","userId","userName","topicId","providerType"]},"target":{"description":"Target","type":"object","properties":{"$id":{"type":"string","description":"Target ID.","x-example":"259125845563242502"},"$createdAt":{"type":"string","description":"Target creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Target update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Target Name.","x-example":"Aegon apple token"},"userId":{"type":"string","description":"User ID.","x-example":"259125845563242502"},"providerId":{"type":"string","description":"Provider ID.","x-example":"259125845563242502","x-nullable":true},"providerType":{"type":"string","description":"The target provider type. Can be one of the following: `email`, `sms` or `push`.","x-example":"email"},"identifier":{"type":"string","description":"The target identifier.","x-example":"token"}},"required":["$id","$createdAt","$updatedAt","name","userId","providerType","identifier"]},"migration":{"description":"Migration","type":"object","properties":{"$id":{"type":"string","description":"Migration ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"string","description":"Migration status ( pending, processing, failed, completed ) ","x-example":"pending"},"stage":{"type":"string","description":"Migration stage ( init, processing, source-check, destination-check, migrating, finished )","x-example":"init"},"source":{"type":"string","description":"A string containing the type of source of the migration.","x-example":"Appwrite"},"resources":{"type":"array","description":"Resources to migration.","items":{"type":"string"},"x-example":["user"]},"statusCounters":{"type":"object","additionalProperties":true,"description":"A group of counters that represent the total progress of the migration.","x-example":"{\"Database\": {\"PENDING\": 0, \"SUCCESS\": 1, \"ERROR\": 0, \"SKIP\": 0, \"PROCESSING\": 0, \"WARNING\": 0}}"},"resourceData":{"type":"object","additionalProperties":true,"description":"An array of objects containing the report data of the resources that were migrated.","x-example":"[{\"resource\":\"Database\",\"id\":\"public\",\"status\":\"SUCCESS\",\"message\":\"\"}]"},"errors":{"type":"array","description":"All errors that occurred during the migration process.","items":{"type":"string"},"x-example":[]}},"required":["$id","$createdAt","$updatedAt","status","stage","source","resources","statusCounters","resourceData","errors"]},"migrationReport":{"description":"Migration Report","type":"object","properties":{"user":{"type":"integer","description":"Number of users to be migrated.","x-example":20,"format":"int32"},"team":{"type":"integer","description":"Number of teams to be migrated.","x-example":20,"format":"int32"},"database":{"type":"integer","description":"Number of databases to be migrated.","x-example":20,"format":"int32"},"document":{"type":"integer","description":"Number of documents to be migrated.","x-example":20,"format":"int32"},"file":{"type":"integer","description":"Number of files to be migrated.","x-example":20,"format":"int32"},"bucket":{"type":"integer","description":"Number of buckets to be migrated.","x-example":20,"format":"int32"},"function":{"type":"integer","description":"Number of functions to be migrated.","x-example":20,"format":"int32"},"size":{"type":"integer","description":"Size of files to be migrated in mb.","x-example":30000,"format":"int32"},"version":{"type":"string","description":"Version of the Appwrite instance to be migrated.","x-example":"1.4.0"}},"required":["user","team","database","document","file","bucket","function","size","version"]},"firebaseProject":{"description":"MigrationFirebaseProject","type":"object","properties":{"projectId":{"type":"string","description":"Project ID.","x-example":"my-project"},"displayName":{"type":"string","description":"Project display name.","x-example":"My Project"}},"required":["projectId","displayName"]}},"externalDocs":{"description":"Full API docs, specs and tutorials","url":"https:\/\/appwrite.io\/docs"}} \ No newline at end of file +{"swagger":"2.0","info":{"version":"1.4.13","title":"Appwrite","description":"Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https:\/\/appwrite.io\/docs](https:\/\/appwrite.io\/docs)","termsOfService":"https:\/\/appwrite.io\/policy\/terms","contact":{"name":"Appwrite Team","url":"https:\/\/appwrite.io\/support","email":"team@appwrite.io"},"license":{"name":"BSD-3-Clause","url":"https:\/\/raw.githubusercontent.com\/appwrite\/appwrite\/master\/LICENSE"}},"host":"HOSTNAME","basePath":"\/v1","schemes":["https"],"consumes":["application\/json","multipart\/form-data"],"produces":["application\/json"],"securityDefinitions":{"Project":{"type":"apiKey","name":"X-Appwrite-Project","description":"Your project ID","in":"header","x-appwrite":{"demo":"5df5acd0d48c2"}},"Key":{"type":"apiKey","name":"X-Appwrite-Key","description":"Your secret API key","in":"header","x-appwrite":{"demo":"919c2d18fb5d4...a2ae413da83346ad2"}},"JWT":{"type":"apiKey","name":"X-Appwrite-JWT","description":"Your secret JSON Web Token","in":"header","x-appwrite":{"demo":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ..."}},"Locale":{"type":"apiKey","name":"X-Appwrite-Locale","description":"","in":"header","x-appwrite":{"demo":"en"}},"Mode":{"type":"apiKey","name":"X-Appwrite-Mode","description":"","in":"header","x-appwrite":{"demo":""}}},"paths":{"\/account":{"get":{"summary":"Get account","operationId":"accountGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get the currently logged in user.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"get","weight":22,"cookies":false,"type":"","demo":"account\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"post":{"summary":"Create account","operationId":"accountCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to allow a new user to register a new account in your project. After the user registration completes successfully, you can use the [\/account\/verfication](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createVerification) route to start verifying the user email address. To allow the new user to login to their new account, you need to create a new [account session](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createEmailSession).","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"create","weight":7,"cookies":false,"type":"","demo":"account\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"New user password. Must be between 8 and 256 chars.","default":null,"x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/account\/email":{"patch":{"summary":"Update email","operationId":"accountUpdateEmail","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateEmail","weight":29,"cookies":false,"type":"","demo":"account\/update-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["email","password"]}}]}},"\/account\/identities":{"get":{"summary":"List Identities","operationId":"accountListIdentities","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get the list of identities for the currently logged in user.","responses":{"200":{"description":"Identities List","schema":{"$ref":"#\/definitions\/identityList"}}},"x-appwrite":{"method":"listIdentities","weight":13,"cookies":false,"type":"","demo":"account\/list-identities.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-identities.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/identities","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, provider, providerUid, providerEmail, providerAccessTokenExpiry","required":false,"type":"string","default":[],"in":"query"}]}},"\/account\/identities\/{identityId}":{"delete":{"summary":"Delete identity","operationId":"accountDeleteIdentity","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Delete an identity by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIdentity","weight":14,"cookies":false,"type":"","demo":"account\/delete-identity.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-identity.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"identityId","description":"Identity ID.","required":true,"type":"string","x-example":"[IDENTITY_ID]","in":"path"}]}},"\/account\/jwt":{"post":{"summary":"Create JWT","operationId":"accountCreateJWT","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to create a JSON Web Token. You can use the resulting JWT to authenticate on behalf of the current user when working with the Appwrite server-side API and SDKs. The JWT secret is valid for 15 minutes from its creation and will be invalid if the user will logout in that time frame.","responses":{"201":{"description":"JWT","schema":{"$ref":"#\/definitions\/jwt"}}},"x-appwrite":{"method":"createJWT","weight":20,"cookies":false,"type":"","demo":"account\/create-j-w-t.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-jwt.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"List logs","operationId":"accountListLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get the list of latest security activity logs for the currently logged in user. Each log returns user IP address, location and date and time of log.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listLogs","weight":25,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update name","operationId":"accountUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateName","weight":27,"cookies":false,"type":"","demo":"account\/update-name.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-name.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"User name. Max length: 128 chars.","default":null,"x-example":"[NAME]"}},"required":["name"]}}]}},"\/account\/password":{"patch":{"summary":"Update password","operationId":"accountUpdatePassword","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePassword","weight":28,"cookies":false,"type":"","demo":"account\/update-password.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-password.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"password":{"type":"string","description":"New user password. Must be at least 8 chars.","default":null,"x-example":null},"oldPassword":{"type":"string","description":"Current user password. Must be at least 8 chars.","default":"","x-example":"password"}},"required":["password"]}}]}},"\/account\/phone":{"patch":{"summary":"Update phone","operationId":"accountUpdatePhone","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createPhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePhone","weight":30,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["phone","password"]}}]}},"\/account\/prefs":{"get":{"summary":"Get account preferences","operationId":"accountGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get the preferences as a key-value object for the currently logged in user.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":23,"cookies":false,"type":"","demo":"account\/get-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/prefs","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"patch":{"summary":"Update preferences","operationId":"accountUpdatePrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account preferences. The object you pass is stored as is, and replaces any previous value. The maximum allowed prefs size is 64kB and throws error if exceeded.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePrefs","weight":31,"cookies":false,"type":"","demo":"account\/update-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/prefs","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"prefs":{"type":"object","description":"Prefs key-value JSON object.","default":{},"x-example":"{}"}},"required":["prefs"]}}]}},"\/account\/recovery":{"post":{"summary":"Create password recovery","operationId":"accountCreateRecovery","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Sends the user an email with a temporary secret key for password reset. When the user clicks the confirmation link he is redirected back to your app password reset URL with the secret key and email address values attached to the URL query string. Use the query string params to submit a request to the [PUT \/account\/recovery](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateRecovery) endpoint to complete the process. The verification link sent to the user's email address is valid for 1 hour.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createRecovery","weight":36,"cookies":false,"type":"","demo":"account\/create-recovery.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-recovery.md","rate-limit":10,"rate-time":3600,"rate-key":["url:{url},email:{param-email}","ip:{ip}"],"scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"url":{"type":"string","description":"URL to redirect the user back to your app from the recovery email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":null,"x-example":"https:\/\/example.com"}},"required":["email","url"]}}]},"put":{"summary":"Create password recovery (confirmation)","operationId":"accountUpdateRecovery","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete the user account password reset. Both the **userId** and **secret** arguments will be passed as query parameters to the redirect URL you have provided when sending your request to the [POST \/account\/recovery](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createRecovery) endpoint.\n\nPlease note that in order to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) the only valid redirect URLs are the ones from domains you have set when adding your platforms in the console interface.","responses":{"200":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"updateRecovery","weight":37,"cookies":false,"type":"","demo":"account\/update-recovery.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-recovery.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid reset token.","default":null,"x-example":"[SECRET]"},"password":{"type":"string","description":"New user password. Must be between 8 and 256 chars.","default":null,"x-example":null}},"required":["userId","secret","password"]}}]}},"\/account\/sessions":{"get":{"summary":"List sessions","operationId":"accountListSessions","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get the list of active sessions across different devices for the currently logged in user.","responses":{"200":{"description":"Sessions List","schema":{"$ref":"#\/definitions\/sessionList"}}},"x-appwrite":{"method":"listSessions","weight":24,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/sessions","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete sessions","operationId":"accountDeleteSessions","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":35,"cookies":false,"type":"","demo":"account\/delete-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-sessions.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/account\/sessions\/anonymous":{"post":{"summary":"Create anonymous session","operationId":"accountCreateAnonymousSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to allow a new user to register an anonymous account in your project. This route will also create a new session for the user. To allow the new user to convert an anonymous account to a normal account, you need to update its [email and password](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateEmail) or create an [OAuth2 session](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#CreateOAuth2Session).","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"createAnonymousSession","weight":19,"cookies":false,"type":"","demo":"account\/create-anonymous-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-anonymous.md","rate-limit":50,"rate-time":3600,"rate-key":"ip:{ip}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/sessions\/email":{"post":{"summary":"Create email password session","operationId":"accountCreateEmailPasswordSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Allow the user to login into their account by providing a valid email and password combination. This route will create a new session for the user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"createEmailPasswordSession","weight":8,"cookies":false,"type":"","demo":"account\/create-email-password-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-email-password.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["email","password"]}}]}},"\/account\/sessions\/magic-url":{"put":{"summary":"Create session (deprecated)","operationId":"accountUpdateMagicURLSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to create a session from token. Provide the **userId** and **secret** parameters from the successful response of authentication flows initiated by token creation. For example, magic URL and phone login.","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateMagicURLSession","weight":16,"cookies":false,"type":"","demo":"account\/update-magic-u-r-l-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session.md","rate-limit":10,"rate-time":3600,"rate-key":"ip:{ip},userId:{param-userId}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/account\/sessions\/oauth2\/{provider}":{"get":{"summary":"Create OAuth2 session","operationId":"accountCreateOAuth2Session","consumes":["application\/json"],"produces":["text\/html"],"tags":["account"],"description":"Allow the user to login to their account using the OAuth2 provider of their choice. Each OAuth2 provider should be enabled from the Appwrite console first. Use the success and failure arguments to provide a redirect URL's back to your app when login is completed.\n\nIf there is already an active session, the new session will be attached to the logged-in account. If there are no active sessions, the server will attempt to look for a user with the same email address as the email received from the OAuth2 provider and attach the new session to the existing user. If no matching user is found - the server will create a new user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).\n","responses":{"301":{"description":"No content"}},"x-appwrite":{"method":"createOAuth2Session","weight":9,"cookies":false,"type":"webAuth","demo":"account\/create-o-auth2session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-oauth2.md","rate-limit":50,"rate-time":3600,"rate-key":"ip:{ip}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"provider","description":"OAuth2 Provider. Currently, supported providers are: amazon, apple, auth0, authentik, autodesk, bitbucket, bitly, box, dailymotion, discord, disqus, dropbox, etsy, facebook, github, gitlab, google, linkedin, microsoft, notion, oidc, okta, paypal, paypalSandbox, podio, salesforce, slack, spotify, stripe, tradeshift, tradeshiftBox, twitch, wordpress, yahoo, yammer, yandex, zoho, zoom.","required":true,"type":"string","x-example":"amazon","enum":["amazon","apple","auth0","authentik","autodesk","bitbucket","bitly","box","dailymotion","discord","disqus","dropbox","etsy","facebook","github","gitlab","google","linkedin","microsoft","notion","oidc","okta","paypal","paypalSandbox","podio","salesforce","slack","spotify","stripe","tradeshift","tradeshiftBox","twitch","wordpress","yahoo","yammer","yandex","zoho","zoom","mock"],"x-enum-name":"Provider","x-enum-keys":[],"in":"path"},{"name":"success","description":"URL to redirect back to your app after a successful login attempt. Only URLs from hostnames in your project's platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","required":false,"type":"string","format":"url","x-example":"https:\/\/example.com","default":"","in":"query"},{"name":"failure","description":"URL to redirect back to your app after a failed login attempt. Only URLs from hostnames in your project's platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","required":false,"type":"string","format":"url","x-example":"https:\/\/example.com","default":"","in":"query"},{"name":"token","description":"Include token credentials in the final redirect, useful for server-side integrations, or when cookies are not available.","required":false,"type":"boolean","x-example":false,"default":false,"in":"query"},{"name":"scopes","description":"A list of custom OAuth2 scopes. Check each provider internal docs for a list of supported scopes. Maximum of 100 scopes are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/sessions\/token":{"post":{"summary":"Create session","operationId":"accountCreateSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to create a session from token. Provide the **userId** and **secret** parameters from the successful response of authentication flows initiated by token creation. For example, magic URL and phone login.","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"createSession","weight":17,"cookies":false,"type":"","demo":"account\/create-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session.md","rate-limit":10,"rate-time":3600,"rate-key":"ip:{ip},userId:{param-userId}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Secret of a token generated by login methods. For example, the `createMagicURLToken` or `createPhoneToken` methods.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/account\/sessions\/{sessionId}":{"get":{"summary":"Get session","operationId":"accountGetSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to get a logged in user's session using a Session ID. Inputting 'current' will return the current session being used.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"getSession","weight":26,"cookies":false,"type":"","demo":"account\/get-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-session.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/sessions","offline-key":"{sessionId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to get the current device session.","required":true,"type":"string","x-example":"[SESSION_ID]","in":"path"}]},"patch":{"summary":"Update OAuth session (refresh tokens)","operationId":"accountUpdateSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Access tokens have limited lifespan and expire to mitigate security risks. If session was created using an OAuth provider, this route can be used to \"refresh\" the access token.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateSession","weight":34,"cookies":false,"type":"","demo":"account\/update-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-session.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to update the current device session.","required":true,"type":"string","x-example":"[SESSION_ID]","in":"path"}]},"delete":{"summary":"Delete session","operationId":"accountDeleteSession","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Logout the user. Use 'current' as the session ID to logout on this device, use a session ID to logout on another device. If you're looking to logout the user on all devices, use [Delete Sessions](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#deleteSessions) instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSession","weight":33,"cookies":false,"type":"","demo":"account\/delete-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-session.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to delete the current device session.","required":true,"type":"string","x-example":"[SESSION_ID]","in":"path"}]}},"\/account\/status":{"patch":{"summary":"Update status","operationId":"accountUpdateStatus","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateStatus","weight":32,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/account\/targets\/push":{"post":{"summary":"Create Account's push target","operationId":"accountCreatePushTarget","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"201":{"description":"Target","schema":{"$ref":"#\/definitions\/target"}}},"x-appwrite":{"method":"createPushTarget","weight":21,"cookies":false,"type":"","demo":"account\/create-push-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"targetId":{"type":"string","description":"Target ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[TARGET_ID]"},"identifier":{"type":"string","description":"The target identifier (token, email, phone etc.)","default":null,"x-example":"[IDENTIFIER]"},"providerId":{"type":"string","description":"Provider ID. Message will be sent to this target from the specified provider ID. If no provider ID is set the first setup provider will be used.","default":"","x-example":"[PROVIDER_ID]"}},"required":["targetId","identifier"]}}]}},"\/account\/targets\/{targetId}\/push":{"put":{"summary":"Update Account's push target","operationId":"accountUpdatePushTarget","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"200":{"description":"Target","schema":{"$ref":"#\/definitions\/target"}}},"x-appwrite":{"method":"updatePushTarget","weight":42,"cookies":false,"type":"","demo":"account\/update-push-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"targetId","description":"Target ID.","required":true,"type":"string","x-example":"[TARGET_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"identifier":{"type":"string","description":"The target identifier (token, email, phone etc.)","default":null,"x-example":"[IDENTIFIER]"}},"required":["identifier"]}}]}},"\/account\/tokens\/magic-url":{"post":{"summary":"Create magic URL token","operationId":"accountCreateMagicURLToken","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Sends the user an email with a secret key for creating a session. If the provided user ID has not been registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [PUT \/account\/sessions\/magic-url](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateMagicURLSession) endpoint to complete the login process. The link sent to the user's email address is valid for 1 hour. If you are on a mobile device you can leave the URL parameter empty, so that the login completion will be handled by your Appwrite instance by default.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).\n","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createMagicURLToken","weight":15,"cookies":false,"type":"","demo":"account\/create-magic-u-r-l-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-token-magic-url.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"url":{"type":"string","description":"URL to redirect the user back to your app from the magic URL login. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":"","x-example":"https:\/\/example.com"},"securityPhrase":{"type":"boolean","description":"Toggle for security phrase. If enabled, email will be send with a randomly generated phrase and the phrase will also be included in the response. Confirming phrases match increases the security of authentication flow.","default":false,"x-example":false}},"required":["userId","email"]}}]}},"\/account\/tokens\/phone":{"post":{"summary":"Create phone token","operationId":"accountCreatePhoneToken","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Sends the user an SMS with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [PUT \/account\/sessions\/phone](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updatePhoneSession) endpoint to complete the login process. The secret sent to the user's phone is valid for 15 minutes.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createPhoneToken","weight":18,"cookies":false,"type":"","demo":"account\/create-phone-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-token-phone.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},phone:{param-phone}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"}},"required":["userId","phone"]}}]}},"\/account\/verification":{"post":{"summary":"Create email verification","operationId":"accountCreateVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to send a verification message to your user email address to confirm they are the valid owners of that address. Both the **userId** and **secret** arguments will be passed as query parameters to the URL you have provided to be attached to the verification email. The provided URL should redirect the user back to your app and allow you to complete the verification process by verifying both the **userId** and **secret** parameters. Learn more about how to [complete the verification process](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateVerification). The verification link sent to the user's email address is valid for 7 days.\n\nPlease note that in order to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md), the only valid redirect URLs are the ones from domains you have set when adding your platforms in the console interface.\n","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createVerification","weight":38,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"url":{"type":"string","description":"URL to redirect the user back to your app from the verification email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":null,"x-example":"https:\/\/example.com"}},"required":["url"]}}]},"put":{"summary":"Create email verification (confirmation)","operationId":"accountUpdateVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete the user email verification process. Use both the **userId** and **secret** parameters that were attached to your app URL to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"updateVerification","weight":39,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/account\/verification\/phone":{"post":{"summary":"Create phone verification","operationId":"accountCreatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updatePhone) endpoint. Learn more about how to [complete the verification process](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createPhoneVerification","weight":40,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{userId}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"put":{"summary":"Create phone verification (confirmation)","operationId":"accountUpdatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"updatePhoneVerification","weight":41,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/avatars\/browsers\/{code}":{"get":{"summary":"Get browser icon","operationId":"avatarsGetBrowser","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"You can use this endpoint to show different browser icons to your users. The code argument receives the browser code as it appears in your user [GET \/account\/sessions](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#getSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getBrowser","weight":44,"cookies":false,"type":"location","demo":"avatars\/get-browser.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-browser.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Browser Code.","required":true,"type":"string","x-example":"aa","enum":["aa","an","ch","ci","cm","cr","ff","sf","mf","ps","oi","om","op","on"],"x-enum-name":"Browser","x-enum-keys":["Avant Browser","Android WebView Beta","Google Chrome","Google Chrome (iOS)","Google Chrome (Mobile)","Chromium","Mozilla Firefox","Safari","Mobile Safari","Microsoft Edge","Microsoft Edge (iOS)","Opera Mini","Opera","Opera (Next)"],"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"}]}},"\/avatars\/credit-cards\/{code}":{"get":{"summary":"Get credit card icon","operationId":"avatarsGetCreditCard","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"The credit card endpoint will return you the icon of the credit card provider you need. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getCreditCard","weight":43,"cookies":false,"type":"location","demo":"avatars\/get-credit-card.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-credit-card.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Credit Card Code. Possible values: amex, argencard, cabal, censosud, diners, discover, elo, hipercard, jcb, mastercard, naranja, targeta-shopping, union-china-pay, visa, mir, maestro.","required":true,"type":"string","x-example":"amex","enum":["amex","argencard","cabal","censosud","diners","discover","elo","hipercard","jcb","mastercard","naranja","targeta-shopping","union-china-pay","visa","mir","maestro"],"x-enum-name":"CreditCard","x-enum-keys":["American Express","Argencard","Cabal","Consosud","Diners Club","Discover","Elo","Hipercard","JCB","Mastercard","Naranja","Tarjeta Shopping","Union China Pay","Visa","MIR","Maestro"],"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"}]}},"\/avatars\/favicon":{"get":{"summary":"Get favicon","operationId":"avatarsGetFavicon","consumes":["application\/json"],"produces":["image\/*"],"tags":["avatars"],"description":"Use this endpoint to fetch the favorite icon (AKA favicon) of any remote website URL.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFavicon","weight":47,"cookies":false,"type":"location","demo":"avatars\/get-favicon.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-favicon.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"url","description":"Website URL which you want to fetch the favicon from.","required":true,"type":"string","format":"url","x-example":"https:\/\/example.com","in":"query"}]}},"\/avatars\/flags\/{code}":{"get":{"summary":"Get country flag","operationId":"avatarsGetFlag","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"You can use this endpoint to show different country flags icons to your users. The code argument receives the 2 letter country code. Use width, height and quality arguments to change the output settings. Country codes follow the [ISO 3166-1](https:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFlag","weight":45,"cookies":false,"type":"location","demo":"avatars\/get-flag.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-flag.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Country Code. ISO Alpha-2 country code format.","required":true,"type":"string","x-example":"af","enum":["af","ao","al","ad","ae","ar","am","ag","au","at","az","bi","be","bj","bf","bd","bg","bh","bs","ba","by","bz","bo","br","bb","bn","bt","bw","cf","ca","ch","cl","cn","ci","cm","cd","cg","co","km","cv","cr","cu","cy","cz","de","dj","dm","dk","do","dz","ec","eg","er","es","ee","et","fi","fj","fr","fm","ga","gb","ge","gh","gn","gm","gw","gq","gr","gd","gt","gy","hn","hr","ht","hu","id","in","ie","ir","iq","is","il","it","jm","jo","jp","kz","ke","kg","kh","ki","kn","kr","kw","la","lb","lr","ly","lc","li","lk","ls","lt","lu","lv","ma","mc","md","mg","mv","mx","mh","mk","ml","mt","mm","me","mn","mz","mr","mu","mw","my","na","ne","ng","ni","nl","no","np","nr","nz","om","pk","pa","pe","ph","pw","pg","pl","kp","pt","py","qa","ro","ru","rw","sa","sd","sn","sg","sb","sl","sv","sm","so","rs","ss","st","sr","sk","si","se","sz","sc","sy","td","tg","th","tj","tm","tl","to","tt","tn","tr","tv","tz","ug","ua","uy","us","uz","va","vc","ve","vn","vu","ws","ye","za","zm","zw"],"x-enum-name":"Flag","x-enum-keys":["Afghanistan","Angola","Albania","Andorra","United Arab Emirates","Argentina","Armenia","Antigua and Barbuda","Australia","Austria","Azerbaijan","Burundi","Belgium","Benin","Burkina Faso","Bangladesh","Bulgaria","Bahrain","Bahamas","Bosnia and Herzegovina","Belarus","Belize","Bolivia","Brazil","Barbados","Brunei Darussalam","Bhutan","Botswana","Central African Republic","Canada","Switzerland","Chile","China","C\u00f4te d'Ivoire","Cameroon","Democratic Republic of the Congo","Republic of the Congo","Colombia","Comoros","Cape Verde","Costa Rica","Cuba","Cyprus","Czech Republic","Germany","Djibouti","Dominica","Denmark","Dominican Republic","Algeria","Ecuador","Egypt","Eritrea","Spain","Estonia","Ethiopia","Finland","Fiji","France","Micronesia (Federated States of)","Gabon","United Kingdom","Georgia","Ghana","Guinea","Gambia","Guinea-Bissau","Equatorial Guinea","Greece","Grenada","Guatemala","Guyana","Honduras","Croatia","Haiti","Hungary","Indonesia","India","Ireland","Iran (Islamic Republic of)","Iraq","Iceland","Israel","Italy","Jamaica","Jordan","Japan","Kazakhstan","Kenya","Kyrgyzstan","Cambodia","Kiribati","Saint Kitts and Nevis","South Korea","Kuwait","Lao People's Democratic Republic","Lebanon","Liberia","Libya","Saint Lucia","Liechtenstein","Sri Lanka","Lesotho","Lithuania","Luxembourg","Latvia","Morocco","Monaco","Moldova","Madagascar","Maldives","Mexico","Marshall Islands","North Macedonia","Mali","Malta","Myanmar","Montenegro","Mongolia","Mozambique","Mauritania","Mauritius","Malawi","Malaysia","Namibia","Niger","Nigeria","Nicaragua","Netherlands","Norway","Nepal","Nauru","New Zealand","Oman","Pakistan","Panama","Peru","Philippines","Palau","Papua New Guinea","Poland","North Korea","Portugal","Paraguay","Qatar","Romania","Russia","Rwanda","Saudi Arabia","Sudan","Senegal","Singapore","Solomon Islands","Sierra Leone","El Salvador","San Marino","Somalia","Serbia","South Sudan","Sao Tome and Principe","Suriname","Slovakia","Slovenia","Sweden","Eswatini","Seychelles","Syria","Chad","Togo","Thailand","Tajikistan","Turkmenistan","Timor-Leste","Tonga","Trinidad and Tobago","Tunisia","Turkey","Tuvalu","Tanzania","Uganda","Ukraine","Uruguay","United States","Uzbekistan","Vatican City","Saint Vincent and the Grenadines","Venezuela","Vietnam","Vanuatu","Samoa","Yemen","South Africa","Zambia","Zimbabwe"],"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"}]}},"\/avatars\/image":{"get":{"summary":"Get image from URL","operationId":"avatarsGetImage","consumes":["application\/json"],"produces":["image\/*"],"tags":["avatars"],"description":"Use this endpoint to fetch a remote image URL and crop it to any image size you want. This endpoint is very useful if you need to crop and display remote images in your app or in case you want to make sure a 3rd party image is properly served using a TLS protocol.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getImage","weight":46,"cookies":false,"type":"location","demo":"avatars\/get-image.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-image.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"url","description":"Image URL which you want to crop.","required":true,"type":"string","format":"url","x-example":"https:\/\/example.com","in":"query"},{"name":"width","description":"Resize preview image width, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get user initials","operationId":"avatarsGetInitials","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getInitials","weight":49,"cookies":false,"type":"location","demo":"avatars\/get-initials.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-initials.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"name","description":"Full Name. When empty, current user name or email will be used. Max length: 128 chars.","required":false,"type":"string","x-example":"[NAME]","default":"","in":"query"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":500,"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":500,"in":"query"},{"name":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"type":"string","default":"","in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR code","operationId":"avatarsGetQR","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getQR","weight":48,"cookies":false,"type":"location","demo":"avatars\/get-q-r.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-qr.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"text","description":"Plain text to be converted to QR code image.","required":true,"type":"string","x-example":"[TEXT]","in":"query"},{"name":"size","description":"QR code size. Pass an integer between 1 to 1000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":1,"default":400,"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"type":"integer","format":"int32","x-example":0,"default":1,"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"type":"boolean","x-example":false,"default":false,"in":"query"}]}},"\/console\/assistant":{"post":{"summary":"Ask Query","operationId":"assistantChat","consumes":["application\/json"],"produces":["text\/plain"],"tags":["assistant"],"description":"","responses":{"200":{"description":"File","schema":{"type":"file"}}},"x-appwrite":{"method":"chat","weight":291,"cookies":false,"type":"","demo":"assistant\/chat.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/assistant\/chat.md","rate-limit":15,"rate-time":3600,"rate-key":"userId:{userId}","scope":"assistant.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"prompt":{"type":"string","description":"Prompt. A string containing questions asked to the AI assistant.","default":null,"x-example":"[PROMPT]"}},"required":["prompt"]}}]}},"\/console\/variables":{"get":{"summary":"Get variables","operationId":"consoleVariables","consumes":["application\/json"],"produces":["application\/json"],"tags":["console"],"description":"Get all Environment Variables that are relevant for the console.","responses":{"200":{"description":"Console Variables","schema":{"$ref":"#\/definitions\/consoleVariables"}}},"x-appwrite":{"method":"variables","weight":290,"cookies":false,"type":"","demo":"console\/variables.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/console\/variables.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/databases":{"get":{"summary":"List databases","operationId":"databasesList","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all databases from the current Appwrite project. You can use the search parameter to filter your results.","responses":{"200":{"description":"Databases List","schema":{"$ref":"#\/definitions\/databaseList"}}},"x-appwrite":{"method":"list","weight":54,"cookies":false,"type":"","demo":"databases\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create database","operationId":"databasesCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Database.\n","responses":{"201":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"create","weight":53,"cookies":false,"type":"","demo":"databases\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"databaseId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[DATABASE_ID]","x-global":true},"name":{"type":"string","description":"Database name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Is the database enabled? When set to 'disabled', users cannot access the database but Server SDKs with an API key can still read and write to the database. No data is lost when this is toggled.","default":true,"x-example":false}},"required":["databaseId","name"]}}]}},"\/databases\/usage":{"get":{"summary":"Get usage stats for the database","operationId":"databasesGetUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"UsageDatabases","schema":{"$ref":"#\/definitions\/usageDatabases"}}},"x-appwrite":{"method":"getUsage","weight":98,"cookies":false,"type":"","demo":"databases\/get-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"`Date range.","required":false,"type":"string","x-example":"24h","enum":["24h","7d","30d","90d"],"x-enum-name":null,"x-enum-keys":["Twenty Four Hours","Seven Days","Thirty Days","Ninety Days"],"default":"30d","in":"query"}]}},"\/databases\/{databaseId}":{"get":{"summary":"Get database","operationId":"databasesGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a database by its unique ID. This endpoint response returns a JSON object with the database metadata.","responses":{"200":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"get","weight":55,"cookies":false,"type":"","demo":"databases\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"}]},"put":{"summary":"Update database","operationId":"databasesUpdate","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a database by its unique ID.","responses":{"200":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"update","weight":57,"cookies":false,"type":"","demo":"databases\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Database name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Is database enabled? When set to 'disabled', users cannot access the database but Server SDKs with an API key can still read and write to the database. No data is lost when this is toggled.","default":true,"x-example":false}},"required":["name"]}}]},"delete":{"summary":"Delete database","operationId":"databasesDelete","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a database by its unique ID. Only API keys with with databases.write scope can delete a database.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":58,"cookies":false,"type":"","demo":"databases\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections":{"get":{"summary":"List collections","operationId":"databasesListCollections","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all collections that belong to the provided databaseId. You can use the search parameter to filter your results.","responses":{"200":{"description":"Collections List","schema":{"$ref":"#\/definitions\/collectionList"}}},"x-appwrite":{"method":"listCollections","weight":60,"cookies":false,"type":"","demo":"databases\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, documentSecurity","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create collection","operationId":"databasesCreateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Collection. Before using this route, you should create a new database resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"createCollection","weight":59,"cookies":false,"type":"","demo":"databases\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permissions strings. By default, no user is granted with any permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":false,"x-example":false},"enabled":{"type":"boolean","description":"Is collection enabled? When set to 'disabled', users cannot access the collection but Server SDKs with and API key can still read and write to the collection. No data is lost when this is toggled.","default":true,"x-example":false}},"required":["collectionId","name"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}":{"get":{"summary":"Get collection","operationId":"databasesGetCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a collection by its unique ID. This endpoint response returns a JSON object with the collection metadata.","responses":{"200":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"getCollection","weight":61,"cookies":false,"type":"","demo":"databases\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]},"put":{"summary":"Update collection","operationId":"databasesUpdateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a collection by its unique ID.","responses":{"200":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"updateCollection","weight":63,"cookies":false,"type":"","demo":"databases\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":false,"x-example":false},"enabled":{"type":"boolean","description":"Is collection enabled? When set to 'disabled', users cannot access the collection but Server SDKs with and API key can still read and write to the collection. No data is lost when this is toggled.","default":true,"x-example":false}},"required":["name"]}}]},"delete":{"summary":"Delete collection","operationId":"databasesDeleteCollection","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a collection by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteCollection","weight":64,"cookies":false,"type":"","demo":"databases\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes":{"get":{"summary":"List attributes","operationId":"databasesListAttributes","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Attributes List","schema":{"$ref":"#\/definitions\/attributeList"}}},"x-appwrite":{"method":"listAttributes","weight":75,"cookies":false,"type":"","demo":"databases\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: key, type, size, required, array, status, error","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create boolean attribute","operationId":"databasesCreateBooleanAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a boolean attribute.\n","responses":{"202":{"description":"AttributeBoolean","schema":{"$ref":"#\/definitions\/attributeBoolean"}}},"x-appwrite":{"method":"createBooleanAttribute","weight":72,"cookies":false,"type":"","demo":"databases\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":false},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean\/{key}":{"patch":{"summary":"Update boolean attribute","operationId":"databasesUpdateBooleanAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"","responses":{"200":{"description":"AttributeBoolean","schema":{"$ref":"#\/definitions\/attributeBoolean"}}},"x-appwrite":{"method":"updateBooleanAttribute","weight":84,"cookies":false,"type":"","demo":"databases\/update-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":false,"x-nullable":true}},"required":["required","default"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/datetime":{"post":{"summary":"Create datetime attribute","operationId":"databasesCreateDatetimeAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"AttributeDatetime","schema":{"$ref":"#\/definitions\/attributeDatetime"}}},"x-appwrite":{"method":"createDatetimeAttribute","weight":73,"cookies":false,"type":"","demo":"databases\/create-datetime-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-datetime-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for the attribute in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/datetime\/{key}":{"patch":{"summary":"Update dateTime attribute","operationId":"databasesUpdateDatetimeAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"","responses":{"200":{"description":"AttributeDatetime","schema":{"$ref":"#\/definitions\/attributeDatetime"}}},"x-appwrite":{"method":"updateDatetimeAttribute","weight":85,"cookies":false,"type":"","demo":"databases\/update-datetime-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-datetime-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null,"x-nullable":true}},"required":["required","default"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create email attribute","operationId":"databasesCreateEmailAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create an email attribute.\n","responses":{"202":{"description":"AttributeEmail","schema":{"$ref":"#\/definitions\/attributeEmail"}}},"x-appwrite":{"method":"createEmailAttribute","weight":66,"cookies":false,"type":"","demo":"databases\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"email@example.com"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/email\/{key}":{"patch":{"summary":"Update email attribute","operationId":"databasesUpdateEmailAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Update an email attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeEmail","schema":{"$ref":"#\/definitions\/attributeEmail"}}},"x-appwrite":{"method":"updateEmailAttribute","weight":78,"cookies":false,"type":"","demo":"databases\/update-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"email@example.com","x-nullable":true}},"required":["required","default"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create enum attribute","operationId":"databasesCreateEnumAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"AttributeEnum","schema":{"$ref":"#\/definitions\/attributeEnum"}}},"x-appwrite":{"method":"createEnumAttribute","weight":67,"cookies":false,"type":"","demo":"databases\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"elements":{"type":"array","description":"Array of elements in enumerated type. Uses length of longest element to determine size. Maximum of 100 elements are allowed, each 255 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","elements","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/enum\/{key}":{"patch":{"summary":"Update enum attribute","operationId":"databasesUpdateEnumAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Update an enum attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeEnum","schema":{"$ref":"#\/definitions\/attributeEnum"}}},"x-appwrite":{"method":"updateEnumAttribute","weight":79,"cookies":false,"type":"","demo":"databases\/update-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-enum-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"elements":{"type":"array","description":"Array of elements in enumerated type. Uses length of longest element to determine size. Maximum of 100 elements are allowed, each 255 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"[DEFAULT]","x-nullable":true}},"required":["elements","required","default"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create float attribute","operationId":"databasesCreateFloatAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeFloat","schema":{"$ref":"#\/definitions\/attributeFloat"}}},"x-appwrite":{"method":"createFloatAttribute","weight":71,"cookies":false,"type":"","demo":"databases\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"min":{"type":"number","description":"Minimum value to enforce on new documents","default":null,"x-example":null},"max":{"type":"number","description":"Maximum value to enforce on new documents","default":null,"x-example":null},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/float\/{key}":{"patch":{"summary":"Update float attribute","operationId":"databasesUpdateFloatAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Update a float attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeFloat","schema":{"$ref":"#\/definitions\/attributeFloat"}}},"x-appwrite":{"method":"updateFloatAttribute","weight":83,"cookies":false,"type":"","demo":"databases\/update-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"min":{"type":"number","description":"Minimum value to enforce on new documents","default":null,"x-example":null},"max":{"type":"number","description":"Maximum value to enforce on new documents","default":null,"x-example":null},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null,"x-nullable":true}},"required":["required","min","max","default"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create integer attribute","operationId":"databasesCreateIntegerAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeInteger","schema":{"$ref":"#\/definitions\/attributeInteger"}}},"x-appwrite":{"method":"createIntegerAttribute","weight":70,"cookies":false,"type":"","demo":"databases\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"min":{"type":"integer","description":"Minimum value to enforce on new documents","default":null,"x-example":null},"max":{"type":"integer","description":"Maximum value to enforce on new documents","default":null,"x-example":null},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/integer\/{key}":{"patch":{"summary":"Update integer attribute","operationId":"databasesUpdateIntegerAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Update an integer attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeInteger","schema":{"$ref":"#\/definitions\/attributeInteger"}}},"x-appwrite":{"method":"updateIntegerAttribute","weight":82,"cookies":false,"type":"","demo":"databases\/update-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"min":{"type":"integer","description":"Minimum value to enforce on new documents","default":null,"x-example":null},"max":{"type":"integer","description":"Maximum value to enforce on new documents","default":null,"x-example":null},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null,"x-nullable":true}},"required":["required","min","max","default"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP address attribute","operationId":"databasesCreateIpAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create IP address attribute.\n","responses":{"202":{"description":"AttributeIP","schema":{"$ref":"#\/definitions\/attributeIp"}}},"x-appwrite":{"method":"createIpAttribute","weight":68,"cookies":false,"type":"","demo":"databases\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/ip\/{key}":{"patch":{"summary":"Update IP address attribute","operationId":"databasesUpdateIpAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Update an ip attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeIP","schema":{"$ref":"#\/definitions\/attributeIp"}}},"x-appwrite":{"method":"updateIpAttribute","weight":80,"cookies":false,"type":"","demo":"databases\/update-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null,"x-nullable":true}},"required":["required","default"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/relationship":{"post":{"summary":"Create relationship attribute","operationId":"databasesCreateRelationshipAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create relationship attribute. [Learn more about relationship attributes](https:\/\/appwrite.io\/docs\/databases-relationships#relationship-attributes).\n","responses":{"202":{"description":"AttributeRelationship","schema":{"$ref":"#\/definitions\/attributeRelationship"}}},"x-appwrite":{"method":"createRelationshipAttribute","weight":74,"cookies":false,"type":"","demo":"databases\/create-relationship-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-relationship-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"relatedCollectionId":{"type":"string","description":"Related Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","default":null,"x-example":"[RELATED_COLLECTION_ID]"},"type":{"type":"string","description":"Relation type","default":null,"x-example":"oneToOne","enum":["oneToOne","manyToOne","manyToMany","oneToMany"],"x-enum-name":"RelationshipType","x-enum-keys":[]},"twoWay":{"type":"boolean","description":"Is Two Way?","default":false,"x-example":false},"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"twoWayKey":{"type":"string","description":"Two Way Attribute Key.","default":null,"x-example":null},"onDelete":{"type":"string","description":"Constraints option","default":"restrict","x-example":"cascade","enum":["cascade","restrict","setNull"],"x-enum-name":"RelationMutate","x-enum-keys":[]}},"required":["relatedCollectionId","type"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create string attribute","operationId":"databasesCreateStringAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a string attribute.\n","responses":{"202":{"description":"AttributeString","schema":{"$ref":"#\/definitions\/attributeString"}}},"x-appwrite":{"method":"createStringAttribute","weight":65,"cookies":false,"type":"","demo":"databases\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"size":{"type":"integer","description":"Attribute size for text attributes, in number of characters.","default":null,"x-example":1},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false},"encrypt":{"type":"boolean","description":"Toggle encryption for the attribute. Encryption enhances security by not storing any plain text values in the database. However, encrypted attributes cannot be queried.","default":false,"x-example":false}},"required":["key","size","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/string\/{key}":{"patch":{"summary":"Update string attribute","operationId":"databasesUpdateStringAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Update a string attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeString","schema":{"$ref":"#\/definitions\/attributeString"}}},"x-appwrite":{"method":"updateStringAttribute","weight":77,"cookies":false,"type":"","demo":"databases\/update-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"[DEFAULT]","x-nullable":true}},"required":["required","default"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL attribute","operationId":"databasesCreateUrlAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a URL attribute.\n","responses":{"202":{"description":"AttributeURL","schema":{"$ref":"#\/definitions\/attributeUrl"}}},"x-appwrite":{"method":"createUrlAttribute","weight":69,"cookies":false,"type":"","demo":"databases\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"https:\/\/example.com"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url\/{key}":{"patch":{"summary":"Update URL attribute","operationId":"databasesUpdateUrlAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Update an url attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeURL","schema":{"$ref":"#\/definitions\/attributeUrl"}}},"x-appwrite":{"method":"updateUrlAttribute","weight":81,"cookies":false,"type":"","demo":"databases\/update-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"https:\/\/example.com","x-nullable":true}},"required":["required","default"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get attribute","operationId":"databasesGetAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, or AttributeDatetime, or AttributeRelationship, or AttributeString","schema":{"x-oneOf":[{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeRelationship"},{"$ref":"#\/definitions\/attributeString"}]}}},"x-appwrite":{"method":"getAttribute","weight":76,"cookies":false,"type":"","demo":"databases\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"}]},"delete":{"summary":"Delete attribute","operationId":"databasesDeleteAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":87,"cookies":false,"type":"","demo":"databases\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/{key}\/relationship":{"patch":{"summary":"Update relationship attribute","operationId":"databasesUpdateRelationshipAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Update relationship attribute. [Learn more about relationship attributes](https:\/\/appwrite.io\/docs\/databases-relationships#relationship-attributes).\n","responses":{"200":{"description":"AttributeRelationship","schema":{"$ref":"#\/definitions\/attributeRelationship"}}},"x-appwrite":{"method":"updateRelationshipAttribute","weight":86,"cookies":false,"type":"","demo":"databases\/update-relationship-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-relationship-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"onDelete":{"type":"string","description":"Constraints option","default":null,"x-example":"cascade","enum":["cascade","restrict","setNull"],"x-enum-name":"RelationMutate","x-enum-keys":[]}}}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List documents","operationId":"databasesListDocuments","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","schema":{"$ref":"#\/definitions\/documentList"}}},"x-appwrite":{"method":"listDocuments","weight":93,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"post":{"summary":"Create document","operationId":"databasesCreateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"createDocument","weight":92,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","default":{},"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, only the current user is granted all permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get document","operationId":"databasesGetDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"getDocument","weight":94,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only method allowed is select.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"patch":{"summary":"Update document","operationId":"databasesUpdateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"updateDocument","weight":96,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","default":[],"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete document","operationId":"databasesDeleteDocument","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":97,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}\/logs":{"get":{"summary":"List document logs","operationId":"databasesListDocumentLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get the document activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listDocumentLogs","weight":95,"cookies":false,"type":"","demo":"databases\/list-document-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes":{"get":{"summary":"List indexes","operationId":"databasesListIndexes","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Indexes List","schema":{"$ref":"#\/definitions\/indexList"}}},"x-appwrite":{"method":"listIndexes","weight":89,"cookies":false,"type":"","demo":"databases\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: key, type, status, attributes, error","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"post":{"summary":"Create index","operationId":"databasesCreateIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"createIndex","weight":88,"cookies":false,"type":"","demo":"databases\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Index Key.","default":null,"x-example":null},"type":{"type":"string","description":"Index type.","default":null,"x-example":"key","enum":["key","fulltext","unique","spatial","array"],"x-enum-name":"IndexType","x-enum-keys":[]},"attributes":{"type":"array","description":"Array of attributes to index. Maximum of 100 attributes are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders. Maximum of 100 orders are allowed.","default":[],"x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get index","operationId":"databasesGetIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"getIndex","weight":90,"cookies":false,"type":"","demo":"databases\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Index Key.","required":true,"type":"string","in":"path"}]},"delete":{"summary":"Delete index","operationId":"databasesDeleteIndex","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":91,"cookies":false,"type":"","demo":"databases\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Index Key.","required":true,"type":"string","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/logs":{"get":{"summary":"List collection logs","operationId":"databasesListCollectionLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get the collection activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listCollectionLogs","weight":62,"cookies":false,"type":"","demo":"databases\/list-collection-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/usage":{"get":{"summary":"Get usage stats for a collection","operationId":"databasesGetCollectionUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"UsageCollection","schema":{"$ref":"#\/definitions\/usageCollection"}}},"x-appwrite":{"method":"getCollectionUsage","weight":100,"cookies":false,"type":"","demo":"databases\/get-collection-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","enum":["24h","7d","30d","90d"],"x-enum-name":null,"x-enum-keys":["Twenty Four Hours","Seven Days","Thirty Days","Ninety Days"],"default":"30d","in":"query"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/databases\/{databaseId}\/logs":{"get":{"summary":"List database logs","operationId":"databasesListLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get the database activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listLogs","weight":56,"cookies":false,"type":"","demo":"databases\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/databases\/{databaseId}\/usage":{"get":{"summary":"Get usage stats for the database","operationId":"databasesGetDatabaseUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"UsageDatabase","schema":{"$ref":"#\/definitions\/usageDatabase"}}},"x-appwrite":{"method":"getDatabaseUsage","weight":99,"cookies":false,"type":"","demo":"databases\/get-database-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"range","description":"`Date range.","required":false,"type":"string","x-example":"24h","enum":["24h","7d","30d","90d"],"x-enum-name":null,"x-enum-keys":["Twenty Four Hours","Seven Days","Thirty Days","Ninety Days"],"default":"30d","in":"query"}]}},"\/functions":{"get":{"summary":"List functions","operationId":"functionsList","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the project's functions. You can use the query params to filter your results.","responses":{"200":{"description":"Functions List","schema":{"$ref":"#\/definitions\/functionList"}}},"x-appwrite":{"method":"list","weight":253,"cookies":false,"type":"","demo":"functions\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-functions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, runtime, deployment, schedule, scheduleNext, schedulePrevious, timeout, entrypoint, commands, installationId","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create function","operationId":"functionsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function. You can pass a list of [permissions](https:\/\/appwrite.io\/docs\/permissions) to allow different project users or team with access to execute the function using the client API.","responses":{"201":{"description":"Function","schema":{"$ref":"#\/definitions\/function"}}},"x-appwrite":{"method":"create","weight":252,"cookies":false,"type":"","demo":"functions\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"functionId":{"type":"string","description":"Function ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[FUNCTION_ID]"},"name":{"type":"string","description":"Function name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"runtime":{"type":"string","description":"Execution runtime.","default":null,"x-example":"node-18.0","enum":["node-18.0","php-8.0","ruby-3.1","python-3.9"],"x-enum-name":null,"x-enum-keys":[]},"execute":{"type":"array","description":"An array of role strings with execution permissions. By default no user is granted with any execute permissions. [learn more about roles](https:\/\/appwrite.io\/docs\/permissions#permission-roles). Maximum of 100 roles are allowed, each 64 characters long.","default":[],"x-example":"[\"any\"]","items":{"type":"string"}},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","default":[],"x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","default":"","x-example":null},"timeout":{"type":"integer","description":"Function maximum execution time in seconds.","default":15,"x-example":1},"enabled":{"type":"boolean","description":"Is function enabled? When set to 'disabled', users cannot access the function but Server SDKs with and API key can still access the function. No data is lost when this is toggled.","default":true,"x-example":false},"logging":{"type":"boolean","description":"Whether executions will be logged. When set to false, executions will not be logged, but will reduce resource used by your Appwrite project.","default":true,"x-example":false},"entrypoint":{"type":"string","description":"Entrypoint File. This path is relative to the \"providerRootDirectory\".","default":"","x-example":"[ENTRYPOINT]"},"commands":{"type":"string","description":"Build Commands.","default":"","x-example":"[COMMANDS]"},"installationId":{"type":"string","description":"Appwrite Installation ID for VCS (Version Control System) deployment.","default":"","x-example":"[INSTALLATION_ID]"},"providerRepositoryId":{"type":"string","description":"Repository ID of the repo linked to the function.","default":"","x-example":"[PROVIDER_REPOSITORY_ID]"},"providerBranch":{"type":"string","description":"Production branch for the repo linked to the function.","default":"","x-example":"[PROVIDER_BRANCH]"},"providerSilentMode":{"type":"boolean","description":"Is the VCS (Version Control System) connection in silent mode for the repo linked to the function? In silent mode, comments will not be made on commits and pull requests.","default":false,"x-example":false},"providerRootDirectory":{"type":"string","description":"Path to function code in the linked repo.","default":"","x-example":"[PROVIDER_ROOT_DIRECTORY]"},"templateRepository":{"type":"string","description":"Repository name of the template.","default":"","x-example":"[TEMPLATE_REPOSITORY]"},"templateOwner":{"type":"string","description":"The name of the owner of the template.","default":"","x-example":"[TEMPLATE_OWNER]"},"templateRootDirectory":{"type":"string","description":"Path to function code in the template repo.","default":"","x-example":"[TEMPLATE_ROOT_DIRECTORY]"},"templateBranch":{"type":"string","description":"Production branch for the repo linked to the function template.","default":"","x-example":"[TEMPLATE_BRANCH]"}},"required":["functionId","name","runtime"]}}]}},"\/functions\/runtimes":{"get":{"summary":"List runtimes","operationId":"functionsListRuntimes","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all runtimes that are currently active on your instance.","responses":{"200":{"description":"Runtimes List","schema":{"$ref":"#\/definitions\/runtimeList"}}},"x-appwrite":{"method":"listRuntimes","weight":254,"cookies":false,"type":"","demo":"functions\/list-runtimes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-runtimes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/functions\/usage":{"get":{"summary":"Get functions usage","operationId":"functionsGetUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"","responses":{"200":{"description":"UsageFunctions","schema":{"$ref":"#\/definitions\/usageFunctions"}}},"x-appwrite":{"method":"getUsage","weight":257,"cookies":false,"type":"","demo":"functions\/get-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","enum":["24h","7d","30d","90d"],"x-enum-name":null,"x-enum-keys":[],"default":"30d","in":"query"}]}},"\/functions\/{functionId}":{"get":{"summary":"Get function","operationId":"functionsGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a function by its unique ID.","responses":{"200":{"description":"Function","schema":{"$ref":"#\/definitions\/function"}}},"x-appwrite":{"method":"get","weight":255,"cookies":false,"type":"","demo":"functions\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"}]},"put":{"summary":"Update function","operationId":"functionsUpdate","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Update function by its unique ID.","responses":{"200":{"description":"Function","schema":{"$ref":"#\/definitions\/function"}}},"x-appwrite":{"method":"update","weight":258,"cookies":false,"type":"","demo":"functions\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Function name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"runtime":{"type":"string","description":"Execution runtime.","default":"","x-example":"node-18.0","enum":["node-18.0","php-8.0","ruby-3.1","python-3.9"],"x-enum-name":null,"x-enum-keys":[]},"execute":{"type":"array","description":"An array of role strings with execution permissions. By default no user is granted with any execute permissions. [learn more about roles](https:\/\/appwrite.io\/docs\/permissions#permission-roles). Maximum of 100 roles are allowed, each 64 characters long.","default":[],"x-example":"[\"any\"]","items":{"type":"string"}},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","default":[],"x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","default":"","x-example":null},"timeout":{"type":"integer","description":"Maximum execution time in seconds.","default":15,"x-example":1},"enabled":{"type":"boolean","description":"Is function enabled? When set to 'disabled', users cannot access the function but Server SDKs with and API key can still access the function. No data is lost when this is toggled.","default":true,"x-example":false},"logging":{"type":"boolean","description":"Whether executions will be logged. When set to false, executions will not be logged, but will reduce resource used by your Appwrite project.","default":true,"x-example":false},"entrypoint":{"type":"string","description":"Entrypoint File. This path is relative to the \"providerRootDirectory\".","default":"","x-example":"[ENTRYPOINT]"},"commands":{"type":"string","description":"Build Commands.","default":"","x-example":"[COMMANDS]"},"installationId":{"type":"string","description":"Appwrite Installation ID for VCS (Version Controle System) deployment.","default":"","x-example":"[INSTALLATION_ID]"},"providerRepositoryId":{"type":"string","description":"Repository ID of the repo linked to the function","default":"","x-example":"[PROVIDER_REPOSITORY_ID]"},"providerBranch":{"type":"string","description":"Production branch for the repo linked to the function","default":"","x-example":"[PROVIDER_BRANCH]"},"providerSilentMode":{"type":"boolean","description":"Is the VCS (Version Control System) connection in silent mode for the repo linked to the function? In silent mode, comments will not be made on commits and pull requests.","default":false,"x-example":false},"providerRootDirectory":{"type":"string","description":"Path to function code in the linked repo.","default":"","x-example":"[PROVIDER_ROOT_DIRECTORY]"}},"required":["name"]}}]},"delete":{"summary":"Delete function","operationId":"functionsDelete","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"Delete a function by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":261,"cookies":false,"type":"","demo":"functions\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"}]}},"\/functions\/{functionId}\/deployments":{"get":{"summary":"List deployments","operationId":"functionsListDeployments","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the project's code deployments. You can use the query params to filter your results.","responses":{"200":{"description":"Deployments List","schema":{"$ref":"#\/definitions\/deploymentList"}}},"x-appwrite":{"method":"listDeployments","weight":263,"cookies":false,"type":"","demo":"functions\/list-deployments.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-deployments.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: size, buildId, activate, entrypoint, commands","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create deployment","operationId":"functionsCreateDeployment","consumes":["multipart\/form-data"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function code deployment. Use this endpoint to upload a new version of your code function. To execute your newly uploaded code, you'll need to update the function's deployment to use your new deployment UID.\n\nThis endpoint accepts a tar.gz file compressed with your code. Make sure to include any dependencies your code has within the compressed file. You can learn more about code packaging in the [Appwrite Cloud Functions tutorial](https:\/\/appwrite.io\/docs\/functions).\n\nUse the \"command\" param to set the entrypoint used to execute your code.","responses":{"202":{"description":"Deployment","schema":{"$ref":"#\/definitions\/deployment"}}},"x-appwrite":{"method":"createDeployment","weight":262,"cookies":false,"type":"","demo":"functions\/create-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":true,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"entrypoint","description":"Entrypoint File.","required":false,"type":"string","x-example":"[ENTRYPOINT]","in":"formData"},{"name":"commands","description":"Build Commands.","required":false,"type":"string","x-example":"[COMMANDS]","in":"formData"},{"name":"code","description":"Gzip file with your code package. When used with the Appwrite CLI, pass the path to your code directory, and the CLI will automatically package your code. Use a path that is within the current directory.","required":true,"type":"file","in":"formData"},{"name":"activate","description":"Automatically activate the deployment when it is finished building.","required":true,"type":"boolean","x-example":false,"in":"formData"}]}},"\/functions\/{functionId}\/deployments\/{deploymentId}":{"get":{"summary":"Get deployment","operationId":"functionsGetDeployment","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a code deployment by its unique ID.","responses":{"200":{"description":"Deployment","schema":{"$ref":"#\/definitions\/deployment"}}},"x-appwrite":{"method":"getDeployment","weight":264,"cookies":false,"type":"","demo":"functions\/get-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"type":"string","x-example":"[DEPLOYMENT_ID]","in":"path"}]},"patch":{"summary":"Update function deployment","operationId":"functionsUpdateDeployment","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Update the function code deployment ID using the unique function ID. Use this endpoint to switch the code deployment that should be executed by the execution endpoint.","responses":{"200":{"description":"Function","schema":{"$ref":"#\/definitions\/function"}}},"x-appwrite":{"method":"updateDeployment","weight":260,"cookies":false,"type":"","demo":"functions\/update-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-function-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"type":"string","x-example":"[DEPLOYMENT_ID]","in":"path"}]},"delete":{"summary":"Delete deployment","operationId":"functionsDeleteDeployment","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"Delete a code deployment by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDeployment","weight":265,"cookies":false,"type":"","demo":"functions\/delete-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"type":"string","x-example":"[DEPLOYMENT_ID]","in":"path"}]}},"\/functions\/{functionId}\/deployments\/{deploymentId}\/builds\/{buildId}":{"post":{"summary":"Create build","operationId":"functionsCreateBuild","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"Create a new build for an Appwrite Function deployment. This endpoint can be used to retry a failed build.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"createBuild","weight":266,"cookies":false,"type":"","demo":"functions\/create-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"type":"string","x-example":"[DEPLOYMENT_ID]","in":"path"},{"name":"buildId","description":"Build unique ID.","required":true,"type":"string","x-example":"[BUILD_ID]","in":"path"}]}},"\/functions\/{functionId}\/deployments\/{deploymentId}\/download":{"get":{"summary":"Download Deployment","operationId":"functionsDownloadDeployment","consumes":["application\/json"],"produces":["*\/*"],"tags":["functions"],"description":"Get a Deployment's contents by its unique ID. This endpoint supports range requests for partial or streaming file download.","responses":{"200":{"description":"File","schema":{"type":"file"}}},"x-appwrite":{"method":"downloadDeployment","weight":259,"cookies":false,"type":"location","demo":"functions\/download-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/download-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"type":"string","x-example":"[DEPLOYMENT_ID]","in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List executions","operationId":"functionsListExecutions","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","schema":{"$ref":"#\/definitions\/executionList"}}},"x-appwrite":{"method":"listExecutions","weight":268,"cookies":false,"type":"","demo":"functions\/list-executions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-executions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, responseStatusCode, duration","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create execution","operationId":"functionsCreateExecution","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","schema":{"$ref":"#\/definitions\/execution"}}},"x-appwrite":{"method":"createExecution","weight":267,"cookies":false,"type":"","demo":"functions\/create-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-execution.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"body":{"type":"string","description":"HTTP body of execution. Default value is empty string.","default":"","x-example":"[BODY]"},"async":{"type":"boolean","description":"Execute code in the background. Default value is false.","default":false,"x-example":false},"path":{"type":"string","description":"HTTP path of execution. Path can include query params. Default value is \/","default":"\/","x-example":"[PATH]"},"method":{"type":"string","description":"HTTP method of execution. Default value is GET.","default":"POST","x-example":"GET","enum":["GET","POST","PUT","PATCH","DELETE","OPTIONS"],"x-enum-name":null,"x-enum-keys":[]},"headers":{"type":"object","description":"HTTP headers of execution. Defaults to empty.","default":[],"x-example":"{}"}}}}]}},"\/functions\/{functionId}\/executions\/{executionId}":{"get":{"summary":"Get execution","operationId":"functionsGetExecution","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a function execution log by its unique ID.","responses":{"200":{"description":"Execution","schema":{"$ref":"#\/definitions\/execution"}}},"x-appwrite":{"method":"getExecution","weight":269,"cookies":false,"type":"","demo":"functions\/get-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-execution.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"executionId","description":"Execution ID.","required":true,"type":"string","x-example":"[EXECUTION_ID]","in":"path"}]}},"\/functions\/{functionId}\/usage":{"get":{"summary":"Get function usage","operationId":"functionsGetFunctionUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"","responses":{"200":{"description":"UsageFunctions","schema":{"$ref":"#\/definitions\/usageFunctions"}}},"x-appwrite":{"method":"getFunctionUsage","weight":256,"cookies":false,"type":"","demo":"functions\/get-function-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","enum":["24h","7d","30d","90d"],"x-enum-name":null,"x-enum-keys":[],"default":"30d","in":"query"}]}},"\/functions\/{functionId}\/variables":{"get":{"summary":"List variables","operationId":"functionsListVariables","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all variables of a specific function.","responses":{"200":{"description":"Variables List","schema":{"$ref":"#\/definitions\/variableList"}}},"x-appwrite":{"method":"listVariables","weight":271,"cookies":false,"type":"","demo":"functions\/list-variables.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-variables.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"}]},"post":{"summary":"Create variable","operationId":"functionsCreateVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function environment variable. These variables can be accessed in the function at runtime as environment variables.","responses":{"201":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"createVariable","weight":270,"cookies":false,"type":"","demo":"functions\/create-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","default":null,"x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","default":null,"x-example":"[VALUE]"}},"required":["key","value"]}}]}},"\/functions\/{functionId}\/variables\/{variableId}":{"get":{"summary":"Get variable","operationId":"functionsGetVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a variable by its unique ID.","responses":{"200":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"getVariable","weight":272,"cookies":false,"type":"","demo":"functions\/get-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"}]},"put":{"summary":"Update variable","operationId":"functionsUpdateVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Update variable by its unique ID.","responses":{"200":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"updateVariable","weight":273,"cookies":false,"type":"","demo":"functions\/update-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","default":null,"x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","default":null,"x-example":"[VALUE]"}},"required":["key"]}}]},"delete":{"summary":"Delete variable","operationId":"functionsDeleteVariable","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"Delete a variable by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteVariable","weight":274,"cookies":false,"type":"","demo":"functions\/delete-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"}]}},"\/graphql":{"post":{"summary":"GraphQL endpoint","operationId":"graphqlQuery","consumes":["application\/json"],"produces":["application\/json"],"tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","schema":{"$ref":"#\/definitions\/any"}}},"x-appwrite":{"method":"query","weight":289,"cookies":false,"type":"graphql","demo":"graphql\/query.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"query":{"type":"object","description":"The query or queries to execute.","default":{},"x-example":"{}"}},"required":["query"]}}]}},"\/graphql\/mutation":{"post":{"summary":"GraphQL endpoint","operationId":"graphqlMutation","consumes":["application\/json"],"produces":["application\/json"],"tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","schema":{"$ref":"#\/definitions\/any"}}},"x-appwrite":{"method":"mutation","weight":288,"cookies":false,"type":"graphql","demo":"graphql\/mutation.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"query":{"type":"object","description":"The query or queries to execute.","default":{},"x-example":"{}"}},"required":["query"]}}]}},"\/health":{"get":{"summary":"Get HTTP","operationId":"healthGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite HTTP server is up and responsive.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"get","weight":109,"cookies":false,"type":"","demo":"health\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/anti-virus":{"get":{"summary":"Get antivirus","operationId":"healthGetAntivirus","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite Antivirus server is up and connection is successful.","responses":{"200":{"description":"Health Antivirus","schema":{"$ref":"#\/definitions\/healthAntivirus"}}},"x-appwrite":{"method":"getAntivirus","weight":127,"cookies":false,"type":"","demo":"health\/get-antivirus.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-storage-anti-virus.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/cache":{"get":{"summary":"Get cache","operationId":"healthGetCache","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite in-memory cache servers are up and connection is successful.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"getCache","weight":112,"cookies":false,"type":"","demo":"health\/get-cache.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-cache.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/db":{"get":{"summary":"Get DB","operationId":"healthGetDB","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite database servers are up and connection is successful.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"getDB","weight":111,"cookies":false,"type":"","demo":"health\/get-d-b.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-db.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/pubsub":{"get":{"summary":"Get pubsub","operationId":"healthGetPubSub","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite pub-sub servers are up and connection is successful.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"getPubSub","weight":114,"cookies":false,"type":"","demo":"health\/get-pub-sub.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-pubsub.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/queue":{"get":{"summary":"Get queue","operationId":"healthGetQueue","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite queue messaging servers are up and connection is successful.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"getQueue","weight":113,"cookies":false,"type":"","demo":"health\/get-queue.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/queue\/builds":{"get":{"summary":"Get builds queue","operationId":"healthGetQueueBuilds","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of builds that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueBuilds","weight":119,"cookies":false,"type":"","demo":"health\/get-queue-builds.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-builds.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/certificates":{"get":{"summary":"Get certificates queue","operationId":"healthGetQueueCertificates","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of certificates that are waiting to be issued against [Letsencrypt](https:\/\/letsencrypt.org\/) in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueCertificates","weight":118,"cookies":false,"type":"","demo":"health\/get-queue-certificates.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-certificates.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/databases":{"get":{"summary":"Get databases queue","operationId":"healthGetQueueDatabases","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of database changes that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueDatabases","weight":120,"cookies":false,"type":"","demo":"health\/get-queue-databases.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-databases.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"name","description":"Queue name for which to check the queue size","required":false,"type":"string","x-example":"[NAME]","default":"database_db_main","in":"query"},{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/deletes":{"get":{"summary":"Get deletes queue","operationId":"healthGetQueueDeletes","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of background destructive changes that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueDeletes","weight":121,"cookies":false,"type":"","demo":"health\/get-queue-deletes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-deletes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/functions":{"get":{"summary":"Get functions queue","operationId":"healthGetQueueFunctions","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueFunctions","weight":125,"cookies":false,"type":"","demo":"health\/get-queue-functions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-functions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/logs":{"get":{"summary":"Get logs queue","operationId":"healthGetQueueLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of logs that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueLogs","weight":117,"cookies":false,"type":"","demo":"health\/get-queue-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/mails":{"get":{"summary":"Get mails queue","operationId":"healthGetQueueMails","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of mails that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueMails","weight":122,"cookies":false,"type":"","demo":"health\/get-queue-mails.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-mails.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/messaging":{"get":{"summary":"Get messaging queue","operationId":"healthGetQueueMessaging","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of messages that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueMessaging","weight":123,"cookies":false,"type":"","demo":"health\/get-queue-messaging.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-messaging.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/migrations":{"get":{"summary":"Get migrations queue","operationId":"healthGetQueueMigrations","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of migrations that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueMigrations","weight":124,"cookies":false,"type":"","demo":"health\/get-queue-migrations.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-migrations.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/webhooks":{"get":{"summary":"Get webhooks queue","operationId":"healthGetQueueWebhooks","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of webhooks that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueWebhooks","weight":116,"cookies":false,"type":"","demo":"health\/get-queue-webhooks.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-webhooks.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/storage\/local":{"get":{"summary":"Get local storage","operationId":"healthGetStorageLocal","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite local storage device is up and connection is successful.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"getStorageLocal","weight":126,"cookies":false,"type":"","demo":"health\/get-storage-local.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-storage-local.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/time":{"get":{"summary":"Get time","operationId":"healthGetTime","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite server time is synced with Google remote NTP server. We use this technology to smoothly handle leap seconds with no disruptive events. The [Network Time Protocol](https:\/\/en.wikipedia.org\/wiki\/Network_Time_Protocol) (NTP) is used by hundreds of millions of computers and devices to synchronize their clocks over the Internet. If your computer sets its own clock, it likely uses NTP.","responses":{"200":{"description":"Health Time","schema":{"$ref":"#\/definitions\/healthTime"}}},"x-appwrite":{"method":"getTime","weight":115,"cookies":false,"type":"","demo":"health\/get-time.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-time.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/locale":{"get":{"summary":"Get user locale","operationId":"localeGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"Get the current user location based on IP. Returns an object with user country code, country name, continent name, continent code, ip address and suggested currency. You can use the locale header to get the data in a supported language.\n\n([IP Geolocation by DB-IP](https:\/\/db-ip.com))","responses":{"200":{"description":"Locale","schema":{"$ref":"#\/definitions\/locale"}}},"x-appwrite":{"method":"get","weight":101,"cookies":false,"type":"","demo":"locale\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-locale.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/localed","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/codes":{"get":{"summary":"List Locale Codes","operationId":"localeListCodes","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all locale codes in [ISO 639-1](https:\/\/en.wikipedia.org\/wiki\/List_of_ISO_639-1_codes).","responses":{"200":{"description":"Locale codes list","schema":{"$ref":"#\/definitions\/localeCodeList"}}},"x-appwrite":{"method":"listCodes","weight":102,"cookies":false,"type":"","demo":"locale\/list-codes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-locale-codes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/localeCode","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/continents":{"get":{"summary":"List continents","operationId":"localeListContinents","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","schema":{"$ref":"#\/definitions\/continentList"}}},"x-appwrite":{"method":"listContinents","weight":106,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/continents","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List countries","operationId":"localeListCountries","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountries","weight":103,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/countries","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU countries","operationId":"localeListCountriesEU","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountriesEU","weight":104,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/countries\/eu","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List countries phone codes","operationId":"localeListCountriesPhones","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","schema":{"$ref":"#\/definitions\/phoneList"}}},"x-appwrite":{"method":"listCountriesPhones","weight":105,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/countries\/phones","offline-key":"","offline-response-key":"countryCode","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List currencies","operationId":"localeListCurrencies","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","schema":{"$ref":"#\/definitions\/currencyList"}}},"x-appwrite":{"method":"listCurrencies","weight":107,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/currencies","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List languages","operationId":"localeListLanguages","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","schema":{"$ref":"#\/definitions\/languageList"}}},"x-appwrite":{"method":"listLanguages","weight":108,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/languages","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/messaging\/messages":{"get":{"summary":"List messages","operationId":"messagingListMessages","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Message list","schema":{"$ref":"#\/definitions\/messageList"}}},"x-appwrite":{"method":"listMessages","weight":346,"cookies":false,"type":"","demo":"messaging\/list-messages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-messages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: scheduledAt, deliveredAt, deliveredTotal, status, description, providerType","required":false,"type":"string","default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]}},"\/messaging\/messages\/email":{"post":{"summary":"Create an email.","operationId":"messagingCreateEmail","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Message","schema":{"$ref":"#\/definitions\/message"}}},"x-appwrite":{"method":"createEmail","weight":343,"cookies":false,"type":"","demo":"messaging\/create-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"messageId":{"type":"string","description":"Message ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[MESSAGE_ID]"},"subject":{"type":"string","description":"Email Subject.","default":null,"x-example":"[SUBJECT]"},"content":{"type":"string","description":"Email Content.","default":null,"x-example":"[CONTENT]"},"topics":{"type":"array","description":"List of Topic IDs.","default":[],"x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","default":[],"x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","default":[],"x-example":null,"items":{"type":"string"}},"cc":{"type":"array","description":"Array of target IDs to be added as CC.","default":[],"x-example":null,"items":{"type":"string"}},"bcc":{"type":"array","description":"Array of target IDs to be added as BCC.","default":[],"x-example":null,"items":{"type":"string"}},"description":{"type":"string","description":"Description for message.","default":"","x-example":"[DESCRIPTION]"},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","default":"draft","x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":null,"x-enum-keys":[]},"html":{"type":"boolean","description":"Is content of type HTML","default":false,"x-example":false},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","default":null,"x-example":null}},"required":["messageId","subject","content"]}}]}},"\/messaging\/messages\/email\/{messageId}":{"patch":{"summary":"Update an email.","operationId":"messagingUpdateEmail","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Message","schema":{"$ref":"#\/definitions\/message"}}},"x-appwrite":{"method":"updateEmail","weight":350,"cookies":false,"type":"","demo":"messaging\/update-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"type":"string","x-example":"[MESSAGE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"topics":{"type":"array","description":"List of Topic IDs.","default":null,"x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","default":null,"x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","default":null,"x-example":null,"items":{"type":"string"}},"subject":{"type":"string","description":"Email Subject.","default":null,"x-example":"[SUBJECT]"},"description":{"type":"string","description":"Description for Message.","default":null,"x-example":"[DESCRIPTION]"},"content":{"type":"string","description":"Email Content.","default":null,"x-example":"[CONTENT]"},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","default":"draft","x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":null,"x-enum-keys":[]},"html":{"type":"boolean","description":"Is content of type HTML","default":null,"x-example":false},"cc":{"type":"array","description":"Array of target IDs to be added as CC.","default":null,"x-example":null,"items":{"type":"string"}},"bcc":{"type":"array","description":"Array of target IDs to be added as BCC.","default":null,"x-example":null,"items":{"type":"string"}},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","default":null,"x-example":null}}}}]}},"\/messaging\/messages\/push":{"post":{"summary":"Create a push notification.","operationId":"messagingCreatePush","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Message","schema":{"$ref":"#\/definitions\/message"}}},"x-appwrite":{"method":"createPush","weight":345,"cookies":false,"type":"","demo":"messaging\/create-push.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-push-notification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"messageId":{"type":"string","description":"Message ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[MESSAGE_ID]"},"title":{"type":"string","description":"Title for push notification.","default":null,"x-example":"[TITLE]"},"body":{"type":"string","description":"Body for push notification.","default":null,"x-example":"[BODY]"},"topics":{"type":"array","description":"List of Topic IDs.","default":[],"x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","default":[],"x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","default":[],"x-example":null,"items":{"type":"string"}},"description":{"type":"string","description":"Description for Message.","default":"","x-example":"[DESCRIPTION]"},"data":{"type":"object","description":"Additional Data for push notification.","default":{},"x-example":"{}"},"action":{"type":"string","description":"Action for push notification.","default":"","x-example":"[ACTION]"},"icon":{"type":"string","description":"Icon for push notification. Available only for Android and Web Platform.","default":"","x-example":"[ICON]"},"sound":{"type":"string","description":"Sound for push notification. Available only for Android and IOS Platform.","default":"","x-example":"[SOUND]"},"color":{"type":"string","description":"Color for push notification. Available only for Android Platform.","default":"","x-example":"[COLOR]"},"tag":{"type":"string","description":"Tag for push notification. Available only for Android Platform.","default":"","x-example":"[TAG]"},"badge":{"type":"string","description":"Badge for push notification. Available only for IOS Platform.","default":"","x-example":"[BADGE]"},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","default":"draft","x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":null,"x-enum-keys":[]},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","default":null,"x-example":null}},"required":["messageId","title","body"]}}]}},"\/messaging\/messages\/push\/{messageId}":{"patch":{"summary":"Update a push notification.","operationId":"messagingUpdatePushNotification","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Message","schema":{"$ref":"#\/definitions\/message"}}},"x-appwrite":{"method":"updatePushNotification","weight":352,"cookies":false,"type":"","demo":"messaging\/update-push-notification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-push-notification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"type":"string","x-example":"[MESSAGE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"topics":{"type":"array","description":"List of Topic IDs.","default":null,"x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","default":null,"x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","default":null,"x-example":null,"items":{"type":"string"}},"description":{"type":"string","description":"Description for Message.","default":null,"x-example":"[DESCRIPTION]"},"title":{"type":"string","description":"Title for push notification.","default":null,"x-example":"[TITLE]"},"body":{"type":"string","description":"Body for push notification.","default":null,"x-example":"[BODY]"},"data":{"type":"object","description":"Additional Data for push notification.","default":{},"x-example":"{}"},"action":{"type":"string","description":"Action for push notification.","default":null,"x-example":"[ACTION]"},"icon":{"type":"string","description":"Icon for push notification. Available only for Android and Web platforms.","default":null,"x-example":"[ICON]"},"sound":{"type":"string","description":"Sound for push notification. Available only for Android and iOS platforms.","default":null,"x-example":"[SOUND]"},"color":{"type":"string","description":"Color for push notification. Available only for Android platforms.","default":null,"x-example":"[COLOR]"},"tag":{"type":"string","description":"Tag for push notification. Available only for Android platforms.","default":null,"x-example":"[TAG]"},"badge":{"type":"integer","description":"Badge for push notification. Available only for iOS platforms.","default":null,"x-example":null},"status":{"type":"string","description":"Message Status. Value must be either draft, cancelled, or processing.","default":null,"x-example":"draft","enum":["draft","cancelled","processing"],"x-enum-name":null,"x-enum-keys":[]},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","default":null,"x-example":null}}}}]}},"\/messaging\/messages\/sms":{"post":{"summary":"Create an SMS.","operationId":"messagingCreateSMS","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Message","schema":{"$ref":"#\/definitions\/message"}}},"x-appwrite":{"method":"createSMS","weight":344,"cookies":false,"type":"","demo":"messaging\/create-s-m-s.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-sms.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"messageId":{"type":"string","description":"Message ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[MESSAGE_ID]"},"content":{"type":"string","description":"SMS Content.","default":null,"x-example":"[CONTENT]"},"topics":{"type":"array","description":"List of Topic IDs.","default":[],"x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","default":[],"x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","default":[],"x-example":null,"items":{"type":"string"}},"description":{"type":"string","description":"Description for Message.","default":"","x-example":"[DESCRIPTION]"},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","default":"draft","x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":null,"x-enum-keys":[]},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","default":null,"x-example":null}},"required":["messageId","content"]}}]}},"\/messaging\/messages\/sms\/{messageId}":{"patch":{"summary":"Update an SMS.","operationId":"messagingUpdateSMS","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Message","schema":{"$ref":"#\/definitions\/message"}}},"x-appwrite":{"method":"updateSMS","weight":351,"cookies":false,"type":"","demo":"messaging\/update-s-m-s.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"type":"string","x-example":"[MESSAGE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"topics":{"type":"array","description":"List of Topic IDs.","default":null,"x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","default":null,"x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","default":null,"x-example":null,"items":{"type":"string"}},"description":{"type":"string","description":"Description for Message.","default":null,"x-example":"[DESCRIPTION]"},"content":{"type":"string","description":"Email Content.","default":null,"x-example":"[CONTENT]"},"status":{"type":"string","description":"Message Status. Value must be either draft or cancelled or processing.","default":null,"x-example":"draft","enum":["draft","cancelled","processing"],"x-enum-name":null,"x-enum-keys":[]},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","default":null,"x-example":null}}}}]}},"\/messaging\/messages\/{messageId}":{"get":{"summary":"Get a message","operationId":"messagingGetMessage","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Message","schema":{"$ref":"#\/definitions\/message"}}},"x-appwrite":{"method":"getMessage","weight":349,"cookies":false,"type":"","demo":"messaging\/get-message.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/get-message.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"type":"string","x-example":"[MESSAGE_ID]","in":"path"}]}},"\/messaging\/messages\/{messageId}\/logs":{"get":{"summary":"List message logs","operationId":"messagingListMessageLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listMessageLogs","weight":347,"cookies":false,"type":"","demo":"messaging\/list-message-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/messages\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"type":"string","x-example":"[MESSAGE_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/messaging\/messages\/{messageId}\/targets":{"get":{"summary":"List message targets","operationId":"messagingListTargets","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"List the targets associated with a message as set via the targets attribute.","responses":{"200":{"description":"Target list","schema":{"$ref":"#\/definitions\/targetList"}}},"x-appwrite":{"method":"listTargets","weight":348,"cookies":false,"type":"","demo":"messaging\/list-targets.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-message-targets.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"type":"string","x-example":"[MESSAGE_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, providerId, identifier, providerType","required":false,"type":"string","default":[],"in":"query"}]}},"\/messaging\/providers":{"get":{"summary":"List providers","operationId":"messagingListProviders","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider list","schema":{"$ref":"#\/definitions\/providerList"}}},"x-appwrite":{"method":"listProviders","weight":319,"cookies":false,"type":"","demo":"messaging\/list-providers.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-providers.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, provider, type, enabled","required":false,"type":"string","default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]}},"\/messaging\/providers\/apns":{"post":{"summary":"Create APNS provider","operationId":"messagingCreateAPNSProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createAPNSProvider","weight":318,"cookies":false,"type":"","demo":"messaging\/create-a-p-n-s-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-apns-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"authKey":{"type":"string","description":"APNS authentication key.","default":"","x-example":"[AUTH_KEY]"},"authKeyId":{"type":"string","description":"APNS authentication key ID.","default":"","x-example":"[AUTH_KEY_ID]"},"teamId":{"type":"string","description":"APNS team ID.","default":"","x-example":"[TEAM_ID]"},"bundleId":{"type":"string","description":"APNS bundle ID.","default":"","x-example":"[BUNDLE_ID]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name"]}}]}},"\/messaging\/providers\/apns\/{providerId}":{"patch":{"summary":"Update APNS provider","operationId":"messagingUpdateAPNSProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateAPNSProvider","weight":330,"cookies":false,"type":"","demo":"messaging\/update-a-p-n-s-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-apns-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"authKey":{"type":"string","description":"APNS authentication key.","default":"","x-example":"[AUTH_KEY]"},"authKeyId":{"type":"string","description":"APNS authentication key ID.","default":"","x-example":"[AUTH_KEY_ID]"},"teamId":{"type":"string","description":"APNS team ID.","default":"","x-example":"[TEAM_ID]"},"bundleId":{"type":"string","description":"APNS bundle ID.","default":"","x-example":"[BUNDLE_ID]"}}}}]}},"\/messaging\/providers\/fcm":{"post":{"summary":"Create FCM provider","operationId":"messagingCreateFCMProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createFCMProvider","weight":317,"cookies":false,"type":"","demo":"messaging\/create-f-c-m-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-fcm-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"serviceAccountJSON":{"type":"object","description":"FCM service account JSON.","default":{},"x-example":"{}"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name"]}}]}},"\/messaging\/providers\/fcm\/{providerId}":{"patch":{"summary":"Update FCM provider","operationId":"messagingUpdateFCMProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateFCMProvider","weight":329,"cookies":false,"type":"","demo":"messaging\/update-f-c-m-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-fcm-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"serviceAccountJSON":{"type":"object","description":"FCM service account JSON.","default":{},"x-example":"{}"}}}}]}},"\/messaging\/providers\/mailgun":{"post":{"summary":"Create Mailgun provider","operationId":"messagingCreateMailgunProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createMailgunProvider","weight":310,"cookies":false,"type":"","demo":"messaging\/create-mailgun-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-mailgun-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"apiKey":{"type":"string","description":"Mailgun API Key.","default":"","x-example":"[API_KEY]"},"domain":{"type":"string","description":"Mailgun Domain.","default":"","x-example":"[DOMAIN]"},"isEuRegion":{"type":"boolean","description":"Set as EU region.","default":null,"x-example":false},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"fromName":{"type":"string","description":"Sender Name.","default":"","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","default":"","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the reply to field for the mail. Default value is sender name. Reply to name must have reply to email as well.","default":"","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the reply to field for the mail. Default value is sender email. Reply to email must have reply to name as well.","default":"","x-example":"[REPLY_TO_EMAIL]"}},"required":["providerId","name"]}}]}},"\/messaging\/providers\/mailgun\/{providerId}":{"patch":{"summary":"Update Mailgun provider","operationId":"messagingUpdateMailgunProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateMailgunProvider","weight":322,"cookies":false,"type":"","demo":"messaging\/update-mailgun-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-mailgun-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"apiKey":{"type":"string","description":"Mailgun API Key.","default":"","x-example":"[API_KEY]"},"domain":{"type":"string","description":"Mailgun Domain.","default":"","x-example":"[DOMAIN]"},"isEuRegion":{"type":"boolean","description":"Set as EU region.","default":null,"x-example":false},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"fromName":{"type":"string","description":"Sender Name.","default":"","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","default":"","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the reply to field for the mail. Default value is sender name.","default":"","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the reply to field for the mail. Default value is sender email.","default":"","x-example":"[REPLY_TO_EMAIL]"}}}}]}},"\/messaging\/providers\/msg91":{"post":{"summary":"Create Msg91 provider","operationId":"messagingCreateMsg91Provider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createMsg91Provider","weight":312,"cookies":false,"type":"","demo":"messaging\/create-msg91provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-msg91-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":"","x-example":"+12065550100"},"senderId":{"type":"string","description":"Msg91 Sender ID.","default":"","x-example":"[SENDER_ID]"},"authKey":{"type":"string","description":"Msg91 Auth Key.","default":"","x-example":"[AUTH_KEY]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name"]}}]}},"\/messaging\/providers\/msg91\/{providerId}":{"patch":{"summary":"Update Msg91 provider","operationId":"messagingUpdateMsg91Provider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateMsg91Provider","weight":324,"cookies":false,"type":"","demo":"messaging\/update-msg91provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-msg91-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"senderId":{"type":"string","description":"Msg91 Sender ID.","default":"","x-example":"[SENDER_ID]"},"authKey":{"type":"string","description":"Msg91 Auth Key.","default":"","x-example":"[AUTH_KEY]"},"from":{"type":"string","description":"Sender number.","default":"","x-example":"[FROM]"}}}}]}},"\/messaging\/providers\/sendgrid":{"post":{"summary":"Create Sendgrid provider","operationId":"messagingCreateSendgridProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createSendgridProvider","weight":311,"cookies":false,"type":"","demo":"messaging\/create-sendgrid-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-sengrid-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"apiKey":{"type":"string","description":"Sendgrid API key.","default":"","x-example":"[API_KEY]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"fromName":{"type":"string","description":"Sender Name.","default":"","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","default":"","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the reply to field for the mail. Default value is sender name.","default":"","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the reply to field for the mail. Default value is sender email.","default":"","x-example":"[REPLY_TO_EMAIL]"}},"required":["providerId","name"]}}]}},"\/messaging\/providers\/sendgrid\/{providerId}":{"patch":{"summary":"Update Sendgrid provider","operationId":"messagingUpdateSendgridProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateSendgridProvider","weight":323,"cookies":false,"type":"","demo":"messaging\/update-sendgrid-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-sendgrid-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"apiKey":{"type":"string","description":"Sendgrid API key.","default":"","x-example":"[API_KEY]"},"fromName":{"type":"string","description":"Sender Name.","default":"","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","default":"","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the Reply To field for the mail. Default value is Sender Name.","default":"","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the Reply To field for the mail. Default value is Sender Email.","default":"","x-example":"[REPLY_TO_EMAIL]"}}}}]}},"\/messaging\/providers\/telesign":{"post":{"summary":"Create Telesign provider","operationId":"messagingCreateTelesignProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createTelesignProvider","weight":313,"cookies":false,"type":"","demo":"messaging\/create-telesign-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-telesign-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":"","x-example":"+12065550100"},"username":{"type":"string","description":"Telesign username.","default":"","x-example":"[USERNAME]"},"password":{"type":"string","description":"Telesign password.","default":"","x-example":"[PASSWORD]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name"]}}]}},"\/messaging\/providers\/telesign\/{providerId}":{"patch":{"summary":"Update Telesign provider","operationId":"messagingUpdateTelesignProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateTelesignProvider","weight":325,"cookies":false,"type":"","demo":"messaging\/update-telesign-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-telesign-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"username":{"type":"string","description":"Telesign username.","default":"","x-example":"[USERNAME]"},"password":{"type":"string","description":"Telesign password.","default":"","x-example":"[PASSWORD]"},"from":{"type":"string","description":"Sender number.","default":"","x-example":"[FROM]"}}}}]}},"\/messaging\/providers\/textmagic":{"post":{"summary":"Create Textmagic provider","operationId":"messagingCreateTextmagicProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createTextmagicProvider","weight":314,"cookies":false,"type":"","demo":"messaging\/create-textmagic-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-textmagic-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":"","x-example":"+12065550100"},"username":{"type":"string","description":"Textmagic username.","default":"","x-example":"[USERNAME]"},"apiKey":{"type":"string","description":"Textmagic apiKey.","default":"","x-example":"[API_KEY]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name"]}}]}},"\/messaging\/providers\/textmagic\/{providerId}":{"patch":{"summary":"Update Textmagic provider","operationId":"messagingUpdateTextmagicProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateTextmagicProvider","weight":326,"cookies":false,"type":"","demo":"messaging\/update-textmagic-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-textmagic-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"username":{"type":"string","description":"Textmagic username.","default":"","x-example":"[USERNAME]"},"apiKey":{"type":"string","description":"Textmagic apiKey.","default":"","x-example":"[API_KEY]"},"from":{"type":"string","description":"Sender number.","default":"","x-example":"[FROM]"}}}}]}},"\/messaging\/providers\/twilio":{"post":{"summary":"Create Twilio provider","operationId":"messagingCreateTwilioProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createTwilioProvider","weight":315,"cookies":false,"type":"","demo":"messaging\/create-twilio-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-twilio-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":"","x-example":"+12065550100"},"accountSid":{"type":"string","description":"Twilio account secret ID.","default":"","x-example":"[ACCOUNT_SID]"},"authToken":{"type":"string","description":"Twilio authentication token.","default":"","x-example":"[AUTH_TOKEN]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name"]}}]}},"\/messaging\/providers\/twilio\/{providerId}":{"patch":{"summary":"Update Twilio provider","operationId":"messagingUpdateTwilioProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateTwilioProvider","weight":327,"cookies":false,"type":"","demo":"messaging\/update-twilio-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-twilio-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"accountSid":{"type":"string","description":"Twilio account secret ID.","default":"","x-example":"[ACCOUNT_SID]"},"authToken":{"type":"string","description":"Twilio authentication token.","default":"","x-example":"[AUTH_TOKEN]"},"from":{"type":"string","description":"Sender number.","default":"","x-example":"[FROM]"}}}}]}},"\/messaging\/providers\/vonage":{"post":{"summary":"Create Vonage provider","operationId":"messagingCreateVonageProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createVonageProvider","weight":316,"cookies":false,"type":"","demo":"messaging\/create-vonage-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-vonage-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":"","x-example":"+12065550100"},"apiKey":{"type":"string","description":"Vonage API key.","default":"","x-example":"[API_KEY]"},"apiSecret":{"type":"string","description":"Vonage API secret.","default":"","x-example":"[API_SECRET]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name"]}}]}},"\/messaging\/providers\/vonage\/{providerId}":{"patch":{"summary":"Update Vonage provider","operationId":"messagingUpdateVonageProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateVonageProvider","weight":328,"cookies":false,"type":"","demo":"messaging\/update-vonage-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-vonage-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"apiKey":{"type":"string","description":"Vonage API key.","default":"","x-example":"[API_KEY]"},"apiSecret":{"type":"string","description":"Vonage API secret.","default":"","x-example":"[API_SECRET]"},"from":{"type":"string","description":"Sender number.","default":"","x-example":"[FROM]"}}}}]}},"\/messaging\/providers\/{providerId}":{"get":{"summary":"Get provider","operationId":"messagingGetProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"getProvider","weight":321,"cookies":false,"type":"","demo":"messaging\/get-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/get-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"}]},"delete":{"summary":"Delete provider","operationId":"messagingDeleteProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteProvider","weight":331,"cookies":false,"type":"","demo":"messaging\/delete-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"}]}},"\/messaging\/providers\/{providerId}\/logs":{"get":{"summary":"List provider logs","operationId":"messagingListProviderLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listProviderLogs","weight":320,"cookies":false,"type":"","demo":"messaging\/list-provider-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/providers\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/messaging\/subscribers\/{subscriberId}\/logs":{"get":{"summary":"List subscriber logs","operationId":"messagingListSubscriberLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listSubscriberLogs","weight":340,"cookies":false,"type":"","demo":"messaging\/list-subscriber-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/subscribers\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"subscriberId","description":"Subscriber ID.","required":true,"type":"string","x-example":"[SUBSCRIBER_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/messaging\/topics":{"get":{"summary":"List topics.","operationId":"messagingListTopics","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Topic list","schema":{"$ref":"#\/definitions\/topicList"}}},"x-appwrite":{"method":"listTopics","weight":333,"cookies":false,"type":"","demo":"messaging\/list-topics.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-topics.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, description, total","required":false,"type":"string","default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create a topic.","operationId":"messagingCreateTopic","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Topic","schema":{"$ref":"#\/definitions\/topic"}}},"x-appwrite":{"method":"createTopic","weight":332,"cookies":false,"type":"","demo":"messaging\/create-topic.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-topic.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"topicId":{"type":"string","description":"Topic ID. Choose a custom Topic ID or a new Topic ID.","default":null,"x-example":"[TOPIC_ID]"},"name":{"type":"string","description":"Topic Name.","default":null,"x-example":"[NAME]"},"description":{"type":"string","description":"Topic Description.","default":"","x-example":"[DESCRIPTION]"}},"required":["topicId","name"]}}]}},"\/messaging\/topics\/{topicId}":{"get":{"summary":"Get a topic.","operationId":"messagingGetTopic","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Topic","schema":{"$ref":"#\/definitions\/topic"}}},"x-appwrite":{"method":"getTopic","weight":335,"cookies":false,"type":"","demo":"messaging\/get-topic.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/get-topic.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID.","required":true,"type":"string","x-example":"[TOPIC_ID]","in":"path"}]},"patch":{"summary":"Update a topic.","operationId":"messagingUpdateTopic","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Topic","schema":{"$ref":"#\/definitions\/topic"}}},"x-appwrite":{"method":"updateTopic","weight":336,"cookies":false,"type":"","demo":"messaging\/update-topic.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-topic.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID.","required":true,"type":"string","x-example":"[TOPIC_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Topic Name.","default":"","x-example":"[NAME]"},"description":{"type":"string","description":"Topic Description.","default":"","x-example":"[DESCRIPTION]"}}}}]},"delete":{"summary":"Delete a topic.","operationId":"messagingDeleteTopic","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteTopic","weight":337,"cookies":false,"type":"","demo":"messaging\/delete-topic.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-topic.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID.","required":true,"type":"string","x-example":"[TOPIC_ID]","in":"path"}]}},"\/messaging\/topics\/{topicId}\/logs":{"get":{"summary":"List topic logs","operationId":"messagingListTopicLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listTopicLogs","weight":334,"cookies":false,"type":"","demo":"messaging\/list-topic-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/topics\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID.","required":true,"type":"string","x-example":"[TOPIC_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/messaging\/topics\/{topicId}\/subscribers":{"get":{"summary":"List subscribers.","operationId":"messagingListSubscribers","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Subscriber list","schema":{"$ref":"#\/definitions\/subscriberList"}}},"x-appwrite":{"method":"listSubscribers","weight":339,"cookies":false,"type":"","demo":"messaging\/list-subscribers.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-subscribers.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID subscribed to.","required":true,"type":"string","x-example":"[TOPIC_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, provider, type, enabled","required":false,"type":"string","default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create a subscriber.","operationId":"messagingCreateSubscriber","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Subscriber","schema":{"$ref":"#\/definitions\/subscriber"}}},"x-appwrite":{"method":"createSubscriber","weight":338,"cookies":false,"type":"","demo":"messaging\/create-subscriber.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-subscriber.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.write","platforms":["server","client","console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID to subscribe to.","required":true,"type":"string","x-example":"[TOPIC_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"subscriberId":{"type":"string","description":"Subscriber ID. Choose a custom Subscriber ID or a new Subscriber ID.","default":null,"x-example":"[SUBSCRIBER_ID]"},"targetId":{"type":"string","description":"Target ID. The target ID to link to the specified Topic ID.","default":null,"x-example":"[TARGET_ID]"}},"required":["subscriberId","targetId"]}}]}},"\/messaging\/topics\/{topicId}\/subscribers\/{subscriberId}":{"get":{"summary":"Get a subscriber.","operationId":"messagingGetSubscriber","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Subscriber","schema":{"$ref":"#\/definitions\/subscriber"}}},"x-appwrite":{"method":"getSubscriber","weight":341,"cookies":false,"type":"","demo":"messaging\/get-subscriber.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/get-subscriber.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID subscribed to.","required":true,"type":"string","x-example":"[TOPIC_ID]","in":"path"},{"name":"subscriberId","description":"Subscriber ID.","required":true,"type":"string","x-example":"[SUBSCRIBER_ID]","in":"path"}]},"delete":{"summary":"Delete a subscriber.","operationId":"messagingDeleteSubscriber","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSubscriber","weight":342,"cookies":false,"type":"","demo":"messaging\/delete-subscriber.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-subscriber.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.write","platforms":["server","client","console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID subscribed to.","required":true,"type":"string","x-example":"[TOPIC_ID]","in":"path"},{"name":"subscriberId","description":"Subscriber ID.","required":true,"type":"string","x-example":"[SUBSCRIBER_ID]","in":"path"}]}},"\/migrations":{"get":{"summary":"List Migrations","operationId":"migrationsList","consumes":["application\/json"],"produces":["application\/json"],"tags":["migrations"],"description":"","responses":{"200":{"description":"Migrations List","schema":{"$ref":"#\/definitions\/migrationList"}}},"x-appwrite":{"method":"list","weight":297,"cookies":false,"type":"","demo":"migrations\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/list-migrations.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: status, stage, source, resources, statusCounters, resourceData, errors","required":false,"type":"string","default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]}},"\/migrations\/appwrite":{"post":{"summary":"Migrate Appwrite Data","operationId":"migrationsCreateAppwriteMigration","consumes":["application\/json"],"produces":["application\/json"],"tags":["migrations"],"description":"","responses":{"202":{"description":"Migration","schema":{"$ref":"#\/definitions\/migration"}}},"x-appwrite":{"method":"createAppwriteMigration","weight":292,"cookies":false,"type":"","demo":"migrations\/create-appwrite-migration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-appwrite.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"resources":{"type":"array","description":"List of resources to migrate","default":null,"x-example":null,"items":{"type":"string"}},"endpoint":{"type":"string","description":"Source's Appwrite Endpoint","default":null,"x-example":"https:\/\/example.com"},"projectId":{"type":"string","description":"Source's Project ID","default":null,"x-example":"[PROJECT_ID]"},"apiKey":{"type":"string","description":"Source's API Key","default":null,"x-example":"[API_KEY]"}},"required":["resources","endpoint","projectId","apiKey"]}}]}},"\/migrations\/appwrite\/report":{"get":{"summary":"Generate a report on Appwrite Data","operationId":"migrationsGetAppwriteReport","consumes":["application\/json"],"produces":["application\/json"],"tags":["migrations"],"description":"","responses":{"200":{"description":"Migration Report","schema":{"$ref":"#\/definitions\/migrationReport"}}},"x-appwrite":{"method":"getAppwriteReport","weight":299,"cookies":false,"type":"","demo":"migrations\/get-appwrite-report.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-appwrite-report.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"resources","description":"List of resources to migrate","required":true,"type":"array","collectionFormat":"multi","items":{"type":"string"},"in":"query"},{"name":"endpoint","description":"Source's Appwrite Endpoint","required":true,"type":"string","format":"url","x-example":"https:\/\/example.com","in":"query"},{"name":"projectID","description":"Source's Project ID","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"query"},{"name":"key","description":"Source's API Key","required":true,"type":"string","x-example":"[KEY]","in":"query"}]}},"\/migrations\/firebase":{"post":{"summary":"Migrate Firebase Data (Service Account)","operationId":"migrationsCreateFirebaseMigration","consumes":["application\/json"],"produces":["application\/json"],"tags":["migrations"],"description":"","responses":{"202":{"description":"Migration","schema":{"$ref":"#\/definitions\/migration"}}},"x-appwrite":{"method":"createFirebaseMigration","weight":294,"cookies":false,"type":"","demo":"migrations\/create-firebase-migration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-firebase.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"resources":{"type":"array","description":"List of resources to migrate","default":null,"x-example":null,"items":{"type":"string"}},"serviceAccount":{"type":"string","description":"JSON of the Firebase service account credentials","default":null,"x-example":"[SERVICE_ACCOUNT]"}},"required":["resources","serviceAccount"]}}]}},"\/migrations\/firebase\/deauthorize":{"get":{"summary":"Revoke Appwrite's authorization to access Firebase Projects","operationId":"migrationsDeleteFirebaseAuth","consumes":["application\/json"],"produces":["application\/json"],"tags":["migrations"],"description":"","responses":{"200":{"description":"File","schema":{"type":"file"}}},"x-appwrite":{"method":"deleteFirebaseAuth","weight":305,"cookies":false,"type":"","demo":"migrations\/delete-firebase-auth.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/migrations\/firebase\/oauth":{"post":{"summary":"Migrate Firebase Data (OAuth)","operationId":"migrationsCreateFirebaseOAuthMigration","consumes":["application\/json"],"produces":["application\/json"],"tags":["migrations"],"description":"","responses":{"202":{"description":"Migration","schema":{"$ref":"#\/definitions\/migration"}}},"x-appwrite":{"method":"createFirebaseOAuthMigration","weight":293,"cookies":false,"type":"","demo":"migrations\/create-firebase-o-auth-migration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-firebase.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"resources":{"type":"array","description":"List of resources to migrate","default":null,"x-example":null,"items":{"type":"string"}},"projectId":{"type":"string","description":"Project ID of the Firebase Project","default":null,"x-example":"[PROJECT_ID]"}},"required":["resources","projectId"]}}]}},"\/migrations\/firebase\/projects":{"get":{"summary":"List Firebase Projects","operationId":"migrationsListFirebaseProjects","consumes":["application\/json"],"produces":["application\/json"],"tags":["migrations"],"description":"","responses":{"200":{"description":"Migrations Firebase Projects List","schema":{"$ref":"#\/definitions\/firebaseProjectList"}}},"x-appwrite":{"method":"listFirebaseProjects","weight":304,"cookies":false,"type":"","demo":"migrations\/list-firebase-projects.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/migrations\/firebase\/report":{"get":{"summary":"Generate a report on Firebase Data","operationId":"migrationsGetFirebaseReport","consumes":["application\/json"],"produces":["application\/json"],"tags":["migrations"],"description":"","responses":{"200":{"description":"Migration Report","schema":{"$ref":"#\/definitions\/migrationReport"}}},"x-appwrite":{"method":"getFirebaseReport","weight":300,"cookies":false,"type":"","demo":"migrations\/get-firebase-report.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-firebase-report.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"resources","description":"List of resources to migrate","required":true,"type":"array","collectionFormat":"multi","items":{"type":"string"},"in":"query"},{"name":"serviceAccount","description":"JSON of the Firebase service account credentials","required":true,"type":"string","x-example":"[SERVICE_ACCOUNT]","in":"query"}]}},"\/migrations\/firebase\/report\/oauth":{"get":{"summary":"Generate a report on Firebase Data using OAuth","operationId":"migrationsGetFirebaseReportOAuth","consumes":["application\/json"],"produces":["application\/json"],"tags":["migrations"],"description":"","responses":{"200":{"description":"Migration Report","schema":{"$ref":"#\/definitions\/migrationReport"}}},"x-appwrite":{"method":"getFirebaseReportOAuth","weight":301,"cookies":false,"type":"","demo":"migrations\/get-firebase-report-o-auth.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-firebase-report.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"resources","description":"List of resources to migrate","required":true,"type":"array","collectionFormat":"multi","items":{"type":"string"},"in":"query"},{"name":"projectId","description":"Project ID","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"query"}]}},"\/migrations\/nhost":{"post":{"summary":"Migrate NHost Data","operationId":"migrationsCreateNHostMigration","consumes":["application\/json"],"produces":["application\/json"],"tags":["migrations"],"description":"","responses":{"202":{"description":"Migration","schema":{"$ref":"#\/definitions\/migration"}}},"x-appwrite":{"method":"createNHostMigration","weight":296,"cookies":false,"type":"","demo":"migrations\/create-n-host-migration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-nhost.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"resources":{"type":"array","description":"List of resources to migrate","default":null,"x-example":null,"items":{"type":"string"}},"subdomain":{"type":"string","description":"Source's Subdomain","default":null,"x-example":"[SUBDOMAIN]"},"region":{"type":"string","description":"Source's Region","default":null,"x-example":"[REGION]"},"adminSecret":{"type":"string","description":"Source's Admin Secret","default":null,"x-example":"[ADMIN_SECRET]"},"database":{"type":"string","description":"Source's Database Name","default":null,"x-example":"[DATABASE]"},"username":{"type":"string","description":"Source's Database Username","default":null,"x-example":"[USERNAME]"},"password":{"type":"string","description":"Source's Database Password","default":null,"x-example":"[PASSWORD]"},"port":{"type":"integer","description":"Source's Database Port","default":5432,"x-example":null}},"required":["resources","subdomain","region","adminSecret","database","username","password"]}}]}},"\/migrations\/nhost\/report":{"get":{"summary":"Generate a report on NHost Data","operationId":"migrationsGetNHostReport","consumes":["application\/json"],"produces":["application\/json"],"tags":["migrations"],"description":"","responses":{"200":{"description":"Migration Report","schema":{"$ref":"#\/definitions\/migrationReport"}}},"x-appwrite":{"method":"getNHostReport","weight":307,"cookies":false,"type":"","demo":"migrations\/get-n-host-report.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-nhost-report.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"resources","description":"List of resources to migrate.","required":true,"type":"array","collectionFormat":"multi","items":{"type":"string"},"in":"query"},{"name":"subdomain","description":"Source's Subdomain.","required":true,"type":"string","x-example":"[SUBDOMAIN]","in":"query"},{"name":"region","description":"Source's Region.","required":true,"type":"string","x-example":"[REGION]","in":"query"},{"name":"adminSecret","description":"Source's Admin Secret.","required":true,"type":"string","x-example":"[ADMIN_SECRET]","in":"query"},{"name":"database","description":"Source's Database Name.","required":true,"type":"string","x-example":"[DATABASE]","in":"query"},{"name":"username","description":"Source's Database Username.","required":true,"type":"string","x-example":"[USERNAME]","in":"query"},{"name":"password","description":"Source's Database Password.","required":true,"type":"string","x-example":"[PASSWORD]","in":"query"},{"name":"port","description":"Source's Database Port.","required":false,"type":"integer","format":"int32","default":5432,"in":"query"}]}},"\/migrations\/supabase":{"post":{"summary":"Migrate Supabase Data","operationId":"migrationsCreateSupabaseMigration","consumes":["application\/json"],"produces":["application\/json"],"tags":["migrations"],"description":"","responses":{"202":{"description":"Migration","schema":{"$ref":"#\/definitions\/migration"}}},"x-appwrite":{"method":"createSupabaseMigration","weight":295,"cookies":false,"type":"","demo":"migrations\/create-supabase-migration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-supabase.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"resources":{"type":"array","description":"List of resources to migrate","default":null,"x-example":null,"items":{"type":"string"}},"endpoint":{"type":"string","description":"Source's Supabase Endpoint","default":null,"x-example":"https:\/\/example.com"},"apiKey":{"type":"string","description":"Source's API Key","default":null,"x-example":"[API_KEY]"},"databaseHost":{"type":"string","description":"Source's Database Host","default":null,"x-example":"[DATABASE_HOST]"},"username":{"type":"string","description":"Source's Database Username","default":null,"x-example":"[USERNAME]"},"password":{"type":"string","description":"Source's Database Password","default":null,"x-example":"[PASSWORD]"},"port":{"type":"integer","description":"Source's Database Port","default":5432,"x-example":null}},"required":["resources","endpoint","apiKey","databaseHost","username","password"]}}]}},"\/migrations\/supabase\/report":{"get":{"summary":"Generate a report on Supabase Data","operationId":"migrationsGetSupabaseReport","consumes":["application\/json"],"produces":["application\/json"],"tags":["migrations"],"description":"","responses":{"200":{"description":"Migration Report","schema":{"$ref":"#\/definitions\/migrationReport"}}},"x-appwrite":{"method":"getSupabaseReport","weight":306,"cookies":false,"type":"","demo":"migrations\/get-supabase-report.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-supabase-report.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"resources","description":"List of resources to migrate","required":true,"type":"array","collectionFormat":"multi","items":{"type":"string"},"in":"query"},{"name":"endpoint","description":"Source's Supabase Endpoint.","required":true,"type":"string","format":"url","x-example":"https:\/\/example.com","in":"query"},{"name":"apiKey","description":"Source's API Key.","required":true,"type":"string","x-example":"[API_KEY]","in":"query"},{"name":"databaseHost","description":"Source's Database Host.","required":true,"type":"string","x-example":"[DATABASE_HOST]","in":"query"},{"name":"username","description":"Source's Database Username.","required":true,"type":"string","x-example":"[USERNAME]","in":"query"},{"name":"password","description":"Source's Database Password.","required":true,"type":"string","x-example":"[PASSWORD]","in":"query"},{"name":"port","description":"Source's Database Port.","required":false,"type":"integer","format":"int32","default":5432,"in":"query"}]}},"\/migrations\/{migrationId}":{"get":{"summary":"Get Migration","operationId":"migrationsGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["migrations"],"description":"","responses":{"200":{"description":"Migration","schema":{"$ref":"#\/definitions\/migration"}}},"x-appwrite":{"method":"get","weight":298,"cookies":false,"type":"","demo":"migrations\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/get-migration.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"migrationId","description":"Migration unique ID.","required":true,"type":"string","x-example":"[MIGRATION_ID]","in":"path"}]},"patch":{"summary":"Retry Migration","operationId":"migrationsRetry","consumes":["application\/json"],"produces":["application\/json"],"tags":["migrations"],"description":"","responses":{"202":{"description":"Migration","schema":{"$ref":"#\/definitions\/migration"}}},"x-appwrite":{"method":"retry","weight":308,"cookies":false,"type":"","demo":"migrations\/retry.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/retry-migration.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"migrationId","description":"Migration unique ID.","required":true,"type":"string","x-example":"[MIGRATION_ID]","in":"path"}]},"delete":{"summary":"Delete Migration","operationId":"migrationsDelete","consumes":["application\/json"],"produces":[],"tags":["migrations"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":309,"cookies":false,"type":"","demo":"migrations\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-migration.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"migrationId","description":"Migration ID.","required":true,"type":"string","x-example":"[MIGRATION_ID]","in":"path"}]}},"\/project\/usage":{"get":{"summary":"Get usage stats for a project","operationId":"projectGetUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["project"],"description":"","responses":{"200":{"description":"UsageProject","schema":{"$ref":"#\/definitions\/usageProject"}}},"x-appwrite":{"method":"getUsage","weight":169,"cookies":false,"type":"","demo":"project\/get-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","enum":["24h","7d","30d","90d"],"x-enum-name":null,"x-enum-keys":[],"default":"30d","in":"query"}]}},"\/project\/variables":{"get":{"summary":"List Variables","operationId":"projectListVariables","consumes":["application\/json"],"produces":["application\/json"],"tags":["project"],"description":"Get a list of all project variables. These variables will be accessible in all Appwrite Functions at runtime.","responses":{"200":{"description":"Variables List","schema":{"$ref":"#\/definitions\/variableList"}}},"x-appwrite":{"method":"listVariables","weight":171,"cookies":false,"type":"","demo":"project\/list-variables.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/project\/list-variables.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]},"post":{"summary":"Create Variable","operationId":"projectCreateVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["project"],"description":"Create a new project variable. This variable will be accessible in all Appwrite Functions at runtime.","responses":{"201":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"createVariable","weight":170,"cookies":false,"type":"","demo":"project\/create-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/project\/create-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","default":null,"x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","default":null,"x-example":"[VALUE]"}},"required":["key","value"]}}]}},"\/project\/variables\/{variableId}":{"get":{"summary":"Get Variable","operationId":"projectGetVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["project"],"description":"Get a project variable by its unique ID.","responses":{"200":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"getVariable","weight":172,"cookies":false,"type":"","demo":"project\/get-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/project\/get-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"}]},"put":{"summary":"Update Variable","operationId":"projectUpdateVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["project"],"description":"Update project variable by its unique ID. This variable will be accessible in all Appwrite Functions at runtime.","responses":{"200":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"updateVariable","weight":173,"cookies":false,"type":"","demo":"project\/update-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/project\/update-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","default":null,"x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","default":null,"x-example":"[VALUE]"}},"required":["key"]}}]},"delete":{"summary":"Delete Variable","operationId":"projectDeleteVariable","consumes":["application\/json"],"produces":[],"tags":["project"],"description":"Delete a project variable by its unique ID. ","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteVariable","weight":174,"cookies":false,"type":"","demo":"project\/delete-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/project\/delete-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"}]}},"\/projects":{"get":{"summary":"List projects","operationId":"projectsList","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Projects List","schema":{"$ref":"#\/definitions\/projectList"}}},"x-appwrite":{"method":"list","weight":130,"cookies":false,"type":"","demo":"projects\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, teamId","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create project","operationId":"projectsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"201":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"create","weight":129,"cookies":false,"type":"","demo":"projects\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"projectId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, and hyphen. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":null},"name":{"type":"string","description":"Project name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"teamId":{"type":"string","description":"Team unique ID.","default":null,"x-example":"[TEAM_ID]"},"region":{"type":"string","description":"Project Region.","default":"default","x-example":"default","enum":["default"],"x-enum-name":null,"x-enum-keys":[]},"description":{"type":"string","description":"Project description. Max length: 256 chars.","default":"","x-example":"[DESCRIPTION]"},"logo":{"type":"string","description":"Project logo.","default":"","x-example":"[LOGO]"},"url":{"type":"string","description":"Project URL.","default":"","x-example":"https:\/\/example.com"},"legalName":{"type":"string","description":"Project legal Name. Max length: 256 chars.","default":"","x-example":"[LEGAL_NAME]"},"legalCountry":{"type":"string","description":"Project legal Country. Max length: 256 chars.","default":"","x-example":"[LEGAL_COUNTRY]"},"legalState":{"type":"string","description":"Project legal State. Max length: 256 chars.","default":"","x-example":"[LEGAL_STATE]"},"legalCity":{"type":"string","description":"Project legal City. Max length: 256 chars.","default":"","x-example":"[LEGAL_CITY]"},"legalAddress":{"type":"string","description":"Project legal Address. Max length: 256 chars.","default":"","x-example":"[LEGAL_ADDRESS]"},"legalTaxId":{"type":"string","description":"Project legal Tax ID. Max length: 256 chars.","default":"","x-example":"[LEGAL_TAX_ID]"}},"required":["projectId","name","teamId"]}}]}},"\/projects\/{projectId}":{"get":{"summary":"Get project","operationId":"projectsGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"get","weight":131,"cookies":false,"type":"","demo":"projects\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"}]},"patch":{"summary":"Update project","operationId":"projectsUpdate","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"update","weight":133,"cookies":false,"type":"","demo":"projects\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Project name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"description":{"type":"string","description":"Project description. Max length: 256 chars.","default":"","x-example":"[DESCRIPTION]"},"logo":{"type":"string","description":"Project logo.","default":"","x-example":"[LOGO]"},"url":{"type":"string","description":"Project URL.","default":"","x-example":"https:\/\/example.com"},"legalName":{"type":"string","description":"Project legal name. Max length: 256 chars.","default":"","x-example":"[LEGAL_NAME]"},"legalCountry":{"type":"string","description":"Project legal country. Max length: 256 chars.","default":"","x-example":"[LEGAL_COUNTRY]"},"legalState":{"type":"string","description":"Project legal state. Max length: 256 chars.","default":"","x-example":"[LEGAL_STATE]"},"legalCity":{"type":"string","description":"Project legal city. Max length: 256 chars.","default":"","x-example":"[LEGAL_CITY]"},"legalAddress":{"type":"string","description":"Project legal address. Max length: 256 chars.","default":"","x-example":"[LEGAL_ADDRESS]"},"legalTaxId":{"type":"string","description":"Project legal tax ID. Max length: 256 chars.","default":"","x-example":"[LEGAL_TAX_ID]"}},"required":["name"]}}]},"delete":{"summary":"Delete project","operationId":"projectsDelete","consumes":["application\/json"],"produces":[],"tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":145,"cookies":false,"type":"","demo":"projects\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"}]}},"\/projects\/{projectId}\/auth\/duration":{"patch":{"summary":"Update project authentication duration","operationId":"projectsUpdateAuthDuration","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateAuthDuration","weight":139,"cookies":false,"type":"","demo":"projects\/update-auth-duration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"duration":{"type":"integer","description":"Project session length in seconds. Max length: 31536000 seconds.","default":null,"x-example":0}},"required":["duration"]}}]}},"\/projects\/{projectId}\/auth\/limit":{"patch":{"summary":"Update project users limit","operationId":"projectsUpdateAuthLimit","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateAuthLimit","weight":138,"cookies":false,"type":"","demo":"projects\/update-auth-limit.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"limit":{"type":"integer","description":"Set the max number of users allowed in this project. Use 0 for unlimited.","default":null,"x-example":0}},"required":["limit"]}}]}},"\/projects\/{projectId}\/auth\/max-sessions":{"patch":{"summary":"Update project user sessions limit","operationId":"projectsUpdateAuthSessionsLimit","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateAuthSessionsLimit","weight":144,"cookies":false,"type":"","demo":"projects\/update-auth-sessions-limit.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"limit":{"type":"integer","description":"Set the max number of users allowed in this project. Value allowed is between 1-100. Default is 10","default":null,"x-example":1}},"required":["limit"]}}]}},"\/projects\/{projectId}\/auth\/password-dictionary":{"patch":{"summary":"Update authentication password dictionary status. Use this endpoint to enable or disable the dicitonary check for user password","operationId":"projectsUpdateAuthPasswordDictionary","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateAuthPasswordDictionary","weight":142,"cookies":false,"type":"","demo":"projects\/update-auth-password-dictionary.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Set whether or not to enable checking user's password against most commonly used passwords. Default is false.","default":null,"x-example":false}},"required":["enabled"]}}]}},"\/projects\/{projectId}\/auth\/password-history":{"patch":{"summary":"Update authentication password history. Use this endpoint to set the number of password history to save and 0 to disable password history.","operationId":"projectsUpdateAuthPasswordHistory","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateAuthPasswordHistory","weight":141,"cookies":false,"type":"","demo":"projects\/update-auth-password-history.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"limit":{"type":"integer","description":"Set the max number of passwords to store in user history. User can't choose a new password that is already stored in the password history list. Max number of passwords allowed in history is20. Default value is 0","default":null,"x-example":0}},"required":["limit"]}}]}},"\/projects\/{projectId}\/auth\/personal-data":{"patch":{"summary":"Enable or disable checking user passwords for similarity with their personal data.","operationId":"projectsUpdatePersonalDataCheck","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updatePersonalDataCheck","weight":143,"cookies":false,"type":"","demo":"projects\/update-personal-data-check.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Set whether or not to check a password for similarity with personal data. Default is false.","default":null,"x-example":false}},"required":["enabled"]}}]}},"\/projects\/{projectId}\/auth\/{method}":{"patch":{"summary":"Update project auth method status. Use this endpoint to enable or disable a given auth method for this project.","operationId":"projectsUpdateAuthStatus","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateAuthStatus","weight":140,"cookies":false,"type":"","demo":"projects\/update-auth-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"method","description":"Auth Method. Possible values: email-password,magic-url,anonymous,invites,jwt,phone","required":true,"type":"string","x-example":"email-password","enum":["email-password","magic-url","anonymous","invites","jwt","phone"],"x-enum-name":null,"x-enum-keys":[],"in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"status":{"type":"boolean","description":"Set the status of this auth method.","default":null,"x-example":false}},"required":["status"]}}]}},"\/projects\/{projectId}\/keys":{"get":{"summary":"List keys","operationId":"projectsListKeys","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"API Keys List","schema":{"$ref":"#\/definitions\/keyList"}}},"x-appwrite":{"method":"listKeys","weight":153,"cookies":false,"type":"","demo":"projects\/list-keys.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"}]},"post":{"summary":"Create key","operationId":"projectsCreateKey","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"201":{"description":"Key","schema":{"$ref":"#\/definitions\/key"}}},"x-appwrite":{"method":"createKey","weight":152,"cookies":false,"type":"","demo":"projects\/create-key.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Key name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"scopes":{"type":"array","description":"Key scopes list. Maximum of 100 scopes are allowed.","default":null,"x-example":null,"items":{"type":"string"}},"expire":{"type":"string","description":"Expiration time in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. Use null for unlimited expiration.","default":null,"x-example":null}},"required":["name","scopes"]}}]}},"\/projects\/{projectId}\/keys\/{keyId}":{"get":{"summary":"Get key","operationId":"projectsGetKey","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Key","schema":{"$ref":"#\/definitions\/key"}}},"x-appwrite":{"method":"getKey","weight":154,"cookies":false,"type":"","demo":"projects\/get-key.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"keyId","description":"Key unique ID.","required":true,"type":"string","x-example":"[KEY_ID]","in":"path"}]},"put":{"summary":"Update key","operationId":"projectsUpdateKey","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Key","schema":{"$ref":"#\/definitions\/key"}}},"x-appwrite":{"method":"updateKey","weight":155,"cookies":false,"type":"","demo":"projects\/update-key.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"keyId","description":"Key unique ID.","required":true,"type":"string","x-example":"[KEY_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Key name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"scopes":{"type":"array","description":"Key scopes list. Maximum of 100 events are allowed.","default":null,"x-example":null,"items":{"type":"string"}},"expire":{"type":"string","description":"Expiration time in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. Use null for unlimited expiration.","default":null,"x-example":null}},"required":["name","scopes"]}}]},"delete":{"summary":"Delete key","operationId":"projectsDeleteKey","consumes":["application\/json"],"produces":[],"tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteKey","weight":156,"cookies":false,"type":"","demo":"projects\/delete-key.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"keyId","description":"Key unique ID.","required":true,"type":"string","x-example":"[KEY_ID]","in":"path"}]}},"\/projects\/{projectId}\/oauth2":{"patch":{"summary":"Update project OAuth2","operationId":"projectsUpdateOAuth2","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateOAuth2","weight":137,"cookies":false,"type":"","demo":"projects\/update-o-auth2.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"provider":{"type":"string","description":"Provider Name","default":null,"x-example":"amazon","enum":["amazon","apple","auth0","authentik","autodesk","bitbucket","bitly","box","dailymotion","discord","disqus","dropbox","etsy","facebook","github","gitlab","google","linkedin","microsoft","notion","oidc","okta","paypal","paypalSandbox","podio","salesforce","slack","spotify","stripe","tradeshift","tradeshiftBox","twitch","wordpress","yahoo","yammer","yandex","zoho","zoom","mock"],"x-enum-name":null,"x-enum-keys":[]},"appId":{"type":"string","description":"Provider app ID. Max length: 256 chars.","default":null,"x-example":"[APP_ID]"},"secret":{"type":"string","description":"Provider secret key. Max length: 512 chars.","default":null,"x-example":"[SECRET]"},"enabled":{"type":"boolean","description":"Provider status. Set to 'false' to disable new session creation.","default":null,"x-example":false}},"required":["provider"]}}]}},"\/projects\/{projectId}\/platforms":{"get":{"summary":"List platforms","operationId":"projectsListPlatforms","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Platforms List","schema":{"$ref":"#\/definitions\/platformList"}}},"x-appwrite":{"method":"listPlatforms","weight":158,"cookies":false,"type":"","demo":"projects\/list-platforms.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"}]},"post":{"summary":"Create platform","operationId":"projectsCreatePlatform","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"201":{"description":"Platform","schema":{"$ref":"#\/definitions\/platform"}}},"x-appwrite":{"method":"createPlatform","weight":157,"cookies":false,"type":"","demo":"projects\/create-platform.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"type":{"type":"string","description":"Platform type.","default":null,"x-example":"web","enum":["web","flutter-web","flutter-ios","flutter-android","flutter-linux","flutter-macos","flutter-windows","apple-ios","apple-macos","apple-watchos","apple-tvos","android","unity"],"x-enum-name":"PlatformType","x-enum-keys":[]},"name":{"type":"string","description":"Platform name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"key":{"type":"string","description":"Package name for Android or bundle ID for iOS or macOS. Max length: 256 chars.","default":"","x-example":"[KEY]"},"store":{"type":"string","description":"App store or Google Play store ID. Max length: 256 chars.","default":"","x-example":"[STORE]"},"hostname":{"type":"string","description":"Platform client hostname. Max length: 256 chars.","default":"","x-example":null}},"required":["type","name"]}}]}},"\/projects\/{projectId}\/platforms\/{platformId}":{"get":{"summary":"Get platform","operationId":"projectsGetPlatform","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Platform","schema":{"$ref":"#\/definitions\/platform"}}},"x-appwrite":{"method":"getPlatform","weight":159,"cookies":false,"type":"","demo":"projects\/get-platform.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"platformId","description":"Platform unique ID.","required":true,"type":"string","x-example":"[PLATFORM_ID]","in":"path"}]},"put":{"summary":"Update platform","operationId":"projectsUpdatePlatform","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Platform","schema":{"$ref":"#\/definitions\/platform"}}},"x-appwrite":{"method":"updatePlatform","weight":160,"cookies":false,"type":"","demo":"projects\/update-platform.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"platformId","description":"Platform unique ID.","required":true,"type":"string","x-example":"[PLATFORM_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Platform name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"key":{"type":"string","description":"Package name for android or bundle ID for iOS. Max length: 256 chars.","default":"","x-example":"[KEY]"},"store":{"type":"string","description":"App store or Google Play store ID. Max length: 256 chars.","default":"","x-example":"[STORE]"},"hostname":{"type":"string","description":"Platform client URL. Max length: 256 chars.","default":"","x-example":null}},"required":["name"]}}]},"delete":{"summary":"Delete platform","operationId":"projectsDeletePlatform","consumes":["application\/json"],"produces":[],"tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deletePlatform","weight":161,"cookies":false,"type":"","demo":"projects\/delete-platform.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"platformId","description":"Platform unique ID.","required":true,"type":"string","x-example":"[PLATFORM_ID]","in":"path"}]}},"\/projects\/{projectId}\/service":{"patch":{"summary":"Update service status","operationId":"projectsUpdateServiceStatus","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateServiceStatus","weight":135,"cookies":false,"type":"","demo":"projects\/update-service-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"service":{"type":"string","description":"Service name.","default":null,"x-example":"account","enum":["account","avatars","databases","locale","health","storage","teams","users","functions","graphql","messaging"],"x-enum-name":null,"x-enum-keys":[]},"status":{"type":"boolean","description":"Service status.","default":null,"x-example":false}},"required":["service","status"]}}]}},"\/projects\/{projectId}\/service\/all":{"patch":{"summary":"Update all service status","operationId":"projectsUpdateServiceStatusAll","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateServiceStatusAll","weight":136,"cookies":false,"type":"","demo":"projects\/update-service-status-all.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"status":{"type":"boolean","description":"Service status.","default":null,"x-example":false}},"required":["status"]}}]}},"\/projects\/{projectId}\/smtp":{"patch":{"summary":"Update SMTP configuration","operationId":"projectsUpdateSmtpConfiguration","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateSmtpConfiguration","weight":162,"cookies":false,"type":"","demo":"projects\/update-smtp-configuration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enable custom SMTP service","default":null,"x-example":false},"senderName":{"type":"string","description":"Name of the email sender","default":"","x-example":"[SENDER_NAME]"},"senderEmail":{"type":"string","description":"Email of the sender","default":"","x-example":"email@example.com"},"replyTo":{"type":"string","description":"Reply to email","default":"","x-example":"email@example.com"},"host":{"type":"string","description":"SMTP server host name","default":"","x-example":null},"port":{"type":"integer","description":"SMTP server port","default":587,"x-example":null},"username":{"type":"string","description":"SMTP server username","default":"","x-example":"[USERNAME]"},"password":{"type":"string","description":"SMTP server password","default":"","x-example":"[PASSWORD]"},"secure":{"type":"string","description":"Does SMTP server use secure connection","default":"","x-example":"tls","enum":["tls"],"x-enum-name":null,"x-enum-keys":[]}},"required":["enabled"]}}]}},"\/projects\/{projectId}\/team":{"patch":{"summary":"Update Project Team","operationId":"projectsUpdateTeam","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateTeam","weight":134,"cookies":false,"type":"","demo":"projects\/update-team.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"teamId":{"type":"string","description":"Team ID of the team to transfer project to.","default":null,"x-example":"[TEAM_ID]"}},"required":["teamId"]}}]}},"\/projects\/{projectId}\/templates\/email\/{type}\/{locale}":{"get":{"summary":"Get custom email template","operationId":"projectsGetEmailTemplate","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"EmailTemplate","schema":{"$ref":"#\/definitions\/emailTemplate"}}},"x-appwrite":{"method":"getEmailTemplate","weight":164,"cookies":false,"type":"","demo":"projects\/get-email-template.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"type","description":"Template type","required":true,"type":"string","x-example":"verification","enum":["verification","magicsession","recovery","invitation"],"x-enum-name":null,"x-enum-keys":[],"in":"path"},{"name":"locale","description":"Template locale","required":true,"type":"string","x-example":"af","enum":["af","ar-ae","ar-bh","ar-dz","ar-eg","ar-iq","ar-jo","ar-kw","ar-lb","ar-ly","ar-ma","ar-om","ar-qa","ar-sa","ar-sy","ar-tn","ar-ye","as","az","be","bg","bh","bn","bs","ca","cs","cy","da","de","de-at","de-ch","de-li","de-lu","el","en","en-au","en-bz","en-ca","en-gb","en-ie","en-jm","en-nz","en-tt","en-us","en-za","eo","es","es-ar","es-bo","es-cl","es-co","es-cr","es-do","es-ec","es-gt","es-hn","es-mx","es-ni","es-pa","es-pe","es-pr","es-py","es-sv","es-uy","es-ve","et","eu","fa","fi","fo","fr","fr-be","fr-ca","fr-ch","fr-lu","ga","gd","he","hi","hr","hu","id","is","it","it-ch","ja","ji","ko","ku","lt","lv","mk","ml","ms","mt","nb","ne","nl","nl-be","nn","no","pa","pl","pt","pt-br","rm","ro","ro-md","ru","ru-md","sb","sk","sl","sq","sr","sv","sv-fi","th","tn","tr","ts","ua","ur","ve","vi","xh","zh-cn","zh-hk","zh-sg","zh-tw","zu"],"x-enum-name":null,"x-enum-keys":[],"in":"path"}]},"patch":{"summary":"Update custom email templates","operationId":"projectsUpdateEmailTemplate","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateEmailTemplate","weight":166,"cookies":false,"type":"","demo":"projects\/update-email-template.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"type","description":"Template type","required":true,"type":"string","x-example":"verification","enum":["verification","magicsession","recovery","invitation"],"x-enum-name":null,"x-enum-keys":[],"in":"path"},{"name":"locale","description":"Template locale","required":true,"type":"string","x-example":"af","enum":["af","ar-ae","ar-bh","ar-dz","ar-eg","ar-iq","ar-jo","ar-kw","ar-lb","ar-ly","ar-ma","ar-om","ar-qa","ar-sa","ar-sy","ar-tn","ar-ye","as","az","be","bg","bh","bn","bs","ca","cs","cy","da","de","de-at","de-ch","de-li","de-lu","el","en","en-au","en-bz","en-ca","en-gb","en-ie","en-jm","en-nz","en-tt","en-us","en-za","eo","es","es-ar","es-bo","es-cl","es-co","es-cr","es-do","es-ec","es-gt","es-hn","es-mx","es-ni","es-pa","es-pe","es-pr","es-py","es-sv","es-uy","es-ve","et","eu","fa","fi","fo","fr","fr-be","fr-ca","fr-ch","fr-lu","ga","gd","he","hi","hr","hu","id","is","it","it-ch","ja","ji","ko","ku","lt","lv","mk","ml","ms","mt","nb","ne","nl","nl-be","nn","no","pa","pl","pt","pt-br","rm","ro","ro-md","ru","ru-md","sb","sk","sl","sq","sr","sv","sv-fi","th","tn","tr","ts","ua","ur","ve","vi","xh","zh-cn","zh-hk","zh-sg","zh-tw","zu"],"x-enum-name":null,"x-enum-keys":[],"in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"subject":{"type":"string","description":"Email Subject","default":null,"x-example":"[SUBJECT]"},"message":{"type":"string","description":"Template message","default":null,"x-example":"[MESSAGE]"},"senderName":{"type":"string","description":"Name of the email sender","default":"","x-example":"[SENDER_NAME]"},"senderEmail":{"type":"string","description":"Email of the sender","default":"","x-example":"email@example.com"},"replyTo":{"type":"string","description":"Reply to email","default":"","x-example":"email@example.com"}},"required":["subject","message"]}}]},"delete":{"summary":"Reset custom email template","operationId":"projectsDeleteEmailTemplate","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"EmailTemplate","schema":{"$ref":"#\/definitions\/emailTemplate"}}},"x-appwrite":{"method":"deleteEmailTemplate","weight":168,"cookies":false,"type":"","demo":"projects\/delete-email-template.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"type","description":"Template type","required":true,"type":"string","x-example":"verification","enum":["verification","magicsession","recovery","invitation"],"x-enum-name":null,"x-enum-keys":[],"in":"path"},{"name":"locale","description":"Template locale","required":true,"type":"string","x-example":"af","enum":["af","ar-ae","ar-bh","ar-dz","ar-eg","ar-iq","ar-jo","ar-kw","ar-lb","ar-ly","ar-ma","ar-om","ar-qa","ar-sa","ar-sy","ar-tn","ar-ye","as","az","be","bg","bh","bn","bs","ca","cs","cy","da","de","de-at","de-ch","de-li","de-lu","el","en","en-au","en-bz","en-ca","en-gb","en-ie","en-jm","en-nz","en-tt","en-us","en-za","eo","es","es-ar","es-bo","es-cl","es-co","es-cr","es-do","es-ec","es-gt","es-hn","es-mx","es-ni","es-pa","es-pe","es-pr","es-py","es-sv","es-uy","es-ve","et","eu","fa","fi","fo","fr","fr-be","fr-ca","fr-ch","fr-lu","ga","gd","he","hi","hr","hu","id","is","it","it-ch","ja","ji","ko","ku","lt","lv","mk","ml","ms","mt","nb","ne","nl","nl-be","nn","no","pa","pl","pt","pt-br","rm","ro","ro-md","ru","ru-md","sb","sk","sl","sq","sr","sv","sv-fi","th","tn","tr","ts","ua","ur","ve","vi","xh","zh-cn","zh-hk","zh-sg","zh-tw","zu"],"x-enum-name":null,"x-enum-keys":[],"in":"path"}]}},"\/projects\/{projectId}\/templates\/sms\/{type}\/{locale}":{"get":{"summary":"Get custom SMS template","operationId":"projectsGetSmsTemplate","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"SmsTemplate","schema":{"$ref":"#\/definitions\/smsTemplate"}}},"x-appwrite":{"method":"getSmsTemplate","weight":163,"cookies":false,"type":"","demo":"projects\/get-sms-template.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"type","description":"Template type","required":true,"type":"string","x-example":"verification","enum":["verification","login","invitation"],"x-enum-name":null,"x-enum-keys":[],"in":"path"},{"name":"locale","description":"Template locale","required":true,"type":"string","x-example":"af","enum":["af","ar-ae","ar-bh","ar-dz","ar-eg","ar-iq","ar-jo","ar-kw","ar-lb","ar-ly","ar-ma","ar-om","ar-qa","ar-sa","ar-sy","ar-tn","ar-ye","as","az","be","bg","bh","bn","bs","ca","cs","cy","da","de","de-at","de-ch","de-li","de-lu","el","en","en-au","en-bz","en-ca","en-gb","en-ie","en-jm","en-nz","en-tt","en-us","en-za","eo","es","es-ar","es-bo","es-cl","es-co","es-cr","es-do","es-ec","es-gt","es-hn","es-mx","es-ni","es-pa","es-pe","es-pr","es-py","es-sv","es-uy","es-ve","et","eu","fa","fi","fo","fr","fr-be","fr-ca","fr-ch","fr-lu","ga","gd","he","hi","hr","hu","id","is","it","it-ch","ja","ji","ko","ku","lt","lv","mk","ml","ms","mt","nb","ne","nl","nl-be","nn","no","pa","pl","pt","pt-br","rm","ro","ro-md","ru","ru-md","sb","sk","sl","sq","sr","sv","sv-fi","th","tn","tr","ts","ua","ur","ve","vi","xh","zh-cn","zh-hk","zh-sg","zh-tw","zu"],"x-enum-name":null,"x-enum-keys":[],"in":"path"}]},"patch":{"summary":"Update custom SMS template","operationId":"projectsUpdateSmsTemplate","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"SmsTemplate","schema":{"$ref":"#\/definitions\/smsTemplate"}}},"x-appwrite":{"method":"updateSmsTemplate","weight":165,"cookies":false,"type":"","demo":"projects\/update-sms-template.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"type","description":"Template type","required":true,"type":"string","x-example":"verification","enum":["verification","login","invitation"],"x-enum-name":null,"x-enum-keys":[],"in":"path"},{"name":"locale","description":"Template locale","required":true,"type":"string","x-example":"af","enum":["af","ar-ae","ar-bh","ar-dz","ar-eg","ar-iq","ar-jo","ar-kw","ar-lb","ar-ly","ar-ma","ar-om","ar-qa","ar-sa","ar-sy","ar-tn","ar-ye","as","az","be","bg","bh","bn","bs","ca","cs","cy","da","de","de-at","de-ch","de-li","de-lu","el","en","en-au","en-bz","en-ca","en-gb","en-ie","en-jm","en-nz","en-tt","en-us","en-za","eo","es","es-ar","es-bo","es-cl","es-co","es-cr","es-do","es-ec","es-gt","es-hn","es-mx","es-ni","es-pa","es-pe","es-pr","es-py","es-sv","es-uy","es-ve","et","eu","fa","fi","fo","fr","fr-be","fr-ca","fr-ch","fr-lu","ga","gd","he","hi","hr","hu","id","is","it","it-ch","ja","ji","ko","ku","lt","lv","mk","ml","ms","mt","nb","ne","nl","nl-be","nn","no","pa","pl","pt","pt-br","rm","ro","ro-md","ru","ru-md","sb","sk","sl","sq","sr","sv","sv-fi","th","tn","tr","ts","ua","ur","ve","vi","xh","zh-cn","zh-hk","zh-sg","zh-tw","zu"],"x-enum-name":null,"x-enum-keys":[],"in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"message":{"type":"string","description":"Template message","default":null,"x-example":"[MESSAGE]"}},"required":["message"]}}]},"delete":{"summary":"Reset custom SMS template","operationId":"projectsDeleteSmsTemplate","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"SmsTemplate","schema":{"$ref":"#\/definitions\/smsTemplate"}}},"x-appwrite":{"method":"deleteSmsTemplate","weight":167,"cookies":false,"type":"","demo":"projects\/delete-sms-template.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"type","description":"Template type","required":true,"type":"string","x-example":"verification","enum":["verification","login","invitation"],"x-enum-name":null,"x-enum-keys":[],"in":"path"},{"name":"locale","description":"Template locale","required":true,"type":"string","x-example":"af","enum":["af","ar-ae","ar-bh","ar-dz","ar-eg","ar-iq","ar-jo","ar-kw","ar-lb","ar-ly","ar-ma","ar-om","ar-qa","ar-sa","ar-sy","ar-tn","ar-ye","as","az","be","bg","bh","bn","bs","ca","cs","cy","da","de","de-at","de-ch","de-li","de-lu","el","en","en-au","en-bz","en-ca","en-gb","en-ie","en-jm","en-nz","en-tt","en-us","en-za","eo","es","es-ar","es-bo","es-cl","es-co","es-cr","es-do","es-ec","es-gt","es-hn","es-mx","es-ni","es-pa","es-pe","es-pr","es-py","es-sv","es-uy","es-ve","et","eu","fa","fi","fo","fr","fr-be","fr-ca","fr-ch","fr-lu","ga","gd","he","hi","hr","hu","id","is","it","it-ch","ja","ji","ko","ku","lt","lv","mk","ml","ms","mt","nb","ne","nl","nl-be","nn","no","pa","pl","pt","pt-br","rm","ro","ro-md","ru","ru-md","sb","sk","sl","sq","sr","sv","sv-fi","th","tn","tr","ts","ua","ur","ve","vi","xh","zh-cn","zh-hk","zh-sg","zh-tw","zu"],"x-enum-name":null,"x-enum-keys":[],"in":"path"}]}},"\/projects\/{projectId}\/usage":{"get":{"summary":"Get usage stats for a project","operationId":"projectsGetUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"UsageProject","schema":{"$ref":"#\/definitions\/usageProject"}}},"x-appwrite":{"method":"getUsage","weight":132,"cookies":false,"type":"","demo":"projects\/get-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","enum":["24h","7d","30d","90d"],"x-enum-name":null,"x-enum-keys":[],"default":"30d","in":"query"}]}},"\/projects\/{projectId}\/webhooks":{"get":{"summary":"List webhooks","operationId":"projectsListWebhooks","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Webhooks List","schema":{"$ref":"#\/definitions\/webhookList"}}},"x-appwrite":{"method":"listWebhooks","weight":147,"cookies":false,"type":"","demo":"projects\/list-webhooks.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"}]},"post":{"summary":"Create webhook","operationId":"projectsCreateWebhook","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"201":{"description":"Webhook","schema":{"$ref":"#\/definitions\/webhook"}}},"x-appwrite":{"method":"createWebhook","weight":146,"cookies":false,"type":"","demo":"projects\/create-webhook.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Webhook name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Enable or disable a webhook.","default":true,"x-example":false},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","default":null,"x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"Webhook URL.","default":null,"x-example":null},"security":{"type":"boolean","description":"Certificate verification, false for disabled or true for enabled.","default":null,"x-example":false},"httpUser":{"type":"string","description":"Webhook HTTP user. Max length: 256 chars.","default":"","x-example":"[HTTP_USER]"},"httpPass":{"type":"string","description":"Webhook HTTP password. Max length: 256 chars.","default":"","x-example":"[HTTP_PASS]"}},"required":["name","events","url","security"]}}]}},"\/projects\/{projectId}\/webhooks\/{webhookId}":{"get":{"summary":"Get webhook","operationId":"projectsGetWebhook","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Webhook","schema":{"$ref":"#\/definitions\/webhook"}}},"x-appwrite":{"method":"getWebhook","weight":148,"cookies":false,"type":"","demo":"projects\/get-webhook.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"webhookId","description":"Webhook unique ID.","required":true,"type":"string","x-example":"[WEBHOOK_ID]","in":"path"}]},"put":{"summary":"Update webhook","operationId":"projectsUpdateWebhook","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Webhook","schema":{"$ref":"#\/definitions\/webhook"}}},"x-appwrite":{"method":"updateWebhook","weight":149,"cookies":false,"type":"","demo":"projects\/update-webhook.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"webhookId","description":"Webhook unique ID.","required":true,"type":"string","x-example":"[WEBHOOK_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Webhook name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Enable or disable a webhook.","default":true,"x-example":false},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","default":null,"x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"Webhook URL.","default":null,"x-example":null},"security":{"type":"boolean","description":"Certificate verification, false for disabled or true for enabled.","default":null,"x-example":false},"httpUser":{"type":"string","description":"Webhook HTTP user. Max length: 256 chars.","default":"","x-example":"[HTTP_USER]"},"httpPass":{"type":"string","description":"Webhook HTTP password. Max length: 256 chars.","default":"","x-example":"[HTTP_PASS]"}},"required":["name","events","url","security"]}}]},"delete":{"summary":"Delete webhook","operationId":"projectsDeleteWebhook","consumes":["application\/json"],"produces":[],"tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteWebhook","weight":151,"cookies":false,"type":"","demo":"projects\/delete-webhook.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"webhookId","description":"Webhook unique ID.","required":true,"type":"string","x-example":"[WEBHOOK_ID]","in":"path"}]}},"\/projects\/{projectId}\/webhooks\/{webhookId}\/signature":{"patch":{"summary":"Update webhook signature key","operationId":"projectsUpdateWebhookSignature","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Webhook","schema":{"$ref":"#\/definitions\/webhook"}}},"x-appwrite":{"method":"updateWebhookSignature","weight":150,"cookies":false,"type":"","demo":"projects\/update-webhook-signature.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"webhookId","description":"Webhook unique ID.","required":true,"type":"string","x-example":"[WEBHOOK_ID]","in":"path"}]}},"\/proxy\/rules":{"get":{"summary":"List Rules","operationId":"proxyListRules","consumes":["application\/json"],"produces":["application\/json"],"tags":["proxy"],"description":"Get a list of all the proxy rules. You can use the query params to filter your results.","responses":{"200":{"description":"Rule List","schema":{"$ref":"#\/definitions\/proxyRuleList"}}},"x-appwrite":{"method":"listRules","weight":276,"cookies":false,"type":"","demo":"proxy\/list-rules.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/proxy\/list-rules.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"rules.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: domain, resourceType, resourceId, url","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Rule","operationId":"proxyCreateRule","consumes":["application\/json"],"produces":["application\/json"],"tags":["proxy"],"description":"Create a new proxy rule.","responses":{"201":{"description":"Rule","schema":{"$ref":"#\/definitions\/proxyRule"}}},"x-appwrite":{"method":"createRule","weight":275,"cookies":false,"type":"","demo":"proxy\/create-rule.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/proxy\/create-rule.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"rules.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"domain":{"type":"string","description":"Domain name.","default":null,"x-example":null},"resourceType":{"type":"string","description":"Action definition for the rule. Possible values are \"api\", \"function\"","default":null,"x-example":"api","enum":["api","function"],"x-enum-name":null,"x-enum-keys":[]},"resourceId":{"type":"string","description":"ID of resource for the action type. If resourceType is \"api\", leave empty. If resourceType is \"function\", provide ID of the function.","default":"","x-example":"[RESOURCE_ID]"}},"required":["domain","resourceType"]}}]}},"\/proxy\/rules\/{ruleId}":{"get":{"summary":"Get Rule","operationId":"proxyGetRule","consumes":["application\/json"],"produces":["application\/json"],"tags":["proxy"],"description":"Get a proxy rule by its unique ID.","responses":{"200":{"description":"Rule","schema":{"$ref":"#\/definitions\/proxyRule"}}},"x-appwrite":{"method":"getRule","weight":277,"cookies":false,"type":"","demo":"proxy\/get-rule.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/proxy\/get-rule.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"rules.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"ruleId","description":"Rule ID.","required":true,"type":"string","x-example":"[RULE_ID]","in":"path"}]},"delete":{"summary":"Delete Rule","operationId":"proxyDeleteRule","consumes":["application\/json"],"produces":[],"tags":["proxy"],"description":"Delete a proxy rule by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteRule","weight":278,"cookies":false,"type":"","demo":"proxy\/delete-rule.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/proxy\/delete-rule.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"rules.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"ruleId","description":"Rule ID.","required":true,"type":"string","x-example":"[RULE_ID]","in":"path"}]}},"\/proxy\/rules\/{ruleId}\/verification":{"patch":{"summary":"Update Rule Verification Status","operationId":"proxyUpdateRuleVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["proxy"],"description":"","responses":{"200":{"description":"Rule","schema":{"$ref":"#\/definitions\/proxyRule"}}},"x-appwrite":{"method":"updateRuleVerification","weight":279,"cookies":false,"type":"","demo":"proxy\/update-rule-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"rules.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"ruleId","description":"Rule ID.","required":true,"type":"string","x-example":"[RULE_ID]","in":"path"}]}},"\/storage\/buckets":{"get":{"summary":"List buckets","operationId":"storageListBuckets","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a list of all the storage buckets. You can use the query params to filter your results.","responses":{"200":{"description":"Buckets List","schema":{"$ref":"#\/definitions\/bucketList"}}},"x-appwrite":{"method":"listBuckets","weight":176,"cookies":false,"type":"","demo":"storage\/list-buckets.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/list-buckets.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: enabled, name, fileSecurity, maximumFileSize, encryption, antivirus","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create bucket","operationId":"storageCreateBucket","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Create a new storage bucket.","responses":{"201":{"description":"Bucket","schema":{"$ref":"#\/definitions\/bucket"}}},"x-appwrite":{"method":"createBucket","weight":175,"cookies":false,"type":"","demo":"storage\/create-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"bucketId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, no user is granted with any permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":false,"x-example":false},"enabled":{"type":"boolean","description":"Is bucket enabled? When set to 'disabled', users cannot access the files in this bucket but Server SDKs with and API key can still access the bucket. No files are lost when this is toggled.","default":true,"x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB.","default":30000000,"x-example":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","default":[],"x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","default":"none","x-example":"none","enum":["none","gzip","zstd"],"x-enum-name":null,"x-enum-keys":[]},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","default":true,"x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","default":true,"x-example":false}},"required":["bucketId","name"]}}]}},"\/storage\/buckets\/{bucketId}":{"get":{"summary":"Get bucket","operationId":"storageGetBucket","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a storage bucket by its unique ID. This endpoint response returns a JSON object with the storage bucket metadata.","responses":{"200":{"description":"Bucket","schema":{"$ref":"#\/definitions\/bucket"}}},"x-appwrite":{"method":"getBucket","weight":177,"cookies":false,"type":"","demo":"storage\/get-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"bucketId","description":"Bucket unique ID.","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"}]},"put":{"summary":"Update bucket","operationId":"storageUpdateBucket","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Update a storage bucket by its unique ID.","responses":{"200":{"description":"Bucket","schema":{"$ref":"#\/definitions\/bucket"}}},"x-appwrite":{"method":"updateBucket","weight":178,"cookies":false,"type":"","demo":"storage\/update-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"bucketId","description":"Bucket unique ID.","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Bucket name","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":false,"x-example":false},"enabled":{"type":"boolean","description":"Is bucket enabled? When set to 'disabled', users cannot access the files in this bucket but Server SDKs with and API key can still access the bucket. No files are lost when this is toggled.","default":true,"x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB.","default":null,"x-example":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","default":[],"x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","default":"none","x-example":"none","enum":["none","gzip","zstd"],"x-enum-name":null,"x-enum-keys":[]},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","default":true,"x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","default":true,"x-example":false}},"required":["name"]}}]},"delete":{"summary":"Delete bucket","operationId":"storageDeleteBucket","consumes":["application\/json"],"produces":[],"tags":["storage"],"description":"Delete a storage bucket by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteBucket","weight":179,"cookies":false,"type":"","demo":"storage\/delete-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"bucketId","description":"Bucket unique ID.","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files":{"get":{"summary":"List files","operationId":"storageListFiles","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a list of all the user files. You can use the query params to filter your results.","responses":{"200":{"description":"Files List","schema":{"$ref":"#\/definitions\/fileList"}}},"x-appwrite":{"method":"listFiles","weight":181,"cookies":false,"type":"","demo":"storage\/list-files.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/list-files.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create file","operationId":"storageCreateFile","consumes":["multipart\/form-data"],"produces":["application\/json"],"tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"createFile","weight":180,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId},chunkId:{chunkId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","required":true,"x-upload-id":true,"type":"string","x-example":"[FILE_ID]","in":"formData"},{"name":"file","description":"Binary file. Appwrite SDKs provide helpers to handle file input. [Learn about file input](https:\/\/appwrite.io\/docs\/storage#file-input).","required":true,"type":"file","in":"formData"},{"name":"permissions","description":"An array of permission strings. By default, only the current user is granted all permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"x-example":"[\"read(\"any\")\"]","in":"formData"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get file","operationId":"storageGetFile","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"getFile","weight":182,"cookies":false,"type":"","demo":"storage\/get-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID.","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"}]},"put":{"summary":"Update file","operationId":"storageUpdateFile","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Update a file by its unique ID. Only users with write permissions have access to update this resource.","responses":{"200":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"updateFile","weight":186,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File unique ID.","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Name of the file","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission string. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","consumes":["application\/json"],"produces":[],"tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":187,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID.","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/download":{"get":{"summary":"Get file for download","operationId":"storageGetFileDownload","consumes":["application\/json"],"produces":["*\/*"],"tags":["storage"],"description":"Get a file content by its unique ID. The endpoint response return with a 'Content-Disposition: attachment' header that tells the browser to start downloading the file to user downloads directory.","responses":{"200":{"description":"File","schema":{"type":"file"}}},"x-appwrite":{"method":"getFileDownload","weight":184,"cookies":false,"type":"location","demo":"storage\/get-file-download.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-download.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID.","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/preview":{"get":{"summary":"Get file preview","operationId":"storageGetFilePreview","consumes":["application\/json"],"produces":["image\/*"],"tags":["storage"],"description":"Get a file preview image. Currently, this method supports preview for image files (jpg, png, and gif), other supported formats, like pdf, docs, slides, and spreadsheets, will return the file icon image. You can also pass query string arguments for cutting and resizing your preview image. Preview is supported only for image files smaller than 10MB.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFilePreview","weight":183,"cookies":false,"type":"location","demo":"storage\/get-file-preview.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-preview.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"},{"name":"width","description":"Resize preview image width, Pass an integer between 0 to 4000.","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 4000.","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"gravity","description":"Image crop gravity. Can be one of center,top-left,top,top-right,left,right,bottom-left,bottom,bottom-right","required":false,"type":"string","x-example":"center","enum":["center","top-left","top","top-right","left","right","bottom-left","bottom","bottom-right"],"x-enum-name":"ImageGravity","x-enum-keys":[],"default":"center","in":"query"},{"name":"quality","description":"Preview image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"borderWidth","description":"Preview image border in pixels. Pass an integer between 0 to 100. Defaults to 0.","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"borderColor","description":"Preview image border color. Use a valid HEX color, no # is needed for prefix.","required":false,"type":"string","default":"","in":"query"},{"name":"borderRadius","description":"Preview image border radius in pixels. Pass an integer between 0 to 4000.","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"opacity","description":"Preview image opacity. Only works with images having an alpha channel (like png). Pass a number between 0 to 1.","required":false,"type":"number","format":"float","x-example":0,"default":1,"in":"query"},{"name":"rotation","description":"Preview image rotation in degrees. Pass an integer between -360 and 360.","required":false,"type":"integer","format":"int32","x-example":-360,"default":0,"in":"query"},{"name":"background","description":"Preview image background color. Only works with transparent images (png). Use a valid HEX color, no # is needed for prefix.","required":false,"type":"string","default":"","in":"query"},{"name":"output","description":"Output format type (jpeg, jpg, png, gif and webp).","required":false,"type":"string","x-example":"jpg","enum":["jpg","jpeg","gif","png","webp"],"x-enum-name":"ImageFormat","x-enum-keys":[],"default":"","in":"query"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/view":{"get":{"summary":"Get file for view","operationId":"storageGetFileView","consumes":["application\/json"],"produces":["*\/*"],"tags":["storage"],"description":"Get a file content by its unique ID. This endpoint is similar to the download method but returns with no 'Content-Disposition: attachment' header.","responses":{"200":{"description":"File","schema":{"type":"file"}}},"x-appwrite":{"method":"getFileView","weight":185,"cookies":false,"type":"location","demo":"storage\/get-file-view.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-view.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID.","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"}]}},"\/storage\/usage":{"get":{"summary":"Get usage stats for storage","operationId":"storageGetUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"","responses":{"200":{"description":"StorageUsage","schema":{"$ref":"#\/definitions\/usageStorage"}}},"x-appwrite":{"method":"getUsage","weight":188,"cookies":false,"type":"","demo":"storage\/get-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","enum":["24h","7d","30d","90d"],"x-enum-name":null,"x-enum-keys":["Twenty Four Hours","Seven Days","Thirty Days","Ninety Days"],"default":"30d","in":"query"}]}},"\/storage\/{bucketId}\/usage":{"get":{"summary":"Get usage stats for a storage bucket","operationId":"storageGetBucketUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"","responses":{"200":{"description":"UsageBuckets","schema":{"$ref":"#\/definitions\/usageBuckets"}}},"x-appwrite":{"method":"getBucketUsage","weight":189,"cookies":false,"type":"","demo":"storage\/get-bucket-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"bucketId","description":"Bucket ID.","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","enum":["24h","7d","30d","90d"],"x-enum-name":null,"x-enum-keys":["Twenty Four Hours","Seven Days","Thirty Days","Ninety Days"],"default":"30d","in":"query"}]}},"\/teams":{"get":{"summary":"List teams","operationId":"teamsList","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get a list of all the teams in which the current user is a member. You can use the parameters to filter your results.","responses":{"200":{"description":"Teams List","schema":{"$ref":"#\/definitions\/teamList"}}},"x-appwrite":{"method":"list","weight":191,"cookies":false,"type":"","demo":"teams\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-teams.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create team","operationId":"teamsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"create","weight":190,"cookies":false,"type":"","demo":"teams\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/create-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"teamId":{"type":"string","description":"Team ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[TEAM_ID]"},"name":{"type":"string","description":"Team name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"roles":{"type":"array","description":"Array of strings. Use this param to set the roles in the team for the user who created it. The default role is **owner**. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","default":["owner"],"x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}]}},"\/teams\/{teamId}":{"get":{"summary":"Get team","operationId":"teamsGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"get","weight":192,"cookies":false,"type":"","demo":"teams\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams","offline-key":"{teamId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"}]},"put":{"summary":"Update name","operationId":"teamsUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Update the team's name by its unique ID.","responses":{"200":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"updateName","weight":194,"cookies":false,"type":"","demo":"teams\/update-name.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-name.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams","offline-key":"{teamId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"New team name. Max length: 128 chars.","default":null,"x-example":"[NAME]"}},"required":["name"]}}]},"delete":{"summary":"Delete team","operationId":"teamsDelete","consumes":["application\/json"],"produces":[],"tags":["teams"],"description":"Delete a team using its ID. Only team members with the owner role can delete the team.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":196,"cookies":false,"type":"","demo":"teams\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/delete-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"}]}},"\/teams\/{teamId}\/logs":{"get":{"summary":"List team logs","operationId":"teamsListLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get the team activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listLogs","weight":203,"cookies":false,"type":"","demo":"teams\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/teams\/{teamId}\/memberships":{"get":{"summary":"List team memberships","operationId":"teamsListMemberships","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"listMemberships","weight":198,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/memberships","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create team membership","operationId":"teamsCreateMembership","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Invite a new member to join your team. Provide an ID for existing users, or invite unregistered users using an email or phone number. If initiated from a Client SDK, Appwrite will send an email or sms with a link to join the team to the invited user, and an account will be created for them if one doesn't exist. If initiated from a Server SDK, the new member will be added automatically to the team.\n\nYou only need to provide one of a user ID, email, or phone number. Appwrite will prioritize accepting the user ID > email > phone number if you provide more than one of these parameters.\n\nUse the `url` parameter to redirect the user from the invitation email to your app. After the user is redirected, use the [Update Team Membership Status](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/teams#updateMembershipStatus) endpoint to allow the user to accept the invitation to the team. \n\nPlease note that to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) Appwrite will accept the only redirect URLs under the domains you have added as a platform on the Appwrite Console.\n","responses":{"201":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"createMembership","weight":197,"cookies":false,"type":"","demo":"teams\/create-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/create-team-membership.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"email":{"type":"string","description":"Email of the new team member.","default":"","x-example":"email@example.com"},"userId":{"type":"string","description":"ID of the user to be added to a team.","default":"","x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":"","x-example":"+12065550100"},"roles":{"type":"array","description":"Array of strings. Use this param to set the user roles in the team. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":"","x-example":"https:\/\/example.com"},"name":{"type":"string","description":"Name of the new team member. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["roles"]}}]}},"\/teams\/{teamId}\/memberships\/{membershipId}":{"get":{"summary":"Get team membership","operationId":"teamsGetMembership","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get a team member by the membership unique id. All team members have read access for this resource.","responses":{"200":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"getMembership","weight":199,"cookies":false,"type":"","demo":"teams\/get-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-member.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/memberships","offline-key":"{membershipId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"type":"string","x-example":"[MEMBERSHIP_ID]","in":"path"}]},"patch":{"summary":"Update membership","operationId":"teamsUpdateMembership","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Modify the roles of a team member. Only team members with the owner role have access to this endpoint. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions).\n","responses":{"200":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"updateMembership","weight":200,"cookies":false,"type":"","demo":"teams\/update-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"type":"string","x-example":"[MEMBERSHIP_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"roles":{"type":"array","description":"An array of strings. Use this param to set the user's roles in the team. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}}},"required":["roles"]}}]},"delete":{"summary":"Delete team membership","operationId":"teamsDeleteMembership","consumes":["application\/json"],"produces":[],"tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":202,"cookies":false,"type":"","demo":"teams\/delete-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/delete-team-membership.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"type":"string","x-example":"[MEMBERSHIP_ID]","in":"path"}]}},"\/teams\/{teamId}\/memberships\/{membershipId}\/status":{"patch":{"summary":"Update team membership status","operationId":"teamsUpdateMembershipStatus","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Use this endpoint to allow a user to accept an invitation to join a team after being redirected back to your app from the invitation email received by the user.\n\nIf the request is successful, a session for the user is automatically created.\n","responses":{"200":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"updateMembershipStatus","weight":201,"cookies":false,"type":"","demo":"teams\/update-membership-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"public","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"type":"string","x-example":"[MEMBERSHIP_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Secret key.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/teams\/{teamId}\/prefs":{"get":{"summary":"Get team preferences","operationId":"teamsGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get the team's shared preferences by its unique ID. If a preference doesn't need to be shared by all team members, prefer storing them in [user preferences](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#getPrefs).","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":193,"cookies":false,"type":"","demo":"teams\/get-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/prefs","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"}]},"put":{"summary":"Update preferences","operationId":"teamsUpdatePrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Update the team's preferences by its unique ID. The object you pass is stored as is and replaces any previous value. The maximum allowed prefs size is 64kB and throws an error if exceeded.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"updatePrefs","weight":195,"cookies":false,"type":"","demo":"teams\/update-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/prefs","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"prefs":{"type":"object","description":"Prefs key-value JSON object.","default":{},"x-example":"{}"}},"required":["prefs"]}}]}},"\/users":{"get":{"summary":"List users","operationId":"usersList","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get a list of all the project's users. You can use the query params to filter your results.","responses":{"200":{"description":"Users List","schema":{"$ref":"#\/definitions\/userList"}}},"x-appwrite":{"method":"list","weight":213,"cookies":false,"type":"","demo":"users\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-users.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, email, phone, status, passwordUpdate, registration, emailVerification, phoneVerification","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create user","operationId":"usersCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"create","weight":204,"cookies":false,"type":"","demo":"users\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"},"password":{"type":"string","description":"Plain text user password. Must be at least 8 chars.","default":"","x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId"]}}]}},"\/users\/argon2":{"post":{"summary":"Create user with Argon2 password","operationId":"usersCreateArgon2User","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Argon2](https:\/\/en.wikipedia.org\/wiki\/Argon2) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createArgon2User","weight":207,"cookies":false,"type":"","demo":"users\/create-argon2user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-argon2-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Argon2.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/bcrypt":{"post":{"summary":"Create user with bcrypt password","operationId":"usersCreateBcryptUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Bcrypt](https:\/\/en.wikipedia.org\/wiki\/Bcrypt) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createBcryptUser","weight":205,"cookies":false,"type":"","demo":"users\/create-bcrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-bcrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Bcrypt.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/identities":{"get":{"summary":"List Identities","operationId":"usersListIdentities","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get identities for all users.","responses":{"200":{"description":"Identities List","schema":{"$ref":"#\/definitions\/identityList"}}},"x-appwrite":{"method":"listIdentities","weight":221,"cookies":false,"type":"","demo":"users\/list-identities.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-identities.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, provider, providerUid, providerEmail, providerAccessTokenExpiry","required":false,"type":"string","default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]}},"\/users\/identities\/{identityId}":{"delete":{"summary":"Delete identity","operationId":"usersDeleteIdentity","consumes":["application\/json"],"produces":[],"tags":["users"],"description":"Delete an identity by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIdentity","weight":238,"cookies":false,"type":"","demo":"users\/delete-identity.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-identity.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"identityId","description":"Identity ID.","required":true,"type":"string","x-example":"[IDENTITY_ID]","in":"path"}]}},"\/users\/md5":{"post":{"summary":"Create user with MD5 password","operationId":"usersCreateMD5User","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [MD5](https:\/\/en.wikipedia.org\/wiki\/MD5) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createMD5User","weight":206,"cookies":false,"type":"","demo":"users\/create-m-d5user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-md5-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using MD5.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/phpass":{"post":{"summary":"Create user with PHPass password","operationId":"usersCreatePHPassUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [PHPass](https:\/\/www.openwall.com\/phpass\/) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createPHPassUser","weight":209,"cookies":false,"type":"","demo":"users\/create-p-h-pass-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-phpass-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or pass the string `ID.unique()`to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using PHPass.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/scrypt":{"post":{"summary":"Create user with Scrypt password","operationId":"usersCreateScryptUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt](https:\/\/github.com\/Tarsnap\/scrypt) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createScryptUser","weight":210,"cookies":false,"type":"","demo":"users\/create-scrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt.","default":null,"x-example":"password"},"passwordSalt":{"type":"string","description":"Optional salt used to hash password.","default":null,"x-example":"[PASSWORD_SALT]"},"passwordCpu":{"type":"integer","description":"Optional CPU cost used to hash password.","default":null,"x-example":null},"passwordMemory":{"type":"integer","description":"Optional memory cost used to hash password.","default":null,"x-example":null},"passwordParallel":{"type":"integer","description":"Optional parallelization cost used to hash password.","default":null,"x-example":null},"passwordLength":{"type":"integer","description":"Optional hash length used to hash password.","default":null,"x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordCpu","passwordMemory","passwordParallel","passwordLength"]}}]}},"\/users\/scrypt-modified":{"post":{"summary":"Create user with Scrypt modified password","operationId":"usersCreateScryptModifiedUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt Modified](https:\/\/gist.github.com\/Meldiron\/eecf84a0225eccb5a378d45bb27462cc) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createScryptModifiedUser","weight":211,"cookies":false,"type":"","demo":"users\/create-scrypt-modified-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-modified-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt Modified.","default":null,"x-example":"password"},"passwordSalt":{"type":"string","description":"Salt used to hash password.","default":null,"x-example":"[PASSWORD_SALT]"},"passwordSaltSeparator":{"type":"string","description":"Salt separator used to hash password.","default":null,"x-example":"[PASSWORD_SALT_SEPARATOR]"},"passwordSignerKey":{"type":"string","description":"Signer key used to hash password.","default":null,"x-example":"[PASSWORD_SIGNER_KEY]"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordSaltSeparator","passwordSignerKey"]}}]}},"\/users\/sha":{"post":{"summary":"Create user with SHA password","operationId":"usersCreateSHAUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [SHA](https:\/\/en.wikipedia.org\/wiki\/Secure_Hash_Algorithm) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createSHAUser","weight":208,"cookies":false,"type":"","demo":"users\/create-s-h-a-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-sha-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using SHA.","default":null,"x-example":"password"},"passwordVersion":{"type":"string","description":"Optional SHA version used to hash password. Allowed values are: 'sha1', 'sha224', 'sha256', 'sha384', 'sha512\/224', 'sha512\/256', 'sha512', 'sha3-224', 'sha3-256', 'sha3-384', 'sha3-512'","default":"","x-example":"sha1","enum":["sha1","sha224","sha256","sha384","sha512\/224","sha512\/256","sha512","sha3-224","sha3-256","sha3-384","sha3-512"],"x-enum-name":null,"x-enum-keys":[]},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/usage":{"get":{"summary":"Get usage stats for the users API","operationId":"usersGetUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"","responses":{"200":{"description":"UsageUsers","schema":{"$ref":"#\/definitions\/usageUsers"}}},"x-appwrite":{"method":"getUsage","weight":239,"cookies":false,"type":"","demo":"users\/get-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","enum":["24h","7d","30d","90d"],"x-enum-name":null,"x-enum-keys":["Twenty Four Hours","Seven Days","Thirty Days","Ninety Days"],"default":"30d","in":"query"},{"name":"provider","description":"Provider Name.","required":false,"type":"string","x-example":"email","default":"","in":"query"}]}},"\/users\/{userId}":{"get":{"summary":"Get user","operationId":"usersGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get a user by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"get","weight":214,"cookies":false,"type":"","demo":"users\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]},"delete":{"summary":"Delete user","operationId":"usersDelete","consumes":["application\/json"],"produces":[],"tags":["users"],"description":"Delete a user by its unique ID, thereby releasing it's ID. Since ID is released and can be reused, all user-related resources like documents or storage files should be deleted before user deletion. If you want to keep ID reserved, use the [updateStatus](https:\/\/appwrite.io\/docs\/server\/users#usersUpdateStatus) endpoint instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":236,"cookies":false,"type":"","demo":"users\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]}},"\/users\/{userId}\/email":{"patch":{"summary":"Update email","operationId":"usersUpdateEmail","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user email by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateEmail","weight":227,"cookies":false,"type":"","demo":"users\/update-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"}},"required":["email"]}}]}},"\/users\/{userId}\/labels":{"put":{"summary":"Update user labels","operationId":"usersUpdateLabels","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user labels by its unique ID. \n\nLabels can be used to grant access to resources. While teams are a way for user's to share access to a resource, labels can be defined by the developer to grant access without an invitation. See the [Permissions docs](https:\/\/appwrite.io\/docs\/permissions) for more info.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateLabels","weight":223,"cookies":false,"type":"","demo":"users\/update-labels.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-labels.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"labels":{"type":"array","description":"Array of user labels. Replaces the previous labels. Maximum of 100 labels are allowed, each up to 36 alphanumeric characters long.","default":null,"x-example":null,"items":{"type":"string"}}},"required":["labels"]}}]}},"\/users\/{userId}\/logs":{"get":{"summary":"List user logs","operationId":"usersListLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listLogs","weight":219,"cookies":false,"type":"","demo":"users\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/users\/{userId}\/memberships":{"get":{"summary":"List user memberships","operationId":"usersListMemberships","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user membership list by its unique ID.","responses":{"200":{"description":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"listMemberships","weight":218,"cookies":false,"type":"","demo":"users\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-memberships.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]}},"\/users\/{userId}\/name":{"patch":{"summary":"Update name","operationId":"usersUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user name by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateName","weight":225,"cookies":false,"type":"","demo":"users\/update-name.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-name.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"User name. Max length: 128 chars.","default":null,"x-example":"[NAME]"}},"required":["name"]}}]}},"\/users\/{userId}\/password":{"patch":{"summary":"Update password","operationId":"usersUpdatePassword","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user password by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePassword","weight":226,"cookies":false,"type":"","demo":"users\/update-password.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-password.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"password":{"type":"string","description":"New user password. Must be at least 8 chars.","default":null,"x-example":null}},"required":["password"]}}]}},"\/users\/{userId}\/phone":{"patch":{"summary":"Update phone","operationId":"usersUpdatePhone","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user phone by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePhone","weight":228,"cookies":false,"type":"","demo":"users\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"number":{"type":"string","description":"User phone number.","default":null,"x-example":"+12065550100"}},"required":["number"]}}]}},"\/users\/{userId}\/prefs":{"get":{"summary":"Get user preferences","operationId":"usersGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user preferences by its unique ID.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":215,"cookies":false,"type":"","demo":"users\/get-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]},"patch":{"summary":"Update user preferences","operationId":"usersUpdatePrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user preferences by its unique ID. The object you pass is stored as is, and replaces any previous value. The maximum allowed prefs size is 64kB and throws error if exceeded.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"updatePrefs","weight":230,"cookies":false,"type":"","demo":"users\/update-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"prefs":{"type":"object","description":"Prefs key-value JSON object.","default":{},"x-example":"{}"}},"required":["prefs"]}}]}},"\/users\/{userId}\/sessions":{"get":{"summary":"List user sessions","operationId":"usersListSessions","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user sessions list by its unique ID.","responses":{"200":{"description":"Sessions List","schema":{"$ref":"#\/definitions\/sessionList"}}},"x-appwrite":{"method":"listSessions","weight":217,"cookies":false,"type":"","demo":"users\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]},"post":{"summary":"Create session","operationId":"usersCreateSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Creates a session for a user. Returns an immediately usable session object.\n\nIf you want to generate a token for a custom authentication flow, use the [POST \/users\/{userId}\/tokens](https:\/\/appwrite.io\/docs\/server\/users#createToken) endpoint.","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"createSession","weight":232,"cookies":false,"type":"","demo":"users\/create-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-session.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]},"delete":{"summary":"Delete user sessions","operationId":"usersDeleteSessions","consumes":["application\/json"],"produces":[],"tags":["users"],"description":"Delete all user's sessions by using the user's unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":235,"cookies":false,"type":"","demo":"users\/delete-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]}},"\/users\/{userId}\/sessions\/{sessionId}":{"delete":{"summary":"Delete user session","operationId":"usersDeleteSession","consumes":["application\/json"],"produces":[],"tags":["users"],"description":"Delete a user sessions by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSession","weight":234,"cookies":false,"type":"","demo":"users\/delete-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-user-session.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"sessionId","description":"Session ID.","required":true,"type":"string","x-example":"[SESSION_ID]","in":"path"}]}},"\/users\/{userId}\/status":{"patch":{"summary":"Update user status","operationId":"usersUpdateStatus","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user status by its unique ID. Use this endpoint as an alternative to deleting a user if you want to keep user's ID reserved.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateStatus","weight":222,"cookies":false,"type":"","demo":"users\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"status":{"type":"boolean","description":"User Status. To activate the user pass `true` and to block the user pass `false`.","default":null,"x-example":false}},"required":["status"]}}]}},"\/users\/{userId}\/targets":{"get":{"summary":"List User Targets","operationId":"usersListTargets","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"","responses":{"200":{"description":"Target list","schema":{"$ref":"#\/definitions\/targetList"}}},"x-appwrite":{"method":"listTargets","weight":220,"cookies":false,"type":"","demo":"users\/list-targets.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-targets.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.read","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, email, phone, status, passwordUpdate, registration, emailVerification, phoneVerification","required":false,"type":"string","default":[],"in":"query"}]},"post":{"summary":"Create User Target","operationId":"usersCreateTarget","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"","responses":{"201":{"description":"Target","schema":{"$ref":"#\/definitions\/target"}}},"x-appwrite":{"method":"createTarget","weight":212,"cookies":false,"type":"","demo":"users\/create-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-target.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"targetId":{"type":"string","description":"Target ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[TARGET_ID]"},"providerType":{"type":"string","description":"The target provider type. Can be one of the following: `email`, `sms` or `push`.","default":null,"x-example":"email","enum":["email","sms","push"],"x-enum-name":null,"x-enum-keys":[]},"identifier":{"type":"string","description":"The target identifier (token, email, phone etc.)","default":null,"x-example":"[IDENTIFIER]"},"providerId":{"type":"string","description":"Provider ID. Message will be sent to this target from the specified provider ID. If no provider ID is set the first setup provider will be used.","default":"","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Target name. Max length: 128 chars. For example: My Awesome App Galaxy S23.","default":"","x-example":"[NAME]"}},"required":["targetId","providerType","identifier"]}}]}},"\/users\/{userId}\/targets\/{targetId}":{"get":{"summary":"Get User Target","operationId":"usersGetTarget","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"","responses":{"200":{"description":"Target","schema":{"$ref":"#\/definitions\/target"}}},"x-appwrite":{"method":"getTarget","weight":216,"cookies":false,"type":"","demo":"users\/get-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-target.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.read","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"targetId","description":"Target ID.","required":true,"type":"string","x-example":"[TARGET_ID]","in":"path"}]},"patch":{"summary":"Update User target","operationId":"usersUpdateTarget","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"","responses":{"200":{"description":"Target","schema":{"$ref":"#\/definitions\/target"}}},"x-appwrite":{"method":"updateTarget","weight":231,"cookies":false,"type":"","demo":"users\/update-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-target.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"targetId","description":"Target ID.","required":true,"type":"string","x-example":"[TARGET_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"identifier":{"type":"string","description":"The target identifier (token, email, phone etc.)","default":"","x-example":"[IDENTIFIER]"},"providerId":{"type":"string","description":"Provider ID. Message will be sent to this target from the specified provider ID. If no provider ID is set the first setup provider will be used.","default":"","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Target name. Max length: 128 chars. For example: My Awesome App Galaxy S23.","default":"","x-example":"[NAME]"}}}}]},"delete":{"summary":"Delete user target","operationId":"usersDeleteTarget","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteTarget","weight":237,"cookies":false,"type":"","demo":"users\/delete-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-target.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"targetId","description":"Target ID.","required":true,"type":"string","x-example":"[TARGET_ID]","in":"path"}]}},"\/users\/{userId}\/tokens":{"post":{"summary":"Create token","operationId":"usersCreateToken","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Returns a token with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [PUT \/account\/sessions\/custom](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateCustomSession) endpoint to complete the login process.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createToken","weight":233,"cookies":false,"type":"","demo":"users\/create-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-token.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"length":{"type":"integer","description":"Token length in characters. The default length is 6 characters","default":6,"x-example":4},"expire":{"type":"integer","description":"Token expiration period in seconds. The default expiration is 15 minutes.","default":900,"x-example":60}}}}]}},"\/users\/{userId}\/verification":{"patch":{"summary":"Update email verification","operationId":"usersUpdateEmailVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user email verification status by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateEmailVerification","weight":229,"cookies":false,"type":"","demo":"users\/update-email-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-email-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"emailVerification":{"type":"boolean","description":"User email verification status.","default":null,"x-example":false}},"required":["emailVerification"]}}]}},"\/users\/{userId}\/verification\/phone":{"patch":{"summary":"Update phone verification","operationId":"usersUpdatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user phone verification status by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePhoneVerification","weight":224,"cookies":false,"type":"","demo":"users\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"phoneVerification":{"type":"boolean","description":"User phone verification status.","default":null,"x-example":false}},"required":["phoneVerification"]}}]}},"\/vcs\/github\/installations\/{installationId}\/providerRepositories":{"get":{"summary":"List Repositories","operationId":"vcsListRepositories","consumes":["application\/json"],"produces":["application\/json"],"tags":["vcs"],"description":"","responses":{"200":{"description":"Provider Repositories List","schema":{"$ref":"#\/definitions\/providerRepositoryList"}}},"x-appwrite":{"method":"listRepositories","weight":243,"cookies":false,"type":"","demo":"vcs\/list-repositories.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"type":"string","x-example":"[INSTALLATION_ID]","in":"path"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create repository","operationId":"vcsCreateRepository","consumes":["application\/json"],"produces":["application\/json"],"tags":["vcs"],"description":"","responses":{"200":{"description":"ProviderRepository","schema":{"$ref":"#\/definitions\/providerRepository"}}},"x-appwrite":{"method":"createRepository","weight":244,"cookies":false,"type":"","demo":"vcs\/create-repository.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"type":"string","x-example":"[INSTALLATION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Repository name (slug)","default":null,"x-example":"[NAME]"},"private":{"type":"boolean","description":"Mark repository public or private","default":null,"x-example":false}},"required":["name","private"]}}]}},"\/vcs\/github\/installations\/{installationId}\/providerRepositories\/{providerRepositoryId}":{"get":{"summary":"Get repository","operationId":"vcsGetRepository","consumes":["application\/json"],"produces":["application\/json"],"tags":["vcs"],"description":"","responses":{"200":{"description":"ProviderRepository","schema":{"$ref":"#\/definitions\/providerRepository"}}},"x-appwrite":{"method":"getRepository","weight":245,"cookies":false,"type":"","demo":"vcs\/get-repository.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"type":"string","x-example":"[INSTALLATION_ID]","in":"path"},{"name":"providerRepositoryId","description":"Repository Id","required":true,"type":"string","x-example":"[PROVIDER_REPOSITORY_ID]","in":"path"}]}},"\/vcs\/github\/installations\/{installationId}\/providerRepositories\/{providerRepositoryId}\/branches":{"get":{"summary":"List Repository Branches","operationId":"vcsListRepositoryBranches","consumes":["application\/json"],"produces":["application\/json"],"tags":["vcs"],"description":"","responses":{"200":{"description":"Branches List","schema":{"$ref":"#\/definitions\/branchList"}}},"x-appwrite":{"method":"listRepositoryBranches","weight":246,"cookies":false,"type":"","demo":"vcs\/list-repository-branches.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"type":"string","x-example":"[INSTALLATION_ID]","in":"path"},{"name":"providerRepositoryId","description":"Repository Id","required":true,"type":"string","x-example":"[PROVIDER_REPOSITORY_ID]","in":"path"}]}},"\/vcs\/github\/installations\/{installationId}\/providerRepositories\/{providerRepositoryId}\/detection":{"post":{"summary":"Detect runtime settings from source code","operationId":"vcsCreateRepositoryDetection","consumes":["application\/json"],"produces":["application\/json"],"tags":["vcs"],"description":"","responses":{"200":{"description":"Detection","schema":{"$ref":"#\/definitions\/detection"}}},"x-appwrite":{"method":"createRepositoryDetection","weight":242,"cookies":false,"type":"","demo":"vcs\/create-repository-detection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"type":"string","x-example":"[INSTALLATION_ID]","in":"path"},{"name":"providerRepositoryId","description":"Repository Id","required":true,"type":"string","x-example":"[PROVIDER_REPOSITORY_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerRootDirectory":{"type":"string","description":"Path to Root Directory","default":"","x-example":"[PROVIDER_ROOT_DIRECTORY]"}}}}]}},"\/vcs\/github\/installations\/{installationId}\/repositories\/{repositoryId}":{"patch":{"summary":"Authorize external deployment","operationId":"vcsUpdateExternalDeployments","consumes":["application\/json"],"produces":[],"tags":["vcs"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"updateExternalDeployments","weight":251,"cookies":false,"type":"","demo":"vcs\/update-external-deployments.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"type":"string","x-example":"[INSTALLATION_ID]","in":"path"},{"name":"repositoryId","description":"VCS Repository Id","required":true,"type":"string","x-example":"[REPOSITORY_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerPullRequestId":{"type":"string","description":"GitHub Pull Request Id","default":null,"x-example":"[PROVIDER_PULL_REQUEST_ID]"}},"required":["providerPullRequestId"]}}]}},"\/vcs\/installations":{"get":{"summary":"List installations","operationId":"vcsListInstallations","consumes":["application\/json"],"produces":["application\/json"],"tags":["vcs"],"description":"","responses":{"200":{"description":"Installations List","schema":{"$ref":"#\/definitions\/installationList"}}},"x-appwrite":{"method":"listInstallations","weight":248,"cookies":false,"type":"","demo":"vcs\/list-installations.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/vcs\/list-installations.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: provider, organization","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]}},"\/vcs\/installations\/{installationId}":{"get":{"summary":"Get installation","operationId":"vcsGetInstallation","consumes":["application\/json"],"produces":["application\/json"],"tags":["vcs"],"description":"","responses":{"200":{"description":"Installation","schema":{"$ref":"#\/definitions\/installation"}}},"x-appwrite":{"method":"getInstallation","weight":249,"cookies":false,"type":"","demo":"vcs\/get-installation.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/vcs\/get-installation.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"type":"string","x-example":"[INSTALLATION_ID]","in":"path"}]},"delete":{"summary":"Delete Installation","operationId":"vcsDeleteInstallation","consumes":["application\/json"],"produces":[],"tags":["vcs"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteInstallation","weight":250,"cookies":false,"type":"","demo":"vcs\/delete-installation.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/vcs\/delete-installation.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"type":"string","x-example":"[INSTALLATION_ID]","in":"path"}]}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"project","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]},{"name":"proxy","description":"The Proxy Service allows you to configure actions for your domains beyond DNS configuration.","x-globalAttributes":[]},{"name":"graphql","description":"The GraphQL API allows you to query and mutate your Appwrite server using GraphQL.","x-globalAttributes":[]},{"name":"console","description":"The Console service allows you to interact with console relevant informations.","x-globalAttributes":[]},{"name":"migrations","description":"The Migrations service allows you to migrate third-party data to your Appwrite project.","x-globalAttributes":[]},{"name":"messaging","description":"The Messaging service allows you to send messages to any provider type (SMTP, push notification, SMS, etc.).","x-globalAttributes":[]}],"definitions":{"any":{"description":"Any","type":"object","additionalProperties":true},"documentList":{"description":"Documents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of documents documents that matched your query.","x-example":5,"format":"int32"},"documents":{"type":"array","description":"List of documents.","items":{"type":"object","$ref":"#\/definitions\/document"},"x-example":""}},"required":["total","documents"]},"collectionList":{"description":"Collections List","type":"object","properties":{"total":{"type":"integer","description":"Total number of collections documents that matched your query.","x-example":5,"format":"int32"},"collections":{"type":"array","description":"List of collections.","items":{"type":"object","$ref":"#\/definitions\/collection"},"x-example":""}},"required":["total","collections"]},"databaseList":{"description":"Databases List","type":"object","properties":{"total":{"type":"integer","description":"Total number of databases documents that matched your query.","x-example":5,"format":"int32"},"databases":{"type":"array","description":"List of databases.","items":{"type":"object","$ref":"#\/definitions\/database"},"x-example":""}},"required":["total","databases"]},"indexList":{"description":"Indexes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of indexes documents that matched your query.","x-example":5,"format":"int32"},"indexes":{"type":"array","description":"List of indexes.","items":{"type":"object","$ref":"#\/definitions\/index"},"x-example":""}},"required":["total","indexes"]},"userList":{"description":"Users List","type":"object","properties":{"total":{"type":"integer","description":"Total number of users documents that matched your query.","x-example":5,"format":"int32"},"users":{"type":"array","description":"List of users.","items":{"type":"object","$ref":"#\/definitions\/user"},"x-example":""}},"required":["total","users"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of sessions documents that matched your query.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"type":"object","$ref":"#\/definitions\/session"},"x-example":""}},"required":["total","sessions"]},"identityList":{"description":"Identities List","type":"object","properties":{"total":{"type":"integer","description":"Total number of identities documents that matched your query.","x-example":5,"format":"int32"},"identities":{"type":"array","description":"List of identities.","items":{"type":"object","$ref":"#\/definitions\/identity"},"x-example":""}},"required":["total","identities"]},"logList":{"description":"Logs List","type":"object","properties":{"total":{"type":"integer","description":"Total number of logs documents that matched your query.","x-example":5,"format":"int32"},"logs":{"type":"array","description":"List of logs.","items":{"type":"object","$ref":"#\/definitions\/log"},"x-example":""}},"required":["total","logs"]},"fileList":{"description":"Files List","type":"object","properties":{"total":{"type":"integer","description":"Total number of files documents that matched your query.","x-example":5,"format":"int32"},"files":{"type":"array","description":"List of files.","items":{"type":"object","$ref":"#\/definitions\/file"},"x-example":""}},"required":["total","files"]},"bucketList":{"description":"Buckets List","type":"object","properties":{"total":{"type":"integer","description":"Total number of buckets documents that matched your query.","x-example":5,"format":"int32"},"buckets":{"type":"array","description":"List of buckets.","items":{"type":"object","$ref":"#\/definitions\/bucket"},"x-example":""}},"required":["total","buckets"]},"teamList":{"description":"Teams List","type":"object","properties":{"total":{"type":"integer","description":"Total number of teams documents that matched your query.","x-example":5,"format":"int32"},"teams":{"type":"array","description":"List of teams.","items":{"type":"object","$ref":"#\/definitions\/team"},"x-example":""}},"required":["total","teams"]},"membershipList":{"description":"Memberships List","type":"object","properties":{"total":{"type":"integer","description":"Total number of memberships documents that matched your query.","x-example":5,"format":"int32"},"memberships":{"type":"array","description":"List of memberships.","items":{"type":"object","$ref":"#\/definitions\/membership"},"x-example":""}},"required":["total","memberships"]},"functionList":{"description":"Functions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of functions documents that matched your query.","x-example":5,"format":"int32"},"functions":{"type":"array","description":"List of functions.","items":{"type":"object","$ref":"#\/definitions\/function"},"x-example":""}},"required":["total","functions"]},"installationList":{"description":"Installations List","type":"object","properties":{"total":{"type":"integer","description":"Total number of installations documents that matched your query.","x-example":5,"format":"int32"},"installations":{"type":"array","description":"List of installations.","items":{"type":"object","$ref":"#\/definitions\/installation"},"x-example":""}},"required":["total","installations"]},"providerRepositoryList":{"description":"Provider Repositories List","type":"object","properties":{"total":{"type":"integer","description":"Total number of providerRepositories documents that matched your query.","x-example":5,"format":"int32"},"providerRepositories":{"type":"array","description":"List of providerRepositories.","items":{"type":"object","$ref":"#\/definitions\/providerRepository"},"x-example":""}},"required":["total","providerRepositories"]},"branchList":{"description":"Branches List","type":"object","properties":{"total":{"type":"integer","description":"Total number of branches documents that matched your query.","x-example":5,"format":"int32"},"branches":{"type":"array","description":"List of branches.","items":{"type":"object","$ref":"#\/definitions\/branch"},"x-example":""}},"required":["total","branches"]},"runtimeList":{"description":"Runtimes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of runtimes documents that matched your query.","x-example":5,"format":"int32"},"runtimes":{"type":"array","description":"List of runtimes.","items":{"type":"object","$ref":"#\/definitions\/runtime"},"x-example":""}},"required":["total","runtimes"]},"deploymentList":{"description":"Deployments List","type":"object","properties":{"total":{"type":"integer","description":"Total number of deployments documents that matched your query.","x-example":5,"format":"int32"},"deployments":{"type":"array","description":"List of deployments.","items":{"type":"object","$ref":"#\/definitions\/deployment"},"x-example":""}},"required":["total","deployments"]},"executionList":{"description":"Executions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of executions documents that matched your query.","x-example":5,"format":"int32"},"executions":{"type":"array","description":"List of executions.","items":{"type":"object","$ref":"#\/definitions\/execution"},"x-example":""}},"required":["total","executions"]},"projectList":{"description":"Projects List","type":"object","properties":{"total":{"type":"integer","description":"Total number of projects documents that matched your query.","x-example":5,"format":"int32"},"projects":{"type":"array","description":"List of projects.","items":{"type":"object","$ref":"#\/definitions\/project"},"x-example":""}},"required":["total","projects"]},"webhookList":{"description":"Webhooks List","type":"object","properties":{"total":{"type":"integer","description":"Total number of webhooks documents that matched your query.","x-example":5,"format":"int32"},"webhooks":{"type":"array","description":"List of webhooks.","items":{"type":"object","$ref":"#\/definitions\/webhook"},"x-example":""}},"required":["total","webhooks"]},"keyList":{"description":"API Keys List","type":"object","properties":{"total":{"type":"integer","description":"Total number of keys documents that matched your query.","x-example":5,"format":"int32"},"keys":{"type":"array","description":"List of keys.","items":{"type":"object","$ref":"#\/definitions\/key"},"x-example":""}},"required":["total","keys"]},"platformList":{"description":"Platforms List","type":"object","properties":{"total":{"type":"integer","description":"Total number of platforms documents that matched your query.","x-example":5,"format":"int32"},"platforms":{"type":"array","description":"List of platforms.","items":{"type":"object","$ref":"#\/definitions\/platform"},"x-example":""}},"required":["total","platforms"]},"countryList":{"description":"Countries List","type":"object","properties":{"total":{"type":"integer","description":"Total number of countries documents that matched your query.","x-example":5,"format":"int32"},"countries":{"type":"array","description":"List of countries.","items":{"type":"object","$ref":"#\/definitions\/country"},"x-example":""}},"required":["total","countries"]},"continentList":{"description":"Continents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of continents documents that matched your query.","x-example":5,"format":"int32"},"continents":{"type":"array","description":"List of continents.","items":{"type":"object","$ref":"#\/definitions\/continent"},"x-example":""}},"required":["total","continents"]},"languageList":{"description":"Languages List","type":"object","properties":{"total":{"type":"integer","description":"Total number of languages documents that matched your query.","x-example":5,"format":"int32"},"languages":{"type":"array","description":"List of languages.","items":{"type":"object","$ref":"#\/definitions\/language"},"x-example":""}},"required":["total","languages"]},"currencyList":{"description":"Currencies List","type":"object","properties":{"total":{"type":"integer","description":"Total number of currencies documents that matched your query.","x-example":5,"format":"int32"},"currencies":{"type":"array","description":"List of currencies.","items":{"type":"object","$ref":"#\/definitions\/currency"},"x-example":""}},"required":["total","currencies"]},"phoneList":{"description":"Phones List","type":"object","properties":{"total":{"type":"integer","description":"Total number of phones documents that matched your query.","x-example":5,"format":"int32"},"phones":{"type":"array","description":"List of phones.","items":{"type":"object","$ref":"#\/definitions\/phone"},"x-example":""}},"required":["total","phones"]},"variableList":{"description":"Variables List","type":"object","properties":{"total":{"type":"integer","description":"Total number of variables documents that matched your query.","x-example":5,"format":"int32"},"variables":{"type":"array","description":"List of variables.","items":{"type":"object","$ref":"#\/definitions\/variable"},"x-example":""}},"required":["total","variables"]},"proxyRuleList":{"description":"Rule List","type":"object","properties":{"total":{"type":"integer","description":"Total number of rules documents that matched your query.","x-example":5,"format":"int32"},"rules":{"type":"array","description":"List of rules.","items":{"type":"object","$ref":"#\/definitions\/proxyRule"},"x-example":""}},"required":["total","rules"]},"localeCodeList":{"description":"Locale codes list","type":"object","properties":{"total":{"type":"integer","description":"Total number of localeCodes documents that matched your query.","x-example":5,"format":"int32"},"localeCodes":{"type":"array","description":"List of localeCodes.","items":{"type":"object","$ref":"#\/definitions\/localeCode"},"x-example":""}},"required":["total","localeCodes"]},"providerList":{"description":"Provider list","type":"object","properties":{"total":{"type":"integer","description":"Total number of providers documents that matched your query.","x-example":5,"format":"int32"},"providers":{"type":"array","description":"List of providers.","items":{"type":"object","$ref":"#\/definitions\/provider"},"x-example":""}},"required":["total","providers"]},"messageList":{"description":"Message list","type":"object","properties":{"total":{"type":"integer","description":"Total number of messages documents that matched your query.","x-example":5,"format":"int32"},"messages":{"type":"array","description":"List of messages.","items":{"type":"object","$ref":"#\/definitions\/message"},"x-example":""}},"required":["total","messages"]},"topicList":{"description":"Topic list","type":"object","properties":{"total":{"type":"integer","description":"Total number of topics documents that matched your query.","x-example":5,"format":"int32"},"topics":{"type":"array","description":"List of topics.","items":{"type":"object","$ref":"#\/definitions\/topic"},"x-example":""}},"required":["total","topics"]},"subscriberList":{"description":"Subscriber list","type":"object","properties":{"total":{"type":"integer","description":"Total number of subscribers documents that matched your query.","x-example":5,"format":"int32"},"subscribers":{"type":"array","description":"List of subscribers.","items":{"type":"object","$ref":"#\/definitions\/subscriber"},"x-example":""}},"required":["total","subscribers"]},"targetList":{"description":"Target list","type":"object","properties":{"total":{"type":"integer","description":"Total number of targets documents that matched your query.","x-example":5,"format":"int32"},"targets":{"type":"array","description":"List of targets.","items":{"type":"object","$ref":"#\/definitions\/target"},"x-example":""}},"required":["total","targets"]},"migrationList":{"description":"Migrations List","type":"object","properties":{"total":{"type":"integer","description":"Total number of migrations documents that matched your query.","x-example":5,"format":"int32"},"migrations":{"type":"array","description":"List of migrations.","items":{"type":"object","$ref":"#\/definitions\/migration"},"x-example":""}},"required":["total","migrations"]},"firebaseProjectList":{"description":"Migrations Firebase Projects List","type":"object","properties":{"total":{"type":"integer","description":"Total number of projects documents that matched your query.","x-example":5,"format":"int32"},"projects":{"type":"array","description":"List of projects.","items":{"type":"object","$ref":"#\/definitions\/firebaseProject"},"x-example":""}},"required":["total","projects"]},"database":{"description":"Database","type":"object","properties":{"$id":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Database name.","x-example":"My Database"},"$createdAt":{"type":"string","description":"Database creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Database update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"enabled":{"type":"boolean","description":"If database is enabled. Can be 'enabled' or 'disabled'. When disabled, the database is inaccessible to users, but remains accessible to Server SDKs using API keys.","x-example":false}},"required":["$id","name","$createdAt","$updatedAt","enabled"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Collection creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Collection update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Collection permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled. Can be 'enabled' or 'disabled'. When disabled, the collection is inaccessible to users, but remains accessible to Server SDKs using API keys.","x-example":false},"documentSecurity":{"type":"boolean","description":"Whether document-level permissions are enabled. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":true},"attributes":{"type":"array","description":"Collection attributes.","items":{"x-anyOf":[{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeRelationship"},{"$ref":"#\/definitions\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"type":"object","$ref":"#\/definitions\/index"},"x-example":{}}},"required":["$id","$createdAt","$updatedAt","$permissions","databaseId","name","enabled","documentSecurity","attributes","indexes"]},"attributeList":{"description":"Attributes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of attributes in the given collection.","x-example":5,"format":"int32"},"attributes":{"type":"array","description":"List of attributes.","items":{"x-anyOf":[{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeRelationship"},{"$ref":"#\/definitions\/attributeString"}]},"x-example":""}},"required":["total","attributes"]},"attributeString":{"description":"AttributeString","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"fullName"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"size":{"type":"integer","description":"Attribute size.","x-example":128,"format":"int32"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"default","x-nullable":true}},"required":["key","type","status","error","required","size"]},"attributeInteger":{"description":"AttributeInteger","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"count"},"type":{"type":"string","description":"Attribute type.","x-example":"integer"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"min":{"type":"integer","description":"Minimum value to enforce for new documents.","x-example":1,"format":"int32","x-nullable":true},"max":{"type":"integer","description":"Maximum value to enforce for new documents.","x-example":10,"format":"int32","x-nullable":true},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":10,"format":"int32","x-nullable":true}},"required":["key","type","status","error","required"]},"attributeFloat":{"description":"AttributeFloat","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"percentageCompleted"},"type":{"type":"string","description":"Attribute type.","x-example":"double"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"min":{"type":"number","description":"Minimum value to enforce for new documents.","x-example":1.5,"format":"double","x-nullable":true},"max":{"type":"number","description":"Maximum value to enforce for new documents.","x-example":10.5,"format":"double","x-nullable":true},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":2.5,"format":"double","x-nullable":true}},"required":["key","type","status","error","required"]},"attributeBoolean":{"description":"AttributeBoolean","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"isEnabled"},"type":{"type":"string","description":"Attribute type.","x-example":"boolean"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":false,"x-nullable":true}},"required":["key","type","status","error","required"]},"attributeEmail":{"description":"AttributeEmail","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"userEmail"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"format":{"type":"string","description":"String format.","x-example":"email"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"default@example.com","x-nullable":true}},"required":["key","type","status","error","required","format"]},"attributeEnum":{"description":"AttributeEnum","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"status"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"elements":{"type":"array","description":"Array of elements in enumerated type.","items":{"type":"string"},"x-example":"element"},"format":{"type":"string","description":"String format.","x-example":"enum"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"element","x-nullable":true}},"required":["key","type","status","error","required","elements","format"]},"attributeIp":{"description":"AttributeIP","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"ipAddress"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"format":{"type":"string","description":"String format.","x-example":"ip"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"192.0.2.0","x-nullable":true}},"required":["key","type","status","error","required","format"]},"attributeUrl":{"description":"AttributeURL","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"githubUrl"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"format":{"type":"string","description":"String format.","x-example":"url"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"http:\/\/example.com","x-nullable":true}},"required":["key","type","status","error","required","format"]},"attributeDatetime":{"description":"AttributeDatetime","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"birthDay"},"type":{"type":"string","description":"Attribute type.","x-example":"datetime"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"format":{"type":"string","description":"ISO 8601 format.","x-example":"datetime"},"default":{"type":"string","description":"Default value for attribute when not provided. Only null is optional","x-example":"2020-10-15T06:38:00.000+00:00","x-nullable":true}},"required":["key","type","status","error","required","format"]},"attributeRelationship":{"description":"AttributeRelationship","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"fullName"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"relatedCollection":{"type":"string","description":"The ID of the related collection.","x-example":"collection"},"relationType":{"type":"string","description":"The type of the relationship.","x-example":"oneToOne|oneToMany|manyToOne|manyToMany"},"twoWay":{"type":"boolean","description":"Is the relationship two-way?","x-example":false},"twoWayKey":{"type":"string","description":"The key of the two-way relationship.","x-example":"string"},"onDelete":{"type":"string","description":"How deleting the parent document will propagate to child documents.","x-example":"restrict|cascade|setNull"},"side":{"type":"string","description":"Whether this is the parent or child side of the relationship","x-example":"parent|child"}},"required":["key","type","status","error","required","relatedCollection","relationType","twoWay","twoWayKey","onDelete","side"]},"index":{"description":"Index","type":"object","properties":{"key":{"type":"string","description":"Index Key.","x-example":"index1"},"type":{"type":"string","description":"Index type.","x-example":"primary"},"status":{"type":"string","description":"Index status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an index.","x-example":"string"},"attributes":{"type":"array","description":"Index attributes.","items":{"type":"string"},"x-example":[]},"orders":{"type":"array","description":"Index orders.","items":{"type":"string"},"x-example":[],"x-nullable":true}},"required":["key","type","status","error","attributes"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"user":{"description":"User","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"password":{"type":"string","description":"Hashed user password.","x-example":"$argon2id$v=19$m=2048,t=4,p=3$aUZjLnliVWRINmFNTWMudg$5S+x+7uA31xFnrHFT47yFwcJeaP0w92L\/4LdgrVRXxE","x-nullable":true},"hash":{"type":"string","description":"Password hashing algorithm.","x-example":"argon2","x-nullable":true},"hashOptions":{"type":"object","description":"Password hashing algorithm configuration.","x-example":{},"items":{"x-oneOf":[{"$ref":"#\/definitions\/algoArgon2"},{"$ref":"#\/definitions\/algoScrypt"},{"$ref":"#\/definitions\/algoScryptModified"},{"$ref":"#\/definitions\/algoBcrypt"},{"$ref":"#\/definitions\/algoPhpass"},{"$ref":"#\/definitions\/algoSha"},{"$ref":"#\/definitions\/algoMd5"}]},"x-nullable":true},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"labels":{"type":"array","description":"Labels for the user.","items":{"type":"string"},"x-example":["vip"]},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"type":"object","$ref":"#\/definitions\/preferences"}},"targets":{"type":"array","description":"A user-owned message receiver. A single user may have multiple e.g. emails, phones, and a browser. Each target is registered with a single provider.","items":{"type":"object","$ref":"#\/definitions\/target"},"x-example":[]},"accessedAt":{"type":"string","description":"Most recent access date in ISO 8601 format. This attribute is only updated again after 24 hours.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","$updatedAt","name","registration","status","labels","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs","targets","accessedAt"]},"algoMd5":{"description":"AlgoMD5","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"md5"}},"required":["type"]},"algoSha":{"description":"AlgoSHA","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"sha"}},"required":["type"]},"algoPhpass":{"description":"AlgoPHPass","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"phpass"}},"required":["type"]},"algoBcrypt":{"description":"AlgoBcrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"bcrypt"}},"required":["type"]},"algoScrypt":{"description":"AlgoScrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scrypt"},"costCpu":{"type":"integer","description":"CPU complexity of computed hash.","x-example":8,"format":"int32"},"costMemory":{"type":"integer","description":"Memory complexity of computed hash.","x-example":14,"format":"int32"},"costParallel":{"type":"integer","description":"Parallelization of computed hash.","x-example":1,"format":"int32"},"length":{"type":"integer","description":"Length used to compute hash.","x-example":64,"format":"int32"}},"required":["type","costCpu","costMemory","costParallel","length"]},"algoScryptModified":{"description":"AlgoScryptModified","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scryptMod"},"salt":{"type":"string","description":"Salt used to compute hash.","x-example":"UxLMreBr6tYyjQ=="},"saltSeparator":{"type":"string","description":"Separator used to compute hash.","x-example":"Bw=="},"signerKey":{"type":"string","description":"Key used to compute hash.","x-example":"XyEKE9RcTDeLEsL\/RjwPDBv\/RqDl8fb3gpYEOQaPihbxf1ZAtSOHCjuAAa7Q3oHpCYhXSN9tizHgVOwn6krflQ=="}},"required":["type","salt","saltSeparator","signerKey"]},"algoArgon2":{"description":"AlgoArgon2","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"argon2"},"memoryCost":{"type":"integer","description":"Memory used to compute hash.","x-example":65536,"format":"int32"},"timeCost":{"type":"integer","description":"Amount of time consumed to compute hash","x-example":4,"format":"int32"},"threads":{"type":"integer","description":"Number of threads used to compute hash.","x-example":3,"format":"int32"}},"required":["type","memoryCost","timeCost","threads"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true},"secret":{"type":"string","description":"Secret used to authenticate the user. Only included if the request was made with an API key","x-example":"5e5bb8c16897e"}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current","secret"]},"identity":{"description":"Identity","type":"object","properties":{"$id":{"type":"string","description":"Identity ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Identity creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Identity update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"provider":{"type":"string","description":"Identity Provider.","x-example":"email"},"providerUid":{"type":"string","description":"ID of the User in the Identity Provider.","x-example":"5e5bb8c16897e"},"providerEmail":{"type":"string","description":"Email of the User in the Identity Provider.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Identity Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Identity Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"}},"required":["$id","$createdAt","$updatedAt","userId","provider","providerUid","providerEmail","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"securityPhrase":{"type":"string","description":"Security phrase of a token. Empty if security phrase was not requested when creating a token. It includes randomly generated phrase which is also sent in the external resource such as email.","x-example":"Golden Fox"}},"required":["$id","$createdAt","userId","secret","expire","securityPhrase"]},"jwt":{"description":"JWT","type":"object","properties":{"jwt":{"type":"string","description":"JWT encoded string.","x-example":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c"}},"required":["jwt"]},"locale":{"description":"Locale","type":"object","properties":{"ip":{"type":"string","description":"User IP address.","x-example":"127.0.0.1"},"countryCode":{"type":"string","description":"Country code in [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) two-character format","x-example":"US"},"country":{"type":"string","description":"Country name. This field support localization.","x-example":"United States"},"continentCode":{"type":"string","description":"Continent code. A two character continent code \"AF\" for Africa, \"AN\" for Antarctica, \"AS\" for Asia, \"EU\" for Europe, \"NA\" for North America, \"OC\" for Oceania, and \"SA\" for South America.","x-example":"NA"},"continent":{"type":"string","description":"Continent name. This field support localization.","x-example":"North America"},"eu":{"type":"boolean","description":"True if country is part of the European Union.","x-example":false},"currency":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format","x-example":"USD"}},"required":["ip","countryCode","country","continentCode","continent","eu","currency"]},"localeCode":{"description":"LocaleCode","type":"object","properties":{"code":{"type":"string","description":"Locale codes in [ISO 639-1](https:\/\/en.wikipedia.org\/wiki\/List_of_ISO_639-1_codes)","x-example":"en-us"},"name":{"type":"string","description":"Locale name","x-example":"US"}},"required":["code","name"]},"file":{"description":"File","type":"object","properties":{"$id":{"type":"string","description":"File ID.","x-example":"5e5ea5c16897e"},"bucketId":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Bucket creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Bucket update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Bucket permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"fileSecurity":{"type":"boolean","description":"Whether file-level security is enabled. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":true},"name":{"type":"string","description":"Bucket name.","x-example":"Documents"},"enabled":{"type":"boolean","description":"Bucket enabled.","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size supported.","x-example":100,"format":"int32"},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions.","items":{"type":"string"},"x-example":["jpg","png"]},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Will be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd).","x-example":"gzip"},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$createdAt","$updatedAt","$permissions","fileSecurity","name","enabled","maximumFileSize","allowedFileExtensions","compression","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"},"prefs":{"type":"object","description":"Team preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"type":"object","$ref":"#\/definitions\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","total","prefs"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":["owner"]}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Function creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Function update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"users"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"enabled":{"type":"boolean","description":"Function enabled.","x-example":false},"live":{"type":"boolean","description":"Is the function deployed with the latest configuration? This is set to false if you've changed an environment variables, entrypoint, commands, or other settings that needs redeploy to be applied. When the value is false, redeploy the function to update it with the latest configuration.","x-example":false},"logging":{"type":"boolean","description":"Whether executions will be logged. When set to false, executions will not be logged, but will reduce resource used by your Appwrite project.","x-example":false},"runtime":{"type":"string","description":"Function execution runtime.","x-example":"python-3.8"},"deployment":{"type":"string","description":"Function's active deployment ID.","x-example":"5e5ea5c16897e"},"vars":{"type":"array","description":"Function variables.","items":{"type":"object","$ref":"#\/definitions\/variable"},"x-example":[]},"events":{"type":"array","description":"Function trigger events.","items":{"type":"string"},"x-example":"account.create"},"schedule":{"type":"string","description":"Function execution schedult in CRON format.","x-example":"5 4 * * *"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":300,"format":"int32"},"entrypoint":{"type":"string","description":"The entrypoint file used to execute the deployment.","x-example":"index.js"},"commands":{"type":"string","description":"The build command used to build the deployment.","x-example":"npm install"},"version":{"type":"string","description":"Version of Open Runtimes used for the function.","x-example":"v2"},"installationId":{"type":"string","description":"Function VCS (Version Control System) installation id.","x-example":"6m40at4ejk5h2u9s1hboo"},"providerRepositoryId":{"type":"string","description":"VCS (Version Control System) Repository ID","x-example":"appwrite"},"providerBranch":{"type":"string","description":"VCS (Version Control System) branch name","x-example":"main"},"providerRootDirectory":{"type":"string","description":"Path to function in VCS (Version Control System) repository","x-example":"functions\/helloWorld"},"providerSilentMode":{"type":"boolean","description":"Is VCS (Version Control System) connection is in silent mode? When in silence mode, no comments will be posted on the repository pull or merge requests","x-example":false}},"required":["$id","$createdAt","$updatedAt","execute","name","enabled","live","logging","runtime","deployment","vars","events","schedule","timeout","entrypoint","commands","version","installationId","providerRepositoryId","providerBranch","providerRootDirectory","providerSilentMode"]},"installation":{"description":"Installation","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Function creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Function update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"VCS (Version Control System) provider name.","x-example":"github"},"organization":{"type":"string","description":"VCS (Version Control System) organization name.","x-example":"appwrite"},"providerInstallationId":{"type":"string","description":"VCS (Version Control System) installation ID.","x-example":"5322"}},"required":["$id","$createdAt","$updatedAt","provider","organization","providerInstallationId"]},"providerRepository":{"description":"ProviderRepository","type":"object","properties":{"id":{"type":"string","description":"VCS (Version Control System) repository ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"VCS (Version Control System) repository name.","x-example":"appwrite"},"organization":{"type":"string","description":"VCS (Version Control System) organization name","x-example":"appwrite"},"provider":{"type":"string","description":"VCS (Version Control System) provider name.","x-example":"github"},"private":{"type":"boolean","description":"Is VCS (Version Control System) repository private?","x-example":true},"runtime":{"type":"string","description":"Auto-detected runtime suggestion. Empty if getting response of getRuntime().","x-example":"node"},"pushedAt":{"type":"string","description":"Last commit date in ISO 8601 format.","x-example":"datetime"}},"required":["id","name","organization","provider","private","runtime","pushedAt"]},"detection":{"description":"Detection","type":"object","properties":{"runtime":{"type":"string","description":"Runtime","x-example":"node"}},"required":["runtime"]},"branch":{"description":"Branch","type":"object","properties":{"name":{"type":"string","description":"Branch Name.","x-example":"main"}},"required":["name"]},"runtime":{"description":"Runtime","type":"object","properties":{"$id":{"type":"string","description":"Runtime ID.","x-example":"python-3.8"},"name":{"type":"string","description":"Runtime Name.","x-example":"Python"},"version":{"type":"string","description":"Runtime version.","x-example":"3.8"},"base":{"type":"string","description":"Base Docker image used to build the runtime.","x-example":"python:3.8-alpine"},"image":{"type":"string","description":"Image name of Docker Hub.","x-example":"appwrite\\\/runtime-for-python:3.8"},"logo":{"type":"string","description":"Name of the logo image.","x-example":"python.png"},"supports":{"type":"array","description":"List of supported architectures.","items":{"type":"string"},"x-example":"amd64"}},"required":["$id","name","version","base","image","logo","supports"]},"deployment":{"description":"Deployment","type":"object","properties":{"$id":{"type":"string","description":"Deployment ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Deployment creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Deployment update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"type":{"type":"string","description":"Type of deployment.","x-example":"vcs"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"index.js"},"size":{"type":"integer","description":"The code size in bytes.","x-example":128,"format":"int32"},"buildId":{"type":"string","description":"The current build ID.","x-example":"5e5ea5c16897e"},"activate":{"type":"boolean","description":"Whether the deployment should be automatically activated.","x-example":true},"status":{"type":"string","description":"The deployment status. Possible values are \"processing\", \"building\", \"waiting\", \"ready\", and \"failed\".","x-example":"ready"},"buildLogs":{"type":"string","description":"The build logs.","x-example":"Compiling source files..."},"buildTime":{"type":"integer","description":"The current build time in seconds.","x-example":128,"format":"int32"},"providerRepositoryName":{"type":"string","description":"The name of the vcs provider repository","x-example":"database"},"providerRepositoryOwner":{"type":"string","description":"The name of the vcs provider repository owner","x-example":"utopia"},"providerRepositoryUrl":{"type":"string","description":"The url of the vcs provider repository","x-example":"https:\/\/github.com\/vermakhushboo\/g4-node-function"},"providerBranch":{"type":"string","description":"The branch of the vcs repository","x-example":"0.7.x"},"providerCommitHash":{"type":"string","description":"The commit hash of the vcs commit","x-example":"7c3f25d"},"providerCommitAuthorUrl":{"type":"string","description":"The url of vcs commit author","x-example":"https:\/\/github.com\/vermakhushboo"},"providerCommitAuthor":{"type":"string","description":"The name of vcs commit author","x-example":"Khushboo Verma"},"providerCommitMessage":{"type":"string","description":"The commit message","x-example":"Update index.js"},"providerCommitUrl":{"type":"string","description":"The url of the vcs commit","x-example":"https:\/\/github.com\/vermakhushboo\/g4-node-function\/commit\/60c0416257a9cbcdd96b2d370c38d8f8d150ccfb"},"providerBranchUrl":{"type":"string","description":"The branch of the vcs repository","x-example":"https:\/\/github.com\/vermakhushboo\/appwrite\/tree\/0.7.x"}},"required":["$id","$createdAt","$updatedAt","type","resourceId","resourceType","entrypoint","size","buildId","activate","status","buildLogs","buildTime","providerRepositoryName","providerRepositoryOwner","providerRepositoryUrl","providerBranch","providerCommitHash","providerCommitAuthorUrl","providerCommitAuthor","providerCommitMessage","providerCommitUrl","providerBranchUrl"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"requestMethod":{"type":"string","description":"HTTP request method type.","x-example":"GET"},"requestPath":{"type":"string","description":"HTTP request path and query.","x-example":"\/articles?id=5"},"requestHeaders":{"type":"array","description":"HTTP response headers as a key-value object. This will return only whitelisted headers. All headers are returned if execution is created as synchronous.","items":{"type":"object","$ref":"#\/definitions\/headers"},"x-example":[{"Content-Type":"application\/json"}]},"responseStatusCode":{"type":"integer","description":"HTTP response status code.","x-example":200,"format":"int32"},"responseBody":{"type":"string","description":"HTTP response body. This will return empty unless execution is created as synchronous.","x-example":"Developers are awesome."},"responseHeaders":{"type":"array","description":"HTTP response headers as a key-value object. This will return only whitelisted headers. All headers are returned if execution is created as synchronous.","items":{"type":"object","$ref":"#\/definitions\/headers"},"x-example":[{"Content-Type":"application\/json"}]},"logs":{"type":"string","description":"Function logs. Includes the last 4,000 characters. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"errors":{"type":"string","description":"Function errors. Includes the last 4,000 characters. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"Function execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","requestMethod","requestPath","requestHeaders","responseStatusCode","responseBody","responseHeaders","logs","errors","duration"]},"project":{"description":"Project","type":"object","properties":{"$id":{"type":"string","description":"Project ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Project creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Project update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Project name.","x-example":"New Project"},"description":{"type":"string","description":"Project description.","x-example":"This is a new project."},"teamId":{"type":"string","description":"Project team ID.","x-example":"1592981250"},"logo":{"type":"string","description":"Project logo file ID.","x-example":"5f5c451b403cb"},"url":{"type":"string","description":"Project website URL.","x-example":"5f5c451b403cb"},"legalName":{"type":"string","description":"Company legal name.","x-example":"Company LTD."},"legalCountry":{"type":"string","description":"Country code in [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) two-character format.","x-example":"US"},"legalState":{"type":"string","description":"State name.","x-example":"New York"},"legalCity":{"type":"string","description":"City name.","x-example":"New York City."},"legalAddress":{"type":"string","description":"Company Address.","x-example":"620 Eighth Avenue, New York, NY 10018"},"legalTaxId":{"type":"string","description":"Company Tax ID.","x-example":"131102020"},"authDuration":{"type":"integer","description":"Session duration in seconds.","x-example":60,"format":"int32"},"authLimit":{"type":"integer","description":"Max users allowed. 0 is unlimited.","x-example":100,"format":"int32"},"authSessionsLimit":{"type":"integer","description":"Max sessions allowed per user. 100 maximum.","x-example":10,"format":"int32"},"authPasswordHistory":{"type":"integer","description":"Max allowed passwords in the history list per user. Max passwords limit allowed in history is 20. Use 0 for disabling password history.","x-example":5,"format":"int32"},"authPasswordDictionary":{"type":"boolean","description":"Whether or not to check user's password against most commonly used passwords.","x-example":true},"authPersonalDataCheck":{"type":"boolean","description":"Whether or not to check the user password for similarity with their personal data.","x-example":true},"oAuthProviders":{"type":"array","description":"List of Auth Providers.","items":{"type":"object","$ref":"#\/definitions\/authProvider"},"x-example":[{}]},"platforms":{"type":"array","description":"List of Platforms.","items":{"type":"object","$ref":"#\/definitions\/platform"},"x-example":{}},"webhooks":{"type":"array","description":"List of Webhooks.","items":{"type":"object","$ref":"#\/definitions\/webhook"},"x-example":{}},"keys":{"type":"array","description":"List of API Keys.","items":{"type":"object","$ref":"#\/definitions\/key"},"x-example":{}},"smtpEnabled":{"type":"boolean","description":"Status for custom SMTP","x-example":false},"smtpSenderName":{"type":"string","description":"SMTP sender name","x-example":"John Appwrite"},"smtpSenderEmail":{"type":"string","description":"SMTP sender email","x-example":"john@appwrite.io"},"smtpReplyTo":{"type":"string","description":"SMTP reply to email","x-example":"support@appwrite.io"},"smtpHost":{"type":"string","description":"SMTP server host name","x-example":"mail.appwrite.io"},"smtpPort":{"type":"integer","description":"SMTP server port","x-example":25,"format":"int32"},"smtpUsername":{"type":"string","description":"SMTP server username","x-example":"emailuser"},"smtpPassword":{"type":"string","description":"SMTP server password","x-example":"securepassword"},"smtpSecure":{"type":"string","description":"SMTP server secure protocol","x-example":"tls"},"authEmailPassword":{"type":"boolean","description":"Email\/Password auth method status","x-example":true},"authUsersAuthMagicURL":{"type":"boolean","description":"Magic URL auth method status","x-example":true},"authAnonymous":{"type":"boolean","description":"Anonymous auth method status","x-example":true},"authInvites":{"type":"boolean","description":"Invites auth method status","x-example":true},"authJWT":{"type":"boolean","description":"JWT auth method status","x-example":true},"authPhone":{"type":"boolean","description":"Phone auth method status","x-example":true},"serviceStatusForAccount":{"type":"boolean","description":"Account service status","x-example":true},"serviceStatusForAvatars":{"type":"boolean","description":"Avatars service status","x-example":true},"serviceStatusForDatabases":{"type":"boolean","description":"Databases service status","x-example":true},"serviceStatusForLocale":{"type":"boolean","description":"Locale service status","x-example":true},"serviceStatusForHealth":{"type":"boolean","description":"Health service status","x-example":true},"serviceStatusForStorage":{"type":"boolean","description":"Storage service status","x-example":true},"serviceStatusForTeams":{"type":"boolean","description":"Teams service status","x-example":true},"serviceStatusForUsers":{"type":"boolean","description":"Users service status","x-example":true},"serviceStatusForFunctions":{"type":"boolean","description":"Functions service status","x-example":true},"serviceStatusForGraphql":{"type":"boolean","description":"GraphQL service status","x-example":true},"serviceStatusForMessaging":{"type":"boolean","description":"Messaging service status","x-example":true}},"required":["$id","$createdAt","$updatedAt","name","description","teamId","logo","url","legalName","legalCountry","legalState","legalCity","legalAddress","legalTaxId","authDuration","authLimit","authSessionsLimit","authPasswordHistory","authPasswordDictionary","authPersonalDataCheck","oAuthProviders","platforms","webhooks","keys","smtpEnabled","smtpSenderName","smtpSenderEmail","smtpReplyTo","smtpHost","smtpPort","smtpUsername","smtpPassword","smtpSecure","authEmailPassword","authUsersAuthMagicURL","authAnonymous","authInvites","authJWT","authPhone","serviceStatusForAccount","serviceStatusForAvatars","serviceStatusForDatabases","serviceStatusForLocale","serviceStatusForHealth","serviceStatusForStorage","serviceStatusForTeams","serviceStatusForUsers","serviceStatusForFunctions","serviceStatusForGraphql","serviceStatusForMessaging"]},"webhook":{"description":"Webhook","type":"object","properties":{"$id":{"type":"string","description":"Webhook ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Webhook creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Webhook update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Webhook name.","x-example":"My Webhook"},"url":{"type":"string","description":"Webhook URL endpoint.","x-example":"https:\/\/example.com\/webhook"},"events":{"type":"array","description":"Webhook trigger events.","items":{"type":"string"},"x-example":"database.collections.update"},"security":{"type":"boolean","description":"Indicated if SSL \/ TLS Certificate verification is enabled.","x-example":true},"httpUser":{"type":"string","description":"HTTP basic authentication username.","x-example":"username"},"httpPass":{"type":"string","description":"HTTP basic authentication password.","x-example":"password"},"signatureKey":{"type":"string","description":"Signature key which can be used to validated incoming","x-example":"ad3d581ca230e2b7059c545e5a"},"enabled":{"type":"boolean","description":"Indicates if this webhook is enabled.","x-example":true},"logs":{"type":"string","description":"Webhook error logs from the most recent failure.","x-example":"Failed to connect to remote server."},"attempts":{"type":"integer","description":"Number of consecutive failed webhook attempts.","x-example":10,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","name","url","events","security","httpUser","httpPass","signatureKey","enabled","logs","attempts"]},"key":{"description":"Key","type":"object","properties":{"$id":{"type":"string","description":"Key ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Key creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Key update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Key name.","x-example":"My API Key"},"expire":{"type":"string","description":"Key expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"scopes":{"type":"array","description":"Allowed permission scopes.","items":{"type":"string"},"x-example":"users.read"},"secret":{"type":"string","description":"Secret key.","x-example":"919c2d18fb5d4...a2ae413da83346ad2"},"accessedAt":{"type":"string","description":"Most recent access date in ISO 8601 format. This attribute is only updated again after 24 hours.","x-example":"2020-10-15T06:38:00.000+00:00"},"sdks":{"type":"array","description":"List of SDK user agents that used this key.","items":{"type":"string"},"x-example":"appwrite:flutter"}},"required":["$id","$createdAt","$updatedAt","name","expire","scopes","secret","accessedAt","sdks"]},"authProvider":{"description":"AuthProvider","type":"object","properties":{"key":{"type":"string","description":"Auth Provider.","x-example":"github"},"name":{"type":"string","description":"Auth Provider name.","x-example":"GitHub"},"appId":{"type":"string","description":"OAuth 2.0 application ID.","x-example":"259125845563242502"},"secret":{"type":"string","description":"OAuth 2.0 application secret. Might be JSON string if provider requires extra configuration.","x-example":"Bpw_g9c2TGXxfgLshDbSaL8tsCcqgczQ"},"enabled":{"type":"boolean","description":"Auth Provider is active and can be used to create session.","x-example":""}},"required":["key","name","appId","secret","enabled"]},"platform":{"description":"Platform","type":"object","properties":{"$id":{"type":"string","description":"Platform ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Platform creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Platform update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Platform name.","x-example":"My Web App"},"type":{"type":"string","description":"Platform type. Possible values are: web, flutter-web, flutter-ios, flutter-android, ios, android, and unity.","x-example":"web"},"key":{"type":"string","description":"Platform Key. iOS bundle ID or Android package name. Empty string for other platforms.","x-example":"com.company.appname"},"store":{"type":"string","description":"App store or Google Play store ID.","x-example":""},"hostname":{"type":"string","description":"Web app hostname. Empty string for other platforms.","x-example":true},"httpUser":{"type":"string","description":"HTTP basic authentication username.","x-example":"username"},"httpPass":{"type":"string","description":"HTTP basic authentication password.","x-example":"password"}},"required":["$id","$createdAt","$updatedAt","name","type","key","store","hostname","httpUser","httpPass"]},"variable":{"description":"Variable","type":"object","properties":{"$id":{"type":"string","description":"Variable ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"key":{"type":"string","description":"Variable key.","x-example":"API_KEY"},"value":{"type":"string","description":"Variable value.","x-example":"myPa$$word1"},"resourceType":{"type":"string","description":"Service to which the variable belongs. Possible values are \"project\", \"function\"","x-example":"function"},"resourceId":{"type":"string","description":"ID of resource to which the variable belongs. If resourceType is \"project\", it is empty. If resourceType is \"function\", it is ID of the function.","x-example":"myAwesomeFunction"}},"required":["$id","$createdAt","$updatedAt","key","value","resourceType","resourceId"]},"country":{"description":"Country","type":"object","properties":{"name":{"type":"string","description":"Country name.","x-example":"United States"},"code":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"}},"required":["name","code"]},"continent":{"description":"Continent","type":"object","properties":{"name":{"type":"string","description":"Continent name.","x-example":"Europe"},"code":{"type":"string","description":"Continent two letter code.","x-example":"EU"}},"required":["name","code"]},"language":{"description":"Language","type":"object","properties":{"name":{"type":"string","description":"Language name.","x-example":"Italian"},"code":{"type":"string","description":"Language two-character ISO 639-1 codes.","x-example":"it"},"nativeName":{"type":"string","description":"Language native name.","x-example":"Italiano"}},"required":["name","code","nativeName"]},"currency":{"description":"Currency","type":"object","properties":{"symbol":{"type":"string","description":"Currency symbol.","x-example":"$"},"name":{"type":"string","description":"Currency name.","x-example":"US dollar"},"symbolNative":{"type":"string","description":"Currency native symbol.","x-example":"$"},"decimalDigits":{"type":"integer","description":"Number of decimal digits.","x-example":2,"format":"int32"},"rounding":{"type":"number","description":"Currency digit rounding.","x-example":0,"format":"double"},"code":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format.","x-example":"USD"},"namePlural":{"type":"string","description":"Currency plural name","x-example":"US dollars"}},"required":["symbol","name","symbolNative","decimalDigits","rounding","code","namePlural"]},"phone":{"description":"Phone","type":"object","properties":{"code":{"type":"string","description":"Phone code.","x-example":"+1"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["code","countryCode","countryName"]},"healthAntivirus":{"description":"Health Antivirus","type":"object","properties":{"version":{"type":"string","description":"Antivirus version.","x-example":"1.0.0"},"status":{"type":"string","description":"Antivirus status. Possible values can are: `disabled`, `offline`, `online`","x-example":"online"}},"required":["version","status"]},"healthQueue":{"description":"Health Queue","type":"object","properties":{"size":{"type":"integer","description":"Amount of actions in the queue.","x-example":8,"format":"int32"}},"required":["size"]},"healthStatus":{"description":"Health Status","type":"object","properties":{"name":{"type":"string","description":"Name of the service.","x-example":"database"},"ping":{"type":"integer","description":"Duration in milliseconds how long the health check took.","x-example":128,"format":"int32"},"status":{"type":"string","description":"Service status. Possible values can are: `pass`, `fail`","x-example":"pass"}},"required":["name","ping","status"]},"healthTime":{"description":"Health Time","type":"object","properties":{"remoteTime":{"type":"integer","description":"Current unix timestamp on trustful remote server.","x-example":1639490751,"format":"int32"},"localTime":{"type":"integer","description":"Current unix timestamp of local server where Appwrite runs.","x-example":1639490844,"format":"int32"},"diff":{"type":"integer","description":"Difference of unix remote and local timestamps in milliseconds.","x-example":93,"format":"int32"}},"required":["remoteTime","localTime","diff"]},"metric":{"description":"Metric","type":"object","properties":{"value":{"type":"integer","description":"The value of this metric at the timestamp.","x-example":1,"format":"int32"},"date":{"type":"string","description":"The date at which this metric was aggregated in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["value","date"]},"usageDatabases":{"description":"UsageDatabases","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"databasesCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsCount":{"type":"array","description":"Aggregated stats for total number of collections.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"databasesCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"databasesRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"databasesUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"databasesDelete":{"type":"array","description":"Aggregated stats for total number of collections.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsCreate":{"type":"array","description":"Aggregated stats for collections created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsRead":{"type":"array","description":"Aggregated stats for collections read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsUpdate":{"type":"array","description":"Aggregated stats for collections updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsDelete":{"type":"array","description":"Aggregated stats for collections delete.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","databasesCount","documentsCount","collectionsCount","databasesCreate","databasesRead","databasesUpdate","databasesDelete","documentsCreate","documentsRead","documentsUpdate","documentsDelete","collectionsCreate","collectionsRead","collectionsUpdate","collectionsDelete"]},"usageDatabase":{"description":"UsageDatabase","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"documentsCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsCount":{"type":"array","description":"Aggregated stats for total number of collections.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsCreate":{"type":"array","description":"Aggregated stats for collections created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsRead":{"type":"array","description":"Aggregated stats for collections read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsUpdate":{"type":"array","description":"Aggregated stats for collections updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsDelete":{"type":"array","description":"Aggregated stats for collections delete.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","documentsCount","collectionsCount","documentsCreate","documentsRead","documentsUpdate","documentsDelete","collectionsCreate","collectionsRead","collectionsUpdate","collectionsDelete"]},"usageCollection":{"description":"UsageCollection","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"documentsCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","documentsCount","documentsCreate","documentsRead","documentsUpdate","documentsDelete"]},"usageUsers":{"description":"UsageUsers","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"usersCount":{"type":"array","description":"Aggregated stats for total number of users.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"usersCreate":{"type":"array","description":"Aggregated stats for users created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"usersRead":{"type":"array","description":"Aggregated stats for users read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"usersUpdate":{"type":"array","description":"Aggregated stats for users updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"usersDelete":{"type":"array","description":"Aggregated stats for users deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"sessionsCreate":{"type":"array","description":"Aggregated stats for sessions created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"sessionsProviderCreate":{"type":"array","description":"Aggregated stats for sessions created for a provider ( email, anonymous or oauth2 ).","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"sessionsDelete":{"type":"array","description":"Aggregated stats for sessions deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","usersCount","usersCreate","usersRead","usersUpdate","usersDelete","sessionsCreate","sessionsProviderCreate","sessionsDelete"]},"usageStorage":{"description":"StorageUsage","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"storage":{"type":"array","description":"Aggregated stats for the occupied storage size (in bytes).","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesCount":{"type":"array","description":"Aggregated stats for total number of files.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"bucketsCount":{"type":"array","description":"Aggregated stats for total number of buckets.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"bucketsCreate":{"type":"array","description":"Aggregated stats for buckets created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"bucketsRead":{"type":"array","description":"Aggregated stats for buckets read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"bucketsUpdate":{"type":"array","description":"Aggregated stats for buckets updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"bucketsDelete":{"type":"array","description":"Aggregated stats for buckets deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesCreate":{"type":"array","description":"Aggregated stats for files created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesRead":{"type":"array","description":"Aggregated stats for files read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesUpdate":{"type":"array","description":"Aggregated stats for files updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesDelete":{"type":"array","description":"Aggregated stats for files deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","storage","filesCount","bucketsCount","bucketsCreate","bucketsRead","bucketsUpdate","bucketsDelete","filesCreate","filesRead","filesUpdate","filesDelete"]},"usageBuckets":{"description":"UsageBuckets","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"filesCount":{"type":"array","description":"Aggregated stats for total number of files in this bucket.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesStorage":{"type":"array","description":"Aggregated stats for total storage of files in this bucket.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesCreate":{"type":"array","description":"Aggregated stats for files created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesRead":{"type":"array","description":"Aggregated stats for files read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesUpdate":{"type":"array","description":"Aggregated stats for files updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesDelete":{"type":"array","description":"Aggregated stats for files deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","filesCount","filesStorage","filesCreate","filesRead","filesUpdate","filesDelete"]},"usageFunctions":{"description":"UsageFunctions","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"executionsTotal":{"type":"array","description":"Aggregated stats for number of function executions.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"executionsFailure":{"type":"array","description":"Aggregated stats for function execution failures.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"executionsSuccess":{"type":"array","description":"Aggregated stats for function execution successes.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"executionsTime":{"type":"array","description":"Aggregated stats for function execution duration.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"buildsTotal":{"type":"array","description":"Aggregated stats for number of function builds.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"buildsFailure":{"type":"array","description":"Aggregated stats for function build failures.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"buildsSuccess":{"type":"array","description":"Aggregated stats for function build successes.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"buildsTime":{"type":"array","description":"Aggregated stats for function build duration.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","executionsTotal","executionsFailure","executionsSuccess","executionsTime","buildsTotal","buildsFailure","buildsSuccess","buildsTime"]},"usageProject":{"description":"UsageProject","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"requests":{"type":"array","description":"Aggregated stats for number of requests.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"network":{"type":"array","description":"Aggregated stats for consumed bandwidth.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"executions":{"type":"array","description":"Aggregated stats for function executions.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documents":{"type":"array","description":"Aggregated stats for number of documents.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"databases":{"type":"array","description":"Aggregated stats for number of databases.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"users":{"type":"array","description":"Aggregated stats for number of users.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"storage":{"type":"array","description":"Aggregated stats for the occupied storage size (in bytes).","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"buckets":{"type":"array","description":"Aggregated stats for number of buckets.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","requests","network","executions","documents","databases","users","storage","buckets"]},"headers":{"description":"Headers","type":"object","properties":{"name":{"type":"string","description":"Header name.","x-example":"Content-Type"},"value":{"type":"string","description":"Header value.","x-example":"application\/json"}},"required":["name","value"]},"proxyRule":{"description":"Rule","type":"object","properties":{"$id":{"type":"string","description":"Rule ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Rule creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Rule update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"domain":{"type":"string","description":"Domain name.","x-example":"appwrite.company.com"},"resourceType":{"type":"string","description":"Action definition for the rule. Possible values are \"api\", \"function\", or \"redirect\"","x-example":"function"},"resourceId":{"type":"string","description":"ID of resource for the action type. If resourceType is \"api\" or \"url\", it is empty. If resourceType is \"function\", it is ID of the function.","x-example":"myAwesomeFunction"},"status":{"type":"string","description":"Domain verification status. Possible values are \"created\", \"verifying\", \"verified\" and \"unverified\"","x-example":"verified"},"logs":{"type":"string","description":"Certificate generation logs. This will return an empty string if generation did not run, or succeeded.","x-example":"HTTP challegne failed."},"renewAt":{"type":"string","description":"Certificate auto-renewal date in ISO 8601 format.","x-example":"datetime"}},"required":["$id","$createdAt","$updatedAt","domain","resourceType","resourceId","status","logs","renewAt"]},"smsTemplate":{"description":"SmsTemplate","type":"object","properties":{"type":{"type":"string","description":"Template type","x-example":"verification"},"locale":{"type":"string","description":"Template locale","x-example":"en_us"},"message":{"type":"string","description":"Template message","x-example":"Click on the link to verify your account."}},"required":["type","locale","message"]},"emailTemplate":{"description":"EmailTemplate","type":"object","properties":{"type":{"type":"string","description":"Template type","x-example":"verification"},"locale":{"type":"string","description":"Template locale","x-example":"en_us"},"message":{"type":"string","description":"Template message","x-example":"Click on the link to verify your account."},"senderName":{"type":"string","description":"Name of the sender","x-example":"My User"},"senderEmail":{"type":"string","description":"Email of the sender","x-example":"mail@appwrite.io"},"replyTo":{"type":"string","description":"Reply to email address","x-example":"emails@appwrite.io"},"subject":{"type":"string","description":"Email subject","x-example":"Please verify your email address"}},"required":["type","locale","message","senderName","senderEmail","replyTo","subject"]},"consoleVariables":{"description":"Console Variables","type":"object","properties":{"_APP_DOMAIN_TARGET":{"type":"string","description":"CNAME target for your Appwrite custom domains.","x-example":"appwrite.io"},"_APP_STORAGE_LIMIT":{"type":"integer","description":"Maximum file size allowed for file upload in bytes.","x-example":"30000000","format":"int32"},"_APP_FUNCTIONS_SIZE_LIMIT":{"type":"integer","description":"Maximum file size allowed for deployment in bytes.","x-example":"30000000","format":"int32"},"_APP_USAGE_STATS":{"type":"string","description":"Defines if usage stats are enabled. This value is set to 'enabled' by default, to disable the usage stats set the value to 'disabled'.","x-example":"enabled"},"_APP_VCS_ENABLED":{"type":"boolean","description":"Defines if VCS (Version Control System) is enabled.","x-example":true},"_APP_DOMAIN_ENABLED":{"type":"boolean","description":"Defines if main domain is configured. If so, custom domains can be created.","x-example":true},"_APP_ASSISTANT_ENABLED":{"type":"boolean","description":"Defines if AI assistant is enabled.","x-example":true}},"required":["_APP_DOMAIN_TARGET","_APP_STORAGE_LIMIT","_APP_FUNCTIONS_SIZE_LIMIT","_APP_USAGE_STATS","_APP_VCS_ENABLED","_APP_DOMAIN_ENABLED","_APP_ASSISTANT_ENABLED"]},"provider":{"description":"Provider","type":"object","properties":{"$id":{"type":"string","description":"Provider ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Provider creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Provider update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"The name for the provider instance.","x-example":"Mailgun"},"provider":{"type":"string","description":"The name of the provider service.","x-example":"mailgun"},"enabled":{"type":"boolean","description":"Is provider enabled?","x-example":true},"type":{"type":"string","description":"Type of provider.","x-example":"sms"},"credentials":{"type":"object","additionalProperties":true,"description":"Provider credentials.","x-example":{"key":"123456789"}},"options":{"type":"object","additionalProperties":true,"description":"Provider options.","x-example":{"from":"sender-email@mydomain"}}},"required":["$id","$createdAt","$updatedAt","name","provider","enabled","type","credentials"]},"message":{"description":"Message","type":"object","properties":{"$id":{"type":"string","description":"Message ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Message creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Message update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerType":{"type":"string","description":"Message provider type.","x-example":"email"},"topics":{"type":"array","description":"Topic IDs set as recipients.","items":{"type":"string"},"x-example":["5e5ea5c16897e"]},"users":{"type":"array","description":"User IDs set as recipients.","items":{"type":"string"},"x-example":["5e5ea5c16897e"]},"targets":{"type":"array","description":"Target IDs set as recipients.","items":{"type":"string"},"x-example":["5e5ea5c16897e"]},"scheduledAt":{"type":"string","description":"The scheduled time for message.","x-example":"2020-10-15T06:38:00.000+00:00","x-nullable":true},"deliveredAt":{"type":"string","description":"The time when the message was delivered.","x-example":"2020-10-15T06:38:00.000+00:00","x-nullable":true},"deliveryErrors":{"type":"array","description":"Delivery errors if any.","items":{"type":"string"},"x-example":["Failed to send message to target 5e5ea5c16897e: Credentials not valid."],"x-nullable":true},"deliveredTotal":{"type":"integer","description":"Number of recipients the message was delivered to.","x-example":1,"format":"int32"},"data":{"type":"object","additionalProperties":true,"description":"Data of the message.","x-example":{"subject":"Welcome to Appwrite","content":"Hi there, welcome to Appwrite family."}},"status":{"type":"string","description":"Status of delivery.","x-example":"Message status can be one of the following: processing, sent, cancelled, failed."},"description":{"type":"string","description":"Message description.","x-example":"Welcome Email.","x-nullable":true}},"required":["$id","$createdAt","$updatedAt","providerType","topics","users","targets","deliveredTotal","data","status"]},"topic":{"description":"Topic","type":"object","properties":{"$id":{"type":"string","description":"Topic ID.","x-example":"259125845563242502"},"$createdAt":{"type":"string","description":"Topic creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Topic update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"The name of the topic.","x-example":"events"},"total":{"type":"integer","description":"Total count of subscribers subscribed to topic.","x-example":100,"format":"int32"},"description":{"type":"string","description":"Description of the topic.","x-example":"All events related messages will be sent to this topic.","x-nullable":true}},"required":["$id","$createdAt","$updatedAt","name","total"]},"subscriber":{"description":"Subscriber","type":"object","properties":{"$id":{"type":"string","description":"Subscriber ID.","x-example":"259125845563242502"},"$createdAt":{"type":"string","description":"Subscriber creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Subscriber update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"targetId":{"type":"string","description":"Target ID.","x-example":"259125845563242502"},"target":{"type":"object","description":"Target.","x-example":{"$id":"259125845563242502","$createdAt":"2020-10-15T06:38:00.000+00:00","$updatedAt":"2020-10-15T06:38:00.000+00:00","providerType":"email","providerId":"259125845563242502","name":"ageon-app-email","identifier":"random-mail@email.org","userId":"5e5ea5c16897e"},"items":{"type":"object","$ref":"#\/definitions\/target"}},"userId":{"type":"string","description":"Topic ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User Name.","x-example":"Aegon Targaryen"},"topicId":{"type":"string","description":"Topic ID.","x-example":"259125845563242502"},"providerType":{"type":"string","description":"The target provider type. Can be one of the following: `email`, `sms` or `push`.","x-example":"email"}},"required":["$id","$createdAt","$updatedAt","targetId","target","userId","userName","topicId","providerType"]},"target":{"description":"Target","type":"object","properties":{"$id":{"type":"string","description":"Target ID.","x-example":"259125845563242502"},"$createdAt":{"type":"string","description":"Target creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Target update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Target Name.","x-example":"Aegon apple token"},"userId":{"type":"string","description":"User ID.","x-example":"259125845563242502"},"providerId":{"type":"string","description":"Provider ID.","x-example":"259125845563242502","x-nullable":true},"providerType":{"type":"string","description":"The target provider type. Can be one of the following: `email`, `sms` or `push`.","x-example":"email"},"identifier":{"type":"string","description":"The target identifier.","x-example":"token"}},"required":["$id","$createdAt","$updatedAt","name","userId","providerType","identifier"]},"migration":{"description":"Migration","type":"object","properties":{"$id":{"type":"string","description":"Migration ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"string","description":"Migration status ( pending, processing, failed, completed ) ","x-example":"pending"},"stage":{"type":"string","description":"Migration stage ( init, processing, source-check, destination-check, migrating, finished )","x-example":"init"},"source":{"type":"string","description":"A string containing the type of source of the migration.","x-example":"Appwrite"},"resources":{"type":"array","description":"Resources to migration.","items":{"type":"string"},"x-example":["user"]},"statusCounters":{"type":"object","additionalProperties":true,"description":"A group of counters that represent the total progress of the migration.","x-example":"{\"Database\": {\"PENDING\": 0, \"SUCCESS\": 1, \"ERROR\": 0, \"SKIP\": 0, \"PROCESSING\": 0, \"WARNING\": 0}}"},"resourceData":{"type":"object","additionalProperties":true,"description":"An array of objects containing the report data of the resources that were migrated.","x-example":"[{\"resource\":\"Database\",\"id\":\"public\",\"status\":\"SUCCESS\",\"message\":\"\"}]"},"errors":{"type":"array","description":"All errors that occurred during the migration process.","items":{"type":"string"},"x-example":[]}},"required":["$id","$createdAt","$updatedAt","status","stage","source","resources","statusCounters","resourceData","errors"]},"migrationReport":{"description":"Migration Report","type":"object","properties":{"user":{"type":"integer","description":"Number of users to be migrated.","x-example":20,"format":"int32"},"team":{"type":"integer","description":"Number of teams to be migrated.","x-example":20,"format":"int32"},"database":{"type":"integer","description":"Number of databases to be migrated.","x-example":20,"format":"int32"},"document":{"type":"integer","description":"Number of documents to be migrated.","x-example":20,"format":"int32"},"file":{"type":"integer","description":"Number of files to be migrated.","x-example":20,"format":"int32"},"bucket":{"type":"integer","description":"Number of buckets to be migrated.","x-example":20,"format":"int32"},"function":{"type":"integer","description":"Number of functions to be migrated.","x-example":20,"format":"int32"},"size":{"type":"integer","description":"Size of files to be migrated in mb.","x-example":30000,"format":"int32"},"version":{"type":"string","description":"Version of the Appwrite instance to be migrated.","x-example":"1.4.0"}},"required":["user","team","database","document","file","bucket","function","size","version"]},"firebaseProject":{"description":"MigrationFirebaseProject","type":"object","properties":{"projectId":{"type":"string","description":"Project ID.","x-example":"my-project"},"displayName":{"type":"string","description":"Project display name.","x-example":"My Project"}},"required":["projectId","displayName"]}},"externalDocs":{"description":"Full API docs, specs and tutorials","url":"https:\/\/appwrite.io\/docs"}} \ No newline at end of file diff --git a/app/config/specs/swagger2-latest-server.json b/app/config/specs/swagger2-latest-server.json index 41fe32cbc0..2f572fa933 100644 --- a/app/config/specs/swagger2-latest-server.json +++ b/app/config/specs/swagger2-latest-server.json @@ -1 +1 @@ -{"swagger":"2.0","info":{"version":"1.4.13","title":"Appwrite","description":"Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https:\/\/appwrite.io\/docs](https:\/\/appwrite.io\/docs)","termsOfService":"https:\/\/appwrite.io\/policy\/terms","contact":{"name":"Appwrite Team","url":"https:\/\/appwrite.io\/support","email":"team@appwrite.io"},"license":{"name":"BSD-3-Clause","url":"https:\/\/raw.githubusercontent.com\/appwrite\/appwrite\/master\/LICENSE"}},"host":"HOSTNAME","basePath":"\/v1","schemes":["https"],"consumes":["application\/json","multipart\/form-data"],"produces":["application\/json"],"securityDefinitions":{"Project":{"type":"apiKey","name":"X-Appwrite-Project","description":"Your project ID","in":"header","x-appwrite":{"demo":"5df5acd0d48c2"}},"Key":{"type":"apiKey","name":"X-Appwrite-Key","description":"Your secret API key","in":"header","x-appwrite":{"demo":"919c2d18fb5d4...a2ae413da83346ad2"}},"JWT":{"type":"apiKey","name":"X-Appwrite-JWT","description":"Your secret JSON Web Token","in":"header","x-appwrite":{"demo":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ..."}},"Locale":{"type":"apiKey","name":"X-Appwrite-Locale","description":"","in":"header","x-appwrite":{"demo":"en"}},"Session":{"type":"apiKey","name":"X-Appwrite-Session","description":"The user session to authenticate with","in":"header"},"ForwardedFor":{"type":"apiKey","name":"X-Forwarded-For","description":"The IP address of the client that made the request","in":"header"},"ForwardedUserAgent":{"type":"apiKey","name":"X-Forwarded-User-Agent","description":"The user agent string of the client that made the request","in":"header"}},"paths":{"\/account":{"get":{"summary":"Get account","operationId":"accountGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get the currently logged in user.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"get","weight":22,"cookies":false,"type":"","demo":"account\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]},"post":{"summary":"Create account","operationId":"accountCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to allow a new user to register a new account in your project. After the user registration completes successfully, you can use the [\/account\/verfication](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createVerification) route to start verifying the user email address. To allow the new user to login to their new account, you need to create a new [account session](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createEmailSession).","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"create","weight":7,"cookies":false,"type":"","demo":"account\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"New user password. Must be between 8 and 256 chars.","default":null,"x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/account\/email":{"patch":{"summary":"Update email","operationId":"accountUpdateEmail","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateEmail","weight":29,"cookies":false,"type":"","demo":"account\/update-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["email","password"]}}]}},"\/account\/identities":{"get":{"summary":"List Identities","operationId":"accountListIdentities","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get the list of identities for the currently logged in user.","responses":{"200":{"description":"Identities List","schema":{"$ref":"#\/definitions\/identityList"}}},"x-appwrite":{"method":"listIdentities","weight":13,"cookies":false,"type":"","demo":"account\/list-identities.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-identities.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/identities","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, provider, providerUid, providerEmail, providerAccessTokenExpiry","required":false,"type":"string","default":[],"in":"query"}]}},"\/account\/identities\/{identityId}":{"delete":{"summary":"Delete identity","operationId":"accountDeleteIdentity","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Delete an identity by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIdentity","weight":14,"cookies":false,"type":"","demo":"account\/delete-identity.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-identity.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"identityId","description":"Identity ID.","required":true,"type":"string","x-example":"[IDENTITY_ID]","in":"path"}]}},"\/account\/jwt":{"post":{"summary":"Create JWT","operationId":"accountCreateJWT","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to create a JSON Web Token. You can use the resulting JWT to authenticate on behalf of the current user when working with the Appwrite server-side API and SDKs. The JWT secret is valid for 15 minutes from its creation and will be invalid if the user will logout in that time frame.","responses":{"201":{"description":"JWT","schema":{"$ref":"#\/definitions\/jwt"}}},"x-appwrite":{"method":"createJWT","weight":20,"cookies":false,"type":"","demo":"account\/create-j-w-t.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-jwt.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"List logs","operationId":"accountListLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get the list of latest security activity logs for the currently logged in user. Each log returns user IP address, location and date and time of log.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listLogs","weight":25,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update name","operationId":"accountUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateName","weight":27,"cookies":false,"type":"","demo":"account\/update-name.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-name.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"User name. Max length: 128 chars.","default":null,"x-example":"[NAME]"}},"required":["name"]}}]}},"\/account\/password":{"patch":{"summary":"Update password","operationId":"accountUpdatePassword","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePassword","weight":28,"cookies":false,"type":"","demo":"account\/update-password.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-password.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"password":{"type":"string","description":"New user password. Must be at least 8 chars.","default":null,"x-example":null},"oldPassword":{"type":"string","description":"Current user password. Must be at least 8 chars.","default":"","x-example":"password"}},"required":["password"]}}]}},"\/account\/phone":{"patch":{"summary":"Update phone","operationId":"accountUpdatePhone","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createPhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePhone","weight":30,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["phone","password"]}}]}},"\/account\/prefs":{"get":{"summary":"Get account preferences","operationId":"accountGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get the preferences as a key-value object for the currently logged in user.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":23,"cookies":false,"type":"","demo":"account\/get-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/prefs","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]},"patch":{"summary":"Update preferences","operationId":"accountUpdatePrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account preferences. The object you pass is stored as is, and replaces any previous value. The maximum allowed prefs size is 64kB and throws error if exceeded.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePrefs","weight":31,"cookies":false,"type":"","demo":"account\/update-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/prefs","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"prefs":{"type":"object","description":"Prefs key-value JSON object.","default":{},"x-example":"{}"}},"required":["prefs"]}}]}},"\/account\/recovery":{"post":{"summary":"Create password recovery","operationId":"accountCreateRecovery","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Sends the user an email with a temporary secret key for password reset. When the user clicks the confirmation link he is redirected back to your app password reset URL with the secret key and email address values attached to the URL query string. Use the query string params to submit a request to the [PUT \/account\/recovery](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateRecovery) endpoint to complete the process. The verification link sent to the user's email address is valid for 1 hour.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createRecovery","weight":36,"cookies":false,"type":"","demo":"account\/create-recovery.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-recovery.md","rate-limit":10,"rate-time":3600,"rate-key":["url:{url},email:{param-email}","ip:{ip}"],"scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"url":{"type":"string","description":"URL to redirect the user back to your app from the recovery email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":null,"x-example":"https:\/\/example.com"}},"required":["email","url"]}}]},"put":{"summary":"Create password recovery (confirmation)","operationId":"accountUpdateRecovery","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete the user account password reset. Both the **userId** and **secret** arguments will be passed as query parameters to the redirect URL you have provided when sending your request to the [POST \/account\/recovery](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createRecovery) endpoint.\n\nPlease note that in order to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) the only valid redirect URLs are the ones from domains you have set when adding your platforms in the console interface.","responses":{"200":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"updateRecovery","weight":37,"cookies":false,"type":"","demo":"account\/update-recovery.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-recovery.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid reset token.","default":null,"x-example":"[SECRET]"},"password":{"type":"string","description":"New user password. Must be between 8 and 256 chars.","default":null,"x-example":null}},"required":["userId","secret","password"]}}]}},"\/account\/sessions":{"get":{"summary":"List sessions","operationId":"accountListSessions","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get the list of active sessions across different devices for the currently logged in user.","responses":{"200":{"description":"Sessions List","schema":{"$ref":"#\/definitions\/sessionList"}}},"x-appwrite":{"method":"listSessions","weight":24,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/sessions","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]},"delete":{"summary":"Delete sessions","operationId":"accountDeleteSessions","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":35,"cookies":false,"type":"","demo":"account\/delete-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-sessions.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/account\/sessions\/anonymous":{"post":{"summary":"Create anonymous session","operationId":"accountCreateAnonymousSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to allow a new user to register an anonymous account in your project. This route will also create a new session for the user. To allow the new user to convert an anonymous account to a normal account, you need to update its [email and password](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateEmail) or create an [OAuth2 session](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#CreateOAuth2Session).","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"createAnonymousSession","weight":19,"cookies":false,"type":"","demo":"account\/create-anonymous-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-anonymous.md","rate-limit":50,"rate-time":3600,"rate-key":"ip:{ip}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/sessions\/email":{"post":{"summary":"Create email password session","operationId":"accountCreateEmailPasswordSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Allow the user to login into their account by providing a valid email and password combination. This route will create a new session for the user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"createEmailPasswordSession","weight":8,"cookies":false,"type":"","demo":"account\/create-email-password-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-email-password.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["email","password"]}}]}},"\/account\/sessions\/magic-url":{"put":{"summary":"Create session (deprecated)","operationId":"accountUpdateMagicURLSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to create a session from token. Provide the **userId** and **secret** parameters from the successful response of authentication flows initiated by token creation. For example, magic URL and phone login.","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateMagicURLSession","weight":16,"cookies":false,"type":"","demo":"account\/update-magic-u-r-l-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session.md","rate-limit":10,"rate-time":3600,"rate-key":"ip:{ip},userId:{param-userId}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/account\/sessions\/oauth2\/{provider}":{"get":{"summary":"Create OAuth2 session","operationId":"accountCreateOAuth2Session","consumes":["application\/json"],"produces":["text\/html"],"tags":["account"],"description":"Allow the user to login to their account using the OAuth2 provider of their choice. Each OAuth2 provider should be enabled from the Appwrite console first. Use the success and failure arguments to provide a redirect URL's back to your app when login is completed.\n\nIf there is already an active session, the new session will be attached to the logged-in account. If there are no active sessions, the server will attempt to look for a user with the same email address as the email received from the OAuth2 provider and attach the new session to the existing user. If no matching user is found - the server will create a new user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).\n","responses":{"301":{"description":"No content"}},"x-appwrite":{"method":"createOAuth2Session","weight":9,"cookies":false,"type":"webAuth","demo":"account\/create-o-auth2session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-oauth2.md","rate-limit":50,"rate-time":3600,"rate-key":"ip:{ip}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"provider","description":"OAuth2 Provider. Currently, supported providers are: amazon, apple, auth0, authentik, autodesk, bitbucket, bitly, box, dailymotion, discord, disqus, dropbox, etsy, facebook, github, gitlab, google, linkedin, microsoft, notion, oidc, okta, paypal, paypalSandbox, podio, salesforce, slack, spotify, stripe, tradeshift, tradeshiftBox, twitch, wordpress, yahoo, yammer, yandex, zoho, zoom.","required":true,"type":"string","x-example":"amazon","enum":["amazon","apple","auth0","authentik","autodesk","bitbucket","bitly","box","dailymotion","discord","disqus","dropbox","etsy","facebook","github","gitlab","google","linkedin","microsoft","notion","oidc","okta","paypal","paypalSandbox","podio","salesforce","slack","spotify","stripe","tradeshift","tradeshiftBox","twitch","wordpress","yahoo","yammer","yandex","zoho","zoom","mock"],"x-enum-name":"Provider","x-enum-keys":[],"in":"path"},{"name":"success","description":"URL to redirect back to your app after a successful login attempt. Only URLs from hostnames in your project's platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","required":false,"type":"string","format":"url","x-example":"https:\/\/example.com","default":"","in":"query"},{"name":"failure","description":"URL to redirect back to your app after a failed login attempt. Only URLs from hostnames in your project's platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","required":false,"type":"string","format":"url","x-example":"https:\/\/example.com","default":"","in":"query"},{"name":"token","description":"Include token credentials in the final redirect, useful for server-side integrations, or when cookies are not available.","required":false,"type":"boolean","x-example":false,"default":false,"in":"query"},{"name":"scopes","description":"A list of custom OAuth2 scopes. Check each provider internal docs for a list of supported scopes. Maximum of 100 scopes are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/sessions\/token":{"post":{"summary":"Create session","operationId":"accountCreateSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to create a session from token. Provide the **userId** and **secret** parameters from the successful response of authentication flows initiated by token creation. For example, magic URL and phone login.","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"createSession","weight":17,"cookies":false,"type":"","demo":"account\/create-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session.md","rate-limit":10,"rate-time":3600,"rate-key":"ip:{ip},userId:{param-userId}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Secret of a token generated by login methods. For example, the `createMagicURLToken` or `createPhoneToken` methods.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/account\/sessions\/{sessionId}":{"get":{"summary":"Get session","operationId":"accountGetSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to get a logged in user's session using a Session ID. Inputting 'current' will return the current session being used.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"getSession","weight":26,"cookies":false,"type":"","demo":"account\/get-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-session.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/sessions","offline-key":"{sessionId}","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to get the current device session.","required":true,"type":"string","x-example":"[SESSION_ID]","in":"path"}]},"patch":{"summary":"Update OAuth session (refresh tokens)","operationId":"accountUpdateSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Access tokens have limited lifespan and expire to mitigate security risks. If session was created using an OAuth provider, this route can be used to \"refresh\" the access token.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateSession","weight":34,"cookies":false,"type":"","demo":"account\/update-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-session.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to update the current device session.","required":true,"type":"string","x-example":"[SESSION_ID]","in":"path"}]},"delete":{"summary":"Delete session","operationId":"accountDeleteSession","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Logout the user. Use 'current' as the session ID to logout on this device, use a session ID to logout on another device. If you're looking to logout the user on all devices, use [Delete Sessions](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#deleteSessions) instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSession","weight":33,"cookies":false,"type":"","demo":"account\/delete-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-session.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to delete the current device session.","required":true,"type":"string","x-example":"[SESSION_ID]","in":"path"}]}},"\/account\/status":{"patch":{"summary":"Update status","operationId":"accountUpdateStatus","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateStatus","weight":32,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/account\/tokens\/magic-url":{"post":{"summary":"Create magic URL token","operationId":"accountCreateMagicURLToken","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Sends the user an email with a secret key for creating a session. If the provided user ID has not been registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [PUT \/account\/sessions\/magic-url](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateMagicURLSession) endpoint to complete the login process. The link sent to the user's email address is valid for 1 hour. If you are on a mobile device you can leave the URL parameter empty, so that the login completion will be handled by your Appwrite instance by default.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).\n","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createMagicURLToken","weight":15,"cookies":false,"type":"","demo":"account\/create-magic-u-r-l-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-token-magic-url.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"url":{"type":"string","description":"URL to redirect the user back to your app from the magic URL login. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":"","x-example":"https:\/\/example.com"},"securityPhrase":{"type":"boolean","description":"Toggle for security phrase. If enabled, email will be send with a randomly generated phrase and the phrase will also be included in the response. Confirming phrases match increases the security of authentication flow.","default":false,"x-example":false}},"required":["userId","email"]}}]}},"\/account\/tokens\/phone":{"post":{"summary":"Create phone token","operationId":"accountCreatePhoneToken","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Sends the user an SMS with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [PUT \/account\/sessions\/phone](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updatePhoneSession) endpoint to complete the login process. The secret sent to the user's phone is valid for 15 minutes.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createPhoneToken","weight":18,"cookies":false,"type":"","demo":"account\/create-phone-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-token-phone.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},phone:{param-phone}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"}},"required":["userId","phone"]}}]}},"\/account\/verification":{"post":{"summary":"Create email verification","operationId":"accountCreateVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to send a verification message to your user email address to confirm they are the valid owners of that address. Both the **userId** and **secret** arguments will be passed as query parameters to the URL you have provided to be attached to the verification email. The provided URL should redirect the user back to your app and allow you to complete the verification process by verifying both the **userId** and **secret** parameters. Learn more about how to [complete the verification process](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateVerification). The verification link sent to the user's email address is valid for 7 days.\n\nPlease note that in order to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md), the only valid redirect URLs are the ones from domains you have set when adding your platforms in the console interface.\n","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createVerification","weight":38,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"url":{"type":"string","description":"URL to redirect the user back to your app from the verification email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":null,"x-example":"https:\/\/example.com"}},"required":["url"]}}]},"put":{"summary":"Create email verification (confirmation)","operationId":"accountUpdateVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete the user email verification process. Use both the **userId** and **secret** parameters that were attached to your app URL to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"updateVerification","weight":39,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/account\/verification\/phone":{"post":{"summary":"Create phone verification","operationId":"accountCreatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updatePhone) endpoint. Learn more about how to [complete the verification process](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createPhoneVerification","weight":40,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{userId}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]},"put":{"summary":"Create phone verification (confirmation)","operationId":"accountUpdatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"updatePhoneVerification","weight":41,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/avatars\/browsers\/{code}":{"get":{"summary":"Get browser icon","operationId":"avatarsGetBrowser","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"You can use this endpoint to show different browser icons to your users. The code argument receives the browser code as it appears in your user [GET \/account\/sessions](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#getSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getBrowser","weight":44,"cookies":false,"type":"location","demo":"avatars\/get-browser.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-browser.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Browser Code.","required":true,"type":"string","x-example":"aa","enum":["aa","an","ch","ci","cm","cr","ff","sf","mf","ps","oi","om","op","on"],"x-enum-name":"Browser","x-enum-keys":["Avant Browser","Android WebView Beta","Google Chrome","Google Chrome (iOS)","Google Chrome (Mobile)","Chromium","Mozilla Firefox","Safari","Mobile Safari","Microsoft Edge","Microsoft Edge (iOS)","Opera Mini","Opera","Opera (Next)"],"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"}]}},"\/avatars\/credit-cards\/{code}":{"get":{"summary":"Get credit card icon","operationId":"avatarsGetCreditCard","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"The credit card endpoint will return you the icon of the credit card provider you need. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getCreditCard","weight":43,"cookies":false,"type":"location","demo":"avatars\/get-credit-card.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-credit-card.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Credit Card Code. Possible values: amex, argencard, cabal, censosud, diners, discover, elo, hipercard, jcb, mastercard, naranja, targeta-shopping, union-china-pay, visa, mir, maestro.","required":true,"type":"string","x-example":"amex","enum":["amex","argencard","cabal","censosud","diners","discover","elo","hipercard","jcb","mastercard","naranja","targeta-shopping","union-china-pay","visa","mir","maestro"],"x-enum-name":"CreditCard","x-enum-keys":["American Express","Argencard","Cabal","Consosud","Diners Club","Discover","Elo","Hipercard","JCB","Mastercard","Naranja","Tarjeta Shopping","Union China Pay","Visa","MIR","Maestro"],"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"}]}},"\/avatars\/favicon":{"get":{"summary":"Get favicon","operationId":"avatarsGetFavicon","consumes":["application\/json"],"produces":["image\/*"],"tags":["avatars"],"description":"Use this endpoint to fetch the favorite icon (AKA favicon) of any remote website URL.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFavicon","weight":47,"cookies":false,"type":"location","demo":"avatars\/get-favicon.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-favicon.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"url","description":"Website URL which you want to fetch the favicon from.","required":true,"type":"string","format":"url","x-example":"https:\/\/example.com","in":"query"}]}},"\/avatars\/flags\/{code}":{"get":{"summary":"Get country flag","operationId":"avatarsGetFlag","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"You can use this endpoint to show different country flags icons to your users. The code argument receives the 2 letter country code. Use width, height and quality arguments to change the output settings. Country codes follow the [ISO 3166-1](https:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFlag","weight":45,"cookies":false,"type":"location","demo":"avatars\/get-flag.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-flag.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Country Code. ISO Alpha-2 country code format.","required":true,"type":"string","x-example":"af","enum":["af","ao","al","ad","ae","ar","am","ag","au","at","az","bi","be","bj","bf","bd","bg","bh","bs","ba","by","bz","bo","br","bb","bn","bt","bw","cf","ca","ch","cl","cn","ci","cm","cd","cg","co","km","cv","cr","cu","cy","cz","de","dj","dm","dk","do","dz","ec","eg","er","es","ee","et","fi","fj","fr","fm","ga","gb","ge","gh","gn","gm","gw","gq","gr","gd","gt","gy","hn","hr","ht","hu","id","in","ie","ir","iq","is","il","it","jm","jo","jp","kz","ke","kg","kh","ki","kn","kr","kw","la","lb","lr","ly","lc","li","lk","ls","lt","lu","lv","ma","mc","md","mg","mv","mx","mh","mk","ml","mt","mm","me","mn","mz","mr","mu","mw","my","na","ne","ng","ni","nl","no","np","nr","nz","om","pk","pa","pe","ph","pw","pg","pl","kp","pt","py","qa","ro","ru","rw","sa","sd","sn","sg","sb","sl","sv","sm","so","rs","ss","st","sr","sk","si","se","sz","sc","sy","td","tg","th","tj","tm","tl","to","tt","tn","tr","tv","tz","ug","ua","uy","us","uz","va","vc","ve","vn","vu","ws","ye","za","zm","zw"],"x-enum-name":"Flag","x-enum-keys":["Afghanistan","Angola","Albania","Andorra","United Arab Emirates","Argentina","Armenia","Antigua and Barbuda","Australia","Austria","Azerbaijan","Burundi","Belgium","Benin","Burkina Faso","Bangladesh","Bulgaria","Bahrain","Bahamas","Bosnia and Herzegovina","Belarus","Belize","Bolivia","Brazil","Barbados","Brunei Darussalam","Bhutan","Botswana","Central African Republic","Canada","Switzerland","Chile","China","C\u00f4te d'Ivoire","Cameroon","Democratic Republic of the Congo","Republic of the Congo","Colombia","Comoros","Cape Verde","Costa Rica","Cuba","Cyprus","Czech Republic","Germany","Djibouti","Dominica","Denmark","Dominican Republic","Algeria","Ecuador","Egypt","Eritrea","Spain","Estonia","Ethiopia","Finland","Fiji","France","Micronesia (Federated States of)","Gabon","United Kingdom","Georgia","Ghana","Guinea","Gambia","Guinea-Bissau","Equatorial Guinea","Greece","Grenada","Guatemala","Guyana","Honduras","Croatia","Haiti","Hungary","Indonesia","India","Ireland","Iran (Islamic Republic of)","Iraq","Iceland","Israel","Italy","Jamaica","Jordan","Japan","Kazakhstan","Kenya","Kyrgyzstan","Cambodia","Kiribati","Saint Kitts and Nevis","South Korea","Kuwait","Lao People's Democratic Republic","Lebanon","Liberia","Libya","Saint Lucia","Liechtenstein","Sri Lanka","Lesotho","Lithuania","Luxembourg","Latvia","Morocco","Monaco","Moldova","Madagascar","Maldives","Mexico","Marshall Islands","North Macedonia","Mali","Malta","Myanmar","Montenegro","Mongolia","Mozambique","Mauritania","Mauritius","Malawi","Malaysia","Namibia","Niger","Nigeria","Nicaragua","Netherlands","Norway","Nepal","Nauru","New Zealand","Oman","Pakistan","Panama","Peru","Philippines","Palau","Papua New Guinea","Poland","North Korea","Portugal","Paraguay","Qatar","Romania","Russia","Rwanda","Saudi Arabia","Sudan","Senegal","Singapore","Solomon Islands","Sierra Leone","El Salvador","San Marino","Somalia","Serbia","South Sudan","Sao Tome and Principe","Suriname","Slovakia","Slovenia","Sweden","Eswatini","Seychelles","Syria","Chad","Togo","Thailand","Tajikistan","Turkmenistan","Timor-Leste","Tonga","Trinidad and Tobago","Tunisia","Turkey","Tuvalu","Tanzania","Uganda","Ukraine","Uruguay","United States","Uzbekistan","Vatican City","Saint Vincent and the Grenadines","Venezuela","Vietnam","Vanuatu","Samoa","Yemen","South Africa","Zambia","Zimbabwe"],"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"}]}},"\/avatars\/image":{"get":{"summary":"Get image from URL","operationId":"avatarsGetImage","consumes":["application\/json"],"produces":["image\/*"],"tags":["avatars"],"description":"Use this endpoint to fetch a remote image URL and crop it to any image size you want. This endpoint is very useful if you need to crop and display remote images in your app or in case you want to make sure a 3rd party image is properly served using a TLS protocol.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getImage","weight":46,"cookies":false,"type":"location","demo":"avatars\/get-image.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-image.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"url","description":"Image URL which you want to crop.","required":true,"type":"string","format":"url","x-example":"https:\/\/example.com","in":"query"},{"name":"width","description":"Resize preview image width, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get user initials","operationId":"avatarsGetInitials","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getInitials","weight":49,"cookies":false,"type":"location","demo":"avatars\/get-initials.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-initials.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"name","description":"Full Name. When empty, current user name or email will be used. Max length: 128 chars.","required":false,"type":"string","x-example":"[NAME]","default":"","in":"query"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":500,"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":500,"in":"query"},{"name":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"type":"string","default":"","in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR code","operationId":"avatarsGetQR","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getQR","weight":48,"cookies":false,"type":"location","demo":"avatars\/get-q-r.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-qr.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"text","description":"Plain text to be converted to QR code image.","required":true,"type":"string","x-example":"[TEXT]","in":"query"},{"name":"size","description":"QR code size. Pass an integer between 1 to 1000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":1,"default":400,"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"type":"integer","format":"int32","x-example":0,"default":1,"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"type":"boolean","x-example":false,"default":false,"in":"query"}]}},"\/databases":{"get":{"summary":"List databases","operationId":"databasesList","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all databases from the current Appwrite project. You can use the search parameter to filter your results.","responses":{"200":{"description":"Databases List","schema":{"$ref":"#\/definitions\/databaseList"}}},"x-appwrite":{"method":"list","weight":54,"cookies":false,"type":"","demo":"databases\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create database","operationId":"databasesCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Database.\n","responses":{"201":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"create","weight":53,"cookies":false,"type":"","demo":"databases\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"databaseId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[DATABASE_ID]","x-global":true},"name":{"type":"string","description":"Database name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Is the database enabled? When set to 'disabled', users cannot access the database but Server SDKs with an API key can still read and write to the database. No data is lost when this is toggled.","default":true,"x-example":false}},"required":["databaseId","name"]}}]}},"\/databases\/{databaseId}":{"get":{"summary":"Get database","operationId":"databasesGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a database by its unique ID. This endpoint response returns a JSON object with the database metadata.","responses":{"200":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"get","weight":55,"cookies":false,"type":"","demo":"databases\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"}]},"put":{"summary":"Update database","operationId":"databasesUpdate","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a database by its unique ID.","responses":{"200":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"update","weight":57,"cookies":false,"type":"","demo":"databases\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Database name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Is database enabled? When set to 'disabled', users cannot access the database but Server SDKs with an API key can still read and write to the database. No data is lost when this is toggled.","default":true,"x-example":false}},"required":["name"]}}]},"delete":{"summary":"Delete database","operationId":"databasesDelete","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a database by its unique ID. Only API keys with with databases.write scope can delete a database.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":58,"cookies":false,"type":"","demo":"databases\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections":{"get":{"summary":"List collections","operationId":"databasesListCollections","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all collections that belong to the provided databaseId. You can use the search parameter to filter your results.","responses":{"200":{"description":"Collections List","schema":{"$ref":"#\/definitions\/collectionList"}}},"x-appwrite":{"method":"listCollections","weight":60,"cookies":false,"type":"","demo":"databases\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, documentSecurity","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create collection","operationId":"databasesCreateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Collection. Before using this route, you should create a new database resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"createCollection","weight":59,"cookies":false,"type":"","demo":"databases\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permissions strings. By default, no user is granted with any permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":false,"x-example":false},"enabled":{"type":"boolean","description":"Is collection enabled? When set to 'disabled', users cannot access the collection but Server SDKs with and API key can still read and write to the collection. No data is lost when this is toggled.","default":true,"x-example":false}},"required":["collectionId","name"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}":{"get":{"summary":"Get collection","operationId":"databasesGetCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a collection by its unique ID. This endpoint response returns a JSON object with the collection metadata.","responses":{"200":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"getCollection","weight":61,"cookies":false,"type":"","demo":"databases\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]},"put":{"summary":"Update collection","operationId":"databasesUpdateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a collection by its unique ID.","responses":{"200":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"updateCollection","weight":63,"cookies":false,"type":"","demo":"databases\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":false,"x-example":false},"enabled":{"type":"boolean","description":"Is collection enabled? When set to 'disabled', users cannot access the collection but Server SDKs with and API key can still read and write to the collection. No data is lost when this is toggled.","default":true,"x-example":false}},"required":["name"]}}]},"delete":{"summary":"Delete collection","operationId":"databasesDeleteCollection","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a collection by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteCollection","weight":64,"cookies":false,"type":"","demo":"databases\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes":{"get":{"summary":"List attributes","operationId":"databasesListAttributes","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Attributes List","schema":{"$ref":"#\/definitions\/attributeList"}}},"x-appwrite":{"method":"listAttributes","weight":75,"cookies":false,"type":"","demo":"databases\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: key, type, size, required, array, status, error","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create boolean attribute","operationId":"databasesCreateBooleanAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a boolean attribute.\n","responses":{"202":{"description":"AttributeBoolean","schema":{"$ref":"#\/definitions\/attributeBoolean"}}},"x-appwrite":{"method":"createBooleanAttribute","weight":72,"cookies":false,"type":"","demo":"databases\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":false},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean\/{key}":{"patch":{"summary":"Update boolean attribute","operationId":"databasesUpdateBooleanAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"","responses":{"200":{"description":"AttributeBoolean","schema":{"$ref":"#\/definitions\/attributeBoolean"}}},"x-appwrite":{"method":"updateBooleanAttribute","weight":84,"cookies":false,"type":"","demo":"databases\/update-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":false,"x-nullable":true}},"required":["required","default"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/datetime":{"post":{"summary":"Create datetime attribute","operationId":"databasesCreateDatetimeAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"AttributeDatetime","schema":{"$ref":"#\/definitions\/attributeDatetime"}}},"x-appwrite":{"method":"createDatetimeAttribute","weight":73,"cookies":false,"type":"","demo":"databases\/create-datetime-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-datetime-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for the attribute in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/datetime\/{key}":{"patch":{"summary":"Update dateTime attribute","operationId":"databasesUpdateDatetimeAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"","responses":{"200":{"description":"AttributeDatetime","schema":{"$ref":"#\/definitions\/attributeDatetime"}}},"x-appwrite":{"method":"updateDatetimeAttribute","weight":85,"cookies":false,"type":"","demo":"databases\/update-datetime-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-datetime-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null,"x-nullable":true}},"required":["required","default"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create email attribute","operationId":"databasesCreateEmailAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create an email attribute.\n","responses":{"202":{"description":"AttributeEmail","schema":{"$ref":"#\/definitions\/attributeEmail"}}},"x-appwrite":{"method":"createEmailAttribute","weight":66,"cookies":false,"type":"","demo":"databases\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"email@example.com"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/email\/{key}":{"patch":{"summary":"Update email attribute","operationId":"databasesUpdateEmailAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Update an email attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeEmail","schema":{"$ref":"#\/definitions\/attributeEmail"}}},"x-appwrite":{"method":"updateEmailAttribute","weight":78,"cookies":false,"type":"","demo":"databases\/update-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"email@example.com","x-nullable":true}},"required":["required","default"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create enum attribute","operationId":"databasesCreateEnumAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"AttributeEnum","schema":{"$ref":"#\/definitions\/attributeEnum"}}},"x-appwrite":{"method":"createEnumAttribute","weight":67,"cookies":false,"type":"","demo":"databases\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"elements":{"type":"array","description":"Array of elements in enumerated type. Uses length of longest element to determine size. Maximum of 100 elements are allowed, each 255 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","elements","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/enum\/{key}":{"patch":{"summary":"Update enum attribute","operationId":"databasesUpdateEnumAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Update an enum attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeEnum","schema":{"$ref":"#\/definitions\/attributeEnum"}}},"x-appwrite":{"method":"updateEnumAttribute","weight":79,"cookies":false,"type":"","demo":"databases\/update-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-enum-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"elements":{"type":"array","description":"Array of elements in enumerated type. Uses length of longest element to determine size. Maximum of 100 elements are allowed, each 255 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"[DEFAULT]","x-nullable":true}},"required":["elements","required","default"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create float attribute","operationId":"databasesCreateFloatAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeFloat","schema":{"$ref":"#\/definitions\/attributeFloat"}}},"x-appwrite":{"method":"createFloatAttribute","weight":71,"cookies":false,"type":"","demo":"databases\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"min":{"type":"number","description":"Minimum value to enforce on new documents","default":null,"x-example":null},"max":{"type":"number","description":"Maximum value to enforce on new documents","default":null,"x-example":null},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/float\/{key}":{"patch":{"summary":"Update float attribute","operationId":"databasesUpdateFloatAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Update a float attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeFloat","schema":{"$ref":"#\/definitions\/attributeFloat"}}},"x-appwrite":{"method":"updateFloatAttribute","weight":83,"cookies":false,"type":"","demo":"databases\/update-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"min":{"type":"number","description":"Minimum value to enforce on new documents","default":null,"x-example":null},"max":{"type":"number","description":"Maximum value to enforce on new documents","default":null,"x-example":null},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null,"x-nullable":true}},"required":["required","min","max","default"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create integer attribute","operationId":"databasesCreateIntegerAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeInteger","schema":{"$ref":"#\/definitions\/attributeInteger"}}},"x-appwrite":{"method":"createIntegerAttribute","weight":70,"cookies":false,"type":"","demo":"databases\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"min":{"type":"integer","description":"Minimum value to enforce on new documents","default":null,"x-example":null},"max":{"type":"integer","description":"Maximum value to enforce on new documents","default":null,"x-example":null},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/integer\/{key}":{"patch":{"summary":"Update integer attribute","operationId":"databasesUpdateIntegerAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Update an integer attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeInteger","schema":{"$ref":"#\/definitions\/attributeInteger"}}},"x-appwrite":{"method":"updateIntegerAttribute","weight":82,"cookies":false,"type":"","demo":"databases\/update-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"min":{"type":"integer","description":"Minimum value to enforce on new documents","default":null,"x-example":null},"max":{"type":"integer","description":"Maximum value to enforce on new documents","default":null,"x-example":null},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null,"x-nullable":true}},"required":["required","min","max","default"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP address attribute","operationId":"databasesCreateIpAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create IP address attribute.\n","responses":{"202":{"description":"AttributeIP","schema":{"$ref":"#\/definitions\/attributeIp"}}},"x-appwrite":{"method":"createIpAttribute","weight":68,"cookies":false,"type":"","demo":"databases\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/ip\/{key}":{"patch":{"summary":"Update IP address attribute","operationId":"databasesUpdateIpAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Update an ip attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeIP","schema":{"$ref":"#\/definitions\/attributeIp"}}},"x-appwrite":{"method":"updateIpAttribute","weight":80,"cookies":false,"type":"","demo":"databases\/update-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null,"x-nullable":true}},"required":["required","default"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/relationship":{"post":{"summary":"Create relationship attribute","operationId":"databasesCreateRelationshipAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create relationship attribute. [Learn more about relationship attributes](https:\/\/appwrite.io\/docs\/databases-relationships#relationship-attributes).\n","responses":{"202":{"description":"AttributeRelationship","schema":{"$ref":"#\/definitions\/attributeRelationship"}}},"x-appwrite":{"method":"createRelationshipAttribute","weight":74,"cookies":false,"type":"","demo":"databases\/create-relationship-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-relationship-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"relatedCollectionId":{"type":"string","description":"Related Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","default":null,"x-example":"[RELATED_COLLECTION_ID]"},"type":{"type":"string","description":"Relation type","default":null,"x-example":"oneToOne","enum":["oneToOne","manyToOne","manyToMany","oneToMany"],"x-enum-name":"RelationshipType","x-enum-keys":[]},"twoWay":{"type":"boolean","description":"Is Two Way?","default":false,"x-example":false},"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"twoWayKey":{"type":"string","description":"Two Way Attribute Key.","default":null,"x-example":null},"onDelete":{"type":"string","description":"Constraints option","default":"restrict","x-example":"cascade","enum":["cascade","restrict","setNull"],"x-enum-name":"RelationMutate","x-enum-keys":[]}},"required":["relatedCollectionId","type"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create string attribute","operationId":"databasesCreateStringAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a string attribute.\n","responses":{"202":{"description":"AttributeString","schema":{"$ref":"#\/definitions\/attributeString"}}},"x-appwrite":{"method":"createStringAttribute","weight":65,"cookies":false,"type":"","demo":"databases\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"size":{"type":"integer","description":"Attribute size for text attributes, in number of characters.","default":null,"x-example":1},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false},"encrypt":{"type":"boolean","description":"Toggle encryption for the attribute. Encryption enhances security by not storing any plain text values in the database. However, encrypted attributes cannot be queried.","default":false,"x-example":false}},"required":["key","size","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/string\/{key}":{"patch":{"summary":"Update string attribute","operationId":"databasesUpdateStringAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Update a string attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeString","schema":{"$ref":"#\/definitions\/attributeString"}}},"x-appwrite":{"method":"updateStringAttribute","weight":77,"cookies":false,"type":"","demo":"databases\/update-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"[DEFAULT]","x-nullable":true}},"required":["required","default"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL attribute","operationId":"databasesCreateUrlAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a URL attribute.\n","responses":{"202":{"description":"AttributeURL","schema":{"$ref":"#\/definitions\/attributeUrl"}}},"x-appwrite":{"method":"createUrlAttribute","weight":69,"cookies":false,"type":"","demo":"databases\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"https:\/\/example.com"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url\/{key}":{"patch":{"summary":"Update URL attribute","operationId":"databasesUpdateUrlAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Update an url attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeURL","schema":{"$ref":"#\/definitions\/attributeUrl"}}},"x-appwrite":{"method":"updateUrlAttribute","weight":81,"cookies":false,"type":"","demo":"databases\/update-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"https:\/\/example.com","x-nullable":true}},"required":["required","default"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get attribute","operationId":"databasesGetAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, or AttributeDatetime, or AttributeRelationship, or AttributeString","schema":{"x-oneOf":[{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeRelationship"},{"$ref":"#\/definitions\/attributeString"}]}}},"x-appwrite":{"method":"getAttribute","weight":76,"cookies":false,"type":"","demo":"databases\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"}]},"delete":{"summary":"Delete attribute","operationId":"databasesDeleteAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":87,"cookies":false,"type":"","demo":"databases\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/{key}\/relationship":{"patch":{"summary":"Update relationship attribute","operationId":"databasesUpdateRelationshipAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Update relationship attribute. [Learn more about relationship attributes](https:\/\/appwrite.io\/docs\/databases-relationships#relationship-attributes).\n","responses":{"200":{"description":"AttributeRelationship","schema":{"$ref":"#\/definitions\/attributeRelationship"}}},"x-appwrite":{"method":"updateRelationshipAttribute","weight":86,"cookies":false,"type":"","demo":"databases\/update-relationship-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-relationship-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"onDelete":{"type":"string","description":"Constraints option","default":null,"x-example":"cascade","enum":["cascade","restrict","setNull"],"x-enum-name":"RelationMutate","x-enum-keys":[]}}}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List documents","operationId":"databasesListDocuments","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","schema":{"$ref":"#\/definitions\/documentList"}}},"x-appwrite":{"method":"listDocuments","weight":93,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"post":{"summary":"Create document","operationId":"databasesCreateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"createDocument","weight":92,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","default":{},"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, only the current user is granted all permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get document","operationId":"databasesGetDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"getDocument","weight":94,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only method allowed is select.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"patch":{"summary":"Update document","operationId":"databasesUpdateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"updateDocument","weight":96,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","default":[],"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete document","operationId":"databasesDeleteDocument","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":97,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes":{"get":{"summary":"List indexes","operationId":"databasesListIndexes","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Indexes List","schema":{"$ref":"#\/definitions\/indexList"}}},"x-appwrite":{"method":"listIndexes","weight":89,"cookies":false,"type":"","demo":"databases\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: key, type, status, attributes, error","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"post":{"summary":"Create index","operationId":"databasesCreateIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"createIndex","weight":88,"cookies":false,"type":"","demo":"databases\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Index Key.","default":null,"x-example":null},"type":{"type":"string","description":"Index type.","default":null,"x-example":"key","enum":["key","fulltext","unique","spatial","array"],"x-enum-name":"IndexType","x-enum-keys":[]},"attributes":{"type":"array","description":"Array of attributes to index. Maximum of 100 attributes are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders. Maximum of 100 orders are allowed.","default":[],"x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get index","operationId":"databasesGetIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"getIndex","weight":90,"cookies":false,"type":"","demo":"databases\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Index Key.","required":true,"type":"string","in":"path"}]},"delete":{"summary":"Delete index","operationId":"databasesDeleteIndex","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":91,"cookies":false,"type":"","demo":"databases\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Index Key.","required":true,"type":"string","in":"path"}]}},"\/functions":{"get":{"summary":"List functions","operationId":"functionsList","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the project's functions. You can use the query params to filter your results.","responses":{"200":{"description":"Functions List","schema":{"$ref":"#\/definitions\/functionList"}}},"x-appwrite":{"method":"list","weight":253,"cookies":false,"type":"","demo":"functions\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-functions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, runtime, deployment, schedule, scheduleNext, schedulePrevious, timeout, entrypoint, commands, installationId","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create function","operationId":"functionsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function. You can pass a list of [permissions](https:\/\/appwrite.io\/docs\/permissions) to allow different project users or team with access to execute the function using the client API.","responses":{"201":{"description":"Function","schema":{"$ref":"#\/definitions\/function"}}},"x-appwrite":{"method":"create","weight":252,"cookies":false,"type":"","demo":"functions\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"functionId":{"type":"string","description":"Function ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[FUNCTION_ID]"},"name":{"type":"string","description":"Function name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"runtime":{"type":"string","description":"Execution runtime.","default":null,"x-example":"node-18.0","enum":["node-18.0","php-8.0","ruby-3.1","python-3.9"],"x-enum-name":null,"x-enum-keys":[]},"execute":{"type":"array","description":"An array of role strings with execution permissions. By default no user is granted with any execute permissions. [learn more about roles](https:\/\/appwrite.io\/docs\/permissions#permission-roles). Maximum of 100 roles are allowed, each 64 characters long.","default":[],"x-example":"[\"any\"]","items":{"type":"string"}},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","default":[],"x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","default":"","x-example":null},"timeout":{"type":"integer","description":"Function maximum execution time in seconds.","default":15,"x-example":1},"enabled":{"type":"boolean","description":"Is function enabled? When set to 'disabled', users cannot access the function but Server SDKs with and API key can still access the function. No data is lost when this is toggled.","default":true,"x-example":false},"logging":{"type":"boolean","description":"Whether executions will be logged. When set to false, executions will not be logged, but will reduce resource used by your Appwrite project.","default":true,"x-example":false},"entrypoint":{"type":"string","description":"Entrypoint File. This path is relative to the \"providerRootDirectory\".","default":"","x-example":"[ENTRYPOINT]"},"commands":{"type":"string","description":"Build Commands.","default":"","x-example":"[COMMANDS]"},"installationId":{"type":"string","description":"Appwrite Installation ID for VCS (Version Control System) deployment.","default":"","x-example":"[INSTALLATION_ID]"},"providerRepositoryId":{"type":"string","description":"Repository ID of the repo linked to the function.","default":"","x-example":"[PROVIDER_REPOSITORY_ID]"},"providerBranch":{"type":"string","description":"Production branch for the repo linked to the function.","default":"","x-example":"[PROVIDER_BRANCH]"},"providerSilentMode":{"type":"boolean","description":"Is the VCS (Version Control System) connection in silent mode for the repo linked to the function? In silent mode, comments will not be made on commits and pull requests.","default":false,"x-example":false},"providerRootDirectory":{"type":"string","description":"Path to function code in the linked repo.","default":"","x-example":"[PROVIDER_ROOT_DIRECTORY]"},"templateRepository":{"type":"string","description":"Repository name of the template.","default":"","x-example":"[TEMPLATE_REPOSITORY]"},"templateOwner":{"type":"string","description":"The name of the owner of the template.","default":"","x-example":"[TEMPLATE_OWNER]"},"templateRootDirectory":{"type":"string","description":"Path to function code in the template repo.","default":"","x-example":"[TEMPLATE_ROOT_DIRECTORY]"},"templateBranch":{"type":"string","description":"Production branch for the repo linked to the function template.","default":"","x-example":"[TEMPLATE_BRANCH]"}},"required":["functionId","name","runtime"]}}]}},"\/functions\/runtimes":{"get":{"summary":"List runtimes","operationId":"functionsListRuntimes","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all runtimes that are currently active on your instance.","responses":{"200":{"description":"Runtimes List","schema":{"$ref":"#\/definitions\/runtimeList"}}},"x-appwrite":{"method":"listRuntimes","weight":254,"cookies":false,"type":"","demo":"functions\/list-runtimes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-runtimes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/functions\/{functionId}":{"get":{"summary":"Get function","operationId":"functionsGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a function by its unique ID.","responses":{"200":{"description":"Function","schema":{"$ref":"#\/definitions\/function"}}},"x-appwrite":{"method":"get","weight":255,"cookies":false,"type":"","demo":"functions\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"}]},"put":{"summary":"Update function","operationId":"functionsUpdate","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Update function by its unique ID.","responses":{"200":{"description":"Function","schema":{"$ref":"#\/definitions\/function"}}},"x-appwrite":{"method":"update","weight":258,"cookies":false,"type":"","demo":"functions\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Function name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"runtime":{"type":"string","description":"Execution runtime.","default":"","x-example":"node-18.0","enum":["node-18.0","php-8.0","ruby-3.1","python-3.9"],"x-enum-name":null,"x-enum-keys":[]},"execute":{"type":"array","description":"An array of role strings with execution permissions. By default no user is granted with any execute permissions. [learn more about roles](https:\/\/appwrite.io\/docs\/permissions#permission-roles). Maximum of 100 roles are allowed, each 64 characters long.","default":[],"x-example":"[\"any\"]","items":{"type":"string"}},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","default":[],"x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","default":"","x-example":null},"timeout":{"type":"integer","description":"Maximum execution time in seconds.","default":15,"x-example":1},"enabled":{"type":"boolean","description":"Is function enabled? When set to 'disabled', users cannot access the function but Server SDKs with and API key can still access the function. No data is lost when this is toggled.","default":true,"x-example":false},"logging":{"type":"boolean","description":"Whether executions will be logged. When set to false, executions will not be logged, but will reduce resource used by your Appwrite project.","default":true,"x-example":false},"entrypoint":{"type":"string","description":"Entrypoint File. This path is relative to the \"providerRootDirectory\".","default":"","x-example":"[ENTRYPOINT]"},"commands":{"type":"string","description":"Build Commands.","default":"","x-example":"[COMMANDS]"},"installationId":{"type":"string","description":"Appwrite Installation ID for VCS (Version Controle System) deployment.","default":"","x-example":"[INSTALLATION_ID]"},"providerRepositoryId":{"type":"string","description":"Repository ID of the repo linked to the function","default":"","x-example":"[PROVIDER_REPOSITORY_ID]"},"providerBranch":{"type":"string","description":"Production branch for the repo linked to the function","default":"","x-example":"[PROVIDER_BRANCH]"},"providerSilentMode":{"type":"boolean","description":"Is the VCS (Version Control System) connection in silent mode for the repo linked to the function? In silent mode, comments will not be made on commits and pull requests.","default":false,"x-example":false},"providerRootDirectory":{"type":"string","description":"Path to function code in the linked repo.","default":"","x-example":"[PROVIDER_ROOT_DIRECTORY]"}},"required":["name"]}}]},"delete":{"summary":"Delete function","operationId":"functionsDelete","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"Delete a function by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":261,"cookies":false,"type":"","demo":"functions\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"}]}},"\/functions\/{functionId}\/deployments":{"get":{"summary":"List deployments","operationId":"functionsListDeployments","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the project's code deployments. You can use the query params to filter your results.","responses":{"200":{"description":"Deployments List","schema":{"$ref":"#\/definitions\/deploymentList"}}},"x-appwrite":{"method":"listDeployments","weight":263,"cookies":false,"type":"","demo":"functions\/list-deployments.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-deployments.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: size, buildId, activate, entrypoint, commands","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create deployment","operationId":"functionsCreateDeployment","consumes":["multipart\/form-data"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function code deployment. Use this endpoint to upload a new version of your code function. To execute your newly uploaded code, you'll need to update the function's deployment to use your new deployment UID.\n\nThis endpoint accepts a tar.gz file compressed with your code. Make sure to include any dependencies your code has within the compressed file. You can learn more about code packaging in the [Appwrite Cloud Functions tutorial](https:\/\/appwrite.io\/docs\/functions).\n\nUse the \"command\" param to set the entrypoint used to execute your code.","responses":{"202":{"description":"Deployment","schema":{"$ref":"#\/definitions\/deployment"}}},"x-appwrite":{"method":"createDeployment","weight":262,"cookies":false,"type":"","demo":"functions\/create-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":true,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"entrypoint","description":"Entrypoint File.","required":false,"type":"string","x-example":"[ENTRYPOINT]","in":"formData"},{"name":"commands","description":"Build Commands.","required":false,"type":"string","x-example":"[COMMANDS]","in":"formData"},{"name":"code","description":"Gzip file with your code package. When used with the Appwrite CLI, pass the path to your code directory, and the CLI will automatically package your code. Use a path that is within the current directory.","required":true,"type":"file","in":"formData"},{"name":"activate","description":"Automatically activate the deployment when it is finished building.","required":true,"type":"boolean","x-example":false,"in":"formData"}]}},"\/functions\/{functionId}\/deployments\/{deploymentId}":{"get":{"summary":"Get deployment","operationId":"functionsGetDeployment","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a code deployment by its unique ID.","responses":{"200":{"description":"Deployment","schema":{"$ref":"#\/definitions\/deployment"}}},"x-appwrite":{"method":"getDeployment","weight":264,"cookies":false,"type":"","demo":"functions\/get-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"type":"string","x-example":"[DEPLOYMENT_ID]","in":"path"}]},"patch":{"summary":"Update function deployment","operationId":"functionsUpdateDeployment","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Update the function code deployment ID using the unique function ID. Use this endpoint to switch the code deployment that should be executed by the execution endpoint.","responses":{"200":{"description":"Function","schema":{"$ref":"#\/definitions\/function"}}},"x-appwrite":{"method":"updateDeployment","weight":260,"cookies":false,"type":"","demo":"functions\/update-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-function-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"type":"string","x-example":"[DEPLOYMENT_ID]","in":"path"}]},"delete":{"summary":"Delete deployment","operationId":"functionsDeleteDeployment","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"Delete a code deployment by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDeployment","weight":265,"cookies":false,"type":"","demo":"functions\/delete-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"type":"string","x-example":"[DEPLOYMENT_ID]","in":"path"}]}},"\/functions\/{functionId}\/deployments\/{deploymentId}\/builds\/{buildId}":{"post":{"summary":"Create build","operationId":"functionsCreateBuild","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"Create a new build for an Appwrite Function deployment. This endpoint can be used to retry a failed build.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"createBuild","weight":266,"cookies":false,"type":"","demo":"functions\/create-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"type":"string","x-example":"[DEPLOYMENT_ID]","in":"path"},{"name":"buildId","description":"Build unique ID.","required":true,"type":"string","x-example":"[BUILD_ID]","in":"path"}]}},"\/functions\/{functionId}\/deployments\/{deploymentId}\/download":{"get":{"summary":"Download Deployment","operationId":"functionsDownloadDeployment","consumes":["application\/json"],"produces":["*\/*"],"tags":["functions"],"description":"Get a Deployment's contents by its unique ID. This endpoint supports range requests for partial or streaming file download.","responses":{"200":{"description":"File","schema":{"type":"file"}}},"x-appwrite":{"method":"downloadDeployment","weight":259,"cookies":false,"type":"location","demo":"functions\/download-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/download-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"type":"string","x-example":"[DEPLOYMENT_ID]","in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List executions","operationId":"functionsListExecutions","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","schema":{"$ref":"#\/definitions\/executionList"}}},"x-appwrite":{"method":"listExecutions","weight":268,"cookies":false,"type":"","demo":"functions\/list-executions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-executions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, responseStatusCode, duration","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create execution","operationId":"functionsCreateExecution","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","schema":{"$ref":"#\/definitions\/execution"}}},"x-appwrite":{"method":"createExecution","weight":267,"cookies":false,"type":"","demo":"functions\/create-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-execution.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"body":{"type":"string","description":"HTTP body of execution. Default value is empty string.","default":"","x-example":"[BODY]"},"async":{"type":"boolean","description":"Execute code in the background. Default value is false.","default":false,"x-example":false},"path":{"type":"string","description":"HTTP path of execution. Path can include query params. Default value is \/","default":"\/","x-example":"[PATH]"},"method":{"type":"string","description":"HTTP method of execution. Default value is GET.","default":"POST","x-example":"GET","enum":["GET","POST","PUT","PATCH","DELETE","OPTIONS"],"x-enum-name":null,"x-enum-keys":[]},"headers":{"type":"object","description":"HTTP headers of execution. Defaults to empty.","default":[],"x-example":"{}"}}}}]}},"\/functions\/{functionId}\/executions\/{executionId}":{"get":{"summary":"Get execution","operationId":"functionsGetExecution","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a function execution log by its unique ID.","responses":{"200":{"description":"Execution","schema":{"$ref":"#\/definitions\/execution"}}},"x-appwrite":{"method":"getExecution","weight":269,"cookies":false,"type":"","demo":"functions\/get-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-execution.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"executionId","description":"Execution ID.","required":true,"type":"string","x-example":"[EXECUTION_ID]","in":"path"}]}},"\/functions\/{functionId}\/variables":{"get":{"summary":"List variables","operationId":"functionsListVariables","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all variables of a specific function.","responses":{"200":{"description":"Variables List","schema":{"$ref":"#\/definitions\/variableList"}}},"x-appwrite":{"method":"listVariables","weight":271,"cookies":false,"type":"","demo":"functions\/list-variables.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-variables.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"}]},"post":{"summary":"Create variable","operationId":"functionsCreateVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function environment variable. These variables can be accessed in the function at runtime as environment variables.","responses":{"201":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"createVariable","weight":270,"cookies":false,"type":"","demo":"functions\/create-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","default":null,"x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","default":null,"x-example":"[VALUE]"}},"required":["key","value"]}}]}},"\/functions\/{functionId}\/variables\/{variableId}":{"get":{"summary":"Get variable","operationId":"functionsGetVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a variable by its unique ID.","responses":{"200":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"getVariable","weight":272,"cookies":false,"type":"","demo":"functions\/get-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"}]},"put":{"summary":"Update variable","operationId":"functionsUpdateVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Update variable by its unique ID.","responses":{"200":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"updateVariable","weight":273,"cookies":false,"type":"","demo":"functions\/update-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","default":null,"x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","default":null,"x-example":"[VALUE]"}},"required":["key"]}}]},"delete":{"summary":"Delete variable","operationId":"functionsDeleteVariable","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"Delete a variable by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteVariable","weight":274,"cookies":false,"type":"","demo":"functions\/delete-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"}]}},"\/graphql":{"post":{"summary":"GraphQL endpoint","operationId":"graphqlQuery","consumes":["application\/json"],"produces":["application\/json"],"tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","schema":{"$ref":"#\/definitions\/any"}}},"x-appwrite":{"method":"query","weight":289,"cookies":false,"type":"graphql","demo":"graphql\/query.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"query":{"type":"object","description":"The query or queries to execute.","default":{},"x-example":"{}"}},"required":["query"]}}]}},"\/graphql\/mutation":{"post":{"summary":"GraphQL endpoint","operationId":"graphqlMutation","consumes":["application\/json"],"produces":["application\/json"],"tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","schema":{"$ref":"#\/definitions\/any"}}},"x-appwrite":{"method":"mutation","weight":288,"cookies":false,"type":"graphql","demo":"graphql\/mutation.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"query":{"type":"object","description":"The query or queries to execute.","default":{},"x-example":"{}"}},"required":["query"]}}]}},"\/health":{"get":{"summary":"Get HTTP","operationId":"healthGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite HTTP server is up and responsive.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"get","weight":109,"cookies":false,"type":"","demo":"health\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/anti-virus":{"get":{"summary":"Get antivirus","operationId":"healthGetAntivirus","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite Antivirus server is up and connection is successful.","responses":{"200":{"description":"Health Antivirus","schema":{"$ref":"#\/definitions\/healthAntivirus"}}},"x-appwrite":{"method":"getAntivirus","weight":127,"cookies":false,"type":"","demo":"health\/get-antivirus.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-storage-anti-virus.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/cache":{"get":{"summary":"Get cache","operationId":"healthGetCache","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite in-memory cache servers are up and connection is successful.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"getCache","weight":112,"cookies":false,"type":"","demo":"health\/get-cache.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-cache.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/db":{"get":{"summary":"Get DB","operationId":"healthGetDB","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite database servers are up and connection is successful.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"getDB","weight":111,"cookies":false,"type":"","demo":"health\/get-d-b.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-db.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/pubsub":{"get":{"summary":"Get pubsub","operationId":"healthGetPubSub","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite pub-sub servers are up and connection is successful.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"getPubSub","weight":114,"cookies":false,"type":"","demo":"health\/get-pub-sub.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-pubsub.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/queue":{"get":{"summary":"Get queue","operationId":"healthGetQueue","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite queue messaging servers are up and connection is successful.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"getQueue","weight":113,"cookies":false,"type":"","demo":"health\/get-queue.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/queue\/builds":{"get":{"summary":"Get builds queue","operationId":"healthGetQueueBuilds","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of builds that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueBuilds","weight":119,"cookies":false,"type":"","demo":"health\/get-queue-builds.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-builds.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/certificates":{"get":{"summary":"Get certificates queue","operationId":"healthGetQueueCertificates","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of certificates that are waiting to be issued against [Letsencrypt](https:\/\/letsencrypt.org\/) in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueCertificates","weight":118,"cookies":false,"type":"","demo":"health\/get-queue-certificates.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-certificates.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/databases":{"get":{"summary":"Get databases queue","operationId":"healthGetQueueDatabases","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of database changes that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueDatabases","weight":120,"cookies":false,"type":"","demo":"health\/get-queue-databases.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-databases.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"name","description":"Queue name for which to check the queue size","required":false,"type":"string","x-example":"[NAME]","default":"database_db_main","in":"query"},{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/deletes":{"get":{"summary":"Get deletes queue","operationId":"healthGetQueueDeletes","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of background destructive changes that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueDeletes","weight":121,"cookies":false,"type":"","demo":"health\/get-queue-deletes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-deletes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/functions":{"get":{"summary":"Get functions queue","operationId":"healthGetQueueFunctions","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueFunctions","weight":125,"cookies":false,"type":"","demo":"health\/get-queue-functions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-functions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/logs":{"get":{"summary":"Get logs queue","operationId":"healthGetQueueLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of logs that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueLogs","weight":117,"cookies":false,"type":"","demo":"health\/get-queue-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/mails":{"get":{"summary":"Get mails queue","operationId":"healthGetQueueMails","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of mails that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueMails","weight":122,"cookies":false,"type":"","demo":"health\/get-queue-mails.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-mails.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/messaging":{"get":{"summary":"Get messaging queue","operationId":"healthGetQueueMessaging","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of messages that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueMessaging","weight":123,"cookies":false,"type":"","demo":"health\/get-queue-messaging.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-messaging.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/migrations":{"get":{"summary":"Get migrations queue","operationId":"healthGetQueueMigrations","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of migrations that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueMigrations","weight":124,"cookies":false,"type":"","demo":"health\/get-queue-migrations.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-migrations.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/webhooks":{"get":{"summary":"Get webhooks queue","operationId":"healthGetQueueWebhooks","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of webhooks that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueWebhooks","weight":116,"cookies":false,"type":"","demo":"health\/get-queue-webhooks.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-webhooks.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/storage\/local":{"get":{"summary":"Get local storage","operationId":"healthGetStorageLocal","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite local storage device is up and connection is successful.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"getStorageLocal","weight":126,"cookies":false,"type":"","demo":"health\/get-storage-local.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-storage-local.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/time":{"get":{"summary":"Get time","operationId":"healthGetTime","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite server time is synced with Google remote NTP server. We use this technology to smoothly handle leap seconds with no disruptive events. The [Network Time Protocol](https:\/\/en.wikipedia.org\/wiki\/Network_Time_Protocol) (NTP) is used by hundreds of millions of computers and devices to synchronize their clocks over the Internet. If your computer sets its own clock, it likely uses NTP.","responses":{"200":{"description":"Health Time","schema":{"$ref":"#\/definitions\/healthTime"}}},"x-appwrite":{"method":"getTime","weight":115,"cookies":false,"type":"","demo":"health\/get-time.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-time.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/locale":{"get":{"summary":"Get user locale","operationId":"localeGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"Get the current user location based on IP. Returns an object with user country code, country name, continent name, continent code, ip address and suggested currency. You can use the locale header to get the data in a supported language.\n\n([IP Geolocation by DB-IP](https:\/\/db-ip.com))","responses":{"200":{"description":"Locale","schema":{"$ref":"#\/definitions\/locale"}}},"x-appwrite":{"method":"get","weight":101,"cookies":false,"type":"","demo":"locale\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-locale.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/localed","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}]}},"\/locale\/codes":{"get":{"summary":"List Locale Codes","operationId":"localeListCodes","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all locale codes in [ISO 639-1](https:\/\/en.wikipedia.org\/wiki\/List_of_ISO_639-1_codes).","responses":{"200":{"description":"Locale codes list","schema":{"$ref":"#\/definitions\/localeCodeList"}}},"x-appwrite":{"method":"listCodes","weight":102,"cookies":false,"type":"","demo":"locale\/list-codes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-locale-codes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/localeCode","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}]}},"\/locale\/continents":{"get":{"summary":"List continents","operationId":"localeListContinents","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","schema":{"$ref":"#\/definitions\/continentList"}}},"x-appwrite":{"method":"listContinents","weight":106,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/continents","offline-key":"","offline-response-key":"code","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List countries","operationId":"localeListCountries","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountries","weight":103,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/countries","offline-key":"","offline-response-key":"code","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU countries","operationId":"localeListCountriesEU","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountriesEU","weight":104,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/countries\/eu","offline-key":"","offline-response-key":"code","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List countries phone codes","operationId":"localeListCountriesPhones","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","schema":{"$ref":"#\/definitions\/phoneList"}}},"x-appwrite":{"method":"listCountriesPhones","weight":105,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/countries\/phones","offline-key":"","offline-response-key":"countryCode","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List currencies","operationId":"localeListCurrencies","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","schema":{"$ref":"#\/definitions\/currencyList"}}},"x-appwrite":{"method":"listCurrencies","weight":107,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/currencies","offline-key":"","offline-response-key":"code","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List languages","operationId":"localeListLanguages","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","schema":{"$ref":"#\/definitions\/languageList"}}},"x-appwrite":{"method":"listLanguages","weight":108,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/languages","offline-key":"","offline-response-key":"code","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}]}},"\/messaging\/messages":{"get":{"summary":"List messages","operationId":"messagingListMessages","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Message list","schema":{"$ref":"#\/definitions\/messageList"}}},"x-appwrite":{"method":"listMessages","weight":346,"cookies":false,"type":"","demo":"messaging\/list-messages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-messages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, provider, type, enabled","required":false,"type":"string","default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]}},"\/messaging\/messages\/email":{"post":{"summary":"Create an email.","operationId":"messagingCreateEmailMessage","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Message","schema":{"$ref":"#\/definitions\/message"}}},"x-appwrite":{"method":"createEmailMessage","weight":343,"cookies":false,"type":"","demo":"messaging\/create-email-message.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"messageId":{"type":"string","description":"Message ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[MESSAGE_ID]"},"subject":{"type":"string","description":"Email Subject.","default":null,"x-example":"[SUBJECT]"},"content":{"type":"string","description":"Email Content.","default":null,"x-example":"[CONTENT]"},"topics":{"type":"array","description":"List of Topic IDs.","default":[],"x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","default":[],"x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","default":[],"x-example":null,"items":{"type":"string"}},"cc":{"type":"array","description":"Array of target IDs to be added as CC.","default":[],"x-example":null,"items":{"type":"string"}},"bcc":{"type":"array","description":"Array of target IDs to be added as BCC.","default":[],"x-example":null,"items":{"type":"string"}},"description":{"type":"string","description":"Description for message.","default":"","x-example":"[DESCRIPTION]"},"status":{"type":"string","description":"Message Status. Value must be either draft or cancelled or processing.","default":"processing","x-example":"draft","enum":["draft","canceled","processing"],"x-enum-name":null,"x-enum-keys":[]},"html":{"type":"boolean","description":"Is content of type HTML","default":false,"x-example":false},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","default":null,"x-example":null}},"required":["messageId","subject","content"]}}]}},"\/messaging\/messages\/email\/{messageId}":{"patch":{"summary":"Update an email.","operationId":"messagingUpdateEmail","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Message","schema":{"$ref":"#\/definitions\/message"}}},"x-appwrite":{"method":"updateEmail","weight":349,"cookies":false,"type":"","demo":"messaging\/update-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"type":"string","x-example":"[MESSAGE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"topics":{"type":"array","description":"List of Topic IDs.","default":null,"x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","default":null,"x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","default":null,"x-example":null,"items":{"type":"string"}},"subject":{"type":"string","description":"Email Subject.","default":null,"x-example":"[SUBJECT]"},"description":{"type":"string","description":"Description for Message.","default":null,"x-example":"[DESCRIPTION]"},"content":{"type":"string","description":"Email Content.","default":null,"x-example":"[CONTENT]"},"status":{"type":"string","description":"Message Status. Value must be either draft or cancelled or processing.","default":null,"x-example":"draft","enum":["draft","cancelled","processing"],"x-enum-name":null,"x-enum-keys":[]},"html":{"type":"boolean","description":"Is content of type HTML","default":null,"x-example":false},"cc":{"type":"array","description":"Array of target IDs to be added as CC.","default":null,"x-example":null,"items":{"type":"string"}},"bcc":{"type":"array","description":"Array of target IDs to be added as BCC.","default":null,"x-example":null,"items":{"type":"string"}},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","default":null,"x-example":null}}}}]}},"\/messaging\/messages\/push":{"post":{"summary":"Create a push notification.","operationId":"messagingCreatePushMessage","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Message","schema":{"$ref":"#\/definitions\/message"}}},"x-appwrite":{"method":"createPushMessage","weight":345,"cookies":false,"type":"","demo":"messaging\/create-push-message.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-push-notification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"messageId":{"type":"string","description":"Message ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[MESSAGE_ID]"},"title":{"type":"string","description":"Title for push notification.","default":null,"x-example":"[TITLE]"},"body":{"type":"string","description":"Body for push notification.","default":null,"x-example":"[BODY]"},"topics":{"type":"array","description":"List of Topic IDs.","default":[],"x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","default":[],"x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","default":[],"x-example":null,"items":{"type":"string"}},"description":{"type":"string","description":"Description for Message.","default":"","x-example":"[DESCRIPTION]"},"data":{"type":"object","description":"Additional Data for push notification.","default":{},"x-example":"{}"},"action":{"type":"string","description":"Action for push notification.","default":"","x-example":"[ACTION]"},"icon":{"type":"string","description":"Icon for push notification. Available only for Android and Web Platform.","default":"","x-example":"[ICON]"},"sound":{"type":"string","description":"Sound for push notification. Available only for Android and IOS Platform.","default":"","x-example":"[SOUND]"},"color":{"type":"string","description":"Color for push notification. Available only for Android Platform.","default":"","x-example":"[COLOR]"},"tag":{"type":"string","description":"Tag for push notification. Available only for Android Platform.","default":"","x-example":"[TAG]"},"badge":{"type":"string","description":"Badge for push notification. Available only for IOS Platform.","default":"","x-example":"[BADGE]"},"status":{"type":"string","description":"Message Status. Value must be either draft or cancelled or processing.","default":"processing","x-example":"draft","enum":["draft","canceled","processing"],"x-enum-name":null,"x-enum-keys":[]},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","default":null,"x-example":null}},"required":["messageId","title","body"]}}]}},"\/messaging\/messages\/push\/{messageId}":{"patch":{"summary":"Update a push notification.","operationId":"messagingUpdatePushNotification","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Message","schema":{"$ref":"#\/definitions\/message"}}},"x-appwrite":{"method":"updatePushNotification","weight":351,"cookies":false,"type":"","demo":"messaging\/update-push-notification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-push-notification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"type":"string","x-example":"[MESSAGE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"topics":{"type":"array","description":"List of Topic IDs.","default":null,"x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","default":null,"x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","default":null,"x-example":null,"items":{"type":"string"}},"description":{"type":"string","description":"Description for Message.","default":null,"x-example":"[DESCRIPTION]"},"title":{"type":"string","description":"Title for push notification.","default":null,"x-example":"[TITLE]"},"body":{"type":"string","description":"Body for push notification.","default":null,"x-example":"[BODY]"},"data":{"type":"object","description":"Additional Data for push notification.","default":{},"x-example":"{}"},"action":{"type":"string","description":"Action for push notification.","default":null,"x-example":"[ACTION]"},"icon":{"type":"string","description":"Icon for push notification. Available only for Android and Web platforms.","default":null,"x-example":"[ICON]"},"sound":{"type":"string","description":"Sound for push notification. Available only for Android and iOS platforms.","default":null,"x-example":"[SOUND]"},"color":{"type":"string","description":"Color for push notification. Available only for Android platforms.","default":null,"x-example":"[COLOR]"},"tag":{"type":"string","description":"Tag for push notification. Available only for Android platforms.","default":null,"x-example":"[TAG]"},"badge":{"type":"integer","description":"Badge for push notification. Available only for iOS platforms.","default":null,"x-example":null},"status":{"type":"string","description":"Message Status. Value must be either draft, cancelled, or processing.","default":null,"x-example":"draft","enum":["draft","cancelled","processing"],"x-enum-name":null,"x-enum-keys":[]},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","default":null,"x-example":null}}}}]}},"\/messaging\/messages\/sms":{"post":{"summary":"Create an SMS.","operationId":"messagingCreateSMSMessage","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Message","schema":{"$ref":"#\/definitions\/message"}}},"x-appwrite":{"method":"createSMSMessage","weight":344,"cookies":false,"type":"","demo":"messaging\/create-s-m-s-message.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-sms.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"messageId":{"type":"string","description":"Message ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[MESSAGE_ID]"},"content":{"type":"string","description":"SMS Content.","default":null,"x-example":"[CONTENT]"},"topics":{"type":"array","description":"List of Topic IDs.","default":[],"x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","default":[],"x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","default":[],"x-example":null,"items":{"type":"string"}},"description":{"type":"string","description":"Description for Message.","default":"","x-example":"[DESCRIPTION]"},"status":{"type":"string","description":"Message Status. Value must be either draft or cancelled or processing.","default":"processing","x-example":"draft","enum":["draft","canceled","processing"],"x-enum-name":null,"x-enum-keys":[]},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","default":null,"x-example":null}},"required":["messageId","content"]}}]}},"\/messaging\/messages\/sms\/{messageId}":{"patch":{"summary":"Update an SMS.","operationId":"messagingUpdateSMS","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Message","schema":{"$ref":"#\/definitions\/message"}}},"x-appwrite":{"method":"updateSMS","weight":350,"cookies":false,"type":"","demo":"messaging\/update-s-m-s.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"type":"string","x-example":"[MESSAGE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"topics":{"type":"array","description":"List of Topic IDs.","default":null,"x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","default":null,"x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","default":null,"x-example":null,"items":{"type":"string"}},"description":{"type":"string","description":"Description for Message.","default":null,"x-example":"[DESCRIPTION]"},"content":{"type":"string","description":"Email Content.","default":null,"x-example":"[CONTENT]"},"status":{"type":"string","description":"Message Status. Value must be either draft or cancelled or processing.","default":null,"x-example":"draft","enum":["draft","cancelled","processing"],"x-enum-name":null,"x-enum-keys":[]},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","default":null,"x-example":null}}}}]}},"\/messaging\/messages\/{messageId}":{"get":{"summary":"Get a message","operationId":"messagingGetMessage","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Message","schema":{"$ref":"#\/definitions\/message"}}},"x-appwrite":{"method":"getMessage","weight":348,"cookies":false,"type":"","demo":"messaging\/get-message.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/get-message.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"type":"string","x-example":"[MESSAGE_ID]","in":"path"}]}},"\/messaging\/messages\/{messageId}\/logs":{"get":{"summary":"List message logs","operationId":"messagingListMessageLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listMessageLogs","weight":347,"cookies":false,"type":"","demo":"messaging\/list-message-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/messages\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"type":"string","x-example":"[MESSAGE_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/messaging\/providers":{"get":{"summary":"List providers","operationId":"messagingListProviders","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider list","schema":{"$ref":"#\/definitions\/providerList"}}},"x-appwrite":{"method":"listProviders","weight":319,"cookies":false,"type":"","demo":"messaging\/list-providers.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-providers.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, provider, type, enabled","required":false,"type":"string","default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]}},"\/messaging\/providers\/apns":{"post":{"summary":"Create APNS provider","operationId":"messagingCreateApnsProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createApnsProvider","weight":318,"cookies":false,"type":"","demo":"messaging\/create-apns-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-apns-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"authKey":{"type":"string","description":"APNS authentication key.","default":"","x-example":"[AUTH_KEY]"},"authKeyId":{"type":"string","description":"APNS authentication key ID.","default":"","x-example":"[AUTH_KEY_ID]"},"teamId":{"type":"string","description":"APNS team ID.","default":"","x-example":"[TEAM_ID]"},"bundleId":{"type":"string","description":"APNS bundle ID.","default":"","x-example":"[BUNDLE_ID]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name"]}}]}},"\/messaging\/providers\/apns\/{providerId}":{"patch":{"summary":"Update APNS provider","operationId":"messagingUpdateApnsProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateApnsProvider","weight":330,"cookies":false,"type":"","demo":"messaging\/update-apns-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-apns-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"authKey":{"type":"string","description":"APNS authentication key.","default":"","x-example":"[AUTH_KEY]"},"authKeyId":{"type":"string","description":"APNS authentication key ID.","default":"","x-example":"[AUTH_KEY_ID]"},"teamId":{"type":"string","description":"APNS team ID.","default":"","x-example":"[TEAM_ID]"},"bundleId":{"type":"string","description":"APNS bundle ID.","default":"","x-example":"[BUNDLE_ID]"}}}}]}},"\/messaging\/providers\/fcm":{"post":{"summary":"Create FCM provider","operationId":"messagingCreateFcmProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createFcmProvider","weight":317,"cookies":false,"type":"","demo":"messaging\/create-fcm-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-fcm-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"serviceAccountJSON":{"type":"object","description":"FCM service account JSON.","default":{},"x-example":"{}"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name"]}}]}},"\/messaging\/providers\/fcm\/{providerId}":{"patch":{"summary":"Update FCM provider","operationId":"messagingUpdateFcmProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateFcmProvider","weight":329,"cookies":false,"type":"","demo":"messaging\/update-fcm-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-fcm-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"serviceAccountJSON":{"type":"object","description":"FCM service account JSON.","default":{},"x-example":"{}"}}}}]}},"\/messaging\/providers\/mailgun":{"post":{"summary":"Create Mailgun provider","operationId":"messagingCreateMailgunProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createMailgunProvider","weight":310,"cookies":false,"type":"","demo":"messaging\/create-mailgun-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-mailgun-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"apiKey":{"type":"string","description":"Mailgun API Key.","default":"","x-example":"[API_KEY]"},"domain":{"type":"string","description":"Mailgun Domain.","default":"","x-example":"[DOMAIN]"},"isEuRegion":{"type":"boolean","description":"Set as EU region.","default":null,"x-example":false},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"fromName":{"type":"string","description":"Sender Name.","default":"","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","default":"","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the reply to field for the mail. Default value is sender name. Reply to name must have reply to email as well.","default":"","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the reply to field for the mail. Default value is sender email. Reply to email must have reply to name as well.","default":"","x-example":"[REPLY_TO_EMAIL]"}},"required":["providerId","name"]}}]}},"\/messaging\/providers\/mailgun\/{providerId}":{"patch":{"summary":"Update Mailgun provider","operationId":"messagingUpdateMailgunProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateMailgunProvider","weight":322,"cookies":false,"type":"","demo":"messaging\/update-mailgun-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-mailgun-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"apiKey":{"type":"string","description":"Mailgun API Key.","default":"","x-example":"[API_KEY]"},"domain":{"type":"string","description":"Mailgun Domain.","default":"","x-example":"[DOMAIN]"},"isEuRegion":{"type":"boolean","description":"Set as EU region.","default":null,"x-example":false},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"fromName":{"type":"string","description":"Sender Name.","default":"","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","default":"","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the reply to field for the mail. Default value is sender name.","default":"","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the reply to field for the mail. Default value is sender email.","default":"","x-example":"[REPLY_TO_EMAIL]"}}}}]}},"\/messaging\/providers\/msg91":{"post":{"summary":"Create Msg91 provider","operationId":"messagingCreateMsg91Provider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createMsg91Provider","weight":312,"cookies":false,"type":"","demo":"messaging\/create-msg91provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-msg91-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":"","x-example":"+12065550100"},"senderId":{"type":"string","description":"Msg91 Sender ID.","default":"","x-example":"[SENDER_ID]"},"authKey":{"type":"string","description":"Msg91 Auth Key.","default":"","x-example":"[AUTH_KEY]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name"]}}]}},"\/messaging\/providers\/msg91\/{providerId}":{"patch":{"summary":"Update Msg91 provider","operationId":"messagingUpdateMsg91Provider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateMsg91Provider","weight":324,"cookies":false,"type":"","demo":"messaging\/update-msg91provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-msg91-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"senderId":{"type":"string","description":"Msg91 Sender ID.","default":"","x-example":"[SENDER_ID]"},"authKey":{"type":"string","description":"Msg91 Auth Key.","default":"","x-example":"[AUTH_KEY]"},"from":{"type":"string","description":"Sender number.","default":"","x-example":"[FROM]"}}}}]}},"\/messaging\/providers\/sendgrid":{"post":{"summary":"Create Sendgrid provider","operationId":"messagingCreateSendgridProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createSendgridProvider","weight":311,"cookies":false,"type":"","demo":"messaging\/create-sendgrid-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-sengrid-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"apiKey":{"type":"string","description":"Sendgrid API key.","default":"","x-example":"[API_KEY]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"fromName":{"type":"string","description":"Sender Name.","default":"","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","default":"","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the reply to field for the mail. Default value is sender name.","default":"","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the reply to field for the mail. Default value is sender email.","default":"","x-example":"[REPLY_TO_EMAIL]"}},"required":["providerId","name"]}}]}},"\/messaging\/providers\/sendgrid\/{providerId}":{"patch":{"summary":"Update Sendgrid provider","operationId":"messagingUpdateSendgridProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateSendgridProvider","weight":323,"cookies":false,"type":"","demo":"messaging\/update-sendgrid-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-sendgrid-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"apiKey":{"type":"string","description":"Sendgrid API key.","default":"","x-example":"[API_KEY]"},"fromName":{"type":"string","description":"Sender Name.","default":"","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","default":"","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the Reply To field for the mail. Default value is Sender Name.","default":"","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the Reply To field for the mail. Default value is Sender Email.","default":"","x-example":"[REPLY_TO_EMAIL]"}}}}]}},"\/messaging\/providers\/telesign":{"post":{"summary":"Create Telesign provider","operationId":"messagingCreateTelesignProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createTelesignProvider","weight":313,"cookies":false,"type":"","demo":"messaging\/create-telesign-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-telesign-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":"","x-example":"+12065550100"},"username":{"type":"string","description":"Telesign username.","default":"","x-example":"[USERNAME]"},"password":{"type":"string","description":"Telesign password.","default":"","x-example":"[PASSWORD]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name"]}}]}},"\/messaging\/providers\/telesign\/{providerId}":{"patch":{"summary":"Update Telesign provider","operationId":"messagingUpdateTelesignProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateTelesignProvider","weight":325,"cookies":false,"type":"","demo":"messaging\/update-telesign-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-telesign-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"username":{"type":"string","description":"Telesign username.","default":"","x-example":"[USERNAME]"},"password":{"type":"string","description":"Telesign password.","default":"","x-example":"[PASSWORD]"},"from":{"type":"string","description":"Sender number.","default":"","x-example":"[FROM]"}}}}]}},"\/messaging\/providers\/textmagic":{"post":{"summary":"Create Textmagic provider","operationId":"messagingCreateTextmagicProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createTextmagicProvider","weight":314,"cookies":false,"type":"","demo":"messaging\/create-textmagic-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-textmagic-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":"","x-example":"+12065550100"},"username":{"type":"string","description":"Textmagic username.","default":"","x-example":"[USERNAME]"},"apiKey":{"type":"string","description":"Textmagic apiKey.","default":"","x-example":"[API_KEY]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name"]}}]}},"\/messaging\/providers\/textmagic\/{providerId}":{"patch":{"summary":"Update Textmagic provider","operationId":"messagingUpdateTextmagicProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateTextmagicProvider","weight":326,"cookies":false,"type":"","demo":"messaging\/update-textmagic-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-textmagic-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"username":{"type":"string","description":"Textmagic username.","default":"","x-example":"[USERNAME]"},"apiKey":{"type":"string","description":"Textmagic apiKey.","default":"","x-example":"[API_KEY]"},"from":{"type":"string","description":"Sender number.","default":"","x-example":"[FROM]"}}}}]}},"\/messaging\/providers\/twilio":{"post":{"summary":"Create Twilio provider","operationId":"messagingCreateTwilioProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createTwilioProvider","weight":315,"cookies":false,"type":"","demo":"messaging\/create-twilio-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-twilio-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":"","x-example":"+12065550100"},"accountSid":{"type":"string","description":"Twilio account secret ID.","default":"","x-example":"[ACCOUNT_SID]"},"authToken":{"type":"string","description":"Twilio authentication token.","default":"","x-example":"[AUTH_TOKEN]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name"]}}]}},"\/messaging\/providers\/twilio\/{providerId}":{"patch":{"summary":"Update Twilio provider","operationId":"messagingUpdateTwilioProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateTwilioProvider","weight":327,"cookies":false,"type":"","demo":"messaging\/update-twilio-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-twilio-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"accountSid":{"type":"string","description":"Twilio account secret ID.","default":"","x-example":"[ACCOUNT_SID]"},"authToken":{"type":"string","description":"Twilio authentication token.","default":"","x-example":"[AUTH_TOKEN]"},"from":{"type":"string","description":"Sender number.","default":"","x-example":"[FROM]"}}}}]}},"\/messaging\/providers\/vonage":{"post":{"summary":"Create Vonage provider","operationId":"messagingCreateVonageProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createVonageProvider","weight":316,"cookies":false,"type":"","demo":"messaging\/create-vonage-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-vonage-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":"","x-example":"+12065550100"},"apiKey":{"type":"string","description":"Vonage API key.","default":"","x-example":"[API_KEY]"},"apiSecret":{"type":"string","description":"Vonage API secret.","default":"","x-example":"[API_SECRET]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name"]}}]}},"\/messaging\/providers\/vonage\/{providerId}":{"patch":{"summary":"Update Vonage provider","operationId":"messagingUpdateVonageProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateVonageProvider","weight":328,"cookies":false,"type":"","demo":"messaging\/update-vonage-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-vonage-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"apiKey":{"type":"string","description":"Vonage API key.","default":"","x-example":"[API_KEY]"},"apiSecret":{"type":"string","description":"Vonage API secret.","default":"","x-example":"[API_SECRET]"},"from":{"type":"string","description":"Sender number.","default":"","x-example":"[FROM]"}}}}]}},"\/messaging\/providers\/{providerId}":{"get":{"summary":"Get provider","operationId":"messagingGetProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"getProvider","weight":321,"cookies":false,"type":"","demo":"messaging\/get-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/get-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"}]},"delete":{"summary":"Delete provider","operationId":"messagingDeleteProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteProvider","weight":331,"cookies":false,"type":"","demo":"messaging\/delete-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"}]}},"\/messaging\/providers\/{providerId}\/logs":{"get":{"summary":"List provider logs","operationId":"messagingListProviderLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listProviderLogs","weight":320,"cookies":false,"type":"","demo":"messaging\/list-provider-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/providers\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/messaging\/subscribers\/{subscriberId}\/logs":{"get":{"summary":"List subscriber logs","operationId":"messagingListSubscriberLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listSubscriberLogs","weight":340,"cookies":false,"type":"","demo":"messaging\/list-subscriber-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/subscribers\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"subscriberId","description":"Subscriber ID.","required":true,"type":"string","x-example":"[SUBSCRIBER_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/messaging\/topics":{"get":{"summary":"List topics.","operationId":"messagingListTopics","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Topic list","schema":{"$ref":"#\/definitions\/topicList"}}},"x-appwrite":{"method":"listTopics","weight":333,"cookies":false,"type":"","demo":"messaging\/list-topics.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-topics.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, description, total","required":false,"type":"string","default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create a topic.","operationId":"messagingCreateTopic","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Topic","schema":{"$ref":"#\/definitions\/topic"}}},"x-appwrite":{"method":"createTopic","weight":332,"cookies":false,"type":"","demo":"messaging\/create-topic.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-topic.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"topicId":{"type":"string","description":"Topic ID. Choose a custom Topic ID or a new Topic ID.","default":null,"x-example":"[TOPIC_ID]"},"name":{"type":"string","description":"Topic Name.","default":null,"x-example":"[NAME]"},"description":{"type":"string","description":"Topic Description.","default":"","x-example":"[DESCRIPTION]"}},"required":["topicId","name"]}}]}},"\/messaging\/topics\/{topicId}":{"get":{"summary":"Get a topic.","operationId":"messagingGetTopic","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Topic","schema":{"$ref":"#\/definitions\/topic"}}},"x-appwrite":{"method":"getTopic","weight":335,"cookies":false,"type":"","demo":"messaging\/get-topic.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/get-topic.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID.","required":true,"type":"string","x-example":"[TOPIC_ID]","in":"path"}]},"patch":{"summary":"Update a topic.","operationId":"messagingUpdateTopic","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Topic","schema":{"$ref":"#\/definitions\/topic"}}},"x-appwrite":{"method":"updateTopic","weight":336,"cookies":false,"type":"","demo":"messaging\/update-topic.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-topic.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID.","required":true,"type":"string","x-example":"[TOPIC_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Topic Name.","default":"","x-example":"[NAME]"},"description":{"type":"string","description":"Topic Description.","default":"","x-example":"[DESCRIPTION]"}}}}]},"delete":{"summary":"Delete a topic.","operationId":"messagingDeleteTopic","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteTopic","weight":337,"cookies":false,"type":"","demo":"messaging\/delete-topic.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-topic.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID.","required":true,"type":"string","x-example":"[TOPIC_ID]","in":"path"}]}},"\/messaging\/topics\/{topicId}\/logs":{"get":{"summary":"List topic logs","operationId":"messagingListTopicLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listTopicLogs","weight":334,"cookies":false,"type":"","demo":"messaging\/list-topic-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/topics\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID.","required":true,"type":"string","x-example":"[TOPIC_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/messaging\/topics\/{topicId}\/subscribers":{"get":{"summary":"List subscribers.","operationId":"messagingListSubscribers","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Subscriber list","schema":{"$ref":"#\/definitions\/subscriberList"}}},"x-appwrite":{"method":"listSubscribers","weight":339,"cookies":false,"type":"","demo":"messaging\/list-subscribers.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-subscribers.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID subscribed to.","required":true,"type":"string","x-example":"[TOPIC_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, provider, type, enabled","required":false,"type":"string","default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create a subscriber.","operationId":"messagingCreateSubscriber","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Subscriber","schema":{"$ref":"#\/definitions\/subscriber"}}},"x-appwrite":{"method":"createSubscriber","weight":338,"cookies":false,"type":"","demo":"messaging\/create-subscriber.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-subscriber.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.write","platforms":["server","client","console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[],"Session":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID to subscribe to.","required":true,"type":"string","x-example":"[TOPIC_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"subscriberId":{"type":"string","description":"Subscriber ID. Choose a custom Subscriber ID or a new Subscriber ID.","default":null,"x-example":"[SUBSCRIBER_ID]"},"targetId":{"type":"string","description":"Target ID. The target ID to link to the specified Topic ID.","default":null,"x-example":"[TARGET_ID]"}},"required":["subscriberId","targetId"]}}]}},"\/messaging\/topics\/{topicId}\/subscribers\/{subscriberId}":{"get":{"summary":"Get a subscriber.","operationId":"messagingGetSubscriber","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Subscriber","schema":{"$ref":"#\/definitions\/subscriber"}}},"x-appwrite":{"method":"getSubscriber","weight":341,"cookies":false,"type":"","demo":"messaging\/get-subscriber.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/get-subscriber.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID subscribed to.","required":true,"type":"string","x-example":"[TOPIC_ID]","in":"path"},{"name":"subscriberId","description":"Subscriber ID.","required":true,"type":"string","x-example":"[SUBSCRIBER_ID]","in":"path"}]},"delete":{"summary":"Delete a subscriber.","operationId":"messagingDeleteSubscriber","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSubscriber","weight":342,"cookies":false,"type":"","demo":"messaging\/delete-subscriber.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-subscriber.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.write","platforms":["server","client","console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[],"Session":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID subscribed to.","required":true,"type":"string","x-example":"[TOPIC_ID]","in":"path"},{"name":"subscriberId","description":"Subscriber ID.","required":true,"type":"string","x-example":"[SUBSCRIBER_ID]","in":"path"}]}},"\/storage\/buckets":{"get":{"summary":"List buckets","operationId":"storageListBuckets","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a list of all the storage buckets. You can use the query params to filter your results.","responses":{"200":{"description":"Buckets List","schema":{"$ref":"#\/definitions\/bucketList"}}},"x-appwrite":{"method":"listBuckets","weight":176,"cookies":false,"type":"","demo":"storage\/list-buckets.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/list-buckets.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: enabled, name, fileSecurity, maximumFileSize, encryption, antivirus","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create bucket","operationId":"storageCreateBucket","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Create a new storage bucket.","responses":{"201":{"description":"Bucket","schema":{"$ref":"#\/definitions\/bucket"}}},"x-appwrite":{"method":"createBucket","weight":175,"cookies":false,"type":"","demo":"storage\/create-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"bucketId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, no user is granted with any permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":false,"x-example":false},"enabled":{"type":"boolean","description":"Is bucket enabled? When set to 'disabled', users cannot access the files in this bucket but Server SDKs with and API key can still access the bucket. No files are lost when this is toggled.","default":true,"x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB.","default":30000000,"x-example":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","default":[],"x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","default":"none","x-example":"none","enum":["none","gzip","zstd"],"x-enum-name":null,"x-enum-keys":[]},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","default":true,"x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","default":true,"x-example":false}},"required":["bucketId","name"]}}]}},"\/storage\/buckets\/{bucketId}":{"get":{"summary":"Get bucket","operationId":"storageGetBucket","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a storage bucket by its unique ID. This endpoint response returns a JSON object with the storage bucket metadata.","responses":{"200":{"description":"Bucket","schema":{"$ref":"#\/definitions\/bucket"}}},"x-appwrite":{"method":"getBucket","weight":177,"cookies":false,"type":"","demo":"storage\/get-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"bucketId","description":"Bucket unique ID.","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"}]},"put":{"summary":"Update bucket","operationId":"storageUpdateBucket","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Update a storage bucket by its unique ID.","responses":{"200":{"description":"Bucket","schema":{"$ref":"#\/definitions\/bucket"}}},"x-appwrite":{"method":"updateBucket","weight":178,"cookies":false,"type":"","demo":"storage\/update-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"bucketId","description":"Bucket unique ID.","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Bucket name","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":false,"x-example":false},"enabled":{"type":"boolean","description":"Is bucket enabled? When set to 'disabled', users cannot access the files in this bucket but Server SDKs with and API key can still access the bucket. No files are lost when this is toggled.","default":true,"x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB.","default":null,"x-example":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","default":[],"x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","default":"none","x-example":"none","enum":["none","gzip","zstd"],"x-enum-name":null,"x-enum-keys":[]},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","default":true,"x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","default":true,"x-example":false}},"required":["name"]}}]},"delete":{"summary":"Delete bucket","operationId":"storageDeleteBucket","consumes":["application\/json"],"produces":[],"tags":["storage"],"description":"Delete a storage bucket by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteBucket","weight":179,"cookies":false,"type":"","demo":"storage\/delete-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"bucketId","description":"Bucket unique ID.","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files":{"get":{"summary":"List files","operationId":"storageListFiles","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a list of all the user files. You can use the query params to filter your results.","responses":{"200":{"description":"Files List","schema":{"$ref":"#\/definitions\/fileList"}}},"x-appwrite":{"method":"listFiles","weight":181,"cookies":false,"type":"","demo":"storage\/list-files.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/list-files.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create file","operationId":"storageCreateFile","consumes":["multipart\/form-data"],"produces":["application\/json"],"tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"createFile","weight":180,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId},chunkId:{chunkId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","required":true,"x-upload-id":true,"type":"string","x-example":"[FILE_ID]","in":"formData"},{"name":"file","description":"Binary file. Appwrite SDKs provide helpers to handle file input. [Learn about file input](https:\/\/appwrite.io\/docs\/storage#file-input).","required":true,"type":"file","in":"formData"},{"name":"permissions","description":"An array of permission strings. By default, only the current user is granted all permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"x-example":"[\"read(\"any\")\"]","in":"formData"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get file","operationId":"storageGetFile","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"getFile","weight":182,"cookies":false,"type":"","demo":"storage\/get-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID.","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"}]},"put":{"summary":"Update file","operationId":"storageUpdateFile","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Update a file by its unique ID. Only users with write permissions have access to update this resource.","responses":{"200":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"updateFile","weight":186,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File unique ID.","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Name of the file","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission string. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","consumes":["application\/json"],"produces":[],"tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":187,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID.","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/download":{"get":{"summary":"Get file for download","operationId":"storageGetFileDownload","consumes":["application\/json"],"produces":["*\/*"],"tags":["storage"],"description":"Get a file content by its unique ID. The endpoint response return with a 'Content-Disposition: attachment' header that tells the browser to start downloading the file to user downloads directory.","responses":{"200":{"description":"File","schema":{"type":"file"}}},"x-appwrite":{"method":"getFileDownload","weight":184,"cookies":false,"type":"location","demo":"storage\/get-file-download.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-download.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID.","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/preview":{"get":{"summary":"Get file preview","operationId":"storageGetFilePreview","consumes":["application\/json"],"produces":["image\/*"],"tags":["storage"],"description":"Get a file preview image. Currently, this method supports preview for image files (jpg, png, and gif), other supported formats, like pdf, docs, slides, and spreadsheets, will return the file icon image. You can also pass query string arguments for cutting and resizing your preview image. Preview is supported only for image files smaller than 10MB.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFilePreview","weight":183,"cookies":false,"type":"location","demo":"storage\/get-file-preview.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-preview.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"},{"name":"width","description":"Resize preview image width, Pass an integer between 0 to 4000.","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 4000.","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"gravity","description":"Image crop gravity. Can be one of center,top-left,top,top-right,left,right,bottom-left,bottom,bottom-right","required":false,"type":"string","x-example":"center","enum":["center","top-left","top","top-right","left","right","bottom-left","bottom","bottom-right"],"x-enum-name":"ImageGravity","x-enum-keys":[],"default":"center","in":"query"},{"name":"quality","description":"Preview image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"borderWidth","description":"Preview image border in pixels. Pass an integer between 0 to 100. Defaults to 0.","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"borderColor","description":"Preview image border color. Use a valid HEX color, no # is needed for prefix.","required":false,"type":"string","default":"","in":"query"},{"name":"borderRadius","description":"Preview image border radius in pixels. Pass an integer between 0 to 4000.","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"opacity","description":"Preview image opacity. Only works with images having an alpha channel (like png). Pass a number between 0 to 1.","required":false,"type":"number","format":"float","x-example":0,"default":1,"in":"query"},{"name":"rotation","description":"Preview image rotation in degrees. Pass an integer between -360 and 360.","required":false,"type":"integer","format":"int32","x-example":-360,"default":0,"in":"query"},{"name":"background","description":"Preview image background color. Only works with transparent images (png). Use a valid HEX color, no # is needed for prefix.","required":false,"type":"string","default":"","in":"query"},{"name":"output","description":"Output format type (jpeg, jpg, png, gif and webp).","required":false,"type":"string","x-example":"jpg","enum":["jpg","jpeg","gif","png","webp"],"x-enum-name":"ImageFormat","x-enum-keys":[],"default":"","in":"query"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/view":{"get":{"summary":"Get file for view","operationId":"storageGetFileView","consumes":["application\/json"],"produces":["*\/*"],"tags":["storage"],"description":"Get a file content by its unique ID. This endpoint is similar to the download method but returns with no 'Content-Disposition: attachment' header.","responses":{"200":{"description":"File","schema":{"type":"file"}}},"x-appwrite":{"method":"getFileView","weight":185,"cookies":false,"type":"location","demo":"storage\/get-file-view.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-view.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID.","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"}]}},"\/teams":{"get":{"summary":"List teams","operationId":"teamsList","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get a list of all the teams in which the current user is a member. You can use the parameters to filter your results.","responses":{"200":{"description":"Teams List","schema":{"$ref":"#\/definitions\/teamList"}}},"x-appwrite":{"method":"list","weight":191,"cookies":false,"type":"","demo":"teams\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-teams.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create team","operationId":"teamsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"create","weight":190,"cookies":false,"type":"","demo":"teams\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/create-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"teamId":{"type":"string","description":"Team ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[TEAM_ID]"},"name":{"type":"string","description":"Team name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"roles":{"type":"array","description":"Array of strings. Use this param to set the roles in the team for the user who created it. The default role is **owner**. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","default":["owner"],"x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}]}},"\/teams\/{teamId}":{"get":{"summary":"Get team","operationId":"teamsGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"get","weight":192,"cookies":false,"type":"","demo":"teams\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams","offline-key":"{teamId}","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"}]},"put":{"summary":"Update name","operationId":"teamsUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Update the team's name by its unique ID.","responses":{"200":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"updateName","weight":194,"cookies":false,"type":"","demo":"teams\/update-name.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-name.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams","offline-key":"{teamId}","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"New team name. Max length: 128 chars.","default":null,"x-example":"[NAME]"}},"required":["name"]}}]},"delete":{"summary":"Delete team","operationId":"teamsDelete","consumes":["application\/json"],"produces":[],"tags":["teams"],"description":"Delete a team using its ID. Only team members with the owner role can delete the team.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":196,"cookies":false,"type":"","demo":"teams\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/delete-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"}]}},"\/teams\/{teamId}\/memberships":{"get":{"summary":"List team memberships","operationId":"teamsListMemberships","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"listMemberships","weight":198,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/memberships","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create team membership","operationId":"teamsCreateMembership","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Invite a new member to join your team. Provide an ID for existing users, or invite unregistered users using an email or phone number. If initiated from a Client SDK, Appwrite will send an email or sms with a link to join the team to the invited user, and an account will be created for them if one doesn't exist. If initiated from a Server SDK, the new member will be added automatically to the team.\n\nYou only need to provide one of a user ID, email, or phone number. Appwrite will prioritize accepting the user ID > email > phone number if you provide more than one of these parameters.\n\nUse the `url` parameter to redirect the user from the invitation email to your app. After the user is redirected, use the [Update Team Membership Status](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/teams#updateMembershipStatus) endpoint to allow the user to accept the invitation to the team. \n\nPlease note that to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) Appwrite will accept the only redirect URLs under the domains you have added as a platform on the Appwrite Console.\n","responses":{"201":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"createMembership","weight":197,"cookies":false,"type":"","demo":"teams\/create-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/create-team-membership.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"email":{"type":"string","description":"Email of the new team member.","default":"","x-example":"email@example.com"},"userId":{"type":"string","description":"ID of the user to be added to a team.","default":"","x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":"","x-example":"+12065550100"},"roles":{"type":"array","description":"Array of strings. Use this param to set the user roles in the team. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":"","x-example":"https:\/\/example.com"},"name":{"type":"string","description":"Name of the new team member. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["roles"]}}]}},"\/teams\/{teamId}\/memberships\/{membershipId}":{"get":{"summary":"Get team membership","operationId":"teamsGetMembership","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get a team member by the membership unique id. All team members have read access for this resource.","responses":{"200":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"getMembership","weight":199,"cookies":false,"type":"","demo":"teams\/get-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-member.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/memberships","offline-key":"{membershipId}","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"type":"string","x-example":"[MEMBERSHIP_ID]","in":"path"}]},"patch":{"summary":"Update membership","operationId":"teamsUpdateMembership","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Modify the roles of a team member. Only team members with the owner role have access to this endpoint. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions).\n","responses":{"200":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"updateMembership","weight":200,"cookies":false,"type":"","demo":"teams\/update-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"type":"string","x-example":"[MEMBERSHIP_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"roles":{"type":"array","description":"An array of strings. Use this param to set the user's roles in the team. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}}},"required":["roles"]}}]},"delete":{"summary":"Delete team membership","operationId":"teamsDeleteMembership","consumes":["application\/json"],"produces":[],"tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":202,"cookies":false,"type":"","demo":"teams\/delete-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/delete-team-membership.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"type":"string","x-example":"[MEMBERSHIP_ID]","in":"path"}]}},"\/teams\/{teamId}\/memberships\/{membershipId}\/status":{"patch":{"summary":"Update team membership status","operationId":"teamsUpdateMembershipStatus","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Use this endpoint to allow a user to accept an invitation to join a team after being redirected back to your app from the invitation email received by the user.\n\nIf the request is successful, a session for the user is automatically created.\n","responses":{"200":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"updateMembershipStatus","weight":201,"cookies":false,"type":"","demo":"teams\/update-membership-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"public","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"type":"string","x-example":"[MEMBERSHIP_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Secret key.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/teams\/{teamId}\/prefs":{"get":{"summary":"Get team preferences","operationId":"teamsGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get the team's shared preferences by its unique ID. If a preference doesn't need to be shared by all team members, prefer storing them in [user preferences](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#getPrefs).","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":193,"cookies":false,"type":"","demo":"teams\/get-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/prefs","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"}]},"put":{"summary":"Update preferences","operationId":"teamsUpdatePrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Update the team's preferences by its unique ID. The object you pass is stored as is and replaces any previous value. The maximum allowed prefs size is 64kB and throws an error if exceeded.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"updatePrefs","weight":195,"cookies":false,"type":"","demo":"teams\/update-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/prefs","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"prefs":{"type":"object","description":"Prefs key-value JSON object.","default":{},"x-example":"{}"}},"required":["prefs"]}}]}},"\/users":{"get":{"summary":"List users","operationId":"usersList","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get a list of all the project's users. You can use the query params to filter your results.","responses":{"200":{"description":"Users List","schema":{"$ref":"#\/definitions\/userList"}}},"x-appwrite":{"method":"list","weight":213,"cookies":false,"type":"","demo":"users\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-users.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, email, phone, status, passwordUpdate, registration, emailVerification, phoneVerification","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create user","operationId":"usersCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"create","weight":204,"cookies":false,"type":"","demo":"users\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"},"password":{"type":"string","description":"Plain text user password. Must be at least 8 chars.","default":"","x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId"]}}]}},"\/users\/argon2":{"post":{"summary":"Create user with Argon2 password","operationId":"usersCreateArgon2User","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Argon2](https:\/\/en.wikipedia.org\/wiki\/Argon2) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createArgon2User","weight":207,"cookies":false,"type":"","demo":"users\/create-argon2user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-argon2-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Argon2.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/bcrypt":{"post":{"summary":"Create user with bcrypt password","operationId":"usersCreateBcryptUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Bcrypt](https:\/\/en.wikipedia.org\/wiki\/Bcrypt) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createBcryptUser","weight":205,"cookies":false,"type":"","demo":"users\/create-bcrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-bcrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Bcrypt.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/identities":{"get":{"summary":"List Identities","operationId":"usersListIdentities","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get identities for all users.","responses":{"200":{"description":"Identities List","schema":{"$ref":"#\/definitions\/identityList"}}},"x-appwrite":{"method":"listIdentities","weight":221,"cookies":false,"type":"","demo":"users\/list-identities.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-identities.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, provider, providerUid, providerEmail, providerAccessTokenExpiry","required":false,"type":"string","default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]}},"\/users\/identities\/{identityId}":{"delete":{"summary":"Delete identity","operationId":"usersDeleteIdentity","consumes":["application\/json"],"produces":[],"tags":["users"],"description":"Delete an identity by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIdentity","weight":238,"cookies":false,"type":"","demo":"users\/delete-identity.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-identity.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"identityId","description":"Identity ID.","required":true,"type":"string","x-example":"[IDENTITY_ID]","in":"path"}]}},"\/users\/md5":{"post":{"summary":"Create user with MD5 password","operationId":"usersCreateMD5User","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [MD5](https:\/\/en.wikipedia.org\/wiki\/MD5) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createMD5User","weight":206,"cookies":false,"type":"","demo":"users\/create-m-d5user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-md5-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using MD5.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/phpass":{"post":{"summary":"Create user with PHPass password","operationId":"usersCreatePHPassUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [PHPass](https:\/\/www.openwall.com\/phpass\/) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createPHPassUser","weight":209,"cookies":false,"type":"","demo":"users\/create-p-h-pass-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-phpass-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or pass the string `ID.unique()`to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using PHPass.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/scrypt":{"post":{"summary":"Create user with Scrypt password","operationId":"usersCreateScryptUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt](https:\/\/github.com\/Tarsnap\/scrypt) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createScryptUser","weight":210,"cookies":false,"type":"","demo":"users\/create-scrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt.","default":null,"x-example":"password"},"passwordSalt":{"type":"string","description":"Optional salt used to hash password.","default":null,"x-example":"[PASSWORD_SALT]"},"passwordCpu":{"type":"integer","description":"Optional CPU cost used to hash password.","default":null,"x-example":null},"passwordMemory":{"type":"integer","description":"Optional memory cost used to hash password.","default":null,"x-example":null},"passwordParallel":{"type":"integer","description":"Optional parallelization cost used to hash password.","default":null,"x-example":null},"passwordLength":{"type":"integer","description":"Optional hash length used to hash password.","default":null,"x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordCpu","passwordMemory","passwordParallel","passwordLength"]}}]}},"\/users\/scrypt-modified":{"post":{"summary":"Create user with Scrypt modified password","operationId":"usersCreateScryptModifiedUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt Modified](https:\/\/gist.github.com\/Meldiron\/eecf84a0225eccb5a378d45bb27462cc) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createScryptModifiedUser","weight":211,"cookies":false,"type":"","demo":"users\/create-scrypt-modified-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-modified-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt Modified.","default":null,"x-example":"password"},"passwordSalt":{"type":"string","description":"Salt used to hash password.","default":null,"x-example":"[PASSWORD_SALT]"},"passwordSaltSeparator":{"type":"string","description":"Salt separator used to hash password.","default":null,"x-example":"[PASSWORD_SALT_SEPARATOR]"},"passwordSignerKey":{"type":"string","description":"Signer key used to hash password.","default":null,"x-example":"[PASSWORD_SIGNER_KEY]"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordSaltSeparator","passwordSignerKey"]}}]}},"\/users\/sha":{"post":{"summary":"Create user with SHA password","operationId":"usersCreateSHAUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [SHA](https:\/\/en.wikipedia.org\/wiki\/Secure_Hash_Algorithm) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createSHAUser","weight":208,"cookies":false,"type":"","demo":"users\/create-s-h-a-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-sha-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using SHA.","default":null,"x-example":"password"},"passwordVersion":{"type":"string","description":"Optional SHA version used to hash password. Allowed values are: 'sha1', 'sha224', 'sha256', 'sha384', 'sha512\/224', 'sha512\/256', 'sha512', 'sha3-224', 'sha3-256', 'sha3-384', 'sha3-512'","default":"","x-example":"sha1","enum":["sha1","sha224","sha256","sha384","sha512\/224","sha512\/256","sha512","sha3-224","sha3-256","sha3-384","sha3-512"],"x-enum-name":null,"x-enum-keys":[]},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/{userId}":{"get":{"summary":"Get user","operationId":"usersGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get a user by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"get","weight":214,"cookies":false,"type":"","demo":"users\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]},"delete":{"summary":"Delete user","operationId":"usersDelete","consumes":["application\/json"],"produces":[],"tags":["users"],"description":"Delete a user by its unique ID, thereby releasing it's ID. Since ID is released and can be reused, all user-related resources like documents or storage files should be deleted before user deletion. If you want to keep ID reserved, use the [updateStatus](https:\/\/appwrite.io\/docs\/server\/users#usersUpdateStatus) endpoint instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":236,"cookies":false,"type":"","demo":"users\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]}},"\/users\/{userId}\/email":{"patch":{"summary":"Update email","operationId":"usersUpdateEmail","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user email by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateEmail","weight":227,"cookies":false,"type":"","demo":"users\/update-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"}},"required":["email"]}}]}},"\/users\/{userId}\/labels":{"put":{"summary":"Update user labels","operationId":"usersUpdateLabels","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user labels by its unique ID. \n\nLabels can be used to grant access to resources. While teams are a way for user's to share access to a resource, labels can be defined by the developer to grant access without an invitation. See the [Permissions docs](https:\/\/appwrite.io\/docs\/permissions) for more info.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateLabels","weight":223,"cookies":false,"type":"","demo":"users\/update-labels.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-labels.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"labels":{"type":"array","description":"Array of user labels. Replaces the previous labels. Maximum of 100 labels are allowed, each up to 36 alphanumeric characters long.","default":null,"x-example":null,"items":{"type":"string"}}},"required":["labels"]}}]}},"\/users\/{userId}\/logs":{"get":{"summary":"List user logs","operationId":"usersListLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listLogs","weight":219,"cookies":false,"type":"","demo":"users\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/users\/{userId}\/memberships":{"get":{"summary":"List user memberships","operationId":"usersListMemberships","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user membership list by its unique ID.","responses":{"200":{"description":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"listMemberships","weight":218,"cookies":false,"type":"","demo":"users\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-memberships.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]}},"\/users\/{userId}\/name":{"patch":{"summary":"Update name","operationId":"usersUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user name by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateName","weight":225,"cookies":false,"type":"","demo":"users\/update-name.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-name.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"User name. Max length: 128 chars.","default":null,"x-example":"[NAME]"}},"required":["name"]}}]}},"\/users\/{userId}\/password":{"patch":{"summary":"Update password","operationId":"usersUpdatePassword","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user password by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePassword","weight":226,"cookies":false,"type":"","demo":"users\/update-password.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-password.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"password":{"type":"string","description":"New user password. Must be at least 8 chars.","default":null,"x-example":null}},"required":["password"]}}]}},"\/users\/{userId}\/phone":{"patch":{"summary":"Update phone","operationId":"usersUpdatePhone","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user phone by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePhone","weight":228,"cookies":false,"type":"","demo":"users\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"number":{"type":"string","description":"User phone number.","default":null,"x-example":"+12065550100"}},"required":["number"]}}]}},"\/users\/{userId}\/prefs":{"get":{"summary":"Get user preferences","operationId":"usersGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user preferences by its unique ID.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":215,"cookies":false,"type":"","demo":"users\/get-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]},"patch":{"summary":"Update user preferences","operationId":"usersUpdatePrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user preferences by its unique ID. The object you pass is stored as is, and replaces any previous value. The maximum allowed prefs size is 64kB and throws error if exceeded.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"updatePrefs","weight":230,"cookies":false,"type":"","demo":"users\/update-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"prefs":{"type":"object","description":"Prefs key-value JSON object.","default":{},"x-example":"{}"}},"required":["prefs"]}}]}},"\/users\/{userId}\/sessions":{"get":{"summary":"List user sessions","operationId":"usersListSessions","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user sessions list by its unique ID.","responses":{"200":{"description":"Sessions List","schema":{"$ref":"#\/definitions\/sessionList"}}},"x-appwrite":{"method":"listSessions","weight":217,"cookies":false,"type":"","demo":"users\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]},"post":{"summary":"Create session","operationId":"usersCreateSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Creates a session for a user. Returns an immediately usable session object.\n\nIf you want to generate a token for a custom authentication flow, use the [POST \/users\/{userId}\/tokens](https:\/\/appwrite.io\/docs\/server\/users#createToken) endpoint.","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"createSession","weight":232,"cookies":false,"type":"","demo":"users\/create-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-session.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]},"delete":{"summary":"Delete user sessions","operationId":"usersDeleteSessions","consumes":["application\/json"],"produces":[],"tags":["users"],"description":"Delete all user's sessions by using the user's unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":235,"cookies":false,"type":"","demo":"users\/delete-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]}},"\/users\/{userId}\/sessions\/{sessionId}":{"delete":{"summary":"Delete user session","operationId":"usersDeleteSession","consumes":["application\/json"],"produces":[],"tags":["users"],"description":"Delete a user sessions by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSession","weight":234,"cookies":false,"type":"","demo":"users\/delete-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-user-session.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"sessionId","description":"Session ID.","required":true,"type":"string","x-example":"[SESSION_ID]","in":"path"}]}},"\/users\/{userId}\/status":{"patch":{"summary":"Update user status","operationId":"usersUpdateStatus","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user status by its unique ID. Use this endpoint as an alternative to deleting a user if you want to keep user's ID reserved.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateStatus","weight":222,"cookies":false,"type":"","demo":"users\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"status":{"type":"boolean","description":"User Status. To activate the user pass `true` and to block the user pass `false`.","default":null,"x-example":false}},"required":["status"]}}]}},"\/users\/{userId}\/targets":{"get":{"summary":"List User Targets","operationId":"usersListTargets","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"","responses":{"200":{"description":"Target list","schema":{"$ref":"#\/definitions\/targetList"}}},"x-appwrite":{"method":"listTargets","weight":220,"cookies":false,"type":"","demo":"users\/list-targets.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-targets.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.read","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, email, phone, status, passwordUpdate, registration, emailVerification, phoneVerification","required":false,"type":"string","default":[],"in":"query"}]},"post":{"summary":"Create User Target","operationId":"usersCreateTarget","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"","responses":{"201":{"description":"Target","schema":{"$ref":"#\/definitions\/target"}}},"x-appwrite":{"method":"createTarget","weight":212,"cookies":false,"type":"","demo":"users\/create-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-target.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"targetId":{"type":"string","description":"Target ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[TARGET_ID]"},"providerType":{"type":"string","description":"The target provider type. Can be one of the following: `email`, `sms` or `push`.","default":null,"x-example":"email","enum":["email","sms","push"],"x-enum-name":null,"x-enum-keys":[]},"identifier":{"type":"string","description":"The target identifier (token, email, phone etc.)","default":null,"x-example":"[IDENTIFIER]"},"providerId":{"type":"string","description":"Provider ID. Message will be sent to this target from the specified provider ID. If no provider ID is set the first setup provider will be used.","default":"","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Target name. Max length: 128 chars. For example: My Awesome App Galaxy S23.","default":"","x-example":"[NAME]"}},"required":["targetId","providerType","identifier"]}}]}},"\/users\/{userId}\/targets\/{targetId}":{"get":{"summary":"Get User Target","operationId":"usersGetTarget","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"","responses":{"200":{"description":"Target","schema":{"$ref":"#\/definitions\/target"}}},"x-appwrite":{"method":"getTarget","weight":216,"cookies":false,"type":"","demo":"users\/get-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-target.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.read","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"targetId","description":"Target ID.","required":true,"type":"string","x-example":"[TARGET_ID]","in":"path"}]},"patch":{"summary":"Update User target","operationId":"usersUpdateTarget","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"","responses":{"200":{"description":"Target","schema":{"$ref":"#\/definitions\/target"}}},"x-appwrite":{"method":"updateTarget","weight":231,"cookies":false,"type":"","demo":"users\/update-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-target.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"targetId","description":"Target ID.","required":true,"type":"string","x-example":"[TARGET_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"identifier":{"type":"string","description":"The target identifier (token, email, phone etc.)","default":"","x-example":"[IDENTIFIER]"},"providerId":{"type":"string","description":"Provider ID. Message will be sent to this target from the specified provider ID. If no provider ID is set the first setup provider will be used.","default":"","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Target name. Max length: 128 chars. For example: My Awesome App Galaxy S23.","default":"","x-example":"[NAME]"}}}}]},"delete":{"summary":"Delete user target","operationId":"usersDeleteTarget","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteTarget","weight":237,"cookies":false,"type":"","demo":"users\/delete-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-target.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"targetId","description":"Target ID.","required":true,"type":"string","x-example":"[TARGET_ID]","in":"path"}]}},"\/users\/{userId}\/tokens":{"post":{"summary":"Create token","operationId":"usersCreateToken","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Returns a token with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [PUT \/account\/sessions\/custom](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateCustomSession) endpoint to complete the login process.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createToken","weight":233,"cookies":false,"type":"","demo":"users\/create-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-token.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"length":{"type":"integer","description":"Token length in characters. The default length is 6 characters","default":6,"x-example":4},"expire":{"type":"integer","description":"Token expiration period in seconds. The default expiration is 15 minutes.","default":900,"x-example":60}}}}]}},"\/users\/{userId}\/verification":{"patch":{"summary":"Update email verification","operationId":"usersUpdateEmailVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user email verification status by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateEmailVerification","weight":229,"cookies":false,"type":"","demo":"users\/update-email-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-email-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"emailVerification":{"type":"boolean","description":"User email verification status.","default":null,"x-example":false}},"required":["emailVerification"]}}]}},"\/users\/{userId}\/verification\/phone":{"patch":{"summary":"Update phone verification","operationId":"usersUpdatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user phone verification status by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePhoneVerification","weight":224,"cookies":false,"type":"","demo":"users\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"phoneVerification":{"type":"boolean","description":"User phone verification status.","default":null,"x-example":false}},"required":["phoneVerification"]}}]}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"project","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]},{"name":"proxy","description":"The Proxy Service allows you to configure actions for your domains beyond DNS configuration.","x-globalAttributes":[]},{"name":"graphql","description":"The GraphQL API allows you to query and mutate your Appwrite server using GraphQL.","x-globalAttributes":[]},{"name":"console","description":"The Console service allows you to interact with console relevant informations.","x-globalAttributes":[]},{"name":"migrations","description":"The Migrations service allows you to migrate third-party data to your Appwrite project.","x-globalAttributes":[]},{"name":"messaging","description":"The Messaging service allows you to send messages to any provider type (SMTP, push notification, SMS, etc.).","x-globalAttributes":[]}],"definitions":{"any":{"description":"Any","type":"object","additionalProperties":true},"documentList":{"description":"Documents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of documents documents that matched your query.","x-example":5,"format":"int32"},"documents":{"type":"array","description":"List of documents.","items":{"type":"object","$ref":"#\/definitions\/document"},"x-example":""}},"required":["total","documents"]},"collectionList":{"description":"Collections List","type":"object","properties":{"total":{"type":"integer","description":"Total number of collections documents that matched your query.","x-example":5,"format":"int32"},"collections":{"type":"array","description":"List of collections.","items":{"type":"object","$ref":"#\/definitions\/collection"},"x-example":""}},"required":["total","collections"]},"databaseList":{"description":"Databases List","type":"object","properties":{"total":{"type":"integer","description":"Total number of databases documents that matched your query.","x-example":5,"format":"int32"},"databases":{"type":"array","description":"List of databases.","items":{"type":"object","$ref":"#\/definitions\/database"},"x-example":""}},"required":["total","databases"]},"indexList":{"description":"Indexes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of indexes documents that matched your query.","x-example":5,"format":"int32"},"indexes":{"type":"array","description":"List of indexes.","items":{"type":"object","$ref":"#\/definitions\/index"},"x-example":""}},"required":["total","indexes"]},"userList":{"description":"Users List","type":"object","properties":{"total":{"type":"integer","description":"Total number of users documents that matched your query.","x-example":5,"format":"int32"},"users":{"type":"array","description":"List of users.","items":{"type":"object","$ref":"#\/definitions\/user"},"x-example":""}},"required":["total","users"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of sessions documents that matched your query.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"type":"object","$ref":"#\/definitions\/session"},"x-example":""}},"required":["total","sessions"]},"identityList":{"description":"Identities List","type":"object","properties":{"total":{"type":"integer","description":"Total number of identities documents that matched your query.","x-example":5,"format":"int32"},"identities":{"type":"array","description":"List of identities.","items":{"type":"object","$ref":"#\/definitions\/identity"},"x-example":""}},"required":["total","identities"]},"logList":{"description":"Logs List","type":"object","properties":{"total":{"type":"integer","description":"Total number of logs documents that matched your query.","x-example":5,"format":"int32"},"logs":{"type":"array","description":"List of logs.","items":{"type":"object","$ref":"#\/definitions\/log"},"x-example":""}},"required":["total","logs"]},"fileList":{"description":"Files List","type":"object","properties":{"total":{"type":"integer","description":"Total number of files documents that matched your query.","x-example":5,"format":"int32"},"files":{"type":"array","description":"List of files.","items":{"type":"object","$ref":"#\/definitions\/file"},"x-example":""}},"required":["total","files"]},"bucketList":{"description":"Buckets List","type":"object","properties":{"total":{"type":"integer","description":"Total number of buckets documents that matched your query.","x-example":5,"format":"int32"},"buckets":{"type":"array","description":"List of buckets.","items":{"type":"object","$ref":"#\/definitions\/bucket"},"x-example":""}},"required":["total","buckets"]},"teamList":{"description":"Teams List","type":"object","properties":{"total":{"type":"integer","description":"Total number of teams documents that matched your query.","x-example":5,"format":"int32"},"teams":{"type":"array","description":"List of teams.","items":{"type":"object","$ref":"#\/definitions\/team"},"x-example":""}},"required":["total","teams"]},"membershipList":{"description":"Memberships List","type":"object","properties":{"total":{"type":"integer","description":"Total number of memberships documents that matched your query.","x-example":5,"format":"int32"},"memberships":{"type":"array","description":"List of memberships.","items":{"type":"object","$ref":"#\/definitions\/membership"},"x-example":""}},"required":["total","memberships"]},"functionList":{"description":"Functions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of functions documents that matched your query.","x-example":5,"format":"int32"},"functions":{"type":"array","description":"List of functions.","items":{"type":"object","$ref":"#\/definitions\/function"},"x-example":""}},"required":["total","functions"]},"runtimeList":{"description":"Runtimes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of runtimes documents that matched your query.","x-example":5,"format":"int32"},"runtimes":{"type":"array","description":"List of runtimes.","items":{"type":"object","$ref":"#\/definitions\/runtime"},"x-example":""}},"required":["total","runtimes"]},"deploymentList":{"description":"Deployments List","type":"object","properties":{"total":{"type":"integer","description":"Total number of deployments documents that matched your query.","x-example":5,"format":"int32"},"deployments":{"type":"array","description":"List of deployments.","items":{"type":"object","$ref":"#\/definitions\/deployment"},"x-example":""}},"required":["total","deployments"]},"executionList":{"description":"Executions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of executions documents that matched your query.","x-example":5,"format":"int32"},"executions":{"type":"array","description":"List of executions.","items":{"type":"object","$ref":"#\/definitions\/execution"},"x-example":""}},"required":["total","executions"]},"countryList":{"description":"Countries List","type":"object","properties":{"total":{"type":"integer","description":"Total number of countries documents that matched your query.","x-example":5,"format":"int32"},"countries":{"type":"array","description":"List of countries.","items":{"type":"object","$ref":"#\/definitions\/country"},"x-example":""}},"required":["total","countries"]},"continentList":{"description":"Continents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of continents documents that matched your query.","x-example":5,"format":"int32"},"continents":{"type":"array","description":"List of continents.","items":{"type":"object","$ref":"#\/definitions\/continent"},"x-example":""}},"required":["total","continents"]},"languageList":{"description":"Languages List","type":"object","properties":{"total":{"type":"integer","description":"Total number of languages documents that matched your query.","x-example":5,"format":"int32"},"languages":{"type":"array","description":"List of languages.","items":{"type":"object","$ref":"#\/definitions\/language"},"x-example":""}},"required":["total","languages"]},"currencyList":{"description":"Currencies List","type":"object","properties":{"total":{"type":"integer","description":"Total number of currencies documents that matched your query.","x-example":5,"format":"int32"},"currencies":{"type":"array","description":"List of currencies.","items":{"type":"object","$ref":"#\/definitions\/currency"},"x-example":""}},"required":["total","currencies"]},"phoneList":{"description":"Phones List","type":"object","properties":{"total":{"type":"integer","description":"Total number of phones documents that matched your query.","x-example":5,"format":"int32"},"phones":{"type":"array","description":"List of phones.","items":{"type":"object","$ref":"#\/definitions\/phone"},"x-example":""}},"required":["total","phones"]},"variableList":{"description":"Variables List","type":"object","properties":{"total":{"type":"integer","description":"Total number of variables documents that matched your query.","x-example":5,"format":"int32"},"variables":{"type":"array","description":"List of variables.","items":{"type":"object","$ref":"#\/definitions\/variable"},"x-example":""}},"required":["total","variables"]},"localeCodeList":{"description":"Locale codes list","type":"object","properties":{"total":{"type":"integer","description":"Total number of localeCodes documents that matched your query.","x-example":5,"format":"int32"},"localeCodes":{"type":"array","description":"List of localeCodes.","items":{"type":"object","$ref":"#\/definitions\/localeCode"},"x-example":""}},"required":["total","localeCodes"]},"providerList":{"description":"Provider list","type":"object","properties":{"total":{"type":"integer","description":"Total number of providers documents that matched your query.","x-example":5,"format":"int32"},"providers":{"type":"array","description":"List of providers.","items":{"type":"object","$ref":"#\/definitions\/provider"},"x-example":""}},"required":["total","providers"]},"messageList":{"description":"Message list","type":"object","properties":{"total":{"type":"integer","description":"Total number of messages documents that matched your query.","x-example":5,"format":"int32"},"messages":{"type":"array","description":"List of messages.","items":{"type":"object","$ref":"#\/definitions\/message"},"x-example":""}},"required":["total","messages"]},"topicList":{"description":"Topic list","type":"object","properties":{"total":{"type":"integer","description":"Total number of topics documents that matched your query.","x-example":5,"format":"int32"},"topics":{"type":"array","description":"List of topics.","items":{"type":"object","$ref":"#\/definitions\/topic"},"x-example":""}},"required":["total","topics"]},"subscriberList":{"description":"Subscriber list","type":"object","properties":{"total":{"type":"integer","description":"Total number of subscribers documents that matched your query.","x-example":5,"format":"int32"},"subscribers":{"type":"array","description":"List of subscribers.","items":{"type":"object","$ref":"#\/definitions\/subscriber"},"x-example":""}},"required":["total","subscribers"]},"targetList":{"description":"Target list","type":"object","properties":{"total":{"type":"integer","description":"Total number of targets documents that matched your query.","x-example":5,"format":"int32"},"targets":{"type":"array","description":"List of targets.","items":{"type":"object","$ref":"#\/definitions\/target"},"x-example":""}},"required":["total","targets"]},"database":{"description":"Database","type":"object","properties":{"$id":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Database name.","x-example":"My Database"},"$createdAt":{"type":"string","description":"Database creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Database update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"enabled":{"type":"boolean","description":"If database is enabled. Can be 'enabled' or 'disabled'. When disabled, the database is inaccessible to users, but remains accessible to Server SDKs using API keys.","x-example":false}},"required":["$id","name","$createdAt","$updatedAt","enabled"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Collection creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Collection update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Collection permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled. Can be 'enabled' or 'disabled'. When disabled, the collection is inaccessible to users, but remains accessible to Server SDKs using API keys.","x-example":false},"documentSecurity":{"type":"boolean","description":"Whether document-level permissions are enabled. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":true},"attributes":{"type":"array","description":"Collection attributes.","items":{"x-anyOf":[{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeRelationship"},{"$ref":"#\/definitions\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"type":"object","$ref":"#\/definitions\/index"},"x-example":{}}},"required":["$id","$createdAt","$updatedAt","$permissions","databaseId","name","enabled","documentSecurity","attributes","indexes"]},"attributeList":{"description":"Attributes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of attributes in the given collection.","x-example":5,"format":"int32"},"attributes":{"type":"array","description":"List of attributes.","items":{"x-anyOf":[{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeRelationship"},{"$ref":"#\/definitions\/attributeString"}]},"x-example":""}},"required":["total","attributes"]},"attributeString":{"description":"AttributeString","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"fullName"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"size":{"type":"integer","description":"Attribute size.","x-example":128,"format":"int32"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"default","x-nullable":true}},"required":["key","type","status","error","required","size"]},"attributeInteger":{"description":"AttributeInteger","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"count"},"type":{"type":"string","description":"Attribute type.","x-example":"integer"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"min":{"type":"integer","description":"Minimum value to enforce for new documents.","x-example":1,"format":"int32","x-nullable":true},"max":{"type":"integer","description":"Maximum value to enforce for new documents.","x-example":10,"format":"int32","x-nullable":true},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":10,"format":"int32","x-nullable":true}},"required":["key","type","status","error","required"]},"attributeFloat":{"description":"AttributeFloat","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"percentageCompleted"},"type":{"type":"string","description":"Attribute type.","x-example":"double"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"min":{"type":"number","description":"Minimum value to enforce for new documents.","x-example":1.5,"format":"double","x-nullable":true},"max":{"type":"number","description":"Maximum value to enforce for new documents.","x-example":10.5,"format":"double","x-nullable":true},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":2.5,"format":"double","x-nullable":true}},"required":["key","type","status","error","required"]},"attributeBoolean":{"description":"AttributeBoolean","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"isEnabled"},"type":{"type":"string","description":"Attribute type.","x-example":"boolean"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":false,"x-nullable":true}},"required":["key","type","status","error","required"]},"attributeEmail":{"description":"AttributeEmail","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"userEmail"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"format":{"type":"string","description":"String format.","x-example":"email"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"default@example.com","x-nullable":true}},"required":["key","type","status","error","required","format"]},"attributeEnum":{"description":"AttributeEnum","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"status"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"elements":{"type":"array","description":"Array of elements in enumerated type.","items":{"type":"string"},"x-example":"element"},"format":{"type":"string","description":"String format.","x-example":"enum"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"element","x-nullable":true}},"required":["key","type","status","error","required","elements","format"]},"attributeIp":{"description":"AttributeIP","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"ipAddress"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"format":{"type":"string","description":"String format.","x-example":"ip"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"192.0.2.0","x-nullable":true}},"required":["key","type","status","error","required","format"]},"attributeUrl":{"description":"AttributeURL","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"githubUrl"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"format":{"type":"string","description":"String format.","x-example":"url"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"http:\/\/example.com","x-nullable":true}},"required":["key","type","status","error","required","format"]},"attributeDatetime":{"description":"AttributeDatetime","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"birthDay"},"type":{"type":"string","description":"Attribute type.","x-example":"datetime"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"format":{"type":"string","description":"ISO 8601 format.","x-example":"datetime"},"default":{"type":"string","description":"Default value for attribute when not provided. Only null is optional","x-example":"2020-10-15T06:38:00.000+00:00","x-nullable":true}},"required":["key","type","status","error","required","format"]},"attributeRelationship":{"description":"AttributeRelationship","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"fullName"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"relatedCollection":{"type":"string","description":"The ID of the related collection.","x-example":"collection"},"relationType":{"type":"string","description":"The type of the relationship.","x-example":"oneToOne|oneToMany|manyToOne|manyToMany"},"twoWay":{"type":"boolean","description":"Is the relationship two-way?","x-example":false},"twoWayKey":{"type":"string","description":"The key of the two-way relationship.","x-example":"string"},"onDelete":{"type":"string","description":"How deleting the parent document will propagate to child documents.","x-example":"restrict|cascade|setNull"},"side":{"type":"string","description":"Whether this is the parent or child side of the relationship","x-example":"parent|child"}},"required":["key","type","status","error","required","relatedCollection","relationType","twoWay","twoWayKey","onDelete","side"]},"index":{"description":"Index","type":"object","properties":{"key":{"type":"string","description":"Index Key.","x-example":"index1"},"type":{"type":"string","description":"Index type.","x-example":"primary"},"status":{"type":"string","description":"Index status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an index.","x-example":"string"},"attributes":{"type":"array","description":"Index attributes.","items":{"type":"string"},"x-example":[]},"orders":{"type":"array","description":"Index orders.","items":{"type":"string"},"x-example":[],"x-nullable":true}},"required":["key","type","status","error","attributes"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"user":{"description":"User","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"password":{"type":"string","description":"Hashed user password.","x-example":"$argon2id$v=19$m=2048,t=4,p=3$aUZjLnliVWRINmFNTWMudg$5S+x+7uA31xFnrHFT47yFwcJeaP0w92L\/4LdgrVRXxE","x-nullable":true},"hash":{"type":"string","description":"Password hashing algorithm.","x-example":"argon2","x-nullable":true},"hashOptions":{"type":"object","description":"Password hashing algorithm configuration.","x-example":{},"items":{"x-oneOf":[{"$ref":"#\/definitions\/algoArgon2"},{"$ref":"#\/definitions\/algoScrypt"},{"$ref":"#\/definitions\/algoScryptModified"},{"$ref":"#\/definitions\/algoBcrypt"},{"$ref":"#\/definitions\/algoPhpass"},{"$ref":"#\/definitions\/algoSha"},{"$ref":"#\/definitions\/algoMd5"}]},"x-nullable":true},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"labels":{"type":"array","description":"Labels for the user.","items":{"type":"string"},"x-example":["vip"]},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"type":"object","$ref":"#\/definitions\/preferences"}},"targets":{"type":"array","description":"A user-owned message receiver. A single user may have multiple e.g. emails, phones, and a browser. Each target is registered with a single provider.","items":{"type":"object","$ref":"#\/definitions\/target"},"x-example":[]},"accessedAt":{"type":"string","description":"Most recent access date in ISO 8601 format. This attribute is only updated again after 24 hours.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","$updatedAt","name","registration","status","labels","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs","targets","accessedAt"]},"algoMd5":{"description":"AlgoMD5","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"md5"}},"required":["type"]},"algoSha":{"description":"AlgoSHA","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"sha"}},"required":["type"]},"algoPhpass":{"description":"AlgoPHPass","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"phpass"}},"required":["type"]},"algoBcrypt":{"description":"AlgoBcrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"bcrypt"}},"required":["type"]},"algoScrypt":{"description":"AlgoScrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scrypt"},"costCpu":{"type":"integer","description":"CPU complexity of computed hash.","x-example":8,"format":"int32"},"costMemory":{"type":"integer","description":"Memory complexity of computed hash.","x-example":14,"format":"int32"},"costParallel":{"type":"integer","description":"Parallelization of computed hash.","x-example":1,"format":"int32"},"length":{"type":"integer","description":"Length used to compute hash.","x-example":64,"format":"int32"}},"required":["type","costCpu","costMemory","costParallel","length"]},"algoScryptModified":{"description":"AlgoScryptModified","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scryptMod"},"salt":{"type":"string","description":"Salt used to compute hash.","x-example":"UxLMreBr6tYyjQ=="},"saltSeparator":{"type":"string","description":"Separator used to compute hash.","x-example":"Bw=="},"signerKey":{"type":"string","description":"Key used to compute hash.","x-example":"XyEKE9RcTDeLEsL\/RjwPDBv\/RqDl8fb3gpYEOQaPihbxf1ZAtSOHCjuAAa7Q3oHpCYhXSN9tizHgVOwn6krflQ=="}},"required":["type","salt","saltSeparator","signerKey"]},"algoArgon2":{"description":"AlgoArgon2","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"argon2"},"memoryCost":{"type":"integer","description":"Memory used to compute hash.","x-example":65536,"format":"int32"},"timeCost":{"type":"integer","description":"Amount of time consumed to compute hash","x-example":4,"format":"int32"},"threads":{"type":"integer","description":"Number of threads used to compute hash.","x-example":3,"format":"int32"}},"required":["type","memoryCost","timeCost","threads"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true},"secret":{"type":"string","description":"Secret used to authenticate the user. Only included if the request was made with an API key","x-example":"5e5bb8c16897e"}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current","secret"]},"identity":{"description":"Identity","type":"object","properties":{"$id":{"type":"string","description":"Identity ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Identity creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Identity update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"provider":{"type":"string","description":"Identity Provider.","x-example":"email"},"providerUid":{"type":"string","description":"ID of the User in the Identity Provider.","x-example":"5e5bb8c16897e"},"providerEmail":{"type":"string","description":"Email of the User in the Identity Provider.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Identity Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Identity Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"}},"required":["$id","$createdAt","$updatedAt","userId","provider","providerUid","providerEmail","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"securityPhrase":{"type":"string","description":"Security phrase of a token. Empty if security phrase was not requested when creating a token. It includes randomly generated phrase which is also sent in the external resource such as email.","x-example":"Golden Fox"}},"required":["$id","$createdAt","userId","secret","expire","securityPhrase"]},"jwt":{"description":"JWT","type":"object","properties":{"jwt":{"type":"string","description":"JWT encoded string.","x-example":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c"}},"required":["jwt"]},"locale":{"description":"Locale","type":"object","properties":{"ip":{"type":"string","description":"User IP address.","x-example":"127.0.0.1"},"countryCode":{"type":"string","description":"Country code in [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) two-character format","x-example":"US"},"country":{"type":"string","description":"Country name. This field support localization.","x-example":"United States"},"continentCode":{"type":"string","description":"Continent code. A two character continent code \"AF\" for Africa, \"AN\" for Antarctica, \"AS\" for Asia, \"EU\" for Europe, \"NA\" for North America, \"OC\" for Oceania, and \"SA\" for South America.","x-example":"NA"},"continent":{"type":"string","description":"Continent name. This field support localization.","x-example":"North America"},"eu":{"type":"boolean","description":"True if country is part of the European Union.","x-example":false},"currency":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format","x-example":"USD"}},"required":["ip","countryCode","country","continentCode","continent","eu","currency"]},"localeCode":{"description":"LocaleCode","type":"object","properties":{"code":{"type":"string","description":"Locale codes in [ISO 639-1](https:\/\/en.wikipedia.org\/wiki\/List_of_ISO_639-1_codes)","x-example":"en-us"},"name":{"type":"string","description":"Locale name","x-example":"US"}},"required":["code","name"]},"file":{"description":"File","type":"object","properties":{"$id":{"type":"string","description":"File ID.","x-example":"5e5ea5c16897e"},"bucketId":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Bucket creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Bucket update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Bucket permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"fileSecurity":{"type":"boolean","description":"Whether file-level security is enabled. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":true},"name":{"type":"string","description":"Bucket name.","x-example":"Documents"},"enabled":{"type":"boolean","description":"Bucket enabled.","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size supported.","x-example":100,"format":"int32"},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions.","items":{"type":"string"},"x-example":["jpg","png"]},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Will be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd).","x-example":"gzip"},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$createdAt","$updatedAt","$permissions","fileSecurity","name","enabled","maximumFileSize","allowedFileExtensions","compression","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"},"prefs":{"type":"object","description":"Team preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"type":"object","$ref":"#\/definitions\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","total","prefs"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":["owner"]}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Function creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Function update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"users"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"enabled":{"type":"boolean","description":"Function enabled.","x-example":false},"live":{"type":"boolean","description":"Is the function deployed with the latest configuration? This is set to false if you've changed an environment variables, entrypoint, commands, or other settings that needs redeploy to be applied. When the value is false, redeploy the function to update it with the latest configuration.","x-example":false},"logging":{"type":"boolean","description":"Whether executions will be logged. When set to false, executions will not be logged, but will reduce resource used by your Appwrite project.","x-example":false},"runtime":{"type":"string","description":"Function execution runtime.","x-example":"python-3.8"},"deployment":{"type":"string","description":"Function's active deployment ID.","x-example":"5e5ea5c16897e"},"vars":{"type":"array","description":"Function variables.","items":{"type":"object","$ref":"#\/definitions\/variable"},"x-example":[]},"events":{"type":"array","description":"Function trigger events.","items":{"type":"string"},"x-example":"account.create"},"schedule":{"type":"string","description":"Function execution schedult in CRON format.","x-example":"5 4 * * *"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":300,"format":"int32"},"entrypoint":{"type":"string","description":"The entrypoint file used to execute the deployment.","x-example":"index.js"},"commands":{"type":"string","description":"The build command used to build the deployment.","x-example":"npm install"},"version":{"type":"string","description":"Version of Open Runtimes used for the function.","x-example":"v2"},"installationId":{"type":"string","description":"Function VCS (Version Control System) installation id.","x-example":"6m40at4ejk5h2u9s1hboo"},"providerRepositoryId":{"type":"string","description":"VCS (Version Control System) Repository ID","x-example":"appwrite"},"providerBranch":{"type":"string","description":"VCS (Version Control System) branch name","x-example":"main"},"providerRootDirectory":{"type":"string","description":"Path to function in VCS (Version Control System) repository","x-example":"functions\/helloWorld"},"providerSilentMode":{"type":"boolean","description":"Is VCS (Version Control System) connection is in silent mode? When in silence mode, no comments will be posted on the repository pull or merge requests","x-example":false}},"required":["$id","$createdAt","$updatedAt","execute","name","enabled","live","logging","runtime","deployment","vars","events","schedule","timeout","entrypoint","commands","version","installationId","providerRepositoryId","providerBranch","providerRootDirectory","providerSilentMode"]},"runtime":{"description":"Runtime","type":"object","properties":{"$id":{"type":"string","description":"Runtime ID.","x-example":"python-3.8"},"name":{"type":"string","description":"Runtime Name.","x-example":"Python"},"version":{"type":"string","description":"Runtime version.","x-example":"3.8"},"base":{"type":"string","description":"Base Docker image used to build the runtime.","x-example":"python:3.8-alpine"},"image":{"type":"string","description":"Image name of Docker Hub.","x-example":"appwrite\\\/runtime-for-python:3.8"},"logo":{"type":"string","description":"Name of the logo image.","x-example":"python.png"},"supports":{"type":"array","description":"List of supported architectures.","items":{"type":"string"},"x-example":"amd64"}},"required":["$id","name","version","base","image","logo","supports"]},"deployment":{"description":"Deployment","type":"object","properties":{"$id":{"type":"string","description":"Deployment ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Deployment creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Deployment update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"type":{"type":"string","description":"Type of deployment.","x-example":"vcs"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"index.js"},"size":{"type":"integer","description":"The code size in bytes.","x-example":128,"format":"int32"},"buildId":{"type":"string","description":"The current build ID.","x-example":"5e5ea5c16897e"},"activate":{"type":"boolean","description":"Whether the deployment should be automatically activated.","x-example":true},"status":{"type":"string","description":"The deployment status. Possible values are \"processing\", \"building\", \"waiting\", \"ready\", and \"failed\".","x-example":"ready"},"buildLogs":{"type":"string","description":"The build logs.","x-example":"Compiling source files..."},"buildTime":{"type":"integer","description":"The current build time in seconds.","x-example":128,"format":"int32"},"providerRepositoryName":{"type":"string","description":"The name of the vcs provider repository","x-example":"database"},"providerRepositoryOwner":{"type":"string","description":"The name of the vcs provider repository owner","x-example":"utopia"},"providerRepositoryUrl":{"type":"string","description":"The url of the vcs provider repository","x-example":"https:\/\/github.com\/vermakhushboo\/g4-node-function"},"providerBranch":{"type":"string","description":"The branch of the vcs repository","x-example":"0.7.x"},"providerCommitHash":{"type":"string","description":"The commit hash of the vcs commit","x-example":"7c3f25d"},"providerCommitAuthorUrl":{"type":"string","description":"The url of vcs commit author","x-example":"https:\/\/github.com\/vermakhushboo"},"providerCommitAuthor":{"type":"string","description":"The name of vcs commit author","x-example":"Khushboo Verma"},"providerCommitMessage":{"type":"string","description":"The commit message","x-example":"Update index.js"},"providerCommitUrl":{"type":"string","description":"The url of the vcs commit","x-example":"https:\/\/github.com\/vermakhushboo\/g4-node-function\/commit\/60c0416257a9cbcdd96b2d370c38d8f8d150ccfb"},"providerBranchUrl":{"type":"string","description":"The branch of the vcs repository","x-example":"https:\/\/github.com\/vermakhushboo\/appwrite\/tree\/0.7.x"}},"required":["$id","$createdAt","$updatedAt","type","resourceId","resourceType","entrypoint","size","buildId","activate","status","buildLogs","buildTime","providerRepositoryName","providerRepositoryOwner","providerRepositoryUrl","providerBranch","providerCommitHash","providerCommitAuthorUrl","providerCommitAuthor","providerCommitMessage","providerCommitUrl","providerBranchUrl"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"requestMethod":{"type":"string","description":"HTTP request method type.","x-example":"GET"},"requestPath":{"type":"string","description":"HTTP request path and query.","x-example":"\/articles?id=5"},"requestHeaders":{"type":"array","description":"HTTP response headers as a key-value object. This will return only whitelisted headers. All headers are returned if execution is created as synchronous.","items":{"type":"object","$ref":"#\/definitions\/headers"},"x-example":[{"Content-Type":"application\/json"}]},"responseStatusCode":{"type":"integer","description":"HTTP response status code.","x-example":200,"format":"int32"},"responseBody":{"type":"string","description":"HTTP response body. This will return empty unless execution is created as synchronous.","x-example":"Developers are awesome."},"responseHeaders":{"type":"array","description":"HTTP response headers as a key-value object. This will return only whitelisted headers. All headers are returned if execution is created as synchronous.","items":{"type":"object","$ref":"#\/definitions\/headers"},"x-example":[{"Content-Type":"application\/json"}]},"logs":{"type":"string","description":"Function logs. Includes the last 4,000 characters. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"errors":{"type":"string","description":"Function errors. Includes the last 4,000 characters. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"Function execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","requestMethod","requestPath","requestHeaders","responseStatusCode","responseBody","responseHeaders","logs","errors","duration"]},"variable":{"description":"Variable","type":"object","properties":{"$id":{"type":"string","description":"Variable ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"key":{"type":"string","description":"Variable key.","x-example":"API_KEY"},"value":{"type":"string","description":"Variable value.","x-example":"myPa$$word1"},"resourceType":{"type":"string","description":"Service to which the variable belongs. Possible values are \"project\", \"function\"","x-example":"function"},"resourceId":{"type":"string","description":"ID of resource to which the variable belongs. If resourceType is \"project\", it is empty. If resourceType is \"function\", it is ID of the function.","x-example":"myAwesomeFunction"}},"required":["$id","$createdAt","$updatedAt","key","value","resourceType","resourceId"]},"country":{"description":"Country","type":"object","properties":{"name":{"type":"string","description":"Country name.","x-example":"United States"},"code":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"}},"required":["name","code"]},"continent":{"description":"Continent","type":"object","properties":{"name":{"type":"string","description":"Continent name.","x-example":"Europe"},"code":{"type":"string","description":"Continent two letter code.","x-example":"EU"}},"required":["name","code"]},"language":{"description":"Language","type":"object","properties":{"name":{"type":"string","description":"Language name.","x-example":"Italian"},"code":{"type":"string","description":"Language two-character ISO 639-1 codes.","x-example":"it"},"nativeName":{"type":"string","description":"Language native name.","x-example":"Italiano"}},"required":["name","code","nativeName"]},"currency":{"description":"Currency","type":"object","properties":{"symbol":{"type":"string","description":"Currency symbol.","x-example":"$"},"name":{"type":"string","description":"Currency name.","x-example":"US dollar"},"symbolNative":{"type":"string","description":"Currency native symbol.","x-example":"$"},"decimalDigits":{"type":"integer","description":"Number of decimal digits.","x-example":2,"format":"int32"},"rounding":{"type":"number","description":"Currency digit rounding.","x-example":0,"format":"double"},"code":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format.","x-example":"USD"},"namePlural":{"type":"string","description":"Currency plural name","x-example":"US dollars"}},"required":["symbol","name","symbolNative","decimalDigits","rounding","code","namePlural"]},"phone":{"description":"Phone","type":"object","properties":{"code":{"type":"string","description":"Phone code.","x-example":"+1"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["code","countryCode","countryName"]},"healthAntivirus":{"description":"Health Antivirus","type":"object","properties":{"version":{"type":"string","description":"Antivirus version.","x-example":"1.0.0"},"status":{"type":"string","description":"Antivirus status. Possible values can are: `disabled`, `offline`, `online`","x-example":"online"}},"required":["version","status"]},"healthQueue":{"description":"Health Queue","type":"object","properties":{"size":{"type":"integer","description":"Amount of actions in the queue.","x-example":8,"format":"int32"}},"required":["size"]},"healthStatus":{"description":"Health Status","type":"object","properties":{"name":{"type":"string","description":"Name of the service.","x-example":"database"},"ping":{"type":"integer","description":"Duration in milliseconds how long the health check took.","x-example":128,"format":"int32"},"status":{"type":"string","description":"Service status. Possible values can are: `pass`, `fail`","x-example":"pass"}},"required":["name","ping","status"]},"healthTime":{"description":"Health Time","type":"object","properties":{"remoteTime":{"type":"integer","description":"Current unix timestamp on trustful remote server.","x-example":1639490751,"format":"int32"},"localTime":{"type":"integer","description":"Current unix timestamp of local server where Appwrite runs.","x-example":1639490844,"format":"int32"},"diff":{"type":"integer","description":"Difference of unix remote and local timestamps in milliseconds.","x-example":93,"format":"int32"}},"required":["remoteTime","localTime","diff"]},"headers":{"description":"Headers","type":"object","properties":{"name":{"type":"string","description":"Header name.","x-example":"Content-Type"},"value":{"type":"string","description":"Header value.","x-example":"application\/json"}},"required":["name","value"]},"provider":{"description":"Provider","type":"object","properties":{"$id":{"type":"string","description":"Provider ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Provider creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Provider update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"The name for the provider instance.","x-example":"Mailgun"},"provider":{"type":"string","description":"The name of the provider service.","x-example":"mailgun"},"enabled":{"type":"boolean","description":"Is provider enabled?","x-example":true},"type":{"type":"string","description":"Type of provider.","x-example":"sms"},"credentials":{"type":"object","additionalProperties":true,"description":"Provider credentials.","x-example":{"key":"123456789"}},"options":{"type":"object","additionalProperties":true,"description":"Provider options.","x-example":{"from":"sender-email@mydomain"}}},"required":["$id","$createdAt","$updatedAt","name","provider","enabled","type","credentials"]},"message":{"description":"Message","type":"object","properties":{"$id":{"type":"string","description":"Message ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Message creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Message update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerType":{"type":"string","description":"Message provider type.","x-example":"email"},"topics":{"type":"array","description":"Topic IDs set as recipients.","items":{"type":"string"},"x-example":["5e5ea5c16897e"]},"users":{"type":"array","description":"User IDs set as recipients.","items":{"type":"string"},"x-example":["5e5ea5c16897e"]},"targets":{"type":"array","description":"Target IDs set as recipients.","items":{"type":"string"},"x-example":["5e5ea5c16897e"]},"scheduledAt":{"type":"string","description":"The scheduled time for message.","x-example":"2020-10-15T06:38:00.000+00:00","x-nullable":true},"deliveredAt":{"type":"string","description":"The time when the message was delivered.","x-example":"2020-10-15T06:38:00.000+00:00","x-nullable":true},"deliveryErrors":{"type":"array","description":"Delivery errors if any.","items":{"type":"string"},"x-example":["Failed to send message to target 5e5ea5c16897e: Credentials not valid."],"x-nullable":true},"deliveredTotal":{"type":"integer","description":"Number of recipients the message was delivered to.","x-example":1,"format":"int32"},"data":{"type":"object","additionalProperties":true,"description":"Data of the message.","x-example":{"subject":"Welcome to Appwrite","content":"Hi there, welcome to Appwrite family."}},"status":{"type":"string","description":"Status of delivery.","x-example":"Message status can be one of the following: processing, sent, cancelled, failed."},"description":{"type":"string","description":"Message description.","x-example":"Welcome Email.","x-nullable":true}},"required":["$id","$createdAt","$updatedAt","providerType","topics","users","targets","deliveredTotal","data","status"]},"topic":{"description":"Topic","type":"object","properties":{"$id":{"type":"string","description":"Topic ID.","x-example":"259125845563242502"},"$createdAt":{"type":"string","description":"Topic creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Topic update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"The name of the topic.","x-example":"events"},"total":{"type":"integer","description":"Total count of subscribers subscribed to topic.","x-example":100,"format":"int32"},"description":{"type":"string","description":"Description of the topic.","x-example":"All events related messages will be sent to this topic.","x-nullable":true}},"required":["$id","$createdAt","$updatedAt","name","total"]},"subscriber":{"description":"Subscriber","type":"object","properties":{"$id":{"type":"string","description":"Subscriber ID.","x-example":"259125845563242502"},"$createdAt":{"type":"string","description":"Subscriber creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Subscriber update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"targetId":{"type":"string","description":"Target ID.","x-example":"259125845563242502"},"target":{"type":"object","description":"Target.","x-example":{"$id":"259125845563242502","$createdAt":"2020-10-15T06:38:00.000+00:00","$updatedAt":"2020-10-15T06:38:00.000+00:00","providerType":"email","providerId":"259125845563242502","name":"ageon-app-email","identifier":"random-mail@email.org","userId":"5e5ea5c16897e"},"items":{"type":"object","$ref":"#\/definitions\/target"}},"userId":{"type":"string","description":"Topic ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User Name.","x-example":"Aegon Targaryen"},"topicId":{"type":"string","description":"Topic ID.","x-example":"259125845563242502"},"providerType":{"type":"string","description":"The target provider type. Can be one of the following: `email`, `sms` or `push`.","x-example":"email"}},"required":["$id","$createdAt","$updatedAt","targetId","target","userId","userName","topicId","providerType"]},"target":{"description":"Target","type":"object","properties":{"$id":{"type":"string","description":"Target ID.","x-example":"259125845563242502"},"$createdAt":{"type":"string","description":"Target creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Target update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Target Name.","x-example":"Aegon apple token"},"userId":{"type":"string","description":"User ID.","x-example":"259125845563242502"},"providerId":{"type":"string","description":"Provider ID.","x-example":"259125845563242502","x-nullable":true},"providerType":{"type":"string","description":"The target provider type. Can be one of the following: `email`, `sms` or `push`.","x-example":"email"},"identifier":{"type":"string","description":"The target identifier.","x-example":"token"}},"required":["$id","$createdAt","$updatedAt","name","userId","providerType","identifier"]}},"externalDocs":{"description":"Full API docs, specs and tutorials","url":"https:\/\/appwrite.io\/docs"}} \ No newline at end of file +{"swagger":"2.0","info":{"version":"1.4.13","title":"Appwrite","description":"Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https:\/\/appwrite.io\/docs](https:\/\/appwrite.io\/docs)","termsOfService":"https:\/\/appwrite.io\/policy\/terms","contact":{"name":"Appwrite Team","url":"https:\/\/appwrite.io\/support","email":"team@appwrite.io"},"license":{"name":"BSD-3-Clause","url":"https:\/\/raw.githubusercontent.com\/appwrite\/appwrite\/master\/LICENSE"}},"host":"HOSTNAME","basePath":"\/v1","schemes":["https"],"consumes":["application\/json","multipart\/form-data"],"produces":["application\/json"],"securityDefinitions":{"Project":{"type":"apiKey","name":"X-Appwrite-Project","description":"Your project ID","in":"header","x-appwrite":{"demo":"5df5acd0d48c2"}},"Key":{"type":"apiKey","name":"X-Appwrite-Key","description":"Your secret API key","in":"header","x-appwrite":{"demo":"919c2d18fb5d4...a2ae413da83346ad2"}},"JWT":{"type":"apiKey","name":"X-Appwrite-JWT","description":"Your secret JSON Web Token","in":"header","x-appwrite":{"demo":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ..."}},"Locale":{"type":"apiKey","name":"X-Appwrite-Locale","description":"","in":"header","x-appwrite":{"demo":"en"}},"Session":{"type":"apiKey","name":"X-Appwrite-Session","description":"The user session to authenticate with","in":"header"},"ForwardedFor":{"type":"apiKey","name":"X-Forwarded-For","description":"The IP address of the client that made the request","in":"header"},"ForwardedUserAgent":{"type":"apiKey","name":"X-Forwarded-User-Agent","description":"The user agent string of the client that made the request","in":"header"}},"paths":{"\/account":{"get":{"summary":"Get account","operationId":"accountGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get the currently logged in user.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"get","weight":22,"cookies":false,"type":"","demo":"account\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]},"post":{"summary":"Create account","operationId":"accountCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to allow a new user to register a new account in your project. After the user registration completes successfully, you can use the [\/account\/verfication](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createVerification) route to start verifying the user email address. To allow the new user to login to their new account, you need to create a new [account session](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createEmailSession).","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"create","weight":7,"cookies":false,"type":"","demo":"account\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"New user password. Must be between 8 and 256 chars.","default":null,"x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/account\/email":{"patch":{"summary":"Update email","operationId":"accountUpdateEmail","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateEmail","weight":29,"cookies":false,"type":"","demo":"account\/update-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["email","password"]}}]}},"\/account\/identities":{"get":{"summary":"List Identities","operationId":"accountListIdentities","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get the list of identities for the currently logged in user.","responses":{"200":{"description":"Identities List","schema":{"$ref":"#\/definitions\/identityList"}}},"x-appwrite":{"method":"listIdentities","weight":13,"cookies":false,"type":"","demo":"account\/list-identities.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-identities.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/identities","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, provider, providerUid, providerEmail, providerAccessTokenExpiry","required":false,"type":"string","default":[],"in":"query"}]}},"\/account\/identities\/{identityId}":{"delete":{"summary":"Delete identity","operationId":"accountDeleteIdentity","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Delete an identity by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIdentity","weight":14,"cookies":false,"type":"","demo":"account\/delete-identity.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-identity.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"identityId","description":"Identity ID.","required":true,"type":"string","x-example":"[IDENTITY_ID]","in":"path"}]}},"\/account\/jwt":{"post":{"summary":"Create JWT","operationId":"accountCreateJWT","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to create a JSON Web Token. You can use the resulting JWT to authenticate on behalf of the current user when working with the Appwrite server-side API and SDKs. The JWT secret is valid for 15 minutes from its creation and will be invalid if the user will logout in that time frame.","responses":{"201":{"description":"JWT","schema":{"$ref":"#\/definitions\/jwt"}}},"x-appwrite":{"method":"createJWT","weight":20,"cookies":false,"type":"","demo":"account\/create-j-w-t.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-jwt.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"List logs","operationId":"accountListLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get the list of latest security activity logs for the currently logged in user. Each log returns user IP address, location and date and time of log.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listLogs","weight":25,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update name","operationId":"accountUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateName","weight":27,"cookies":false,"type":"","demo":"account\/update-name.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-name.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"User name. Max length: 128 chars.","default":null,"x-example":"[NAME]"}},"required":["name"]}}]}},"\/account\/password":{"patch":{"summary":"Update password","operationId":"accountUpdatePassword","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePassword","weight":28,"cookies":false,"type":"","demo":"account\/update-password.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-password.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"password":{"type":"string","description":"New user password. Must be at least 8 chars.","default":null,"x-example":null},"oldPassword":{"type":"string","description":"Current user password. Must be at least 8 chars.","default":"","x-example":"password"}},"required":["password"]}}]}},"\/account\/phone":{"patch":{"summary":"Update phone","operationId":"accountUpdatePhone","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createPhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePhone","weight":30,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["phone","password"]}}]}},"\/account\/prefs":{"get":{"summary":"Get account preferences","operationId":"accountGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get the preferences as a key-value object for the currently logged in user.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":23,"cookies":false,"type":"","demo":"account\/get-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/prefs","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]},"patch":{"summary":"Update preferences","operationId":"accountUpdatePrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account preferences. The object you pass is stored as is, and replaces any previous value. The maximum allowed prefs size is 64kB and throws error if exceeded.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePrefs","weight":31,"cookies":false,"type":"","demo":"account\/update-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/prefs","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"prefs":{"type":"object","description":"Prefs key-value JSON object.","default":{},"x-example":"{}"}},"required":["prefs"]}}]}},"\/account\/recovery":{"post":{"summary":"Create password recovery","operationId":"accountCreateRecovery","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Sends the user an email with a temporary secret key for password reset. When the user clicks the confirmation link he is redirected back to your app password reset URL with the secret key and email address values attached to the URL query string. Use the query string params to submit a request to the [PUT \/account\/recovery](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateRecovery) endpoint to complete the process. The verification link sent to the user's email address is valid for 1 hour.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createRecovery","weight":36,"cookies":false,"type":"","demo":"account\/create-recovery.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-recovery.md","rate-limit":10,"rate-time":3600,"rate-key":["url:{url},email:{param-email}","ip:{ip}"],"scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"url":{"type":"string","description":"URL to redirect the user back to your app from the recovery email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":null,"x-example":"https:\/\/example.com"}},"required":["email","url"]}}]},"put":{"summary":"Create password recovery (confirmation)","operationId":"accountUpdateRecovery","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete the user account password reset. Both the **userId** and **secret** arguments will be passed as query parameters to the redirect URL you have provided when sending your request to the [POST \/account\/recovery](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createRecovery) endpoint.\n\nPlease note that in order to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) the only valid redirect URLs are the ones from domains you have set when adding your platforms in the console interface.","responses":{"200":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"updateRecovery","weight":37,"cookies":false,"type":"","demo":"account\/update-recovery.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-recovery.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid reset token.","default":null,"x-example":"[SECRET]"},"password":{"type":"string","description":"New user password. Must be between 8 and 256 chars.","default":null,"x-example":null}},"required":["userId","secret","password"]}}]}},"\/account\/sessions":{"get":{"summary":"List sessions","operationId":"accountListSessions","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get the list of active sessions across different devices for the currently logged in user.","responses":{"200":{"description":"Sessions List","schema":{"$ref":"#\/definitions\/sessionList"}}},"x-appwrite":{"method":"listSessions","weight":24,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/sessions","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]},"delete":{"summary":"Delete sessions","operationId":"accountDeleteSessions","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":35,"cookies":false,"type":"","demo":"account\/delete-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-sessions.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/account\/sessions\/anonymous":{"post":{"summary":"Create anonymous session","operationId":"accountCreateAnonymousSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to allow a new user to register an anonymous account in your project. This route will also create a new session for the user. To allow the new user to convert an anonymous account to a normal account, you need to update its [email and password](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateEmail) or create an [OAuth2 session](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#CreateOAuth2Session).","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"createAnonymousSession","weight":19,"cookies":false,"type":"","demo":"account\/create-anonymous-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-anonymous.md","rate-limit":50,"rate-time":3600,"rate-key":"ip:{ip}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/sessions\/email":{"post":{"summary":"Create email password session","operationId":"accountCreateEmailPasswordSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Allow the user to login into their account by providing a valid email and password combination. This route will create a new session for the user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"createEmailPasswordSession","weight":8,"cookies":false,"type":"","demo":"account\/create-email-password-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-email-password.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["email","password"]}}]}},"\/account\/sessions\/magic-url":{"put":{"summary":"Create session (deprecated)","operationId":"accountUpdateMagicURLSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to create a session from token. Provide the **userId** and **secret** parameters from the successful response of authentication flows initiated by token creation. For example, magic URL and phone login.","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateMagicURLSession","weight":16,"cookies":false,"type":"","demo":"account\/update-magic-u-r-l-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session.md","rate-limit":10,"rate-time":3600,"rate-key":"ip:{ip},userId:{param-userId}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/account\/sessions\/oauth2\/{provider}":{"get":{"summary":"Create OAuth2 session","operationId":"accountCreateOAuth2Session","consumes":["application\/json"],"produces":["text\/html"],"tags":["account"],"description":"Allow the user to login to their account using the OAuth2 provider of their choice. Each OAuth2 provider should be enabled from the Appwrite console first. Use the success and failure arguments to provide a redirect URL's back to your app when login is completed.\n\nIf there is already an active session, the new session will be attached to the logged-in account. If there are no active sessions, the server will attempt to look for a user with the same email address as the email received from the OAuth2 provider and attach the new session to the existing user. If no matching user is found - the server will create a new user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).\n","responses":{"301":{"description":"No content"}},"x-appwrite":{"method":"createOAuth2Session","weight":9,"cookies":false,"type":"webAuth","demo":"account\/create-o-auth2session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-oauth2.md","rate-limit":50,"rate-time":3600,"rate-key":"ip:{ip}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"provider","description":"OAuth2 Provider. Currently, supported providers are: amazon, apple, auth0, authentik, autodesk, bitbucket, bitly, box, dailymotion, discord, disqus, dropbox, etsy, facebook, github, gitlab, google, linkedin, microsoft, notion, oidc, okta, paypal, paypalSandbox, podio, salesforce, slack, spotify, stripe, tradeshift, tradeshiftBox, twitch, wordpress, yahoo, yammer, yandex, zoho, zoom.","required":true,"type":"string","x-example":"amazon","enum":["amazon","apple","auth0","authentik","autodesk","bitbucket","bitly","box","dailymotion","discord","disqus","dropbox","etsy","facebook","github","gitlab","google","linkedin","microsoft","notion","oidc","okta","paypal","paypalSandbox","podio","salesforce","slack","spotify","stripe","tradeshift","tradeshiftBox","twitch","wordpress","yahoo","yammer","yandex","zoho","zoom","mock"],"x-enum-name":"Provider","x-enum-keys":[],"in":"path"},{"name":"success","description":"URL to redirect back to your app after a successful login attempt. Only URLs from hostnames in your project's platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","required":false,"type":"string","format":"url","x-example":"https:\/\/example.com","default":"","in":"query"},{"name":"failure","description":"URL to redirect back to your app after a failed login attempt. Only URLs from hostnames in your project's platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","required":false,"type":"string","format":"url","x-example":"https:\/\/example.com","default":"","in":"query"},{"name":"token","description":"Include token credentials in the final redirect, useful for server-side integrations, or when cookies are not available.","required":false,"type":"boolean","x-example":false,"default":false,"in":"query"},{"name":"scopes","description":"A list of custom OAuth2 scopes. Check each provider internal docs for a list of supported scopes. Maximum of 100 scopes are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/sessions\/token":{"post":{"summary":"Create session","operationId":"accountCreateSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to create a session from token. Provide the **userId** and **secret** parameters from the successful response of authentication flows initiated by token creation. For example, magic URL and phone login.","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"createSession","weight":17,"cookies":false,"type":"","demo":"account\/create-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session.md","rate-limit":10,"rate-time":3600,"rate-key":"ip:{ip},userId:{param-userId}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Secret of a token generated by login methods. For example, the `createMagicURLToken` or `createPhoneToken` methods.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/account\/sessions\/{sessionId}":{"get":{"summary":"Get session","operationId":"accountGetSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to get a logged in user's session using a Session ID. Inputting 'current' will return the current session being used.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"getSession","weight":26,"cookies":false,"type":"","demo":"account\/get-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-session.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/sessions","offline-key":"{sessionId}","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to get the current device session.","required":true,"type":"string","x-example":"[SESSION_ID]","in":"path"}]},"patch":{"summary":"Update OAuth session (refresh tokens)","operationId":"accountUpdateSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Access tokens have limited lifespan and expire to mitigate security risks. If session was created using an OAuth provider, this route can be used to \"refresh\" the access token.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateSession","weight":34,"cookies":false,"type":"","demo":"account\/update-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-session.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to update the current device session.","required":true,"type":"string","x-example":"[SESSION_ID]","in":"path"}]},"delete":{"summary":"Delete session","operationId":"accountDeleteSession","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Logout the user. Use 'current' as the session ID to logout on this device, use a session ID to logout on another device. If you're looking to logout the user on all devices, use [Delete Sessions](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#deleteSessions) instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSession","weight":33,"cookies":false,"type":"","demo":"account\/delete-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-session.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to delete the current device session.","required":true,"type":"string","x-example":"[SESSION_ID]","in":"path"}]}},"\/account\/status":{"patch":{"summary":"Update status","operationId":"accountUpdateStatus","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateStatus","weight":32,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/account\/tokens\/magic-url":{"post":{"summary":"Create magic URL token","operationId":"accountCreateMagicURLToken","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Sends the user an email with a secret key for creating a session. If the provided user ID has not been registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [PUT \/account\/sessions\/magic-url](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateMagicURLSession) endpoint to complete the login process. The link sent to the user's email address is valid for 1 hour. If you are on a mobile device you can leave the URL parameter empty, so that the login completion will be handled by your Appwrite instance by default.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).\n","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createMagicURLToken","weight":15,"cookies":false,"type":"","demo":"account\/create-magic-u-r-l-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-token-magic-url.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"url":{"type":"string","description":"URL to redirect the user back to your app from the magic URL login. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":"","x-example":"https:\/\/example.com"},"securityPhrase":{"type":"boolean","description":"Toggle for security phrase. If enabled, email will be send with a randomly generated phrase and the phrase will also be included in the response. Confirming phrases match increases the security of authentication flow.","default":false,"x-example":false}},"required":["userId","email"]}}]}},"\/account\/tokens\/phone":{"post":{"summary":"Create phone token","operationId":"accountCreatePhoneToken","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Sends the user an SMS with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [PUT \/account\/sessions\/phone](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updatePhoneSession) endpoint to complete the login process. The secret sent to the user's phone is valid for 15 minutes.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createPhoneToken","weight":18,"cookies":false,"type":"","demo":"account\/create-phone-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-token-phone.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},phone:{param-phone}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"}},"required":["userId","phone"]}}]}},"\/account\/verification":{"post":{"summary":"Create email verification","operationId":"accountCreateVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to send a verification message to your user email address to confirm they are the valid owners of that address. Both the **userId** and **secret** arguments will be passed as query parameters to the URL you have provided to be attached to the verification email. The provided URL should redirect the user back to your app and allow you to complete the verification process by verifying both the **userId** and **secret** parameters. Learn more about how to [complete the verification process](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateVerification). The verification link sent to the user's email address is valid for 7 days.\n\nPlease note that in order to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md), the only valid redirect URLs are the ones from domains you have set when adding your platforms in the console interface.\n","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createVerification","weight":38,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"url":{"type":"string","description":"URL to redirect the user back to your app from the verification email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":null,"x-example":"https:\/\/example.com"}},"required":["url"]}}]},"put":{"summary":"Create email verification (confirmation)","operationId":"accountUpdateVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete the user email verification process. Use both the **userId** and **secret** parameters that were attached to your app URL to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"updateVerification","weight":39,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/account\/verification\/phone":{"post":{"summary":"Create phone verification","operationId":"accountCreatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updatePhone) endpoint. Learn more about how to [complete the verification process](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createPhoneVerification","weight":40,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{userId}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]},"put":{"summary":"Create phone verification (confirmation)","operationId":"accountUpdatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"updatePhoneVerification","weight":41,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/avatars\/browsers\/{code}":{"get":{"summary":"Get browser icon","operationId":"avatarsGetBrowser","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"You can use this endpoint to show different browser icons to your users. The code argument receives the browser code as it appears in your user [GET \/account\/sessions](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#getSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getBrowser","weight":44,"cookies":false,"type":"location","demo":"avatars\/get-browser.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-browser.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Browser Code.","required":true,"type":"string","x-example":"aa","enum":["aa","an","ch","ci","cm","cr","ff","sf","mf","ps","oi","om","op","on"],"x-enum-name":"Browser","x-enum-keys":["Avant Browser","Android WebView Beta","Google Chrome","Google Chrome (iOS)","Google Chrome (Mobile)","Chromium","Mozilla Firefox","Safari","Mobile Safari","Microsoft Edge","Microsoft Edge (iOS)","Opera Mini","Opera","Opera (Next)"],"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"}]}},"\/avatars\/credit-cards\/{code}":{"get":{"summary":"Get credit card icon","operationId":"avatarsGetCreditCard","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"The credit card endpoint will return you the icon of the credit card provider you need. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getCreditCard","weight":43,"cookies":false,"type":"location","demo":"avatars\/get-credit-card.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-credit-card.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Credit Card Code. Possible values: amex, argencard, cabal, censosud, diners, discover, elo, hipercard, jcb, mastercard, naranja, targeta-shopping, union-china-pay, visa, mir, maestro.","required":true,"type":"string","x-example":"amex","enum":["amex","argencard","cabal","censosud","diners","discover","elo","hipercard","jcb","mastercard","naranja","targeta-shopping","union-china-pay","visa","mir","maestro"],"x-enum-name":"CreditCard","x-enum-keys":["American Express","Argencard","Cabal","Consosud","Diners Club","Discover","Elo","Hipercard","JCB","Mastercard","Naranja","Tarjeta Shopping","Union China Pay","Visa","MIR","Maestro"],"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"}]}},"\/avatars\/favicon":{"get":{"summary":"Get favicon","operationId":"avatarsGetFavicon","consumes":["application\/json"],"produces":["image\/*"],"tags":["avatars"],"description":"Use this endpoint to fetch the favorite icon (AKA favicon) of any remote website URL.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFavicon","weight":47,"cookies":false,"type":"location","demo":"avatars\/get-favicon.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-favicon.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"url","description":"Website URL which you want to fetch the favicon from.","required":true,"type":"string","format":"url","x-example":"https:\/\/example.com","in":"query"}]}},"\/avatars\/flags\/{code}":{"get":{"summary":"Get country flag","operationId":"avatarsGetFlag","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"You can use this endpoint to show different country flags icons to your users. The code argument receives the 2 letter country code. Use width, height and quality arguments to change the output settings. Country codes follow the [ISO 3166-1](https:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFlag","weight":45,"cookies":false,"type":"location","demo":"avatars\/get-flag.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-flag.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Country Code. ISO Alpha-2 country code format.","required":true,"type":"string","x-example":"af","enum":["af","ao","al","ad","ae","ar","am","ag","au","at","az","bi","be","bj","bf","bd","bg","bh","bs","ba","by","bz","bo","br","bb","bn","bt","bw","cf","ca","ch","cl","cn","ci","cm","cd","cg","co","km","cv","cr","cu","cy","cz","de","dj","dm","dk","do","dz","ec","eg","er","es","ee","et","fi","fj","fr","fm","ga","gb","ge","gh","gn","gm","gw","gq","gr","gd","gt","gy","hn","hr","ht","hu","id","in","ie","ir","iq","is","il","it","jm","jo","jp","kz","ke","kg","kh","ki","kn","kr","kw","la","lb","lr","ly","lc","li","lk","ls","lt","lu","lv","ma","mc","md","mg","mv","mx","mh","mk","ml","mt","mm","me","mn","mz","mr","mu","mw","my","na","ne","ng","ni","nl","no","np","nr","nz","om","pk","pa","pe","ph","pw","pg","pl","kp","pt","py","qa","ro","ru","rw","sa","sd","sn","sg","sb","sl","sv","sm","so","rs","ss","st","sr","sk","si","se","sz","sc","sy","td","tg","th","tj","tm","tl","to","tt","tn","tr","tv","tz","ug","ua","uy","us","uz","va","vc","ve","vn","vu","ws","ye","za","zm","zw"],"x-enum-name":"Flag","x-enum-keys":["Afghanistan","Angola","Albania","Andorra","United Arab Emirates","Argentina","Armenia","Antigua and Barbuda","Australia","Austria","Azerbaijan","Burundi","Belgium","Benin","Burkina Faso","Bangladesh","Bulgaria","Bahrain","Bahamas","Bosnia and Herzegovina","Belarus","Belize","Bolivia","Brazil","Barbados","Brunei Darussalam","Bhutan","Botswana","Central African Republic","Canada","Switzerland","Chile","China","C\u00f4te d'Ivoire","Cameroon","Democratic Republic of the Congo","Republic of the Congo","Colombia","Comoros","Cape Verde","Costa Rica","Cuba","Cyprus","Czech Republic","Germany","Djibouti","Dominica","Denmark","Dominican Republic","Algeria","Ecuador","Egypt","Eritrea","Spain","Estonia","Ethiopia","Finland","Fiji","France","Micronesia (Federated States of)","Gabon","United Kingdom","Georgia","Ghana","Guinea","Gambia","Guinea-Bissau","Equatorial Guinea","Greece","Grenada","Guatemala","Guyana","Honduras","Croatia","Haiti","Hungary","Indonesia","India","Ireland","Iran (Islamic Republic of)","Iraq","Iceland","Israel","Italy","Jamaica","Jordan","Japan","Kazakhstan","Kenya","Kyrgyzstan","Cambodia","Kiribati","Saint Kitts and Nevis","South Korea","Kuwait","Lao People's Democratic Republic","Lebanon","Liberia","Libya","Saint Lucia","Liechtenstein","Sri Lanka","Lesotho","Lithuania","Luxembourg","Latvia","Morocco","Monaco","Moldova","Madagascar","Maldives","Mexico","Marshall Islands","North Macedonia","Mali","Malta","Myanmar","Montenegro","Mongolia","Mozambique","Mauritania","Mauritius","Malawi","Malaysia","Namibia","Niger","Nigeria","Nicaragua","Netherlands","Norway","Nepal","Nauru","New Zealand","Oman","Pakistan","Panama","Peru","Philippines","Palau","Papua New Guinea","Poland","North Korea","Portugal","Paraguay","Qatar","Romania","Russia","Rwanda","Saudi Arabia","Sudan","Senegal","Singapore","Solomon Islands","Sierra Leone","El Salvador","San Marino","Somalia","Serbia","South Sudan","Sao Tome and Principe","Suriname","Slovakia","Slovenia","Sweden","Eswatini","Seychelles","Syria","Chad","Togo","Thailand","Tajikistan","Turkmenistan","Timor-Leste","Tonga","Trinidad and Tobago","Tunisia","Turkey","Tuvalu","Tanzania","Uganda","Ukraine","Uruguay","United States","Uzbekistan","Vatican City","Saint Vincent and the Grenadines","Venezuela","Vietnam","Vanuatu","Samoa","Yemen","South Africa","Zambia","Zimbabwe"],"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"}]}},"\/avatars\/image":{"get":{"summary":"Get image from URL","operationId":"avatarsGetImage","consumes":["application\/json"],"produces":["image\/*"],"tags":["avatars"],"description":"Use this endpoint to fetch a remote image URL and crop it to any image size you want. This endpoint is very useful if you need to crop and display remote images in your app or in case you want to make sure a 3rd party image is properly served using a TLS protocol.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getImage","weight":46,"cookies":false,"type":"location","demo":"avatars\/get-image.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-image.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"url","description":"Image URL which you want to crop.","required":true,"type":"string","format":"url","x-example":"https:\/\/example.com","in":"query"},{"name":"width","description":"Resize preview image width, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get user initials","operationId":"avatarsGetInitials","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getInitials","weight":49,"cookies":false,"type":"location","demo":"avatars\/get-initials.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-initials.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"name","description":"Full Name. When empty, current user name or email will be used. Max length: 128 chars.","required":false,"type":"string","x-example":"[NAME]","default":"","in":"query"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":500,"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":500,"in":"query"},{"name":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"type":"string","default":"","in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR code","operationId":"avatarsGetQR","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getQR","weight":48,"cookies":false,"type":"location","demo":"avatars\/get-q-r.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-qr.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"text","description":"Plain text to be converted to QR code image.","required":true,"type":"string","x-example":"[TEXT]","in":"query"},{"name":"size","description":"QR code size. Pass an integer between 1 to 1000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":1,"default":400,"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"type":"integer","format":"int32","x-example":0,"default":1,"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"type":"boolean","x-example":false,"default":false,"in":"query"}]}},"\/databases":{"get":{"summary":"List databases","operationId":"databasesList","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all databases from the current Appwrite project. You can use the search parameter to filter your results.","responses":{"200":{"description":"Databases List","schema":{"$ref":"#\/definitions\/databaseList"}}},"x-appwrite":{"method":"list","weight":54,"cookies":false,"type":"","demo":"databases\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create database","operationId":"databasesCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Database.\n","responses":{"201":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"create","weight":53,"cookies":false,"type":"","demo":"databases\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"databaseId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[DATABASE_ID]","x-global":true},"name":{"type":"string","description":"Database name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Is the database enabled? When set to 'disabled', users cannot access the database but Server SDKs with an API key can still read and write to the database. No data is lost when this is toggled.","default":true,"x-example":false}},"required":["databaseId","name"]}}]}},"\/databases\/{databaseId}":{"get":{"summary":"Get database","operationId":"databasesGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a database by its unique ID. This endpoint response returns a JSON object with the database metadata.","responses":{"200":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"get","weight":55,"cookies":false,"type":"","demo":"databases\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"}]},"put":{"summary":"Update database","operationId":"databasesUpdate","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a database by its unique ID.","responses":{"200":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"update","weight":57,"cookies":false,"type":"","demo":"databases\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Database name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Is database enabled? When set to 'disabled', users cannot access the database but Server SDKs with an API key can still read and write to the database. No data is lost when this is toggled.","default":true,"x-example":false}},"required":["name"]}}]},"delete":{"summary":"Delete database","operationId":"databasesDelete","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a database by its unique ID. Only API keys with with databases.write scope can delete a database.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":58,"cookies":false,"type":"","demo":"databases\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections":{"get":{"summary":"List collections","operationId":"databasesListCollections","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all collections that belong to the provided databaseId. You can use the search parameter to filter your results.","responses":{"200":{"description":"Collections List","schema":{"$ref":"#\/definitions\/collectionList"}}},"x-appwrite":{"method":"listCollections","weight":60,"cookies":false,"type":"","demo":"databases\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, documentSecurity","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create collection","operationId":"databasesCreateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Collection. Before using this route, you should create a new database resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"createCollection","weight":59,"cookies":false,"type":"","demo":"databases\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permissions strings. By default, no user is granted with any permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":false,"x-example":false},"enabled":{"type":"boolean","description":"Is collection enabled? When set to 'disabled', users cannot access the collection but Server SDKs with and API key can still read and write to the collection. No data is lost when this is toggled.","default":true,"x-example":false}},"required":["collectionId","name"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}":{"get":{"summary":"Get collection","operationId":"databasesGetCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a collection by its unique ID. This endpoint response returns a JSON object with the collection metadata.","responses":{"200":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"getCollection","weight":61,"cookies":false,"type":"","demo":"databases\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]},"put":{"summary":"Update collection","operationId":"databasesUpdateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a collection by its unique ID.","responses":{"200":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"updateCollection","weight":63,"cookies":false,"type":"","demo":"databases\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":false,"x-example":false},"enabled":{"type":"boolean","description":"Is collection enabled? When set to 'disabled', users cannot access the collection but Server SDKs with and API key can still read and write to the collection. No data is lost when this is toggled.","default":true,"x-example":false}},"required":["name"]}}]},"delete":{"summary":"Delete collection","operationId":"databasesDeleteCollection","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a collection by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteCollection","weight":64,"cookies":false,"type":"","demo":"databases\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes":{"get":{"summary":"List attributes","operationId":"databasesListAttributes","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Attributes List","schema":{"$ref":"#\/definitions\/attributeList"}}},"x-appwrite":{"method":"listAttributes","weight":75,"cookies":false,"type":"","demo":"databases\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: key, type, size, required, array, status, error","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create boolean attribute","operationId":"databasesCreateBooleanAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a boolean attribute.\n","responses":{"202":{"description":"AttributeBoolean","schema":{"$ref":"#\/definitions\/attributeBoolean"}}},"x-appwrite":{"method":"createBooleanAttribute","weight":72,"cookies":false,"type":"","demo":"databases\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":false},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean\/{key}":{"patch":{"summary":"Update boolean attribute","operationId":"databasesUpdateBooleanAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"","responses":{"200":{"description":"AttributeBoolean","schema":{"$ref":"#\/definitions\/attributeBoolean"}}},"x-appwrite":{"method":"updateBooleanAttribute","weight":84,"cookies":false,"type":"","demo":"databases\/update-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":false,"x-nullable":true}},"required":["required","default"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/datetime":{"post":{"summary":"Create datetime attribute","operationId":"databasesCreateDatetimeAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"AttributeDatetime","schema":{"$ref":"#\/definitions\/attributeDatetime"}}},"x-appwrite":{"method":"createDatetimeAttribute","weight":73,"cookies":false,"type":"","demo":"databases\/create-datetime-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-datetime-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for the attribute in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/datetime\/{key}":{"patch":{"summary":"Update dateTime attribute","operationId":"databasesUpdateDatetimeAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"","responses":{"200":{"description":"AttributeDatetime","schema":{"$ref":"#\/definitions\/attributeDatetime"}}},"x-appwrite":{"method":"updateDatetimeAttribute","weight":85,"cookies":false,"type":"","demo":"databases\/update-datetime-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-datetime-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null,"x-nullable":true}},"required":["required","default"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create email attribute","operationId":"databasesCreateEmailAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create an email attribute.\n","responses":{"202":{"description":"AttributeEmail","schema":{"$ref":"#\/definitions\/attributeEmail"}}},"x-appwrite":{"method":"createEmailAttribute","weight":66,"cookies":false,"type":"","demo":"databases\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"email@example.com"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/email\/{key}":{"patch":{"summary":"Update email attribute","operationId":"databasesUpdateEmailAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Update an email attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeEmail","schema":{"$ref":"#\/definitions\/attributeEmail"}}},"x-appwrite":{"method":"updateEmailAttribute","weight":78,"cookies":false,"type":"","demo":"databases\/update-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"email@example.com","x-nullable":true}},"required":["required","default"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create enum attribute","operationId":"databasesCreateEnumAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"AttributeEnum","schema":{"$ref":"#\/definitions\/attributeEnum"}}},"x-appwrite":{"method":"createEnumAttribute","weight":67,"cookies":false,"type":"","demo":"databases\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"elements":{"type":"array","description":"Array of elements in enumerated type. Uses length of longest element to determine size. Maximum of 100 elements are allowed, each 255 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","elements","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/enum\/{key}":{"patch":{"summary":"Update enum attribute","operationId":"databasesUpdateEnumAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Update an enum attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeEnum","schema":{"$ref":"#\/definitions\/attributeEnum"}}},"x-appwrite":{"method":"updateEnumAttribute","weight":79,"cookies":false,"type":"","demo":"databases\/update-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-enum-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"elements":{"type":"array","description":"Array of elements in enumerated type. Uses length of longest element to determine size. Maximum of 100 elements are allowed, each 255 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"[DEFAULT]","x-nullable":true}},"required":["elements","required","default"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create float attribute","operationId":"databasesCreateFloatAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeFloat","schema":{"$ref":"#\/definitions\/attributeFloat"}}},"x-appwrite":{"method":"createFloatAttribute","weight":71,"cookies":false,"type":"","demo":"databases\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"min":{"type":"number","description":"Minimum value to enforce on new documents","default":null,"x-example":null},"max":{"type":"number","description":"Maximum value to enforce on new documents","default":null,"x-example":null},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/float\/{key}":{"patch":{"summary":"Update float attribute","operationId":"databasesUpdateFloatAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Update a float attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeFloat","schema":{"$ref":"#\/definitions\/attributeFloat"}}},"x-appwrite":{"method":"updateFloatAttribute","weight":83,"cookies":false,"type":"","demo":"databases\/update-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"min":{"type":"number","description":"Minimum value to enforce on new documents","default":null,"x-example":null},"max":{"type":"number","description":"Maximum value to enforce on new documents","default":null,"x-example":null},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null,"x-nullable":true}},"required":["required","min","max","default"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create integer attribute","operationId":"databasesCreateIntegerAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeInteger","schema":{"$ref":"#\/definitions\/attributeInteger"}}},"x-appwrite":{"method":"createIntegerAttribute","weight":70,"cookies":false,"type":"","demo":"databases\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"min":{"type":"integer","description":"Minimum value to enforce on new documents","default":null,"x-example":null},"max":{"type":"integer","description":"Maximum value to enforce on new documents","default":null,"x-example":null},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/integer\/{key}":{"patch":{"summary":"Update integer attribute","operationId":"databasesUpdateIntegerAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Update an integer attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeInteger","schema":{"$ref":"#\/definitions\/attributeInteger"}}},"x-appwrite":{"method":"updateIntegerAttribute","weight":82,"cookies":false,"type":"","demo":"databases\/update-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"min":{"type":"integer","description":"Minimum value to enforce on new documents","default":null,"x-example":null},"max":{"type":"integer","description":"Maximum value to enforce on new documents","default":null,"x-example":null},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null,"x-nullable":true}},"required":["required","min","max","default"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP address attribute","operationId":"databasesCreateIpAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create IP address attribute.\n","responses":{"202":{"description":"AttributeIP","schema":{"$ref":"#\/definitions\/attributeIp"}}},"x-appwrite":{"method":"createIpAttribute","weight":68,"cookies":false,"type":"","demo":"databases\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/ip\/{key}":{"patch":{"summary":"Update IP address attribute","operationId":"databasesUpdateIpAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Update an ip attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeIP","schema":{"$ref":"#\/definitions\/attributeIp"}}},"x-appwrite":{"method":"updateIpAttribute","weight":80,"cookies":false,"type":"","demo":"databases\/update-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null,"x-nullable":true}},"required":["required","default"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/relationship":{"post":{"summary":"Create relationship attribute","operationId":"databasesCreateRelationshipAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create relationship attribute. [Learn more about relationship attributes](https:\/\/appwrite.io\/docs\/databases-relationships#relationship-attributes).\n","responses":{"202":{"description":"AttributeRelationship","schema":{"$ref":"#\/definitions\/attributeRelationship"}}},"x-appwrite":{"method":"createRelationshipAttribute","weight":74,"cookies":false,"type":"","demo":"databases\/create-relationship-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-relationship-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"relatedCollectionId":{"type":"string","description":"Related Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","default":null,"x-example":"[RELATED_COLLECTION_ID]"},"type":{"type":"string","description":"Relation type","default":null,"x-example":"oneToOne","enum":["oneToOne","manyToOne","manyToMany","oneToMany"],"x-enum-name":"RelationshipType","x-enum-keys":[]},"twoWay":{"type":"boolean","description":"Is Two Way?","default":false,"x-example":false},"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"twoWayKey":{"type":"string","description":"Two Way Attribute Key.","default":null,"x-example":null},"onDelete":{"type":"string","description":"Constraints option","default":"restrict","x-example":"cascade","enum":["cascade","restrict","setNull"],"x-enum-name":"RelationMutate","x-enum-keys":[]}},"required":["relatedCollectionId","type"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create string attribute","operationId":"databasesCreateStringAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a string attribute.\n","responses":{"202":{"description":"AttributeString","schema":{"$ref":"#\/definitions\/attributeString"}}},"x-appwrite":{"method":"createStringAttribute","weight":65,"cookies":false,"type":"","demo":"databases\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"size":{"type":"integer","description":"Attribute size for text attributes, in number of characters.","default":null,"x-example":1},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false},"encrypt":{"type":"boolean","description":"Toggle encryption for the attribute. Encryption enhances security by not storing any plain text values in the database. However, encrypted attributes cannot be queried.","default":false,"x-example":false}},"required":["key","size","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/string\/{key}":{"patch":{"summary":"Update string attribute","operationId":"databasesUpdateStringAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Update a string attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeString","schema":{"$ref":"#\/definitions\/attributeString"}}},"x-appwrite":{"method":"updateStringAttribute","weight":77,"cookies":false,"type":"","demo":"databases\/update-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"[DEFAULT]","x-nullable":true}},"required":["required","default"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL attribute","operationId":"databasesCreateUrlAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a URL attribute.\n","responses":{"202":{"description":"AttributeURL","schema":{"$ref":"#\/definitions\/attributeUrl"}}},"x-appwrite":{"method":"createUrlAttribute","weight":69,"cookies":false,"type":"","demo":"databases\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"https:\/\/example.com"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url\/{key}":{"patch":{"summary":"Update URL attribute","operationId":"databasesUpdateUrlAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Update an url attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeURL","schema":{"$ref":"#\/definitions\/attributeUrl"}}},"x-appwrite":{"method":"updateUrlAttribute","weight":81,"cookies":false,"type":"","demo":"databases\/update-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"https:\/\/example.com","x-nullable":true}},"required":["required","default"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get attribute","operationId":"databasesGetAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, or AttributeDatetime, or AttributeRelationship, or AttributeString","schema":{"x-oneOf":[{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeRelationship"},{"$ref":"#\/definitions\/attributeString"}]}}},"x-appwrite":{"method":"getAttribute","weight":76,"cookies":false,"type":"","demo":"databases\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"}]},"delete":{"summary":"Delete attribute","operationId":"databasesDeleteAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":87,"cookies":false,"type":"","demo":"databases\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/{key}\/relationship":{"patch":{"summary":"Update relationship attribute","operationId":"databasesUpdateRelationshipAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Update relationship attribute. [Learn more about relationship attributes](https:\/\/appwrite.io\/docs\/databases-relationships#relationship-attributes).\n","responses":{"200":{"description":"AttributeRelationship","schema":{"$ref":"#\/definitions\/attributeRelationship"}}},"x-appwrite":{"method":"updateRelationshipAttribute","weight":86,"cookies":false,"type":"","demo":"databases\/update-relationship-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-relationship-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"onDelete":{"type":"string","description":"Constraints option","default":null,"x-example":"cascade","enum":["cascade","restrict","setNull"],"x-enum-name":"RelationMutate","x-enum-keys":[]}}}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List documents","operationId":"databasesListDocuments","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","schema":{"$ref":"#\/definitions\/documentList"}}},"x-appwrite":{"method":"listDocuments","weight":93,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"post":{"summary":"Create document","operationId":"databasesCreateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"createDocument","weight":92,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","default":{},"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, only the current user is granted all permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get document","operationId":"databasesGetDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"getDocument","weight":94,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only method allowed is select.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"patch":{"summary":"Update document","operationId":"databasesUpdateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"updateDocument","weight":96,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","default":[],"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete document","operationId":"databasesDeleteDocument","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":97,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes":{"get":{"summary":"List indexes","operationId":"databasesListIndexes","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Indexes List","schema":{"$ref":"#\/definitions\/indexList"}}},"x-appwrite":{"method":"listIndexes","weight":89,"cookies":false,"type":"","demo":"databases\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: key, type, status, attributes, error","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"post":{"summary":"Create index","operationId":"databasesCreateIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"createIndex","weight":88,"cookies":false,"type":"","demo":"databases\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Index Key.","default":null,"x-example":null},"type":{"type":"string","description":"Index type.","default":null,"x-example":"key","enum":["key","fulltext","unique","spatial","array"],"x-enum-name":"IndexType","x-enum-keys":[]},"attributes":{"type":"array","description":"Array of attributes to index. Maximum of 100 attributes are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders. Maximum of 100 orders are allowed.","default":[],"x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get index","operationId":"databasesGetIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"getIndex","weight":90,"cookies":false,"type":"","demo":"databases\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Index Key.","required":true,"type":"string","in":"path"}]},"delete":{"summary":"Delete index","operationId":"databasesDeleteIndex","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":91,"cookies":false,"type":"","demo":"databases\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Index Key.","required":true,"type":"string","in":"path"}]}},"\/functions":{"get":{"summary":"List functions","operationId":"functionsList","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the project's functions. You can use the query params to filter your results.","responses":{"200":{"description":"Functions List","schema":{"$ref":"#\/definitions\/functionList"}}},"x-appwrite":{"method":"list","weight":253,"cookies":false,"type":"","demo":"functions\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-functions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, runtime, deployment, schedule, scheduleNext, schedulePrevious, timeout, entrypoint, commands, installationId","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create function","operationId":"functionsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function. You can pass a list of [permissions](https:\/\/appwrite.io\/docs\/permissions) to allow different project users or team with access to execute the function using the client API.","responses":{"201":{"description":"Function","schema":{"$ref":"#\/definitions\/function"}}},"x-appwrite":{"method":"create","weight":252,"cookies":false,"type":"","demo":"functions\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"functionId":{"type":"string","description":"Function ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[FUNCTION_ID]"},"name":{"type":"string","description":"Function name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"runtime":{"type":"string","description":"Execution runtime.","default":null,"x-example":"node-18.0","enum":["node-18.0","php-8.0","ruby-3.1","python-3.9"],"x-enum-name":null,"x-enum-keys":[]},"execute":{"type":"array","description":"An array of role strings with execution permissions. By default no user is granted with any execute permissions. [learn more about roles](https:\/\/appwrite.io\/docs\/permissions#permission-roles). Maximum of 100 roles are allowed, each 64 characters long.","default":[],"x-example":"[\"any\"]","items":{"type":"string"}},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","default":[],"x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","default":"","x-example":null},"timeout":{"type":"integer","description":"Function maximum execution time in seconds.","default":15,"x-example":1},"enabled":{"type":"boolean","description":"Is function enabled? When set to 'disabled', users cannot access the function but Server SDKs with and API key can still access the function. No data is lost when this is toggled.","default":true,"x-example":false},"logging":{"type":"boolean","description":"Whether executions will be logged. When set to false, executions will not be logged, but will reduce resource used by your Appwrite project.","default":true,"x-example":false},"entrypoint":{"type":"string","description":"Entrypoint File. This path is relative to the \"providerRootDirectory\".","default":"","x-example":"[ENTRYPOINT]"},"commands":{"type":"string","description":"Build Commands.","default":"","x-example":"[COMMANDS]"},"installationId":{"type":"string","description":"Appwrite Installation ID for VCS (Version Control System) deployment.","default":"","x-example":"[INSTALLATION_ID]"},"providerRepositoryId":{"type":"string","description":"Repository ID of the repo linked to the function.","default":"","x-example":"[PROVIDER_REPOSITORY_ID]"},"providerBranch":{"type":"string","description":"Production branch for the repo linked to the function.","default":"","x-example":"[PROVIDER_BRANCH]"},"providerSilentMode":{"type":"boolean","description":"Is the VCS (Version Control System) connection in silent mode for the repo linked to the function? In silent mode, comments will not be made on commits and pull requests.","default":false,"x-example":false},"providerRootDirectory":{"type":"string","description":"Path to function code in the linked repo.","default":"","x-example":"[PROVIDER_ROOT_DIRECTORY]"},"templateRepository":{"type":"string","description":"Repository name of the template.","default":"","x-example":"[TEMPLATE_REPOSITORY]"},"templateOwner":{"type":"string","description":"The name of the owner of the template.","default":"","x-example":"[TEMPLATE_OWNER]"},"templateRootDirectory":{"type":"string","description":"Path to function code in the template repo.","default":"","x-example":"[TEMPLATE_ROOT_DIRECTORY]"},"templateBranch":{"type":"string","description":"Production branch for the repo linked to the function template.","default":"","x-example":"[TEMPLATE_BRANCH]"}},"required":["functionId","name","runtime"]}}]}},"\/functions\/runtimes":{"get":{"summary":"List runtimes","operationId":"functionsListRuntimes","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all runtimes that are currently active on your instance.","responses":{"200":{"description":"Runtimes List","schema":{"$ref":"#\/definitions\/runtimeList"}}},"x-appwrite":{"method":"listRuntimes","weight":254,"cookies":false,"type":"","demo":"functions\/list-runtimes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-runtimes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/functions\/{functionId}":{"get":{"summary":"Get function","operationId":"functionsGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a function by its unique ID.","responses":{"200":{"description":"Function","schema":{"$ref":"#\/definitions\/function"}}},"x-appwrite":{"method":"get","weight":255,"cookies":false,"type":"","demo":"functions\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"}]},"put":{"summary":"Update function","operationId":"functionsUpdate","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Update function by its unique ID.","responses":{"200":{"description":"Function","schema":{"$ref":"#\/definitions\/function"}}},"x-appwrite":{"method":"update","weight":258,"cookies":false,"type":"","demo":"functions\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Function name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"runtime":{"type":"string","description":"Execution runtime.","default":"","x-example":"node-18.0","enum":["node-18.0","php-8.0","ruby-3.1","python-3.9"],"x-enum-name":null,"x-enum-keys":[]},"execute":{"type":"array","description":"An array of role strings with execution permissions. By default no user is granted with any execute permissions. [learn more about roles](https:\/\/appwrite.io\/docs\/permissions#permission-roles). Maximum of 100 roles are allowed, each 64 characters long.","default":[],"x-example":"[\"any\"]","items":{"type":"string"}},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","default":[],"x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","default":"","x-example":null},"timeout":{"type":"integer","description":"Maximum execution time in seconds.","default":15,"x-example":1},"enabled":{"type":"boolean","description":"Is function enabled? When set to 'disabled', users cannot access the function but Server SDKs with and API key can still access the function. No data is lost when this is toggled.","default":true,"x-example":false},"logging":{"type":"boolean","description":"Whether executions will be logged. When set to false, executions will not be logged, but will reduce resource used by your Appwrite project.","default":true,"x-example":false},"entrypoint":{"type":"string","description":"Entrypoint File. This path is relative to the \"providerRootDirectory\".","default":"","x-example":"[ENTRYPOINT]"},"commands":{"type":"string","description":"Build Commands.","default":"","x-example":"[COMMANDS]"},"installationId":{"type":"string","description":"Appwrite Installation ID for VCS (Version Controle System) deployment.","default":"","x-example":"[INSTALLATION_ID]"},"providerRepositoryId":{"type":"string","description":"Repository ID of the repo linked to the function","default":"","x-example":"[PROVIDER_REPOSITORY_ID]"},"providerBranch":{"type":"string","description":"Production branch for the repo linked to the function","default":"","x-example":"[PROVIDER_BRANCH]"},"providerSilentMode":{"type":"boolean","description":"Is the VCS (Version Control System) connection in silent mode for the repo linked to the function? In silent mode, comments will not be made on commits and pull requests.","default":false,"x-example":false},"providerRootDirectory":{"type":"string","description":"Path to function code in the linked repo.","default":"","x-example":"[PROVIDER_ROOT_DIRECTORY]"}},"required":["name"]}}]},"delete":{"summary":"Delete function","operationId":"functionsDelete","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"Delete a function by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":261,"cookies":false,"type":"","demo":"functions\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"}]}},"\/functions\/{functionId}\/deployments":{"get":{"summary":"List deployments","operationId":"functionsListDeployments","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the project's code deployments. You can use the query params to filter your results.","responses":{"200":{"description":"Deployments List","schema":{"$ref":"#\/definitions\/deploymentList"}}},"x-appwrite":{"method":"listDeployments","weight":263,"cookies":false,"type":"","demo":"functions\/list-deployments.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-deployments.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: size, buildId, activate, entrypoint, commands","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create deployment","operationId":"functionsCreateDeployment","consumes":["multipart\/form-data"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function code deployment. Use this endpoint to upload a new version of your code function. To execute your newly uploaded code, you'll need to update the function's deployment to use your new deployment UID.\n\nThis endpoint accepts a tar.gz file compressed with your code. Make sure to include any dependencies your code has within the compressed file. You can learn more about code packaging in the [Appwrite Cloud Functions tutorial](https:\/\/appwrite.io\/docs\/functions).\n\nUse the \"command\" param to set the entrypoint used to execute your code.","responses":{"202":{"description":"Deployment","schema":{"$ref":"#\/definitions\/deployment"}}},"x-appwrite":{"method":"createDeployment","weight":262,"cookies":false,"type":"","demo":"functions\/create-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":true,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"entrypoint","description":"Entrypoint File.","required":false,"type":"string","x-example":"[ENTRYPOINT]","in":"formData"},{"name":"commands","description":"Build Commands.","required":false,"type":"string","x-example":"[COMMANDS]","in":"formData"},{"name":"code","description":"Gzip file with your code package. When used with the Appwrite CLI, pass the path to your code directory, and the CLI will automatically package your code. Use a path that is within the current directory.","required":true,"type":"file","in":"formData"},{"name":"activate","description":"Automatically activate the deployment when it is finished building.","required":true,"type":"boolean","x-example":false,"in":"formData"}]}},"\/functions\/{functionId}\/deployments\/{deploymentId}":{"get":{"summary":"Get deployment","operationId":"functionsGetDeployment","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a code deployment by its unique ID.","responses":{"200":{"description":"Deployment","schema":{"$ref":"#\/definitions\/deployment"}}},"x-appwrite":{"method":"getDeployment","weight":264,"cookies":false,"type":"","demo":"functions\/get-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"type":"string","x-example":"[DEPLOYMENT_ID]","in":"path"}]},"patch":{"summary":"Update function deployment","operationId":"functionsUpdateDeployment","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Update the function code deployment ID using the unique function ID. Use this endpoint to switch the code deployment that should be executed by the execution endpoint.","responses":{"200":{"description":"Function","schema":{"$ref":"#\/definitions\/function"}}},"x-appwrite":{"method":"updateDeployment","weight":260,"cookies":false,"type":"","demo":"functions\/update-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-function-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"type":"string","x-example":"[DEPLOYMENT_ID]","in":"path"}]},"delete":{"summary":"Delete deployment","operationId":"functionsDeleteDeployment","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"Delete a code deployment by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDeployment","weight":265,"cookies":false,"type":"","demo":"functions\/delete-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"type":"string","x-example":"[DEPLOYMENT_ID]","in":"path"}]}},"\/functions\/{functionId}\/deployments\/{deploymentId}\/builds\/{buildId}":{"post":{"summary":"Create build","operationId":"functionsCreateBuild","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"Create a new build for an Appwrite Function deployment. This endpoint can be used to retry a failed build.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"createBuild","weight":266,"cookies":false,"type":"","demo":"functions\/create-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"type":"string","x-example":"[DEPLOYMENT_ID]","in":"path"},{"name":"buildId","description":"Build unique ID.","required":true,"type":"string","x-example":"[BUILD_ID]","in":"path"}]}},"\/functions\/{functionId}\/deployments\/{deploymentId}\/download":{"get":{"summary":"Download Deployment","operationId":"functionsDownloadDeployment","consumes":["application\/json"],"produces":["*\/*"],"tags":["functions"],"description":"Get a Deployment's contents by its unique ID. This endpoint supports range requests for partial or streaming file download.","responses":{"200":{"description":"File","schema":{"type":"file"}}},"x-appwrite":{"method":"downloadDeployment","weight":259,"cookies":false,"type":"location","demo":"functions\/download-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/download-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"type":"string","x-example":"[DEPLOYMENT_ID]","in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List executions","operationId":"functionsListExecutions","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","schema":{"$ref":"#\/definitions\/executionList"}}},"x-appwrite":{"method":"listExecutions","weight":268,"cookies":false,"type":"","demo":"functions\/list-executions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-executions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, responseStatusCode, duration","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create execution","operationId":"functionsCreateExecution","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","schema":{"$ref":"#\/definitions\/execution"}}},"x-appwrite":{"method":"createExecution","weight":267,"cookies":false,"type":"","demo":"functions\/create-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-execution.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"body":{"type":"string","description":"HTTP body of execution. Default value is empty string.","default":"","x-example":"[BODY]"},"async":{"type":"boolean","description":"Execute code in the background. Default value is false.","default":false,"x-example":false},"path":{"type":"string","description":"HTTP path of execution. Path can include query params. Default value is \/","default":"\/","x-example":"[PATH]"},"method":{"type":"string","description":"HTTP method of execution. Default value is GET.","default":"POST","x-example":"GET","enum":["GET","POST","PUT","PATCH","DELETE","OPTIONS"],"x-enum-name":null,"x-enum-keys":[]},"headers":{"type":"object","description":"HTTP headers of execution. Defaults to empty.","default":[],"x-example":"{}"}}}}]}},"\/functions\/{functionId}\/executions\/{executionId}":{"get":{"summary":"Get execution","operationId":"functionsGetExecution","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a function execution log by its unique ID.","responses":{"200":{"description":"Execution","schema":{"$ref":"#\/definitions\/execution"}}},"x-appwrite":{"method":"getExecution","weight":269,"cookies":false,"type":"","demo":"functions\/get-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-execution.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"executionId","description":"Execution ID.","required":true,"type":"string","x-example":"[EXECUTION_ID]","in":"path"}]}},"\/functions\/{functionId}\/variables":{"get":{"summary":"List variables","operationId":"functionsListVariables","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all variables of a specific function.","responses":{"200":{"description":"Variables List","schema":{"$ref":"#\/definitions\/variableList"}}},"x-appwrite":{"method":"listVariables","weight":271,"cookies":false,"type":"","demo":"functions\/list-variables.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-variables.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"}]},"post":{"summary":"Create variable","operationId":"functionsCreateVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function environment variable. These variables can be accessed in the function at runtime as environment variables.","responses":{"201":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"createVariable","weight":270,"cookies":false,"type":"","demo":"functions\/create-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","default":null,"x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","default":null,"x-example":"[VALUE]"}},"required":["key","value"]}}]}},"\/functions\/{functionId}\/variables\/{variableId}":{"get":{"summary":"Get variable","operationId":"functionsGetVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a variable by its unique ID.","responses":{"200":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"getVariable","weight":272,"cookies":false,"type":"","demo":"functions\/get-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"}]},"put":{"summary":"Update variable","operationId":"functionsUpdateVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Update variable by its unique ID.","responses":{"200":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"updateVariable","weight":273,"cookies":false,"type":"","demo":"functions\/update-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","default":null,"x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","default":null,"x-example":"[VALUE]"}},"required":["key"]}}]},"delete":{"summary":"Delete variable","operationId":"functionsDeleteVariable","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"Delete a variable by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteVariable","weight":274,"cookies":false,"type":"","demo":"functions\/delete-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"}]}},"\/graphql":{"post":{"summary":"GraphQL endpoint","operationId":"graphqlQuery","consumes":["application\/json"],"produces":["application\/json"],"tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","schema":{"$ref":"#\/definitions\/any"}}},"x-appwrite":{"method":"query","weight":289,"cookies":false,"type":"graphql","demo":"graphql\/query.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"query":{"type":"object","description":"The query or queries to execute.","default":{},"x-example":"{}"}},"required":["query"]}}]}},"\/graphql\/mutation":{"post":{"summary":"GraphQL endpoint","operationId":"graphqlMutation","consumes":["application\/json"],"produces":["application\/json"],"tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","schema":{"$ref":"#\/definitions\/any"}}},"x-appwrite":{"method":"mutation","weight":288,"cookies":false,"type":"graphql","demo":"graphql\/mutation.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"query":{"type":"object","description":"The query or queries to execute.","default":{},"x-example":"{}"}},"required":["query"]}}]}},"\/health":{"get":{"summary":"Get HTTP","operationId":"healthGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite HTTP server is up and responsive.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"get","weight":109,"cookies":false,"type":"","demo":"health\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/anti-virus":{"get":{"summary":"Get antivirus","operationId":"healthGetAntivirus","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite Antivirus server is up and connection is successful.","responses":{"200":{"description":"Health Antivirus","schema":{"$ref":"#\/definitions\/healthAntivirus"}}},"x-appwrite":{"method":"getAntivirus","weight":127,"cookies":false,"type":"","demo":"health\/get-antivirus.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-storage-anti-virus.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/cache":{"get":{"summary":"Get cache","operationId":"healthGetCache","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite in-memory cache servers are up and connection is successful.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"getCache","weight":112,"cookies":false,"type":"","demo":"health\/get-cache.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-cache.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/db":{"get":{"summary":"Get DB","operationId":"healthGetDB","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite database servers are up and connection is successful.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"getDB","weight":111,"cookies":false,"type":"","demo":"health\/get-d-b.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-db.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/pubsub":{"get":{"summary":"Get pubsub","operationId":"healthGetPubSub","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite pub-sub servers are up and connection is successful.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"getPubSub","weight":114,"cookies":false,"type":"","demo":"health\/get-pub-sub.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-pubsub.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/queue":{"get":{"summary":"Get queue","operationId":"healthGetQueue","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite queue messaging servers are up and connection is successful.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"getQueue","weight":113,"cookies":false,"type":"","demo":"health\/get-queue.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/queue\/builds":{"get":{"summary":"Get builds queue","operationId":"healthGetQueueBuilds","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of builds that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueBuilds","weight":119,"cookies":false,"type":"","demo":"health\/get-queue-builds.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-builds.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/certificates":{"get":{"summary":"Get certificates queue","operationId":"healthGetQueueCertificates","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of certificates that are waiting to be issued against [Letsencrypt](https:\/\/letsencrypt.org\/) in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueCertificates","weight":118,"cookies":false,"type":"","demo":"health\/get-queue-certificates.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-certificates.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/databases":{"get":{"summary":"Get databases queue","operationId":"healthGetQueueDatabases","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of database changes that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueDatabases","weight":120,"cookies":false,"type":"","demo":"health\/get-queue-databases.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-databases.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"name","description":"Queue name for which to check the queue size","required":false,"type":"string","x-example":"[NAME]","default":"database_db_main","in":"query"},{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/deletes":{"get":{"summary":"Get deletes queue","operationId":"healthGetQueueDeletes","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of background destructive changes that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueDeletes","weight":121,"cookies":false,"type":"","demo":"health\/get-queue-deletes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-deletes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/functions":{"get":{"summary":"Get functions queue","operationId":"healthGetQueueFunctions","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueFunctions","weight":125,"cookies":false,"type":"","demo":"health\/get-queue-functions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-functions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/logs":{"get":{"summary":"Get logs queue","operationId":"healthGetQueueLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of logs that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueLogs","weight":117,"cookies":false,"type":"","demo":"health\/get-queue-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/mails":{"get":{"summary":"Get mails queue","operationId":"healthGetQueueMails","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of mails that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueMails","weight":122,"cookies":false,"type":"","demo":"health\/get-queue-mails.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-mails.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/messaging":{"get":{"summary":"Get messaging queue","operationId":"healthGetQueueMessaging","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of messages that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueMessaging","weight":123,"cookies":false,"type":"","demo":"health\/get-queue-messaging.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-messaging.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/migrations":{"get":{"summary":"Get migrations queue","operationId":"healthGetQueueMigrations","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of migrations that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueMigrations","weight":124,"cookies":false,"type":"","demo":"health\/get-queue-migrations.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-migrations.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/webhooks":{"get":{"summary":"Get webhooks queue","operationId":"healthGetQueueWebhooks","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of webhooks that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueWebhooks","weight":116,"cookies":false,"type":"","demo":"health\/get-queue-webhooks.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-webhooks.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/storage\/local":{"get":{"summary":"Get local storage","operationId":"healthGetStorageLocal","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite local storage device is up and connection is successful.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"getStorageLocal","weight":126,"cookies":false,"type":"","demo":"health\/get-storage-local.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-storage-local.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/time":{"get":{"summary":"Get time","operationId":"healthGetTime","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite server time is synced with Google remote NTP server. We use this technology to smoothly handle leap seconds with no disruptive events. The [Network Time Protocol](https:\/\/en.wikipedia.org\/wiki\/Network_Time_Protocol) (NTP) is used by hundreds of millions of computers and devices to synchronize their clocks over the Internet. If your computer sets its own clock, it likely uses NTP.","responses":{"200":{"description":"Health Time","schema":{"$ref":"#\/definitions\/healthTime"}}},"x-appwrite":{"method":"getTime","weight":115,"cookies":false,"type":"","demo":"health\/get-time.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-time.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/locale":{"get":{"summary":"Get user locale","operationId":"localeGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"Get the current user location based on IP. Returns an object with user country code, country name, continent name, continent code, ip address and suggested currency. You can use the locale header to get the data in a supported language.\n\n([IP Geolocation by DB-IP](https:\/\/db-ip.com))","responses":{"200":{"description":"Locale","schema":{"$ref":"#\/definitions\/locale"}}},"x-appwrite":{"method":"get","weight":101,"cookies":false,"type":"","demo":"locale\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-locale.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/localed","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}]}},"\/locale\/codes":{"get":{"summary":"List Locale Codes","operationId":"localeListCodes","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all locale codes in [ISO 639-1](https:\/\/en.wikipedia.org\/wiki\/List_of_ISO_639-1_codes).","responses":{"200":{"description":"Locale codes list","schema":{"$ref":"#\/definitions\/localeCodeList"}}},"x-appwrite":{"method":"listCodes","weight":102,"cookies":false,"type":"","demo":"locale\/list-codes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-locale-codes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/localeCode","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}]}},"\/locale\/continents":{"get":{"summary":"List continents","operationId":"localeListContinents","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","schema":{"$ref":"#\/definitions\/continentList"}}},"x-appwrite":{"method":"listContinents","weight":106,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/continents","offline-key":"","offline-response-key":"code","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List countries","operationId":"localeListCountries","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountries","weight":103,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/countries","offline-key":"","offline-response-key":"code","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU countries","operationId":"localeListCountriesEU","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountriesEU","weight":104,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/countries\/eu","offline-key":"","offline-response-key":"code","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List countries phone codes","operationId":"localeListCountriesPhones","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","schema":{"$ref":"#\/definitions\/phoneList"}}},"x-appwrite":{"method":"listCountriesPhones","weight":105,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/countries\/phones","offline-key":"","offline-response-key":"countryCode","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List currencies","operationId":"localeListCurrencies","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","schema":{"$ref":"#\/definitions\/currencyList"}}},"x-appwrite":{"method":"listCurrencies","weight":107,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/currencies","offline-key":"","offline-response-key":"code","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List languages","operationId":"localeListLanguages","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","schema":{"$ref":"#\/definitions\/languageList"}}},"x-appwrite":{"method":"listLanguages","weight":108,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/languages","offline-key":"","offline-response-key":"code","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}]}},"\/messaging\/messages":{"get":{"summary":"List messages","operationId":"messagingListMessages","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Message list","schema":{"$ref":"#\/definitions\/messageList"}}},"x-appwrite":{"method":"listMessages","weight":346,"cookies":false,"type":"","demo":"messaging\/list-messages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-messages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: scheduledAt, deliveredAt, deliveredTotal, status, description, providerType","required":false,"type":"string","default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]}},"\/messaging\/messages\/email":{"post":{"summary":"Create an email.","operationId":"messagingCreateEmail","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Message","schema":{"$ref":"#\/definitions\/message"}}},"x-appwrite":{"method":"createEmail","weight":343,"cookies":false,"type":"","demo":"messaging\/create-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"messageId":{"type":"string","description":"Message ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[MESSAGE_ID]"},"subject":{"type":"string","description":"Email Subject.","default":null,"x-example":"[SUBJECT]"},"content":{"type":"string","description":"Email Content.","default":null,"x-example":"[CONTENT]"},"topics":{"type":"array","description":"List of Topic IDs.","default":[],"x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","default":[],"x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","default":[],"x-example":null,"items":{"type":"string"}},"cc":{"type":"array","description":"Array of target IDs to be added as CC.","default":[],"x-example":null,"items":{"type":"string"}},"bcc":{"type":"array","description":"Array of target IDs to be added as BCC.","default":[],"x-example":null,"items":{"type":"string"}},"description":{"type":"string","description":"Description for message.","default":"","x-example":"[DESCRIPTION]"},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","default":"draft","x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":null,"x-enum-keys":[]},"html":{"type":"boolean","description":"Is content of type HTML","default":false,"x-example":false},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","default":null,"x-example":null}},"required":["messageId","subject","content"]}}]}},"\/messaging\/messages\/email\/{messageId}":{"patch":{"summary":"Update an email.","operationId":"messagingUpdateEmail","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Message","schema":{"$ref":"#\/definitions\/message"}}},"x-appwrite":{"method":"updateEmail","weight":350,"cookies":false,"type":"","demo":"messaging\/update-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"type":"string","x-example":"[MESSAGE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"topics":{"type":"array","description":"List of Topic IDs.","default":null,"x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","default":null,"x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","default":null,"x-example":null,"items":{"type":"string"}},"subject":{"type":"string","description":"Email Subject.","default":null,"x-example":"[SUBJECT]"},"description":{"type":"string","description":"Description for Message.","default":null,"x-example":"[DESCRIPTION]"},"content":{"type":"string","description":"Email Content.","default":null,"x-example":"[CONTENT]"},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","default":"draft","x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":null,"x-enum-keys":[]},"html":{"type":"boolean","description":"Is content of type HTML","default":null,"x-example":false},"cc":{"type":"array","description":"Array of target IDs to be added as CC.","default":null,"x-example":null,"items":{"type":"string"}},"bcc":{"type":"array","description":"Array of target IDs to be added as BCC.","default":null,"x-example":null,"items":{"type":"string"}},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","default":null,"x-example":null}}}}]}},"\/messaging\/messages\/push":{"post":{"summary":"Create a push notification.","operationId":"messagingCreatePush","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Message","schema":{"$ref":"#\/definitions\/message"}}},"x-appwrite":{"method":"createPush","weight":345,"cookies":false,"type":"","demo":"messaging\/create-push.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-push-notification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"messageId":{"type":"string","description":"Message ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[MESSAGE_ID]"},"title":{"type":"string","description":"Title for push notification.","default":null,"x-example":"[TITLE]"},"body":{"type":"string","description":"Body for push notification.","default":null,"x-example":"[BODY]"},"topics":{"type":"array","description":"List of Topic IDs.","default":[],"x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","default":[],"x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","default":[],"x-example":null,"items":{"type":"string"}},"description":{"type":"string","description":"Description for Message.","default":"","x-example":"[DESCRIPTION]"},"data":{"type":"object","description":"Additional Data for push notification.","default":{},"x-example":"{}"},"action":{"type":"string","description":"Action for push notification.","default":"","x-example":"[ACTION]"},"icon":{"type":"string","description":"Icon for push notification. Available only for Android and Web Platform.","default":"","x-example":"[ICON]"},"sound":{"type":"string","description":"Sound for push notification. Available only for Android and IOS Platform.","default":"","x-example":"[SOUND]"},"color":{"type":"string","description":"Color for push notification. Available only for Android Platform.","default":"","x-example":"[COLOR]"},"tag":{"type":"string","description":"Tag for push notification. Available only for Android Platform.","default":"","x-example":"[TAG]"},"badge":{"type":"string","description":"Badge for push notification. Available only for IOS Platform.","default":"","x-example":"[BADGE]"},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","default":"draft","x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":null,"x-enum-keys":[]},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","default":null,"x-example":null}},"required":["messageId","title","body"]}}]}},"\/messaging\/messages\/push\/{messageId}":{"patch":{"summary":"Update a push notification.","operationId":"messagingUpdatePushNotification","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Message","schema":{"$ref":"#\/definitions\/message"}}},"x-appwrite":{"method":"updatePushNotification","weight":352,"cookies":false,"type":"","demo":"messaging\/update-push-notification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-push-notification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"type":"string","x-example":"[MESSAGE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"topics":{"type":"array","description":"List of Topic IDs.","default":null,"x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","default":null,"x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","default":null,"x-example":null,"items":{"type":"string"}},"description":{"type":"string","description":"Description for Message.","default":null,"x-example":"[DESCRIPTION]"},"title":{"type":"string","description":"Title for push notification.","default":null,"x-example":"[TITLE]"},"body":{"type":"string","description":"Body for push notification.","default":null,"x-example":"[BODY]"},"data":{"type":"object","description":"Additional Data for push notification.","default":{},"x-example":"{}"},"action":{"type":"string","description":"Action for push notification.","default":null,"x-example":"[ACTION]"},"icon":{"type":"string","description":"Icon for push notification. Available only for Android and Web platforms.","default":null,"x-example":"[ICON]"},"sound":{"type":"string","description":"Sound for push notification. Available only for Android and iOS platforms.","default":null,"x-example":"[SOUND]"},"color":{"type":"string","description":"Color for push notification. Available only for Android platforms.","default":null,"x-example":"[COLOR]"},"tag":{"type":"string","description":"Tag for push notification. Available only for Android platforms.","default":null,"x-example":"[TAG]"},"badge":{"type":"integer","description":"Badge for push notification. Available only for iOS platforms.","default":null,"x-example":null},"status":{"type":"string","description":"Message Status. Value must be either draft, cancelled, or processing.","default":null,"x-example":"draft","enum":["draft","cancelled","processing"],"x-enum-name":null,"x-enum-keys":[]},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","default":null,"x-example":null}}}}]}},"\/messaging\/messages\/sms":{"post":{"summary":"Create an SMS.","operationId":"messagingCreateSMS","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Message","schema":{"$ref":"#\/definitions\/message"}}},"x-appwrite":{"method":"createSMS","weight":344,"cookies":false,"type":"","demo":"messaging\/create-s-m-s.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-sms.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"messageId":{"type":"string","description":"Message ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[MESSAGE_ID]"},"content":{"type":"string","description":"SMS Content.","default":null,"x-example":"[CONTENT]"},"topics":{"type":"array","description":"List of Topic IDs.","default":[],"x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","default":[],"x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","default":[],"x-example":null,"items":{"type":"string"}},"description":{"type":"string","description":"Description for Message.","default":"","x-example":"[DESCRIPTION]"},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","default":"draft","x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":null,"x-enum-keys":[]},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","default":null,"x-example":null}},"required":["messageId","content"]}}]}},"\/messaging\/messages\/sms\/{messageId}":{"patch":{"summary":"Update an SMS.","operationId":"messagingUpdateSMS","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Message","schema":{"$ref":"#\/definitions\/message"}}},"x-appwrite":{"method":"updateSMS","weight":351,"cookies":false,"type":"","demo":"messaging\/update-s-m-s.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"type":"string","x-example":"[MESSAGE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"topics":{"type":"array","description":"List of Topic IDs.","default":null,"x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","default":null,"x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","default":null,"x-example":null,"items":{"type":"string"}},"description":{"type":"string","description":"Description for Message.","default":null,"x-example":"[DESCRIPTION]"},"content":{"type":"string","description":"Email Content.","default":null,"x-example":"[CONTENT]"},"status":{"type":"string","description":"Message Status. Value must be either draft or cancelled or processing.","default":null,"x-example":"draft","enum":["draft","cancelled","processing"],"x-enum-name":null,"x-enum-keys":[]},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","default":null,"x-example":null}}}}]}},"\/messaging\/messages\/{messageId}":{"get":{"summary":"Get a message","operationId":"messagingGetMessage","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Message","schema":{"$ref":"#\/definitions\/message"}}},"x-appwrite":{"method":"getMessage","weight":349,"cookies":false,"type":"","demo":"messaging\/get-message.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/get-message.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"type":"string","x-example":"[MESSAGE_ID]","in":"path"}]}},"\/messaging\/messages\/{messageId}\/logs":{"get":{"summary":"List message logs","operationId":"messagingListMessageLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listMessageLogs","weight":347,"cookies":false,"type":"","demo":"messaging\/list-message-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/messages\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"type":"string","x-example":"[MESSAGE_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/messaging\/messages\/{messageId}\/targets":{"get":{"summary":"List message targets","operationId":"messagingListTargets","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"List the targets associated with a message as set via the targets attribute.","responses":{"200":{"description":"Target list","schema":{"$ref":"#\/definitions\/targetList"}}},"x-appwrite":{"method":"listTargets","weight":348,"cookies":false,"type":"","demo":"messaging\/list-targets.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-message-targets.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"type":"string","x-example":"[MESSAGE_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, providerId, identifier, providerType","required":false,"type":"string","default":[],"in":"query"}]}},"\/messaging\/providers":{"get":{"summary":"List providers","operationId":"messagingListProviders","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider list","schema":{"$ref":"#\/definitions\/providerList"}}},"x-appwrite":{"method":"listProviders","weight":319,"cookies":false,"type":"","demo":"messaging\/list-providers.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-providers.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, provider, type, enabled","required":false,"type":"string","default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]}},"\/messaging\/providers\/apns":{"post":{"summary":"Create APNS provider","operationId":"messagingCreateAPNSProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createAPNSProvider","weight":318,"cookies":false,"type":"","demo":"messaging\/create-a-p-n-s-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-apns-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"authKey":{"type":"string","description":"APNS authentication key.","default":"","x-example":"[AUTH_KEY]"},"authKeyId":{"type":"string","description":"APNS authentication key ID.","default":"","x-example":"[AUTH_KEY_ID]"},"teamId":{"type":"string","description":"APNS team ID.","default":"","x-example":"[TEAM_ID]"},"bundleId":{"type":"string","description":"APNS bundle ID.","default":"","x-example":"[BUNDLE_ID]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name"]}}]}},"\/messaging\/providers\/apns\/{providerId}":{"patch":{"summary":"Update APNS provider","operationId":"messagingUpdateAPNSProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateAPNSProvider","weight":330,"cookies":false,"type":"","demo":"messaging\/update-a-p-n-s-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-apns-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"authKey":{"type":"string","description":"APNS authentication key.","default":"","x-example":"[AUTH_KEY]"},"authKeyId":{"type":"string","description":"APNS authentication key ID.","default":"","x-example":"[AUTH_KEY_ID]"},"teamId":{"type":"string","description":"APNS team ID.","default":"","x-example":"[TEAM_ID]"},"bundleId":{"type":"string","description":"APNS bundle ID.","default":"","x-example":"[BUNDLE_ID]"}}}}]}},"\/messaging\/providers\/fcm":{"post":{"summary":"Create FCM provider","operationId":"messagingCreateFCMProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createFCMProvider","weight":317,"cookies":false,"type":"","demo":"messaging\/create-f-c-m-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-fcm-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"serviceAccountJSON":{"type":"object","description":"FCM service account JSON.","default":{},"x-example":"{}"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name"]}}]}},"\/messaging\/providers\/fcm\/{providerId}":{"patch":{"summary":"Update FCM provider","operationId":"messagingUpdateFCMProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateFCMProvider","weight":329,"cookies":false,"type":"","demo":"messaging\/update-f-c-m-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-fcm-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"serviceAccountJSON":{"type":"object","description":"FCM service account JSON.","default":{},"x-example":"{}"}}}}]}},"\/messaging\/providers\/mailgun":{"post":{"summary":"Create Mailgun provider","operationId":"messagingCreateMailgunProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createMailgunProvider","weight":310,"cookies":false,"type":"","demo":"messaging\/create-mailgun-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-mailgun-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"apiKey":{"type":"string","description":"Mailgun API Key.","default":"","x-example":"[API_KEY]"},"domain":{"type":"string","description":"Mailgun Domain.","default":"","x-example":"[DOMAIN]"},"isEuRegion":{"type":"boolean","description":"Set as EU region.","default":null,"x-example":false},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"fromName":{"type":"string","description":"Sender Name.","default":"","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","default":"","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the reply to field for the mail. Default value is sender name. Reply to name must have reply to email as well.","default":"","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the reply to field for the mail. Default value is sender email. Reply to email must have reply to name as well.","default":"","x-example":"[REPLY_TO_EMAIL]"}},"required":["providerId","name"]}}]}},"\/messaging\/providers\/mailgun\/{providerId}":{"patch":{"summary":"Update Mailgun provider","operationId":"messagingUpdateMailgunProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateMailgunProvider","weight":322,"cookies":false,"type":"","demo":"messaging\/update-mailgun-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-mailgun-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"apiKey":{"type":"string","description":"Mailgun API Key.","default":"","x-example":"[API_KEY]"},"domain":{"type":"string","description":"Mailgun Domain.","default":"","x-example":"[DOMAIN]"},"isEuRegion":{"type":"boolean","description":"Set as EU region.","default":null,"x-example":false},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"fromName":{"type":"string","description":"Sender Name.","default":"","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","default":"","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the reply to field for the mail. Default value is sender name.","default":"","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the reply to field for the mail. Default value is sender email.","default":"","x-example":"[REPLY_TO_EMAIL]"}}}}]}},"\/messaging\/providers\/msg91":{"post":{"summary":"Create Msg91 provider","operationId":"messagingCreateMsg91Provider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createMsg91Provider","weight":312,"cookies":false,"type":"","demo":"messaging\/create-msg91provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-msg91-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":"","x-example":"+12065550100"},"senderId":{"type":"string","description":"Msg91 Sender ID.","default":"","x-example":"[SENDER_ID]"},"authKey":{"type":"string","description":"Msg91 Auth Key.","default":"","x-example":"[AUTH_KEY]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name"]}}]}},"\/messaging\/providers\/msg91\/{providerId}":{"patch":{"summary":"Update Msg91 provider","operationId":"messagingUpdateMsg91Provider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateMsg91Provider","weight":324,"cookies":false,"type":"","demo":"messaging\/update-msg91provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-msg91-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"senderId":{"type":"string","description":"Msg91 Sender ID.","default":"","x-example":"[SENDER_ID]"},"authKey":{"type":"string","description":"Msg91 Auth Key.","default":"","x-example":"[AUTH_KEY]"},"from":{"type":"string","description":"Sender number.","default":"","x-example":"[FROM]"}}}}]}},"\/messaging\/providers\/sendgrid":{"post":{"summary":"Create Sendgrid provider","operationId":"messagingCreateSendgridProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createSendgridProvider","weight":311,"cookies":false,"type":"","demo":"messaging\/create-sendgrid-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-sengrid-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"apiKey":{"type":"string","description":"Sendgrid API key.","default":"","x-example":"[API_KEY]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"fromName":{"type":"string","description":"Sender Name.","default":"","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","default":"","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the reply to field for the mail. Default value is sender name.","default":"","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the reply to field for the mail. Default value is sender email.","default":"","x-example":"[REPLY_TO_EMAIL]"}},"required":["providerId","name"]}}]}},"\/messaging\/providers\/sendgrid\/{providerId}":{"patch":{"summary":"Update Sendgrid provider","operationId":"messagingUpdateSendgridProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateSendgridProvider","weight":323,"cookies":false,"type":"","demo":"messaging\/update-sendgrid-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-sendgrid-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"apiKey":{"type":"string","description":"Sendgrid API key.","default":"","x-example":"[API_KEY]"},"fromName":{"type":"string","description":"Sender Name.","default":"","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","default":"","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the Reply To field for the mail. Default value is Sender Name.","default":"","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the Reply To field for the mail. Default value is Sender Email.","default":"","x-example":"[REPLY_TO_EMAIL]"}}}}]}},"\/messaging\/providers\/telesign":{"post":{"summary":"Create Telesign provider","operationId":"messagingCreateTelesignProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createTelesignProvider","weight":313,"cookies":false,"type":"","demo":"messaging\/create-telesign-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-telesign-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":"","x-example":"+12065550100"},"username":{"type":"string","description":"Telesign username.","default":"","x-example":"[USERNAME]"},"password":{"type":"string","description":"Telesign password.","default":"","x-example":"[PASSWORD]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name"]}}]}},"\/messaging\/providers\/telesign\/{providerId}":{"patch":{"summary":"Update Telesign provider","operationId":"messagingUpdateTelesignProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateTelesignProvider","weight":325,"cookies":false,"type":"","demo":"messaging\/update-telesign-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-telesign-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"username":{"type":"string","description":"Telesign username.","default":"","x-example":"[USERNAME]"},"password":{"type":"string","description":"Telesign password.","default":"","x-example":"[PASSWORD]"},"from":{"type":"string","description":"Sender number.","default":"","x-example":"[FROM]"}}}}]}},"\/messaging\/providers\/textmagic":{"post":{"summary":"Create Textmagic provider","operationId":"messagingCreateTextmagicProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createTextmagicProvider","weight":314,"cookies":false,"type":"","demo":"messaging\/create-textmagic-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-textmagic-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":"","x-example":"+12065550100"},"username":{"type":"string","description":"Textmagic username.","default":"","x-example":"[USERNAME]"},"apiKey":{"type":"string","description":"Textmagic apiKey.","default":"","x-example":"[API_KEY]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name"]}}]}},"\/messaging\/providers\/textmagic\/{providerId}":{"patch":{"summary":"Update Textmagic provider","operationId":"messagingUpdateTextmagicProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateTextmagicProvider","weight":326,"cookies":false,"type":"","demo":"messaging\/update-textmagic-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-textmagic-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"username":{"type":"string","description":"Textmagic username.","default":"","x-example":"[USERNAME]"},"apiKey":{"type":"string","description":"Textmagic apiKey.","default":"","x-example":"[API_KEY]"},"from":{"type":"string","description":"Sender number.","default":"","x-example":"[FROM]"}}}}]}},"\/messaging\/providers\/twilio":{"post":{"summary":"Create Twilio provider","operationId":"messagingCreateTwilioProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createTwilioProvider","weight":315,"cookies":false,"type":"","demo":"messaging\/create-twilio-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-twilio-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":"","x-example":"+12065550100"},"accountSid":{"type":"string","description":"Twilio account secret ID.","default":"","x-example":"[ACCOUNT_SID]"},"authToken":{"type":"string","description":"Twilio authentication token.","default":"","x-example":"[AUTH_TOKEN]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name"]}}]}},"\/messaging\/providers\/twilio\/{providerId}":{"patch":{"summary":"Update Twilio provider","operationId":"messagingUpdateTwilioProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateTwilioProvider","weight":327,"cookies":false,"type":"","demo":"messaging\/update-twilio-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-twilio-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"accountSid":{"type":"string","description":"Twilio account secret ID.","default":"","x-example":"[ACCOUNT_SID]"},"authToken":{"type":"string","description":"Twilio authentication token.","default":"","x-example":"[AUTH_TOKEN]"},"from":{"type":"string","description":"Sender number.","default":"","x-example":"[FROM]"}}}}]}},"\/messaging\/providers\/vonage":{"post":{"summary":"Create Vonage provider","operationId":"messagingCreateVonageProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createVonageProvider","weight":316,"cookies":false,"type":"","demo":"messaging\/create-vonage-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-vonage-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":"","x-example":"+12065550100"},"apiKey":{"type":"string","description":"Vonage API key.","default":"","x-example":"[API_KEY]"},"apiSecret":{"type":"string","description":"Vonage API secret.","default":"","x-example":"[API_SECRET]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name"]}}]}},"\/messaging\/providers\/vonage\/{providerId}":{"patch":{"summary":"Update Vonage provider","operationId":"messagingUpdateVonageProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateVonageProvider","weight":328,"cookies":false,"type":"","demo":"messaging\/update-vonage-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-vonage-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"apiKey":{"type":"string","description":"Vonage API key.","default":"","x-example":"[API_KEY]"},"apiSecret":{"type":"string","description":"Vonage API secret.","default":"","x-example":"[API_SECRET]"},"from":{"type":"string","description":"Sender number.","default":"","x-example":"[FROM]"}}}}]}},"\/messaging\/providers\/{providerId}":{"get":{"summary":"Get provider","operationId":"messagingGetProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"getProvider","weight":321,"cookies":false,"type":"","demo":"messaging\/get-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/get-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"}]},"delete":{"summary":"Delete provider","operationId":"messagingDeleteProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteProvider","weight":331,"cookies":false,"type":"","demo":"messaging\/delete-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"}]}},"\/messaging\/providers\/{providerId}\/logs":{"get":{"summary":"List provider logs","operationId":"messagingListProviderLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listProviderLogs","weight":320,"cookies":false,"type":"","demo":"messaging\/list-provider-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/providers\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/messaging\/subscribers\/{subscriberId}\/logs":{"get":{"summary":"List subscriber logs","operationId":"messagingListSubscriberLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listSubscriberLogs","weight":340,"cookies":false,"type":"","demo":"messaging\/list-subscriber-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/subscribers\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"subscriberId","description":"Subscriber ID.","required":true,"type":"string","x-example":"[SUBSCRIBER_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/messaging\/topics":{"get":{"summary":"List topics.","operationId":"messagingListTopics","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Topic list","schema":{"$ref":"#\/definitions\/topicList"}}},"x-appwrite":{"method":"listTopics","weight":333,"cookies":false,"type":"","demo":"messaging\/list-topics.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-topics.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, description, total","required":false,"type":"string","default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create a topic.","operationId":"messagingCreateTopic","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Topic","schema":{"$ref":"#\/definitions\/topic"}}},"x-appwrite":{"method":"createTopic","weight":332,"cookies":false,"type":"","demo":"messaging\/create-topic.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-topic.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"topicId":{"type":"string","description":"Topic ID. Choose a custom Topic ID or a new Topic ID.","default":null,"x-example":"[TOPIC_ID]"},"name":{"type":"string","description":"Topic Name.","default":null,"x-example":"[NAME]"},"description":{"type":"string","description":"Topic Description.","default":"","x-example":"[DESCRIPTION]"}},"required":["topicId","name"]}}]}},"\/messaging\/topics\/{topicId}":{"get":{"summary":"Get a topic.","operationId":"messagingGetTopic","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Topic","schema":{"$ref":"#\/definitions\/topic"}}},"x-appwrite":{"method":"getTopic","weight":335,"cookies":false,"type":"","demo":"messaging\/get-topic.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/get-topic.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID.","required":true,"type":"string","x-example":"[TOPIC_ID]","in":"path"}]},"patch":{"summary":"Update a topic.","operationId":"messagingUpdateTopic","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Topic","schema":{"$ref":"#\/definitions\/topic"}}},"x-appwrite":{"method":"updateTopic","weight":336,"cookies":false,"type":"","demo":"messaging\/update-topic.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-topic.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID.","required":true,"type":"string","x-example":"[TOPIC_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Topic Name.","default":"","x-example":"[NAME]"},"description":{"type":"string","description":"Topic Description.","default":"","x-example":"[DESCRIPTION]"}}}}]},"delete":{"summary":"Delete a topic.","operationId":"messagingDeleteTopic","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteTopic","weight":337,"cookies":false,"type":"","demo":"messaging\/delete-topic.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-topic.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID.","required":true,"type":"string","x-example":"[TOPIC_ID]","in":"path"}]}},"\/messaging\/topics\/{topicId}\/logs":{"get":{"summary":"List topic logs","operationId":"messagingListTopicLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listTopicLogs","weight":334,"cookies":false,"type":"","demo":"messaging\/list-topic-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/topics\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID.","required":true,"type":"string","x-example":"[TOPIC_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/messaging\/topics\/{topicId}\/subscribers":{"get":{"summary":"List subscribers.","operationId":"messagingListSubscribers","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Subscriber list","schema":{"$ref":"#\/definitions\/subscriberList"}}},"x-appwrite":{"method":"listSubscribers","weight":339,"cookies":false,"type":"","demo":"messaging\/list-subscribers.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-subscribers.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID subscribed to.","required":true,"type":"string","x-example":"[TOPIC_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, provider, type, enabled","required":false,"type":"string","default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create a subscriber.","operationId":"messagingCreateSubscriber","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Subscriber","schema":{"$ref":"#\/definitions\/subscriber"}}},"x-appwrite":{"method":"createSubscriber","weight":338,"cookies":false,"type":"","demo":"messaging\/create-subscriber.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-subscriber.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.write","platforms":["server","client","console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[],"Session":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID to subscribe to.","required":true,"type":"string","x-example":"[TOPIC_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"subscriberId":{"type":"string","description":"Subscriber ID. Choose a custom Subscriber ID or a new Subscriber ID.","default":null,"x-example":"[SUBSCRIBER_ID]"},"targetId":{"type":"string","description":"Target ID. The target ID to link to the specified Topic ID.","default":null,"x-example":"[TARGET_ID]"}},"required":["subscriberId","targetId"]}}]}},"\/messaging\/topics\/{topicId}\/subscribers\/{subscriberId}":{"get":{"summary":"Get a subscriber.","operationId":"messagingGetSubscriber","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Subscriber","schema":{"$ref":"#\/definitions\/subscriber"}}},"x-appwrite":{"method":"getSubscriber","weight":341,"cookies":false,"type":"","demo":"messaging\/get-subscriber.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/get-subscriber.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID subscribed to.","required":true,"type":"string","x-example":"[TOPIC_ID]","in":"path"},{"name":"subscriberId","description":"Subscriber ID.","required":true,"type":"string","x-example":"[SUBSCRIBER_ID]","in":"path"}]},"delete":{"summary":"Delete a subscriber.","operationId":"messagingDeleteSubscriber","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSubscriber","weight":342,"cookies":false,"type":"","demo":"messaging\/delete-subscriber.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-subscriber.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.write","platforms":["server","client","console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[],"Session":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID subscribed to.","required":true,"type":"string","x-example":"[TOPIC_ID]","in":"path"},{"name":"subscriberId","description":"Subscriber ID.","required":true,"type":"string","x-example":"[SUBSCRIBER_ID]","in":"path"}]}},"\/storage\/buckets":{"get":{"summary":"List buckets","operationId":"storageListBuckets","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a list of all the storage buckets. You can use the query params to filter your results.","responses":{"200":{"description":"Buckets List","schema":{"$ref":"#\/definitions\/bucketList"}}},"x-appwrite":{"method":"listBuckets","weight":176,"cookies":false,"type":"","demo":"storage\/list-buckets.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/list-buckets.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: enabled, name, fileSecurity, maximumFileSize, encryption, antivirus","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create bucket","operationId":"storageCreateBucket","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Create a new storage bucket.","responses":{"201":{"description":"Bucket","schema":{"$ref":"#\/definitions\/bucket"}}},"x-appwrite":{"method":"createBucket","weight":175,"cookies":false,"type":"","demo":"storage\/create-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"bucketId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, no user is granted with any permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":false,"x-example":false},"enabled":{"type":"boolean","description":"Is bucket enabled? When set to 'disabled', users cannot access the files in this bucket but Server SDKs with and API key can still access the bucket. No files are lost when this is toggled.","default":true,"x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB.","default":30000000,"x-example":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","default":[],"x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","default":"none","x-example":"none","enum":["none","gzip","zstd"],"x-enum-name":null,"x-enum-keys":[]},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","default":true,"x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","default":true,"x-example":false}},"required":["bucketId","name"]}}]}},"\/storage\/buckets\/{bucketId}":{"get":{"summary":"Get bucket","operationId":"storageGetBucket","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a storage bucket by its unique ID. This endpoint response returns a JSON object with the storage bucket metadata.","responses":{"200":{"description":"Bucket","schema":{"$ref":"#\/definitions\/bucket"}}},"x-appwrite":{"method":"getBucket","weight":177,"cookies":false,"type":"","demo":"storage\/get-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"bucketId","description":"Bucket unique ID.","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"}]},"put":{"summary":"Update bucket","operationId":"storageUpdateBucket","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Update a storage bucket by its unique ID.","responses":{"200":{"description":"Bucket","schema":{"$ref":"#\/definitions\/bucket"}}},"x-appwrite":{"method":"updateBucket","weight":178,"cookies":false,"type":"","demo":"storage\/update-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"bucketId","description":"Bucket unique ID.","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Bucket name","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":false,"x-example":false},"enabled":{"type":"boolean","description":"Is bucket enabled? When set to 'disabled', users cannot access the files in this bucket but Server SDKs with and API key can still access the bucket. No files are lost when this is toggled.","default":true,"x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB.","default":null,"x-example":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","default":[],"x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","default":"none","x-example":"none","enum":["none","gzip","zstd"],"x-enum-name":null,"x-enum-keys":[]},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","default":true,"x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","default":true,"x-example":false}},"required":["name"]}}]},"delete":{"summary":"Delete bucket","operationId":"storageDeleteBucket","consumes":["application\/json"],"produces":[],"tags":["storage"],"description":"Delete a storage bucket by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteBucket","weight":179,"cookies":false,"type":"","demo":"storage\/delete-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"bucketId","description":"Bucket unique ID.","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files":{"get":{"summary":"List files","operationId":"storageListFiles","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a list of all the user files. You can use the query params to filter your results.","responses":{"200":{"description":"Files List","schema":{"$ref":"#\/definitions\/fileList"}}},"x-appwrite":{"method":"listFiles","weight":181,"cookies":false,"type":"","demo":"storage\/list-files.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/list-files.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create file","operationId":"storageCreateFile","consumes":["multipart\/form-data"],"produces":["application\/json"],"tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"createFile","weight":180,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId},chunkId:{chunkId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","required":true,"x-upload-id":true,"type":"string","x-example":"[FILE_ID]","in":"formData"},{"name":"file","description":"Binary file. Appwrite SDKs provide helpers to handle file input. [Learn about file input](https:\/\/appwrite.io\/docs\/storage#file-input).","required":true,"type":"file","in":"formData"},{"name":"permissions","description":"An array of permission strings. By default, only the current user is granted all permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"x-example":"[\"read(\"any\")\"]","in":"formData"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get file","operationId":"storageGetFile","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"getFile","weight":182,"cookies":false,"type":"","demo":"storage\/get-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID.","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"}]},"put":{"summary":"Update file","operationId":"storageUpdateFile","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Update a file by its unique ID. Only users with write permissions have access to update this resource.","responses":{"200":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"updateFile","weight":186,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File unique ID.","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Name of the file","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission string. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","consumes":["application\/json"],"produces":[],"tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":187,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID.","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/download":{"get":{"summary":"Get file for download","operationId":"storageGetFileDownload","consumes":["application\/json"],"produces":["*\/*"],"tags":["storage"],"description":"Get a file content by its unique ID. The endpoint response return with a 'Content-Disposition: attachment' header that tells the browser to start downloading the file to user downloads directory.","responses":{"200":{"description":"File","schema":{"type":"file"}}},"x-appwrite":{"method":"getFileDownload","weight":184,"cookies":false,"type":"location","demo":"storage\/get-file-download.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-download.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID.","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/preview":{"get":{"summary":"Get file preview","operationId":"storageGetFilePreview","consumes":["application\/json"],"produces":["image\/*"],"tags":["storage"],"description":"Get a file preview image. Currently, this method supports preview for image files (jpg, png, and gif), other supported formats, like pdf, docs, slides, and spreadsheets, will return the file icon image. You can also pass query string arguments for cutting and resizing your preview image. Preview is supported only for image files smaller than 10MB.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFilePreview","weight":183,"cookies":false,"type":"location","demo":"storage\/get-file-preview.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-preview.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"},{"name":"width","description":"Resize preview image width, Pass an integer between 0 to 4000.","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 4000.","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"gravity","description":"Image crop gravity. Can be one of center,top-left,top,top-right,left,right,bottom-left,bottom,bottom-right","required":false,"type":"string","x-example":"center","enum":["center","top-left","top","top-right","left","right","bottom-left","bottom","bottom-right"],"x-enum-name":"ImageGravity","x-enum-keys":[],"default":"center","in":"query"},{"name":"quality","description":"Preview image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"borderWidth","description":"Preview image border in pixels. Pass an integer between 0 to 100. Defaults to 0.","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"borderColor","description":"Preview image border color. Use a valid HEX color, no # is needed for prefix.","required":false,"type":"string","default":"","in":"query"},{"name":"borderRadius","description":"Preview image border radius in pixels. Pass an integer between 0 to 4000.","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"opacity","description":"Preview image opacity. Only works with images having an alpha channel (like png). Pass a number between 0 to 1.","required":false,"type":"number","format":"float","x-example":0,"default":1,"in":"query"},{"name":"rotation","description":"Preview image rotation in degrees. Pass an integer between -360 and 360.","required":false,"type":"integer","format":"int32","x-example":-360,"default":0,"in":"query"},{"name":"background","description":"Preview image background color. Only works with transparent images (png). Use a valid HEX color, no # is needed for prefix.","required":false,"type":"string","default":"","in":"query"},{"name":"output","description":"Output format type (jpeg, jpg, png, gif and webp).","required":false,"type":"string","x-example":"jpg","enum":["jpg","jpeg","gif","png","webp"],"x-enum-name":"ImageFormat","x-enum-keys":[],"default":"","in":"query"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/view":{"get":{"summary":"Get file for view","operationId":"storageGetFileView","consumes":["application\/json"],"produces":["*\/*"],"tags":["storage"],"description":"Get a file content by its unique ID. This endpoint is similar to the download method but returns with no 'Content-Disposition: attachment' header.","responses":{"200":{"description":"File","schema":{"type":"file"}}},"x-appwrite":{"method":"getFileView","weight":185,"cookies":false,"type":"location","demo":"storage\/get-file-view.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-view.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID.","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"}]}},"\/teams":{"get":{"summary":"List teams","operationId":"teamsList","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get a list of all the teams in which the current user is a member. You can use the parameters to filter your results.","responses":{"200":{"description":"Teams List","schema":{"$ref":"#\/definitions\/teamList"}}},"x-appwrite":{"method":"list","weight":191,"cookies":false,"type":"","demo":"teams\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-teams.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create team","operationId":"teamsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"create","weight":190,"cookies":false,"type":"","demo":"teams\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/create-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"teamId":{"type":"string","description":"Team ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[TEAM_ID]"},"name":{"type":"string","description":"Team name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"roles":{"type":"array","description":"Array of strings. Use this param to set the roles in the team for the user who created it. The default role is **owner**. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","default":["owner"],"x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}]}},"\/teams\/{teamId}":{"get":{"summary":"Get team","operationId":"teamsGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"get","weight":192,"cookies":false,"type":"","demo":"teams\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams","offline-key":"{teamId}","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"}]},"put":{"summary":"Update name","operationId":"teamsUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Update the team's name by its unique ID.","responses":{"200":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"updateName","weight":194,"cookies":false,"type":"","demo":"teams\/update-name.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-name.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams","offline-key":"{teamId}","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"New team name. Max length: 128 chars.","default":null,"x-example":"[NAME]"}},"required":["name"]}}]},"delete":{"summary":"Delete team","operationId":"teamsDelete","consumes":["application\/json"],"produces":[],"tags":["teams"],"description":"Delete a team using its ID. Only team members with the owner role can delete the team.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":196,"cookies":false,"type":"","demo":"teams\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/delete-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"}]}},"\/teams\/{teamId}\/memberships":{"get":{"summary":"List team memberships","operationId":"teamsListMemberships","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"listMemberships","weight":198,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/memberships","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create team membership","operationId":"teamsCreateMembership","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Invite a new member to join your team. Provide an ID for existing users, or invite unregistered users using an email or phone number. If initiated from a Client SDK, Appwrite will send an email or sms with a link to join the team to the invited user, and an account will be created for them if one doesn't exist. If initiated from a Server SDK, the new member will be added automatically to the team.\n\nYou only need to provide one of a user ID, email, or phone number. Appwrite will prioritize accepting the user ID > email > phone number if you provide more than one of these parameters.\n\nUse the `url` parameter to redirect the user from the invitation email to your app. After the user is redirected, use the [Update Team Membership Status](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/teams#updateMembershipStatus) endpoint to allow the user to accept the invitation to the team. \n\nPlease note that to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) Appwrite will accept the only redirect URLs under the domains you have added as a platform on the Appwrite Console.\n","responses":{"201":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"createMembership","weight":197,"cookies":false,"type":"","demo":"teams\/create-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/create-team-membership.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"email":{"type":"string","description":"Email of the new team member.","default":"","x-example":"email@example.com"},"userId":{"type":"string","description":"ID of the user to be added to a team.","default":"","x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":"","x-example":"+12065550100"},"roles":{"type":"array","description":"Array of strings. Use this param to set the user roles in the team. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":"","x-example":"https:\/\/example.com"},"name":{"type":"string","description":"Name of the new team member. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["roles"]}}]}},"\/teams\/{teamId}\/memberships\/{membershipId}":{"get":{"summary":"Get team membership","operationId":"teamsGetMembership","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get a team member by the membership unique id. All team members have read access for this resource.","responses":{"200":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"getMembership","weight":199,"cookies":false,"type":"","demo":"teams\/get-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-member.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/memberships","offline-key":"{membershipId}","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"type":"string","x-example":"[MEMBERSHIP_ID]","in":"path"}]},"patch":{"summary":"Update membership","operationId":"teamsUpdateMembership","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Modify the roles of a team member. Only team members with the owner role have access to this endpoint. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions).\n","responses":{"200":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"updateMembership","weight":200,"cookies":false,"type":"","demo":"teams\/update-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"type":"string","x-example":"[MEMBERSHIP_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"roles":{"type":"array","description":"An array of strings. Use this param to set the user's roles in the team. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}}},"required":["roles"]}}]},"delete":{"summary":"Delete team membership","operationId":"teamsDeleteMembership","consumes":["application\/json"],"produces":[],"tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":202,"cookies":false,"type":"","demo":"teams\/delete-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/delete-team-membership.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"type":"string","x-example":"[MEMBERSHIP_ID]","in":"path"}]}},"\/teams\/{teamId}\/memberships\/{membershipId}\/status":{"patch":{"summary":"Update team membership status","operationId":"teamsUpdateMembershipStatus","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Use this endpoint to allow a user to accept an invitation to join a team after being redirected back to your app from the invitation email received by the user.\n\nIf the request is successful, a session for the user is automatically created.\n","responses":{"200":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"updateMembershipStatus","weight":201,"cookies":false,"type":"","demo":"teams\/update-membership-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"public","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"type":"string","x-example":"[MEMBERSHIP_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Secret key.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/teams\/{teamId}\/prefs":{"get":{"summary":"Get team preferences","operationId":"teamsGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get the team's shared preferences by its unique ID. If a preference doesn't need to be shared by all team members, prefer storing them in [user preferences](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#getPrefs).","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":193,"cookies":false,"type":"","demo":"teams\/get-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/prefs","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"}]},"put":{"summary":"Update preferences","operationId":"teamsUpdatePrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Update the team's preferences by its unique ID. The object you pass is stored as is and replaces any previous value. The maximum allowed prefs size is 64kB and throws an error if exceeded.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"updatePrefs","weight":195,"cookies":false,"type":"","demo":"teams\/update-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/prefs","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"prefs":{"type":"object","description":"Prefs key-value JSON object.","default":{},"x-example":"{}"}},"required":["prefs"]}}]}},"\/users":{"get":{"summary":"List users","operationId":"usersList","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get a list of all the project's users. You can use the query params to filter your results.","responses":{"200":{"description":"Users List","schema":{"$ref":"#\/definitions\/userList"}}},"x-appwrite":{"method":"list","weight":213,"cookies":false,"type":"","demo":"users\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-users.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, email, phone, status, passwordUpdate, registration, emailVerification, phoneVerification","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create user","operationId":"usersCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"create","weight":204,"cookies":false,"type":"","demo":"users\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"},"password":{"type":"string","description":"Plain text user password. Must be at least 8 chars.","default":"","x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId"]}}]}},"\/users\/argon2":{"post":{"summary":"Create user with Argon2 password","operationId":"usersCreateArgon2User","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Argon2](https:\/\/en.wikipedia.org\/wiki\/Argon2) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createArgon2User","weight":207,"cookies":false,"type":"","demo":"users\/create-argon2user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-argon2-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Argon2.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/bcrypt":{"post":{"summary":"Create user with bcrypt password","operationId":"usersCreateBcryptUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Bcrypt](https:\/\/en.wikipedia.org\/wiki\/Bcrypt) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createBcryptUser","weight":205,"cookies":false,"type":"","demo":"users\/create-bcrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-bcrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Bcrypt.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/identities":{"get":{"summary":"List Identities","operationId":"usersListIdentities","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get identities for all users.","responses":{"200":{"description":"Identities List","schema":{"$ref":"#\/definitions\/identityList"}}},"x-appwrite":{"method":"listIdentities","weight":221,"cookies":false,"type":"","demo":"users\/list-identities.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-identities.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, provider, providerUid, providerEmail, providerAccessTokenExpiry","required":false,"type":"string","default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]}},"\/users\/identities\/{identityId}":{"delete":{"summary":"Delete identity","operationId":"usersDeleteIdentity","consumes":["application\/json"],"produces":[],"tags":["users"],"description":"Delete an identity by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIdentity","weight":238,"cookies":false,"type":"","demo":"users\/delete-identity.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-identity.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"identityId","description":"Identity ID.","required":true,"type":"string","x-example":"[IDENTITY_ID]","in":"path"}]}},"\/users\/md5":{"post":{"summary":"Create user with MD5 password","operationId":"usersCreateMD5User","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [MD5](https:\/\/en.wikipedia.org\/wiki\/MD5) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createMD5User","weight":206,"cookies":false,"type":"","demo":"users\/create-m-d5user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-md5-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using MD5.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/phpass":{"post":{"summary":"Create user with PHPass password","operationId":"usersCreatePHPassUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [PHPass](https:\/\/www.openwall.com\/phpass\/) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createPHPassUser","weight":209,"cookies":false,"type":"","demo":"users\/create-p-h-pass-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-phpass-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or pass the string `ID.unique()`to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using PHPass.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/scrypt":{"post":{"summary":"Create user with Scrypt password","operationId":"usersCreateScryptUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt](https:\/\/github.com\/Tarsnap\/scrypt) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createScryptUser","weight":210,"cookies":false,"type":"","demo":"users\/create-scrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt.","default":null,"x-example":"password"},"passwordSalt":{"type":"string","description":"Optional salt used to hash password.","default":null,"x-example":"[PASSWORD_SALT]"},"passwordCpu":{"type":"integer","description":"Optional CPU cost used to hash password.","default":null,"x-example":null},"passwordMemory":{"type":"integer","description":"Optional memory cost used to hash password.","default":null,"x-example":null},"passwordParallel":{"type":"integer","description":"Optional parallelization cost used to hash password.","default":null,"x-example":null},"passwordLength":{"type":"integer","description":"Optional hash length used to hash password.","default":null,"x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordCpu","passwordMemory","passwordParallel","passwordLength"]}}]}},"\/users\/scrypt-modified":{"post":{"summary":"Create user with Scrypt modified password","operationId":"usersCreateScryptModifiedUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt Modified](https:\/\/gist.github.com\/Meldiron\/eecf84a0225eccb5a378d45bb27462cc) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createScryptModifiedUser","weight":211,"cookies":false,"type":"","demo":"users\/create-scrypt-modified-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-modified-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt Modified.","default":null,"x-example":"password"},"passwordSalt":{"type":"string","description":"Salt used to hash password.","default":null,"x-example":"[PASSWORD_SALT]"},"passwordSaltSeparator":{"type":"string","description":"Salt separator used to hash password.","default":null,"x-example":"[PASSWORD_SALT_SEPARATOR]"},"passwordSignerKey":{"type":"string","description":"Signer key used to hash password.","default":null,"x-example":"[PASSWORD_SIGNER_KEY]"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordSaltSeparator","passwordSignerKey"]}}]}},"\/users\/sha":{"post":{"summary":"Create user with SHA password","operationId":"usersCreateSHAUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [SHA](https:\/\/en.wikipedia.org\/wiki\/Secure_Hash_Algorithm) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createSHAUser","weight":208,"cookies":false,"type":"","demo":"users\/create-s-h-a-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-sha-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using SHA.","default":null,"x-example":"password"},"passwordVersion":{"type":"string","description":"Optional SHA version used to hash password. Allowed values are: 'sha1', 'sha224', 'sha256', 'sha384', 'sha512\/224', 'sha512\/256', 'sha512', 'sha3-224', 'sha3-256', 'sha3-384', 'sha3-512'","default":"","x-example":"sha1","enum":["sha1","sha224","sha256","sha384","sha512\/224","sha512\/256","sha512","sha3-224","sha3-256","sha3-384","sha3-512"],"x-enum-name":null,"x-enum-keys":[]},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/{userId}":{"get":{"summary":"Get user","operationId":"usersGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get a user by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"get","weight":214,"cookies":false,"type":"","demo":"users\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]},"delete":{"summary":"Delete user","operationId":"usersDelete","consumes":["application\/json"],"produces":[],"tags":["users"],"description":"Delete a user by its unique ID, thereby releasing it's ID. Since ID is released and can be reused, all user-related resources like documents or storage files should be deleted before user deletion. If you want to keep ID reserved, use the [updateStatus](https:\/\/appwrite.io\/docs\/server\/users#usersUpdateStatus) endpoint instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":236,"cookies":false,"type":"","demo":"users\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]}},"\/users\/{userId}\/email":{"patch":{"summary":"Update email","operationId":"usersUpdateEmail","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user email by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateEmail","weight":227,"cookies":false,"type":"","demo":"users\/update-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"}},"required":["email"]}}]}},"\/users\/{userId}\/labels":{"put":{"summary":"Update user labels","operationId":"usersUpdateLabels","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user labels by its unique ID. \n\nLabels can be used to grant access to resources. While teams are a way for user's to share access to a resource, labels can be defined by the developer to grant access without an invitation. See the [Permissions docs](https:\/\/appwrite.io\/docs\/permissions) for more info.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateLabels","weight":223,"cookies":false,"type":"","demo":"users\/update-labels.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-labels.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"labels":{"type":"array","description":"Array of user labels. Replaces the previous labels. Maximum of 100 labels are allowed, each up to 36 alphanumeric characters long.","default":null,"x-example":null,"items":{"type":"string"}}},"required":["labels"]}}]}},"\/users\/{userId}\/logs":{"get":{"summary":"List user logs","operationId":"usersListLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listLogs","weight":219,"cookies":false,"type":"","demo":"users\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/users\/{userId}\/memberships":{"get":{"summary":"List user memberships","operationId":"usersListMemberships","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user membership list by its unique ID.","responses":{"200":{"description":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"listMemberships","weight":218,"cookies":false,"type":"","demo":"users\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-memberships.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]}},"\/users\/{userId}\/name":{"patch":{"summary":"Update name","operationId":"usersUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user name by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateName","weight":225,"cookies":false,"type":"","demo":"users\/update-name.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-name.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"User name. Max length: 128 chars.","default":null,"x-example":"[NAME]"}},"required":["name"]}}]}},"\/users\/{userId}\/password":{"patch":{"summary":"Update password","operationId":"usersUpdatePassword","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user password by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePassword","weight":226,"cookies":false,"type":"","demo":"users\/update-password.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-password.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"password":{"type":"string","description":"New user password. Must be at least 8 chars.","default":null,"x-example":null}},"required":["password"]}}]}},"\/users\/{userId}\/phone":{"patch":{"summary":"Update phone","operationId":"usersUpdatePhone","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user phone by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePhone","weight":228,"cookies":false,"type":"","demo":"users\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"number":{"type":"string","description":"User phone number.","default":null,"x-example":"+12065550100"}},"required":["number"]}}]}},"\/users\/{userId}\/prefs":{"get":{"summary":"Get user preferences","operationId":"usersGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user preferences by its unique ID.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":215,"cookies":false,"type":"","demo":"users\/get-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]},"patch":{"summary":"Update user preferences","operationId":"usersUpdatePrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user preferences by its unique ID. The object you pass is stored as is, and replaces any previous value. The maximum allowed prefs size is 64kB and throws error if exceeded.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"updatePrefs","weight":230,"cookies":false,"type":"","demo":"users\/update-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"prefs":{"type":"object","description":"Prefs key-value JSON object.","default":{},"x-example":"{}"}},"required":["prefs"]}}]}},"\/users\/{userId}\/sessions":{"get":{"summary":"List user sessions","operationId":"usersListSessions","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user sessions list by its unique ID.","responses":{"200":{"description":"Sessions List","schema":{"$ref":"#\/definitions\/sessionList"}}},"x-appwrite":{"method":"listSessions","weight":217,"cookies":false,"type":"","demo":"users\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]},"post":{"summary":"Create session","operationId":"usersCreateSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Creates a session for a user. Returns an immediately usable session object.\n\nIf you want to generate a token for a custom authentication flow, use the [POST \/users\/{userId}\/tokens](https:\/\/appwrite.io\/docs\/server\/users#createToken) endpoint.","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"createSession","weight":232,"cookies":false,"type":"","demo":"users\/create-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-session.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]},"delete":{"summary":"Delete user sessions","operationId":"usersDeleteSessions","consumes":["application\/json"],"produces":[],"tags":["users"],"description":"Delete all user's sessions by using the user's unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":235,"cookies":false,"type":"","demo":"users\/delete-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]}},"\/users\/{userId}\/sessions\/{sessionId}":{"delete":{"summary":"Delete user session","operationId":"usersDeleteSession","consumes":["application\/json"],"produces":[],"tags":["users"],"description":"Delete a user sessions by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSession","weight":234,"cookies":false,"type":"","demo":"users\/delete-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-user-session.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"sessionId","description":"Session ID.","required":true,"type":"string","x-example":"[SESSION_ID]","in":"path"}]}},"\/users\/{userId}\/status":{"patch":{"summary":"Update user status","operationId":"usersUpdateStatus","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user status by its unique ID. Use this endpoint as an alternative to deleting a user if you want to keep user's ID reserved.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateStatus","weight":222,"cookies":false,"type":"","demo":"users\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"status":{"type":"boolean","description":"User Status. To activate the user pass `true` and to block the user pass `false`.","default":null,"x-example":false}},"required":["status"]}}]}},"\/users\/{userId}\/targets":{"get":{"summary":"List User Targets","operationId":"usersListTargets","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"","responses":{"200":{"description":"Target list","schema":{"$ref":"#\/definitions\/targetList"}}},"x-appwrite":{"method":"listTargets","weight":220,"cookies":false,"type":"","demo":"users\/list-targets.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-targets.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.read","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, email, phone, status, passwordUpdate, registration, emailVerification, phoneVerification","required":false,"type":"string","default":[],"in":"query"}]},"post":{"summary":"Create User Target","operationId":"usersCreateTarget","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"","responses":{"201":{"description":"Target","schema":{"$ref":"#\/definitions\/target"}}},"x-appwrite":{"method":"createTarget","weight":212,"cookies":false,"type":"","demo":"users\/create-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-target.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"targetId":{"type":"string","description":"Target ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[TARGET_ID]"},"providerType":{"type":"string","description":"The target provider type. Can be one of the following: `email`, `sms` or `push`.","default":null,"x-example":"email","enum":["email","sms","push"],"x-enum-name":null,"x-enum-keys":[]},"identifier":{"type":"string","description":"The target identifier (token, email, phone etc.)","default":null,"x-example":"[IDENTIFIER]"},"providerId":{"type":"string","description":"Provider ID. Message will be sent to this target from the specified provider ID. If no provider ID is set the first setup provider will be used.","default":"","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Target name. Max length: 128 chars. For example: My Awesome App Galaxy S23.","default":"","x-example":"[NAME]"}},"required":["targetId","providerType","identifier"]}}]}},"\/users\/{userId}\/targets\/{targetId}":{"get":{"summary":"Get User Target","operationId":"usersGetTarget","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"","responses":{"200":{"description":"Target","schema":{"$ref":"#\/definitions\/target"}}},"x-appwrite":{"method":"getTarget","weight":216,"cookies":false,"type":"","demo":"users\/get-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-target.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.read","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"targetId","description":"Target ID.","required":true,"type":"string","x-example":"[TARGET_ID]","in":"path"}]},"patch":{"summary":"Update User target","operationId":"usersUpdateTarget","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"","responses":{"200":{"description":"Target","schema":{"$ref":"#\/definitions\/target"}}},"x-appwrite":{"method":"updateTarget","weight":231,"cookies":false,"type":"","demo":"users\/update-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-target.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"targetId","description":"Target ID.","required":true,"type":"string","x-example":"[TARGET_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"identifier":{"type":"string","description":"The target identifier (token, email, phone etc.)","default":"","x-example":"[IDENTIFIER]"},"providerId":{"type":"string","description":"Provider ID. Message will be sent to this target from the specified provider ID. If no provider ID is set the first setup provider will be used.","default":"","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Target name. Max length: 128 chars. For example: My Awesome App Galaxy S23.","default":"","x-example":"[NAME]"}}}}]},"delete":{"summary":"Delete user target","operationId":"usersDeleteTarget","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteTarget","weight":237,"cookies":false,"type":"","demo":"users\/delete-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-target.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"targetId","description":"Target ID.","required":true,"type":"string","x-example":"[TARGET_ID]","in":"path"}]}},"\/users\/{userId}\/tokens":{"post":{"summary":"Create token","operationId":"usersCreateToken","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Returns a token with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [PUT \/account\/sessions\/custom](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateCustomSession) endpoint to complete the login process.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createToken","weight":233,"cookies":false,"type":"","demo":"users\/create-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-token.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"length":{"type":"integer","description":"Token length in characters. The default length is 6 characters","default":6,"x-example":4},"expire":{"type":"integer","description":"Token expiration period in seconds. The default expiration is 15 minutes.","default":900,"x-example":60}}}}]}},"\/users\/{userId}\/verification":{"patch":{"summary":"Update email verification","operationId":"usersUpdateEmailVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user email verification status by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateEmailVerification","weight":229,"cookies":false,"type":"","demo":"users\/update-email-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-email-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"emailVerification":{"type":"boolean","description":"User email verification status.","default":null,"x-example":false}},"required":["emailVerification"]}}]}},"\/users\/{userId}\/verification\/phone":{"patch":{"summary":"Update phone verification","operationId":"usersUpdatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user phone verification status by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePhoneVerification","weight":224,"cookies":false,"type":"","demo":"users\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"phoneVerification":{"type":"boolean","description":"User phone verification status.","default":null,"x-example":false}},"required":["phoneVerification"]}}]}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"project","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]},{"name":"proxy","description":"The Proxy Service allows you to configure actions for your domains beyond DNS configuration.","x-globalAttributes":[]},{"name":"graphql","description":"The GraphQL API allows you to query and mutate your Appwrite server using GraphQL.","x-globalAttributes":[]},{"name":"console","description":"The Console service allows you to interact with console relevant informations.","x-globalAttributes":[]},{"name":"migrations","description":"The Migrations service allows you to migrate third-party data to your Appwrite project.","x-globalAttributes":[]},{"name":"messaging","description":"The Messaging service allows you to send messages to any provider type (SMTP, push notification, SMS, etc.).","x-globalAttributes":[]}],"definitions":{"any":{"description":"Any","type":"object","additionalProperties":true},"documentList":{"description":"Documents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of documents documents that matched your query.","x-example":5,"format":"int32"},"documents":{"type":"array","description":"List of documents.","items":{"type":"object","$ref":"#\/definitions\/document"},"x-example":""}},"required":["total","documents"]},"collectionList":{"description":"Collections List","type":"object","properties":{"total":{"type":"integer","description":"Total number of collections documents that matched your query.","x-example":5,"format":"int32"},"collections":{"type":"array","description":"List of collections.","items":{"type":"object","$ref":"#\/definitions\/collection"},"x-example":""}},"required":["total","collections"]},"databaseList":{"description":"Databases List","type":"object","properties":{"total":{"type":"integer","description":"Total number of databases documents that matched your query.","x-example":5,"format":"int32"},"databases":{"type":"array","description":"List of databases.","items":{"type":"object","$ref":"#\/definitions\/database"},"x-example":""}},"required":["total","databases"]},"indexList":{"description":"Indexes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of indexes documents that matched your query.","x-example":5,"format":"int32"},"indexes":{"type":"array","description":"List of indexes.","items":{"type":"object","$ref":"#\/definitions\/index"},"x-example":""}},"required":["total","indexes"]},"userList":{"description":"Users List","type":"object","properties":{"total":{"type":"integer","description":"Total number of users documents that matched your query.","x-example":5,"format":"int32"},"users":{"type":"array","description":"List of users.","items":{"type":"object","$ref":"#\/definitions\/user"},"x-example":""}},"required":["total","users"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of sessions documents that matched your query.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"type":"object","$ref":"#\/definitions\/session"},"x-example":""}},"required":["total","sessions"]},"identityList":{"description":"Identities List","type":"object","properties":{"total":{"type":"integer","description":"Total number of identities documents that matched your query.","x-example":5,"format":"int32"},"identities":{"type":"array","description":"List of identities.","items":{"type":"object","$ref":"#\/definitions\/identity"},"x-example":""}},"required":["total","identities"]},"logList":{"description":"Logs List","type":"object","properties":{"total":{"type":"integer","description":"Total number of logs documents that matched your query.","x-example":5,"format":"int32"},"logs":{"type":"array","description":"List of logs.","items":{"type":"object","$ref":"#\/definitions\/log"},"x-example":""}},"required":["total","logs"]},"fileList":{"description":"Files List","type":"object","properties":{"total":{"type":"integer","description":"Total number of files documents that matched your query.","x-example":5,"format":"int32"},"files":{"type":"array","description":"List of files.","items":{"type":"object","$ref":"#\/definitions\/file"},"x-example":""}},"required":["total","files"]},"bucketList":{"description":"Buckets List","type":"object","properties":{"total":{"type":"integer","description":"Total number of buckets documents that matched your query.","x-example":5,"format":"int32"},"buckets":{"type":"array","description":"List of buckets.","items":{"type":"object","$ref":"#\/definitions\/bucket"},"x-example":""}},"required":["total","buckets"]},"teamList":{"description":"Teams List","type":"object","properties":{"total":{"type":"integer","description":"Total number of teams documents that matched your query.","x-example":5,"format":"int32"},"teams":{"type":"array","description":"List of teams.","items":{"type":"object","$ref":"#\/definitions\/team"},"x-example":""}},"required":["total","teams"]},"membershipList":{"description":"Memberships List","type":"object","properties":{"total":{"type":"integer","description":"Total number of memberships documents that matched your query.","x-example":5,"format":"int32"},"memberships":{"type":"array","description":"List of memberships.","items":{"type":"object","$ref":"#\/definitions\/membership"},"x-example":""}},"required":["total","memberships"]},"functionList":{"description":"Functions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of functions documents that matched your query.","x-example":5,"format":"int32"},"functions":{"type":"array","description":"List of functions.","items":{"type":"object","$ref":"#\/definitions\/function"},"x-example":""}},"required":["total","functions"]},"runtimeList":{"description":"Runtimes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of runtimes documents that matched your query.","x-example":5,"format":"int32"},"runtimes":{"type":"array","description":"List of runtimes.","items":{"type":"object","$ref":"#\/definitions\/runtime"},"x-example":""}},"required":["total","runtimes"]},"deploymentList":{"description":"Deployments List","type":"object","properties":{"total":{"type":"integer","description":"Total number of deployments documents that matched your query.","x-example":5,"format":"int32"},"deployments":{"type":"array","description":"List of deployments.","items":{"type":"object","$ref":"#\/definitions\/deployment"},"x-example":""}},"required":["total","deployments"]},"executionList":{"description":"Executions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of executions documents that matched your query.","x-example":5,"format":"int32"},"executions":{"type":"array","description":"List of executions.","items":{"type":"object","$ref":"#\/definitions\/execution"},"x-example":""}},"required":["total","executions"]},"countryList":{"description":"Countries List","type":"object","properties":{"total":{"type":"integer","description":"Total number of countries documents that matched your query.","x-example":5,"format":"int32"},"countries":{"type":"array","description":"List of countries.","items":{"type":"object","$ref":"#\/definitions\/country"},"x-example":""}},"required":["total","countries"]},"continentList":{"description":"Continents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of continents documents that matched your query.","x-example":5,"format":"int32"},"continents":{"type":"array","description":"List of continents.","items":{"type":"object","$ref":"#\/definitions\/continent"},"x-example":""}},"required":["total","continents"]},"languageList":{"description":"Languages List","type":"object","properties":{"total":{"type":"integer","description":"Total number of languages documents that matched your query.","x-example":5,"format":"int32"},"languages":{"type":"array","description":"List of languages.","items":{"type":"object","$ref":"#\/definitions\/language"},"x-example":""}},"required":["total","languages"]},"currencyList":{"description":"Currencies List","type":"object","properties":{"total":{"type":"integer","description":"Total number of currencies documents that matched your query.","x-example":5,"format":"int32"},"currencies":{"type":"array","description":"List of currencies.","items":{"type":"object","$ref":"#\/definitions\/currency"},"x-example":""}},"required":["total","currencies"]},"phoneList":{"description":"Phones List","type":"object","properties":{"total":{"type":"integer","description":"Total number of phones documents that matched your query.","x-example":5,"format":"int32"},"phones":{"type":"array","description":"List of phones.","items":{"type":"object","$ref":"#\/definitions\/phone"},"x-example":""}},"required":["total","phones"]},"variableList":{"description":"Variables List","type":"object","properties":{"total":{"type":"integer","description":"Total number of variables documents that matched your query.","x-example":5,"format":"int32"},"variables":{"type":"array","description":"List of variables.","items":{"type":"object","$ref":"#\/definitions\/variable"},"x-example":""}},"required":["total","variables"]},"localeCodeList":{"description":"Locale codes list","type":"object","properties":{"total":{"type":"integer","description":"Total number of localeCodes documents that matched your query.","x-example":5,"format":"int32"},"localeCodes":{"type":"array","description":"List of localeCodes.","items":{"type":"object","$ref":"#\/definitions\/localeCode"},"x-example":""}},"required":["total","localeCodes"]},"providerList":{"description":"Provider list","type":"object","properties":{"total":{"type":"integer","description":"Total number of providers documents that matched your query.","x-example":5,"format":"int32"},"providers":{"type":"array","description":"List of providers.","items":{"type":"object","$ref":"#\/definitions\/provider"},"x-example":""}},"required":["total","providers"]},"messageList":{"description":"Message list","type":"object","properties":{"total":{"type":"integer","description":"Total number of messages documents that matched your query.","x-example":5,"format":"int32"},"messages":{"type":"array","description":"List of messages.","items":{"type":"object","$ref":"#\/definitions\/message"},"x-example":""}},"required":["total","messages"]},"topicList":{"description":"Topic list","type":"object","properties":{"total":{"type":"integer","description":"Total number of topics documents that matched your query.","x-example":5,"format":"int32"},"topics":{"type":"array","description":"List of topics.","items":{"type":"object","$ref":"#\/definitions\/topic"},"x-example":""}},"required":["total","topics"]},"subscriberList":{"description":"Subscriber list","type":"object","properties":{"total":{"type":"integer","description":"Total number of subscribers documents that matched your query.","x-example":5,"format":"int32"},"subscribers":{"type":"array","description":"List of subscribers.","items":{"type":"object","$ref":"#\/definitions\/subscriber"},"x-example":""}},"required":["total","subscribers"]},"targetList":{"description":"Target list","type":"object","properties":{"total":{"type":"integer","description":"Total number of targets documents that matched your query.","x-example":5,"format":"int32"},"targets":{"type":"array","description":"List of targets.","items":{"type":"object","$ref":"#\/definitions\/target"},"x-example":""}},"required":["total","targets"]},"database":{"description":"Database","type":"object","properties":{"$id":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Database name.","x-example":"My Database"},"$createdAt":{"type":"string","description":"Database creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Database update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"enabled":{"type":"boolean","description":"If database is enabled. Can be 'enabled' or 'disabled'. When disabled, the database is inaccessible to users, but remains accessible to Server SDKs using API keys.","x-example":false}},"required":["$id","name","$createdAt","$updatedAt","enabled"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Collection creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Collection update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Collection permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled. Can be 'enabled' or 'disabled'. When disabled, the collection is inaccessible to users, but remains accessible to Server SDKs using API keys.","x-example":false},"documentSecurity":{"type":"boolean","description":"Whether document-level permissions are enabled. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":true},"attributes":{"type":"array","description":"Collection attributes.","items":{"x-anyOf":[{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeRelationship"},{"$ref":"#\/definitions\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"type":"object","$ref":"#\/definitions\/index"},"x-example":{}}},"required":["$id","$createdAt","$updatedAt","$permissions","databaseId","name","enabled","documentSecurity","attributes","indexes"]},"attributeList":{"description":"Attributes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of attributes in the given collection.","x-example":5,"format":"int32"},"attributes":{"type":"array","description":"List of attributes.","items":{"x-anyOf":[{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeRelationship"},{"$ref":"#\/definitions\/attributeString"}]},"x-example":""}},"required":["total","attributes"]},"attributeString":{"description":"AttributeString","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"fullName"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"size":{"type":"integer","description":"Attribute size.","x-example":128,"format":"int32"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"default","x-nullable":true}},"required":["key","type","status","error","required","size"]},"attributeInteger":{"description":"AttributeInteger","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"count"},"type":{"type":"string","description":"Attribute type.","x-example":"integer"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"min":{"type":"integer","description":"Minimum value to enforce for new documents.","x-example":1,"format":"int32","x-nullable":true},"max":{"type":"integer","description":"Maximum value to enforce for new documents.","x-example":10,"format":"int32","x-nullable":true},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":10,"format":"int32","x-nullable":true}},"required":["key","type","status","error","required"]},"attributeFloat":{"description":"AttributeFloat","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"percentageCompleted"},"type":{"type":"string","description":"Attribute type.","x-example":"double"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"min":{"type":"number","description":"Minimum value to enforce for new documents.","x-example":1.5,"format":"double","x-nullable":true},"max":{"type":"number","description":"Maximum value to enforce for new documents.","x-example":10.5,"format":"double","x-nullable":true},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":2.5,"format":"double","x-nullable":true}},"required":["key","type","status","error","required"]},"attributeBoolean":{"description":"AttributeBoolean","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"isEnabled"},"type":{"type":"string","description":"Attribute type.","x-example":"boolean"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":false,"x-nullable":true}},"required":["key","type","status","error","required"]},"attributeEmail":{"description":"AttributeEmail","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"userEmail"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"format":{"type":"string","description":"String format.","x-example":"email"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"default@example.com","x-nullable":true}},"required":["key","type","status","error","required","format"]},"attributeEnum":{"description":"AttributeEnum","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"status"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"elements":{"type":"array","description":"Array of elements in enumerated type.","items":{"type":"string"},"x-example":"element"},"format":{"type":"string","description":"String format.","x-example":"enum"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"element","x-nullable":true}},"required":["key","type","status","error","required","elements","format"]},"attributeIp":{"description":"AttributeIP","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"ipAddress"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"format":{"type":"string","description":"String format.","x-example":"ip"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"192.0.2.0","x-nullable":true}},"required":["key","type","status","error","required","format"]},"attributeUrl":{"description":"AttributeURL","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"githubUrl"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"format":{"type":"string","description":"String format.","x-example":"url"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"http:\/\/example.com","x-nullable":true}},"required":["key","type","status","error","required","format"]},"attributeDatetime":{"description":"AttributeDatetime","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"birthDay"},"type":{"type":"string","description":"Attribute type.","x-example":"datetime"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"format":{"type":"string","description":"ISO 8601 format.","x-example":"datetime"},"default":{"type":"string","description":"Default value for attribute when not provided. Only null is optional","x-example":"2020-10-15T06:38:00.000+00:00","x-nullable":true}},"required":["key","type","status","error","required","format"]},"attributeRelationship":{"description":"AttributeRelationship","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"fullName"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"relatedCollection":{"type":"string","description":"The ID of the related collection.","x-example":"collection"},"relationType":{"type":"string","description":"The type of the relationship.","x-example":"oneToOne|oneToMany|manyToOne|manyToMany"},"twoWay":{"type":"boolean","description":"Is the relationship two-way?","x-example":false},"twoWayKey":{"type":"string","description":"The key of the two-way relationship.","x-example":"string"},"onDelete":{"type":"string","description":"How deleting the parent document will propagate to child documents.","x-example":"restrict|cascade|setNull"},"side":{"type":"string","description":"Whether this is the parent or child side of the relationship","x-example":"parent|child"}},"required":["key","type","status","error","required","relatedCollection","relationType","twoWay","twoWayKey","onDelete","side"]},"index":{"description":"Index","type":"object","properties":{"key":{"type":"string","description":"Index Key.","x-example":"index1"},"type":{"type":"string","description":"Index type.","x-example":"primary"},"status":{"type":"string","description":"Index status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an index.","x-example":"string"},"attributes":{"type":"array","description":"Index attributes.","items":{"type":"string"},"x-example":[]},"orders":{"type":"array","description":"Index orders.","items":{"type":"string"},"x-example":[],"x-nullable":true}},"required":["key","type","status","error","attributes"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"user":{"description":"User","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"password":{"type":"string","description":"Hashed user password.","x-example":"$argon2id$v=19$m=2048,t=4,p=3$aUZjLnliVWRINmFNTWMudg$5S+x+7uA31xFnrHFT47yFwcJeaP0w92L\/4LdgrVRXxE","x-nullable":true},"hash":{"type":"string","description":"Password hashing algorithm.","x-example":"argon2","x-nullable":true},"hashOptions":{"type":"object","description":"Password hashing algorithm configuration.","x-example":{},"items":{"x-oneOf":[{"$ref":"#\/definitions\/algoArgon2"},{"$ref":"#\/definitions\/algoScrypt"},{"$ref":"#\/definitions\/algoScryptModified"},{"$ref":"#\/definitions\/algoBcrypt"},{"$ref":"#\/definitions\/algoPhpass"},{"$ref":"#\/definitions\/algoSha"},{"$ref":"#\/definitions\/algoMd5"}]},"x-nullable":true},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"labels":{"type":"array","description":"Labels for the user.","items":{"type":"string"},"x-example":["vip"]},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"type":"object","$ref":"#\/definitions\/preferences"}},"targets":{"type":"array","description":"A user-owned message receiver. A single user may have multiple e.g. emails, phones, and a browser. Each target is registered with a single provider.","items":{"type":"object","$ref":"#\/definitions\/target"},"x-example":[]},"accessedAt":{"type":"string","description":"Most recent access date in ISO 8601 format. This attribute is only updated again after 24 hours.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","$updatedAt","name","registration","status","labels","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs","targets","accessedAt"]},"algoMd5":{"description":"AlgoMD5","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"md5"}},"required":["type"]},"algoSha":{"description":"AlgoSHA","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"sha"}},"required":["type"]},"algoPhpass":{"description":"AlgoPHPass","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"phpass"}},"required":["type"]},"algoBcrypt":{"description":"AlgoBcrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"bcrypt"}},"required":["type"]},"algoScrypt":{"description":"AlgoScrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scrypt"},"costCpu":{"type":"integer","description":"CPU complexity of computed hash.","x-example":8,"format":"int32"},"costMemory":{"type":"integer","description":"Memory complexity of computed hash.","x-example":14,"format":"int32"},"costParallel":{"type":"integer","description":"Parallelization of computed hash.","x-example":1,"format":"int32"},"length":{"type":"integer","description":"Length used to compute hash.","x-example":64,"format":"int32"}},"required":["type","costCpu","costMemory","costParallel","length"]},"algoScryptModified":{"description":"AlgoScryptModified","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scryptMod"},"salt":{"type":"string","description":"Salt used to compute hash.","x-example":"UxLMreBr6tYyjQ=="},"saltSeparator":{"type":"string","description":"Separator used to compute hash.","x-example":"Bw=="},"signerKey":{"type":"string","description":"Key used to compute hash.","x-example":"XyEKE9RcTDeLEsL\/RjwPDBv\/RqDl8fb3gpYEOQaPihbxf1ZAtSOHCjuAAa7Q3oHpCYhXSN9tizHgVOwn6krflQ=="}},"required":["type","salt","saltSeparator","signerKey"]},"algoArgon2":{"description":"AlgoArgon2","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"argon2"},"memoryCost":{"type":"integer","description":"Memory used to compute hash.","x-example":65536,"format":"int32"},"timeCost":{"type":"integer","description":"Amount of time consumed to compute hash","x-example":4,"format":"int32"},"threads":{"type":"integer","description":"Number of threads used to compute hash.","x-example":3,"format":"int32"}},"required":["type","memoryCost","timeCost","threads"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true},"secret":{"type":"string","description":"Secret used to authenticate the user. Only included if the request was made with an API key","x-example":"5e5bb8c16897e"}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current","secret"]},"identity":{"description":"Identity","type":"object","properties":{"$id":{"type":"string","description":"Identity ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Identity creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Identity update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"provider":{"type":"string","description":"Identity Provider.","x-example":"email"},"providerUid":{"type":"string","description":"ID of the User in the Identity Provider.","x-example":"5e5bb8c16897e"},"providerEmail":{"type":"string","description":"Email of the User in the Identity Provider.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Identity Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Identity Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"}},"required":["$id","$createdAt","$updatedAt","userId","provider","providerUid","providerEmail","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"securityPhrase":{"type":"string","description":"Security phrase of a token. Empty if security phrase was not requested when creating a token. It includes randomly generated phrase which is also sent in the external resource such as email.","x-example":"Golden Fox"}},"required":["$id","$createdAt","userId","secret","expire","securityPhrase"]},"jwt":{"description":"JWT","type":"object","properties":{"jwt":{"type":"string","description":"JWT encoded string.","x-example":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c"}},"required":["jwt"]},"locale":{"description":"Locale","type":"object","properties":{"ip":{"type":"string","description":"User IP address.","x-example":"127.0.0.1"},"countryCode":{"type":"string","description":"Country code in [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) two-character format","x-example":"US"},"country":{"type":"string","description":"Country name. This field support localization.","x-example":"United States"},"continentCode":{"type":"string","description":"Continent code. A two character continent code \"AF\" for Africa, \"AN\" for Antarctica, \"AS\" for Asia, \"EU\" for Europe, \"NA\" for North America, \"OC\" for Oceania, and \"SA\" for South America.","x-example":"NA"},"continent":{"type":"string","description":"Continent name. This field support localization.","x-example":"North America"},"eu":{"type":"boolean","description":"True if country is part of the European Union.","x-example":false},"currency":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format","x-example":"USD"}},"required":["ip","countryCode","country","continentCode","continent","eu","currency"]},"localeCode":{"description":"LocaleCode","type":"object","properties":{"code":{"type":"string","description":"Locale codes in [ISO 639-1](https:\/\/en.wikipedia.org\/wiki\/List_of_ISO_639-1_codes)","x-example":"en-us"},"name":{"type":"string","description":"Locale name","x-example":"US"}},"required":["code","name"]},"file":{"description":"File","type":"object","properties":{"$id":{"type":"string","description":"File ID.","x-example":"5e5ea5c16897e"},"bucketId":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Bucket creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Bucket update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Bucket permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"fileSecurity":{"type":"boolean","description":"Whether file-level security is enabled. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":true},"name":{"type":"string","description":"Bucket name.","x-example":"Documents"},"enabled":{"type":"boolean","description":"Bucket enabled.","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size supported.","x-example":100,"format":"int32"},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions.","items":{"type":"string"},"x-example":["jpg","png"]},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Will be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd).","x-example":"gzip"},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$createdAt","$updatedAt","$permissions","fileSecurity","name","enabled","maximumFileSize","allowedFileExtensions","compression","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"},"prefs":{"type":"object","description":"Team preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"type":"object","$ref":"#\/definitions\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","total","prefs"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":["owner"]}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Function creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Function update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"users"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"enabled":{"type":"boolean","description":"Function enabled.","x-example":false},"live":{"type":"boolean","description":"Is the function deployed with the latest configuration? This is set to false if you've changed an environment variables, entrypoint, commands, or other settings that needs redeploy to be applied. When the value is false, redeploy the function to update it with the latest configuration.","x-example":false},"logging":{"type":"boolean","description":"Whether executions will be logged. When set to false, executions will not be logged, but will reduce resource used by your Appwrite project.","x-example":false},"runtime":{"type":"string","description":"Function execution runtime.","x-example":"python-3.8"},"deployment":{"type":"string","description":"Function's active deployment ID.","x-example":"5e5ea5c16897e"},"vars":{"type":"array","description":"Function variables.","items":{"type":"object","$ref":"#\/definitions\/variable"},"x-example":[]},"events":{"type":"array","description":"Function trigger events.","items":{"type":"string"},"x-example":"account.create"},"schedule":{"type":"string","description":"Function execution schedult in CRON format.","x-example":"5 4 * * *"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":300,"format":"int32"},"entrypoint":{"type":"string","description":"The entrypoint file used to execute the deployment.","x-example":"index.js"},"commands":{"type":"string","description":"The build command used to build the deployment.","x-example":"npm install"},"version":{"type":"string","description":"Version of Open Runtimes used for the function.","x-example":"v2"},"installationId":{"type":"string","description":"Function VCS (Version Control System) installation id.","x-example":"6m40at4ejk5h2u9s1hboo"},"providerRepositoryId":{"type":"string","description":"VCS (Version Control System) Repository ID","x-example":"appwrite"},"providerBranch":{"type":"string","description":"VCS (Version Control System) branch name","x-example":"main"},"providerRootDirectory":{"type":"string","description":"Path to function in VCS (Version Control System) repository","x-example":"functions\/helloWorld"},"providerSilentMode":{"type":"boolean","description":"Is VCS (Version Control System) connection is in silent mode? When in silence mode, no comments will be posted on the repository pull or merge requests","x-example":false}},"required":["$id","$createdAt","$updatedAt","execute","name","enabled","live","logging","runtime","deployment","vars","events","schedule","timeout","entrypoint","commands","version","installationId","providerRepositoryId","providerBranch","providerRootDirectory","providerSilentMode"]},"runtime":{"description":"Runtime","type":"object","properties":{"$id":{"type":"string","description":"Runtime ID.","x-example":"python-3.8"},"name":{"type":"string","description":"Runtime Name.","x-example":"Python"},"version":{"type":"string","description":"Runtime version.","x-example":"3.8"},"base":{"type":"string","description":"Base Docker image used to build the runtime.","x-example":"python:3.8-alpine"},"image":{"type":"string","description":"Image name of Docker Hub.","x-example":"appwrite\\\/runtime-for-python:3.8"},"logo":{"type":"string","description":"Name of the logo image.","x-example":"python.png"},"supports":{"type":"array","description":"List of supported architectures.","items":{"type":"string"},"x-example":"amd64"}},"required":["$id","name","version","base","image","logo","supports"]},"deployment":{"description":"Deployment","type":"object","properties":{"$id":{"type":"string","description":"Deployment ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Deployment creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Deployment update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"type":{"type":"string","description":"Type of deployment.","x-example":"vcs"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"index.js"},"size":{"type":"integer","description":"The code size in bytes.","x-example":128,"format":"int32"},"buildId":{"type":"string","description":"The current build ID.","x-example":"5e5ea5c16897e"},"activate":{"type":"boolean","description":"Whether the deployment should be automatically activated.","x-example":true},"status":{"type":"string","description":"The deployment status. Possible values are \"processing\", \"building\", \"waiting\", \"ready\", and \"failed\".","x-example":"ready"},"buildLogs":{"type":"string","description":"The build logs.","x-example":"Compiling source files..."},"buildTime":{"type":"integer","description":"The current build time in seconds.","x-example":128,"format":"int32"},"providerRepositoryName":{"type":"string","description":"The name of the vcs provider repository","x-example":"database"},"providerRepositoryOwner":{"type":"string","description":"The name of the vcs provider repository owner","x-example":"utopia"},"providerRepositoryUrl":{"type":"string","description":"The url of the vcs provider repository","x-example":"https:\/\/github.com\/vermakhushboo\/g4-node-function"},"providerBranch":{"type":"string","description":"The branch of the vcs repository","x-example":"0.7.x"},"providerCommitHash":{"type":"string","description":"The commit hash of the vcs commit","x-example":"7c3f25d"},"providerCommitAuthorUrl":{"type":"string","description":"The url of vcs commit author","x-example":"https:\/\/github.com\/vermakhushboo"},"providerCommitAuthor":{"type":"string","description":"The name of vcs commit author","x-example":"Khushboo Verma"},"providerCommitMessage":{"type":"string","description":"The commit message","x-example":"Update index.js"},"providerCommitUrl":{"type":"string","description":"The url of the vcs commit","x-example":"https:\/\/github.com\/vermakhushboo\/g4-node-function\/commit\/60c0416257a9cbcdd96b2d370c38d8f8d150ccfb"},"providerBranchUrl":{"type":"string","description":"The branch of the vcs repository","x-example":"https:\/\/github.com\/vermakhushboo\/appwrite\/tree\/0.7.x"}},"required":["$id","$createdAt","$updatedAt","type","resourceId","resourceType","entrypoint","size","buildId","activate","status","buildLogs","buildTime","providerRepositoryName","providerRepositoryOwner","providerRepositoryUrl","providerBranch","providerCommitHash","providerCommitAuthorUrl","providerCommitAuthor","providerCommitMessage","providerCommitUrl","providerBranchUrl"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"requestMethod":{"type":"string","description":"HTTP request method type.","x-example":"GET"},"requestPath":{"type":"string","description":"HTTP request path and query.","x-example":"\/articles?id=5"},"requestHeaders":{"type":"array","description":"HTTP response headers as a key-value object. This will return only whitelisted headers. All headers are returned if execution is created as synchronous.","items":{"type":"object","$ref":"#\/definitions\/headers"},"x-example":[{"Content-Type":"application\/json"}]},"responseStatusCode":{"type":"integer","description":"HTTP response status code.","x-example":200,"format":"int32"},"responseBody":{"type":"string","description":"HTTP response body. This will return empty unless execution is created as synchronous.","x-example":"Developers are awesome."},"responseHeaders":{"type":"array","description":"HTTP response headers as a key-value object. This will return only whitelisted headers. All headers are returned if execution is created as synchronous.","items":{"type":"object","$ref":"#\/definitions\/headers"},"x-example":[{"Content-Type":"application\/json"}]},"logs":{"type":"string","description":"Function logs. Includes the last 4,000 characters. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"errors":{"type":"string","description":"Function errors. Includes the last 4,000 characters. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"Function execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","requestMethod","requestPath","requestHeaders","responseStatusCode","responseBody","responseHeaders","logs","errors","duration"]},"variable":{"description":"Variable","type":"object","properties":{"$id":{"type":"string","description":"Variable ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"key":{"type":"string","description":"Variable key.","x-example":"API_KEY"},"value":{"type":"string","description":"Variable value.","x-example":"myPa$$word1"},"resourceType":{"type":"string","description":"Service to which the variable belongs. Possible values are \"project\", \"function\"","x-example":"function"},"resourceId":{"type":"string","description":"ID of resource to which the variable belongs. If resourceType is \"project\", it is empty. If resourceType is \"function\", it is ID of the function.","x-example":"myAwesomeFunction"}},"required":["$id","$createdAt","$updatedAt","key","value","resourceType","resourceId"]},"country":{"description":"Country","type":"object","properties":{"name":{"type":"string","description":"Country name.","x-example":"United States"},"code":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"}},"required":["name","code"]},"continent":{"description":"Continent","type":"object","properties":{"name":{"type":"string","description":"Continent name.","x-example":"Europe"},"code":{"type":"string","description":"Continent two letter code.","x-example":"EU"}},"required":["name","code"]},"language":{"description":"Language","type":"object","properties":{"name":{"type":"string","description":"Language name.","x-example":"Italian"},"code":{"type":"string","description":"Language two-character ISO 639-1 codes.","x-example":"it"},"nativeName":{"type":"string","description":"Language native name.","x-example":"Italiano"}},"required":["name","code","nativeName"]},"currency":{"description":"Currency","type":"object","properties":{"symbol":{"type":"string","description":"Currency symbol.","x-example":"$"},"name":{"type":"string","description":"Currency name.","x-example":"US dollar"},"symbolNative":{"type":"string","description":"Currency native symbol.","x-example":"$"},"decimalDigits":{"type":"integer","description":"Number of decimal digits.","x-example":2,"format":"int32"},"rounding":{"type":"number","description":"Currency digit rounding.","x-example":0,"format":"double"},"code":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format.","x-example":"USD"},"namePlural":{"type":"string","description":"Currency plural name","x-example":"US dollars"}},"required":["symbol","name","symbolNative","decimalDigits","rounding","code","namePlural"]},"phone":{"description":"Phone","type":"object","properties":{"code":{"type":"string","description":"Phone code.","x-example":"+1"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["code","countryCode","countryName"]},"healthAntivirus":{"description":"Health Antivirus","type":"object","properties":{"version":{"type":"string","description":"Antivirus version.","x-example":"1.0.0"},"status":{"type":"string","description":"Antivirus status. Possible values can are: `disabled`, `offline`, `online`","x-example":"online"}},"required":["version","status"]},"healthQueue":{"description":"Health Queue","type":"object","properties":{"size":{"type":"integer","description":"Amount of actions in the queue.","x-example":8,"format":"int32"}},"required":["size"]},"healthStatus":{"description":"Health Status","type":"object","properties":{"name":{"type":"string","description":"Name of the service.","x-example":"database"},"ping":{"type":"integer","description":"Duration in milliseconds how long the health check took.","x-example":128,"format":"int32"},"status":{"type":"string","description":"Service status. Possible values can are: `pass`, `fail`","x-example":"pass"}},"required":["name","ping","status"]},"healthTime":{"description":"Health Time","type":"object","properties":{"remoteTime":{"type":"integer","description":"Current unix timestamp on trustful remote server.","x-example":1639490751,"format":"int32"},"localTime":{"type":"integer","description":"Current unix timestamp of local server where Appwrite runs.","x-example":1639490844,"format":"int32"},"diff":{"type":"integer","description":"Difference of unix remote and local timestamps in milliseconds.","x-example":93,"format":"int32"}},"required":["remoteTime","localTime","diff"]},"headers":{"description":"Headers","type":"object","properties":{"name":{"type":"string","description":"Header name.","x-example":"Content-Type"},"value":{"type":"string","description":"Header value.","x-example":"application\/json"}},"required":["name","value"]},"provider":{"description":"Provider","type":"object","properties":{"$id":{"type":"string","description":"Provider ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Provider creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Provider update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"The name for the provider instance.","x-example":"Mailgun"},"provider":{"type":"string","description":"The name of the provider service.","x-example":"mailgun"},"enabled":{"type":"boolean","description":"Is provider enabled?","x-example":true},"type":{"type":"string","description":"Type of provider.","x-example":"sms"},"credentials":{"type":"object","additionalProperties":true,"description":"Provider credentials.","x-example":{"key":"123456789"}},"options":{"type":"object","additionalProperties":true,"description":"Provider options.","x-example":{"from":"sender-email@mydomain"}}},"required":["$id","$createdAt","$updatedAt","name","provider","enabled","type","credentials"]},"message":{"description":"Message","type":"object","properties":{"$id":{"type":"string","description":"Message ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Message creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Message update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerType":{"type":"string","description":"Message provider type.","x-example":"email"},"topics":{"type":"array","description":"Topic IDs set as recipients.","items":{"type":"string"},"x-example":["5e5ea5c16897e"]},"users":{"type":"array","description":"User IDs set as recipients.","items":{"type":"string"},"x-example":["5e5ea5c16897e"]},"targets":{"type":"array","description":"Target IDs set as recipients.","items":{"type":"string"},"x-example":["5e5ea5c16897e"]},"scheduledAt":{"type":"string","description":"The scheduled time for message.","x-example":"2020-10-15T06:38:00.000+00:00","x-nullable":true},"deliveredAt":{"type":"string","description":"The time when the message was delivered.","x-example":"2020-10-15T06:38:00.000+00:00","x-nullable":true},"deliveryErrors":{"type":"array","description":"Delivery errors if any.","items":{"type":"string"},"x-example":["Failed to send message to target 5e5ea5c16897e: Credentials not valid."],"x-nullable":true},"deliveredTotal":{"type":"integer","description":"Number of recipients the message was delivered to.","x-example":1,"format":"int32"},"data":{"type":"object","additionalProperties":true,"description":"Data of the message.","x-example":{"subject":"Welcome to Appwrite","content":"Hi there, welcome to Appwrite family."}},"status":{"type":"string","description":"Status of delivery.","x-example":"Message status can be one of the following: processing, sent, cancelled, failed."},"description":{"type":"string","description":"Message description.","x-example":"Welcome Email.","x-nullable":true}},"required":["$id","$createdAt","$updatedAt","providerType","topics","users","targets","deliveredTotal","data","status"]},"topic":{"description":"Topic","type":"object","properties":{"$id":{"type":"string","description":"Topic ID.","x-example":"259125845563242502"},"$createdAt":{"type":"string","description":"Topic creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Topic update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"The name of the topic.","x-example":"events"},"total":{"type":"integer","description":"Total count of subscribers subscribed to topic.","x-example":100,"format":"int32"},"description":{"type":"string","description":"Description of the topic.","x-example":"All events related messages will be sent to this topic.","x-nullable":true}},"required":["$id","$createdAt","$updatedAt","name","total"]},"subscriber":{"description":"Subscriber","type":"object","properties":{"$id":{"type":"string","description":"Subscriber ID.","x-example":"259125845563242502"},"$createdAt":{"type":"string","description":"Subscriber creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Subscriber update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"targetId":{"type":"string","description":"Target ID.","x-example":"259125845563242502"},"target":{"type":"object","description":"Target.","x-example":{"$id":"259125845563242502","$createdAt":"2020-10-15T06:38:00.000+00:00","$updatedAt":"2020-10-15T06:38:00.000+00:00","providerType":"email","providerId":"259125845563242502","name":"ageon-app-email","identifier":"random-mail@email.org","userId":"5e5ea5c16897e"},"items":{"type":"object","$ref":"#\/definitions\/target"}},"userId":{"type":"string","description":"Topic ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User Name.","x-example":"Aegon Targaryen"},"topicId":{"type":"string","description":"Topic ID.","x-example":"259125845563242502"},"providerType":{"type":"string","description":"The target provider type. Can be one of the following: `email`, `sms` or `push`.","x-example":"email"}},"required":["$id","$createdAt","$updatedAt","targetId","target","userId","userName","topicId","providerType"]},"target":{"description":"Target","type":"object","properties":{"$id":{"type":"string","description":"Target ID.","x-example":"259125845563242502"},"$createdAt":{"type":"string","description":"Target creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Target update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Target Name.","x-example":"Aegon apple token"},"userId":{"type":"string","description":"User ID.","x-example":"259125845563242502"},"providerId":{"type":"string","description":"Provider ID.","x-example":"259125845563242502","x-nullable":true},"providerType":{"type":"string","description":"The target provider type. Can be one of the following: `email`, `sms` or `push`.","x-example":"email"},"identifier":{"type":"string","description":"The target identifier.","x-example":"token"}},"required":["$id","$createdAt","$updatedAt","name","userId","providerType","identifier"]}},"externalDocs":{"description":"Full API docs, specs and tutorials","url":"https:\/\/appwrite.io\/docs"}} \ No newline at end of file diff --git a/src/Appwrite/Migration/Version/V20.php b/src/Appwrite/Migration/Version/V20.php index d81f27eaa4..2fb19ad31b 100644 --- a/src/Appwrite/Migration/Version/V20.php +++ b/src/Appwrite/Migration/Version/V20.php @@ -73,6 +73,22 @@ class V20 extends Migration } catch (\Throwable $th) { Console::warning("'oAuthProviders' from {$id}: {$th->getMessage()}"); } + case 'schedules': + try { + $this->createAttributeFromCollection($this->projectDB, $id, 'resourceCollection'); + $this->projectDB->deleteCachedCollection($id); + } catch (\Throwable $th) { + Console::warning("'schedules' from {$id}: {$th->getMessage()}"); + } + case 'webhooks': + try { + $this->createAttributeFromCollection($this->projectDB, $id, 'enabled'); + $this->createAttributeFromCollection($this->projectDB, $id, 'logs'); + $this->createAttributeFromCollection($this->projectDB, $id, 'attempts'); + $this->projectDB->deleteCachedCollection($id); + } catch (\Throwable $th) { + Console::warning("'webhooks' from {$id}: {$th->getMessage()}"); + } default: break; } @@ -95,12 +111,9 @@ class V20 extends Migration * Bump version number. */ $document->setAttribute('version', '1.5.0'); - - /** - * Rename providers to oAuthProviders - */ - $document->setAttribute('oAuthProviders', $document->getAttribute('providers')); - $document->removeAttribute('providers'); + break; + case 'schedules': + $document->setAttribute('resourceCollection', 'functions'); break; } return $document; From a63246c2cf92a9dff8ee2d300bba904a371e11e2 Mon Sep 17 00:00:00 2001 From: Bradley Schofield Date: Mon, 22 Jan 2024 11:21:25 +0000 Subject: [PATCH 04/87] Update V20.php --- src/Appwrite/Migration/Version/V20.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/Appwrite/Migration/Version/V20.php b/src/Appwrite/Migration/Version/V20.php index 2fb19ad31b..d8a333ccf4 100644 --- a/src/Appwrite/Migration/Version/V20.php +++ b/src/Appwrite/Migration/Version/V20.php @@ -73,6 +73,7 @@ class V20 extends Migration } catch (\Throwable $th) { Console::warning("'oAuthProviders' from {$id}: {$th->getMessage()}"); } + break; case 'schedules': try { $this->createAttributeFromCollection($this->projectDB, $id, 'resourceCollection'); @@ -80,6 +81,7 @@ class V20 extends Migration } catch (\Throwable $th) { Console::warning("'schedules' from {$id}: {$th->getMessage()}"); } + break; case 'webhooks': try { $this->createAttributeFromCollection($this->projectDB, $id, 'enabled'); @@ -89,6 +91,7 @@ class V20 extends Migration } catch (\Throwable $th) { Console::warning("'webhooks' from {$id}: {$th->getMessage()}"); } + break; default: break; } From b88ff90c22ecd80166c6f7fe9066d5295bf6e9ad Mon Sep 17 00:00:00 2001 From: Bradley Schofield Date: Mon, 22 Jan 2024 11:23:23 +0000 Subject: [PATCH 05/87] Update V17Test.php --- tests/unit/Utopia/Request/Filters/V17Test.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/unit/Utopia/Request/Filters/V17Test.php b/tests/unit/Utopia/Request/Filters/V17Test.php index 2722da26b2..624981dafc 100644 --- a/tests/unit/Utopia/Request/Filters/V17Test.php +++ b/tests/unit/Utopia/Request/Filters/V17Test.php @@ -45,7 +45,7 @@ class V17Test extends TestCase /** * @dataProvider createUpdateRecoveryProvider */ - public function testCreateExecution(array $content, array $expected): void + public function testUpdateRecovery(array $content, array $expected): void { $model = 'account.updateRecovery'; From 5d49ac80b43a34b48f1455a198dc87bc967fb796 Mon Sep 17 00:00:00 2001 From: Bradley Schofield Date: Tue, 23 Jan 2024 10:21:55 +0000 Subject: [PATCH 06/87] Add create targets migrations --- src/Appwrite/Migration/Version/V20.php | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/Appwrite/Migration/Version/V20.php b/src/Appwrite/Migration/Version/V20.php index d8a333ccf4..e88f42062b 100644 --- a/src/Appwrite/Migration/Version/V20.php +++ b/src/Appwrite/Migration/Version/V20.php @@ -118,6 +118,25 @@ class V20 extends Migration case 'schedules': $document->setAttribute('resourceCollection', 'functions'); break; + case 'users': + if ($document->getAttribute('email', '') !== '') { + $document->setAttribute('targets', [ + 'userId' => $document->getId(), + 'userInternalId' => $document->getInternalId(), + 'providerType' => MESSAGE_TYPE_EMAIL, + 'identifier' => $document->getAttribute('email'), + ]); + } + + if ($document->getAttribute('phone', '') !== '') { + $document->setAttribute('targets', [ + 'userId' => $document->getId(), + 'userInternalId' => $document->getInternalId(), + 'providerType' => MESSAGE_TYPE_SMS, + 'identifier' => $document->getAttribute('phone'), + ]); + } + break; } return $document; } From 3226182ec82b1668587d04cab7f5fdc1d84fc6bd Mon Sep 17 00:00:00 2001 From: Bradley Schofield Date: Wed, 24 Jan 2024 18:13:36 +0000 Subject: [PATCH 07/87] Create the targets in the target collection instead of on the user --- src/Appwrite/Migration/Version/V20.php | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/Appwrite/Migration/Version/V20.php b/src/Appwrite/Migration/Version/V20.php index e88f42062b..fd2e1f34e8 100644 --- a/src/Appwrite/Migration/Version/V20.php +++ b/src/Appwrite/Migration/Version/V20.php @@ -6,6 +6,7 @@ use Appwrite\Migration\Migration; use Utopia\CLI\Console; use Utopia\Database\Database; use Utopia\Database\Document; +use Utopia\Database\Helpers\ID; class V20 extends Migration { @@ -120,21 +121,25 @@ class V20 extends Migration break; case 'users': if ($document->getAttribute('email', '') !== '') { - $document->setAttribute('targets', [ + $target = new Document([ + '$id' => ID::unique(), 'userId' => $document->getId(), 'userInternalId' => $document->getInternalId(), 'providerType' => MESSAGE_TYPE_EMAIL, 'identifier' => $document->getAttribute('email'), ]); + $this->projectDB->createDocument('targets', $target); } if ($document->getAttribute('phone', '') !== '') { - $document->setAttribute('targets', [ + $target = new Document([ + '$id' => ID::unique(), 'userId' => $document->getId(), 'userInternalId' => $document->getInternalId(), 'providerType' => MESSAGE_TYPE_SMS, 'identifier' => $document->getAttribute('phone'), ]); + $this->projectDB->createDocument('targets', $target); } break; } From ad1d514fb2b5caae2fb2d236259b86f2be13fb5b Mon Sep 17 00:00:00 2001 From: Bradley Schofield Date: Thu, 25 Jan 2024 13:05:43 +0000 Subject: [PATCH 08/87] Create V21.php --- src/Appwrite/Migration/Version/V21.php | 148 +++++++++++++++++++++++++ 1 file changed, 148 insertions(+) create mode 100644 src/Appwrite/Migration/Version/V21.php diff --git a/src/Appwrite/Migration/Version/V21.php b/src/Appwrite/Migration/Version/V21.php new file mode 100644 index 0000000000..77badb2d3e --- /dev/null +++ b/src/Appwrite/Migration/Version/V21.php @@ -0,0 +1,148 @@ + null, + fn () => [] + ); + } + Console::log('Migrating Project: ' . $this->project->getAttribute('name') . ' (' . $this->project->getId() . ')'); + $this->projectDB->setNamespace("_{$this->project->getInternalId()}"); + + Console::info('Migrating Collections'); + $this->migrateCollections(); + + Console::info('Migrating Documents'); + $this->forEachDocument([$this, 'fixDocument']); + } + + /** + * Migrate all Collections. + * + * @return void + * @throws \Throwable + * @throws Exception + */ + private function migrateCollections(): void + { + foreach ($this->collections as $collection) { + $id = $collection['$id']; + + Console::log("Migrating Collection \"{$id}\""); + + $this->projectDB->setNamespace("_{$this->project->getInternalId()}"); + + switch ($id) { + case '_metadata': + $this->createCollection('providers'); + $this->createCollection('messages'); + $this->createCollection('topics'); + $this->createCollection('subscribers'); + $this->createCollection('targets'); + + break; + case 'users': + // Create targets attribute + try { + $this->createAttributeFromCollection($this->projectDB, $id, 'targets'); + $this->projectDB->deleteCachedCollection($id); + } catch (\Throwable $th) { + Console::warning("'targets' from {$id}: {$th->getMessage()}"); + } + break; + case 'projects': + // Rename providers to oAuthProviders + try { + $this->projectDB->renameAttribute($id, 'providers', 'oAuthProviders'); + $this->projectDB->deleteCachedCollection($id); + } catch (\Throwable $th) { + Console::warning("'oAuthProviders' from {$id}: {$th->getMessage()}"); + } + break; + case 'schedules': + try { + $this->createAttributeFromCollection($this->projectDB, $id, 'resourceCollection'); + $this->projectDB->deleteCachedCollection($id); + } catch (\Throwable $th) { + Console::warning("'schedules' from {$id}: {$th->getMessage()}"); + } + break; + case 'webhooks': + try { + $this->createAttributeFromCollection($this->projectDB, $id, 'enabled'); + $this->createAttributeFromCollection($this->projectDB, $id, 'logs'); + $this->createAttributeFromCollection($this->projectDB, $id, 'attempts'); + $this->projectDB->deleteCachedCollection($id); + } catch (\Throwable $th) { + Console::warning("'webhooks' from {$id}: {$th->getMessage()}"); + } + break; + default: + break; + } + + usleep(50000); + } + } + + /** + * Fix run on each document + * + * @param Document $document + * @return Document + */ + protected function fixDocument(Document $document): Document + { + switch ($document->getCollection()) { + case 'projects': + /** + * Bump version number. + */ + $document->setAttribute('version', '1.5.0'); + break; + case 'schedules': + $document->setAttribute('resourceCollection', 'functions'); + break; + case 'users': + if ($document->getAttribute('email', '') !== '') { + $target = new Document([ + '$id' => ID::unique(), + 'userId' => $document->getId(), + 'userInternalId' => $document->getInternalId(), + 'providerType' => MESSAGE_TYPE_EMAIL, + 'identifier' => $document->getAttribute('email'), + ]); + $this->projectDB->createDocument('targets', $target); + } + + if ($document->getAttribute('phone', '') !== '') { + $target = new Document([ + '$id' => ID::unique(), + 'userId' => $document->getId(), + 'userInternalId' => $document->getInternalId(), + 'providerType' => MESSAGE_TYPE_SMS, + 'identifier' => $document->getAttribute('phone'), + ]); + $this->projectDB->createDocument('targets', $target); + } + break; + } + return $document; + } +} \ No newline at end of file From 17602d513e1333519e090f05208f60a37ef7d44f Mon Sep 17 00:00:00 2001 From: Bradley Schofield Date: Thu, 25 Jan 2024 14:22:21 +0000 Subject: [PATCH 09/87] Merge Stats and 1.5.x migrations --- src/Appwrite/Migration/Migration.php | 3 +- src/Appwrite/Migration/Version/V20.php | 110 +++++++++++++++++- src/Appwrite/Migration/Version/V21.php | 148 ------------------------- 3 files changed, 106 insertions(+), 155 deletions(-) delete mode 100644 src/Appwrite/Migration/Version/V21.php diff --git a/src/Appwrite/Migration/Migration.php b/src/Appwrite/Migration/Migration.php index f0bfd28901..6fe8ef8844 100644 --- a/src/Appwrite/Migration/Migration.php +++ b/src/Appwrite/Migration/Migration.php @@ -78,8 +78,7 @@ abstract class Migration '1.4.11' => 'V19', '1.4.12' => 'V19', '1.4.13' => 'V19', - '1.4.14' => 'V20', - '1.5.0' => 'V21', + '1.5.0' => 'V20', ]; /** diff --git a/src/Appwrite/Migration/Version/V20.php b/src/Appwrite/Migration/Version/V20.php index 209068883c..df3c9847fe 100644 --- a/src/Appwrite/Migration/Version/V20.php +++ b/src/Appwrite/Migration/Version/V20.php @@ -13,6 +13,7 @@ use Utopia\Database\Exception\Authorization; use Utopia\Database\Exception\Duplicate; use Utopia\Database\Exception\Structure; use Utopia\Database\Query; +use Utopia\Database\Helpers\ID; class V20 extends Migration { @@ -54,6 +55,9 @@ class V20 extends Migration Console::info('Migrating Collections'); $this->migrateCollections(); + Console::info('Migrating Documents'); + $this->forEachDocument([$this, 'fixDocument']); + Console::info('Migrating Buckets'); $this->migrateBuckets(); } @@ -182,6 +186,7 @@ class V20 extends Migration Console::warning("Error while updating metric {$from} " . $th->getMessage()); } } + /** * Migrate functions. * @@ -241,7 +246,7 @@ class V20 extends Migration Console::log("Migrating Collections of {$collectionTable} {$collection->getId()} ({$collection->getAttribute('name')})"); // Collection level - $collectionId = $collection->getId() ; + $collectionId = $collection->getId(); $collectionInternalId = $collection->getInternalId(); $this->migrateUsageMetrics("documents.$databaseId/$collectionId.count.total", "$databaseInternalId.$collectionInternalId.documents"); @@ -250,10 +255,11 @@ class V20 extends Migration } /** - * Migrate Collections. + * Migrate all Collections. * * @return void - * @throws \Exception + * @throws \Throwable + * @throws Exception */ private function migrateCollections(): void { @@ -270,9 +276,53 @@ class V20 extends Migration Console::log("Migrating Collection \"{$id}\""); - $this->projectDB->setNamespace("_$internalProjectId"); + $this->projectDB->setNamespace("_{$internalProjectId}"); switch ($id) { + case '_metadata': + $this->createCollection('providers'); + $this->createCollection('messages'); + $this->createCollection('topics'); + $this->createCollection('subscribers'); + $this->createCollection('targets'); + + break; + case 'users': + // Create targets attribute + try { + $this->createAttributeFromCollection($this->projectDB, $id, 'targets'); + $this->projectDB->deleteCachedCollection($id); + } catch (\Throwable $th) { + Console::warning("'targets' from {$id}: {$th->getMessage()}"); + } + break; + case 'projects': + // Rename providers to oAuthProviders + try { + $this->projectDB->renameAttribute($id, 'providers', 'oAuthProviders'); + $this->projectDB->deleteCachedCollection($id); + } catch (\Throwable $th) { + Console::warning("'oAuthProviders' from {$id}: {$th->getMessage()}"); + } + break; + case 'schedules': + try { + $this->createAttributeFromCollection($this->projectDB, $id, 'resourceCollection'); + $this->projectDB->deleteCachedCollection($id); + } catch (\Throwable $th) { + Console::warning("'schedules' from {$id}: {$th->getMessage()}"); + } + break; + case 'webhooks': + try { + $this->createAttributeFromCollection($this->projectDB, $id, 'enabled'); + $this->createAttributeFromCollection($this->projectDB, $id, 'logs'); + $this->createAttributeFromCollection($this->projectDB, $id, 'attempts'); + $this->projectDB->deleteCachedCollection($id); + } catch (\Throwable $th) { + Console::warning("'webhooks' from {$id}: {$th->getMessage()}"); + } + break; case 'stats': try { /** @@ -288,10 +338,60 @@ class V20 extends Migration Console::warning("'type' from {$id}: {$th->getMessage()}"); } break; + default: + break; } + + usleep(50000); } } + /** + * Fix run on each document + * + * @param Document $document + * @return Document + */ + protected function fixDocument(Document $document): Document + { + switch ($document->getCollection()) { + case 'projects': + /** + * Bump version number. + */ + $document->setAttribute('version', '1.5.0'); + break; + case 'schedules': + $document->setAttribute('resourceCollection', 'functions'); + break; + case 'users': + if ($document->getAttribute('email', '') !== '') { + $target = new Document([ + '$id' => ID::unique(), + 'userId' => $document->getId(), + 'userInternalId' => $document->getInternalId(), + 'providerType' => MESSAGE_TYPE_EMAIL, + 'identifier' => $document->getAttribute('email'), + ]); + $this->projectDB->createDocument('targets', $target); + } + + if ($document->getAttribute('phone', '') !== '') { + $target = new Document([ + '$id' => ID::unique(), + 'userId' => $document->getId(), + 'userInternalId' => $document->getInternalId(), + 'providerType' => MESSAGE_TYPE_SMS, + 'identifier' => $document->getAttribute('phone'), + ]); + $this->projectDB->createDocument('targets', $target); + } + break; + } + return $document; + } + + /** * Migrating all Bucket tables. * @@ -315,7 +415,7 @@ class V20 extends Migration $bucketId = $bucket->getId(); $bucketInternalId = $bucket->getInternalId(); - $this->migrateUsageMetrics("files.$bucketId.count.total", "$bucketInternalId.files"); + $this->migrateUsageMetrics("files.$bucketId.count.total", "$bucketInternalId.files"); $this->migrateUsageMetrics("files.$bucketId.storage.size", "$bucketInternalId.files.storage"); // some stats come with $ prefix in front of the id -> files.$650c3fda307b7fec4934.storage.size; } diff --git a/src/Appwrite/Migration/Version/V21.php b/src/Appwrite/Migration/Version/V21.php deleted file mode 100644 index 77badb2d3e..0000000000 --- a/src/Appwrite/Migration/Version/V21.php +++ /dev/null @@ -1,148 +0,0 @@ - null, - fn () => [] - ); - } - Console::log('Migrating Project: ' . $this->project->getAttribute('name') . ' (' . $this->project->getId() . ')'); - $this->projectDB->setNamespace("_{$this->project->getInternalId()}"); - - Console::info('Migrating Collections'); - $this->migrateCollections(); - - Console::info('Migrating Documents'); - $this->forEachDocument([$this, 'fixDocument']); - } - - /** - * Migrate all Collections. - * - * @return void - * @throws \Throwable - * @throws Exception - */ - private function migrateCollections(): void - { - foreach ($this->collections as $collection) { - $id = $collection['$id']; - - Console::log("Migrating Collection \"{$id}\""); - - $this->projectDB->setNamespace("_{$this->project->getInternalId()}"); - - switch ($id) { - case '_metadata': - $this->createCollection('providers'); - $this->createCollection('messages'); - $this->createCollection('topics'); - $this->createCollection('subscribers'); - $this->createCollection('targets'); - - break; - case 'users': - // Create targets attribute - try { - $this->createAttributeFromCollection($this->projectDB, $id, 'targets'); - $this->projectDB->deleteCachedCollection($id); - } catch (\Throwable $th) { - Console::warning("'targets' from {$id}: {$th->getMessage()}"); - } - break; - case 'projects': - // Rename providers to oAuthProviders - try { - $this->projectDB->renameAttribute($id, 'providers', 'oAuthProviders'); - $this->projectDB->deleteCachedCollection($id); - } catch (\Throwable $th) { - Console::warning("'oAuthProviders' from {$id}: {$th->getMessage()}"); - } - break; - case 'schedules': - try { - $this->createAttributeFromCollection($this->projectDB, $id, 'resourceCollection'); - $this->projectDB->deleteCachedCollection($id); - } catch (\Throwable $th) { - Console::warning("'schedules' from {$id}: {$th->getMessage()}"); - } - break; - case 'webhooks': - try { - $this->createAttributeFromCollection($this->projectDB, $id, 'enabled'); - $this->createAttributeFromCollection($this->projectDB, $id, 'logs'); - $this->createAttributeFromCollection($this->projectDB, $id, 'attempts'); - $this->projectDB->deleteCachedCollection($id); - } catch (\Throwable $th) { - Console::warning("'webhooks' from {$id}: {$th->getMessage()}"); - } - break; - default: - break; - } - - usleep(50000); - } - } - - /** - * Fix run on each document - * - * @param Document $document - * @return Document - */ - protected function fixDocument(Document $document): Document - { - switch ($document->getCollection()) { - case 'projects': - /** - * Bump version number. - */ - $document->setAttribute('version', '1.5.0'); - break; - case 'schedules': - $document->setAttribute('resourceCollection', 'functions'); - break; - case 'users': - if ($document->getAttribute('email', '') !== '') { - $target = new Document([ - '$id' => ID::unique(), - 'userId' => $document->getId(), - 'userInternalId' => $document->getInternalId(), - 'providerType' => MESSAGE_TYPE_EMAIL, - 'identifier' => $document->getAttribute('email'), - ]); - $this->projectDB->createDocument('targets', $target); - } - - if ($document->getAttribute('phone', '') !== '') { - $target = new Document([ - '$id' => ID::unique(), - 'userId' => $document->getId(), - 'userInternalId' => $document->getInternalId(), - 'providerType' => MESSAGE_TYPE_SMS, - 'identifier' => $document->getAttribute('phone'), - ]); - $this->projectDB->createDocument('targets', $target); - } - break; - } - return $document; - } -} \ No newline at end of file From ca65f4ab2f21beb1d2284686e5835b8f1151a842 Mon Sep 17 00:00:00 2001 From: shimon Date: Wed, 31 Jan 2024 20:22:49 +0200 Subject: [PATCH 10/87] sync against main --- src/Appwrite/Platform/Workers/Usage.php | 12 ------- src/Appwrite/Platform/Workers/UsageHook.php | 35 --------------------- 2 files changed, 47 deletions(-) diff --git a/src/Appwrite/Platform/Workers/Usage.php b/src/Appwrite/Platform/Workers/Usage.php index 5537fae504..3809d000f7 100644 --- a/src/Appwrite/Platform/Workers/Usage.php +++ b/src/Appwrite/Platform/Workers/Usage.php @@ -20,7 +20,6 @@ class Usage extends Action ]; protected const INFINITY_PERIOD = '_inf_'; - protected const DEBUG_PROJECT_ID = 85293; public static function getName(): string { return 'usage'; @@ -70,17 +69,6 @@ class Usage extends Action getProjectDB: $getProjectDB ); } - if ($project->getInternalId() == self::DEBUG_PROJECT_ID) { - var_dump([ - 'type' => 'payload', - 'project' => $project->getInternalId(), - 'database' => $project['database'] ?? '', - $payload['metrics'] - ]); - - var_dump('=========================='); - } - self::$stats[$projectId]['project'] = $project; foreach ($payload['metrics'] ?? [] as $metric) { if (!isset(self::$stats[$projectId]['keys'][$metric['key']])) { diff --git a/src/Appwrite/Platform/Workers/UsageHook.php b/src/Appwrite/Platform/Workers/UsageHook.php index 68e6a3fede..4781b1e892 100644 --- a/src/Appwrite/Platform/Workers/UsageHook.php +++ b/src/Appwrite/Platform/Workers/UsageHook.php @@ -57,14 +57,6 @@ class UsageHook extends Usage try { $dbForProject = $getProjectDB($data['project']); - if ($projectInternalId == 85293) { - var_dump([ - 'project' => $projectInternalId, - 'database' => $database, - 'time' => DateTime::now(), - 'data' => $data['keys'] - ]); - } foreach ($data['keys'] ?? [] as $key => $value) { if ($value == 0) { continue; @@ -75,15 +67,6 @@ class UsageHook extends Usage $id = \md5("{$time}_{$period}_{$key}"); try { - if ($projectInternalId == self::DEBUG_PROJECT_ID) { - var_dump([ - 'type' => 'create', - 'period' => $period, - 'metric' => $key, - 'id' => $id, - 'value' => $value - ]); - } $dbForProject->createDocument('stats_v2', new Document([ '$id' => $id, 'period' => $period, @@ -94,15 +77,6 @@ class UsageHook extends Usage ])); } catch (Duplicate $th) { if ($value < 0) { - if ($projectInternalId == self::DEBUG_PROJECT_ID) { - var_dump([ - 'type' => 'decrease', - 'period' => $period, - 'metric' => $key, - 'id' => $id, - 'value' => $value - ]); - } $dbForProject->decreaseDocumentAttribute( 'stats_v2', $id, @@ -110,15 +84,6 @@ class UsageHook extends Usage abs($value) ); } else { - if ($projectInternalId == self::DEBUG_PROJECT_ID) { - var_dump([ - 'type' => 'increase', - 'period' => $period, - 'metric' => $key, - 'id' => $id, - 'value' => $value - ]); - } $dbForProject->increaseDocumentAttribute( 'stats_v2', $id, From c58d6ea418255eb4ac28a9d3d7bb65b331134b77 Mon Sep 17 00:00:00 2001 From: shimon Date: Wed, 31 Jan 2024 20:31:16 +0200 Subject: [PATCH 11/87] sync against main --- app/worker.php | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/app/worker.php b/app/worker.php index 2a0dcba241..a1454a63f4 100644 --- a/app/worker.php +++ b/app/worker.php @@ -154,7 +154,7 @@ Server::setResource('queueForDatabase', function (Connection $queue) { return new EventDatabase($queue); }, ['queue']); Server::setResource('queueForMessaging', function (Connection $queue) { - return new Phone($queue); + return new Messaging($queue); }, ['queue']); Server::setResource('queueForMails', function (Connection $queue) { return new Mail($queue); @@ -227,6 +227,12 @@ if (!empty($workerIndex)) { $workerName .= '_' . $workerIndex; } +if (\str_starts_with($workerName, 'databases')) { + $queueName = App::getEnv('_APP_QUEUE_NAME', 'database_db_main'); +} else { + $queueName = App::getEnv('_APP_QUEUE_NAME', 'v1-' . strtolower($workerName)); +} + try { /** * Any worker can be configured with the following env vars: @@ -234,12 +240,6 @@ try { * - _APP_WORKER_PER_CORE The number of worker processes per core (ignored if _APP_WORKERS_NUM is set) * - _APP_QUEUE_NAME The name of the queue to read for database events */ - if ($workerName === 'databases') { - $queueName = App::getEnv('_APP_QUEUE_NAME', 'database_db_main'); - } else { - $queueName = App::getEnv('_APP_QUEUE_NAME', 'v1-' . strtolower($workerName)); - } - $platform->init(Service::TYPE_WORKER, [ 'workersNum' => App::getEnv('_APP_WORKERS_NUM', 1), 'connection' => $pools->get('queue')->pop()->getResource(), @@ -265,20 +265,23 @@ $worker ->inject('error') ->inject('logger') ->inject('log') - ->action(function (Throwable $error, ?Logger $logger, Log $log) { + ->inject('pools') + ->action(function (Throwable $error, ?Logger $logger, Log $log, Group $pools) use ($queueName) { + $pools->reclaim(); + $version = App::getEnv('_APP_VERSION', 'UNKNOWN'); if ($error instanceof PDOException) { throw $error; } - if ($logger && ($error->getCode() >= 500 || $error->getCode() === 0)) { + if ($logger) { $log->setNamespace("appwrite-worker"); $log->setServer(\gethostname()); $log->setVersion($version); $log->setType(Log::TYPE_ERROR); $log->setMessage($error->getMessage()); - $log->setAction('appwrite-queue-' . App::getEnv('QUEUE')); + $log->setAction('appwrite-queue-' . $queueName); $log->addTag('verboseType', get_class($error)); $log->addTag('code', $error->getCode()); $log->addExtra('file', $error->getFile()); From ed7b3faeb3b75824c9dd8d20f5c2d1c2b99336d4 Mon Sep 17 00:00:00 2001 From: shimon Date: Wed, 31 Jan 2024 21:22:06 +0200 Subject: [PATCH 12/87] sync against main --- src/Appwrite/Migration/Version/V20.php | 274 ++++++++++++++++++++++++- 1 file changed, 266 insertions(+), 8 deletions(-) diff --git a/src/Appwrite/Migration/Version/V20.php b/src/Appwrite/Migration/Version/V20.php index fd2e1f34e8..8d97401ad4 100644 --- a/src/Appwrite/Migration/Version/V20.php +++ b/src/Appwrite/Migration/Version/V20.php @@ -3,13 +3,21 @@ namespace Appwrite\Migration\Version; use Appwrite\Migration\Migration; +use Exception; +use PDOException; +use Throwable; use Utopia\CLI\Console; use Utopia\Database\Database; use Utopia\Database\Document; +use Utopia\Database\Exception\Duplicate; use Utopia\Database\Helpers\ID; +use Utopia\Database\Query; class V20 extends Migration { + /** + * @throws Throwable + */ public function execute(): void { /** @@ -18,27 +26,234 @@ class V20 extends Migration foreach (['subQueryIndexes', 'subQueryPlatforms', 'subQueryDomains', 'subQueryKeys', 'subQueryWebhooks', 'subQuerySessions', 'subQueryTokens', 'subQueryMemberships', 'subQueryVariables'] as $name) { Database::addFilter( $name, - fn () => null, - fn () => [] + fn() => null, + fn() => [] ); } + + $this->migrateUsageMetrics('project.$all.network.requests', 'network.requests'); + $this->migrateUsageMetrics('project.$all.network.outbound', 'network.outbound'); + $this->migrateUsageMetrics('project.$all.network.inbound', 'network.inbound'); + $this->migrateUsageMetrics('users.$all.count.total', 'users'); + $this->migrateSessionsMetric(); + Console::log('Migrating Project: ' . $this->project->getAttribute('name') . ' (' . $this->project->getId() . ')'); $this->projectDB->setNamespace("_{$this->project->getInternalId()}"); + Console::info('Migrating Functions'); + $this->migrateFunctions(); + + Console::info('Migrating Databases'); + $this->migrateDatabases(); + Console::info('Migrating Collections'); $this->migrateCollections(); + Console::info('Migrating Buckets'); + $this->migrateBuckets(); + Console::info('Migrating Documents'); $this->forEachDocument([$this, 'fixDocument']); } /** - * Migrate all Collections. + * @return void + * @throws Authorization + * @throws Exception + * @throws Structure + */ + protected function migrateSessionsMetric(): void + { + /** + * Creating inf metric + */ + + Console::info('Migrating Sessions metric'); + + $sessionsCreated = $this->projectDB->sum('stats', 'value', [ + Query::equal('metric', [ + 'sessions.email-password.requests.create', + 'sessions.magic-url.requests.create', + 'sessions.anonymous.requests.create', + 'sessions.invites.requests.create', + 'sessions.jwt.requests.create', + 'sessions.phone.requests.create' + ]), + Query::equal('period', ['1d']), + ]); + + $query = $this->projectDB->findOne('stats', [ + Query::equal('metric', ['sessions.$all.requests.delete']), + Query::equal('period', ['1d']), + ]); + + $sessionsDeleted = $query['value'] ?? 0; + $value = $sessionsCreated - $sessionsDeleted; + $this->createInfMetric('sessions', $value); + } + + /** + * @param string $metric + * @param int $value + * @return void + * @throws Exception + * @throws Authorization + * @throws Structure + */ + protected function createInfMetric(string $metric, int $value): void + { + + try { + /** + * Creating inf metric + */ + console::log("Creating inf metric to {$metric}"); + $id = \md5("_inf_{$metric}"); + $this->projectDB->createDocument('stats', new Document([ + '$id' => $id, + 'metric' => $metric, + 'period' => 'inf', + 'value' => $value, + 'time' => null, + 'region' => 'default', + ])); + } catch (Duplicate $th) { + console::log("Error while creating inf metric: duplicate id {$metric} {$id}"); + } + } + + /** + * @param string $from + * @param string $to + * @return void + * @throws Exception + */ + protected function migrateUsageMetrics(string $from, string $to): void + { + /** + * inf metric + */ + if ( + str_contains($from, '$all') || + str_contains($from, '.total') + ) { + $query = $this->projectDB->sum('stats', 'value', [ + Query::equal('metric', [$from]), + Query::equal('period', ['1d']), + ]); + + $value = $query ?? 0; + $this->createInfMetric($to, $value); + } + + try { + /** + * Update old metric format to new + */ + $limit = 1000; + $sum = $limit; + $total = 0; + $latestDocument = null; + while ($sum === $limit) { + $paginationQueries = [Query::limit($limit)]; + if ($latestDocument !== null) { + $paginationQueries[] = Query::cursorAfter($latestDocument); + } + $stats = $this->projectDB->find('stats', \array_merge($paginationQueries, [ + Query::equal('metric', [$from]), + ])); + + $sum = count($stats); + $total = $total + $sum; + foreach ($stats as $stat) { + $format = $stat['period'] === '1d' ? 'Y-m-d 00:00' : 'Y-m-d H:00'; + $time = date($format, strtotime($stat['time'])); + $this->projectDB->deleteDocument('stats', $stat->getId()); + $stat->setAttribute('$id', \md5("{$time}_{$stat['period']}_{$to}")); + $stat->setAttribute('metric', $to); + $this->projectDB->createDocument('stats', $stat); + console::log("deleting metric {$from} and creating {$to}"); + } + $latestDocument = !empty(array_key_last($stats)) ? $stats[array_key_last($stats)] : null; + } + } catch (Throwable $th) { + Console::warning("Error while updating metric {$from} " . $th->getMessage()); + } + } + + /** + * Migrate functions. * * @return void - * @throws \Throwable * @throws Exception */ + private function migrateFunctions(): void + { + + $this->migrateUsageMetrics('deployment.$all.storage.size', 'deployments.storage'); + $this->migrateUsageMetrics('builds.$all.compute.total', 'builds'); + $this->migrateUsageMetrics('builds.$all.compute.time', 'builds.compute'); + $this->migrateUsageMetrics('executions.$all.compute.total', 'executions'); + $this->migrateUsageMetrics('executions.$all.compute.time', 'executions.compute'); + + foreach ($this->documentsIterator('functions') as $function) { + Console::log("Migrating Functions usage stats of {$function->getId()} ({$function->getAttribute('name')})"); + + $functionId = $function->getId(); + $functionInternalId = $function->getInternalId(); + + $this->migrateUsageMetrics("deployment.$functionId.storage.size", "function.$functionInternalId.deployments.storage"); + $this->migrateUsageMetrics("builds.$functionId.compute.total", "$functionInternalId.builds"); + $this->migrateUsageMetrics("builds.$functionId.compute.time", "$functionInternalId.builds.compute"); + $this->migrateUsageMetrics("executions.$functionId.compute.total", "$functionInternalId.executions"); + $this->migrateUsageMetrics("executions.$functionId.compute.time", "$functionInternalId.executions.compute"); + } + } + + /** + * Migrate Databases. + * + * @return void + * @throws Exception + */ + private function migrateDatabases(): void + { + // Project level + $this->migrateUsageMetrics('databases.$all.count.total', 'databases'); + $this->migrateUsageMetrics('collections.$all.count.total', 'collections'); + $this->migrateUsageMetrics('documents.$all.count.total', 'documents'); + + foreach ($this->documentsIterator('databases') as $database) { + Console::log("Migrating Collections of {$database->getId()} ({$database->getAttribute('name')})"); + + $databaseTable = "database_{$database->getInternalId()}"; + + // Database level + $databaseId = $database->getId(); + $databaseInternalId = $database->getInternalId(); + + $this->migrateUsageMetrics("collections.$databaseId.count.total", "$databaseInternalId.collections"); + $this->migrateUsageMetrics("documents.$databaseId.count.total", "$databaseInternalId.documents"); + + foreach ($this->documentsIterator($databaseTable) as $collection) { + $collectionTable = "{$databaseTable}_collection_{$collection->getInternalId()}"; + Console::log("Migrating Collections of {$collectionTable} {$collection->getId()} ({$collection->getAttribute('name')})"); + + // Collection level + $collectionId = $collection->getId() ; + $collectionInternalId = $collection->getInternalId(); + + $this->migrateUsageMetrics("documents.$databaseId/$collectionId.count.total", "$databaseInternalId.$collectionInternalId.documents"); + } + } + } + + /** + * Migrate Collections. + * + * @return void + * @throws Exception|Throwable + */ private function migrateCollections(): void { foreach ($this->collections as $collection) { @@ -56,13 +271,28 @@ class V20 extends Migration $this->createCollection('subscribers'); $this->createCollection('targets'); + break; + case 'stats': + try { + /** + * Delete 'type' attribute + */ + $this->projectDB->deleteAttribute($id, 'type'); + /** + * Alter `signed` internal type on `value` attr + */ + $this->projectDB->updateAttribute($id, 'value', null, null, null, null, true); + $this->projectDB->deleteCachedCollection($id); + } catch (Throwable $th) { + Console::warning("'type' from {$id}: {$th->getMessage()}"); + } break; case 'users': // Create targets attribute try { $this->createAttributeFromCollection($this->projectDB, $id, 'targets'); $this->projectDB->deleteCachedCollection($id); - } catch (\Throwable $th) { + } catch (Throwable $th) { Console::warning("'targets' from {$id}: {$th->getMessage()}"); } break; @@ -71,7 +301,7 @@ class V20 extends Migration try { $this->projectDB->renameAttribute($id, 'providers', 'oAuthProviders'); $this->projectDB->deleteCachedCollection($id); - } catch (\Throwable $th) { + } catch (Throwable $th) { Console::warning("'oAuthProviders' from {$id}: {$th->getMessage()}"); } break; @@ -79,7 +309,7 @@ class V20 extends Migration try { $this->createAttributeFromCollection($this->projectDB, $id, 'resourceCollection'); $this->projectDB->deleteCachedCollection($id); - } catch (\Throwable $th) { + } catch (Throwable $th) { Console::warning("'schedules' from {$id}: {$th->getMessage()}"); } break; @@ -89,7 +319,7 @@ class V20 extends Migration $this->createAttributeFromCollection($this->projectDB, $id, 'logs'); $this->createAttributeFromCollection($this->projectDB, $id, 'attempts'); $this->projectDB->deleteCachedCollection($id); - } catch (\Throwable $th) { + } catch (Throwable $th) { Console::warning("'webhooks' from {$id}: {$th->getMessage()}"); } break; @@ -101,6 +331,34 @@ class V20 extends Migration } } + /** + * Migrating Buckets. + * + * @return void + * @throws Exception + * @throws PDOException + */ + protected function migrateBuckets(): void + { + // Project level + $this->migrateUsageMetrics('buckets.$all.count.total', 'buckets'); + $this->migrateUsageMetrics('files.$all.count.total', 'files'); + $this->migrateUsageMetrics('files.$all.storage.size', 'files.storage'); + + foreach ($this->documentsIterator('buckets') as $bucket) { + $id = "bucket_{$bucket->getInternalId()}"; + Console::log("Migrating Bucket {$id} {$bucket->getId()} ({$bucket->getAttribute('name')})"); + + // Bucket level + $bucketId = $bucket->getId(); + $bucketInternalId = $bucket->getInternalId(); + + $this->migrateUsageMetrics("files.$bucketId.count.total", "$bucketInternalId.files"); + $this->migrateUsageMetrics("files.$bucketId.storage.size", "$bucketInternalId.files.storage"); + } + } + + /** * Fix run on each document * From 264542b01d0376f300893e67e34c4c9b349cf021 Mon Sep 17 00:00:00 2001 From: shimon Date: Thu, 1 Feb 2024 10:30:27 +0200 Subject: [PATCH 13/87] migration updates --- src/Appwrite/Migration/Version/V20.php | 32 +++++++++++++++++++++++--- 1 file changed, 29 insertions(+), 3 deletions(-) diff --git a/src/Appwrite/Migration/Version/V20.php b/src/Appwrite/Migration/Version/V20.php index 8d97401ad4..350abd5aae 100644 --- a/src/Appwrite/Migration/Version/V20.php +++ b/src/Appwrite/Migration/Version/V20.php @@ -9,7 +9,9 @@ use Throwable; use Utopia\CLI\Console; use Utopia\Database\Database; use Utopia\Database\Document; +use Utopia\Database\Exception\Authorization; use Utopia\Database\Exception\Duplicate; +use Utopia\Database\Exception\Structure; use Utopia\Database\Helpers\ID; use Utopia\Database\Query; @@ -130,6 +132,7 @@ class V20 extends Migration */ protected function migrateUsageMetrics(string $from, string $to): void { + /** * inf metric */ @@ -286,6 +289,30 @@ class V20 extends Migration } catch (Throwable $th) { Console::warning("'type' from {$id}: {$th->getMessage()}"); } + + // update stats index + $index = '_key_metric_period_time'; + + try { + $this->projectDB->deleteIndex($id, $index); + } catch (\Throwable $th) { + Console::warning("'$index' from {$id}: {$th->getMessage()}"); + } + + try { + $this->createIndexFromCollection($this->projectDB, $id, $index); + } catch (\Throwable $th) { + Console::warning("'$index' from {$id}: {$th->getMessage()}"); + } + + break; + case 'sessions': + try { + $this->createAttributeFromCollection($this->projectDB, $id, 'expire'); + $this->projectDB->deleteCachedCollection($id); + } catch (Throwable $th) { + Console::warning("'expire' from {$id}: {$th->getMessage()}"); + } break; case 'users': // Create targets attribute @@ -297,9 +324,9 @@ class V20 extends Migration } break; case 'projects': - // Rename providers to oAuthProviders + // Rename providers authProviders to oAuthProviders try { - $this->projectDB->renameAttribute($id, 'providers', 'oAuthProviders'); + $this->projectDB->renameAttribute($id, 'authProviders', 'oAuthProviders'); $this->projectDB->deleteCachedCollection($id); } catch (Throwable $th) { Console::warning("'oAuthProviders' from {$id}: {$th->getMessage()}"); @@ -358,7 +385,6 @@ class V20 extends Migration } } - /** * Fix run on each document * From 1ef5c9bfcd697035ca766cf051cd6ed39d335649 Mon Sep 17 00:00:00 2001 From: shimon Date: Thu, 1 Feb 2024 10:32:40 +0200 Subject: [PATCH 14/87] removed var_dump leftovers --- src/Appwrite/Platform/Workers/Usage.php | 11 ------ src/Appwrite/Platform/Workers/UsageHook.php | 37 --------------------- 2 files changed, 48 deletions(-) diff --git a/src/Appwrite/Platform/Workers/Usage.php b/src/Appwrite/Platform/Workers/Usage.php index 5537fae504..1dffeb8bb6 100644 --- a/src/Appwrite/Platform/Workers/Usage.php +++ b/src/Appwrite/Platform/Workers/Usage.php @@ -70,16 +70,6 @@ class Usage extends Action getProjectDB: $getProjectDB ); } - if ($project->getInternalId() == self::DEBUG_PROJECT_ID) { - var_dump([ - 'type' => 'payload', - 'project' => $project->getInternalId(), - 'database' => $project['database'] ?? '', - $payload['metrics'] - ]); - - var_dump('=========================='); - } self::$stats[$projectId]['project'] = $project; foreach ($payload['metrics'] ?? [] as $metric) { @@ -91,7 +81,6 @@ class Usage extends Action } } - /** * On Documents that tied by relations like functions>deployments>build || documents>collection>database || buckets>files. * When we remove a parent document we need to deduct his children aggregation from the project scope. diff --git a/src/Appwrite/Platform/Workers/UsageHook.php b/src/Appwrite/Platform/Workers/UsageHook.php index 68e6a3fede..c897845516 100644 --- a/src/Appwrite/Platform/Workers/UsageHook.php +++ b/src/Appwrite/Platform/Workers/UsageHook.php @@ -47,8 +47,6 @@ class UsageHook extends Usage foreach ($projects as $data) { $numberOfKeys = !empty($data['keys']) ? count($data['keys']) : 0; $projectInternalId = $data['project']->getInternalId(); - $database = $data['project']['database'] ?? ''; - console::warning('Ticker started ' . DateTime::now()); if ($numberOfKeys === 0) { @@ -57,14 +55,6 @@ class UsageHook extends Usage try { $dbForProject = $getProjectDB($data['project']); - if ($projectInternalId == 85293) { - var_dump([ - 'project' => $projectInternalId, - 'database' => $database, - 'time' => DateTime::now(), - 'data' => $data['keys'] - ]); - } foreach ($data['keys'] ?? [] as $key => $value) { if ($value == 0) { continue; @@ -75,15 +65,6 @@ class UsageHook extends Usage $id = \md5("{$time}_{$period}_{$key}"); try { - if ($projectInternalId == self::DEBUG_PROJECT_ID) { - var_dump([ - 'type' => 'create', - 'period' => $period, - 'metric' => $key, - 'id' => $id, - 'value' => $value - ]); - } $dbForProject->createDocument('stats_v2', new Document([ '$id' => $id, 'period' => $period, @@ -94,15 +75,6 @@ class UsageHook extends Usage ])); } catch (Duplicate $th) { if ($value < 0) { - if ($projectInternalId == self::DEBUG_PROJECT_ID) { - var_dump([ - 'type' => 'decrease', - 'period' => $period, - 'metric' => $key, - 'id' => $id, - 'value' => $value - ]); - } $dbForProject->decreaseDocumentAttribute( 'stats_v2', $id, @@ -110,15 +82,6 @@ class UsageHook extends Usage abs($value) ); } else { - if ($projectInternalId == self::DEBUG_PROJECT_ID) { - var_dump([ - 'type' => 'increase', - 'period' => $period, - 'metric' => $key, - 'id' => $id, - 'value' => $value - ]); - } $dbForProject->increaseDocumentAttribute( 'stats_v2', $id, From 62bc540db02affd29083a3a9e38c66f51d466403 Mon Sep 17 00:00:00 2001 From: shimon Date: Thu, 1 Feb 2024 10:35:38 +0200 Subject: [PATCH 15/87] removed var_dump leftovers --- src/Appwrite/Platform/Workers/UsageHook.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/Appwrite/Platform/Workers/UsageHook.php b/src/Appwrite/Platform/Workers/UsageHook.php index c897845516..4781b1e892 100644 --- a/src/Appwrite/Platform/Workers/UsageHook.php +++ b/src/Appwrite/Platform/Workers/UsageHook.php @@ -47,6 +47,8 @@ class UsageHook extends Usage foreach ($projects as $data) { $numberOfKeys = !empty($data['keys']) ? count($data['keys']) : 0; $projectInternalId = $data['project']->getInternalId(); + $database = $data['project']['database'] ?? ''; + console::warning('Ticker started ' . DateTime::now()); if ($numberOfKeys === 0) { From 350d72eb1f405f594c815d8c253fd2d06d0c3d8c Mon Sep 17 00:00:00 2001 From: shimon Date: Thu, 1 Feb 2024 12:21:50 +0200 Subject: [PATCH 16/87] updates --- app/config/collections.php | 6 +- app/controllers/api/databases.php | 12 +- app/controllers/api/functions.php | 8 +- app/controllers/api/project.php | 8 +- app/controllers/api/storage.php | 8 +- app/controllers/api/users.php | 4 +- src/Appwrite/Migration/Migration.php | 2 +- src/Appwrite/Migration/Version/V20.php | 237 ++++++++++-------- src/Appwrite/Platform/Tasks/CalcTierStats.php | 2 +- .../Platform/Tasks/CreateInfMetric.php | 6 +- src/Appwrite/Platform/Workers/Deletes.php | 2 +- src/Appwrite/Platform/Workers/Hamster.php | 2 +- src/Appwrite/Platform/Workers/Usage.php | 24 +- src/Appwrite/Platform/Workers/UsageHook.php | 6 +- 14 files changed, 175 insertions(+), 152 deletions(-) diff --git a/app/config/collections.php b/app/config/collections.php index 59050b9b47..82f333c35c 100644 --- a/app/config/collections.php +++ b/app/config/collections.php @@ -1349,10 +1349,10 @@ $commonCollections = [ ] ], - 'stats_v2' => [ + 'stats' => [ '$collection' => ID::custom(Database::METADATA), - '$id' => ID::custom('stats_v2'), - 'name' => 'stats_v2', + '$id' => ID::custom('stats'), + 'name' => 'stats', 'attributes' => [ [ '$id' => ID::custom('metric'), diff --git a/app/controllers/api/databases.php b/app/controllers/api/databases.php index 9312831fe0..86a9d14e13 100644 --- a/app/controllers/api/databases.php +++ b/app/controllers/api/databases.php @@ -3560,7 +3560,7 @@ App::get('/v1/databases/usage') Authorization::skip(function () use ($dbForProject, $days, $metrics, &$stats) { foreach ($metrics as $metric) { - $result = $dbForProject->findOne('stats_v2', [ + $result = $dbForProject->findOne('stats', [ Query::equal('metric', [$metric]), Query::equal('period', ['inf']) ]); @@ -3568,7 +3568,7 @@ App::get('/v1/databases/usage') $stats[$metric]['total'] = $result['value'] ?? 0; $limit = $days['limit']; $period = $days['period']; - $results = $dbForProject->find('stats_v2', [ + $results = $dbForProject->find('stats', [ Query::equal('metric', [$metric]), Query::equal('period', [$period]), Query::limit($limit), @@ -3644,7 +3644,7 @@ App::get('/v1/databases/:databaseId/usage') Authorization::skip(function () use ($dbForProject, $days, $metrics, &$stats) { foreach ($metrics as $metric) { - $result = $dbForProject->findOne('stats_v2', [ + $result = $dbForProject->findOne('stats', [ Query::equal('metric', [$metric]), Query::equal('period', ['inf']) ]); @@ -3652,7 +3652,7 @@ App::get('/v1/databases/:databaseId/usage') $stats[$metric]['total'] = $result['value'] ?? 0; $limit = $days['limit']; $period = $days['period']; - $results = $dbForProject->find('stats_v2', [ + $results = $dbForProject->find('stats', [ Query::equal('metric', [$metric]), Query::equal('period', [$period]), Query::limit($limit), @@ -3730,7 +3730,7 @@ App::get('/v1/databases/:databaseId/collections/:collectionId/usage') Authorization::skip(function () use ($dbForProject, $days, $metrics, &$stats) { foreach ($metrics as $metric) { - $result = $dbForProject->findOne('stats_v2', [ + $result = $dbForProject->findOne('stats', [ Query::equal('metric', [$metric]), Query::equal('period', ['inf']) ]); @@ -3738,7 +3738,7 @@ App::get('/v1/databases/:databaseId/collections/:collectionId/usage') $stats[$metric]['total'] = $result['value'] ?? 0; $limit = $days['limit']; $period = $days['period']; - $results = $dbForProject->find('stats_v2', [ + $results = $dbForProject->find('stats', [ Query::equal('metric', [$metric]), Query::equal('period', [$period]), Query::limit($limit), diff --git a/app/controllers/api/functions.php b/app/controllers/api/functions.php index 9c1f3cfa98..4129a276d7 100644 --- a/app/controllers/api/functions.php +++ b/app/controllers/api/functions.php @@ -485,7 +485,7 @@ App::get('/v1/functions/:functionId/usage') Authorization::skip(function () use ($dbForProject, $days, $metrics, &$stats) { foreach ($metrics as $metric) { - $result = $dbForProject->findOne('stats_v2', [ + $result = $dbForProject->findOne('stats', [ Query::equal('metric', [$metric]), Query::equal('period', ['inf']) ]); @@ -493,7 +493,7 @@ App::get('/v1/functions/:functionId/usage') $stats[$metric]['total'] = $result['value'] ?? 0; $limit = $days['limit']; $period = $days['period']; - $results = $dbForProject->find('stats_v2', [ + $results = $dbForProject->find('stats', [ Query::equal('metric', [$metric]), Query::equal('period', [$period]), Query::limit($limit), @@ -577,7 +577,7 @@ App::get('/v1/functions/usage') Authorization::skip(function () use ($dbForProject, $days, $metrics, &$stats) { foreach ($metrics as $metric) { - $result = $dbForProject->findOne('stats_v2', [ + $result = $dbForProject->findOne('stats', [ Query::equal('metric', [$metric]), Query::equal('period', ['inf']) ]); @@ -585,7 +585,7 @@ App::get('/v1/functions/usage') $stats[$metric]['total'] = $result['value'] ?? 0; $limit = $days['limit']; $period = $days['period']; - $results = $dbForProject->find('stats_v2', [ + $results = $dbForProject->find('stats', [ Query::equal('metric', [$metric]), Query::equal('period', [$period]), Query::limit($limit), diff --git a/app/controllers/api/project.php b/app/controllers/api/project.php index 2269cb81c7..8dd6f8b82e 100644 --- a/app/controllers/api/project.php +++ b/app/controllers/api/project.php @@ -73,7 +73,7 @@ App::get('/v1/project/usage') Authorization::skip(function () use ($dbForProject, $firstDay, $lastDay, $period, $metrics, &$total, &$stats) { foreach ($metrics['total'] as $metric) { - $result = $dbForProject->findOne('stats_v2', [ + $result = $dbForProject->findOne('stats', [ Query::equal('metric', [$metric]), Query::equal('period', ['inf']) ]); @@ -81,7 +81,7 @@ App::get('/v1/project/usage') } foreach ($metrics['period'] as $metric) { - $results = $dbForProject->find('stats_v2', [ + $results = $dbForProject->find('stats', [ Query::equal('metric', [$metric]), Query::equal('period', [$period]), Query::greaterThanEqual('time', $firstDay), @@ -116,7 +116,7 @@ App::get('/v1/project/usage') $id = $function->getId(); $name = $function->getAttribute('name'); $metric = str_replace('{functionInternalId}', $function->getInternalId(), METRIC_FUNCTION_ID_EXECUTIONS); - $value = $dbForProject->findOne('stats_v2', [ + $value = $dbForProject->findOne('stats', [ Query::equal('metric', [$metric]), Query::equal('period', ['inf']) ]); @@ -132,7 +132,7 @@ App::get('/v1/project/usage') $id = $bucket->getId(); $name = $bucket->getAttribute('name'); $metric = str_replace('{bucketInternalId}', $bucket->getInternalId(), METRIC_BUCKET_ID_FILES_STORAGE); - $value = $dbForProject->findOne('stats_v2', [ + $value = $dbForProject->findOne('stats', [ Query::equal('metric', [$metric]), Query::equal('period', ['inf']) ]); diff --git a/app/controllers/api/storage.php b/app/controllers/api/storage.php index fc5d00dfd0..0e0c3633fe 100644 --- a/app/controllers/api/storage.php +++ b/app/controllers/api/storage.php @@ -1528,7 +1528,7 @@ App::get('/v1/storage/usage') $total = []; Authorization::skip(function () use ($dbForProject, $days, $metrics, &$stats, &$total) { foreach ($metrics as $metric) { - $result = $dbForProject->findOne('stats_v2', [ + $result = $dbForProject->findOne('stats', [ Query::equal('metric', [$metric]), Query::equal('period', ['inf']) ]); @@ -1536,7 +1536,7 @@ App::get('/v1/storage/usage') $stats[$metric]['total'] = $result['value'] ?? 0; $limit = $days['limit']; $period = $days['period']; - $results = $dbForProject->find('stats_v2', [ + $results = $dbForProject->find('stats', [ Query::equal('metric', [$metric]), Query::equal('period', [$period]), Query::limit($limit), @@ -1613,7 +1613,7 @@ App::get('/v1/storage/:bucketId/usage') Authorization::skip(function () use ($dbForProject, $days, $metrics, &$stats, &$total) { foreach ($metrics as $metric) { - $result = $dbForProject->findOne('stats_v2', [ + $result = $dbForProject->findOne('stats', [ Query::equal('metric', [$metric]), Query::equal('period', ['inf']) ]); @@ -1621,7 +1621,7 @@ App::get('/v1/storage/:bucketId/usage') $stats[$metric]['total'] = $result['value'] ?? 0; $limit = $days['limit']; $period = $days['period']; - $results = $dbForProject->find('stats_v2', [ + $results = $dbForProject->find('stats', [ Query::equal('metric', [$metric]), Query::equal('period', [$period]), Query::limit($limit), diff --git a/app/controllers/api/users.php b/app/controllers/api/users.php index 52aeb7dbcb..1acb67a1be 100644 --- a/app/controllers/api/users.php +++ b/app/controllers/api/users.php @@ -1784,7 +1784,7 @@ App::get('/v1/users/usage') Authorization::skip(function () use ($dbForProject, $days, $metrics, &$stats) { foreach ($metrics as $count => $metric) { - $result = $dbForProject->findOne('stats_v2', [ + $result = $dbForProject->findOne('stats', [ Query::equal('metric', [$metric]), Query::equal('period', ['inf']) ]); @@ -1792,7 +1792,7 @@ App::get('/v1/users/usage') $stats[$metric]['total'] = $result['value'] ?? 0; $limit = $days['limit']; $period = $days['period']; - $results = $dbForProject->find('stats_v2', [ + $results = $dbForProject->find('stats', [ Query::equal('metric', [$metric]), Query::equal('period', [$period]), Query::limit($limit), diff --git a/src/Appwrite/Migration/Migration.php b/src/Appwrite/Migration/Migration.php index 2f564a970e..9d53e374c0 100644 --- a/src/Appwrite/Migration/Migration.php +++ b/src/Appwrite/Migration/Migration.php @@ -78,7 +78,7 @@ abstract class Migration '1.4.11' => 'V19', '1.4.12' => 'V19', '1.4.13' => 'V19', - '1.5.0' => 'V20', + '1.5.0' => 'V20', ]; /** diff --git a/src/Appwrite/Migration/Version/V20.php b/src/Appwrite/Migration/Version/V20.php index 350abd5aae..b63722b4d1 100644 --- a/src/Appwrite/Migration/Version/V20.php +++ b/src/Appwrite/Migration/Version/V20.php @@ -58,6 +58,136 @@ class V20 extends Migration $this->forEachDocument([$this, 'fixDocument']); } + /** + * Migrate Collections. + * + * @return void + * @throws Exception|Throwable + */ + private function migrateCollections(): void + { + $internalProjectId = $this->project->getInternalId(); + $collectionType = match ($internalProjectId) { + 'console' => 'console', + default => 'projects', + }; + $collections = $this->collections[$collectionType]; + foreach ($collections as $collection) { + $id = $collection['$id']; + + Console::log("Migrating Collection \"{$id}\""); + + $this->projectDB->setNamespace("_{$this->project->getInternalId()}"); + $modifiedAttr = []; + foreach ($collection['attributes'] ?? [] as $attribute) { + if ($attribute['type'] === 'string' && $attribute['array'] === true) { + $this->projectDB->updateAttribute($id, $attribute['$id']); + $modifiedAttr[] = $attribute['$id']; + } + } + if (!empty($modified)) { + foreach ($collection['indexes'] ?? [] as $index) { + $foundIndexes = array_intersect($modifiedAttr, $index['attributes']); + if ($foundIndexes) { + $this->projectDB->deleteIndex($id, $index['$id']); + } + } + } + + switch ($id) { + case '_metadata': + $this->createCollection('providers'); + $this->createCollection('messages'); + $this->createCollection('topics'); + $this->createCollection('subscribers'); + $this->createCollection('targets'); + + break; + case 'stats': + try { + /** + * Delete 'type' attribute + */ + $this->projectDB->deleteAttribute($id, 'type'); + /** + * Alter `signed` internal type on `value` attr + */ + $this->projectDB->updateAttribute($id, 'value', null, null, null, null, true); + $this->projectDB->deleteCachedCollection($id); + } catch (Throwable $th) { + Console::warning("'type' from {$id}: {$th->getMessage()}"); + } + + // update stats index + $index = '_key_metric_period_time'; + + try { + $this->projectDB->deleteIndex($id, $index); + } catch (\Throwable $th) { + Console::warning("'$index' from {$id}: {$th->getMessage()}"); + } + + try { + $this->createIndexFromCollection($this->projectDB, $id, $index); + } catch (\Throwable $th) { + Console::warning("'$index' from {$id}: {$th->getMessage()}"); + } + + break; + case 'sessions': + try { + $this->createAttributeFromCollection($this->projectDB, $id, 'expire'); + $this->projectDB->deleteCachedCollection($id); + } catch (Throwable $th) { + Console::warning("'expire' from {$id}: {$th->getMessage()}"); + } + break; + case 'users': + // Create targets attribute + try { + $this->createAttributeFromCollection($this->projectDB, $id, 'targets'); + $this->projectDB->deleteCachedCollection($id); + } catch (Throwable $th) { + Console::warning("'targets' from {$id}: {$th->getMessage()}"); + } + break; + case 'projects': + // Rename providers authProviders to oAuthProviders + try { + $this->projectDB->renameAttribute($id, 'authProviders', 'oAuthProviders'); + $this->projectDB->deleteCachedCollection($id); + } catch (Throwable $th) { + Console::warning("'oAuthProviders' from {$id}: {$th->getMessage()}"); + } + break; + case 'schedules': + try { + $this->createAttributeFromCollection($this->projectDB, $id, 'resourceCollection'); + $this->projectDB->deleteCachedCollection($id); + } catch (Throwable $th) { + Console::warning("'schedules' from {$id}: {$th->getMessage()}"); + } + break; + case 'webhooks': + try { + $this->createAttributeFromCollection($this->projectDB, $id, 'enabled'); + $this->createAttributeFromCollection($this->projectDB, $id, 'logs'); + $this->createAttributeFromCollection($this->projectDB, $id, 'attempts'); + $this->projectDB->deleteCachedCollection($id); + } catch (Throwable $th) { + Console::warning("'webhooks' from {$id}: {$th->getMessage()}"); + } + break; + default: + break; + } + + usleep(50000); + } + } + + + /** * @return void * @throws Authorization @@ -251,113 +381,6 @@ class V20 extends Migration } } - /** - * Migrate Collections. - * - * @return void - * @throws Exception|Throwable - */ - private function migrateCollections(): void - { - foreach ($this->collections as $collection) { - $id = $collection['$id']; - - Console::log("Migrating Collection \"{$id}\""); - - $this->projectDB->setNamespace("_{$this->project->getInternalId()}"); - - switch ($id) { - case '_metadata': - $this->createCollection('providers'); - $this->createCollection('messages'); - $this->createCollection('topics'); - $this->createCollection('subscribers'); - $this->createCollection('targets'); - - break; - case 'stats': - try { - /** - * Delete 'type' attribute - */ - $this->projectDB->deleteAttribute($id, 'type'); - /** - * Alter `signed` internal type on `value` attr - */ - $this->projectDB->updateAttribute($id, 'value', null, null, null, null, true); - $this->projectDB->deleteCachedCollection($id); - } catch (Throwable $th) { - Console::warning("'type' from {$id}: {$th->getMessage()}"); - } - - // update stats index - $index = '_key_metric_period_time'; - - try { - $this->projectDB->deleteIndex($id, $index); - } catch (\Throwable $th) { - Console::warning("'$index' from {$id}: {$th->getMessage()}"); - } - - try { - $this->createIndexFromCollection($this->projectDB, $id, $index); - } catch (\Throwable $th) { - Console::warning("'$index' from {$id}: {$th->getMessage()}"); - } - - break; - case 'sessions': - try { - $this->createAttributeFromCollection($this->projectDB, $id, 'expire'); - $this->projectDB->deleteCachedCollection($id); - } catch (Throwable $th) { - Console::warning("'expire' from {$id}: {$th->getMessage()}"); - } - break; - case 'users': - // Create targets attribute - try { - $this->createAttributeFromCollection($this->projectDB, $id, 'targets'); - $this->projectDB->deleteCachedCollection($id); - } catch (Throwable $th) { - Console::warning("'targets' from {$id}: {$th->getMessage()}"); - } - break; - case 'projects': - // Rename providers authProviders to oAuthProviders - try { - $this->projectDB->renameAttribute($id, 'authProviders', 'oAuthProviders'); - $this->projectDB->deleteCachedCollection($id); - } catch (Throwable $th) { - Console::warning("'oAuthProviders' from {$id}: {$th->getMessage()}"); - } - break; - case 'schedules': - try { - $this->createAttributeFromCollection($this->projectDB, $id, 'resourceCollection'); - $this->projectDB->deleteCachedCollection($id); - } catch (Throwable $th) { - Console::warning("'schedules' from {$id}: {$th->getMessage()}"); - } - break; - case 'webhooks': - try { - $this->createAttributeFromCollection($this->projectDB, $id, 'enabled'); - $this->createAttributeFromCollection($this->projectDB, $id, 'logs'); - $this->createAttributeFromCollection($this->projectDB, $id, 'attempts'); - $this->projectDB->deleteCachedCollection($id); - } catch (Throwable $th) { - Console::warning("'webhooks' from {$id}: {$th->getMessage()}"); - } - break; - default: - break; - } - - usleep(50000); - } - } - /** * Migrating Buckets. * diff --git a/src/Appwrite/Platform/Tasks/CalcTierStats.php b/src/Appwrite/Platform/Tasks/CalcTierStats.php index 2c904973a9..05a28b418a 100644 --- a/src/Appwrite/Platform/Tasks/CalcTierStats.php +++ b/src/Appwrite/Platform/Tasks/CalcTierStats.php @@ -270,7 +270,7 @@ class CalcTierStats extends Action $limit = $periods[$range]['limit']; $period = $periods[$range]['period']; - $requestDocs = $dbForProject->find('stats_v2', [ + $requestDocs = $dbForProject->find('stats', [ Query::equal('metric', [$metric]), Query::equal('period', [$period]), Query::limit($limit), diff --git a/src/Appwrite/Platform/Tasks/CreateInfMetric.php b/src/Appwrite/Platform/Tasks/CreateInfMetric.php index 0e78e02bd8..cfb7486782 100644 --- a/src/Appwrite/Platform/Tasks/CreateInfMetric.php +++ b/src/Appwrite/Platform/Tasks/CreateInfMetric.php @@ -163,8 +163,8 @@ class CreateInfMetric extends Action try { $id = \md5("_inf_{$metric}"); - $dbForProject->deleteDocument('stats_v2', $id); - $dbForProject->createDocument('stats_v2', new Document([ + $dbForProject->deleteDocument('stats', $id); + $dbForProject->createDocument('stats', new Document([ '$id' => $id, 'metric' => $metric, 'period' => 'inf', @@ -186,7 +186,7 @@ class CreateInfMetric extends Action protected function getFromMetric(database $dbForProject, string $metric): int|float { - return $dbForProject->sum('stats_v2', 'value', [ + return $dbForProject->sum('stats', 'value', [ Query::equal('metric', [ $metric, ]), diff --git a/src/Appwrite/Platform/Workers/Deletes.php b/src/Appwrite/Platform/Workers/Deletes.php index dd1949f845..c0bdd786fe 100644 --- a/src/Appwrite/Platform/Workers/Deletes.php +++ b/src/Appwrite/Platform/Workers/Deletes.php @@ -441,7 +441,7 @@ class Deletes extends Action { $dbForProject = $getProjectDB($project); // Delete Usage stats - $this->deleteByGroup('stats_v2', [ + $this->deleteByGroup('stats', [ Query::lessThan('time', $hourlyUsageRetentionDatetime), Query::equal('period', ['1h']), ], $dbForProject); diff --git a/src/Appwrite/Platform/Workers/Hamster.php b/src/Appwrite/Platform/Workers/Hamster.php index 0fb705d0f7..6239f842e0 100644 --- a/src/Appwrite/Platform/Workers/Hamster.php +++ b/src/Appwrite/Platform/Workers/Hamster.php @@ -286,7 +286,7 @@ class Hamster extends Action $limit = $periodValue['limit']; $period = $periodValue['period']; - $requestDocs = $dbForProject->find('stats_v2', [ + $requestDocs = $dbForProject->find('stats', [ Query::equal('period', [$period]), Query::equal('metric', [$metric]), Query::limit($limit), diff --git a/src/Appwrite/Platform/Workers/Usage.php b/src/Appwrite/Platform/Workers/Usage.php index 3809d000f7..7b8594ad22 100644 --- a/src/Appwrite/Platform/Workers/Usage.php +++ b/src/Appwrite/Platform/Workers/Usage.php @@ -106,8 +106,8 @@ class Usage extends Action } break; case $document->getCollection() === 'databases': // databases - $collections = $dbForProject->getDocument('stats_v2', md5(self::INFINITY_PERIOD . str_replace('{databaseInternalId}', $document->getInternalId(), METRIC_DATABASE_ID_COLLECTIONS))); - $documents = $dbForProject->getDocument('stats_v2', md5(self::INFINITY_PERIOD . str_replace('{databaseInternalId}', $document->getInternalId(), METRIC_DATABASE_ID_DOCUMENTS))); + $collections = $dbForProject->getDocument('stats', md5(self::INFINITY_PERIOD . str_replace('{databaseInternalId}', $document->getInternalId(), METRIC_DATABASE_ID_COLLECTIONS))); + $documents = $dbForProject->getDocument('stats', md5(self::INFINITY_PERIOD . str_replace('{databaseInternalId}', $document->getInternalId(), METRIC_DATABASE_ID_DOCUMENTS))); if (!empty($collections['value'])) { $metrics[] = [ 'key' => METRIC_COLLECTIONS, @@ -125,7 +125,7 @@ class Usage extends Action case str_starts_with($document->getCollection(), 'database_') && !str_contains($document->getCollection(), 'collection'): //collections $parts = explode('_', $document->getCollection()); $databaseInternalId = $parts[1] ?? 0; - $documents = $dbForProject->getDocument('stats_v2', md5(self::INFINITY_PERIOD . str_replace(['{databaseInternalId}', '{collectionInternalId}'], [$databaseInternalId, $document->getInternalId()], METRIC_DATABASE_ID_COLLECTION_ID_DOCUMENTS))); + $documents = $dbForProject->getDocument('stats', md5(self::INFINITY_PERIOD . str_replace(['{databaseInternalId}', '{collectionInternalId}'], [$databaseInternalId, $document->getInternalId()], METRIC_DATABASE_ID_COLLECTION_ID_DOCUMENTS))); if (!empty($documents['value'])) { $metrics[] = [ @@ -140,8 +140,8 @@ class Usage extends Action break; case $document->getCollection() === 'buckets': - $files = $dbForProject->getDocument('stats_v2', md5(self::INFINITY_PERIOD . str_replace('{bucketInternalId}', $document->getInternalId(), METRIC_BUCKET_ID_FILES))); - $storage = $dbForProject->getDocument('stats_v2', md5(self::INFINITY_PERIOD . str_replace('{bucketInternalId}', $document->getInternalId(), METRIC_BUCKET_ID_FILES_STORAGE))); + $files = $dbForProject->getDocument('stats', md5(self::INFINITY_PERIOD . str_replace('{bucketInternalId}', $document->getInternalId(), METRIC_BUCKET_ID_FILES))); + $storage = $dbForProject->getDocument('stats', md5(self::INFINITY_PERIOD . str_replace('{bucketInternalId}', $document->getInternalId(), METRIC_BUCKET_ID_FILES_STORAGE))); if (!empty($files['value'])) { $metrics[] = [ @@ -159,13 +159,13 @@ class Usage extends Action break; case $document->getCollection() === 'functions': - $deployments = $dbForProject->getDocument('stats_v2', md5(self::INFINITY_PERIOD . str_replace(['{resourceType}', '{resourceInternalId}'], ['functions', $document->getInternalId()], METRIC_FUNCTION_ID_DEPLOYMENTS))); - $deploymentsStorage = $dbForProject->getDocument('stats_v2', md5(self::INFINITY_PERIOD . str_replace(['{resourceType}', '{resourceInternalId}'], ['functions', $document->getInternalId()], METRIC_FUNCTION_ID_DEPLOYMENTS_STORAGE))); - $builds = $dbForProject->getDocument('stats_v2', md5(self::INFINITY_PERIOD . str_replace('{functionInternalId}', $document->getInternalId(), METRIC_FUNCTION_ID_BUILDS))); - $buildsStorage = $dbForProject->getDocument('stats_v2', md5(self::INFINITY_PERIOD . str_replace('{functionInternalId}', $document->getInternalId(), METRIC_FUNCTION_ID_BUILDS_STORAGE))); - $buildsCompute = $dbForProject->getDocument('stats_v2', md5(self::INFINITY_PERIOD . str_replace('{functionInternalId}', $document->getInternalId(), METRIC_FUNCTION_ID_BUILDS_COMPUTE))); - $executions = $dbForProject->getDocument('stats_v2', md5(self::INFINITY_PERIOD . str_replace('{functionInternalId}', $document->getInternalId(), METRIC_FUNCTION_ID_EXECUTIONS))); - $executionsCompute = $dbForProject->getDocument('stats_v2', md5(self::INFINITY_PERIOD . str_replace('{functionInternalId}', $document->getInternalId(), METRIC_FUNCTION_ID_EXECUTIONS_COMPUTE))); + $deployments = $dbForProject->getDocument('stats', md5(self::INFINITY_PERIOD . str_replace(['{resourceType}', '{resourceInternalId}'], ['functions', $document->getInternalId()], METRIC_FUNCTION_ID_DEPLOYMENTS))); + $deploymentsStorage = $dbForProject->getDocument('stats', md5(self::INFINITY_PERIOD . str_replace(['{resourceType}', '{resourceInternalId}'], ['functions', $document->getInternalId()], METRIC_FUNCTION_ID_DEPLOYMENTS_STORAGE))); + $builds = $dbForProject->getDocument('stats', md5(self::INFINITY_PERIOD . str_replace('{functionInternalId}', $document->getInternalId(), METRIC_FUNCTION_ID_BUILDS))); + $buildsStorage = $dbForProject->getDocument('stats', md5(self::INFINITY_PERIOD . str_replace('{functionInternalId}', $document->getInternalId(), METRIC_FUNCTION_ID_BUILDS_STORAGE))); + $buildsCompute = $dbForProject->getDocument('stats', md5(self::INFINITY_PERIOD . str_replace('{functionInternalId}', $document->getInternalId(), METRIC_FUNCTION_ID_BUILDS_COMPUTE))); + $executions = $dbForProject->getDocument('stats', md5(self::INFINITY_PERIOD . str_replace('{functionInternalId}', $document->getInternalId(), METRIC_FUNCTION_ID_EXECUTIONS))); + $executionsCompute = $dbForProject->getDocument('stats', md5(self::INFINITY_PERIOD . str_replace('{functionInternalId}', $document->getInternalId(), METRIC_FUNCTION_ID_EXECUTIONS_COMPUTE))); if (!empty($deployments['value'])) { $metrics[] = [ diff --git a/src/Appwrite/Platform/Workers/UsageHook.php b/src/Appwrite/Platform/Workers/UsageHook.php index 4781b1e892..8343b26355 100644 --- a/src/Appwrite/Platform/Workers/UsageHook.php +++ b/src/Appwrite/Platform/Workers/UsageHook.php @@ -67,7 +67,7 @@ class UsageHook extends Usage $id = \md5("{$time}_{$period}_{$key}"); try { - $dbForProject->createDocument('stats_v2', new Document([ + $dbForProject->createDocument('stats', new Document([ '$id' => $id, 'period' => $period, 'time' => $time, @@ -78,14 +78,14 @@ class UsageHook extends Usage } catch (Duplicate $th) { if ($value < 0) { $dbForProject->decreaseDocumentAttribute( - 'stats_v2', + 'stats', $id, 'value', abs($value) ); } else { $dbForProject->increaseDocumentAttribute( - 'stats_v2', + 'stats', $id, 'value', $value From 030cdf3cc8d588156b4e5481c533cdef56049fdc Mon Sep 17 00:00:00 2001 From: shimon Date: Thu, 1 Feb 2024 17:12:27 +0200 Subject: [PATCH 17/87] updates --- .gitmodules | 2 +- composer.json | 2 +- src/Appwrite/Migration/Version/V20.php | 27 ++++++++++++++----------- src/Appwrite/Platform/Tasks/Migrate.php | 1 + 4 files changed, 18 insertions(+), 14 deletions(-) diff --git a/.gitmodules b/.gitmodules index 0c2321bcfa..e259782156 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,4 +1,4 @@ [submodule "app/console"] path = app/console url = https://github.com/appwrite/console - branch = 3.2.16 + branch = 1.5.x diff --git a/composer.json b/composer.json index b9d43a8227..b6951e9a43 100644 --- a/composer.json +++ b/composer.json @@ -56,7 +56,7 @@ "utopia-php/image": "0.6.*", "utopia-php/locale": "0.4.*", "utopia-php/logger": "0.3.*", - "utopia-php/messaging": "0.8.*", + "utopia-php/messaging": "0.9.*", "utopia-php/migration": "0.3.*", "utopia-php/orchestration": "0.9.*", "utopia-php/platform": "0.5.*", diff --git a/src/Appwrite/Migration/Version/V20.php b/src/Appwrite/Migration/Version/V20.php index b63722b4d1..30f1f4fab0 100644 --- a/src/Appwrite/Migration/Version/V20.php +++ b/src/Appwrite/Migration/Version/V20.php @@ -71,26 +71,29 @@ class V20 extends Migration 'console' => 'console', default => 'projects', }; + + $databases = $this->projectDB->find('databases', []); + foreach ($databases as $database) { + var_dump($database); + } + $collections = $this->collections[$collectionType]; foreach ($collections as $collection) { $id = $collection['$id']; Console::log("Migrating Collection \"{$id}\""); - $this->projectDB->setNamespace("_{$this->project->getInternalId()}"); - $modifiedAttr = []; + $this->projectDB->setNamespace("_$internalProjectId"); + + // Support database array type migration foreach ($collection['attributes'] ?? [] as $attribute) { - if ($attribute['type'] === 'string' && $attribute['array'] === true) { - $this->projectDB->updateAttribute($id, $attribute['$id']); - $modifiedAttr[] = $attribute['$id']; - } - } - if (!empty($modified)) { - foreach ($collection['indexes'] ?? [] as $index) { - $foundIndexes = array_intersect($modifiedAttr, $index['attributes']); - if ($foundIndexes) { - $this->projectDB->deleteIndex($id, $index['$id']); + if ($attribute['array'] === true) { + foreach ($collection['indexes'] ?? [] as $index) { + if (in_array($attribute['$id'], $index['attributes'])) { + $this->projectDB->deleteIndex($id, $index['$id']); + } } + $this->projectDB->updateAttribute($id, $attribute['$id'], Database::VAR_STRING); } } diff --git a/src/Appwrite/Platform/Tasks/Migrate.php b/src/Appwrite/Platform/Tasks/Migrate.php index 682b9b5559..ce37cbd8d4 100644 --- a/src/Appwrite/Platform/Tasks/Migrate.php +++ b/src/Appwrite/Platform/Tasks/Migrate.php @@ -93,6 +93,7 @@ class Migrate extends Action // TODO: Iterate through all project DBs /** @var Database $projectDB */ $projectDB = $getProjectDB($project); + var_dump($project); $migration ->setProject($project, $projectDB, $dbForConsole) ->setPDO($register->get('db', true)) From c5c16cfb591a000ca5227c3cc2723262ef13b790 Mon Sep 17 00:00:00 2001 From: shimon Date: Thu, 1 Feb 2024 17:13:14 +0200 Subject: [PATCH 18/87] updates --- composer.lock | 40 ++++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/composer.lock b/composer.lock index 34b655a887..5c803280cd 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "b692b61971354d653a0a0aa27bd5a646", + "content-hash": "4b9b6ff602a179493e0196636d961e9c", "packages": [ { "name": "adhocore/jwt", @@ -1358,16 +1358,16 @@ }, { "name": "utopia-php/framework", - "version": "0.33.1", + "version": "0.33.2", "source": { "type": "git", "url": "https://github.com/utopia-php/http.git", - "reference": "b745607aa1875554a0ad52e28f6db918da1ce11c" + "reference": "b1423ca3e3b61c6c4c2e619d2cb80672809a19f3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/utopia-php/http/zipball/b745607aa1875554a0ad52e28f6db918da1ce11c", - "reference": "b745607aa1875554a0ad52e28f6db918da1ce11c", + "url": "https://api.github.com/repos/utopia-php/http/zipball/b1423ca3e3b61c6c4c2e619d2cb80672809a19f3", + "reference": "b1423ca3e3b61c6c4c2e619d2cb80672809a19f3", "shasum": "" }, "require": { @@ -1397,9 +1397,9 @@ ], "support": { "issues": "https://github.com/utopia-php/http/issues", - "source": "https://github.com/utopia-php/http/tree/0.33.1" + "source": "https://github.com/utopia-php/http/tree/0.33.2" }, - "time": "2024-01-17T16:48:32+00:00" + "time": "2024-01-31T10:35:59+00:00" }, { "name": "utopia-php/image", @@ -1555,16 +1555,16 @@ }, { "name": "utopia-php/messaging", - "version": "0.8.1", + "version": "0.9.0", "source": { "type": "git", "url": "https://github.com/utopia-php/messaging.git", - "reference": "bfb5014d3a8752901e50da1ae21bf309a6af5006" + "reference": "df54ba51570e886724590edeb03dbd455bb0464d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/utopia-php/messaging/zipball/bfb5014d3a8752901e50da1ae21bf309a6af5006", - "reference": "bfb5014d3a8752901e50da1ae21bf309a6af5006", + "url": "https://api.github.com/repos/utopia-php/messaging/zipball/df54ba51570e886724590edeb03dbd455bb0464d", + "reference": "df54ba51570e886724590edeb03dbd455bb0464d", "shasum": "" }, "require": { @@ -1599,9 +1599,9 @@ ], "support": { "issues": "https://github.com/utopia-php/messaging/issues", - "source": "https://github.com/utopia-php/messaging/tree/0.8.1" + "source": "https://github.com/utopia-php/messaging/tree/0.9.0" }, - "time": "2024-01-10T23:55:03+00:00" + "time": "2024-01-31T11:51:27+00:00" }, { "name": "utopia-php/migration", @@ -2474,16 +2474,16 @@ }, { "name": "doctrine/deprecations", - "version": "1.1.2", + "version": "1.1.3", "source": { "type": "git", "url": "https://github.com/doctrine/deprecations.git", - "reference": "4f2d4f2836e7ec4e7a8625e75c6aa916004db931" + "reference": "dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/deprecations/zipball/4f2d4f2836e7ec4e7a8625e75c6aa916004db931", - "reference": "4f2d4f2836e7ec4e7a8625e75c6aa916004db931", + "url": "https://api.github.com/repos/doctrine/deprecations/zipball/dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab", + "reference": "dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab", "shasum": "" }, "require": { @@ -2515,9 +2515,9 @@ "homepage": "https://www.doctrine-project.org/", "support": { "issues": "https://github.com/doctrine/deprecations/issues", - "source": "https://github.com/doctrine/deprecations/tree/1.1.2" + "source": "https://github.com/doctrine/deprecations/tree/1.1.3" }, - "time": "2023-09-27T20:04:15+00:00" + "time": "2024-01-30T19:34:25+00:00" }, { "name": "doctrine/instantiator", @@ -5175,5 +5175,5 @@ "platform-overrides": { "php": "8.2" }, - "plugin-api-version": "2.6.0" + "plugin-api-version": "2.2.0" } From 883cfedc469176b6d0f57a8f9bbd9cd01b6462f7 Mon Sep 17 00:00:00 2001 From: shimon Date: Thu, 1 Feb 2024 22:14:09 +0200 Subject: [PATCH 19/87] updates --- src/Appwrite/Migration/Version/V20.php | 29 +++++++++++++++++++++---- src/Appwrite/Platform/Tasks/Migrate.php | 1 - 2 files changed, 25 insertions(+), 5 deletions(-) diff --git a/src/Appwrite/Migration/Version/V20.php b/src/Appwrite/Migration/Version/V20.php index 30f1f4fab0..5831d46fc5 100644 --- a/src/Appwrite/Migration/Version/V20.php +++ b/src/Appwrite/Migration/Version/V20.php @@ -72,9 +72,26 @@ class V20 extends Migration default => 'projects', }; - $databases = $this->projectDB->find('databases', []); - foreach ($databases as $database) { - var_dump($database); + // Support database array type migration (user collections) + $attributes = $this->projectDB->find('attributes', [ + Query::equal('array', [true]), + ]); + + foreach ($attributes as $attribute) { + $indexes = $this->projectDB->find('indexes', [ + Query::equal('databaseInternalId', [$attribute['databaseInternalId']]), + Query::equal('collectionInternalId', [$attribute['collectionInternalId']]), + ]); + $foundIndex = 0; + foreach ($indexes as $index) { + if (in_array($attribute['key'], $index['attributes'])) { + $this->projectDB->deleteIndex($index['collectionId'], $index['_uid']); + $foundIndex = 1; + } + } + if ($foundIndex === 1) { + $this->projectDB->updateAttribute($attribute['collectionInternalId'], $attribute['key'], Database::VAR_STRING); + } } $collections = $this->collections[$collectionType]; @@ -86,14 +103,18 @@ class V20 extends Migration $this->projectDB->setNamespace("_$internalProjectId"); // Support database array type migration + $foundIndex = 0; foreach ($collection['attributes'] ?? [] as $attribute) { if ($attribute['array'] === true) { foreach ($collection['indexes'] ?? [] as $index) { if (in_array($attribute['$id'], $index['attributes'])) { $this->projectDB->deleteIndex($id, $index['$id']); + $foundIndex = 1; } } - $this->projectDB->updateAttribute($id, $attribute['$id'], Database::VAR_STRING); + if ($foundIndex === 1) { + $this->projectDB->updateAttribute($id, $attribute['$id'], Database::VAR_STRING); + } } } diff --git a/src/Appwrite/Platform/Tasks/Migrate.php b/src/Appwrite/Platform/Tasks/Migrate.php index ce37cbd8d4..682b9b5559 100644 --- a/src/Appwrite/Platform/Tasks/Migrate.php +++ b/src/Appwrite/Platform/Tasks/Migrate.php @@ -93,7 +93,6 @@ class Migrate extends Action // TODO: Iterate through all project DBs /** @var Database $projectDB */ $projectDB = $getProjectDB($project); - var_dump($project); $migration ->setProject($project, $projectDB, $dbForConsole) ->setPDO($register->get('db', true)) From 036fa932950b84e928ff251d2a63e251d0a9a821 Mon Sep 17 00:00:00 2001 From: shimon Date: Sun, 4 Feb 2024 09:34:42 +0200 Subject: [PATCH 20/87] updates --- src/Appwrite/Migration/Version/V20.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Appwrite/Migration/Version/V20.php b/src/Appwrite/Migration/Version/V20.php index 5831d46fc5..b266eb1895 100644 --- a/src/Appwrite/Migration/Version/V20.php +++ b/src/Appwrite/Migration/Version/V20.php @@ -42,15 +42,15 @@ class V20 extends Migration Console::log('Migrating Project: ' . $this->project->getAttribute('name') . ' (' . $this->project->getId() . ')'); $this->projectDB->setNamespace("_{$this->project->getInternalId()}"); + Console::info('Migrating Collections'); + $this->migrateCollections(); + Console::info('Migrating Functions'); $this->migrateFunctions(); Console::info('Migrating Databases'); $this->migrateDatabases(); - Console::info('Migrating Collections'); - $this->migrateCollections(); - Console::info('Migrating Buckets'); $this->migrateBuckets(); From af2b640948dc33ccffe58cf8f2bfb9a92abab7db Mon Sep 17 00:00:00 2001 From: shimon Date: Sun, 4 Feb 2024 10:33:04 +0200 Subject: [PATCH 21/87] updates --- app/config/collections.php | 2 +- src/Appwrite/Migration/Version/V20.php | 64 +++++++++++++++++++++++--- 2 files changed, 59 insertions(+), 7 deletions(-) diff --git a/app/config/collections.php b/app/config/collections.php index e7b45dcf45..24ee927c6d 100644 --- a/app/config/collections.php +++ b/app/config/collections.php @@ -1510,7 +1510,7 @@ $commonCollections = [ 'stats' => [ '$collection' => ID::custom(Database::METADATA), '$id' => ID::custom('stats'), - 'name' => 'stats', + 'name' => 'Stats', 'attributes' => [ [ '$id' => ID::custom('metric'), diff --git a/src/Appwrite/Migration/Version/V20.php b/src/Appwrite/Migration/Version/V20.php index b266eb1895..ffe8583e1f 100644 --- a/src/Appwrite/Migration/Version/V20.php +++ b/src/Appwrite/Migration/Version/V20.php @@ -125,6 +125,7 @@ class V20 extends Migration $this->createCollection('topics'); $this->createCollection('subscribers'); $this->createCollection('targets'); + $this->createCollection('challenges'); break; case 'stats': @@ -137,7 +138,7 @@ class V20 extends Migration * Alter `signed` internal type on `value` attr */ $this->projectDB->updateAttribute($id, 'value', null, null, null, null, true); - $this->projectDB->deleteCachedCollection($id); + $this->projectDB->purgeCachedCollection($id); } catch (Throwable $th) { Console::warning("'type' from {$id}: {$th->getMessage()}"); } @@ -159,27 +160,78 @@ class V20 extends Migration break; case 'sessions': + // Create expire attribute try { $this->createAttributeFromCollection($this->projectDB, $id, 'expire'); - $this->projectDB->deleteCachedCollection($id); + $this->projectDB->purgeCachedCollection($id); } catch (Throwable $th) { Console::warning("'expire' from {$id}: {$th->getMessage()}"); } + + // Create factors attribute + try { + $this->createAttributeFromCollection($this->projectDB, $id, 'factors'); + $this->projectDB->purgeCachedCollection($id); + } catch (Throwable $th) { + Console::warning("'factors' from {$id}: {$th->getMessage()}"); + } + break; case 'users': // Create targets attribute try { $this->createAttributeFromCollection($this->projectDB, $id, 'targets'); - $this->projectDB->deleteCachedCollection($id); + $this->projectDB->purgeCachedCollection($id); } catch (Throwable $th) { Console::warning("'targets' from {$id}: {$th->getMessage()}"); } + + // Create mfa attribute + try { + $this->createAttributeFromCollection($this->projectDB, $id, 'mfa'); + $this->projectDB->purgeCachedCollection($id); + } catch (Throwable $th) { + Console::warning("'mfa' from {$id}: {$th->getMessage()}"); + } + + // Create totp attribute + try { + $this->createAttributeFromCollection($this->projectDB, $id, 'totp'); + $this->projectDB->purgeCachedCollection($id); + } catch (Throwable $th) { + Console::warning("'totp' from {$id}: {$th->getMessage()}"); + } + + // Create totpVerification attribute + try { + $this->createAttributeFromCollection($this->projectDB, $id, 'totpVerification'); + $this->projectDB->purgeCachedCollection($id); + } catch (Throwable $th) { + Console::warning("'totpVerification' from {$id}: {$th->getMessage()}"); + } + + // Create totpSecret attribute + try { + $this->createAttributeFromCollection($this->projectDB, $id, 'totpSecret'); + $this->projectDB->purgeCachedCollection($id); + } catch (Throwable $th) { + Console::warning("'totpSecret' from {$id}: {$th->getMessage()}"); + } + + // Create totpBackup attribute + try { + $this->createAttributeFromCollection($this->projectDB, $id, 'totpBackup'); + $this->projectDB->purgeCachedCollection($id); + } catch (Throwable $th) { + Console::warning("'totpBackup' from {$id}: {$th->getMessage()}"); + } + break; case 'projects': // Rename providers authProviders to oAuthProviders try { $this->projectDB->renameAttribute($id, 'authProviders', 'oAuthProviders'); - $this->projectDB->deleteCachedCollection($id); + $this->projectDB->purgeCachedCollection($id); } catch (Throwable $th) { Console::warning("'oAuthProviders' from {$id}: {$th->getMessage()}"); } @@ -187,7 +239,7 @@ class V20 extends Migration case 'schedules': try { $this->createAttributeFromCollection($this->projectDB, $id, 'resourceCollection'); - $this->projectDB->deleteCachedCollection($id); + $this->projectDB->purgeCachedCollection($id); } catch (Throwable $th) { Console::warning("'schedules' from {$id}: {$th->getMessage()}"); } @@ -197,7 +249,7 @@ class V20 extends Migration $this->createAttributeFromCollection($this->projectDB, $id, 'enabled'); $this->createAttributeFromCollection($this->projectDB, $id, 'logs'); $this->createAttributeFromCollection($this->projectDB, $id, 'attempts'); - $this->projectDB->deleteCachedCollection($id); + $this->projectDB->purgeCachedCollection($id); } catch (Throwable $th) { Console::warning("'webhooks' from {$id}: {$th->getMessage()}"); } From 70ea6734e78c0af6ab715d2ca0e5a22dcb8b7ba5 Mon Sep 17 00:00:00 2001 From: Bradley Schofield Date: Tue, 6 Feb 2024 19:22:54 +0000 Subject: [PATCH 22/87] Add expire defaults --- src/Appwrite/Migration/Version/V20.php | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/Appwrite/Migration/Version/V20.php b/src/Appwrite/Migration/Version/V20.php index ffe8583e1f..505fc3a7fd 100644 --- a/src/Appwrite/Migration/Version/V20.php +++ b/src/Appwrite/Migration/Version/V20.php @@ -2,12 +2,14 @@ namespace Appwrite\Migration\Version; +use Appwrite\Auth\Auth; use Appwrite\Migration\Migration; use Exception; use PDOException; use Throwable; use Utopia\CLI\Console; use Utopia\Database\Database; +use Utopia\Database\DateTime; use Utopia\Database\Document; use Utopia\Database\Exception\Authorization; use Utopia\Database\Exception\Duplicate; @@ -525,6 +527,11 @@ class V20 extends Migration $this->projectDB->createDocument('targets', $target); } break; + case 'sessions': + $duration = $this->project->getAttribute('auths', [])['duration'] ?? Auth::TOKEN_EXPIRATION_LOGIN_LONG; + $expire = DateTime::addSeconds(new \DateTime(), $duration); + $document->setAttribute('expire', $expire); + break; } return $document; } From 4a45927af98f00a8f6232f8f0798afff9d6640bb Mon Sep 17 00:00:00 2001 From: Jake Barnby Date: Wed, 7 Feb 2024 23:03:59 +1300 Subject: [PATCH 23/87] Fix email/sms template type enums getting the same values --- app/config/specs/open-api3-latest-console.json | 2 +- app/config/specs/swagger2-latest-console.json | 2 +- src/Appwrite/Specification/Format.php | 17 ++++++++++++----- 3 files changed, 14 insertions(+), 7 deletions(-) diff --git a/app/config/specs/open-api3-latest-console.json b/app/config/specs/open-api3-latest-console.json index ab85897ccb..07405b544f 100644 --- a/app/config/specs/open-api3-latest-console.json +++ b/app/config/specs/open-api3-latest-console.json @@ -1 +1 @@ -{"openapi":"3.0.0","info":{"version":"1.4.13","title":"Appwrite","description":"Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https:\/\/appwrite.io\/docs](https:\/\/appwrite.io\/docs)","termsOfService":"https:\/\/appwrite.io\/policy\/terms","contact":{"name":"Appwrite Team","url":"https:\/\/appwrite.io\/support","email":"team@appwrite.io"},"license":{"name":"BSD-3-Clause","url":"https:\/\/raw.githubusercontent.com\/appwrite\/appwrite\/master\/LICENSE"}},"servers":[{"url":"https:\/\/HOSTNAME\/v1"}],"paths":{"\/account":{"get":{"summary":"Get account","operationId":"accountGet","tags":["account"],"description":"Get the currently logged in user.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"get","weight":22,"cookies":false,"type":"","demo":"account\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"post":{"summary":"Create account","operationId":"accountCreate","tags":["account"],"description":"Use this endpoint to allow a new user to register a new account in your project. After the user registration completes successfully, you can use the [\/account\/verfication](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createVerification) route to start verifying the user email address. To allow the new user to login to their new account, you need to create a new [account session](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createEmailSession).","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"create","weight":7,"cookies":false,"type":"","demo":"account\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"New user password. Must be between 8 and 256 chars.","x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}},"delete":{"summary":"Delete account","operationId":"accountDelete","tags":["account"],"description":"Delete the currently logged in user.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":49,"cookies":false,"type":"","demo":"account\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/email":{"patch":{"summary":"Update email","operationId":"accountUpdateEmail","tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateEmail","weight":29,"cookies":false,"type":"","demo":"account\/update-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","x-example":"password"}},"required":["email","password"]}}}}}},"\/account\/identities":{"get":{"summary":"List Identities","operationId":"accountListIdentities","tags":["account"],"description":"Get the list of identities for the currently logged in user.","responses":{"200":{"description":"Identities List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/identityList"}}}}},"x-appwrite":{"method":"listIdentities","weight":13,"cookies":false,"type":"","demo":"account\/list-identities.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-identities.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/identities","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, provider, providerUid, providerEmail, providerAccessTokenExpiry","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/identities\/{identityId}":{"delete":{"summary":"Delete identity","operationId":"accountDeleteIdentity","tags":["account"],"description":"Delete an identity by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIdentity","weight":14,"cookies":false,"type":"","demo":"account\/delete-identity.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-identity.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"identityId","description":"Identity ID.","required":true,"schema":{"type":"string","x-example":"[IDENTITY_ID]"},"in":"path"}]}},"\/account\/jwt":{"post":{"summary":"Create JWT","operationId":"accountCreateJWT","tags":["account"],"description":"Use this endpoint to create a JSON Web Token. You can use the resulting JWT to authenticate on behalf of the current user when working with the Appwrite server-side API and SDKs. The JWT secret is valid for 15 minutes from its creation and will be invalid if the user will logout in that time frame.","responses":{"201":{"description":"JWT","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/jwt"}}}}},"x-appwrite":{"method":"createJWT","weight":21,"cookies":false,"type":"","demo":"account\/create-j-w-t.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-jwt.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"accounts.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"List logs","operationId":"accountListLogs","tags":["account"],"description":"Get the list of latest security activity logs for the currently logged in user. Each log returns user IP address, location and date and time of log.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listLogs","weight":25,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/mfa":{"patch":{"summary":"Update MFA","operationId":"accountUpdateMFA","tags":["account"],"description":"","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateMFA","weight":42,"cookies":false,"type":"","demo":"account\/update-m-f-a.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-mfa.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"mfa":{"type":"boolean","description":"Enable or disable MFA.","x-example":false}},"required":["mfa"]}}}}}},"\/account\/mfa\/challenge":{"post":{"summary":"Create MFA Challenge","operationId":"accountCreateChallenge","tags":["account"],"description":"","responses":{"201":{"description":"MFA Challenge","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/mfaChallenge"}}}}},"x-appwrite":{"method":"createChallenge","weight":47,"cookies":false,"type":"","demo":"account\/create-challenge.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-challenge.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},token:{param-token}","scope":"accounts.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"provider":{"type":"string","description":"provider.","x-example":"totp","enum":["totp","phone","email"],"x-enum-name":"AuthenticatorProvider","x-enum-keys":[]}},"required":["provider"]}}}}},"put":{"summary":"Create MFA Challenge (confirmation)","operationId":"accountUpdateChallenge","tags":["account"],"description":"","responses":{"204":{"description":"No content","content":{"":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateChallenge","weight":48,"cookies":false,"type":"","demo":"account\/update-challenge.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-challenge.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"challengeId":{"type":"string","description":"Valid verification token.","x-example":"[CHALLENGE_ID]"},"otp":{"type":"string","description":"Valid verification token.","x-example":"[OTP]"}},"required":["challengeId","otp"]}}}}}},"\/account\/mfa\/factors":{"get":{"summary":"List Factors","operationId":"accountListFactors","tags":["account"],"description":"Get the currently logged in user.","responses":{"200":{"description":"MFAProviders","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/mfaProviders"}}}}},"x-appwrite":{"method":"listFactors","weight":43,"cookies":false,"type":"","demo":"account\/list-factors.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/account\/mfa\/{factor}":{"post":{"summary":"Add Authenticator","operationId":"accountAddAuthenticator","tags":["account"],"description":"","responses":{"200":{"description":"MFAProvider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/mfaProvider"}}}}},"x-appwrite":{"method":"addAuthenticator","weight":44,"cookies":false,"type":"","demo":"account\/add-authenticator.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-mfa.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"factor","description":"Factor.","required":true,"schema":{"type":"string","x-example":"totp","enum":["totp"],"x-enum-name":"AuthenticatorFactor","x-enum-keys":[]},"in":"path"}]},"put":{"summary":"Verify Authenticator","operationId":"accountVerifyAuthenticator","tags":["account"],"description":"","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"verifyAuthenticator","weight":45,"cookies":false,"type":"","demo":"account\/verify-authenticator.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-mfa.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"factor","description":"Factor.","required":true,"schema":{"type":"string","x-example":"totp","enum":["totp"],"x-enum-name":"AuthenticatorFactor","x-enum-keys":[]},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"otp":{"type":"string","description":"Valid verification token.","x-example":"[OTP]"}},"required":["otp"]}}}}}},"\/account\/mfa\/{provider}":{"delete":{"summary":"Delete Authenticator","operationId":"accountDeleteAuthenticator","tags":["account"],"description":"","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"deleteAuthenticator","weight":46,"cookies":false,"type":"","demo":"account\/delete-authenticator.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-mfa.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"provider","description":"Provider.","required":true,"schema":{"type":"string","x-example":"totp","enum":["totp"],"x-enum-name":"AuthenticatorProvider","x-enum-keys":[]},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"otp":{"type":"string","description":"Valid verification token.","x-example":"[OTP]"}},"required":["otp"]}}}}}},"\/account\/name":{"patch":{"summary":"Update name","operationId":"accountUpdateName","tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateName","weight":27,"cookies":false,"type":"","demo":"account\/update-name.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-name.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["name"]}}}}}},"\/account\/password":{"patch":{"summary":"Update password","operationId":"accountUpdatePassword","tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePassword","weight":28,"cookies":false,"type":"","demo":"account\/update-password.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-password.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"password":{"type":"string","description":"New user password. Must be at least 8 chars.","x-example":null},"oldPassword":{"type":"string","description":"Current user password. Must be at least 8 chars.","x-example":"password"}},"required":["password"]}}}}}},"\/account\/phone":{"patch":{"summary":"Update phone","operationId":"accountUpdatePhone","tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createPhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePhone","weight":30,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","x-example":"password"}},"required":["phone","password"]}}}}}},"\/account\/prefs":{"get":{"summary":"Get account preferences","operationId":"accountGetPrefs","tags":["account"],"description":"Get the preferences as a key-value object for the currently logged in user.","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"getPrefs","weight":23,"cookies":false,"type":"","demo":"account\/get-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/prefs","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"patch":{"summary":"Update preferences","operationId":"accountUpdatePrefs","tags":["account"],"description":"Update currently logged in user account preferences. The object you pass is stored as is, and replaces any previous value. The maximum allowed prefs size is 64kB and throws error if exceeded.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePrefs","weight":31,"cookies":false,"type":"","demo":"account\/update-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/prefs","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"prefs":{"type":"object","description":"Prefs key-value JSON object.","x-example":"{}"}},"required":["prefs"]}}}}}},"\/account\/recovery":{"post":{"summary":"Create password recovery","operationId":"accountCreateRecovery","tags":["account"],"description":"Sends the user an email with a temporary secret key for password reset. When the user clicks the confirmation link he is redirected back to your app password reset URL with the secret key and email address values attached to the URL query string. Use the query string params to submit a request to the [PUT \/account\/recovery](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateRecovery) endpoint to complete the process. The verification link sent to the user's email address is valid for 1 hour.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createRecovery","weight":36,"cookies":false,"type":"","demo":"account\/create-recovery.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-recovery.md","rate-limit":10,"rate-time":3600,"rate-key":["url:{url},email:{param-email}","ip:{ip}"],"scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"url":{"type":"string","description":"URL to redirect the user back to your app from the recovery email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"}},"required":["email","url"]}}}}},"put":{"summary":"Create password recovery (confirmation)","operationId":"accountUpdateRecovery","tags":["account"],"description":"Use this endpoint to complete the user account password reset. Both the **userId** and **secret** arguments will be passed as query parameters to the redirect URL you have provided when sending your request to the [POST \/account\/recovery](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createRecovery) endpoint.\n\nPlease note that in order to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) the only valid redirect URLs are the ones from domains you have set when adding your platforms in the console interface.","responses":{"200":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"updateRecovery","weight":37,"cookies":false,"type":"","demo":"account\/update-recovery.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-recovery.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid reset token.","x-example":"[SECRET]"},"password":{"type":"string","description":"New user password. Must be between 8 and 256 chars.","x-example":null}},"required":["userId","secret","password"]}}}}}},"\/account\/sessions":{"get":{"summary":"List sessions","operationId":"accountListSessions","tags":["account"],"description":"Get the list of active sessions across different devices for the currently logged in user.","responses":{"200":{"description":"Sessions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/sessionList"}}}}},"x-appwrite":{"method":"listSessions","weight":24,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/sessions","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete sessions","operationId":"accountDeleteSessions","tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":35,"cookies":false,"type":"","demo":"account\/delete-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-sessions.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/account\/sessions\/anonymous":{"post":{"summary":"Create anonymous session","operationId":"accountCreateAnonymousSession","tags":["account"],"description":"Use this endpoint to allow a new user to register an anonymous account in your project. This route will also create a new session for the user. To allow the new user to convert an anonymous account to a normal account, you need to update its [email and password](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateEmail) or create an [OAuth2 session](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#CreateOAuth2Session).","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"createAnonymousSession","weight":20,"cookies":false,"type":"","demo":"account\/create-anonymous-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-anonymous.md","rate-limit":50,"rate-time":3600,"rate-key":"ip:{ip}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/sessions\/email":{"post":{"summary":"Create email password session","operationId":"accountCreateEmailPasswordSession","tags":["account"],"description":"Allow the user to login into their account by providing a valid email and password combination. This route will create a new session for the user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"createEmailPasswordSession","weight":8,"cookies":false,"type":"","demo":"account\/create-email-password-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-email-password.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","x-example":"password"}},"required":["email","password"]}}}}}},"\/account\/sessions\/magic-url":{"put":{"summary":"Create session (deprecated)","operationId":"accountUpdateMagicURLSession","tags":["account"],"description":"Use this endpoint to create a session from token. Provide the **userId** and **secret** parameters from the successful response of authentication flows initiated by token creation. For example, magic URL and phone login.","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateMagicURLSession","weight":17,"cookies":false,"type":"","demo":"account\/update-magic-u-r-l-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session.md","rate-limit":10,"rate-time":3600,"rate-key":"ip:{ip},userId:{param-userId}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/account\/sessions\/oauth2\/{provider}":{"get":{"summary":"Create OAuth2 session","operationId":"accountCreateOAuth2Session","tags":["account"],"description":"Allow the user to login to their account using the OAuth2 provider of their choice. Each OAuth2 provider should be enabled from the Appwrite console first. Use the success and failure arguments to provide a redirect URL's back to your app when login is completed.\n\nIf there is already an active session, the new session will be attached to the logged-in account. If there are no active sessions, the server will attempt to look for a user with the same email address as the email received from the OAuth2 provider and attach the new session to the existing user. If no matching user is found - the server will create a new user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).\n","responses":{"301":{"description":"File"}},"x-appwrite":{"method":"createOAuth2Session","weight":9,"cookies":false,"type":"webAuth","demo":"account\/create-o-auth2session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-oauth2.md","rate-limit":50,"rate-time":3600,"rate-key":"ip:{ip}","scope":"sessions.write","platforms":["client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"provider","description":"OAuth2 Provider. Currently, supported providers are: amazon, apple, auth0, authentik, autodesk, bitbucket, bitly, box, dailymotion, discord, disqus, dropbox, etsy, facebook, github, gitlab, google, linkedin, microsoft, notion, oidc, okta, paypal, paypalSandbox, podio, salesforce, slack, spotify, stripe, tradeshift, tradeshiftBox, twitch, wordpress, yahoo, yammer, yandex, zoho, zoom.","required":true,"schema":{"type":"string","x-example":"amazon","enum":["amazon","apple","auth0","authentik","autodesk","bitbucket","bitly","box","dailymotion","discord","disqus","dropbox","etsy","facebook","github","gitlab","google","linkedin","microsoft","notion","oidc","okta","paypal","paypalSandbox","podio","salesforce","slack","spotify","stripe","tradeshift","tradeshiftBox","twitch","wordpress","yahoo","yammer","yandex","zoho","zoom","mock"],"x-enum-name":"OAuthProvider","x-enum-keys":[]},"in":"path"},{"name":"success","description":"URL to redirect back to your app after a successful login attempt. Only URLs from hostnames in your project's platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","required":false,"schema":{"type":"string","format":"url","x-example":"https:\/\/example.com","default":""},"in":"query"},{"name":"failure","description":"URL to redirect back to your app after a failed login attempt. Only URLs from hostnames in your project's platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","required":false,"schema":{"type":"string","format":"url","x-example":"https:\/\/example.com","default":""},"in":"query"},{"name":"token","description":"Include token credentials in the final redirect, useful for server-side integrations, or when cookies are not available.","required":false,"schema":{"type":"boolean","x-example":false,"default":false},"in":"query"},{"name":"scopes","description":"A list of custom OAuth2 scopes. Check each provider internal docs for a list of supported scopes. Maximum of 100 scopes are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/sessions\/token":{"post":{"summary":"Create session","operationId":"accountCreateSession","tags":["account"],"description":"Use this endpoint to create a session from token. Provide the **userId** and **secret** parameters from the successful response of authentication flows initiated by token creation. For example, magic URL and phone login.","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"createSession","weight":18,"cookies":false,"type":"","demo":"account\/create-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session.md","rate-limit":10,"rate-time":3600,"rate-key":"ip:{ip},userId:{param-userId}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Secret of a token generated by login methods. For example, the `createMagicURLToken` or `createPhoneToken` methods.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/account\/sessions\/{sessionId}":{"get":{"summary":"Get session","operationId":"accountGetSession","tags":["account"],"description":"Use this endpoint to get a logged in user's session using a Session ID. Inputting 'current' will return the current session being used.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"getSession","weight":26,"cookies":false,"type":"","demo":"account\/get-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-session.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/sessions","offline-key":"{sessionId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to get the current device session.","required":true,"schema":{"type":"string","x-example":"[SESSION_ID]"},"in":"path"}]},"patch":{"summary":"Update (or renew) a session","operationId":"accountUpdateSession","tags":["account"],"description":"Extend session's expiry to increase it's lifespan. Extending a session is useful when session length is short such as 5 minutes.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateSession","weight":34,"cookies":false,"type":"","demo":"account\/update-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-session.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to update the current device session.","required":true,"schema":{"type":"string","x-example":"[SESSION_ID]"},"in":"path"}]},"delete":{"summary":"Delete session","operationId":"accountDeleteSession","tags":["account"],"description":"Logout the user. Use 'current' as the session ID to logout on this device, use a session ID to logout on another device. If you're looking to logout the user on all devices, use [Delete Sessions](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#deleteSessions) instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSession","weight":33,"cookies":false,"type":"","demo":"account\/delete-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-session.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to delete the current device session.","required":true,"schema":{"type":"string","x-example":"[SESSION_ID]"},"in":"path"}]}},"\/account\/status":{"patch":{"summary":"Update status","operationId":"accountUpdateStatus","tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateStatus","weight":32,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/account\/targets\/push":{"post":{"summary":"Create a push target","operationId":"accountCreatePushTarget","tags":["account"],"description":"","responses":{"201":{"description":"Target","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/target"}}}}},"x-appwrite":{"method":"createPushTarget","weight":50,"cookies":false,"type":"","demo":"account\/create-push-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"targetId":{"type":"string","description":"Target ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[TARGET_ID]"},"identifier":{"type":"string","description":"The target identifier (token, email, phone etc.)","x-example":"[IDENTIFIER]"},"providerId":{"type":"string","description":"Provider ID. Message will be sent to this target from the specified provider ID. If no provider ID is set the first setup provider will be used.","x-example":"[PROVIDER_ID]"}},"required":["targetId","identifier"]}}}}}},"\/account\/targets\/{targetId}\/push":{"put":{"summary":"Update a push target","operationId":"accountUpdatePushTarget","tags":["account"],"description":"","responses":{"200":{"description":"Target","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/target"}}}}},"x-appwrite":{"method":"updatePushTarget","weight":51,"cookies":false,"type":"","demo":"account\/update-push-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"targetId","description":"Target ID.","required":true,"schema":{"type":"string","x-example":"[TARGET_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"identifier":{"type":"string","description":"The target identifier (token, email, phone etc.)","x-example":"[IDENTIFIER]"}},"required":["identifier"]}}}}},"delete":{"summary":"Delete a push target","operationId":"accountDeletePushTarget","tags":["account"],"description":"","responses":{"204":{"description":"No content","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/target"}}}}},"x-appwrite":{"method":"deletePushTarget","weight":52,"cookies":false,"type":"","demo":"account\/delete-push-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"targetId","description":"Target ID.","required":true,"schema":{"type":"string","x-example":"[TARGET_ID]"},"in":"path"}]}},"\/account\/tokens\/email":{"post":{"summary":"Create email token (OTP)","operationId":"accountCreateEmailToken","tags":["account"],"description":"Sends the user an email with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [POST \/v1\/account\/sessions\/token](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createSession) endpoint to complete the login process. The secret sent to the user's email is valid for 15 minutes.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createEmailToken","weight":16,"cookies":false,"type":"","demo":"account\/create-email-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-token-email.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"phrase":{"type":"boolean","description":"Toggle for security phrase. If enabled, email will be send with a randomly generated phrase and the phrase will also be included in the response. Confirming phrases match increases the security of your authentication flow.","x-example":false}},"required":["userId","email"]}}}}}},"\/account\/tokens\/magic-url":{"post":{"summary":"Create magic URL token","operationId":"accountCreateMagicURLToken","tags":["account"],"description":"Sends the user an email with a secret key for creating a session. If the provided user ID has not been registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [POST \/v1\/account\/sessions\/token](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createSession) endpoint to complete the login process. The link sent to the user's email address is valid for 1 hour. If you are on a mobile device you can leave the URL parameter empty, so that the login completion will be handled by your Appwrite instance by default.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).\n","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createMagicURLToken","weight":15,"cookies":false,"type":"","demo":"account\/create-magic-u-r-l-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-token-magic-url.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"url":{"type":"string","description":"URL to redirect the user back to your app from the magic URL login. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"},"phrase":{"type":"boolean","description":"Toggle for security phrase. If enabled, email will be send with a randomly generated phrase and the phrase will also be included in the response. Confirming phrases match increases the security of your authentication flow.","x-example":false}},"required":["userId","email"]}}}}}},"\/account\/tokens\/phone":{"post":{"summary":"Create phone token","operationId":"accountCreatePhoneToken","tags":["account"],"description":"Sends the user an SMS with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [POST \/v1\/account\/sessions\/token](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createSession) endpoint to complete the login process. The secret sent to the user's phone is valid for 15 minutes.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createPhoneToken","weight":19,"cookies":false,"type":"","demo":"account\/create-phone-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-token-phone.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},phone:{param-phone}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"}},"required":["userId","phone"]}}}}}},"\/account\/verification":{"post":{"summary":"Create email verification","operationId":"accountCreateVerification","tags":["account"],"description":"Use this endpoint to send a verification message to your user email address to confirm they are the valid owners of that address. Both the **userId** and **secret** arguments will be passed as query parameters to the URL you have provided to be attached to the verification email. The provided URL should redirect the user back to your app and allow you to complete the verification process by verifying both the **userId** and **secret** parameters. Learn more about how to [complete the verification process](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateVerification). The verification link sent to the user's email address is valid for 7 days.\n\nPlease note that in order to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md), the only valid redirect URLs are the ones from domains you have set when adding your platforms in the console interface.\n","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createVerification","weight":38,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"url":{"type":"string","description":"URL to redirect the user back to your app from the verification email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"}},"required":["url"]}}}}},"put":{"summary":"Create email verification (confirmation)","operationId":"accountUpdateVerification","tags":["account"],"description":"Use this endpoint to complete the user email verification process. Use both the **userId** and **secret** parameters that were attached to your app URL to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"updateVerification","weight":39,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/account\/verification\/phone":{"post":{"summary":"Create phone verification","operationId":"accountCreatePhoneVerification","tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updatePhone) endpoint. Learn more about how to [complete the verification process](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createPhoneVerification","weight":40,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{userId}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"put":{"summary":"Create phone verification (confirmation)","operationId":"accountUpdatePhoneVerification","tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"updatePhoneVerification","weight":41,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/avatars\/browsers\/{code}":{"get":{"summary":"Get browser icon","operationId":"avatarsGetBrowser","tags":["avatars"],"description":"You can use this endpoint to show different browser icons to your users. The code argument receives the browser code as it appears in your user [GET \/account\/sessions](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#getSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getBrowser","weight":54,"cookies":false,"type":"location","demo":"avatars\/get-browser.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-browser.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Browser Code.","required":true,"schema":{"type":"string","x-example":"aa","enum":["aa","an","ch","ci","cm","cr","ff","sf","mf","ps","oi","om","op","on"],"x-enum-name":"Browser","x-enum-keys":["Avant Browser","Android WebView Beta","Google Chrome","Google Chrome (iOS)","Google Chrome (Mobile)","Chromium","Mozilla Firefox","Safari","Mobile Safari","Microsoft Edge","Microsoft Edge (iOS)","Opera Mini","Opera","Opera (Next)"]},"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"}]}},"\/avatars\/credit-cards\/{code}":{"get":{"summary":"Get credit card icon","operationId":"avatarsGetCreditCard","tags":["avatars"],"description":"The credit card endpoint will return you the icon of the credit card provider you need. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getCreditCard","weight":53,"cookies":false,"type":"location","demo":"avatars\/get-credit-card.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-credit-card.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Credit Card Code. Possible values: amex, argencard, cabal, censosud, diners, discover, elo, hipercard, jcb, mastercard, naranja, targeta-shopping, union-china-pay, visa, mir, maestro.","required":true,"schema":{"type":"string","x-example":"amex","enum":["amex","argencard","cabal","censosud","diners","discover","elo","hipercard","jcb","mastercard","naranja","targeta-shopping","union-china-pay","visa","mir","maestro"],"x-enum-name":"CreditCard","x-enum-keys":["American Express","Argencard","Cabal","Consosud","Diners Club","Discover","Elo","Hipercard","JCB","Mastercard","Naranja","Tarjeta Shopping","Union China Pay","Visa","MIR","Maestro"]},"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"}]}},"\/avatars\/favicon":{"get":{"summary":"Get favicon","operationId":"avatarsGetFavicon","tags":["avatars"],"description":"Use this endpoint to fetch the favorite icon (AKA favicon) of any remote website URL.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFavicon","weight":57,"cookies":false,"type":"location","demo":"avatars\/get-favicon.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-favicon.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"url","description":"Website URL which you want to fetch the favicon from.","required":true,"schema":{"type":"string","format":"url","x-example":"https:\/\/example.com"},"in":"query"}]}},"\/avatars\/flags\/{code}":{"get":{"summary":"Get country flag","operationId":"avatarsGetFlag","tags":["avatars"],"description":"You can use this endpoint to show different country flags icons to your users. The code argument receives the 2 letter country code. Use width, height and quality arguments to change the output settings. Country codes follow the [ISO 3166-1](https:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFlag","weight":55,"cookies":false,"type":"location","demo":"avatars\/get-flag.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-flag.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Country Code. ISO Alpha-2 country code format.","required":true,"schema":{"type":"string","x-example":"af","enum":["af","ao","al","ad","ae","ar","am","ag","au","at","az","bi","be","bj","bf","bd","bg","bh","bs","ba","by","bz","bo","br","bb","bn","bt","bw","cf","ca","ch","cl","cn","ci","cm","cd","cg","co","km","cv","cr","cu","cy","cz","de","dj","dm","dk","do","dz","ec","eg","er","es","ee","et","fi","fj","fr","fm","ga","gb","ge","gh","gn","gm","gw","gq","gr","gd","gt","gy","hn","hr","ht","hu","id","in","ie","ir","iq","is","il","it","jm","jo","jp","kz","ke","kg","kh","ki","kn","kr","kw","la","lb","lr","ly","lc","li","lk","ls","lt","lu","lv","ma","mc","md","mg","mv","mx","mh","mk","ml","mt","mm","me","mn","mz","mr","mu","mw","my","na","ne","ng","ni","nl","no","np","nr","nz","om","pk","pa","pe","ph","pw","pg","pl","kp","pt","py","qa","ro","ru","rw","sa","sd","sn","sg","sb","sl","sv","sm","so","rs","ss","st","sr","sk","si","se","sz","sc","sy","td","tg","th","tj","tm","tl","to","tt","tn","tr","tv","tz","ug","ua","uy","us","uz","va","vc","ve","vn","vu","ws","ye","za","zm","zw"],"x-enum-name":"Flag","x-enum-keys":["Afghanistan","Angola","Albania","Andorra","United Arab Emirates","Argentina","Armenia","Antigua and Barbuda","Australia","Austria","Azerbaijan","Burundi","Belgium","Benin","Burkina Faso","Bangladesh","Bulgaria","Bahrain","Bahamas","Bosnia and Herzegovina","Belarus","Belize","Bolivia","Brazil","Barbados","Brunei Darussalam","Bhutan","Botswana","Central African Republic","Canada","Switzerland","Chile","China","C\u00f4te d'Ivoire","Cameroon","Democratic Republic of the Congo","Republic of the Congo","Colombia","Comoros","Cape Verde","Costa Rica","Cuba","Cyprus","Czech Republic","Germany","Djibouti","Dominica","Denmark","Dominican Republic","Algeria","Ecuador","Egypt","Eritrea","Spain","Estonia","Ethiopia","Finland","Fiji","France","Micronesia (Federated States of)","Gabon","United Kingdom","Georgia","Ghana","Guinea","Gambia","Guinea-Bissau","Equatorial Guinea","Greece","Grenada","Guatemala","Guyana","Honduras","Croatia","Haiti","Hungary","Indonesia","India","Ireland","Iran (Islamic Republic of)","Iraq","Iceland","Israel","Italy","Jamaica","Jordan","Japan","Kazakhstan","Kenya","Kyrgyzstan","Cambodia","Kiribati","Saint Kitts and Nevis","South Korea","Kuwait","Lao People's Democratic Republic","Lebanon","Liberia","Libya","Saint Lucia","Liechtenstein","Sri Lanka","Lesotho","Lithuania","Luxembourg","Latvia","Morocco","Monaco","Moldova","Madagascar","Maldives","Mexico","Marshall Islands","North Macedonia","Mali","Malta","Myanmar","Montenegro","Mongolia","Mozambique","Mauritania","Mauritius","Malawi","Malaysia","Namibia","Niger","Nigeria","Nicaragua","Netherlands","Norway","Nepal","Nauru","New Zealand","Oman","Pakistan","Panama","Peru","Philippines","Palau","Papua New Guinea","Poland","North Korea","Portugal","Paraguay","Qatar","Romania","Russia","Rwanda","Saudi Arabia","Sudan","Senegal","Singapore","Solomon Islands","Sierra Leone","El Salvador","San Marino","Somalia","Serbia","South Sudan","Sao Tome and Principe","Suriname","Slovakia","Slovenia","Sweden","Eswatini","Seychelles","Syria","Chad","Togo","Thailand","Tajikistan","Turkmenistan","Timor-Leste","Tonga","Trinidad and Tobago","Tunisia","Turkey","Tuvalu","Tanzania","Uganda","Ukraine","Uruguay","United States","Uzbekistan","Vatican City","Saint Vincent and the Grenadines","Venezuela","Vietnam","Vanuatu","Samoa","Yemen","South Africa","Zambia","Zimbabwe"]},"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"}]}},"\/avatars\/image":{"get":{"summary":"Get image from URL","operationId":"avatarsGetImage","tags":["avatars"],"description":"Use this endpoint to fetch a remote image URL and crop it to any image size you want. This endpoint is very useful if you need to crop and display remote images in your app or in case you want to make sure a 3rd party image is properly served using a TLS protocol.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getImage","weight":56,"cookies":false,"type":"location","demo":"avatars\/get-image.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-image.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"url","description":"Image URL which you want to crop.","required":true,"schema":{"type":"string","format":"url","x-example":"https:\/\/example.com"},"in":"query"},{"name":"width","description":"Resize preview image width, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get user initials","operationId":"avatarsGetInitials","tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getInitials","weight":59,"cookies":false,"type":"location","demo":"avatars\/get-initials.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-initials.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"name","description":"Full Name. When empty, current user name or email will be used. Max length: 128 chars.","required":false,"schema":{"type":"string","x-example":"[NAME]","default":""},"in":"query"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":500},"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":500},"in":"query"},{"name":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"schema":{"type":"string","default":""},"in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR code","operationId":"avatarsGetQR","tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getQR","weight":58,"cookies":false,"type":"location","demo":"avatars\/get-q-r.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-qr.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"text","description":"Plain text to be converted to QR code image.","required":true,"schema":{"type":"string","x-example":"[TEXT]"},"in":"query"},{"name":"size","description":"QR code size. Pass an integer between 1 to 1000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":1,"default":400},"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":1},"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"schema":{"type":"boolean","x-example":false,"default":false},"in":"query"}]}},"\/console\/assistant":{"post":{"summary":"Ask Query","operationId":"assistantChat","tags":["assistant"],"description":"","responses":{"200":{"description":"File"}},"x-appwrite":{"method":"chat","weight":304,"cookies":false,"type":"","demo":"assistant\/chat.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/assistant\/chat.md","rate-limit":15,"rate-time":3600,"rate-key":"userId:{userId}","scope":"assistant.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"prompt":{"type":"string","description":"Prompt. A string containing questions asked to the AI assistant.","x-example":"[PROMPT]"}},"required":["prompt"]}}}}}},"\/console\/variables":{"get":{"summary":"Get variables","operationId":"consoleVariables","tags":["console"],"description":"Get all Environment Variables that are relevant for the console.","responses":{"200":{"description":"Console Variables","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/consoleVariables"}}}}},"x-appwrite":{"method":"variables","weight":303,"cookies":false,"type":"","demo":"console\/variables.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/console\/variables.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/databases":{"get":{"summary":"List databases","operationId":"databasesList","tags":["databases"],"description":"Get a list of all databases from the current Appwrite project. You can use the search parameter to filter your results.","responses":{"200":{"description":"Databases List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/databaseList"}}}}},"x-appwrite":{"method":"list","weight":64,"cookies":false,"type":"","demo":"databases\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create database","operationId":"databasesCreate","tags":["databases"],"description":"Create a new Database.\n","responses":{"201":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"create","weight":63,"cookies":false,"type":"","demo":"databases\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"databaseId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[DATABASE_ID]"},"name":{"type":"string","description":"Database name. Max length: 128 chars.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Is the database enabled? When set to 'disabled', users cannot access the database but Server SDKs with an API key can still read and write to the database. No data is lost when this is toggled.","x-example":false}},"required":["databaseId","name"]}}}}}},"\/databases\/usage":{"get":{"summary":"Get usage stats for the database","operationId":"databasesGetUsage","tags":["databases"],"description":"","responses":{"200":{"description":"UsageDatabases","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageDatabases"}}}}},"x-appwrite":{"method":"getUsage","weight":108,"cookies":false,"type":"","demo":"databases\/get-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"`Date range.","required":false,"schema":{"type":"string","x-example":"24h","enum":["24h","30d","90d"],"x-enum-name":"DatabaseUsageRange","x-enum-keys":["Twenty Four Hours","Thirty Days","Ninety Days"],"default":"30d"},"in":"query"}]}},"\/databases\/{databaseId}":{"get":{"summary":"Get database","operationId":"databasesGet","tags":["databases"],"description":"Get a database by its unique ID. This endpoint response returns a JSON object with the database metadata.","responses":{"200":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"get","weight":65,"cookies":false,"type":"","demo":"databases\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}]},"put":{"summary":"Update database","operationId":"databasesUpdate","tags":["databases"],"description":"Update a database by its unique ID.","responses":{"200":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"update","weight":67,"cookies":false,"type":"","demo":"databases\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Database name. Max length: 128 chars.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Is database enabled? When set to 'disabled', users cannot access the database but Server SDKs with an API key can still read and write to the database. No data is lost when this is toggled.","x-example":false}},"required":["name"]}}}}},"delete":{"summary":"Delete database","operationId":"databasesDelete","tags":["databases"],"description":"Delete a database by its unique ID. Only API keys with with databases.write scope can delete a database.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":68,"cookies":false,"type":"","demo":"databases\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections":{"get":{"summary":"List collections","operationId":"databasesListCollections","tags":["databases"],"description":"Get a list of all collections that belong to the provided databaseId. You can use the search parameter to filter your results.","responses":{"200":{"description":"Collections List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collectionList"}}}}},"x-appwrite":{"method":"listCollections","weight":70,"cookies":false,"type":"","demo":"databases\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, documentSecurity","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create collection","operationId":"databasesCreateCollection","tags":["databases"],"description":"Create a new Collection. Before using this route, you should create a new database resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"createCollection","weight":69,"cookies":false,"type":"","demo":"databases\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permissions strings. By default, no user is granted with any permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":false},"enabled":{"type":"boolean","description":"Is collection enabled? When set to 'disabled', users cannot access the collection but Server SDKs with and API key can still read and write to the collection. No data is lost when this is toggled.","x-example":false}},"required":["collectionId","name"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}":{"get":{"summary":"Get collection","operationId":"databasesGetCollection","tags":["databases"],"description":"Get a collection by its unique ID. This endpoint response returns a JSON object with the collection metadata.","responses":{"200":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"getCollection","weight":71,"cookies":false,"type":"","demo":"databases\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]},"put":{"summary":"Update collection","operationId":"databasesUpdateCollection","tags":["databases"],"description":"Update a collection by its unique ID.","responses":{"200":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"updateCollection","weight":73,"cookies":false,"type":"","demo":"databases\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":false},"enabled":{"type":"boolean","description":"Is collection enabled? When set to 'disabled', users cannot access the collection but Server SDKs with and API key can still read and write to the collection. No data is lost when this is toggled.","x-example":false}},"required":["name"]}}}}},"delete":{"summary":"Delete collection","operationId":"databasesDeleteCollection","tags":["databases"],"description":"Delete a collection by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteCollection","weight":74,"cookies":false,"type":"","demo":"databases\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes":{"get":{"summary":"List attributes","operationId":"databasesListAttributes","tags":["databases"],"description":"","responses":{"200":{"description":"Attributes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeList"}}}}},"x-appwrite":{"method":"listAttributes","weight":85,"cookies":false,"type":"","demo":"databases\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: key, type, size, required, array, status, error","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create boolean attribute","operationId":"databasesCreateBooleanAttribute","tags":["databases"],"description":"Create a boolean attribute.\n","responses":{"202":{"description":"AttributeBoolean","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeBoolean"}}}}},"x-appwrite":{"method":"createBooleanAttribute","weight":82,"cookies":false,"type":"","demo":"databases\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":false},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean\/{key}":{"patch":{"summary":"Update boolean attribute","operationId":"databasesUpdateBooleanAttribute","tags":["databases"],"description":"","responses":{"200":{"description":"AttributeBoolean","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeBoolean"}}}}},"x-appwrite":{"method":"updateBooleanAttribute","weight":94,"cookies":false,"type":"","demo":"databases\/update-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":false,"x-nullable":true}},"required":["required","default"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/datetime":{"post":{"summary":"Create datetime attribute","operationId":"databasesCreateDatetimeAttribute","tags":["databases"],"description":"","responses":{"202":{"description":"AttributeDatetime","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeDatetime"}}}}},"x-appwrite":{"method":"createDatetimeAttribute","weight":83,"cookies":false,"type":"","demo":"databases\/create-datetime-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-datetime-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for the attribute in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/datetime\/{key}":{"patch":{"summary":"Update dateTime attribute","operationId":"databasesUpdateDatetimeAttribute","tags":["databases"],"description":"","responses":{"200":{"description":"AttributeDatetime","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeDatetime"}}}}},"x-appwrite":{"method":"updateDatetimeAttribute","weight":95,"cookies":false,"type":"","demo":"databases\/update-datetime-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-datetime-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null,"x-nullable":true}},"required":["required","default"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create email attribute","operationId":"databasesCreateEmailAttribute","tags":["databases"],"description":"Create an email attribute.\n","responses":{"202":{"description":"AttributeEmail","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeEmail"}}}}},"x-appwrite":{"method":"createEmailAttribute","weight":76,"cookies":false,"type":"","demo":"databases\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"email@example.com"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/email\/{key}":{"patch":{"summary":"Update email attribute","operationId":"databasesUpdateEmailAttribute","tags":["databases"],"description":"Update an email attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeEmail","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeEmail"}}}}},"x-appwrite":{"method":"updateEmailAttribute","weight":88,"cookies":false,"type":"","demo":"databases\/update-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"email@example.com","x-nullable":true}},"required":["required","default"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create enum attribute","operationId":"databasesCreateEnumAttribute","tags":["databases"],"description":"","responses":{"202":{"description":"AttributeEnum","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeEnum"}}}}},"x-appwrite":{"method":"createEnumAttribute","weight":77,"cookies":false,"type":"","demo":"databases\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"elements":{"type":"array","description":"Array of elements in enumerated type. Uses length of longest element to determine size. Maximum of 100 elements are allowed, each 255 characters long.","x-example":null,"items":{"type":"string"}},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","elements","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/enum\/{key}":{"patch":{"summary":"Update enum attribute","operationId":"databasesUpdateEnumAttribute","tags":["databases"],"description":"Update an enum attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeEnum","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeEnum"}}}}},"x-appwrite":{"method":"updateEnumAttribute","weight":89,"cookies":false,"type":"","demo":"databases\/update-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-enum-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"elements":{"type":"array","description":"Array of elements in enumerated type. Uses length of longest element to determine size. Maximum of 100 elements are allowed, each 255 characters long.","x-example":null,"items":{"type":"string"}},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"[DEFAULT]","x-nullable":true}},"required":["elements","required","default"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create float attribute","operationId":"databasesCreateFloatAttribute","tags":["databases"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeFloat","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeFloat"}}}}},"x-appwrite":{"method":"createFloatAttribute","weight":81,"cookies":false,"type":"","demo":"databases\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"min":{"type":"number","description":"Minimum value to enforce on new documents","x-example":null},"max":{"type":"number","description":"Maximum value to enforce on new documents","x-example":null},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/float\/{key}":{"patch":{"summary":"Update float attribute","operationId":"databasesUpdateFloatAttribute","tags":["databases"],"description":"Update a float attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeFloat","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeFloat"}}}}},"x-appwrite":{"method":"updateFloatAttribute","weight":93,"cookies":false,"type":"","demo":"databases\/update-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"min":{"type":"number","description":"Minimum value to enforce on new documents","x-example":null},"max":{"type":"number","description":"Maximum value to enforce on new documents","x-example":null},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null,"x-nullable":true}},"required":["required","min","max","default"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create integer attribute","operationId":"databasesCreateIntegerAttribute","tags":["databases"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeInteger","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeInteger"}}}}},"x-appwrite":{"method":"createIntegerAttribute","weight":80,"cookies":false,"type":"","demo":"databases\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"min":{"type":"integer","description":"Minimum value to enforce on new documents","x-example":null},"max":{"type":"integer","description":"Maximum value to enforce on new documents","x-example":null},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/integer\/{key}":{"patch":{"summary":"Update integer attribute","operationId":"databasesUpdateIntegerAttribute","tags":["databases"],"description":"Update an integer attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeInteger","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeInteger"}}}}},"x-appwrite":{"method":"updateIntegerAttribute","weight":92,"cookies":false,"type":"","demo":"databases\/update-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"min":{"type":"integer","description":"Minimum value to enforce on new documents","x-example":null},"max":{"type":"integer","description":"Maximum value to enforce on new documents","x-example":null},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null,"x-nullable":true}},"required":["required","min","max","default"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP address attribute","operationId":"databasesCreateIpAttribute","tags":["databases"],"description":"Create IP address attribute.\n","responses":{"202":{"description":"AttributeIP","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeIp"}}}}},"x-appwrite":{"method":"createIpAttribute","weight":78,"cookies":false,"type":"","demo":"databases\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/ip\/{key}":{"patch":{"summary":"Update IP address attribute","operationId":"databasesUpdateIpAttribute","tags":["databases"],"description":"Update an ip attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeIP","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeIp"}}}}},"x-appwrite":{"method":"updateIpAttribute","weight":90,"cookies":false,"type":"","demo":"databases\/update-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null,"x-nullable":true}},"required":["required","default"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/relationship":{"post":{"summary":"Create relationship attribute","operationId":"databasesCreateRelationshipAttribute","tags":["databases"],"description":"Create relationship attribute. [Learn more about relationship attributes](https:\/\/appwrite.io\/docs\/databases-relationships#relationship-attributes).\n","responses":{"202":{"description":"AttributeRelationship","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeRelationship"}}}}},"x-appwrite":{"method":"createRelationshipAttribute","weight":84,"cookies":false,"type":"","demo":"databases\/create-relationship-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-relationship-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"relatedCollectionId":{"type":"string","description":"Related Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","x-example":"[RELATED_COLLECTION_ID]"},"type":{"type":"string","description":"Relation type","x-example":"oneToOne","enum":["oneToOne","manyToOne","manyToMany","oneToMany"],"x-enum-name":"RelationshipType","x-enum-keys":[]},"twoWay":{"type":"boolean","description":"Is Two Way?","x-example":false},"key":{"type":"string","description":"Attribute Key.","x-example":null},"twoWayKey":{"type":"string","description":"Two Way Attribute Key.","x-example":null},"onDelete":{"type":"string","description":"Constraints option","x-example":"cascade","enum":["cascade","restrict","setNull"],"x-enum-name":"RelationMutate","x-enum-keys":[]}},"required":["relatedCollectionId","type"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create string attribute","operationId":"databasesCreateStringAttribute","tags":["databases"],"description":"Create a string attribute.\n","responses":{"202":{"description":"AttributeString","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeString"}}}}},"x-appwrite":{"method":"createStringAttribute","weight":75,"cookies":false,"type":"","demo":"databases\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"size":{"type":"integer","description":"Attribute size for text attributes, in number of characters.","x-example":1},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false},"encrypt":{"type":"boolean","description":"Toggle encryption for the attribute. Encryption enhances security by not storing any plain text values in the database. However, encrypted attributes cannot be queried.","x-example":false}},"required":["key","size","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/string\/{key}":{"patch":{"summary":"Update string attribute","operationId":"databasesUpdateStringAttribute","tags":["databases"],"description":"Update a string attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeString","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeString"}}}}},"x-appwrite":{"method":"updateStringAttribute","weight":87,"cookies":false,"type":"","demo":"databases\/update-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"[DEFAULT]","x-nullable":true}},"required":["required","default"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL attribute","operationId":"databasesCreateUrlAttribute","tags":["databases"],"description":"Create a URL attribute.\n","responses":{"202":{"description":"AttributeURL","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeUrl"}}}}},"x-appwrite":{"method":"createUrlAttribute","weight":79,"cookies":false,"type":"","demo":"databases\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"https:\/\/example.com"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url\/{key}":{"patch":{"summary":"Update URL attribute","operationId":"databasesUpdateUrlAttribute","tags":["databases"],"description":"Update an url attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeURL","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeUrl"}}}}},"x-appwrite":{"method":"updateUrlAttribute","weight":91,"cookies":false,"type":"","demo":"databases\/update-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"https:\/\/example.com","x-nullable":true}},"required":["required","default"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get attribute","operationId":"databasesGetAttribute","tags":["databases"],"description":"","responses":{"200":{"description":"AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, or AttributeDatetime, or AttributeRelationship, or AttributeString","content":{"application\/json":{"schema":{"oneOf":[{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeRelationship"},{"$ref":"#\/components\/schemas\/attributeString"}]}}}}},"x-appwrite":{"method":"getAttribute","weight":86,"cookies":false,"type":"","demo":"databases\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}]},"delete":{"summary":"Delete attribute","operationId":"databasesDeleteAttribute","tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":97,"cookies":false,"type":"","demo":"databases\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/{key}\/relationship":{"patch":{"summary":"Update relationship attribute","operationId":"databasesUpdateRelationshipAttribute","tags":["databases"],"description":"Update relationship attribute. [Learn more about relationship attributes](https:\/\/appwrite.io\/docs\/databases-relationships#relationship-attributes).\n","responses":{"200":{"description":"AttributeRelationship","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeRelationship"}}}}},"x-appwrite":{"method":"updateRelationshipAttribute","weight":96,"cookies":false,"type":"","demo":"databases\/update-relationship-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-relationship-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"onDelete":{"type":"string","description":"Constraints option","x-example":"cascade","enum":["cascade","restrict","setNull"],"x-enum-name":"RelationMutate","x-enum-keys":[]}}}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List documents","operationId":"databasesListDocuments","tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/documentList"}}}}},"x-appwrite":{"method":"listDocuments","weight":103,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"post":{"summary":"Create document","operationId":"databasesCreateDocument","tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"createDocument","weight":102,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, only the current user is granted all permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get document","operationId":"databasesGetDocument","tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"getDocument","weight":104,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"patch":{"summary":"Update document","operationId":"databasesUpdateDocument","tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"updateDocument","weight":106,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete document","operationId":"databasesDeleteDocument","tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":107,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}\/logs":{"get":{"summary":"List document logs","operationId":"databasesListDocumentLogs","tags":["databases"],"description":"Get the document activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listDocumentLogs","weight":105,"cookies":false,"type":"","demo":"databases\/list-document-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes":{"get":{"summary":"List indexes","operationId":"databasesListIndexes","tags":["databases"],"description":"","responses":{"200":{"description":"Indexes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/indexList"}}}}},"x-appwrite":{"method":"listIndexes","weight":99,"cookies":false,"type":"","demo":"databases\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: key, type, status, attributes, error","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"post":{"summary":"Create index","operationId":"databasesCreateIndex","tags":["databases"],"description":"","responses":{"202":{"description":"Index","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/index"}}}}},"x-appwrite":{"method":"createIndex","weight":98,"cookies":false,"type":"","demo":"databases\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Index Key.","x-example":null},"type":{"type":"string","description":"Index type.","x-example":"key","enum":["key","fulltext","unique","spatial"],"x-enum-name":"IndexType","x-enum-keys":[]},"attributes":{"type":"array","description":"Array of attributes to index. Maximum of 100 attributes are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders. Maximum of 100 orders are allowed.","x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get index","operationId":"databasesGetIndex","tags":["databases"],"description":"","responses":{"200":{"description":"Index","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/index"}}}}},"x-appwrite":{"method":"getIndex","weight":100,"cookies":false,"type":"","demo":"databases\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Index Key.","required":true,"schema":{"type":"string"},"in":"path"}]},"delete":{"summary":"Delete index","operationId":"databasesDeleteIndex","tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":101,"cookies":false,"type":"","demo":"databases\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Index Key.","required":true,"schema":{"type":"string"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/logs":{"get":{"summary":"List collection logs","operationId":"databasesListCollectionLogs","tags":["databases"],"description":"Get the collection activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listCollectionLogs","weight":72,"cookies":false,"type":"","demo":"databases\/list-collection-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/usage":{"get":{"summary":"Get usage stats for a collection","operationId":"databasesGetCollectionUsage","tags":["databases"],"description":"","responses":{"200":{"description":"UsageCollection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageCollection"}}}}},"x-appwrite":{"method":"getCollectionUsage","weight":110,"cookies":false,"type":"","demo":"databases\/get-collection-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"range","description":"Date range.","required":false,"schema":{"type":"string","x-example":"24h","enum":["24h","30d","90d"],"x-enum-name":"DatabaseUsageRange","x-enum-keys":["Twenty Four Hours","Thirty Days","Ninety Days"],"default":"30d"},"in":"query"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/logs":{"get":{"summary":"List database logs","operationId":"databasesListLogs","tags":["databases"],"description":"Get the database activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listLogs","weight":66,"cookies":false,"type":"","demo":"databases\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/databases\/{databaseId}\/usage":{"get":{"summary":"Get usage stats for the database","operationId":"databasesGetDatabaseUsage","tags":["databases"],"description":"","responses":{"200":{"description":"UsageDatabase","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageDatabase"}}}}},"x-appwrite":{"method":"getDatabaseUsage","weight":109,"cookies":false,"type":"","demo":"databases\/get-database-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"range","description":"`Date range.","required":false,"schema":{"type":"string","x-example":"24h","enum":["24h","30d","90d"],"x-enum-name":"DatabaseUsageRange","x-enum-keys":["Twenty Four Hours","Thirty Days","Ninety Days"],"default":"30d"},"in":"query"}]}},"\/functions":{"get":{"summary":"List functions","operationId":"functionsList","tags":["functions"],"description":"Get a list of all the project's functions. You can use the query params to filter your results.","responses":{"200":{"description":"Functions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/functionList"}}}}},"x-appwrite":{"method":"list","weight":266,"cookies":false,"type":"","demo":"functions\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-functions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, runtime, deployment, schedule, scheduleNext, schedulePrevious, timeout, entrypoint, commands, installationId","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create function","operationId":"functionsCreate","tags":["functions"],"description":"Create a new function. You can pass a list of [permissions](https:\/\/appwrite.io\/docs\/permissions) to allow different project users or team with access to execute the function using the client API.","responses":{"201":{"description":"Function","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/function"}}}}},"x-appwrite":{"method":"create","weight":265,"cookies":false,"type":"","demo":"functions\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"functionId":{"type":"string","description":"Function ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[FUNCTION_ID]"},"name":{"type":"string","description":"Function name. Max length: 128 chars.","x-example":"[NAME]"},"runtime":{"type":"string","description":"Execution runtime.","x-example":"node-18.0","enum":["node-18.0","php-8.0","ruby-3.1","python-3.9"],"x-enum-name":null,"x-enum-keys":[]},"execute":{"type":"array","description":"An array of role strings with execution permissions. By default no user is granted with any execute permissions. [learn more about roles](https:\/\/appwrite.io\/docs\/permissions#permission-roles). Maximum of 100 roles are allowed, each 64 characters long.","x-example":"[\"any\"]","items":{"type":"string"}},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","x-example":null},"timeout":{"type":"integer","description":"Function maximum execution time in seconds.","x-example":1},"enabled":{"type":"boolean","description":"Is function enabled? When set to 'disabled', users cannot access the function but Server SDKs with and API key can still access the function. No data is lost when this is toggled.","x-example":false},"logging":{"type":"boolean","description":"Whether executions will be logged. When set to false, executions will not be logged, but will reduce resource used by your Appwrite project.","x-example":false},"entrypoint":{"type":"string","description":"Entrypoint File. This path is relative to the \"providerRootDirectory\".","x-example":"[ENTRYPOINT]"},"commands":{"type":"string","description":"Build Commands.","x-example":"[COMMANDS]"},"installationId":{"type":"string","description":"Appwrite Installation ID for VCS (Version Control System) deployment.","x-example":"[INSTALLATION_ID]"},"providerRepositoryId":{"type":"string","description":"Repository ID of the repo linked to the function.","x-example":"[PROVIDER_REPOSITORY_ID]"},"providerBranch":{"type":"string","description":"Production branch for the repo linked to the function.","x-example":"[PROVIDER_BRANCH]"},"providerSilentMode":{"type":"boolean","description":"Is the VCS (Version Control System) connection in silent mode for the repo linked to the function? In silent mode, comments will not be made on commits and pull requests.","x-example":false},"providerRootDirectory":{"type":"string","description":"Path to function code in the linked repo.","x-example":"[PROVIDER_ROOT_DIRECTORY]"},"templateRepository":{"type":"string","description":"Repository name of the template.","x-example":"[TEMPLATE_REPOSITORY]"},"templateOwner":{"type":"string","description":"The name of the owner of the template.","x-example":"[TEMPLATE_OWNER]"},"templateRootDirectory":{"type":"string","description":"Path to function code in the template repo.","x-example":"[TEMPLATE_ROOT_DIRECTORY]"},"templateBranch":{"type":"string","description":"Production branch for the repo linked to the function template.","x-example":"[TEMPLATE_BRANCH]"}},"required":["functionId","name","runtime"]}}}}}},"\/functions\/runtimes":{"get":{"summary":"List runtimes","operationId":"functionsListRuntimes","tags":["functions"],"description":"Get a list of all runtimes that are currently active on your instance.","responses":{"200":{"description":"Runtimes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/runtimeList"}}}}},"x-appwrite":{"method":"listRuntimes","weight":267,"cookies":false,"type":"","demo":"functions\/list-runtimes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-runtimes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/functions\/usage":{"get":{"summary":"Get functions usage","operationId":"functionsGetUsage","tags":["functions"],"description":"","responses":{"200":{"description":"UsageFunctions","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageFunctions"}}}}},"x-appwrite":{"method":"getUsage","weight":270,"cookies":false,"type":"","demo":"functions\/get-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"schema":{"type":"string","x-example":"24h","enum":["24h","30d","90d"],"x-enum-name":"FunctionUsageRange","x-enum-keys":["Twenty Four Hours","Thirty Days","Ninety Days"],"default":"30d"},"in":"query"}]}},"\/functions\/{functionId}":{"get":{"summary":"Get function","operationId":"functionsGet","tags":["functions"],"description":"Get a function by its unique ID.","responses":{"200":{"description":"Function","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/function"}}}}},"x-appwrite":{"method":"get","weight":268,"cookies":false,"type":"","demo":"functions\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}]},"put":{"summary":"Update function","operationId":"functionsUpdate","tags":["functions"],"description":"Update function by its unique ID.","responses":{"200":{"description":"Function","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/function"}}}}},"x-appwrite":{"method":"update","weight":271,"cookies":false,"type":"","demo":"functions\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Function name. Max length: 128 chars.","x-example":"[NAME]"},"runtime":{"type":"string","description":"Execution runtime.","x-example":"node-18.0","enum":["node-18.0","php-8.0","ruby-3.1","python-3.9"],"x-enum-name":null,"x-enum-keys":[]},"execute":{"type":"array","description":"An array of role strings with execution permissions. By default no user is granted with any execute permissions. [learn more about roles](https:\/\/appwrite.io\/docs\/permissions#permission-roles). Maximum of 100 roles are allowed, each 64 characters long.","x-example":"[\"any\"]","items":{"type":"string"}},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","x-example":null},"timeout":{"type":"integer","description":"Maximum execution time in seconds.","x-example":1},"enabled":{"type":"boolean","description":"Is function enabled? When set to 'disabled', users cannot access the function but Server SDKs with and API key can still access the function. No data is lost when this is toggled.","x-example":false},"logging":{"type":"boolean","description":"Whether executions will be logged. When set to false, executions will not be logged, but will reduce resource used by your Appwrite project.","x-example":false},"entrypoint":{"type":"string","description":"Entrypoint File. This path is relative to the \"providerRootDirectory\".","x-example":"[ENTRYPOINT]"},"commands":{"type":"string","description":"Build Commands.","x-example":"[COMMANDS]"},"installationId":{"type":"string","description":"Appwrite Installation ID for VCS (Version Controle System) deployment.","x-example":"[INSTALLATION_ID]"},"providerRepositoryId":{"type":"string","description":"Repository ID of the repo linked to the function","x-example":"[PROVIDER_REPOSITORY_ID]"},"providerBranch":{"type":"string","description":"Production branch for the repo linked to the function","x-example":"[PROVIDER_BRANCH]"},"providerSilentMode":{"type":"boolean","description":"Is the VCS (Version Control System) connection in silent mode for the repo linked to the function? In silent mode, comments will not be made on commits and pull requests.","x-example":false},"providerRootDirectory":{"type":"string","description":"Path to function code in the linked repo.","x-example":"[PROVIDER_ROOT_DIRECTORY]"}},"required":["name"]}}}}},"delete":{"summary":"Delete function","operationId":"functionsDelete","tags":["functions"],"description":"Delete a function by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":274,"cookies":false,"type":"","demo":"functions\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/deployments":{"get":{"summary":"List deployments","operationId":"functionsListDeployments","tags":["functions"],"description":"Get a list of all the project's code deployments. You can use the query params to filter your results.","responses":{"200":{"description":"Deployments List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deploymentList"}}}}},"x-appwrite":{"method":"listDeployments","weight":276,"cookies":false,"type":"","demo":"functions\/list-deployments.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-deployments.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: size, buildId, activate, entrypoint, commands","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create deployment","operationId":"functionsCreateDeployment","tags":["functions"],"description":"Create a new function code deployment. Use this endpoint to upload a new version of your code function. To execute your newly uploaded code, you'll need to update the function's deployment to use your new deployment UID.\n\nThis endpoint accepts a tar.gz file compressed with your code. Make sure to include any dependencies your code has within the compressed file. You can learn more about code packaging in the [Appwrite Cloud Functions tutorial](https:\/\/appwrite.io\/docs\/functions).\n\nUse the \"command\" param to set the entrypoint used to execute your code.","responses":{"202":{"description":"Deployment","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deployment"}}}}},"x-appwrite":{"method":"createDeployment","weight":275,"cookies":false,"type":"","demo":"functions\/create-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":true,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}],"requestBody":{"content":{"multipart\/form-data":{"schema":{"type":"object","properties":{"entrypoint":{"type":"string","description":"Entrypoint File.","x-example":"[ENTRYPOINT]"},"commands":{"type":"string","description":"Build Commands.","x-example":"[COMMANDS]"},"code":{"type":"string","description":"Gzip file with your code package. When used with the Appwrite CLI, pass the path to your code directory, and the CLI will automatically package your code. Use a path that is within the current directory.","x-example":null},"activate":{"type":"boolean","description":"Automatically activate the deployment when it is finished building.","x-example":false}},"required":["code","activate"]}}}}}},"\/functions\/{functionId}\/deployments\/{deploymentId}":{"get":{"summary":"Get deployment","operationId":"functionsGetDeployment","tags":["functions"],"description":"Get a code deployment by its unique ID.","responses":{"200":{"description":"Deployment","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deployment"}}}}},"x-appwrite":{"method":"getDeployment","weight":277,"cookies":false,"type":"","demo":"functions\/get-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"schema":{"type":"string","x-example":"[DEPLOYMENT_ID]"},"in":"path"}]},"patch":{"summary":"Update function deployment","operationId":"functionsUpdateDeployment","tags":["functions"],"description":"Update the function code deployment ID using the unique function ID. Use this endpoint to switch the code deployment that should be executed by the execution endpoint.","responses":{"200":{"description":"Function","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/function"}}}}},"x-appwrite":{"method":"updateDeployment","weight":273,"cookies":false,"type":"","demo":"functions\/update-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-function-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"schema":{"type":"string","x-example":"[DEPLOYMENT_ID]"},"in":"path"}]},"delete":{"summary":"Delete deployment","operationId":"functionsDeleteDeployment","tags":["functions"],"description":"Delete a code deployment by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDeployment","weight":278,"cookies":false,"type":"","demo":"functions\/delete-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"schema":{"type":"string","x-example":"[DEPLOYMENT_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/deployments\/{deploymentId}\/builds\/{buildId}":{"post":{"summary":"Create build","operationId":"functionsCreateBuild","tags":["functions"],"description":"Create a new build for an Appwrite Function deployment. This endpoint can be used to retry a failed build.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"createBuild","weight":279,"cookies":false,"type":"","demo":"functions\/create-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"schema":{"type":"string","x-example":"[DEPLOYMENT_ID]"},"in":"path"},{"name":"buildId","description":"Build unique ID.","required":true,"schema":{"type":"string","x-example":"[BUILD_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/deployments\/{deploymentId}\/download":{"get":{"summary":"Download Deployment","operationId":"functionsDownloadDeployment","tags":["functions"],"description":"Get a Deployment's contents by its unique ID. This endpoint supports range requests for partial or streaming file download.","responses":{"200":{"description":"File"}},"x-appwrite":{"method":"downloadDeployment","weight":272,"cookies":false,"type":"location","demo":"functions\/download-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/download-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"schema":{"type":"string","x-example":"[DEPLOYMENT_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List executions","operationId":"functionsListExecutions","tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/executionList"}}}}},"x-appwrite":{"method":"listExecutions","weight":281,"cookies":false,"type":"","demo":"functions\/list-executions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-executions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, responseStatusCode, duration","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create execution","operationId":"functionsCreateExecution","tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/execution"}}}}},"x-appwrite":{"method":"createExecution","weight":280,"cookies":false,"type":"","demo":"functions\/create-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-execution.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"body":{"type":"string","description":"HTTP body of execution. Default value is empty string.","x-example":"[BODY]"},"async":{"type":"boolean","description":"Execute code in the background. Default value is false.","x-example":false},"path":{"type":"string","description":"HTTP path of execution. Path can include query params. Default value is \/","x-example":"[PATH]"},"method":{"type":"string","description":"HTTP method of execution. Default value is GET.","x-example":"GET","enum":["GET","POST","PUT","PATCH","DELETE","OPTIONS"],"x-enum-name":"ExecutionMethod","x-enum-keys":[]},"headers":{"type":"object","description":"HTTP headers of execution. Defaults to empty.","x-example":"{}"}}}}}}}},"\/functions\/{functionId}\/executions\/{executionId}":{"get":{"summary":"Get execution","operationId":"functionsGetExecution","tags":["functions"],"description":"Get a function execution log by its unique ID.","responses":{"200":{"description":"Execution","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/execution"}}}}},"x-appwrite":{"method":"getExecution","weight":282,"cookies":false,"type":"","demo":"functions\/get-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-execution.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"executionId","description":"Execution ID.","required":true,"schema":{"type":"string","x-example":"[EXECUTION_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/usage":{"get":{"summary":"Get function usage","operationId":"functionsGetFunctionUsage","tags":["functions"],"description":"","responses":{"200":{"description":"UsageFunction","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageFunction"}}}}},"x-appwrite":{"method":"getFunctionUsage","weight":269,"cookies":false,"type":"","demo":"functions\/get-function-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"range","description":"Date range.","required":false,"schema":{"type":"string","x-example":"24h","enum":["24h","30d","90d"],"x-enum-name":"FunctionUsageRange","x-enum-keys":["Twenty Four Hours","Thirty Days","Ninety Days"],"default":"30d"},"in":"query"}]}},"\/functions\/{functionId}\/variables":{"get":{"summary":"List variables","operationId":"functionsListVariables","tags":["functions"],"description":"Get a list of all variables of a specific function.","responses":{"200":{"description":"Variables List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variableList"}}}}},"x-appwrite":{"method":"listVariables","weight":284,"cookies":false,"type":"","demo":"functions\/list-variables.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-variables.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}]},"post":{"summary":"Create variable","operationId":"functionsCreateVariable","tags":["functions"],"description":"Create a new function environment variable. These variables can be accessed in the function at runtime as environment variables.","responses":{"201":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"createVariable","weight":283,"cookies":false,"type":"","demo":"functions\/create-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","x-example":"[VALUE]"}},"required":["key","value"]}}}}}},"\/functions\/{functionId}\/variables\/{variableId}":{"get":{"summary":"Get variable","operationId":"functionsGetVariable","tags":["functions"],"description":"Get a variable by its unique ID.","responses":{"200":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"getVariable","weight":285,"cookies":false,"type":"","demo":"functions\/get-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}]},"put":{"summary":"Update variable","operationId":"functionsUpdateVariable","tags":["functions"],"description":"Update variable by its unique ID.","responses":{"200":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"updateVariable","weight":286,"cookies":false,"type":"","demo":"functions\/update-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","x-example":"[VALUE]"}},"required":["key"]}}}}},"delete":{"summary":"Delete variable","operationId":"functionsDeleteVariable","tags":["functions"],"description":"Delete a variable by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteVariable","weight":287,"cookies":false,"type":"","demo":"functions\/delete-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}]}},"\/graphql":{"post":{"summary":"GraphQL endpoint","operationId":"graphqlQuery","tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/any"}}}}},"x-appwrite":{"method":"query","weight":302,"cookies":false,"type":"graphql","demo":"graphql\/query.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/graphql\/mutation":{"post":{"summary":"GraphQL endpoint","operationId":"graphqlMutation","tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/any"}}}}},"x-appwrite":{"method":"mutation","weight":301,"cookies":false,"type":"graphql","demo":"graphql\/mutation.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/health":{"get":{"summary":"Get HTTP","operationId":"healthGet","tags":["health"],"description":"Check the Appwrite HTTP server is up and responsive.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"get","weight":119,"cookies":false,"type":"","demo":"health\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/anti-virus":{"get":{"summary":"Get antivirus","operationId":"healthGetAntivirus","tags":["health"],"description":"Check the Appwrite Antivirus server is up and connection is successful.","responses":{"200":{"description":"Health Antivirus","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthAntivirus"}}}}},"x-appwrite":{"method":"getAntivirus","weight":137,"cookies":false,"type":"","demo":"health\/get-antivirus.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-storage-anti-virus.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/cache":{"get":{"summary":"Get cache","operationId":"healthGetCache","tags":["health"],"description":"Check the Appwrite in-memory cache servers are up and connection is successful.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"getCache","weight":122,"cookies":false,"type":"","demo":"health\/get-cache.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-cache.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/db":{"get":{"summary":"Get DB","operationId":"healthGetDB","tags":["health"],"description":"Check the Appwrite database servers are up and connection is successful.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"getDB","weight":121,"cookies":false,"type":"","demo":"health\/get-d-b.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-db.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/pubsub":{"get":{"summary":"Get pubsub","operationId":"healthGetPubSub","tags":["health"],"description":"Check the Appwrite pub-sub servers are up and connection is successful.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"getPubSub","weight":124,"cookies":false,"type":"","demo":"health\/get-pub-sub.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-pubsub.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/queue":{"get":{"summary":"Get queue","operationId":"healthGetQueue","tags":["health"],"description":"Check the Appwrite queue messaging servers are up and connection is successful.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"getQueue","weight":123,"cookies":false,"type":"","demo":"health\/get-queue.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/queue\/builds":{"get":{"summary":"Get builds queue","operationId":"healthGetQueueBuilds","tags":["health"],"description":"Get the number of builds that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueBuilds","weight":129,"cookies":false,"type":"","demo":"health\/get-queue-builds.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-builds.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/certificates":{"get":{"summary":"Get certificates queue","operationId":"healthGetQueueCertificates","tags":["health"],"description":"Get the number of certificates that are waiting to be issued against [Letsencrypt](https:\/\/letsencrypt.org\/) in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueCertificates","weight":128,"cookies":false,"type":"","demo":"health\/get-queue-certificates.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-certificates.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/databases":{"get":{"summary":"Get databases queue","operationId":"healthGetQueueDatabases","tags":["health"],"description":"Get the number of database changes that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueDatabases","weight":130,"cookies":false,"type":"","demo":"health\/get-queue-databases.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-databases.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"name","description":"Queue name for which to check the queue size","required":false,"schema":{"type":"string","x-example":"[NAME]","default":"database_db_main"},"in":"query"},{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/deletes":{"get":{"summary":"Get deletes queue","operationId":"healthGetQueueDeletes","tags":["health"],"description":"Get the number of background destructive changes that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueDeletes","weight":131,"cookies":false,"type":"","demo":"health\/get-queue-deletes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-deletes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/functions":{"get":{"summary":"Get functions queue","operationId":"healthGetQueueFunctions","tags":["health"],"description":"","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueFunctions","weight":135,"cookies":false,"type":"","demo":"health\/get-queue-functions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-functions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/logs":{"get":{"summary":"Get logs queue","operationId":"healthGetQueueLogs","tags":["health"],"description":"Get the number of logs that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueLogs","weight":127,"cookies":false,"type":"","demo":"health\/get-queue-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/mails":{"get":{"summary":"Get mails queue","operationId":"healthGetQueueMails","tags":["health"],"description":"Get the number of mails that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueMails","weight":132,"cookies":false,"type":"","demo":"health\/get-queue-mails.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-mails.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/messaging":{"get":{"summary":"Get messaging queue","operationId":"healthGetQueueMessaging","tags":["health"],"description":"Get the number of messages that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueMessaging","weight":133,"cookies":false,"type":"","demo":"health\/get-queue-messaging.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-messaging.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/migrations":{"get":{"summary":"Get migrations queue","operationId":"healthGetQueueMigrations","tags":["health"],"description":"Get the number of migrations that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueMigrations","weight":134,"cookies":false,"type":"","demo":"health\/get-queue-migrations.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-migrations.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/webhooks":{"get":{"summary":"Get webhooks queue","operationId":"healthGetQueueWebhooks","tags":["health"],"description":"Get the number of webhooks that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueWebhooks","weight":126,"cookies":false,"type":"","demo":"health\/get-queue-webhooks.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-webhooks.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/storage\/local":{"get":{"summary":"Get local storage","operationId":"healthGetStorageLocal","tags":["health"],"description":"Check the Appwrite local storage device is up and connection is successful.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"getStorageLocal","weight":136,"cookies":false,"type":"","demo":"health\/get-storage-local.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-storage-local.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/time":{"get":{"summary":"Get time","operationId":"healthGetTime","tags":["health"],"description":"Check the Appwrite server time is synced with Google remote NTP server. We use this technology to smoothly handle leap seconds with no disruptive events. The [Network Time Protocol](https:\/\/en.wikipedia.org\/wiki\/Network_Time_Protocol) (NTP) is used by hundreds of millions of computers and devices to synchronize their clocks over the Internet. If your computer sets its own clock, it likely uses NTP.","responses":{"200":{"description":"Health Time","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthTime"}}}}},"x-appwrite":{"method":"getTime","weight":125,"cookies":false,"type":"","demo":"health\/get-time.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-time.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/locale":{"get":{"summary":"Get user locale","operationId":"localeGet","tags":["locale"],"description":"Get the current user location based on IP. Returns an object with user country code, country name, continent name, continent code, ip address and suggested currency. You can use the locale header to get the data in a supported language.\n\n([IP Geolocation by DB-IP](https:\/\/db-ip.com))","responses":{"200":{"description":"Locale","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/locale"}}}}},"x-appwrite":{"method":"get","weight":111,"cookies":false,"type":"","demo":"locale\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-locale.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/localed","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/codes":{"get":{"summary":"List Locale Codes","operationId":"localeListCodes","tags":["locale"],"description":"List of all locale codes in [ISO 639-1](https:\/\/en.wikipedia.org\/wiki\/List_of_ISO_639-1_codes).","responses":{"200":{"description":"Locale codes list","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/localeCodeList"}}}}},"x-appwrite":{"method":"listCodes","weight":112,"cookies":false,"type":"","demo":"locale\/list-codes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-locale-codes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/localeCode","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/continents":{"get":{"summary":"List continents","operationId":"localeListContinents","tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/continentList"}}}}},"x-appwrite":{"method":"listContinents","weight":116,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/continents","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List countries","operationId":"localeListCountries","tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountries","weight":113,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/countries","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU countries","operationId":"localeListCountriesEU","tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountriesEU","weight":114,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/countries\/eu","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List countries phone codes","operationId":"localeListCountriesPhones","tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/phoneList"}}}}},"x-appwrite":{"method":"listCountriesPhones","weight":115,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/countries\/phones","offline-key":"","offline-response-key":"countryCode","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List currencies","operationId":"localeListCurrencies","tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/currencyList"}}}}},"x-appwrite":{"method":"listCurrencies","weight":117,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/currencies","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List languages","operationId":"localeListLanguages","tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/languageList"}}}}},"x-appwrite":{"method":"listLanguages","weight":118,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/languages","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/messaging\/messages":{"get":{"summary":"List messages","operationId":"messagingListMessages","tags":["messaging"],"description":"","responses":{"200":{"description":"Message list","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/messageList"}}}}},"x-appwrite":{"method":"listMessages","weight":361,"cookies":false,"type":"","demo":"messaging\/list-messages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-messages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: scheduledAt, deliveredAt, deliveredTotal, status, description, providerType","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]}},"\/messaging\/messages\/email":{"post":{"summary":"Create an email.","operationId":"messagingCreateEmail","tags":["messaging"],"description":"","responses":{"201":{"description":"Message","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/message"}}}}},"x-appwrite":{"method":"createEmail","weight":358,"cookies":false,"type":"","demo":"messaging\/create-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"messageId":{"type":"string","description":"Message ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[MESSAGE_ID]"},"subject":{"type":"string","description":"Email Subject.","x-example":"[SUBJECT]"},"content":{"type":"string","description":"Email Content.","x-example":"[CONTENT]"},"topics":{"type":"array","description":"List of Topic IDs.","x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","x-example":null,"items":{"type":"string"}},"cc":{"type":"array","description":"Array of target IDs to be added as CC.","x-example":null,"items":{"type":"string"}},"bcc":{"type":"array","description":"Array of target IDs to be added as BCC.","x-example":null,"items":{"type":"string"}},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":"MessageType","x-enum-keys":[]},"html":{"type":"boolean","description":"Is content of type HTML","x-example":false},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","x-example":null}},"required":["messageId","subject","content"]}}}}}},"\/messaging\/messages\/email\/{messageId}":{"patch":{"summary":"Update an email.","operationId":"messagingUpdateEmail","tags":["messaging"],"description":"","responses":{"200":{"description":"Message","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/message"}}}}},"x-appwrite":{"method":"updateEmail","weight":365,"cookies":false,"type":"","demo":"messaging\/update-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"schema":{"type":"string","x-example":"[MESSAGE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"topics":{"type":"array","description":"List of Topic IDs.","x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","x-example":null,"items":{"type":"string"}},"subject":{"type":"string","description":"Email Subject.","x-example":"[SUBJECT]"},"content":{"type":"string","description":"Email Content.","x-example":"[CONTENT]"},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":"MessageType","x-enum-keys":[]},"html":{"type":"boolean","description":"Is content of type HTML","x-example":false},"cc":{"type":"array","description":"Array of target IDs to be added as CC.","x-example":null,"items":{"type":"string"}},"bcc":{"type":"array","description":"Array of target IDs to be added as BCC.","x-example":null,"items":{"type":"string"}},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","x-example":null}}}}}}}},"\/messaging\/messages\/push":{"post":{"summary":"Create a push notification.","operationId":"messagingCreatePush","tags":["messaging"],"description":"","responses":{"201":{"description":"Message","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/message"}}}}},"x-appwrite":{"method":"createPush","weight":360,"cookies":false,"type":"","demo":"messaging\/create-push.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-push-notification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"messageId":{"type":"string","description":"Message ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[MESSAGE_ID]"},"title":{"type":"string","description":"Title for push notification.","x-example":"[TITLE]"},"body":{"type":"string","description":"Body for push notification.","x-example":"[BODY]"},"topics":{"type":"array","description":"List of Topic IDs.","x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","x-example":null,"items":{"type":"string"}},"data":{"type":"object","description":"Additional Data for push notification.","x-example":"{}"},"action":{"type":"string","description":"Action for push notification.","x-example":"[ACTION]"},"icon":{"type":"string","description":"Icon for push notification. Available only for Android and Web Platform.","x-example":"[ICON]"},"sound":{"type":"string","description":"Sound for push notification. Available only for Android and IOS Platform.","x-example":"[SOUND]"},"color":{"type":"string","description":"Color for push notification. Available only for Android Platform.","x-example":"[COLOR]"},"tag":{"type":"string","description":"Tag for push notification. Available only for Android Platform.","x-example":"[TAG]"},"badge":{"type":"string","description":"Badge for push notification. Available only for IOS Platform.","x-example":"[BADGE]"},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":"MessageType","x-enum-keys":[]},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","x-example":null}},"required":["messageId","title","body"]}}}}}},"\/messaging\/messages\/push\/{messageId}":{"patch":{"summary":"Update a push notification.","operationId":"messagingUpdatePush","tags":["messaging"],"description":"","responses":{"200":{"description":"Message","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/message"}}}}},"x-appwrite":{"method":"updatePush","weight":367,"cookies":false,"type":"","demo":"messaging\/update-push.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-push-notification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"schema":{"type":"string","x-example":"[MESSAGE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"topics":{"type":"array","description":"List of Topic IDs.","x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","x-example":null,"items":{"type":"string"}},"title":{"type":"string","description":"Title for push notification.","x-example":"[TITLE]"},"body":{"type":"string","description":"Body for push notification.","x-example":"[BODY]"},"data":{"type":"object","description":"Additional Data for push notification.","x-example":"{}"},"action":{"type":"string","description":"Action for push notification.","x-example":"[ACTION]"},"icon":{"type":"string","description":"Icon for push notification. Available only for Android and Web platforms.","x-example":"[ICON]"},"sound":{"type":"string","description":"Sound for push notification. Available only for Android and iOS platforms.","x-example":"[SOUND]"},"color":{"type":"string","description":"Color for push notification. Available only for Android platforms.","x-example":"[COLOR]"},"tag":{"type":"string","description":"Tag for push notification. Available only for Android platforms.","x-example":"[TAG]"},"badge":{"type":"integer","description":"Badge for push notification. Available only for iOS platforms.","x-example":null},"status":{"type":"string","description":"Message Status. Value must be either draft, cancelled, or processing.","x-example":"draft","enum":["draft","cancelled","processing"],"x-enum-name":"MessageType","x-enum-keys":[]},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","x-example":null}}}}}}}},"\/messaging\/messages\/sms":{"post":{"summary":"Create an SMS.","operationId":"messagingCreateSMS","tags":["messaging"],"description":"","responses":{"201":{"description":"Message","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/message"}}}}},"x-appwrite":{"method":"createSMS","weight":359,"cookies":false,"type":"","demo":"messaging\/create-s-m-s.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-sms.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"messageId":{"type":"string","description":"Message ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[MESSAGE_ID]"},"content":{"type":"string","description":"SMS Content.","x-example":"[CONTENT]"},"topics":{"type":"array","description":"List of Topic IDs.","x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","x-example":null,"items":{"type":"string"}},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":"MessageType","x-enum-keys":[]},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","x-example":null}},"required":["messageId","content"]}}}}}},"\/messaging\/messages\/sms\/{messageId}":{"patch":{"summary":"Update an SMS.","operationId":"messagingUpdateSMS","tags":["messaging"],"description":"","responses":{"200":{"description":"Message","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/message"}}}}},"x-appwrite":{"method":"updateSMS","weight":366,"cookies":false,"type":"","demo":"messaging\/update-s-m-s.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"schema":{"type":"string","x-example":"[MESSAGE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"topics":{"type":"array","description":"List of Topic IDs.","x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","x-example":null,"items":{"type":"string"}},"content":{"type":"string","description":"Email Content.","x-example":"[CONTENT]"},"status":{"type":"string","description":"Message Status. Value must be either draft or cancelled or processing.","x-example":"draft","enum":["draft","cancelled","processing"],"x-enum-name":"MessageType","x-enum-keys":[]},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","x-example":null}}}}}}}},"\/messaging\/messages\/{messageId}":{"get":{"summary":"Get a message","operationId":"messagingGetMessage","tags":["messaging"],"description":"","responses":{"200":{"description":"Message","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/message"}}}}},"x-appwrite":{"method":"getMessage","weight":364,"cookies":false,"type":"","demo":"messaging\/get-message.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/get-message.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"schema":{"type":"string","x-example":"[MESSAGE_ID]"},"in":"path"}]},"delete":{"summary":"Delete a message","operationId":"messagingDelete","tags":["messaging"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":368,"cookies":false,"type":"","demo":"messaging\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-message.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"schema":{"type":"string","x-example":"[MESSAGE_ID]"},"in":"path"}]}},"\/messaging\/messages\/{messageId}\/logs":{"get":{"summary":"List message logs","operationId":"messagingListMessageLogs","tags":["messaging"],"description":"","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listMessageLogs","weight":362,"cookies":false,"type":"","demo":"messaging\/list-message-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/messages\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"schema":{"type":"string","x-example":"[MESSAGE_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/messaging\/messages\/{messageId}\/targets":{"get":{"summary":"List message targets","operationId":"messagingListTargets","tags":["messaging"],"description":"List the targets associated with a message as set via the targets attribute.","responses":{"200":{"description":"Target list","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/targetList"}}}}},"x-appwrite":{"method":"listTargets","weight":363,"cookies":false,"type":"","demo":"messaging\/list-targets.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-message-targets.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"schema":{"type":"string","x-example":"[MESSAGE_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, providerId, identifier, providerType","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/messaging\/providers":{"get":{"summary":"List providers","operationId":"messagingListProviders","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider list","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/providerList"}}}}},"x-appwrite":{"method":"listProviders","weight":333,"cookies":false,"type":"","demo":"messaging\/list-providers.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-providers.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, provider, type, enabled","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]}},"\/messaging\/providers\/apns":{"post":{"summary":"Create APNS provider","operationId":"messagingCreateAPNSProvider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createAPNSProvider","weight":332,"cookies":false,"type":"","demo":"messaging\/create-a-p-n-s-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-apns-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"authKey":{"type":"string","description":"APNS authentication key.","x-example":"[AUTH_KEY]"},"authKeyId":{"type":"string","description":"APNS authentication key ID.","x-example":"[AUTH_KEY_ID]"},"teamId":{"type":"string","description":"APNS team ID.","x-example":"[TEAM_ID]"},"bundleId":{"type":"string","description":"APNS bundle ID.","x-example":"[BUNDLE_ID]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name"]}}}}}},"\/messaging\/providers\/apns\/{providerId}":{"patch":{"summary":"Update APNS provider","operationId":"messagingUpdateAPNSProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateAPNSProvider","weight":345,"cookies":false,"type":"","demo":"messaging\/update-a-p-n-s-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-apns-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"authKey":{"type":"string","description":"APNS authentication key.","x-example":"[AUTH_KEY]"},"authKeyId":{"type":"string","description":"APNS authentication key ID.","x-example":"[AUTH_KEY_ID]"},"teamId":{"type":"string","description":"APNS team ID.","x-example":"[TEAM_ID]"},"bundleId":{"type":"string","description":"APNS bundle ID.","x-example":"[BUNDLE_ID]"}}}}}}}},"\/messaging\/providers\/fcm":{"post":{"summary":"Create FCM provider","operationId":"messagingCreateFCMProvider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createFCMProvider","weight":331,"cookies":false,"type":"","demo":"messaging\/create-f-c-m-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-fcm-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"serviceAccountJSON":{"type":"object","description":"FCM service account JSON.","x-example":"{}"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name"]}}}}}},"\/messaging\/providers\/fcm\/{providerId}":{"patch":{"summary":"Update FCM provider","operationId":"messagingUpdateFCMProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateFCMProvider","weight":344,"cookies":false,"type":"","demo":"messaging\/update-f-c-m-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-fcm-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"serviceAccountJSON":{"type":"object","description":"FCM service account JSON.","x-example":"{}"}}}}}}}},"\/messaging\/providers\/mailgun":{"post":{"summary":"Create Mailgun provider","operationId":"messagingCreateMailgunProvider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createMailgunProvider","weight":323,"cookies":false,"type":"","demo":"messaging\/create-mailgun-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-mailgun-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"apiKey":{"type":"string","description":"Mailgun API Key.","x-example":"[API_KEY]"},"domain":{"type":"string","description":"Mailgun Domain.","x-example":"[DOMAIN]"},"isEuRegion":{"type":"boolean","description":"Set as EU region.","x-example":false},"fromName":{"type":"string","description":"Sender Name.","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the reply to field for the mail. Default value is sender name. Reply to name must have reply to email as well.","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the reply to field for the mail. Default value is sender email. Reply to email must have reply to name as well.","x-example":"email@example.com"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name"]}}}}}},"\/messaging\/providers\/mailgun\/{providerId}":{"patch":{"summary":"Update Mailgun provider","operationId":"messagingUpdateMailgunProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateMailgunProvider","weight":336,"cookies":false,"type":"","demo":"messaging\/update-mailgun-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-mailgun-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"apiKey":{"type":"string","description":"Mailgun API Key.","x-example":"[API_KEY]"},"domain":{"type":"string","description":"Mailgun Domain.","x-example":"[DOMAIN]"},"isEuRegion":{"type":"boolean","description":"Set as EU region.","x-example":false},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"fromName":{"type":"string","description":"Sender Name.","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the reply to field for the mail. Default value is sender name.","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the reply to field for the mail. Default value is sender email.","x-example":"[REPLY_TO_EMAIL]"}}}}}}}},"\/messaging\/providers\/msg91":{"post":{"summary":"Create Msg91 provider","operationId":"messagingCreateMsg91Provider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createMsg91Provider","weight":326,"cookies":false,"type":"","demo":"messaging\/create-msg91provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-msg91-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"senderId":{"type":"string","description":"Msg91 Sender ID.","x-example":"[SENDER_ID]"},"authKey":{"type":"string","description":"Msg91 Auth Key.","x-example":"[AUTH_KEY]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name"]}}}}}},"\/messaging\/providers\/msg91\/{providerId}":{"patch":{"summary":"Update Msg91 provider","operationId":"messagingUpdateMsg91Provider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateMsg91Provider","weight":339,"cookies":false,"type":"","demo":"messaging\/update-msg91provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-msg91-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"senderId":{"type":"string","description":"Msg91 Sender ID.","x-example":"[SENDER_ID]"},"authKey":{"type":"string","description":"Msg91 Auth Key.","x-example":"[AUTH_KEY]"},"from":{"type":"string","description":"Sender number.","x-example":"[FROM]"}}}}}}}},"\/messaging\/providers\/sendgrid":{"post":{"summary":"Create Sendgrid provider","operationId":"messagingCreateSendgridProvider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createSendgridProvider","weight":324,"cookies":false,"type":"","demo":"messaging\/create-sendgrid-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-sengrid-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"apiKey":{"type":"string","description":"Sendgrid API key.","x-example":"[API_KEY]"},"fromName":{"type":"string","description":"Sender Name.","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the reply to field for the mail. Default value is sender name.","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the reply to field for the mail. Default value is sender email.","x-example":"email@example.com"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name"]}}}}}},"\/messaging\/providers\/sendgrid\/{providerId}":{"patch":{"summary":"Update Sendgrid provider","operationId":"messagingUpdateSendgridProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateSendgridProvider","weight":337,"cookies":false,"type":"","demo":"messaging\/update-sendgrid-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-sendgrid-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"apiKey":{"type":"string","description":"Sendgrid API key.","x-example":"[API_KEY]"},"fromName":{"type":"string","description":"Sender Name.","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the Reply To field for the mail. Default value is Sender Name.","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the Reply To field for the mail. Default value is Sender Email.","x-example":"[REPLY_TO_EMAIL]"}}}}}}}},"\/messaging\/providers\/smtp":{"post":{"summary":"Create SMTP provider","operationId":"messagingCreateSMTPProvider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createSMTPProvider","weight":325,"cookies":false,"type":"","demo":"messaging\/create-s-m-t-p-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-smtp-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"host":{"type":"string","description":"SMTP hosts. Either a single hostname or multiple semicolon-delimited hostnames. You can also specify a different port for each host by using this format: [hostname:port] (e.g. \"smtp1.example.com:25;smtp2.example.com\"). You can also specify encryption type, for example: (e.g. \"tls:\/\/smtp1.example.com:587;ssl:\/\/smtp2.example.com:465\"). Hosts will be tried in order.","x-example":"[HOST]"},"port":{"type":"integer","description":"The default SMTP server port.","x-example":1},"username":{"type":"string","description":"Authentication username.","x-example":"[USERNAME]"},"password":{"type":"string","description":"Authentication password.","x-example":"[PASSWORD]"},"encryption":{"type":"string","description":"Encryption type. Can be omitted, 'ssl', or 'tls'","x-example":"none","enum":["none","ssl","tls"],"x-enum-name":"SMTPEncryption","x-enum-keys":[]},"autoTLS":{"type":"boolean","description":"Enable SMTP AutoTLS feature.","x-example":false},"mailer":{"type":"string","description":"The value to use for the X-Mailer header.","x-example":"[MAILER]"},"fromName":{"type":"string","description":"Sender Name.","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the reply to field for the mail. Default value is sender name.","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the reply to field for the mail. Default value is sender email.","x-example":"email@example.com"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name","host"]}}}}}},"\/messaging\/providers\/smtp\/{providerId}":{"patch":{"summary":"Update SMTP provider","operationId":"messagingUpdateSMTPProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateSMTPProvider","weight":338,"cookies":false,"type":"","demo":"messaging\/update-s-m-t-p-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-smtp-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"host":{"type":"string","description":"SMTP hosts. Either a single hostname or multiple semicolon-delimited hostnames. You can also specify a different port for each host by using this format: [hostname:port] (e.g. \"smtp1.example.com:25;smtp2.example.com\"). You can also specify encryption type, for example: (e.g. \"tls:\/\/smtp1.example.com:587;ssl:\/\/smtp2.example.com:465\"). Hosts will be tried in order.","x-example":"[HOST]"},"port":{"type":"integer","description":"SMTP port.","x-example":1},"username":{"type":"string","description":"Authentication username.","x-example":"[USERNAME]"},"password":{"type":"string","description":"Authentication password.","x-example":"[PASSWORD]"},"encryption":{"type":"string","description":"Encryption type. Can be 'ssl' or 'tls'","x-example":"none","enum":["none","ssl","tls"],"x-enum-name":"SMTPEncryption","x-enum-keys":[]},"autoTLS":{"type":"boolean","description":"Enable SMTP AutoTLS feature.","x-example":false},"fromName":{"type":"string","description":"Sender Name.","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the Reply To field for the mail. Default value is Sender Name.","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the Reply To field for the mail. Default value is Sender Email.","x-example":"[REPLY_TO_EMAIL]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}}}}}}}},"\/messaging\/providers\/telesign":{"post":{"summary":"Create Telesign provider","operationId":"messagingCreateTelesignProvider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createTelesignProvider","weight":327,"cookies":false,"type":"","demo":"messaging\/create-telesign-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-telesign-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"username":{"type":"string","description":"Telesign username.","x-example":"[USERNAME]"},"password":{"type":"string","description":"Telesign password.","x-example":"[PASSWORD]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name"]}}}}}},"\/messaging\/providers\/telesign\/{providerId}":{"patch":{"summary":"Update Telesign provider","operationId":"messagingUpdateTelesignProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateTelesignProvider","weight":340,"cookies":false,"type":"","demo":"messaging\/update-telesign-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-telesign-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"username":{"type":"string","description":"Telesign username.","x-example":"[USERNAME]"},"password":{"type":"string","description":"Telesign password.","x-example":"[PASSWORD]"},"from":{"type":"string","description":"Sender number.","x-example":"[FROM]"}}}}}}}},"\/messaging\/providers\/textmagic":{"post":{"summary":"Create Textmagic provider","operationId":"messagingCreateTextmagicProvider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createTextmagicProvider","weight":328,"cookies":false,"type":"","demo":"messaging\/create-textmagic-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-textmagic-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"username":{"type":"string","description":"Textmagic username.","x-example":"[USERNAME]"},"apiKey":{"type":"string","description":"Textmagic apiKey.","x-example":"[API_KEY]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name"]}}}}}},"\/messaging\/providers\/textmagic\/{providerId}":{"patch":{"summary":"Update Textmagic provider","operationId":"messagingUpdateTextmagicProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateTextmagicProvider","weight":341,"cookies":false,"type":"","demo":"messaging\/update-textmagic-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-textmagic-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"username":{"type":"string","description":"Textmagic username.","x-example":"[USERNAME]"},"apiKey":{"type":"string","description":"Textmagic apiKey.","x-example":"[API_KEY]"},"from":{"type":"string","description":"Sender number.","x-example":"[FROM]"}}}}}}}},"\/messaging\/providers\/twilio":{"post":{"summary":"Create Twilio provider","operationId":"messagingCreateTwilioProvider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createTwilioProvider","weight":329,"cookies":false,"type":"","demo":"messaging\/create-twilio-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-twilio-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"accountSid":{"type":"string","description":"Twilio account secret ID.","x-example":"[ACCOUNT_SID]"},"authToken":{"type":"string","description":"Twilio authentication token.","x-example":"[AUTH_TOKEN]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name"]}}}}}},"\/messaging\/providers\/twilio\/{providerId}":{"patch":{"summary":"Update Twilio provider","operationId":"messagingUpdateTwilioProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateTwilioProvider","weight":342,"cookies":false,"type":"","demo":"messaging\/update-twilio-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-twilio-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"accountSid":{"type":"string","description":"Twilio account secret ID.","x-example":"[ACCOUNT_SID]"},"authToken":{"type":"string","description":"Twilio authentication token.","x-example":"[AUTH_TOKEN]"},"from":{"type":"string","description":"Sender number.","x-example":"[FROM]"}}}}}}}},"\/messaging\/providers\/vonage":{"post":{"summary":"Create Vonage provider","operationId":"messagingCreateVonageProvider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createVonageProvider","weight":330,"cookies":false,"type":"","demo":"messaging\/create-vonage-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-vonage-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"apiKey":{"type":"string","description":"Vonage API key.","x-example":"[API_KEY]"},"apiSecret":{"type":"string","description":"Vonage API secret.","x-example":"[API_SECRET]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name"]}}}}}},"\/messaging\/providers\/vonage\/{providerId}":{"patch":{"summary":"Update Vonage provider","operationId":"messagingUpdateVonageProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateVonageProvider","weight":343,"cookies":false,"type":"","demo":"messaging\/update-vonage-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-vonage-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"apiKey":{"type":"string","description":"Vonage API key.","x-example":"[API_KEY]"},"apiSecret":{"type":"string","description":"Vonage API secret.","x-example":"[API_SECRET]"},"from":{"type":"string","description":"Sender number.","x-example":"[FROM]"}}}}}}}},"\/messaging\/providers\/{providerId}":{"get":{"summary":"Get provider","operationId":"messagingGetProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"getProvider","weight":335,"cookies":false,"type":"","demo":"messaging\/get-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/get-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}]},"delete":{"summary":"Delete provider","operationId":"messagingDeleteProvider","tags":["messaging"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteProvider","weight":346,"cookies":false,"type":"","demo":"messaging\/delete-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}]}},"\/messaging\/providers\/{providerId}\/logs":{"get":{"summary":"List provider logs","operationId":"messagingListProviderLogs","tags":["messaging"],"description":"","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listProviderLogs","weight":334,"cookies":false,"type":"","demo":"messaging\/list-provider-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/providers\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/messaging\/subscribers\/{subscriberId}\/logs":{"get":{"summary":"List subscriber logs","operationId":"messagingListSubscriberLogs","tags":["messaging"],"description":"","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listSubscriberLogs","weight":355,"cookies":false,"type":"","demo":"messaging\/list-subscriber-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/subscribers\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"subscriberId","description":"Subscriber ID.","required":true,"schema":{"type":"string","x-example":"[SUBSCRIBER_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/messaging\/topics":{"get":{"summary":"List topics.","operationId":"messagingListTopics","tags":["messaging"],"description":"","responses":{"200":{"description":"Topic list","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/topicList"}}}}},"x-appwrite":{"method":"listTopics","weight":348,"cookies":false,"type":"","demo":"messaging\/list-topics.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-topics.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, description, total","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create a topic.","operationId":"messagingCreateTopic","tags":["messaging"],"description":"","responses":{"201":{"description":"Topic","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/topic"}}}}},"x-appwrite":{"method":"createTopic","weight":347,"cookies":false,"type":"","demo":"messaging\/create-topic.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-topic.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"topicId":{"type":"string","description":"Topic ID. Choose a custom Topic ID or a new Topic ID.","x-example":"[TOPIC_ID]"},"name":{"type":"string","description":"Topic Name.","x-example":"[NAME]"}},"required":["topicId","name"]}}}}}},"\/messaging\/topics\/{topicId}":{"get":{"summary":"Get a topic.","operationId":"messagingGetTopic","tags":["messaging"],"description":"","responses":{"200":{"description":"Topic","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/topic"}}}}},"x-appwrite":{"method":"getTopic","weight":350,"cookies":false,"type":"","demo":"messaging\/get-topic.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/get-topic.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID.","required":true,"schema":{"type":"string","x-example":"[TOPIC_ID]"},"in":"path"}]},"patch":{"summary":"Update a topic.","operationId":"messagingUpdateTopic","tags":["messaging"],"description":"","responses":{"200":{"description":"Topic","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/topic"}}}}},"x-appwrite":{"method":"updateTopic","weight":351,"cookies":false,"type":"","demo":"messaging\/update-topic.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-topic.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID.","required":true,"schema":{"type":"string","x-example":"[TOPIC_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Topic Name.","x-example":"[NAME]"}}}}}}},"delete":{"summary":"Delete a topic.","operationId":"messagingDeleteTopic","tags":["messaging"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteTopic","weight":352,"cookies":false,"type":"","demo":"messaging\/delete-topic.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-topic.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID.","required":true,"schema":{"type":"string","x-example":"[TOPIC_ID]"},"in":"path"}]}},"\/messaging\/topics\/{topicId}\/logs":{"get":{"summary":"List topic logs","operationId":"messagingListTopicLogs","tags":["messaging"],"description":"","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listTopicLogs","weight":349,"cookies":false,"type":"","demo":"messaging\/list-topic-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/topics\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID.","required":true,"schema":{"type":"string","x-example":"[TOPIC_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/messaging\/topics\/{topicId}\/subscribers":{"get":{"summary":"List subscribers.","operationId":"messagingListSubscribers","tags":["messaging"],"description":"","responses":{"200":{"description":"Subscriber list","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/subscriberList"}}}}},"x-appwrite":{"method":"listSubscribers","weight":354,"cookies":false,"type":"","demo":"messaging\/list-subscribers.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-subscribers.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID subscribed to.","required":true,"schema":{"type":"string","x-example":"[TOPIC_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, provider, type, enabled","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create a subscriber.","operationId":"messagingCreateSubscriber","tags":["messaging"],"description":"","responses":{"201":{"description":"Subscriber","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/subscriber"}}}}},"x-appwrite":{"method":"createSubscriber","weight":353,"cookies":false,"type":"","demo":"messaging\/create-subscriber.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-subscriber.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.write","platforms":["server","client","console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID to subscribe to.","required":true,"schema":{"type":"string","x-example":"[TOPIC_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"subscriberId":{"type":"string","description":"Subscriber ID. Choose a custom Subscriber ID or a new Subscriber ID.","x-example":"[SUBSCRIBER_ID]"},"targetId":{"type":"string","description":"Target ID. The target ID to link to the specified Topic ID.","x-example":"[TARGET_ID]"}},"required":["subscriberId","targetId"]}}}}}},"\/messaging\/topics\/{topicId}\/subscribers\/{subscriberId}":{"get":{"summary":"Get a subscriber.","operationId":"messagingGetSubscriber","tags":["messaging"],"description":"","responses":{"200":{"description":"Subscriber","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/subscriber"}}}}},"x-appwrite":{"method":"getSubscriber","weight":356,"cookies":false,"type":"","demo":"messaging\/get-subscriber.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/get-subscriber.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID subscribed to.","required":true,"schema":{"type":"string","x-example":"[TOPIC_ID]"},"in":"path"},{"name":"subscriberId","description":"Subscriber ID.","required":true,"schema":{"type":"string","x-example":"[SUBSCRIBER_ID]"},"in":"path"}]},"delete":{"summary":"Delete a subscriber.","operationId":"messagingDeleteSubscriber","tags":["messaging"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSubscriber","weight":357,"cookies":false,"type":"","demo":"messaging\/delete-subscriber.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-subscriber.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.write","platforms":["server","client","console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID subscribed to.","required":true,"schema":{"type":"string","x-example":"[TOPIC_ID]"},"in":"path"},{"name":"subscriberId","description":"Subscriber ID.","required":true,"schema":{"type":"string","x-example":"[SUBSCRIBER_ID]"},"in":"path"}]}},"\/migrations":{"get":{"summary":"List Migrations","operationId":"migrationsList","tags":["migrations"],"description":"","responses":{"200":{"description":"Migrations List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/migrationList"}}}}},"x-appwrite":{"method":"list","weight":310,"cookies":false,"type":"","demo":"migrations\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/list-migrations.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: status, stage, source, resources, statusCounters, resourceData, errors","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]}},"\/migrations\/appwrite":{"post":{"summary":"Migrate Appwrite Data","operationId":"migrationsCreateAppwriteMigration","tags":["migrations"],"description":"","responses":{"202":{"description":"Migration","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/migration"}}}}},"x-appwrite":{"method":"createAppwriteMigration","weight":305,"cookies":false,"type":"","demo":"migrations\/create-appwrite-migration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-appwrite.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"resources":{"type":"array","description":"List of resources to migrate","x-example":null,"items":{"type":"string"}},"endpoint":{"type":"string","description":"Source's Appwrite Endpoint","x-example":"https:\/\/example.com"},"projectId":{"type":"string","description":"Source's Project ID","x-example":"[PROJECT_ID]"},"apiKey":{"type":"string","description":"Source's API Key","x-example":"[API_KEY]"}},"required":["resources","endpoint","projectId","apiKey"]}}}}}},"\/migrations\/appwrite\/report":{"get":{"summary":"Generate a report on Appwrite Data","operationId":"migrationsGetAppwriteReport","tags":["migrations"],"description":"","responses":{"200":{"description":"Migration Report","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/migrationReport"}}}}},"x-appwrite":{"method":"getAppwriteReport","weight":312,"cookies":false,"type":"","demo":"migrations\/get-appwrite-report.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-appwrite-report.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"resources","description":"List of resources to migrate","required":true,"schema":{"type":"array","items":{"type":"string"}},"in":"query"},{"name":"endpoint","description":"Source's Appwrite Endpoint","required":true,"schema":{"type":"string","format":"url","x-example":"https:\/\/example.com"},"in":"query"},{"name":"projectID","description":"Source's Project ID","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"query"},{"name":"key","description":"Source's API Key","required":true,"schema":{"type":"string","x-example":"[KEY]"},"in":"query"}]}},"\/migrations\/firebase":{"post":{"summary":"Migrate Firebase Data (Service Account)","operationId":"migrationsCreateFirebaseMigration","tags":["migrations"],"description":"","responses":{"202":{"description":"Migration","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/migration"}}}}},"x-appwrite":{"method":"createFirebaseMigration","weight":307,"cookies":false,"type":"","demo":"migrations\/create-firebase-migration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-firebase.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"resources":{"type":"array","description":"List of resources to migrate","x-example":null,"items":{"type":"string"}},"serviceAccount":{"type":"string","description":"JSON of the Firebase service account credentials","x-example":"[SERVICE_ACCOUNT]"}},"required":["resources","serviceAccount"]}}}}}},"\/migrations\/firebase\/deauthorize":{"get":{"summary":"Revoke Appwrite's authorization to access Firebase Projects","operationId":"migrationsDeleteFirebaseAuth","tags":["migrations"],"description":"","responses":{"200":{"description":"File"}},"x-appwrite":{"method":"deleteFirebaseAuth","weight":318,"cookies":false,"type":"","demo":"migrations\/delete-firebase-auth.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/migrations\/firebase\/oauth":{"post":{"summary":"Migrate Firebase Data (OAuth)","operationId":"migrationsCreateFirebaseOAuthMigration","tags":["migrations"],"description":"","responses":{"202":{"description":"Migration","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/migration"}}}}},"x-appwrite":{"method":"createFirebaseOAuthMigration","weight":306,"cookies":false,"type":"","demo":"migrations\/create-firebase-o-auth-migration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-firebase.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"resources":{"type":"array","description":"List of resources to migrate","x-example":null,"items":{"type":"string"}},"projectId":{"type":"string","description":"Project ID of the Firebase Project","x-example":"[PROJECT_ID]"}},"required":["resources","projectId"]}}}}}},"\/migrations\/firebase\/projects":{"get":{"summary":"List Firebase Projects","operationId":"migrationsListFirebaseProjects","tags":["migrations"],"description":"","responses":{"200":{"description":"Migrations Firebase Projects List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/firebaseProjectList"}}}}},"x-appwrite":{"method":"listFirebaseProjects","weight":317,"cookies":false,"type":"","demo":"migrations\/list-firebase-projects.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/migrations\/firebase\/report":{"get":{"summary":"Generate a report on Firebase Data","operationId":"migrationsGetFirebaseReport","tags":["migrations"],"description":"","responses":{"200":{"description":"Migration Report","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/migrationReport"}}}}},"x-appwrite":{"method":"getFirebaseReport","weight":313,"cookies":false,"type":"","demo":"migrations\/get-firebase-report.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-firebase-report.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"resources","description":"List of resources to migrate","required":true,"schema":{"type":"array","items":{"type":"string"}},"in":"query"},{"name":"serviceAccount","description":"JSON of the Firebase service account credentials","required":true,"schema":{"type":"string","x-example":"[SERVICE_ACCOUNT]"},"in":"query"}]}},"\/migrations\/firebase\/report\/oauth":{"get":{"summary":"Generate a report on Firebase Data using OAuth","operationId":"migrationsGetFirebaseReportOAuth","tags":["migrations"],"description":"","responses":{"200":{"description":"Migration Report","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/migrationReport"}}}}},"x-appwrite":{"method":"getFirebaseReportOAuth","weight":314,"cookies":false,"type":"","demo":"migrations\/get-firebase-report-o-auth.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-firebase-report.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"resources","description":"List of resources to migrate","required":true,"schema":{"type":"array","items":{"type":"string"}},"in":"query"},{"name":"projectId","description":"Project ID","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"query"}]}},"\/migrations\/nhost":{"post":{"summary":"Migrate NHost Data","operationId":"migrationsCreateNHostMigration","tags":["migrations"],"description":"","responses":{"202":{"description":"Migration","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/migration"}}}}},"x-appwrite":{"method":"createNHostMigration","weight":309,"cookies":false,"type":"","demo":"migrations\/create-n-host-migration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-nhost.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"resources":{"type":"array","description":"List of resources to migrate","x-example":null,"items":{"type":"string"}},"subdomain":{"type":"string","description":"Source's Subdomain","x-example":"[SUBDOMAIN]"},"region":{"type":"string","description":"Source's Region","x-example":"[REGION]"},"adminSecret":{"type":"string","description":"Source's Admin Secret","x-example":"[ADMIN_SECRET]"},"database":{"type":"string","description":"Source's Database Name","x-example":"[DATABASE]"},"username":{"type":"string","description":"Source's Database Username","x-example":"[USERNAME]"},"password":{"type":"string","description":"Source's Database Password","x-example":"[PASSWORD]"},"port":{"type":"integer","description":"Source's Database Port","x-example":null}},"required":["resources","subdomain","region","adminSecret","database","username","password"]}}}}}},"\/migrations\/nhost\/report":{"get":{"summary":"Generate a report on NHost Data","operationId":"migrationsGetNHostReport","tags":["migrations"],"description":"","responses":{"200":{"description":"Migration Report","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/migrationReport"}}}}},"x-appwrite":{"method":"getNHostReport","weight":320,"cookies":false,"type":"","demo":"migrations\/get-n-host-report.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-nhost-report.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"resources","description":"List of resources to migrate.","required":true,"schema":{"type":"array","items":{"type":"string"}},"in":"query"},{"name":"subdomain","description":"Source's Subdomain.","required":true,"schema":{"type":"string","x-example":"[SUBDOMAIN]"},"in":"query"},{"name":"region","description":"Source's Region.","required":true,"schema":{"type":"string","x-example":"[REGION]"},"in":"query"},{"name":"adminSecret","description":"Source's Admin Secret.","required":true,"schema":{"type":"string","x-example":"[ADMIN_SECRET]"},"in":"query"},{"name":"database","description":"Source's Database Name.","required":true,"schema":{"type":"string","x-example":"[DATABASE]"},"in":"query"},{"name":"username","description":"Source's Database Username.","required":true,"schema":{"type":"string","x-example":"[USERNAME]"},"in":"query"},{"name":"password","description":"Source's Database Password.","required":true,"schema":{"type":"string","x-example":"[PASSWORD]"},"in":"query"},{"name":"port","description":"Source's Database Port.","required":false,"schema":{"type":"integer","format":"int32","default":5432},"in":"query"}]}},"\/migrations\/supabase":{"post":{"summary":"Migrate Supabase Data","operationId":"migrationsCreateSupabaseMigration","tags":["migrations"],"description":"","responses":{"202":{"description":"Migration","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/migration"}}}}},"x-appwrite":{"method":"createSupabaseMigration","weight":308,"cookies":false,"type":"","demo":"migrations\/create-supabase-migration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-supabase.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"resources":{"type":"array","description":"List of resources to migrate","x-example":null,"items":{"type":"string"}},"endpoint":{"type":"string","description":"Source's Supabase Endpoint","x-example":"https:\/\/example.com"},"apiKey":{"type":"string","description":"Source's API Key","x-example":"[API_KEY]"},"databaseHost":{"type":"string","description":"Source's Database Host","x-example":"[DATABASE_HOST]"},"username":{"type":"string","description":"Source's Database Username","x-example":"[USERNAME]"},"password":{"type":"string","description":"Source's Database Password","x-example":"[PASSWORD]"},"port":{"type":"integer","description":"Source's Database Port","x-example":null}},"required":["resources","endpoint","apiKey","databaseHost","username","password"]}}}}}},"\/migrations\/supabase\/report":{"get":{"summary":"Generate a report on Supabase Data","operationId":"migrationsGetSupabaseReport","tags":["migrations"],"description":"","responses":{"200":{"description":"Migration Report","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/migrationReport"}}}}},"x-appwrite":{"method":"getSupabaseReport","weight":319,"cookies":false,"type":"","demo":"migrations\/get-supabase-report.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-supabase-report.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"resources","description":"List of resources to migrate","required":true,"schema":{"type":"array","items":{"type":"string"}},"in":"query"},{"name":"endpoint","description":"Source's Supabase Endpoint.","required":true,"schema":{"type":"string","format":"url","x-example":"https:\/\/example.com"},"in":"query"},{"name":"apiKey","description":"Source's API Key.","required":true,"schema":{"type":"string","x-example":"[API_KEY]"},"in":"query"},{"name":"databaseHost","description":"Source's Database Host.","required":true,"schema":{"type":"string","x-example":"[DATABASE_HOST]"},"in":"query"},{"name":"username","description":"Source's Database Username.","required":true,"schema":{"type":"string","x-example":"[USERNAME]"},"in":"query"},{"name":"password","description":"Source's Database Password.","required":true,"schema":{"type":"string","x-example":"[PASSWORD]"},"in":"query"},{"name":"port","description":"Source's Database Port.","required":false,"schema":{"type":"integer","format":"int32","default":5432},"in":"query"}]}},"\/migrations\/{migrationId}":{"get":{"summary":"Get Migration","operationId":"migrationsGet","tags":["migrations"],"description":"","responses":{"200":{"description":"Migration","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/migration"}}}}},"x-appwrite":{"method":"get","weight":311,"cookies":false,"type":"","demo":"migrations\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/get-migration.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"migrationId","description":"Migration unique ID.","required":true,"schema":{"type":"string","x-example":"[MIGRATION_ID]"},"in":"path"}]},"patch":{"summary":"Retry Migration","operationId":"migrationsRetry","tags":["migrations"],"description":"","responses":{"202":{"description":"Migration","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/migration"}}}}},"x-appwrite":{"method":"retry","weight":321,"cookies":false,"type":"","demo":"migrations\/retry.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/retry-migration.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"migrationId","description":"Migration unique ID.","required":true,"schema":{"type":"string","x-example":"[MIGRATION_ID]"},"in":"path"}]},"delete":{"summary":"Delete Migration","operationId":"migrationsDelete","tags":["migrations"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":322,"cookies":false,"type":"","demo":"migrations\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-migration.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"migrationId","description":"Migration ID.","required":true,"schema":{"type":"string","x-example":"[MIGRATION_ID]"},"in":"path"}]}},"\/project\/usage":{"get":{"summary":"Get usage stats for a project","operationId":"projectGetUsage","tags":["project"],"description":"","responses":{"200":{"description":"UsageProject","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageProject"}}}}},"x-appwrite":{"method":"getUsage","weight":179,"cookies":false,"type":"","demo":"project\/get-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"startDate","description":"Starting date for the usage","required":true,"schema":{"type":"string"},"in":"query"},{"name":"endDate","description":"End date for the usage","required":true,"schema":{"type":"string"},"in":"query"},{"name":"period","description":"Period used","required":false,"schema":{"type":"string","x-example":"1h","enum":["1h","1d"],"x-enum-name":"ProjectUsageRange","x-enum-keys":["One Hour","One Day"],"default":"1d"},"in":"query"}]}},"\/project\/variables":{"get":{"summary":"List Variables","operationId":"projectListVariables","tags":["project"],"description":"Get a list of all project variables. These variables will be accessible in all Appwrite Functions at runtime.","responses":{"200":{"description":"Variables List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variableList"}}}}},"x-appwrite":{"method":"listVariables","weight":181,"cookies":false,"type":"","demo":"project\/list-variables.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/project\/list-variables.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]},"post":{"summary":"Create Variable","operationId":"projectCreateVariable","tags":["project"],"description":"Create a new project variable. This variable will be accessible in all Appwrite Functions at runtime.","responses":{"201":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"createVariable","weight":180,"cookies":false,"type":"","demo":"project\/create-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/project\/create-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","x-example":"[VALUE]"}},"required":["key","value"]}}}}}},"\/project\/variables\/{variableId}":{"get":{"summary":"Get Variable","operationId":"projectGetVariable","tags":["project"],"description":"Get a project variable by its unique ID.","responses":{"200":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"getVariable","weight":182,"cookies":false,"type":"","demo":"project\/get-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/project\/get-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}]},"put":{"summary":"Update Variable","operationId":"projectUpdateVariable","tags":["project"],"description":"Update project variable by its unique ID. This variable will be accessible in all Appwrite Functions at runtime.","responses":{"200":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"updateVariable","weight":183,"cookies":false,"type":"","demo":"project\/update-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/project\/update-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","x-example":"[VALUE]"}},"required":["key"]}}}}},"delete":{"summary":"Delete Variable","operationId":"projectDeleteVariable","tags":["project"],"description":"Delete a project variable by its unique ID. ","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteVariable","weight":184,"cookies":false,"type":"","demo":"project\/delete-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/project\/delete-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}]}},"\/projects":{"get":{"summary":"List projects","operationId":"projectsList","tags":["projects"],"description":"","responses":{"200":{"description":"Projects List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/projectList"}}}}},"x-appwrite":{"method":"list","weight":140,"cookies":false,"type":"","demo":"projects\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, teamId","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create project","operationId":"projectsCreate","tags":["projects"],"description":"","responses":{"201":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"create","weight":139,"cookies":false,"type":"","demo":"projects\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"projectId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, and hyphen. Can't start with a special char. Max length is 36 chars.","x-example":null},"name":{"type":"string","description":"Project name. Max length: 128 chars.","x-example":"[NAME]"},"teamId":{"type":"string","description":"Team unique ID.","x-example":"[TEAM_ID]"},"region":{"type":"string","description":"Project Region.","x-example":"default","enum":["default"],"x-enum-name":null,"x-enum-keys":[]},"description":{"type":"string","description":"Project description. Max length: 256 chars.","x-example":"[DESCRIPTION]"},"logo":{"type":"string","description":"Project logo.","x-example":"[LOGO]"},"url":{"type":"string","description":"Project URL.","x-example":"https:\/\/example.com"},"legalName":{"type":"string","description":"Project legal Name. Max length: 256 chars.","x-example":"[LEGAL_NAME]"},"legalCountry":{"type":"string","description":"Project legal Country. Max length: 256 chars.","x-example":"[LEGAL_COUNTRY]"},"legalState":{"type":"string","description":"Project legal State. Max length: 256 chars.","x-example":"[LEGAL_STATE]"},"legalCity":{"type":"string","description":"Project legal City. Max length: 256 chars.","x-example":"[LEGAL_CITY]"},"legalAddress":{"type":"string","description":"Project legal Address. Max length: 256 chars.","x-example":"[LEGAL_ADDRESS]"},"legalTaxId":{"type":"string","description":"Project legal Tax ID. Max length: 256 chars.","x-example":"[LEGAL_TAX_ID]"}},"required":["projectId","name","teamId"]}}}}}},"\/projects\/{projectId}":{"get":{"summary":"Get project","operationId":"projectsGet","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"get","weight":141,"cookies":false,"type":"","demo":"projects\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}]},"patch":{"summary":"Update project","operationId":"projectsUpdate","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"update","weight":142,"cookies":false,"type":"","demo":"projects\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Project name. Max length: 128 chars.","x-example":"[NAME]"},"description":{"type":"string","description":"Project description. Max length: 256 chars.","x-example":"[DESCRIPTION]"},"logo":{"type":"string","description":"Project logo.","x-example":"[LOGO]"},"url":{"type":"string","description":"Project URL.","x-example":"https:\/\/example.com"},"legalName":{"type":"string","description":"Project legal name. Max length: 256 chars.","x-example":"[LEGAL_NAME]"},"legalCountry":{"type":"string","description":"Project legal country. Max length: 256 chars.","x-example":"[LEGAL_COUNTRY]"},"legalState":{"type":"string","description":"Project legal state. Max length: 256 chars.","x-example":"[LEGAL_STATE]"},"legalCity":{"type":"string","description":"Project legal city. Max length: 256 chars.","x-example":"[LEGAL_CITY]"},"legalAddress":{"type":"string","description":"Project legal address. Max length: 256 chars.","x-example":"[LEGAL_ADDRESS]"},"legalTaxId":{"type":"string","description":"Project legal tax ID. Max length: 256 chars.","x-example":"[LEGAL_TAX_ID]"}},"required":["name"]}}}}},"delete":{"summary":"Delete project","operationId":"projectsDelete","tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":154,"cookies":false,"type":"","demo":"projects\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}]}},"\/projects\/{projectId}\/auth\/duration":{"patch":{"summary":"Update project authentication duration","operationId":"projectsUpdateAuthDuration","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateAuthDuration","weight":148,"cookies":false,"type":"","demo":"projects\/update-auth-duration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"duration":{"type":"integer","description":"Project session length in seconds. Max length: 31536000 seconds.","x-example":0}},"required":["duration"]}}}}}},"\/projects\/{projectId}\/auth\/limit":{"patch":{"summary":"Update project users limit","operationId":"projectsUpdateAuthLimit","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateAuthLimit","weight":147,"cookies":false,"type":"","demo":"projects\/update-auth-limit.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"limit":{"type":"integer","description":"Set the max number of users allowed in this project. Use 0 for unlimited.","x-example":0}},"required":["limit"]}}}}}},"\/projects\/{projectId}\/auth\/max-sessions":{"patch":{"summary":"Update project user sessions limit","operationId":"projectsUpdateAuthSessionsLimit","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateAuthSessionsLimit","weight":153,"cookies":false,"type":"","demo":"projects\/update-auth-sessions-limit.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"limit":{"type":"integer","description":"Set the max number of users allowed in this project. Value allowed is between 1-100. Default is 10","x-example":1}},"required":["limit"]}}}}}},"\/projects\/{projectId}\/auth\/password-dictionary":{"patch":{"summary":"Update authentication password dictionary status. Use this endpoint to enable or disable the dicitonary check for user password","operationId":"projectsUpdateAuthPasswordDictionary","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateAuthPasswordDictionary","weight":151,"cookies":false,"type":"","demo":"projects\/update-auth-password-dictionary.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Set whether or not to enable checking user's password against most commonly used passwords. Default is false.","x-example":false}},"required":["enabled"]}}}}}},"\/projects\/{projectId}\/auth\/password-history":{"patch":{"summary":"Update authentication password history. Use this endpoint to set the number of password history to save and 0 to disable password history.","operationId":"projectsUpdateAuthPasswordHistory","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateAuthPasswordHistory","weight":150,"cookies":false,"type":"","demo":"projects\/update-auth-password-history.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"limit":{"type":"integer","description":"Set the max number of passwords to store in user history. User can't choose a new password that is already stored in the password history list. Max number of passwords allowed in history is20. Default value is 0","x-example":0}},"required":["limit"]}}}}}},"\/projects\/{projectId}\/auth\/personal-data":{"patch":{"summary":"Enable or disable checking user passwords for similarity with their personal data.","operationId":"projectsUpdatePersonalDataCheck","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updatePersonalDataCheck","weight":152,"cookies":false,"type":"","demo":"projects\/update-personal-data-check.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Set whether or not to check a password for similarity with personal data. Default is false.","x-example":false}},"required":["enabled"]}}}}}},"\/projects\/{projectId}\/auth\/{method}":{"patch":{"summary":"Update project auth method status. Use this endpoint to enable or disable a given auth method for this project.","operationId":"projectsUpdateAuthStatus","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateAuthStatus","weight":149,"cookies":false,"type":"","demo":"projects\/update-auth-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"method","description":"Auth Method. Possible values: email-password,magic-url,email-otp,anonymous,invites,jwt,phone","required":true,"schema":{"type":"string","x-example":"email-password","enum":["email-password","magic-url","email-otp","anonymous","invites","jwt","phone"],"x-enum-name":"AuthMethod","x-enum-keys":[]},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"status":{"type":"boolean","description":"Set the status of this auth method.","x-example":false}},"required":["status"]}}}}}},"\/projects\/{projectId}\/keys":{"get":{"summary":"List keys","operationId":"projectsListKeys","tags":["projects"],"description":"","responses":{"200":{"description":"API Keys List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/keyList"}}}}},"x-appwrite":{"method":"listKeys","weight":162,"cookies":false,"type":"","demo":"projects\/list-keys.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}]},"post":{"summary":"Create key","operationId":"projectsCreateKey","tags":["projects"],"description":"","responses":{"201":{"description":"Key","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/key"}}}}},"x-appwrite":{"method":"createKey","weight":161,"cookies":false,"type":"","demo":"projects\/create-key.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Key name. Max length: 128 chars.","x-example":"[NAME]"},"scopes":{"type":"array","description":"Key scopes list. Maximum of 100 scopes are allowed.","x-example":null,"items":{"type":"string"}},"expire":{"type":"string","description":"Expiration time in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. Use null for unlimited expiration.","x-example":null}},"required":["name","scopes"]}}}}}},"\/projects\/{projectId}\/keys\/{keyId}":{"get":{"summary":"Get key","operationId":"projectsGetKey","tags":["projects"],"description":"","responses":{"200":{"description":"Key","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/key"}}}}},"x-appwrite":{"method":"getKey","weight":163,"cookies":false,"type":"","demo":"projects\/get-key.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"keyId","description":"Key unique ID.","required":true,"schema":{"type":"string","x-example":"[KEY_ID]"},"in":"path"}]},"put":{"summary":"Update key","operationId":"projectsUpdateKey","tags":["projects"],"description":"","responses":{"200":{"description":"Key","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/key"}}}}},"x-appwrite":{"method":"updateKey","weight":164,"cookies":false,"type":"","demo":"projects\/update-key.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"keyId","description":"Key unique ID.","required":true,"schema":{"type":"string","x-example":"[KEY_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Key name. Max length: 128 chars.","x-example":"[NAME]"},"scopes":{"type":"array","description":"Key scopes list. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"expire":{"type":"string","description":"Expiration time in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. Use null for unlimited expiration.","x-example":null}},"required":["name","scopes"]}}}}},"delete":{"summary":"Delete key","operationId":"projectsDeleteKey","tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteKey","weight":165,"cookies":false,"type":"","demo":"projects\/delete-key.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"keyId","description":"Key unique ID.","required":true,"schema":{"type":"string","x-example":"[KEY_ID]"},"in":"path"}]}},"\/projects\/{projectId}\/oauth2":{"patch":{"summary":"Update project OAuth2","operationId":"projectsUpdateOAuth2","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateOAuth2","weight":146,"cookies":false,"type":"","demo":"projects\/update-o-auth2.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"provider":{"type":"string","description":"Provider Name","x-example":"amazon","enum":["amazon","apple","auth0","authentik","autodesk","bitbucket","bitly","box","dailymotion","discord","disqus","dropbox","etsy","facebook","github","gitlab","google","linkedin","microsoft","notion","oidc","okta","paypal","paypalSandbox","podio","salesforce","slack","spotify","stripe","tradeshift","tradeshiftBox","twitch","wordpress","yahoo","yammer","yandex","zoho","zoom","mock"],"x-enum-name":"OAuthProvider","x-enum-keys":[]},"appId":{"type":"string","description":"Provider app ID. Max length: 256 chars.","x-example":"[APP_ID]"},"secret":{"type":"string","description":"Provider secret key. Max length: 512 chars.","x-example":"[SECRET]"},"enabled":{"type":"boolean","description":"Provider status. Set to 'false' to disable new session creation.","x-example":false}},"required":["provider"]}}}}}},"\/projects\/{projectId}\/platforms":{"get":{"summary":"List platforms","operationId":"projectsListPlatforms","tags":["projects"],"description":"","responses":{"200":{"description":"Platforms List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/platformList"}}}}},"x-appwrite":{"method":"listPlatforms","weight":167,"cookies":false,"type":"","demo":"projects\/list-platforms.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}]},"post":{"summary":"Create platform","operationId":"projectsCreatePlatform","tags":["projects"],"description":"","responses":{"201":{"description":"Platform","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/platform"}}}}},"x-appwrite":{"method":"createPlatform","weight":166,"cookies":false,"type":"","demo":"projects\/create-platform.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"type":{"type":"string","description":"Platform type.","x-example":"web","enum":["web","flutter-web","flutter-ios","flutter-android","flutter-linux","flutter-macos","flutter-windows","apple-ios","apple-macos","apple-watchos","apple-tvos","android","unity"],"x-enum-name":"PlatformType","x-enum-keys":[]},"name":{"type":"string","description":"Platform name. Max length: 128 chars.","x-example":"[NAME]"},"key":{"type":"string","description":"Package name for Android or bundle ID for iOS or macOS. Max length: 256 chars.","x-example":"[KEY]"},"store":{"type":"string","description":"App store or Google Play store ID. Max length: 256 chars.","x-example":"[STORE]"},"hostname":{"type":"string","description":"Platform client hostname. Max length: 256 chars.","x-example":null}},"required":["type","name"]}}}}}},"\/projects\/{projectId}\/platforms\/{platformId}":{"get":{"summary":"Get platform","operationId":"projectsGetPlatform","tags":["projects"],"description":"","responses":{"200":{"description":"Platform","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/platform"}}}}},"x-appwrite":{"method":"getPlatform","weight":168,"cookies":false,"type":"","demo":"projects\/get-platform.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"platformId","description":"Platform unique ID.","required":true,"schema":{"type":"string","x-example":"[PLATFORM_ID]"},"in":"path"}]},"put":{"summary":"Update platform","operationId":"projectsUpdatePlatform","tags":["projects"],"description":"","responses":{"200":{"description":"Platform","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/platform"}}}}},"x-appwrite":{"method":"updatePlatform","weight":169,"cookies":false,"type":"","demo":"projects\/update-platform.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"platformId","description":"Platform unique ID.","required":true,"schema":{"type":"string","x-example":"[PLATFORM_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Platform name. Max length: 128 chars.","x-example":"[NAME]"},"key":{"type":"string","description":"Package name for android or bundle ID for iOS. Max length: 256 chars.","x-example":"[KEY]"},"store":{"type":"string","description":"App store or Google Play store ID. Max length: 256 chars.","x-example":"[STORE]"},"hostname":{"type":"string","description":"Platform client URL. Max length: 256 chars.","x-example":null}},"required":["name"]}}}}},"delete":{"summary":"Delete platform","operationId":"projectsDeletePlatform","tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deletePlatform","weight":170,"cookies":false,"type":"","demo":"projects\/delete-platform.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"platformId","description":"Platform unique ID.","required":true,"schema":{"type":"string","x-example":"[PLATFORM_ID]"},"in":"path"}]}},"\/projects\/{projectId}\/service":{"patch":{"summary":"Update service status","operationId":"projectsUpdateServiceStatus","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateServiceStatus","weight":144,"cookies":false,"type":"","demo":"projects\/update-service-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"service":{"type":"string","description":"Service name.","x-example":"account","enum":["account","avatars","databases","locale","health","storage","teams","users","functions","graphql","messaging"],"x-enum-name":"APIService","x-enum-keys":[]},"status":{"type":"boolean","description":"Service status.","x-example":false}},"required":["service","status"]}}}}}},"\/projects\/{projectId}\/service\/all":{"patch":{"summary":"Update all service status","operationId":"projectsUpdateServiceStatusAll","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateServiceStatusAll","weight":145,"cookies":false,"type":"","demo":"projects\/update-service-status-all.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"status":{"type":"boolean","description":"Service status.","x-example":false}},"required":["status"]}}}}}},"\/projects\/{projectId}\/smtp":{"patch":{"summary":"Update SMTP","operationId":"projectsUpdateSmtp","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateSmtp","weight":171,"cookies":false,"type":"","demo":"projects\/update-smtp.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enable custom SMTP service","x-example":false},"senderName":{"type":"string","description":"Name of the email sender","x-example":"[SENDER_NAME]"},"senderEmail":{"type":"string","description":"Email of the sender","x-example":"email@example.com"},"replyTo":{"type":"string","description":"Reply to email","x-example":"email@example.com"},"host":{"type":"string","description":"SMTP server host name","x-example":null},"port":{"type":"integer","description":"SMTP server port","x-example":null},"username":{"type":"string","description":"SMTP server username","x-example":"[USERNAME]"},"password":{"type":"string","description":"SMTP server password","x-example":"[PASSWORD]"},"secure":{"type":"string","description":"Does SMTP server use secure connection","x-example":"tls","enum":["tls"],"x-enum-name":"SMTPSecure","x-enum-keys":[]}},"required":["enabled"]}}}}}},"\/projects\/{projectId}\/smtp\/tests":{"post":{"summary":"Create SMTP test","operationId":"projectsCreateSmtpTest","tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"createSmtpTest","weight":172,"cookies":false,"type":"","demo":"projects\/create-smtp-test.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"emails":{"type":"array","description":"Array of emails to send test email to. Maximum of 10 emails are allowed.","x-example":null,"items":{"type":"string"}},"senderName":{"type":"string","description":"Name of the email sender","x-example":"[SENDER_NAME]"},"senderEmail":{"type":"string","description":"Email of the sender","x-example":"email@example.com"},"replyTo":{"type":"string","description":"Reply to email","x-example":"email@example.com"},"host":{"type":"string","description":"SMTP server host name","x-example":null},"port":{"type":"integer","description":"SMTP server port","x-example":null},"username":{"type":"string","description":"SMTP server username","x-example":"[USERNAME]"},"password":{"type":"string","description":"SMTP server password","x-example":"[PASSWORD]"},"secure":{"type":"string","description":"Does SMTP server use secure connection","x-example":"tls","enum":["tls"],"x-enum-name":"SMTPSecure","x-enum-keys":[]}},"required":["emails","senderName","senderEmail","host"]}}}}}},"\/projects\/{projectId}\/team":{"patch":{"summary":"Update Project Team","operationId":"projectsUpdateTeam","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateTeam","weight":143,"cookies":false,"type":"","demo":"projects\/update-team.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"teamId":{"type":"string","description":"Team ID of the team to transfer project to.","x-example":"[TEAM_ID]"}},"required":["teamId"]}}}}}},"\/projects\/{projectId}\/templates\/email\/{type}\/{locale}":{"get":{"summary":"Get custom email template","operationId":"projectsGetEmailTemplate","tags":["projects"],"description":"","responses":{"200":{"description":"EmailTemplate","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/emailTemplate"}}}}},"x-appwrite":{"method":"getEmailTemplate","weight":174,"cookies":false,"type":"","demo":"projects\/get-email-template.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"type","description":"Template type","required":true,"schema":{"type":"string","x-example":"verification","enum":["verification","magicsession","recovery","invitation"],"x-enum-name":"TemplateType","x-enum-keys":[]},"in":"path"},{"name":"locale","description":"Template locale","required":true,"schema":{"type":"string","x-example":"af","enum":["af","ar-ae","ar-bh","ar-dz","ar-eg","ar-iq","ar-jo","ar-kw","ar-lb","ar-ly","ar-ma","ar-om","ar-qa","ar-sa","ar-sy","ar-tn","ar-ye","as","az","be","bg","bh","bn","bs","ca","cs","cy","da","de","de-at","de-ch","de-li","de-lu","el","en","en-au","en-bz","en-ca","en-gb","en-ie","en-jm","en-nz","en-tt","en-us","en-za","eo","es","es-ar","es-bo","es-cl","es-co","es-cr","es-do","es-ec","es-gt","es-hn","es-mx","es-ni","es-pa","es-pe","es-pr","es-py","es-sv","es-uy","es-ve","et","eu","fa","fi","fo","fr","fr-be","fr-ca","fr-ch","fr-lu","ga","gd","he","hi","hr","hu","id","is","it","it-ch","ja","ji","ko","ku","lt","lv","mk","ml","ms","mt","nb","ne","nl","nl-be","nn","no","pa","pl","pt","pt-br","rm","ro","ro-md","ru","ru-md","sb","sk","sl","sq","sr","sv","sv-fi","th","tn","tr","ts","ua","ur","ve","vi","xh","zh-cn","zh-hk","zh-sg","zh-tw","zu"],"x-enum-name":"TemplateLocale","x-enum-keys":[]},"in":"path"}]},"patch":{"summary":"Update custom email templates","operationId":"projectsUpdateEmailTemplate","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateEmailTemplate","weight":176,"cookies":false,"type":"","demo":"projects\/update-email-template.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"type","description":"Template type","required":true,"schema":{"type":"string","x-example":"verification","enum":["verification","magicsession","recovery","invitation"],"x-enum-name":"TemplateType","x-enum-keys":[]},"in":"path"},{"name":"locale","description":"Template locale","required":true,"schema":{"type":"string","x-example":"af","enum":["af","ar-ae","ar-bh","ar-dz","ar-eg","ar-iq","ar-jo","ar-kw","ar-lb","ar-ly","ar-ma","ar-om","ar-qa","ar-sa","ar-sy","ar-tn","ar-ye","as","az","be","bg","bh","bn","bs","ca","cs","cy","da","de","de-at","de-ch","de-li","de-lu","el","en","en-au","en-bz","en-ca","en-gb","en-ie","en-jm","en-nz","en-tt","en-us","en-za","eo","es","es-ar","es-bo","es-cl","es-co","es-cr","es-do","es-ec","es-gt","es-hn","es-mx","es-ni","es-pa","es-pe","es-pr","es-py","es-sv","es-uy","es-ve","et","eu","fa","fi","fo","fr","fr-be","fr-ca","fr-ch","fr-lu","ga","gd","he","hi","hr","hu","id","is","it","it-ch","ja","ji","ko","ku","lt","lv","mk","ml","ms","mt","nb","ne","nl","nl-be","nn","no","pa","pl","pt","pt-br","rm","ro","ro-md","ru","ru-md","sb","sk","sl","sq","sr","sv","sv-fi","th","tn","tr","ts","ua","ur","ve","vi","xh","zh-cn","zh-hk","zh-sg","zh-tw","zu"],"x-enum-name":"TemplateLocale","x-enum-keys":[]},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"subject":{"type":"string","description":"Email Subject","x-example":"[SUBJECT]"},"message":{"type":"string","description":"Template message","x-example":"[MESSAGE]"},"senderName":{"type":"string","description":"Name of the email sender","x-example":"[SENDER_NAME]"},"senderEmail":{"type":"string","description":"Email of the sender","x-example":"email@example.com"},"replyTo":{"type":"string","description":"Reply to email","x-example":"email@example.com"}},"required":["subject","message"]}}}}},"delete":{"summary":"Reset custom email template","operationId":"projectsDeleteEmailTemplate","tags":["projects"],"description":"","responses":{"200":{"description":"EmailTemplate","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/emailTemplate"}}}}},"x-appwrite":{"method":"deleteEmailTemplate","weight":178,"cookies":false,"type":"","demo":"projects\/delete-email-template.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"type","description":"Template type","required":true,"schema":{"type":"string","x-example":"verification","enum":["verification","magicsession","recovery","invitation"],"x-enum-name":"TemplateType","x-enum-keys":[]},"in":"path"},{"name":"locale","description":"Template locale","required":true,"schema":{"type":"string","x-example":"af","enum":["af","ar-ae","ar-bh","ar-dz","ar-eg","ar-iq","ar-jo","ar-kw","ar-lb","ar-ly","ar-ma","ar-om","ar-qa","ar-sa","ar-sy","ar-tn","ar-ye","as","az","be","bg","bh","bn","bs","ca","cs","cy","da","de","de-at","de-ch","de-li","de-lu","el","en","en-au","en-bz","en-ca","en-gb","en-ie","en-jm","en-nz","en-tt","en-us","en-za","eo","es","es-ar","es-bo","es-cl","es-co","es-cr","es-do","es-ec","es-gt","es-hn","es-mx","es-ni","es-pa","es-pe","es-pr","es-py","es-sv","es-uy","es-ve","et","eu","fa","fi","fo","fr","fr-be","fr-ca","fr-ch","fr-lu","ga","gd","he","hi","hr","hu","id","is","it","it-ch","ja","ji","ko","ku","lt","lv","mk","ml","ms","mt","nb","ne","nl","nl-be","nn","no","pa","pl","pt","pt-br","rm","ro","ro-md","ru","ru-md","sb","sk","sl","sq","sr","sv","sv-fi","th","tn","tr","ts","ua","ur","ve","vi","xh","zh-cn","zh-hk","zh-sg","zh-tw","zu"],"x-enum-name":"TemplateLocale","x-enum-keys":[]},"in":"path"}]}},"\/projects\/{projectId}\/templates\/sms\/{type}\/{locale}":{"get":{"summary":"Get custom SMS template","operationId":"projectsGetSmsTemplate","tags":["projects"],"description":"","responses":{"200":{"description":"SmsTemplate","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/smsTemplate"}}}}},"x-appwrite":{"method":"getSmsTemplate","weight":173,"cookies":false,"type":"","demo":"projects\/get-sms-template.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"type","description":"Template type","required":true,"schema":{"type":"string","x-example":"verification","enum":["verification","login","invitation"],"x-enum-name":"TemplateType","x-enum-keys":[]},"in":"path"},{"name":"locale","description":"Template locale","required":true,"schema":{"type":"string","x-example":"af","enum":["af","ar-ae","ar-bh","ar-dz","ar-eg","ar-iq","ar-jo","ar-kw","ar-lb","ar-ly","ar-ma","ar-om","ar-qa","ar-sa","ar-sy","ar-tn","ar-ye","as","az","be","bg","bh","bn","bs","ca","cs","cy","da","de","de-at","de-ch","de-li","de-lu","el","en","en-au","en-bz","en-ca","en-gb","en-ie","en-jm","en-nz","en-tt","en-us","en-za","eo","es","es-ar","es-bo","es-cl","es-co","es-cr","es-do","es-ec","es-gt","es-hn","es-mx","es-ni","es-pa","es-pe","es-pr","es-py","es-sv","es-uy","es-ve","et","eu","fa","fi","fo","fr","fr-be","fr-ca","fr-ch","fr-lu","ga","gd","he","hi","hr","hu","id","is","it","it-ch","ja","ji","ko","ku","lt","lv","mk","ml","ms","mt","nb","ne","nl","nl-be","nn","no","pa","pl","pt","pt-br","rm","ro","ro-md","ru","ru-md","sb","sk","sl","sq","sr","sv","sv-fi","th","tn","tr","ts","ua","ur","ve","vi","xh","zh-cn","zh-hk","zh-sg","zh-tw","zu"],"x-enum-name":"TemplateLocale","x-enum-keys":[]},"in":"path"}]},"patch":{"summary":"Update custom SMS template","operationId":"projectsUpdateSmsTemplate","tags":["projects"],"description":"","responses":{"200":{"description":"SmsTemplate","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/smsTemplate"}}}}},"x-appwrite":{"method":"updateSmsTemplate","weight":175,"cookies":false,"type":"","demo":"projects\/update-sms-template.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"type","description":"Template type","required":true,"schema":{"type":"string","x-example":"verification","enum":["verification","login","invitation"],"x-enum-name":"TemplateType","x-enum-keys":[]},"in":"path"},{"name":"locale","description":"Template locale","required":true,"schema":{"type":"string","x-example":"af","enum":["af","ar-ae","ar-bh","ar-dz","ar-eg","ar-iq","ar-jo","ar-kw","ar-lb","ar-ly","ar-ma","ar-om","ar-qa","ar-sa","ar-sy","ar-tn","ar-ye","as","az","be","bg","bh","bn","bs","ca","cs","cy","da","de","de-at","de-ch","de-li","de-lu","el","en","en-au","en-bz","en-ca","en-gb","en-ie","en-jm","en-nz","en-tt","en-us","en-za","eo","es","es-ar","es-bo","es-cl","es-co","es-cr","es-do","es-ec","es-gt","es-hn","es-mx","es-ni","es-pa","es-pe","es-pr","es-py","es-sv","es-uy","es-ve","et","eu","fa","fi","fo","fr","fr-be","fr-ca","fr-ch","fr-lu","ga","gd","he","hi","hr","hu","id","is","it","it-ch","ja","ji","ko","ku","lt","lv","mk","ml","ms","mt","nb","ne","nl","nl-be","nn","no","pa","pl","pt","pt-br","rm","ro","ro-md","ru","ru-md","sb","sk","sl","sq","sr","sv","sv-fi","th","tn","tr","ts","ua","ur","ve","vi","xh","zh-cn","zh-hk","zh-sg","zh-tw","zu"],"x-enum-name":"TemplateLocale","x-enum-keys":[]},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Template message","x-example":"[MESSAGE]"}},"required":["message"]}}}}},"delete":{"summary":"Reset custom SMS template","operationId":"projectsDeleteSmsTemplate","tags":["projects"],"description":"","responses":{"200":{"description":"SmsTemplate","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/smsTemplate"}}}}},"x-appwrite":{"method":"deleteSmsTemplate","weight":177,"cookies":false,"type":"","demo":"projects\/delete-sms-template.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"type","description":"Template type","required":true,"schema":{"type":"string","x-example":"verification","enum":["verification","login","invitation"],"x-enum-name":"TemplateType","x-enum-keys":[]},"in":"path"},{"name":"locale","description":"Template locale","required":true,"schema":{"type":"string","x-example":"af","enum":["af","ar-ae","ar-bh","ar-dz","ar-eg","ar-iq","ar-jo","ar-kw","ar-lb","ar-ly","ar-ma","ar-om","ar-qa","ar-sa","ar-sy","ar-tn","ar-ye","as","az","be","bg","bh","bn","bs","ca","cs","cy","da","de","de-at","de-ch","de-li","de-lu","el","en","en-au","en-bz","en-ca","en-gb","en-ie","en-jm","en-nz","en-tt","en-us","en-za","eo","es","es-ar","es-bo","es-cl","es-co","es-cr","es-do","es-ec","es-gt","es-hn","es-mx","es-ni","es-pa","es-pe","es-pr","es-py","es-sv","es-uy","es-ve","et","eu","fa","fi","fo","fr","fr-be","fr-ca","fr-ch","fr-lu","ga","gd","he","hi","hr","hu","id","is","it","it-ch","ja","ji","ko","ku","lt","lv","mk","ml","ms","mt","nb","ne","nl","nl-be","nn","no","pa","pl","pt","pt-br","rm","ro","ro-md","ru","ru-md","sb","sk","sl","sq","sr","sv","sv-fi","th","tn","tr","ts","ua","ur","ve","vi","xh","zh-cn","zh-hk","zh-sg","zh-tw","zu"],"x-enum-name":"TemplateLocale","x-enum-keys":[]},"in":"path"}]}},"\/projects\/{projectId}\/webhooks":{"get":{"summary":"List webhooks","operationId":"projectsListWebhooks","tags":["projects"],"description":"","responses":{"200":{"description":"Webhooks List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/webhookList"}}}}},"x-appwrite":{"method":"listWebhooks","weight":156,"cookies":false,"type":"","demo":"projects\/list-webhooks.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}]},"post":{"summary":"Create webhook","operationId":"projectsCreateWebhook","tags":["projects"],"description":"","responses":{"201":{"description":"Webhook","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/webhook"}}}}},"x-appwrite":{"method":"createWebhook","weight":155,"cookies":false,"type":"","demo":"projects\/create-webhook.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Webhook name. Max length: 128 chars.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Enable or disable a webhook.","x-example":false},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"Webhook URL.","x-example":null},"security":{"type":"boolean","description":"Certificate verification, false for disabled or true for enabled.","x-example":false},"httpUser":{"type":"string","description":"Webhook HTTP user. Max length: 256 chars.","x-example":"[HTTP_USER]"},"httpPass":{"type":"string","description":"Webhook HTTP password. Max length: 256 chars.","x-example":"[HTTP_PASS]"}},"required":["name","events","url","security"]}}}}}},"\/projects\/{projectId}\/webhooks\/{webhookId}":{"get":{"summary":"Get webhook","operationId":"projectsGetWebhook","tags":["projects"],"description":"","responses":{"200":{"description":"Webhook","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/webhook"}}}}},"x-appwrite":{"method":"getWebhook","weight":157,"cookies":false,"type":"","demo":"projects\/get-webhook.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"webhookId","description":"Webhook unique ID.","required":true,"schema":{"type":"string","x-example":"[WEBHOOK_ID]"},"in":"path"}]},"put":{"summary":"Update webhook","operationId":"projectsUpdateWebhook","tags":["projects"],"description":"","responses":{"200":{"description":"Webhook","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/webhook"}}}}},"x-appwrite":{"method":"updateWebhook","weight":158,"cookies":false,"type":"","demo":"projects\/update-webhook.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"webhookId","description":"Webhook unique ID.","required":true,"schema":{"type":"string","x-example":"[WEBHOOK_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Webhook name. Max length: 128 chars.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Enable or disable a webhook.","x-example":false},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"Webhook URL.","x-example":null},"security":{"type":"boolean","description":"Certificate verification, false for disabled or true for enabled.","x-example":false},"httpUser":{"type":"string","description":"Webhook HTTP user. Max length: 256 chars.","x-example":"[HTTP_USER]"},"httpPass":{"type":"string","description":"Webhook HTTP password. Max length: 256 chars.","x-example":"[HTTP_PASS]"}},"required":["name","events","url","security"]}}}}},"delete":{"summary":"Delete webhook","operationId":"projectsDeleteWebhook","tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteWebhook","weight":160,"cookies":false,"type":"","demo":"projects\/delete-webhook.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"webhookId","description":"Webhook unique ID.","required":true,"schema":{"type":"string","x-example":"[WEBHOOK_ID]"},"in":"path"}]}},"\/projects\/{projectId}\/webhooks\/{webhookId}\/signature":{"patch":{"summary":"Update webhook signature key","operationId":"projectsUpdateWebhookSignature","tags":["projects"],"description":"","responses":{"200":{"description":"Webhook","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/webhook"}}}}},"x-appwrite":{"method":"updateWebhookSignature","weight":159,"cookies":false,"type":"","demo":"projects\/update-webhook-signature.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"webhookId","description":"Webhook unique ID.","required":true,"schema":{"type":"string","x-example":"[WEBHOOK_ID]"},"in":"path"}]}},"\/proxy\/rules":{"get":{"summary":"List Rules","operationId":"proxyListRules","tags":["proxy"],"description":"Get a list of all the proxy rules. You can use the query params to filter your results.","responses":{"200":{"description":"Rule List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/proxyRuleList"}}}}},"x-appwrite":{"method":"listRules","weight":289,"cookies":false,"type":"","demo":"proxy\/list-rules.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/proxy\/list-rules.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"rules.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: domain, resourceType, resourceId, url","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Rule","operationId":"proxyCreateRule","tags":["proxy"],"description":"Create a new proxy rule.","responses":{"201":{"description":"Rule","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/proxyRule"}}}}},"x-appwrite":{"method":"createRule","weight":288,"cookies":false,"type":"","demo":"proxy\/create-rule.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/proxy\/create-rule.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"rules.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"domain":{"type":"string","description":"Domain name.","x-example":null},"resourceType":{"type":"string","description":"Action definition for the rule. Possible values are \"api\", \"function\"","x-example":"api","enum":["api","function"],"x-enum-name":null,"x-enum-keys":[]},"resourceId":{"type":"string","description":"ID of resource for the action type. If resourceType is \"api\", leave empty. If resourceType is \"function\", provide ID of the function.","x-example":"[RESOURCE_ID]"}},"required":["domain","resourceType"]}}}}}},"\/proxy\/rules\/{ruleId}":{"get":{"summary":"Get Rule","operationId":"proxyGetRule","tags":["proxy"],"description":"Get a proxy rule by its unique ID.","responses":{"200":{"description":"Rule","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/proxyRule"}}}}},"x-appwrite":{"method":"getRule","weight":290,"cookies":false,"type":"","demo":"proxy\/get-rule.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/proxy\/get-rule.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"rules.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"ruleId","description":"Rule ID.","required":true,"schema":{"type":"string","x-example":"[RULE_ID]"},"in":"path"}]},"delete":{"summary":"Delete Rule","operationId":"proxyDeleteRule","tags":["proxy"],"description":"Delete a proxy rule by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteRule","weight":291,"cookies":false,"type":"","demo":"proxy\/delete-rule.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/proxy\/delete-rule.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"rules.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"ruleId","description":"Rule ID.","required":true,"schema":{"type":"string","x-example":"[RULE_ID]"},"in":"path"}]}},"\/proxy\/rules\/{ruleId}\/verification":{"patch":{"summary":"Update Rule Verification Status","operationId":"proxyUpdateRuleVerification","tags":["proxy"],"description":"","responses":{"200":{"description":"Rule","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/proxyRule"}}}}},"x-appwrite":{"method":"updateRuleVerification","weight":292,"cookies":false,"type":"","demo":"proxy\/update-rule-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"rules.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"ruleId","description":"Rule ID.","required":true,"schema":{"type":"string","x-example":"[RULE_ID]"},"in":"path"}]}},"\/storage\/buckets":{"get":{"summary":"List buckets","operationId":"storageListBuckets","tags":["storage"],"description":"Get a list of all the storage buckets. You can use the query params to filter your results.","responses":{"200":{"description":"Buckets List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/bucketList"}}}}},"x-appwrite":{"method":"listBuckets","weight":186,"cookies":false,"type":"","demo":"storage\/list-buckets.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/list-buckets.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: enabled, name, fileSecurity, maximumFileSize, encryption, antivirus","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create bucket","operationId":"storageCreateBucket","tags":["storage"],"description":"Create a new storage bucket.","responses":{"201":{"description":"Bucket","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/bucket"}}}}},"x-appwrite":{"method":"createBucket","weight":185,"cookies":false,"type":"","demo":"storage\/create-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"bucketId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, no user is granted with any permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":false},"enabled":{"type":"boolean","description":"Is bucket enabled? When set to 'disabled', users cannot access the files in this bucket but Server SDKs with and API key can still access the bucket. No files are lost when this is toggled.","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB.","x-example":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","x-example":"none","enum":["none","gzip","zstd"],"x-enum-name":null,"x-enum-keys":[]},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","x-example":false}},"required":["bucketId","name"]}}}}}},"\/storage\/buckets\/{bucketId}":{"get":{"summary":"Get bucket","operationId":"storageGetBucket","tags":["storage"],"description":"Get a storage bucket by its unique ID. This endpoint response returns a JSON object with the storage bucket metadata.","responses":{"200":{"description":"Bucket","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/bucket"}}}}},"x-appwrite":{"method":"getBucket","weight":187,"cookies":false,"type":"","demo":"storage\/get-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"bucketId","description":"Bucket unique ID.","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"}]},"put":{"summary":"Update bucket","operationId":"storageUpdateBucket","tags":["storage"],"description":"Update a storage bucket by its unique ID.","responses":{"200":{"description":"Bucket","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/bucket"}}}}},"x-appwrite":{"method":"updateBucket","weight":188,"cookies":false,"type":"","demo":"storage\/update-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"bucketId","description":"Bucket unique ID.","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Bucket name","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":false},"enabled":{"type":"boolean","description":"Is bucket enabled? When set to 'disabled', users cannot access the files in this bucket but Server SDKs with and API key can still access the bucket. No files are lost when this is toggled.","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB.","x-example":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","x-example":"none","enum":["none","gzip","zstd"],"x-enum-name":null,"x-enum-keys":[]},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","x-example":false}},"required":["name"]}}}}},"delete":{"summary":"Delete bucket","operationId":"storageDeleteBucket","tags":["storage"],"description":"Delete a storage bucket by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteBucket","weight":189,"cookies":false,"type":"","demo":"storage\/delete-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"bucketId","description":"Bucket unique ID.","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files":{"get":{"summary":"List files","operationId":"storageListFiles","tags":["storage"],"description":"Get a list of all the user files. You can use the query params to filter your results.","responses":{"200":{"description":"Files List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/fileList"}}}}},"x-appwrite":{"method":"listFiles","weight":191,"cookies":false,"type":"","demo":"storage\/list-files.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/list-files.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create file","operationId":"storageCreateFile","tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"createFile","weight":190,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"}],"requestBody":{"content":{"multipart\/form-data":{"schema":{"type":"object","properties":{"fileId":{"type":"string","description":"File ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[FILE_ID]","x-upload-id":true},"file":{"type":"string","description":"Binary file. Appwrite SDKs provide helpers to handle file input. [Learn about file input](https:\/\/appwrite.io\/docs\/storage#file-input).","x-example":null},"permissions":{"type":"array","description":"An array of permission strings. By default, only the current user is granted all permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["fileId","file"]}}}}}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get file","operationId":"storageGetFile","tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"getFile","weight":192,"cookies":false,"type":"","demo":"storage\/get-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File ID.","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"}]},"put":{"summary":"Update file","operationId":"storageUpdateFile","tags":["storage"],"description":"Update a file by its unique ID. Only users with write permissions have access to update this resource.","responses":{"200":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"updateFile","weight":196,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File unique ID.","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Name of the file","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission string. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":197,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File ID.","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/download":{"get":{"summary":"Get file for download","operationId":"storageGetFileDownload","tags":["storage"],"description":"Get a file content by its unique ID. The endpoint response return with a 'Content-Disposition: attachment' header that tells the browser to start downloading the file to user downloads directory.","responses":{"200":{"description":"File"}},"x-appwrite":{"method":"getFileDownload","weight":194,"cookies":false,"type":"location","demo":"storage\/get-file-download.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-download.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File ID.","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/preview":{"get":{"summary":"Get file preview","operationId":"storageGetFilePreview","tags":["storage"],"description":"Get a file preview image. Currently, this method supports preview for image files (jpg, png, and gif), other supported formats, like pdf, docs, slides, and spreadsheets, will return the file icon image. You can also pass query string arguments for cutting and resizing your preview image. Preview is supported only for image files smaller than 10MB.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFilePreview","weight":193,"cookies":false,"type":"location","demo":"storage\/get-file-preview.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-preview.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File ID","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"},{"name":"width","description":"Resize preview image width, Pass an integer between 0 to 4000.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 4000.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"gravity","description":"Image crop gravity. Can be one of center,top-left,top,top-right,left,right,bottom-left,bottom,bottom-right","required":false,"schema":{"type":"string","x-example":"center","enum":["center","top-left","top","top-right","left","right","bottom-left","bottom","bottom-right"],"x-enum-name":"ImageGravity","x-enum-keys":[],"default":"center"},"in":"query"},{"name":"quality","description":"Preview image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"borderWidth","description":"Preview image border in pixels. Pass an integer between 0 to 100. Defaults to 0.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"borderColor","description":"Preview image border color. Use a valid HEX color, no # is needed for prefix.","required":false,"schema":{"type":"string","default":""},"in":"query"},{"name":"borderRadius","description":"Preview image border radius in pixels. Pass an integer between 0 to 4000.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"opacity","description":"Preview image opacity. Only works with images having an alpha channel (like png). Pass a number between 0 to 1.","required":false,"schema":{"type":"number","format":"float","x-example":0,"default":1},"in":"query"},{"name":"rotation","description":"Preview image rotation in degrees. Pass an integer between -360 and 360.","required":false,"schema":{"type":"integer","format":"int32","x-example":-360,"default":0},"in":"query"},{"name":"background","description":"Preview image background color. Only works with transparent images (png). Use a valid HEX color, no # is needed for prefix.","required":false,"schema":{"type":"string","default":""},"in":"query"},{"name":"output","description":"Output format type (jpeg, jpg, png, gif and webp).","required":false,"schema":{"type":"string","x-example":"jpg","enum":["jpg","jpeg","gif","png","webp"],"x-enum-name":"ImageFormat","x-enum-keys":[],"default":""},"in":"query"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/view":{"get":{"summary":"Get file for view","operationId":"storageGetFileView","tags":["storage"],"description":"Get a file content by its unique ID. This endpoint is similar to the download method but returns with no 'Content-Disposition: attachment' header.","responses":{"200":{"description":"File"}},"x-appwrite":{"method":"getFileView","weight":195,"cookies":false,"type":"location","demo":"storage\/get-file-view.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-view.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File ID.","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"}]}},"\/storage\/usage":{"get":{"summary":"Get usage stats for storage","operationId":"storageGetUsage","tags":["storage"],"description":"","responses":{"200":{"description":"StorageUsage","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageStorage"}}}}},"x-appwrite":{"method":"getUsage","weight":198,"cookies":false,"type":"","demo":"storage\/get-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"schema":{"type":"string","x-example":"24h","enum":["24h","30d","90d"],"x-enum-name":"StorageUsageRange","x-enum-keys":["Twenty Four Hours","Thirty Days","Ninety Days"],"default":"30d"},"in":"query"}]}},"\/storage\/{bucketId}\/usage":{"get":{"summary":"Get usage stats for storage bucket","operationId":"storageGetBucketUsage","tags":["storage"],"description":"","responses":{"200":{"description":"UsageBuckets","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageBuckets"}}}}},"x-appwrite":{"method":"getBucketUsage","weight":199,"cookies":false,"type":"","demo":"storage\/get-bucket-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"bucketId","description":"Bucket ID.","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"range","description":"Date range.","required":false,"schema":{"type":"string","x-example":"24h","enum":["24h","30d","90d"],"x-enum-name":"StorageUsageRange","x-enum-keys":["Twenty Four Hours","Thirty Days","Ninety Days"],"default":"30d"},"in":"query"}]}},"\/teams":{"get":{"summary":"List teams","operationId":"teamsList","tags":["teams"],"description":"Get a list of all the teams in which the current user is a member. You can use the parameters to filter your results.","responses":{"200":{"description":"Teams List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/teamList"}}}}},"x-appwrite":{"method":"list","weight":201,"cookies":false,"type":"","demo":"teams\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-teams.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total, billingPlan","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create team","operationId":"teamsCreate","tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"create","weight":200,"cookies":false,"type":"","demo":"teams\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/create-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"teamId":{"type":"string","description":"Team ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[TEAM_ID]"},"name":{"type":"string","description":"Team name. Max length: 128 chars.","x-example":"[NAME]"},"roles":{"type":"array","description":"Array of strings. Use this param to set the roles in the team for the user who created it. The default role is **owner**. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}}}}},"\/teams\/{teamId}":{"get":{"summary":"Get team","operationId":"teamsGet","tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"get","weight":202,"cookies":false,"type":"","demo":"teams\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams","offline-key":"{teamId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}]},"put":{"summary":"Update name","operationId":"teamsUpdateName","tags":["teams"],"description":"Update the team's name by its unique ID.","responses":{"200":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"updateName","weight":204,"cookies":false,"type":"","demo":"teams\/update-name.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-name.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams","offline-key":"{teamId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"New team name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["name"]}}}}},"delete":{"summary":"Delete team","operationId":"teamsDelete","tags":["teams"],"description":"Delete a team using its ID. Only team members with the owner role can delete the team.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":206,"cookies":false,"type":"","demo":"teams\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/delete-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}]}},"\/teams\/{teamId}\/logs":{"get":{"summary":"List team logs","operationId":"teamsListLogs","tags":["teams"],"description":"Get the team activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listLogs","weight":213,"cookies":false,"type":"","demo":"teams\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/teams\/{teamId}\/memberships":{"get":{"summary":"List team memberships","operationId":"teamsListMemberships","tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"listMemberships","weight":208,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/memberships","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create team membership","operationId":"teamsCreateMembership","tags":["teams"],"description":"Invite a new member to join your team. Provide an ID for existing users, or invite unregistered users using an email or phone number. If initiated from a Client SDK, Appwrite will send an email or sms with a link to join the team to the invited user, and an account will be created for them if one doesn't exist. If initiated from a Server SDK, the new member will be added automatically to the team.\n\nYou only need to provide one of a user ID, email, or phone number. Appwrite will prioritize accepting the user ID > email > phone number if you provide more than one of these parameters.\n\nUse the `url` parameter to redirect the user from the invitation email to your app. After the user is redirected, use the [Update Team Membership Status](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/teams#updateMembershipStatus) endpoint to allow the user to accept the invitation to the team. \n\nPlease note that to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) Appwrite will accept the only redirect URLs under the domains you have added as a platform on the Appwrite Console.\n","responses":{"201":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"createMembership","weight":207,"cookies":false,"type":"","demo":"teams\/create-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/create-team-membership.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"email":{"type":"string","description":"Email of the new team member.","x-example":"email@example.com"},"userId":{"type":"string","description":"ID of the user to be added to a team.","x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"roles":{"type":"array","description":"Array of strings. Use this param to set the user roles in the team. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"},"name":{"type":"string","description":"Name of the new team member. Max length: 128 chars.","x-example":"[NAME]"}},"required":["roles"]}}}}}},"\/teams\/{teamId}\/memberships\/{membershipId}":{"get":{"summary":"Get team membership","operationId":"teamsGetMembership","tags":["teams"],"description":"Get a team member by the membership unique id. All team members have read access for this resource.","responses":{"200":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"getMembership","weight":209,"cookies":false,"type":"","demo":"teams\/get-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-member.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/memberships","offline-key":"{membershipId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"schema":{"type":"string","x-example":"[MEMBERSHIP_ID]"},"in":"path"}]},"patch":{"summary":"Update membership","operationId":"teamsUpdateMembership","tags":["teams"],"description":"Modify the roles of a team member. Only team members with the owner role have access to this endpoint. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions).\n","responses":{"200":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"updateMembership","weight":210,"cookies":false,"type":"","demo":"teams\/update-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"schema":{"type":"string","x-example":"[MEMBERSHIP_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"roles":{"type":"array","description":"An array of strings. Use this param to set the user's roles in the team. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["roles"]}}}}},"delete":{"summary":"Delete team membership","operationId":"teamsDeleteMembership","tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":212,"cookies":false,"type":"","demo":"teams\/delete-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/delete-team-membership.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"schema":{"type":"string","x-example":"[MEMBERSHIP_ID]"},"in":"path"}]}},"\/teams\/{teamId}\/memberships\/{membershipId}\/status":{"patch":{"summary":"Update team membership status","operationId":"teamsUpdateMembershipStatus","tags":["teams"],"description":"Use this endpoint to allow a user to accept an invitation to join a team after being redirected back to your app from the invitation email received by the user.\n\nIf the request is successful, a session for the user is automatically created.\n","responses":{"200":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"updateMembershipStatus","weight":211,"cookies":false,"type":"","demo":"teams\/update-membership-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"public","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"schema":{"type":"string","x-example":"[MEMBERSHIP_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Secret key.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/teams\/{teamId}\/prefs":{"get":{"summary":"Get team preferences","operationId":"teamsGetPrefs","tags":["teams"],"description":"Get the team's shared preferences by its unique ID. If a preference doesn't need to be shared by all team members, prefer storing them in [user preferences](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#getPrefs).","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"getPrefs","weight":203,"cookies":false,"type":"","demo":"teams\/get-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/prefs","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}]},"put":{"summary":"Update preferences","operationId":"teamsUpdatePrefs","tags":["teams"],"description":"Update the team's preferences by its unique ID. The object you pass is stored as is and replaces any previous value. The maximum allowed prefs size is 64kB and throws an error if exceeded.","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"updatePrefs","weight":205,"cookies":false,"type":"","demo":"teams\/update-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/prefs","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"prefs":{"type":"object","description":"Prefs key-value JSON object.","x-example":"{}"}},"required":["prefs"]}}}}}},"\/users":{"get":{"summary":"List users","operationId":"usersList","tags":["users"],"description":"Get a list of all the project's users. You can use the query params to filter your results.","responses":{"200":{"description":"Users List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/userList"}}}}},"x-appwrite":{"method":"list","weight":223,"cookies":false,"type":"","demo":"users\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-users.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, email, phone, status, passwordUpdate, registration, emailVerification, phoneVerification","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create user","operationId":"usersCreate","tags":["users"],"description":"Create a new user.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"create","weight":214,"cookies":false,"type":"","demo":"users\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"password":{"type":"string","description":"Plain text user password. Must be at least 8 chars.","x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId"]}}}}}},"\/users\/argon2":{"post":{"summary":"Create user with Argon2 password","operationId":"usersCreateArgon2User","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Argon2](https:\/\/en.wikipedia.org\/wiki\/Argon2) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createArgon2User","weight":217,"cookies":false,"type":"","demo":"users\/create-argon2user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-argon2-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Argon2.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/bcrypt":{"post":{"summary":"Create user with bcrypt password","operationId":"usersCreateBcryptUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Bcrypt](https:\/\/en.wikipedia.org\/wiki\/Bcrypt) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createBcryptUser","weight":215,"cookies":false,"type":"","demo":"users\/create-bcrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-bcrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Bcrypt.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/identities":{"get":{"summary":"List Identities","operationId":"usersListIdentities","tags":["users"],"description":"Get identities for all users.","responses":{"200":{"description":"Identities List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/identityList"}}}}},"x-appwrite":{"method":"listIdentities","weight":231,"cookies":false,"type":"","demo":"users\/list-identities.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-identities.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, provider, providerUid, providerEmail, providerAccessTokenExpiry","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]}},"\/users\/identities\/{identityId}":{"delete":{"summary":"Delete identity","operationId":"usersDeleteIdentity","tags":["users"],"description":"Delete an identity by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIdentity","weight":251,"cookies":false,"type":"","demo":"users\/delete-identity.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-identity.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"identityId","description":"Identity ID.","required":true,"schema":{"type":"string","x-example":"[IDENTITY_ID]"},"in":"path"}]}},"\/users\/md5":{"post":{"summary":"Create user with MD5 password","operationId":"usersCreateMD5User","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [MD5](https:\/\/en.wikipedia.org\/wiki\/MD5) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createMD5User","weight":216,"cookies":false,"type":"","demo":"users\/create-m-d5user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-md5-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using MD5.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/phpass":{"post":{"summary":"Create user with PHPass password","operationId":"usersCreatePHPassUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [PHPass](https:\/\/www.openwall.com\/phpass\/) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createPHPassUser","weight":219,"cookies":false,"type":"","demo":"users\/create-p-h-pass-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-phpass-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or pass the string `ID.unique()`to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using PHPass.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/scrypt":{"post":{"summary":"Create user with Scrypt password","operationId":"usersCreateScryptUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt](https:\/\/github.com\/Tarsnap\/scrypt) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createScryptUser","weight":220,"cookies":false,"type":"","demo":"users\/create-scrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt.","x-example":"password"},"passwordSalt":{"type":"string","description":"Optional salt used to hash password.","x-example":"[PASSWORD_SALT]"},"passwordCpu":{"type":"integer","description":"Optional CPU cost used to hash password.","x-example":null},"passwordMemory":{"type":"integer","description":"Optional memory cost used to hash password.","x-example":null},"passwordParallel":{"type":"integer","description":"Optional parallelization cost used to hash password.","x-example":null},"passwordLength":{"type":"integer","description":"Optional hash length used to hash password.","x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordCpu","passwordMemory","passwordParallel","passwordLength"]}}}}}},"\/users\/scrypt-modified":{"post":{"summary":"Create user with Scrypt modified password","operationId":"usersCreateScryptModifiedUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt Modified](https:\/\/gist.github.com\/Meldiron\/eecf84a0225eccb5a378d45bb27462cc) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createScryptModifiedUser","weight":221,"cookies":false,"type":"","demo":"users\/create-scrypt-modified-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-modified-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt Modified.","x-example":"password"},"passwordSalt":{"type":"string","description":"Salt used to hash password.","x-example":"[PASSWORD_SALT]"},"passwordSaltSeparator":{"type":"string","description":"Salt separator used to hash password.","x-example":"[PASSWORD_SALT_SEPARATOR]"},"passwordSignerKey":{"type":"string","description":"Signer key used to hash password.","x-example":"[PASSWORD_SIGNER_KEY]"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordSaltSeparator","passwordSignerKey"]}}}}}},"\/users\/sha":{"post":{"summary":"Create user with SHA password","operationId":"usersCreateSHAUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [SHA](https:\/\/en.wikipedia.org\/wiki\/Secure_Hash_Algorithm) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createSHAUser","weight":218,"cookies":false,"type":"","demo":"users\/create-s-h-a-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-sha-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using SHA.","x-example":"password"},"passwordVersion":{"type":"string","description":"Optional SHA version used to hash password. Allowed values are: 'sha1', 'sha224', 'sha256', 'sha384', 'sha512\/224', 'sha512\/256', 'sha512', 'sha3-224', 'sha3-256', 'sha3-384', 'sha3-512'","x-example":"sha1","enum":["sha1","sha224","sha256","sha384","sha512\/224","sha512\/256","sha512","sha3-224","sha3-256","sha3-384","sha3-512"],"x-enum-name":null,"x-enum-keys":[]},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/usage":{"get":{"summary":"Get usage stats for the users API","operationId":"usersGetUsage","tags":["users"],"description":"","responses":{"200":{"description":"UsageUsers","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageUsers"}}}}},"x-appwrite":{"method":"getUsage","weight":252,"cookies":false,"type":"","demo":"users\/get-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"schema":{"type":"string","x-example":"24h","enum":["24h","30d","90d"],"x-enum-name":"UserUsageRange","x-enum-keys":["Twenty Four Hours","Thirty Days","Ninety Days"],"default":"30d"},"in":"query"}]}},"\/users\/{userId}":{"get":{"summary":"Get user","operationId":"usersGet","tags":["users"],"description":"Get a user by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"get","weight":224,"cookies":false,"type":"","demo":"users\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]},"delete":{"summary":"Delete user","operationId":"usersDelete","tags":["users"],"description":"Delete a user by its unique ID, thereby releasing it's ID. Since ID is released and can be reused, all user-related resources like documents or storage files should be deleted before user deletion. If you want to keep ID reserved, use the [updateStatus](https:\/\/appwrite.io\/docs\/server\/users#usersUpdateStatus) endpoint instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":249,"cookies":false,"type":"","demo":"users\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]}},"\/users\/{userId}\/email":{"patch":{"summary":"Update email","operationId":"usersUpdateEmail","tags":["users"],"description":"Update the user email by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateEmail","weight":237,"cookies":false,"type":"","demo":"users\/update-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","x-example":"email@example.com"}},"required":["email"]}}}}}},"\/users\/{userId}\/labels":{"put":{"summary":"Update user labels","operationId":"usersUpdateLabels","tags":["users"],"description":"Update the user labels by its unique ID. \n\nLabels can be used to grant access to resources. While teams are a way for user's to share access to a resource, labels can be defined by the developer to grant access without an invitation. See the [Permissions docs](https:\/\/appwrite.io\/docs\/permissions) for more info.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateLabels","weight":233,"cookies":false,"type":"","demo":"users\/update-labels.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-labels.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"labels":{"type":"array","description":"Array of user labels. Replaces the previous labels. Maximum of 1000 labels are allowed, each up to 36 alphanumeric characters long.","x-example":null,"items":{"type":"string"}}},"required":["labels"]}}}}}},"\/users\/{userId}\/logs":{"get":{"summary":"List user logs","operationId":"usersListLogs","tags":["users"],"description":"Get the user activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listLogs","weight":229,"cookies":false,"type":"","demo":"users\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/users\/{userId}\/memberships":{"get":{"summary":"List user memberships","operationId":"usersListMemberships","tags":["users"],"description":"Get the user membership list by its unique ID.","responses":{"200":{"description":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"listMemberships","weight":228,"cookies":false,"type":"","demo":"users\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-memberships.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]}},"\/users\/{userId}\/mfa":{"patch":{"summary":"Update MFA","operationId":"usersUpdateMfa","tags":["users"],"description":"","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateMfa","weight":242,"cookies":false,"type":"","demo":"users\/update-mfa.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-mfa.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"mfa":{"type":"boolean","description":"Enable or disable MFA.","x-example":false}},"required":["mfa"]}}}}}},"\/users\/{userId}\/mfa\/{provider}":{"delete":{"summary":"Delete Authenticator","operationId":"usersDeleteAuthenticator","tags":["users"],"description":"","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"deleteAuthenticator","weight":244,"cookies":false,"type":"","demo":"users\/delete-authenticator.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-mfa.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"provider","description":"Provider.","required":true,"schema":{"type":"string","x-example":"totp","enum":["totp"],"x-enum-name":"AuthenticatorProvider","x-enum-keys":[]},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"otp":{"type":"string","description":"Valid verification token.","x-example":"[OTP]"}},"required":["otp"]}}}}}},"\/users\/{userId}\/name":{"patch":{"summary":"Update name","operationId":"usersUpdateName","tags":["users"],"description":"Update the user name by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateName","weight":235,"cookies":false,"type":"","demo":"users\/update-name.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-name.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["name"]}}}}}},"\/users\/{userId}\/password":{"patch":{"summary":"Update password","operationId":"usersUpdatePassword","tags":["users"],"description":"Update the user password by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePassword","weight":236,"cookies":false,"type":"","demo":"users\/update-password.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-password.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"password":{"type":"string","description":"New user password. Must be at least 8 chars.","x-example":null}},"required":["password"]}}}}}},"\/users\/{userId}\/phone":{"patch":{"summary":"Update phone","operationId":"usersUpdatePhone","tags":["users"],"description":"Update the user phone by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePhone","weight":238,"cookies":false,"type":"","demo":"users\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"number":{"type":"string","description":"User phone number.","x-example":"+12065550100"}},"required":["number"]}}}}}},"\/users\/{userId}\/prefs":{"get":{"summary":"Get user preferences","operationId":"usersGetPrefs","tags":["users"],"description":"Get the user preferences by its unique ID.","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"getPrefs","weight":225,"cookies":false,"type":"","demo":"users\/get-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]},"patch":{"summary":"Update user preferences","operationId":"usersUpdatePrefs","tags":["users"],"description":"Update the user preferences by its unique ID. The object you pass is stored as is, and replaces any previous value. The maximum allowed prefs size is 64kB and throws error if exceeded.","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"updatePrefs","weight":240,"cookies":false,"type":"","demo":"users\/update-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"prefs":{"type":"object","description":"Prefs key-value JSON object.","x-example":"{}"}},"required":["prefs"]}}}}}},"\/users\/{userId}\/providers":{"get":{"summary":"List Providers","operationId":"usersListProviders","tags":["users"],"description":"","responses":{"200":{"description":"MFAProviders","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/mfaProviders"}}}}},"x-appwrite":{"method":"listProviders","weight":243,"cookies":false,"type":"","demo":"users\/list-providers.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-providers.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]}},"\/users\/{userId}\/sessions":{"get":{"summary":"List user sessions","operationId":"usersListSessions","tags":["users"],"description":"Get the user sessions list by its unique ID.","responses":{"200":{"description":"Sessions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/sessionList"}}}}},"x-appwrite":{"method":"listSessions","weight":227,"cookies":false,"type":"","demo":"users\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]},"post":{"summary":"Create session","operationId":"usersCreateSession","tags":["users"],"description":"Creates a session for a user. Returns an immediately usable session object.\n\nIf you want to generate a token for a custom authentication flow, use the [POST \/users\/{userId}\/tokens](https:\/\/appwrite.io\/docs\/server\/users#createToken) endpoint.","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"createSession","weight":245,"cookies":false,"type":"","demo":"users\/create-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-session.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]},"delete":{"summary":"Delete user sessions","operationId":"usersDeleteSessions","tags":["users"],"description":"Delete all user's sessions by using the user's unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":248,"cookies":false,"type":"","demo":"users\/delete-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]}},"\/users\/{userId}\/sessions\/{sessionId}":{"delete":{"summary":"Delete user session","operationId":"usersDeleteSession","tags":["users"],"description":"Delete a user sessions by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSession","weight":247,"cookies":false,"type":"","demo":"users\/delete-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-user-session.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"sessionId","description":"Session ID.","required":true,"schema":{"type":"string","x-example":"[SESSION_ID]"},"in":"path"}]}},"\/users\/{userId}\/status":{"patch":{"summary":"Update user status","operationId":"usersUpdateStatus","tags":["users"],"description":"Update the user status by its unique ID. Use this endpoint as an alternative to deleting a user if you want to keep user's ID reserved.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateStatus","weight":232,"cookies":false,"type":"","demo":"users\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"status":{"type":"boolean","description":"User Status. To activate the user pass `true` and to block the user pass `false`.","x-example":false}},"required":["status"]}}}}}},"\/users\/{userId}\/targets":{"get":{"summary":"List User Targets","operationId":"usersListTargets","tags":["users"],"description":"","responses":{"200":{"description":"Target list","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/targetList"}}}}},"x-appwrite":{"method":"listTargets","weight":230,"cookies":false,"type":"","demo":"users\/list-targets.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-targets.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.read","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, email, phone, status, passwordUpdate, registration, emailVerification, phoneVerification","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"post":{"summary":"Create User Target","operationId":"usersCreateTarget","tags":["users"],"description":"","responses":{"201":{"description":"Target","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/target"}}}}},"x-appwrite":{"method":"createTarget","weight":222,"cookies":false,"type":"","demo":"users\/create-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-target.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"targetId":{"type":"string","description":"Target ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[TARGET_ID]"},"providerType":{"type":"string","description":"The target provider type. Can be one of the following: `email`, `sms` or `push`.","x-example":"email","enum":["email","sms","push"],"x-enum-name":"MessagingProviderType","x-enum-keys":[]},"identifier":{"type":"string","description":"The target identifier (token, email, phone etc.)","x-example":"[IDENTIFIER]"},"providerId":{"type":"string","description":"Provider ID. Message will be sent to this target from the specified provider ID. If no provider ID is set the first setup provider will be used.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Target name. Max length: 128 chars. For example: My Awesome App Galaxy S23.","x-example":"[NAME]"}},"required":["targetId","providerType","identifier"]}}}}}},"\/users\/{userId}\/targets\/{targetId}":{"get":{"summary":"Get User Target","operationId":"usersGetTarget","tags":["users"],"description":"","responses":{"200":{"description":"Target","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/target"}}}}},"x-appwrite":{"method":"getTarget","weight":226,"cookies":false,"type":"","demo":"users\/get-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-target.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.read","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"targetId","description":"Target ID.","required":true,"schema":{"type":"string","x-example":"[TARGET_ID]"},"in":"path"}]},"patch":{"summary":"Update User target","operationId":"usersUpdateTarget","tags":["users"],"description":"","responses":{"200":{"description":"Target","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/target"}}}}},"x-appwrite":{"method":"updateTarget","weight":241,"cookies":false,"type":"","demo":"users\/update-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-target.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"targetId","description":"Target ID.","required":true,"schema":{"type":"string","x-example":"[TARGET_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"identifier":{"type":"string","description":"The target identifier (token, email, phone etc.)","x-example":"[IDENTIFIER]"},"providerId":{"type":"string","description":"Provider ID. Message will be sent to this target from the specified provider ID. If no provider ID is set the first setup provider will be used.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Target name. Max length: 128 chars. For example: My Awesome App Galaxy S23.","x-example":"[NAME]"}}}}}}},"delete":{"summary":"Delete user target","operationId":"usersDeleteTarget","tags":["users"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteTarget","weight":250,"cookies":false,"type":"","demo":"users\/delete-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-target.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"targetId","description":"Target ID.","required":true,"schema":{"type":"string","x-example":"[TARGET_ID]"},"in":"path"}]}},"\/users\/{userId}\/tokens":{"post":{"summary":"Create token","operationId":"usersCreateToken","tags":["users"],"description":"Returns a token with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [PUT \/account\/sessions\/custom](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateCustomSession) endpoint to complete the login process.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createToken","weight":246,"cookies":false,"type":"","demo":"users\/create-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-token.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"length":{"type":"integer","description":"Token length in characters. The default length is 6 characters","x-example":4},"expire":{"type":"integer","description":"Token expiration period in seconds. The default expiration is 15 minutes.","x-example":60}}}}}}}},"\/users\/{userId}\/verification":{"patch":{"summary":"Update email verification","operationId":"usersUpdateEmailVerification","tags":["users"],"description":"Update the user email verification status by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateEmailVerification","weight":239,"cookies":false,"type":"","demo":"users\/update-email-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-email-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"emailVerification":{"type":"boolean","description":"User email verification status.","x-example":false}},"required":["emailVerification"]}}}}}},"\/users\/{userId}\/verification\/phone":{"patch":{"summary":"Update phone verification","operationId":"usersUpdatePhoneVerification","tags":["users"],"description":"Update the user phone verification status by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePhoneVerification","weight":234,"cookies":false,"type":"","demo":"users\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"phoneVerification":{"type":"boolean","description":"User phone verification status.","x-example":false}},"required":["phoneVerification"]}}}}}},"\/vcs\/github\/installations\/{installationId}\/providerRepositories":{"get":{"summary":"List Repositories","operationId":"vcsListRepositories","tags":["vcs"],"description":"","responses":{"200":{"description":"Provider Repositories List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/providerRepositoryList"}}}}},"x-appwrite":{"method":"listRepositories","weight":256,"cookies":false,"type":"","demo":"vcs\/list-repositories.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"schema":{"type":"string","x-example":"[INSTALLATION_ID]"},"in":"path"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create repository","operationId":"vcsCreateRepository","tags":["vcs"],"description":"","responses":{"200":{"description":"ProviderRepository","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/providerRepository"}}}}},"x-appwrite":{"method":"createRepository","weight":257,"cookies":false,"type":"","demo":"vcs\/create-repository.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"schema":{"type":"string","x-example":"[INSTALLATION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Repository name (slug)","x-example":"[NAME]"},"private":{"type":"boolean","description":"Mark repository public or private","x-example":false}},"required":["name","private"]}}}}}},"\/vcs\/github\/installations\/{installationId}\/providerRepositories\/{providerRepositoryId}":{"get":{"summary":"Get repository","operationId":"vcsGetRepository","tags":["vcs"],"description":"","responses":{"200":{"description":"ProviderRepository","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/providerRepository"}}}}},"x-appwrite":{"method":"getRepository","weight":258,"cookies":false,"type":"","demo":"vcs\/get-repository.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"schema":{"type":"string","x-example":"[INSTALLATION_ID]"},"in":"path"},{"name":"providerRepositoryId","description":"Repository Id","required":true,"schema":{"type":"string","x-example":"[PROVIDER_REPOSITORY_ID]"},"in":"path"}]}},"\/vcs\/github\/installations\/{installationId}\/providerRepositories\/{providerRepositoryId}\/branches":{"get":{"summary":"List Repository Branches","operationId":"vcsListRepositoryBranches","tags":["vcs"],"description":"","responses":{"200":{"description":"Branches List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/branchList"}}}}},"x-appwrite":{"method":"listRepositoryBranches","weight":259,"cookies":false,"type":"","demo":"vcs\/list-repository-branches.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"schema":{"type":"string","x-example":"[INSTALLATION_ID]"},"in":"path"},{"name":"providerRepositoryId","description":"Repository Id","required":true,"schema":{"type":"string","x-example":"[PROVIDER_REPOSITORY_ID]"},"in":"path"}]}},"\/vcs\/github\/installations\/{installationId}\/providerRepositories\/{providerRepositoryId}\/detection":{"post":{"summary":"Detect runtime settings from source code","operationId":"vcsCreateRepositoryDetection","tags":["vcs"],"description":"","responses":{"200":{"description":"Detection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/detection"}}}}},"x-appwrite":{"method":"createRepositoryDetection","weight":255,"cookies":false,"type":"","demo":"vcs\/create-repository-detection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"schema":{"type":"string","x-example":"[INSTALLATION_ID]"},"in":"path"},{"name":"providerRepositoryId","description":"Repository Id","required":true,"schema":{"type":"string","x-example":"[PROVIDER_REPOSITORY_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerRootDirectory":{"type":"string","description":"Path to Root Directory","x-example":"[PROVIDER_ROOT_DIRECTORY]"}}}}}}}},"\/vcs\/github\/installations\/{installationId}\/repositories\/{repositoryId}":{"patch":{"summary":"Authorize external deployment","operationId":"vcsUpdateExternalDeployments","tags":["vcs"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"updateExternalDeployments","weight":264,"cookies":false,"type":"","demo":"vcs\/update-external-deployments.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"schema":{"type":"string","x-example":"[INSTALLATION_ID]"},"in":"path"},{"name":"repositoryId","description":"VCS Repository Id","required":true,"schema":{"type":"string","x-example":"[REPOSITORY_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerPullRequestId":{"type":"string","description":"GitHub Pull Request Id","x-example":"[PROVIDER_PULL_REQUEST_ID]"}},"required":["providerPullRequestId"]}}}}}},"\/vcs\/installations":{"get":{"summary":"List installations","operationId":"vcsListInstallations","tags":["vcs"],"description":"","responses":{"200":{"description":"Installations List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/installationList"}}}}},"x-appwrite":{"method":"listInstallations","weight":261,"cookies":false,"type":"","demo":"vcs\/list-installations.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/vcs\/list-installations.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: provider, organization","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]}},"\/vcs\/installations\/{installationId}":{"get":{"summary":"Get installation","operationId":"vcsGetInstallation","tags":["vcs"],"description":"","responses":{"200":{"description":"Installation","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/installation"}}}}},"x-appwrite":{"method":"getInstallation","weight":262,"cookies":false,"type":"","demo":"vcs\/get-installation.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/vcs\/get-installation.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"schema":{"type":"string","x-example":"[INSTALLATION_ID]"},"in":"path"}]},"delete":{"summary":"Delete Installation","operationId":"vcsDeleteInstallation","tags":["vcs"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteInstallation","weight":263,"cookies":false,"type":"","demo":"vcs\/delete-installation.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/vcs\/delete-installation.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"schema":{"type":"string","x-example":"[INSTALLATION_ID]"},"in":"path"}]}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"project","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]},{"name":"proxy","description":"The Proxy Service allows you to configure actions for your domains beyond DNS configuration.","x-globalAttributes":[]},{"name":"graphql","description":"The GraphQL API allows you to query and mutate your Appwrite server using GraphQL.","x-globalAttributes":[]},{"name":"console","description":"The Console service allows you to interact with console relevant informations.","x-globalAttributes":[]},{"name":"migrations","description":"The Migrations service allows you to migrate third-party data to your Appwrite project.","x-globalAttributes":[]},{"name":"messaging","description":"The Messaging service allows you to send messages to any provider type (SMTP, push notification, SMS, etc.).","x-globalAttributes":[]}],"components":{"schemas":{"any":{"description":"Any","type":"object","additionalProperties":true},"error":{"description":"Error","type":"object","properties":{"message":{"type":"string","description":"Error message.","x-example":"Not found"},"code":{"type":"string","description":"Error code.","x-example":"404"},"type":{"type":"string","description":"Error type. You can learn more about all the error types at https:\/\/appwrite.io\/docs\/error-codes#errorTypes","x-example":"not_found"},"version":{"type":"string","description":"Server version number.","x-example":"1.0"}},"required":["message","code","type","version"]},"documentList":{"description":"Documents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of documents documents that matched your query.","x-example":5,"format":"int32"},"documents":{"type":"array","description":"List of documents.","items":{"$ref":"#\/components\/schemas\/document"},"x-example":""}},"required":["total","documents"]},"collectionList":{"description":"Collections List","type":"object","properties":{"total":{"type":"integer","description":"Total number of collections documents that matched your query.","x-example":5,"format":"int32"},"collections":{"type":"array","description":"List of collections.","items":{"$ref":"#\/components\/schemas\/collection"},"x-example":""}},"required":["total","collections"]},"databaseList":{"description":"Databases List","type":"object","properties":{"total":{"type":"integer","description":"Total number of databases documents that matched your query.","x-example":5,"format":"int32"},"databases":{"type":"array","description":"List of databases.","items":{"$ref":"#\/components\/schemas\/database"},"x-example":""}},"required":["total","databases"]},"indexList":{"description":"Indexes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of indexes documents that matched your query.","x-example":5,"format":"int32"},"indexes":{"type":"array","description":"List of indexes.","items":{"$ref":"#\/components\/schemas\/index"},"x-example":""}},"required":["total","indexes"]},"userList":{"description":"Users List","type":"object","properties":{"total":{"type":"integer","description":"Total number of users documents that matched your query.","x-example":5,"format":"int32"},"users":{"type":"array","description":"List of users.","items":{"$ref":"#\/components\/schemas\/user"},"x-example":""}},"required":["total","users"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of sessions documents that matched your query.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"$ref":"#\/components\/schemas\/session"},"x-example":""}},"required":["total","sessions"]},"identityList":{"description":"Identities List","type":"object","properties":{"total":{"type":"integer","description":"Total number of identities documents that matched your query.","x-example":5,"format":"int32"},"identities":{"type":"array","description":"List of identities.","items":{"$ref":"#\/components\/schemas\/identity"},"x-example":""}},"required":["total","identities"]},"logList":{"description":"Logs List","type":"object","properties":{"total":{"type":"integer","description":"Total number of logs documents that matched your query.","x-example":5,"format":"int32"},"logs":{"type":"array","description":"List of logs.","items":{"$ref":"#\/components\/schemas\/log"},"x-example":""}},"required":["total","logs"]},"fileList":{"description":"Files List","type":"object","properties":{"total":{"type":"integer","description":"Total number of files documents that matched your query.","x-example":5,"format":"int32"},"files":{"type":"array","description":"List of files.","items":{"$ref":"#\/components\/schemas\/file"},"x-example":""}},"required":["total","files"]},"bucketList":{"description":"Buckets List","type":"object","properties":{"total":{"type":"integer","description":"Total number of buckets documents that matched your query.","x-example":5,"format":"int32"},"buckets":{"type":"array","description":"List of buckets.","items":{"$ref":"#\/components\/schemas\/bucket"},"x-example":""}},"required":["total","buckets"]},"teamList":{"description":"Teams List","type":"object","properties":{"total":{"type":"integer","description":"Total number of teams documents that matched your query.","x-example":5,"format":"int32"},"teams":{"type":"array","description":"List of teams.","items":{"$ref":"#\/components\/schemas\/team"},"x-example":""}},"required":["total","teams"]},"membershipList":{"description":"Memberships List","type":"object","properties":{"total":{"type":"integer","description":"Total number of memberships documents that matched your query.","x-example":5,"format":"int32"},"memberships":{"type":"array","description":"List of memberships.","items":{"$ref":"#\/components\/schemas\/membership"},"x-example":""}},"required":["total","memberships"]},"functionList":{"description":"Functions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of functions documents that matched your query.","x-example":5,"format":"int32"},"functions":{"type":"array","description":"List of functions.","items":{"$ref":"#\/components\/schemas\/function"},"x-example":""}},"required":["total","functions"]},"installationList":{"description":"Installations List","type":"object","properties":{"total":{"type":"integer","description":"Total number of installations documents that matched your query.","x-example":5,"format":"int32"},"installations":{"type":"array","description":"List of installations.","items":{"$ref":"#\/components\/schemas\/installation"},"x-example":""}},"required":["total","installations"]},"providerRepositoryList":{"description":"Provider Repositories List","type":"object","properties":{"total":{"type":"integer","description":"Total number of providerRepositories documents that matched your query.","x-example":5,"format":"int32"},"providerRepositories":{"type":"array","description":"List of providerRepositories.","items":{"$ref":"#\/components\/schemas\/providerRepository"},"x-example":""}},"required":["total","providerRepositories"]},"branchList":{"description":"Branches List","type":"object","properties":{"total":{"type":"integer","description":"Total number of branches documents that matched your query.","x-example":5,"format":"int32"},"branches":{"type":"array","description":"List of branches.","items":{"$ref":"#\/components\/schemas\/branch"},"x-example":""}},"required":["total","branches"]},"runtimeList":{"description":"Runtimes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of runtimes documents that matched your query.","x-example":5,"format":"int32"},"runtimes":{"type":"array","description":"List of runtimes.","items":{"$ref":"#\/components\/schemas\/runtime"},"x-example":""}},"required":["total","runtimes"]},"deploymentList":{"description":"Deployments List","type":"object","properties":{"total":{"type":"integer","description":"Total number of deployments documents that matched your query.","x-example":5,"format":"int32"},"deployments":{"type":"array","description":"List of deployments.","items":{"$ref":"#\/components\/schemas\/deployment"},"x-example":""}},"required":["total","deployments"]},"executionList":{"description":"Executions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of executions documents that matched your query.","x-example":5,"format":"int32"},"executions":{"type":"array","description":"List of executions.","items":{"$ref":"#\/components\/schemas\/execution"},"x-example":""}},"required":["total","executions"]},"projectList":{"description":"Projects List","type":"object","properties":{"total":{"type":"integer","description":"Total number of projects documents that matched your query.","x-example":5,"format":"int32"},"projects":{"type":"array","description":"List of projects.","items":{"$ref":"#\/components\/schemas\/project"},"x-example":""}},"required":["total","projects"]},"webhookList":{"description":"Webhooks List","type":"object","properties":{"total":{"type":"integer","description":"Total number of webhooks documents that matched your query.","x-example":5,"format":"int32"},"webhooks":{"type":"array","description":"List of webhooks.","items":{"$ref":"#\/components\/schemas\/webhook"},"x-example":""}},"required":["total","webhooks"]},"keyList":{"description":"API Keys List","type":"object","properties":{"total":{"type":"integer","description":"Total number of keys documents that matched your query.","x-example":5,"format":"int32"},"keys":{"type":"array","description":"List of keys.","items":{"$ref":"#\/components\/schemas\/key"},"x-example":""}},"required":["total","keys"]},"platformList":{"description":"Platforms List","type":"object","properties":{"total":{"type":"integer","description":"Total number of platforms documents that matched your query.","x-example":5,"format":"int32"},"platforms":{"type":"array","description":"List of platforms.","items":{"$ref":"#\/components\/schemas\/platform"},"x-example":""}},"required":["total","platforms"]},"countryList":{"description":"Countries List","type":"object","properties":{"total":{"type":"integer","description":"Total number of countries documents that matched your query.","x-example":5,"format":"int32"},"countries":{"type":"array","description":"List of countries.","items":{"$ref":"#\/components\/schemas\/country"},"x-example":""}},"required":["total","countries"]},"continentList":{"description":"Continents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of continents documents that matched your query.","x-example":5,"format":"int32"},"continents":{"type":"array","description":"List of continents.","items":{"$ref":"#\/components\/schemas\/continent"},"x-example":""}},"required":["total","continents"]},"languageList":{"description":"Languages List","type":"object","properties":{"total":{"type":"integer","description":"Total number of languages documents that matched your query.","x-example":5,"format":"int32"},"languages":{"type":"array","description":"List of languages.","items":{"$ref":"#\/components\/schemas\/language"},"x-example":""}},"required":["total","languages"]},"currencyList":{"description":"Currencies List","type":"object","properties":{"total":{"type":"integer","description":"Total number of currencies documents that matched your query.","x-example":5,"format":"int32"},"currencies":{"type":"array","description":"List of currencies.","items":{"$ref":"#\/components\/schemas\/currency"},"x-example":""}},"required":["total","currencies"]},"phoneList":{"description":"Phones List","type":"object","properties":{"total":{"type":"integer","description":"Total number of phones documents that matched your query.","x-example":5,"format":"int32"},"phones":{"type":"array","description":"List of phones.","items":{"$ref":"#\/components\/schemas\/phone"},"x-example":""}},"required":["total","phones"]},"variableList":{"description":"Variables List","type":"object","properties":{"total":{"type":"integer","description":"Total number of variables documents that matched your query.","x-example":5,"format":"int32"},"variables":{"type":"array","description":"List of variables.","items":{"$ref":"#\/components\/schemas\/variable"},"x-example":""}},"required":["total","variables"]},"proxyRuleList":{"description":"Rule List","type":"object","properties":{"total":{"type":"integer","description":"Total number of rules documents that matched your query.","x-example":5,"format":"int32"},"rules":{"type":"array","description":"List of rules.","items":{"$ref":"#\/components\/schemas\/proxyRule"},"x-example":""}},"required":["total","rules"]},"localeCodeList":{"description":"Locale codes list","type":"object","properties":{"total":{"type":"integer","description":"Total number of localeCodes documents that matched your query.","x-example":5,"format":"int32"},"localeCodes":{"type":"array","description":"List of localeCodes.","items":{"$ref":"#\/components\/schemas\/localeCode"},"x-example":""}},"required":["total","localeCodes"]},"providerList":{"description":"Provider list","type":"object","properties":{"total":{"type":"integer","description":"Total number of providers documents that matched your query.","x-example":5,"format":"int32"},"providers":{"type":"array","description":"List of providers.","items":{"$ref":"#\/components\/schemas\/provider"},"x-example":""}},"required":["total","providers"]},"messageList":{"description":"Message list","type":"object","properties":{"total":{"type":"integer","description":"Total number of messages documents that matched your query.","x-example":5,"format":"int32"},"messages":{"type":"array","description":"List of messages.","items":{"$ref":"#\/components\/schemas\/message"},"x-example":""}},"required":["total","messages"]},"topicList":{"description":"Topic list","type":"object","properties":{"total":{"type":"integer","description":"Total number of topics documents that matched your query.","x-example":5,"format":"int32"},"topics":{"type":"array","description":"List of topics.","items":{"$ref":"#\/components\/schemas\/topic"},"x-example":""}},"required":["total","topics"]},"subscriberList":{"description":"Subscriber list","type":"object","properties":{"total":{"type":"integer","description":"Total number of subscribers documents that matched your query.","x-example":5,"format":"int32"},"subscribers":{"type":"array","description":"List of subscribers.","items":{"$ref":"#\/components\/schemas\/subscriber"},"x-example":""}},"required":["total","subscribers"]},"targetList":{"description":"Target list","type":"object","properties":{"total":{"type":"integer","description":"Total number of targets documents that matched your query.","x-example":5,"format":"int32"},"targets":{"type":"array","description":"List of targets.","items":{"$ref":"#\/components\/schemas\/target"},"x-example":""}},"required":["total","targets"]},"migrationList":{"description":"Migrations List","type":"object","properties":{"total":{"type":"integer","description":"Total number of migrations documents that matched your query.","x-example":5,"format":"int32"},"migrations":{"type":"array","description":"List of migrations.","items":{"$ref":"#\/components\/schemas\/migration"},"x-example":""}},"required":["total","migrations"]},"firebaseProjectList":{"description":"Migrations Firebase Projects List","type":"object","properties":{"total":{"type":"integer","description":"Total number of projects documents that matched your query.","x-example":5,"format":"int32"},"projects":{"type":"array","description":"List of projects.","items":{"$ref":"#\/components\/schemas\/firebaseProject"},"x-example":""}},"required":["total","projects"]},"database":{"description":"Database","type":"object","properties":{"$id":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Database name.","x-example":"My Database"},"$createdAt":{"type":"string","description":"Database creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Database update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"enabled":{"type":"boolean","description":"If database is enabled. Can be 'enabled' or 'disabled'. When disabled, the database is inaccessible to users, but remains accessible to Server SDKs using API keys.","x-example":false}},"required":["$id","name","$createdAt","$updatedAt","enabled"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Collection creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Collection update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Collection permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled. Can be 'enabled' or 'disabled'. When disabled, the collection is inaccessible to users, but remains accessible to Server SDKs using API keys.","x-example":false},"documentSecurity":{"type":"boolean","description":"Whether document-level permissions are enabled. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":true},"attributes":{"type":"array","description":"Collection attributes.","items":{"anyOf":[{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeRelationship"},{"$ref":"#\/components\/schemas\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"$ref":"#\/components\/schemas\/index"},"x-example":{}}},"required":["$id","$createdAt","$updatedAt","$permissions","databaseId","name","enabled","documentSecurity","attributes","indexes"]},"attributeList":{"description":"Attributes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of attributes in the given collection.","x-example":5,"format":"int32"},"attributes":{"type":"array","description":"List of attributes.","items":{"anyOf":[{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeRelationship"},{"$ref":"#\/components\/schemas\/attributeString"}]},"x-example":""}},"required":["total","attributes"]},"attributeString":{"description":"AttributeString","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"fullName"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"size":{"type":"integer","description":"Attribute size.","x-example":128,"format":"int32"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"default","nullable":true}},"required":["key","type","status","error","required","size"]},"attributeInteger":{"description":"AttributeInteger","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"count"},"type":{"type":"string","description":"Attribute type.","x-example":"integer"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"min":{"type":"integer","description":"Minimum value to enforce for new documents.","x-example":1,"format":"int32","nullable":true},"max":{"type":"integer","description":"Maximum value to enforce for new documents.","x-example":10,"format":"int32","nullable":true},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":10,"format":"int32","nullable":true}},"required":["key","type","status","error","required"]},"attributeFloat":{"description":"AttributeFloat","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"percentageCompleted"},"type":{"type":"string","description":"Attribute type.","x-example":"double"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"min":{"type":"number","description":"Minimum value to enforce for new documents.","x-example":1.5,"format":"double","nullable":true},"max":{"type":"number","description":"Maximum value to enforce for new documents.","x-example":10.5,"format":"double","nullable":true},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":2.5,"format":"double","nullable":true}},"required":["key","type","status","error","required"]},"attributeBoolean":{"description":"AttributeBoolean","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"isEnabled"},"type":{"type":"string","description":"Attribute type.","x-example":"boolean"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":false,"nullable":true}},"required":["key","type","status","error","required"]},"attributeEmail":{"description":"AttributeEmail","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"userEmail"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"format":{"type":"string","description":"String format.","x-example":"email"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"default@example.com","nullable":true}},"required":["key","type","status","error","required","format"]},"attributeEnum":{"description":"AttributeEnum","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"status"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"elements":{"type":"array","description":"Array of elements in enumerated type.","items":{"type":"string"},"x-example":"element"},"format":{"type":"string","description":"String format.","x-example":"enum"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"element","nullable":true}},"required":["key","type","status","error","required","elements","format"]},"attributeIp":{"description":"AttributeIP","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"ipAddress"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"format":{"type":"string","description":"String format.","x-example":"ip"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"192.0.2.0","nullable":true}},"required":["key","type","status","error","required","format"]},"attributeUrl":{"description":"AttributeURL","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"githubUrl"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"format":{"type":"string","description":"String format.","x-example":"url"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"http:\/\/example.com","nullable":true}},"required":["key","type","status","error","required","format"]},"attributeDatetime":{"description":"AttributeDatetime","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"birthDay"},"type":{"type":"string","description":"Attribute type.","x-example":"datetime"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"format":{"type":"string","description":"ISO 8601 format.","x-example":"datetime"},"default":{"type":"string","description":"Default value for attribute when not provided. Only null is optional","x-example":"2020-10-15T06:38:00.000+00:00","nullable":true}},"required":["key","type","status","error","required","format"]},"attributeRelationship":{"description":"AttributeRelationship","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"fullName"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"relatedCollection":{"type":"string","description":"The ID of the related collection.","x-example":"collection"},"relationType":{"type":"string","description":"The type of the relationship.","x-example":"oneToOne|oneToMany|manyToOne|manyToMany"},"twoWay":{"type":"boolean","description":"Is the relationship two-way?","x-example":false},"twoWayKey":{"type":"string","description":"The key of the two-way relationship.","x-example":"string"},"onDelete":{"type":"string","description":"How deleting the parent document will propagate to child documents.","x-example":"restrict|cascade|setNull"},"side":{"type":"string","description":"Whether this is the parent or child side of the relationship","x-example":"parent|child"}},"required":["key","type","status","error","required","relatedCollection","relationType","twoWay","twoWayKey","onDelete","side"]},"index":{"description":"Index","type":"object","properties":{"key":{"type":"string","description":"Index Key.","x-example":"index1"},"type":{"type":"string","description":"Index type.","x-example":"primary"},"status":{"type":"string","description":"Index status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an index.","x-example":"string"},"attributes":{"type":"array","description":"Index attributes.","items":{"type":"string"},"x-example":[]},"orders":{"type":"array","description":"Index orders.","items":{"type":"string"},"x-example":[],"nullable":true}},"required":["key","type","status","error","attributes"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"user":{"description":"User","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"password":{"type":"string","description":"Hashed user password.","x-example":"$argon2id$v=19$m=2048,t=4,p=3$aUZjLnliVWRINmFNTWMudg$5S+x+7uA31xFnrHFT47yFwcJeaP0w92L\/4LdgrVRXxE","nullable":true},"hash":{"type":"string","description":"Password hashing algorithm.","x-example":"argon2","nullable":true},"hashOptions":{"type":"object","description":"Password hashing algorithm configuration.","x-example":{},"items":{"oneOf":[{"$ref":"#\/components\/schemas\/algoArgon2"},{"$ref":"#\/components\/schemas\/algoScrypt"},{"$ref":"#\/components\/schemas\/algoScryptModified"},{"$ref":"#\/components\/schemas\/algoBcrypt"},{"$ref":"#\/components\/schemas\/algoPhpass"},{"$ref":"#\/components\/schemas\/algoSha"},{"$ref":"#\/components\/schemas\/algoMd5"}]},"nullable":true},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"labels":{"type":"array","description":"Labels for the user.","items":{"type":"string"},"x-example":["vip"]},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"mfa":{"type":"boolean","description":"Multi factor authentication status.","x-example":true},"totp":{"type":"boolean","description":"TOTP status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"$ref":"#\/components\/schemas\/preferences"}},"targets":{"type":"array","description":"A user-owned message receiver. A single user may have multiple e.g. emails, phones, and a browser. Each target is registered with a single provider.","items":{"$ref":"#\/components\/schemas\/target"},"x-example":[]},"accessedAt":{"type":"string","description":"Most recent access date in ISO 8601 format. This attribute is only updated again after 24 hours.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","$updatedAt","name","registration","status","labels","passwordUpdate","email","phone","emailVerification","phoneVerification","mfa","totp","prefs","targets","accessedAt"]},"algoMd5":{"description":"AlgoMD5","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"md5"}},"required":["type"]},"algoSha":{"description":"AlgoSHA","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"sha"}},"required":["type"]},"algoPhpass":{"description":"AlgoPHPass","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"phpass"}},"required":["type"]},"algoBcrypt":{"description":"AlgoBcrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"bcrypt"}},"required":["type"]},"algoScrypt":{"description":"AlgoScrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scrypt"},"costCpu":{"type":"integer","description":"CPU complexity of computed hash.","x-example":8,"format":"int32"},"costMemory":{"type":"integer","description":"Memory complexity of computed hash.","x-example":14,"format":"int32"},"costParallel":{"type":"integer","description":"Parallelization of computed hash.","x-example":1,"format":"int32"},"length":{"type":"integer","description":"Length used to compute hash.","x-example":64,"format":"int32"}},"required":["type","costCpu","costMemory","costParallel","length"]},"algoScryptModified":{"description":"AlgoScryptModified","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scryptMod"},"salt":{"type":"string","description":"Salt used to compute hash.","x-example":"UxLMreBr6tYyjQ=="},"saltSeparator":{"type":"string","description":"Separator used to compute hash.","x-example":"Bw=="},"signerKey":{"type":"string","description":"Key used to compute hash.","x-example":"XyEKE9RcTDeLEsL\/RjwPDBv\/RqDl8fb3gpYEOQaPihbxf1ZAtSOHCjuAAa7Q3oHpCYhXSN9tizHgVOwn6krflQ=="}},"required":["type","salt","saltSeparator","signerKey"]},"algoArgon2":{"description":"AlgoArgon2","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"argon2"},"memoryCost":{"type":"integer","description":"Memory used to compute hash.","x-example":65536,"format":"int32"},"timeCost":{"type":"integer","description":"Amount of time consumed to compute hash","x-example":4,"format":"int32"},"threads":{"type":"integer","description":"Number of threads used to compute hash.","x-example":3,"format":"int32"}},"required":["type","memoryCost","timeCost","threads"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true},"factors":{"type":"array","description":"Returns a list of active session factors.","items":{"type":"string"},"x-example":["email"]},"secret":{"type":"string","description":"Secret used to authenticate the user. Only included if the request was made with an API key","x-example":"5e5bb8c16897e"}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current","factors","secret"]},"identity":{"description":"Identity","type":"object","properties":{"$id":{"type":"string","description":"Identity ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Identity creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Identity update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"provider":{"type":"string","description":"Identity Provider.","x-example":"email"},"providerUid":{"type":"string","description":"ID of the User in the Identity Provider.","x-example":"5e5bb8c16897e"},"providerEmail":{"type":"string","description":"Email of the User in the Identity Provider.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Identity Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Identity Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"}},"required":["$id","$createdAt","$updatedAt","userId","provider","providerUid","providerEmail","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"phrase":{"type":"string","description":"Security phrase of a token. Empty if security phrase was not requested when creating a token. It includes randomly generated phrase which is also sent in the external resource such as email.","x-example":"Golden Fox"}},"required":["$id","$createdAt","userId","secret","expire","phrase"]},"jwt":{"description":"JWT","type":"object","properties":{"jwt":{"type":"string","description":"JWT encoded string.","x-example":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c"}},"required":["jwt"]},"locale":{"description":"Locale","type":"object","properties":{"ip":{"type":"string","description":"User IP address.","x-example":"127.0.0.1"},"countryCode":{"type":"string","description":"Country code in [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) two-character format","x-example":"US"},"country":{"type":"string","description":"Country name. This field support localization.","x-example":"United States"},"continentCode":{"type":"string","description":"Continent code. A two character continent code \"AF\" for Africa, \"AN\" for Antarctica, \"AS\" for Asia, \"EU\" for Europe, \"NA\" for North America, \"OC\" for Oceania, and \"SA\" for South America.","x-example":"NA"},"continent":{"type":"string","description":"Continent name. This field support localization.","x-example":"North America"},"eu":{"type":"boolean","description":"True if country is part of the European Union.","x-example":false},"currency":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format","x-example":"USD"}},"required":["ip","countryCode","country","continentCode","continent","eu","currency"]},"localeCode":{"description":"LocaleCode","type":"object","properties":{"code":{"type":"string","description":"Locale codes in [ISO 639-1](https:\/\/en.wikipedia.org\/wiki\/List_of_ISO_639-1_codes)","x-example":"en-us"},"name":{"type":"string","description":"Locale name","x-example":"US"}},"required":["code","name"]},"file":{"description":"File","type":"object","properties":{"$id":{"type":"string","description":"File ID.","x-example":"5e5ea5c16897e"},"bucketId":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Bucket creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Bucket update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Bucket permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"fileSecurity":{"type":"boolean","description":"Whether file-level security is enabled. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":true},"name":{"type":"string","description":"Bucket name.","x-example":"Documents"},"enabled":{"type":"boolean","description":"Bucket enabled.","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size supported.","x-example":100,"format":"int32"},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions.","items":{"type":"string"},"x-example":["jpg","png"]},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Will be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd).","x-example":"gzip"},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$createdAt","$updatedAt","$permissions","fileSecurity","name","enabled","maximumFileSize","allowedFileExtensions","compression","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"},"prefs":{"type":"object","description":"Team preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"$ref":"#\/components\/schemas\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","total","prefs"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"mfa":{"type":"boolean","description":"Multi factor authentication status, true if the user has MFA enabled or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":["owner"]}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","mfa","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Function creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Function update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"users"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"enabled":{"type":"boolean","description":"Function enabled.","x-example":false},"live":{"type":"boolean","description":"Is the function deployed with the latest configuration? This is set to false if you've changed an environment variables, entrypoint, commands, or other settings that needs redeploy to be applied. When the value is false, redeploy the function to update it with the latest configuration.","x-example":false},"logging":{"type":"boolean","description":"Whether executions will be logged. When set to false, executions will not be logged, but will reduce resource used by your Appwrite project.","x-example":false},"runtime":{"type":"string","description":"Function execution runtime.","x-example":"python-3.8"},"deployment":{"type":"string","description":"Function's active deployment ID.","x-example":"5e5ea5c16897e"},"vars":{"type":"array","description":"Function variables.","items":{"$ref":"#\/components\/schemas\/variable"},"x-example":[]},"events":{"type":"array","description":"Function trigger events.","items":{"type":"string"},"x-example":"account.create"},"schedule":{"type":"string","description":"Function execution schedult in CRON format.","x-example":"5 4 * * *"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":300,"format":"int32"},"entrypoint":{"type":"string","description":"The entrypoint file used to execute the deployment.","x-example":"index.js"},"commands":{"type":"string","description":"The build command used to build the deployment.","x-example":"npm install"},"version":{"type":"string","description":"Version of Open Runtimes used for the function.","x-example":"v2"},"installationId":{"type":"string","description":"Function VCS (Version Control System) installation id.","x-example":"6m40at4ejk5h2u9s1hboo"},"providerRepositoryId":{"type":"string","description":"VCS (Version Control System) Repository ID","x-example":"appwrite"},"providerBranch":{"type":"string","description":"VCS (Version Control System) branch name","x-example":"main"},"providerRootDirectory":{"type":"string","description":"Path to function in VCS (Version Control System) repository","x-example":"functions\/helloWorld"},"providerSilentMode":{"type":"boolean","description":"Is VCS (Version Control System) connection is in silent mode? When in silence mode, no comments will be posted on the repository pull or merge requests","x-example":false}},"required":["$id","$createdAt","$updatedAt","execute","name","enabled","live","logging","runtime","deployment","vars","events","schedule","timeout","entrypoint","commands","version","installationId","providerRepositoryId","providerBranch","providerRootDirectory","providerSilentMode"]},"installation":{"description":"Installation","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Function creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Function update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"VCS (Version Control System) provider name.","x-example":"github"},"organization":{"type":"string","description":"VCS (Version Control System) organization name.","x-example":"appwrite"},"providerInstallationId":{"type":"string","description":"VCS (Version Control System) installation ID.","x-example":"5322"}},"required":["$id","$createdAt","$updatedAt","provider","organization","providerInstallationId"]},"providerRepository":{"description":"ProviderRepository","type":"object","properties":{"id":{"type":"string","description":"VCS (Version Control System) repository ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"VCS (Version Control System) repository name.","x-example":"appwrite"},"organization":{"type":"string","description":"VCS (Version Control System) organization name","x-example":"appwrite"},"provider":{"type":"string","description":"VCS (Version Control System) provider name.","x-example":"github"},"private":{"type":"boolean","description":"Is VCS (Version Control System) repository private?","x-example":true},"runtime":{"type":"string","description":"Auto-detected runtime suggestion. Empty if getting response of getRuntime().","x-example":"node"},"pushedAt":{"type":"string","description":"Last commit date in ISO 8601 format.","x-example":"datetime"}},"required":["id","name","organization","provider","private","runtime","pushedAt"]},"detection":{"description":"Detection","type":"object","properties":{"runtime":{"type":"string","description":"Runtime","x-example":"node"}},"required":["runtime"]},"branch":{"description":"Branch","type":"object","properties":{"name":{"type":"string","description":"Branch Name.","x-example":"main"}},"required":["name"]},"runtime":{"description":"Runtime","type":"object","properties":{"$id":{"type":"string","description":"Runtime ID.","x-example":"python-3.8"},"name":{"type":"string","description":"Runtime Name.","x-example":"Python"},"version":{"type":"string","description":"Runtime version.","x-example":"3.8"},"base":{"type":"string","description":"Base Docker image used to build the runtime.","x-example":"python:3.8-alpine"},"image":{"type":"string","description":"Image name of Docker Hub.","x-example":"appwrite\\\/runtime-for-python:3.8"},"logo":{"type":"string","description":"Name of the logo image.","x-example":"python.png"},"supports":{"type":"array","description":"List of supported architectures.","items":{"type":"string"},"x-example":"amd64"}},"required":["$id","name","version","base","image","logo","supports"]},"deployment":{"description":"Deployment","type":"object","properties":{"$id":{"type":"string","description":"Deployment ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Deployment creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Deployment update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"type":{"type":"string","description":"Type of deployment.","x-example":"vcs"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"index.js"},"size":{"type":"integer","description":"The code size in bytes.","x-example":128,"format":"int32"},"buildId":{"type":"string","description":"The current build ID.","x-example":"5e5ea5c16897e"},"activate":{"type":"boolean","description":"Whether the deployment should be automatically activated.","x-example":true},"status":{"type":"string","description":"The deployment status. Possible values are \"processing\", \"building\", \"waiting\", \"ready\", and \"failed\".","x-example":"ready"},"buildLogs":{"type":"string","description":"The build logs.","x-example":"Compiling source files..."},"buildTime":{"type":"integer","description":"The current build time in seconds.","x-example":128,"format":"int32"},"providerRepositoryName":{"type":"string","description":"The name of the vcs provider repository","x-example":"database"},"providerRepositoryOwner":{"type":"string","description":"The name of the vcs provider repository owner","x-example":"utopia"},"providerRepositoryUrl":{"type":"string","description":"The url of the vcs provider repository","x-example":"https:\/\/github.com\/vermakhushboo\/g4-node-function"},"providerBranch":{"type":"string","description":"The branch of the vcs repository","x-example":"0.7.x"},"providerCommitHash":{"type":"string","description":"The commit hash of the vcs commit","x-example":"7c3f25d"},"providerCommitAuthorUrl":{"type":"string","description":"The url of vcs commit author","x-example":"https:\/\/github.com\/vermakhushboo"},"providerCommitAuthor":{"type":"string","description":"The name of vcs commit author","x-example":"Khushboo Verma"},"providerCommitMessage":{"type":"string","description":"The commit message","x-example":"Update index.js"},"providerCommitUrl":{"type":"string","description":"The url of the vcs commit","x-example":"https:\/\/github.com\/vermakhushboo\/g4-node-function\/commit\/60c0416257a9cbcdd96b2d370c38d8f8d150ccfb"},"providerBranchUrl":{"type":"string","description":"The branch of the vcs repository","x-example":"https:\/\/github.com\/vermakhushboo\/appwrite\/tree\/0.7.x"}},"required":["$id","$createdAt","$updatedAt","type","resourceId","resourceType","entrypoint","size","buildId","activate","status","buildLogs","buildTime","providerRepositoryName","providerRepositoryOwner","providerRepositoryUrl","providerBranch","providerCommitHash","providerCommitAuthorUrl","providerCommitAuthor","providerCommitMessage","providerCommitUrl","providerBranchUrl"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"requestMethod":{"type":"string","description":"HTTP request method type.","x-example":"GET"},"requestPath":{"type":"string","description":"HTTP request path and query.","x-example":"\/articles?id=5"},"requestHeaders":{"type":"array","description":"HTTP response headers as a key-value object. This will return only whitelisted headers. All headers are returned if execution is created as synchronous.","items":{"$ref":"#\/components\/schemas\/headers"},"x-example":[{"Content-Type":"application\/json"}]},"responseStatusCode":{"type":"integer","description":"HTTP response status code.","x-example":200,"format":"int32"},"responseBody":{"type":"string","description":"HTTP response body. This will return empty unless execution is created as synchronous.","x-example":"Developers are awesome."},"responseHeaders":{"type":"array","description":"HTTP response headers as a key-value object. This will return only whitelisted headers. All headers are returned if execution is created as synchronous.","items":{"$ref":"#\/components\/schemas\/headers"},"x-example":[{"Content-Type":"application\/json"}]},"logs":{"type":"string","description":"Function logs. Includes the last 4,000 characters. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"errors":{"type":"string","description":"Function errors. Includes the last 4,000 characters. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"Function execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","requestMethod","requestPath","requestHeaders","responseStatusCode","responseBody","responseHeaders","logs","errors","duration"]},"project":{"description":"Project","type":"object","properties":{"$id":{"type":"string","description":"Project ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Project creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Project update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Project name.","x-example":"New Project"},"description":{"type":"string","description":"Project description.","x-example":"This is a new project."},"teamId":{"type":"string","description":"Project team ID.","x-example":"1592981250"},"logo":{"type":"string","description":"Project logo file ID.","x-example":"5f5c451b403cb"},"url":{"type":"string","description":"Project website URL.","x-example":"5f5c451b403cb"},"legalName":{"type":"string","description":"Company legal name.","x-example":"Company LTD."},"legalCountry":{"type":"string","description":"Country code in [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) two-character format.","x-example":"US"},"legalState":{"type":"string","description":"State name.","x-example":"New York"},"legalCity":{"type":"string","description":"City name.","x-example":"New York City."},"legalAddress":{"type":"string","description":"Company Address.","x-example":"620 Eighth Avenue, New York, NY 10018"},"legalTaxId":{"type":"string","description":"Company Tax ID.","x-example":"131102020"},"authDuration":{"type":"integer","description":"Session duration in seconds.","x-example":60,"format":"int32"},"authLimit":{"type":"integer","description":"Max users allowed. 0 is unlimited.","x-example":100,"format":"int32"},"authSessionsLimit":{"type":"integer","description":"Max sessions allowed per user. 100 maximum.","x-example":10,"format":"int32"},"authPasswordHistory":{"type":"integer","description":"Max allowed passwords in the history list per user. Max passwords limit allowed in history is 20. Use 0 for disabling password history.","x-example":5,"format":"int32"},"authPasswordDictionary":{"type":"boolean","description":"Whether or not to check user's password against most commonly used passwords.","x-example":true},"authPersonalDataCheck":{"type":"boolean","description":"Whether or not to check the user password for similarity with their personal data.","x-example":true},"oAuthProviders":{"type":"array","description":"List of Auth Providers.","items":{"$ref":"#\/components\/schemas\/authProvider"},"x-example":[{}]},"platforms":{"type":"array","description":"List of Platforms.","items":{"$ref":"#\/components\/schemas\/platform"},"x-example":{}},"webhooks":{"type":"array","description":"List of Webhooks.","items":{"$ref":"#\/components\/schemas\/webhook"},"x-example":{}},"keys":{"type":"array","description":"List of API Keys.","items":{"$ref":"#\/components\/schemas\/key"},"x-example":{}},"smtpEnabled":{"type":"boolean","description":"Status for custom SMTP","x-example":false},"smtpSenderName":{"type":"string","description":"SMTP sender name","x-example":"John Appwrite"},"smtpSenderEmail":{"type":"string","description":"SMTP sender email","x-example":"john@appwrite.io"},"smtpReplyTo":{"type":"string","description":"SMTP reply to email","x-example":"support@appwrite.io"},"smtpHost":{"type":"string","description":"SMTP server host name","x-example":"mail.appwrite.io"},"smtpPort":{"type":"integer","description":"SMTP server port","x-example":25,"format":"int32"},"smtpUsername":{"type":"string","description":"SMTP server username","x-example":"emailuser"},"smtpPassword":{"type":"string","description":"SMTP server password","x-example":"securepassword"},"smtpSecure":{"type":"string","description":"SMTP server secure protocol","x-example":"tls"},"authEmailPassword":{"type":"boolean","description":"Email\/Password auth method status","x-example":true},"authUsersAuthMagicURL":{"type":"boolean","description":"Magic URL auth method status","x-example":true},"authEmailOtp":{"type":"boolean","description":"Email (OTP) auth method status","x-example":true},"authAnonymous":{"type":"boolean","description":"Anonymous auth method status","x-example":true},"authInvites":{"type":"boolean","description":"Invites auth method status","x-example":true},"authJWT":{"type":"boolean","description":"JWT auth method status","x-example":true},"authPhone":{"type":"boolean","description":"Phone auth method status","x-example":true},"serviceStatusForAccount":{"type":"boolean","description":"Account service status","x-example":true},"serviceStatusForAvatars":{"type":"boolean","description":"Avatars service status","x-example":true},"serviceStatusForDatabases":{"type":"boolean","description":"Databases service status","x-example":true},"serviceStatusForLocale":{"type":"boolean","description":"Locale service status","x-example":true},"serviceStatusForHealth":{"type":"boolean","description":"Health service status","x-example":true},"serviceStatusForStorage":{"type":"boolean","description":"Storage service status","x-example":true},"serviceStatusForTeams":{"type":"boolean","description":"Teams service status","x-example":true},"serviceStatusForUsers":{"type":"boolean","description":"Users service status","x-example":true},"serviceStatusForFunctions":{"type":"boolean","description":"Functions service status","x-example":true},"serviceStatusForGraphql":{"type":"boolean","description":"GraphQL service status","x-example":true},"serviceStatusForMessaging":{"type":"boolean","description":"Messaging service status","x-example":true}},"required":["$id","$createdAt","$updatedAt","name","description","teamId","logo","url","legalName","legalCountry","legalState","legalCity","legalAddress","legalTaxId","authDuration","authLimit","authSessionsLimit","authPasswordHistory","authPasswordDictionary","authPersonalDataCheck","oAuthProviders","platforms","webhooks","keys","smtpEnabled","smtpSenderName","smtpSenderEmail","smtpReplyTo","smtpHost","smtpPort","smtpUsername","smtpPassword","smtpSecure","authEmailPassword","authUsersAuthMagicURL","authEmailOtp","authAnonymous","authInvites","authJWT","authPhone","serviceStatusForAccount","serviceStatusForAvatars","serviceStatusForDatabases","serviceStatusForLocale","serviceStatusForHealth","serviceStatusForStorage","serviceStatusForTeams","serviceStatusForUsers","serviceStatusForFunctions","serviceStatusForGraphql","serviceStatusForMessaging"]},"webhook":{"description":"Webhook","type":"object","properties":{"$id":{"type":"string","description":"Webhook ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Webhook creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Webhook update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Webhook name.","x-example":"My Webhook"},"url":{"type":"string","description":"Webhook URL endpoint.","x-example":"https:\/\/example.com\/webhook"},"events":{"type":"array","description":"Webhook trigger events.","items":{"type":"string"},"x-example":"database.collections.update"},"security":{"type":"boolean","description":"Indicated if SSL \/ TLS Certificate verification is enabled.","x-example":true},"httpUser":{"type":"string","description":"HTTP basic authentication username.","x-example":"username"},"httpPass":{"type":"string","description":"HTTP basic authentication password.","x-example":"password"},"signatureKey":{"type":"string","description":"Signature key which can be used to validated incoming","x-example":"ad3d581ca230e2b7059c545e5a"},"enabled":{"type":"boolean","description":"Indicates if this webhook is enabled.","x-example":true},"logs":{"type":"string","description":"Webhook error logs from the most recent failure.","x-example":"Failed to connect to remote server."},"attempts":{"type":"integer","description":"Number of consecutive failed webhook attempts.","x-example":10,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","name","url","events","security","httpUser","httpPass","signatureKey","enabled","logs","attempts"]},"key":{"description":"Key","type":"object","properties":{"$id":{"type":"string","description":"Key ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Key creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Key update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Key name.","x-example":"My API Key"},"expire":{"type":"string","description":"Key expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"scopes":{"type":"array","description":"Allowed permission scopes.","items":{"type":"string"},"x-example":"users.read"},"secret":{"type":"string","description":"Secret key.","x-example":"919c2d18fb5d4...a2ae413da83346ad2"},"accessedAt":{"type":"string","description":"Most recent access date in ISO 8601 format. This attribute is only updated again after 24 hours.","x-example":"2020-10-15T06:38:00.000+00:00"},"sdks":{"type":"array","description":"List of SDK user agents that used this key.","items":{"type":"string"},"x-example":"appwrite:flutter"}},"required":["$id","$createdAt","$updatedAt","name","expire","scopes","secret","accessedAt","sdks"]},"authProvider":{"description":"AuthProvider","type":"object","properties":{"key":{"type":"string","description":"Auth Provider.","x-example":"github"},"name":{"type":"string","description":"Auth Provider name.","x-example":"GitHub"},"appId":{"type":"string","description":"OAuth 2.0 application ID.","x-example":"259125845563242502"},"secret":{"type":"string","description":"OAuth 2.0 application secret. Might be JSON string if provider requires extra configuration.","x-example":"Bpw_g9c2TGXxfgLshDbSaL8tsCcqgczQ"},"enabled":{"type":"boolean","description":"Auth Provider is active and can be used to create session.","x-example":""}},"required":["key","name","appId","secret","enabled"]},"platform":{"description":"Platform","type":"object","properties":{"$id":{"type":"string","description":"Platform ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Platform creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Platform update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Platform name.","x-example":"My Web App"},"type":{"type":"string","description":"Platform type. Possible values are: web, flutter-web, flutter-ios, flutter-android, ios, android, and unity.","x-example":"web"},"key":{"type":"string","description":"Platform Key. iOS bundle ID or Android package name. Empty string for other platforms.","x-example":"com.company.appname"},"store":{"type":"string","description":"App store or Google Play store ID.","x-example":""},"hostname":{"type":"string","description":"Web app hostname. Empty string for other platforms.","x-example":true},"httpUser":{"type":"string","description":"HTTP basic authentication username.","x-example":"username"},"httpPass":{"type":"string","description":"HTTP basic authentication password.","x-example":"password"}},"required":["$id","$createdAt","$updatedAt","name","type","key","store","hostname","httpUser","httpPass"]},"variable":{"description":"Variable","type":"object","properties":{"$id":{"type":"string","description":"Variable ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"key":{"type":"string","description":"Variable key.","x-example":"API_KEY"},"value":{"type":"string","description":"Variable value.","x-example":"myPa$$word1"},"resourceType":{"type":"string","description":"Service to which the variable belongs. Possible values are \"project\", \"function\"","x-example":"function"},"resourceId":{"type":"string","description":"ID of resource to which the variable belongs. If resourceType is \"project\", it is empty. If resourceType is \"function\", it is ID of the function.","x-example":"myAwesomeFunction"}},"required":["$id","$createdAt","$updatedAt","key","value","resourceType","resourceId"]},"country":{"description":"Country","type":"object","properties":{"name":{"type":"string","description":"Country name.","x-example":"United States"},"code":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"}},"required":["name","code"]},"continent":{"description":"Continent","type":"object","properties":{"name":{"type":"string","description":"Continent name.","x-example":"Europe"},"code":{"type":"string","description":"Continent two letter code.","x-example":"EU"}},"required":["name","code"]},"language":{"description":"Language","type":"object","properties":{"name":{"type":"string","description":"Language name.","x-example":"Italian"},"code":{"type":"string","description":"Language two-character ISO 639-1 codes.","x-example":"it"},"nativeName":{"type":"string","description":"Language native name.","x-example":"Italiano"}},"required":["name","code","nativeName"]},"currency":{"description":"Currency","type":"object","properties":{"symbol":{"type":"string","description":"Currency symbol.","x-example":"$"},"name":{"type":"string","description":"Currency name.","x-example":"US dollar"},"symbolNative":{"type":"string","description":"Currency native symbol.","x-example":"$"},"decimalDigits":{"type":"integer","description":"Number of decimal digits.","x-example":2,"format":"int32"},"rounding":{"type":"number","description":"Currency digit rounding.","x-example":0,"format":"double"},"code":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format.","x-example":"USD"},"namePlural":{"type":"string","description":"Currency plural name","x-example":"US dollars"}},"required":["symbol","name","symbolNative","decimalDigits","rounding","code","namePlural"]},"phone":{"description":"Phone","type":"object","properties":{"code":{"type":"string","description":"Phone code.","x-example":"+1"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["code","countryCode","countryName"]},"healthAntivirus":{"description":"Health Antivirus","type":"object","properties":{"version":{"type":"string","description":"Antivirus version.","x-example":"1.0.0"},"status":{"type":"string","description":"Antivirus status. Possible values can are: `disabled`, `offline`, `online`","x-example":"online"}},"required":["version","status"]},"healthQueue":{"description":"Health Queue","type":"object","properties":{"size":{"type":"integer","description":"Amount of actions in the queue.","x-example":8,"format":"int32"}},"required":["size"]},"healthStatus":{"description":"Health Status","type":"object","properties":{"name":{"type":"string","description":"Name of the service.","x-example":"database"},"ping":{"type":"integer","description":"Duration in milliseconds how long the health check took.","x-example":128,"format":"int32"},"status":{"type":"string","description":"Service status. Possible values can are: `pass`, `fail`","x-example":"pass"}},"required":["name","ping","status"]},"healthTime":{"description":"Health Time","type":"object","properties":{"remoteTime":{"type":"integer","description":"Current unix timestamp on trustful remote server.","x-example":1639490751,"format":"int32"},"localTime":{"type":"integer","description":"Current unix timestamp of local server where Appwrite runs.","x-example":1639490844,"format":"int32"},"diff":{"type":"integer","description":"Difference of unix remote and local timestamps in milliseconds.","x-example":93,"format":"int32"}},"required":["remoteTime","localTime","diff"]},"metric":{"description":"Metric","type":"object","properties":{"value":{"type":"integer","description":"The value of this metric at the timestamp.","x-example":1,"format":"int32"},"date":{"type":"string","description":"The date at which this metric was aggregated in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["value","date"]},"metricBreakdown":{"description":"Metric Breakdown","type":"object","properties":{"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Resource name.","x-example":"Documents"},"value":{"type":"integer","description":"The value of this metric at the timestamp.","x-example":1,"format":"int32"}},"required":["resourceId","name","value"]},"usageDatabases":{"description":"UsageDatabases","type":"object","properties":{"range":{"type":"string","description":"Time range of the usage stats.","x-example":"30d"},"databasesTotal":{"type":"integer","description":"Total aggregated number of databases.","x-example":0,"format":"int32"},"collectionsTotal":{"type":"integer","description":"Total aggregated number of collections.","x-example":0,"format":"int32"},"documentsTotal":{"type":"integer","description":"Total aggregated number of documents.","x-example":0,"format":"int32"},"databases":{"type":"array","description":"Aggregated number of databases per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collections":{"type":"array","description":"Aggregated number of collections per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documents":{"type":"array","description":"Aggregated number of documents per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","databasesTotal","collectionsTotal","documentsTotal","databases","collections","documents"]},"usageDatabase":{"description":"UsageDatabase","type":"object","properties":{"range":{"type":"string","description":"Time range of the usage stats.","x-example":"30d"},"collectionsTotal":{"type":"integer","description":"Total aggregated number of collections.","x-example":0,"format":"int32"},"documentsTotal":{"type":"integer","description":"Total aggregated number of documents.","x-example":0,"format":"int32"},"collections":{"type":"array","description":"Aggregated number of collections per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documents":{"type":"array","description":"Aggregated number of documents per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","collectionsTotal","documentsTotal","collections","documents"]},"usageCollection":{"description":"UsageCollection","type":"object","properties":{"range":{"type":"string","description":"Time range of the usage stats.","x-example":"30d"},"documentsTotal":{"type":"integer","description":"Total aggregated number of of documents.","x-example":0,"format":"int32"},"documents":{"type":"array","description":"Aggregated number of documents per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","documentsTotal","documents"]},"usageUsers":{"description":"UsageUsers","type":"object","properties":{"range":{"type":"string","description":"Time range of the usage stats.","x-example":"30d"},"usersTotal":{"type":"integer","description":"Total aggregated number of statistics of users.","x-example":0,"format":"int32"},"sessionsTotal":{"type":"integer","description":"Total aggregated number of active sessions.","x-example":0,"format":"int32"},"users":{"type":"array","description":"Aggregated number of users per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"sessions":{"type":"array","description":"Aggregated number of active sessions per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","usersTotal","sessionsTotal","users","sessions"]},"usageStorage":{"description":"StorageUsage","type":"object","properties":{"range":{"type":"string","description":"Time range of the usage stats.","x-example":"30d"},"bucketsTotal":{"type":"integer","description":"Total aggregated number of buckets","x-example":0,"format":"int32"},"filesTotal":{"type":"integer","description":"Total aggregated number of files.","x-example":0,"format":"int32"},"filesStorageTotal":{"type":"integer","description":"Total aggregated number of files storage (in bytes).","x-example":0,"format":"int32"},"buckets":{"type":"array","description":"Aggregated number of buckets per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"files":{"type":"array","description":"Aggregated number of files per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"storage":{"type":"array","description":"Aggregated number of files storage (in bytes) per period .","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","bucketsTotal","filesTotal","filesStorageTotal","buckets","files","storage"]},"usageBuckets":{"description":"UsageBuckets","type":"object","properties":{"range":{"type":"string","description":"Time range of the usage stats.","x-example":"30d"},"filesTotal":{"type":"integer","description":"Total aggregated number of bucket files.","x-example":0,"format":"int32"},"filesStorageTotal":{"type":"integer","description":"Total aggregated number of bucket files storage (in bytes).","x-example":0,"format":"int32"},"files":{"type":"array","description":"Aggregated number of bucket files per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"storage":{"type":"array","description":"Aggregated number of bucket storage files (in bytes) per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","filesTotal","filesStorageTotal","files","storage"]},"usageFunctions":{"description":"UsageFunctions","type":"object","properties":{"range":{"type":"string","description":"Time range of the usage stats.","x-example":"30d"},"functionsTotal":{"type":"integer","description":"Total aggregated number of functions.","x-example":0,"format":"int32"},"deploymentsTotal":{"type":"integer","description":"Total aggregated number of functions deployments.","x-example":0,"format":"int32"},"deploymentsStorageTotal":{"type":"integer","description":"Total aggregated sum of functions deployment storage.","x-example":0,"format":"int32"},"buildsTotal":{"type":"integer","description":"Total aggregated number of functions build.","x-example":0,"format":"int32"},"buildsStorageTotal":{"type":"integer","description":"total aggregated sum of functions build storage.","x-example":0,"format":"int32"},"buildsTimeTotal":{"type":"integer","description":"Total aggregated sum of functions build compute time.","x-example":0,"format":"int32"},"executionsTotal":{"type":"integer","description":"Total aggregated number of functions execution.","x-example":0,"format":"int32"},"executionsTimeTotal":{"type":"integer","description":"Total aggregated sum of functions execution compute time.","x-example":0,"format":"int32"},"functions":{"type":"array","description":"Aggregated number of functions per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":0},"deployments":{"type":"array","description":"Aggregated number of functions deployment per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"deploymentsStorage":{"type":"array","description":"Aggregated number of functions deployment storage per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"builds":{"type":"array","description":"Aggregated number of functions build per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"buildsStorage":{"type":"array","description":"Aggregated sum of functions build storage per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"buildsTime":{"type":"array","description":"Aggregated sum of functions build compute time per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"executions":{"type":"array","description":"Aggregated number of functions execution per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"executionsTime":{"type":"array","description":"Aggregated number of functions execution compute time per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","functionsTotal","deploymentsTotal","deploymentsStorageTotal","buildsTotal","buildsStorageTotal","buildsTimeTotal","executionsTotal","executionsTimeTotal","functions","deployments","deploymentsStorage","builds","buildsStorage","buildsTime","executions","executionsTime"]},"usageFunction":{"description":"UsageFunction","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"deploymentsTotal":{"type":"integer","description":"Total aggregated number of function deployments.","x-example":0,"format":"int32"},"deploymentsStorageTotal":{"type":"integer","description":"Total aggregated sum of function deployments storage.","x-example":0,"format":"int32"},"buildsTotal":{"type":"integer","description":"Total aggregated number of function builds.","x-example":0,"format":"int32"},"buildsStorageTotal":{"type":"integer","description":"total aggregated sum of function builds storage.","x-example":0,"format":"int32"},"buildsTimeTotal":{"type":"integer","description":"Total aggregated sum of function builds compute time.","x-example":0,"format":"int32"},"executionsTotal":{"type":"integer","description":"Total aggregated number of function executions.","x-example":0,"format":"int32"},"executionsTimeTotal":{"type":"integer","description":"Total aggregated sum of function executions compute time.","x-example":0,"format":"int32"},"deployments":{"type":"array","description":"Aggregated number of function deployments per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"deploymentsStorage":{"type":"array","description":"Aggregated number of function deployments storage per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"builds":{"type":"array","description":"Aggregated number of function builds per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"buildsStorage":{"type":"array","description":"Aggregated sum of function builds storage per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"buildsTime":{"type":"array","description":"Aggregated sum of function builds compute time per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"executions":{"type":"array","description":"Aggregated number of function executions per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"executionsTime":{"type":"array","description":"Aggregated number of function executions compute time per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","deploymentsTotal","deploymentsStorageTotal","buildsTotal","buildsStorageTotal","buildsTimeTotal","executionsTotal","executionsTimeTotal","deployments","deploymentsStorage","builds","buildsStorage","buildsTime","executions","executionsTime"]},"usageProject":{"description":"UsageProject","type":"object","properties":{"executionsTotal":{"type":"integer","description":"Total aggregated number of function executions.","x-example":0,"format":"int32"},"documentsTotal":{"type":"integer","description":"Total aggregated number of documents.","x-example":0,"format":"int32"},"databasesTotal":{"type":"integer","description":"Total aggregated number of databases.","x-example":0,"format":"int32"},"usersTotal":{"type":"integer","description":"Total aggregated number of users.","x-example":0,"format":"int32"},"filesStorageTotal":{"type":"integer","description":"Total aggregated sum of files storage size (in bytes).","x-example":0,"format":"int32"},"bucketsTotal":{"type":"integer","description":"Total aggregated number of buckets.","x-example":0,"format":"int32"},"requests":{"type":"array","description":"Aggregated number of requests per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"network":{"type":"array","description":"Aggregated number of consumed bandwidth per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"users":{"type":"array","description":"Aggregated number of users per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"executions":{"type":"array","description":"Aggregated number of executions per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"executionsBreakdown":{"type":"array","description":"Aggregated breakdown in totals of executions by functions.","items":{"$ref":"#\/components\/schemas\/metricBreakdown"},"x-example":[]},"bucketsBreakdown":{"type":"array","description":"Aggregated breakdown in totals of usage by buckets.","items":{"$ref":"#\/components\/schemas\/metricBreakdown"},"x-example":[]}},"required":["executionsTotal","documentsTotal","databasesTotal","usersTotal","filesStorageTotal","bucketsTotal","requests","network","users","executions","executionsBreakdown","bucketsBreakdown"]},"headers":{"description":"Headers","type":"object","properties":{"name":{"type":"string","description":"Header name.","x-example":"Content-Type"},"value":{"type":"string","description":"Header value.","x-example":"application\/json"}},"required":["name","value"]},"proxyRule":{"description":"Rule","type":"object","properties":{"$id":{"type":"string","description":"Rule ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Rule creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Rule update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"domain":{"type":"string","description":"Domain name.","x-example":"appwrite.company.com"},"resourceType":{"type":"string","description":"Action definition for the rule. Possible values are \"api\", \"function\", or \"redirect\"","x-example":"function"},"resourceId":{"type":"string","description":"ID of resource for the action type. If resourceType is \"api\" or \"url\", it is empty. If resourceType is \"function\", it is ID of the function.","x-example":"myAwesomeFunction"},"status":{"type":"string","description":"Domain verification status. Possible values are \"created\", \"verifying\", \"verified\" and \"unverified\"","x-example":"verified"},"logs":{"type":"string","description":"Certificate generation logs. This will return an empty string if generation did not run, or succeeded.","x-example":"HTTP challegne failed."},"renewAt":{"type":"string","description":"Certificate auto-renewal date in ISO 8601 format.","x-example":"datetime"}},"required":["$id","$createdAt","$updatedAt","domain","resourceType","resourceId","status","logs","renewAt"]},"smsTemplate":{"description":"SmsTemplate","type":"object","properties":{"type":{"type":"string","description":"Template type","x-example":"verification"},"locale":{"type":"string","description":"Template locale","x-example":"en_us"},"message":{"type":"string","description":"Template message","x-example":"Click on the link to verify your account."}},"required":["type","locale","message"]},"emailTemplate":{"description":"EmailTemplate","type":"object","properties":{"type":{"type":"string","description":"Template type","x-example":"verification"},"locale":{"type":"string","description":"Template locale","x-example":"en_us"},"message":{"type":"string","description":"Template message","x-example":"Click on the link to verify your account."},"senderName":{"type":"string","description":"Name of the sender","x-example":"My User"},"senderEmail":{"type":"string","description":"Email of the sender","x-example":"mail@appwrite.io"},"replyTo":{"type":"string","description":"Reply to email address","x-example":"emails@appwrite.io"},"subject":{"type":"string","description":"Email subject","x-example":"Please verify your email address"}},"required":["type","locale","message","senderName","senderEmail","replyTo","subject"]},"consoleVariables":{"description":"Console Variables","type":"object","properties":{"_APP_DOMAIN_TARGET":{"type":"string","description":"CNAME target for your Appwrite custom domains.","x-example":"appwrite.io"},"_APP_STORAGE_LIMIT":{"type":"integer","description":"Maximum file size allowed for file upload in bytes.","x-example":"30000000","format":"int32"},"_APP_FUNCTIONS_SIZE_LIMIT":{"type":"integer","description":"Maximum file size allowed for deployment in bytes.","x-example":"30000000","format":"int32"},"_APP_USAGE_STATS":{"type":"string","description":"Defines if usage stats are enabled. This value is set to 'enabled' by default, to disable the usage stats set the value to 'disabled'.","x-example":"enabled"},"_APP_VCS_ENABLED":{"type":"boolean","description":"Defines if VCS (Version Control System) is enabled.","x-example":true},"_APP_DOMAIN_ENABLED":{"type":"boolean","description":"Defines if main domain is configured. If so, custom domains can be created.","x-example":true},"_APP_ASSISTANT_ENABLED":{"type":"boolean","description":"Defines if AI assistant is enabled.","x-example":true}},"required":["_APP_DOMAIN_TARGET","_APP_STORAGE_LIMIT","_APP_FUNCTIONS_SIZE_LIMIT","_APP_USAGE_STATS","_APP_VCS_ENABLED","_APP_DOMAIN_ENABLED","_APP_ASSISTANT_ENABLED"]},"mfaChallenge":{"description":"MFA Challenge","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","userId","expire"]},"mfaProvider":{"description":"MFAProvider","type":"object","properties":{"backups":{"type":"array","description":"Backup codes.","items":{"type":"string"},"x-example":true},"secret":{"type":"string","description":"Secret token used for TOTP factor.","x-example":true},"uri":{"type":"string","description":"URI for authenticator apps.","x-example":true}},"required":["backups","secret","uri"]},"mfaProviders":{"description":"MFAProviders","type":"object","properties":{"totp":{"type":"boolean","description":"TOTP","x-example":true},"phone":{"type":"boolean","description":"Phone","x-example":true},"email":{"type":"boolean","description":"Email","x-example":true}},"required":["totp","phone","email"]},"provider":{"description":"Provider","type":"object","properties":{"$id":{"type":"string","description":"Provider ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Provider creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Provider update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"The name for the provider instance.","x-example":"Mailgun"},"provider":{"type":"string","description":"The name of the provider service.","x-example":"mailgun"},"enabled":{"type":"boolean","description":"Is provider enabled?","x-example":true},"type":{"type":"string","description":"Type of provider.","x-example":"sms"},"credentials":{"type":"object","description":"Provider credentials.","x-example":{"key":"123456789"}},"options":{"type":"object","description":"Provider options.","x-example":{"from":"sender-email@mydomain"},"nullable":true}},"required":["$id","$createdAt","$updatedAt","name","provider","enabled","type","credentials"]},"message":{"description":"Message","type":"object","properties":{"$id":{"type":"string","description":"Message ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Message creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Message update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerType":{"type":"string","description":"Message provider type.","x-example":"email"},"topics":{"type":"array","description":"Topic IDs set as recipients.","items":{"type":"string"},"x-example":["5e5ea5c16897e"]},"users":{"type":"array","description":"User IDs set as recipients.","items":{"type":"string"},"x-example":["5e5ea5c16897e"]},"targets":{"type":"array","description":"Target IDs set as recipients.","items":{"type":"string"},"x-example":["5e5ea5c16897e"]},"scheduledAt":{"type":"string","description":"The scheduled time for message.","x-example":"2020-10-15T06:38:00.000+00:00","nullable":true},"deliveredAt":{"type":"string","description":"The time when the message was delivered.","x-example":"2020-10-15T06:38:00.000+00:00","nullable":true},"deliveryErrors":{"type":"array","description":"Delivery errors if any.","items":{"type":"string"},"x-example":["Failed to send message to target 5e5ea5c16897e: Credentials not valid."],"nullable":true},"deliveredTotal":{"type":"integer","description":"Number of recipients the message was delivered to.","x-example":1,"format":"int32"},"data":{"type":"object","description":"Data of the message.","x-example":{"subject":"Welcome to Appwrite","content":"Hi there, welcome to Appwrite family."}},"status":{"type":"string","description":"Status of delivery.","x-example":"Message status can be one of the following: processing, sent, cancelled, failed."}},"required":["$id","$createdAt","$updatedAt","providerType","topics","users","targets","deliveredTotal","data","status"]},"topic":{"description":"Topic","type":"object","properties":{"$id":{"type":"string","description":"Topic ID.","x-example":"259125845563242502"},"$createdAt":{"type":"string","description":"Topic creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Topic update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"The name of the topic.","x-example":"events"},"total":{"type":"integer","description":"Total count of subscribers subscribed to topic.","x-example":100,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","name","total"]},"subscriber":{"description":"Subscriber","type":"object","properties":{"$id":{"type":"string","description":"Subscriber ID.","x-example":"259125845563242502"},"$createdAt":{"type":"string","description":"Subscriber creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Subscriber update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"targetId":{"type":"string","description":"Target ID.","x-example":"259125845563242502"},"target":{"type":"object","description":"Target.","x-example":{"$id":"259125845563242502","$createdAt":"2020-10-15T06:38:00.000+00:00","$updatedAt":"2020-10-15T06:38:00.000+00:00","providerType":"email","providerId":"259125845563242502","name":"ageon-app-email","identifier":"random-mail@email.org","userId":"5e5ea5c16897e"},"items":{"$ref":"#\/components\/schemas\/target"}},"userId":{"type":"string","description":"Topic ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User Name.","x-example":"Aegon Targaryen"},"topicId":{"type":"string","description":"Topic ID.","x-example":"259125845563242502"},"providerType":{"type":"string","description":"The target provider type. Can be one of the following: `email`, `sms` or `push`.","x-example":"email"}},"required":["$id","$createdAt","$updatedAt","targetId","target","userId","userName","topicId","providerType"]},"target":{"description":"Target","type":"object","properties":{"$id":{"type":"string","description":"Target ID.","x-example":"259125845563242502"},"$createdAt":{"type":"string","description":"Target creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Target update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Target Name.","x-example":"Aegon apple token"},"userId":{"type":"string","description":"User ID.","x-example":"259125845563242502"},"providerId":{"type":"string","description":"Provider ID.","x-example":"259125845563242502","nullable":true},"providerType":{"type":"string","description":"The target provider type. Can be one of the following: `email`, `sms` or `push`.","x-example":"email"},"identifier":{"type":"string","description":"The target identifier.","x-example":"token"}},"required":["$id","$createdAt","$updatedAt","name","userId","providerType","identifier"]},"migration":{"description":"Migration","type":"object","properties":{"$id":{"type":"string","description":"Migration ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"string","description":"Migration status ( pending, processing, failed, completed ) ","x-example":"pending"},"stage":{"type":"string","description":"Migration stage ( init, processing, source-check, destination-check, migrating, finished )","x-example":"init"},"source":{"type":"string","description":"A string containing the type of source of the migration.","x-example":"Appwrite"},"resources":{"type":"array","description":"Resources to migration.","items":{"type":"string"},"x-example":["user"]},"statusCounters":{"type":"object","description":"A group of counters that represent the total progress of the migration.","x-example":"{\"Database\": {\"PENDING\": 0, \"SUCCESS\": 1, \"ERROR\": 0, \"SKIP\": 0, \"PROCESSING\": 0, \"WARNING\": 0}}"},"resourceData":{"type":"object","description":"An array of objects containing the report data of the resources that were migrated.","x-example":"[{\"resource\":\"Database\",\"id\":\"public\",\"status\":\"SUCCESS\",\"message\":\"\"}]"},"errors":{"type":"array","description":"All errors that occurred during the migration process.","items":{"type":"string"},"x-example":[]}},"required":["$id","$createdAt","$updatedAt","status","stage","source","resources","statusCounters","resourceData","errors"]},"migrationReport":{"description":"Migration Report","type":"object","properties":{"user":{"type":"integer","description":"Number of users to be migrated.","x-example":20,"format":"int32"},"team":{"type":"integer","description":"Number of teams to be migrated.","x-example":20,"format":"int32"},"database":{"type":"integer","description":"Number of databases to be migrated.","x-example":20,"format":"int32"},"document":{"type":"integer","description":"Number of documents to be migrated.","x-example":20,"format":"int32"},"file":{"type":"integer","description":"Number of files to be migrated.","x-example":20,"format":"int32"},"bucket":{"type":"integer","description":"Number of buckets to be migrated.","x-example":20,"format":"int32"},"function":{"type":"integer","description":"Number of functions to be migrated.","x-example":20,"format":"int32"},"size":{"type":"integer","description":"Size of files to be migrated in mb.","x-example":30000,"format":"int32"},"version":{"type":"string","description":"Version of the Appwrite instance to be migrated.","x-example":"1.4.0"}},"required":["user","team","database","document","file","bucket","function","size","version"]},"firebaseProject":{"description":"MigrationFirebaseProject","type":"object","properties":{"projectId":{"type":"string","description":"Project ID.","x-example":"my-project"},"displayName":{"type":"string","description":"Project display name.","x-example":"My Project"}},"required":["projectId","displayName"]}},"securitySchemes":{"Project":{"type":"apiKey","name":"X-Appwrite-Project","description":"Your project ID","in":"header","x-appwrite":{"demo":"5df5acd0d48c2"}},"Key":{"type":"apiKey","name":"X-Appwrite-Key","description":"Your secret API key","in":"header","x-appwrite":{"demo":"919c2d18fb5d4...a2ae413da83346ad2"}},"JWT":{"type":"apiKey","name":"X-Appwrite-JWT","description":"Your secret JSON Web Token","in":"header"},"Locale":{"type":"apiKey","name":"X-Appwrite-Locale","description":"","in":"header","x-appwrite":{"demo":"en"}},"Mode":{"type":"apiKey","name":"X-Appwrite-Mode","description":"","in":"header","x-appwrite":{"demo":""}}}},"externalDocs":{"description":"Full API docs, specs and tutorials","url":"https:\/\/appwrite.io\/docs"}} \ No newline at end of file +{"openapi":"3.0.0","info":{"version":"1.4.13","title":"Appwrite","description":"Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https:\/\/appwrite.io\/docs](https:\/\/appwrite.io\/docs)","termsOfService":"https:\/\/appwrite.io\/policy\/terms","contact":{"name":"Appwrite Team","url":"https:\/\/appwrite.io\/support","email":"team@appwrite.io"},"license":{"name":"BSD-3-Clause","url":"https:\/\/raw.githubusercontent.com\/appwrite\/appwrite\/master\/LICENSE"}},"servers":[{"url":"https:\/\/HOSTNAME\/v1"}],"paths":{"\/account":{"get":{"summary":"Get account","operationId":"accountGet","tags":["account"],"description":"Get the currently logged in user.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"get","weight":22,"cookies":false,"type":"","demo":"account\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"post":{"summary":"Create account","operationId":"accountCreate","tags":["account"],"description":"Use this endpoint to allow a new user to register a new account in your project. After the user registration completes successfully, you can use the [\/account\/verfication](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createVerification) route to start verifying the user email address. To allow the new user to login to their new account, you need to create a new [account session](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createEmailSession).","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"create","weight":7,"cookies":false,"type":"","demo":"account\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"New user password. Must be between 8 and 256 chars.","x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}},"delete":{"summary":"Delete account","operationId":"accountDelete","tags":["account"],"description":"Delete the currently logged in user.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":49,"cookies":false,"type":"","demo":"account\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/email":{"patch":{"summary":"Update email","operationId":"accountUpdateEmail","tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateEmail","weight":29,"cookies":false,"type":"","demo":"account\/update-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","x-example":"password"}},"required":["email","password"]}}}}}},"\/account\/identities":{"get":{"summary":"List Identities","operationId":"accountListIdentities","tags":["account"],"description":"Get the list of identities for the currently logged in user.","responses":{"200":{"description":"Identities List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/identityList"}}}}},"x-appwrite":{"method":"listIdentities","weight":13,"cookies":false,"type":"","demo":"account\/list-identities.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-identities.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/identities","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, provider, providerUid, providerEmail, providerAccessTokenExpiry","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/identities\/{identityId}":{"delete":{"summary":"Delete identity","operationId":"accountDeleteIdentity","tags":["account"],"description":"Delete an identity by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIdentity","weight":14,"cookies":false,"type":"","demo":"account\/delete-identity.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-identity.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"identityId","description":"Identity ID.","required":true,"schema":{"type":"string","x-example":"[IDENTITY_ID]"},"in":"path"}]}},"\/account\/jwt":{"post":{"summary":"Create JWT","operationId":"accountCreateJWT","tags":["account"],"description":"Use this endpoint to create a JSON Web Token. You can use the resulting JWT to authenticate on behalf of the current user when working with the Appwrite server-side API and SDKs. The JWT secret is valid for 15 minutes from its creation and will be invalid if the user will logout in that time frame.","responses":{"201":{"description":"JWT","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/jwt"}}}}},"x-appwrite":{"method":"createJWT","weight":21,"cookies":false,"type":"","demo":"account\/create-j-w-t.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-jwt.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"accounts.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"List logs","operationId":"accountListLogs","tags":["account"],"description":"Get the list of latest security activity logs for the currently logged in user. Each log returns user IP address, location and date and time of log.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listLogs","weight":25,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/mfa":{"patch":{"summary":"Update MFA","operationId":"accountUpdateMFA","tags":["account"],"description":"","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateMFA","weight":42,"cookies":false,"type":"","demo":"account\/update-m-f-a.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-mfa.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"mfa":{"type":"boolean","description":"Enable or disable MFA.","x-example":false}},"required":["mfa"]}}}}}},"\/account\/mfa\/challenge":{"post":{"summary":"Create MFA Challenge","operationId":"accountCreateChallenge","tags":["account"],"description":"","responses":{"201":{"description":"MFA Challenge","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/mfaChallenge"}}}}},"x-appwrite":{"method":"createChallenge","weight":47,"cookies":false,"type":"","demo":"account\/create-challenge.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-challenge.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},token:{param-token}","scope":"accounts.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"provider":{"type":"string","description":"provider.","x-example":"totp","enum":["totp","phone","email"],"x-enum-name":"AuthenticatorProvider","x-enum-keys":[]}},"required":["provider"]}}}}},"put":{"summary":"Create MFA Challenge (confirmation)","operationId":"accountUpdateChallenge","tags":["account"],"description":"","responses":{"204":{"description":"No content","content":{"":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateChallenge","weight":48,"cookies":false,"type":"","demo":"account\/update-challenge.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-challenge.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"challengeId":{"type":"string","description":"Valid verification token.","x-example":"[CHALLENGE_ID]"},"otp":{"type":"string","description":"Valid verification token.","x-example":"[OTP]"}},"required":["challengeId","otp"]}}}}}},"\/account\/mfa\/factors":{"get":{"summary":"List Factors","operationId":"accountListFactors","tags":["account"],"description":"Get the currently logged in user.","responses":{"200":{"description":"MFAProviders","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/mfaProviders"}}}}},"x-appwrite":{"method":"listFactors","weight":43,"cookies":false,"type":"","demo":"account\/list-factors.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/account\/mfa\/{factor}":{"post":{"summary":"Add Authenticator","operationId":"accountAddAuthenticator","tags":["account"],"description":"","responses":{"200":{"description":"MFAProvider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/mfaProvider"}}}}},"x-appwrite":{"method":"addAuthenticator","weight":44,"cookies":false,"type":"","demo":"account\/add-authenticator.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-mfa.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"factor","description":"Factor.","required":true,"schema":{"type":"string","x-example":"totp","enum":["totp"],"x-enum-name":"AuthenticatorFactor","x-enum-keys":[]},"in":"path"}]},"put":{"summary":"Verify Authenticator","operationId":"accountVerifyAuthenticator","tags":["account"],"description":"","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"verifyAuthenticator","weight":45,"cookies":false,"type":"","demo":"account\/verify-authenticator.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-mfa.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"factor","description":"Factor.","required":true,"schema":{"type":"string","x-example":"totp","enum":["totp"],"x-enum-name":"AuthenticatorFactor","x-enum-keys":[]},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"otp":{"type":"string","description":"Valid verification token.","x-example":"[OTP]"}},"required":["otp"]}}}}}},"\/account\/mfa\/{provider}":{"delete":{"summary":"Delete Authenticator","operationId":"accountDeleteAuthenticator","tags":["account"],"description":"","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"deleteAuthenticator","weight":46,"cookies":false,"type":"","demo":"account\/delete-authenticator.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-mfa.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"provider","description":"Provider.","required":true,"schema":{"type":"string","x-example":"totp","enum":["totp"],"x-enum-name":"AuthenticatorProvider","x-enum-keys":[]},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"otp":{"type":"string","description":"Valid verification token.","x-example":"[OTP]"}},"required":["otp"]}}}}}},"\/account\/name":{"patch":{"summary":"Update name","operationId":"accountUpdateName","tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateName","weight":27,"cookies":false,"type":"","demo":"account\/update-name.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-name.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["name"]}}}}}},"\/account\/password":{"patch":{"summary":"Update password","operationId":"accountUpdatePassword","tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePassword","weight":28,"cookies":false,"type":"","demo":"account\/update-password.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-password.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"password":{"type":"string","description":"New user password. Must be at least 8 chars.","x-example":null},"oldPassword":{"type":"string","description":"Current user password. Must be at least 8 chars.","x-example":"password"}},"required":["password"]}}}}}},"\/account\/phone":{"patch":{"summary":"Update phone","operationId":"accountUpdatePhone","tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createPhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePhone","weight":30,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","x-example":"password"}},"required":["phone","password"]}}}}}},"\/account\/prefs":{"get":{"summary":"Get account preferences","operationId":"accountGetPrefs","tags":["account"],"description":"Get the preferences as a key-value object for the currently logged in user.","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"getPrefs","weight":23,"cookies":false,"type":"","demo":"account\/get-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/prefs","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"patch":{"summary":"Update preferences","operationId":"accountUpdatePrefs","tags":["account"],"description":"Update currently logged in user account preferences. The object you pass is stored as is, and replaces any previous value. The maximum allowed prefs size is 64kB and throws error if exceeded.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePrefs","weight":31,"cookies":false,"type":"","demo":"account\/update-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/prefs","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"prefs":{"type":"object","description":"Prefs key-value JSON object.","x-example":"{}"}},"required":["prefs"]}}}}}},"\/account\/recovery":{"post":{"summary":"Create password recovery","operationId":"accountCreateRecovery","tags":["account"],"description":"Sends the user an email with a temporary secret key for password reset. When the user clicks the confirmation link he is redirected back to your app password reset URL with the secret key and email address values attached to the URL query string. Use the query string params to submit a request to the [PUT \/account\/recovery](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateRecovery) endpoint to complete the process. The verification link sent to the user's email address is valid for 1 hour.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createRecovery","weight":36,"cookies":false,"type":"","demo":"account\/create-recovery.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-recovery.md","rate-limit":10,"rate-time":3600,"rate-key":["url:{url},email:{param-email}","ip:{ip}"],"scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"url":{"type":"string","description":"URL to redirect the user back to your app from the recovery email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"}},"required":["email","url"]}}}}},"put":{"summary":"Create password recovery (confirmation)","operationId":"accountUpdateRecovery","tags":["account"],"description":"Use this endpoint to complete the user account password reset. Both the **userId** and **secret** arguments will be passed as query parameters to the redirect URL you have provided when sending your request to the [POST \/account\/recovery](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createRecovery) endpoint.\n\nPlease note that in order to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) the only valid redirect URLs are the ones from domains you have set when adding your platforms in the console interface.","responses":{"200":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"updateRecovery","weight":37,"cookies":false,"type":"","demo":"account\/update-recovery.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-recovery.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid reset token.","x-example":"[SECRET]"},"password":{"type":"string","description":"New user password. Must be between 8 and 256 chars.","x-example":null}},"required":["userId","secret","password"]}}}}}},"\/account\/sessions":{"get":{"summary":"List sessions","operationId":"accountListSessions","tags":["account"],"description":"Get the list of active sessions across different devices for the currently logged in user.","responses":{"200":{"description":"Sessions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/sessionList"}}}}},"x-appwrite":{"method":"listSessions","weight":24,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/sessions","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete sessions","operationId":"accountDeleteSessions","tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":35,"cookies":false,"type":"","demo":"account\/delete-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-sessions.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/account\/sessions\/anonymous":{"post":{"summary":"Create anonymous session","operationId":"accountCreateAnonymousSession","tags":["account"],"description":"Use this endpoint to allow a new user to register an anonymous account in your project. This route will also create a new session for the user. To allow the new user to convert an anonymous account to a normal account, you need to update its [email and password](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateEmail) or create an [OAuth2 session](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#CreateOAuth2Session).","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"createAnonymousSession","weight":20,"cookies":false,"type":"","demo":"account\/create-anonymous-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-anonymous.md","rate-limit":50,"rate-time":3600,"rate-key":"ip:{ip}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/sessions\/email":{"post":{"summary":"Create email password session","operationId":"accountCreateEmailPasswordSession","tags":["account"],"description":"Allow the user to login into their account by providing a valid email and password combination. This route will create a new session for the user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"createEmailPasswordSession","weight":8,"cookies":false,"type":"","demo":"account\/create-email-password-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-email-password.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","x-example":"password"}},"required":["email","password"]}}}}}},"\/account\/sessions\/magic-url":{"put":{"summary":"Create session (deprecated)","operationId":"accountUpdateMagicURLSession","tags":["account"],"description":"Use this endpoint to create a session from token. Provide the **userId** and **secret** parameters from the successful response of authentication flows initiated by token creation. For example, magic URL and phone login.","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateMagicURLSession","weight":17,"cookies":false,"type":"","demo":"account\/update-magic-u-r-l-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session.md","rate-limit":10,"rate-time":3600,"rate-key":"ip:{ip},userId:{param-userId}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/account\/sessions\/oauth2\/{provider}":{"get":{"summary":"Create OAuth2 session","operationId":"accountCreateOAuth2Session","tags":["account"],"description":"Allow the user to login to their account using the OAuth2 provider of their choice. Each OAuth2 provider should be enabled from the Appwrite console first. Use the success and failure arguments to provide a redirect URL's back to your app when login is completed.\n\nIf there is already an active session, the new session will be attached to the logged-in account. If there are no active sessions, the server will attempt to look for a user with the same email address as the email received from the OAuth2 provider and attach the new session to the existing user. If no matching user is found - the server will create a new user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).\n","responses":{"301":{"description":"File"}},"x-appwrite":{"method":"createOAuth2Session","weight":9,"cookies":false,"type":"webAuth","demo":"account\/create-o-auth2session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-oauth2.md","rate-limit":50,"rate-time":3600,"rate-key":"ip:{ip}","scope":"sessions.write","platforms":["client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"provider","description":"OAuth2 Provider. Currently, supported providers are: amazon, apple, auth0, authentik, autodesk, bitbucket, bitly, box, dailymotion, discord, disqus, dropbox, etsy, facebook, github, gitlab, google, linkedin, microsoft, notion, oidc, okta, paypal, paypalSandbox, podio, salesforce, slack, spotify, stripe, tradeshift, tradeshiftBox, twitch, wordpress, yahoo, yammer, yandex, zoho, zoom.","required":true,"schema":{"type":"string","x-example":"amazon","enum":["amazon","apple","auth0","authentik","autodesk","bitbucket","bitly","box","dailymotion","discord","disqus","dropbox","etsy","facebook","github","gitlab","google","linkedin","microsoft","notion","oidc","okta","paypal","paypalSandbox","podio","salesforce","slack","spotify","stripe","tradeshift","tradeshiftBox","twitch","wordpress","yahoo","yammer","yandex","zoho","zoom","mock"],"x-enum-name":"OAuthProvider","x-enum-keys":[]},"in":"path"},{"name":"success","description":"URL to redirect back to your app after a successful login attempt. Only URLs from hostnames in your project's platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","required":false,"schema":{"type":"string","format":"url","x-example":"https:\/\/example.com","default":""},"in":"query"},{"name":"failure","description":"URL to redirect back to your app after a failed login attempt. Only URLs from hostnames in your project's platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","required":false,"schema":{"type":"string","format":"url","x-example":"https:\/\/example.com","default":""},"in":"query"},{"name":"token","description":"Include token credentials in the final redirect, useful for server-side integrations, or when cookies are not available.","required":false,"schema":{"type":"boolean","x-example":false,"default":false},"in":"query"},{"name":"scopes","description":"A list of custom OAuth2 scopes. Check each provider internal docs for a list of supported scopes. Maximum of 100 scopes are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/sessions\/token":{"post":{"summary":"Create session","operationId":"accountCreateSession","tags":["account"],"description":"Use this endpoint to create a session from token. Provide the **userId** and **secret** parameters from the successful response of authentication flows initiated by token creation. For example, magic URL and phone login.","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"createSession","weight":18,"cookies":false,"type":"","demo":"account\/create-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session.md","rate-limit":10,"rate-time":3600,"rate-key":"ip:{ip},userId:{param-userId}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Secret of a token generated by login methods. For example, the `createMagicURLToken` or `createPhoneToken` methods.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/account\/sessions\/{sessionId}":{"get":{"summary":"Get session","operationId":"accountGetSession","tags":["account"],"description":"Use this endpoint to get a logged in user's session using a Session ID. Inputting 'current' will return the current session being used.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"getSession","weight":26,"cookies":false,"type":"","demo":"account\/get-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-session.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/sessions","offline-key":"{sessionId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to get the current device session.","required":true,"schema":{"type":"string","x-example":"[SESSION_ID]"},"in":"path"}]},"patch":{"summary":"Update (or renew) a session","operationId":"accountUpdateSession","tags":["account"],"description":"Extend session's expiry to increase it's lifespan. Extending a session is useful when session length is short such as 5 minutes.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateSession","weight":34,"cookies":false,"type":"","demo":"account\/update-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-session.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to update the current device session.","required":true,"schema":{"type":"string","x-example":"[SESSION_ID]"},"in":"path"}]},"delete":{"summary":"Delete session","operationId":"accountDeleteSession","tags":["account"],"description":"Logout the user. Use 'current' as the session ID to logout on this device, use a session ID to logout on another device. If you're looking to logout the user on all devices, use [Delete Sessions](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#deleteSessions) instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSession","weight":33,"cookies":false,"type":"","demo":"account\/delete-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-session.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to delete the current device session.","required":true,"schema":{"type":"string","x-example":"[SESSION_ID]"},"in":"path"}]}},"\/account\/status":{"patch":{"summary":"Update status","operationId":"accountUpdateStatus","tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateStatus","weight":32,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/account\/targets\/push":{"post":{"summary":"Create a push target","operationId":"accountCreatePushTarget","tags":["account"],"description":"","responses":{"201":{"description":"Target","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/target"}}}}},"x-appwrite":{"method":"createPushTarget","weight":50,"cookies":false,"type":"","demo":"account\/create-push-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"targetId":{"type":"string","description":"Target ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[TARGET_ID]"},"identifier":{"type":"string","description":"The target identifier (token, email, phone etc.)","x-example":"[IDENTIFIER]"},"providerId":{"type":"string","description":"Provider ID. Message will be sent to this target from the specified provider ID. If no provider ID is set the first setup provider will be used.","x-example":"[PROVIDER_ID]"}},"required":["targetId","identifier"]}}}}}},"\/account\/targets\/{targetId}\/push":{"put":{"summary":"Update a push target","operationId":"accountUpdatePushTarget","tags":["account"],"description":"","responses":{"200":{"description":"Target","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/target"}}}}},"x-appwrite":{"method":"updatePushTarget","weight":51,"cookies":false,"type":"","demo":"account\/update-push-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"targetId","description":"Target ID.","required":true,"schema":{"type":"string","x-example":"[TARGET_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"identifier":{"type":"string","description":"The target identifier (token, email, phone etc.)","x-example":"[IDENTIFIER]"}},"required":["identifier"]}}}}},"delete":{"summary":"Delete a push target","operationId":"accountDeletePushTarget","tags":["account"],"description":"","responses":{"204":{"description":"No content","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/target"}}}}},"x-appwrite":{"method":"deletePushTarget","weight":52,"cookies":false,"type":"","demo":"account\/delete-push-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"targetId","description":"Target ID.","required":true,"schema":{"type":"string","x-example":"[TARGET_ID]"},"in":"path"}]}},"\/account\/tokens\/email":{"post":{"summary":"Create email token (OTP)","operationId":"accountCreateEmailToken","tags":["account"],"description":"Sends the user an email with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [POST \/v1\/account\/sessions\/token](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createSession) endpoint to complete the login process. The secret sent to the user's email is valid for 15 minutes.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createEmailToken","weight":16,"cookies":false,"type":"","demo":"account\/create-email-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-token-email.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"phrase":{"type":"boolean","description":"Toggle for security phrase. If enabled, email will be send with a randomly generated phrase and the phrase will also be included in the response. Confirming phrases match increases the security of your authentication flow.","x-example":false}},"required":["userId","email"]}}}}}},"\/account\/tokens\/magic-url":{"post":{"summary":"Create magic URL token","operationId":"accountCreateMagicURLToken","tags":["account"],"description":"Sends the user an email with a secret key for creating a session. If the provided user ID has not been registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [POST \/v1\/account\/sessions\/token](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createSession) endpoint to complete the login process. The link sent to the user's email address is valid for 1 hour. If you are on a mobile device you can leave the URL parameter empty, so that the login completion will be handled by your Appwrite instance by default.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).\n","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createMagicURLToken","weight":15,"cookies":false,"type":"","demo":"account\/create-magic-u-r-l-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-token-magic-url.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"url":{"type":"string","description":"URL to redirect the user back to your app from the magic URL login. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"},"phrase":{"type":"boolean","description":"Toggle for security phrase. If enabled, email will be send with a randomly generated phrase and the phrase will also be included in the response. Confirming phrases match increases the security of your authentication flow.","x-example":false}},"required":["userId","email"]}}}}}},"\/account\/tokens\/phone":{"post":{"summary":"Create phone token","operationId":"accountCreatePhoneToken","tags":["account"],"description":"Sends the user an SMS with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [POST \/v1\/account\/sessions\/token](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createSession) endpoint to complete the login process. The secret sent to the user's phone is valid for 15 minutes.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createPhoneToken","weight":19,"cookies":false,"type":"","demo":"account\/create-phone-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-token-phone.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},phone:{param-phone}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"}},"required":["userId","phone"]}}}}}},"\/account\/verification":{"post":{"summary":"Create email verification","operationId":"accountCreateVerification","tags":["account"],"description":"Use this endpoint to send a verification message to your user email address to confirm they are the valid owners of that address. Both the **userId** and **secret** arguments will be passed as query parameters to the URL you have provided to be attached to the verification email. The provided URL should redirect the user back to your app and allow you to complete the verification process by verifying both the **userId** and **secret** parameters. Learn more about how to [complete the verification process](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateVerification). The verification link sent to the user's email address is valid for 7 days.\n\nPlease note that in order to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md), the only valid redirect URLs are the ones from domains you have set when adding your platforms in the console interface.\n","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createVerification","weight":38,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"url":{"type":"string","description":"URL to redirect the user back to your app from the verification email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"}},"required":["url"]}}}}},"put":{"summary":"Create email verification (confirmation)","operationId":"accountUpdateVerification","tags":["account"],"description":"Use this endpoint to complete the user email verification process. Use both the **userId** and **secret** parameters that were attached to your app URL to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"updateVerification","weight":39,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/account\/verification\/phone":{"post":{"summary":"Create phone verification","operationId":"accountCreatePhoneVerification","tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updatePhone) endpoint. Learn more about how to [complete the verification process](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createPhoneVerification","weight":40,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{userId}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"put":{"summary":"Create phone verification (confirmation)","operationId":"accountUpdatePhoneVerification","tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"updatePhoneVerification","weight":41,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/avatars\/browsers\/{code}":{"get":{"summary":"Get browser icon","operationId":"avatarsGetBrowser","tags":["avatars"],"description":"You can use this endpoint to show different browser icons to your users. The code argument receives the browser code as it appears in your user [GET \/account\/sessions](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#getSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getBrowser","weight":54,"cookies":false,"type":"location","demo":"avatars\/get-browser.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-browser.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Browser Code.","required":true,"schema":{"type":"string","x-example":"aa","enum":["aa","an","ch","ci","cm","cr","ff","sf","mf","ps","oi","om","op","on"],"x-enum-name":"Browser","x-enum-keys":["Avant Browser","Android WebView Beta","Google Chrome","Google Chrome (iOS)","Google Chrome (Mobile)","Chromium","Mozilla Firefox","Safari","Mobile Safari","Microsoft Edge","Microsoft Edge (iOS)","Opera Mini","Opera","Opera (Next)"]},"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"}]}},"\/avatars\/credit-cards\/{code}":{"get":{"summary":"Get credit card icon","operationId":"avatarsGetCreditCard","tags":["avatars"],"description":"The credit card endpoint will return you the icon of the credit card provider you need. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getCreditCard","weight":53,"cookies":false,"type":"location","demo":"avatars\/get-credit-card.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-credit-card.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Credit Card Code. Possible values: amex, argencard, cabal, censosud, diners, discover, elo, hipercard, jcb, mastercard, naranja, targeta-shopping, union-china-pay, visa, mir, maestro.","required":true,"schema":{"type":"string","x-example":"amex","enum":["amex","argencard","cabal","censosud","diners","discover","elo","hipercard","jcb","mastercard","naranja","targeta-shopping","union-china-pay","visa","mir","maestro"],"x-enum-name":"CreditCard","x-enum-keys":["American Express","Argencard","Cabal","Consosud","Diners Club","Discover","Elo","Hipercard","JCB","Mastercard","Naranja","Tarjeta Shopping","Union China Pay","Visa","MIR","Maestro"]},"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"}]}},"\/avatars\/favicon":{"get":{"summary":"Get favicon","operationId":"avatarsGetFavicon","tags":["avatars"],"description":"Use this endpoint to fetch the favorite icon (AKA favicon) of any remote website URL.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFavicon","weight":57,"cookies":false,"type":"location","demo":"avatars\/get-favicon.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-favicon.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"url","description":"Website URL which you want to fetch the favicon from.","required":true,"schema":{"type":"string","format":"url","x-example":"https:\/\/example.com"},"in":"query"}]}},"\/avatars\/flags\/{code}":{"get":{"summary":"Get country flag","operationId":"avatarsGetFlag","tags":["avatars"],"description":"You can use this endpoint to show different country flags icons to your users. The code argument receives the 2 letter country code. Use width, height and quality arguments to change the output settings. Country codes follow the [ISO 3166-1](https:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFlag","weight":55,"cookies":false,"type":"location","demo":"avatars\/get-flag.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-flag.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Country Code. ISO Alpha-2 country code format.","required":true,"schema":{"type":"string","x-example":"af","enum":["af","ao","al","ad","ae","ar","am","ag","au","at","az","bi","be","bj","bf","bd","bg","bh","bs","ba","by","bz","bo","br","bb","bn","bt","bw","cf","ca","ch","cl","cn","ci","cm","cd","cg","co","km","cv","cr","cu","cy","cz","de","dj","dm","dk","do","dz","ec","eg","er","es","ee","et","fi","fj","fr","fm","ga","gb","ge","gh","gn","gm","gw","gq","gr","gd","gt","gy","hn","hr","ht","hu","id","in","ie","ir","iq","is","il","it","jm","jo","jp","kz","ke","kg","kh","ki","kn","kr","kw","la","lb","lr","ly","lc","li","lk","ls","lt","lu","lv","ma","mc","md","mg","mv","mx","mh","mk","ml","mt","mm","me","mn","mz","mr","mu","mw","my","na","ne","ng","ni","nl","no","np","nr","nz","om","pk","pa","pe","ph","pw","pg","pl","kp","pt","py","qa","ro","ru","rw","sa","sd","sn","sg","sb","sl","sv","sm","so","rs","ss","st","sr","sk","si","se","sz","sc","sy","td","tg","th","tj","tm","tl","to","tt","tn","tr","tv","tz","ug","ua","uy","us","uz","va","vc","ve","vn","vu","ws","ye","za","zm","zw"],"x-enum-name":"Flag","x-enum-keys":["Afghanistan","Angola","Albania","Andorra","United Arab Emirates","Argentina","Armenia","Antigua and Barbuda","Australia","Austria","Azerbaijan","Burundi","Belgium","Benin","Burkina Faso","Bangladesh","Bulgaria","Bahrain","Bahamas","Bosnia and Herzegovina","Belarus","Belize","Bolivia","Brazil","Barbados","Brunei Darussalam","Bhutan","Botswana","Central African Republic","Canada","Switzerland","Chile","China","C\u00f4te d'Ivoire","Cameroon","Democratic Republic of the Congo","Republic of the Congo","Colombia","Comoros","Cape Verde","Costa Rica","Cuba","Cyprus","Czech Republic","Germany","Djibouti","Dominica","Denmark","Dominican Republic","Algeria","Ecuador","Egypt","Eritrea","Spain","Estonia","Ethiopia","Finland","Fiji","France","Micronesia (Federated States of)","Gabon","United Kingdom","Georgia","Ghana","Guinea","Gambia","Guinea-Bissau","Equatorial Guinea","Greece","Grenada","Guatemala","Guyana","Honduras","Croatia","Haiti","Hungary","Indonesia","India","Ireland","Iran (Islamic Republic of)","Iraq","Iceland","Israel","Italy","Jamaica","Jordan","Japan","Kazakhstan","Kenya","Kyrgyzstan","Cambodia","Kiribati","Saint Kitts and Nevis","South Korea","Kuwait","Lao People's Democratic Republic","Lebanon","Liberia","Libya","Saint Lucia","Liechtenstein","Sri Lanka","Lesotho","Lithuania","Luxembourg","Latvia","Morocco","Monaco","Moldova","Madagascar","Maldives","Mexico","Marshall Islands","North Macedonia","Mali","Malta","Myanmar","Montenegro","Mongolia","Mozambique","Mauritania","Mauritius","Malawi","Malaysia","Namibia","Niger","Nigeria","Nicaragua","Netherlands","Norway","Nepal","Nauru","New Zealand","Oman","Pakistan","Panama","Peru","Philippines","Palau","Papua New Guinea","Poland","North Korea","Portugal","Paraguay","Qatar","Romania","Russia","Rwanda","Saudi Arabia","Sudan","Senegal","Singapore","Solomon Islands","Sierra Leone","El Salvador","San Marino","Somalia","Serbia","South Sudan","Sao Tome and Principe","Suriname","Slovakia","Slovenia","Sweden","Eswatini","Seychelles","Syria","Chad","Togo","Thailand","Tajikistan","Turkmenistan","Timor-Leste","Tonga","Trinidad and Tobago","Tunisia","Turkey","Tuvalu","Tanzania","Uganda","Ukraine","Uruguay","United States","Uzbekistan","Vatican City","Saint Vincent and the Grenadines","Venezuela","Vietnam","Vanuatu","Samoa","Yemen","South Africa","Zambia","Zimbabwe"]},"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"}]}},"\/avatars\/image":{"get":{"summary":"Get image from URL","operationId":"avatarsGetImage","tags":["avatars"],"description":"Use this endpoint to fetch a remote image URL and crop it to any image size you want. This endpoint is very useful if you need to crop and display remote images in your app or in case you want to make sure a 3rd party image is properly served using a TLS protocol.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getImage","weight":56,"cookies":false,"type":"location","demo":"avatars\/get-image.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-image.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"url","description":"Image URL which you want to crop.","required":true,"schema":{"type":"string","format":"url","x-example":"https:\/\/example.com"},"in":"query"},{"name":"width","description":"Resize preview image width, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get user initials","operationId":"avatarsGetInitials","tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getInitials","weight":59,"cookies":false,"type":"location","demo":"avatars\/get-initials.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-initials.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"name","description":"Full Name. When empty, current user name or email will be used. Max length: 128 chars.","required":false,"schema":{"type":"string","x-example":"[NAME]","default":""},"in":"query"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":500},"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":500},"in":"query"},{"name":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"schema":{"type":"string","default":""},"in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR code","operationId":"avatarsGetQR","tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getQR","weight":58,"cookies":false,"type":"location","demo":"avatars\/get-q-r.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-qr.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"text","description":"Plain text to be converted to QR code image.","required":true,"schema":{"type":"string","x-example":"[TEXT]"},"in":"query"},{"name":"size","description":"QR code size. Pass an integer between 1 to 1000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":1,"default":400},"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":1},"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"schema":{"type":"boolean","x-example":false,"default":false},"in":"query"}]}},"\/console\/assistant":{"post":{"summary":"Ask Query","operationId":"assistantChat","tags":["assistant"],"description":"","responses":{"200":{"description":"File"}},"x-appwrite":{"method":"chat","weight":304,"cookies":false,"type":"","demo":"assistant\/chat.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/assistant\/chat.md","rate-limit":15,"rate-time":3600,"rate-key":"userId:{userId}","scope":"assistant.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"prompt":{"type":"string","description":"Prompt. A string containing questions asked to the AI assistant.","x-example":"[PROMPT]"}},"required":["prompt"]}}}}}},"\/console\/variables":{"get":{"summary":"Get variables","operationId":"consoleVariables","tags":["console"],"description":"Get all Environment Variables that are relevant for the console.","responses":{"200":{"description":"Console Variables","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/consoleVariables"}}}}},"x-appwrite":{"method":"variables","weight":303,"cookies":false,"type":"","demo":"console\/variables.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/console\/variables.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/databases":{"get":{"summary":"List databases","operationId":"databasesList","tags":["databases"],"description":"Get a list of all databases from the current Appwrite project. You can use the search parameter to filter your results.","responses":{"200":{"description":"Databases List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/databaseList"}}}}},"x-appwrite":{"method":"list","weight":64,"cookies":false,"type":"","demo":"databases\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create database","operationId":"databasesCreate","tags":["databases"],"description":"Create a new Database.\n","responses":{"201":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"create","weight":63,"cookies":false,"type":"","demo":"databases\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"databaseId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[DATABASE_ID]"},"name":{"type":"string","description":"Database name. Max length: 128 chars.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Is the database enabled? When set to 'disabled', users cannot access the database but Server SDKs with an API key can still read and write to the database. No data is lost when this is toggled.","x-example":false}},"required":["databaseId","name"]}}}}}},"\/databases\/usage":{"get":{"summary":"Get usage stats for the database","operationId":"databasesGetUsage","tags":["databases"],"description":"","responses":{"200":{"description":"UsageDatabases","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageDatabases"}}}}},"x-appwrite":{"method":"getUsage","weight":108,"cookies":false,"type":"","demo":"databases\/get-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"`Date range.","required":false,"schema":{"type":"string","x-example":"24h","enum":["24h","30d","90d"],"x-enum-name":"DatabaseUsageRange","x-enum-keys":["Twenty Four Hours","Thirty Days","Ninety Days"],"default":"30d"},"in":"query"}]}},"\/databases\/{databaseId}":{"get":{"summary":"Get database","operationId":"databasesGet","tags":["databases"],"description":"Get a database by its unique ID. This endpoint response returns a JSON object with the database metadata.","responses":{"200":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"get","weight":65,"cookies":false,"type":"","demo":"databases\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}]},"put":{"summary":"Update database","operationId":"databasesUpdate","tags":["databases"],"description":"Update a database by its unique ID.","responses":{"200":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"update","weight":67,"cookies":false,"type":"","demo":"databases\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Database name. Max length: 128 chars.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Is database enabled? When set to 'disabled', users cannot access the database but Server SDKs with an API key can still read and write to the database. No data is lost when this is toggled.","x-example":false}},"required":["name"]}}}}},"delete":{"summary":"Delete database","operationId":"databasesDelete","tags":["databases"],"description":"Delete a database by its unique ID. Only API keys with with databases.write scope can delete a database.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":68,"cookies":false,"type":"","demo":"databases\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections":{"get":{"summary":"List collections","operationId":"databasesListCollections","tags":["databases"],"description":"Get a list of all collections that belong to the provided databaseId. You can use the search parameter to filter your results.","responses":{"200":{"description":"Collections List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collectionList"}}}}},"x-appwrite":{"method":"listCollections","weight":70,"cookies":false,"type":"","demo":"databases\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, documentSecurity","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create collection","operationId":"databasesCreateCollection","tags":["databases"],"description":"Create a new Collection. Before using this route, you should create a new database resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"createCollection","weight":69,"cookies":false,"type":"","demo":"databases\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permissions strings. By default, no user is granted with any permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":false},"enabled":{"type":"boolean","description":"Is collection enabled? When set to 'disabled', users cannot access the collection but Server SDKs with and API key can still read and write to the collection. No data is lost when this is toggled.","x-example":false}},"required":["collectionId","name"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}":{"get":{"summary":"Get collection","operationId":"databasesGetCollection","tags":["databases"],"description":"Get a collection by its unique ID. This endpoint response returns a JSON object with the collection metadata.","responses":{"200":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"getCollection","weight":71,"cookies":false,"type":"","demo":"databases\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]},"put":{"summary":"Update collection","operationId":"databasesUpdateCollection","tags":["databases"],"description":"Update a collection by its unique ID.","responses":{"200":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"updateCollection","weight":73,"cookies":false,"type":"","demo":"databases\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":false},"enabled":{"type":"boolean","description":"Is collection enabled? When set to 'disabled', users cannot access the collection but Server SDKs with and API key can still read and write to the collection. No data is lost when this is toggled.","x-example":false}},"required":["name"]}}}}},"delete":{"summary":"Delete collection","operationId":"databasesDeleteCollection","tags":["databases"],"description":"Delete a collection by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteCollection","weight":74,"cookies":false,"type":"","demo":"databases\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes":{"get":{"summary":"List attributes","operationId":"databasesListAttributes","tags":["databases"],"description":"","responses":{"200":{"description":"Attributes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeList"}}}}},"x-appwrite":{"method":"listAttributes","weight":85,"cookies":false,"type":"","demo":"databases\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: key, type, size, required, array, status, error","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create boolean attribute","operationId":"databasesCreateBooleanAttribute","tags":["databases"],"description":"Create a boolean attribute.\n","responses":{"202":{"description":"AttributeBoolean","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeBoolean"}}}}},"x-appwrite":{"method":"createBooleanAttribute","weight":82,"cookies":false,"type":"","demo":"databases\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":false},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean\/{key}":{"patch":{"summary":"Update boolean attribute","operationId":"databasesUpdateBooleanAttribute","tags":["databases"],"description":"","responses":{"200":{"description":"AttributeBoolean","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeBoolean"}}}}},"x-appwrite":{"method":"updateBooleanAttribute","weight":94,"cookies":false,"type":"","demo":"databases\/update-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":false,"x-nullable":true}},"required":["required","default"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/datetime":{"post":{"summary":"Create datetime attribute","operationId":"databasesCreateDatetimeAttribute","tags":["databases"],"description":"","responses":{"202":{"description":"AttributeDatetime","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeDatetime"}}}}},"x-appwrite":{"method":"createDatetimeAttribute","weight":83,"cookies":false,"type":"","demo":"databases\/create-datetime-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-datetime-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for the attribute in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/datetime\/{key}":{"patch":{"summary":"Update dateTime attribute","operationId":"databasesUpdateDatetimeAttribute","tags":["databases"],"description":"","responses":{"200":{"description":"AttributeDatetime","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeDatetime"}}}}},"x-appwrite":{"method":"updateDatetimeAttribute","weight":95,"cookies":false,"type":"","demo":"databases\/update-datetime-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-datetime-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null,"x-nullable":true}},"required":["required","default"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create email attribute","operationId":"databasesCreateEmailAttribute","tags":["databases"],"description":"Create an email attribute.\n","responses":{"202":{"description":"AttributeEmail","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeEmail"}}}}},"x-appwrite":{"method":"createEmailAttribute","weight":76,"cookies":false,"type":"","demo":"databases\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"email@example.com"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/email\/{key}":{"patch":{"summary":"Update email attribute","operationId":"databasesUpdateEmailAttribute","tags":["databases"],"description":"Update an email attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeEmail","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeEmail"}}}}},"x-appwrite":{"method":"updateEmailAttribute","weight":88,"cookies":false,"type":"","demo":"databases\/update-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"email@example.com","x-nullable":true}},"required":["required","default"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create enum attribute","operationId":"databasesCreateEnumAttribute","tags":["databases"],"description":"","responses":{"202":{"description":"AttributeEnum","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeEnum"}}}}},"x-appwrite":{"method":"createEnumAttribute","weight":77,"cookies":false,"type":"","demo":"databases\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"elements":{"type":"array","description":"Array of elements in enumerated type. Uses length of longest element to determine size. Maximum of 100 elements are allowed, each 255 characters long.","x-example":null,"items":{"type":"string"}},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","elements","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/enum\/{key}":{"patch":{"summary":"Update enum attribute","operationId":"databasesUpdateEnumAttribute","tags":["databases"],"description":"Update an enum attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeEnum","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeEnum"}}}}},"x-appwrite":{"method":"updateEnumAttribute","weight":89,"cookies":false,"type":"","demo":"databases\/update-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-enum-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"elements":{"type":"array","description":"Array of elements in enumerated type. Uses length of longest element to determine size. Maximum of 100 elements are allowed, each 255 characters long.","x-example":null,"items":{"type":"string"}},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"[DEFAULT]","x-nullable":true}},"required":["elements","required","default"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create float attribute","operationId":"databasesCreateFloatAttribute","tags":["databases"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeFloat","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeFloat"}}}}},"x-appwrite":{"method":"createFloatAttribute","weight":81,"cookies":false,"type":"","demo":"databases\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"min":{"type":"number","description":"Minimum value to enforce on new documents","x-example":null},"max":{"type":"number","description":"Maximum value to enforce on new documents","x-example":null},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/float\/{key}":{"patch":{"summary":"Update float attribute","operationId":"databasesUpdateFloatAttribute","tags":["databases"],"description":"Update a float attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeFloat","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeFloat"}}}}},"x-appwrite":{"method":"updateFloatAttribute","weight":93,"cookies":false,"type":"","demo":"databases\/update-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"min":{"type":"number","description":"Minimum value to enforce on new documents","x-example":null},"max":{"type":"number","description":"Maximum value to enforce on new documents","x-example":null},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null,"x-nullable":true}},"required":["required","min","max","default"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create integer attribute","operationId":"databasesCreateIntegerAttribute","tags":["databases"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeInteger","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeInteger"}}}}},"x-appwrite":{"method":"createIntegerAttribute","weight":80,"cookies":false,"type":"","demo":"databases\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"min":{"type":"integer","description":"Minimum value to enforce on new documents","x-example":null},"max":{"type":"integer","description":"Maximum value to enforce on new documents","x-example":null},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/integer\/{key}":{"patch":{"summary":"Update integer attribute","operationId":"databasesUpdateIntegerAttribute","tags":["databases"],"description":"Update an integer attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeInteger","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeInteger"}}}}},"x-appwrite":{"method":"updateIntegerAttribute","weight":92,"cookies":false,"type":"","demo":"databases\/update-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"min":{"type":"integer","description":"Minimum value to enforce on new documents","x-example":null},"max":{"type":"integer","description":"Maximum value to enforce on new documents","x-example":null},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null,"x-nullable":true}},"required":["required","min","max","default"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP address attribute","operationId":"databasesCreateIpAttribute","tags":["databases"],"description":"Create IP address attribute.\n","responses":{"202":{"description":"AttributeIP","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeIp"}}}}},"x-appwrite":{"method":"createIpAttribute","weight":78,"cookies":false,"type":"","demo":"databases\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/ip\/{key}":{"patch":{"summary":"Update IP address attribute","operationId":"databasesUpdateIpAttribute","tags":["databases"],"description":"Update an ip attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeIP","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeIp"}}}}},"x-appwrite":{"method":"updateIpAttribute","weight":90,"cookies":false,"type":"","demo":"databases\/update-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null,"x-nullable":true}},"required":["required","default"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/relationship":{"post":{"summary":"Create relationship attribute","operationId":"databasesCreateRelationshipAttribute","tags":["databases"],"description":"Create relationship attribute. [Learn more about relationship attributes](https:\/\/appwrite.io\/docs\/databases-relationships#relationship-attributes).\n","responses":{"202":{"description":"AttributeRelationship","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeRelationship"}}}}},"x-appwrite":{"method":"createRelationshipAttribute","weight":84,"cookies":false,"type":"","demo":"databases\/create-relationship-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-relationship-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"relatedCollectionId":{"type":"string","description":"Related Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","x-example":"[RELATED_COLLECTION_ID]"},"type":{"type":"string","description":"Relation type","x-example":"oneToOne","enum":["oneToOne","manyToOne","manyToMany","oneToMany"],"x-enum-name":"RelationshipType","x-enum-keys":[]},"twoWay":{"type":"boolean","description":"Is Two Way?","x-example":false},"key":{"type":"string","description":"Attribute Key.","x-example":null},"twoWayKey":{"type":"string","description":"Two Way Attribute Key.","x-example":null},"onDelete":{"type":"string","description":"Constraints option","x-example":"cascade","enum":["cascade","restrict","setNull"],"x-enum-name":"RelationMutate","x-enum-keys":[]}},"required":["relatedCollectionId","type"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create string attribute","operationId":"databasesCreateStringAttribute","tags":["databases"],"description":"Create a string attribute.\n","responses":{"202":{"description":"AttributeString","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeString"}}}}},"x-appwrite":{"method":"createStringAttribute","weight":75,"cookies":false,"type":"","demo":"databases\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"size":{"type":"integer","description":"Attribute size for text attributes, in number of characters.","x-example":1},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false},"encrypt":{"type":"boolean","description":"Toggle encryption for the attribute. Encryption enhances security by not storing any plain text values in the database. However, encrypted attributes cannot be queried.","x-example":false}},"required":["key","size","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/string\/{key}":{"patch":{"summary":"Update string attribute","operationId":"databasesUpdateStringAttribute","tags":["databases"],"description":"Update a string attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeString","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeString"}}}}},"x-appwrite":{"method":"updateStringAttribute","weight":87,"cookies":false,"type":"","demo":"databases\/update-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"[DEFAULT]","x-nullable":true}},"required":["required","default"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL attribute","operationId":"databasesCreateUrlAttribute","tags":["databases"],"description":"Create a URL attribute.\n","responses":{"202":{"description":"AttributeURL","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeUrl"}}}}},"x-appwrite":{"method":"createUrlAttribute","weight":79,"cookies":false,"type":"","demo":"databases\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"https:\/\/example.com"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url\/{key}":{"patch":{"summary":"Update URL attribute","operationId":"databasesUpdateUrlAttribute","tags":["databases"],"description":"Update an url attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeURL","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeUrl"}}}}},"x-appwrite":{"method":"updateUrlAttribute","weight":91,"cookies":false,"type":"","demo":"databases\/update-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"https:\/\/example.com","x-nullable":true}},"required":["required","default"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get attribute","operationId":"databasesGetAttribute","tags":["databases"],"description":"","responses":{"200":{"description":"AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, or AttributeDatetime, or AttributeRelationship, or AttributeString","content":{"application\/json":{"schema":{"oneOf":[{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeRelationship"},{"$ref":"#\/components\/schemas\/attributeString"}]}}}}},"x-appwrite":{"method":"getAttribute","weight":86,"cookies":false,"type":"","demo":"databases\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}]},"delete":{"summary":"Delete attribute","operationId":"databasesDeleteAttribute","tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":97,"cookies":false,"type":"","demo":"databases\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/{key}\/relationship":{"patch":{"summary":"Update relationship attribute","operationId":"databasesUpdateRelationshipAttribute","tags":["databases"],"description":"Update relationship attribute. [Learn more about relationship attributes](https:\/\/appwrite.io\/docs\/databases-relationships#relationship-attributes).\n","responses":{"200":{"description":"AttributeRelationship","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeRelationship"}}}}},"x-appwrite":{"method":"updateRelationshipAttribute","weight":96,"cookies":false,"type":"","demo":"databases\/update-relationship-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-relationship-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"onDelete":{"type":"string","description":"Constraints option","x-example":"cascade","enum":["cascade","restrict","setNull"],"x-enum-name":"RelationMutate","x-enum-keys":[]}}}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List documents","operationId":"databasesListDocuments","tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/documentList"}}}}},"x-appwrite":{"method":"listDocuments","weight":103,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"post":{"summary":"Create document","operationId":"databasesCreateDocument","tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"createDocument","weight":102,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, only the current user is granted all permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get document","operationId":"databasesGetDocument","tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"getDocument","weight":104,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"patch":{"summary":"Update document","operationId":"databasesUpdateDocument","tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"updateDocument","weight":106,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete document","operationId":"databasesDeleteDocument","tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":107,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}\/logs":{"get":{"summary":"List document logs","operationId":"databasesListDocumentLogs","tags":["databases"],"description":"Get the document activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listDocumentLogs","weight":105,"cookies":false,"type":"","demo":"databases\/list-document-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes":{"get":{"summary":"List indexes","operationId":"databasesListIndexes","tags":["databases"],"description":"","responses":{"200":{"description":"Indexes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/indexList"}}}}},"x-appwrite":{"method":"listIndexes","weight":99,"cookies":false,"type":"","demo":"databases\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: key, type, status, attributes, error","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"post":{"summary":"Create index","operationId":"databasesCreateIndex","tags":["databases"],"description":"","responses":{"202":{"description":"Index","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/index"}}}}},"x-appwrite":{"method":"createIndex","weight":98,"cookies":false,"type":"","demo":"databases\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Index Key.","x-example":null},"type":{"type":"string","description":"Index type.","x-example":"key","enum":["key","fulltext","unique","spatial"],"x-enum-name":"IndexType","x-enum-keys":[]},"attributes":{"type":"array","description":"Array of attributes to index. Maximum of 100 attributes are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders. Maximum of 100 orders are allowed.","x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get index","operationId":"databasesGetIndex","tags":["databases"],"description":"","responses":{"200":{"description":"Index","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/index"}}}}},"x-appwrite":{"method":"getIndex","weight":100,"cookies":false,"type":"","demo":"databases\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Index Key.","required":true,"schema":{"type":"string"},"in":"path"}]},"delete":{"summary":"Delete index","operationId":"databasesDeleteIndex","tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":101,"cookies":false,"type":"","demo":"databases\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Index Key.","required":true,"schema":{"type":"string"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/logs":{"get":{"summary":"List collection logs","operationId":"databasesListCollectionLogs","tags":["databases"],"description":"Get the collection activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listCollectionLogs","weight":72,"cookies":false,"type":"","demo":"databases\/list-collection-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/usage":{"get":{"summary":"Get usage stats for a collection","operationId":"databasesGetCollectionUsage","tags":["databases"],"description":"","responses":{"200":{"description":"UsageCollection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageCollection"}}}}},"x-appwrite":{"method":"getCollectionUsage","weight":110,"cookies":false,"type":"","demo":"databases\/get-collection-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"range","description":"Date range.","required":false,"schema":{"type":"string","x-example":"24h","enum":["24h","30d","90d"],"x-enum-name":"DatabaseUsageRange","x-enum-keys":["Twenty Four Hours","Thirty Days","Ninety Days"],"default":"30d"},"in":"query"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/logs":{"get":{"summary":"List database logs","operationId":"databasesListLogs","tags":["databases"],"description":"Get the database activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listLogs","weight":66,"cookies":false,"type":"","demo":"databases\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/databases\/{databaseId}\/usage":{"get":{"summary":"Get usage stats for the database","operationId":"databasesGetDatabaseUsage","tags":["databases"],"description":"","responses":{"200":{"description":"UsageDatabase","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageDatabase"}}}}},"x-appwrite":{"method":"getDatabaseUsage","weight":109,"cookies":false,"type":"","demo":"databases\/get-database-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"range","description":"`Date range.","required":false,"schema":{"type":"string","x-example":"24h","enum":["24h","30d","90d"],"x-enum-name":"DatabaseUsageRange","x-enum-keys":["Twenty Four Hours","Thirty Days","Ninety Days"],"default":"30d"},"in":"query"}]}},"\/functions":{"get":{"summary":"List functions","operationId":"functionsList","tags":["functions"],"description":"Get a list of all the project's functions. You can use the query params to filter your results.","responses":{"200":{"description":"Functions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/functionList"}}}}},"x-appwrite":{"method":"list","weight":266,"cookies":false,"type":"","demo":"functions\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-functions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, runtime, deployment, schedule, scheduleNext, schedulePrevious, timeout, entrypoint, commands, installationId","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create function","operationId":"functionsCreate","tags":["functions"],"description":"Create a new function. You can pass a list of [permissions](https:\/\/appwrite.io\/docs\/permissions) to allow different project users or team with access to execute the function using the client API.","responses":{"201":{"description":"Function","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/function"}}}}},"x-appwrite":{"method":"create","weight":265,"cookies":false,"type":"","demo":"functions\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"functionId":{"type":"string","description":"Function ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[FUNCTION_ID]"},"name":{"type":"string","description":"Function name. Max length: 128 chars.","x-example":"[NAME]"},"runtime":{"type":"string","description":"Execution runtime.","x-example":"node-18.0","enum":["node-18.0","php-8.0","ruby-3.1","python-3.9"],"x-enum-name":null,"x-enum-keys":[]},"execute":{"type":"array","description":"An array of role strings with execution permissions. By default no user is granted with any execute permissions. [learn more about roles](https:\/\/appwrite.io\/docs\/permissions#permission-roles). Maximum of 100 roles are allowed, each 64 characters long.","x-example":"[\"any\"]","items":{"type":"string"}},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","x-example":null},"timeout":{"type":"integer","description":"Function maximum execution time in seconds.","x-example":1},"enabled":{"type":"boolean","description":"Is function enabled? When set to 'disabled', users cannot access the function but Server SDKs with and API key can still access the function. No data is lost when this is toggled.","x-example":false},"logging":{"type":"boolean","description":"Whether executions will be logged. When set to false, executions will not be logged, but will reduce resource used by your Appwrite project.","x-example":false},"entrypoint":{"type":"string","description":"Entrypoint File. This path is relative to the \"providerRootDirectory\".","x-example":"[ENTRYPOINT]"},"commands":{"type":"string","description":"Build Commands.","x-example":"[COMMANDS]"},"installationId":{"type":"string","description":"Appwrite Installation ID for VCS (Version Control System) deployment.","x-example":"[INSTALLATION_ID]"},"providerRepositoryId":{"type":"string","description":"Repository ID of the repo linked to the function.","x-example":"[PROVIDER_REPOSITORY_ID]"},"providerBranch":{"type":"string","description":"Production branch for the repo linked to the function.","x-example":"[PROVIDER_BRANCH]"},"providerSilentMode":{"type":"boolean","description":"Is the VCS (Version Control System) connection in silent mode for the repo linked to the function? In silent mode, comments will not be made on commits and pull requests.","x-example":false},"providerRootDirectory":{"type":"string","description":"Path to function code in the linked repo.","x-example":"[PROVIDER_ROOT_DIRECTORY]"},"templateRepository":{"type":"string","description":"Repository name of the template.","x-example":"[TEMPLATE_REPOSITORY]"},"templateOwner":{"type":"string","description":"The name of the owner of the template.","x-example":"[TEMPLATE_OWNER]"},"templateRootDirectory":{"type":"string","description":"Path to function code in the template repo.","x-example":"[TEMPLATE_ROOT_DIRECTORY]"},"templateBranch":{"type":"string","description":"Production branch for the repo linked to the function template.","x-example":"[TEMPLATE_BRANCH]"}},"required":["functionId","name","runtime"]}}}}}},"\/functions\/runtimes":{"get":{"summary":"List runtimes","operationId":"functionsListRuntimes","tags":["functions"],"description":"Get a list of all runtimes that are currently active on your instance.","responses":{"200":{"description":"Runtimes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/runtimeList"}}}}},"x-appwrite":{"method":"listRuntimes","weight":267,"cookies":false,"type":"","demo":"functions\/list-runtimes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-runtimes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/functions\/usage":{"get":{"summary":"Get functions usage","operationId":"functionsGetUsage","tags":["functions"],"description":"","responses":{"200":{"description":"UsageFunctions","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageFunctions"}}}}},"x-appwrite":{"method":"getUsage","weight":270,"cookies":false,"type":"","demo":"functions\/get-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"schema":{"type":"string","x-example":"24h","enum":["24h","30d","90d"],"x-enum-name":"FunctionUsageRange","x-enum-keys":["Twenty Four Hours","Thirty Days","Ninety Days"],"default":"30d"},"in":"query"}]}},"\/functions\/{functionId}":{"get":{"summary":"Get function","operationId":"functionsGet","tags":["functions"],"description":"Get a function by its unique ID.","responses":{"200":{"description":"Function","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/function"}}}}},"x-appwrite":{"method":"get","weight":268,"cookies":false,"type":"","demo":"functions\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}]},"put":{"summary":"Update function","operationId":"functionsUpdate","tags":["functions"],"description":"Update function by its unique ID.","responses":{"200":{"description":"Function","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/function"}}}}},"x-appwrite":{"method":"update","weight":271,"cookies":false,"type":"","demo":"functions\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Function name. Max length: 128 chars.","x-example":"[NAME]"},"runtime":{"type":"string","description":"Execution runtime.","x-example":"node-18.0","enum":["node-18.0","php-8.0","ruby-3.1","python-3.9"],"x-enum-name":null,"x-enum-keys":[]},"execute":{"type":"array","description":"An array of role strings with execution permissions. By default no user is granted with any execute permissions. [learn more about roles](https:\/\/appwrite.io\/docs\/permissions#permission-roles). Maximum of 100 roles are allowed, each 64 characters long.","x-example":"[\"any\"]","items":{"type":"string"}},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","x-example":null},"timeout":{"type":"integer","description":"Maximum execution time in seconds.","x-example":1},"enabled":{"type":"boolean","description":"Is function enabled? When set to 'disabled', users cannot access the function but Server SDKs with and API key can still access the function. No data is lost when this is toggled.","x-example":false},"logging":{"type":"boolean","description":"Whether executions will be logged. When set to false, executions will not be logged, but will reduce resource used by your Appwrite project.","x-example":false},"entrypoint":{"type":"string","description":"Entrypoint File. This path is relative to the \"providerRootDirectory\".","x-example":"[ENTRYPOINT]"},"commands":{"type":"string","description":"Build Commands.","x-example":"[COMMANDS]"},"installationId":{"type":"string","description":"Appwrite Installation ID for VCS (Version Controle System) deployment.","x-example":"[INSTALLATION_ID]"},"providerRepositoryId":{"type":"string","description":"Repository ID of the repo linked to the function","x-example":"[PROVIDER_REPOSITORY_ID]"},"providerBranch":{"type":"string","description":"Production branch for the repo linked to the function","x-example":"[PROVIDER_BRANCH]"},"providerSilentMode":{"type":"boolean","description":"Is the VCS (Version Control System) connection in silent mode for the repo linked to the function? In silent mode, comments will not be made on commits and pull requests.","x-example":false},"providerRootDirectory":{"type":"string","description":"Path to function code in the linked repo.","x-example":"[PROVIDER_ROOT_DIRECTORY]"}},"required":["name"]}}}}},"delete":{"summary":"Delete function","operationId":"functionsDelete","tags":["functions"],"description":"Delete a function by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":274,"cookies":false,"type":"","demo":"functions\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/deployments":{"get":{"summary":"List deployments","operationId":"functionsListDeployments","tags":["functions"],"description":"Get a list of all the project's code deployments. You can use the query params to filter your results.","responses":{"200":{"description":"Deployments List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deploymentList"}}}}},"x-appwrite":{"method":"listDeployments","weight":276,"cookies":false,"type":"","demo":"functions\/list-deployments.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-deployments.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: size, buildId, activate, entrypoint, commands","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create deployment","operationId":"functionsCreateDeployment","tags":["functions"],"description":"Create a new function code deployment. Use this endpoint to upload a new version of your code function. To execute your newly uploaded code, you'll need to update the function's deployment to use your new deployment UID.\n\nThis endpoint accepts a tar.gz file compressed with your code. Make sure to include any dependencies your code has within the compressed file. You can learn more about code packaging in the [Appwrite Cloud Functions tutorial](https:\/\/appwrite.io\/docs\/functions).\n\nUse the \"command\" param to set the entrypoint used to execute your code.","responses":{"202":{"description":"Deployment","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deployment"}}}}},"x-appwrite":{"method":"createDeployment","weight":275,"cookies":false,"type":"","demo":"functions\/create-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":true,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}],"requestBody":{"content":{"multipart\/form-data":{"schema":{"type":"object","properties":{"entrypoint":{"type":"string","description":"Entrypoint File.","x-example":"[ENTRYPOINT]"},"commands":{"type":"string","description":"Build Commands.","x-example":"[COMMANDS]"},"code":{"type":"string","description":"Gzip file with your code package. When used with the Appwrite CLI, pass the path to your code directory, and the CLI will automatically package your code. Use a path that is within the current directory.","x-example":null},"activate":{"type":"boolean","description":"Automatically activate the deployment when it is finished building.","x-example":false}},"required":["code","activate"]}}}}}},"\/functions\/{functionId}\/deployments\/{deploymentId}":{"get":{"summary":"Get deployment","operationId":"functionsGetDeployment","tags":["functions"],"description":"Get a code deployment by its unique ID.","responses":{"200":{"description":"Deployment","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deployment"}}}}},"x-appwrite":{"method":"getDeployment","weight":277,"cookies":false,"type":"","demo":"functions\/get-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"schema":{"type":"string","x-example":"[DEPLOYMENT_ID]"},"in":"path"}]},"patch":{"summary":"Update function deployment","operationId":"functionsUpdateDeployment","tags":["functions"],"description":"Update the function code deployment ID using the unique function ID. Use this endpoint to switch the code deployment that should be executed by the execution endpoint.","responses":{"200":{"description":"Function","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/function"}}}}},"x-appwrite":{"method":"updateDeployment","weight":273,"cookies":false,"type":"","demo":"functions\/update-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-function-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"schema":{"type":"string","x-example":"[DEPLOYMENT_ID]"},"in":"path"}]},"delete":{"summary":"Delete deployment","operationId":"functionsDeleteDeployment","tags":["functions"],"description":"Delete a code deployment by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDeployment","weight":278,"cookies":false,"type":"","demo":"functions\/delete-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"schema":{"type":"string","x-example":"[DEPLOYMENT_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/deployments\/{deploymentId}\/builds\/{buildId}":{"post":{"summary":"Create build","operationId":"functionsCreateBuild","tags":["functions"],"description":"Create a new build for an Appwrite Function deployment. This endpoint can be used to retry a failed build.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"createBuild","weight":279,"cookies":false,"type":"","demo":"functions\/create-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"schema":{"type":"string","x-example":"[DEPLOYMENT_ID]"},"in":"path"},{"name":"buildId","description":"Build unique ID.","required":true,"schema":{"type":"string","x-example":"[BUILD_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/deployments\/{deploymentId}\/download":{"get":{"summary":"Download Deployment","operationId":"functionsDownloadDeployment","tags":["functions"],"description":"Get a Deployment's contents by its unique ID. This endpoint supports range requests for partial or streaming file download.","responses":{"200":{"description":"File"}},"x-appwrite":{"method":"downloadDeployment","weight":272,"cookies":false,"type":"location","demo":"functions\/download-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/download-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"schema":{"type":"string","x-example":"[DEPLOYMENT_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List executions","operationId":"functionsListExecutions","tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/executionList"}}}}},"x-appwrite":{"method":"listExecutions","weight":281,"cookies":false,"type":"","demo":"functions\/list-executions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-executions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, responseStatusCode, duration","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create execution","operationId":"functionsCreateExecution","tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/execution"}}}}},"x-appwrite":{"method":"createExecution","weight":280,"cookies":false,"type":"","demo":"functions\/create-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-execution.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"body":{"type":"string","description":"HTTP body of execution. Default value is empty string.","x-example":"[BODY]"},"async":{"type":"boolean","description":"Execute code in the background. Default value is false.","x-example":false},"path":{"type":"string","description":"HTTP path of execution. Path can include query params. Default value is \/","x-example":"[PATH]"},"method":{"type":"string","description":"HTTP method of execution. Default value is GET.","x-example":"GET","enum":["GET","POST","PUT","PATCH","DELETE","OPTIONS"],"x-enum-name":"ExecutionMethod","x-enum-keys":[]},"headers":{"type":"object","description":"HTTP headers of execution. Defaults to empty.","x-example":"{}"}}}}}}}},"\/functions\/{functionId}\/executions\/{executionId}":{"get":{"summary":"Get execution","operationId":"functionsGetExecution","tags":["functions"],"description":"Get a function execution log by its unique ID.","responses":{"200":{"description":"Execution","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/execution"}}}}},"x-appwrite":{"method":"getExecution","weight":282,"cookies":false,"type":"","demo":"functions\/get-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-execution.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"executionId","description":"Execution ID.","required":true,"schema":{"type":"string","x-example":"[EXECUTION_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/usage":{"get":{"summary":"Get function usage","operationId":"functionsGetFunctionUsage","tags":["functions"],"description":"","responses":{"200":{"description":"UsageFunction","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageFunction"}}}}},"x-appwrite":{"method":"getFunctionUsage","weight":269,"cookies":false,"type":"","demo":"functions\/get-function-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"range","description":"Date range.","required":false,"schema":{"type":"string","x-example":"24h","enum":["24h","30d","90d"],"x-enum-name":"FunctionUsageRange","x-enum-keys":["Twenty Four Hours","Thirty Days","Ninety Days"],"default":"30d"},"in":"query"}]}},"\/functions\/{functionId}\/variables":{"get":{"summary":"List variables","operationId":"functionsListVariables","tags":["functions"],"description":"Get a list of all variables of a specific function.","responses":{"200":{"description":"Variables List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variableList"}}}}},"x-appwrite":{"method":"listVariables","weight":284,"cookies":false,"type":"","demo":"functions\/list-variables.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-variables.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}]},"post":{"summary":"Create variable","operationId":"functionsCreateVariable","tags":["functions"],"description":"Create a new function environment variable. These variables can be accessed in the function at runtime as environment variables.","responses":{"201":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"createVariable","weight":283,"cookies":false,"type":"","demo":"functions\/create-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","x-example":"[VALUE]"}},"required":["key","value"]}}}}}},"\/functions\/{functionId}\/variables\/{variableId}":{"get":{"summary":"Get variable","operationId":"functionsGetVariable","tags":["functions"],"description":"Get a variable by its unique ID.","responses":{"200":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"getVariable","weight":285,"cookies":false,"type":"","demo":"functions\/get-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}]},"put":{"summary":"Update variable","operationId":"functionsUpdateVariable","tags":["functions"],"description":"Update variable by its unique ID.","responses":{"200":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"updateVariable","weight":286,"cookies":false,"type":"","demo":"functions\/update-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","x-example":"[VALUE]"}},"required":["key"]}}}}},"delete":{"summary":"Delete variable","operationId":"functionsDeleteVariable","tags":["functions"],"description":"Delete a variable by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteVariable","weight":287,"cookies":false,"type":"","demo":"functions\/delete-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}]}},"\/graphql":{"post":{"summary":"GraphQL endpoint","operationId":"graphqlQuery","tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/any"}}}}},"x-appwrite":{"method":"query","weight":302,"cookies":false,"type":"graphql","demo":"graphql\/query.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/graphql\/mutation":{"post":{"summary":"GraphQL endpoint","operationId":"graphqlMutation","tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/any"}}}}},"x-appwrite":{"method":"mutation","weight":301,"cookies":false,"type":"graphql","demo":"graphql\/mutation.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/health":{"get":{"summary":"Get HTTP","operationId":"healthGet","tags":["health"],"description":"Check the Appwrite HTTP server is up and responsive.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"get","weight":119,"cookies":false,"type":"","demo":"health\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/anti-virus":{"get":{"summary":"Get antivirus","operationId":"healthGetAntivirus","tags":["health"],"description":"Check the Appwrite Antivirus server is up and connection is successful.","responses":{"200":{"description":"Health Antivirus","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthAntivirus"}}}}},"x-appwrite":{"method":"getAntivirus","weight":137,"cookies":false,"type":"","demo":"health\/get-antivirus.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-storage-anti-virus.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/cache":{"get":{"summary":"Get cache","operationId":"healthGetCache","tags":["health"],"description":"Check the Appwrite in-memory cache servers are up and connection is successful.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"getCache","weight":122,"cookies":false,"type":"","demo":"health\/get-cache.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-cache.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/db":{"get":{"summary":"Get DB","operationId":"healthGetDB","tags":["health"],"description":"Check the Appwrite database servers are up and connection is successful.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"getDB","weight":121,"cookies":false,"type":"","demo":"health\/get-d-b.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-db.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/pubsub":{"get":{"summary":"Get pubsub","operationId":"healthGetPubSub","tags":["health"],"description":"Check the Appwrite pub-sub servers are up and connection is successful.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"getPubSub","weight":124,"cookies":false,"type":"","demo":"health\/get-pub-sub.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-pubsub.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/queue":{"get":{"summary":"Get queue","operationId":"healthGetQueue","tags":["health"],"description":"Check the Appwrite queue messaging servers are up and connection is successful.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"getQueue","weight":123,"cookies":false,"type":"","demo":"health\/get-queue.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/queue\/builds":{"get":{"summary":"Get builds queue","operationId":"healthGetQueueBuilds","tags":["health"],"description":"Get the number of builds that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueBuilds","weight":129,"cookies":false,"type":"","demo":"health\/get-queue-builds.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-builds.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/certificates":{"get":{"summary":"Get certificates queue","operationId":"healthGetQueueCertificates","tags":["health"],"description":"Get the number of certificates that are waiting to be issued against [Letsencrypt](https:\/\/letsencrypt.org\/) in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueCertificates","weight":128,"cookies":false,"type":"","demo":"health\/get-queue-certificates.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-certificates.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/databases":{"get":{"summary":"Get databases queue","operationId":"healthGetQueueDatabases","tags":["health"],"description":"Get the number of database changes that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueDatabases","weight":130,"cookies":false,"type":"","demo":"health\/get-queue-databases.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-databases.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"name","description":"Queue name for which to check the queue size","required":false,"schema":{"type":"string","x-example":"[NAME]","default":"database_db_main"},"in":"query"},{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/deletes":{"get":{"summary":"Get deletes queue","operationId":"healthGetQueueDeletes","tags":["health"],"description":"Get the number of background destructive changes that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueDeletes","weight":131,"cookies":false,"type":"","demo":"health\/get-queue-deletes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-deletes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/functions":{"get":{"summary":"Get functions queue","operationId":"healthGetQueueFunctions","tags":["health"],"description":"","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueFunctions","weight":135,"cookies":false,"type":"","demo":"health\/get-queue-functions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-functions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/logs":{"get":{"summary":"Get logs queue","operationId":"healthGetQueueLogs","tags":["health"],"description":"Get the number of logs that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueLogs","weight":127,"cookies":false,"type":"","demo":"health\/get-queue-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/mails":{"get":{"summary":"Get mails queue","operationId":"healthGetQueueMails","tags":["health"],"description":"Get the number of mails that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueMails","weight":132,"cookies":false,"type":"","demo":"health\/get-queue-mails.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-mails.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/messaging":{"get":{"summary":"Get messaging queue","operationId":"healthGetQueueMessaging","tags":["health"],"description":"Get the number of messages that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueMessaging","weight":133,"cookies":false,"type":"","demo":"health\/get-queue-messaging.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-messaging.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/migrations":{"get":{"summary":"Get migrations queue","operationId":"healthGetQueueMigrations","tags":["health"],"description":"Get the number of migrations that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueMigrations","weight":134,"cookies":false,"type":"","demo":"health\/get-queue-migrations.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-migrations.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/webhooks":{"get":{"summary":"Get webhooks queue","operationId":"healthGetQueueWebhooks","tags":["health"],"description":"Get the number of webhooks that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueWebhooks","weight":126,"cookies":false,"type":"","demo":"health\/get-queue-webhooks.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-webhooks.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/storage\/local":{"get":{"summary":"Get local storage","operationId":"healthGetStorageLocal","tags":["health"],"description":"Check the Appwrite local storage device is up and connection is successful.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"getStorageLocal","weight":136,"cookies":false,"type":"","demo":"health\/get-storage-local.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-storage-local.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/time":{"get":{"summary":"Get time","operationId":"healthGetTime","tags":["health"],"description":"Check the Appwrite server time is synced with Google remote NTP server. We use this technology to smoothly handle leap seconds with no disruptive events. The [Network Time Protocol](https:\/\/en.wikipedia.org\/wiki\/Network_Time_Protocol) (NTP) is used by hundreds of millions of computers and devices to synchronize their clocks over the Internet. If your computer sets its own clock, it likely uses NTP.","responses":{"200":{"description":"Health Time","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthTime"}}}}},"x-appwrite":{"method":"getTime","weight":125,"cookies":false,"type":"","demo":"health\/get-time.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-time.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/locale":{"get":{"summary":"Get user locale","operationId":"localeGet","tags":["locale"],"description":"Get the current user location based on IP. Returns an object with user country code, country name, continent name, continent code, ip address and suggested currency. You can use the locale header to get the data in a supported language.\n\n([IP Geolocation by DB-IP](https:\/\/db-ip.com))","responses":{"200":{"description":"Locale","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/locale"}}}}},"x-appwrite":{"method":"get","weight":111,"cookies":false,"type":"","demo":"locale\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-locale.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/localed","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/codes":{"get":{"summary":"List Locale Codes","operationId":"localeListCodes","tags":["locale"],"description":"List of all locale codes in [ISO 639-1](https:\/\/en.wikipedia.org\/wiki\/List_of_ISO_639-1_codes).","responses":{"200":{"description":"Locale codes list","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/localeCodeList"}}}}},"x-appwrite":{"method":"listCodes","weight":112,"cookies":false,"type":"","demo":"locale\/list-codes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-locale-codes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/localeCode","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/continents":{"get":{"summary":"List continents","operationId":"localeListContinents","tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/continentList"}}}}},"x-appwrite":{"method":"listContinents","weight":116,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/continents","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List countries","operationId":"localeListCountries","tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountries","weight":113,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/countries","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU countries","operationId":"localeListCountriesEU","tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountriesEU","weight":114,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/countries\/eu","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List countries phone codes","operationId":"localeListCountriesPhones","tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/phoneList"}}}}},"x-appwrite":{"method":"listCountriesPhones","weight":115,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/countries\/phones","offline-key":"","offline-response-key":"countryCode","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List currencies","operationId":"localeListCurrencies","tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/currencyList"}}}}},"x-appwrite":{"method":"listCurrencies","weight":117,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/currencies","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List languages","operationId":"localeListLanguages","tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/languageList"}}}}},"x-appwrite":{"method":"listLanguages","weight":118,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/languages","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/messaging\/messages":{"get":{"summary":"List messages","operationId":"messagingListMessages","tags":["messaging"],"description":"","responses":{"200":{"description":"Message list","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/messageList"}}}}},"x-appwrite":{"method":"listMessages","weight":361,"cookies":false,"type":"","demo":"messaging\/list-messages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-messages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: scheduledAt, deliveredAt, deliveredTotal, status, description, providerType","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]}},"\/messaging\/messages\/email":{"post":{"summary":"Create an email.","operationId":"messagingCreateEmail","tags":["messaging"],"description":"","responses":{"201":{"description":"Message","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/message"}}}}},"x-appwrite":{"method":"createEmail","weight":358,"cookies":false,"type":"","demo":"messaging\/create-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"messageId":{"type":"string","description":"Message ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[MESSAGE_ID]"},"subject":{"type":"string","description":"Email Subject.","x-example":"[SUBJECT]"},"content":{"type":"string","description":"Email Content.","x-example":"[CONTENT]"},"topics":{"type":"array","description":"List of Topic IDs.","x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","x-example":null,"items":{"type":"string"}},"cc":{"type":"array","description":"Array of target IDs to be added as CC.","x-example":null,"items":{"type":"string"}},"bcc":{"type":"array","description":"Array of target IDs to be added as BCC.","x-example":null,"items":{"type":"string"}},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":"MessageType","x-enum-keys":[]},"html":{"type":"boolean","description":"Is content of type HTML","x-example":false},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","x-example":null}},"required":["messageId","subject","content"]}}}}}},"\/messaging\/messages\/email\/{messageId}":{"patch":{"summary":"Update an email.","operationId":"messagingUpdateEmail","tags":["messaging"],"description":"","responses":{"200":{"description":"Message","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/message"}}}}},"x-appwrite":{"method":"updateEmail","weight":365,"cookies":false,"type":"","demo":"messaging\/update-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"schema":{"type":"string","x-example":"[MESSAGE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"topics":{"type":"array","description":"List of Topic IDs.","x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","x-example":null,"items":{"type":"string"}},"subject":{"type":"string","description":"Email Subject.","x-example":"[SUBJECT]"},"content":{"type":"string","description":"Email Content.","x-example":"[CONTENT]"},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":"MessageType","x-enum-keys":[]},"html":{"type":"boolean","description":"Is content of type HTML","x-example":false},"cc":{"type":"array","description":"Array of target IDs to be added as CC.","x-example":null,"items":{"type":"string"}},"bcc":{"type":"array","description":"Array of target IDs to be added as BCC.","x-example":null,"items":{"type":"string"}},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","x-example":null}}}}}}}},"\/messaging\/messages\/push":{"post":{"summary":"Create a push notification.","operationId":"messagingCreatePush","tags":["messaging"],"description":"","responses":{"201":{"description":"Message","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/message"}}}}},"x-appwrite":{"method":"createPush","weight":360,"cookies":false,"type":"","demo":"messaging\/create-push.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-push-notification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"messageId":{"type":"string","description":"Message ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[MESSAGE_ID]"},"title":{"type":"string","description":"Title for push notification.","x-example":"[TITLE]"},"body":{"type":"string","description":"Body for push notification.","x-example":"[BODY]"},"topics":{"type":"array","description":"List of Topic IDs.","x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","x-example":null,"items":{"type":"string"}},"data":{"type":"object","description":"Additional Data for push notification.","x-example":"{}"},"action":{"type":"string","description":"Action for push notification.","x-example":"[ACTION]"},"icon":{"type":"string","description":"Icon for push notification. Available only for Android and Web Platform.","x-example":"[ICON]"},"sound":{"type":"string","description":"Sound for push notification. Available only for Android and IOS Platform.","x-example":"[SOUND]"},"color":{"type":"string","description":"Color for push notification. Available only for Android Platform.","x-example":"[COLOR]"},"tag":{"type":"string","description":"Tag for push notification. Available only for Android Platform.","x-example":"[TAG]"},"badge":{"type":"string","description":"Badge for push notification. Available only for IOS Platform.","x-example":"[BADGE]"},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":"MessageType","x-enum-keys":[]},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","x-example":null}},"required":["messageId","title","body"]}}}}}},"\/messaging\/messages\/push\/{messageId}":{"patch":{"summary":"Update a push notification.","operationId":"messagingUpdatePush","tags":["messaging"],"description":"","responses":{"200":{"description":"Message","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/message"}}}}},"x-appwrite":{"method":"updatePush","weight":367,"cookies":false,"type":"","demo":"messaging\/update-push.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-push-notification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"schema":{"type":"string","x-example":"[MESSAGE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"topics":{"type":"array","description":"List of Topic IDs.","x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","x-example":null,"items":{"type":"string"}},"title":{"type":"string","description":"Title for push notification.","x-example":"[TITLE]"},"body":{"type":"string","description":"Body for push notification.","x-example":"[BODY]"},"data":{"type":"object","description":"Additional Data for push notification.","x-example":"{}"},"action":{"type":"string","description":"Action for push notification.","x-example":"[ACTION]"},"icon":{"type":"string","description":"Icon for push notification. Available only for Android and Web platforms.","x-example":"[ICON]"},"sound":{"type":"string","description":"Sound for push notification. Available only for Android and iOS platforms.","x-example":"[SOUND]"},"color":{"type":"string","description":"Color for push notification. Available only for Android platforms.","x-example":"[COLOR]"},"tag":{"type":"string","description":"Tag for push notification. Available only for Android platforms.","x-example":"[TAG]"},"badge":{"type":"integer","description":"Badge for push notification. Available only for iOS platforms.","x-example":null},"status":{"type":"string","description":"Message Status. Value must be either draft, cancelled, or processing.","x-example":"draft","enum":["draft","cancelled","processing"],"x-enum-name":"MessageType","x-enum-keys":[]},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","x-example":null}}}}}}}},"\/messaging\/messages\/sms":{"post":{"summary":"Create an SMS.","operationId":"messagingCreateSMS","tags":["messaging"],"description":"","responses":{"201":{"description":"Message","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/message"}}}}},"x-appwrite":{"method":"createSMS","weight":359,"cookies":false,"type":"","demo":"messaging\/create-s-m-s.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-sms.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"messageId":{"type":"string","description":"Message ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[MESSAGE_ID]"},"content":{"type":"string","description":"SMS Content.","x-example":"[CONTENT]"},"topics":{"type":"array","description":"List of Topic IDs.","x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","x-example":null,"items":{"type":"string"}},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":"MessageType","x-enum-keys":[]},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","x-example":null}},"required":["messageId","content"]}}}}}},"\/messaging\/messages\/sms\/{messageId}":{"patch":{"summary":"Update an SMS.","operationId":"messagingUpdateSMS","tags":["messaging"],"description":"","responses":{"200":{"description":"Message","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/message"}}}}},"x-appwrite":{"method":"updateSMS","weight":366,"cookies":false,"type":"","demo":"messaging\/update-s-m-s.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"schema":{"type":"string","x-example":"[MESSAGE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"topics":{"type":"array","description":"List of Topic IDs.","x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","x-example":null,"items":{"type":"string"}},"content":{"type":"string","description":"Email Content.","x-example":"[CONTENT]"},"status":{"type":"string","description":"Message Status. Value must be either draft or cancelled or processing.","x-example":"draft","enum":["draft","cancelled","processing"],"x-enum-name":"MessageType","x-enum-keys":[]},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","x-example":null}}}}}}}},"\/messaging\/messages\/{messageId}":{"get":{"summary":"Get a message","operationId":"messagingGetMessage","tags":["messaging"],"description":"","responses":{"200":{"description":"Message","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/message"}}}}},"x-appwrite":{"method":"getMessage","weight":364,"cookies":false,"type":"","demo":"messaging\/get-message.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/get-message.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"schema":{"type":"string","x-example":"[MESSAGE_ID]"},"in":"path"}]},"delete":{"summary":"Delete a message","operationId":"messagingDelete","tags":["messaging"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":368,"cookies":false,"type":"","demo":"messaging\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-message.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"schema":{"type":"string","x-example":"[MESSAGE_ID]"},"in":"path"}]}},"\/messaging\/messages\/{messageId}\/logs":{"get":{"summary":"List message logs","operationId":"messagingListMessageLogs","tags":["messaging"],"description":"","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listMessageLogs","weight":362,"cookies":false,"type":"","demo":"messaging\/list-message-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/messages\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"schema":{"type":"string","x-example":"[MESSAGE_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/messaging\/messages\/{messageId}\/targets":{"get":{"summary":"List message targets","operationId":"messagingListTargets","tags":["messaging"],"description":"List the targets associated with a message as set via the targets attribute.","responses":{"200":{"description":"Target list","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/targetList"}}}}},"x-appwrite":{"method":"listTargets","weight":363,"cookies":false,"type":"","demo":"messaging\/list-targets.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-message-targets.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"schema":{"type":"string","x-example":"[MESSAGE_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, providerId, identifier, providerType","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/messaging\/providers":{"get":{"summary":"List providers","operationId":"messagingListProviders","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider list","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/providerList"}}}}},"x-appwrite":{"method":"listProviders","weight":333,"cookies":false,"type":"","demo":"messaging\/list-providers.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-providers.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, provider, type, enabled","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]}},"\/messaging\/providers\/apns":{"post":{"summary":"Create APNS provider","operationId":"messagingCreateAPNSProvider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createAPNSProvider","weight":332,"cookies":false,"type":"","demo":"messaging\/create-a-p-n-s-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-apns-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"authKey":{"type":"string","description":"APNS authentication key.","x-example":"[AUTH_KEY]"},"authKeyId":{"type":"string","description":"APNS authentication key ID.","x-example":"[AUTH_KEY_ID]"},"teamId":{"type":"string","description":"APNS team ID.","x-example":"[TEAM_ID]"},"bundleId":{"type":"string","description":"APNS bundle ID.","x-example":"[BUNDLE_ID]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name"]}}}}}},"\/messaging\/providers\/apns\/{providerId}":{"patch":{"summary":"Update APNS provider","operationId":"messagingUpdateAPNSProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateAPNSProvider","weight":345,"cookies":false,"type":"","demo":"messaging\/update-a-p-n-s-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-apns-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"authKey":{"type":"string","description":"APNS authentication key.","x-example":"[AUTH_KEY]"},"authKeyId":{"type":"string","description":"APNS authentication key ID.","x-example":"[AUTH_KEY_ID]"},"teamId":{"type":"string","description":"APNS team ID.","x-example":"[TEAM_ID]"},"bundleId":{"type":"string","description":"APNS bundle ID.","x-example":"[BUNDLE_ID]"}}}}}}}},"\/messaging\/providers\/fcm":{"post":{"summary":"Create FCM provider","operationId":"messagingCreateFCMProvider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createFCMProvider","weight":331,"cookies":false,"type":"","demo":"messaging\/create-f-c-m-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-fcm-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"serviceAccountJSON":{"type":"object","description":"FCM service account JSON.","x-example":"{}"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name"]}}}}}},"\/messaging\/providers\/fcm\/{providerId}":{"patch":{"summary":"Update FCM provider","operationId":"messagingUpdateFCMProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateFCMProvider","weight":344,"cookies":false,"type":"","demo":"messaging\/update-f-c-m-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-fcm-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"serviceAccountJSON":{"type":"object","description":"FCM service account JSON.","x-example":"{}"}}}}}}}},"\/messaging\/providers\/mailgun":{"post":{"summary":"Create Mailgun provider","operationId":"messagingCreateMailgunProvider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createMailgunProvider","weight":323,"cookies":false,"type":"","demo":"messaging\/create-mailgun-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-mailgun-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"apiKey":{"type":"string","description":"Mailgun API Key.","x-example":"[API_KEY]"},"domain":{"type":"string","description":"Mailgun Domain.","x-example":"[DOMAIN]"},"isEuRegion":{"type":"boolean","description":"Set as EU region.","x-example":false},"fromName":{"type":"string","description":"Sender Name.","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the reply to field for the mail. Default value is sender name. Reply to name must have reply to email as well.","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the reply to field for the mail. Default value is sender email. Reply to email must have reply to name as well.","x-example":"email@example.com"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name"]}}}}}},"\/messaging\/providers\/mailgun\/{providerId}":{"patch":{"summary":"Update Mailgun provider","operationId":"messagingUpdateMailgunProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateMailgunProvider","weight":336,"cookies":false,"type":"","demo":"messaging\/update-mailgun-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-mailgun-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"apiKey":{"type":"string","description":"Mailgun API Key.","x-example":"[API_KEY]"},"domain":{"type":"string","description":"Mailgun Domain.","x-example":"[DOMAIN]"},"isEuRegion":{"type":"boolean","description":"Set as EU region.","x-example":false},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"fromName":{"type":"string","description":"Sender Name.","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the reply to field for the mail. Default value is sender name.","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the reply to field for the mail. Default value is sender email.","x-example":"[REPLY_TO_EMAIL]"}}}}}}}},"\/messaging\/providers\/msg91":{"post":{"summary":"Create Msg91 provider","operationId":"messagingCreateMsg91Provider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createMsg91Provider","weight":326,"cookies":false,"type":"","demo":"messaging\/create-msg91provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-msg91-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"senderId":{"type":"string","description":"Msg91 Sender ID.","x-example":"[SENDER_ID]"},"authKey":{"type":"string","description":"Msg91 Auth Key.","x-example":"[AUTH_KEY]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name"]}}}}}},"\/messaging\/providers\/msg91\/{providerId}":{"patch":{"summary":"Update Msg91 provider","operationId":"messagingUpdateMsg91Provider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateMsg91Provider","weight":339,"cookies":false,"type":"","demo":"messaging\/update-msg91provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-msg91-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"senderId":{"type":"string","description":"Msg91 Sender ID.","x-example":"[SENDER_ID]"},"authKey":{"type":"string","description":"Msg91 Auth Key.","x-example":"[AUTH_KEY]"},"from":{"type":"string","description":"Sender number.","x-example":"[FROM]"}}}}}}}},"\/messaging\/providers\/sendgrid":{"post":{"summary":"Create Sendgrid provider","operationId":"messagingCreateSendgridProvider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createSendgridProvider","weight":324,"cookies":false,"type":"","demo":"messaging\/create-sendgrid-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-sengrid-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"apiKey":{"type":"string","description":"Sendgrid API key.","x-example":"[API_KEY]"},"fromName":{"type":"string","description":"Sender Name.","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the reply to field for the mail. Default value is sender name.","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the reply to field for the mail. Default value is sender email.","x-example":"email@example.com"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name"]}}}}}},"\/messaging\/providers\/sendgrid\/{providerId}":{"patch":{"summary":"Update Sendgrid provider","operationId":"messagingUpdateSendgridProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateSendgridProvider","weight":337,"cookies":false,"type":"","demo":"messaging\/update-sendgrid-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-sendgrid-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"apiKey":{"type":"string","description":"Sendgrid API key.","x-example":"[API_KEY]"},"fromName":{"type":"string","description":"Sender Name.","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the Reply To field for the mail. Default value is Sender Name.","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the Reply To field for the mail. Default value is Sender Email.","x-example":"[REPLY_TO_EMAIL]"}}}}}}}},"\/messaging\/providers\/smtp":{"post":{"summary":"Create SMTP provider","operationId":"messagingCreateSMTPProvider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createSMTPProvider","weight":325,"cookies":false,"type":"","demo":"messaging\/create-s-m-t-p-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-smtp-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"host":{"type":"string","description":"SMTP hosts. Either a single hostname or multiple semicolon-delimited hostnames. You can also specify a different port for each host by using this format: [hostname:port] (e.g. \"smtp1.example.com:25;smtp2.example.com\"). You can also specify encryption type, for example: (e.g. \"tls:\/\/smtp1.example.com:587;ssl:\/\/smtp2.example.com:465\"). Hosts will be tried in order.","x-example":"[HOST]"},"port":{"type":"integer","description":"The default SMTP server port.","x-example":1},"username":{"type":"string","description":"Authentication username.","x-example":"[USERNAME]"},"password":{"type":"string","description":"Authentication password.","x-example":"[PASSWORD]"},"encryption":{"type":"string","description":"Encryption type. Can be omitted, 'ssl', or 'tls'","x-example":"none","enum":["none","ssl","tls"],"x-enum-name":"SMTPEncryption","x-enum-keys":[]},"autoTLS":{"type":"boolean","description":"Enable SMTP AutoTLS feature.","x-example":false},"mailer":{"type":"string","description":"The value to use for the X-Mailer header.","x-example":"[MAILER]"},"fromName":{"type":"string","description":"Sender Name.","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the reply to field for the mail. Default value is sender name.","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the reply to field for the mail. Default value is sender email.","x-example":"email@example.com"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name","host"]}}}}}},"\/messaging\/providers\/smtp\/{providerId}":{"patch":{"summary":"Update SMTP provider","operationId":"messagingUpdateSMTPProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateSMTPProvider","weight":338,"cookies":false,"type":"","demo":"messaging\/update-s-m-t-p-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-smtp-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"host":{"type":"string","description":"SMTP hosts. Either a single hostname or multiple semicolon-delimited hostnames. You can also specify a different port for each host by using this format: [hostname:port] (e.g. \"smtp1.example.com:25;smtp2.example.com\"). You can also specify encryption type, for example: (e.g. \"tls:\/\/smtp1.example.com:587;ssl:\/\/smtp2.example.com:465\"). Hosts will be tried in order.","x-example":"[HOST]"},"port":{"type":"integer","description":"SMTP port.","x-example":1},"username":{"type":"string","description":"Authentication username.","x-example":"[USERNAME]"},"password":{"type":"string","description":"Authentication password.","x-example":"[PASSWORD]"},"encryption":{"type":"string","description":"Encryption type. Can be 'ssl' or 'tls'","x-example":"none","enum":["none","ssl","tls"],"x-enum-name":"SMTPEncryption","x-enum-keys":[]},"autoTLS":{"type":"boolean","description":"Enable SMTP AutoTLS feature.","x-example":false},"fromName":{"type":"string","description":"Sender Name.","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the Reply To field for the mail. Default value is Sender Name.","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the Reply To field for the mail. Default value is Sender Email.","x-example":"[REPLY_TO_EMAIL]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}}}}}}}},"\/messaging\/providers\/telesign":{"post":{"summary":"Create Telesign provider","operationId":"messagingCreateTelesignProvider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createTelesignProvider","weight":327,"cookies":false,"type":"","demo":"messaging\/create-telesign-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-telesign-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"username":{"type":"string","description":"Telesign username.","x-example":"[USERNAME]"},"password":{"type":"string","description":"Telesign password.","x-example":"[PASSWORD]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name"]}}}}}},"\/messaging\/providers\/telesign\/{providerId}":{"patch":{"summary":"Update Telesign provider","operationId":"messagingUpdateTelesignProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateTelesignProvider","weight":340,"cookies":false,"type":"","demo":"messaging\/update-telesign-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-telesign-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"username":{"type":"string","description":"Telesign username.","x-example":"[USERNAME]"},"password":{"type":"string","description":"Telesign password.","x-example":"[PASSWORD]"},"from":{"type":"string","description":"Sender number.","x-example":"[FROM]"}}}}}}}},"\/messaging\/providers\/textmagic":{"post":{"summary":"Create Textmagic provider","operationId":"messagingCreateTextmagicProvider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createTextmagicProvider","weight":328,"cookies":false,"type":"","demo":"messaging\/create-textmagic-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-textmagic-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"username":{"type":"string","description":"Textmagic username.","x-example":"[USERNAME]"},"apiKey":{"type":"string","description":"Textmagic apiKey.","x-example":"[API_KEY]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name"]}}}}}},"\/messaging\/providers\/textmagic\/{providerId}":{"patch":{"summary":"Update Textmagic provider","operationId":"messagingUpdateTextmagicProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateTextmagicProvider","weight":341,"cookies":false,"type":"","demo":"messaging\/update-textmagic-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-textmagic-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"username":{"type":"string","description":"Textmagic username.","x-example":"[USERNAME]"},"apiKey":{"type":"string","description":"Textmagic apiKey.","x-example":"[API_KEY]"},"from":{"type":"string","description":"Sender number.","x-example":"[FROM]"}}}}}}}},"\/messaging\/providers\/twilio":{"post":{"summary":"Create Twilio provider","operationId":"messagingCreateTwilioProvider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createTwilioProvider","weight":329,"cookies":false,"type":"","demo":"messaging\/create-twilio-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-twilio-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"accountSid":{"type":"string","description":"Twilio account secret ID.","x-example":"[ACCOUNT_SID]"},"authToken":{"type":"string","description":"Twilio authentication token.","x-example":"[AUTH_TOKEN]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name"]}}}}}},"\/messaging\/providers\/twilio\/{providerId}":{"patch":{"summary":"Update Twilio provider","operationId":"messagingUpdateTwilioProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateTwilioProvider","weight":342,"cookies":false,"type":"","demo":"messaging\/update-twilio-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-twilio-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"accountSid":{"type":"string","description":"Twilio account secret ID.","x-example":"[ACCOUNT_SID]"},"authToken":{"type":"string","description":"Twilio authentication token.","x-example":"[AUTH_TOKEN]"},"from":{"type":"string","description":"Sender number.","x-example":"[FROM]"}}}}}}}},"\/messaging\/providers\/vonage":{"post":{"summary":"Create Vonage provider","operationId":"messagingCreateVonageProvider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createVonageProvider","weight":330,"cookies":false,"type":"","demo":"messaging\/create-vonage-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-vonage-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"apiKey":{"type":"string","description":"Vonage API key.","x-example":"[API_KEY]"},"apiSecret":{"type":"string","description":"Vonage API secret.","x-example":"[API_SECRET]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name"]}}}}}},"\/messaging\/providers\/vonage\/{providerId}":{"patch":{"summary":"Update Vonage provider","operationId":"messagingUpdateVonageProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateVonageProvider","weight":343,"cookies":false,"type":"","demo":"messaging\/update-vonage-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-vonage-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"apiKey":{"type":"string","description":"Vonage API key.","x-example":"[API_KEY]"},"apiSecret":{"type":"string","description":"Vonage API secret.","x-example":"[API_SECRET]"},"from":{"type":"string","description":"Sender number.","x-example":"[FROM]"}}}}}}}},"\/messaging\/providers\/{providerId}":{"get":{"summary":"Get provider","operationId":"messagingGetProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"getProvider","weight":335,"cookies":false,"type":"","demo":"messaging\/get-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/get-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}]},"delete":{"summary":"Delete provider","operationId":"messagingDeleteProvider","tags":["messaging"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteProvider","weight":346,"cookies":false,"type":"","demo":"messaging\/delete-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}]}},"\/messaging\/providers\/{providerId}\/logs":{"get":{"summary":"List provider logs","operationId":"messagingListProviderLogs","tags":["messaging"],"description":"","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listProviderLogs","weight":334,"cookies":false,"type":"","demo":"messaging\/list-provider-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/providers\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/messaging\/subscribers\/{subscriberId}\/logs":{"get":{"summary":"List subscriber logs","operationId":"messagingListSubscriberLogs","tags":["messaging"],"description":"","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listSubscriberLogs","weight":355,"cookies":false,"type":"","demo":"messaging\/list-subscriber-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/subscribers\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"subscriberId","description":"Subscriber ID.","required":true,"schema":{"type":"string","x-example":"[SUBSCRIBER_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/messaging\/topics":{"get":{"summary":"List topics.","operationId":"messagingListTopics","tags":["messaging"],"description":"","responses":{"200":{"description":"Topic list","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/topicList"}}}}},"x-appwrite":{"method":"listTopics","weight":348,"cookies":false,"type":"","demo":"messaging\/list-topics.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-topics.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, description, total","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create a topic.","operationId":"messagingCreateTopic","tags":["messaging"],"description":"","responses":{"201":{"description":"Topic","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/topic"}}}}},"x-appwrite":{"method":"createTopic","weight":347,"cookies":false,"type":"","demo":"messaging\/create-topic.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-topic.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"topicId":{"type":"string","description":"Topic ID. Choose a custom Topic ID or a new Topic ID.","x-example":"[TOPIC_ID]"},"name":{"type":"string","description":"Topic Name.","x-example":"[NAME]"}},"required":["topicId","name"]}}}}}},"\/messaging\/topics\/{topicId}":{"get":{"summary":"Get a topic.","operationId":"messagingGetTopic","tags":["messaging"],"description":"","responses":{"200":{"description":"Topic","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/topic"}}}}},"x-appwrite":{"method":"getTopic","weight":350,"cookies":false,"type":"","demo":"messaging\/get-topic.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/get-topic.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID.","required":true,"schema":{"type":"string","x-example":"[TOPIC_ID]"},"in":"path"}]},"patch":{"summary":"Update a topic.","operationId":"messagingUpdateTopic","tags":["messaging"],"description":"","responses":{"200":{"description":"Topic","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/topic"}}}}},"x-appwrite":{"method":"updateTopic","weight":351,"cookies":false,"type":"","demo":"messaging\/update-topic.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-topic.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID.","required":true,"schema":{"type":"string","x-example":"[TOPIC_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Topic Name.","x-example":"[NAME]"}}}}}}},"delete":{"summary":"Delete a topic.","operationId":"messagingDeleteTopic","tags":["messaging"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteTopic","weight":352,"cookies":false,"type":"","demo":"messaging\/delete-topic.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-topic.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID.","required":true,"schema":{"type":"string","x-example":"[TOPIC_ID]"},"in":"path"}]}},"\/messaging\/topics\/{topicId}\/logs":{"get":{"summary":"List topic logs","operationId":"messagingListTopicLogs","tags":["messaging"],"description":"","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listTopicLogs","weight":349,"cookies":false,"type":"","demo":"messaging\/list-topic-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/topics\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID.","required":true,"schema":{"type":"string","x-example":"[TOPIC_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/messaging\/topics\/{topicId}\/subscribers":{"get":{"summary":"List subscribers.","operationId":"messagingListSubscribers","tags":["messaging"],"description":"","responses":{"200":{"description":"Subscriber list","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/subscriberList"}}}}},"x-appwrite":{"method":"listSubscribers","weight":354,"cookies":false,"type":"","demo":"messaging\/list-subscribers.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-subscribers.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID subscribed to.","required":true,"schema":{"type":"string","x-example":"[TOPIC_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, provider, type, enabled","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create a subscriber.","operationId":"messagingCreateSubscriber","tags":["messaging"],"description":"","responses":{"201":{"description":"Subscriber","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/subscriber"}}}}},"x-appwrite":{"method":"createSubscriber","weight":353,"cookies":false,"type":"","demo":"messaging\/create-subscriber.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-subscriber.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.write","platforms":["server","client","console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID to subscribe to.","required":true,"schema":{"type":"string","x-example":"[TOPIC_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"subscriberId":{"type":"string","description":"Subscriber ID. Choose a custom Subscriber ID or a new Subscriber ID.","x-example":"[SUBSCRIBER_ID]"},"targetId":{"type":"string","description":"Target ID. The target ID to link to the specified Topic ID.","x-example":"[TARGET_ID]"}},"required":["subscriberId","targetId"]}}}}}},"\/messaging\/topics\/{topicId}\/subscribers\/{subscriberId}":{"get":{"summary":"Get a subscriber.","operationId":"messagingGetSubscriber","tags":["messaging"],"description":"","responses":{"200":{"description":"Subscriber","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/subscriber"}}}}},"x-appwrite":{"method":"getSubscriber","weight":356,"cookies":false,"type":"","demo":"messaging\/get-subscriber.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/get-subscriber.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID subscribed to.","required":true,"schema":{"type":"string","x-example":"[TOPIC_ID]"},"in":"path"},{"name":"subscriberId","description":"Subscriber ID.","required":true,"schema":{"type":"string","x-example":"[SUBSCRIBER_ID]"},"in":"path"}]},"delete":{"summary":"Delete a subscriber.","operationId":"messagingDeleteSubscriber","tags":["messaging"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSubscriber","weight":357,"cookies":false,"type":"","demo":"messaging\/delete-subscriber.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-subscriber.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.write","platforms":["server","client","console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID subscribed to.","required":true,"schema":{"type":"string","x-example":"[TOPIC_ID]"},"in":"path"},{"name":"subscriberId","description":"Subscriber ID.","required":true,"schema":{"type":"string","x-example":"[SUBSCRIBER_ID]"},"in":"path"}]}},"\/migrations":{"get":{"summary":"List Migrations","operationId":"migrationsList","tags":["migrations"],"description":"","responses":{"200":{"description":"Migrations List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/migrationList"}}}}},"x-appwrite":{"method":"list","weight":310,"cookies":false,"type":"","demo":"migrations\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/list-migrations.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: status, stage, source, resources, statusCounters, resourceData, errors","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]}},"\/migrations\/appwrite":{"post":{"summary":"Migrate Appwrite Data","operationId":"migrationsCreateAppwriteMigration","tags":["migrations"],"description":"","responses":{"202":{"description":"Migration","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/migration"}}}}},"x-appwrite":{"method":"createAppwriteMigration","weight":305,"cookies":false,"type":"","demo":"migrations\/create-appwrite-migration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-appwrite.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"resources":{"type":"array","description":"List of resources to migrate","x-example":null,"items":{"type":"string"}},"endpoint":{"type":"string","description":"Source's Appwrite Endpoint","x-example":"https:\/\/example.com"},"projectId":{"type":"string","description":"Source's Project ID","x-example":"[PROJECT_ID]"},"apiKey":{"type":"string","description":"Source's API Key","x-example":"[API_KEY]"}},"required":["resources","endpoint","projectId","apiKey"]}}}}}},"\/migrations\/appwrite\/report":{"get":{"summary":"Generate a report on Appwrite Data","operationId":"migrationsGetAppwriteReport","tags":["migrations"],"description":"","responses":{"200":{"description":"Migration Report","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/migrationReport"}}}}},"x-appwrite":{"method":"getAppwriteReport","weight":312,"cookies":false,"type":"","demo":"migrations\/get-appwrite-report.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-appwrite-report.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"resources","description":"List of resources to migrate","required":true,"schema":{"type":"array","items":{"type":"string"}},"in":"query"},{"name":"endpoint","description":"Source's Appwrite Endpoint","required":true,"schema":{"type":"string","format":"url","x-example":"https:\/\/example.com"},"in":"query"},{"name":"projectID","description":"Source's Project ID","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"query"},{"name":"key","description":"Source's API Key","required":true,"schema":{"type":"string","x-example":"[KEY]"},"in":"query"}]}},"\/migrations\/firebase":{"post":{"summary":"Migrate Firebase Data (Service Account)","operationId":"migrationsCreateFirebaseMigration","tags":["migrations"],"description":"","responses":{"202":{"description":"Migration","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/migration"}}}}},"x-appwrite":{"method":"createFirebaseMigration","weight":307,"cookies":false,"type":"","demo":"migrations\/create-firebase-migration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-firebase.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"resources":{"type":"array","description":"List of resources to migrate","x-example":null,"items":{"type":"string"}},"serviceAccount":{"type":"string","description":"JSON of the Firebase service account credentials","x-example":"[SERVICE_ACCOUNT]"}},"required":["resources","serviceAccount"]}}}}}},"\/migrations\/firebase\/deauthorize":{"get":{"summary":"Revoke Appwrite's authorization to access Firebase Projects","operationId":"migrationsDeleteFirebaseAuth","tags":["migrations"],"description":"","responses":{"200":{"description":"File"}},"x-appwrite":{"method":"deleteFirebaseAuth","weight":318,"cookies":false,"type":"","demo":"migrations\/delete-firebase-auth.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/migrations\/firebase\/oauth":{"post":{"summary":"Migrate Firebase Data (OAuth)","operationId":"migrationsCreateFirebaseOAuthMigration","tags":["migrations"],"description":"","responses":{"202":{"description":"Migration","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/migration"}}}}},"x-appwrite":{"method":"createFirebaseOAuthMigration","weight":306,"cookies":false,"type":"","demo":"migrations\/create-firebase-o-auth-migration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-firebase.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"resources":{"type":"array","description":"List of resources to migrate","x-example":null,"items":{"type":"string"}},"projectId":{"type":"string","description":"Project ID of the Firebase Project","x-example":"[PROJECT_ID]"}},"required":["resources","projectId"]}}}}}},"\/migrations\/firebase\/projects":{"get":{"summary":"List Firebase Projects","operationId":"migrationsListFirebaseProjects","tags":["migrations"],"description":"","responses":{"200":{"description":"Migrations Firebase Projects List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/firebaseProjectList"}}}}},"x-appwrite":{"method":"listFirebaseProjects","weight":317,"cookies":false,"type":"","demo":"migrations\/list-firebase-projects.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/migrations\/firebase\/report":{"get":{"summary":"Generate a report on Firebase Data","operationId":"migrationsGetFirebaseReport","tags":["migrations"],"description":"","responses":{"200":{"description":"Migration Report","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/migrationReport"}}}}},"x-appwrite":{"method":"getFirebaseReport","weight":313,"cookies":false,"type":"","demo":"migrations\/get-firebase-report.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-firebase-report.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"resources","description":"List of resources to migrate","required":true,"schema":{"type":"array","items":{"type":"string"}},"in":"query"},{"name":"serviceAccount","description":"JSON of the Firebase service account credentials","required":true,"schema":{"type":"string","x-example":"[SERVICE_ACCOUNT]"},"in":"query"}]}},"\/migrations\/firebase\/report\/oauth":{"get":{"summary":"Generate a report on Firebase Data using OAuth","operationId":"migrationsGetFirebaseReportOAuth","tags":["migrations"],"description":"","responses":{"200":{"description":"Migration Report","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/migrationReport"}}}}},"x-appwrite":{"method":"getFirebaseReportOAuth","weight":314,"cookies":false,"type":"","demo":"migrations\/get-firebase-report-o-auth.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-firebase-report.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"resources","description":"List of resources to migrate","required":true,"schema":{"type":"array","items":{"type":"string"}},"in":"query"},{"name":"projectId","description":"Project ID","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"query"}]}},"\/migrations\/nhost":{"post":{"summary":"Migrate NHost Data","operationId":"migrationsCreateNHostMigration","tags":["migrations"],"description":"","responses":{"202":{"description":"Migration","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/migration"}}}}},"x-appwrite":{"method":"createNHostMigration","weight":309,"cookies":false,"type":"","demo":"migrations\/create-n-host-migration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-nhost.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"resources":{"type":"array","description":"List of resources to migrate","x-example":null,"items":{"type":"string"}},"subdomain":{"type":"string","description":"Source's Subdomain","x-example":"[SUBDOMAIN]"},"region":{"type":"string","description":"Source's Region","x-example":"[REGION]"},"adminSecret":{"type":"string","description":"Source's Admin Secret","x-example":"[ADMIN_SECRET]"},"database":{"type":"string","description":"Source's Database Name","x-example":"[DATABASE]"},"username":{"type":"string","description":"Source's Database Username","x-example":"[USERNAME]"},"password":{"type":"string","description":"Source's Database Password","x-example":"[PASSWORD]"},"port":{"type":"integer","description":"Source's Database Port","x-example":null}},"required":["resources","subdomain","region","adminSecret","database","username","password"]}}}}}},"\/migrations\/nhost\/report":{"get":{"summary":"Generate a report on NHost Data","operationId":"migrationsGetNHostReport","tags":["migrations"],"description":"","responses":{"200":{"description":"Migration Report","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/migrationReport"}}}}},"x-appwrite":{"method":"getNHostReport","weight":320,"cookies":false,"type":"","demo":"migrations\/get-n-host-report.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-nhost-report.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"resources","description":"List of resources to migrate.","required":true,"schema":{"type":"array","items":{"type":"string"}},"in":"query"},{"name":"subdomain","description":"Source's Subdomain.","required":true,"schema":{"type":"string","x-example":"[SUBDOMAIN]"},"in":"query"},{"name":"region","description":"Source's Region.","required":true,"schema":{"type":"string","x-example":"[REGION]"},"in":"query"},{"name":"adminSecret","description":"Source's Admin Secret.","required":true,"schema":{"type":"string","x-example":"[ADMIN_SECRET]"},"in":"query"},{"name":"database","description":"Source's Database Name.","required":true,"schema":{"type":"string","x-example":"[DATABASE]"},"in":"query"},{"name":"username","description":"Source's Database Username.","required":true,"schema":{"type":"string","x-example":"[USERNAME]"},"in":"query"},{"name":"password","description":"Source's Database Password.","required":true,"schema":{"type":"string","x-example":"[PASSWORD]"},"in":"query"},{"name":"port","description":"Source's Database Port.","required":false,"schema":{"type":"integer","format":"int32","default":5432},"in":"query"}]}},"\/migrations\/supabase":{"post":{"summary":"Migrate Supabase Data","operationId":"migrationsCreateSupabaseMigration","tags":["migrations"],"description":"","responses":{"202":{"description":"Migration","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/migration"}}}}},"x-appwrite":{"method":"createSupabaseMigration","weight":308,"cookies":false,"type":"","demo":"migrations\/create-supabase-migration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-supabase.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"resources":{"type":"array","description":"List of resources to migrate","x-example":null,"items":{"type":"string"}},"endpoint":{"type":"string","description":"Source's Supabase Endpoint","x-example":"https:\/\/example.com"},"apiKey":{"type":"string","description":"Source's API Key","x-example":"[API_KEY]"},"databaseHost":{"type":"string","description":"Source's Database Host","x-example":"[DATABASE_HOST]"},"username":{"type":"string","description":"Source's Database Username","x-example":"[USERNAME]"},"password":{"type":"string","description":"Source's Database Password","x-example":"[PASSWORD]"},"port":{"type":"integer","description":"Source's Database Port","x-example":null}},"required":["resources","endpoint","apiKey","databaseHost","username","password"]}}}}}},"\/migrations\/supabase\/report":{"get":{"summary":"Generate a report on Supabase Data","operationId":"migrationsGetSupabaseReport","tags":["migrations"],"description":"","responses":{"200":{"description":"Migration Report","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/migrationReport"}}}}},"x-appwrite":{"method":"getSupabaseReport","weight":319,"cookies":false,"type":"","demo":"migrations\/get-supabase-report.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-supabase-report.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"resources","description":"List of resources to migrate","required":true,"schema":{"type":"array","items":{"type":"string"}},"in":"query"},{"name":"endpoint","description":"Source's Supabase Endpoint.","required":true,"schema":{"type":"string","format":"url","x-example":"https:\/\/example.com"},"in":"query"},{"name":"apiKey","description":"Source's API Key.","required":true,"schema":{"type":"string","x-example":"[API_KEY]"},"in":"query"},{"name":"databaseHost","description":"Source's Database Host.","required":true,"schema":{"type":"string","x-example":"[DATABASE_HOST]"},"in":"query"},{"name":"username","description":"Source's Database Username.","required":true,"schema":{"type":"string","x-example":"[USERNAME]"},"in":"query"},{"name":"password","description":"Source's Database Password.","required":true,"schema":{"type":"string","x-example":"[PASSWORD]"},"in":"query"},{"name":"port","description":"Source's Database Port.","required":false,"schema":{"type":"integer","format":"int32","default":5432},"in":"query"}]}},"\/migrations\/{migrationId}":{"get":{"summary":"Get Migration","operationId":"migrationsGet","tags":["migrations"],"description":"","responses":{"200":{"description":"Migration","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/migration"}}}}},"x-appwrite":{"method":"get","weight":311,"cookies":false,"type":"","demo":"migrations\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/get-migration.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"migrationId","description":"Migration unique ID.","required":true,"schema":{"type":"string","x-example":"[MIGRATION_ID]"},"in":"path"}]},"patch":{"summary":"Retry Migration","operationId":"migrationsRetry","tags":["migrations"],"description":"","responses":{"202":{"description":"Migration","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/migration"}}}}},"x-appwrite":{"method":"retry","weight":321,"cookies":false,"type":"","demo":"migrations\/retry.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/retry-migration.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"migrationId","description":"Migration unique ID.","required":true,"schema":{"type":"string","x-example":"[MIGRATION_ID]"},"in":"path"}]},"delete":{"summary":"Delete Migration","operationId":"migrationsDelete","tags":["migrations"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":322,"cookies":false,"type":"","demo":"migrations\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-migration.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"migrationId","description":"Migration ID.","required":true,"schema":{"type":"string","x-example":"[MIGRATION_ID]"},"in":"path"}]}},"\/project\/usage":{"get":{"summary":"Get usage stats for a project","operationId":"projectGetUsage","tags":["project"],"description":"","responses":{"200":{"description":"UsageProject","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageProject"}}}}},"x-appwrite":{"method":"getUsage","weight":179,"cookies":false,"type":"","demo":"project\/get-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"startDate","description":"Starting date for the usage","required":true,"schema":{"type":"string"},"in":"query"},{"name":"endDate","description":"End date for the usage","required":true,"schema":{"type":"string"},"in":"query"},{"name":"period","description":"Period used","required":false,"schema":{"type":"string","x-example":"1h","enum":["1h","1d"],"x-enum-name":"ProjectUsageRange","x-enum-keys":["One Hour","One Day"],"default":"1d"},"in":"query"}]}},"\/project\/variables":{"get":{"summary":"List Variables","operationId":"projectListVariables","tags":["project"],"description":"Get a list of all project variables. These variables will be accessible in all Appwrite Functions at runtime.","responses":{"200":{"description":"Variables List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variableList"}}}}},"x-appwrite":{"method":"listVariables","weight":181,"cookies":false,"type":"","demo":"project\/list-variables.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/project\/list-variables.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]},"post":{"summary":"Create Variable","operationId":"projectCreateVariable","tags":["project"],"description":"Create a new project variable. This variable will be accessible in all Appwrite Functions at runtime.","responses":{"201":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"createVariable","weight":180,"cookies":false,"type":"","demo":"project\/create-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/project\/create-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","x-example":"[VALUE]"}},"required":["key","value"]}}}}}},"\/project\/variables\/{variableId}":{"get":{"summary":"Get Variable","operationId":"projectGetVariable","tags":["project"],"description":"Get a project variable by its unique ID.","responses":{"200":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"getVariable","weight":182,"cookies":false,"type":"","demo":"project\/get-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/project\/get-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}]},"put":{"summary":"Update Variable","operationId":"projectUpdateVariable","tags":["project"],"description":"Update project variable by its unique ID. This variable will be accessible in all Appwrite Functions at runtime.","responses":{"200":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"updateVariable","weight":183,"cookies":false,"type":"","demo":"project\/update-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/project\/update-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","x-example":"[VALUE]"}},"required":["key"]}}}}},"delete":{"summary":"Delete Variable","operationId":"projectDeleteVariable","tags":["project"],"description":"Delete a project variable by its unique ID. ","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteVariable","weight":184,"cookies":false,"type":"","demo":"project\/delete-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/project\/delete-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}]}},"\/projects":{"get":{"summary":"List projects","operationId":"projectsList","tags":["projects"],"description":"","responses":{"200":{"description":"Projects List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/projectList"}}}}},"x-appwrite":{"method":"list","weight":140,"cookies":false,"type":"","demo":"projects\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, teamId","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create project","operationId":"projectsCreate","tags":["projects"],"description":"","responses":{"201":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"create","weight":139,"cookies":false,"type":"","demo":"projects\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"projectId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, and hyphen. Can't start with a special char. Max length is 36 chars.","x-example":null},"name":{"type":"string","description":"Project name. Max length: 128 chars.","x-example":"[NAME]"},"teamId":{"type":"string","description":"Team unique ID.","x-example":"[TEAM_ID]"},"region":{"type":"string","description":"Project Region.","x-example":"default","enum":["default"],"x-enum-name":null,"x-enum-keys":[]},"description":{"type":"string","description":"Project description. Max length: 256 chars.","x-example":"[DESCRIPTION]"},"logo":{"type":"string","description":"Project logo.","x-example":"[LOGO]"},"url":{"type":"string","description":"Project URL.","x-example":"https:\/\/example.com"},"legalName":{"type":"string","description":"Project legal Name. Max length: 256 chars.","x-example":"[LEGAL_NAME]"},"legalCountry":{"type":"string","description":"Project legal Country. Max length: 256 chars.","x-example":"[LEGAL_COUNTRY]"},"legalState":{"type":"string","description":"Project legal State. Max length: 256 chars.","x-example":"[LEGAL_STATE]"},"legalCity":{"type":"string","description":"Project legal City. Max length: 256 chars.","x-example":"[LEGAL_CITY]"},"legalAddress":{"type":"string","description":"Project legal Address. Max length: 256 chars.","x-example":"[LEGAL_ADDRESS]"},"legalTaxId":{"type":"string","description":"Project legal Tax ID. Max length: 256 chars.","x-example":"[LEGAL_TAX_ID]"}},"required":["projectId","name","teamId"]}}}}}},"\/projects\/{projectId}":{"get":{"summary":"Get project","operationId":"projectsGet","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"get","weight":141,"cookies":false,"type":"","demo":"projects\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}]},"patch":{"summary":"Update project","operationId":"projectsUpdate","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"update","weight":142,"cookies":false,"type":"","demo":"projects\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Project name. Max length: 128 chars.","x-example":"[NAME]"},"description":{"type":"string","description":"Project description. Max length: 256 chars.","x-example":"[DESCRIPTION]"},"logo":{"type":"string","description":"Project logo.","x-example":"[LOGO]"},"url":{"type":"string","description":"Project URL.","x-example":"https:\/\/example.com"},"legalName":{"type":"string","description":"Project legal name. Max length: 256 chars.","x-example":"[LEGAL_NAME]"},"legalCountry":{"type":"string","description":"Project legal country. Max length: 256 chars.","x-example":"[LEGAL_COUNTRY]"},"legalState":{"type":"string","description":"Project legal state. Max length: 256 chars.","x-example":"[LEGAL_STATE]"},"legalCity":{"type":"string","description":"Project legal city. Max length: 256 chars.","x-example":"[LEGAL_CITY]"},"legalAddress":{"type":"string","description":"Project legal address. Max length: 256 chars.","x-example":"[LEGAL_ADDRESS]"},"legalTaxId":{"type":"string","description":"Project legal tax ID. Max length: 256 chars.","x-example":"[LEGAL_TAX_ID]"}},"required":["name"]}}}}},"delete":{"summary":"Delete project","operationId":"projectsDelete","tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":154,"cookies":false,"type":"","demo":"projects\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}]}},"\/projects\/{projectId}\/auth\/duration":{"patch":{"summary":"Update project authentication duration","operationId":"projectsUpdateAuthDuration","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateAuthDuration","weight":148,"cookies":false,"type":"","demo":"projects\/update-auth-duration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"duration":{"type":"integer","description":"Project session length in seconds. Max length: 31536000 seconds.","x-example":0}},"required":["duration"]}}}}}},"\/projects\/{projectId}\/auth\/limit":{"patch":{"summary":"Update project users limit","operationId":"projectsUpdateAuthLimit","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateAuthLimit","weight":147,"cookies":false,"type":"","demo":"projects\/update-auth-limit.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"limit":{"type":"integer","description":"Set the max number of users allowed in this project. Use 0 for unlimited.","x-example":0}},"required":["limit"]}}}}}},"\/projects\/{projectId}\/auth\/max-sessions":{"patch":{"summary":"Update project user sessions limit","operationId":"projectsUpdateAuthSessionsLimit","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateAuthSessionsLimit","weight":153,"cookies":false,"type":"","demo":"projects\/update-auth-sessions-limit.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"limit":{"type":"integer","description":"Set the max number of users allowed in this project. Value allowed is between 1-100. Default is 10","x-example":1}},"required":["limit"]}}}}}},"\/projects\/{projectId}\/auth\/password-dictionary":{"patch":{"summary":"Update authentication password dictionary status. Use this endpoint to enable or disable the dicitonary check for user password","operationId":"projectsUpdateAuthPasswordDictionary","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateAuthPasswordDictionary","weight":151,"cookies":false,"type":"","demo":"projects\/update-auth-password-dictionary.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Set whether or not to enable checking user's password against most commonly used passwords. Default is false.","x-example":false}},"required":["enabled"]}}}}}},"\/projects\/{projectId}\/auth\/password-history":{"patch":{"summary":"Update authentication password history. Use this endpoint to set the number of password history to save and 0 to disable password history.","operationId":"projectsUpdateAuthPasswordHistory","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateAuthPasswordHistory","weight":150,"cookies":false,"type":"","demo":"projects\/update-auth-password-history.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"limit":{"type":"integer","description":"Set the max number of passwords to store in user history. User can't choose a new password that is already stored in the password history list. Max number of passwords allowed in history is20. Default value is 0","x-example":0}},"required":["limit"]}}}}}},"\/projects\/{projectId}\/auth\/personal-data":{"patch":{"summary":"Enable or disable checking user passwords for similarity with their personal data.","operationId":"projectsUpdatePersonalDataCheck","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updatePersonalDataCheck","weight":152,"cookies":false,"type":"","demo":"projects\/update-personal-data-check.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Set whether or not to check a password for similarity with personal data. Default is false.","x-example":false}},"required":["enabled"]}}}}}},"\/projects\/{projectId}\/auth\/{method}":{"patch":{"summary":"Update project auth method status. Use this endpoint to enable or disable a given auth method for this project.","operationId":"projectsUpdateAuthStatus","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateAuthStatus","weight":149,"cookies":false,"type":"","demo":"projects\/update-auth-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"method","description":"Auth Method. Possible values: email-password,magic-url,email-otp,anonymous,invites,jwt,phone","required":true,"schema":{"type":"string","x-example":"email-password","enum":["email-password","magic-url","email-otp","anonymous","invites","jwt","phone"],"x-enum-name":"AuthMethod","x-enum-keys":[]},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"status":{"type":"boolean","description":"Set the status of this auth method.","x-example":false}},"required":["status"]}}}}}},"\/projects\/{projectId}\/keys":{"get":{"summary":"List keys","operationId":"projectsListKeys","tags":["projects"],"description":"","responses":{"200":{"description":"API Keys List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/keyList"}}}}},"x-appwrite":{"method":"listKeys","weight":162,"cookies":false,"type":"","demo":"projects\/list-keys.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}]},"post":{"summary":"Create key","operationId":"projectsCreateKey","tags":["projects"],"description":"","responses":{"201":{"description":"Key","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/key"}}}}},"x-appwrite":{"method":"createKey","weight":161,"cookies":false,"type":"","demo":"projects\/create-key.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Key name. Max length: 128 chars.","x-example":"[NAME]"},"scopes":{"type":"array","description":"Key scopes list. Maximum of 100 scopes are allowed.","x-example":null,"items":{"type":"string"}},"expire":{"type":"string","description":"Expiration time in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. Use null for unlimited expiration.","x-example":null}},"required":["name","scopes"]}}}}}},"\/projects\/{projectId}\/keys\/{keyId}":{"get":{"summary":"Get key","operationId":"projectsGetKey","tags":["projects"],"description":"","responses":{"200":{"description":"Key","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/key"}}}}},"x-appwrite":{"method":"getKey","weight":163,"cookies":false,"type":"","demo":"projects\/get-key.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"keyId","description":"Key unique ID.","required":true,"schema":{"type":"string","x-example":"[KEY_ID]"},"in":"path"}]},"put":{"summary":"Update key","operationId":"projectsUpdateKey","tags":["projects"],"description":"","responses":{"200":{"description":"Key","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/key"}}}}},"x-appwrite":{"method":"updateKey","weight":164,"cookies":false,"type":"","demo":"projects\/update-key.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"keyId","description":"Key unique ID.","required":true,"schema":{"type":"string","x-example":"[KEY_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Key name. Max length: 128 chars.","x-example":"[NAME]"},"scopes":{"type":"array","description":"Key scopes list. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"expire":{"type":"string","description":"Expiration time in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. Use null for unlimited expiration.","x-example":null}},"required":["name","scopes"]}}}}},"delete":{"summary":"Delete key","operationId":"projectsDeleteKey","tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteKey","weight":165,"cookies":false,"type":"","demo":"projects\/delete-key.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"keyId","description":"Key unique ID.","required":true,"schema":{"type":"string","x-example":"[KEY_ID]"},"in":"path"}]}},"\/projects\/{projectId}\/oauth2":{"patch":{"summary":"Update project OAuth2","operationId":"projectsUpdateOAuth2","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateOAuth2","weight":146,"cookies":false,"type":"","demo":"projects\/update-o-auth2.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"provider":{"type":"string","description":"Provider Name","x-example":"amazon","enum":["amazon","apple","auth0","authentik","autodesk","bitbucket","bitly","box","dailymotion","discord","disqus","dropbox","etsy","facebook","github","gitlab","google","linkedin","microsoft","notion","oidc","okta","paypal","paypalSandbox","podio","salesforce","slack","spotify","stripe","tradeshift","tradeshiftBox","twitch","wordpress","yahoo","yammer","yandex","zoho","zoom","mock"],"x-enum-name":"OAuthProvider","x-enum-keys":[]},"appId":{"type":"string","description":"Provider app ID. Max length: 256 chars.","x-example":"[APP_ID]"},"secret":{"type":"string","description":"Provider secret key. Max length: 512 chars.","x-example":"[SECRET]"},"enabled":{"type":"boolean","description":"Provider status. Set to 'false' to disable new session creation.","x-example":false}},"required":["provider"]}}}}}},"\/projects\/{projectId}\/platforms":{"get":{"summary":"List platforms","operationId":"projectsListPlatforms","tags":["projects"],"description":"","responses":{"200":{"description":"Platforms List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/platformList"}}}}},"x-appwrite":{"method":"listPlatforms","weight":167,"cookies":false,"type":"","demo":"projects\/list-platforms.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}]},"post":{"summary":"Create platform","operationId":"projectsCreatePlatform","tags":["projects"],"description":"","responses":{"201":{"description":"Platform","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/platform"}}}}},"x-appwrite":{"method":"createPlatform","weight":166,"cookies":false,"type":"","demo":"projects\/create-platform.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"type":{"type":"string","description":"Platform type.","x-example":"web","enum":["web","flutter-web","flutter-ios","flutter-android","flutter-linux","flutter-macos","flutter-windows","apple-ios","apple-macos","apple-watchos","apple-tvos","android","unity"],"x-enum-name":"PlatformType","x-enum-keys":[]},"name":{"type":"string","description":"Platform name. Max length: 128 chars.","x-example":"[NAME]"},"key":{"type":"string","description":"Package name for Android or bundle ID for iOS or macOS. Max length: 256 chars.","x-example":"[KEY]"},"store":{"type":"string","description":"App store or Google Play store ID. Max length: 256 chars.","x-example":"[STORE]"},"hostname":{"type":"string","description":"Platform client hostname. Max length: 256 chars.","x-example":null}},"required":["type","name"]}}}}}},"\/projects\/{projectId}\/platforms\/{platformId}":{"get":{"summary":"Get platform","operationId":"projectsGetPlatform","tags":["projects"],"description":"","responses":{"200":{"description":"Platform","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/platform"}}}}},"x-appwrite":{"method":"getPlatform","weight":168,"cookies":false,"type":"","demo":"projects\/get-platform.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"platformId","description":"Platform unique ID.","required":true,"schema":{"type":"string","x-example":"[PLATFORM_ID]"},"in":"path"}]},"put":{"summary":"Update platform","operationId":"projectsUpdatePlatform","tags":["projects"],"description":"","responses":{"200":{"description":"Platform","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/platform"}}}}},"x-appwrite":{"method":"updatePlatform","weight":169,"cookies":false,"type":"","demo":"projects\/update-platform.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"platformId","description":"Platform unique ID.","required":true,"schema":{"type":"string","x-example":"[PLATFORM_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Platform name. Max length: 128 chars.","x-example":"[NAME]"},"key":{"type":"string","description":"Package name for android or bundle ID for iOS. Max length: 256 chars.","x-example":"[KEY]"},"store":{"type":"string","description":"App store or Google Play store ID. Max length: 256 chars.","x-example":"[STORE]"},"hostname":{"type":"string","description":"Platform client URL. Max length: 256 chars.","x-example":null}},"required":["name"]}}}}},"delete":{"summary":"Delete platform","operationId":"projectsDeletePlatform","tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deletePlatform","weight":170,"cookies":false,"type":"","demo":"projects\/delete-platform.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"platformId","description":"Platform unique ID.","required":true,"schema":{"type":"string","x-example":"[PLATFORM_ID]"},"in":"path"}]}},"\/projects\/{projectId}\/service":{"patch":{"summary":"Update service status","operationId":"projectsUpdateServiceStatus","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateServiceStatus","weight":144,"cookies":false,"type":"","demo":"projects\/update-service-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"service":{"type":"string","description":"Service name.","x-example":"account","enum":["account","avatars","databases","locale","health","storage","teams","users","functions","graphql","messaging"],"x-enum-name":"APIService","x-enum-keys":[]},"status":{"type":"boolean","description":"Service status.","x-example":false}},"required":["service","status"]}}}}}},"\/projects\/{projectId}\/service\/all":{"patch":{"summary":"Update all service status","operationId":"projectsUpdateServiceStatusAll","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateServiceStatusAll","weight":145,"cookies":false,"type":"","demo":"projects\/update-service-status-all.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"status":{"type":"boolean","description":"Service status.","x-example":false}},"required":["status"]}}}}}},"\/projects\/{projectId}\/smtp":{"patch":{"summary":"Update SMTP","operationId":"projectsUpdateSmtp","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateSmtp","weight":171,"cookies":false,"type":"","demo":"projects\/update-smtp.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enable custom SMTP service","x-example":false},"senderName":{"type":"string","description":"Name of the email sender","x-example":"[SENDER_NAME]"},"senderEmail":{"type":"string","description":"Email of the sender","x-example":"email@example.com"},"replyTo":{"type":"string","description":"Reply to email","x-example":"email@example.com"},"host":{"type":"string","description":"SMTP server host name","x-example":null},"port":{"type":"integer","description":"SMTP server port","x-example":null},"username":{"type":"string","description":"SMTP server username","x-example":"[USERNAME]"},"password":{"type":"string","description":"SMTP server password","x-example":"[PASSWORD]"},"secure":{"type":"string","description":"Does SMTP server use secure connection","x-example":"tls","enum":["tls"],"x-enum-name":"SMTPSecure","x-enum-keys":[]}},"required":["enabled"]}}}}}},"\/projects\/{projectId}\/smtp\/tests":{"post":{"summary":"Create SMTP test","operationId":"projectsCreateSmtpTest","tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"createSmtpTest","weight":172,"cookies":false,"type":"","demo":"projects\/create-smtp-test.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"emails":{"type":"array","description":"Array of emails to send test email to. Maximum of 10 emails are allowed.","x-example":null,"items":{"type":"string"}},"senderName":{"type":"string","description":"Name of the email sender","x-example":"[SENDER_NAME]"},"senderEmail":{"type":"string","description":"Email of the sender","x-example":"email@example.com"},"replyTo":{"type":"string","description":"Reply to email","x-example":"email@example.com"},"host":{"type":"string","description":"SMTP server host name","x-example":null},"port":{"type":"integer","description":"SMTP server port","x-example":null},"username":{"type":"string","description":"SMTP server username","x-example":"[USERNAME]"},"password":{"type":"string","description":"SMTP server password","x-example":"[PASSWORD]"},"secure":{"type":"string","description":"Does SMTP server use secure connection","x-example":"tls","enum":["tls"],"x-enum-name":"SMTPSecure","x-enum-keys":[]}},"required":["emails","senderName","senderEmail","host"]}}}}}},"\/projects\/{projectId}\/team":{"patch":{"summary":"Update Project Team","operationId":"projectsUpdateTeam","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateTeam","weight":143,"cookies":false,"type":"","demo":"projects\/update-team.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"teamId":{"type":"string","description":"Team ID of the team to transfer project to.","x-example":"[TEAM_ID]"}},"required":["teamId"]}}}}}},"\/projects\/{projectId}\/templates\/email\/{type}\/{locale}":{"get":{"summary":"Get custom email template","operationId":"projectsGetEmailTemplate","tags":["projects"],"description":"","responses":{"200":{"description":"EmailTemplate","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/emailTemplate"}}}}},"x-appwrite":{"method":"getEmailTemplate","weight":174,"cookies":false,"type":"","demo":"projects\/get-email-template.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"type","description":"Template type","required":true,"schema":{"type":"string","x-example":"verification","enum":["verification","magicsession","recovery","invitation"],"x-enum-name":"EmailTemplateType","x-enum-keys":[]},"in":"path"},{"name":"locale","description":"Template locale","required":true,"schema":{"type":"string","x-example":"af","enum":["af","ar-ae","ar-bh","ar-dz","ar-eg","ar-iq","ar-jo","ar-kw","ar-lb","ar-ly","ar-ma","ar-om","ar-qa","ar-sa","ar-sy","ar-tn","ar-ye","as","az","be","bg","bh","bn","bs","ca","cs","cy","da","de","de-at","de-ch","de-li","de-lu","el","en","en-au","en-bz","en-ca","en-gb","en-ie","en-jm","en-nz","en-tt","en-us","en-za","eo","es","es-ar","es-bo","es-cl","es-co","es-cr","es-do","es-ec","es-gt","es-hn","es-mx","es-ni","es-pa","es-pe","es-pr","es-py","es-sv","es-uy","es-ve","et","eu","fa","fi","fo","fr","fr-be","fr-ca","fr-ch","fr-lu","ga","gd","he","hi","hr","hu","id","is","it","it-ch","ja","ji","ko","ku","lt","lv","mk","ml","ms","mt","nb","ne","nl","nl-be","nn","no","pa","pl","pt","pt-br","rm","ro","ro-md","ru","ru-md","sb","sk","sl","sq","sr","sv","sv-fi","th","tn","tr","ts","ua","ur","ve","vi","xh","zh-cn","zh-hk","zh-sg","zh-tw","zu"],"x-enum-name":"EmailTemplateLocale","x-enum-keys":[]},"in":"path"}]},"patch":{"summary":"Update custom email templates","operationId":"projectsUpdateEmailTemplate","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateEmailTemplate","weight":176,"cookies":false,"type":"","demo":"projects\/update-email-template.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"type","description":"Template type","required":true,"schema":{"type":"string","x-example":"verification","enum":["verification","magicsession","recovery","invitation"],"x-enum-name":"EmailTemplateType","x-enum-keys":[]},"in":"path"},{"name":"locale","description":"Template locale","required":true,"schema":{"type":"string","x-example":"af","enum":["af","ar-ae","ar-bh","ar-dz","ar-eg","ar-iq","ar-jo","ar-kw","ar-lb","ar-ly","ar-ma","ar-om","ar-qa","ar-sa","ar-sy","ar-tn","ar-ye","as","az","be","bg","bh","bn","bs","ca","cs","cy","da","de","de-at","de-ch","de-li","de-lu","el","en","en-au","en-bz","en-ca","en-gb","en-ie","en-jm","en-nz","en-tt","en-us","en-za","eo","es","es-ar","es-bo","es-cl","es-co","es-cr","es-do","es-ec","es-gt","es-hn","es-mx","es-ni","es-pa","es-pe","es-pr","es-py","es-sv","es-uy","es-ve","et","eu","fa","fi","fo","fr","fr-be","fr-ca","fr-ch","fr-lu","ga","gd","he","hi","hr","hu","id","is","it","it-ch","ja","ji","ko","ku","lt","lv","mk","ml","ms","mt","nb","ne","nl","nl-be","nn","no","pa","pl","pt","pt-br","rm","ro","ro-md","ru","ru-md","sb","sk","sl","sq","sr","sv","sv-fi","th","tn","tr","ts","ua","ur","ve","vi","xh","zh-cn","zh-hk","zh-sg","zh-tw","zu"],"x-enum-name":"EmailTemplateLocale","x-enum-keys":[]},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"subject":{"type":"string","description":"Email Subject","x-example":"[SUBJECT]"},"message":{"type":"string","description":"Template message","x-example":"[MESSAGE]"},"senderName":{"type":"string","description":"Name of the email sender","x-example":"[SENDER_NAME]"},"senderEmail":{"type":"string","description":"Email of the sender","x-example":"email@example.com"},"replyTo":{"type":"string","description":"Reply to email","x-example":"email@example.com"}},"required":["subject","message"]}}}}},"delete":{"summary":"Reset custom email template","operationId":"projectsDeleteEmailTemplate","tags":["projects"],"description":"","responses":{"200":{"description":"EmailTemplate","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/emailTemplate"}}}}},"x-appwrite":{"method":"deleteEmailTemplate","weight":178,"cookies":false,"type":"","demo":"projects\/delete-email-template.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"type","description":"Template type","required":true,"schema":{"type":"string","x-example":"verification","enum":["verification","magicsession","recovery","invitation"],"x-enum-name":"EmailTemplateType","x-enum-keys":[]},"in":"path"},{"name":"locale","description":"Template locale","required":true,"schema":{"type":"string","x-example":"af","enum":["af","ar-ae","ar-bh","ar-dz","ar-eg","ar-iq","ar-jo","ar-kw","ar-lb","ar-ly","ar-ma","ar-om","ar-qa","ar-sa","ar-sy","ar-tn","ar-ye","as","az","be","bg","bh","bn","bs","ca","cs","cy","da","de","de-at","de-ch","de-li","de-lu","el","en","en-au","en-bz","en-ca","en-gb","en-ie","en-jm","en-nz","en-tt","en-us","en-za","eo","es","es-ar","es-bo","es-cl","es-co","es-cr","es-do","es-ec","es-gt","es-hn","es-mx","es-ni","es-pa","es-pe","es-pr","es-py","es-sv","es-uy","es-ve","et","eu","fa","fi","fo","fr","fr-be","fr-ca","fr-ch","fr-lu","ga","gd","he","hi","hr","hu","id","is","it","it-ch","ja","ji","ko","ku","lt","lv","mk","ml","ms","mt","nb","ne","nl","nl-be","nn","no","pa","pl","pt","pt-br","rm","ro","ro-md","ru","ru-md","sb","sk","sl","sq","sr","sv","sv-fi","th","tn","tr","ts","ua","ur","ve","vi","xh","zh-cn","zh-hk","zh-sg","zh-tw","zu"],"x-enum-name":"EmailTemplateLocale","x-enum-keys":[]},"in":"path"}]}},"\/projects\/{projectId}\/templates\/sms\/{type}\/{locale}":{"get":{"summary":"Get custom SMS template","operationId":"projectsGetSmsTemplate","tags":["projects"],"description":"","responses":{"200":{"description":"SmsTemplate","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/smsTemplate"}}}}},"x-appwrite":{"method":"getSmsTemplate","weight":173,"cookies":false,"type":"","demo":"projects\/get-sms-template.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"type","description":"Template type","required":true,"schema":{"type":"string","x-example":"verification","enum":["verification","login","invitation"],"x-enum-name":"SMSTemplateType","x-enum-keys":[]},"in":"path"},{"name":"locale","description":"Template locale","required":true,"schema":{"type":"string","x-example":"af","enum":["af","ar-ae","ar-bh","ar-dz","ar-eg","ar-iq","ar-jo","ar-kw","ar-lb","ar-ly","ar-ma","ar-om","ar-qa","ar-sa","ar-sy","ar-tn","ar-ye","as","az","be","bg","bh","bn","bs","ca","cs","cy","da","de","de-at","de-ch","de-li","de-lu","el","en","en-au","en-bz","en-ca","en-gb","en-ie","en-jm","en-nz","en-tt","en-us","en-za","eo","es","es-ar","es-bo","es-cl","es-co","es-cr","es-do","es-ec","es-gt","es-hn","es-mx","es-ni","es-pa","es-pe","es-pr","es-py","es-sv","es-uy","es-ve","et","eu","fa","fi","fo","fr","fr-be","fr-ca","fr-ch","fr-lu","ga","gd","he","hi","hr","hu","id","is","it","it-ch","ja","ji","ko","ku","lt","lv","mk","ml","ms","mt","nb","ne","nl","nl-be","nn","no","pa","pl","pt","pt-br","rm","ro","ro-md","ru","ru-md","sb","sk","sl","sq","sr","sv","sv-fi","th","tn","tr","ts","ua","ur","ve","vi","xh","zh-cn","zh-hk","zh-sg","zh-tw","zu"],"x-enum-name":"SMSTemplateLocale","x-enum-keys":[]},"in":"path"}]},"patch":{"summary":"Update custom SMS template","operationId":"projectsUpdateSmsTemplate","tags":["projects"],"description":"","responses":{"200":{"description":"SmsTemplate","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/smsTemplate"}}}}},"x-appwrite":{"method":"updateSmsTemplate","weight":175,"cookies":false,"type":"","demo":"projects\/update-sms-template.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"type","description":"Template type","required":true,"schema":{"type":"string","x-example":"verification","enum":["verification","login","invitation"],"x-enum-name":"SMSTemplateType","x-enum-keys":[]},"in":"path"},{"name":"locale","description":"Template locale","required":true,"schema":{"type":"string","x-example":"af","enum":["af","ar-ae","ar-bh","ar-dz","ar-eg","ar-iq","ar-jo","ar-kw","ar-lb","ar-ly","ar-ma","ar-om","ar-qa","ar-sa","ar-sy","ar-tn","ar-ye","as","az","be","bg","bh","bn","bs","ca","cs","cy","da","de","de-at","de-ch","de-li","de-lu","el","en","en-au","en-bz","en-ca","en-gb","en-ie","en-jm","en-nz","en-tt","en-us","en-za","eo","es","es-ar","es-bo","es-cl","es-co","es-cr","es-do","es-ec","es-gt","es-hn","es-mx","es-ni","es-pa","es-pe","es-pr","es-py","es-sv","es-uy","es-ve","et","eu","fa","fi","fo","fr","fr-be","fr-ca","fr-ch","fr-lu","ga","gd","he","hi","hr","hu","id","is","it","it-ch","ja","ji","ko","ku","lt","lv","mk","ml","ms","mt","nb","ne","nl","nl-be","nn","no","pa","pl","pt","pt-br","rm","ro","ro-md","ru","ru-md","sb","sk","sl","sq","sr","sv","sv-fi","th","tn","tr","ts","ua","ur","ve","vi","xh","zh-cn","zh-hk","zh-sg","zh-tw","zu"],"x-enum-name":"SMSTemplateLocale","x-enum-keys":[]},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Template message","x-example":"[MESSAGE]"}},"required":["message"]}}}}},"delete":{"summary":"Reset custom SMS template","operationId":"projectsDeleteSmsTemplate","tags":["projects"],"description":"","responses":{"200":{"description":"SmsTemplate","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/smsTemplate"}}}}},"x-appwrite":{"method":"deleteSmsTemplate","weight":177,"cookies":false,"type":"","demo":"projects\/delete-sms-template.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"type","description":"Template type","required":true,"schema":{"type":"string","x-example":"verification","enum":["verification","login","invitation"],"x-enum-name":"SMSTemplateType","x-enum-keys":[]},"in":"path"},{"name":"locale","description":"Template locale","required":true,"schema":{"type":"string","x-example":"af","enum":["af","ar-ae","ar-bh","ar-dz","ar-eg","ar-iq","ar-jo","ar-kw","ar-lb","ar-ly","ar-ma","ar-om","ar-qa","ar-sa","ar-sy","ar-tn","ar-ye","as","az","be","bg","bh","bn","bs","ca","cs","cy","da","de","de-at","de-ch","de-li","de-lu","el","en","en-au","en-bz","en-ca","en-gb","en-ie","en-jm","en-nz","en-tt","en-us","en-za","eo","es","es-ar","es-bo","es-cl","es-co","es-cr","es-do","es-ec","es-gt","es-hn","es-mx","es-ni","es-pa","es-pe","es-pr","es-py","es-sv","es-uy","es-ve","et","eu","fa","fi","fo","fr","fr-be","fr-ca","fr-ch","fr-lu","ga","gd","he","hi","hr","hu","id","is","it","it-ch","ja","ji","ko","ku","lt","lv","mk","ml","ms","mt","nb","ne","nl","nl-be","nn","no","pa","pl","pt","pt-br","rm","ro","ro-md","ru","ru-md","sb","sk","sl","sq","sr","sv","sv-fi","th","tn","tr","ts","ua","ur","ve","vi","xh","zh-cn","zh-hk","zh-sg","zh-tw","zu"],"x-enum-name":"SMSTemplateLocale","x-enum-keys":[]},"in":"path"}]}},"\/projects\/{projectId}\/webhooks":{"get":{"summary":"List webhooks","operationId":"projectsListWebhooks","tags":["projects"],"description":"","responses":{"200":{"description":"Webhooks List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/webhookList"}}}}},"x-appwrite":{"method":"listWebhooks","weight":156,"cookies":false,"type":"","demo":"projects\/list-webhooks.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}]},"post":{"summary":"Create webhook","operationId":"projectsCreateWebhook","tags":["projects"],"description":"","responses":{"201":{"description":"Webhook","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/webhook"}}}}},"x-appwrite":{"method":"createWebhook","weight":155,"cookies":false,"type":"","demo":"projects\/create-webhook.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Webhook name. Max length: 128 chars.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Enable or disable a webhook.","x-example":false},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"Webhook URL.","x-example":null},"security":{"type":"boolean","description":"Certificate verification, false for disabled or true for enabled.","x-example":false},"httpUser":{"type":"string","description":"Webhook HTTP user. Max length: 256 chars.","x-example":"[HTTP_USER]"},"httpPass":{"type":"string","description":"Webhook HTTP password. Max length: 256 chars.","x-example":"[HTTP_PASS]"}},"required":["name","events","url","security"]}}}}}},"\/projects\/{projectId}\/webhooks\/{webhookId}":{"get":{"summary":"Get webhook","operationId":"projectsGetWebhook","tags":["projects"],"description":"","responses":{"200":{"description":"Webhook","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/webhook"}}}}},"x-appwrite":{"method":"getWebhook","weight":157,"cookies":false,"type":"","demo":"projects\/get-webhook.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"webhookId","description":"Webhook unique ID.","required":true,"schema":{"type":"string","x-example":"[WEBHOOK_ID]"},"in":"path"}]},"put":{"summary":"Update webhook","operationId":"projectsUpdateWebhook","tags":["projects"],"description":"","responses":{"200":{"description":"Webhook","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/webhook"}}}}},"x-appwrite":{"method":"updateWebhook","weight":158,"cookies":false,"type":"","demo":"projects\/update-webhook.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"webhookId","description":"Webhook unique ID.","required":true,"schema":{"type":"string","x-example":"[WEBHOOK_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Webhook name. Max length: 128 chars.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Enable or disable a webhook.","x-example":false},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"Webhook URL.","x-example":null},"security":{"type":"boolean","description":"Certificate verification, false for disabled or true for enabled.","x-example":false},"httpUser":{"type":"string","description":"Webhook HTTP user. Max length: 256 chars.","x-example":"[HTTP_USER]"},"httpPass":{"type":"string","description":"Webhook HTTP password. Max length: 256 chars.","x-example":"[HTTP_PASS]"}},"required":["name","events","url","security"]}}}}},"delete":{"summary":"Delete webhook","operationId":"projectsDeleteWebhook","tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteWebhook","weight":160,"cookies":false,"type":"","demo":"projects\/delete-webhook.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"webhookId","description":"Webhook unique ID.","required":true,"schema":{"type":"string","x-example":"[WEBHOOK_ID]"},"in":"path"}]}},"\/projects\/{projectId}\/webhooks\/{webhookId}\/signature":{"patch":{"summary":"Update webhook signature key","operationId":"projectsUpdateWebhookSignature","tags":["projects"],"description":"","responses":{"200":{"description":"Webhook","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/webhook"}}}}},"x-appwrite":{"method":"updateWebhookSignature","weight":159,"cookies":false,"type":"","demo":"projects\/update-webhook-signature.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"webhookId","description":"Webhook unique ID.","required":true,"schema":{"type":"string","x-example":"[WEBHOOK_ID]"},"in":"path"}]}},"\/proxy\/rules":{"get":{"summary":"List Rules","operationId":"proxyListRules","tags":["proxy"],"description":"Get a list of all the proxy rules. You can use the query params to filter your results.","responses":{"200":{"description":"Rule List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/proxyRuleList"}}}}},"x-appwrite":{"method":"listRules","weight":289,"cookies":false,"type":"","demo":"proxy\/list-rules.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/proxy\/list-rules.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"rules.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: domain, resourceType, resourceId, url","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Rule","operationId":"proxyCreateRule","tags":["proxy"],"description":"Create a new proxy rule.","responses":{"201":{"description":"Rule","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/proxyRule"}}}}},"x-appwrite":{"method":"createRule","weight":288,"cookies":false,"type":"","demo":"proxy\/create-rule.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/proxy\/create-rule.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"rules.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"domain":{"type":"string","description":"Domain name.","x-example":null},"resourceType":{"type":"string","description":"Action definition for the rule. Possible values are \"api\", \"function\"","x-example":"api","enum":["api","function"],"x-enum-name":null,"x-enum-keys":[]},"resourceId":{"type":"string","description":"ID of resource for the action type. If resourceType is \"api\", leave empty. If resourceType is \"function\", provide ID of the function.","x-example":"[RESOURCE_ID]"}},"required":["domain","resourceType"]}}}}}},"\/proxy\/rules\/{ruleId}":{"get":{"summary":"Get Rule","operationId":"proxyGetRule","tags":["proxy"],"description":"Get a proxy rule by its unique ID.","responses":{"200":{"description":"Rule","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/proxyRule"}}}}},"x-appwrite":{"method":"getRule","weight":290,"cookies":false,"type":"","demo":"proxy\/get-rule.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/proxy\/get-rule.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"rules.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"ruleId","description":"Rule ID.","required":true,"schema":{"type":"string","x-example":"[RULE_ID]"},"in":"path"}]},"delete":{"summary":"Delete Rule","operationId":"proxyDeleteRule","tags":["proxy"],"description":"Delete a proxy rule by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteRule","weight":291,"cookies":false,"type":"","demo":"proxy\/delete-rule.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/proxy\/delete-rule.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"rules.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"ruleId","description":"Rule ID.","required":true,"schema":{"type":"string","x-example":"[RULE_ID]"},"in":"path"}]}},"\/proxy\/rules\/{ruleId}\/verification":{"patch":{"summary":"Update Rule Verification Status","operationId":"proxyUpdateRuleVerification","tags":["proxy"],"description":"","responses":{"200":{"description":"Rule","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/proxyRule"}}}}},"x-appwrite":{"method":"updateRuleVerification","weight":292,"cookies":false,"type":"","demo":"proxy\/update-rule-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"rules.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"ruleId","description":"Rule ID.","required":true,"schema":{"type":"string","x-example":"[RULE_ID]"},"in":"path"}]}},"\/storage\/buckets":{"get":{"summary":"List buckets","operationId":"storageListBuckets","tags":["storage"],"description":"Get a list of all the storage buckets. You can use the query params to filter your results.","responses":{"200":{"description":"Buckets List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/bucketList"}}}}},"x-appwrite":{"method":"listBuckets","weight":186,"cookies":false,"type":"","demo":"storage\/list-buckets.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/list-buckets.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: enabled, name, fileSecurity, maximumFileSize, encryption, antivirus","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create bucket","operationId":"storageCreateBucket","tags":["storage"],"description":"Create a new storage bucket.","responses":{"201":{"description":"Bucket","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/bucket"}}}}},"x-appwrite":{"method":"createBucket","weight":185,"cookies":false,"type":"","demo":"storage\/create-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"bucketId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, no user is granted with any permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":false},"enabled":{"type":"boolean","description":"Is bucket enabled? When set to 'disabled', users cannot access the files in this bucket but Server SDKs with and API key can still access the bucket. No files are lost when this is toggled.","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB.","x-example":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","x-example":"none","enum":["none","gzip","zstd"],"x-enum-name":null,"x-enum-keys":[]},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","x-example":false}},"required":["bucketId","name"]}}}}}},"\/storage\/buckets\/{bucketId}":{"get":{"summary":"Get bucket","operationId":"storageGetBucket","tags":["storage"],"description":"Get a storage bucket by its unique ID. This endpoint response returns a JSON object with the storage bucket metadata.","responses":{"200":{"description":"Bucket","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/bucket"}}}}},"x-appwrite":{"method":"getBucket","weight":187,"cookies":false,"type":"","demo":"storage\/get-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"bucketId","description":"Bucket unique ID.","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"}]},"put":{"summary":"Update bucket","operationId":"storageUpdateBucket","tags":["storage"],"description":"Update a storage bucket by its unique ID.","responses":{"200":{"description":"Bucket","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/bucket"}}}}},"x-appwrite":{"method":"updateBucket","weight":188,"cookies":false,"type":"","demo":"storage\/update-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"bucketId","description":"Bucket unique ID.","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Bucket name","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":false},"enabled":{"type":"boolean","description":"Is bucket enabled? When set to 'disabled', users cannot access the files in this bucket but Server SDKs with and API key can still access the bucket. No files are lost when this is toggled.","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB.","x-example":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","x-example":"none","enum":["none","gzip","zstd"],"x-enum-name":null,"x-enum-keys":[]},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","x-example":false}},"required":["name"]}}}}},"delete":{"summary":"Delete bucket","operationId":"storageDeleteBucket","tags":["storage"],"description":"Delete a storage bucket by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteBucket","weight":189,"cookies":false,"type":"","demo":"storage\/delete-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"bucketId","description":"Bucket unique ID.","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files":{"get":{"summary":"List files","operationId":"storageListFiles","tags":["storage"],"description":"Get a list of all the user files. You can use the query params to filter your results.","responses":{"200":{"description":"Files List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/fileList"}}}}},"x-appwrite":{"method":"listFiles","weight":191,"cookies":false,"type":"","demo":"storage\/list-files.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/list-files.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create file","operationId":"storageCreateFile","tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"createFile","weight":190,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"}],"requestBody":{"content":{"multipart\/form-data":{"schema":{"type":"object","properties":{"fileId":{"type":"string","description":"File ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[FILE_ID]","x-upload-id":true},"file":{"type":"string","description":"Binary file. Appwrite SDKs provide helpers to handle file input. [Learn about file input](https:\/\/appwrite.io\/docs\/storage#file-input).","x-example":null},"permissions":{"type":"array","description":"An array of permission strings. By default, only the current user is granted all permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["fileId","file"]}}}}}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get file","operationId":"storageGetFile","tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"getFile","weight":192,"cookies":false,"type":"","demo":"storage\/get-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File ID.","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"}]},"put":{"summary":"Update file","operationId":"storageUpdateFile","tags":["storage"],"description":"Update a file by its unique ID. Only users with write permissions have access to update this resource.","responses":{"200":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"updateFile","weight":196,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File unique ID.","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Name of the file","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission string. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":197,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File ID.","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/download":{"get":{"summary":"Get file for download","operationId":"storageGetFileDownload","tags":["storage"],"description":"Get a file content by its unique ID. The endpoint response return with a 'Content-Disposition: attachment' header that tells the browser to start downloading the file to user downloads directory.","responses":{"200":{"description":"File"}},"x-appwrite":{"method":"getFileDownload","weight":194,"cookies":false,"type":"location","demo":"storage\/get-file-download.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-download.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File ID.","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/preview":{"get":{"summary":"Get file preview","operationId":"storageGetFilePreview","tags":["storage"],"description":"Get a file preview image. Currently, this method supports preview for image files (jpg, png, and gif), other supported formats, like pdf, docs, slides, and spreadsheets, will return the file icon image. You can also pass query string arguments for cutting and resizing your preview image. Preview is supported only for image files smaller than 10MB.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFilePreview","weight":193,"cookies":false,"type":"location","demo":"storage\/get-file-preview.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-preview.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File ID","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"},{"name":"width","description":"Resize preview image width, Pass an integer between 0 to 4000.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 4000.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"gravity","description":"Image crop gravity. Can be one of center,top-left,top,top-right,left,right,bottom-left,bottom,bottom-right","required":false,"schema":{"type":"string","x-example":"center","enum":["center","top-left","top","top-right","left","right","bottom-left","bottom","bottom-right"],"x-enum-name":"ImageGravity","x-enum-keys":[],"default":"center"},"in":"query"},{"name":"quality","description":"Preview image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"borderWidth","description":"Preview image border in pixels. Pass an integer between 0 to 100. Defaults to 0.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"borderColor","description":"Preview image border color. Use a valid HEX color, no # is needed for prefix.","required":false,"schema":{"type":"string","default":""},"in":"query"},{"name":"borderRadius","description":"Preview image border radius in pixels. Pass an integer between 0 to 4000.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"opacity","description":"Preview image opacity. Only works with images having an alpha channel (like png). Pass a number between 0 to 1.","required":false,"schema":{"type":"number","format":"float","x-example":0,"default":1},"in":"query"},{"name":"rotation","description":"Preview image rotation in degrees. Pass an integer between -360 and 360.","required":false,"schema":{"type":"integer","format":"int32","x-example":-360,"default":0},"in":"query"},{"name":"background","description":"Preview image background color. Only works with transparent images (png). Use a valid HEX color, no # is needed for prefix.","required":false,"schema":{"type":"string","default":""},"in":"query"},{"name":"output","description":"Output format type (jpeg, jpg, png, gif and webp).","required":false,"schema":{"type":"string","x-example":"jpg","enum":["jpg","jpeg","gif","png","webp"],"x-enum-name":"ImageFormat","x-enum-keys":[],"default":""},"in":"query"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/view":{"get":{"summary":"Get file for view","operationId":"storageGetFileView","tags":["storage"],"description":"Get a file content by its unique ID. This endpoint is similar to the download method but returns with no 'Content-Disposition: attachment' header.","responses":{"200":{"description":"File"}},"x-appwrite":{"method":"getFileView","weight":195,"cookies":false,"type":"location","demo":"storage\/get-file-view.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-view.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File ID.","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"}]}},"\/storage\/usage":{"get":{"summary":"Get usage stats for storage","operationId":"storageGetUsage","tags":["storage"],"description":"","responses":{"200":{"description":"StorageUsage","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageStorage"}}}}},"x-appwrite":{"method":"getUsage","weight":198,"cookies":false,"type":"","demo":"storage\/get-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"schema":{"type":"string","x-example":"24h","enum":["24h","30d","90d"],"x-enum-name":"StorageUsageRange","x-enum-keys":["Twenty Four Hours","Thirty Days","Ninety Days"],"default":"30d"},"in":"query"}]}},"\/storage\/{bucketId}\/usage":{"get":{"summary":"Get usage stats for storage bucket","operationId":"storageGetBucketUsage","tags":["storage"],"description":"","responses":{"200":{"description":"UsageBuckets","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageBuckets"}}}}},"x-appwrite":{"method":"getBucketUsage","weight":199,"cookies":false,"type":"","demo":"storage\/get-bucket-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"bucketId","description":"Bucket ID.","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"range","description":"Date range.","required":false,"schema":{"type":"string","x-example":"24h","enum":["24h","30d","90d"],"x-enum-name":"StorageUsageRange","x-enum-keys":["Twenty Four Hours","Thirty Days","Ninety Days"],"default":"30d"},"in":"query"}]}},"\/teams":{"get":{"summary":"List teams","operationId":"teamsList","tags":["teams"],"description":"Get a list of all the teams in which the current user is a member. You can use the parameters to filter your results.","responses":{"200":{"description":"Teams List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/teamList"}}}}},"x-appwrite":{"method":"list","weight":201,"cookies":false,"type":"","demo":"teams\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-teams.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total, billingPlan","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create team","operationId":"teamsCreate","tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"create","weight":200,"cookies":false,"type":"","demo":"teams\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/create-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"teamId":{"type":"string","description":"Team ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[TEAM_ID]"},"name":{"type":"string","description":"Team name. Max length: 128 chars.","x-example":"[NAME]"},"roles":{"type":"array","description":"Array of strings. Use this param to set the roles in the team for the user who created it. The default role is **owner**. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}}}}},"\/teams\/{teamId}":{"get":{"summary":"Get team","operationId":"teamsGet","tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"get","weight":202,"cookies":false,"type":"","demo":"teams\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams","offline-key":"{teamId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}]},"put":{"summary":"Update name","operationId":"teamsUpdateName","tags":["teams"],"description":"Update the team's name by its unique ID.","responses":{"200":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"updateName","weight":204,"cookies":false,"type":"","demo":"teams\/update-name.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-name.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams","offline-key":"{teamId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"New team name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["name"]}}}}},"delete":{"summary":"Delete team","operationId":"teamsDelete","tags":["teams"],"description":"Delete a team using its ID. Only team members with the owner role can delete the team.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":206,"cookies":false,"type":"","demo":"teams\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/delete-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}]}},"\/teams\/{teamId}\/logs":{"get":{"summary":"List team logs","operationId":"teamsListLogs","tags":["teams"],"description":"Get the team activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listLogs","weight":213,"cookies":false,"type":"","demo":"teams\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/teams\/{teamId}\/memberships":{"get":{"summary":"List team memberships","operationId":"teamsListMemberships","tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"listMemberships","weight":208,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/memberships","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create team membership","operationId":"teamsCreateMembership","tags":["teams"],"description":"Invite a new member to join your team. Provide an ID for existing users, or invite unregistered users using an email or phone number. If initiated from a Client SDK, Appwrite will send an email or sms with a link to join the team to the invited user, and an account will be created for them if one doesn't exist. If initiated from a Server SDK, the new member will be added automatically to the team.\n\nYou only need to provide one of a user ID, email, or phone number. Appwrite will prioritize accepting the user ID > email > phone number if you provide more than one of these parameters.\n\nUse the `url` parameter to redirect the user from the invitation email to your app. After the user is redirected, use the [Update Team Membership Status](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/teams#updateMembershipStatus) endpoint to allow the user to accept the invitation to the team. \n\nPlease note that to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) Appwrite will accept the only redirect URLs under the domains you have added as a platform on the Appwrite Console.\n","responses":{"201":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"createMembership","weight":207,"cookies":false,"type":"","demo":"teams\/create-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/create-team-membership.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"email":{"type":"string","description":"Email of the new team member.","x-example":"email@example.com"},"userId":{"type":"string","description":"ID of the user to be added to a team.","x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"roles":{"type":"array","description":"Array of strings. Use this param to set the user roles in the team. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"},"name":{"type":"string","description":"Name of the new team member. Max length: 128 chars.","x-example":"[NAME]"}},"required":["roles"]}}}}}},"\/teams\/{teamId}\/memberships\/{membershipId}":{"get":{"summary":"Get team membership","operationId":"teamsGetMembership","tags":["teams"],"description":"Get a team member by the membership unique id. All team members have read access for this resource.","responses":{"200":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"getMembership","weight":209,"cookies":false,"type":"","demo":"teams\/get-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-member.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/memberships","offline-key":"{membershipId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"schema":{"type":"string","x-example":"[MEMBERSHIP_ID]"},"in":"path"}]},"patch":{"summary":"Update membership","operationId":"teamsUpdateMembership","tags":["teams"],"description":"Modify the roles of a team member. Only team members with the owner role have access to this endpoint. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions).\n","responses":{"200":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"updateMembership","weight":210,"cookies":false,"type":"","demo":"teams\/update-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"schema":{"type":"string","x-example":"[MEMBERSHIP_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"roles":{"type":"array","description":"An array of strings. Use this param to set the user's roles in the team. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["roles"]}}}}},"delete":{"summary":"Delete team membership","operationId":"teamsDeleteMembership","tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":212,"cookies":false,"type":"","demo":"teams\/delete-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/delete-team-membership.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"schema":{"type":"string","x-example":"[MEMBERSHIP_ID]"},"in":"path"}]}},"\/teams\/{teamId}\/memberships\/{membershipId}\/status":{"patch":{"summary":"Update team membership status","operationId":"teamsUpdateMembershipStatus","tags":["teams"],"description":"Use this endpoint to allow a user to accept an invitation to join a team after being redirected back to your app from the invitation email received by the user.\n\nIf the request is successful, a session for the user is automatically created.\n","responses":{"200":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"updateMembershipStatus","weight":211,"cookies":false,"type":"","demo":"teams\/update-membership-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"public","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"schema":{"type":"string","x-example":"[MEMBERSHIP_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Secret key.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/teams\/{teamId}\/prefs":{"get":{"summary":"Get team preferences","operationId":"teamsGetPrefs","tags":["teams"],"description":"Get the team's shared preferences by its unique ID. If a preference doesn't need to be shared by all team members, prefer storing them in [user preferences](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#getPrefs).","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"getPrefs","weight":203,"cookies":false,"type":"","demo":"teams\/get-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/prefs","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}]},"put":{"summary":"Update preferences","operationId":"teamsUpdatePrefs","tags":["teams"],"description":"Update the team's preferences by its unique ID. The object you pass is stored as is and replaces any previous value. The maximum allowed prefs size is 64kB and throws an error if exceeded.","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"updatePrefs","weight":205,"cookies":false,"type":"","demo":"teams\/update-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/prefs","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"prefs":{"type":"object","description":"Prefs key-value JSON object.","x-example":"{}"}},"required":["prefs"]}}}}}},"\/users":{"get":{"summary":"List users","operationId":"usersList","tags":["users"],"description":"Get a list of all the project's users. You can use the query params to filter your results.","responses":{"200":{"description":"Users List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/userList"}}}}},"x-appwrite":{"method":"list","weight":223,"cookies":false,"type":"","demo":"users\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-users.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, email, phone, status, passwordUpdate, registration, emailVerification, phoneVerification","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create user","operationId":"usersCreate","tags":["users"],"description":"Create a new user.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"create","weight":214,"cookies":false,"type":"","demo":"users\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"password":{"type":"string","description":"Plain text user password. Must be at least 8 chars.","x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId"]}}}}}},"\/users\/argon2":{"post":{"summary":"Create user with Argon2 password","operationId":"usersCreateArgon2User","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Argon2](https:\/\/en.wikipedia.org\/wiki\/Argon2) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createArgon2User","weight":217,"cookies":false,"type":"","demo":"users\/create-argon2user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-argon2-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Argon2.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/bcrypt":{"post":{"summary":"Create user with bcrypt password","operationId":"usersCreateBcryptUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Bcrypt](https:\/\/en.wikipedia.org\/wiki\/Bcrypt) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createBcryptUser","weight":215,"cookies":false,"type":"","demo":"users\/create-bcrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-bcrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Bcrypt.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/identities":{"get":{"summary":"List Identities","operationId":"usersListIdentities","tags":["users"],"description":"Get identities for all users.","responses":{"200":{"description":"Identities List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/identityList"}}}}},"x-appwrite":{"method":"listIdentities","weight":231,"cookies":false,"type":"","demo":"users\/list-identities.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-identities.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, provider, providerUid, providerEmail, providerAccessTokenExpiry","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]}},"\/users\/identities\/{identityId}":{"delete":{"summary":"Delete identity","operationId":"usersDeleteIdentity","tags":["users"],"description":"Delete an identity by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIdentity","weight":251,"cookies":false,"type":"","demo":"users\/delete-identity.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-identity.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"identityId","description":"Identity ID.","required":true,"schema":{"type":"string","x-example":"[IDENTITY_ID]"},"in":"path"}]}},"\/users\/md5":{"post":{"summary":"Create user with MD5 password","operationId":"usersCreateMD5User","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [MD5](https:\/\/en.wikipedia.org\/wiki\/MD5) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createMD5User","weight":216,"cookies":false,"type":"","demo":"users\/create-m-d5user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-md5-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using MD5.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/phpass":{"post":{"summary":"Create user with PHPass password","operationId":"usersCreatePHPassUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [PHPass](https:\/\/www.openwall.com\/phpass\/) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createPHPassUser","weight":219,"cookies":false,"type":"","demo":"users\/create-p-h-pass-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-phpass-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or pass the string `ID.unique()`to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using PHPass.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/scrypt":{"post":{"summary":"Create user with Scrypt password","operationId":"usersCreateScryptUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt](https:\/\/github.com\/Tarsnap\/scrypt) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createScryptUser","weight":220,"cookies":false,"type":"","demo":"users\/create-scrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt.","x-example":"password"},"passwordSalt":{"type":"string","description":"Optional salt used to hash password.","x-example":"[PASSWORD_SALT]"},"passwordCpu":{"type":"integer","description":"Optional CPU cost used to hash password.","x-example":null},"passwordMemory":{"type":"integer","description":"Optional memory cost used to hash password.","x-example":null},"passwordParallel":{"type":"integer","description":"Optional parallelization cost used to hash password.","x-example":null},"passwordLength":{"type":"integer","description":"Optional hash length used to hash password.","x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordCpu","passwordMemory","passwordParallel","passwordLength"]}}}}}},"\/users\/scrypt-modified":{"post":{"summary":"Create user with Scrypt modified password","operationId":"usersCreateScryptModifiedUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt Modified](https:\/\/gist.github.com\/Meldiron\/eecf84a0225eccb5a378d45bb27462cc) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createScryptModifiedUser","weight":221,"cookies":false,"type":"","demo":"users\/create-scrypt-modified-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-modified-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt Modified.","x-example":"password"},"passwordSalt":{"type":"string","description":"Salt used to hash password.","x-example":"[PASSWORD_SALT]"},"passwordSaltSeparator":{"type":"string","description":"Salt separator used to hash password.","x-example":"[PASSWORD_SALT_SEPARATOR]"},"passwordSignerKey":{"type":"string","description":"Signer key used to hash password.","x-example":"[PASSWORD_SIGNER_KEY]"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordSaltSeparator","passwordSignerKey"]}}}}}},"\/users\/sha":{"post":{"summary":"Create user with SHA password","operationId":"usersCreateSHAUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [SHA](https:\/\/en.wikipedia.org\/wiki\/Secure_Hash_Algorithm) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createSHAUser","weight":218,"cookies":false,"type":"","demo":"users\/create-s-h-a-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-sha-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using SHA.","x-example":"password"},"passwordVersion":{"type":"string","description":"Optional SHA version used to hash password. Allowed values are: 'sha1', 'sha224', 'sha256', 'sha384', 'sha512\/224', 'sha512\/256', 'sha512', 'sha3-224', 'sha3-256', 'sha3-384', 'sha3-512'","x-example":"sha1","enum":["sha1","sha224","sha256","sha384","sha512\/224","sha512\/256","sha512","sha3-224","sha3-256","sha3-384","sha3-512"],"x-enum-name":null,"x-enum-keys":[]},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/usage":{"get":{"summary":"Get usage stats for the users API","operationId":"usersGetUsage","tags":["users"],"description":"","responses":{"200":{"description":"UsageUsers","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageUsers"}}}}},"x-appwrite":{"method":"getUsage","weight":252,"cookies":false,"type":"","demo":"users\/get-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"schema":{"type":"string","x-example":"24h","enum":["24h","30d","90d"],"x-enum-name":"UserUsageRange","x-enum-keys":["Twenty Four Hours","Thirty Days","Ninety Days"],"default":"30d"},"in":"query"}]}},"\/users\/{userId}":{"get":{"summary":"Get user","operationId":"usersGet","tags":["users"],"description":"Get a user by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"get","weight":224,"cookies":false,"type":"","demo":"users\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]},"delete":{"summary":"Delete user","operationId":"usersDelete","tags":["users"],"description":"Delete a user by its unique ID, thereby releasing it's ID. Since ID is released and can be reused, all user-related resources like documents or storage files should be deleted before user deletion. If you want to keep ID reserved, use the [updateStatus](https:\/\/appwrite.io\/docs\/server\/users#usersUpdateStatus) endpoint instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":249,"cookies":false,"type":"","demo":"users\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]}},"\/users\/{userId}\/email":{"patch":{"summary":"Update email","operationId":"usersUpdateEmail","tags":["users"],"description":"Update the user email by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateEmail","weight":237,"cookies":false,"type":"","demo":"users\/update-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","x-example":"email@example.com"}},"required":["email"]}}}}}},"\/users\/{userId}\/labels":{"put":{"summary":"Update user labels","operationId":"usersUpdateLabels","tags":["users"],"description":"Update the user labels by its unique ID. \n\nLabels can be used to grant access to resources. While teams are a way for user's to share access to a resource, labels can be defined by the developer to grant access without an invitation. See the [Permissions docs](https:\/\/appwrite.io\/docs\/permissions) for more info.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateLabels","weight":233,"cookies":false,"type":"","demo":"users\/update-labels.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-labels.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"labels":{"type":"array","description":"Array of user labels. Replaces the previous labels. Maximum of 1000 labels are allowed, each up to 36 alphanumeric characters long.","x-example":null,"items":{"type":"string"}}},"required":["labels"]}}}}}},"\/users\/{userId}\/logs":{"get":{"summary":"List user logs","operationId":"usersListLogs","tags":["users"],"description":"Get the user activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listLogs","weight":229,"cookies":false,"type":"","demo":"users\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/users\/{userId}\/memberships":{"get":{"summary":"List user memberships","operationId":"usersListMemberships","tags":["users"],"description":"Get the user membership list by its unique ID.","responses":{"200":{"description":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"listMemberships","weight":228,"cookies":false,"type":"","demo":"users\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-memberships.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]}},"\/users\/{userId}\/mfa":{"patch":{"summary":"Update MFA","operationId":"usersUpdateMfa","tags":["users"],"description":"","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateMfa","weight":242,"cookies":false,"type":"","demo":"users\/update-mfa.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-mfa.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"mfa":{"type":"boolean","description":"Enable or disable MFA.","x-example":false}},"required":["mfa"]}}}}}},"\/users\/{userId}\/mfa\/{provider}":{"delete":{"summary":"Delete Authenticator","operationId":"usersDeleteAuthenticator","tags":["users"],"description":"","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"deleteAuthenticator","weight":244,"cookies":false,"type":"","demo":"users\/delete-authenticator.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-mfa.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"provider","description":"Provider.","required":true,"schema":{"type":"string","x-example":"totp","enum":["totp"],"x-enum-name":"AuthenticatorProvider","x-enum-keys":[]},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"otp":{"type":"string","description":"Valid verification token.","x-example":"[OTP]"}},"required":["otp"]}}}}}},"\/users\/{userId}\/name":{"patch":{"summary":"Update name","operationId":"usersUpdateName","tags":["users"],"description":"Update the user name by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateName","weight":235,"cookies":false,"type":"","demo":"users\/update-name.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-name.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["name"]}}}}}},"\/users\/{userId}\/password":{"patch":{"summary":"Update password","operationId":"usersUpdatePassword","tags":["users"],"description":"Update the user password by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePassword","weight":236,"cookies":false,"type":"","demo":"users\/update-password.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-password.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"password":{"type":"string","description":"New user password. Must be at least 8 chars.","x-example":null}},"required":["password"]}}}}}},"\/users\/{userId}\/phone":{"patch":{"summary":"Update phone","operationId":"usersUpdatePhone","tags":["users"],"description":"Update the user phone by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePhone","weight":238,"cookies":false,"type":"","demo":"users\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"number":{"type":"string","description":"User phone number.","x-example":"+12065550100"}},"required":["number"]}}}}}},"\/users\/{userId}\/prefs":{"get":{"summary":"Get user preferences","operationId":"usersGetPrefs","tags":["users"],"description":"Get the user preferences by its unique ID.","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"getPrefs","weight":225,"cookies":false,"type":"","demo":"users\/get-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]},"patch":{"summary":"Update user preferences","operationId":"usersUpdatePrefs","tags":["users"],"description":"Update the user preferences by its unique ID. The object you pass is stored as is, and replaces any previous value. The maximum allowed prefs size is 64kB and throws error if exceeded.","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"updatePrefs","weight":240,"cookies":false,"type":"","demo":"users\/update-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"prefs":{"type":"object","description":"Prefs key-value JSON object.","x-example":"{}"}},"required":["prefs"]}}}}}},"\/users\/{userId}\/providers":{"get":{"summary":"List Providers","operationId":"usersListProviders","tags":["users"],"description":"","responses":{"200":{"description":"MFAProviders","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/mfaProviders"}}}}},"x-appwrite":{"method":"listProviders","weight":243,"cookies":false,"type":"","demo":"users\/list-providers.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-providers.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]}},"\/users\/{userId}\/sessions":{"get":{"summary":"List user sessions","operationId":"usersListSessions","tags":["users"],"description":"Get the user sessions list by its unique ID.","responses":{"200":{"description":"Sessions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/sessionList"}}}}},"x-appwrite":{"method":"listSessions","weight":227,"cookies":false,"type":"","demo":"users\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]},"post":{"summary":"Create session","operationId":"usersCreateSession","tags":["users"],"description":"Creates a session for a user. Returns an immediately usable session object.\n\nIf you want to generate a token for a custom authentication flow, use the [POST \/users\/{userId}\/tokens](https:\/\/appwrite.io\/docs\/server\/users#createToken) endpoint.","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"createSession","weight":245,"cookies":false,"type":"","demo":"users\/create-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-session.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]},"delete":{"summary":"Delete user sessions","operationId":"usersDeleteSessions","tags":["users"],"description":"Delete all user's sessions by using the user's unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":248,"cookies":false,"type":"","demo":"users\/delete-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]}},"\/users\/{userId}\/sessions\/{sessionId}":{"delete":{"summary":"Delete user session","operationId":"usersDeleteSession","tags":["users"],"description":"Delete a user sessions by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSession","weight":247,"cookies":false,"type":"","demo":"users\/delete-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-user-session.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"sessionId","description":"Session ID.","required":true,"schema":{"type":"string","x-example":"[SESSION_ID]"},"in":"path"}]}},"\/users\/{userId}\/status":{"patch":{"summary":"Update user status","operationId":"usersUpdateStatus","tags":["users"],"description":"Update the user status by its unique ID. Use this endpoint as an alternative to deleting a user if you want to keep user's ID reserved.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateStatus","weight":232,"cookies":false,"type":"","demo":"users\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"status":{"type":"boolean","description":"User Status. To activate the user pass `true` and to block the user pass `false`.","x-example":false}},"required":["status"]}}}}}},"\/users\/{userId}\/targets":{"get":{"summary":"List User Targets","operationId":"usersListTargets","tags":["users"],"description":"","responses":{"200":{"description":"Target list","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/targetList"}}}}},"x-appwrite":{"method":"listTargets","weight":230,"cookies":false,"type":"","demo":"users\/list-targets.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-targets.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.read","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, email, phone, status, passwordUpdate, registration, emailVerification, phoneVerification","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"post":{"summary":"Create User Target","operationId":"usersCreateTarget","tags":["users"],"description":"","responses":{"201":{"description":"Target","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/target"}}}}},"x-appwrite":{"method":"createTarget","weight":222,"cookies":false,"type":"","demo":"users\/create-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-target.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"targetId":{"type":"string","description":"Target ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[TARGET_ID]"},"providerType":{"type":"string","description":"The target provider type. Can be one of the following: `email`, `sms` or `push`.","x-example":"email","enum":["email","sms","push"],"x-enum-name":"MessagingProviderType","x-enum-keys":[]},"identifier":{"type":"string","description":"The target identifier (token, email, phone etc.)","x-example":"[IDENTIFIER]"},"providerId":{"type":"string","description":"Provider ID. Message will be sent to this target from the specified provider ID. If no provider ID is set the first setup provider will be used.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Target name. Max length: 128 chars. For example: My Awesome App Galaxy S23.","x-example":"[NAME]"}},"required":["targetId","providerType","identifier"]}}}}}},"\/users\/{userId}\/targets\/{targetId}":{"get":{"summary":"Get User Target","operationId":"usersGetTarget","tags":["users"],"description":"","responses":{"200":{"description":"Target","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/target"}}}}},"x-appwrite":{"method":"getTarget","weight":226,"cookies":false,"type":"","demo":"users\/get-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-target.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.read","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"targetId","description":"Target ID.","required":true,"schema":{"type":"string","x-example":"[TARGET_ID]"},"in":"path"}]},"patch":{"summary":"Update User target","operationId":"usersUpdateTarget","tags":["users"],"description":"","responses":{"200":{"description":"Target","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/target"}}}}},"x-appwrite":{"method":"updateTarget","weight":241,"cookies":false,"type":"","demo":"users\/update-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-target.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"targetId","description":"Target ID.","required":true,"schema":{"type":"string","x-example":"[TARGET_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"identifier":{"type":"string","description":"The target identifier (token, email, phone etc.)","x-example":"[IDENTIFIER]"},"providerId":{"type":"string","description":"Provider ID. Message will be sent to this target from the specified provider ID. If no provider ID is set the first setup provider will be used.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Target name. Max length: 128 chars. For example: My Awesome App Galaxy S23.","x-example":"[NAME]"}}}}}}},"delete":{"summary":"Delete user target","operationId":"usersDeleteTarget","tags":["users"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteTarget","weight":250,"cookies":false,"type":"","demo":"users\/delete-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-target.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"targetId","description":"Target ID.","required":true,"schema":{"type":"string","x-example":"[TARGET_ID]"},"in":"path"}]}},"\/users\/{userId}\/tokens":{"post":{"summary":"Create token","operationId":"usersCreateToken","tags":["users"],"description":"Returns a token with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [PUT \/account\/sessions\/custom](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateCustomSession) endpoint to complete the login process.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createToken","weight":246,"cookies":false,"type":"","demo":"users\/create-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-token.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"length":{"type":"integer","description":"Token length in characters. The default length is 6 characters","x-example":4},"expire":{"type":"integer","description":"Token expiration period in seconds. The default expiration is 15 minutes.","x-example":60}}}}}}}},"\/users\/{userId}\/verification":{"patch":{"summary":"Update email verification","operationId":"usersUpdateEmailVerification","tags":["users"],"description":"Update the user email verification status by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateEmailVerification","weight":239,"cookies":false,"type":"","demo":"users\/update-email-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-email-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"emailVerification":{"type":"boolean","description":"User email verification status.","x-example":false}},"required":["emailVerification"]}}}}}},"\/users\/{userId}\/verification\/phone":{"patch":{"summary":"Update phone verification","operationId":"usersUpdatePhoneVerification","tags":["users"],"description":"Update the user phone verification status by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePhoneVerification","weight":234,"cookies":false,"type":"","demo":"users\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"phoneVerification":{"type":"boolean","description":"User phone verification status.","x-example":false}},"required":["phoneVerification"]}}}}}},"\/vcs\/github\/installations\/{installationId}\/providerRepositories":{"get":{"summary":"List Repositories","operationId":"vcsListRepositories","tags":["vcs"],"description":"","responses":{"200":{"description":"Provider Repositories List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/providerRepositoryList"}}}}},"x-appwrite":{"method":"listRepositories","weight":256,"cookies":false,"type":"","demo":"vcs\/list-repositories.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"schema":{"type":"string","x-example":"[INSTALLATION_ID]"},"in":"path"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create repository","operationId":"vcsCreateRepository","tags":["vcs"],"description":"","responses":{"200":{"description":"ProviderRepository","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/providerRepository"}}}}},"x-appwrite":{"method":"createRepository","weight":257,"cookies":false,"type":"","demo":"vcs\/create-repository.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"schema":{"type":"string","x-example":"[INSTALLATION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Repository name (slug)","x-example":"[NAME]"},"private":{"type":"boolean","description":"Mark repository public or private","x-example":false}},"required":["name","private"]}}}}}},"\/vcs\/github\/installations\/{installationId}\/providerRepositories\/{providerRepositoryId}":{"get":{"summary":"Get repository","operationId":"vcsGetRepository","tags":["vcs"],"description":"","responses":{"200":{"description":"ProviderRepository","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/providerRepository"}}}}},"x-appwrite":{"method":"getRepository","weight":258,"cookies":false,"type":"","demo":"vcs\/get-repository.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"schema":{"type":"string","x-example":"[INSTALLATION_ID]"},"in":"path"},{"name":"providerRepositoryId","description":"Repository Id","required":true,"schema":{"type":"string","x-example":"[PROVIDER_REPOSITORY_ID]"},"in":"path"}]}},"\/vcs\/github\/installations\/{installationId}\/providerRepositories\/{providerRepositoryId}\/branches":{"get":{"summary":"List Repository Branches","operationId":"vcsListRepositoryBranches","tags":["vcs"],"description":"","responses":{"200":{"description":"Branches List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/branchList"}}}}},"x-appwrite":{"method":"listRepositoryBranches","weight":259,"cookies":false,"type":"","demo":"vcs\/list-repository-branches.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"schema":{"type":"string","x-example":"[INSTALLATION_ID]"},"in":"path"},{"name":"providerRepositoryId","description":"Repository Id","required":true,"schema":{"type":"string","x-example":"[PROVIDER_REPOSITORY_ID]"},"in":"path"}]}},"\/vcs\/github\/installations\/{installationId}\/providerRepositories\/{providerRepositoryId}\/detection":{"post":{"summary":"Detect runtime settings from source code","operationId":"vcsCreateRepositoryDetection","tags":["vcs"],"description":"","responses":{"200":{"description":"Detection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/detection"}}}}},"x-appwrite":{"method":"createRepositoryDetection","weight":255,"cookies":false,"type":"","demo":"vcs\/create-repository-detection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"schema":{"type":"string","x-example":"[INSTALLATION_ID]"},"in":"path"},{"name":"providerRepositoryId","description":"Repository Id","required":true,"schema":{"type":"string","x-example":"[PROVIDER_REPOSITORY_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerRootDirectory":{"type":"string","description":"Path to Root Directory","x-example":"[PROVIDER_ROOT_DIRECTORY]"}}}}}}}},"\/vcs\/github\/installations\/{installationId}\/repositories\/{repositoryId}":{"patch":{"summary":"Authorize external deployment","operationId":"vcsUpdateExternalDeployments","tags":["vcs"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"updateExternalDeployments","weight":264,"cookies":false,"type":"","demo":"vcs\/update-external-deployments.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"schema":{"type":"string","x-example":"[INSTALLATION_ID]"},"in":"path"},{"name":"repositoryId","description":"VCS Repository Id","required":true,"schema":{"type":"string","x-example":"[REPOSITORY_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerPullRequestId":{"type":"string","description":"GitHub Pull Request Id","x-example":"[PROVIDER_PULL_REQUEST_ID]"}},"required":["providerPullRequestId"]}}}}}},"\/vcs\/installations":{"get":{"summary":"List installations","operationId":"vcsListInstallations","tags":["vcs"],"description":"","responses":{"200":{"description":"Installations List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/installationList"}}}}},"x-appwrite":{"method":"listInstallations","weight":261,"cookies":false,"type":"","demo":"vcs\/list-installations.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/vcs\/list-installations.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: provider, organization","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]}},"\/vcs\/installations\/{installationId}":{"get":{"summary":"Get installation","operationId":"vcsGetInstallation","tags":["vcs"],"description":"","responses":{"200":{"description":"Installation","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/installation"}}}}},"x-appwrite":{"method":"getInstallation","weight":262,"cookies":false,"type":"","demo":"vcs\/get-installation.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/vcs\/get-installation.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"schema":{"type":"string","x-example":"[INSTALLATION_ID]"},"in":"path"}]},"delete":{"summary":"Delete Installation","operationId":"vcsDeleteInstallation","tags":["vcs"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteInstallation","weight":263,"cookies":false,"type":"","demo":"vcs\/delete-installation.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/vcs\/delete-installation.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"schema":{"type":"string","x-example":"[INSTALLATION_ID]"},"in":"path"}]}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"project","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]},{"name":"proxy","description":"The Proxy Service allows you to configure actions for your domains beyond DNS configuration.","x-globalAttributes":[]},{"name":"graphql","description":"The GraphQL API allows you to query and mutate your Appwrite server using GraphQL.","x-globalAttributes":[]},{"name":"console","description":"The Console service allows you to interact with console relevant informations.","x-globalAttributes":[]},{"name":"migrations","description":"The Migrations service allows you to migrate third-party data to your Appwrite project.","x-globalAttributes":[]},{"name":"messaging","description":"The Messaging service allows you to send messages to any provider type (SMTP, push notification, SMS, etc.).","x-globalAttributes":[]}],"components":{"schemas":{"any":{"description":"Any","type":"object","additionalProperties":true},"error":{"description":"Error","type":"object","properties":{"message":{"type":"string","description":"Error message.","x-example":"Not found"},"code":{"type":"string","description":"Error code.","x-example":"404"},"type":{"type":"string","description":"Error type. You can learn more about all the error types at https:\/\/appwrite.io\/docs\/error-codes#errorTypes","x-example":"not_found"},"version":{"type":"string","description":"Server version number.","x-example":"1.0"}},"required":["message","code","type","version"]},"documentList":{"description":"Documents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of documents documents that matched your query.","x-example":5,"format":"int32"},"documents":{"type":"array","description":"List of documents.","items":{"$ref":"#\/components\/schemas\/document"},"x-example":""}},"required":["total","documents"]},"collectionList":{"description":"Collections List","type":"object","properties":{"total":{"type":"integer","description":"Total number of collections documents that matched your query.","x-example":5,"format":"int32"},"collections":{"type":"array","description":"List of collections.","items":{"$ref":"#\/components\/schemas\/collection"},"x-example":""}},"required":["total","collections"]},"databaseList":{"description":"Databases List","type":"object","properties":{"total":{"type":"integer","description":"Total number of databases documents that matched your query.","x-example":5,"format":"int32"},"databases":{"type":"array","description":"List of databases.","items":{"$ref":"#\/components\/schemas\/database"},"x-example":""}},"required":["total","databases"]},"indexList":{"description":"Indexes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of indexes documents that matched your query.","x-example":5,"format":"int32"},"indexes":{"type":"array","description":"List of indexes.","items":{"$ref":"#\/components\/schemas\/index"},"x-example":""}},"required":["total","indexes"]},"userList":{"description":"Users List","type":"object","properties":{"total":{"type":"integer","description":"Total number of users documents that matched your query.","x-example":5,"format":"int32"},"users":{"type":"array","description":"List of users.","items":{"$ref":"#\/components\/schemas\/user"},"x-example":""}},"required":["total","users"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of sessions documents that matched your query.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"$ref":"#\/components\/schemas\/session"},"x-example":""}},"required":["total","sessions"]},"identityList":{"description":"Identities List","type":"object","properties":{"total":{"type":"integer","description":"Total number of identities documents that matched your query.","x-example":5,"format":"int32"},"identities":{"type":"array","description":"List of identities.","items":{"$ref":"#\/components\/schemas\/identity"},"x-example":""}},"required":["total","identities"]},"logList":{"description":"Logs List","type":"object","properties":{"total":{"type":"integer","description":"Total number of logs documents that matched your query.","x-example":5,"format":"int32"},"logs":{"type":"array","description":"List of logs.","items":{"$ref":"#\/components\/schemas\/log"},"x-example":""}},"required":["total","logs"]},"fileList":{"description":"Files List","type":"object","properties":{"total":{"type":"integer","description":"Total number of files documents that matched your query.","x-example":5,"format":"int32"},"files":{"type":"array","description":"List of files.","items":{"$ref":"#\/components\/schemas\/file"},"x-example":""}},"required":["total","files"]},"bucketList":{"description":"Buckets List","type":"object","properties":{"total":{"type":"integer","description":"Total number of buckets documents that matched your query.","x-example":5,"format":"int32"},"buckets":{"type":"array","description":"List of buckets.","items":{"$ref":"#\/components\/schemas\/bucket"},"x-example":""}},"required":["total","buckets"]},"teamList":{"description":"Teams List","type":"object","properties":{"total":{"type":"integer","description":"Total number of teams documents that matched your query.","x-example":5,"format":"int32"},"teams":{"type":"array","description":"List of teams.","items":{"$ref":"#\/components\/schemas\/team"},"x-example":""}},"required":["total","teams"]},"membershipList":{"description":"Memberships List","type":"object","properties":{"total":{"type":"integer","description":"Total number of memberships documents that matched your query.","x-example":5,"format":"int32"},"memberships":{"type":"array","description":"List of memberships.","items":{"$ref":"#\/components\/schemas\/membership"},"x-example":""}},"required":["total","memberships"]},"functionList":{"description":"Functions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of functions documents that matched your query.","x-example":5,"format":"int32"},"functions":{"type":"array","description":"List of functions.","items":{"$ref":"#\/components\/schemas\/function"},"x-example":""}},"required":["total","functions"]},"installationList":{"description":"Installations List","type":"object","properties":{"total":{"type":"integer","description":"Total number of installations documents that matched your query.","x-example":5,"format":"int32"},"installations":{"type":"array","description":"List of installations.","items":{"$ref":"#\/components\/schemas\/installation"},"x-example":""}},"required":["total","installations"]},"providerRepositoryList":{"description":"Provider Repositories List","type":"object","properties":{"total":{"type":"integer","description":"Total number of providerRepositories documents that matched your query.","x-example":5,"format":"int32"},"providerRepositories":{"type":"array","description":"List of providerRepositories.","items":{"$ref":"#\/components\/schemas\/providerRepository"},"x-example":""}},"required":["total","providerRepositories"]},"branchList":{"description":"Branches List","type":"object","properties":{"total":{"type":"integer","description":"Total number of branches documents that matched your query.","x-example":5,"format":"int32"},"branches":{"type":"array","description":"List of branches.","items":{"$ref":"#\/components\/schemas\/branch"},"x-example":""}},"required":["total","branches"]},"runtimeList":{"description":"Runtimes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of runtimes documents that matched your query.","x-example":5,"format":"int32"},"runtimes":{"type":"array","description":"List of runtimes.","items":{"$ref":"#\/components\/schemas\/runtime"},"x-example":""}},"required":["total","runtimes"]},"deploymentList":{"description":"Deployments List","type":"object","properties":{"total":{"type":"integer","description":"Total number of deployments documents that matched your query.","x-example":5,"format":"int32"},"deployments":{"type":"array","description":"List of deployments.","items":{"$ref":"#\/components\/schemas\/deployment"},"x-example":""}},"required":["total","deployments"]},"executionList":{"description":"Executions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of executions documents that matched your query.","x-example":5,"format":"int32"},"executions":{"type":"array","description":"List of executions.","items":{"$ref":"#\/components\/schemas\/execution"},"x-example":""}},"required":["total","executions"]},"projectList":{"description":"Projects List","type":"object","properties":{"total":{"type":"integer","description":"Total number of projects documents that matched your query.","x-example":5,"format":"int32"},"projects":{"type":"array","description":"List of projects.","items":{"$ref":"#\/components\/schemas\/project"},"x-example":""}},"required":["total","projects"]},"webhookList":{"description":"Webhooks List","type":"object","properties":{"total":{"type":"integer","description":"Total number of webhooks documents that matched your query.","x-example":5,"format":"int32"},"webhooks":{"type":"array","description":"List of webhooks.","items":{"$ref":"#\/components\/schemas\/webhook"},"x-example":""}},"required":["total","webhooks"]},"keyList":{"description":"API Keys List","type":"object","properties":{"total":{"type":"integer","description":"Total number of keys documents that matched your query.","x-example":5,"format":"int32"},"keys":{"type":"array","description":"List of keys.","items":{"$ref":"#\/components\/schemas\/key"},"x-example":""}},"required":["total","keys"]},"platformList":{"description":"Platforms List","type":"object","properties":{"total":{"type":"integer","description":"Total number of platforms documents that matched your query.","x-example":5,"format":"int32"},"platforms":{"type":"array","description":"List of platforms.","items":{"$ref":"#\/components\/schemas\/platform"},"x-example":""}},"required":["total","platforms"]},"countryList":{"description":"Countries List","type":"object","properties":{"total":{"type":"integer","description":"Total number of countries documents that matched your query.","x-example":5,"format":"int32"},"countries":{"type":"array","description":"List of countries.","items":{"$ref":"#\/components\/schemas\/country"},"x-example":""}},"required":["total","countries"]},"continentList":{"description":"Continents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of continents documents that matched your query.","x-example":5,"format":"int32"},"continents":{"type":"array","description":"List of continents.","items":{"$ref":"#\/components\/schemas\/continent"},"x-example":""}},"required":["total","continents"]},"languageList":{"description":"Languages List","type":"object","properties":{"total":{"type":"integer","description":"Total number of languages documents that matched your query.","x-example":5,"format":"int32"},"languages":{"type":"array","description":"List of languages.","items":{"$ref":"#\/components\/schemas\/language"},"x-example":""}},"required":["total","languages"]},"currencyList":{"description":"Currencies List","type":"object","properties":{"total":{"type":"integer","description":"Total number of currencies documents that matched your query.","x-example":5,"format":"int32"},"currencies":{"type":"array","description":"List of currencies.","items":{"$ref":"#\/components\/schemas\/currency"},"x-example":""}},"required":["total","currencies"]},"phoneList":{"description":"Phones List","type":"object","properties":{"total":{"type":"integer","description":"Total number of phones documents that matched your query.","x-example":5,"format":"int32"},"phones":{"type":"array","description":"List of phones.","items":{"$ref":"#\/components\/schemas\/phone"},"x-example":""}},"required":["total","phones"]},"variableList":{"description":"Variables List","type":"object","properties":{"total":{"type":"integer","description":"Total number of variables documents that matched your query.","x-example":5,"format":"int32"},"variables":{"type":"array","description":"List of variables.","items":{"$ref":"#\/components\/schemas\/variable"},"x-example":""}},"required":["total","variables"]},"proxyRuleList":{"description":"Rule List","type":"object","properties":{"total":{"type":"integer","description":"Total number of rules documents that matched your query.","x-example":5,"format":"int32"},"rules":{"type":"array","description":"List of rules.","items":{"$ref":"#\/components\/schemas\/proxyRule"},"x-example":""}},"required":["total","rules"]},"localeCodeList":{"description":"Locale codes list","type":"object","properties":{"total":{"type":"integer","description":"Total number of localeCodes documents that matched your query.","x-example":5,"format":"int32"},"localeCodes":{"type":"array","description":"List of localeCodes.","items":{"$ref":"#\/components\/schemas\/localeCode"},"x-example":""}},"required":["total","localeCodes"]},"providerList":{"description":"Provider list","type":"object","properties":{"total":{"type":"integer","description":"Total number of providers documents that matched your query.","x-example":5,"format":"int32"},"providers":{"type":"array","description":"List of providers.","items":{"$ref":"#\/components\/schemas\/provider"},"x-example":""}},"required":["total","providers"]},"messageList":{"description":"Message list","type":"object","properties":{"total":{"type":"integer","description":"Total number of messages documents that matched your query.","x-example":5,"format":"int32"},"messages":{"type":"array","description":"List of messages.","items":{"$ref":"#\/components\/schemas\/message"},"x-example":""}},"required":["total","messages"]},"topicList":{"description":"Topic list","type":"object","properties":{"total":{"type":"integer","description":"Total number of topics documents that matched your query.","x-example":5,"format":"int32"},"topics":{"type":"array","description":"List of topics.","items":{"$ref":"#\/components\/schemas\/topic"},"x-example":""}},"required":["total","topics"]},"subscriberList":{"description":"Subscriber list","type":"object","properties":{"total":{"type":"integer","description":"Total number of subscribers documents that matched your query.","x-example":5,"format":"int32"},"subscribers":{"type":"array","description":"List of subscribers.","items":{"$ref":"#\/components\/schemas\/subscriber"},"x-example":""}},"required":["total","subscribers"]},"targetList":{"description":"Target list","type":"object","properties":{"total":{"type":"integer","description":"Total number of targets documents that matched your query.","x-example":5,"format":"int32"},"targets":{"type":"array","description":"List of targets.","items":{"$ref":"#\/components\/schemas\/target"},"x-example":""}},"required":["total","targets"]},"migrationList":{"description":"Migrations List","type":"object","properties":{"total":{"type":"integer","description":"Total number of migrations documents that matched your query.","x-example":5,"format":"int32"},"migrations":{"type":"array","description":"List of migrations.","items":{"$ref":"#\/components\/schemas\/migration"},"x-example":""}},"required":["total","migrations"]},"firebaseProjectList":{"description":"Migrations Firebase Projects List","type":"object","properties":{"total":{"type":"integer","description":"Total number of projects documents that matched your query.","x-example":5,"format":"int32"},"projects":{"type":"array","description":"List of projects.","items":{"$ref":"#\/components\/schemas\/firebaseProject"},"x-example":""}},"required":["total","projects"]},"database":{"description":"Database","type":"object","properties":{"$id":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Database name.","x-example":"My Database"},"$createdAt":{"type":"string","description":"Database creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Database update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"enabled":{"type":"boolean","description":"If database is enabled. Can be 'enabled' or 'disabled'. When disabled, the database is inaccessible to users, but remains accessible to Server SDKs using API keys.","x-example":false}},"required":["$id","name","$createdAt","$updatedAt","enabled"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Collection creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Collection update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Collection permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled. Can be 'enabled' or 'disabled'. When disabled, the collection is inaccessible to users, but remains accessible to Server SDKs using API keys.","x-example":false},"documentSecurity":{"type":"boolean","description":"Whether document-level permissions are enabled. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":true},"attributes":{"type":"array","description":"Collection attributes.","items":{"anyOf":[{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeRelationship"},{"$ref":"#\/components\/schemas\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"$ref":"#\/components\/schemas\/index"},"x-example":{}}},"required":["$id","$createdAt","$updatedAt","$permissions","databaseId","name","enabled","documentSecurity","attributes","indexes"]},"attributeList":{"description":"Attributes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of attributes in the given collection.","x-example":5,"format":"int32"},"attributes":{"type":"array","description":"List of attributes.","items":{"anyOf":[{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeRelationship"},{"$ref":"#\/components\/schemas\/attributeString"}]},"x-example":""}},"required":["total","attributes"]},"attributeString":{"description":"AttributeString","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"fullName"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"size":{"type":"integer","description":"Attribute size.","x-example":128,"format":"int32"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"default","nullable":true}},"required":["key","type","status","error","required","size"]},"attributeInteger":{"description":"AttributeInteger","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"count"},"type":{"type":"string","description":"Attribute type.","x-example":"integer"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"min":{"type":"integer","description":"Minimum value to enforce for new documents.","x-example":1,"format":"int32","nullable":true},"max":{"type":"integer","description":"Maximum value to enforce for new documents.","x-example":10,"format":"int32","nullable":true},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":10,"format":"int32","nullable":true}},"required":["key","type","status","error","required"]},"attributeFloat":{"description":"AttributeFloat","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"percentageCompleted"},"type":{"type":"string","description":"Attribute type.","x-example":"double"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"min":{"type":"number","description":"Minimum value to enforce for new documents.","x-example":1.5,"format":"double","nullable":true},"max":{"type":"number","description":"Maximum value to enforce for new documents.","x-example":10.5,"format":"double","nullable":true},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":2.5,"format":"double","nullable":true}},"required":["key","type","status","error","required"]},"attributeBoolean":{"description":"AttributeBoolean","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"isEnabled"},"type":{"type":"string","description":"Attribute type.","x-example":"boolean"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":false,"nullable":true}},"required":["key","type","status","error","required"]},"attributeEmail":{"description":"AttributeEmail","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"userEmail"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"format":{"type":"string","description":"String format.","x-example":"email"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"default@example.com","nullable":true}},"required":["key","type","status","error","required","format"]},"attributeEnum":{"description":"AttributeEnum","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"status"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"elements":{"type":"array","description":"Array of elements in enumerated type.","items":{"type":"string"},"x-example":"element"},"format":{"type":"string","description":"String format.","x-example":"enum"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"element","nullable":true}},"required":["key","type","status","error","required","elements","format"]},"attributeIp":{"description":"AttributeIP","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"ipAddress"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"format":{"type":"string","description":"String format.","x-example":"ip"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"192.0.2.0","nullable":true}},"required":["key","type","status","error","required","format"]},"attributeUrl":{"description":"AttributeURL","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"githubUrl"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"format":{"type":"string","description":"String format.","x-example":"url"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"http:\/\/example.com","nullable":true}},"required":["key","type","status","error","required","format"]},"attributeDatetime":{"description":"AttributeDatetime","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"birthDay"},"type":{"type":"string","description":"Attribute type.","x-example":"datetime"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"format":{"type":"string","description":"ISO 8601 format.","x-example":"datetime"},"default":{"type":"string","description":"Default value for attribute when not provided. Only null is optional","x-example":"2020-10-15T06:38:00.000+00:00","nullable":true}},"required":["key","type","status","error","required","format"]},"attributeRelationship":{"description":"AttributeRelationship","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"fullName"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"relatedCollection":{"type":"string","description":"The ID of the related collection.","x-example":"collection"},"relationType":{"type":"string","description":"The type of the relationship.","x-example":"oneToOne|oneToMany|manyToOne|manyToMany"},"twoWay":{"type":"boolean","description":"Is the relationship two-way?","x-example":false},"twoWayKey":{"type":"string","description":"The key of the two-way relationship.","x-example":"string"},"onDelete":{"type":"string","description":"How deleting the parent document will propagate to child documents.","x-example":"restrict|cascade|setNull"},"side":{"type":"string","description":"Whether this is the parent or child side of the relationship","x-example":"parent|child"}},"required":["key","type","status","error","required","relatedCollection","relationType","twoWay","twoWayKey","onDelete","side"]},"index":{"description":"Index","type":"object","properties":{"key":{"type":"string","description":"Index Key.","x-example":"index1"},"type":{"type":"string","description":"Index type.","x-example":"primary"},"status":{"type":"string","description":"Index status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an index.","x-example":"string"},"attributes":{"type":"array","description":"Index attributes.","items":{"type":"string"},"x-example":[]},"orders":{"type":"array","description":"Index orders.","items":{"type":"string"},"x-example":[],"nullable":true}},"required":["key","type","status","error","attributes"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"user":{"description":"User","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"password":{"type":"string","description":"Hashed user password.","x-example":"$argon2id$v=19$m=2048,t=4,p=3$aUZjLnliVWRINmFNTWMudg$5S+x+7uA31xFnrHFT47yFwcJeaP0w92L\/4LdgrVRXxE","nullable":true},"hash":{"type":"string","description":"Password hashing algorithm.","x-example":"argon2","nullable":true},"hashOptions":{"type":"object","description":"Password hashing algorithm configuration.","x-example":{},"items":{"oneOf":[{"$ref":"#\/components\/schemas\/algoArgon2"},{"$ref":"#\/components\/schemas\/algoScrypt"},{"$ref":"#\/components\/schemas\/algoScryptModified"},{"$ref":"#\/components\/schemas\/algoBcrypt"},{"$ref":"#\/components\/schemas\/algoPhpass"},{"$ref":"#\/components\/schemas\/algoSha"},{"$ref":"#\/components\/schemas\/algoMd5"}]},"nullable":true},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"labels":{"type":"array","description":"Labels for the user.","items":{"type":"string"},"x-example":["vip"]},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"mfa":{"type":"boolean","description":"Multi factor authentication status.","x-example":true},"totp":{"type":"boolean","description":"TOTP status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"$ref":"#\/components\/schemas\/preferences"}},"targets":{"type":"array","description":"A user-owned message receiver. A single user may have multiple e.g. emails, phones, and a browser. Each target is registered with a single provider.","items":{"$ref":"#\/components\/schemas\/target"},"x-example":[]},"accessedAt":{"type":"string","description":"Most recent access date in ISO 8601 format. This attribute is only updated again after 24 hours.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","$updatedAt","name","registration","status","labels","passwordUpdate","email","phone","emailVerification","phoneVerification","mfa","totp","prefs","targets","accessedAt"]},"algoMd5":{"description":"AlgoMD5","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"md5"}},"required":["type"]},"algoSha":{"description":"AlgoSHA","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"sha"}},"required":["type"]},"algoPhpass":{"description":"AlgoPHPass","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"phpass"}},"required":["type"]},"algoBcrypt":{"description":"AlgoBcrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"bcrypt"}},"required":["type"]},"algoScrypt":{"description":"AlgoScrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scrypt"},"costCpu":{"type":"integer","description":"CPU complexity of computed hash.","x-example":8,"format":"int32"},"costMemory":{"type":"integer","description":"Memory complexity of computed hash.","x-example":14,"format":"int32"},"costParallel":{"type":"integer","description":"Parallelization of computed hash.","x-example":1,"format":"int32"},"length":{"type":"integer","description":"Length used to compute hash.","x-example":64,"format":"int32"}},"required":["type","costCpu","costMemory","costParallel","length"]},"algoScryptModified":{"description":"AlgoScryptModified","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scryptMod"},"salt":{"type":"string","description":"Salt used to compute hash.","x-example":"UxLMreBr6tYyjQ=="},"saltSeparator":{"type":"string","description":"Separator used to compute hash.","x-example":"Bw=="},"signerKey":{"type":"string","description":"Key used to compute hash.","x-example":"XyEKE9RcTDeLEsL\/RjwPDBv\/RqDl8fb3gpYEOQaPihbxf1ZAtSOHCjuAAa7Q3oHpCYhXSN9tizHgVOwn6krflQ=="}},"required":["type","salt","saltSeparator","signerKey"]},"algoArgon2":{"description":"AlgoArgon2","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"argon2"},"memoryCost":{"type":"integer","description":"Memory used to compute hash.","x-example":65536,"format":"int32"},"timeCost":{"type":"integer","description":"Amount of time consumed to compute hash","x-example":4,"format":"int32"},"threads":{"type":"integer","description":"Number of threads used to compute hash.","x-example":3,"format":"int32"}},"required":["type","memoryCost","timeCost","threads"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true},"factors":{"type":"array","description":"Returns a list of active session factors.","items":{"type":"string"},"x-example":["email"]},"secret":{"type":"string","description":"Secret used to authenticate the user. Only included if the request was made with an API key","x-example":"5e5bb8c16897e"}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current","factors","secret"]},"identity":{"description":"Identity","type":"object","properties":{"$id":{"type":"string","description":"Identity ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Identity creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Identity update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"provider":{"type":"string","description":"Identity Provider.","x-example":"email"},"providerUid":{"type":"string","description":"ID of the User in the Identity Provider.","x-example":"5e5bb8c16897e"},"providerEmail":{"type":"string","description":"Email of the User in the Identity Provider.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Identity Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Identity Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"}},"required":["$id","$createdAt","$updatedAt","userId","provider","providerUid","providerEmail","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"phrase":{"type":"string","description":"Security phrase of a token. Empty if security phrase was not requested when creating a token. It includes randomly generated phrase which is also sent in the external resource such as email.","x-example":"Golden Fox"}},"required":["$id","$createdAt","userId","secret","expire","phrase"]},"jwt":{"description":"JWT","type":"object","properties":{"jwt":{"type":"string","description":"JWT encoded string.","x-example":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c"}},"required":["jwt"]},"locale":{"description":"Locale","type":"object","properties":{"ip":{"type":"string","description":"User IP address.","x-example":"127.0.0.1"},"countryCode":{"type":"string","description":"Country code in [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) two-character format","x-example":"US"},"country":{"type":"string","description":"Country name. This field support localization.","x-example":"United States"},"continentCode":{"type":"string","description":"Continent code. A two character continent code \"AF\" for Africa, \"AN\" for Antarctica, \"AS\" for Asia, \"EU\" for Europe, \"NA\" for North America, \"OC\" for Oceania, and \"SA\" for South America.","x-example":"NA"},"continent":{"type":"string","description":"Continent name. This field support localization.","x-example":"North America"},"eu":{"type":"boolean","description":"True if country is part of the European Union.","x-example":false},"currency":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format","x-example":"USD"}},"required":["ip","countryCode","country","continentCode","continent","eu","currency"]},"localeCode":{"description":"LocaleCode","type":"object","properties":{"code":{"type":"string","description":"Locale codes in [ISO 639-1](https:\/\/en.wikipedia.org\/wiki\/List_of_ISO_639-1_codes)","x-example":"en-us"},"name":{"type":"string","description":"Locale name","x-example":"US"}},"required":["code","name"]},"file":{"description":"File","type":"object","properties":{"$id":{"type":"string","description":"File ID.","x-example":"5e5ea5c16897e"},"bucketId":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Bucket creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Bucket update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Bucket permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"fileSecurity":{"type":"boolean","description":"Whether file-level security is enabled. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":true},"name":{"type":"string","description":"Bucket name.","x-example":"Documents"},"enabled":{"type":"boolean","description":"Bucket enabled.","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size supported.","x-example":100,"format":"int32"},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions.","items":{"type":"string"},"x-example":["jpg","png"]},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Will be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd).","x-example":"gzip"},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$createdAt","$updatedAt","$permissions","fileSecurity","name","enabled","maximumFileSize","allowedFileExtensions","compression","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"},"prefs":{"type":"object","description":"Team preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"$ref":"#\/components\/schemas\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","total","prefs"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"mfa":{"type":"boolean","description":"Multi factor authentication status, true if the user has MFA enabled or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":["owner"]}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","mfa","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Function creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Function update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"users"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"enabled":{"type":"boolean","description":"Function enabled.","x-example":false},"live":{"type":"boolean","description":"Is the function deployed with the latest configuration? This is set to false if you've changed an environment variables, entrypoint, commands, or other settings that needs redeploy to be applied. When the value is false, redeploy the function to update it with the latest configuration.","x-example":false},"logging":{"type":"boolean","description":"Whether executions will be logged. When set to false, executions will not be logged, but will reduce resource used by your Appwrite project.","x-example":false},"runtime":{"type":"string","description":"Function execution runtime.","x-example":"python-3.8"},"deployment":{"type":"string","description":"Function's active deployment ID.","x-example":"5e5ea5c16897e"},"vars":{"type":"array","description":"Function variables.","items":{"$ref":"#\/components\/schemas\/variable"},"x-example":[]},"events":{"type":"array","description":"Function trigger events.","items":{"type":"string"},"x-example":"account.create"},"schedule":{"type":"string","description":"Function execution schedult in CRON format.","x-example":"5 4 * * *"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":300,"format":"int32"},"entrypoint":{"type":"string","description":"The entrypoint file used to execute the deployment.","x-example":"index.js"},"commands":{"type":"string","description":"The build command used to build the deployment.","x-example":"npm install"},"version":{"type":"string","description":"Version of Open Runtimes used for the function.","x-example":"v2"},"installationId":{"type":"string","description":"Function VCS (Version Control System) installation id.","x-example":"6m40at4ejk5h2u9s1hboo"},"providerRepositoryId":{"type":"string","description":"VCS (Version Control System) Repository ID","x-example":"appwrite"},"providerBranch":{"type":"string","description":"VCS (Version Control System) branch name","x-example":"main"},"providerRootDirectory":{"type":"string","description":"Path to function in VCS (Version Control System) repository","x-example":"functions\/helloWorld"},"providerSilentMode":{"type":"boolean","description":"Is VCS (Version Control System) connection is in silent mode? When in silence mode, no comments will be posted on the repository pull or merge requests","x-example":false}},"required":["$id","$createdAt","$updatedAt","execute","name","enabled","live","logging","runtime","deployment","vars","events","schedule","timeout","entrypoint","commands","version","installationId","providerRepositoryId","providerBranch","providerRootDirectory","providerSilentMode"]},"installation":{"description":"Installation","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Function creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Function update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"VCS (Version Control System) provider name.","x-example":"github"},"organization":{"type":"string","description":"VCS (Version Control System) organization name.","x-example":"appwrite"},"providerInstallationId":{"type":"string","description":"VCS (Version Control System) installation ID.","x-example":"5322"}},"required":["$id","$createdAt","$updatedAt","provider","organization","providerInstallationId"]},"providerRepository":{"description":"ProviderRepository","type":"object","properties":{"id":{"type":"string","description":"VCS (Version Control System) repository ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"VCS (Version Control System) repository name.","x-example":"appwrite"},"organization":{"type":"string","description":"VCS (Version Control System) organization name","x-example":"appwrite"},"provider":{"type":"string","description":"VCS (Version Control System) provider name.","x-example":"github"},"private":{"type":"boolean","description":"Is VCS (Version Control System) repository private?","x-example":true},"runtime":{"type":"string","description":"Auto-detected runtime suggestion. Empty if getting response of getRuntime().","x-example":"node"},"pushedAt":{"type":"string","description":"Last commit date in ISO 8601 format.","x-example":"datetime"}},"required":["id","name","organization","provider","private","runtime","pushedAt"]},"detection":{"description":"Detection","type":"object","properties":{"runtime":{"type":"string","description":"Runtime","x-example":"node"}},"required":["runtime"]},"branch":{"description":"Branch","type":"object","properties":{"name":{"type":"string","description":"Branch Name.","x-example":"main"}},"required":["name"]},"runtime":{"description":"Runtime","type":"object","properties":{"$id":{"type":"string","description":"Runtime ID.","x-example":"python-3.8"},"name":{"type":"string","description":"Runtime Name.","x-example":"Python"},"version":{"type":"string","description":"Runtime version.","x-example":"3.8"},"base":{"type":"string","description":"Base Docker image used to build the runtime.","x-example":"python:3.8-alpine"},"image":{"type":"string","description":"Image name of Docker Hub.","x-example":"appwrite\\\/runtime-for-python:3.8"},"logo":{"type":"string","description":"Name of the logo image.","x-example":"python.png"},"supports":{"type":"array","description":"List of supported architectures.","items":{"type":"string"},"x-example":"amd64"}},"required":["$id","name","version","base","image","logo","supports"]},"deployment":{"description":"Deployment","type":"object","properties":{"$id":{"type":"string","description":"Deployment ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Deployment creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Deployment update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"type":{"type":"string","description":"Type of deployment.","x-example":"vcs"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"index.js"},"size":{"type":"integer","description":"The code size in bytes.","x-example":128,"format":"int32"},"buildId":{"type":"string","description":"The current build ID.","x-example":"5e5ea5c16897e"},"activate":{"type":"boolean","description":"Whether the deployment should be automatically activated.","x-example":true},"status":{"type":"string","description":"The deployment status. Possible values are \"processing\", \"building\", \"waiting\", \"ready\", and \"failed\".","x-example":"ready"},"buildLogs":{"type":"string","description":"The build logs.","x-example":"Compiling source files..."},"buildTime":{"type":"integer","description":"The current build time in seconds.","x-example":128,"format":"int32"},"providerRepositoryName":{"type":"string","description":"The name of the vcs provider repository","x-example":"database"},"providerRepositoryOwner":{"type":"string","description":"The name of the vcs provider repository owner","x-example":"utopia"},"providerRepositoryUrl":{"type":"string","description":"The url of the vcs provider repository","x-example":"https:\/\/github.com\/vermakhushboo\/g4-node-function"},"providerBranch":{"type":"string","description":"The branch of the vcs repository","x-example":"0.7.x"},"providerCommitHash":{"type":"string","description":"The commit hash of the vcs commit","x-example":"7c3f25d"},"providerCommitAuthorUrl":{"type":"string","description":"The url of vcs commit author","x-example":"https:\/\/github.com\/vermakhushboo"},"providerCommitAuthor":{"type":"string","description":"The name of vcs commit author","x-example":"Khushboo Verma"},"providerCommitMessage":{"type":"string","description":"The commit message","x-example":"Update index.js"},"providerCommitUrl":{"type":"string","description":"The url of the vcs commit","x-example":"https:\/\/github.com\/vermakhushboo\/g4-node-function\/commit\/60c0416257a9cbcdd96b2d370c38d8f8d150ccfb"},"providerBranchUrl":{"type":"string","description":"The branch of the vcs repository","x-example":"https:\/\/github.com\/vermakhushboo\/appwrite\/tree\/0.7.x"}},"required":["$id","$createdAt","$updatedAt","type","resourceId","resourceType","entrypoint","size","buildId","activate","status","buildLogs","buildTime","providerRepositoryName","providerRepositoryOwner","providerRepositoryUrl","providerBranch","providerCommitHash","providerCommitAuthorUrl","providerCommitAuthor","providerCommitMessage","providerCommitUrl","providerBranchUrl"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"requestMethod":{"type":"string","description":"HTTP request method type.","x-example":"GET"},"requestPath":{"type":"string","description":"HTTP request path and query.","x-example":"\/articles?id=5"},"requestHeaders":{"type":"array","description":"HTTP response headers as a key-value object. This will return only whitelisted headers. All headers are returned if execution is created as synchronous.","items":{"$ref":"#\/components\/schemas\/headers"},"x-example":[{"Content-Type":"application\/json"}]},"responseStatusCode":{"type":"integer","description":"HTTP response status code.","x-example":200,"format":"int32"},"responseBody":{"type":"string","description":"HTTP response body. This will return empty unless execution is created as synchronous.","x-example":"Developers are awesome."},"responseHeaders":{"type":"array","description":"HTTP response headers as a key-value object. This will return only whitelisted headers. All headers are returned if execution is created as synchronous.","items":{"$ref":"#\/components\/schemas\/headers"},"x-example":[{"Content-Type":"application\/json"}]},"logs":{"type":"string","description":"Function logs. Includes the last 4,000 characters. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"errors":{"type":"string","description":"Function errors. Includes the last 4,000 characters. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"Function execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","requestMethod","requestPath","requestHeaders","responseStatusCode","responseBody","responseHeaders","logs","errors","duration"]},"project":{"description":"Project","type":"object","properties":{"$id":{"type":"string","description":"Project ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Project creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Project update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Project name.","x-example":"New Project"},"description":{"type":"string","description":"Project description.","x-example":"This is a new project."},"teamId":{"type":"string","description":"Project team ID.","x-example":"1592981250"},"logo":{"type":"string","description":"Project logo file ID.","x-example":"5f5c451b403cb"},"url":{"type":"string","description":"Project website URL.","x-example":"5f5c451b403cb"},"legalName":{"type":"string","description":"Company legal name.","x-example":"Company LTD."},"legalCountry":{"type":"string","description":"Country code in [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) two-character format.","x-example":"US"},"legalState":{"type":"string","description":"State name.","x-example":"New York"},"legalCity":{"type":"string","description":"City name.","x-example":"New York City."},"legalAddress":{"type":"string","description":"Company Address.","x-example":"620 Eighth Avenue, New York, NY 10018"},"legalTaxId":{"type":"string","description":"Company Tax ID.","x-example":"131102020"},"authDuration":{"type":"integer","description":"Session duration in seconds.","x-example":60,"format":"int32"},"authLimit":{"type":"integer","description":"Max users allowed. 0 is unlimited.","x-example":100,"format":"int32"},"authSessionsLimit":{"type":"integer","description":"Max sessions allowed per user. 100 maximum.","x-example":10,"format":"int32"},"authPasswordHistory":{"type":"integer","description":"Max allowed passwords in the history list per user. Max passwords limit allowed in history is 20. Use 0 for disabling password history.","x-example":5,"format":"int32"},"authPasswordDictionary":{"type":"boolean","description":"Whether or not to check user's password against most commonly used passwords.","x-example":true},"authPersonalDataCheck":{"type":"boolean","description":"Whether or not to check the user password for similarity with their personal data.","x-example":true},"oAuthProviders":{"type":"array","description":"List of Auth Providers.","items":{"$ref":"#\/components\/schemas\/authProvider"},"x-example":[{}]},"platforms":{"type":"array","description":"List of Platforms.","items":{"$ref":"#\/components\/schemas\/platform"},"x-example":{}},"webhooks":{"type":"array","description":"List of Webhooks.","items":{"$ref":"#\/components\/schemas\/webhook"},"x-example":{}},"keys":{"type":"array","description":"List of API Keys.","items":{"$ref":"#\/components\/schemas\/key"},"x-example":{}},"smtpEnabled":{"type":"boolean","description":"Status for custom SMTP","x-example":false},"smtpSenderName":{"type":"string","description":"SMTP sender name","x-example":"John Appwrite"},"smtpSenderEmail":{"type":"string","description":"SMTP sender email","x-example":"john@appwrite.io"},"smtpReplyTo":{"type":"string","description":"SMTP reply to email","x-example":"support@appwrite.io"},"smtpHost":{"type":"string","description":"SMTP server host name","x-example":"mail.appwrite.io"},"smtpPort":{"type":"integer","description":"SMTP server port","x-example":25,"format":"int32"},"smtpUsername":{"type":"string","description":"SMTP server username","x-example":"emailuser"},"smtpPassword":{"type":"string","description":"SMTP server password","x-example":"securepassword"},"smtpSecure":{"type":"string","description":"SMTP server secure protocol","x-example":"tls"},"authEmailPassword":{"type":"boolean","description":"Email\/Password auth method status","x-example":true},"authUsersAuthMagicURL":{"type":"boolean","description":"Magic URL auth method status","x-example":true},"authEmailOtp":{"type":"boolean","description":"Email (OTP) auth method status","x-example":true},"authAnonymous":{"type":"boolean","description":"Anonymous auth method status","x-example":true},"authInvites":{"type":"boolean","description":"Invites auth method status","x-example":true},"authJWT":{"type":"boolean","description":"JWT auth method status","x-example":true},"authPhone":{"type":"boolean","description":"Phone auth method status","x-example":true},"serviceStatusForAccount":{"type":"boolean","description":"Account service status","x-example":true},"serviceStatusForAvatars":{"type":"boolean","description":"Avatars service status","x-example":true},"serviceStatusForDatabases":{"type":"boolean","description":"Databases service status","x-example":true},"serviceStatusForLocale":{"type":"boolean","description":"Locale service status","x-example":true},"serviceStatusForHealth":{"type":"boolean","description":"Health service status","x-example":true},"serviceStatusForStorage":{"type":"boolean","description":"Storage service status","x-example":true},"serviceStatusForTeams":{"type":"boolean","description":"Teams service status","x-example":true},"serviceStatusForUsers":{"type":"boolean","description":"Users service status","x-example":true},"serviceStatusForFunctions":{"type":"boolean","description":"Functions service status","x-example":true},"serviceStatusForGraphql":{"type":"boolean","description":"GraphQL service status","x-example":true},"serviceStatusForMessaging":{"type":"boolean","description":"Messaging service status","x-example":true}},"required":["$id","$createdAt","$updatedAt","name","description","teamId","logo","url","legalName","legalCountry","legalState","legalCity","legalAddress","legalTaxId","authDuration","authLimit","authSessionsLimit","authPasswordHistory","authPasswordDictionary","authPersonalDataCheck","oAuthProviders","platforms","webhooks","keys","smtpEnabled","smtpSenderName","smtpSenderEmail","smtpReplyTo","smtpHost","smtpPort","smtpUsername","smtpPassword","smtpSecure","authEmailPassword","authUsersAuthMagicURL","authEmailOtp","authAnonymous","authInvites","authJWT","authPhone","serviceStatusForAccount","serviceStatusForAvatars","serviceStatusForDatabases","serviceStatusForLocale","serviceStatusForHealth","serviceStatusForStorage","serviceStatusForTeams","serviceStatusForUsers","serviceStatusForFunctions","serviceStatusForGraphql","serviceStatusForMessaging"]},"webhook":{"description":"Webhook","type":"object","properties":{"$id":{"type":"string","description":"Webhook ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Webhook creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Webhook update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Webhook name.","x-example":"My Webhook"},"url":{"type":"string","description":"Webhook URL endpoint.","x-example":"https:\/\/example.com\/webhook"},"events":{"type":"array","description":"Webhook trigger events.","items":{"type":"string"},"x-example":"database.collections.update"},"security":{"type":"boolean","description":"Indicated if SSL \/ TLS Certificate verification is enabled.","x-example":true},"httpUser":{"type":"string","description":"HTTP basic authentication username.","x-example":"username"},"httpPass":{"type":"string","description":"HTTP basic authentication password.","x-example":"password"},"signatureKey":{"type":"string","description":"Signature key which can be used to validated incoming","x-example":"ad3d581ca230e2b7059c545e5a"},"enabled":{"type":"boolean","description":"Indicates if this webhook is enabled.","x-example":true},"logs":{"type":"string","description":"Webhook error logs from the most recent failure.","x-example":"Failed to connect to remote server."},"attempts":{"type":"integer","description":"Number of consecutive failed webhook attempts.","x-example":10,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","name","url","events","security","httpUser","httpPass","signatureKey","enabled","logs","attempts"]},"key":{"description":"Key","type":"object","properties":{"$id":{"type":"string","description":"Key ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Key creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Key update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Key name.","x-example":"My API Key"},"expire":{"type":"string","description":"Key expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"scopes":{"type":"array","description":"Allowed permission scopes.","items":{"type":"string"},"x-example":"users.read"},"secret":{"type":"string","description":"Secret key.","x-example":"919c2d18fb5d4...a2ae413da83346ad2"},"accessedAt":{"type":"string","description":"Most recent access date in ISO 8601 format. This attribute is only updated again after 24 hours.","x-example":"2020-10-15T06:38:00.000+00:00"},"sdks":{"type":"array","description":"List of SDK user agents that used this key.","items":{"type":"string"},"x-example":"appwrite:flutter"}},"required":["$id","$createdAt","$updatedAt","name","expire","scopes","secret","accessedAt","sdks"]},"authProvider":{"description":"AuthProvider","type":"object","properties":{"key":{"type":"string","description":"Auth Provider.","x-example":"github"},"name":{"type":"string","description":"Auth Provider name.","x-example":"GitHub"},"appId":{"type":"string","description":"OAuth 2.0 application ID.","x-example":"259125845563242502"},"secret":{"type":"string","description":"OAuth 2.0 application secret. Might be JSON string if provider requires extra configuration.","x-example":"Bpw_g9c2TGXxfgLshDbSaL8tsCcqgczQ"},"enabled":{"type":"boolean","description":"Auth Provider is active and can be used to create session.","x-example":""}},"required":["key","name","appId","secret","enabled"]},"platform":{"description":"Platform","type":"object","properties":{"$id":{"type":"string","description":"Platform ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Platform creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Platform update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Platform name.","x-example":"My Web App"},"type":{"type":"string","description":"Platform type. Possible values are: web, flutter-web, flutter-ios, flutter-android, ios, android, and unity.","x-example":"web"},"key":{"type":"string","description":"Platform Key. iOS bundle ID or Android package name. Empty string for other platforms.","x-example":"com.company.appname"},"store":{"type":"string","description":"App store or Google Play store ID.","x-example":""},"hostname":{"type":"string","description":"Web app hostname. Empty string for other platforms.","x-example":true},"httpUser":{"type":"string","description":"HTTP basic authentication username.","x-example":"username"},"httpPass":{"type":"string","description":"HTTP basic authentication password.","x-example":"password"}},"required":["$id","$createdAt","$updatedAt","name","type","key","store","hostname","httpUser","httpPass"]},"variable":{"description":"Variable","type":"object","properties":{"$id":{"type":"string","description":"Variable ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"key":{"type":"string","description":"Variable key.","x-example":"API_KEY"},"value":{"type":"string","description":"Variable value.","x-example":"myPa$$word1"},"resourceType":{"type":"string","description":"Service to which the variable belongs. Possible values are \"project\", \"function\"","x-example":"function"},"resourceId":{"type":"string","description":"ID of resource to which the variable belongs. If resourceType is \"project\", it is empty. If resourceType is \"function\", it is ID of the function.","x-example":"myAwesomeFunction"}},"required":["$id","$createdAt","$updatedAt","key","value","resourceType","resourceId"]},"country":{"description":"Country","type":"object","properties":{"name":{"type":"string","description":"Country name.","x-example":"United States"},"code":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"}},"required":["name","code"]},"continent":{"description":"Continent","type":"object","properties":{"name":{"type":"string","description":"Continent name.","x-example":"Europe"},"code":{"type":"string","description":"Continent two letter code.","x-example":"EU"}},"required":["name","code"]},"language":{"description":"Language","type":"object","properties":{"name":{"type":"string","description":"Language name.","x-example":"Italian"},"code":{"type":"string","description":"Language two-character ISO 639-1 codes.","x-example":"it"},"nativeName":{"type":"string","description":"Language native name.","x-example":"Italiano"}},"required":["name","code","nativeName"]},"currency":{"description":"Currency","type":"object","properties":{"symbol":{"type":"string","description":"Currency symbol.","x-example":"$"},"name":{"type":"string","description":"Currency name.","x-example":"US dollar"},"symbolNative":{"type":"string","description":"Currency native symbol.","x-example":"$"},"decimalDigits":{"type":"integer","description":"Number of decimal digits.","x-example":2,"format":"int32"},"rounding":{"type":"number","description":"Currency digit rounding.","x-example":0,"format":"double"},"code":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format.","x-example":"USD"},"namePlural":{"type":"string","description":"Currency plural name","x-example":"US dollars"}},"required":["symbol","name","symbolNative","decimalDigits","rounding","code","namePlural"]},"phone":{"description":"Phone","type":"object","properties":{"code":{"type":"string","description":"Phone code.","x-example":"+1"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["code","countryCode","countryName"]},"healthAntivirus":{"description":"Health Antivirus","type":"object","properties":{"version":{"type":"string","description":"Antivirus version.","x-example":"1.0.0"},"status":{"type":"string","description":"Antivirus status. Possible values can are: `disabled`, `offline`, `online`","x-example":"online"}},"required":["version","status"]},"healthQueue":{"description":"Health Queue","type":"object","properties":{"size":{"type":"integer","description":"Amount of actions in the queue.","x-example":8,"format":"int32"}},"required":["size"]},"healthStatus":{"description":"Health Status","type":"object","properties":{"name":{"type":"string","description":"Name of the service.","x-example":"database"},"ping":{"type":"integer","description":"Duration in milliseconds how long the health check took.","x-example":128,"format":"int32"},"status":{"type":"string","description":"Service status. Possible values can are: `pass`, `fail`","x-example":"pass"}},"required":["name","ping","status"]},"healthTime":{"description":"Health Time","type":"object","properties":{"remoteTime":{"type":"integer","description":"Current unix timestamp on trustful remote server.","x-example":1639490751,"format":"int32"},"localTime":{"type":"integer","description":"Current unix timestamp of local server where Appwrite runs.","x-example":1639490844,"format":"int32"},"diff":{"type":"integer","description":"Difference of unix remote and local timestamps in milliseconds.","x-example":93,"format":"int32"}},"required":["remoteTime","localTime","diff"]},"metric":{"description":"Metric","type":"object","properties":{"value":{"type":"integer","description":"The value of this metric at the timestamp.","x-example":1,"format":"int32"},"date":{"type":"string","description":"The date at which this metric was aggregated in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["value","date"]},"metricBreakdown":{"description":"Metric Breakdown","type":"object","properties":{"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Resource name.","x-example":"Documents"},"value":{"type":"integer","description":"The value of this metric at the timestamp.","x-example":1,"format":"int32"}},"required":["resourceId","name","value"]},"usageDatabases":{"description":"UsageDatabases","type":"object","properties":{"range":{"type":"string","description":"Time range of the usage stats.","x-example":"30d"},"databasesTotal":{"type":"integer","description":"Total aggregated number of databases.","x-example":0,"format":"int32"},"collectionsTotal":{"type":"integer","description":"Total aggregated number of collections.","x-example":0,"format":"int32"},"documentsTotal":{"type":"integer","description":"Total aggregated number of documents.","x-example":0,"format":"int32"},"databases":{"type":"array","description":"Aggregated number of databases per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collections":{"type":"array","description":"Aggregated number of collections per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documents":{"type":"array","description":"Aggregated number of documents per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","databasesTotal","collectionsTotal","documentsTotal","databases","collections","documents"]},"usageDatabase":{"description":"UsageDatabase","type":"object","properties":{"range":{"type":"string","description":"Time range of the usage stats.","x-example":"30d"},"collectionsTotal":{"type":"integer","description":"Total aggregated number of collections.","x-example":0,"format":"int32"},"documentsTotal":{"type":"integer","description":"Total aggregated number of documents.","x-example":0,"format":"int32"},"collections":{"type":"array","description":"Aggregated number of collections per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documents":{"type":"array","description":"Aggregated number of documents per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","collectionsTotal","documentsTotal","collections","documents"]},"usageCollection":{"description":"UsageCollection","type":"object","properties":{"range":{"type":"string","description":"Time range of the usage stats.","x-example":"30d"},"documentsTotal":{"type":"integer","description":"Total aggregated number of of documents.","x-example":0,"format":"int32"},"documents":{"type":"array","description":"Aggregated number of documents per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","documentsTotal","documents"]},"usageUsers":{"description":"UsageUsers","type":"object","properties":{"range":{"type":"string","description":"Time range of the usage stats.","x-example":"30d"},"usersTotal":{"type":"integer","description":"Total aggregated number of statistics of users.","x-example":0,"format":"int32"},"sessionsTotal":{"type":"integer","description":"Total aggregated number of active sessions.","x-example":0,"format":"int32"},"users":{"type":"array","description":"Aggregated number of users per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"sessions":{"type":"array","description":"Aggregated number of active sessions per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","usersTotal","sessionsTotal","users","sessions"]},"usageStorage":{"description":"StorageUsage","type":"object","properties":{"range":{"type":"string","description":"Time range of the usage stats.","x-example":"30d"},"bucketsTotal":{"type":"integer","description":"Total aggregated number of buckets","x-example":0,"format":"int32"},"filesTotal":{"type":"integer","description":"Total aggregated number of files.","x-example":0,"format":"int32"},"filesStorageTotal":{"type":"integer","description":"Total aggregated number of files storage (in bytes).","x-example":0,"format":"int32"},"buckets":{"type":"array","description":"Aggregated number of buckets per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"files":{"type":"array","description":"Aggregated number of files per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"storage":{"type":"array","description":"Aggregated number of files storage (in bytes) per period .","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","bucketsTotal","filesTotal","filesStorageTotal","buckets","files","storage"]},"usageBuckets":{"description":"UsageBuckets","type":"object","properties":{"range":{"type":"string","description":"Time range of the usage stats.","x-example":"30d"},"filesTotal":{"type":"integer","description":"Total aggregated number of bucket files.","x-example":0,"format":"int32"},"filesStorageTotal":{"type":"integer","description":"Total aggregated number of bucket files storage (in bytes).","x-example":0,"format":"int32"},"files":{"type":"array","description":"Aggregated number of bucket files per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"storage":{"type":"array","description":"Aggregated number of bucket storage files (in bytes) per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","filesTotal","filesStorageTotal","files","storage"]},"usageFunctions":{"description":"UsageFunctions","type":"object","properties":{"range":{"type":"string","description":"Time range of the usage stats.","x-example":"30d"},"functionsTotal":{"type":"integer","description":"Total aggregated number of functions.","x-example":0,"format":"int32"},"deploymentsTotal":{"type":"integer","description":"Total aggregated number of functions deployments.","x-example":0,"format":"int32"},"deploymentsStorageTotal":{"type":"integer","description":"Total aggregated sum of functions deployment storage.","x-example":0,"format":"int32"},"buildsTotal":{"type":"integer","description":"Total aggregated number of functions build.","x-example":0,"format":"int32"},"buildsStorageTotal":{"type":"integer","description":"total aggregated sum of functions build storage.","x-example":0,"format":"int32"},"buildsTimeTotal":{"type":"integer","description":"Total aggregated sum of functions build compute time.","x-example":0,"format":"int32"},"executionsTotal":{"type":"integer","description":"Total aggregated number of functions execution.","x-example":0,"format":"int32"},"executionsTimeTotal":{"type":"integer","description":"Total aggregated sum of functions execution compute time.","x-example":0,"format":"int32"},"functions":{"type":"array","description":"Aggregated number of functions per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":0},"deployments":{"type":"array","description":"Aggregated number of functions deployment per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"deploymentsStorage":{"type":"array","description":"Aggregated number of functions deployment storage per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"builds":{"type":"array","description":"Aggregated number of functions build per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"buildsStorage":{"type":"array","description":"Aggregated sum of functions build storage per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"buildsTime":{"type":"array","description":"Aggregated sum of functions build compute time per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"executions":{"type":"array","description":"Aggregated number of functions execution per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"executionsTime":{"type":"array","description":"Aggregated number of functions execution compute time per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","functionsTotal","deploymentsTotal","deploymentsStorageTotal","buildsTotal","buildsStorageTotal","buildsTimeTotal","executionsTotal","executionsTimeTotal","functions","deployments","deploymentsStorage","builds","buildsStorage","buildsTime","executions","executionsTime"]},"usageFunction":{"description":"UsageFunction","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"deploymentsTotal":{"type":"integer","description":"Total aggregated number of function deployments.","x-example":0,"format":"int32"},"deploymentsStorageTotal":{"type":"integer","description":"Total aggregated sum of function deployments storage.","x-example":0,"format":"int32"},"buildsTotal":{"type":"integer","description":"Total aggregated number of function builds.","x-example":0,"format":"int32"},"buildsStorageTotal":{"type":"integer","description":"total aggregated sum of function builds storage.","x-example":0,"format":"int32"},"buildsTimeTotal":{"type":"integer","description":"Total aggregated sum of function builds compute time.","x-example":0,"format":"int32"},"executionsTotal":{"type":"integer","description":"Total aggregated number of function executions.","x-example":0,"format":"int32"},"executionsTimeTotal":{"type":"integer","description":"Total aggregated sum of function executions compute time.","x-example":0,"format":"int32"},"deployments":{"type":"array","description":"Aggregated number of function deployments per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"deploymentsStorage":{"type":"array","description":"Aggregated number of function deployments storage per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"builds":{"type":"array","description":"Aggregated number of function builds per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"buildsStorage":{"type":"array","description":"Aggregated sum of function builds storage per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"buildsTime":{"type":"array","description":"Aggregated sum of function builds compute time per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"executions":{"type":"array","description":"Aggregated number of function executions per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"executionsTime":{"type":"array","description":"Aggregated number of function executions compute time per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","deploymentsTotal","deploymentsStorageTotal","buildsTotal","buildsStorageTotal","buildsTimeTotal","executionsTotal","executionsTimeTotal","deployments","deploymentsStorage","builds","buildsStorage","buildsTime","executions","executionsTime"]},"usageProject":{"description":"UsageProject","type":"object","properties":{"executionsTotal":{"type":"integer","description":"Total aggregated number of function executions.","x-example":0,"format":"int32"},"documentsTotal":{"type":"integer","description":"Total aggregated number of documents.","x-example":0,"format":"int32"},"databasesTotal":{"type":"integer","description":"Total aggregated number of databases.","x-example":0,"format":"int32"},"usersTotal":{"type":"integer","description":"Total aggregated number of users.","x-example":0,"format":"int32"},"filesStorageTotal":{"type":"integer","description":"Total aggregated sum of files storage size (in bytes).","x-example":0,"format":"int32"},"bucketsTotal":{"type":"integer","description":"Total aggregated number of buckets.","x-example":0,"format":"int32"},"requests":{"type":"array","description":"Aggregated number of requests per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"network":{"type":"array","description":"Aggregated number of consumed bandwidth per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"users":{"type":"array","description":"Aggregated number of users per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"executions":{"type":"array","description":"Aggregated number of executions per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"executionsBreakdown":{"type":"array","description":"Aggregated breakdown in totals of executions by functions.","items":{"$ref":"#\/components\/schemas\/metricBreakdown"},"x-example":[]},"bucketsBreakdown":{"type":"array","description":"Aggregated breakdown in totals of usage by buckets.","items":{"$ref":"#\/components\/schemas\/metricBreakdown"},"x-example":[]}},"required":["executionsTotal","documentsTotal","databasesTotal","usersTotal","filesStorageTotal","bucketsTotal","requests","network","users","executions","executionsBreakdown","bucketsBreakdown"]},"headers":{"description":"Headers","type":"object","properties":{"name":{"type":"string","description":"Header name.","x-example":"Content-Type"},"value":{"type":"string","description":"Header value.","x-example":"application\/json"}},"required":["name","value"]},"proxyRule":{"description":"Rule","type":"object","properties":{"$id":{"type":"string","description":"Rule ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Rule creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Rule update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"domain":{"type":"string","description":"Domain name.","x-example":"appwrite.company.com"},"resourceType":{"type":"string","description":"Action definition for the rule. Possible values are \"api\", \"function\", or \"redirect\"","x-example":"function"},"resourceId":{"type":"string","description":"ID of resource for the action type. If resourceType is \"api\" or \"url\", it is empty. If resourceType is \"function\", it is ID of the function.","x-example":"myAwesomeFunction"},"status":{"type":"string","description":"Domain verification status. Possible values are \"created\", \"verifying\", \"verified\" and \"unverified\"","x-example":"verified"},"logs":{"type":"string","description":"Certificate generation logs. This will return an empty string if generation did not run, or succeeded.","x-example":"HTTP challegne failed."},"renewAt":{"type":"string","description":"Certificate auto-renewal date in ISO 8601 format.","x-example":"datetime"}},"required":["$id","$createdAt","$updatedAt","domain","resourceType","resourceId","status","logs","renewAt"]},"smsTemplate":{"description":"SmsTemplate","type":"object","properties":{"type":{"type":"string","description":"Template type","x-example":"verification"},"locale":{"type":"string","description":"Template locale","x-example":"en_us"},"message":{"type":"string","description":"Template message","x-example":"Click on the link to verify your account."}},"required":["type","locale","message"]},"emailTemplate":{"description":"EmailTemplate","type":"object","properties":{"type":{"type":"string","description":"Template type","x-example":"verification"},"locale":{"type":"string","description":"Template locale","x-example":"en_us"},"message":{"type":"string","description":"Template message","x-example":"Click on the link to verify your account."},"senderName":{"type":"string","description":"Name of the sender","x-example":"My User"},"senderEmail":{"type":"string","description":"Email of the sender","x-example":"mail@appwrite.io"},"replyTo":{"type":"string","description":"Reply to email address","x-example":"emails@appwrite.io"},"subject":{"type":"string","description":"Email subject","x-example":"Please verify your email address"}},"required":["type","locale","message","senderName","senderEmail","replyTo","subject"]},"consoleVariables":{"description":"Console Variables","type":"object","properties":{"_APP_DOMAIN_TARGET":{"type":"string","description":"CNAME target for your Appwrite custom domains.","x-example":"appwrite.io"},"_APP_STORAGE_LIMIT":{"type":"integer","description":"Maximum file size allowed for file upload in bytes.","x-example":"30000000","format":"int32"},"_APP_FUNCTIONS_SIZE_LIMIT":{"type":"integer","description":"Maximum file size allowed for deployment in bytes.","x-example":"30000000","format":"int32"},"_APP_USAGE_STATS":{"type":"string","description":"Defines if usage stats are enabled. This value is set to 'enabled' by default, to disable the usage stats set the value to 'disabled'.","x-example":"enabled"},"_APP_VCS_ENABLED":{"type":"boolean","description":"Defines if VCS (Version Control System) is enabled.","x-example":true},"_APP_DOMAIN_ENABLED":{"type":"boolean","description":"Defines if main domain is configured. If so, custom domains can be created.","x-example":true},"_APP_ASSISTANT_ENABLED":{"type":"boolean","description":"Defines if AI assistant is enabled.","x-example":true}},"required":["_APP_DOMAIN_TARGET","_APP_STORAGE_LIMIT","_APP_FUNCTIONS_SIZE_LIMIT","_APP_USAGE_STATS","_APP_VCS_ENABLED","_APP_DOMAIN_ENABLED","_APP_ASSISTANT_ENABLED"]},"mfaChallenge":{"description":"MFA Challenge","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","userId","expire"]},"mfaProvider":{"description":"MFAProvider","type":"object","properties":{"backups":{"type":"array","description":"Backup codes.","items":{"type":"string"},"x-example":true},"secret":{"type":"string","description":"Secret token used for TOTP factor.","x-example":true},"uri":{"type":"string","description":"URI for authenticator apps.","x-example":true}},"required":["backups","secret","uri"]},"mfaProviders":{"description":"MFAProviders","type":"object","properties":{"totp":{"type":"boolean","description":"TOTP","x-example":true},"phone":{"type":"boolean","description":"Phone","x-example":true},"email":{"type":"boolean","description":"Email","x-example":true}},"required":["totp","phone","email"]},"provider":{"description":"Provider","type":"object","properties":{"$id":{"type":"string","description":"Provider ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Provider creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Provider update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"The name for the provider instance.","x-example":"Mailgun"},"provider":{"type":"string","description":"The name of the provider service.","x-example":"mailgun"},"enabled":{"type":"boolean","description":"Is provider enabled?","x-example":true},"type":{"type":"string","description":"Type of provider.","x-example":"sms"},"credentials":{"type":"object","description":"Provider credentials.","x-example":{"key":"123456789"}},"options":{"type":"object","description":"Provider options.","x-example":{"from":"sender-email@mydomain"},"nullable":true}},"required":["$id","$createdAt","$updatedAt","name","provider","enabled","type","credentials"]},"message":{"description":"Message","type":"object","properties":{"$id":{"type":"string","description":"Message ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Message creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Message update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerType":{"type":"string","description":"Message provider type.","x-example":"email"},"topics":{"type":"array","description":"Topic IDs set as recipients.","items":{"type":"string"},"x-example":["5e5ea5c16897e"]},"users":{"type":"array","description":"User IDs set as recipients.","items":{"type":"string"},"x-example":["5e5ea5c16897e"]},"targets":{"type":"array","description":"Target IDs set as recipients.","items":{"type":"string"},"x-example":["5e5ea5c16897e"]},"scheduledAt":{"type":"string","description":"The scheduled time for message.","x-example":"2020-10-15T06:38:00.000+00:00","nullable":true},"deliveredAt":{"type":"string","description":"The time when the message was delivered.","x-example":"2020-10-15T06:38:00.000+00:00","nullable":true},"deliveryErrors":{"type":"array","description":"Delivery errors if any.","items":{"type":"string"},"x-example":["Failed to send message to target 5e5ea5c16897e: Credentials not valid."],"nullable":true},"deliveredTotal":{"type":"integer","description":"Number of recipients the message was delivered to.","x-example":1,"format":"int32"},"data":{"type":"object","description":"Data of the message.","x-example":{"subject":"Welcome to Appwrite","content":"Hi there, welcome to Appwrite family."}},"status":{"type":"string","description":"Status of delivery.","x-example":"Message status can be one of the following: processing, sent, cancelled, failed."}},"required":["$id","$createdAt","$updatedAt","providerType","topics","users","targets","deliveredTotal","data","status"]},"topic":{"description":"Topic","type":"object","properties":{"$id":{"type":"string","description":"Topic ID.","x-example":"259125845563242502"},"$createdAt":{"type":"string","description":"Topic creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Topic update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"The name of the topic.","x-example":"events"},"total":{"type":"integer","description":"Total count of subscribers subscribed to topic.","x-example":100,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","name","total"]},"subscriber":{"description":"Subscriber","type":"object","properties":{"$id":{"type":"string","description":"Subscriber ID.","x-example":"259125845563242502"},"$createdAt":{"type":"string","description":"Subscriber creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Subscriber update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"targetId":{"type":"string","description":"Target ID.","x-example":"259125845563242502"},"target":{"type":"object","description":"Target.","x-example":{"$id":"259125845563242502","$createdAt":"2020-10-15T06:38:00.000+00:00","$updatedAt":"2020-10-15T06:38:00.000+00:00","providerType":"email","providerId":"259125845563242502","name":"ageon-app-email","identifier":"random-mail@email.org","userId":"5e5ea5c16897e"},"items":{"$ref":"#\/components\/schemas\/target"}},"userId":{"type":"string","description":"Topic ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User Name.","x-example":"Aegon Targaryen"},"topicId":{"type":"string","description":"Topic ID.","x-example":"259125845563242502"},"providerType":{"type":"string","description":"The target provider type. Can be one of the following: `email`, `sms` or `push`.","x-example":"email"}},"required":["$id","$createdAt","$updatedAt","targetId","target","userId","userName","topicId","providerType"]},"target":{"description":"Target","type":"object","properties":{"$id":{"type":"string","description":"Target ID.","x-example":"259125845563242502"},"$createdAt":{"type":"string","description":"Target creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Target update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Target Name.","x-example":"Aegon apple token"},"userId":{"type":"string","description":"User ID.","x-example":"259125845563242502"},"providerId":{"type":"string","description":"Provider ID.","x-example":"259125845563242502","nullable":true},"providerType":{"type":"string","description":"The target provider type. Can be one of the following: `email`, `sms` or `push`.","x-example":"email"},"identifier":{"type":"string","description":"The target identifier.","x-example":"token"}},"required":["$id","$createdAt","$updatedAt","name","userId","providerType","identifier"]},"migration":{"description":"Migration","type":"object","properties":{"$id":{"type":"string","description":"Migration ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"string","description":"Migration status ( pending, processing, failed, completed ) ","x-example":"pending"},"stage":{"type":"string","description":"Migration stage ( init, processing, source-check, destination-check, migrating, finished )","x-example":"init"},"source":{"type":"string","description":"A string containing the type of source of the migration.","x-example":"Appwrite"},"resources":{"type":"array","description":"Resources to migration.","items":{"type":"string"},"x-example":["user"]},"statusCounters":{"type":"object","description":"A group of counters that represent the total progress of the migration.","x-example":"{\"Database\": {\"PENDING\": 0, \"SUCCESS\": 1, \"ERROR\": 0, \"SKIP\": 0, \"PROCESSING\": 0, \"WARNING\": 0}}"},"resourceData":{"type":"object","description":"An array of objects containing the report data of the resources that were migrated.","x-example":"[{\"resource\":\"Database\",\"id\":\"public\",\"status\":\"SUCCESS\",\"message\":\"\"}]"},"errors":{"type":"array","description":"All errors that occurred during the migration process.","items":{"type":"string"},"x-example":[]}},"required":["$id","$createdAt","$updatedAt","status","stage","source","resources","statusCounters","resourceData","errors"]},"migrationReport":{"description":"Migration Report","type":"object","properties":{"user":{"type":"integer","description":"Number of users to be migrated.","x-example":20,"format":"int32"},"team":{"type":"integer","description":"Number of teams to be migrated.","x-example":20,"format":"int32"},"database":{"type":"integer","description":"Number of databases to be migrated.","x-example":20,"format":"int32"},"document":{"type":"integer","description":"Number of documents to be migrated.","x-example":20,"format":"int32"},"file":{"type":"integer","description":"Number of files to be migrated.","x-example":20,"format":"int32"},"bucket":{"type":"integer","description":"Number of buckets to be migrated.","x-example":20,"format":"int32"},"function":{"type":"integer","description":"Number of functions to be migrated.","x-example":20,"format":"int32"},"size":{"type":"integer","description":"Size of files to be migrated in mb.","x-example":30000,"format":"int32"},"version":{"type":"string","description":"Version of the Appwrite instance to be migrated.","x-example":"1.4.0"}},"required":["user","team","database","document","file","bucket","function","size","version"]},"firebaseProject":{"description":"MigrationFirebaseProject","type":"object","properties":{"projectId":{"type":"string","description":"Project ID.","x-example":"my-project"},"displayName":{"type":"string","description":"Project display name.","x-example":"My Project"}},"required":["projectId","displayName"]}},"securitySchemes":{"Project":{"type":"apiKey","name":"X-Appwrite-Project","description":"Your project ID","in":"header","x-appwrite":{"demo":"5df5acd0d48c2"}},"Key":{"type":"apiKey","name":"X-Appwrite-Key","description":"Your secret API key","in":"header","x-appwrite":{"demo":"919c2d18fb5d4...a2ae413da83346ad2"}},"JWT":{"type":"apiKey","name":"X-Appwrite-JWT","description":"Your secret JSON Web Token","in":"header"},"Locale":{"type":"apiKey","name":"X-Appwrite-Locale","description":"","in":"header","x-appwrite":{"demo":"en"}},"Mode":{"type":"apiKey","name":"X-Appwrite-Mode","description":"","in":"header","x-appwrite":{"demo":""}}}},"externalDocs":{"description":"Full API docs, specs and tutorials","url":"https:\/\/appwrite.io\/docs"}} \ No newline at end of file diff --git a/app/config/specs/swagger2-latest-console.json b/app/config/specs/swagger2-latest-console.json index 7b25a01d1c..3232794836 100644 --- a/app/config/specs/swagger2-latest-console.json +++ b/app/config/specs/swagger2-latest-console.json @@ -1 +1 @@ -{"swagger":"2.0","info":{"version":"1.4.13","title":"Appwrite","description":"Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https:\/\/appwrite.io\/docs](https:\/\/appwrite.io\/docs)","termsOfService":"https:\/\/appwrite.io\/policy\/terms","contact":{"name":"Appwrite Team","url":"https:\/\/appwrite.io\/support","email":"team@appwrite.io"},"license":{"name":"BSD-3-Clause","url":"https:\/\/raw.githubusercontent.com\/appwrite\/appwrite\/master\/LICENSE"}},"host":"HOSTNAME","basePath":"\/v1","schemes":["https"],"consumes":["application\/json","multipart\/form-data"],"produces":["application\/json"],"securityDefinitions":{"Project":{"type":"apiKey","name":"X-Appwrite-Project","description":"Your project ID","in":"header","x-appwrite":{"demo":"5df5acd0d48c2"}},"Key":{"type":"apiKey","name":"X-Appwrite-Key","description":"Your secret API key","in":"header","x-appwrite":{"demo":"919c2d18fb5d4...a2ae413da83346ad2"}},"JWT":{"type":"apiKey","name":"X-Appwrite-JWT","description":"Your secret JSON Web Token","in":"header","x-appwrite":{"demo":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ..."}},"Locale":{"type":"apiKey","name":"X-Appwrite-Locale","description":"","in":"header","x-appwrite":{"demo":"en"}},"Mode":{"type":"apiKey","name":"X-Appwrite-Mode","description":"","in":"header","x-appwrite":{"demo":""}}},"paths":{"\/account":{"get":{"summary":"Get account","operationId":"accountGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get the currently logged in user.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"get","weight":22,"cookies":false,"type":"","demo":"account\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"post":{"summary":"Create account","operationId":"accountCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to allow a new user to register a new account in your project. After the user registration completes successfully, you can use the [\/account\/verfication](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createVerification) route to start verifying the user email address. To allow the new user to login to their new account, you need to create a new [account session](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createEmailSession).","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"create","weight":7,"cookies":false,"type":"","demo":"account\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"New user password. Must be between 8 and 256 chars.","default":null,"x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]},"delete":{"summary":"Delete account","operationId":"accountDelete","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Delete the currently logged in user.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":49,"cookies":false,"type":"","demo":"account\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/email":{"patch":{"summary":"Update email","operationId":"accountUpdateEmail","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateEmail","weight":29,"cookies":false,"type":"","demo":"account\/update-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["email","password"]}}]}},"\/account\/identities":{"get":{"summary":"List Identities","operationId":"accountListIdentities","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get the list of identities for the currently logged in user.","responses":{"200":{"description":"Identities List","schema":{"$ref":"#\/definitions\/identityList"}}},"x-appwrite":{"method":"listIdentities","weight":13,"cookies":false,"type":"","demo":"account\/list-identities.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-identities.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/identities","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, provider, providerUid, providerEmail, providerAccessTokenExpiry","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/identities\/{identityId}":{"delete":{"summary":"Delete identity","operationId":"accountDeleteIdentity","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Delete an identity by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIdentity","weight":14,"cookies":false,"type":"","demo":"account\/delete-identity.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-identity.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"identityId","description":"Identity ID.","required":true,"type":"string","x-example":"[IDENTITY_ID]","in":"path"}]}},"\/account\/jwt":{"post":{"summary":"Create JWT","operationId":"accountCreateJWT","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to create a JSON Web Token. You can use the resulting JWT to authenticate on behalf of the current user when working with the Appwrite server-side API and SDKs. The JWT secret is valid for 15 minutes from its creation and will be invalid if the user will logout in that time frame.","responses":{"201":{"description":"JWT","schema":{"$ref":"#\/definitions\/jwt"}}},"x-appwrite":{"method":"createJWT","weight":21,"cookies":false,"type":"","demo":"account\/create-j-w-t.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-jwt.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"List logs","operationId":"accountListLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get the list of latest security activity logs for the currently logged in user. Each log returns user IP address, location and date and time of log.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listLogs","weight":25,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/mfa":{"patch":{"summary":"Update MFA","operationId":"accountUpdateMFA","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateMFA","weight":42,"cookies":false,"type":"","demo":"account\/update-m-f-a.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-mfa.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"mfa":{"type":"boolean","description":"Enable or disable MFA.","default":null,"x-example":false}},"required":["mfa"]}}]}},"\/account\/mfa\/challenge":{"post":{"summary":"Create MFA Challenge","operationId":"accountCreateChallenge","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"201":{"description":"MFA Challenge","schema":{"$ref":"#\/definitions\/mfaChallenge"}}},"x-appwrite":{"method":"createChallenge","weight":47,"cookies":false,"type":"","demo":"account\/create-challenge.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-challenge.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},token:{param-token}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"provider":{"type":"string","description":"provider.","default":null,"x-example":"totp","enum":["totp","phone","email"],"x-enum-name":"AuthenticatorProvider","x-enum-keys":[]}},"required":["provider"]}}]},"put":{"summary":"Create MFA Challenge (confirmation)","operationId":"accountUpdateChallenge","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"updateChallenge","weight":48,"cookies":false,"type":"","demo":"account\/update-challenge.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-challenge.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"challengeId":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[CHALLENGE_ID]"},"otp":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[OTP]"}},"required":["challengeId","otp"]}}]}},"\/account\/mfa\/factors":{"get":{"summary":"List Factors","operationId":"accountListFactors","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get the currently logged in user.","responses":{"200":{"description":"MFAProviders","schema":{"$ref":"#\/definitions\/mfaProviders"}}},"x-appwrite":{"method":"listFactors","weight":43,"cookies":false,"type":"","demo":"account\/list-factors.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/account\/mfa\/{factor}":{"post":{"summary":"Add Authenticator","operationId":"accountAddAuthenticator","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"200":{"description":"MFAProvider","schema":{"$ref":"#\/definitions\/mfaProvider"}}},"x-appwrite":{"method":"addAuthenticator","weight":44,"cookies":false,"type":"","demo":"account\/add-authenticator.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-mfa.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"factor","description":"Factor.","required":true,"type":"string","x-example":"totp","enum":["totp"],"x-enum-name":"AuthenticatorFactor","x-enum-keys":[],"in":"path"}]},"put":{"summary":"Verify Authenticator","operationId":"accountVerifyAuthenticator","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"verifyAuthenticator","weight":45,"cookies":false,"type":"","demo":"account\/verify-authenticator.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-mfa.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"factor","description":"Factor.","required":true,"type":"string","x-example":"totp","enum":["totp"],"x-enum-name":"AuthenticatorFactor","x-enum-keys":[],"in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"otp":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[OTP]"}},"required":["otp"]}}]}},"\/account\/mfa\/{provider}":{"delete":{"summary":"Delete Authenticator","operationId":"accountDeleteAuthenticator","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"deleteAuthenticator","weight":46,"cookies":false,"type":"","demo":"account\/delete-authenticator.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-mfa.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"provider","description":"Provider.","required":true,"type":"string","x-example":"totp","enum":["totp"],"x-enum-name":"AuthenticatorProvider","x-enum-keys":[],"in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"otp":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[OTP]"}},"required":["otp"]}}]}},"\/account\/name":{"patch":{"summary":"Update name","operationId":"accountUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateName","weight":27,"cookies":false,"type":"","demo":"account\/update-name.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-name.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"User name. Max length: 128 chars.","default":null,"x-example":"[NAME]"}},"required":["name"]}}]}},"\/account\/password":{"patch":{"summary":"Update password","operationId":"accountUpdatePassword","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePassword","weight":28,"cookies":false,"type":"","demo":"account\/update-password.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-password.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"password":{"type":"string","description":"New user password. Must be at least 8 chars.","default":null,"x-example":null},"oldPassword":{"type":"string","description":"Current user password. Must be at least 8 chars.","default":"","x-example":"password"}},"required":["password"]}}]}},"\/account\/phone":{"patch":{"summary":"Update phone","operationId":"accountUpdatePhone","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createPhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePhone","weight":30,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["phone","password"]}}]}},"\/account\/prefs":{"get":{"summary":"Get account preferences","operationId":"accountGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get the preferences as a key-value object for the currently logged in user.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":23,"cookies":false,"type":"","demo":"account\/get-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/prefs","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"patch":{"summary":"Update preferences","operationId":"accountUpdatePrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account preferences. The object you pass is stored as is, and replaces any previous value. The maximum allowed prefs size is 64kB and throws error if exceeded.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePrefs","weight":31,"cookies":false,"type":"","demo":"account\/update-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/prefs","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"prefs":{"type":"object","description":"Prefs key-value JSON object.","default":{},"x-example":"{}"}},"required":["prefs"]}}]}},"\/account\/recovery":{"post":{"summary":"Create password recovery","operationId":"accountCreateRecovery","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Sends the user an email with a temporary secret key for password reset. When the user clicks the confirmation link he is redirected back to your app password reset URL with the secret key and email address values attached to the URL query string. Use the query string params to submit a request to the [PUT \/account\/recovery](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateRecovery) endpoint to complete the process. The verification link sent to the user's email address is valid for 1 hour.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createRecovery","weight":36,"cookies":false,"type":"","demo":"account\/create-recovery.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-recovery.md","rate-limit":10,"rate-time":3600,"rate-key":["url:{url},email:{param-email}","ip:{ip}"],"scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"url":{"type":"string","description":"URL to redirect the user back to your app from the recovery email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":null,"x-example":"https:\/\/example.com"}},"required":["email","url"]}}]},"put":{"summary":"Create password recovery (confirmation)","operationId":"accountUpdateRecovery","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete the user account password reset. Both the **userId** and **secret** arguments will be passed as query parameters to the redirect URL you have provided when sending your request to the [POST \/account\/recovery](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createRecovery) endpoint.\n\nPlease note that in order to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) the only valid redirect URLs are the ones from domains you have set when adding your platforms in the console interface.","responses":{"200":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"updateRecovery","weight":37,"cookies":false,"type":"","demo":"account\/update-recovery.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-recovery.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid reset token.","default":null,"x-example":"[SECRET]"},"password":{"type":"string","description":"New user password. Must be between 8 and 256 chars.","default":null,"x-example":null}},"required":["userId","secret","password"]}}]}},"\/account\/sessions":{"get":{"summary":"List sessions","operationId":"accountListSessions","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get the list of active sessions across different devices for the currently logged in user.","responses":{"200":{"description":"Sessions List","schema":{"$ref":"#\/definitions\/sessionList"}}},"x-appwrite":{"method":"listSessions","weight":24,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/sessions","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete sessions","operationId":"accountDeleteSessions","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":35,"cookies":false,"type":"","demo":"account\/delete-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-sessions.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/account\/sessions\/anonymous":{"post":{"summary":"Create anonymous session","operationId":"accountCreateAnonymousSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to allow a new user to register an anonymous account in your project. This route will also create a new session for the user. To allow the new user to convert an anonymous account to a normal account, you need to update its [email and password](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateEmail) or create an [OAuth2 session](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#CreateOAuth2Session).","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"createAnonymousSession","weight":20,"cookies":false,"type":"","demo":"account\/create-anonymous-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-anonymous.md","rate-limit":50,"rate-time":3600,"rate-key":"ip:{ip}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/sessions\/email":{"post":{"summary":"Create email password session","operationId":"accountCreateEmailPasswordSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Allow the user to login into their account by providing a valid email and password combination. This route will create a new session for the user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"createEmailPasswordSession","weight":8,"cookies":false,"type":"","demo":"account\/create-email-password-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-email-password.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["email","password"]}}]}},"\/account\/sessions\/magic-url":{"put":{"summary":"Create session (deprecated)","operationId":"accountUpdateMagicURLSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to create a session from token. Provide the **userId** and **secret** parameters from the successful response of authentication flows initiated by token creation. For example, magic URL and phone login.","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateMagicURLSession","weight":17,"cookies":false,"type":"","demo":"account\/update-magic-u-r-l-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session.md","rate-limit":10,"rate-time":3600,"rate-key":"ip:{ip},userId:{param-userId}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/account\/sessions\/oauth2\/{provider}":{"get":{"summary":"Create OAuth2 session","operationId":"accountCreateOAuth2Session","consumes":["application\/json"],"produces":["text\/html"],"tags":["account"],"description":"Allow the user to login to their account using the OAuth2 provider of their choice. Each OAuth2 provider should be enabled from the Appwrite console first. Use the success and failure arguments to provide a redirect URL's back to your app when login is completed.\n\nIf there is already an active session, the new session will be attached to the logged-in account. If there are no active sessions, the server will attempt to look for a user with the same email address as the email received from the OAuth2 provider and attach the new session to the existing user. If no matching user is found - the server will create a new user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).\n","responses":{"301":{"description":"No content"}},"x-appwrite":{"method":"createOAuth2Session","weight":9,"cookies":false,"type":"webAuth","demo":"account\/create-o-auth2session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-oauth2.md","rate-limit":50,"rate-time":3600,"rate-key":"ip:{ip}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"provider","description":"OAuth2 Provider. Currently, supported providers are: amazon, apple, auth0, authentik, autodesk, bitbucket, bitly, box, dailymotion, discord, disqus, dropbox, etsy, facebook, github, gitlab, google, linkedin, microsoft, notion, oidc, okta, paypal, paypalSandbox, podio, salesforce, slack, spotify, stripe, tradeshift, tradeshiftBox, twitch, wordpress, yahoo, yammer, yandex, zoho, zoom.","required":true,"type":"string","x-example":"amazon","enum":["amazon","apple","auth0","authentik","autodesk","bitbucket","bitly","box","dailymotion","discord","disqus","dropbox","etsy","facebook","github","gitlab","google","linkedin","microsoft","notion","oidc","okta","paypal","paypalSandbox","podio","salesforce","slack","spotify","stripe","tradeshift","tradeshiftBox","twitch","wordpress","yahoo","yammer","yandex","zoho","zoom","mock"],"x-enum-name":"OAuthProvider","x-enum-keys":[],"in":"path"},{"name":"success","description":"URL to redirect back to your app after a successful login attempt. Only URLs from hostnames in your project's platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","required":false,"type":"string","format":"url","x-example":"https:\/\/example.com","default":"","in":"query"},{"name":"failure","description":"URL to redirect back to your app after a failed login attempt. Only URLs from hostnames in your project's platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","required":false,"type":"string","format":"url","x-example":"https:\/\/example.com","default":"","in":"query"},{"name":"token","description":"Include token credentials in the final redirect, useful for server-side integrations, or when cookies are not available.","required":false,"type":"boolean","x-example":false,"default":false,"in":"query"},{"name":"scopes","description":"A list of custom OAuth2 scopes. Check each provider internal docs for a list of supported scopes. Maximum of 100 scopes are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/sessions\/token":{"post":{"summary":"Create session","operationId":"accountCreateSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to create a session from token. Provide the **userId** and **secret** parameters from the successful response of authentication flows initiated by token creation. For example, magic URL and phone login.","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"createSession","weight":18,"cookies":false,"type":"","demo":"account\/create-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session.md","rate-limit":10,"rate-time":3600,"rate-key":"ip:{ip},userId:{param-userId}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Secret of a token generated by login methods. For example, the `createMagicURLToken` or `createPhoneToken` methods.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/account\/sessions\/{sessionId}":{"get":{"summary":"Get session","operationId":"accountGetSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to get a logged in user's session using a Session ID. Inputting 'current' will return the current session being used.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"getSession","weight":26,"cookies":false,"type":"","demo":"account\/get-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-session.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/sessions","offline-key":"{sessionId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to get the current device session.","required":true,"type":"string","x-example":"[SESSION_ID]","in":"path"}]},"patch":{"summary":"Update (or renew) a session","operationId":"accountUpdateSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Extend session's expiry to increase it's lifespan. Extending a session is useful when session length is short such as 5 minutes.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateSession","weight":34,"cookies":false,"type":"","demo":"account\/update-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-session.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to update the current device session.","required":true,"type":"string","x-example":"[SESSION_ID]","in":"path"}]},"delete":{"summary":"Delete session","operationId":"accountDeleteSession","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Logout the user. Use 'current' as the session ID to logout on this device, use a session ID to logout on another device. If you're looking to logout the user on all devices, use [Delete Sessions](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#deleteSessions) instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSession","weight":33,"cookies":false,"type":"","demo":"account\/delete-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-session.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to delete the current device session.","required":true,"type":"string","x-example":"[SESSION_ID]","in":"path"}]}},"\/account\/status":{"patch":{"summary":"Update status","operationId":"accountUpdateStatus","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateStatus","weight":32,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/account\/targets\/push":{"post":{"summary":"Create a push target","operationId":"accountCreatePushTarget","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"201":{"description":"Target","schema":{"$ref":"#\/definitions\/target"}}},"x-appwrite":{"method":"createPushTarget","weight":50,"cookies":false,"type":"","demo":"account\/create-push-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"targetId":{"type":"string","description":"Target ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[TARGET_ID]"},"identifier":{"type":"string","description":"The target identifier (token, email, phone etc.)","default":null,"x-example":"[IDENTIFIER]"},"providerId":{"type":"string","description":"Provider ID. Message will be sent to this target from the specified provider ID. If no provider ID is set the first setup provider will be used.","default":"","x-example":"[PROVIDER_ID]"}},"required":["targetId","identifier"]}}]}},"\/account\/targets\/{targetId}\/push":{"put":{"summary":"Update a push target","operationId":"accountUpdatePushTarget","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"200":{"description":"Target","schema":{"$ref":"#\/definitions\/target"}}},"x-appwrite":{"method":"updatePushTarget","weight":51,"cookies":false,"type":"","demo":"account\/update-push-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"targetId","description":"Target ID.","required":true,"type":"string","x-example":"[TARGET_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"identifier":{"type":"string","description":"The target identifier (token, email, phone etc.)","default":null,"x-example":"[IDENTIFIER]"}},"required":["identifier"]}}]},"delete":{"summary":"Delete a push target","operationId":"accountDeletePushTarget","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deletePushTarget","weight":52,"cookies":false,"type":"","demo":"account\/delete-push-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"targetId","description":"Target ID.","required":true,"type":"string","x-example":"[TARGET_ID]","in":"path"}]}},"\/account\/tokens\/email":{"post":{"summary":"Create email token (OTP)","operationId":"accountCreateEmailToken","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Sends the user an email with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [POST \/v1\/account\/sessions\/token](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createSession) endpoint to complete the login process. The secret sent to the user's email is valid for 15 minutes.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createEmailToken","weight":16,"cookies":false,"type":"","demo":"account\/create-email-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-token-email.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"phrase":{"type":"boolean","description":"Toggle for security phrase. If enabled, email will be send with a randomly generated phrase and the phrase will also be included in the response. Confirming phrases match increases the security of your authentication flow.","default":false,"x-example":false}},"required":["userId","email"]}}]}},"\/account\/tokens\/magic-url":{"post":{"summary":"Create magic URL token","operationId":"accountCreateMagicURLToken","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Sends the user an email with a secret key for creating a session. If the provided user ID has not been registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [POST \/v1\/account\/sessions\/token](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createSession) endpoint to complete the login process. The link sent to the user's email address is valid for 1 hour. If you are on a mobile device you can leave the URL parameter empty, so that the login completion will be handled by your Appwrite instance by default.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).\n","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createMagicURLToken","weight":15,"cookies":false,"type":"","demo":"account\/create-magic-u-r-l-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-token-magic-url.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"url":{"type":"string","description":"URL to redirect the user back to your app from the magic URL login. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":"","x-example":"https:\/\/example.com"},"phrase":{"type":"boolean","description":"Toggle for security phrase. If enabled, email will be send with a randomly generated phrase and the phrase will also be included in the response. Confirming phrases match increases the security of your authentication flow.","default":false,"x-example":false}},"required":["userId","email"]}}]}},"\/account\/tokens\/phone":{"post":{"summary":"Create phone token","operationId":"accountCreatePhoneToken","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Sends the user an SMS with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [POST \/v1\/account\/sessions\/token](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createSession) endpoint to complete the login process. The secret sent to the user's phone is valid for 15 minutes.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createPhoneToken","weight":19,"cookies":false,"type":"","demo":"account\/create-phone-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-token-phone.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},phone:{param-phone}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"}},"required":["userId","phone"]}}]}},"\/account\/verification":{"post":{"summary":"Create email verification","operationId":"accountCreateVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to send a verification message to your user email address to confirm they are the valid owners of that address. Both the **userId** and **secret** arguments will be passed as query parameters to the URL you have provided to be attached to the verification email. The provided URL should redirect the user back to your app and allow you to complete the verification process by verifying both the **userId** and **secret** parameters. Learn more about how to [complete the verification process](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateVerification). The verification link sent to the user's email address is valid for 7 days.\n\nPlease note that in order to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md), the only valid redirect URLs are the ones from domains you have set when adding your platforms in the console interface.\n","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createVerification","weight":38,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"url":{"type":"string","description":"URL to redirect the user back to your app from the verification email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":null,"x-example":"https:\/\/example.com"}},"required":["url"]}}]},"put":{"summary":"Create email verification (confirmation)","operationId":"accountUpdateVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete the user email verification process. Use both the **userId** and **secret** parameters that were attached to your app URL to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"updateVerification","weight":39,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/account\/verification\/phone":{"post":{"summary":"Create phone verification","operationId":"accountCreatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updatePhone) endpoint. Learn more about how to [complete the verification process](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createPhoneVerification","weight":40,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{userId}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"put":{"summary":"Create phone verification (confirmation)","operationId":"accountUpdatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"updatePhoneVerification","weight":41,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/avatars\/browsers\/{code}":{"get":{"summary":"Get browser icon","operationId":"avatarsGetBrowser","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"You can use this endpoint to show different browser icons to your users. The code argument receives the browser code as it appears in your user [GET \/account\/sessions](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#getSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getBrowser","weight":54,"cookies":false,"type":"location","demo":"avatars\/get-browser.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-browser.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Browser Code.","required":true,"type":"string","x-example":"aa","enum":["aa","an","ch","ci","cm","cr","ff","sf","mf","ps","oi","om","op","on"],"x-enum-name":"Browser","x-enum-keys":["Avant Browser","Android WebView Beta","Google Chrome","Google Chrome (iOS)","Google Chrome (Mobile)","Chromium","Mozilla Firefox","Safari","Mobile Safari","Microsoft Edge","Microsoft Edge (iOS)","Opera Mini","Opera","Opera (Next)"],"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"}]}},"\/avatars\/credit-cards\/{code}":{"get":{"summary":"Get credit card icon","operationId":"avatarsGetCreditCard","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"The credit card endpoint will return you the icon of the credit card provider you need. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getCreditCard","weight":53,"cookies":false,"type":"location","demo":"avatars\/get-credit-card.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-credit-card.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Credit Card Code. Possible values: amex, argencard, cabal, censosud, diners, discover, elo, hipercard, jcb, mastercard, naranja, targeta-shopping, union-china-pay, visa, mir, maestro.","required":true,"type":"string","x-example":"amex","enum":["amex","argencard","cabal","censosud","diners","discover","elo","hipercard","jcb","mastercard","naranja","targeta-shopping","union-china-pay","visa","mir","maestro"],"x-enum-name":"CreditCard","x-enum-keys":["American Express","Argencard","Cabal","Consosud","Diners Club","Discover","Elo","Hipercard","JCB","Mastercard","Naranja","Tarjeta Shopping","Union China Pay","Visa","MIR","Maestro"],"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"}]}},"\/avatars\/favicon":{"get":{"summary":"Get favicon","operationId":"avatarsGetFavicon","consumes":["application\/json"],"produces":["image\/*"],"tags":["avatars"],"description":"Use this endpoint to fetch the favorite icon (AKA favicon) of any remote website URL.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFavicon","weight":57,"cookies":false,"type":"location","demo":"avatars\/get-favicon.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-favicon.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"url","description":"Website URL which you want to fetch the favicon from.","required":true,"type":"string","format":"url","x-example":"https:\/\/example.com","in":"query"}]}},"\/avatars\/flags\/{code}":{"get":{"summary":"Get country flag","operationId":"avatarsGetFlag","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"You can use this endpoint to show different country flags icons to your users. The code argument receives the 2 letter country code. Use width, height and quality arguments to change the output settings. Country codes follow the [ISO 3166-1](https:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFlag","weight":55,"cookies":false,"type":"location","demo":"avatars\/get-flag.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-flag.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Country Code. ISO Alpha-2 country code format.","required":true,"type":"string","x-example":"af","enum":["af","ao","al","ad","ae","ar","am","ag","au","at","az","bi","be","bj","bf","bd","bg","bh","bs","ba","by","bz","bo","br","bb","bn","bt","bw","cf","ca","ch","cl","cn","ci","cm","cd","cg","co","km","cv","cr","cu","cy","cz","de","dj","dm","dk","do","dz","ec","eg","er","es","ee","et","fi","fj","fr","fm","ga","gb","ge","gh","gn","gm","gw","gq","gr","gd","gt","gy","hn","hr","ht","hu","id","in","ie","ir","iq","is","il","it","jm","jo","jp","kz","ke","kg","kh","ki","kn","kr","kw","la","lb","lr","ly","lc","li","lk","ls","lt","lu","lv","ma","mc","md","mg","mv","mx","mh","mk","ml","mt","mm","me","mn","mz","mr","mu","mw","my","na","ne","ng","ni","nl","no","np","nr","nz","om","pk","pa","pe","ph","pw","pg","pl","kp","pt","py","qa","ro","ru","rw","sa","sd","sn","sg","sb","sl","sv","sm","so","rs","ss","st","sr","sk","si","se","sz","sc","sy","td","tg","th","tj","tm","tl","to","tt","tn","tr","tv","tz","ug","ua","uy","us","uz","va","vc","ve","vn","vu","ws","ye","za","zm","zw"],"x-enum-name":"Flag","x-enum-keys":["Afghanistan","Angola","Albania","Andorra","United Arab Emirates","Argentina","Armenia","Antigua and Barbuda","Australia","Austria","Azerbaijan","Burundi","Belgium","Benin","Burkina Faso","Bangladesh","Bulgaria","Bahrain","Bahamas","Bosnia and Herzegovina","Belarus","Belize","Bolivia","Brazil","Barbados","Brunei Darussalam","Bhutan","Botswana","Central African Republic","Canada","Switzerland","Chile","China","C\u00f4te d'Ivoire","Cameroon","Democratic Republic of the Congo","Republic of the Congo","Colombia","Comoros","Cape Verde","Costa Rica","Cuba","Cyprus","Czech Republic","Germany","Djibouti","Dominica","Denmark","Dominican Republic","Algeria","Ecuador","Egypt","Eritrea","Spain","Estonia","Ethiopia","Finland","Fiji","France","Micronesia (Federated States of)","Gabon","United Kingdom","Georgia","Ghana","Guinea","Gambia","Guinea-Bissau","Equatorial Guinea","Greece","Grenada","Guatemala","Guyana","Honduras","Croatia","Haiti","Hungary","Indonesia","India","Ireland","Iran (Islamic Republic of)","Iraq","Iceland","Israel","Italy","Jamaica","Jordan","Japan","Kazakhstan","Kenya","Kyrgyzstan","Cambodia","Kiribati","Saint Kitts and Nevis","South Korea","Kuwait","Lao People's Democratic Republic","Lebanon","Liberia","Libya","Saint Lucia","Liechtenstein","Sri Lanka","Lesotho","Lithuania","Luxembourg","Latvia","Morocco","Monaco","Moldova","Madagascar","Maldives","Mexico","Marshall Islands","North Macedonia","Mali","Malta","Myanmar","Montenegro","Mongolia","Mozambique","Mauritania","Mauritius","Malawi","Malaysia","Namibia","Niger","Nigeria","Nicaragua","Netherlands","Norway","Nepal","Nauru","New Zealand","Oman","Pakistan","Panama","Peru","Philippines","Palau","Papua New Guinea","Poland","North Korea","Portugal","Paraguay","Qatar","Romania","Russia","Rwanda","Saudi Arabia","Sudan","Senegal","Singapore","Solomon Islands","Sierra Leone","El Salvador","San Marino","Somalia","Serbia","South Sudan","Sao Tome and Principe","Suriname","Slovakia","Slovenia","Sweden","Eswatini","Seychelles","Syria","Chad","Togo","Thailand","Tajikistan","Turkmenistan","Timor-Leste","Tonga","Trinidad and Tobago","Tunisia","Turkey","Tuvalu","Tanzania","Uganda","Ukraine","Uruguay","United States","Uzbekistan","Vatican City","Saint Vincent and the Grenadines","Venezuela","Vietnam","Vanuatu","Samoa","Yemen","South Africa","Zambia","Zimbabwe"],"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"}]}},"\/avatars\/image":{"get":{"summary":"Get image from URL","operationId":"avatarsGetImage","consumes":["application\/json"],"produces":["image\/*"],"tags":["avatars"],"description":"Use this endpoint to fetch a remote image URL and crop it to any image size you want. This endpoint is very useful if you need to crop and display remote images in your app or in case you want to make sure a 3rd party image is properly served using a TLS protocol.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getImage","weight":56,"cookies":false,"type":"location","demo":"avatars\/get-image.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-image.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"url","description":"Image URL which you want to crop.","required":true,"type":"string","format":"url","x-example":"https:\/\/example.com","in":"query"},{"name":"width","description":"Resize preview image width, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get user initials","operationId":"avatarsGetInitials","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getInitials","weight":59,"cookies":false,"type":"location","demo":"avatars\/get-initials.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-initials.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"name","description":"Full Name. When empty, current user name or email will be used. Max length: 128 chars.","required":false,"type":"string","x-example":"[NAME]","default":"","in":"query"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":500,"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":500,"in":"query"},{"name":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"type":"string","default":"","in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR code","operationId":"avatarsGetQR","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getQR","weight":58,"cookies":false,"type":"location","demo":"avatars\/get-q-r.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-qr.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"text","description":"Plain text to be converted to QR code image.","required":true,"type":"string","x-example":"[TEXT]","in":"query"},{"name":"size","description":"QR code size. Pass an integer between 1 to 1000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":1,"default":400,"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"type":"integer","format":"int32","x-example":0,"default":1,"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"type":"boolean","x-example":false,"default":false,"in":"query"}]}},"\/console\/assistant":{"post":{"summary":"Ask Query","operationId":"assistantChat","consumes":["application\/json"],"produces":["text\/plain"],"tags":["assistant"],"description":"","responses":{"200":{"description":"File","schema":{"type":"file"}}},"x-appwrite":{"method":"chat","weight":304,"cookies":false,"type":"","demo":"assistant\/chat.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/assistant\/chat.md","rate-limit":15,"rate-time":3600,"rate-key":"userId:{userId}","scope":"assistant.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"prompt":{"type":"string","description":"Prompt. A string containing questions asked to the AI assistant.","default":null,"x-example":"[PROMPT]"}},"required":["prompt"]}}]}},"\/console\/variables":{"get":{"summary":"Get variables","operationId":"consoleVariables","consumes":["application\/json"],"produces":["application\/json"],"tags":["console"],"description":"Get all Environment Variables that are relevant for the console.","responses":{"200":{"description":"Console Variables","schema":{"$ref":"#\/definitions\/consoleVariables"}}},"x-appwrite":{"method":"variables","weight":303,"cookies":false,"type":"","demo":"console\/variables.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/console\/variables.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/databases":{"get":{"summary":"List databases","operationId":"databasesList","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all databases from the current Appwrite project. You can use the search parameter to filter your results.","responses":{"200":{"description":"Databases List","schema":{"$ref":"#\/definitions\/databaseList"}}},"x-appwrite":{"method":"list","weight":64,"cookies":false,"type":"","demo":"databases\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create database","operationId":"databasesCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Database.\n","responses":{"201":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"create","weight":63,"cookies":false,"type":"","demo":"databases\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"databaseId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[DATABASE_ID]"},"name":{"type":"string","description":"Database name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Is the database enabled? When set to 'disabled', users cannot access the database but Server SDKs with an API key can still read and write to the database. No data is lost when this is toggled.","default":true,"x-example":false}},"required":["databaseId","name"]}}]}},"\/databases\/usage":{"get":{"summary":"Get usage stats for the database","operationId":"databasesGetUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"UsageDatabases","schema":{"$ref":"#\/definitions\/usageDatabases"}}},"x-appwrite":{"method":"getUsage","weight":108,"cookies":false,"type":"","demo":"databases\/get-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"`Date range.","required":false,"type":"string","x-example":"24h","enum":["24h","30d","90d"],"x-enum-name":"DatabaseUsageRange","x-enum-keys":["Twenty Four Hours","Thirty Days","Ninety Days"],"default":"30d","in":"query"}]}},"\/databases\/{databaseId}":{"get":{"summary":"Get database","operationId":"databasesGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a database by its unique ID. This endpoint response returns a JSON object with the database metadata.","responses":{"200":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"get","weight":65,"cookies":false,"type":"","demo":"databases\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"}]},"put":{"summary":"Update database","operationId":"databasesUpdate","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a database by its unique ID.","responses":{"200":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"update","weight":67,"cookies":false,"type":"","demo":"databases\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Database name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Is database enabled? When set to 'disabled', users cannot access the database but Server SDKs with an API key can still read and write to the database. No data is lost when this is toggled.","default":true,"x-example":false}},"required":["name"]}}]},"delete":{"summary":"Delete database","operationId":"databasesDelete","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a database by its unique ID. Only API keys with with databases.write scope can delete a database.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":68,"cookies":false,"type":"","demo":"databases\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections":{"get":{"summary":"List collections","operationId":"databasesListCollections","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all collections that belong to the provided databaseId. You can use the search parameter to filter your results.","responses":{"200":{"description":"Collections List","schema":{"$ref":"#\/definitions\/collectionList"}}},"x-appwrite":{"method":"listCollections","weight":70,"cookies":false,"type":"","demo":"databases\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, documentSecurity","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create collection","operationId":"databasesCreateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Collection. Before using this route, you should create a new database resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"createCollection","weight":69,"cookies":false,"type":"","demo":"databases\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permissions strings. By default, no user is granted with any permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":false,"x-example":false},"enabled":{"type":"boolean","description":"Is collection enabled? When set to 'disabled', users cannot access the collection but Server SDKs with and API key can still read and write to the collection. No data is lost when this is toggled.","default":true,"x-example":false}},"required":["collectionId","name"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}":{"get":{"summary":"Get collection","operationId":"databasesGetCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a collection by its unique ID. This endpoint response returns a JSON object with the collection metadata.","responses":{"200":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"getCollection","weight":71,"cookies":false,"type":"","demo":"databases\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]},"put":{"summary":"Update collection","operationId":"databasesUpdateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a collection by its unique ID.","responses":{"200":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"updateCollection","weight":73,"cookies":false,"type":"","demo":"databases\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":false,"x-example":false},"enabled":{"type":"boolean","description":"Is collection enabled? When set to 'disabled', users cannot access the collection but Server SDKs with and API key can still read and write to the collection. No data is lost when this is toggled.","default":true,"x-example":false}},"required":["name"]}}]},"delete":{"summary":"Delete collection","operationId":"databasesDeleteCollection","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a collection by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteCollection","weight":74,"cookies":false,"type":"","demo":"databases\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes":{"get":{"summary":"List attributes","operationId":"databasesListAttributes","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Attributes List","schema":{"$ref":"#\/definitions\/attributeList"}}},"x-appwrite":{"method":"listAttributes","weight":85,"cookies":false,"type":"","demo":"databases\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: key, type, size, required, array, status, error","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create boolean attribute","operationId":"databasesCreateBooleanAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a boolean attribute.\n","responses":{"202":{"description":"AttributeBoolean","schema":{"$ref":"#\/definitions\/attributeBoolean"}}},"x-appwrite":{"method":"createBooleanAttribute","weight":82,"cookies":false,"type":"","demo":"databases\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":false},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean\/{key}":{"patch":{"summary":"Update boolean attribute","operationId":"databasesUpdateBooleanAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"","responses":{"200":{"description":"AttributeBoolean","schema":{"$ref":"#\/definitions\/attributeBoolean"}}},"x-appwrite":{"method":"updateBooleanAttribute","weight":94,"cookies":false,"type":"","demo":"databases\/update-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":false,"x-nullable":true}},"required":["required","default"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/datetime":{"post":{"summary":"Create datetime attribute","operationId":"databasesCreateDatetimeAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"AttributeDatetime","schema":{"$ref":"#\/definitions\/attributeDatetime"}}},"x-appwrite":{"method":"createDatetimeAttribute","weight":83,"cookies":false,"type":"","demo":"databases\/create-datetime-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-datetime-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for the attribute in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/datetime\/{key}":{"patch":{"summary":"Update dateTime attribute","operationId":"databasesUpdateDatetimeAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"","responses":{"200":{"description":"AttributeDatetime","schema":{"$ref":"#\/definitions\/attributeDatetime"}}},"x-appwrite":{"method":"updateDatetimeAttribute","weight":95,"cookies":false,"type":"","demo":"databases\/update-datetime-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-datetime-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null,"x-nullable":true}},"required":["required","default"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create email attribute","operationId":"databasesCreateEmailAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create an email attribute.\n","responses":{"202":{"description":"AttributeEmail","schema":{"$ref":"#\/definitions\/attributeEmail"}}},"x-appwrite":{"method":"createEmailAttribute","weight":76,"cookies":false,"type":"","demo":"databases\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"email@example.com"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/email\/{key}":{"patch":{"summary":"Update email attribute","operationId":"databasesUpdateEmailAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Update an email attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeEmail","schema":{"$ref":"#\/definitions\/attributeEmail"}}},"x-appwrite":{"method":"updateEmailAttribute","weight":88,"cookies":false,"type":"","demo":"databases\/update-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"email@example.com","x-nullable":true}},"required":["required","default"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create enum attribute","operationId":"databasesCreateEnumAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"AttributeEnum","schema":{"$ref":"#\/definitions\/attributeEnum"}}},"x-appwrite":{"method":"createEnumAttribute","weight":77,"cookies":false,"type":"","demo":"databases\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"elements":{"type":"array","description":"Array of elements in enumerated type. Uses length of longest element to determine size. Maximum of 100 elements are allowed, each 255 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","elements","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/enum\/{key}":{"patch":{"summary":"Update enum attribute","operationId":"databasesUpdateEnumAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Update an enum attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeEnum","schema":{"$ref":"#\/definitions\/attributeEnum"}}},"x-appwrite":{"method":"updateEnumAttribute","weight":89,"cookies":false,"type":"","demo":"databases\/update-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-enum-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"elements":{"type":"array","description":"Array of elements in enumerated type. Uses length of longest element to determine size. Maximum of 100 elements are allowed, each 255 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"[DEFAULT]","x-nullable":true}},"required":["elements","required","default"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create float attribute","operationId":"databasesCreateFloatAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeFloat","schema":{"$ref":"#\/definitions\/attributeFloat"}}},"x-appwrite":{"method":"createFloatAttribute","weight":81,"cookies":false,"type":"","demo":"databases\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"min":{"type":"number","description":"Minimum value to enforce on new documents","default":null,"x-example":null},"max":{"type":"number","description":"Maximum value to enforce on new documents","default":null,"x-example":null},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/float\/{key}":{"patch":{"summary":"Update float attribute","operationId":"databasesUpdateFloatAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Update a float attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeFloat","schema":{"$ref":"#\/definitions\/attributeFloat"}}},"x-appwrite":{"method":"updateFloatAttribute","weight":93,"cookies":false,"type":"","demo":"databases\/update-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"min":{"type":"number","description":"Minimum value to enforce on new documents","default":null,"x-example":null},"max":{"type":"number","description":"Maximum value to enforce on new documents","default":null,"x-example":null},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null,"x-nullable":true}},"required":["required","min","max","default"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create integer attribute","operationId":"databasesCreateIntegerAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeInteger","schema":{"$ref":"#\/definitions\/attributeInteger"}}},"x-appwrite":{"method":"createIntegerAttribute","weight":80,"cookies":false,"type":"","demo":"databases\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"min":{"type":"integer","description":"Minimum value to enforce on new documents","default":null,"x-example":null},"max":{"type":"integer","description":"Maximum value to enforce on new documents","default":null,"x-example":null},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/integer\/{key}":{"patch":{"summary":"Update integer attribute","operationId":"databasesUpdateIntegerAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Update an integer attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeInteger","schema":{"$ref":"#\/definitions\/attributeInteger"}}},"x-appwrite":{"method":"updateIntegerAttribute","weight":92,"cookies":false,"type":"","demo":"databases\/update-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"min":{"type":"integer","description":"Minimum value to enforce on new documents","default":null,"x-example":null},"max":{"type":"integer","description":"Maximum value to enforce on new documents","default":null,"x-example":null},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null,"x-nullable":true}},"required":["required","min","max","default"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP address attribute","operationId":"databasesCreateIpAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create IP address attribute.\n","responses":{"202":{"description":"AttributeIP","schema":{"$ref":"#\/definitions\/attributeIp"}}},"x-appwrite":{"method":"createIpAttribute","weight":78,"cookies":false,"type":"","demo":"databases\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/ip\/{key}":{"patch":{"summary":"Update IP address attribute","operationId":"databasesUpdateIpAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Update an ip attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeIP","schema":{"$ref":"#\/definitions\/attributeIp"}}},"x-appwrite":{"method":"updateIpAttribute","weight":90,"cookies":false,"type":"","demo":"databases\/update-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null,"x-nullable":true}},"required":["required","default"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/relationship":{"post":{"summary":"Create relationship attribute","operationId":"databasesCreateRelationshipAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create relationship attribute. [Learn more about relationship attributes](https:\/\/appwrite.io\/docs\/databases-relationships#relationship-attributes).\n","responses":{"202":{"description":"AttributeRelationship","schema":{"$ref":"#\/definitions\/attributeRelationship"}}},"x-appwrite":{"method":"createRelationshipAttribute","weight":84,"cookies":false,"type":"","demo":"databases\/create-relationship-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-relationship-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"relatedCollectionId":{"type":"string","description":"Related Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","default":null,"x-example":"[RELATED_COLLECTION_ID]"},"type":{"type":"string","description":"Relation type","default":null,"x-example":"oneToOne","enum":["oneToOne","manyToOne","manyToMany","oneToMany"],"x-enum-name":"RelationshipType","x-enum-keys":[]},"twoWay":{"type":"boolean","description":"Is Two Way?","default":false,"x-example":false},"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"twoWayKey":{"type":"string","description":"Two Way Attribute Key.","default":null,"x-example":null},"onDelete":{"type":"string","description":"Constraints option","default":"restrict","x-example":"cascade","enum":["cascade","restrict","setNull"],"x-enum-name":"RelationMutate","x-enum-keys":[]}},"required":["relatedCollectionId","type"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create string attribute","operationId":"databasesCreateStringAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a string attribute.\n","responses":{"202":{"description":"AttributeString","schema":{"$ref":"#\/definitions\/attributeString"}}},"x-appwrite":{"method":"createStringAttribute","weight":75,"cookies":false,"type":"","demo":"databases\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"size":{"type":"integer","description":"Attribute size for text attributes, in number of characters.","default":null,"x-example":1},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false},"encrypt":{"type":"boolean","description":"Toggle encryption for the attribute. Encryption enhances security by not storing any plain text values in the database. However, encrypted attributes cannot be queried.","default":false,"x-example":false}},"required":["key","size","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/string\/{key}":{"patch":{"summary":"Update string attribute","operationId":"databasesUpdateStringAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Update a string attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeString","schema":{"$ref":"#\/definitions\/attributeString"}}},"x-appwrite":{"method":"updateStringAttribute","weight":87,"cookies":false,"type":"","demo":"databases\/update-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"[DEFAULT]","x-nullable":true}},"required":["required","default"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL attribute","operationId":"databasesCreateUrlAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a URL attribute.\n","responses":{"202":{"description":"AttributeURL","schema":{"$ref":"#\/definitions\/attributeUrl"}}},"x-appwrite":{"method":"createUrlAttribute","weight":79,"cookies":false,"type":"","demo":"databases\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"https:\/\/example.com"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url\/{key}":{"patch":{"summary":"Update URL attribute","operationId":"databasesUpdateUrlAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Update an url attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeURL","schema":{"$ref":"#\/definitions\/attributeUrl"}}},"x-appwrite":{"method":"updateUrlAttribute","weight":91,"cookies":false,"type":"","demo":"databases\/update-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"https:\/\/example.com","x-nullable":true}},"required":["required","default"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get attribute","operationId":"databasesGetAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, or AttributeDatetime, or AttributeRelationship, or AttributeString","schema":{"x-oneOf":[{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeRelationship"},{"$ref":"#\/definitions\/attributeString"}]}}},"x-appwrite":{"method":"getAttribute","weight":86,"cookies":false,"type":"","demo":"databases\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"}]},"delete":{"summary":"Delete attribute","operationId":"databasesDeleteAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":97,"cookies":false,"type":"","demo":"databases\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/{key}\/relationship":{"patch":{"summary":"Update relationship attribute","operationId":"databasesUpdateRelationshipAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Update relationship attribute. [Learn more about relationship attributes](https:\/\/appwrite.io\/docs\/databases-relationships#relationship-attributes).\n","responses":{"200":{"description":"AttributeRelationship","schema":{"$ref":"#\/definitions\/attributeRelationship"}}},"x-appwrite":{"method":"updateRelationshipAttribute","weight":96,"cookies":false,"type":"","demo":"databases\/update-relationship-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-relationship-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"onDelete":{"type":"string","description":"Constraints option","default":null,"x-example":"cascade","enum":["cascade","restrict","setNull"],"x-enum-name":"RelationMutate","x-enum-keys":[]}}}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List documents","operationId":"databasesListDocuments","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","schema":{"$ref":"#\/definitions\/documentList"}}},"x-appwrite":{"method":"listDocuments","weight":103,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"post":{"summary":"Create document","operationId":"databasesCreateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"createDocument","weight":102,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","default":{},"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, only the current user is granted all permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get document","operationId":"databasesGetDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"getDocument","weight":104,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"patch":{"summary":"Update document","operationId":"databasesUpdateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"updateDocument","weight":106,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","default":[],"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete document","operationId":"databasesDeleteDocument","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":107,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}\/logs":{"get":{"summary":"List document logs","operationId":"databasesListDocumentLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get the document activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listDocumentLogs","weight":105,"cookies":false,"type":"","demo":"databases\/list-document-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes":{"get":{"summary":"List indexes","operationId":"databasesListIndexes","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Indexes List","schema":{"$ref":"#\/definitions\/indexList"}}},"x-appwrite":{"method":"listIndexes","weight":99,"cookies":false,"type":"","demo":"databases\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: key, type, status, attributes, error","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"post":{"summary":"Create index","operationId":"databasesCreateIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"createIndex","weight":98,"cookies":false,"type":"","demo":"databases\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Index Key.","default":null,"x-example":null},"type":{"type":"string","description":"Index type.","default":null,"x-example":"key","enum":["key","fulltext","unique","spatial"],"x-enum-name":"IndexType","x-enum-keys":[]},"attributes":{"type":"array","description":"Array of attributes to index. Maximum of 100 attributes are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders. Maximum of 100 orders are allowed.","default":[],"x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get index","operationId":"databasesGetIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"getIndex","weight":100,"cookies":false,"type":"","demo":"databases\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Index Key.","required":true,"type":"string","in":"path"}]},"delete":{"summary":"Delete index","operationId":"databasesDeleteIndex","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":101,"cookies":false,"type":"","demo":"databases\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Index Key.","required":true,"type":"string","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/logs":{"get":{"summary":"List collection logs","operationId":"databasesListCollectionLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get the collection activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listCollectionLogs","weight":72,"cookies":false,"type":"","demo":"databases\/list-collection-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/usage":{"get":{"summary":"Get usage stats for a collection","operationId":"databasesGetCollectionUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"UsageCollection","schema":{"$ref":"#\/definitions\/usageCollection"}}},"x-appwrite":{"method":"getCollectionUsage","weight":110,"cookies":false,"type":"","demo":"databases\/get-collection-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","enum":["24h","30d","90d"],"x-enum-name":"DatabaseUsageRange","x-enum-keys":["Twenty Four Hours","Thirty Days","Ninety Days"],"default":"30d","in":"query"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/databases\/{databaseId}\/logs":{"get":{"summary":"List database logs","operationId":"databasesListLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get the database activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listLogs","weight":66,"cookies":false,"type":"","demo":"databases\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/databases\/{databaseId}\/usage":{"get":{"summary":"Get usage stats for the database","operationId":"databasesGetDatabaseUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"UsageDatabase","schema":{"$ref":"#\/definitions\/usageDatabase"}}},"x-appwrite":{"method":"getDatabaseUsage","weight":109,"cookies":false,"type":"","demo":"databases\/get-database-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"range","description":"`Date range.","required":false,"type":"string","x-example":"24h","enum":["24h","30d","90d"],"x-enum-name":"DatabaseUsageRange","x-enum-keys":["Twenty Four Hours","Thirty Days","Ninety Days"],"default":"30d","in":"query"}]}},"\/functions":{"get":{"summary":"List functions","operationId":"functionsList","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the project's functions. You can use the query params to filter your results.","responses":{"200":{"description":"Functions List","schema":{"$ref":"#\/definitions\/functionList"}}},"x-appwrite":{"method":"list","weight":266,"cookies":false,"type":"","demo":"functions\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-functions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, runtime, deployment, schedule, scheduleNext, schedulePrevious, timeout, entrypoint, commands, installationId","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create function","operationId":"functionsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function. You can pass a list of [permissions](https:\/\/appwrite.io\/docs\/permissions) to allow different project users or team with access to execute the function using the client API.","responses":{"201":{"description":"Function","schema":{"$ref":"#\/definitions\/function"}}},"x-appwrite":{"method":"create","weight":265,"cookies":false,"type":"","demo":"functions\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"functionId":{"type":"string","description":"Function ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[FUNCTION_ID]"},"name":{"type":"string","description":"Function name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"runtime":{"type":"string","description":"Execution runtime.","default":null,"x-example":"node-18.0","enum":["node-18.0","php-8.0","ruby-3.1","python-3.9"],"x-enum-name":null,"x-enum-keys":[]},"execute":{"type":"array","description":"An array of role strings with execution permissions. By default no user is granted with any execute permissions. [learn more about roles](https:\/\/appwrite.io\/docs\/permissions#permission-roles). Maximum of 100 roles are allowed, each 64 characters long.","default":[],"x-example":"[\"any\"]","items":{"type":"string"}},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","default":[],"x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","default":"","x-example":null},"timeout":{"type":"integer","description":"Function maximum execution time in seconds.","default":15,"x-example":1},"enabled":{"type":"boolean","description":"Is function enabled? When set to 'disabled', users cannot access the function but Server SDKs with and API key can still access the function. No data is lost when this is toggled.","default":true,"x-example":false},"logging":{"type":"boolean","description":"Whether executions will be logged. When set to false, executions will not be logged, but will reduce resource used by your Appwrite project.","default":true,"x-example":false},"entrypoint":{"type":"string","description":"Entrypoint File. This path is relative to the \"providerRootDirectory\".","default":"","x-example":"[ENTRYPOINT]"},"commands":{"type":"string","description":"Build Commands.","default":"","x-example":"[COMMANDS]"},"installationId":{"type":"string","description":"Appwrite Installation ID for VCS (Version Control System) deployment.","default":"","x-example":"[INSTALLATION_ID]"},"providerRepositoryId":{"type":"string","description":"Repository ID of the repo linked to the function.","default":"","x-example":"[PROVIDER_REPOSITORY_ID]"},"providerBranch":{"type":"string","description":"Production branch for the repo linked to the function.","default":"","x-example":"[PROVIDER_BRANCH]"},"providerSilentMode":{"type":"boolean","description":"Is the VCS (Version Control System) connection in silent mode for the repo linked to the function? In silent mode, comments will not be made on commits and pull requests.","default":false,"x-example":false},"providerRootDirectory":{"type":"string","description":"Path to function code in the linked repo.","default":"","x-example":"[PROVIDER_ROOT_DIRECTORY]"},"templateRepository":{"type":"string","description":"Repository name of the template.","default":"","x-example":"[TEMPLATE_REPOSITORY]"},"templateOwner":{"type":"string","description":"The name of the owner of the template.","default":"","x-example":"[TEMPLATE_OWNER]"},"templateRootDirectory":{"type":"string","description":"Path to function code in the template repo.","default":"","x-example":"[TEMPLATE_ROOT_DIRECTORY]"},"templateBranch":{"type":"string","description":"Production branch for the repo linked to the function template.","default":"","x-example":"[TEMPLATE_BRANCH]"}},"required":["functionId","name","runtime"]}}]}},"\/functions\/runtimes":{"get":{"summary":"List runtimes","operationId":"functionsListRuntimes","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all runtimes that are currently active on your instance.","responses":{"200":{"description":"Runtimes List","schema":{"$ref":"#\/definitions\/runtimeList"}}},"x-appwrite":{"method":"listRuntimes","weight":267,"cookies":false,"type":"","demo":"functions\/list-runtimes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-runtimes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/functions\/usage":{"get":{"summary":"Get functions usage","operationId":"functionsGetUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"","responses":{"200":{"description":"UsageFunctions","schema":{"$ref":"#\/definitions\/usageFunctions"}}},"x-appwrite":{"method":"getUsage","weight":270,"cookies":false,"type":"","demo":"functions\/get-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","enum":["24h","30d","90d"],"x-enum-name":"FunctionUsageRange","x-enum-keys":["Twenty Four Hours","Thirty Days","Ninety Days"],"default":"30d","in":"query"}]}},"\/functions\/{functionId}":{"get":{"summary":"Get function","operationId":"functionsGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a function by its unique ID.","responses":{"200":{"description":"Function","schema":{"$ref":"#\/definitions\/function"}}},"x-appwrite":{"method":"get","weight":268,"cookies":false,"type":"","demo":"functions\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"}]},"put":{"summary":"Update function","operationId":"functionsUpdate","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Update function by its unique ID.","responses":{"200":{"description":"Function","schema":{"$ref":"#\/definitions\/function"}}},"x-appwrite":{"method":"update","weight":271,"cookies":false,"type":"","demo":"functions\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Function name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"runtime":{"type":"string","description":"Execution runtime.","default":"","x-example":"node-18.0","enum":["node-18.0","php-8.0","ruby-3.1","python-3.9"],"x-enum-name":null,"x-enum-keys":[]},"execute":{"type":"array","description":"An array of role strings with execution permissions. By default no user is granted with any execute permissions. [learn more about roles](https:\/\/appwrite.io\/docs\/permissions#permission-roles). Maximum of 100 roles are allowed, each 64 characters long.","default":[],"x-example":"[\"any\"]","items":{"type":"string"}},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","default":[],"x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","default":"","x-example":null},"timeout":{"type":"integer","description":"Maximum execution time in seconds.","default":15,"x-example":1},"enabled":{"type":"boolean","description":"Is function enabled? When set to 'disabled', users cannot access the function but Server SDKs with and API key can still access the function. No data is lost when this is toggled.","default":true,"x-example":false},"logging":{"type":"boolean","description":"Whether executions will be logged. When set to false, executions will not be logged, but will reduce resource used by your Appwrite project.","default":true,"x-example":false},"entrypoint":{"type":"string","description":"Entrypoint File. This path is relative to the \"providerRootDirectory\".","default":"","x-example":"[ENTRYPOINT]"},"commands":{"type":"string","description":"Build Commands.","default":"","x-example":"[COMMANDS]"},"installationId":{"type":"string","description":"Appwrite Installation ID for VCS (Version Controle System) deployment.","default":"","x-example":"[INSTALLATION_ID]"},"providerRepositoryId":{"type":"string","description":"Repository ID of the repo linked to the function","default":"","x-example":"[PROVIDER_REPOSITORY_ID]"},"providerBranch":{"type":"string","description":"Production branch for the repo linked to the function","default":"","x-example":"[PROVIDER_BRANCH]"},"providerSilentMode":{"type":"boolean","description":"Is the VCS (Version Control System) connection in silent mode for the repo linked to the function? In silent mode, comments will not be made on commits and pull requests.","default":false,"x-example":false},"providerRootDirectory":{"type":"string","description":"Path to function code in the linked repo.","default":"","x-example":"[PROVIDER_ROOT_DIRECTORY]"}},"required":["name"]}}]},"delete":{"summary":"Delete function","operationId":"functionsDelete","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"Delete a function by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":274,"cookies":false,"type":"","demo":"functions\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"}]}},"\/functions\/{functionId}\/deployments":{"get":{"summary":"List deployments","operationId":"functionsListDeployments","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the project's code deployments. You can use the query params to filter your results.","responses":{"200":{"description":"Deployments List","schema":{"$ref":"#\/definitions\/deploymentList"}}},"x-appwrite":{"method":"listDeployments","weight":276,"cookies":false,"type":"","demo":"functions\/list-deployments.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-deployments.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: size, buildId, activate, entrypoint, commands","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create deployment","operationId":"functionsCreateDeployment","consumes":["multipart\/form-data"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function code deployment. Use this endpoint to upload a new version of your code function. To execute your newly uploaded code, you'll need to update the function's deployment to use your new deployment UID.\n\nThis endpoint accepts a tar.gz file compressed with your code. Make sure to include any dependencies your code has within the compressed file. You can learn more about code packaging in the [Appwrite Cloud Functions tutorial](https:\/\/appwrite.io\/docs\/functions).\n\nUse the \"command\" param to set the entrypoint used to execute your code.","responses":{"202":{"description":"Deployment","schema":{"$ref":"#\/definitions\/deployment"}}},"x-appwrite":{"method":"createDeployment","weight":275,"cookies":false,"type":"","demo":"functions\/create-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":true,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"entrypoint","description":"Entrypoint File.","required":false,"type":"string","x-example":"[ENTRYPOINT]","in":"formData"},{"name":"commands","description":"Build Commands.","required":false,"type":"string","x-example":"[COMMANDS]","in":"formData"},{"name":"code","description":"Gzip file with your code package. When used with the Appwrite CLI, pass the path to your code directory, and the CLI will automatically package your code. Use a path that is within the current directory.","required":true,"type":"file","in":"formData"},{"name":"activate","description":"Automatically activate the deployment when it is finished building.","required":true,"type":"boolean","x-example":false,"in":"formData"}]}},"\/functions\/{functionId}\/deployments\/{deploymentId}":{"get":{"summary":"Get deployment","operationId":"functionsGetDeployment","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a code deployment by its unique ID.","responses":{"200":{"description":"Deployment","schema":{"$ref":"#\/definitions\/deployment"}}},"x-appwrite":{"method":"getDeployment","weight":277,"cookies":false,"type":"","demo":"functions\/get-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"type":"string","x-example":"[DEPLOYMENT_ID]","in":"path"}]},"patch":{"summary":"Update function deployment","operationId":"functionsUpdateDeployment","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Update the function code deployment ID using the unique function ID. Use this endpoint to switch the code deployment that should be executed by the execution endpoint.","responses":{"200":{"description":"Function","schema":{"$ref":"#\/definitions\/function"}}},"x-appwrite":{"method":"updateDeployment","weight":273,"cookies":false,"type":"","demo":"functions\/update-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-function-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"type":"string","x-example":"[DEPLOYMENT_ID]","in":"path"}]},"delete":{"summary":"Delete deployment","operationId":"functionsDeleteDeployment","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"Delete a code deployment by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDeployment","weight":278,"cookies":false,"type":"","demo":"functions\/delete-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"type":"string","x-example":"[DEPLOYMENT_ID]","in":"path"}]}},"\/functions\/{functionId}\/deployments\/{deploymentId}\/builds\/{buildId}":{"post":{"summary":"Create build","operationId":"functionsCreateBuild","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"Create a new build for an Appwrite Function deployment. This endpoint can be used to retry a failed build.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"createBuild","weight":279,"cookies":false,"type":"","demo":"functions\/create-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"type":"string","x-example":"[DEPLOYMENT_ID]","in":"path"},{"name":"buildId","description":"Build unique ID.","required":true,"type":"string","x-example":"[BUILD_ID]","in":"path"}]}},"\/functions\/{functionId}\/deployments\/{deploymentId}\/download":{"get":{"summary":"Download Deployment","operationId":"functionsDownloadDeployment","consumes":["application\/json"],"produces":["*\/*"],"tags":["functions"],"description":"Get a Deployment's contents by its unique ID. This endpoint supports range requests for partial or streaming file download.","responses":{"200":{"description":"File","schema":{"type":"file"}}},"x-appwrite":{"method":"downloadDeployment","weight":272,"cookies":false,"type":"location","demo":"functions\/download-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/download-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"type":"string","x-example":"[DEPLOYMENT_ID]","in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List executions","operationId":"functionsListExecutions","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","schema":{"$ref":"#\/definitions\/executionList"}}},"x-appwrite":{"method":"listExecutions","weight":281,"cookies":false,"type":"","demo":"functions\/list-executions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-executions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, responseStatusCode, duration","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create execution","operationId":"functionsCreateExecution","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","schema":{"$ref":"#\/definitions\/execution"}}},"x-appwrite":{"method":"createExecution","weight":280,"cookies":false,"type":"","demo":"functions\/create-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-execution.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"body":{"type":"string","description":"HTTP body of execution. Default value is empty string.","default":"","x-example":"[BODY]"},"async":{"type":"boolean","description":"Execute code in the background. Default value is false.","default":false,"x-example":false},"path":{"type":"string","description":"HTTP path of execution. Path can include query params. Default value is \/","default":"\/","x-example":"[PATH]"},"method":{"type":"string","description":"HTTP method of execution. Default value is GET.","default":"POST","x-example":"GET","enum":["GET","POST","PUT","PATCH","DELETE","OPTIONS"],"x-enum-name":"ExecutionMethod","x-enum-keys":[]},"headers":{"type":"object","description":"HTTP headers of execution. Defaults to empty.","default":[],"x-example":"{}"}}}}]}},"\/functions\/{functionId}\/executions\/{executionId}":{"get":{"summary":"Get execution","operationId":"functionsGetExecution","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a function execution log by its unique ID.","responses":{"200":{"description":"Execution","schema":{"$ref":"#\/definitions\/execution"}}},"x-appwrite":{"method":"getExecution","weight":282,"cookies":false,"type":"","demo":"functions\/get-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-execution.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"executionId","description":"Execution ID.","required":true,"type":"string","x-example":"[EXECUTION_ID]","in":"path"}]}},"\/functions\/{functionId}\/usage":{"get":{"summary":"Get function usage","operationId":"functionsGetFunctionUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"","responses":{"200":{"description":"UsageFunction","schema":{"$ref":"#\/definitions\/usageFunction"}}},"x-appwrite":{"method":"getFunctionUsage","weight":269,"cookies":false,"type":"","demo":"functions\/get-function-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","enum":["24h","30d","90d"],"x-enum-name":"FunctionUsageRange","x-enum-keys":["Twenty Four Hours","Thirty Days","Ninety Days"],"default":"30d","in":"query"}]}},"\/functions\/{functionId}\/variables":{"get":{"summary":"List variables","operationId":"functionsListVariables","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all variables of a specific function.","responses":{"200":{"description":"Variables List","schema":{"$ref":"#\/definitions\/variableList"}}},"x-appwrite":{"method":"listVariables","weight":284,"cookies":false,"type":"","demo":"functions\/list-variables.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-variables.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"}]},"post":{"summary":"Create variable","operationId":"functionsCreateVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function environment variable. These variables can be accessed in the function at runtime as environment variables.","responses":{"201":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"createVariable","weight":283,"cookies":false,"type":"","demo":"functions\/create-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","default":null,"x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","default":null,"x-example":"[VALUE]"}},"required":["key","value"]}}]}},"\/functions\/{functionId}\/variables\/{variableId}":{"get":{"summary":"Get variable","operationId":"functionsGetVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a variable by its unique ID.","responses":{"200":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"getVariable","weight":285,"cookies":false,"type":"","demo":"functions\/get-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"}]},"put":{"summary":"Update variable","operationId":"functionsUpdateVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Update variable by its unique ID.","responses":{"200":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"updateVariable","weight":286,"cookies":false,"type":"","demo":"functions\/update-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","default":null,"x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","default":null,"x-example":"[VALUE]"}},"required":["key"]}}]},"delete":{"summary":"Delete variable","operationId":"functionsDeleteVariable","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"Delete a variable by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteVariable","weight":287,"cookies":false,"type":"","demo":"functions\/delete-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"}]}},"\/graphql":{"post":{"summary":"GraphQL endpoint","operationId":"graphqlQuery","consumes":["application\/json"],"produces":["application\/json"],"tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","schema":{"$ref":"#\/definitions\/any"}}},"x-appwrite":{"method":"query","weight":302,"cookies":false,"type":"graphql","demo":"graphql\/query.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"query":{"type":"object","description":"The query or queries to execute.","default":{},"x-example":"{}"}},"required":["query"]}}]}},"\/graphql\/mutation":{"post":{"summary":"GraphQL endpoint","operationId":"graphqlMutation","consumes":["application\/json"],"produces":["application\/json"],"tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","schema":{"$ref":"#\/definitions\/any"}}},"x-appwrite":{"method":"mutation","weight":301,"cookies":false,"type":"graphql","demo":"graphql\/mutation.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"query":{"type":"object","description":"The query or queries to execute.","default":{},"x-example":"{}"}},"required":["query"]}}]}},"\/health":{"get":{"summary":"Get HTTP","operationId":"healthGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite HTTP server is up and responsive.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"get","weight":119,"cookies":false,"type":"","demo":"health\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/anti-virus":{"get":{"summary":"Get antivirus","operationId":"healthGetAntivirus","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite Antivirus server is up and connection is successful.","responses":{"200":{"description":"Health Antivirus","schema":{"$ref":"#\/definitions\/healthAntivirus"}}},"x-appwrite":{"method":"getAntivirus","weight":137,"cookies":false,"type":"","demo":"health\/get-antivirus.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-storage-anti-virus.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/cache":{"get":{"summary":"Get cache","operationId":"healthGetCache","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite in-memory cache servers are up and connection is successful.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"getCache","weight":122,"cookies":false,"type":"","demo":"health\/get-cache.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-cache.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/db":{"get":{"summary":"Get DB","operationId":"healthGetDB","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite database servers are up and connection is successful.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"getDB","weight":121,"cookies":false,"type":"","demo":"health\/get-d-b.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-db.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/pubsub":{"get":{"summary":"Get pubsub","operationId":"healthGetPubSub","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite pub-sub servers are up and connection is successful.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"getPubSub","weight":124,"cookies":false,"type":"","demo":"health\/get-pub-sub.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-pubsub.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/queue":{"get":{"summary":"Get queue","operationId":"healthGetQueue","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite queue messaging servers are up and connection is successful.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"getQueue","weight":123,"cookies":false,"type":"","demo":"health\/get-queue.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/queue\/builds":{"get":{"summary":"Get builds queue","operationId":"healthGetQueueBuilds","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of builds that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueBuilds","weight":129,"cookies":false,"type":"","demo":"health\/get-queue-builds.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-builds.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/certificates":{"get":{"summary":"Get certificates queue","operationId":"healthGetQueueCertificates","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of certificates that are waiting to be issued against [Letsencrypt](https:\/\/letsencrypt.org\/) in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueCertificates","weight":128,"cookies":false,"type":"","demo":"health\/get-queue-certificates.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-certificates.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/databases":{"get":{"summary":"Get databases queue","operationId":"healthGetQueueDatabases","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of database changes that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueDatabases","weight":130,"cookies":false,"type":"","demo":"health\/get-queue-databases.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-databases.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"name","description":"Queue name for which to check the queue size","required":false,"type":"string","x-example":"[NAME]","default":"database_db_main","in":"query"},{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/deletes":{"get":{"summary":"Get deletes queue","operationId":"healthGetQueueDeletes","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of background destructive changes that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueDeletes","weight":131,"cookies":false,"type":"","demo":"health\/get-queue-deletes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-deletes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/functions":{"get":{"summary":"Get functions queue","operationId":"healthGetQueueFunctions","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueFunctions","weight":135,"cookies":false,"type":"","demo":"health\/get-queue-functions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-functions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/logs":{"get":{"summary":"Get logs queue","operationId":"healthGetQueueLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of logs that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueLogs","weight":127,"cookies":false,"type":"","demo":"health\/get-queue-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/mails":{"get":{"summary":"Get mails queue","operationId":"healthGetQueueMails","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of mails that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueMails","weight":132,"cookies":false,"type":"","demo":"health\/get-queue-mails.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-mails.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/messaging":{"get":{"summary":"Get messaging queue","operationId":"healthGetQueueMessaging","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of messages that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueMessaging","weight":133,"cookies":false,"type":"","demo":"health\/get-queue-messaging.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-messaging.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/migrations":{"get":{"summary":"Get migrations queue","operationId":"healthGetQueueMigrations","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of migrations that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueMigrations","weight":134,"cookies":false,"type":"","demo":"health\/get-queue-migrations.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-migrations.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/webhooks":{"get":{"summary":"Get webhooks queue","operationId":"healthGetQueueWebhooks","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of webhooks that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueWebhooks","weight":126,"cookies":false,"type":"","demo":"health\/get-queue-webhooks.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-webhooks.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/storage\/local":{"get":{"summary":"Get local storage","operationId":"healthGetStorageLocal","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite local storage device is up and connection is successful.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"getStorageLocal","weight":136,"cookies":false,"type":"","demo":"health\/get-storage-local.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-storage-local.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/time":{"get":{"summary":"Get time","operationId":"healthGetTime","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite server time is synced with Google remote NTP server. We use this technology to smoothly handle leap seconds with no disruptive events. The [Network Time Protocol](https:\/\/en.wikipedia.org\/wiki\/Network_Time_Protocol) (NTP) is used by hundreds of millions of computers and devices to synchronize their clocks over the Internet. If your computer sets its own clock, it likely uses NTP.","responses":{"200":{"description":"Health Time","schema":{"$ref":"#\/definitions\/healthTime"}}},"x-appwrite":{"method":"getTime","weight":125,"cookies":false,"type":"","demo":"health\/get-time.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-time.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/locale":{"get":{"summary":"Get user locale","operationId":"localeGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"Get the current user location based on IP. Returns an object with user country code, country name, continent name, continent code, ip address and suggested currency. You can use the locale header to get the data in a supported language.\n\n([IP Geolocation by DB-IP](https:\/\/db-ip.com))","responses":{"200":{"description":"Locale","schema":{"$ref":"#\/definitions\/locale"}}},"x-appwrite":{"method":"get","weight":111,"cookies":false,"type":"","demo":"locale\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-locale.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/localed","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/codes":{"get":{"summary":"List Locale Codes","operationId":"localeListCodes","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all locale codes in [ISO 639-1](https:\/\/en.wikipedia.org\/wiki\/List_of_ISO_639-1_codes).","responses":{"200":{"description":"Locale codes list","schema":{"$ref":"#\/definitions\/localeCodeList"}}},"x-appwrite":{"method":"listCodes","weight":112,"cookies":false,"type":"","demo":"locale\/list-codes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-locale-codes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/localeCode","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/continents":{"get":{"summary":"List continents","operationId":"localeListContinents","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","schema":{"$ref":"#\/definitions\/continentList"}}},"x-appwrite":{"method":"listContinents","weight":116,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/continents","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List countries","operationId":"localeListCountries","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountries","weight":113,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/countries","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU countries","operationId":"localeListCountriesEU","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountriesEU","weight":114,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/countries\/eu","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List countries phone codes","operationId":"localeListCountriesPhones","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","schema":{"$ref":"#\/definitions\/phoneList"}}},"x-appwrite":{"method":"listCountriesPhones","weight":115,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/countries\/phones","offline-key":"","offline-response-key":"countryCode","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List currencies","operationId":"localeListCurrencies","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","schema":{"$ref":"#\/definitions\/currencyList"}}},"x-appwrite":{"method":"listCurrencies","weight":117,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/currencies","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List languages","operationId":"localeListLanguages","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","schema":{"$ref":"#\/definitions\/languageList"}}},"x-appwrite":{"method":"listLanguages","weight":118,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/languages","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/messaging\/messages":{"get":{"summary":"List messages","operationId":"messagingListMessages","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Message list","schema":{"$ref":"#\/definitions\/messageList"}}},"x-appwrite":{"method":"listMessages","weight":361,"cookies":false,"type":"","demo":"messaging\/list-messages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-messages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: scheduledAt, deliveredAt, deliveredTotal, status, description, providerType","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]}},"\/messaging\/messages\/email":{"post":{"summary":"Create an email.","operationId":"messagingCreateEmail","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Message","schema":{"$ref":"#\/definitions\/message"}}},"x-appwrite":{"method":"createEmail","weight":358,"cookies":false,"type":"","demo":"messaging\/create-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"messageId":{"type":"string","description":"Message ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[MESSAGE_ID]"},"subject":{"type":"string","description":"Email Subject.","default":null,"x-example":"[SUBJECT]"},"content":{"type":"string","description":"Email Content.","default":null,"x-example":"[CONTENT]"},"topics":{"type":"array","description":"List of Topic IDs.","default":[],"x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","default":[],"x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","default":[],"x-example":null,"items":{"type":"string"}},"cc":{"type":"array","description":"Array of target IDs to be added as CC.","default":[],"x-example":null,"items":{"type":"string"}},"bcc":{"type":"array","description":"Array of target IDs to be added as BCC.","default":[],"x-example":null,"items":{"type":"string"}},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","default":"draft","x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":"MessageType","x-enum-keys":[]},"html":{"type":"boolean","description":"Is content of type HTML","default":false,"x-example":false},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","default":null,"x-example":null}},"required":["messageId","subject","content"]}}]}},"\/messaging\/messages\/email\/{messageId}":{"patch":{"summary":"Update an email.","operationId":"messagingUpdateEmail","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Message","schema":{"$ref":"#\/definitions\/message"}}},"x-appwrite":{"method":"updateEmail","weight":365,"cookies":false,"type":"","demo":"messaging\/update-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"type":"string","x-example":"[MESSAGE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"topics":{"type":"array","description":"List of Topic IDs.","default":null,"x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","default":null,"x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","default":null,"x-example":null,"items":{"type":"string"}},"subject":{"type":"string","description":"Email Subject.","default":null,"x-example":"[SUBJECT]"},"content":{"type":"string","description":"Email Content.","default":null,"x-example":"[CONTENT]"},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","default":"draft","x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":"MessageType","x-enum-keys":[]},"html":{"type":"boolean","description":"Is content of type HTML","default":null,"x-example":false},"cc":{"type":"array","description":"Array of target IDs to be added as CC.","default":null,"x-example":null,"items":{"type":"string"}},"bcc":{"type":"array","description":"Array of target IDs to be added as BCC.","default":null,"x-example":null,"items":{"type":"string"}},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","default":null,"x-example":null}}}}]}},"\/messaging\/messages\/push":{"post":{"summary":"Create a push notification.","operationId":"messagingCreatePush","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Message","schema":{"$ref":"#\/definitions\/message"}}},"x-appwrite":{"method":"createPush","weight":360,"cookies":false,"type":"","demo":"messaging\/create-push.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-push-notification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"messageId":{"type":"string","description":"Message ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[MESSAGE_ID]"},"title":{"type":"string","description":"Title for push notification.","default":null,"x-example":"[TITLE]"},"body":{"type":"string","description":"Body for push notification.","default":null,"x-example":"[BODY]"},"topics":{"type":"array","description":"List of Topic IDs.","default":[],"x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","default":[],"x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","default":[],"x-example":null,"items":{"type":"string"}},"data":{"type":"object","description":"Additional Data for push notification.","default":{},"x-example":"{}"},"action":{"type":"string","description":"Action for push notification.","default":"","x-example":"[ACTION]"},"icon":{"type":"string","description":"Icon for push notification. Available only for Android and Web Platform.","default":"","x-example":"[ICON]"},"sound":{"type":"string","description":"Sound for push notification. Available only for Android and IOS Platform.","default":"","x-example":"[SOUND]"},"color":{"type":"string","description":"Color for push notification. Available only for Android Platform.","default":"","x-example":"[COLOR]"},"tag":{"type":"string","description":"Tag for push notification. Available only for Android Platform.","default":"","x-example":"[TAG]"},"badge":{"type":"string","description":"Badge for push notification. Available only for IOS Platform.","default":"","x-example":"[BADGE]"},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","default":"draft","x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":"MessageType","x-enum-keys":[]},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","default":null,"x-example":null}},"required":["messageId","title","body"]}}]}},"\/messaging\/messages\/push\/{messageId}":{"patch":{"summary":"Update a push notification.","operationId":"messagingUpdatePush","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Message","schema":{"$ref":"#\/definitions\/message"}}},"x-appwrite":{"method":"updatePush","weight":367,"cookies":false,"type":"","demo":"messaging\/update-push.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-push-notification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"type":"string","x-example":"[MESSAGE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"topics":{"type":"array","description":"List of Topic IDs.","default":null,"x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","default":null,"x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","default":null,"x-example":null,"items":{"type":"string"}},"title":{"type":"string","description":"Title for push notification.","default":null,"x-example":"[TITLE]"},"body":{"type":"string","description":"Body for push notification.","default":null,"x-example":"[BODY]"},"data":{"type":"object","description":"Additional Data for push notification.","default":{},"x-example":"{}"},"action":{"type":"string","description":"Action for push notification.","default":null,"x-example":"[ACTION]"},"icon":{"type":"string","description":"Icon for push notification. Available only for Android and Web platforms.","default":null,"x-example":"[ICON]"},"sound":{"type":"string","description":"Sound for push notification. Available only for Android and iOS platforms.","default":null,"x-example":"[SOUND]"},"color":{"type":"string","description":"Color for push notification. Available only for Android platforms.","default":null,"x-example":"[COLOR]"},"tag":{"type":"string","description":"Tag for push notification. Available only for Android platforms.","default":null,"x-example":"[TAG]"},"badge":{"type":"integer","description":"Badge for push notification. Available only for iOS platforms.","default":null,"x-example":null},"status":{"type":"string","description":"Message Status. Value must be either draft, cancelled, or processing.","default":null,"x-example":"draft","enum":["draft","cancelled","processing"],"x-enum-name":"MessageType","x-enum-keys":[]},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","default":null,"x-example":null}}}}]}},"\/messaging\/messages\/sms":{"post":{"summary":"Create an SMS.","operationId":"messagingCreateSMS","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Message","schema":{"$ref":"#\/definitions\/message"}}},"x-appwrite":{"method":"createSMS","weight":359,"cookies":false,"type":"","demo":"messaging\/create-s-m-s.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-sms.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"messageId":{"type":"string","description":"Message ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[MESSAGE_ID]"},"content":{"type":"string","description":"SMS Content.","default":null,"x-example":"[CONTENT]"},"topics":{"type":"array","description":"List of Topic IDs.","default":[],"x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","default":[],"x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","default":[],"x-example":null,"items":{"type":"string"}},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","default":"draft","x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":"MessageType","x-enum-keys":[]},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","default":null,"x-example":null}},"required":["messageId","content"]}}]}},"\/messaging\/messages\/sms\/{messageId}":{"patch":{"summary":"Update an SMS.","operationId":"messagingUpdateSMS","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Message","schema":{"$ref":"#\/definitions\/message"}}},"x-appwrite":{"method":"updateSMS","weight":366,"cookies":false,"type":"","demo":"messaging\/update-s-m-s.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"type":"string","x-example":"[MESSAGE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"topics":{"type":"array","description":"List of Topic IDs.","default":null,"x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","default":null,"x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","default":null,"x-example":null,"items":{"type":"string"}},"content":{"type":"string","description":"Email Content.","default":null,"x-example":"[CONTENT]"},"status":{"type":"string","description":"Message Status. Value must be either draft or cancelled or processing.","default":null,"x-example":"draft","enum":["draft","cancelled","processing"],"x-enum-name":"MessageType","x-enum-keys":[]},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","default":null,"x-example":null}}}}]}},"\/messaging\/messages\/{messageId}":{"get":{"summary":"Get a message","operationId":"messagingGetMessage","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Message","schema":{"$ref":"#\/definitions\/message"}}},"x-appwrite":{"method":"getMessage","weight":364,"cookies":false,"type":"","demo":"messaging\/get-message.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/get-message.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"type":"string","x-example":"[MESSAGE_ID]","in":"path"}]},"delete":{"summary":"Delete a message","operationId":"messagingDelete","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":368,"cookies":false,"type":"","demo":"messaging\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-message.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"type":"string","x-example":"[MESSAGE_ID]","in":"path"}]}},"\/messaging\/messages\/{messageId}\/logs":{"get":{"summary":"List message logs","operationId":"messagingListMessageLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listMessageLogs","weight":362,"cookies":false,"type":"","demo":"messaging\/list-message-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/messages\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"type":"string","x-example":"[MESSAGE_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/messaging\/messages\/{messageId}\/targets":{"get":{"summary":"List message targets","operationId":"messagingListTargets","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"List the targets associated with a message as set via the targets attribute.","responses":{"200":{"description":"Target list","schema":{"$ref":"#\/definitions\/targetList"}}},"x-appwrite":{"method":"listTargets","weight":363,"cookies":false,"type":"","demo":"messaging\/list-targets.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-message-targets.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"type":"string","x-example":"[MESSAGE_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, providerId, identifier, providerType","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/messaging\/providers":{"get":{"summary":"List providers","operationId":"messagingListProviders","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider list","schema":{"$ref":"#\/definitions\/providerList"}}},"x-appwrite":{"method":"listProviders","weight":333,"cookies":false,"type":"","demo":"messaging\/list-providers.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-providers.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, provider, type, enabled","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]}},"\/messaging\/providers\/apns":{"post":{"summary":"Create APNS provider","operationId":"messagingCreateAPNSProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createAPNSProvider","weight":332,"cookies":false,"type":"","demo":"messaging\/create-a-p-n-s-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-apns-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"authKey":{"type":"string","description":"APNS authentication key.","default":"","x-example":"[AUTH_KEY]"},"authKeyId":{"type":"string","description":"APNS authentication key ID.","default":"","x-example":"[AUTH_KEY_ID]"},"teamId":{"type":"string","description":"APNS team ID.","default":"","x-example":"[TEAM_ID]"},"bundleId":{"type":"string","description":"APNS bundle ID.","default":"","x-example":"[BUNDLE_ID]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name"]}}]}},"\/messaging\/providers\/apns\/{providerId}":{"patch":{"summary":"Update APNS provider","operationId":"messagingUpdateAPNSProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateAPNSProvider","weight":345,"cookies":false,"type":"","demo":"messaging\/update-a-p-n-s-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-apns-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"authKey":{"type":"string","description":"APNS authentication key.","default":"","x-example":"[AUTH_KEY]"},"authKeyId":{"type":"string","description":"APNS authentication key ID.","default":"","x-example":"[AUTH_KEY_ID]"},"teamId":{"type":"string","description":"APNS team ID.","default":"","x-example":"[TEAM_ID]"},"bundleId":{"type":"string","description":"APNS bundle ID.","default":"","x-example":"[BUNDLE_ID]"}}}}]}},"\/messaging\/providers\/fcm":{"post":{"summary":"Create FCM provider","operationId":"messagingCreateFCMProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createFCMProvider","weight":331,"cookies":false,"type":"","demo":"messaging\/create-f-c-m-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-fcm-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"serviceAccountJSON":{"type":"object","description":"FCM service account JSON.","default":{},"x-example":"{}"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name"]}}]}},"\/messaging\/providers\/fcm\/{providerId}":{"patch":{"summary":"Update FCM provider","operationId":"messagingUpdateFCMProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateFCMProvider","weight":344,"cookies":false,"type":"","demo":"messaging\/update-f-c-m-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-fcm-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"serviceAccountJSON":{"type":"object","description":"FCM service account JSON.","default":{},"x-example":"{}"}}}}]}},"\/messaging\/providers\/mailgun":{"post":{"summary":"Create Mailgun provider","operationId":"messagingCreateMailgunProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createMailgunProvider","weight":323,"cookies":false,"type":"","demo":"messaging\/create-mailgun-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-mailgun-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"apiKey":{"type":"string","description":"Mailgun API Key.","default":"","x-example":"[API_KEY]"},"domain":{"type":"string","description":"Mailgun Domain.","default":"","x-example":"[DOMAIN]"},"isEuRegion":{"type":"boolean","description":"Set as EU region.","default":null,"x-example":false},"fromName":{"type":"string","description":"Sender Name.","default":"","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","default":"","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the reply to field for the mail. Default value is sender name. Reply to name must have reply to email as well.","default":"","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the reply to field for the mail. Default value is sender email. Reply to email must have reply to name as well.","default":"","x-example":"email@example.com"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name"]}}]}},"\/messaging\/providers\/mailgun\/{providerId}":{"patch":{"summary":"Update Mailgun provider","operationId":"messagingUpdateMailgunProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateMailgunProvider","weight":336,"cookies":false,"type":"","demo":"messaging\/update-mailgun-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-mailgun-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"apiKey":{"type":"string","description":"Mailgun API Key.","default":"","x-example":"[API_KEY]"},"domain":{"type":"string","description":"Mailgun Domain.","default":"","x-example":"[DOMAIN]"},"isEuRegion":{"type":"boolean","description":"Set as EU region.","default":null,"x-example":false},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"fromName":{"type":"string","description":"Sender Name.","default":"","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","default":"","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the reply to field for the mail. Default value is sender name.","default":"","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the reply to field for the mail. Default value is sender email.","default":"","x-example":"[REPLY_TO_EMAIL]"}}}}]}},"\/messaging\/providers\/msg91":{"post":{"summary":"Create Msg91 provider","operationId":"messagingCreateMsg91Provider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createMsg91Provider","weight":326,"cookies":false,"type":"","demo":"messaging\/create-msg91provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-msg91-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":"","x-example":"+12065550100"},"senderId":{"type":"string","description":"Msg91 Sender ID.","default":"","x-example":"[SENDER_ID]"},"authKey":{"type":"string","description":"Msg91 Auth Key.","default":"","x-example":"[AUTH_KEY]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name"]}}]}},"\/messaging\/providers\/msg91\/{providerId}":{"patch":{"summary":"Update Msg91 provider","operationId":"messagingUpdateMsg91Provider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateMsg91Provider","weight":339,"cookies":false,"type":"","demo":"messaging\/update-msg91provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-msg91-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"senderId":{"type":"string","description":"Msg91 Sender ID.","default":"","x-example":"[SENDER_ID]"},"authKey":{"type":"string","description":"Msg91 Auth Key.","default":"","x-example":"[AUTH_KEY]"},"from":{"type":"string","description":"Sender number.","default":"","x-example":"[FROM]"}}}}]}},"\/messaging\/providers\/sendgrid":{"post":{"summary":"Create Sendgrid provider","operationId":"messagingCreateSendgridProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createSendgridProvider","weight":324,"cookies":false,"type":"","demo":"messaging\/create-sendgrid-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-sengrid-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"apiKey":{"type":"string","description":"Sendgrid API key.","default":"","x-example":"[API_KEY]"},"fromName":{"type":"string","description":"Sender Name.","default":"","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","default":"","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the reply to field for the mail. Default value is sender name.","default":"","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the reply to field for the mail. Default value is sender email.","default":"","x-example":"email@example.com"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name"]}}]}},"\/messaging\/providers\/sendgrid\/{providerId}":{"patch":{"summary":"Update Sendgrid provider","operationId":"messagingUpdateSendgridProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateSendgridProvider","weight":337,"cookies":false,"type":"","demo":"messaging\/update-sendgrid-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-sendgrid-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"apiKey":{"type":"string","description":"Sendgrid API key.","default":"","x-example":"[API_KEY]"},"fromName":{"type":"string","description":"Sender Name.","default":"","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","default":"","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the Reply To field for the mail. Default value is Sender Name.","default":"","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the Reply To field for the mail. Default value is Sender Email.","default":"","x-example":"[REPLY_TO_EMAIL]"}}}}]}},"\/messaging\/providers\/smtp":{"post":{"summary":"Create SMTP provider","operationId":"messagingCreateSMTPProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createSMTPProvider","weight":325,"cookies":false,"type":"","demo":"messaging\/create-s-m-t-p-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-smtp-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"host":{"type":"string","description":"SMTP hosts. Either a single hostname or multiple semicolon-delimited hostnames. You can also specify a different port for each host by using this format: [hostname:port] (e.g. \"smtp1.example.com:25;smtp2.example.com\"). You can also specify encryption type, for example: (e.g. \"tls:\/\/smtp1.example.com:587;ssl:\/\/smtp2.example.com:465\"). Hosts will be tried in order.","default":null,"x-example":"[HOST]"},"port":{"type":"integer","description":"The default SMTP server port.","default":587,"x-example":1},"username":{"type":"string","description":"Authentication username.","default":"","x-example":"[USERNAME]"},"password":{"type":"string","description":"Authentication password.","default":"","x-example":"[PASSWORD]"},"encryption":{"type":"string","description":"Encryption type. Can be omitted, 'ssl', or 'tls'","default":"","x-example":"none","enum":["none","ssl","tls"],"x-enum-name":"SMTPEncryption","x-enum-keys":[]},"autoTLS":{"type":"boolean","description":"Enable SMTP AutoTLS feature.","default":true,"x-example":false},"mailer":{"type":"string","description":"The value to use for the X-Mailer header.","default":"","x-example":"[MAILER]"},"fromName":{"type":"string","description":"Sender Name.","default":"","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","default":"","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the reply to field for the mail. Default value is sender name.","default":"","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the reply to field for the mail. Default value is sender email.","default":"","x-example":"email@example.com"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name","host"]}}]}},"\/messaging\/providers\/smtp\/{providerId}":{"patch":{"summary":"Update SMTP provider","operationId":"messagingUpdateSMTPProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateSMTPProvider","weight":338,"cookies":false,"type":"","demo":"messaging\/update-s-m-t-p-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-smtp-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"host":{"type":"string","description":"SMTP hosts. Either a single hostname or multiple semicolon-delimited hostnames. You can also specify a different port for each host by using this format: [hostname:port] (e.g. \"smtp1.example.com:25;smtp2.example.com\"). You can also specify encryption type, for example: (e.g. \"tls:\/\/smtp1.example.com:587;ssl:\/\/smtp2.example.com:465\"). Hosts will be tried in order.","default":"","x-example":"[HOST]"},"port":{"type":"integer","description":"SMTP port.","default":null,"x-example":1},"username":{"type":"string","description":"Authentication username.","default":"","x-example":"[USERNAME]"},"password":{"type":"string","description":"Authentication password.","default":"","x-example":"[PASSWORD]"},"encryption":{"type":"string","description":"Encryption type. Can be 'ssl' or 'tls'","default":"","x-example":"none","enum":["none","ssl","tls"],"x-enum-name":"SMTPEncryption","x-enum-keys":[]},"autoTLS":{"type":"boolean","description":"Enable SMTP AutoTLS feature.","default":null,"x-example":false},"fromName":{"type":"string","description":"Sender Name.","default":"","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","default":"","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the Reply To field for the mail. Default value is Sender Name.","default":"","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the Reply To field for the mail. Default value is Sender Email.","default":"","x-example":"[REPLY_TO_EMAIL]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}}}}]}},"\/messaging\/providers\/telesign":{"post":{"summary":"Create Telesign provider","operationId":"messagingCreateTelesignProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createTelesignProvider","weight":327,"cookies":false,"type":"","demo":"messaging\/create-telesign-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-telesign-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":"","x-example":"+12065550100"},"username":{"type":"string","description":"Telesign username.","default":"","x-example":"[USERNAME]"},"password":{"type":"string","description":"Telesign password.","default":"","x-example":"[PASSWORD]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name"]}}]}},"\/messaging\/providers\/telesign\/{providerId}":{"patch":{"summary":"Update Telesign provider","operationId":"messagingUpdateTelesignProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateTelesignProvider","weight":340,"cookies":false,"type":"","demo":"messaging\/update-telesign-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-telesign-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"username":{"type":"string","description":"Telesign username.","default":"","x-example":"[USERNAME]"},"password":{"type":"string","description":"Telesign password.","default":"","x-example":"[PASSWORD]"},"from":{"type":"string","description":"Sender number.","default":"","x-example":"[FROM]"}}}}]}},"\/messaging\/providers\/textmagic":{"post":{"summary":"Create Textmagic provider","operationId":"messagingCreateTextmagicProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createTextmagicProvider","weight":328,"cookies":false,"type":"","demo":"messaging\/create-textmagic-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-textmagic-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":"","x-example":"+12065550100"},"username":{"type":"string","description":"Textmagic username.","default":"","x-example":"[USERNAME]"},"apiKey":{"type":"string","description":"Textmagic apiKey.","default":"","x-example":"[API_KEY]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name"]}}]}},"\/messaging\/providers\/textmagic\/{providerId}":{"patch":{"summary":"Update Textmagic provider","operationId":"messagingUpdateTextmagicProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateTextmagicProvider","weight":341,"cookies":false,"type":"","demo":"messaging\/update-textmagic-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-textmagic-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"username":{"type":"string","description":"Textmagic username.","default":"","x-example":"[USERNAME]"},"apiKey":{"type":"string","description":"Textmagic apiKey.","default":"","x-example":"[API_KEY]"},"from":{"type":"string","description":"Sender number.","default":"","x-example":"[FROM]"}}}}]}},"\/messaging\/providers\/twilio":{"post":{"summary":"Create Twilio provider","operationId":"messagingCreateTwilioProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createTwilioProvider","weight":329,"cookies":false,"type":"","demo":"messaging\/create-twilio-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-twilio-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":"","x-example":"+12065550100"},"accountSid":{"type":"string","description":"Twilio account secret ID.","default":"","x-example":"[ACCOUNT_SID]"},"authToken":{"type":"string","description":"Twilio authentication token.","default":"","x-example":"[AUTH_TOKEN]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name"]}}]}},"\/messaging\/providers\/twilio\/{providerId}":{"patch":{"summary":"Update Twilio provider","operationId":"messagingUpdateTwilioProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateTwilioProvider","weight":342,"cookies":false,"type":"","demo":"messaging\/update-twilio-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-twilio-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"accountSid":{"type":"string","description":"Twilio account secret ID.","default":"","x-example":"[ACCOUNT_SID]"},"authToken":{"type":"string","description":"Twilio authentication token.","default":"","x-example":"[AUTH_TOKEN]"},"from":{"type":"string","description":"Sender number.","default":"","x-example":"[FROM]"}}}}]}},"\/messaging\/providers\/vonage":{"post":{"summary":"Create Vonage provider","operationId":"messagingCreateVonageProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createVonageProvider","weight":330,"cookies":false,"type":"","demo":"messaging\/create-vonage-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-vonage-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":"","x-example":"+12065550100"},"apiKey":{"type":"string","description":"Vonage API key.","default":"","x-example":"[API_KEY]"},"apiSecret":{"type":"string","description":"Vonage API secret.","default":"","x-example":"[API_SECRET]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name"]}}]}},"\/messaging\/providers\/vonage\/{providerId}":{"patch":{"summary":"Update Vonage provider","operationId":"messagingUpdateVonageProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateVonageProvider","weight":343,"cookies":false,"type":"","demo":"messaging\/update-vonage-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-vonage-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"apiKey":{"type":"string","description":"Vonage API key.","default":"","x-example":"[API_KEY]"},"apiSecret":{"type":"string","description":"Vonage API secret.","default":"","x-example":"[API_SECRET]"},"from":{"type":"string","description":"Sender number.","default":"","x-example":"[FROM]"}}}}]}},"\/messaging\/providers\/{providerId}":{"get":{"summary":"Get provider","operationId":"messagingGetProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"getProvider","weight":335,"cookies":false,"type":"","demo":"messaging\/get-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/get-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"}]},"delete":{"summary":"Delete provider","operationId":"messagingDeleteProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteProvider","weight":346,"cookies":false,"type":"","demo":"messaging\/delete-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"}]}},"\/messaging\/providers\/{providerId}\/logs":{"get":{"summary":"List provider logs","operationId":"messagingListProviderLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listProviderLogs","weight":334,"cookies":false,"type":"","demo":"messaging\/list-provider-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/providers\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/messaging\/subscribers\/{subscriberId}\/logs":{"get":{"summary":"List subscriber logs","operationId":"messagingListSubscriberLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listSubscriberLogs","weight":355,"cookies":false,"type":"","demo":"messaging\/list-subscriber-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/subscribers\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"subscriberId","description":"Subscriber ID.","required":true,"type":"string","x-example":"[SUBSCRIBER_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/messaging\/topics":{"get":{"summary":"List topics.","operationId":"messagingListTopics","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Topic list","schema":{"$ref":"#\/definitions\/topicList"}}},"x-appwrite":{"method":"listTopics","weight":348,"cookies":false,"type":"","demo":"messaging\/list-topics.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-topics.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, description, total","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create a topic.","operationId":"messagingCreateTopic","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Topic","schema":{"$ref":"#\/definitions\/topic"}}},"x-appwrite":{"method":"createTopic","weight":347,"cookies":false,"type":"","demo":"messaging\/create-topic.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-topic.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"topicId":{"type":"string","description":"Topic ID. Choose a custom Topic ID or a new Topic ID.","default":null,"x-example":"[TOPIC_ID]"},"name":{"type":"string","description":"Topic Name.","default":null,"x-example":"[NAME]"}},"required":["topicId","name"]}}]}},"\/messaging\/topics\/{topicId}":{"get":{"summary":"Get a topic.","operationId":"messagingGetTopic","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Topic","schema":{"$ref":"#\/definitions\/topic"}}},"x-appwrite":{"method":"getTopic","weight":350,"cookies":false,"type":"","demo":"messaging\/get-topic.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/get-topic.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID.","required":true,"type":"string","x-example":"[TOPIC_ID]","in":"path"}]},"patch":{"summary":"Update a topic.","operationId":"messagingUpdateTopic","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Topic","schema":{"$ref":"#\/definitions\/topic"}}},"x-appwrite":{"method":"updateTopic","weight":351,"cookies":false,"type":"","demo":"messaging\/update-topic.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-topic.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID.","required":true,"type":"string","x-example":"[TOPIC_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Topic Name.","default":"","x-example":"[NAME]"}}}}]},"delete":{"summary":"Delete a topic.","operationId":"messagingDeleteTopic","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteTopic","weight":352,"cookies":false,"type":"","demo":"messaging\/delete-topic.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-topic.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID.","required":true,"type":"string","x-example":"[TOPIC_ID]","in":"path"}]}},"\/messaging\/topics\/{topicId}\/logs":{"get":{"summary":"List topic logs","operationId":"messagingListTopicLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listTopicLogs","weight":349,"cookies":false,"type":"","demo":"messaging\/list-topic-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/topics\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID.","required":true,"type":"string","x-example":"[TOPIC_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/messaging\/topics\/{topicId}\/subscribers":{"get":{"summary":"List subscribers.","operationId":"messagingListSubscribers","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Subscriber list","schema":{"$ref":"#\/definitions\/subscriberList"}}},"x-appwrite":{"method":"listSubscribers","weight":354,"cookies":false,"type":"","demo":"messaging\/list-subscribers.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-subscribers.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID subscribed to.","required":true,"type":"string","x-example":"[TOPIC_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, provider, type, enabled","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create a subscriber.","operationId":"messagingCreateSubscriber","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Subscriber","schema":{"$ref":"#\/definitions\/subscriber"}}},"x-appwrite":{"method":"createSubscriber","weight":353,"cookies":false,"type":"","demo":"messaging\/create-subscriber.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-subscriber.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.write","platforms":["server","client","console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID to subscribe to.","required":true,"type":"string","x-example":"[TOPIC_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"subscriberId":{"type":"string","description":"Subscriber ID. Choose a custom Subscriber ID or a new Subscriber ID.","default":null,"x-example":"[SUBSCRIBER_ID]"},"targetId":{"type":"string","description":"Target ID. The target ID to link to the specified Topic ID.","default":null,"x-example":"[TARGET_ID]"}},"required":["subscriberId","targetId"]}}]}},"\/messaging\/topics\/{topicId}\/subscribers\/{subscriberId}":{"get":{"summary":"Get a subscriber.","operationId":"messagingGetSubscriber","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Subscriber","schema":{"$ref":"#\/definitions\/subscriber"}}},"x-appwrite":{"method":"getSubscriber","weight":356,"cookies":false,"type":"","demo":"messaging\/get-subscriber.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/get-subscriber.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID subscribed to.","required":true,"type":"string","x-example":"[TOPIC_ID]","in":"path"},{"name":"subscriberId","description":"Subscriber ID.","required":true,"type":"string","x-example":"[SUBSCRIBER_ID]","in":"path"}]},"delete":{"summary":"Delete a subscriber.","operationId":"messagingDeleteSubscriber","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSubscriber","weight":357,"cookies":false,"type":"","demo":"messaging\/delete-subscriber.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-subscriber.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.write","platforms":["server","client","console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID subscribed to.","required":true,"type":"string","x-example":"[TOPIC_ID]","in":"path"},{"name":"subscriberId","description":"Subscriber ID.","required":true,"type":"string","x-example":"[SUBSCRIBER_ID]","in":"path"}]}},"\/migrations":{"get":{"summary":"List Migrations","operationId":"migrationsList","consumes":["application\/json"],"produces":["application\/json"],"tags":["migrations"],"description":"","responses":{"200":{"description":"Migrations List","schema":{"$ref":"#\/definitions\/migrationList"}}},"x-appwrite":{"method":"list","weight":310,"cookies":false,"type":"","demo":"migrations\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/list-migrations.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: status, stage, source, resources, statusCounters, resourceData, errors","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]}},"\/migrations\/appwrite":{"post":{"summary":"Migrate Appwrite Data","operationId":"migrationsCreateAppwriteMigration","consumes":["application\/json"],"produces":["application\/json"],"tags":["migrations"],"description":"","responses":{"202":{"description":"Migration","schema":{"$ref":"#\/definitions\/migration"}}},"x-appwrite":{"method":"createAppwriteMigration","weight":305,"cookies":false,"type":"","demo":"migrations\/create-appwrite-migration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-appwrite.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"resources":{"type":"array","description":"List of resources to migrate","default":null,"x-example":null,"items":{"type":"string"}},"endpoint":{"type":"string","description":"Source's Appwrite Endpoint","default":null,"x-example":"https:\/\/example.com"},"projectId":{"type":"string","description":"Source's Project ID","default":null,"x-example":"[PROJECT_ID]"},"apiKey":{"type":"string","description":"Source's API Key","default":null,"x-example":"[API_KEY]"}},"required":["resources","endpoint","projectId","apiKey"]}}]}},"\/migrations\/appwrite\/report":{"get":{"summary":"Generate a report on Appwrite Data","operationId":"migrationsGetAppwriteReport","consumes":["application\/json"],"produces":["application\/json"],"tags":["migrations"],"description":"","responses":{"200":{"description":"Migration Report","schema":{"$ref":"#\/definitions\/migrationReport"}}},"x-appwrite":{"method":"getAppwriteReport","weight":312,"cookies":false,"type":"","demo":"migrations\/get-appwrite-report.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-appwrite-report.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"resources","description":"List of resources to migrate","required":true,"type":"array","collectionFormat":"multi","items":{"type":"string"},"in":"query"},{"name":"endpoint","description":"Source's Appwrite Endpoint","required":true,"type":"string","format":"url","x-example":"https:\/\/example.com","in":"query"},{"name":"projectID","description":"Source's Project ID","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"query"},{"name":"key","description":"Source's API Key","required":true,"type":"string","x-example":"[KEY]","in":"query"}]}},"\/migrations\/firebase":{"post":{"summary":"Migrate Firebase Data (Service Account)","operationId":"migrationsCreateFirebaseMigration","consumes":["application\/json"],"produces":["application\/json"],"tags":["migrations"],"description":"","responses":{"202":{"description":"Migration","schema":{"$ref":"#\/definitions\/migration"}}},"x-appwrite":{"method":"createFirebaseMigration","weight":307,"cookies":false,"type":"","demo":"migrations\/create-firebase-migration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-firebase.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"resources":{"type":"array","description":"List of resources to migrate","default":null,"x-example":null,"items":{"type":"string"}},"serviceAccount":{"type":"string","description":"JSON of the Firebase service account credentials","default":null,"x-example":"[SERVICE_ACCOUNT]"}},"required":["resources","serviceAccount"]}}]}},"\/migrations\/firebase\/deauthorize":{"get":{"summary":"Revoke Appwrite's authorization to access Firebase Projects","operationId":"migrationsDeleteFirebaseAuth","consumes":["application\/json"],"produces":["application\/json"],"tags":["migrations"],"description":"","responses":{"200":{"description":"File","schema":{"type":"file"}}},"x-appwrite":{"method":"deleteFirebaseAuth","weight":318,"cookies":false,"type":"","demo":"migrations\/delete-firebase-auth.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/migrations\/firebase\/oauth":{"post":{"summary":"Migrate Firebase Data (OAuth)","operationId":"migrationsCreateFirebaseOAuthMigration","consumes":["application\/json"],"produces":["application\/json"],"tags":["migrations"],"description":"","responses":{"202":{"description":"Migration","schema":{"$ref":"#\/definitions\/migration"}}},"x-appwrite":{"method":"createFirebaseOAuthMigration","weight":306,"cookies":false,"type":"","demo":"migrations\/create-firebase-o-auth-migration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-firebase.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"resources":{"type":"array","description":"List of resources to migrate","default":null,"x-example":null,"items":{"type":"string"}},"projectId":{"type":"string","description":"Project ID of the Firebase Project","default":null,"x-example":"[PROJECT_ID]"}},"required":["resources","projectId"]}}]}},"\/migrations\/firebase\/projects":{"get":{"summary":"List Firebase Projects","operationId":"migrationsListFirebaseProjects","consumes":["application\/json"],"produces":["application\/json"],"tags":["migrations"],"description":"","responses":{"200":{"description":"Migrations Firebase Projects List","schema":{"$ref":"#\/definitions\/firebaseProjectList"}}},"x-appwrite":{"method":"listFirebaseProjects","weight":317,"cookies":false,"type":"","demo":"migrations\/list-firebase-projects.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/migrations\/firebase\/report":{"get":{"summary":"Generate a report on Firebase Data","operationId":"migrationsGetFirebaseReport","consumes":["application\/json"],"produces":["application\/json"],"tags":["migrations"],"description":"","responses":{"200":{"description":"Migration Report","schema":{"$ref":"#\/definitions\/migrationReport"}}},"x-appwrite":{"method":"getFirebaseReport","weight":313,"cookies":false,"type":"","demo":"migrations\/get-firebase-report.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-firebase-report.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"resources","description":"List of resources to migrate","required":true,"type":"array","collectionFormat":"multi","items":{"type":"string"},"in":"query"},{"name":"serviceAccount","description":"JSON of the Firebase service account credentials","required":true,"type":"string","x-example":"[SERVICE_ACCOUNT]","in":"query"}]}},"\/migrations\/firebase\/report\/oauth":{"get":{"summary":"Generate a report on Firebase Data using OAuth","operationId":"migrationsGetFirebaseReportOAuth","consumes":["application\/json"],"produces":["application\/json"],"tags":["migrations"],"description":"","responses":{"200":{"description":"Migration Report","schema":{"$ref":"#\/definitions\/migrationReport"}}},"x-appwrite":{"method":"getFirebaseReportOAuth","weight":314,"cookies":false,"type":"","demo":"migrations\/get-firebase-report-o-auth.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-firebase-report.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"resources","description":"List of resources to migrate","required":true,"type":"array","collectionFormat":"multi","items":{"type":"string"},"in":"query"},{"name":"projectId","description":"Project ID","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"query"}]}},"\/migrations\/nhost":{"post":{"summary":"Migrate NHost Data","operationId":"migrationsCreateNHostMigration","consumes":["application\/json"],"produces":["application\/json"],"tags":["migrations"],"description":"","responses":{"202":{"description":"Migration","schema":{"$ref":"#\/definitions\/migration"}}},"x-appwrite":{"method":"createNHostMigration","weight":309,"cookies":false,"type":"","demo":"migrations\/create-n-host-migration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-nhost.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"resources":{"type":"array","description":"List of resources to migrate","default":null,"x-example":null,"items":{"type":"string"}},"subdomain":{"type":"string","description":"Source's Subdomain","default":null,"x-example":"[SUBDOMAIN]"},"region":{"type":"string","description":"Source's Region","default":null,"x-example":"[REGION]"},"adminSecret":{"type":"string","description":"Source's Admin Secret","default":null,"x-example":"[ADMIN_SECRET]"},"database":{"type":"string","description":"Source's Database Name","default":null,"x-example":"[DATABASE]"},"username":{"type":"string","description":"Source's Database Username","default":null,"x-example":"[USERNAME]"},"password":{"type":"string","description":"Source's Database Password","default":null,"x-example":"[PASSWORD]"},"port":{"type":"integer","description":"Source's Database Port","default":5432,"x-example":null}},"required":["resources","subdomain","region","adminSecret","database","username","password"]}}]}},"\/migrations\/nhost\/report":{"get":{"summary":"Generate a report on NHost Data","operationId":"migrationsGetNHostReport","consumes":["application\/json"],"produces":["application\/json"],"tags":["migrations"],"description":"","responses":{"200":{"description":"Migration Report","schema":{"$ref":"#\/definitions\/migrationReport"}}},"x-appwrite":{"method":"getNHostReport","weight":320,"cookies":false,"type":"","demo":"migrations\/get-n-host-report.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-nhost-report.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"resources","description":"List of resources to migrate.","required":true,"type":"array","collectionFormat":"multi","items":{"type":"string"},"in":"query"},{"name":"subdomain","description":"Source's Subdomain.","required":true,"type":"string","x-example":"[SUBDOMAIN]","in":"query"},{"name":"region","description":"Source's Region.","required":true,"type":"string","x-example":"[REGION]","in":"query"},{"name":"adminSecret","description":"Source's Admin Secret.","required":true,"type":"string","x-example":"[ADMIN_SECRET]","in":"query"},{"name":"database","description":"Source's Database Name.","required":true,"type":"string","x-example":"[DATABASE]","in":"query"},{"name":"username","description":"Source's Database Username.","required":true,"type":"string","x-example":"[USERNAME]","in":"query"},{"name":"password","description":"Source's Database Password.","required":true,"type":"string","x-example":"[PASSWORD]","in":"query"},{"name":"port","description":"Source's Database Port.","required":false,"type":"integer","format":"int32","default":5432,"in":"query"}]}},"\/migrations\/supabase":{"post":{"summary":"Migrate Supabase Data","operationId":"migrationsCreateSupabaseMigration","consumes":["application\/json"],"produces":["application\/json"],"tags":["migrations"],"description":"","responses":{"202":{"description":"Migration","schema":{"$ref":"#\/definitions\/migration"}}},"x-appwrite":{"method":"createSupabaseMigration","weight":308,"cookies":false,"type":"","demo":"migrations\/create-supabase-migration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-supabase.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"resources":{"type":"array","description":"List of resources to migrate","default":null,"x-example":null,"items":{"type":"string"}},"endpoint":{"type":"string","description":"Source's Supabase Endpoint","default":null,"x-example":"https:\/\/example.com"},"apiKey":{"type":"string","description":"Source's API Key","default":null,"x-example":"[API_KEY]"},"databaseHost":{"type":"string","description":"Source's Database Host","default":null,"x-example":"[DATABASE_HOST]"},"username":{"type":"string","description":"Source's Database Username","default":null,"x-example":"[USERNAME]"},"password":{"type":"string","description":"Source's Database Password","default":null,"x-example":"[PASSWORD]"},"port":{"type":"integer","description":"Source's Database Port","default":5432,"x-example":null}},"required":["resources","endpoint","apiKey","databaseHost","username","password"]}}]}},"\/migrations\/supabase\/report":{"get":{"summary":"Generate a report on Supabase Data","operationId":"migrationsGetSupabaseReport","consumes":["application\/json"],"produces":["application\/json"],"tags":["migrations"],"description":"","responses":{"200":{"description":"Migration Report","schema":{"$ref":"#\/definitions\/migrationReport"}}},"x-appwrite":{"method":"getSupabaseReport","weight":319,"cookies":false,"type":"","demo":"migrations\/get-supabase-report.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-supabase-report.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"resources","description":"List of resources to migrate","required":true,"type":"array","collectionFormat":"multi","items":{"type":"string"},"in":"query"},{"name":"endpoint","description":"Source's Supabase Endpoint.","required":true,"type":"string","format":"url","x-example":"https:\/\/example.com","in":"query"},{"name":"apiKey","description":"Source's API Key.","required":true,"type":"string","x-example":"[API_KEY]","in":"query"},{"name":"databaseHost","description":"Source's Database Host.","required":true,"type":"string","x-example":"[DATABASE_HOST]","in":"query"},{"name":"username","description":"Source's Database Username.","required":true,"type":"string","x-example":"[USERNAME]","in":"query"},{"name":"password","description":"Source's Database Password.","required":true,"type":"string","x-example":"[PASSWORD]","in":"query"},{"name":"port","description":"Source's Database Port.","required":false,"type":"integer","format":"int32","default":5432,"in":"query"}]}},"\/migrations\/{migrationId}":{"get":{"summary":"Get Migration","operationId":"migrationsGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["migrations"],"description":"","responses":{"200":{"description":"Migration","schema":{"$ref":"#\/definitions\/migration"}}},"x-appwrite":{"method":"get","weight":311,"cookies":false,"type":"","demo":"migrations\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/get-migration.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"migrationId","description":"Migration unique ID.","required":true,"type":"string","x-example":"[MIGRATION_ID]","in":"path"}]},"patch":{"summary":"Retry Migration","operationId":"migrationsRetry","consumes":["application\/json"],"produces":["application\/json"],"tags":["migrations"],"description":"","responses":{"202":{"description":"Migration","schema":{"$ref":"#\/definitions\/migration"}}},"x-appwrite":{"method":"retry","weight":321,"cookies":false,"type":"","demo":"migrations\/retry.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/retry-migration.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"migrationId","description":"Migration unique ID.","required":true,"type":"string","x-example":"[MIGRATION_ID]","in":"path"}]},"delete":{"summary":"Delete Migration","operationId":"migrationsDelete","consumes":["application\/json"],"produces":[],"tags":["migrations"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":322,"cookies":false,"type":"","demo":"migrations\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-migration.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"migrationId","description":"Migration ID.","required":true,"type":"string","x-example":"[MIGRATION_ID]","in":"path"}]}},"\/project\/usage":{"get":{"summary":"Get usage stats for a project","operationId":"projectGetUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["project"],"description":"","responses":{"200":{"description":"UsageProject","schema":{"$ref":"#\/definitions\/usageProject"}}},"x-appwrite":{"method":"getUsage","weight":179,"cookies":false,"type":"","demo":"project\/get-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"startDate","description":"Starting date for the usage","required":true,"type":"string","in":"query"},{"name":"endDate","description":"End date for the usage","required":true,"type":"string","in":"query"},{"name":"period","description":"Period used","required":false,"type":"string","x-example":"1h","enum":["1h","1d"],"x-enum-name":"ProjectUsageRange","x-enum-keys":["One Hour","One Day"],"default":"1d","in":"query"}]}},"\/project\/variables":{"get":{"summary":"List Variables","operationId":"projectListVariables","consumes":["application\/json"],"produces":["application\/json"],"tags":["project"],"description":"Get a list of all project variables. These variables will be accessible in all Appwrite Functions at runtime.","responses":{"200":{"description":"Variables List","schema":{"$ref":"#\/definitions\/variableList"}}},"x-appwrite":{"method":"listVariables","weight":181,"cookies":false,"type":"","demo":"project\/list-variables.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/project\/list-variables.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]},"post":{"summary":"Create Variable","operationId":"projectCreateVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["project"],"description":"Create a new project variable. This variable will be accessible in all Appwrite Functions at runtime.","responses":{"201":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"createVariable","weight":180,"cookies":false,"type":"","demo":"project\/create-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/project\/create-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","default":null,"x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","default":null,"x-example":"[VALUE]"}},"required":["key","value"]}}]}},"\/project\/variables\/{variableId}":{"get":{"summary":"Get Variable","operationId":"projectGetVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["project"],"description":"Get a project variable by its unique ID.","responses":{"200":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"getVariable","weight":182,"cookies":false,"type":"","demo":"project\/get-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/project\/get-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"}]},"put":{"summary":"Update Variable","operationId":"projectUpdateVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["project"],"description":"Update project variable by its unique ID. This variable will be accessible in all Appwrite Functions at runtime.","responses":{"200":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"updateVariable","weight":183,"cookies":false,"type":"","demo":"project\/update-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/project\/update-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","default":null,"x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","default":null,"x-example":"[VALUE]"}},"required":["key"]}}]},"delete":{"summary":"Delete Variable","operationId":"projectDeleteVariable","consumes":["application\/json"],"produces":[],"tags":["project"],"description":"Delete a project variable by its unique ID. ","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteVariable","weight":184,"cookies":false,"type":"","demo":"project\/delete-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/project\/delete-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"}]}},"\/projects":{"get":{"summary":"List projects","operationId":"projectsList","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Projects List","schema":{"$ref":"#\/definitions\/projectList"}}},"x-appwrite":{"method":"list","weight":140,"cookies":false,"type":"","demo":"projects\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, teamId","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create project","operationId":"projectsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"201":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"create","weight":139,"cookies":false,"type":"","demo":"projects\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"projectId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, and hyphen. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":null},"name":{"type":"string","description":"Project name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"teamId":{"type":"string","description":"Team unique ID.","default":null,"x-example":"[TEAM_ID]"},"region":{"type":"string","description":"Project Region.","default":"default","x-example":"default","enum":["default"],"x-enum-name":null,"x-enum-keys":[]},"description":{"type":"string","description":"Project description. Max length: 256 chars.","default":"","x-example":"[DESCRIPTION]"},"logo":{"type":"string","description":"Project logo.","default":"","x-example":"[LOGO]"},"url":{"type":"string","description":"Project URL.","default":"","x-example":"https:\/\/example.com"},"legalName":{"type":"string","description":"Project legal Name. Max length: 256 chars.","default":"","x-example":"[LEGAL_NAME]"},"legalCountry":{"type":"string","description":"Project legal Country. Max length: 256 chars.","default":"","x-example":"[LEGAL_COUNTRY]"},"legalState":{"type":"string","description":"Project legal State. Max length: 256 chars.","default":"","x-example":"[LEGAL_STATE]"},"legalCity":{"type":"string","description":"Project legal City. Max length: 256 chars.","default":"","x-example":"[LEGAL_CITY]"},"legalAddress":{"type":"string","description":"Project legal Address. Max length: 256 chars.","default":"","x-example":"[LEGAL_ADDRESS]"},"legalTaxId":{"type":"string","description":"Project legal Tax ID. Max length: 256 chars.","default":"","x-example":"[LEGAL_TAX_ID]"}},"required":["projectId","name","teamId"]}}]}},"\/projects\/{projectId}":{"get":{"summary":"Get project","operationId":"projectsGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"get","weight":141,"cookies":false,"type":"","demo":"projects\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"}]},"patch":{"summary":"Update project","operationId":"projectsUpdate","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"update","weight":142,"cookies":false,"type":"","demo":"projects\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Project name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"description":{"type":"string","description":"Project description. Max length: 256 chars.","default":"","x-example":"[DESCRIPTION]"},"logo":{"type":"string","description":"Project logo.","default":"","x-example":"[LOGO]"},"url":{"type":"string","description":"Project URL.","default":"","x-example":"https:\/\/example.com"},"legalName":{"type":"string","description":"Project legal name. Max length: 256 chars.","default":"","x-example":"[LEGAL_NAME]"},"legalCountry":{"type":"string","description":"Project legal country. Max length: 256 chars.","default":"","x-example":"[LEGAL_COUNTRY]"},"legalState":{"type":"string","description":"Project legal state. Max length: 256 chars.","default":"","x-example":"[LEGAL_STATE]"},"legalCity":{"type":"string","description":"Project legal city. Max length: 256 chars.","default":"","x-example":"[LEGAL_CITY]"},"legalAddress":{"type":"string","description":"Project legal address. Max length: 256 chars.","default":"","x-example":"[LEGAL_ADDRESS]"},"legalTaxId":{"type":"string","description":"Project legal tax ID. Max length: 256 chars.","default":"","x-example":"[LEGAL_TAX_ID]"}},"required":["name"]}}]},"delete":{"summary":"Delete project","operationId":"projectsDelete","consumes":["application\/json"],"produces":[],"tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":154,"cookies":false,"type":"","demo":"projects\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"}]}},"\/projects\/{projectId}\/auth\/duration":{"patch":{"summary":"Update project authentication duration","operationId":"projectsUpdateAuthDuration","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateAuthDuration","weight":148,"cookies":false,"type":"","demo":"projects\/update-auth-duration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"duration":{"type":"integer","description":"Project session length in seconds. Max length: 31536000 seconds.","default":null,"x-example":0}},"required":["duration"]}}]}},"\/projects\/{projectId}\/auth\/limit":{"patch":{"summary":"Update project users limit","operationId":"projectsUpdateAuthLimit","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateAuthLimit","weight":147,"cookies":false,"type":"","demo":"projects\/update-auth-limit.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"limit":{"type":"integer","description":"Set the max number of users allowed in this project. Use 0 for unlimited.","default":null,"x-example":0}},"required":["limit"]}}]}},"\/projects\/{projectId}\/auth\/max-sessions":{"patch":{"summary":"Update project user sessions limit","operationId":"projectsUpdateAuthSessionsLimit","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateAuthSessionsLimit","weight":153,"cookies":false,"type":"","demo":"projects\/update-auth-sessions-limit.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"limit":{"type":"integer","description":"Set the max number of users allowed in this project. Value allowed is between 1-100. Default is 10","default":null,"x-example":1}},"required":["limit"]}}]}},"\/projects\/{projectId}\/auth\/password-dictionary":{"patch":{"summary":"Update authentication password dictionary status. Use this endpoint to enable or disable the dicitonary check for user password","operationId":"projectsUpdateAuthPasswordDictionary","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateAuthPasswordDictionary","weight":151,"cookies":false,"type":"","demo":"projects\/update-auth-password-dictionary.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Set whether or not to enable checking user's password against most commonly used passwords. Default is false.","default":null,"x-example":false}},"required":["enabled"]}}]}},"\/projects\/{projectId}\/auth\/password-history":{"patch":{"summary":"Update authentication password history. Use this endpoint to set the number of password history to save and 0 to disable password history.","operationId":"projectsUpdateAuthPasswordHistory","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateAuthPasswordHistory","weight":150,"cookies":false,"type":"","demo":"projects\/update-auth-password-history.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"limit":{"type":"integer","description":"Set the max number of passwords to store in user history. User can't choose a new password that is already stored in the password history list. Max number of passwords allowed in history is20. Default value is 0","default":null,"x-example":0}},"required":["limit"]}}]}},"\/projects\/{projectId}\/auth\/personal-data":{"patch":{"summary":"Enable or disable checking user passwords for similarity with their personal data.","operationId":"projectsUpdatePersonalDataCheck","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updatePersonalDataCheck","weight":152,"cookies":false,"type":"","demo":"projects\/update-personal-data-check.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Set whether or not to check a password for similarity with personal data. Default is false.","default":null,"x-example":false}},"required":["enabled"]}}]}},"\/projects\/{projectId}\/auth\/{method}":{"patch":{"summary":"Update project auth method status. Use this endpoint to enable or disable a given auth method for this project.","operationId":"projectsUpdateAuthStatus","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateAuthStatus","weight":149,"cookies":false,"type":"","demo":"projects\/update-auth-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"method","description":"Auth Method. Possible values: email-password,magic-url,email-otp,anonymous,invites,jwt,phone","required":true,"type":"string","x-example":"email-password","enum":["email-password","magic-url","email-otp","anonymous","invites","jwt","phone"],"x-enum-name":"AuthMethod","x-enum-keys":[],"in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"status":{"type":"boolean","description":"Set the status of this auth method.","default":null,"x-example":false}},"required":["status"]}}]}},"\/projects\/{projectId}\/keys":{"get":{"summary":"List keys","operationId":"projectsListKeys","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"API Keys List","schema":{"$ref":"#\/definitions\/keyList"}}},"x-appwrite":{"method":"listKeys","weight":162,"cookies":false,"type":"","demo":"projects\/list-keys.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"}]},"post":{"summary":"Create key","operationId":"projectsCreateKey","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"201":{"description":"Key","schema":{"$ref":"#\/definitions\/key"}}},"x-appwrite":{"method":"createKey","weight":161,"cookies":false,"type":"","demo":"projects\/create-key.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Key name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"scopes":{"type":"array","description":"Key scopes list. Maximum of 100 scopes are allowed.","default":null,"x-example":null,"items":{"type":"string"}},"expire":{"type":"string","description":"Expiration time in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. Use null for unlimited expiration.","default":null,"x-example":null}},"required":["name","scopes"]}}]}},"\/projects\/{projectId}\/keys\/{keyId}":{"get":{"summary":"Get key","operationId":"projectsGetKey","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Key","schema":{"$ref":"#\/definitions\/key"}}},"x-appwrite":{"method":"getKey","weight":163,"cookies":false,"type":"","demo":"projects\/get-key.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"keyId","description":"Key unique ID.","required":true,"type":"string","x-example":"[KEY_ID]","in":"path"}]},"put":{"summary":"Update key","operationId":"projectsUpdateKey","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Key","schema":{"$ref":"#\/definitions\/key"}}},"x-appwrite":{"method":"updateKey","weight":164,"cookies":false,"type":"","demo":"projects\/update-key.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"keyId","description":"Key unique ID.","required":true,"type":"string","x-example":"[KEY_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Key name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"scopes":{"type":"array","description":"Key scopes list. Maximum of 100 events are allowed.","default":null,"x-example":null,"items":{"type":"string"}},"expire":{"type":"string","description":"Expiration time in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. Use null for unlimited expiration.","default":null,"x-example":null}},"required":["name","scopes"]}}]},"delete":{"summary":"Delete key","operationId":"projectsDeleteKey","consumes":["application\/json"],"produces":[],"tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteKey","weight":165,"cookies":false,"type":"","demo":"projects\/delete-key.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"keyId","description":"Key unique ID.","required":true,"type":"string","x-example":"[KEY_ID]","in":"path"}]}},"\/projects\/{projectId}\/oauth2":{"patch":{"summary":"Update project OAuth2","operationId":"projectsUpdateOAuth2","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateOAuth2","weight":146,"cookies":false,"type":"","demo":"projects\/update-o-auth2.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"provider":{"type":"string","description":"Provider Name","default":null,"x-example":"amazon","enum":["amazon","apple","auth0","authentik","autodesk","bitbucket","bitly","box","dailymotion","discord","disqus","dropbox","etsy","facebook","github","gitlab","google","linkedin","microsoft","notion","oidc","okta","paypal","paypalSandbox","podio","salesforce","slack","spotify","stripe","tradeshift","tradeshiftBox","twitch","wordpress","yahoo","yammer","yandex","zoho","zoom","mock"],"x-enum-name":"OAuthProvider","x-enum-keys":[]},"appId":{"type":"string","description":"Provider app ID. Max length: 256 chars.","default":null,"x-example":"[APP_ID]"},"secret":{"type":"string","description":"Provider secret key. Max length: 512 chars.","default":null,"x-example":"[SECRET]"},"enabled":{"type":"boolean","description":"Provider status. Set to 'false' to disable new session creation.","default":null,"x-example":false}},"required":["provider"]}}]}},"\/projects\/{projectId}\/platforms":{"get":{"summary":"List platforms","operationId":"projectsListPlatforms","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Platforms List","schema":{"$ref":"#\/definitions\/platformList"}}},"x-appwrite":{"method":"listPlatforms","weight":167,"cookies":false,"type":"","demo":"projects\/list-platforms.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"}]},"post":{"summary":"Create platform","operationId":"projectsCreatePlatform","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"201":{"description":"Platform","schema":{"$ref":"#\/definitions\/platform"}}},"x-appwrite":{"method":"createPlatform","weight":166,"cookies":false,"type":"","demo":"projects\/create-platform.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"type":{"type":"string","description":"Platform type.","default":null,"x-example":"web","enum":["web","flutter-web","flutter-ios","flutter-android","flutter-linux","flutter-macos","flutter-windows","apple-ios","apple-macos","apple-watchos","apple-tvos","android","unity"],"x-enum-name":"PlatformType","x-enum-keys":[]},"name":{"type":"string","description":"Platform name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"key":{"type":"string","description":"Package name for Android or bundle ID for iOS or macOS. Max length: 256 chars.","default":"","x-example":"[KEY]"},"store":{"type":"string","description":"App store or Google Play store ID. Max length: 256 chars.","default":"","x-example":"[STORE]"},"hostname":{"type":"string","description":"Platform client hostname. Max length: 256 chars.","default":"","x-example":null}},"required":["type","name"]}}]}},"\/projects\/{projectId}\/platforms\/{platformId}":{"get":{"summary":"Get platform","operationId":"projectsGetPlatform","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Platform","schema":{"$ref":"#\/definitions\/platform"}}},"x-appwrite":{"method":"getPlatform","weight":168,"cookies":false,"type":"","demo":"projects\/get-platform.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"platformId","description":"Platform unique ID.","required":true,"type":"string","x-example":"[PLATFORM_ID]","in":"path"}]},"put":{"summary":"Update platform","operationId":"projectsUpdatePlatform","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Platform","schema":{"$ref":"#\/definitions\/platform"}}},"x-appwrite":{"method":"updatePlatform","weight":169,"cookies":false,"type":"","demo":"projects\/update-platform.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"platformId","description":"Platform unique ID.","required":true,"type":"string","x-example":"[PLATFORM_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Platform name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"key":{"type":"string","description":"Package name for android or bundle ID for iOS. Max length: 256 chars.","default":"","x-example":"[KEY]"},"store":{"type":"string","description":"App store or Google Play store ID. Max length: 256 chars.","default":"","x-example":"[STORE]"},"hostname":{"type":"string","description":"Platform client URL. Max length: 256 chars.","default":"","x-example":null}},"required":["name"]}}]},"delete":{"summary":"Delete platform","operationId":"projectsDeletePlatform","consumes":["application\/json"],"produces":[],"tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deletePlatform","weight":170,"cookies":false,"type":"","demo":"projects\/delete-platform.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"platformId","description":"Platform unique ID.","required":true,"type":"string","x-example":"[PLATFORM_ID]","in":"path"}]}},"\/projects\/{projectId}\/service":{"patch":{"summary":"Update service status","operationId":"projectsUpdateServiceStatus","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateServiceStatus","weight":144,"cookies":false,"type":"","demo":"projects\/update-service-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"service":{"type":"string","description":"Service name.","default":null,"x-example":"account","enum":["account","avatars","databases","locale","health","storage","teams","users","functions","graphql","messaging"],"x-enum-name":"APIService","x-enum-keys":[]},"status":{"type":"boolean","description":"Service status.","default":null,"x-example":false}},"required":["service","status"]}}]}},"\/projects\/{projectId}\/service\/all":{"patch":{"summary":"Update all service status","operationId":"projectsUpdateServiceStatusAll","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateServiceStatusAll","weight":145,"cookies":false,"type":"","demo":"projects\/update-service-status-all.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"status":{"type":"boolean","description":"Service status.","default":null,"x-example":false}},"required":["status"]}}]}},"\/projects\/{projectId}\/smtp":{"patch":{"summary":"Update SMTP","operationId":"projectsUpdateSmtp","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateSmtp","weight":171,"cookies":false,"type":"","demo":"projects\/update-smtp.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enable custom SMTP service","default":null,"x-example":false},"senderName":{"type":"string","description":"Name of the email sender","default":"","x-example":"[SENDER_NAME]"},"senderEmail":{"type":"string","description":"Email of the sender","default":"","x-example":"email@example.com"},"replyTo":{"type":"string","description":"Reply to email","default":"","x-example":"email@example.com"},"host":{"type":"string","description":"SMTP server host name","default":"","x-example":null},"port":{"type":"integer","description":"SMTP server port","default":587,"x-example":null},"username":{"type":"string","description":"SMTP server username","default":"","x-example":"[USERNAME]"},"password":{"type":"string","description":"SMTP server password","default":"","x-example":"[PASSWORD]"},"secure":{"type":"string","description":"Does SMTP server use secure connection","default":"","x-example":"tls","enum":["tls"],"x-enum-name":"SMTPSecure","x-enum-keys":[]}},"required":["enabled"]}}]}},"\/projects\/{projectId}\/smtp\/tests":{"post":{"summary":"Create SMTP test","operationId":"projectsCreateSmtpTest","consumes":["application\/json"],"produces":[],"tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"createSmtpTest","weight":172,"cookies":false,"type":"","demo":"projects\/create-smtp-test.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"emails":{"type":"array","description":"Array of emails to send test email to. Maximum of 10 emails are allowed.","default":null,"x-example":null,"items":{"type":"string"}},"senderName":{"type":"string","description":"Name of the email sender","default":null,"x-example":"[SENDER_NAME]"},"senderEmail":{"type":"string","description":"Email of the sender","default":null,"x-example":"email@example.com"},"replyTo":{"type":"string","description":"Reply to email","default":"","x-example":"email@example.com"},"host":{"type":"string","description":"SMTP server host name","default":null,"x-example":null},"port":{"type":"integer","description":"SMTP server port","default":587,"x-example":null},"username":{"type":"string","description":"SMTP server username","default":"","x-example":"[USERNAME]"},"password":{"type":"string","description":"SMTP server password","default":"","x-example":"[PASSWORD]"},"secure":{"type":"string","description":"Does SMTP server use secure connection","default":"","x-example":"tls","enum":["tls"],"x-enum-name":"SMTPSecure","x-enum-keys":[]}},"required":["emails","senderName","senderEmail","host"]}}]}},"\/projects\/{projectId}\/team":{"patch":{"summary":"Update Project Team","operationId":"projectsUpdateTeam","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateTeam","weight":143,"cookies":false,"type":"","demo":"projects\/update-team.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"teamId":{"type":"string","description":"Team ID of the team to transfer project to.","default":null,"x-example":"[TEAM_ID]"}},"required":["teamId"]}}]}},"\/projects\/{projectId}\/templates\/email\/{type}\/{locale}":{"get":{"summary":"Get custom email template","operationId":"projectsGetEmailTemplate","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"EmailTemplate","schema":{"$ref":"#\/definitions\/emailTemplate"}}},"x-appwrite":{"method":"getEmailTemplate","weight":174,"cookies":false,"type":"","demo":"projects\/get-email-template.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"type","description":"Template type","required":true,"type":"string","x-example":"verification","enum":["verification","magicsession","recovery","invitation"],"x-enum-name":"TemplateType","x-enum-keys":[],"in":"path"},{"name":"locale","description":"Template locale","required":true,"type":"string","x-example":"af","enum":["af","ar-ae","ar-bh","ar-dz","ar-eg","ar-iq","ar-jo","ar-kw","ar-lb","ar-ly","ar-ma","ar-om","ar-qa","ar-sa","ar-sy","ar-tn","ar-ye","as","az","be","bg","bh","bn","bs","ca","cs","cy","da","de","de-at","de-ch","de-li","de-lu","el","en","en-au","en-bz","en-ca","en-gb","en-ie","en-jm","en-nz","en-tt","en-us","en-za","eo","es","es-ar","es-bo","es-cl","es-co","es-cr","es-do","es-ec","es-gt","es-hn","es-mx","es-ni","es-pa","es-pe","es-pr","es-py","es-sv","es-uy","es-ve","et","eu","fa","fi","fo","fr","fr-be","fr-ca","fr-ch","fr-lu","ga","gd","he","hi","hr","hu","id","is","it","it-ch","ja","ji","ko","ku","lt","lv","mk","ml","ms","mt","nb","ne","nl","nl-be","nn","no","pa","pl","pt","pt-br","rm","ro","ro-md","ru","ru-md","sb","sk","sl","sq","sr","sv","sv-fi","th","tn","tr","ts","ua","ur","ve","vi","xh","zh-cn","zh-hk","zh-sg","zh-tw","zu"],"x-enum-name":"TemplateLocale","x-enum-keys":[],"in":"path"}]},"patch":{"summary":"Update custom email templates","operationId":"projectsUpdateEmailTemplate","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateEmailTemplate","weight":176,"cookies":false,"type":"","demo":"projects\/update-email-template.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"type","description":"Template type","required":true,"type":"string","x-example":"verification","enum":["verification","magicsession","recovery","invitation"],"x-enum-name":"TemplateType","x-enum-keys":[],"in":"path"},{"name":"locale","description":"Template locale","required":true,"type":"string","x-example":"af","enum":["af","ar-ae","ar-bh","ar-dz","ar-eg","ar-iq","ar-jo","ar-kw","ar-lb","ar-ly","ar-ma","ar-om","ar-qa","ar-sa","ar-sy","ar-tn","ar-ye","as","az","be","bg","bh","bn","bs","ca","cs","cy","da","de","de-at","de-ch","de-li","de-lu","el","en","en-au","en-bz","en-ca","en-gb","en-ie","en-jm","en-nz","en-tt","en-us","en-za","eo","es","es-ar","es-bo","es-cl","es-co","es-cr","es-do","es-ec","es-gt","es-hn","es-mx","es-ni","es-pa","es-pe","es-pr","es-py","es-sv","es-uy","es-ve","et","eu","fa","fi","fo","fr","fr-be","fr-ca","fr-ch","fr-lu","ga","gd","he","hi","hr","hu","id","is","it","it-ch","ja","ji","ko","ku","lt","lv","mk","ml","ms","mt","nb","ne","nl","nl-be","nn","no","pa","pl","pt","pt-br","rm","ro","ro-md","ru","ru-md","sb","sk","sl","sq","sr","sv","sv-fi","th","tn","tr","ts","ua","ur","ve","vi","xh","zh-cn","zh-hk","zh-sg","zh-tw","zu"],"x-enum-name":"TemplateLocale","x-enum-keys":[],"in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"subject":{"type":"string","description":"Email Subject","default":null,"x-example":"[SUBJECT]"},"message":{"type":"string","description":"Template message","default":null,"x-example":"[MESSAGE]"},"senderName":{"type":"string","description":"Name of the email sender","default":"","x-example":"[SENDER_NAME]"},"senderEmail":{"type":"string","description":"Email of the sender","default":"","x-example":"email@example.com"},"replyTo":{"type":"string","description":"Reply to email","default":"","x-example":"email@example.com"}},"required":["subject","message"]}}]},"delete":{"summary":"Reset custom email template","operationId":"projectsDeleteEmailTemplate","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"EmailTemplate","schema":{"$ref":"#\/definitions\/emailTemplate"}}},"x-appwrite":{"method":"deleteEmailTemplate","weight":178,"cookies":false,"type":"","demo":"projects\/delete-email-template.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"type","description":"Template type","required":true,"type":"string","x-example":"verification","enum":["verification","magicsession","recovery","invitation"],"x-enum-name":"TemplateType","x-enum-keys":[],"in":"path"},{"name":"locale","description":"Template locale","required":true,"type":"string","x-example":"af","enum":["af","ar-ae","ar-bh","ar-dz","ar-eg","ar-iq","ar-jo","ar-kw","ar-lb","ar-ly","ar-ma","ar-om","ar-qa","ar-sa","ar-sy","ar-tn","ar-ye","as","az","be","bg","bh","bn","bs","ca","cs","cy","da","de","de-at","de-ch","de-li","de-lu","el","en","en-au","en-bz","en-ca","en-gb","en-ie","en-jm","en-nz","en-tt","en-us","en-za","eo","es","es-ar","es-bo","es-cl","es-co","es-cr","es-do","es-ec","es-gt","es-hn","es-mx","es-ni","es-pa","es-pe","es-pr","es-py","es-sv","es-uy","es-ve","et","eu","fa","fi","fo","fr","fr-be","fr-ca","fr-ch","fr-lu","ga","gd","he","hi","hr","hu","id","is","it","it-ch","ja","ji","ko","ku","lt","lv","mk","ml","ms","mt","nb","ne","nl","nl-be","nn","no","pa","pl","pt","pt-br","rm","ro","ro-md","ru","ru-md","sb","sk","sl","sq","sr","sv","sv-fi","th","tn","tr","ts","ua","ur","ve","vi","xh","zh-cn","zh-hk","zh-sg","zh-tw","zu"],"x-enum-name":"TemplateLocale","x-enum-keys":[],"in":"path"}]}},"\/projects\/{projectId}\/templates\/sms\/{type}\/{locale}":{"get":{"summary":"Get custom SMS template","operationId":"projectsGetSmsTemplate","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"SmsTemplate","schema":{"$ref":"#\/definitions\/smsTemplate"}}},"x-appwrite":{"method":"getSmsTemplate","weight":173,"cookies":false,"type":"","demo":"projects\/get-sms-template.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"type","description":"Template type","required":true,"type":"string","x-example":"verification","enum":["verification","login","invitation"],"x-enum-name":"TemplateType","x-enum-keys":[],"in":"path"},{"name":"locale","description":"Template locale","required":true,"type":"string","x-example":"af","enum":["af","ar-ae","ar-bh","ar-dz","ar-eg","ar-iq","ar-jo","ar-kw","ar-lb","ar-ly","ar-ma","ar-om","ar-qa","ar-sa","ar-sy","ar-tn","ar-ye","as","az","be","bg","bh","bn","bs","ca","cs","cy","da","de","de-at","de-ch","de-li","de-lu","el","en","en-au","en-bz","en-ca","en-gb","en-ie","en-jm","en-nz","en-tt","en-us","en-za","eo","es","es-ar","es-bo","es-cl","es-co","es-cr","es-do","es-ec","es-gt","es-hn","es-mx","es-ni","es-pa","es-pe","es-pr","es-py","es-sv","es-uy","es-ve","et","eu","fa","fi","fo","fr","fr-be","fr-ca","fr-ch","fr-lu","ga","gd","he","hi","hr","hu","id","is","it","it-ch","ja","ji","ko","ku","lt","lv","mk","ml","ms","mt","nb","ne","nl","nl-be","nn","no","pa","pl","pt","pt-br","rm","ro","ro-md","ru","ru-md","sb","sk","sl","sq","sr","sv","sv-fi","th","tn","tr","ts","ua","ur","ve","vi","xh","zh-cn","zh-hk","zh-sg","zh-tw","zu"],"x-enum-name":"TemplateLocale","x-enum-keys":[],"in":"path"}]},"patch":{"summary":"Update custom SMS template","operationId":"projectsUpdateSmsTemplate","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"SmsTemplate","schema":{"$ref":"#\/definitions\/smsTemplate"}}},"x-appwrite":{"method":"updateSmsTemplate","weight":175,"cookies":false,"type":"","demo":"projects\/update-sms-template.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"type","description":"Template type","required":true,"type":"string","x-example":"verification","enum":["verification","login","invitation"],"x-enum-name":"TemplateType","x-enum-keys":[],"in":"path"},{"name":"locale","description":"Template locale","required":true,"type":"string","x-example":"af","enum":["af","ar-ae","ar-bh","ar-dz","ar-eg","ar-iq","ar-jo","ar-kw","ar-lb","ar-ly","ar-ma","ar-om","ar-qa","ar-sa","ar-sy","ar-tn","ar-ye","as","az","be","bg","bh","bn","bs","ca","cs","cy","da","de","de-at","de-ch","de-li","de-lu","el","en","en-au","en-bz","en-ca","en-gb","en-ie","en-jm","en-nz","en-tt","en-us","en-za","eo","es","es-ar","es-bo","es-cl","es-co","es-cr","es-do","es-ec","es-gt","es-hn","es-mx","es-ni","es-pa","es-pe","es-pr","es-py","es-sv","es-uy","es-ve","et","eu","fa","fi","fo","fr","fr-be","fr-ca","fr-ch","fr-lu","ga","gd","he","hi","hr","hu","id","is","it","it-ch","ja","ji","ko","ku","lt","lv","mk","ml","ms","mt","nb","ne","nl","nl-be","nn","no","pa","pl","pt","pt-br","rm","ro","ro-md","ru","ru-md","sb","sk","sl","sq","sr","sv","sv-fi","th","tn","tr","ts","ua","ur","ve","vi","xh","zh-cn","zh-hk","zh-sg","zh-tw","zu"],"x-enum-name":"TemplateLocale","x-enum-keys":[],"in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"message":{"type":"string","description":"Template message","default":null,"x-example":"[MESSAGE]"}},"required":["message"]}}]},"delete":{"summary":"Reset custom SMS template","operationId":"projectsDeleteSmsTemplate","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"SmsTemplate","schema":{"$ref":"#\/definitions\/smsTemplate"}}},"x-appwrite":{"method":"deleteSmsTemplate","weight":177,"cookies":false,"type":"","demo":"projects\/delete-sms-template.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"type","description":"Template type","required":true,"type":"string","x-example":"verification","enum":["verification","login","invitation"],"x-enum-name":"TemplateType","x-enum-keys":[],"in":"path"},{"name":"locale","description":"Template locale","required":true,"type":"string","x-example":"af","enum":["af","ar-ae","ar-bh","ar-dz","ar-eg","ar-iq","ar-jo","ar-kw","ar-lb","ar-ly","ar-ma","ar-om","ar-qa","ar-sa","ar-sy","ar-tn","ar-ye","as","az","be","bg","bh","bn","bs","ca","cs","cy","da","de","de-at","de-ch","de-li","de-lu","el","en","en-au","en-bz","en-ca","en-gb","en-ie","en-jm","en-nz","en-tt","en-us","en-za","eo","es","es-ar","es-bo","es-cl","es-co","es-cr","es-do","es-ec","es-gt","es-hn","es-mx","es-ni","es-pa","es-pe","es-pr","es-py","es-sv","es-uy","es-ve","et","eu","fa","fi","fo","fr","fr-be","fr-ca","fr-ch","fr-lu","ga","gd","he","hi","hr","hu","id","is","it","it-ch","ja","ji","ko","ku","lt","lv","mk","ml","ms","mt","nb","ne","nl","nl-be","nn","no","pa","pl","pt","pt-br","rm","ro","ro-md","ru","ru-md","sb","sk","sl","sq","sr","sv","sv-fi","th","tn","tr","ts","ua","ur","ve","vi","xh","zh-cn","zh-hk","zh-sg","zh-tw","zu"],"x-enum-name":"TemplateLocale","x-enum-keys":[],"in":"path"}]}},"\/projects\/{projectId}\/webhooks":{"get":{"summary":"List webhooks","operationId":"projectsListWebhooks","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Webhooks List","schema":{"$ref":"#\/definitions\/webhookList"}}},"x-appwrite":{"method":"listWebhooks","weight":156,"cookies":false,"type":"","demo":"projects\/list-webhooks.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"}]},"post":{"summary":"Create webhook","operationId":"projectsCreateWebhook","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"201":{"description":"Webhook","schema":{"$ref":"#\/definitions\/webhook"}}},"x-appwrite":{"method":"createWebhook","weight":155,"cookies":false,"type":"","demo":"projects\/create-webhook.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Webhook name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Enable or disable a webhook.","default":true,"x-example":false},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","default":null,"x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"Webhook URL.","default":null,"x-example":null},"security":{"type":"boolean","description":"Certificate verification, false for disabled or true for enabled.","default":null,"x-example":false},"httpUser":{"type":"string","description":"Webhook HTTP user. Max length: 256 chars.","default":"","x-example":"[HTTP_USER]"},"httpPass":{"type":"string","description":"Webhook HTTP password. Max length: 256 chars.","default":"","x-example":"[HTTP_PASS]"}},"required":["name","events","url","security"]}}]}},"\/projects\/{projectId}\/webhooks\/{webhookId}":{"get":{"summary":"Get webhook","operationId":"projectsGetWebhook","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Webhook","schema":{"$ref":"#\/definitions\/webhook"}}},"x-appwrite":{"method":"getWebhook","weight":157,"cookies":false,"type":"","demo":"projects\/get-webhook.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"webhookId","description":"Webhook unique ID.","required":true,"type":"string","x-example":"[WEBHOOK_ID]","in":"path"}]},"put":{"summary":"Update webhook","operationId":"projectsUpdateWebhook","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Webhook","schema":{"$ref":"#\/definitions\/webhook"}}},"x-appwrite":{"method":"updateWebhook","weight":158,"cookies":false,"type":"","demo":"projects\/update-webhook.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"webhookId","description":"Webhook unique ID.","required":true,"type":"string","x-example":"[WEBHOOK_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Webhook name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Enable or disable a webhook.","default":true,"x-example":false},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","default":null,"x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"Webhook URL.","default":null,"x-example":null},"security":{"type":"boolean","description":"Certificate verification, false for disabled or true for enabled.","default":null,"x-example":false},"httpUser":{"type":"string","description":"Webhook HTTP user. Max length: 256 chars.","default":"","x-example":"[HTTP_USER]"},"httpPass":{"type":"string","description":"Webhook HTTP password. Max length: 256 chars.","default":"","x-example":"[HTTP_PASS]"}},"required":["name","events","url","security"]}}]},"delete":{"summary":"Delete webhook","operationId":"projectsDeleteWebhook","consumes":["application\/json"],"produces":[],"tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteWebhook","weight":160,"cookies":false,"type":"","demo":"projects\/delete-webhook.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"webhookId","description":"Webhook unique ID.","required":true,"type":"string","x-example":"[WEBHOOK_ID]","in":"path"}]}},"\/projects\/{projectId}\/webhooks\/{webhookId}\/signature":{"patch":{"summary":"Update webhook signature key","operationId":"projectsUpdateWebhookSignature","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Webhook","schema":{"$ref":"#\/definitions\/webhook"}}},"x-appwrite":{"method":"updateWebhookSignature","weight":159,"cookies":false,"type":"","demo":"projects\/update-webhook-signature.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"webhookId","description":"Webhook unique ID.","required":true,"type":"string","x-example":"[WEBHOOK_ID]","in":"path"}]}},"\/proxy\/rules":{"get":{"summary":"List Rules","operationId":"proxyListRules","consumes":["application\/json"],"produces":["application\/json"],"tags":["proxy"],"description":"Get a list of all the proxy rules. You can use the query params to filter your results.","responses":{"200":{"description":"Rule List","schema":{"$ref":"#\/definitions\/proxyRuleList"}}},"x-appwrite":{"method":"listRules","weight":289,"cookies":false,"type":"","demo":"proxy\/list-rules.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/proxy\/list-rules.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"rules.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: domain, resourceType, resourceId, url","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Rule","operationId":"proxyCreateRule","consumes":["application\/json"],"produces":["application\/json"],"tags":["proxy"],"description":"Create a new proxy rule.","responses":{"201":{"description":"Rule","schema":{"$ref":"#\/definitions\/proxyRule"}}},"x-appwrite":{"method":"createRule","weight":288,"cookies":false,"type":"","demo":"proxy\/create-rule.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/proxy\/create-rule.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"rules.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"domain":{"type":"string","description":"Domain name.","default":null,"x-example":null},"resourceType":{"type":"string","description":"Action definition for the rule. Possible values are \"api\", \"function\"","default":null,"x-example":"api","enum":["api","function"],"x-enum-name":null,"x-enum-keys":[]},"resourceId":{"type":"string","description":"ID of resource for the action type. If resourceType is \"api\", leave empty. If resourceType is \"function\", provide ID of the function.","default":"","x-example":"[RESOURCE_ID]"}},"required":["domain","resourceType"]}}]}},"\/proxy\/rules\/{ruleId}":{"get":{"summary":"Get Rule","operationId":"proxyGetRule","consumes":["application\/json"],"produces":["application\/json"],"tags":["proxy"],"description":"Get a proxy rule by its unique ID.","responses":{"200":{"description":"Rule","schema":{"$ref":"#\/definitions\/proxyRule"}}},"x-appwrite":{"method":"getRule","weight":290,"cookies":false,"type":"","demo":"proxy\/get-rule.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/proxy\/get-rule.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"rules.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"ruleId","description":"Rule ID.","required":true,"type":"string","x-example":"[RULE_ID]","in":"path"}]},"delete":{"summary":"Delete Rule","operationId":"proxyDeleteRule","consumes":["application\/json"],"produces":[],"tags":["proxy"],"description":"Delete a proxy rule by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteRule","weight":291,"cookies":false,"type":"","demo":"proxy\/delete-rule.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/proxy\/delete-rule.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"rules.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"ruleId","description":"Rule ID.","required":true,"type":"string","x-example":"[RULE_ID]","in":"path"}]}},"\/proxy\/rules\/{ruleId}\/verification":{"patch":{"summary":"Update Rule Verification Status","operationId":"proxyUpdateRuleVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["proxy"],"description":"","responses":{"200":{"description":"Rule","schema":{"$ref":"#\/definitions\/proxyRule"}}},"x-appwrite":{"method":"updateRuleVerification","weight":292,"cookies":false,"type":"","demo":"proxy\/update-rule-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"rules.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"ruleId","description":"Rule ID.","required":true,"type":"string","x-example":"[RULE_ID]","in":"path"}]}},"\/storage\/buckets":{"get":{"summary":"List buckets","operationId":"storageListBuckets","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a list of all the storage buckets. You can use the query params to filter your results.","responses":{"200":{"description":"Buckets List","schema":{"$ref":"#\/definitions\/bucketList"}}},"x-appwrite":{"method":"listBuckets","weight":186,"cookies":false,"type":"","demo":"storage\/list-buckets.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/list-buckets.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: enabled, name, fileSecurity, maximumFileSize, encryption, antivirus","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create bucket","operationId":"storageCreateBucket","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Create a new storage bucket.","responses":{"201":{"description":"Bucket","schema":{"$ref":"#\/definitions\/bucket"}}},"x-appwrite":{"method":"createBucket","weight":185,"cookies":false,"type":"","demo":"storage\/create-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"bucketId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, no user is granted with any permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":false,"x-example":false},"enabled":{"type":"boolean","description":"Is bucket enabled? When set to 'disabled', users cannot access the files in this bucket but Server SDKs with and API key can still access the bucket. No files are lost when this is toggled.","default":true,"x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB.","default":30000000,"x-example":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","default":[],"x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","default":"none","x-example":"none","enum":["none","gzip","zstd"],"x-enum-name":null,"x-enum-keys":[]},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","default":true,"x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","default":true,"x-example":false}},"required":["bucketId","name"]}}]}},"\/storage\/buckets\/{bucketId}":{"get":{"summary":"Get bucket","operationId":"storageGetBucket","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a storage bucket by its unique ID. This endpoint response returns a JSON object with the storage bucket metadata.","responses":{"200":{"description":"Bucket","schema":{"$ref":"#\/definitions\/bucket"}}},"x-appwrite":{"method":"getBucket","weight":187,"cookies":false,"type":"","demo":"storage\/get-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"bucketId","description":"Bucket unique ID.","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"}]},"put":{"summary":"Update bucket","operationId":"storageUpdateBucket","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Update a storage bucket by its unique ID.","responses":{"200":{"description":"Bucket","schema":{"$ref":"#\/definitions\/bucket"}}},"x-appwrite":{"method":"updateBucket","weight":188,"cookies":false,"type":"","demo":"storage\/update-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"bucketId","description":"Bucket unique ID.","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Bucket name","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":false,"x-example":false},"enabled":{"type":"boolean","description":"Is bucket enabled? When set to 'disabled', users cannot access the files in this bucket but Server SDKs with and API key can still access the bucket. No files are lost when this is toggled.","default":true,"x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB.","default":null,"x-example":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","default":[],"x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","default":"none","x-example":"none","enum":["none","gzip","zstd"],"x-enum-name":null,"x-enum-keys":[]},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","default":true,"x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","default":true,"x-example":false}},"required":["name"]}}]},"delete":{"summary":"Delete bucket","operationId":"storageDeleteBucket","consumes":["application\/json"],"produces":[],"tags":["storage"],"description":"Delete a storage bucket by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteBucket","weight":189,"cookies":false,"type":"","demo":"storage\/delete-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"bucketId","description":"Bucket unique ID.","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files":{"get":{"summary":"List files","operationId":"storageListFiles","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a list of all the user files. You can use the query params to filter your results.","responses":{"200":{"description":"Files List","schema":{"$ref":"#\/definitions\/fileList"}}},"x-appwrite":{"method":"listFiles","weight":191,"cookies":false,"type":"","demo":"storage\/list-files.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/list-files.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create file","operationId":"storageCreateFile","consumes":["multipart\/form-data"],"produces":["application\/json"],"tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"createFile","weight":190,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","required":true,"x-upload-id":true,"type":"string","x-example":"[FILE_ID]","in":"formData"},{"name":"file","description":"Binary file. Appwrite SDKs provide helpers to handle file input. [Learn about file input](https:\/\/appwrite.io\/docs\/storage#file-input).","required":true,"type":"file","in":"formData"},{"name":"permissions","description":"An array of permission strings. By default, only the current user is granted all permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"x-example":"[\"read(\"any\")\"]","in":"formData"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get file","operationId":"storageGetFile","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"getFile","weight":192,"cookies":false,"type":"","demo":"storage\/get-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID.","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"}]},"put":{"summary":"Update file","operationId":"storageUpdateFile","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Update a file by its unique ID. Only users with write permissions have access to update this resource.","responses":{"200":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"updateFile","weight":196,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File unique ID.","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Name of the file","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission string. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","consumes":["application\/json"],"produces":[],"tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":197,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID.","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/download":{"get":{"summary":"Get file for download","operationId":"storageGetFileDownload","consumes":["application\/json"],"produces":["*\/*"],"tags":["storage"],"description":"Get a file content by its unique ID. The endpoint response return with a 'Content-Disposition: attachment' header that tells the browser to start downloading the file to user downloads directory.","responses":{"200":{"description":"File","schema":{"type":"file"}}},"x-appwrite":{"method":"getFileDownload","weight":194,"cookies":false,"type":"location","demo":"storage\/get-file-download.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-download.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID.","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/preview":{"get":{"summary":"Get file preview","operationId":"storageGetFilePreview","consumes":["application\/json"],"produces":["image\/*"],"tags":["storage"],"description":"Get a file preview image. Currently, this method supports preview for image files (jpg, png, and gif), other supported formats, like pdf, docs, slides, and spreadsheets, will return the file icon image. You can also pass query string arguments for cutting and resizing your preview image. Preview is supported only for image files smaller than 10MB.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFilePreview","weight":193,"cookies":false,"type":"location","demo":"storage\/get-file-preview.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-preview.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"},{"name":"width","description":"Resize preview image width, Pass an integer between 0 to 4000.","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 4000.","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"gravity","description":"Image crop gravity. Can be one of center,top-left,top,top-right,left,right,bottom-left,bottom,bottom-right","required":false,"type":"string","x-example":"center","enum":["center","top-left","top","top-right","left","right","bottom-left","bottom","bottom-right"],"x-enum-name":"ImageGravity","x-enum-keys":[],"default":"center","in":"query"},{"name":"quality","description":"Preview image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"borderWidth","description":"Preview image border in pixels. Pass an integer between 0 to 100. Defaults to 0.","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"borderColor","description":"Preview image border color. Use a valid HEX color, no # is needed for prefix.","required":false,"type":"string","default":"","in":"query"},{"name":"borderRadius","description":"Preview image border radius in pixels. Pass an integer between 0 to 4000.","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"opacity","description":"Preview image opacity. Only works with images having an alpha channel (like png). Pass a number between 0 to 1.","required":false,"type":"number","format":"float","x-example":0,"default":1,"in":"query"},{"name":"rotation","description":"Preview image rotation in degrees. Pass an integer between -360 and 360.","required":false,"type":"integer","format":"int32","x-example":-360,"default":0,"in":"query"},{"name":"background","description":"Preview image background color. Only works with transparent images (png). Use a valid HEX color, no # is needed for prefix.","required":false,"type":"string","default":"","in":"query"},{"name":"output","description":"Output format type (jpeg, jpg, png, gif and webp).","required":false,"type":"string","x-example":"jpg","enum":["jpg","jpeg","gif","png","webp"],"x-enum-name":"ImageFormat","x-enum-keys":[],"default":"","in":"query"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/view":{"get":{"summary":"Get file for view","operationId":"storageGetFileView","consumes":["application\/json"],"produces":["*\/*"],"tags":["storage"],"description":"Get a file content by its unique ID. This endpoint is similar to the download method but returns with no 'Content-Disposition: attachment' header.","responses":{"200":{"description":"File","schema":{"type":"file"}}},"x-appwrite":{"method":"getFileView","weight":195,"cookies":false,"type":"location","demo":"storage\/get-file-view.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-view.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID.","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"}]}},"\/storage\/usage":{"get":{"summary":"Get usage stats for storage","operationId":"storageGetUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"","responses":{"200":{"description":"StorageUsage","schema":{"$ref":"#\/definitions\/usageStorage"}}},"x-appwrite":{"method":"getUsage","weight":198,"cookies":false,"type":"","demo":"storage\/get-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","enum":["24h","30d","90d"],"x-enum-name":"StorageUsageRange","x-enum-keys":["Twenty Four Hours","Thirty Days","Ninety Days"],"default":"30d","in":"query"}]}},"\/storage\/{bucketId}\/usage":{"get":{"summary":"Get usage stats for storage bucket","operationId":"storageGetBucketUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"","responses":{"200":{"description":"UsageBuckets","schema":{"$ref":"#\/definitions\/usageBuckets"}}},"x-appwrite":{"method":"getBucketUsage","weight":199,"cookies":false,"type":"","demo":"storage\/get-bucket-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"bucketId","description":"Bucket ID.","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","enum":["24h","30d","90d"],"x-enum-name":"StorageUsageRange","x-enum-keys":["Twenty Four Hours","Thirty Days","Ninety Days"],"default":"30d","in":"query"}]}},"\/teams":{"get":{"summary":"List teams","operationId":"teamsList","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get a list of all the teams in which the current user is a member. You can use the parameters to filter your results.","responses":{"200":{"description":"Teams List","schema":{"$ref":"#\/definitions\/teamList"}}},"x-appwrite":{"method":"list","weight":201,"cookies":false,"type":"","demo":"teams\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-teams.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total, billingPlan","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create team","operationId":"teamsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"create","weight":200,"cookies":false,"type":"","demo":"teams\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/create-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"teamId":{"type":"string","description":"Team ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[TEAM_ID]"},"name":{"type":"string","description":"Team name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"roles":{"type":"array","description":"Array of strings. Use this param to set the roles in the team for the user who created it. The default role is **owner**. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","default":["owner"],"x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}]}},"\/teams\/{teamId}":{"get":{"summary":"Get team","operationId":"teamsGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"get","weight":202,"cookies":false,"type":"","demo":"teams\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams","offline-key":"{teamId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"}]},"put":{"summary":"Update name","operationId":"teamsUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Update the team's name by its unique ID.","responses":{"200":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"updateName","weight":204,"cookies":false,"type":"","demo":"teams\/update-name.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-name.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams","offline-key":"{teamId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"New team name. Max length: 128 chars.","default":null,"x-example":"[NAME]"}},"required":["name"]}}]},"delete":{"summary":"Delete team","operationId":"teamsDelete","consumes":["application\/json"],"produces":[],"tags":["teams"],"description":"Delete a team using its ID. Only team members with the owner role can delete the team.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":206,"cookies":false,"type":"","demo":"teams\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/delete-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"}]}},"\/teams\/{teamId}\/logs":{"get":{"summary":"List team logs","operationId":"teamsListLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get the team activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listLogs","weight":213,"cookies":false,"type":"","demo":"teams\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/teams\/{teamId}\/memberships":{"get":{"summary":"List team memberships","operationId":"teamsListMemberships","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"listMemberships","weight":208,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/memberships","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create team membership","operationId":"teamsCreateMembership","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Invite a new member to join your team. Provide an ID for existing users, or invite unregistered users using an email or phone number. If initiated from a Client SDK, Appwrite will send an email or sms with a link to join the team to the invited user, and an account will be created for them if one doesn't exist. If initiated from a Server SDK, the new member will be added automatically to the team.\n\nYou only need to provide one of a user ID, email, or phone number. Appwrite will prioritize accepting the user ID > email > phone number if you provide more than one of these parameters.\n\nUse the `url` parameter to redirect the user from the invitation email to your app. After the user is redirected, use the [Update Team Membership Status](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/teams#updateMembershipStatus) endpoint to allow the user to accept the invitation to the team. \n\nPlease note that to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) Appwrite will accept the only redirect URLs under the domains you have added as a platform on the Appwrite Console.\n","responses":{"201":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"createMembership","weight":207,"cookies":false,"type":"","demo":"teams\/create-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/create-team-membership.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"email":{"type":"string","description":"Email of the new team member.","default":"","x-example":"email@example.com"},"userId":{"type":"string","description":"ID of the user to be added to a team.","default":"","x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":"","x-example":"+12065550100"},"roles":{"type":"array","description":"Array of strings. Use this param to set the user roles in the team. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":"","x-example":"https:\/\/example.com"},"name":{"type":"string","description":"Name of the new team member. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["roles"]}}]}},"\/teams\/{teamId}\/memberships\/{membershipId}":{"get":{"summary":"Get team membership","operationId":"teamsGetMembership","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get a team member by the membership unique id. All team members have read access for this resource.","responses":{"200":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"getMembership","weight":209,"cookies":false,"type":"","demo":"teams\/get-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-member.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/memberships","offline-key":"{membershipId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"type":"string","x-example":"[MEMBERSHIP_ID]","in":"path"}]},"patch":{"summary":"Update membership","operationId":"teamsUpdateMembership","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Modify the roles of a team member. Only team members with the owner role have access to this endpoint. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions).\n","responses":{"200":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"updateMembership","weight":210,"cookies":false,"type":"","demo":"teams\/update-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"type":"string","x-example":"[MEMBERSHIP_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"roles":{"type":"array","description":"An array of strings. Use this param to set the user's roles in the team. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}}},"required":["roles"]}}]},"delete":{"summary":"Delete team membership","operationId":"teamsDeleteMembership","consumes":["application\/json"],"produces":[],"tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":212,"cookies":false,"type":"","demo":"teams\/delete-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/delete-team-membership.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"type":"string","x-example":"[MEMBERSHIP_ID]","in":"path"}]}},"\/teams\/{teamId}\/memberships\/{membershipId}\/status":{"patch":{"summary":"Update team membership status","operationId":"teamsUpdateMembershipStatus","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Use this endpoint to allow a user to accept an invitation to join a team after being redirected back to your app from the invitation email received by the user.\n\nIf the request is successful, a session for the user is automatically created.\n","responses":{"200":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"updateMembershipStatus","weight":211,"cookies":false,"type":"","demo":"teams\/update-membership-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"public","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"type":"string","x-example":"[MEMBERSHIP_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Secret key.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/teams\/{teamId}\/prefs":{"get":{"summary":"Get team preferences","operationId":"teamsGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get the team's shared preferences by its unique ID. If a preference doesn't need to be shared by all team members, prefer storing them in [user preferences](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#getPrefs).","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":203,"cookies":false,"type":"","demo":"teams\/get-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/prefs","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"}]},"put":{"summary":"Update preferences","operationId":"teamsUpdatePrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Update the team's preferences by its unique ID. The object you pass is stored as is and replaces any previous value. The maximum allowed prefs size is 64kB and throws an error if exceeded.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"updatePrefs","weight":205,"cookies":false,"type":"","demo":"teams\/update-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/prefs","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"prefs":{"type":"object","description":"Prefs key-value JSON object.","default":{},"x-example":"{}"}},"required":["prefs"]}}]}},"\/users":{"get":{"summary":"List users","operationId":"usersList","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get a list of all the project's users. You can use the query params to filter your results.","responses":{"200":{"description":"Users List","schema":{"$ref":"#\/definitions\/userList"}}},"x-appwrite":{"method":"list","weight":223,"cookies":false,"type":"","demo":"users\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-users.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, email, phone, status, passwordUpdate, registration, emailVerification, phoneVerification","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create user","operationId":"usersCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"create","weight":214,"cookies":false,"type":"","demo":"users\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"},"password":{"type":"string","description":"Plain text user password. Must be at least 8 chars.","default":"","x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId"]}}]}},"\/users\/argon2":{"post":{"summary":"Create user with Argon2 password","operationId":"usersCreateArgon2User","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Argon2](https:\/\/en.wikipedia.org\/wiki\/Argon2) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createArgon2User","weight":217,"cookies":false,"type":"","demo":"users\/create-argon2user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-argon2-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Argon2.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/bcrypt":{"post":{"summary":"Create user with bcrypt password","operationId":"usersCreateBcryptUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Bcrypt](https:\/\/en.wikipedia.org\/wiki\/Bcrypt) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createBcryptUser","weight":215,"cookies":false,"type":"","demo":"users\/create-bcrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-bcrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Bcrypt.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/identities":{"get":{"summary":"List Identities","operationId":"usersListIdentities","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get identities for all users.","responses":{"200":{"description":"Identities List","schema":{"$ref":"#\/definitions\/identityList"}}},"x-appwrite":{"method":"listIdentities","weight":231,"cookies":false,"type":"","demo":"users\/list-identities.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-identities.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, provider, providerUid, providerEmail, providerAccessTokenExpiry","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]}},"\/users\/identities\/{identityId}":{"delete":{"summary":"Delete identity","operationId":"usersDeleteIdentity","consumes":["application\/json"],"produces":[],"tags":["users"],"description":"Delete an identity by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIdentity","weight":251,"cookies":false,"type":"","demo":"users\/delete-identity.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-identity.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"identityId","description":"Identity ID.","required":true,"type":"string","x-example":"[IDENTITY_ID]","in":"path"}]}},"\/users\/md5":{"post":{"summary":"Create user with MD5 password","operationId":"usersCreateMD5User","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [MD5](https:\/\/en.wikipedia.org\/wiki\/MD5) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createMD5User","weight":216,"cookies":false,"type":"","demo":"users\/create-m-d5user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-md5-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using MD5.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/phpass":{"post":{"summary":"Create user with PHPass password","operationId":"usersCreatePHPassUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [PHPass](https:\/\/www.openwall.com\/phpass\/) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createPHPassUser","weight":219,"cookies":false,"type":"","demo":"users\/create-p-h-pass-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-phpass-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or pass the string `ID.unique()`to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using PHPass.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/scrypt":{"post":{"summary":"Create user with Scrypt password","operationId":"usersCreateScryptUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt](https:\/\/github.com\/Tarsnap\/scrypt) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createScryptUser","weight":220,"cookies":false,"type":"","demo":"users\/create-scrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt.","default":null,"x-example":"password"},"passwordSalt":{"type":"string","description":"Optional salt used to hash password.","default":null,"x-example":"[PASSWORD_SALT]"},"passwordCpu":{"type":"integer","description":"Optional CPU cost used to hash password.","default":null,"x-example":null},"passwordMemory":{"type":"integer","description":"Optional memory cost used to hash password.","default":null,"x-example":null},"passwordParallel":{"type":"integer","description":"Optional parallelization cost used to hash password.","default":null,"x-example":null},"passwordLength":{"type":"integer","description":"Optional hash length used to hash password.","default":null,"x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordCpu","passwordMemory","passwordParallel","passwordLength"]}}]}},"\/users\/scrypt-modified":{"post":{"summary":"Create user with Scrypt modified password","operationId":"usersCreateScryptModifiedUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt Modified](https:\/\/gist.github.com\/Meldiron\/eecf84a0225eccb5a378d45bb27462cc) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createScryptModifiedUser","weight":221,"cookies":false,"type":"","demo":"users\/create-scrypt-modified-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-modified-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt Modified.","default":null,"x-example":"password"},"passwordSalt":{"type":"string","description":"Salt used to hash password.","default":null,"x-example":"[PASSWORD_SALT]"},"passwordSaltSeparator":{"type":"string","description":"Salt separator used to hash password.","default":null,"x-example":"[PASSWORD_SALT_SEPARATOR]"},"passwordSignerKey":{"type":"string","description":"Signer key used to hash password.","default":null,"x-example":"[PASSWORD_SIGNER_KEY]"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordSaltSeparator","passwordSignerKey"]}}]}},"\/users\/sha":{"post":{"summary":"Create user with SHA password","operationId":"usersCreateSHAUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [SHA](https:\/\/en.wikipedia.org\/wiki\/Secure_Hash_Algorithm) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createSHAUser","weight":218,"cookies":false,"type":"","demo":"users\/create-s-h-a-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-sha-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using SHA.","default":null,"x-example":"password"},"passwordVersion":{"type":"string","description":"Optional SHA version used to hash password. Allowed values are: 'sha1', 'sha224', 'sha256', 'sha384', 'sha512\/224', 'sha512\/256', 'sha512', 'sha3-224', 'sha3-256', 'sha3-384', 'sha3-512'","default":"","x-example":"sha1","enum":["sha1","sha224","sha256","sha384","sha512\/224","sha512\/256","sha512","sha3-224","sha3-256","sha3-384","sha3-512"],"x-enum-name":null,"x-enum-keys":[]},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/usage":{"get":{"summary":"Get usage stats for the users API","operationId":"usersGetUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"","responses":{"200":{"description":"UsageUsers","schema":{"$ref":"#\/definitions\/usageUsers"}}},"x-appwrite":{"method":"getUsage","weight":252,"cookies":false,"type":"","demo":"users\/get-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","enum":["24h","30d","90d"],"x-enum-name":"UserUsageRange","x-enum-keys":["Twenty Four Hours","Thirty Days","Ninety Days"],"default":"30d","in":"query"}]}},"\/users\/{userId}":{"get":{"summary":"Get user","operationId":"usersGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get a user by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"get","weight":224,"cookies":false,"type":"","demo":"users\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]},"delete":{"summary":"Delete user","operationId":"usersDelete","consumes":["application\/json"],"produces":[],"tags":["users"],"description":"Delete a user by its unique ID, thereby releasing it's ID. Since ID is released and can be reused, all user-related resources like documents or storage files should be deleted before user deletion. If you want to keep ID reserved, use the [updateStatus](https:\/\/appwrite.io\/docs\/server\/users#usersUpdateStatus) endpoint instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":249,"cookies":false,"type":"","demo":"users\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]}},"\/users\/{userId}\/email":{"patch":{"summary":"Update email","operationId":"usersUpdateEmail","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user email by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateEmail","weight":237,"cookies":false,"type":"","demo":"users\/update-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"}},"required":["email"]}}]}},"\/users\/{userId}\/labels":{"put":{"summary":"Update user labels","operationId":"usersUpdateLabels","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user labels by its unique ID. \n\nLabels can be used to grant access to resources. While teams are a way for user's to share access to a resource, labels can be defined by the developer to grant access without an invitation. See the [Permissions docs](https:\/\/appwrite.io\/docs\/permissions) for more info.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateLabels","weight":233,"cookies":false,"type":"","demo":"users\/update-labels.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-labels.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"labels":{"type":"array","description":"Array of user labels. Replaces the previous labels. Maximum of 1000 labels are allowed, each up to 36 alphanumeric characters long.","default":null,"x-example":null,"items":{"type":"string"}}},"required":["labels"]}}]}},"\/users\/{userId}\/logs":{"get":{"summary":"List user logs","operationId":"usersListLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listLogs","weight":229,"cookies":false,"type":"","demo":"users\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/users\/{userId}\/memberships":{"get":{"summary":"List user memberships","operationId":"usersListMemberships","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user membership list by its unique ID.","responses":{"200":{"description":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"listMemberships","weight":228,"cookies":false,"type":"","demo":"users\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-memberships.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]}},"\/users\/{userId}\/mfa":{"patch":{"summary":"Update MFA","operationId":"usersUpdateMfa","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateMfa","weight":242,"cookies":false,"type":"","demo":"users\/update-mfa.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-mfa.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"mfa":{"type":"boolean","description":"Enable or disable MFA.","default":null,"x-example":false}},"required":["mfa"]}}]}},"\/users\/{userId}\/mfa\/{provider}":{"delete":{"summary":"Delete Authenticator","operationId":"usersDeleteAuthenticator","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"deleteAuthenticator","weight":244,"cookies":false,"type":"","demo":"users\/delete-authenticator.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-mfa.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"provider","description":"Provider.","required":true,"type":"string","x-example":"totp","enum":["totp"],"x-enum-name":"AuthenticatorProvider","x-enum-keys":[],"in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"otp":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[OTP]"}},"required":["otp"]}}]}},"\/users\/{userId}\/name":{"patch":{"summary":"Update name","operationId":"usersUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user name by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateName","weight":235,"cookies":false,"type":"","demo":"users\/update-name.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-name.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"User name. Max length: 128 chars.","default":null,"x-example":"[NAME]"}},"required":["name"]}}]}},"\/users\/{userId}\/password":{"patch":{"summary":"Update password","operationId":"usersUpdatePassword","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user password by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePassword","weight":236,"cookies":false,"type":"","demo":"users\/update-password.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-password.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"password":{"type":"string","description":"New user password. Must be at least 8 chars.","default":null,"x-example":null}},"required":["password"]}}]}},"\/users\/{userId}\/phone":{"patch":{"summary":"Update phone","operationId":"usersUpdatePhone","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user phone by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePhone","weight":238,"cookies":false,"type":"","demo":"users\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"number":{"type":"string","description":"User phone number.","default":null,"x-example":"+12065550100"}},"required":["number"]}}]}},"\/users\/{userId}\/prefs":{"get":{"summary":"Get user preferences","operationId":"usersGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user preferences by its unique ID.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":225,"cookies":false,"type":"","demo":"users\/get-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]},"patch":{"summary":"Update user preferences","operationId":"usersUpdatePrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user preferences by its unique ID. The object you pass is stored as is, and replaces any previous value. The maximum allowed prefs size is 64kB and throws error if exceeded.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"updatePrefs","weight":240,"cookies":false,"type":"","demo":"users\/update-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"prefs":{"type":"object","description":"Prefs key-value JSON object.","default":{},"x-example":"{}"}},"required":["prefs"]}}]}},"\/users\/{userId}\/providers":{"get":{"summary":"List Providers","operationId":"usersListProviders","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"","responses":{"200":{"description":"MFAProviders","schema":{"$ref":"#\/definitions\/mfaProviders"}}},"x-appwrite":{"method":"listProviders","weight":243,"cookies":false,"type":"","demo":"users\/list-providers.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-providers.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]}},"\/users\/{userId}\/sessions":{"get":{"summary":"List user sessions","operationId":"usersListSessions","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user sessions list by its unique ID.","responses":{"200":{"description":"Sessions List","schema":{"$ref":"#\/definitions\/sessionList"}}},"x-appwrite":{"method":"listSessions","weight":227,"cookies":false,"type":"","demo":"users\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]},"post":{"summary":"Create session","operationId":"usersCreateSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Creates a session for a user. Returns an immediately usable session object.\n\nIf you want to generate a token for a custom authentication flow, use the [POST \/users\/{userId}\/tokens](https:\/\/appwrite.io\/docs\/server\/users#createToken) endpoint.","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"createSession","weight":245,"cookies":false,"type":"","demo":"users\/create-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-session.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]},"delete":{"summary":"Delete user sessions","operationId":"usersDeleteSessions","consumes":["application\/json"],"produces":[],"tags":["users"],"description":"Delete all user's sessions by using the user's unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":248,"cookies":false,"type":"","demo":"users\/delete-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]}},"\/users\/{userId}\/sessions\/{sessionId}":{"delete":{"summary":"Delete user session","operationId":"usersDeleteSession","consumes":["application\/json"],"produces":[],"tags":["users"],"description":"Delete a user sessions by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSession","weight":247,"cookies":false,"type":"","demo":"users\/delete-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-user-session.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"sessionId","description":"Session ID.","required":true,"type":"string","x-example":"[SESSION_ID]","in":"path"}]}},"\/users\/{userId}\/status":{"patch":{"summary":"Update user status","operationId":"usersUpdateStatus","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user status by its unique ID. Use this endpoint as an alternative to deleting a user if you want to keep user's ID reserved.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateStatus","weight":232,"cookies":false,"type":"","demo":"users\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"status":{"type":"boolean","description":"User Status. To activate the user pass `true` and to block the user pass `false`.","default":null,"x-example":false}},"required":["status"]}}]}},"\/users\/{userId}\/targets":{"get":{"summary":"List User Targets","operationId":"usersListTargets","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"","responses":{"200":{"description":"Target list","schema":{"$ref":"#\/definitions\/targetList"}}},"x-appwrite":{"method":"listTargets","weight":230,"cookies":false,"type":"","demo":"users\/list-targets.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-targets.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.read","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, email, phone, status, passwordUpdate, registration, emailVerification, phoneVerification","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"post":{"summary":"Create User Target","operationId":"usersCreateTarget","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"","responses":{"201":{"description":"Target","schema":{"$ref":"#\/definitions\/target"}}},"x-appwrite":{"method":"createTarget","weight":222,"cookies":false,"type":"","demo":"users\/create-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-target.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"targetId":{"type":"string","description":"Target ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[TARGET_ID]"},"providerType":{"type":"string","description":"The target provider type. Can be one of the following: `email`, `sms` or `push`.","default":null,"x-example":"email","enum":["email","sms","push"],"x-enum-name":"MessagingProviderType","x-enum-keys":[]},"identifier":{"type":"string","description":"The target identifier (token, email, phone etc.)","default":null,"x-example":"[IDENTIFIER]"},"providerId":{"type":"string","description":"Provider ID. Message will be sent to this target from the specified provider ID. If no provider ID is set the first setup provider will be used.","default":"","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Target name. Max length: 128 chars. For example: My Awesome App Galaxy S23.","default":"","x-example":"[NAME]"}},"required":["targetId","providerType","identifier"]}}]}},"\/users\/{userId}\/targets\/{targetId}":{"get":{"summary":"Get User Target","operationId":"usersGetTarget","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"","responses":{"200":{"description":"Target","schema":{"$ref":"#\/definitions\/target"}}},"x-appwrite":{"method":"getTarget","weight":226,"cookies":false,"type":"","demo":"users\/get-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-target.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.read","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"targetId","description":"Target ID.","required":true,"type":"string","x-example":"[TARGET_ID]","in":"path"}]},"patch":{"summary":"Update User target","operationId":"usersUpdateTarget","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"","responses":{"200":{"description":"Target","schema":{"$ref":"#\/definitions\/target"}}},"x-appwrite":{"method":"updateTarget","weight":241,"cookies":false,"type":"","demo":"users\/update-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-target.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"targetId","description":"Target ID.","required":true,"type":"string","x-example":"[TARGET_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"identifier":{"type":"string","description":"The target identifier (token, email, phone etc.)","default":"","x-example":"[IDENTIFIER]"},"providerId":{"type":"string","description":"Provider ID. Message will be sent to this target from the specified provider ID. If no provider ID is set the first setup provider will be used.","default":"","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Target name. Max length: 128 chars. For example: My Awesome App Galaxy S23.","default":"","x-example":"[NAME]"}}}}]},"delete":{"summary":"Delete user target","operationId":"usersDeleteTarget","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteTarget","weight":250,"cookies":false,"type":"","demo":"users\/delete-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-target.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"targetId","description":"Target ID.","required":true,"type":"string","x-example":"[TARGET_ID]","in":"path"}]}},"\/users\/{userId}\/tokens":{"post":{"summary":"Create token","operationId":"usersCreateToken","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Returns a token with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [PUT \/account\/sessions\/custom](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateCustomSession) endpoint to complete the login process.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createToken","weight":246,"cookies":false,"type":"","demo":"users\/create-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-token.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"length":{"type":"integer","description":"Token length in characters. The default length is 6 characters","default":6,"x-example":4},"expire":{"type":"integer","description":"Token expiration period in seconds. The default expiration is 15 minutes.","default":900,"x-example":60}}}}]}},"\/users\/{userId}\/verification":{"patch":{"summary":"Update email verification","operationId":"usersUpdateEmailVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user email verification status by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateEmailVerification","weight":239,"cookies":false,"type":"","demo":"users\/update-email-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-email-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"emailVerification":{"type":"boolean","description":"User email verification status.","default":null,"x-example":false}},"required":["emailVerification"]}}]}},"\/users\/{userId}\/verification\/phone":{"patch":{"summary":"Update phone verification","operationId":"usersUpdatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user phone verification status by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePhoneVerification","weight":234,"cookies":false,"type":"","demo":"users\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"phoneVerification":{"type":"boolean","description":"User phone verification status.","default":null,"x-example":false}},"required":["phoneVerification"]}}]}},"\/vcs\/github\/installations\/{installationId}\/providerRepositories":{"get":{"summary":"List Repositories","operationId":"vcsListRepositories","consumes":["application\/json"],"produces":["application\/json"],"tags":["vcs"],"description":"","responses":{"200":{"description":"Provider Repositories List","schema":{"$ref":"#\/definitions\/providerRepositoryList"}}},"x-appwrite":{"method":"listRepositories","weight":256,"cookies":false,"type":"","demo":"vcs\/list-repositories.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"type":"string","x-example":"[INSTALLATION_ID]","in":"path"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create repository","operationId":"vcsCreateRepository","consumes":["application\/json"],"produces":["application\/json"],"tags":["vcs"],"description":"","responses":{"200":{"description":"ProviderRepository","schema":{"$ref":"#\/definitions\/providerRepository"}}},"x-appwrite":{"method":"createRepository","weight":257,"cookies":false,"type":"","demo":"vcs\/create-repository.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"type":"string","x-example":"[INSTALLATION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Repository name (slug)","default":null,"x-example":"[NAME]"},"private":{"type":"boolean","description":"Mark repository public or private","default":null,"x-example":false}},"required":["name","private"]}}]}},"\/vcs\/github\/installations\/{installationId}\/providerRepositories\/{providerRepositoryId}":{"get":{"summary":"Get repository","operationId":"vcsGetRepository","consumes":["application\/json"],"produces":["application\/json"],"tags":["vcs"],"description":"","responses":{"200":{"description":"ProviderRepository","schema":{"$ref":"#\/definitions\/providerRepository"}}},"x-appwrite":{"method":"getRepository","weight":258,"cookies":false,"type":"","demo":"vcs\/get-repository.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"type":"string","x-example":"[INSTALLATION_ID]","in":"path"},{"name":"providerRepositoryId","description":"Repository Id","required":true,"type":"string","x-example":"[PROVIDER_REPOSITORY_ID]","in":"path"}]}},"\/vcs\/github\/installations\/{installationId}\/providerRepositories\/{providerRepositoryId}\/branches":{"get":{"summary":"List Repository Branches","operationId":"vcsListRepositoryBranches","consumes":["application\/json"],"produces":["application\/json"],"tags":["vcs"],"description":"","responses":{"200":{"description":"Branches List","schema":{"$ref":"#\/definitions\/branchList"}}},"x-appwrite":{"method":"listRepositoryBranches","weight":259,"cookies":false,"type":"","demo":"vcs\/list-repository-branches.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"type":"string","x-example":"[INSTALLATION_ID]","in":"path"},{"name":"providerRepositoryId","description":"Repository Id","required":true,"type":"string","x-example":"[PROVIDER_REPOSITORY_ID]","in":"path"}]}},"\/vcs\/github\/installations\/{installationId}\/providerRepositories\/{providerRepositoryId}\/detection":{"post":{"summary":"Detect runtime settings from source code","operationId":"vcsCreateRepositoryDetection","consumes":["application\/json"],"produces":["application\/json"],"tags":["vcs"],"description":"","responses":{"200":{"description":"Detection","schema":{"$ref":"#\/definitions\/detection"}}},"x-appwrite":{"method":"createRepositoryDetection","weight":255,"cookies":false,"type":"","demo":"vcs\/create-repository-detection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"type":"string","x-example":"[INSTALLATION_ID]","in":"path"},{"name":"providerRepositoryId","description":"Repository Id","required":true,"type":"string","x-example":"[PROVIDER_REPOSITORY_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerRootDirectory":{"type":"string","description":"Path to Root Directory","default":"","x-example":"[PROVIDER_ROOT_DIRECTORY]"}}}}]}},"\/vcs\/github\/installations\/{installationId}\/repositories\/{repositoryId}":{"patch":{"summary":"Authorize external deployment","operationId":"vcsUpdateExternalDeployments","consumes":["application\/json"],"produces":[],"tags":["vcs"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"updateExternalDeployments","weight":264,"cookies":false,"type":"","demo":"vcs\/update-external-deployments.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"type":"string","x-example":"[INSTALLATION_ID]","in":"path"},{"name":"repositoryId","description":"VCS Repository Id","required":true,"type":"string","x-example":"[REPOSITORY_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerPullRequestId":{"type":"string","description":"GitHub Pull Request Id","default":null,"x-example":"[PROVIDER_PULL_REQUEST_ID]"}},"required":["providerPullRequestId"]}}]}},"\/vcs\/installations":{"get":{"summary":"List installations","operationId":"vcsListInstallations","consumes":["application\/json"],"produces":["application\/json"],"tags":["vcs"],"description":"","responses":{"200":{"description":"Installations List","schema":{"$ref":"#\/definitions\/installationList"}}},"x-appwrite":{"method":"listInstallations","weight":261,"cookies":false,"type":"","demo":"vcs\/list-installations.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/vcs\/list-installations.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: provider, organization","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]}},"\/vcs\/installations\/{installationId}":{"get":{"summary":"Get installation","operationId":"vcsGetInstallation","consumes":["application\/json"],"produces":["application\/json"],"tags":["vcs"],"description":"","responses":{"200":{"description":"Installation","schema":{"$ref":"#\/definitions\/installation"}}},"x-appwrite":{"method":"getInstallation","weight":262,"cookies":false,"type":"","demo":"vcs\/get-installation.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/vcs\/get-installation.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"type":"string","x-example":"[INSTALLATION_ID]","in":"path"}]},"delete":{"summary":"Delete Installation","operationId":"vcsDeleteInstallation","consumes":["application\/json"],"produces":[],"tags":["vcs"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteInstallation","weight":263,"cookies":false,"type":"","demo":"vcs\/delete-installation.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/vcs\/delete-installation.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"type":"string","x-example":"[INSTALLATION_ID]","in":"path"}]}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"project","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]},{"name":"proxy","description":"The Proxy Service allows you to configure actions for your domains beyond DNS configuration.","x-globalAttributes":[]},{"name":"graphql","description":"The GraphQL API allows you to query and mutate your Appwrite server using GraphQL.","x-globalAttributes":[]},{"name":"console","description":"The Console service allows you to interact with console relevant informations.","x-globalAttributes":[]},{"name":"migrations","description":"The Migrations service allows you to migrate third-party data to your Appwrite project.","x-globalAttributes":[]},{"name":"messaging","description":"The Messaging service allows you to send messages to any provider type (SMTP, push notification, SMS, etc.).","x-globalAttributes":[]}],"definitions":{"any":{"description":"Any","type":"object","additionalProperties":true},"documentList":{"description":"Documents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of documents documents that matched your query.","x-example":5,"format":"int32"},"documents":{"type":"array","description":"List of documents.","items":{"type":"object","$ref":"#\/definitions\/document"},"x-example":""}},"required":["total","documents"]},"collectionList":{"description":"Collections List","type":"object","properties":{"total":{"type":"integer","description":"Total number of collections documents that matched your query.","x-example":5,"format":"int32"},"collections":{"type":"array","description":"List of collections.","items":{"type":"object","$ref":"#\/definitions\/collection"},"x-example":""}},"required":["total","collections"]},"databaseList":{"description":"Databases List","type":"object","properties":{"total":{"type":"integer","description":"Total number of databases documents that matched your query.","x-example":5,"format":"int32"},"databases":{"type":"array","description":"List of databases.","items":{"type":"object","$ref":"#\/definitions\/database"},"x-example":""}},"required":["total","databases"]},"indexList":{"description":"Indexes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of indexes documents that matched your query.","x-example":5,"format":"int32"},"indexes":{"type":"array","description":"List of indexes.","items":{"type":"object","$ref":"#\/definitions\/index"},"x-example":""}},"required":["total","indexes"]},"userList":{"description":"Users List","type":"object","properties":{"total":{"type":"integer","description":"Total number of users documents that matched your query.","x-example":5,"format":"int32"},"users":{"type":"array","description":"List of users.","items":{"type":"object","$ref":"#\/definitions\/user"},"x-example":""}},"required":["total","users"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of sessions documents that matched your query.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"type":"object","$ref":"#\/definitions\/session"},"x-example":""}},"required":["total","sessions"]},"identityList":{"description":"Identities List","type":"object","properties":{"total":{"type":"integer","description":"Total number of identities documents that matched your query.","x-example":5,"format":"int32"},"identities":{"type":"array","description":"List of identities.","items":{"type":"object","$ref":"#\/definitions\/identity"},"x-example":""}},"required":["total","identities"]},"logList":{"description":"Logs List","type":"object","properties":{"total":{"type":"integer","description":"Total number of logs documents that matched your query.","x-example":5,"format":"int32"},"logs":{"type":"array","description":"List of logs.","items":{"type":"object","$ref":"#\/definitions\/log"},"x-example":""}},"required":["total","logs"]},"fileList":{"description":"Files List","type":"object","properties":{"total":{"type":"integer","description":"Total number of files documents that matched your query.","x-example":5,"format":"int32"},"files":{"type":"array","description":"List of files.","items":{"type":"object","$ref":"#\/definitions\/file"},"x-example":""}},"required":["total","files"]},"bucketList":{"description":"Buckets List","type":"object","properties":{"total":{"type":"integer","description":"Total number of buckets documents that matched your query.","x-example":5,"format":"int32"},"buckets":{"type":"array","description":"List of buckets.","items":{"type":"object","$ref":"#\/definitions\/bucket"},"x-example":""}},"required":["total","buckets"]},"teamList":{"description":"Teams List","type":"object","properties":{"total":{"type":"integer","description":"Total number of teams documents that matched your query.","x-example":5,"format":"int32"},"teams":{"type":"array","description":"List of teams.","items":{"type":"object","$ref":"#\/definitions\/team"},"x-example":""}},"required":["total","teams"]},"membershipList":{"description":"Memberships List","type":"object","properties":{"total":{"type":"integer","description":"Total number of memberships documents that matched your query.","x-example":5,"format":"int32"},"memberships":{"type":"array","description":"List of memberships.","items":{"type":"object","$ref":"#\/definitions\/membership"},"x-example":""}},"required":["total","memberships"]},"functionList":{"description":"Functions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of functions documents that matched your query.","x-example":5,"format":"int32"},"functions":{"type":"array","description":"List of functions.","items":{"type":"object","$ref":"#\/definitions\/function"},"x-example":""}},"required":["total","functions"]},"installationList":{"description":"Installations List","type":"object","properties":{"total":{"type":"integer","description":"Total number of installations documents that matched your query.","x-example":5,"format":"int32"},"installations":{"type":"array","description":"List of installations.","items":{"type":"object","$ref":"#\/definitions\/installation"},"x-example":""}},"required":["total","installations"]},"providerRepositoryList":{"description":"Provider Repositories List","type":"object","properties":{"total":{"type":"integer","description":"Total number of providerRepositories documents that matched your query.","x-example":5,"format":"int32"},"providerRepositories":{"type":"array","description":"List of providerRepositories.","items":{"type":"object","$ref":"#\/definitions\/providerRepository"},"x-example":""}},"required":["total","providerRepositories"]},"branchList":{"description":"Branches List","type":"object","properties":{"total":{"type":"integer","description":"Total number of branches documents that matched your query.","x-example":5,"format":"int32"},"branches":{"type":"array","description":"List of branches.","items":{"type":"object","$ref":"#\/definitions\/branch"},"x-example":""}},"required":["total","branches"]},"runtimeList":{"description":"Runtimes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of runtimes documents that matched your query.","x-example":5,"format":"int32"},"runtimes":{"type":"array","description":"List of runtimes.","items":{"type":"object","$ref":"#\/definitions\/runtime"},"x-example":""}},"required":["total","runtimes"]},"deploymentList":{"description":"Deployments List","type":"object","properties":{"total":{"type":"integer","description":"Total number of deployments documents that matched your query.","x-example":5,"format":"int32"},"deployments":{"type":"array","description":"List of deployments.","items":{"type":"object","$ref":"#\/definitions\/deployment"},"x-example":""}},"required":["total","deployments"]},"executionList":{"description":"Executions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of executions documents that matched your query.","x-example":5,"format":"int32"},"executions":{"type":"array","description":"List of executions.","items":{"type":"object","$ref":"#\/definitions\/execution"},"x-example":""}},"required":["total","executions"]},"projectList":{"description":"Projects List","type":"object","properties":{"total":{"type":"integer","description":"Total number of projects documents that matched your query.","x-example":5,"format":"int32"},"projects":{"type":"array","description":"List of projects.","items":{"type":"object","$ref":"#\/definitions\/project"},"x-example":""}},"required":["total","projects"]},"webhookList":{"description":"Webhooks List","type":"object","properties":{"total":{"type":"integer","description":"Total number of webhooks documents that matched your query.","x-example":5,"format":"int32"},"webhooks":{"type":"array","description":"List of webhooks.","items":{"type":"object","$ref":"#\/definitions\/webhook"},"x-example":""}},"required":["total","webhooks"]},"keyList":{"description":"API Keys List","type":"object","properties":{"total":{"type":"integer","description":"Total number of keys documents that matched your query.","x-example":5,"format":"int32"},"keys":{"type":"array","description":"List of keys.","items":{"type":"object","$ref":"#\/definitions\/key"},"x-example":""}},"required":["total","keys"]},"platformList":{"description":"Platforms List","type":"object","properties":{"total":{"type":"integer","description":"Total number of platforms documents that matched your query.","x-example":5,"format":"int32"},"platforms":{"type":"array","description":"List of platforms.","items":{"type":"object","$ref":"#\/definitions\/platform"},"x-example":""}},"required":["total","platforms"]},"countryList":{"description":"Countries List","type":"object","properties":{"total":{"type":"integer","description":"Total number of countries documents that matched your query.","x-example":5,"format":"int32"},"countries":{"type":"array","description":"List of countries.","items":{"type":"object","$ref":"#\/definitions\/country"},"x-example":""}},"required":["total","countries"]},"continentList":{"description":"Continents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of continents documents that matched your query.","x-example":5,"format":"int32"},"continents":{"type":"array","description":"List of continents.","items":{"type":"object","$ref":"#\/definitions\/continent"},"x-example":""}},"required":["total","continents"]},"languageList":{"description":"Languages List","type":"object","properties":{"total":{"type":"integer","description":"Total number of languages documents that matched your query.","x-example":5,"format":"int32"},"languages":{"type":"array","description":"List of languages.","items":{"type":"object","$ref":"#\/definitions\/language"},"x-example":""}},"required":["total","languages"]},"currencyList":{"description":"Currencies List","type":"object","properties":{"total":{"type":"integer","description":"Total number of currencies documents that matched your query.","x-example":5,"format":"int32"},"currencies":{"type":"array","description":"List of currencies.","items":{"type":"object","$ref":"#\/definitions\/currency"},"x-example":""}},"required":["total","currencies"]},"phoneList":{"description":"Phones List","type":"object","properties":{"total":{"type":"integer","description":"Total number of phones documents that matched your query.","x-example":5,"format":"int32"},"phones":{"type":"array","description":"List of phones.","items":{"type":"object","$ref":"#\/definitions\/phone"},"x-example":""}},"required":["total","phones"]},"variableList":{"description":"Variables List","type":"object","properties":{"total":{"type":"integer","description":"Total number of variables documents that matched your query.","x-example":5,"format":"int32"},"variables":{"type":"array","description":"List of variables.","items":{"type":"object","$ref":"#\/definitions\/variable"},"x-example":""}},"required":["total","variables"]},"proxyRuleList":{"description":"Rule List","type":"object","properties":{"total":{"type":"integer","description":"Total number of rules documents that matched your query.","x-example":5,"format":"int32"},"rules":{"type":"array","description":"List of rules.","items":{"type":"object","$ref":"#\/definitions\/proxyRule"},"x-example":""}},"required":["total","rules"]},"localeCodeList":{"description":"Locale codes list","type":"object","properties":{"total":{"type":"integer","description":"Total number of localeCodes documents that matched your query.","x-example":5,"format":"int32"},"localeCodes":{"type":"array","description":"List of localeCodes.","items":{"type":"object","$ref":"#\/definitions\/localeCode"},"x-example":""}},"required":["total","localeCodes"]},"providerList":{"description":"Provider list","type":"object","properties":{"total":{"type":"integer","description":"Total number of providers documents that matched your query.","x-example":5,"format":"int32"},"providers":{"type":"array","description":"List of providers.","items":{"type":"object","$ref":"#\/definitions\/provider"},"x-example":""}},"required":["total","providers"]},"messageList":{"description":"Message list","type":"object","properties":{"total":{"type":"integer","description":"Total number of messages documents that matched your query.","x-example":5,"format":"int32"},"messages":{"type":"array","description":"List of messages.","items":{"type":"object","$ref":"#\/definitions\/message"},"x-example":""}},"required":["total","messages"]},"topicList":{"description":"Topic list","type":"object","properties":{"total":{"type":"integer","description":"Total number of topics documents that matched your query.","x-example":5,"format":"int32"},"topics":{"type":"array","description":"List of topics.","items":{"type":"object","$ref":"#\/definitions\/topic"},"x-example":""}},"required":["total","topics"]},"subscriberList":{"description":"Subscriber list","type":"object","properties":{"total":{"type":"integer","description":"Total number of subscribers documents that matched your query.","x-example":5,"format":"int32"},"subscribers":{"type":"array","description":"List of subscribers.","items":{"type":"object","$ref":"#\/definitions\/subscriber"},"x-example":""}},"required":["total","subscribers"]},"targetList":{"description":"Target list","type":"object","properties":{"total":{"type":"integer","description":"Total number of targets documents that matched your query.","x-example":5,"format":"int32"},"targets":{"type":"array","description":"List of targets.","items":{"type":"object","$ref":"#\/definitions\/target"},"x-example":""}},"required":["total","targets"]},"migrationList":{"description":"Migrations List","type":"object","properties":{"total":{"type":"integer","description":"Total number of migrations documents that matched your query.","x-example":5,"format":"int32"},"migrations":{"type":"array","description":"List of migrations.","items":{"type":"object","$ref":"#\/definitions\/migration"},"x-example":""}},"required":["total","migrations"]},"firebaseProjectList":{"description":"Migrations Firebase Projects List","type":"object","properties":{"total":{"type":"integer","description":"Total number of projects documents that matched your query.","x-example":5,"format":"int32"},"projects":{"type":"array","description":"List of projects.","items":{"type":"object","$ref":"#\/definitions\/firebaseProject"},"x-example":""}},"required":["total","projects"]},"database":{"description":"Database","type":"object","properties":{"$id":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Database name.","x-example":"My Database"},"$createdAt":{"type":"string","description":"Database creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Database update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"enabled":{"type":"boolean","description":"If database is enabled. Can be 'enabled' or 'disabled'. When disabled, the database is inaccessible to users, but remains accessible to Server SDKs using API keys.","x-example":false}},"required":["$id","name","$createdAt","$updatedAt","enabled"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Collection creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Collection update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Collection permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled. Can be 'enabled' or 'disabled'. When disabled, the collection is inaccessible to users, but remains accessible to Server SDKs using API keys.","x-example":false},"documentSecurity":{"type":"boolean","description":"Whether document-level permissions are enabled. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":true},"attributes":{"type":"array","description":"Collection attributes.","items":{"x-anyOf":[{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeRelationship"},{"$ref":"#\/definitions\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"type":"object","$ref":"#\/definitions\/index"},"x-example":{}}},"required":["$id","$createdAt","$updatedAt","$permissions","databaseId","name","enabled","documentSecurity","attributes","indexes"]},"attributeList":{"description":"Attributes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of attributes in the given collection.","x-example":5,"format":"int32"},"attributes":{"type":"array","description":"List of attributes.","items":{"x-anyOf":[{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeRelationship"},{"$ref":"#\/definitions\/attributeString"}]},"x-example":""}},"required":["total","attributes"]},"attributeString":{"description":"AttributeString","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"fullName"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"size":{"type":"integer","description":"Attribute size.","x-example":128,"format":"int32"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"default","x-nullable":true}},"required":["key","type","status","error","required","size"]},"attributeInteger":{"description":"AttributeInteger","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"count"},"type":{"type":"string","description":"Attribute type.","x-example":"integer"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"min":{"type":"integer","description":"Minimum value to enforce for new documents.","x-example":1,"format":"int32","x-nullable":true},"max":{"type":"integer","description":"Maximum value to enforce for new documents.","x-example":10,"format":"int32","x-nullable":true},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":10,"format":"int32","x-nullable":true}},"required":["key","type","status","error","required"]},"attributeFloat":{"description":"AttributeFloat","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"percentageCompleted"},"type":{"type":"string","description":"Attribute type.","x-example":"double"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"min":{"type":"number","description":"Minimum value to enforce for new documents.","x-example":1.5,"format":"double","x-nullable":true},"max":{"type":"number","description":"Maximum value to enforce for new documents.","x-example":10.5,"format":"double","x-nullable":true},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":2.5,"format":"double","x-nullable":true}},"required":["key","type","status","error","required"]},"attributeBoolean":{"description":"AttributeBoolean","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"isEnabled"},"type":{"type":"string","description":"Attribute type.","x-example":"boolean"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":false,"x-nullable":true}},"required":["key","type","status","error","required"]},"attributeEmail":{"description":"AttributeEmail","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"userEmail"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"format":{"type":"string","description":"String format.","x-example":"email"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"default@example.com","x-nullable":true}},"required":["key","type","status","error","required","format"]},"attributeEnum":{"description":"AttributeEnum","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"status"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"elements":{"type":"array","description":"Array of elements in enumerated type.","items":{"type":"string"},"x-example":"element"},"format":{"type":"string","description":"String format.","x-example":"enum"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"element","x-nullable":true}},"required":["key","type","status","error","required","elements","format"]},"attributeIp":{"description":"AttributeIP","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"ipAddress"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"format":{"type":"string","description":"String format.","x-example":"ip"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"192.0.2.0","x-nullable":true}},"required":["key","type","status","error","required","format"]},"attributeUrl":{"description":"AttributeURL","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"githubUrl"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"format":{"type":"string","description":"String format.","x-example":"url"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"http:\/\/example.com","x-nullable":true}},"required":["key","type","status","error","required","format"]},"attributeDatetime":{"description":"AttributeDatetime","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"birthDay"},"type":{"type":"string","description":"Attribute type.","x-example":"datetime"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"format":{"type":"string","description":"ISO 8601 format.","x-example":"datetime"},"default":{"type":"string","description":"Default value for attribute when not provided. Only null is optional","x-example":"2020-10-15T06:38:00.000+00:00","x-nullable":true}},"required":["key","type","status","error","required","format"]},"attributeRelationship":{"description":"AttributeRelationship","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"fullName"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"relatedCollection":{"type":"string","description":"The ID of the related collection.","x-example":"collection"},"relationType":{"type":"string","description":"The type of the relationship.","x-example":"oneToOne|oneToMany|manyToOne|manyToMany"},"twoWay":{"type":"boolean","description":"Is the relationship two-way?","x-example":false},"twoWayKey":{"type":"string","description":"The key of the two-way relationship.","x-example":"string"},"onDelete":{"type":"string","description":"How deleting the parent document will propagate to child documents.","x-example":"restrict|cascade|setNull"},"side":{"type":"string","description":"Whether this is the parent or child side of the relationship","x-example":"parent|child"}},"required":["key","type","status","error","required","relatedCollection","relationType","twoWay","twoWayKey","onDelete","side"]},"index":{"description":"Index","type":"object","properties":{"key":{"type":"string","description":"Index Key.","x-example":"index1"},"type":{"type":"string","description":"Index type.","x-example":"primary"},"status":{"type":"string","description":"Index status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an index.","x-example":"string"},"attributes":{"type":"array","description":"Index attributes.","items":{"type":"string"},"x-example":[]},"orders":{"type":"array","description":"Index orders.","items":{"type":"string"},"x-example":[],"x-nullable":true}},"required":["key","type","status","error","attributes"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"user":{"description":"User","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"password":{"type":"string","description":"Hashed user password.","x-example":"$argon2id$v=19$m=2048,t=4,p=3$aUZjLnliVWRINmFNTWMudg$5S+x+7uA31xFnrHFT47yFwcJeaP0w92L\/4LdgrVRXxE","x-nullable":true},"hash":{"type":"string","description":"Password hashing algorithm.","x-example":"argon2","x-nullable":true},"hashOptions":{"type":"object","description":"Password hashing algorithm configuration.","x-example":{},"items":{"x-oneOf":[{"$ref":"#\/definitions\/algoArgon2"},{"$ref":"#\/definitions\/algoScrypt"},{"$ref":"#\/definitions\/algoScryptModified"},{"$ref":"#\/definitions\/algoBcrypt"},{"$ref":"#\/definitions\/algoPhpass"},{"$ref":"#\/definitions\/algoSha"},{"$ref":"#\/definitions\/algoMd5"}]},"x-nullable":true},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"labels":{"type":"array","description":"Labels for the user.","items":{"type":"string"},"x-example":["vip"]},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"mfa":{"type":"boolean","description":"Multi factor authentication status.","x-example":true},"totp":{"type":"boolean","description":"TOTP status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"type":"object","$ref":"#\/definitions\/preferences"}},"targets":{"type":"array","description":"A user-owned message receiver. A single user may have multiple e.g. emails, phones, and a browser. Each target is registered with a single provider.","items":{"type":"object","$ref":"#\/definitions\/target"},"x-example":[]},"accessedAt":{"type":"string","description":"Most recent access date in ISO 8601 format. This attribute is only updated again after 24 hours.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","$updatedAt","name","registration","status","labels","passwordUpdate","email","phone","emailVerification","phoneVerification","mfa","totp","prefs","targets","accessedAt"]},"algoMd5":{"description":"AlgoMD5","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"md5"}},"required":["type"]},"algoSha":{"description":"AlgoSHA","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"sha"}},"required":["type"]},"algoPhpass":{"description":"AlgoPHPass","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"phpass"}},"required":["type"]},"algoBcrypt":{"description":"AlgoBcrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"bcrypt"}},"required":["type"]},"algoScrypt":{"description":"AlgoScrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scrypt"},"costCpu":{"type":"integer","description":"CPU complexity of computed hash.","x-example":8,"format":"int32"},"costMemory":{"type":"integer","description":"Memory complexity of computed hash.","x-example":14,"format":"int32"},"costParallel":{"type":"integer","description":"Parallelization of computed hash.","x-example":1,"format":"int32"},"length":{"type":"integer","description":"Length used to compute hash.","x-example":64,"format":"int32"}},"required":["type","costCpu","costMemory","costParallel","length"]},"algoScryptModified":{"description":"AlgoScryptModified","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scryptMod"},"salt":{"type":"string","description":"Salt used to compute hash.","x-example":"UxLMreBr6tYyjQ=="},"saltSeparator":{"type":"string","description":"Separator used to compute hash.","x-example":"Bw=="},"signerKey":{"type":"string","description":"Key used to compute hash.","x-example":"XyEKE9RcTDeLEsL\/RjwPDBv\/RqDl8fb3gpYEOQaPihbxf1ZAtSOHCjuAAa7Q3oHpCYhXSN9tizHgVOwn6krflQ=="}},"required":["type","salt","saltSeparator","signerKey"]},"algoArgon2":{"description":"AlgoArgon2","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"argon2"},"memoryCost":{"type":"integer","description":"Memory used to compute hash.","x-example":65536,"format":"int32"},"timeCost":{"type":"integer","description":"Amount of time consumed to compute hash","x-example":4,"format":"int32"},"threads":{"type":"integer","description":"Number of threads used to compute hash.","x-example":3,"format":"int32"}},"required":["type","memoryCost","timeCost","threads"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true},"factors":{"type":"array","description":"Returns a list of active session factors.","items":{"type":"string"},"x-example":["email"]},"secret":{"type":"string","description":"Secret used to authenticate the user. Only included if the request was made with an API key","x-example":"5e5bb8c16897e"}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current","factors","secret"]},"identity":{"description":"Identity","type":"object","properties":{"$id":{"type":"string","description":"Identity ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Identity creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Identity update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"provider":{"type":"string","description":"Identity Provider.","x-example":"email"},"providerUid":{"type":"string","description":"ID of the User in the Identity Provider.","x-example":"5e5bb8c16897e"},"providerEmail":{"type":"string","description":"Email of the User in the Identity Provider.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Identity Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Identity Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"}},"required":["$id","$createdAt","$updatedAt","userId","provider","providerUid","providerEmail","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"phrase":{"type":"string","description":"Security phrase of a token. Empty if security phrase was not requested when creating a token. It includes randomly generated phrase which is also sent in the external resource such as email.","x-example":"Golden Fox"}},"required":["$id","$createdAt","userId","secret","expire","phrase"]},"jwt":{"description":"JWT","type":"object","properties":{"jwt":{"type":"string","description":"JWT encoded string.","x-example":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c"}},"required":["jwt"]},"locale":{"description":"Locale","type":"object","properties":{"ip":{"type":"string","description":"User IP address.","x-example":"127.0.0.1"},"countryCode":{"type":"string","description":"Country code in [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) two-character format","x-example":"US"},"country":{"type":"string","description":"Country name. This field support localization.","x-example":"United States"},"continentCode":{"type":"string","description":"Continent code. A two character continent code \"AF\" for Africa, \"AN\" for Antarctica, \"AS\" for Asia, \"EU\" for Europe, \"NA\" for North America, \"OC\" for Oceania, and \"SA\" for South America.","x-example":"NA"},"continent":{"type":"string","description":"Continent name. This field support localization.","x-example":"North America"},"eu":{"type":"boolean","description":"True if country is part of the European Union.","x-example":false},"currency":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format","x-example":"USD"}},"required":["ip","countryCode","country","continentCode","continent","eu","currency"]},"localeCode":{"description":"LocaleCode","type":"object","properties":{"code":{"type":"string","description":"Locale codes in [ISO 639-1](https:\/\/en.wikipedia.org\/wiki\/List_of_ISO_639-1_codes)","x-example":"en-us"},"name":{"type":"string","description":"Locale name","x-example":"US"}},"required":["code","name"]},"file":{"description":"File","type":"object","properties":{"$id":{"type":"string","description":"File ID.","x-example":"5e5ea5c16897e"},"bucketId":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Bucket creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Bucket update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Bucket permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"fileSecurity":{"type":"boolean","description":"Whether file-level security is enabled. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":true},"name":{"type":"string","description":"Bucket name.","x-example":"Documents"},"enabled":{"type":"boolean","description":"Bucket enabled.","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size supported.","x-example":100,"format":"int32"},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions.","items":{"type":"string"},"x-example":["jpg","png"]},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Will be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd).","x-example":"gzip"},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$createdAt","$updatedAt","$permissions","fileSecurity","name","enabled","maximumFileSize","allowedFileExtensions","compression","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"},"prefs":{"type":"object","description":"Team preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"type":"object","$ref":"#\/definitions\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","total","prefs"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"mfa":{"type":"boolean","description":"Multi factor authentication status, true if the user has MFA enabled or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":["owner"]}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","mfa","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Function creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Function update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"users"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"enabled":{"type":"boolean","description":"Function enabled.","x-example":false},"live":{"type":"boolean","description":"Is the function deployed with the latest configuration? This is set to false if you've changed an environment variables, entrypoint, commands, or other settings that needs redeploy to be applied. When the value is false, redeploy the function to update it with the latest configuration.","x-example":false},"logging":{"type":"boolean","description":"Whether executions will be logged. When set to false, executions will not be logged, but will reduce resource used by your Appwrite project.","x-example":false},"runtime":{"type":"string","description":"Function execution runtime.","x-example":"python-3.8"},"deployment":{"type":"string","description":"Function's active deployment ID.","x-example":"5e5ea5c16897e"},"vars":{"type":"array","description":"Function variables.","items":{"type":"object","$ref":"#\/definitions\/variable"},"x-example":[]},"events":{"type":"array","description":"Function trigger events.","items":{"type":"string"},"x-example":"account.create"},"schedule":{"type":"string","description":"Function execution schedult in CRON format.","x-example":"5 4 * * *"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":300,"format":"int32"},"entrypoint":{"type":"string","description":"The entrypoint file used to execute the deployment.","x-example":"index.js"},"commands":{"type":"string","description":"The build command used to build the deployment.","x-example":"npm install"},"version":{"type":"string","description":"Version of Open Runtimes used for the function.","x-example":"v2"},"installationId":{"type":"string","description":"Function VCS (Version Control System) installation id.","x-example":"6m40at4ejk5h2u9s1hboo"},"providerRepositoryId":{"type":"string","description":"VCS (Version Control System) Repository ID","x-example":"appwrite"},"providerBranch":{"type":"string","description":"VCS (Version Control System) branch name","x-example":"main"},"providerRootDirectory":{"type":"string","description":"Path to function in VCS (Version Control System) repository","x-example":"functions\/helloWorld"},"providerSilentMode":{"type":"boolean","description":"Is VCS (Version Control System) connection is in silent mode? When in silence mode, no comments will be posted on the repository pull or merge requests","x-example":false}},"required":["$id","$createdAt","$updatedAt","execute","name","enabled","live","logging","runtime","deployment","vars","events","schedule","timeout","entrypoint","commands","version","installationId","providerRepositoryId","providerBranch","providerRootDirectory","providerSilentMode"]},"installation":{"description":"Installation","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Function creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Function update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"VCS (Version Control System) provider name.","x-example":"github"},"organization":{"type":"string","description":"VCS (Version Control System) organization name.","x-example":"appwrite"},"providerInstallationId":{"type":"string","description":"VCS (Version Control System) installation ID.","x-example":"5322"}},"required":["$id","$createdAt","$updatedAt","provider","organization","providerInstallationId"]},"providerRepository":{"description":"ProviderRepository","type":"object","properties":{"id":{"type":"string","description":"VCS (Version Control System) repository ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"VCS (Version Control System) repository name.","x-example":"appwrite"},"organization":{"type":"string","description":"VCS (Version Control System) organization name","x-example":"appwrite"},"provider":{"type":"string","description":"VCS (Version Control System) provider name.","x-example":"github"},"private":{"type":"boolean","description":"Is VCS (Version Control System) repository private?","x-example":true},"runtime":{"type":"string","description":"Auto-detected runtime suggestion. Empty if getting response of getRuntime().","x-example":"node"},"pushedAt":{"type":"string","description":"Last commit date in ISO 8601 format.","x-example":"datetime"}},"required":["id","name","organization","provider","private","runtime","pushedAt"]},"detection":{"description":"Detection","type":"object","properties":{"runtime":{"type":"string","description":"Runtime","x-example":"node"}},"required":["runtime"]},"branch":{"description":"Branch","type":"object","properties":{"name":{"type":"string","description":"Branch Name.","x-example":"main"}},"required":["name"]},"runtime":{"description":"Runtime","type":"object","properties":{"$id":{"type":"string","description":"Runtime ID.","x-example":"python-3.8"},"name":{"type":"string","description":"Runtime Name.","x-example":"Python"},"version":{"type":"string","description":"Runtime version.","x-example":"3.8"},"base":{"type":"string","description":"Base Docker image used to build the runtime.","x-example":"python:3.8-alpine"},"image":{"type":"string","description":"Image name of Docker Hub.","x-example":"appwrite\\\/runtime-for-python:3.8"},"logo":{"type":"string","description":"Name of the logo image.","x-example":"python.png"},"supports":{"type":"array","description":"List of supported architectures.","items":{"type":"string"},"x-example":"amd64"}},"required":["$id","name","version","base","image","logo","supports"]},"deployment":{"description":"Deployment","type":"object","properties":{"$id":{"type":"string","description":"Deployment ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Deployment creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Deployment update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"type":{"type":"string","description":"Type of deployment.","x-example":"vcs"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"index.js"},"size":{"type":"integer","description":"The code size in bytes.","x-example":128,"format":"int32"},"buildId":{"type":"string","description":"The current build ID.","x-example":"5e5ea5c16897e"},"activate":{"type":"boolean","description":"Whether the deployment should be automatically activated.","x-example":true},"status":{"type":"string","description":"The deployment status. Possible values are \"processing\", \"building\", \"waiting\", \"ready\", and \"failed\".","x-example":"ready"},"buildLogs":{"type":"string","description":"The build logs.","x-example":"Compiling source files..."},"buildTime":{"type":"integer","description":"The current build time in seconds.","x-example":128,"format":"int32"},"providerRepositoryName":{"type":"string","description":"The name of the vcs provider repository","x-example":"database"},"providerRepositoryOwner":{"type":"string","description":"The name of the vcs provider repository owner","x-example":"utopia"},"providerRepositoryUrl":{"type":"string","description":"The url of the vcs provider repository","x-example":"https:\/\/github.com\/vermakhushboo\/g4-node-function"},"providerBranch":{"type":"string","description":"The branch of the vcs repository","x-example":"0.7.x"},"providerCommitHash":{"type":"string","description":"The commit hash of the vcs commit","x-example":"7c3f25d"},"providerCommitAuthorUrl":{"type":"string","description":"The url of vcs commit author","x-example":"https:\/\/github.com\/vermakhushboo"},"providerCommitAuthor":{"type":"string","description":"The name of vcs commit author","x-example":"Khushboo Verma"},"providerCommitMessage":{"type":"string","description":"The commit message","x-example":"Update index.js"},"providerCommitUrl":{"type":"string","description":"The url of the vcs commit","x-example":"https:\/\/github.com\/vermakhushboo\/g4-node-function\/commit\/60c0416257a9cbcdd96b2d370c38d8f8d150ccfb"},"providerBranchUrl":{"type":"string","description":"The branch of the vcs repository","x-example":"https:\/\/github.com\/vermakhushboo\/appwrite\/tree\/0.7.x"}},"required":["$id","$createdAt","$updatedAt","type","resourceId","resourceType","entrypoint","size","buildId","activate","status","buildLogs","buildTime","providerRepositoryName","providerRepositoryOwner","providerRepositoryUrl","providerBranch","providerCommitHash","providerCommitAuthorUrl","providerCommitAuthor","providerCommitMessage","providerCommitUrl","providerBranchUrl"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"requestMethod":{"type":"string","description":"HTTP request method type.","x-example":"GET"},"requestPath":{"type":"string","description":"HTTP request path and query.","x-example":"\/articles?id=5"},"requestHeaders":{"type":"array","description":"HTTP response headers as a key-value object. This will return only whitelisted headers. All headers are returned if execution is created as synchronous.","items":{"type":"object","$ref":"#\/definitions\/headers"},"x-example":[{"Content-Type":"application\/json"}]},"responseStatusCode":{"type":"integer","description":"HTTP response status code.","x-example":200,"format":"int32"},"responseBody":{"type":"string","description":"HTTP response body. This will return empty unless execution is created as synchronous.","x-example":"Developers are awesome."},"responseHeaders":{"type":"array","description":"HTTP response headers as a key-value object. This will return only whitelisted headers. All headers are returned if execution is created as synchronous.","items":{"type":"object","$ref":"#\/definitions\/headers"},"x-example":[{"Content-Type":"application\/json"}]},"logs":{"type":"string","description":"Function logs. Includes the last 4,000 characters. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"errors":{"type":"string","description":"Function errors. Includes the last 4,000 characters. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"Function execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","requestMethod","requestPath","requestHeaders","responseStatusCode","responseBody","responseHeaders","logs","errors","duration"]},"project":{"description":"Project","type":"object","properties":{"$id":{"type":"string","description":"Project ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Project creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Project update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Project name.","x-example":"New Project"},"description":{"type":"string","description":"Project description.","x-example":"This is a new project."},"teamId":{"type":"string","description":"Project team ID.","x-example":"1592981250"},"logo":{"type":"string","description":"Project logo file ID.","x-example":"5f5c451b403cb"},"url":{"type":"string","description":"Project website URL.","x-example":"5f5c451b403cb"},"legalName":{"type":"string","description":"Company legal name.","x-example":"Company LTD."},"legalCountry":{"type":"string","description":"Country code in [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) two-character format.","x-example":"US"},"legalState":{"type":"string","description":"State name.","x-example":"New York"},"legalCity":{"type":"string","description":"City name.","x-example":"New York City."},"legalAddress":{"type":"string","description":"Company Address.","x-example":"620 Eighth Avenue, New York, NY 10018"},"legalTaxId":{"type":"string","description":"Company Tax ID.","x-example":"131102020"},"authDuration":{"type":"integer","description":"Session duration in seconds.","x-example":60,"format":"int32"},"authLimit":{"type":"integer","description":"Max users allowed. 0 is unlimited.","x-example":100,"format":"int32"},"authSessionsLimit":{"type":"integer","description":"Max sessions allowed per user. 100 maximum.","x-example":10,"format":"int32"},"authPasswordHistory":{"type":"integer","description":"Max allowed passwords in the history list per user. Max passwords limit allowed in history is 20. Use 0 for disabling password history.","x-example":5,"format":"int32"},"authPasswordDictionary":{"type":"boolean","description":"Whether or not to check user's password against most commonly used passwords.","x-example":true},"authPersonalDataCheck":{"type":"boolean","description":"Whether or not to check the user password for similarity with their personal data.","x-example":true},"oAuthProviders":{"type":"array","description":"List of Auth Providers.","items":{"type":"object","$ref":"#\/definitions\/authProvider"},"x-example":[{}]},"platforms":{"type":"array","description":"List of Platforms.","items":{"type":"object","$ref":"#\/definitions\/platform"},"x-example":{}},"webhooks":{"type":"array","description":"List of Webhooks.","items":{"type":"object","$ref":"#\/definitions\/webhook"},"x-example":{}},"keys":{"type":"array","description":"List of API Keys.","items":{"type":"object","$ref":"#\/definitions\/key"},"x-example":{}},"smtpEnabled":{"type":"boolean","description":"Status for custom SMTP","x-example":false},"smtpSenderName":{"type":"string","description":"SMTP sender name","x-example":"John Appwrite"},"smtpSenderEmail":{"type":"string","description":"SMTP sender email","x-example":"john@appwrite.io"},"smtpReplyTo":{"type":"string","description":"SMTP reply to email","x-example":"support@appwrite.io"},"smtpHost":{"type":"string","description":"SMTP server host name","x-example":"mail.appwrite.io"},"smtpPort":{"type":"integer","description":"SMTP server port","x-example":25,"format":"int32"},"smtpUsername":{"type":"string","description":"SMTP server username","x-example":"emailuser"},"smtpPassword":{"type":"string","description":"SMTP server password","x-example":"securepassword"},"smtpSecure":{"type":"string","description":"SMTP server secure protocol","x-example":"tls"},"authEmailPassword":{"type":"boolean","description":"Email\/Password auth method status","x-example":true},"authUsersAuthMagicURL":{"type":"boolean","description":"Magic URL auth method status","x-example":true},"authEmailOtp":{"type":"boolean","description":"Email (OTP) auth method status","x-example":true},"authAnonymous":{"type":"boolean","description":"Anonymous auth method status","x-example":true},"authInvites":{"type":"boolean","description":"Invites auth method status","x-example":true},"authJWT":{"type":"boolean","description":"JWT auth method status","x-example":true},"authPhone":{"type":"boolean","description":"Phone auth method status","x-example":true},"serviceStatusForAccount":{"type":"boolean","description":"Account service status","x-example":true},"serviceStatusForAvatars":{"type":"boolean","description":"Avatars service status","x-example":true},"serviceStatusForDatabases":{"type":"boolean","description":"Databases service status","x-example":true},"serviceStatusForLocale":{"type":"boolean","description":"Locale service status","x-example":true},"serviceStatusForHealth":{"type":"boolean","description":"Health service status","x-example":true},"serviceStatusForStorage":{"type":"boolean","description":"Storage service status","x-example":true},"serviceStatusForTeams":{"type":"boolean","description":"Teams service status","x-example":true},"serviceStatusForUsers":{"type":"boolean","description":"Users service status","x-example":true},"serviceStatusForFunctions":{"type":"boolean","description":"Functions service status","x-example":true},"serviceStatusForGraphql":{"type":"boolean","description":"GraphQL service status","x-example":true},"serviceStatusForMessaging":{"type":"boolean","description":"Messaging service status","x-example":true}},"required":["$id","$createdAt","$updatedAt","name","description","teamId","logo","url","legalName","legalCountry","legalState","legalCity","legalAddress","legalTaxId","authDuration","authLimit","authSessionsLimit","authPasswordHistory","authPasswordDictionary","authPersonalDataCheck","oAuthProviders","platforms","webhooks","keys","smtpEnabled","smtpSenderName","smtpSenderEmail","smtpReplyTo","smtpHost","smtpPort","smtpUsername","smtpPassword","smtpSecure","authEmailPassword","authUsersAuthMagicURL","authEmailOtp","authAnonymous","authInvites","authJWT","authPhone","serviceStatusForAccount","serviceStatusForAvatars","serviceStatusForDatabases","serviceStatusForLocale","serviceStatusForHealth","serviceStatusForStorage","serviceStatusForTeams","serviceStatusForUsers","serviceStatusForFunctions","serviceStatusForGraphql","serviceStatusForMessaging"]},"webhook":{"description":"Webhook","type":"object","properties":{"$id":{"type":"string","description":"Webhook ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Webhook creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Webhook update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Webhook name.","x-example":"My Webhook"},"url":{"type":"string","description":"Webhook URL endpoint.","x-example":"https:\/\/example.com\/webhook"},"events":{"type":"array","description":"Webhook trigger events.","items":{"type":"string"},"x-example":"database.collections.update"},"security":{"type":"boolean","description":"Indicated if SSL \/ TLS Certificate verification is enabled.","x-example":true},"httpUser":{"type":"string","description":"HTTP basic authentication username.","x-example":"username"},"httpPass":{"type":"string","description":"HTTP basic authentication password.","x-example":"password"},"signatureKey":{"type":"string","description":"Signature key which can be used to validated incoming","x-example":"ad3d581ca230e2b7059c545e5a"},"enabled":{"type":"boolean","description":"Indicates if this webhook is enabled.","x-example":true},"logs":{"type":"string","description":"Webhook error logs from the most recent failure.","x-example":"Failed to connect to remote server."},"attempts":{"type":"integer","description":"Number of consecutive failed webhook attempts.","x-example":10,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","name","url","events","security","httpUser","httpPass","signatureKey","enabled","logs","attempts"]},"key":{"description":"Key","type":"object","properties":{"$id":{"type":"string","description":"Key ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Key creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Key update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Key name.","x-example":"My API Key"},"expire":{"type":"string","description":"Key expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"scopes":{"type":"array","description":"Allowed permission scopes.","items":{"type":"string"},"x-example":"users.read"},"secret":{"type":"string","description":"Secret key.","x-example":"919c2d18fb5d4...a2ae413da83346ad2"},"accessedAt":{"type":"string","description":"Most recent access date in ISO 8601 format. This attribute is only updated again after 24 hours.","x-example":"2020-10-15T06:38:00.000+00:00"},"sdks":{"type":"array","description":"List of SDK user agents that used this key.","items":{"type":"string"},"x-example":"appwrite:flutter"}},"required":["$id","$createdAt","$updatedAt","name","expire","scopes","secret","accessedAt","sdks"]},"authProvider":{"description":"AuthProvider","type":"object","properties":{"key":{"type":"string","description":"Auth Provider.","x-example":"github"},"name":{"type":"string","description":"Auth Provider name.","x-example":"GitHub"},"appId":{"type":"string","description":"OAuth 2.0 application ID.","x-example":"259125845563242502"},"secret":{"type":"string","description":"OAuth 2.0 application secret. Might be JSON string if provider requires extra configuration.","x-example":"Bpw_g9c2TGXxfgLshDbSaL8tsCcqgczQ"},"enabled":{"type":"boolean","description":"Auth Provider is active and can be used to create session.","x-example":""}},"required":["key","name","appId","secret","enabled"]},"platform":{"description":"Platform","type":"object","properties":{"$id":{"type":"string","description":"Platform ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Platform creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Platform update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Platform name.","x-example":"My Web App"},"type":{"type":"string","description":"Platform type. Possible values are: web, flutter-web, flutter-ios, flutter-android, ios, android, and unity.","x-example":"web"},"key":{"type":"string","description":"Platform Key. iOS bundle ID or Android package name. Empty string for other platforms.","x-example":"com.company.appname"},"store":{"type":"string","description":"App store or Google Play store ID.","x-example":""},"hostname":{"type":"string","description":"Web app hostname. Empty string for other platforms.","x-example":true},"httpUser":{"type":"string","description":"HTTP basic authentication username.","x-example":"username"},"httpPass":{"type":"string","description":"HTTP basic authentication password.","x-example":"password"}},"required":["$id","$createdAt","$updatedAt","name","type","key","store","hostname","httpUser","httpPass"]},"variable":{"description":"Variable","type":"object","properties":{"$id":{"type":"string","description":"Variable ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"key":{"type":"string","description":"Variable key.","x-example":"API_KEY"},"value":{"type":"string","description":"Variable value.","x-example":"myPa$$word1"},"resourceType":{"type":"string","description":"Service to which the variable belongs. Possible values are \"project\", \"function\"","x-example":"function"},"resourceId":{"type":"string","description":"ID of resource to which the variable belongs. If resourceType is \"project\", it is empty. If resourceType is \"function\", it is ID of the function.","x-example":"myAwesomeFunction"}},"required":["$id","$createdAt","$updatedAt","key","value","resourceType","resourceId"]},"country":{"description":"Country","type":"object","properties":{"name":{"type":"string","description":"Country name.","x-example":"United States"},"code":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"}},"required":["name","code"]},"continent":{"description":"Continent","type":"object","properties":{"name":{"type":"string","description":"Continent name.","x-example":"Europe"},"code":{"type":"string","description":"Continent two letter code.","x-example":"EU"}},"required":["name","code"]},"language":{"description":"Language","type":"object","properties":{"name":{"type":"string","description":"Language name.","x-example":"Italian"},"code":{"type":"string","description":"Language two-character ISO 639-1 codes.","x-example":"it"},"nativeName":{"type":"string","description":"Language native name.","x-example":"Italiano"}},"required":["name","code","nativeName"]},"currency":{"description":"Currency","type":"object","properties":{"symbol":{"type":"string","description":"Currency symbol.","x-example":"$"},"name":{"type":"string","description":"Currency name.","x-example":"US dollar"},"symbolNative":{"type":"string","description":"Currency native symbol.","x-example":"$"},"decimalDigits":{"type":"integer","description":"Number of decimal digits.","x-example":2,"format":"int32"},"rounding":{"type":"number","description":"Currency digit rounding.","x-example":0,"format":"double"},"code":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format.","x-example":"USD"},"namePlural":{"type":"string","description":"Currency plural name","x-example":"US dollars"}},"required":["symbol","name","symbolNative","decimalDigits","rounding","code","namePlural"]},"phone":{"description":"Phone","type":"object","properties":{"code":{"type":"string","description":"Phone code.","x-example":"+1"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["code","countryCode","countryName"]},"healthAntivirus":{"description":"Health Antivirus","type":"object","properties":{"version":{"type":"string","description":"Antivirus version.","x-example":"1.0.0"},"status":{"type":"string","description":"Antivirus status. Possible values can are: `disabled`, `offline`, `online`","x-example":"online"}},"required":["version","status"]},"healthQueue":{"description":"Health Queue","type":"object","properties":{"size":{"type":"integer","description":"Amount of actions in the queue.","x-example":8,"format":"int32"}},"required":["size"]},"healthStatus":{"description":"Health Status","type":"object","properties":{"name":{"type":"string","description":"Name of the service.","x-example":"database"},"ping":{"type":"integer","description":"Duration in milliseconds how long the health check took.","x-example":128,"format":"int32"},"status":{"type":"string","description":"Service status. Possible values can are: `pass`, `fail`","x-example":"pass"}},"required":["name","ping","status"]},"healthTime":{"description":"Health Time","type":"object","properties":{"remoteTime":{"type":"integer","description":"Current unix timestamp on trustful remote server.","x-example":1639490751,"format":"int32"},"localTime":{"type":"integer","description":"Current unix timestamp of local server where Appwrite runs.","x-example":1639490844,"format":"int32"},"diff":{"type":"integer","description":"Difference of unix remote and local timestamps in milliseconds.","x-example":93,"format":"int32"}},"required":["remoteTime","localTime","diff"]},"metric":{"description":"Metric","type":"object","properties":{"value":{"type":"integer","description":"The value of this metric at the timestamp.","x-example":1,"format":"int32"},"date":{"type":"string","description":"The date at which this metric was aggregated in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["value","date"]},"metricBreakdown":{"description":"Metric Breakdown","type":"object","properties":{"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Resource name.","x-example":"Documents"},"value":{"type":"integer","description":"The value of this metric at the timestamp.","x-example":1,"format":"int32"}},"required":["resourceId","name","value"]},"usageDatabases":{"description":"UsageDatabases","type":"object","properties":{"range":{"type":"string","description":"Time range of the usage stats.","x-example":"30d"},"databasesTotal":{"type":"integer","description":"Total aggregated number of databases.","x-example":0,"format":"int32"},"collectionsTotal":{"type":"integer","description":"Total aggregated number of collections.","x-example":0,"format":"int32"},"documentsTotal":{"type":"integer","description":"Total aggregated number of documents.","x-example":0,"format":"int32"},"databases":{"type":"array","description":"Aggregated number of databases per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collections":{"type":"array","description":"Aggregated number of collections per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documents":{"type":"array","description":"Aggregated number of documents per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","databasesTotal","collectionsTotal","documentsTotal","databases","collections","documents"]},"usageDatabase":{"description":"UsageDatabase","type":"object","properties":{"range":{"type":"string","description":"Time range of the usage stats.","x-example":"30d"},"collectionsTotal":{"type":"integer","description":"Total aggregated number of collections.","x-example":0,"format":"int32"},"documentsTotal":{"type":"integer","description":"Total aggregated number of documents.","x-example":0,"format":"int32"},"collections":{"type":"array","description":"Aggregated number of collections per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documents":{"type":"array","description":"Aggregated number of documents per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","collectionsTotal","documentsTotal","collections","documents"]},"usageCollection":{"description":"UsageCollection","type":"object","properties":{"range":{"type":"string","description":"Time range of the usage stats.","x-example":"30d"},"documentsTotal":{"type":"integer","description":"Total aggregated number of of documents.","x-example":0,"format":"int32"},"documents":{"type":"array","description":"Aggregated number of documents per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","documentsTotal","documents"]},"usageUsers":{"description":"UsageUsers","type":"object","properties":{"range":{"type":"string","description":"Time range of the usage stats.","x-example":"30d"},"usersTotal":{"type":"integer","description":"Total aggregated number of statistics of users.","x-example":0,"format":"int32"},"sessionsTotal":{"type":"integer","description":"Total aggregated number of active sessions.","x-example":0,"format":"int32"},"users":{"type":"array","description":"Aggregated number of users per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"sessions":{"type":"array","description":"Aggregated number of active sessions per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","usersTotal","sessionsTotal","users","sessions"]},"usageStorage":{"description":"StorageUsage","type":"object","properties":{"range":{"type":"string","description":"Time range of the usage stats.","x-example":"30d"},"bucketsTotal":{"type":"integer","description":"Total aggregated number of buckets","x-example":0,"format":"int32"},"filesTotal":{"type":"integer","description":"Total aggregated number of files.","x-example":0,"format":"int32"},"filesStorageTotal":{"type":"integer","description":"Total aggregated number of files storage (in bytes).","x-example":0,"format":"int32"},"buckets":{"type":"array","description":"Aggregated number of buckets per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"files":{"type":"array","description":"Aggregated number of files per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"storage":{"type":"array","description":"Aggregated number of files storage (in bytes) per period .","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","bucketsTotal","filesTotal","filesStorageTotal","buckets","files","storage"]},"usageBuckets":{"description":"UsageBuckets","type":"object","properties":{"range":{"type":"string","description":"Time range of the usage stats.","x-example":"30d"},"filesTotal":{"type":"integer","description":"Total aggregated number of bucket files.","x-example":0,"format":"int32"},"filesStorageTotal":{"type":"integer","description":"Total aggregated number of bucket files storage (in bytes).","x-example":0,"format":"int32"},"files":{"type":"array","description":"Aggregated number of bucket files per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"storage":{"type":"array","description":"Aggregated number of bucket storage files (in bytes) per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","filesTotal","filesStorageTotal","files","storage"]},"usageFunctions":{"description":"UsageFunctions","type":"object","properties":{"range":{"type":"string","description":"Time range of the usage stats.","x-example":"30d"},"functionsTotal":{"type":"integer","description":"Total aggregated number of functions.","x-example":0,"format":"int32"},"deploymentsTotal":{"type":"integer","description":"Total aggregated number of functions deployments.","x-example":0,"format":"int32"},"deploymentsStorageTotal":{"type":"integer","description":"Total aggregated sum of functions deployment storage.","x-example":0,"format":"int32"},"buildsTotal":{"type":"integer","description":"Total aggregated number of functions build.","x-example":0,"format":"int32"},"buildsStorageTotal":{"type":"integer","description":"total aggregated sum of functions build storage.","x-example":0,"format":"int32"},"buildsTimeTotal":{"type":"integer","description":"Total aggregated sum of functions build compute time.","x-example":0,"format":"int32"},"executionsTotal":{"type":"integer","description":"Total aggregated number of functions execution.","x-example":0,"format":"int32"},"executionsTimeTotal":{"type":"integer","description":"Total aggregated sum of functions execution compute time.","x-example":0,"format":"int32"},"functions":{"type":"array","description":"Aggregated number of functions per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":0},"deployments":{"type":"array","description":"Aggregated number of functions deployment per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"deploymentsStorage":{"type":"array","description":"Aggregated number of functions deployment storage per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"builds":{"type":"array","description":"Aggregated number of functions build per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"buildsStorage":{"type":"array","description":"Aggregated sum of functions build storage per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"buildsTime":{"type":"array","description":"Aggregated sum of functions build compute time per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"executions":{"type":"array","description":"Aggregated number of functions execution per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"executionsTime":{"type":"array","description":"Aggregated number of functions execution compute time per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","functionsTotal","deploymentsTotal","deploymentsStorageTotal","buildsTotal","buildsStorageTotal","buildsTimeTotal","executionsTotal","executionsTimeTotal","functions","deployments","deploymentsStorage","builds","buildsStorage","buildsTime","executions","executionsTime"]},"usageFunction":{"description":"UsageFunction","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"deploymentsTotal":{"type":"integer","description":"Total aggregated number of function deployments.","x-example":0,"format":"int32"},"deploymentsStorageTotal":{"type":"integer","description":"Total aggregated sum of function deployments storage.","x-example":0,"format":"int32"},"buildsTotal":{"type":"integer","description":"Total aggregated number of function builds.","x-example":0,"format":"int32"},"buildsStorageTotal":{"type":"integer","description":"total aggregated sum of function builds storage.","x-example":0,"format":"int32"},"buildsTimeTotal":{"type":"integer","description":"Total aggregated sum of function builds compute time.","x-example":0,"format":"int32"},"executionsTotal":{"type":"integer","description":"Total aggregated number of function executions.","x-example":0,"format":"int32"},"executionsTimeTotal":{"type":"integer","description":"Total aggregated sum of function executions compute time.","x-example":0,"format":"int32"},"deployments":{"type":"array","description":"Aggregated number of function deployments per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"deploymentsStorage":{"type":"array","description":"Aggregated number of function deployments storage per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"builds":{"type":"array","description":"Aggregated number of function builds per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"buildsStorage":{"type":"array","description":"Aggregated sum of function builds storage per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"buildsTime":{"type":"array","description":"Aggregated sum of function builds compute time per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"executions":{"type":"array","description":"Aggregated number of function executions per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"executionsTime":{"type":"array","description":"Aggregated number of function executions compute time per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","deploymentsTotal","deploymentsStorageTotal","buildsTotal","buildsStorageTotal","buildsTimeTotal","executionsTotal","executionsTimeTotal","deployments","deploymentsStorage","builds","buildsStorage","buildsTime","executions","executionsTime"]},"usageProject":{"description":"UsageProject","type":"object","properties":{"executionsTotal":{"type":"integer","description":"Total aggregated number of function executions.","x-example":0,"format":"int32"},"documentsTotal":{"type":"integer","description":"Total aggregated number of documents.","x-example":0,"format":"int32"},"databasesTotal":{"type":"integer","description":"Total aggregated number of databases.","x-example":0,"format":"int32"},"usersTotal":{"type":"integer","description":"Total aggregated number of users.","x-example":0,"format":"int32"},"filesStorageTotal":{"type":"integer","description":"Total aggregated sum of files storage size (in bytes).","x-example":0,"format":"int32"},"bucketsTotal":{"type":"integer","description":"Total aggregated number of buckets.","x-example":0,"format":"int32"},"requests":{"type":"array","description":"Aggregated number of requests per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"network":{"type":"array","description":"Aggregated number of consumed bandwidth per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"users":{"type":"array","description":"Aggregated number of users per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"executions":{"type":"array","description":"Aggregated number of executions per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"executionsBreakdown":{"type":"array","description":"Aggregated breakdown in totals of executions by functions.","items":{"type":"object","$ref":"#\/definitions\/metricBreakdown"},"x-example":[]},"bucketsBreakdown":{"type":"array","description":"Aggregated breakdown in totals of usage by buckets.","items":{"type":"object","$ref":"#\/definitions\/metricBreakdown"},"x-example":[]}},"required":["executionsTotal","documentsTotal","databasesTotal","usersTotal","filesStorageTotal","bucketsTotal","requests","network","users","executions","executionsBreakdown","bucketsBreakdown"]},"headers":{"description":"Headers","type":"object","properties":{"name":{"type":"string","description":"Header name.","x-example":"Content-Type"},"value":{"type":"string","description":"Header value.","x-example":"application\/json"}},"required":["name","value"]},"proxyRule":{"description":"Rule","type":"object","properties":{"$id":{"type":"string","description":"Rule ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Rule creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Rule update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"domain":{"type":"string","description":"Domain name.","x-example":"appwrite.company.com"},"resourceType":{"type":"string","description":"Action definition for the rule. Possible values are \"api\", \"function\", or \"redirect\"","x-example":"function"},"resourceId":{"type":"string","description":"ID of resource for the action type. If resourceType is \"api\" or \"url\", it is empty. If resourceType is \"function\", it is ID of the function.","x-example":"myAwesomeFunction"},"status":{"type":"string","description":"Domain verification status. Possible values are \"created\", \"verifying\", \"verified\" and \"unverified\"","x-example":"verified"},"logs":{"type":"string","description":"Certificate generation logs. This will return an empty string if generation did not run, or succeeded.","x-example":"HTTP challegne failed."},"renewAt":{"type":"string","description":"Certificate auto-renewal date in ISO 8601 format.","x-example":"datetime"}},"required":["$id","$createdAt","$updatedAt","domain","resourceType","resourceId","status","logs","renewAt"]},"smsTemplate":{"description":"SmsTemplate","type":"object","properties":{"type":{"type":"string","description":"Template type","x-example":"verification"},"locale":{"type":"string","description":"Template locale","x-example":"en_us"},"message":{"type":"string","description":"Template message","x-example":"Click on the link to verify your account."}},"required":["type","locale","message"]},"emailTemplate":{"description":"EmailTemplate","type":"object","properties":{"type":{"type":"string","description":"Template type","x-example":"verification"},"locale":{"type":"string","description":"Template locale","x-example":"en_us"},"message":{"type":"string","description":"Template message","x-example":"Click on the link to verify your account."},"senderName":{"type":"string","description":"Name of the sender","x-example":"My User"},"senderEmail":{"type":"string","description":"Email of the sender","x-example":"mail@appwrite.io"},"replyTo":{"type":"string","description":"Reply to email address","x-example":"emails@appwrite.io"},"subject":{"type":"string","description":"Email subject","x-example":"Please verify your email address"}},"required":["type","locale","message","senderName","senderEmail","replyTo","subject"]},"consoleVariables":{"description":"Console Variables","type":"object","properties":{"_APP_DOMAIN_TARGET":{"type":"string","description":"CNAME target for your Appwrite custom domains.","x-example":"appwrite.io"},"_APP_STORAGE_LIMIT":{"type":"integer","description":"Maximum file size allowed for file upload in bytes.","x-example":"30000000","format":"int32"},"_APP_FUNCTIONS_SIZE_LIMIT":{"type":"integer","description":"Maximum file size allowed for deployment in bytes.","x-example":"30000000","format":"int32"},"_APP_USAGE_STATS":{"type":"string","description":"Defines if usage stats are enabled. This value is set to 'enabled' by default, to disable the usage stats set the value to 'disabled'.","x-example":"enabled"},"_APP_VCS_ENABLED":{"type":"boolean","description":"Defines if VCS (Version Control System) is enabled.","x-example":true},"_APP_DOMAIN_ENABLED":{"type":"boolean","description":"Defines if main domain is configured. If so, custom domains can be created.","x-example":true},"_APP_ASSISTANT_ENABLED":{"type":"boolean","description":"Defines if AI assistant is enabled.","x-example":true}},"required":["_APP_DOMAIN_TARGET","_APP_STORAGE_LIMIT","_APP_FUNCTIONS_SIZE_LIMIT","_APP_USAGE_STATS","_APP_VCS_ENABLED","_APP_DOMAIN_ENABLED","_APP_ASSISTANT_ENABLED"]},"mfaChallenge":{"description":"MFA Challenge","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","userId","expire"]},"mfaProvider":{"description":"MFAProvider","type":"object","properties":{"backups":{"type":"array","description":"Backup codes.","items":{"type":"string"},"x-example":true},"secret":{"type":"string","description":"Secret token used for TOTP factor.","x-example":true},"uri":{"type":"string","description":"URI for authenticator apps.","x-example":true}},"required":["backups","secret","uri"]},"mfaProviders":{"description":"MFAProviders","type":"object","properties":{"totp":{"type":"boolean","description":"TOTP","x-example":true},"phone":{"type":"boolean","description":"Phone","x-example":true},"email":{"type":"boolean","description":"Email","x-example":true}},"required":["totp","phone","email"]},"provider":{"description":"Provider","type":"object","properties":{"$id":{"type":"string","description":"Provider ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Provider creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Provider update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"The name for the provider instance.","x-example":"Mailgun"},"provider":{"type":"string","description":"The name of the provider service.","x-example":"mailgun"},"enabled":{"type":"boolean","description":"Is provider enabled?","x-example":true},"type":{"type":"string","description":"Type of provider.","x-example":"sms"},"credentials":{"type":"object","additionalProperties":true,"description":"Provider credentials.","x-example":{"key":"123456789"}},"options":{"type":"object","additionalProperties":true,"description":"Provider options.","x-example":{"from":"sender-email@mydomain"}}},"required":["$id","$createdAt","$updatedAt","name","provider","enabled","type","credentials"]},"message":{"description":"Message","type":"object","properties":{"$id":{"type":"string","description":"Message ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Message creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Message update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerType":{"type":"string","description":"Message provider type.","x-example":"email"},"topics":{"type":"array","description":"Topic IDs set as recipients.","items":{"type":"string"},"x-example":["5e5ea5c16897e"]},"users":{"type":"array","description":"User IDs set as recipients.","items":{"type":"string"},"x-example":["5e5ea5c16897e"]},"targets":{"type":"array","description":"Target IDs set as recipients.","items":{"type":"string"},"x-example":["5e5ea5c16897e"]},"scheduledAt":{"type":"string","description":"The scheduled time for message.","x-example":"2020-10-15T06:38:00.000+00:00","x-nullable":true},"deliveredAt":{"type":"string","description":"The time when the message was delivered.","x-example":"2020-10-15T06:38:00.000+00:00","x-nullable":true},"deliveryErrors":{"type":"array","description":"Delivery errors if any.","items":{"type":"string"},"x-example":["Failed to send message to target 5e5ea5c16897e: Credentials not valid."],"x-nullable":true},"deliveredTotal":{"type":"integer","description":"Number of recipients the message was delivered to.","x-example":1,"format":"int32"},"data":{"type":"object","additionalProperties":true,"description":"Data of the message.","x-example":{"subject":"Welcome to Appwrite","content":"Hi there, welcome to Appwrite family."}},"status":{"type":"string","description":"Status of delivery.","x-example":"Message status can be one of the following: processing, sent, cancelled, failed."}},"required":["$id","$createdAt","$updatedAt","providerType","topics","users","targets","deliveredTotal","data","status"]},"topic":{"description":"Topic","type":"object","properties":{"$id":{"type":"string","description":"Topic ID.","x-example":"259125845563242502"},"$createdAt":{"type":"string","description":"Topic creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Topic update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"The name of the topic.","x-example":"events"},"total":{"type":"integer","description":"Total count of subscribers subscribed to topic.","x-example":100,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","name","total"]},"subscriber":{"description":"Subscriber","type":"object","properties":{"$id":{"type":"string","description":"Subscriber ID.","x-example":"259125845563242502"},"$createdAt":{"type":"string","description":"Subscriber creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Subscriber update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"targetId":{"type":"string","description":"Target ID.","x-example":"259125845563242502"},"target":{"type":"object","description":"Target.","x-example":{"$id":"259125845563242502","$createdAt":"2020-10-15T06:38:00.000+00:00","$updatedAt":"2020-10-15T06:38:00.000+00:00","providerType":"email","providerId":"259125845563242502","name":"ageon-app-email","identifier":"random-mail@email.org","userId":"5e5ea5c16897e"},"items":{"type":"object","$ref":"#\/definitions\/target"}},"userId":{"type":"string","description":"Topic ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User Name.","x-example":"Aegon Targaryen"},"topicId":{"type":"string","description":"Topic ID.","x-example":"259125845563242502"},"providerType":{"type":"string","description":"The target provider type. Can be one of the following: `email`, `sms` or `push`.","x-example":"email"}},"required":["$id","$createdAt","$updatedAt","targetId","target","userId","userName","topicId","providerType"]},"target":{"description":"Target","type":"object","properties":{"$id":{"type":"string","description":"Target ID.","x-example":"259125845563242502"},"$createdAt":{"type":"string","description":"Target creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Target update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Target Name.","x-example":"Aegon apple token"},"userId":{"type":"string","description":"User ID.","x-example":"259125845563242502"},"providerId":{"type":"string","description":"Provider ID.","x-example":"259125845563242502","x-nullable":true},"providerType":{"type":"string","description":"The target provider type. Can be one of the following: `email`, `sms` or `push`.","x-example":"email"},"identifier":{"type":"string","description":"The target identifier.","x-example":"token"}},"required":["$id","$createdAt","$updatedAt","name","userId","providerType","identifier"]},"migration":{"description":"Migration","type":"object","properties":{"$id":{"type":"string","description":"Migration ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"string","description":"Migration status ( pending, processing, failed, completed ) ","x-example":"pending"},"stage":{"type":"string","description":"Migration stage ( init, processing, source-check, destination-check, migrating, finished )","x-example":"init"},"source":{"type":"string","description":"A string containing the type of source of the migration.","x-example":"Appwrite"},"resources":{"type":"array","description":"Resources to migration.","items":{"type":"string"},"x-example":["user"]},"statusCounters":{"type":"object","additionalProperties":true,"description":"A group of counters that represent the total progress of the migration.","x-example":"{\"Database\": {\"PENDING\": 0, \"SUCCESS\": 1, \"ERROR\": 0, \"SKIP\": 0, \"PROCESSING\": 0, \"WARNING\": 0}}"},"resourceData":{"type":"object","additionalProperties":true,"description":"An array of objects containing the report data of the resources that were migrated.","x-example":"[{\"resource\":\"Database\",\"id\":\"public\",\"status\":\"SUCCESS\",\"message\":\"\"}]"},"errors":{"type":"array","description":"All errors that occurred during the migration process.","items":{"type":"string"},"x-example":[]}},"required":["$id","$createdAt","$updatedAt","status","stage","source","resources","statusCounters","resourceData","errors"]},"migrationReport":{"description":"Migration Report","type":"object","properties":{"user":{"type":"integer","description":"Number of users to be migrated.","x-example":20,"format":"int32"},"team":{"type":"integer","description":"Number of teams to be migrated.","x-example":20,"format":"int32"},"database":{"type":"integer","description":"Number of databases to be migrated.","x-example":20,"format":"int32"},"document":{"type":"integer","description":"Number of documents to be migrated.","x-example":20,"format":"int32"},"file":{"type":"integer","description":"Number of files to be migrated.","x-example":20,"format":"int32"},"bucket":{"type":"integer","description":"Number of buckets to be migrated.","x-example":20,"format":"int32"},"function":{"type":"integer","description":"Number of functions to be migrated.","x-example":20,"format":"int32"},"size":{"type":"integer","description":"Size of files to be migrated in mb.","x-example":30000,"format":"int32"},"version":{"type":"string","description":"Version of the Appwrite instance to be migrated.","x-example":"1.4.0"}},"required":["user","team","database","document","file","bucket","function","size","version"]},"firebaseProject":{"description":"MigrationFirebaseProject","type":"object","properties":{"projectId":{"type":"string","description":"Project ID.","x-example":"my-project"},"displayName":{"type":"string","description":"Project display name.","x-example":"My Project"}},"required":["projectId","displayName"]}},"externalDocs":{"description":"Full API docs, specs and tutorials","url":"https:\/\/appwrite.io\/docs"}} \ No newline at end of file +{"swagger":"2.0","info":{"version":"1.4.13","title":"Appwrite","description":"Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https:\/\/appwrite.io\/docs](https:\/\/appwrite.io\/docs)","termsOfService":"https:\/\/appwrite.io\/policy\/terms","contact":{"name":"Appwrite Team","url":"https:\/\/appwrite.io\/support","email":"team@appwrite.io"},"license":{"name":"BSD-3-Clause","url":"https:\/\/raw.githubusercontent.com\/appwrite\/appwrite\/master\/LICENSE"}},"host":"HOSTNAME","basePath":"\/v1","schemes":["https"],"consumes":["application\/json","multipart\/form-data"],"produces":["application\/json"],"securityDefinitions":{"Project":{"type":"apiKey","name":"X-Appwrite-Project","description":"Your project ID","in":"header","x-appwrite":{"demo":"5df5acd0d48c2"}},"Key":{"type":"apiKey","name":"X-Appwrite-Key","description":"Your secret API key","in":"header","x-appwrite":{"demo":"919c2d18fb5d4...a2ae413da83346ad2"}},"JWT":{"type":"apiKey","name":"X-Appwrite-JWT","description":"Your secret JSON Web Token","in":"header","x-appwrite":{"demo":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ..."}},"Locale":{"type":"apiKey","name":"X-Appwrite-Locale","description":"","in":"header","x-appwrite":{"demo":"en"}},"Mode":{"type":"apiKey","name":"X-Appwrite-Mode","description":"","in":"header","x-appwrite":{"demo":""}}},"paths":{"\/account":{"get":{"summary":"Get account","operationId":"accountGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get the currently logged in user.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"get","weight":22,"cookies":false,"type":"","demo":"account\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"post":{"summary":"Create account","operationId":"accountCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to allow a new user to register a new account in your project. After the user registration completes successfully, you can use the [\/account\/verfication](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createVerification) route to start verifying the user email address. To allow the new user to login to their new account, you need to create a new [account session](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createEmailSession).","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"create","weight":7,"cookies":false,"type":"","demo":"account\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"New user password. Must be between 8 and 256 chars.","default":null,"x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]},"delete":{"summary":"Delete account","operationId":"accountDelete","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Delete the currently logged in user.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":49,"cookies":false,"type":"","demo":"account\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/email":{"patch":{"summary":"Update email","operationId":"accountUpdateEmail","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateEmail","weight":29,"cookies":false,"type":"","demo":"account\/update-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["email","password"]}}]}},"\/account\/identities":{"get":{"summary":"List Identities","operationId":"accountListIdentities","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get the list of identities for the currently logged in user.","responses":{"200":{"description":"Identities List","schema":{"$ref":"#\/definitions\/identityList"}}},"x-appwrite":{"method":"listIdentities","weight":13,"cookies":false,"type":"","demo":"account\/list-identities.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-identities.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/identities","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, provider, providerUid, providerEmail, providerAccessTokenExpiry","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/identities\/{identityId}":{"delete":{"summary":"Delete identity","operationId":"accountDeleteIdentity","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Delete an identity by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIdentity","weight":14,"cookies":false,"type":"","demo":"account\/delete-identity.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-identity.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"identityId","description":"Identity ID.","required":true,"type":"string","x-example":"[IDENTITY_ID]","in":"path"}]}},"\/account\/jwt":{"post":{"summary":"Create JWT","operationId":"accountCreateJWT","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to create a JSON Web Token. You can use the resulting JWT to authenticate on behalf of the current user when working with the Appwrite server-side API and SDKs. The JWT secret is valid for 15 minutes from its creation and will be invalid if the user will logout in that time frame.","responses":{"201":{"description":"JWT","schema":{"$ref":"#\/definitions\/jwt"}}},"x-appwrite":{"method":"createJWT","weight":21,"cookies":false,"type":"","demo":"account\/create-j-w-t.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-jwt.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"List logs","operationId":"accountListLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get the list of latest security activity logs for the currently logged in user. Each log returns user IP address, location and date and time of log.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listLogs","weight":25,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/mfa":{"patch":{"summary":"Update MFA","operationId":"accountUpdateMFA","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateMFA","weight":42,"cookies":false,"type":"","demo":"account\/update-m-f-a.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-mfa.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"mfa":{"type":"boolean","description":"Enable or disable MFA.","default":null,"x-example":false}},"required":["mfa"]}}]}},"\/account\/mfa\/challenge":{"post":{"summary":"Create MFA Challenge","operationId":"accountCreateChallenge","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"201":{"description":"MFA Challenge","schema":{"$ref":"#\/definitions\/mfaChallenge"}}},"x-appwrite":{"method":"createChallenge","weight":47,"cookies":false,"type":"","demo":"account\/create-challenge.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-challenge.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},token:{param-token}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"provider":{"type":"string","description":"provider.","default":null,"x-example":"totp","enum":["totp","phone","email"],"x-enum-name":"AuthenticatorProvider","x-enum-keys":[]}},"required":["provider"]}}]},"put":{"summary":"Create MFA Challenge (confirmation)","operationId":"accountUpdateChallenge","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"updateChallenge","weight":48,"cookies":false,"type":"","demo":"account\/update-challenge.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-challenge.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"challengeId":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[CHALLENGE_ID]"},"otp":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[OTP]"}},"required":["challengeId","otp"]}}]}},"\/account\/mfa\/factors":{"get":{"summary":"List Factors","operationId":"accountListFactors","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get the currently logged in user.","responses":{"200":{"description":"MFAProviders","schema":{"$ref":"#\/definitions\/mfaProviders"}}},"x-appwrite":{"method":"listFactors","weight":43,"cookies":false,"type":"","demo":"account\/list-factors.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/account\/mfa\/{factor}":{"post":{"summary":"Add Authenticator","operationId":"accountAddAuthenticator","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"200":{"description":"MFAProvider","schema":{"$ref":"#\/definitions\/mfaProvider"}}},"x-appwrite":{"method":"addAuthenticator","weight":44,"cookies":false,"type":"","demo":"account\/add-authenticator.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-mfa.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"factor","description":"Factor.","required":true,"type":"string","x-example":"totp","enum":["totp"],"x-enum-name":"AuthenticatorFactor","x-enum-keys":[],"in":"path"}]},"put":{"summary":"Verify Authenticator","operationId":"accountVerifyAuthenticator","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"verifyAuthenticator","weight":45,"cookies":false,"type":"","demo":"account\/verify-authenticator.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-mfa.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"factor","description":"Factor.","required":true,"type":"string","x-example":"totp","enum":["totp"],"x-enum-name":"AuthenticatorFactor","x-enum-keys":[],"in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"otp":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[OTP]"}},"required":["otp"]}}]}},"\/account\/mfa\/{provider}":{"delete":{"summary":"Delete Authenticator","operationId":"accountDeleteAuthenticator","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"deleteAuthenticator","weight":46,"cookies":false,"type":"","demo":"account\/delete-authenticator.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-mfa.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"provider","description":"Provider.","required":true,"type":"string","x-example":"totp","enum":["totp"],"x-enum-name":"AuthenticatorProvider","x-enum-keys":[],"in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"otp":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[OTP]"}},"required":["otp"]}}]}},"\/account\/name":{"patch":{"summary":"Update name","operationId":"accountUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateName","weight":27,"cookies":false,"type":"","demo":"account\/update-name.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-name.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"User name. Max length: 128 chars.","default":null,"x-example":"[NAME]"}},"required":["name"]}}]}},"\/account\/password":{"patch":{"summary":"Update password","operationId":"accountUpdatePassword","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePassword","weight":28,"cookies":false,"type":"","demo":"account\/update-password.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-password.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"password":{"type":"string","description":"New user password. Must be at least 8 chars.","default":null,"x-example":null},"oldPassword":{"type":"string","description":"Current user password. Must be at least 8 chars.","default":"","x-example":"password"}},"required":["password"]}}]}},"\/account\/phone":{"patch":{"summary":"Update phone","operationId":"accountUpdatePhone","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createPhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePhone","weight":30,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["phone","password"]}}]}},"\/account\/prefs":{"get":{"summary":"Get account preferences","operationId":"accountGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get the preferences as a key-value object for the currently logged in user.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":23,"cookies":false,"type":"","demo":"account\/get-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/prefs","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"patch":{"summary":"Update preferences","operationId":"accountUpdatePrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account preferences. The object you pass is stored as is, and replaces any previous value. The maximum allowed prefs size is 64kB and throws error if exceeded.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePrefs","weight":31,"cookies":false,"type":"","demo":"account\/update-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/prefs","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"prefs":{"type":"object","description":"Prefs key-value JSON object.","default":{},"x-example":"{}"}},"required":["prefs"]}}]}},"\/account\/recovery":{"post":{"summary":"Create password recovery","operationId":"accountCreateRecovery","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Sends the user an email with a temporary secret key for password reset. When the user clicks the confirmation link he is redirected back to your app password reset URL with the secret key and email address values attached to the URL query string. Use the query string params to submit a request to the [PUT \/account\/recovery](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateRecovery) endpoint to complete the process. The verification link sent to the user's email address is valid for 1 hour.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createRecovery","weight":36,"cookies":false,"type":"","demo":"account\/create-recovery.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-recovery.md","rate-limit":10,"rate-time":3600,"rate-key":["url:{url},email:{param-email}","ip:{ip}"],"scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"url":{"type":"string","description":"URL to redirect the user back to your app from the recovery email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":null,"x-example":"https:\/\/example.com"}},"required":["email","url"]}}]},"put":{"summary":"Create password recovery (confirmation)","operationId":"accountUpdateRecovery","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete the user account password reset. Both the **userId** and **secret** arguments will be passed as query parameters to the redirect URL you have provided when sending your request to the [POST \/account\/recovery](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createRecovery) endpoint.\n\nPlease note that in order to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) the only valid redirect URLs are the ones from domains you have set when adding your platforms in the console interface.","responses":{"200":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"updateRecovery","weight":37,"cookies":false,"type":"","demo":"account\/update-recovery.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-recovery.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid reset token.","default":null,"x-example":"[SECRET]"},"password":{"type":"string","description":"New user password. Must be between 8 and 256 chars.","default":null,"x-example":null}},"required":["userId","secret","password"]}}]}},"\/account\/sessions":{"get":{"summary":"List sessions","operationId":"accountListSessions","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get the list of active sessions across different devices for the currently logged in user.","responses":{"200":{"description":"Sessions List","schema":{"$ref":"#\/definitions\/sessionList"}}},"x-appwrite":{"method":"listSessions","weight":24,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/sessions","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete sessions","operationId":"accountDeleteSessions","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":35,"cookies":false,"type":"","demo":"account\/delete-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-sessions.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/account\/sessions\/anonymous":{"post":{"summary":"Create anonymous session","operationId":"accountCreateAnonymousSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to allow a new user to register an anonymous account in your project. This route will also create a new session for the user. To allow the new user to convert an anonymous account to a normal account, you need to update its [email and password](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateEmail) or create an [OAuth2 session](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#CreateOAuth2Session).","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"createAnonymousSession","weight":20,"cookies":false,"type":"","demo":"account\/create-anonymous-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-anonymous.md","rate-limit":50,"rate-time":3600,"rate-key":"ip:{ip}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/sessions\/email":{"post":{"summary":"Create email password session","operationId":"accountCreateEmailPasswordSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Allow the user to login into their account by providing a valid email and password combination. This route will create a new session for the user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"createEmailPasswordSession","weight":8,"cookies":false,"type":"","demo":"account\/create-email-password-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-email-password.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["email","password"]}}]}},"\/account\/sessions\/magic-url":{"put":{"summary":"Create session (deprecated)","operationId":"accountUpdateMagicURLSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to create a session from token. Provide the **userId** and **secret** parameters from the successful response of authentication flows initiated by token creation. For example, magic URL and phone login.","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateMagicURLSession","weight":17,"cookies":false,"type":"","demo":"account\/update-magic-u-r-l-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session.md","rate-limit":10,"rate-time":3600,"rate-key":"ip:{ip},userId:{param-userId}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/account\/sessions\/oauth2\/{provider}":{"get":{"summary":"Create OAuth2 session","operationId":"accountCreateOAuth2Session","consumes":["application\/json"],"produces":["text\/html"],"tags":["account"],"description":"Allow the user to login to their account using the OAuth2 provider of their choice. Each OAuth2 provider should be enabled from the Appwrite console first. Use the success and failure arguments to provide a redirect URL's back to your app when login is completed.\n\nIf there is already an active session, the new session will be attached to the logged-in account. If there are no active sessions, the server will attempt to look for a user with the same email address as the email received from the OAuth2 provider and attach the new session to the existing user. If no matching user is found - the server will create a new user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).\n","responses":{"301":{"description":"No content"}},"x-appwrite":{"method":"createOAuth2Session","weight":9,"cookies":false,"type":"webAuth","demo":"account\/create-o-auth2session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-oauth2.md","rate-limit":50,"rate-time":3600,"rate-key":"ip:{ip}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"provider","description":"OAuth2 Provider. Currently, supported providers are: amazon, apple, auth0, authentik, autodesk, bitbucket, bitly, box, dailymotion, discord, disqus, dropbox, etsy, facebook, github, gitlab, google, linkedin, microsoft, notion, oidc, okta, paypal, paypalSandbox, podio, salesforce, slack, spotify, stripe, tradeshift, tradeshiftBox, twitch, wordpress, yahoo, yammer, yandex, zoho, zoom.","required":true,"type":"string","x-example":"amazon","enum":["amazon","apple","auth0","authentik","autodesk","bitbucket","bitly","box","dailymotion","discord","disqus","dropbox","etsy","facebook","github","gitlab","google","linkedin","microsoft","notion","oidc","okta","paypal","paypalSandbox","podio","salesforce","slack","spotify","stripe","tradeshift","tradeshiftBox","twitch","wordpress","yahoo","yammer","yandex","zoho","zoom","mock"],"x-enum-name":"OAuthProvider","x-enum-keys":[],"in":"path"},{"name":"success","description":"URL to redirect back to your app after a successful login attempt. Only URLs from hostnames in your project's platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","required":false,"type":"string","format":"url","x-example":"https:\/\/example.com","default":"","in":"query"},{"name":"failure","description":"URL to redirect back to your app after a failed login attempt. Only URLs from hostnames in your project's platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","required":false,"type":"string","format":"url","x-example":"https:\/\/example.com","default":"","in":"query"},{"name":"token","description":"Include token credentials in the final redirect, useful for server-side integrations, or when cookies are not available.","required":false,"type":"boolean","x-example":false,"default":false,"in":"query"},{"name":"scopes","description":"A list of custom OAuth2 scopes. Check each provider internal docs for a list of supported scopes. Maximum of 100 scopes are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/sessions\/token":{"post":{"summary":"Create session","operationId":"accountCreateSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to create a session from token. Provide the **userId** and **secret** parameters from the successful response of authentication flows initiated by token creation. For example, magic URL and phone login.","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"createSession","weight":18,"cookies":false,"type":"","demo":"account\/create-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session.md","rate-limit":10,"rate-time":3600,"rate-key":"ip:{ip},userId:{param-userId}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Secret of a token generated by login methods. For example, the `createMagicURLToken` or `createPhoneToken` methods.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/account\/sessions\/{sessionId}":{"get":{"summary":"Get session","operationId":"accountGetSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to get a logged in user's session using a Session ID. Inputting 'current' will return the current session being used.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"getSession","weight":26,"cookies":false,"type":"","demo":"account\/get-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-session.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/sessions","offline-key":"{sessionId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to get the current device session.","required":true,"type":"string","x-example":"[SESSION_ID]","in":"path"}]},"patch":{"summary":"Update (or renew) a session","operationId":"accountUpdateSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Extend session's expiry to increase it's lifespan. Extending a session is useful when session length is short such as 5 minutes.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateSession","weight":34,"cookies":false,"type":"","demo":"account\/update-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-session.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to update the current device session.","required":true,"type":"string","x-example":"[SESSION_ID]","in":"path"}]},"delete":{"summary":"Delete session","operationId":"accountDeleteSession","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Logout the user. Use 'current' as the session ID to logout on this device, use a session ID to logout on another device. If you're looking to logout the user on all devices, use [Delete Sessions](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#deleteSessions) instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSession","weight":33,"cookies":false,"type":"","demo":"account\/delete-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-session.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to delete the current device session.","required":true,"type":"string","x-example":"[SESSION_ID]","in":"path"}]}},"\/account\/status":{"patch":{"summary":"Update status","operationId":"accountUpdateStatus","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateStatus","weight":32,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/account\/targets\/push":{"post":{"summary":"Create a push target","operationId":"accountCreatePushTarget","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"201":{"description":"Target","schema":{"$ref":"#\/definitions\/target"}}},"x-appwrite":{"method":"createPushTarget","weight":50,"cookies":false,"type":"","demo":"account\/create-push-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"targetId":{"type":"string","description":"Target ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[TARGET_ID]"},"identifier":{"type":"string","description":"The target identifier (token, email, phone etc.)","default":null,"x-example":"[IDENTIFIER]"},"providerId":{"type":"string","description":"Provider ID. Message will be sent to this target from the specified provider ID. If no provider ID is set the first setup provider will be used.","default":"","x-example":"[PROVIDER_ID]"}},"required":["targetId","identifier"]}}]}},"\/account\/targets\/{targetId}\/push":{"put":{"summary":"Update a push target","operationId":"accountUpdatePushTarget","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"200":{"description":"Target","schema":{"$ref":"#\/definitions\/target"}}},"x-appwrite":{"method":"updatePushTarget","weight":51,"cookies":false,"type":"","demo":"account\/update-push-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"targetId","description":"Target ID.","required":true,"type":"string","x-example":"[TARGET_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"identifier":{"type":"string","description":"The target identifier (token, email, phone etc.)","default":null,"x-example":"[IDENTIFIER]"}},"required":["identifier"]}}]},"delete":{"summary":"Delete a push target","operationId":"accountDeletePushTarget","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deletePushTarget","weight":52,"cookies":false,"type":"","demo":"account\/delete-push-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"targetId","description":"Target ID.","required":true,"type":"string","x-example":"[TARGET_ID]","in":"path"}]}},"\/account\/tokens\/email":{"post":{"summary":"Create email token (OTP)","operationId":"accountCreateEmailToken","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Sends the user an email with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [POST \/v1\/account\/sessions\/token](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createSession) endpoint to complete the login process. The secret sent to the user's email is valid for 15 minutes.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createEmailToken","weight":16,"cookies":false,"type":"","demo":"account\/create-email-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-token-email.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"phrase":{"type":"boolean","description":"Toggle for security phrase. If enabled, email will be send with a randomly generated phrase and the phrase will also be included in the response. Confirming phrases match increases the security of your authentication flow.","default":false,"x-example":false}},"required":["userId","email"]}}]}},"\/account\/tokens\/magic-url":{"post":{"summary":"Create magic URL token","operationId":"accountCreateMagicURLToken","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Sends the user an email with a secret key for creating a session. If the provided user ID has not been registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [POST \/v1\/account\/sessions\/token](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createSession) endpoint to complete the login process. The link sent to the user's email address is valid for 1 hour. If you are on a mobile device you can leave the URL parameter empty, so that the login completion will be handled by your Appwrite instance by default.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).\n","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createMagicURLToken","weight":15,"cookies":false,"type":"","demo":"account\/create-magic-u-r-l-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-token-magic-url.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"url":{"type":"string","description":"URL to redirect the user back to your app from the magic URL login. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":"","x-example":"https:\/\/example.com"},"phrase":{"type":"boolean","description":"Toggle for security phrase. If enabled, email will be send with a randomly generated phrase and the phrase will also be included in the response. Confirming phrases match increases the security of your authentication flow.","default":false,"x-example":false}},"required":["userId","email"]}}]}},"\/account\/tokens\/phone":{"post":{"summary":"Create phone token","operationId":"accountCreatePhoneToken","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Sends the user an SMS with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [POST \/v1\/account\/sessions\/token](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createSession) endpoint to complete the login process. The secret sent to the user's phone is valid for 15 minutes.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createPhoneToken","weight":19,"cookies":false,"type":"","demo":"account\/create-phone-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-token-phone.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},phone:{param-phone}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"}},"required":["userId","phone"]}}]}},"\/account\/verification":{"post":{"summary":"Create email verification","operationId":"accountCreateVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to send a verification message to your user email address to confirm they are the valid owners of that address. Both the **userId** and **secret** arguments will be passed as query parameters to the URL you have provided to be attached to the verification email. The provided URL should redirect the user back to your app and allow you to complete the verification process by verifying both the **userId** and **secret** parameters. Learn more about how to [complete the verification process](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateVerification). The verification link sent to the user's email address is valid for 7 days.\n\nPlease note that in order to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md), the only valid redirect URLs are the ones from domains you have set when adding your platforms in the console interface.\n","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createVerification","weight":38,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"url":{"type":"string","description":"URL to redirect the user back to your app from the verification email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":null,"x-example":"https:\/\/example.com"}},"required":["url"]}}]},"put":{"summary":"Create email verification (confirmation)","operationId":"accountUpdateVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete the user email verification process. Use both the **userId** and **secret** parameters that were attached to your app URL to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"updateVerification","weight":39,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/account\/verification\/phone":{"post":{"summary":"Create phone verification","operationId":"accountCreatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updatePhone) endpoint. Learn more about how to [complete the verification process](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createPhoneVerification","weight":40,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{userId}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"put":{"summary":"Create phone verification (confirmation)","operationId":"accountUpdatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"updatePhoneVerification","weight":41,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/avatars\/browsers\/{code}":{"get":{"summary":"Get browser icon","operationId":"avatarsGetBrowser","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"You can use this endpoint to show different browser icons to your users. The code argument receives the browser code as it appears in your user [GET \/account\/sessions](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#getSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getBrowser","weight":54,"cookies":false,"type":"location","demo":"avatars\/get-browser.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-browser.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Browser Code.","required":true,"type":"string","x-example":"aa","enum":["aa","an","ch","ci","cm","cr","ff","sf","mf","ps","oi","om","op","on"],"x-enum-name":"Browser","x-enum-keys":["Avant Browser","Android WebView Beta","Google Chrome","Google Chrome (iOS)","Google Chrome (Mobile)","Chromium","Mozilla Firefox","Safari","Mobile Safari","Microsoft Edge","Microsoft Edge (iOS)","Opera Mini","Opera","Opera (Next)"],"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"}]}},"\/avatars\/credit-cards\/{code}":{"get":{"summary":"Get credit card icon","operationId":"avatarsGetCreditCard","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"The credit card endpoint will return you the icon of the credit card provider you need. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getCreditCard","weight":53,"cookies":false,"type":"location","demo":"avatars\/get-credit-card.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-credit-card.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Credit Card Code. Possible values: amex, argencard, cabal, censosud, diners, discover, elo, hipercard, jcb, mastercard, naranja, targeta-shopping, union-china-pay, visa, mir, maestro.","required":true,"type":"string","x-example":"amex","enum":["amex","argencard","cabal","censosud","diners","discover","elo","hipercard","jcb","mastercard","naranja","targeta-shopping","union-china-pay","visa","mir","maestro"],"x-enum-name":"CreditCard","x-enum-keys":["American Express","Argencard","Cabal","Consosud","Diners Club","Discover","Elo","Hipercard","JCB","Mastercard","Naranja","Tarjeta Shopping","Union China Pay","Visa","MIR","Maestro"],"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"}]}},"\/avatars\/favicon":{"get":{"summary":"Get favicon","operationId":"avatarsGetFavicon","consumes":["application\/json"],"produces":["image\/*"],"tags":["avatars"],"description":"Use this endpoint to fetch the favorite icon (AKA favicon) of any remote website URL.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFavicon","weight":57,"cookies":false,"type":"location","demo":"avatars\/get-favicon.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-favicon.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"url","description":"Website URL which you want to fetch the favicon from.","required":true,"type":"string","format":"url","x-example":"https:\/\/example.com","in":"query"}]}},"\/avatars\/flags\/{code}":{"get":{"summary":"Get country flag","operationId":"avatarsGetFlag","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"You can use this endpoint to show different country flags icons to your users. The code argument receives the 2 letter country code. Use width, height and quality arguments to change the output settings. Country codes follow the [ISO 3166-1](https:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFlag","weight":55,"cookies":false,"type":"location","demo":"avatars\/get-flag.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-flag.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Country Code. ISO Alpha-2 country code format.","required":true,"type":"string","x-example":"af","enum":["af","ao","al","ad","ae","ar","am","ag","au","at","az","bi","be","bj","bf","bd","bg","bh","bs","ba","by","bz","bo","br","bb","bn","bt","bw","cf","ca","ch","cl","cn","ci","cm","cd","cg","co","km","cv","cr","cu","cy","cz","de","dj","dm","dk","do","dz","ec","eg","er","es","ee","et","fi","fj","fr","fm","ga","gb","ge","gh","gn","gm","gw","gq","gr","gd","gt","gy","hn","hr","ht","hu","id","in","ie","ir","iq","is","il","it","jm","jo","jp","kz","ke","kg","kh","ki","kn","kr","kw","la","lb","lr","ly","lc","li","lk","ls","lt","lu","lv","ma","mc","md","mg","mv","mx","mh","mk","ml","mt","mm","me","mn","mz","mr","mu","mw","my","na","ne","ng","ni","nl","no","np","nr","nz","om","pk","pa","pe","ph","pw","pg","pl","kp","pt","py","qa","ro","ru","rw","sa","sd","sn","sg","sb","sl","sv","sm","so","rs","ss","st","sr","sk","si","se","sz","sc","sy","td","tg","th","tj","tm","tl","to","tt","tn","tr","tv","tz","ug","ua","uy","us","uz","va","vc","ve","vn","vu","ws","ye","za","zm","zw"],"x-enum-name":"Flag","x-enum-keys":["Afghanistan","Angola","Albania","Andorra","United Arab Emirates","Argentina","Armenia","Antigua and Barbuda","Australia","Austria","Azerbaijan","Burundi","Belgium","Benin","Burkina Faso","Bangladesh","Bulgaria","Bahrain","Bahamas","Bosnia and Herzegovina","Belarus","Belize","Bolivia","Brazil","Barbados","Brunei Darussalam","Bhutan","Botswana","Central African Republic","Canada","Switzerland","Chile","China","C\u00f4te d'Ivoire","Cameroon","Democratic Republic of the Congo","Republic of the Congo","Colombia","Comoros","Cape Verde","Costa Rica","Cuba","Cyprus","Czech Republic","Germany","Djibouti","Dominica","Denmark","Dominican Republic","Algeria","Ecuador","Egypt","Eritrea","Spain","Estonia","Ethiopia","Finland","Fiji","France","Micronesia (Federated States of)","Gabon","United Kingdom","Georgia","Ghana","Guinea","Gambia","Guinea-Bissau","Equatorial Guinea","Greece","Grenada","Guatemala","Guyana","Honduras","Croatia","Haiti","Hungary","Indonesia","India","Ireland","Iran (Islamic Republic of)","Iraq","Iceland","Israel","Italy","Jamaica","Jordan","Japan","Kazakhstan","Kenya","Kyrgyzstan","Cambodia","Kiribati","Saint Kitts and Nevis","South Korea","Kuwait","Lao People's Democratic Republic","Lebanon","Liberia","Libya","Saint Lucia","Liechtenstein","Sri Lanka","Lesotho","Lithuania","Luxembourg","Latvia","Morocco","Monaco","Moldova","Madagascar","Maldives","Mexico","Marshall Islands","North Macedonia","Mali","Malta","Myanmar","Montenegro","Mongolia","Mozambique","Mauritania","Mauritius","Malawi","Malaysia","Namibia","Niger","Nigeria","Nicaragua","Netherlands","Norway","Nepal","Nauru","New Zealand","Oman","Pakistan","Panama","Peru","Philippines","Palau","Papua New Guinea","Poland","North Korea","Portugal","Paraguay","Qatar","Romania","Russia","Rwanda","Saudi Arabia","Sudan","Senegal","Singapore","Solomon Islands","Sierra Leone","El Salvador","San Marino","Somalia","Serbia","South Sudan","Sao Tome and Principe","Suriname","Slovakia","Slovenia","Sweden","Eswatini","Seychelles","Syria","Chad","Togo","Thailand","Tajikistan","Turkmenistan","Timor-Leste","Tonga","Trinidad and Tobago","Tunisia","Turkey","Tuvalu","Tanzania","Uganda","Ukraine","Uruguay","United States","Uzbekistan","Vatican City","Saint Vincent and the Grenadines","Venezuela","Vietnam","Vanuatu","Samoa","Yemen","South Africa","Zambia","Zimbabwe"],"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"}]}},"\/avatars\/image":{"get":{"summary":"Get image from URL","operationId":"avatarsGetImage","consumes":["application\/json"],"produces":["image\/*"],"tags":["avatars"],"description":"Use this endpoint to fetch a remote image URL and crop it to any image size you want. This endpoint is very useful if you need to crop and display remote images in your app or in case you want to make sure a 3rd party image is properly served using a TLS protocol.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getImage","weight":56,"cookies":false,"type":"location","demo":"avatars\/get-image.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-image.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"url","description":"Image URL which you want to crop.","required":true,"type":"string","format":"url","x-example":"https:\/\/example.com","in":"query"},{"name":"width","description":"Resize preview image width, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get user initials","operationId":"avatarsGetInitials","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getInitials","weight":59,"cookies":false,"type":"location","demo":"avatars\/get-initials.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-initials.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"name","description":"Full Name. When empty, current user name or email will be used. Max length: 128 chars.","required":false,"type":"string","x-example":"[NAME]","default":"","in":"query"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":500,"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":500,"in":"query"},{"name":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"type":"string","default":"","in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR code","operationId":"avatarsGetQR","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getQR","weight":58,"cookies":false,"type":"location","demo":"avatars\/get-q-r.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-qr.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"text","description":"Plain text to be converted to QR code image.","required":true,"type":"string","x-example":"[TEXT]","in":"query"},{"name":"size","description":"QR code size. Pass an integer between 1 to 1000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":1,"default":400,"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"type":"integer","format":"int32","x-example":0,"default":1,"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"type":"boolean","x-example":false,"default":false,"in":"query"}]}},"\/console\/assistant":{"post":{"summary":"Ask Query","operationId":"assistantChat","consumes":["application\/json"],"produces":["text\/plain"],"tags":["assistant"],"description":"","responses":{"200":{"description":"File","schema":{"type":"file"}}},"x-appwrite":{"method":"chat","weight":304,"cookies":false,"type":"","demo":"assistant\/chat.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/assistant\/chat.md","rate-limit":15,"rate-time":3600,"rate-key":"userId:{userId}","scope":"assistant.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"prompt":{"type":"string","description":"Prompt. A string containing questions asked to the AI assistant.","default":null,"x-example":"[PROMPT]"}},"required":["prompt"]}}]}},"\/console\/variables":{"get":{"summary":"Get variables","operationId":"consoleVariables","consumes":["application\/json"],"produces":["application\/json"],"tags":["console"],"description":"Get all Environment Variables that are relevant for the console.","responses":{"200":{"description":"Console Variables","schema":{"$ref":"#\/definitions\/consoleVariables"}}},"x-appwrite":{"method":"variables","weight":303,"cookies":false,"type":"","demo":"console\/variables.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/console\/variables.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/databases":{"get":{"summary":"List databases","operationId":"databasesList","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all databases from the current Appwrite project. You can use the search parameter to filter your results.","responses":{"200":{"description":"Databases List","schema":{"$ref":"#\/definitions\/databaseList"}}},"x-appwrite":{"method":"list","weight":64,"cookies":false,"type":"","demo":"databases\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create database","operationId":"databasesCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Database.\n","responses":{"201":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"create","weight":63,"cookies":false,"type":"","demo":"databases\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"databaseId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[DATABASE_ID]"},"name":{"type":"string","description":"Database name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Is the database enabled? When set to 'disabled', users cannot access the database but Server SDKs with an API key can still read and write to the database. No data is lost when this is toggled.","default":true,"x-example":false}},"required":["databaseId","name"]}}]}},"\/databases\/usage":{"get":{"summary":"Get usage stats for the database","operationId":"databasesGetUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"UsageDatabases","schema":{"$ref":"#\/definitions\/usageDatabases"}}},"x-appwrite":{"method":"getUsage","weight":108,"cookies":false,"type":"","demo":"databases\/get-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"`Date range.","required":false,"type":"string","x-example":"24h","enum":["24h","30d","90d"],"x-enum-name":"DatabaseUsageRange","x-enum-keys":["Twenty Four Hours","Thirty Days","Ninety Days"],"default":"30d","in":"query"}]}},"\/databases\/{databaseId}":{"get":{"summary":"Get database","operationId":"databasesGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a database by its unique ID. This endpoint response returns a JSON object with the database metadata.","responses":{"200":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"get","weight":65,"cookies":false,"type":"","demo":"databases\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"}]},"put":{"summary":"Update database","operationId":"databasesUpdate","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a database by its unique ID.","responses":{"200":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"update","weight":67,"cookies":false,"type":"","demo":"databases\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Database name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Is database enabled? When set to 'disabled', users cannot access the database but Server SDKs with an API key can still read and write to the database. No data is lost when this is toggled.","default":true,"x-example":false}},"required":["name"]}}]},"delete":{"summary":"Delete database","operationId":"databasesDelete","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a database by its unique ID. Only API keys with with databases.write scope can delete a database.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":68,"cookies":false,"type":"","demo":"databases\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections":{"get":{"summary":"List collections","operationId":"databasesListCollections","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all collections that belong to the provided databaseId. You can use the search parameter to filter your results.","responses":{"200":{"description":"Collections List","schema":{"$ref":"#\/definitions\/collectionList"}}},"x-appwrite":{"method":"listCollections","weight":70,"cookies":false,"type":"","demo":"databases\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, documentSecurity","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create collection","operationId":"databasesCreateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Collection. Before using this route, you should create a new database resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"createCollection","weight":69,"cookies":false,"type":"","demo":"databases\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permissions strings. By default, no user is granted with any permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":false,"x-example":false},"enabled":{"type":"boolean","description":"Is collection enabled? When set to 'disabled', users cannot access the collection but Server SDKs with and API key can still read and write to the collection. No data is lost when this is toggled.","default":true,"x-example":false}},"required":["collectionId","name"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}":{"get":{"summary":"Get collection","operationId":"databasesGetCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a collection by its unique ID. This endpoint response returns a JSON object with the collection metadata.","responses":{"200":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"getCollection","weight":71,"cookies":false,"type":"","demo":"databases\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]},"put":{"summary":"Update collection","operationId":"databasesUpdateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a collection by its unique ID.","responses":{"200":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"updateCollection","weight":73,"cookies":false,"type":"","demo":"databases\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":false,"x-example":false},"enabled":{"type":"boolean","description":"Is collection enabled? When set to 'disabled', users cannot access the collection but Server SDKs with and API key can still read and write to the collection. No data is lost when this is toggled.","default":true,"x-example":false}},"required":["name"]}}]},"delete":{"summary":"Delete collection","operationId":"databasesDeleteCollection","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a collection by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteCollection","weight":74,"cookies":false,"type":"","demo":"databases\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes":{"get":{"summary":"List attributes","operationId":"databasesListAttributes","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Attributes List","schema":{"$ref":"#\/definitions\/attributeList"}}},"x-appwrite":{"method":"listAttributes","weight":85,"cookies":false,"type":"","demo":"databases\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: key, type, size, required, array, status, error","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create boolean attribute","operationId":"databasesCreateBooleanAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a boolean attribute.\n","responses":{"202":{"description":"AttributeBoolean","schema":{"$ref":"#\/definitions\/attributeBoolean"}}},"x-appwrite":{"method":"createBooleanAttribute","weight":82,"cookies":false,"type":"","demo":"databases\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":false},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean\/{key}":{"patch":{"summary":"Update boolean attribute","operationId":"databasesUpdateBooleanAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"","responses":{"200":{"description":"AttributeBoolean","schema":{"$ref":"#\/definitions\/attributeBoolean"}}},"x-appwrite":{"method":"updateBooleanAttribute","weight":94,"cookies":false,"type":"","demo":"databases\/update-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":false,"x-nullable":true}},"required":["required","default"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/datetime":{"post":{"summary":"Create datetime attribute","operationId":"databasesCreateDatetimeAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"AttributeDatetime","schema":{"$ref":"#\/definitions\/attributeDatetime"}}},"x-appwrite":{"method":"createDatetimeAttribute","weight":83,"cookies":false,"type":"","demo":"databases\/create-datetime-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-datetime-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for the attribute in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/datetime\/{key}":{"patch":{"summary":"Update dateTime attribute","operationId":"databasesUpdateDatetimeAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"","responses":{"200":{"description":"AttributeDatetime","schema":{"$ref":"#\/definitions\/attributeDatetime"}}},"x-appwrite":{"method":"updateDatetimeAttribute","weight":95,"cookies":false,"type":"","demo":"databases\/update-datetime-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-datetime-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null,"x-nullable":true}},"required":["required","default"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create email attribute","operationId":"databasesCreateEmailAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create an email attribute.\n","responses":{"202":{"description":"AttributeEmail","schema":{"$ref":"#\/definitions\/attributeEmail"}}},"x-appwrite":{"method":"createEmailAttribute","weight":76,"cookies":false,"type":"","demo":"databases\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"email@example.com"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/email\/{key}":{"patch":{"summary":"Update email attribute","operationId":"databasesUpdateEmailAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Update an email attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeEmail","schema":{"$ref":"#\/definitions\/attributeEmail"}}},"x-appwrite":{"method":"updateEmailAttribute","weight":88,"cookies":false,"type":"","demo":"databases\/update-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"email@example.com","x-nullable":true}},"required":["required","default"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create enum attribute","operationId":"databasesCreateEnumAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"AttributeEnum","schema":{"$ref":"#\/definitions\/attributeEnum"}}},"x-appwrite":{"method":"createEnumAttribute","weight":77,"cookies":false,"type":"","demo":"databases\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"elements":{"type":"array","description":"Array of elements in enumerated type. Uses length of longest element to determine size. Maximum of 100 elements are allowed, each 255 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","elements","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/enum\/{key}":{"patch":{"summary":"Update enum attribute","operationId":"databasesUpdateEnumAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Update an enum attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeEnum","schema":{"$ref":"#\/definitions\/attributeEnum"}}},"x-appwrite":{"method":"updateEnumAttribute","weight":89,"cookies":false,"type":"","demo":"databases\/update-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-enum-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"elements":{"type":"array","description":"Array of elements in enumerated type. Uses length of longest element to determine size. Maximum of 100 elements are allowed, each 255 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"[DEFAULT]","x-nullable":true}},"required":["elements","required","default"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create float attribute","operationId":"databasesCreateFloatAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeFloat","schema":{"$ref":"#\/definitions\/attributeFloat"}}},"x-appwrite":{"method":"createFloatAttribute","weight":81,"cookies":false,"type":"","demo":"databases\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"min":{"type":"number","description":"Minimum value to enforce on new documents","default":null,"x-example":null},"max":{"type":"number","description":"Maximum value to enforce on new documents","default":null,"x-example":null},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/float\/{key}":{"patch":{"summary":"Update float attribute","operationId":"databasesUpdateFloatAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Update a float attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeFloat","schema":{"$ref":"#\/definitions\/attributeFloat"}}},"x-appwrite":{"method":"updateFloatAttribute","weight":93,"cookies":false,"type":"","demo":"databases\/update-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"min":{"type":"number","description":"Minimum value to enforce on new documents","default":null,"x-example":null},"max":{"type":"number","description":"Maximum value to enforce on new documents","default":null,"x-example":null},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null,"x-nullable":true}},"required":["required","min","max","default"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create integer attribute","operationId":"databasesCreateIntegerAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeInteger","schema":{"$ref":"#\/definitions\/attributeInteger"}}},"x-appwrite":{"method":"createIntegerAttribute","weight":80,"cookies":false,"type":"","demo":"databases\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"min":{"type":"integer","description":"Minimum value to enforce on new documents","default":null,"x-example":null},"max":{"type":"integer","description":"Maximum value to enforce on new documents","default":null,"x-example":null},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/integer\/{key}":{"patch":{"summary":"Update integer attribute","operationId":"databasesUpdateIntegerAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Update an integer attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeInteger","schema":{"$ref":"#\/definitions\/attributeInteger"}}},"x-appwrite":{"method":"updateIntegerAttribute","weight":92,"cookies":false,"type":"","demo":"databases\/update-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"min":{"type":"integer","description":"Minimum value to enforce on new documents","default":null,"x-example":null},"max":{"type":"integer","description":"Maximum value to enforce on new documents","default":null,"x-example":null},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null,"x-nullable":true}},"required":["required","min","max","default"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP address attribute","operationId":"databasesCreateIpAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create IP address attribute.\n","responses":{"202":{"description":"AttributeIP","schema":{"$ref":"#\/definitions\/attributeIp"}}},"x-appwrite":{"method":"createIpAttribute","weight":78,"cookies":false,"type":"","demo":"databases\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/ip\/{key}":{"patch":{"summary":"Update IP address attribute","operationId":"databasesUpdateIpAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Update an ip attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeIP","schema":{"$ref":"#\/definitions\/attributeIp"}}},"x-appwrite":{"method":"updateIpAttribute","weight":90,"cookies":false,"type":"","demo":"databases\/update-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null,"x-nullable":true}},"required":["required","default"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/relationship":{"post":{"summary":"Create relationship attribute","operationId":"databasesCreateRelationshipAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create relationship attribute. [Learn more about relationship attributes](https:\/\/appwrite.io\/docs\/databases-relationships#relationship-attributes).\n","responses":{"202":{"description":"AttributeRelationship","schema":{"$ref":"#\/definitions\/attributeRelationship"}}},"x-appwrite":{"method":"createRelationshipAttribute","weight":84,"cookies":false,"type":"","demo":"databases\/create-relationship-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-relationship-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"relatedCollectionId":{"type":"string","description":"Related Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","default":null,"x-example":"[RELATED_COLLECTION_ID]"},"type":{"type":"string","description":"Relation type","default":null,"x-example":"oneToOne","enum":["oneToOne","manyToOne","manyToMany","oneToMany"],"x-enum-name":"RelationshipType","x-enum-keys":[]},"twoWay":{"type":"boolean","description":"Is Two Way?","default":false,"x-example":false},"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"twoWayKey":{"type":"string","description":"Two Way Attribute Key.","default":null,"x-example":null},"onDelete":{"type":"string","description":"Constraints option","default":"restrict","x-example":"cascade","enum":["cascade","restrict","setNull"],"x-enum-name":"RelationMutate","x-enum-keys":[]}},"required":["relatedCollectionId","type"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create string attribute","operationId":"databasesCreateStringAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a string attribute.\n","responses":{"202":{"description":"AttributeString","schema":{"$ref":"#\/definitions\/attributeString"}}},"x-appwrite":{"method":"createStringAttribute","weight":75,"cookies":false,"type":"","demo":"databases\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"size":{"type":"integer","description":"Attribute size for text attributes, in number of characters.","default":null,"x-example":1},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false},"encrypt":{"type":"boolean","description":"Toggle encryption for the attribute. Encryption enhances security by not storing any plain text values in the database. However, encrypted attributes cannot be queried.","default":false,"x-example":false}},"required":["key","size","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/string\/{key}":{"patch":{"summary":"Update string attribute","operationId":"databasesUpdateStringAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Update a string attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeString","schema":{"$ref":"#\/definitions\/attributeString"}}},"x-appwrite":{"method":"updateStringAttribute","weight":87,"cookies":false,"type":"","demo":"databases\/update-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"[DEFAULT]","x-nullable":true}},"required":["required","default"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL attribute","operationId":"databasesCreateUrlAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a URL attribute.\n","responses":{"202":{"description":"AttributeURL","schema":{"$ref":"#\/definitions\/attributeUrl"}}},"x-appwrite":{"method":"createUrlAttribute","weight":79,"cookies":false,"type":"","demo":"databases\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"https:\/\/example.com"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url\/{key}":{"patch":{"summary":"Update URL attribute","operationId":"databasesUpdateUrlAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Update an url attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeURL","schema":{"$ref":"#\/definitions\/attributeUrl"}}},"x-appwrite":{"method":"updateUrlAttribute","weight":91,"cookies":false,"type":"","demo":"databases\/update-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"https:\/\/example.com","x-nullable":true}},"required":["required","default"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get attribute","operationId":"databasesGetAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, or AttributeDatetime, or AttributeRelationship, or AttributeString","schema":{"x-oneOf":[{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeRelationship"},{"$ref":"#\/definitions\/attributeString"}]}}},"x-appwrite":{"method":"getAttribute","weight":86,"cookies":false,"type":"","demo":"databases\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"}]},"delete":{"summary":"Delete attribute","operationId":"databasesDeleteAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":97,"cookies":false,"type":"","demo":"databases\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/{key}\/relationship":{"patch":{"summary":"Update relationship attribute","operationId":"databasesUpdateRelationshipAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Update relationship attribute. [Learn more about relationship attributes](https:\/\/appwrite.io\/docs\/databases-relationships#relationship-attributes).\n","responses":{"200":{"description":"AttributeRelationship","schema":{"$ref":"#\/definitions\/attributeRelationship"}}},"x-appwrite":{"method":"updateRelationshipAttribute","weight":96,"cookies":false,"type":"","demo":"databases\/update-relationship-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-relationship-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"onDelete":{"type":"string","description":"Constraints option","default":null,"x-example":"cascade","enum":["cascade","restrict","setNull"],"x-enum-name":"RelationMutate","x-enum-keys":[]}}}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List documents","operationId":"databasesListDocuments","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","schema":{"$ref":"#\/definitions\/documentList"}}},"x-appwrite":{"method":"listDocuments","weight":103,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"post":{"summary":"Create document","operationId":"databasesCreateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"createDocument","weight":102,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","default":{},"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, only the current user is granted all permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get document","operationId":"databasesGetDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"getDocument","weight":104,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"patch":{"summary":"Update document","operationId":"databasesUpdateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"updateDocument","weight":106,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","default":[],"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete document","operationId":"databasesDeleteDocument","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":107,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}\/logs":{"get":{"summary":"List document logs","operationId":"databasesListDocumentLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get the document activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listDocumentLogs","weight":105,"cookies":false,"type":"","demo":"databases\/list-document-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes":{"get":{"summary":"List indexes","operationId":"databasesListIndexes","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Indexes List","schema":{"$ref":"#\/definitions\/indexList"}}},"x-appwrite":{"method":"listIndexes","weight":99,"cookies":false,"type":"","demo":"databases\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: key, type, status, attributes, error","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"post":{"summary":"Create index","operationId":"databasesCreateIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"createIndex","weight":98,"cookies":false,"type":"","demo":"databases\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Index Key.","default":null,"x-example":null},"type":{"type":"string","description":"Index type.","default":null,"x-example":"key","enum":["key","fulltext","unique","spatial"],"x-enum-name":"IndexType","x-enum-keys":[]},"attributes":{"type":"array","description":"Array of attributes to index. Maximum of 100 attributes are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders. Maximum of 100 orders are allowed.","default":[],"x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get index","operationId":"databasesGetIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"getIndex","weight":100,"cookies":false,"type":"","demo":"databases\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Index Key.","required":true,"type":"string","in":"path"}]},"delete":{"summary":"Delete index","operationId":"databasesDeleteIndex","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":101,"cookies":false,"type":"","demo":"databases\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Index Key.","required":true,"type":"string","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/logs":{"get":{"summary":"List collection logs","operationId":"databasesListCollectionLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get the collection activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listCollectionLogs","weight":72,"cookies":false,"type":"","demo":"databases\/list-collection-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/usage":{"get":{"summary":"Get usage stats for a collection","operationId":"databasesGetCollectionUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"UsageCollection","schema":{"$ref":"#\/definitions\/usageCollection"}}},"x-appwrite":{"method":"getCollectionUsage","weight":110,"cookies":false,"type":"","demo":"databases\/get-collection-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","enum":["24h","30d","90d"],"x-enum-name":"DatabaseUsageRange","x-enum-keys":["Twenty Four Hours","Thirty Days","Ninety Days"],"default":"30d","in":"query"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/databases\/{databaseId}\/logs":{"get":{"summary":"List database logs","operationId":"databasesListLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get the database activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listLogs","weight":66,"cookies":false,"type":"","demo":"databases\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/databases\/{databaseId}\/usage":{"get":{"summary":"Get usage stats for the database","operationId":"databasesGetDatabaseUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"UsageDatabase","schema":{"$ref":"#\/definitions\/usageDatabase"}}},"x-appwrite":{"method":"getDatabaseUsage","weight":109,"cookies":false,"type":"","demo":"databases\/get-database-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"range","description":"`Date range.","required":false,"type":"string","x-example":"24h","enum":["24h","30d","90d"],"x-enum-name":"DatabaseUsageRange","x-enum-keys":["Twenty Four Hours","Thirty Days","Ninety Days"],"default":"30d","in":"query"}]}},"\/functions":{"get":{"summary":"List functions","operationId":"functionsList","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the project's functions. You can use the query params to filter your results.","responses":{"200":{"description":"Functions List","schema":{"$ref":"#\/definitions\/functionList"}}},"x-appwrite":{"method":"list","weight":266,"cookies":false,"type":"","demo":"functions\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-functions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, runtime, deployment, schedule, scheduleNext, schedulePrevious, timeout, entrypoint, commands, installationId","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create function","operationId":"functionsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function. You can pass a list of [permissions](https:\/\/appwrite.io\/docs\/permissions) to allow different project users or team with access to execute the function using the client API.","responses":{"201":{"description":"Function","schema":{"$ref":"#\/definitions\/function"}}},"x-appwrite":{"method":"create","weight":265,"cookies":false,"type":"","demo":"functions\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"functionId":{"type":"string","description":"Function ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[FUNCTION_ID]"},"name":{"type":"string","description":"Function name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"runtime":{"type":"string","description":"Execution runtime.","default":null,"x-example":"node-18.0","enum":["node-18.0","php-8.0","ruby-3.1","python-3.9"],"x-enum-name":null,"x-enum-keys":[]},"execute":{"type":"array","description":"An array of role strings with execution permissions. By default no user is granted with any execute permissions. [learn more about roles](https:\/\/appwrite.io\/docs\/permissions#permission-roles). Maximum of 100 roles are allowed, each 64 characters long.","default":[],"x-example":"[\"any\"]","items":{"type":"string"}},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","default":[],"x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","default":"","x-example":null},"timeout":{"type":"integer","description":"Function maximum execution time in seconds.","default":15,"x-example":1},"enabled":{"type":"boolean","description":"Is function enabled? When set to 'disabled', users cannot access the function but Server SDKs with and API key can still access the function. No data is lost when this is toggled.","default":true,"x-example":false},"logging":{"type":"boolean","description":"Whether executions will be logged. When set to false, executions will not be logged, but will reduce resource used by your Appwrite project.","default":true,"x-example":false},"entrypoint":{"type":"string","description":"Entrypoint File. This path is relative to the \"providerRootDirectory\".","default":"","x-example":"[ENTRYPOINT]"},"commands":{"type":"string","description":"Build Commands.","default":"","x-example":"[COMMANDS]"},"installationId":{"type":"string","description":"Appwrite Installation ID for VCS (Version Control System) deployment.","default":"","x-example":"[INSTALLATION_ID]"},"providerRepositoryId":{"type":"string","description":"Repository ID of the repo linked to the function.","default":"","x-example":"[PROVIDER_REPOSITORY_ID]"},"providerBranch":{"type":"string","description":"Production branch for the repo linked to the function.","default":"","x-example":"[PROVIDER_BRANCH]"},"providerSilentMode":{"type":"boolean","description":"Is the VCS (Version Control System) connection in silent mode for the repo linked to the function? In silent mode, comments will not be made on commits and pull requests.","default":false,"x-example":false},"providerRootDirectory":{"type":"string","description":"Path to function code in the linked repo.","default":"","x-example":"[PROVIDER_ROOT_DIRECTORY]"},"templateRepository":{"type":"string","description":"Repository name of the template.","default":"","x-example":"[TEMPLATE_REPOSITORY]"},"templateOwner":{"type":"string","description":"The name of the owner of the template.","default":"","x-example":"[TEMPLATE_OWNER]"},"templateRootDirectory":{"type":"string","description":"Path to function code in the template repo.","default":"","x-example":"[TEMPLATE_ROOT_DIRECTORY]"},"templateBranch":{"type":"string","description":"Production branch for the repo linked to the function template.","default":"","x-example":"[TEMPLATE_BRANCH]"}},"required":["functionId","name","runtime"]}}]}},"\/functions\/runtimes":{"get":{"summary":"List runtimes","operationId":"functionsListRuntimes","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all runtimes that are currently active on your instance.","responses":{"200":{"description":"Runtimes List","schema":{"$ref":"#\/definitions\/runtimeList"}}},"x-appwrite":{"method":"listRuntimes","weight":267,"cookies":false,"type":"","demo":"functions\/list-runtimes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-runtimes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/functions\/usage":{"get":{"summary":"Get functions usage","operationId":"functionsGetUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"","responses":{"200":{"description":"UsageFunctions","schema":{"$ref":"#\/definitions\/usageFunctions"}}},"x-appwrite":{"method":"getUsage","weight":270,"cookies":false,"type":"","demo":"functions\/get-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","enum":["24h","30d","90d"],"x-enum-name":"FunctionUsageRange","x-enum-keys":["Twenty Four Hours","Thirty Days","Ninety Days"],"default":"30d","in":"query"}]}},"\/functions\/{functionId}":{"get":{"summary":"Get function","operationId":"functionsGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a function by its unique ID.","responses":{"200":{"description":"Function","schema":{"$ref":"#\/definitions\/function"}}},"x-appwrite":{"method":"get","weight":268,"cookies":false,"type":"","demo":"functions\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"}]},"put":{"summary":"Update function","operationId":"functionsUpdate","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Update function by its unique ID.","responses":{"200":{"description":"Function","schema":{"$ref":"#\/definitions\/function"}}},"x-appwrite":{"method":"update","weight":271,"cookies":false,"type":"","demo":"functions\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Function name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"runtime":{"type":"string","description":"Execution runtime.","default":"","x-example":"node-18.0","enum":["node-18.0","php-8.0","ruby-3.1","python-3.9"],"x-enum-name":null,"x-enum-keys":[]},"execute":{"type":"array","description":"An array of role strings with execution permissions. By default no user is granted with any execute permissions. [learn more about roles](https:\/\/appwrite.io\/docs\/permissions#permission-roles). Maximum of 100 roles are allowed, each 64 characters long.","default":[],"x-example":"[\"any\"]","items":{"type":"string"}},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","default":[],"x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","default":"","x-example":null},"timeout":{"type":"integer","description":"Maximum execution time in seconds.","default":15,"x-example":1},"enabled":{"type":"boolean","description":"Is function enabled? When set to 'disabled', users cannot access the function but Server SDKs with and API key can still access the function. No data is lost when this is toggled.","default":true,"x-example":false},"logging":{"type":"boolean","description":"Whether executions will be logged. When set to false, executions will not be logged, but will reduce resource used by your Appwrite project.","default":true,"x-example":false},"entrypoint":{"type":"string","description":"Entrypoint File. This path is relative to the \"providerRootDirectory\".","default":"","x-example":"[ENTRYPOINT]"},"commands":{"type":"string","description":"Build Commands.","default":"","x-example":"[COMMANDS]"},"installationId":{"type":"string","description":"Appwrite Installation ID for VCS (Version Controle System) deployment.","default":"","x-example":"[INSTALLATION_ID]"},"providerRepositoryId":{"type":"string","description":"Repository ID of the repo linked to the function","default":"","x-example":"[PROVIDER_REPOSITORY_ID]"},"providerBranch":{"type":"string","description":"Production branch for the repo linked to the function","default":"","x-example":"[PROVIDER_BRANCH]"},"providerSilentMode":{"type":"boolean","description":"Is the VCS (Version Control System) connection in silent mode for the repo linked to the function? In silent mode, comments will not be made on commits and pull requests.","default":false,"x-example":false},"providerRootDirectory":{"type":"string","description":"Path to function code in the linked repo.","default":"","x-example":"[PROVIDER_ROOT_DIRECTORY]"}},"required":["name"]}}]},"delete":{"summary":"Delete function","operationId":"functionsDelete","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"Delete a function by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":274,"cookies":false,"type":"","demo":"functions\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"}]}},"\/functions\/{functionId}\/deployments":{"get":{"summary":"List deployments","operationId":"functionsListDeployments","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the project's code deployments. You can use the query params to filter your results.","responses":{"200":{"description":"Deployments List","schema":{"$ref":"#\/definitions\/deploymentList"}}},"x-appwrite":{"method":"listDeployments","weight":276,"cookies":false,"type":"","demo":"functions\/list-deployments.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-deployments.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: size, buildId, activate, entrypoint, commands","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create deployment","operationId":"functionsCreateDeployment","consumes":["multipart\/form-data"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function code deployment. Use this endpoint to upload a new version of your code function. To execute your newly uploaded code, you'll need to update the function's deployment to use your new deployment UID.\n\nThis endpoint accepts a tar.gz file compressed with your code. Make sure to include any dependencies your code has within the compressed file. You can learn more about code packaging in the [Appwrite Cloud Functions tutorial](https:\/\/appwrite.io\/docs\/functions).\n\nUse the \"command\" param to set the entrypoint used to execute your code.","responses":{"202":{"description":"Deployment","schema":{"$ref":"#\/definitions\/deployment"}}},"x-appwrite":{"method":"createDeployment","weight":275,"cookies":false,"type":"","demo":"functions\/create-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":true,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"entrypoint","description":"Entrypoint File.","required":false,"type":"string","x-example":"[ENTRYPOINT]","in":"formData"},{"name":"commands","description":"Build Commands.","required":false,"type":"string","x-example":"[COMMANDS]","in":"formData"},{"name":"code","description":"Gzip file with your code package. When used with the Appwrite CLI, pass the path to your code directory, and the CLI will automatically package your code. Use a path that is within the current directory.","required":true,"type":"file","in":"formData"},{"name":"activate","description":"Automatically activate the deployment when it is finished building.","required":true,"type":"boolean","x-example":false,"in":"formData"}]}},"\/functions\/{functionId}\/deployments\/{deploymentId}":{"get":{"summary":"Get deployment","operationId":"functionsGetDeployment","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a code deployment by its unique ID.","responses":{"200":{"description":"Deployment","schema":{"$ref":"#\/definitions\/deployment"}}},"x-appwrite":{"method":"getDeployment","weight":277,"cookies":false,"type":"","demo":"functions\/get-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"type":"string","x-example":"[DEPLOYMENT_ID]","in":"path"}]},"patch":{"summary":"Update function deployment","operationId":"functionsUpdateDeployment","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Update the function code deployment ID using the unique function ID. Use this endpoint to switch the code deployment that should be executed by the execution endpoint.","responses":{"200":{"description":"Function","schema":{"$ref":"#\/definitions\/function"}}},"x-appwrite":{"method":"updateDeployment","weight":273,"cookies":false,"type":"","demo":"functions\/update-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-function-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"type":"string","x-example":"[DEPLOYMENT_ID]","in":"path"}]},"delete":{"summary":"Delete deployment","operationId":"functionsDeleteDeployment","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"Delete a code deployment by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDeployment","weight":278,"cookies":false,"type":"","demo":"functions\/delete-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"type":"string","x-example":"[DEPLOYMENT_ID]","in":"path"}]}},"\/functions\/{functionId}\/deployments\/{deploymentId}\/builds\/{buildId}":{"post":{"summary":"Create build","operationId":"functionsCreateBuild","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"Create a new build for an Appwrite Function deployment. This endpoint can be used to retry a failed build.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"createBuild","weight":279,"cookies":false,"type":"","demo":"functions\/create-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"type":"string","x-example":"[DEPLOYMENT_ID]","in":"path"},{"name":"buildId","description":"Build unique ID.","required":true,"type":"string","x-example":"[BUILD_ID]","in":"path"}]}},"\/functions\/{functionId}\/deployments\/{deploymentId}\/download":{"get":{"summary":"Download Deployment","operationId":"functionsDownloadDeployment","consumes":["application\/json"],"produces":["*\/*"],"tags":["functions"],"description":"Get a Deployment's contents by its unique ID. This endpoint supports range requests for partial or streaming file download.","responses":{"200":{"description":"File","schema":{"type":"file"}}},"x-appwrite":{"method":"downloadDeployment","weight":272,"cookies":false,"type":"location","demo":"functions\/download-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/download-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"type":"string","x-example":"[DEPLOYMENT_ID]","in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List executions","operationId":"functionsListExecutions","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","schema":{"$ref":"#\/definitions\/executionList"}}},"x-appwrite":{"method":"listExecutions","weight":281,"cookies":false,"type":"","demo":"functions\/list-executions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-executions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, responseStatusCode, duration","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create execution","operationId":"functionsCreateExecution","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","schema":{"$ref":"#\/definitions\/execution"}}},"x-appwrite":{"method":"createExecution","weight":280,"cookies":false,"type":"","demo":"functions\/create-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-execution.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"body":{"type":"string","description":"HTTP body of execution. Default value is empty string.","default":"","x-example":"[BODY]"},"async":{"type":"boolean","description":"Execute code in the background. Default value is false.","default":false,"x-example":false},"path":{"type":"string","description":"HTTP path of execution. Path can include query params. Default value is \/","default":"\/","x-example":"[PATH]"},"method":{"type":"string","description":"HTTP method of execution. Default value is GET.","default":"POST","x-example":"GET","enum":["GET","POST","PUT","PATCH","DELETE","OPTIONS"],"x-enum-name":"ExecutionMethod","x-enum-keys":[]},"headers":{"type":"object","description":"HTTP headers of execution. Defaults to empty.","default":[],"x-example":"{}"}}}}]}},"\/functions\/{functionId}\/executions\/{executionId}":{"get":{"summary":"Get execution","operationId":"functionsGetExecution","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a function execution log by its unique ID.","responses":{"200":{"description":"Execution","schema":{"$ref":"#\/definitions\/execution"}}},"x-appwrite":{"method":"getExecution","weight":282,"cookies":false,"type":"","demo":"functions\/get-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-execution.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"executionId","description":"Execution ID.","required":true,"type":"string","x-example":"[EXECUTION_ID]","in":"path"}]}},"\/functions\/{functionId}\/usage":{"get":{"summary":"Get function usage","operationId":"functionsGetFunctionUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"","responses":{"200":{"description":"UsageFunction","schema":{"$ref":"#\/definitions\/usageFunction"}}},"x-appwrite":{"method":"getFunctionUsage","weight":269,"cookies":false,"type":"","demo":"functions\/get-function-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","enum":["24h","30d","90d"],"x-enum-name":"FunctionUsageRange","x-enum-keys":["Twenty Four Hours","Thirty Days","Ninety Days"],"default":"30d","in":"query"}]}},"\/functions\/{functionId}\/variables":{"get":{"summary":"List variables","operationId":"functionsListVariables","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all variables of a specific function.","responses":{"200":{"description":"Variables List","schema":{"$ref":"#\/definitions\/variableList"}}},"x-appwrite":{"method":"listVariables","weight":284,"cookies":false,"type":"","demo":"functions\/list-variables.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-variables.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"}]},"post":{"summary":"Create variable","operationId":"functionsCreateVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function environment variable. These variables can be accessed in the function at runtime as environment variables.","responses":{"201":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"createVariable","weight":283,"cookies":false,"type":"","demo":"functions\/create-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","default":null,"x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","default":null,"x-example":"[VALUE]"}},"required":["key","value"]}}]}},"\/functions\/{functionId}\/variables\/{variableId}":{"get":{"summary":"Get variable","operationId":"functionsGetVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a variable by its unique ID.","responses":{"200":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"getVariable","weight":285,"cookies":false,"type":"","demo":"functions\/get-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"}]},"put":{"summary":"Update variable","operationId":"functionsUpdateVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Update variable by its unique ID.","responses":{"200":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"updateVariable","weight":286,"cookies":false,"type":"","demo":"functions\/update-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","default":null,"x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","default":null,"x-example":"[VALUE]"}},"required":["key"]}}]},"delete":{"summary":"Delete variable","operationId":"functionsDeleteVariable","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"Delete a variable by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteVariable","weight":287,"cookies":false,"type":"","demo":"functions\/delete-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"}]}},"\/graphql":{"post":{"summary":"GraphQL endpoint","operationId":"graphqlQuery","consumes":["application\/json"],"produces":["application\/json"],"tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","schema":{"$ref":"#\/definitions\/any"}}},"x-appwrite":{"method":"query","weight":302,"cookies":false,"type":"graphql","demo":"graphql\/query.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"query":{"type":"object","description":"The query or queries to execute.","default":{},"x-example":"{}"}},"required":["query"]}}]}},"\/graphql\/mutation":{"post":{"summary":"GraphQL endpoint","operationId":"graphqlMutation","consumes":["application\/json"],"produces":["application\/json"],"tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","schema":{"$ref":"#\/definitions\/any"}}},"x-appwrite":{"method":"mutation","weight":301,"cookies":false,"type":"graphql","demo":"graphql\/mutation.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"query":{"type":"object","description":"The query or queries to execute.","default":{},"x-example":"{}"}},"required":["query"]}}]}},"\/health":{"get":{"summary":"Get HTTP","operationId":"healthGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite HTTP server is up and responsive.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"get","weight":119,"cookies":false,"type":"","demo":"health\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/anti-virus":{"get":{"summary":"Get antivirus","operationId":"healthGetAntivirus","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite Antivirus server is up and connection is successful.","responses":{"200":{"description":"Health Antivirus","schema":{"$ref":"#\/definitions\/healthAntivirus"}}},"x-appwrite":{"method":"getAntivirus","weight":137,"cookies":false,"type":"","demo":"health\/get-antivirus.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-storage-anti-virus.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/cache":{"get":{"summary":"Get cache","operationId":"healthGetCache","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite in-memory cache servers are up and connection is successful.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"getCache","weight":122,"cookies":false,"type":"","demo":"health\/get-cache.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-cache.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/db":{"get":{"summary":"Get DB","operationId":"healthGetDB","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite database servers are up and connection is successful.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"getDB","weight":121,"cookies":false,"type":"","demo":"health\/get-d-b.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-db.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/pubsub":{"get":{"summary":"Get pubsub","operationId":"healthGetPubSub","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite pub-sub servers are up and connection is successful.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"getPubSub","weight":124,"cookies":false,"type":"","demo":"health\/get-pub-sub.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-pubsub.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/queue":{"get":{"summary":"Get queue","operationId":"healthGetQueue","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite queue messaging servers are up and connection is successful.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"getQueue","weight":123,"cookies":false,"type":"","demo":"health\/get-queue.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/queue\/builds":{"get":{"summary":"Get builds queue","operationId":"healthGetQueueBuilds","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of builds that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueBuilds","weight":129,"cookies":false,"type":"","demo":"health\/get-queue-builds.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-builds.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/certificates":{"get":{"summary":"Get certificates queue","operationId":"healthGetQueueCertificates","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of certificates that are waiting to be issued against [Letsencrypt](https:\/\/letsencrypt.org\/) in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueCertificates","weight":128,"cookies":false,"type":"","demo":"health\/get-queue-certificates.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-certificates.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/databases":{"get":{"summary":"Get databases queue","operationId":"healthGetQueueDatabases","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of database changes that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueDatabases","weight":130,"cookies":false,"type":"","demo":"health\/get-queue-databases.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-databases.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"name","description":"Queue name for which to check the queue size","required":false,"type":"string","x-example":"[NAME]","default":"database_db_main","in":"query"},{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/deletes":{"get":{"summary":"Get deletes queue","operationId":"healthGetQueueDeletes","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of background destructive changes that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueDeletes","weight":131,"cookies":false,"type":"","demo":"health\/get-queue-deletes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-deletes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/functions":{"get":{"summary":"Get functions queue","operationId":"healthGetQueueFunctions","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueFunctions","weight":135,"cookies":false,"type":"","demo":"health\/get-queue-functions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-functions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/logs":{"get":{"summary":"Get logs queue","operationId":"healthGetQueueLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of logs that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueLogs","weight":127,"cookies":false,"type":"","demo":"health\/get-queue-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/mails":{"get":{"summary":"Get mails queue","operationId":"healthGetQueueMails","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of mails that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueMails","weight":132,"cookies":false,"type":"","demo":"health\/get-queue-mails.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-mails.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/messaging":{"get":{"summary":"Get messaging queue","operationId":"healthGetQueueMessaging","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of messages that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueMessaging","weight":133,"cookies":false,"type":"","demo":"health\/get-queue-messaging.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-messaging.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/migrations":{"get":{"summary":"Get migrations queue","operationId":"healthGetQueueMigrations","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of migrations that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueMigrations","weight":134,"cookies":false,"type":"","demo":"health\/get-queue-migrations.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-migrations.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/webhooks":{"get":{"summary":"Get webhooks queue","operationId":"healthGetQueueWebhooks","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of webhooks that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueWebhooks","weight":126,"cookies":false,"type":"","demo":"health\/get-queue-webhooks.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-webhooks.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/storage\/local":{"get":{"summary":"Get local storage","operationId":"healthGetStorageLocal","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite local storage device is up and connection is successful.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"getStorageLocal","weight":136,"cookies":false,"type":"","demo":"health\/get-storage-local.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-storage-local.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/time":{"get":{"summary":"Get time","operationId":"healthGetTime","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite server time is synced with Google remote NTP server. We use this technology to smoothly handle leap seconds with no disruptive events. The [Network Time Protocol](https:\/\/en.wikipedia.org\/wiki\/Network_Time_Protocol) (NTP) is used by hundreds of millions of computers and devices to synchronize their clocks over the Internet. If your computer sets its own clock, it likely uses NTP.","responses":{"200":{"description":"Health Time","schema":{"$ref":"#\/definitions\/healthTime"}}},"x-appwrite":{"method":"getTime","weight":125,"cookies":false,"type":"","demo":"health\/get-time.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-time.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/locale":{"get":{"summary":"Get user locale","operationId":"localeGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"Get the current user location based on IP. Returns an object with user country code, country name, continent name, continent code, ip address and suggested currency. You can use the locale header to get the data in a supported language.\n\n([IP Geolocation by DB-IP](https:\/\/db-ip.com))","responses":{"200":{"description":"Locale","schema":{"$ref":"#\/definitions\/locale"}}},"x-appwrite":{"method":"get","weight":111,"cookies":false,"type":"","demo":"locale\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-locale.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/localed","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/codes":{"get":{"summary":"List Locale Codes","operationId":"localeListCodes","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all locale codes in [ISO 639-1](https:\/\/en.wikipedia.org\/wiki\/List_of_ISO_639-1_codes).","responses":{"200":{"description":"Locale codes list","schema":{"$ref":"#\/definitions\/localeCodeList"}}},"x-appwrite":{"method":"listCodes","weight":112,"cookies":false,"type":"","demo":"locale\/list-codes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-locale-codes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/localeCode","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/continents":{"get":{"summary":"List continents","operationId":"localeListContinents","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","schema":{"$ref":"#\/definitions\/continentList"}}},"x-appwrite":{"method":"listContinents","weight":116,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/continents","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List countries","operationId":"localeListCountries","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountries","weight":113,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/countries","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU countries","operationId":"localeListCountriesEU","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountriesEU","weight":114,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/countries\/eu","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List countries phone codes","operationId":"localeListCountriesPhones","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","schema":{"$ref":"#\/definitions\/phoneList"}}},"x-appwrite":{"method":"listCountriesPhones","weight":115,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/countries\/phones","offline-key":"","offline-response-key":"countryCode","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List currencies","operationId":"localeListCurrencies","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","schema":{"$ref":"#\/definitions\/currencyList"}}},"x-appwrite":{"method":"listCurrencies","weight":117,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/currencies","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List languages","operationId":"localeListLanguages","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","schema":{"$ref":"#\/definitions\/languageList"}}},"x-appwrite":{"method":"listLanguages","weight":118,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/languages","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/messaging\/messages":{"get":{"summary":"List messages","operationId":"messagingListMessages","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Message list","schema":{"$ref":"#\/definitions\/messageList"}}},"x-appwrite":{"method":"listMessages","weight":361,"cookies":false,"type":"","demo":"messaging\/list-messages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-messages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: scheduledAt, deliveredAt, deliveredTotal, status, description, providerType","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]}},"\/messaging\/messages\/email":{"post":{"summary":"Create an email.","operationId":"messagingCreateEmail","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Message","schema":{"$ref":"#\/definitions\/message"}}},"x-appwrite":{"method":"createEmail","weight":358,"cookies":false,"type":"","demo":"messaging\/create-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"messageId":{"type":"string","description":"Message ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[MESSAGE_ID]"},"subject":{"type":"string","description":"Email Subject.","default":null,"x-example":"[SUBJECT]"},"content":{"type":"string","description":"Email Content.","default":null,"x-example":"[CONTENT]"},"topics":{"type":"array","description":"List of Topic IDs.","default":[],"x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","default":[],"x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","default":[],"x-example":null,"items":{"type":"string"}},"cc":{"type":"array","description":"Array of target IDs to be added as CC.","default":[],"x-example":null,"items":{"type":"string"}},"bcc":{"type":"array","description":"Array of target IDs to be added as BCC.","default":[],"x-example":null,"items":{"type":"string"}},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","default":"draft","x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":"MessageType","x-enum-keys":[]},"html":{"type":"boolean","description":"Is content of type HTML","default":false,"x-example":false},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","default":null,"x-example":null}},"required":["messageId","subject","content"]}}]}},"\/messaging\/messages\/email\/{messageId}":{"patch":{"summary":"Update an email.","operationId":"messagingUpdateEmail","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Message","schema":{"$ref":"#\/definitions\/message"}}},"x-appwrite":{"method":"updateEmail","weight":365,"cookies":false,"type":"","demo":"messaging\/update-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"type":"string","x-example":"[MESSAGE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"topics":{"type":"array","description":"List of Topic IDs.","default":null,"x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","default":null,"x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","default":null,"x-example":null,"items":{"type":"string"}},"subject":{"type":"string","description":"Email Subject.","default":null,"x-example":"[SUBJECT]"},"content":{"type":"string","description":"Email Content.","default":null,"x-example":"[CONTENT]"},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","default":"draft","x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":"MessageType","x-enum-keys":[]},"html":{"type":"boolean","description":"Is content of type HTML","default":null,"x-example":false},"cc":{"type":"array","description":"Array of target IDs to be added as CC.","default":null,"x-example":null,"items":{"type":"string"}},"bcc":{"type":"array","description":"Array of target IDs to be added as BCC.","default":null,"x-example":null,"items":{"type":"string"}},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","default":null,"x-example":null}}}}]}},"\/messaging\/messages\/push":{"post":{"summary":"Create a push notification.","operationId":"messagingCreatePush","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Message","schema":{"$ref":"#\/definitions\/message"}}},"x-appwrite":{"method":"createPush","weight":360,"cookies":false,"type":"","demo":"messaging\/create-push.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-push-notification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"messageId":{"type":"string","description":"Message ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[MESSAGE_ID]"},"title":{"type":"string","description":"Title for push notification.","default":null,"x-example":"[TITLE]"},"body":{"type":"string","description":"Body for push notification.","default":null,"x-example":"[BODY]"},"topics":{"type":"array","description":"List of Topic IDs.","default":[],"x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","default":[],"x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","default":[],"x-example":null,"items":{"type":"string"}},"data":{"type":"object","description":"Additional Data for push notification.","default":{},"x-example":"{}"},"action":{"type":"string","description":"Action for push notification.","default":"","x-example":"[ACTION]"},"icon":{"type":"string","description":"Icon for push notification. Available only for Android and Web Platform.","default":"","x-example":"[ICON]"},"sound":{"type":"string","description":"Sound for push notification. Available only for Android and IOS Platform.","default":"","x-example":"[SOUND]"},"color":{"type":"string","description":"Color for push notification. Available only for Android Platform.","default":"","x-example":"[COLOR]"},"tag":{"type":"string","description":"Tag for push notification. Available only for Android Platform.","default":"","x-example":"[TAG]"},"badge":{"type":"string","description":"Badge for push notification. Available only for IOS Platform.","default":"","x-example":"[BADGE]"},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","default":"draft","x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":"MessageType","x-enum-keys":[]},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","default":null,"x-example":null}},"required":["messageId","title","body"]}}]}},"\/messaging\/messages\/push\/{messageId}":{"patch":{"summary":"Update a push notification.","operationId":"messagingUpdatePush","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Message","schema":{"$ref":"#\/definitions\/message"}}},"x-appwrite":{"method":"updatePush","weight":367,"cookies":false,"type":"","demo":"messaging\/update-push.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-push-notification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"type":"string","x-example":"[MESSAGE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"topics":{"type":"array","description":"List of Topic IDs.","default":null,"x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","default":null,"x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","default":null,"x-example":null,"items":{"type":"string"}},"title":{"type":"string","description":"Title for push notification.","default":null,"x-example":"[TITLE]"},"body":{"type":"string","description":"Body for push notification.","default":null,"x-example":"[BODY]"},"data":{"type":"object","description":"Additional Data for push notification.","default":{},"x-example":"{}"},"action":{"type":"string","description":"Action for push notification.","default":null,"x-example":"[ACTION]"},"icon":{"type":"string","description":"Icon for push notification. Available only for Android and Web platforms.","default":null,"x-example":"[ICON]"},"sound":{"type":"string","description":"Sound for push notification. Available only for Android and iOS platforms.","default":null,"x-example":"[SOUND]"},"color":{"type":"string","description":"Color for push notification. Available only for Android platforms.","default":null,"x-example":"[COLOR]"},"tag":{"type":"string","description":"Tag for push notification. Available only for Android platforms.","default":null,"x-example":"[TAG]"},"badge":{"type":"integer","description":"Badge for push notification. Available only for iOS platforms.","default":null,"x-example":null},"status":{"type":"string","description":"Message Status. Value must be either draft, cancelled, or processing.","default":null,"x-example":"draft","enum":["draft","cancelled","processing"],"x-enum-name":"MessageType","x-enum-keys":[]},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","default":null,"x-example":null}}}}]}},"\/messaging\/messages\/sms":{"post":{"summary":"Create an SMS.","operationId":"messagingCreateSMS","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Message","schema":{"$ref":"#\/definitions\/message"}}},"x-appwrite":{"method":"createSMS","weight":359,"cookies":false,"type":"","demo":"messaging\/create-s-m-s.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-sms.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"messageId":{"type":"string","description":"Message ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[MESSAGE_ID]"},"content":{"type":"string","description":"SMS Content.","default":null,"x-example":"[CONTENT]"},"topics":{"type":"array","description":"List of Topic IDs.","default":[],"x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","default":[],"x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","default":[],"x-example":null,"items":{"type":"string"}},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","default":"draft","x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":"MessageType","x-enum-keys":[]},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","default":null,"x-example":null}},"required":["messageId","content"]}}]}},"\/messaging\/messages\/sms\/{messageId}":{"patch":{"summary":"Update an SMS.","operationId":"messagingUpdateSMS","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Message","schema":{"$ref":"#\/definitions\/message"}}},"x-appwrite":{"method":"updateSMS","weight":366,"cookies":false,"type":"","demo":"messaging\/update-s-m-s.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"type":"string","x-example":"[MESSAGE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"topics":{"type":"array","description":"List of Topic IDs.","default":null,"x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","default":null,"x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","default":null,"x-example":null,"items":{"type":"string"}},"content":{"type":"string","description":"Email Content.","default":null,"x-example":"[CONTENT]"},"status":{"type":"string","description":"Message Status. Value must be either draft or cancelled or processing.","default":null,"x-example":"draft","enum":["draft","cancelled","processing"],"x-enum-name":"MessageType","x-enum-keys":[]},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","default":null,"x-example":null}}}}]}},"\/messaging\/messages\/{messageId}":{"get":{"summary":"Get a message","operationId":"messagingGetMessage","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Message","schema":{"$ref":"#\/definitions\/message"}}},"x-appwrite":{"method":"getMessage","weight":364,"cookies":false,"type":"","demo":"messaging\/get-message.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/get-message.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"type":"string","x-example":"[MESSAGE_ID]","in":"path"}]},"delete":{"summary":"Delete a message","operationId":"messagingDelete","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":368,"cookies":false,"type":"","demo":"messaging\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-message.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"type":"string","x-example":"[MESSAGE_ID]","in":"path"}]}},"\/messaging\/messages\/{messageId}\/logs":{"get":{"summary":"List message logs","operationId":"messagingListMessageLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listMessageLogs","weight":362,"cookies":false,"type":"","demo":"messaging\/list-message-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/messages\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"type":"string","x-example":"[MESSAGE_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/messaging\/messages\/{messageId}\/targets":{"get":{"summary":"List message targets","operationId":"messagingListTargets","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"List the targets associated with a message as set via the targets attribute.","responses":{"200":{"description":"Target list","schema":{"$ref":"#\/definitions\/targetList"}}},"x-appwrite":{"method":"listTargets","weight":363,"cookies":false,"type":"","demo":"messaging\/list-targets.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-message-targets.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"type":"string","x-example":"[MESSAGE_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, providerId, identifier, providerType","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/messaging\/providers":{"get":{"summary":"List providers","operationId":"messagingListProviders","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider list","schema":{"$ref":"#\/definitions\/providerList"}}},"x-appwrite":{"method":"listProviders","weight":333,"cookies":false,"type":"","demo":"messaging\/list-providers.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-providers.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, provider, type, enabled","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]}},"\/messaging\/providers\/apns":{"post":{"summary":"Create APNS provider","operationId":"messagingCreateAPNSProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createAPNSProvider","weight":332,"cookies":false,"type":"","demo":"messaging\/create-a-p-n-s-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-apns-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"authKey":{"type":"string","description":"APNS authentication key.","default":"","x-example":"[AUTH_KEY]"},"authKeyId":{"type":"string","description":"APNS authentication key ID.","default":"","x-example":"[AUTH_KEY_ID]"},"teamId":{"type":"string","description":"APNS team ID.","default":"","x-example":"[TEAM_ID]"},"bundleId":{"type":"string","description":"APNS bundle ID.","default":"","x-example":"[BUNDLE_ID]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name"]}}]}},"\/messaging\/providers\/apns\/{providerId}":{"patch":{"summary":"Update APNS provider","operationId":"messagingUpdateAPNSProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateAPNSProvider","weight":345,"cookies":false,"type":"","demo":"messaging\/update-a-p-n-s-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-apns-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"authKey":{"type":"string","description":"APNS authentication key.","default":"","x-example":"[AUTH_KEY]"},"authKeyId":{"type":"string","description":"APNS authentication key ID.","default":"","x-example":"[AUTH_KEY_ID]"},"teamId":{"type":"string","description":"APNS team ID.","default":"","x-example":"[TEAM_ID]"},"bundleId":{"type":"string","description":"APNS bundle ID.","default":"","x-example":"[BUNDLE_ID]"}}}}]}},"\/messaging\/providers\/fcm":{"post":{"summary":"Create FCM provider","operationId":"messagingCreateFCMProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createFCMProvider","weight":331,"cookies":false,"type":"","demo":"messaging\/create-f-c-m-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-fcm-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"serviceAccountJSON":{"type":"object","description":"FCM service account JSON.","default":{},"x-example":"{}"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name"]}}]}},"\/messaging\/providers\/fcm\/{providerId}":{"patch":{"summary":"Update FCM provider","operationId":"messagingUpdateFCMProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateFCMProvider","weight":344,"cookies":false,"type":"","demo":"messaging\/update-f-c-m-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-fcm-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"serviceAccountJSON":{"type":"object","description":"FCM service account JSON.","default":{},"x-example":"{}"}}}}]}},"\/messaging\/providers\/mailgun":{"post":{"summary":"Create Mailgun provider","operationId":"messagingCreateMailgunProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createMailgunProvider","weight":323,"cookies":false,"type":"","demo":"messaging\/create-mailgun-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-mailgun-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"apiKey":{"type":"string","description":"Mailgun API Key.","default":"","x-example":"[API_KEY]"},"domain":{"type":"string","description":"Mailgun Domain.","default":"","x-example":"[DOMAIN]"},"isEuRegion":{"type":"boolean","description":"Set as EU region.","default":null,"x-example":false},"fromName":{"type":"string","description":"Sender Name.","default":"","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","default":"","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the reply to field for the mail. Default value is sender name. Reply to name must have reply to email as well.","default":"","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the reply to field for the mail. Default value is sender email. Reply to email must have reply to name as well.","default":"","x-example":"email@example.com"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name"]}}]}},"\/messaging\/providers\/mailgun\/{providerId}":{"patch":{"summary":"Update Mailgun provider","operationId":"messagingUpdateMailgunProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateMailgunProvider","weight":336,"cookies":false,"type":"","demo":"messaging\/update-mailgun-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-mailgun-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"apiKey":{"type":"string","description":"Mailgun API Key.","default":"","x-example":"[API_KEY]"},"domain":{"type":"string","description":"Mailgun Domain.","default":"","x-example":"[DOMAIN]"},"isEuRegion":{"type":"boolean","description":"Set as EU region.","default":null,"x-example":false},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"fromName":{"type":"string","description":"Sender Name.","default":"","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","default":"","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the reply to field for the mail. Default value is sender name.","default":"","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the reply to field for the mail. Default value is sender email.","default":"","x-example":"[REPLY_TO_EMAIL]"}}}}]}},"\/messaging\/providers\/msg91":{"post":{"summary":"Create Msg91 provider","operationId":"messagingCreateMsg91Provider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createMsg91Provider","weight":326,"cookies":false,"type":"","demo":"messaging\/create-msg91provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-msg91-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":"","x-example":"+12065550100"},"senderId":{"type":"string","description":"Msg91 Sender ID.","default":"","x-example":"[SENDER_ID]"},"authKey":{"type":"string","description":"Msg91 Auth Key.","default":"","x-example":"[AUTH_KEY]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name"]}}]}},"\/messaging\/providers\/msg91\/{providerId}":{"patch":{"summary":"Update Msg91 provider","operationId":"messagingUpdateMsg91Provider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateMsg91Provider","weight":339,"cookies":false,"type":"","demo":"messaging\/update-msg91provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-msg91-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"senderId":{"type":"string","description":"Msg91 Sender ID.","default":"","x-example":"[SENDER_ID]"},"authKey":{"type":"string","description":"Msg91 Auth Key.","default":"","x-example":"[AUTH_KEY]"},"from":{"type":"string","description":"Sender number.","default":"","x-example":"[FROM]"}}}}]}},"\/messaging\/providers\/sendgrid":{"post":{"summary":"Create Sendgrid provider","operationId":"messagingCreateSendgridProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createSendgridProvider","weight":324,"cookies":false,"type":"","demo":"messaging\/create-sendgrid-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-sengrid-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"apiKey":{"type":"string","description":"Sendgrid API key.","default":"","x-example":"[API_KEY]"},"fromName":{"type":"string","description":"Sender Name.","default":"","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","default":"","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the reply to field for the mail. Default value is sender name.","default":"","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the reply to field for the mail. Default value is sender email.","default":"","x-example":"email@example.com"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name"]}}]}},"\/messaging\/providers\/sendgrid\/{providerId}":{"patch":{"summary":"Update Sendgrid provider","operationId":"messagingUpdateSendgridProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateSendgridProvider","weight":337,"cookies":false,"type":"","demo":"messaging\/update-sendgrid-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-sendgrid-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"apiKey":{"type":"string","description":"Sendgrid API key.","default":"","x-example":"[API_KEY]"},"fromName":{"type":"string","description":"Sender Name.","default":"","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","default":"","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the Reply To field for the mail. Default value is Sender Name.","default":"","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the Reply To field for the mail. Default value is Sender Email.","default":"","x-example":"[REPLY_TO_EMAIL]"}}}}]}},"\/messaging\/providers\/smtp":{"post":{"summary":"Create SMTP provider","operationId":"messagingCreateSMTPProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createSMTPProvider","weight":325,"cookies":false,"type":"","demo":"messaging\/create-s-m-t-p-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-smtp-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"host":{"type":"string","description":"SMTP hosts. Either a single hostname or multiple semicolon-delimited hostnames. You can also specify a different port for each host by using this format: [hostname:port] (e.g. \"smtp1.example.com:25;smtp2.example.com\"). You can also specify encryption type, for example: (e.g. \"tls:\/\/smtp1.example.com:587;ssl:\/\/smtp2.example.com:465\"). Hosts will be tried in order.","default":null,"x-example":"[HOST]"},"port":{"type":"integer","description":"The default SMTP server port.","default":587,"x-example":1},"username":{"type":"string","description":"Authentication username.","default":"","x-example":"[USERNAME]"},"password":{"type":"string","description":"Authentication password.","default":"","x-example":"[PASSWORD]"},"encryption":{"type":"string","description":"Encryption type. Can be omitted, 'ssl', or 'tls'","default":"","x-example":"none","enum":["none","ssl","tls"],"x-enum-name":"SMTPEncryption","x-enum-keys":[]},"autoTLS":{"type":"boolean","description":"Enable SMTP AutoTLS feature.","default":true,"x-example":false},"mailer":{"type":"string","description":"The value to use for the X-Mailer header.","default":"","x-example":"[MAILER]"},"fromName":{"type":"string","description":"Sender Name.","default":"","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","default":"","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the reply to field for the mail. Default value is sender name.","default":"","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the reply to field for the mail. Default value is sender email.","default":"","x-example":"email@example.com"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name","host"]}}]}},"\/messaging\/providers\/smtp\/{providerId}":{"patch":{"summary":"Update SMTP provider","operationId":"messagingUpdateSMTPProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateSMTPProvider","weight":338,"cookies":false,"type":"","demo":"messaging\/update-s-m-t-p-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-smtp-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"host":{"type":"string","description":"SMTP hosts. Either a single hostname or multiple semicolon-delimited hostnames. You can also specify a different port for each host by using this format: [hostname:port] (e.g. \"smtp1.example.com:25;smtp2.example.com\"). You can also specify encryption type, for example: (e.g. \"tls:\/\/smtp1.example.com:587;ssl:\/\/smtp2.example.com:465\"). Hosts will be tried in order.","default":"","x-example":"[HOST]"},"port":{"type":"integer","description":"SMTP port.","default":null,"x-example":1},"username":{"type":"string","description":"Authentication username.","default":"","x-example":"[USERNAME]"},"password":{"type":"string","description":"Authentication password.","default":"","x-example":"[PASSWORD]"},"encryption":{"type":"string","description":"Encryption type. Can be 'ssl' or 'tls'","default":"","x-example":"none","enum":["none","ssl","tls"],"x-enum-name":"SMTPEncryption","x-enum-keys":[]},"autoTLS":{"type":"boolean","description":"Enable SMTP AutoTLS feature.","default":null,"x-example":false},"fromName":{"type":"string","description":"Sender Name.","default":"","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","default":"","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the Reply To field for the mail. Default value is Sender Name.","default":"","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the Reply To field for the mail. Default value is Sender Email.","default":"","x-example":"[REPLY_TO_EMAIL]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}}}}]}},"\/messaging\/providers\/telesign":{"post":{"summary":"Create Telesign provider","operationId":"messagingCreateTelesignProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createTelesignProvider","weight":327,"cookies":false,"type":"","demo":"messaging\/create-telesign-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-telesign-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":"","x-example":"+12065550100"},"username":{"type":"string","description":"Telesign username.","default":"","x-example":"[USERNAME]"},"password":{"type":"string","description":"Telesign password.","default":"","x-example":"[PASSWORD]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name"]}}]}},"\/messaging\/providers\/telesign\/{providerId}":{"patch":{"summary":"Update Telesign provider","operationId":"messagingUpdateTelesignProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateTelesignProvider","weight":340,"cookies":false,"type":"","demo":"messaging\/update-telesign-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-telesign-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"username":{"type":"string","description":"Telesign username.","default":"","x-example":"[USERNAME]"},"password":{"type":"string","description":"Telesign password.","default":"","x-example":"[PASSWORD]"},"from":{"type":"string","description":"Sender number.","default":"","x-example":"[FROM]"}}}}]}},"\/messaging\/providers\/textmagic":{"post":{"summary":"Create Textmagic provider","operationId":"messagingCreateTextmagicProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createTextmagicProvider","weight":328,"cookies":false,"type":"","demo":"messaging\/create-textmagic-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-textmagic-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":"","x-example":"+12065550100"},"username":{"type":"string","description":"Textmagic username.","default":"","x-example":"[USERNAME]"},"apiKey":{"type":"string","description":"Textmagic apiKey.","default":"","x-example":"[API_KEY]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name"]}}]}},"\/messaging\/providers\/textmagic\/{providerId}":{"patch":{"summary":"Update Textmagic provider","operationId":"messagingUpdateTextmagicProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateTextmagicProvider","weight":341,"cookies":false,"type":"","demo":"messaging\/update-textmagic-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-textmagic-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"username":{"type":"string","description":"Textmagic username.","default":"","x-example":"[USERNAME]"},"apiKey":{"type":"string","description":"Textmagic apiKey.","default":"","x-example":"[API_KEY]"},"from":{"type":"string","description":"Sender number.","default":"","x-example":"[FROM]"}}}}]}},"\/messaging\/providers\/twilio":{"post":{"summary":"Create Twilio provider","operationId":"messagingCreateTwilioProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createTwilioProvider","weight":329,"cookies":false,"type":"","demo":"messaging\/create-twilio-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-twilio-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":"","x-example":"+12065550100"},"accountSid":{"type":"string","description":"Twilio account secret ID.","default":"","x-example":"[ACCOUNT_SID]"},"authToken":{"type":"string","description":"Twilio authentication token.","default":"","x-example":"[AUTH_TOKEN]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name"]}}]}},"\/messaging\/providers\/twilio\/{providerId}":{"patch":{"summary":"Update Twilio provider","operationId":"messagingUpdateTwilioProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateTwilioProvider","weight":342,"cookies":false,"type":"","demo":"messaging\/update-twilio-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-twilio-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"accountSid":{"type":"string","description":"Twilio account secret ID.","default":"","x-example":"[ACCOUNT_SID]"},"authToken":{"type":"string","description":"Twilio authentication token.","default":"","x-example":"[AUTH_TOKEN]"},"from":{"type":"string","description":"Sender number.","default":"","x-example":"[FROM]"}}}}]}},"\/messaging\/providers\/vonage":{"post":{"summary":"Create Vonage provider","operationId":"messagingCreateVonageProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createVonageProvider","weight":330,"cookies":false,"type":"","demo":"messaging\/create-vonage-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-vonage-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":"","x-example":"+12065550100"},"apiKey":{"type":"string","description":"Vonage API key.","default":"","x-example":"[API_KEY]"},"apiSecret":{"type":"string","description":"Vonage API secret.","default":"","x-example":"[API_SECRET]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name"]}}]}},"\/messaging\/providers\/vonage\/{providerId}":{"patch":{"summary":"Update Vonage provider","operationId":"messagingUpdateVonageProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateVonageProvider","weight":343,"cookies":false,"type":"","demo":"messaging\/update-vonage-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-vonage-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"apiKey":{"type":"string","description":"Vonage API key.","default":"","x-example":"[API_KEY]"},"apiSecret":{"type":"string","description":"Vonage API secret.","default":"","x-example":"[API_SECRET]"},"from":{"type":"string","description":"Sender number.","default":"","x-example":"[FROM]"}}}}]}},"\/messaging\/providers\/{providerId}":{"get":{"summary":"Get provider","operationId":"messagingGetProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"getProvider","weight":335,"cookies":false,"type":"","demo":"messaging\/get-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/get-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"}]},"delete":{"summary":"Delete provider","operationId":"messagingDeleteProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteProvider","weight":346,"cookies":false,"type":"","demo":"messaging\/delete-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"}]}},"\/messaging\/providers\/{providerId}\/logs":{"get":{"summary":"List provider logs","operationId":"messagingListProviderLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listProviderLogs","weight":334,"cookies":false,"type":"","demo":"messaging\/list-provider-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/providers\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/messaging\/subscribers\/{subscriberId}\/logs":{"get":{"summary":"List subscriber logs","operationId":"messagingListSubscriberLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listSubscriberLogs","weight":355,"cookies":false,"type":"","demo":"messaging\/list-subscriber-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/subscribers\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"subscriberId","description":"Subscriber ID.","required":true,"type":"string","x-example":"[SUBSCRIBER_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/messaging\/topics":{"get":{"summary":"List topics.","operationId":"messagingListTopics","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Topic list","schema":{"$ref":"#\/definitions\/topicList"}}},"x-appwrite":{"method":"listTopics","weight":348,"cookies":false,"type":"","demo":"messaging\/list-topics.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-topics.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, description, total","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create a topic.","operationId":"messagingCreateTopic","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Topic","schema":{"$ref":"#\/definitions\/topic"}}},"x-appwrite":{"method":"createTopic","weight":347,"cookies":false,"type":"","demo":"messaging\/create-topic.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-topic.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"topicId":{"type":"string","description":"Topic ID. Choose a custom Topic ID or a new Topic ID.","default":null,"x-example":"[TOPIC_ID]"},"name":{"type":"string","description":"Topic Name.","default":null,"x-example":"[NAME]"}},"required":["topicId","name"]}}]}},"\/messaging\/topics\/{topicId}":{"get":{"summary":"Get a topic.","operationId":"messagingGetTopic","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Topic","schema":{"$ref":"#\/definitions\/topic"}}},"x-appwrite":{"method":"getTopic","weight":350,"cookies":false,"type":"","demo":"messaging\/get-topic.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/get-topic.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID.","required":true,"type":"string","x-example":"[TOPIC_ID]","in":"path"}]},"patch":{"summary":"Update a topic.","operationId":"messagingUpdateTopic","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Topic","schema":{"$ref":"#\/definitions\/topic"}}},"x-appwrite":{"method":"updateTopic","weight":351,"cookies":false,"type":"","demo":"messaging\/update-topic.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-topic.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID.","required":true,"type":"string","x-example":"[TOPIC_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Topic Name.","default":"","x-example":"[NAME]"}}}}]},"delete":{"summary":"Delete a topic.","operationId":"messagingDeleteTopic","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteTopic","weight":352,"cookies":false,"type":"","demo":"messaging\/delete-topic.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-topic.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID.","required":true,"type":"string","x-example":"[TOPIC_ID]","in":"path"}]}},"\/messaging\/topics\/{topicId}\/logs":{"get":{"summary":"List topic logs","operationId":"messagingListTopicLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listTopicLogs","weight":349,"cookies":false,"type":"","demo":"messaging\/list-topic-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/topics\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID.","required":true,"type":"string","x-example":"[TOPIC_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/messaging\/topics\/{topicId}\/subscribers":{"get":{"summary":"List subscribers.","operationId":"messagingListSubscribers","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Subscriber list","schema":{"$ref":"#\/definitions\/subscriberList"}}},"x-appwrite":{"method":"listSubscribers","weight":354,"cookies":false,"type":"","demo":"messaging\/list-subscribers.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-subscribers.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID subscribed to.","required":true,"type":"string","x-example":"[TOPIC_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, provider, type, enabled","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create a subscriber.","operationId":"messagingCreateSubscriber","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Subscriber","schema":{"$ref":"#\/definitions\/subscriber"}}},"x-appwrite":{"method":"createSubscriber","weight":353,"cookies":false,"type":"","demo":"messaging\/create-subscriber.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-subscriber.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.write","platforms":["server","client","console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID to subscribe to.","required":true,"type":"string","x-example":"[TOPIC_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"subscriberId":{"type":"string","description":"Subscriber ID. Choose a custom Subscriber ID or a new Subscriber ID.","default":null,"x-example":"[SUBSCRIBER_ID]"},"targetId":{"type":"string","description":"Target ID. The target ID to link to the specified Topic ID.","default":null,"x-example":"[TARGET_ID]"}},"required":["subscriberId","targetId"]}}]}},"\/messaging\/topics\/{topicId}\/subscribers\/{subscriberId}":{"get":{"summary":"Get a subscriber.","operationId":"messagingGetSubscriber","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Subscriber","schema":{"$ref":"#\/definitions\/subscriber"}}},"x-appwrite":{"method":"getSubscriber","weight":356,"cookies":false,"type":"","demo":"messaging\/get-subscriber.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/get-subscriber.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID subscribed to.","required":true,"type":"string","x-example":"[TOPIC_ID]","in":"path"},{"name":"subscriberId","description":"Subscriber ID.","required":true,"type":"string","x-example":"[SUBSCRIBER_ID]","in":"path"}]},"delete":{"summary":"Delete a subscriber.","operationId":"messagingDeleteSubscriber","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSubscriber","weight":357,"cookies":false,"type":"","demo":"messaging\/delete-subscriber.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-subscriber.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.write","platforms":["server","client","console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID subscribed to.","required":true,"type":"string","x-example":"[TOPIC_ID]","in":"path"},{"name":"subscriberId","description":"Subscriber ID.","required":true,"type":"string","x-example":"[SUBSCRIBER_ID]","in":"path"}]}},"\/migrations":{"get":{"summary":"List Migrations","operationId":"migrationsList","consumes":["application\/json"],"produces":["application\/json"],"tags":["migrations"],"description":"","responses":{"200":{"description":"Migrations List","schema":{"$ref":"#\/definitions\/migrationList"}}},"x-appwrite":{"method":"list","weight":310,"cookies":false,"type":"","demo":"migrations\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/list-migrations.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: status, stage, source, resources, statusCounters, resourceData, errors","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]}},"\/migrations\/appwrite":{"post":{"summary":"Migrate Appwrite Data","operationId":"migrationsCreateAppwriteMigration","consumes":["application\/json"],"produces":["application\/json"],"tags":["migrations"],"description":"","responses":{"202":{"description":"Migration","schema":{"$ref":"#\/definitions\/migration"}}},"x-appwrite":{"method":"createAppwriteMigration","weight":305,"cookies":false,"type":"","demo":"migrations\/create-appwrite-migration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-appwrite.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"resources":{"type":"array","description":"List of resources to migrate","default":null,"x-example":null,"items":{"type":"string"}},"endpoint":{"type":"string","description":"Source's Appwrite Endpoint","default":null,"x-example":"https:\/\/example.com"},"projectId":{"type":"string","description":"Source's Project ID","default":null,"x-example":"[PROJECT_ID]"},"apiKey":{"type":"string","description":"Source's API Key","default":null,"x-example":"[API_KEY]"}},"required":["resources","endpoint","projectId","apiKey"]}}]}},"\/migrations\/appwrite\/report":{"get":{"summary":"Generate a report on Appwrite Data","operationId":"migrationsGetAppwriteReport","consumes":["application\/json"],"produces":["application\/json"],"tags":["migrations"],"description":"","responses":{"200":{"description":"Migration Report","schema":{"$ref":"#\/definitions\/migrationReport"}}},"x-appwrite":{"method":"getAppwriteReport","weight":312,"cookies":false,"type":"","demo":"migrations\/get-appwrite-report.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-appwrite-report.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"resources","description":"List of resources to migrate","required":true,"type":"array","collectionFormat":"multi","items":{"type":"string"},"in":"query"},{"name":"endpoint","description":"Source's Appwrite Endpoint","required":true,"type":"string","format":"url","x-example":"https:\/\/example.com","in":"query"},{"name":"projectID","description":"Source's Project ID","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"query"},{"name":"key","description":"Source's API Key","required":true,"type":"string","x-example":"[KEY]","in":"query"}]}},"\/migrations\/firebase":{"post":{"summary":"Migrate Firebase Data (Service Account)","operationId":"migrationsCreateFirebaseMigration","consumes":["application\/json"],"produces":["application\/json"],"tags":["migrations"],"description":"","responses":{"202":{"description":"Migration","schema":{"$ref":"#\/definitions\/migration"}}},"x-appwrite":{"method":"createFirebaseMigration","weight":307,"cookies":false,"type":"","demo":"migrations\/create-firebase-migration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-firebase.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"resources":{"type":"array","description":"List of resources to migrate","default":null,"x-example":null,"items":{"type":"string"}},"serviceAccount":{"type":"string","description":"JSON of the Firebase service account credentials","default":null,"x-example":"[SERVICE_ACCOUNT]"}},"required":["resources","serviceAccount"]}}]}},"\/migrations\/firebase\/deauthorize":{"get":{"summary":"Revoke Appwrite's authorization to access Firebase Projects","operationId":"migrationsDeleteFirebaseAuth","consumes":["application\/json"],"produces":["application\/json"],"tags":["migrations"],"description":"","responses":{"200":{"description":"File","schema":{"type":"file"}}},"x-appwrite":{"method":"deleteFirebaseAuth","weight":318,"cookies":false,"type":"","demo":"migrations\/delete-firebase-auth.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/migrations\/firebase\/oauth":{"post":{"summary":"Migrate Firebase Data (OAuth)","operationId":"migrationsCreateFirebaseOAuthMigration","consumes":["application\/json"],"produces":["application\/json"],"tags":["migrations"],"description":"","responses":{"202":{"description":"Migration","schema":{"$ref":"#\/definitions\/migration"}}},"x-appwrite":{"method":"createFirebaseOAuthMigration","weight":306,"cookies":false,"type":"","demo":"migrations\/create-firebase-o-auth-migration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-firebase.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"resources":{"type":"array","description":"List of resources to migrate","default":null,"x-example":null,"items":{"type":"string"}},"projectId":{"type":"string","description":"Project ID of the Firebase Project","default":null,"x-example":"[PROJECT_ID]"}},"required":["resources","projectId"]}}]}},"\/migrations\/firebase\/projects":{"get":{"summary":"List Firebase Projects","operationId":"migrationsListFirebaseProjects","consumes":["application\/json"],"produces":["application\/json"],"tags":["migrations"],"description":"","responses":{"200":{"description":"Migrations Firebase Projects List","schema":{"$ref":"#\/definitions\/firebaseProjectList"}}},"x-appwrite":{"method":"listFirebaseProjects","weight":317,"cookies":false,"type":"","demo":"migrations\/list-firebase-projects.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/migrations\/firebase\/report":{"get":{"summary":"Generate a report on Firebase Data","operationId":"migrationsGetFirebaseReport","consumes":["application\/json"],"produces":["application\/json"],"tags":["migrations"],"description":"","responses":{"200":{"description":"Migration Report","schema":{"$ref":"#\/definitions\/migrationReport"}}},"x-appwrite":{"method":"getFirebaseReport","weight":313,"cookies":false,"type":"","demo":"migrations\/get-firebase-report.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-firebase-report.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"resources","description":"List of resources to migrate","required":true,"type":"array","collectionFormat":"multi","items":{"type":"string"},"in":"query"},{"name":"serviceAccount","description":"JSON of the Firebase service account credentials","required":true,"type":"string","x-example":"[SERVICE_ACCOUNT]","in":"query"}]}},"\/migrations\/firebase\/report\/oauth":{"get":{"summary":"Generate a report on Firebase Data using OAuth","operationId":"migrationsGetFirebaseReportOAuth","consumes":["application\/json"],"produces":["application\/json"],"tags":["migrations"],"description":"","responses":{"200":{"description":"Migration Report","schema":{"$ref":"#\/definitions\/migrationReport"}}},"x-appwrite":{"method":"getFirebaseReportOAuth","weight":314,"cookies":false,"type":"","demo":"migrations\/get-firebase-report-o-auth.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-firebase-report.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"resources","description":"List of resources to migrate","required":true,"type":"array","collectionFormat":"multi","items":{"type":"string"},"in":"query"},{"name":"projectId","description":"Project ID","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"query"}]}},"\/migrations\/nhost":{"post":{"summary":"Migrate NHost Data","operationId":"migrationsCreateNHostMigration","consumes":["application\/json"],"produces":["application\/json"],"tags":["migrations"],"description":"","responses":{"202":{"description":"Migration","schema":{"$ref":"#\/definitions\/migration"}}},"x-appwrite":{"method":"createNHostMigration","weight":309,"cookies":false,"type":"","demo":"migrations\/create-n-host-migration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-nhost.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"resources":{"type":"array","description":"List of resources to migrate","default":null,"x-example":null,"items":{"type":"string"}},"subdomain":{"type":"string","description":"Source's Subdomain","default":null,"x-example":"[SUBDOMAIN]"},"region":{"type":"string","description":"Source's Region","default":null,"x-example":"[REGION]"},"adminSecret":{"type":"string","description":"Source's Admin Secret","default":null,"x-example":"[ADMIN_SECRET]"},"database":{"type":"string","description":"Source's Database Name","default":null,"x-example":"[DATABASE]"},"username":{"type":"string","description":"Source's Database Username","default":null,"x-example":"[USERNAME]"},"password":{"type":"string","description":"Source's Database Password","default":null,"x-example":"[PASSWORD]"},"port":{"type":"integer","description":"Source's Database Port","default":5432,"x-example":null}},"required":["resources","subdomain","region","adminSecret","database","username","password"]}}]}},"\/migrations\/nhost\/report":{"get":{"summary":"Generate a report on NHost Data","operationId":"migrationsGetNHostReport","consumes":["application\/json"],"produces":["application\/json"],"tags":["migrations"],"description":"","responses":{"200":{"description":"Migration Report","schema":{"$ref":"#\/definitions\/migrationReport"}}},"x-appwrite":{"method":"getNHostReport","weight":320,"cookies":false,"type":"","demo":"migrations\/get-n-host-report.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-nhost-report.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"resources","description":"List of resources to migrate.","required":true,"type":"array","collectionFormat":"multi","items":{"type":"string"},"in":"query"},{"name":"subdomain","description":"Source's Subdomain.","required":true,"type":"string","x-example":"[SUBDOMAIN]","in":"query"},{"name":"region","description":"Source's Region.","required":true,"type":"string","x-example":"[REGION]","in":"query"},{"name":"adminSecret","description":"Source's Admin Secret.","required":true,"type":"string","x-example":"[ADMIN_SECRET]","in":"query"},{"name":"database","description":"Source's Database Name.","required":true,"type":"string","x-example":"[DATABASE]","in":"query"},{"name":"username","description":"Source's Database Username.","required":true,"type":"string","x-example":"[USERNAME]","in":"query"},{"name":"password","description":"Source's Database Password.","required":true,"type":"string","x-example":"[PASSWORD]","in":"query"},{"name":"port","description":"Source's Database Port.","required":false,"type":"integer","format":"int32","default":5432,"in":"query"}]}},"\/migrations\/supabase":{"post":{"summary":"Migrate Supabase Data","operationId":"migrationsCreateSupabaseMigration","consumes":["application\/json"],"produces":["application\/json"],"tags":["migrations"],"description":"","responses":{"202":{"description":"Migration","schema":{"$ref":"#\/definitions\/migration"}}},"x-appwrite":{"method":"createSupabaseMigration","weight":308,"cookies":false,"type":"","demo":"migrations\/create-supabase-migration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-supabase.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"resources":{"type":"array","description":"List of resources to migrate","default":null,"x-example":null,"items":{"type":"string"}},"endpoint":{"type":"string","description":"Source's Supabase Endpoint","default":null,"x-example":"https:\/\/example.com"},"apiKey":{"type":"string","description":"Source's API Key","default":null,"x-example":"[API_KEY]"},"databaseHost":{"type":"string","description":"Source's Database Host","default":null,"x-example":"[DATABASE_HOST]"},"username":{"type":"string","description":"Source's Database Username","default":null,"x-example":"[USERNAME]"},"password":{"type":"string","description":"Source's Database Password","default":null,"x-example":"[PASSWORD]"},"port":{"type":"integer","description":"Source's Database Port","default":5432,"x-example":null}},"required":["resources","endpoint","apiKey","databaseHost","username","password"]}}]}},"\/migrations\/supabase\/report":{"get":{"summary":"Generate a report on Supabase Data","operationId":"migrationsGetSupabaseReport","consumes":["application\/json"],"produces":["application\/json"],"tags":["migrations"],"description":"","responses":{"200":{"description":"Migration Report","schema":{"$ref":"#\/definitions\/migrationReport"}}},"x-appwrite":{"method":"getSupabaseReport","weight":319,"cookies":false,"type":"","demo":"migrations\/get-supabase-report.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-supabase-report.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"resources","description":"List of resources to migrate","required":true,"type":"array","collectionFormat":"multi","items":{"type":"string"},"in":"query"},{"name":"endpoint","description":"Source's Supabase Endpoint.","required":true,"type":"string","format":"url","x-example":"https:\/\/example.com","in":"query"},{"name":"apiKey","description":"Source's API Key.","required":true,"type":"string","x-example":"[API_KEY]","in":"query"},{"name":"databaseHost","description":"Source's Database Host.","required":true,"type":"string","x-example":"[DATABASE_HOST]","in":"query"},{"name":"username","description":"Source's Database Username.","required":true,"type":"string","x-example":"[USERNAME]","in":"query"},{"name":"password","description":"Source's Database Password.","required":true,"type":"string","x-example":"[PASSWORD]","in":"query"},{"name":"port","description":"Source's Database Port.","required":false,"type":"integer","format":"int32","default":5432,"in":"query"}]}},"\/migrations\/{migrationId}":{"get":{"summary":"Get Migration","operationId":"migrationsGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["migrations"],"description":"","responses":{"200":{"description":"Migration","schema":{"$ref":"#\/definitions\/migration"}}},"x-appwrite":{"method":"get","weight":311,"cookies":false,"type":"","demo":"migrations\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/get-migration.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"migrationId","description":"Migration unique ID.","required":true,"type":"string","x-example":"[MIGRATION_ID]","in":"path"}]},"patch":{"summary":"Retry Migration","operationId":"migrationsRetry","consumes":["application\/json"],"produces":["application\/json"],"tags":["migrations"],"description":"","responses":{"202":{"description":"Migration","schema":{"$ref":"#\/definitions\/migration"}}},"x-appwrite":{"method":"retry","weight":321,"cookies":false,"type":"","demo":"migrations\/retry.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/retry-migration.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"migrationId","description":"Migration unique ID.","required":true,"type":"string","x-example":"[MIGRATION_ID]","in":"path"}]},"delete":{"summary":"Delete Migration","operationId":"migrationsDelete","consumes":["application\/json"],"produces":[],"tags":["migrations"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":322,"cookies":false,"type":"","demo":"migrations\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-migration.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"migrationId","description":"Migration ID.","required":true,"type":"string","x-example":"[MIGRATION_ID]","in":"path"}]}},"\/project\/usage":{"get":{"summary":"Get usage stats for a project","operationId":"projectGetUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["project"],"description":"","responses":{"200":{"description":"UsageProject","schema":{"$ref":"#\/definitions\/usageProject"}}},"x-appwrite":{"method":"getUsage","weight":179,"cookies":false,"type":"","demo":"project\/get-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"startDate","description":"Starting date for the usage","required":true,"type":"string","in":"query"},{"name":"endDate","description":"End date for the usage","required":true,"type":"string","in":"query"},{"name":"period","description":"Period used","required":false,"type":"string","x-example":"1h","enum":["1h","1d"],"x-enum-name":"ProjectUsageRange","x-enum-keys":["One Hour","One Day"],"default":"1d","in":"query"}]}},"\/project\/variables":{"get":{"summary":"List Variables","operationId":"projectListVariables","consumes":["application\/json"],"produces":["application\/json"],"tags":["project"],"description":"Get a list of all project variables. These variables will be accessible in all Appwrite Functions at runtime.","responses":{"200":{"description":"Variables List","schema":{"$ref":"#\/definitions\/variableList"}}},"x-appwrite":{"method":"listVariables","weight":181,"cookies":false,"type":"","demo":"project\/list-variables.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/project\/list-variables.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]},"post":{"summary":"Create Variable","operationId":"projectCreateVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["project"],"description":"Create a new project variable. This variable will be accessible in all Appwrite Functions at runtime.","responses":{"201":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"createVariable","weight":180,"cookies":false,"type":"","demo":"project\/create-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/project\/create-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","default":null,"x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","default":null,"x-example":"[VALUE]"}},"required":["key","value"]}}]}},"\/project\/variables\/{variableId}":{"get":{"summary":"Get Variable","operationId":"projectGetVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["project"],"description":"Get a project variable by its unique ID.","responses":{"200":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"getVariable","weight":182,"cookies":false,"type":"","demo":"project\/get-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/project\/get-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"}]},"put":{"summary":"Update Variable","operationId":"projectUpdateVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["project"],"description":"Update project variable by its unique ID. This variable will be accessible in all Appwrite Functions at runtime.","responses":{"200":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"updateVariable","weight":183,"cookies":false,"type":"","demo":"project\/update-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/project\/update-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","default":null,"x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","default":null,"x-example":"[VALUE]"}},"required":["key"]}}]},"delete":{"summary":"Delete Variable","operationId":"projectDeleteVariable","consumes":["application\/json"],"produces":[],"tags":["project"],"description":"Delete a project variable by its unique ID. ","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteVariable","weight":184,"cookies":false,"type":"","demo":"project\/delete-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/project\/delete-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"}]}},"\/projects":{"get":{"summary":"List projects","operationId":"projectsList","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Projects List","schema":{"$ref":"#\/definitions\/projectList"}}},"x-appwrite":{"method":"list","weight":140,"cookies":false,"type":"","demo":"projects\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, teamId","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create project","operationId":"projectsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"201":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"create","weight":139,"cookies":false,"type":"","demo":"projects\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"projectId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, and hyphen. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":null},"name":{"type":"string","description":"Project name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"teamId":{"type":"string","description":"Team unique ID.","default":null,"x-example":"[TEAM_ID]"},"region":{"type":"string","description":"Project Region.","default":"default","x-example":"default","enum":["default"],"x-enum-name":null,"x-enum-keys":[]},"description":{"type":"string","description":"Project description. Max length: 256 chars.","default":"","x-example":"[DESCRIPTION]"},"logo":{"type":"string","description":"Project logo.","default":"","x-example":"[LOGO]"},"url":{"type":"string","description":"Project URL.","default":"","x-example":"https:\/\/example.com"},"legalName":{"type":"string","description":"Project legal Name. Max length: 256 chars.","default":"","x-example":"[LEGAL_NAME]"},"legalCountry":{"type":"string","description":"Project legal Country. Max length: 256 chars.","default":"","x-example":"[LEGAL_COUNTRY]"},"legalState":{"type":"string","description":"Project legal State. Max length: 256 chars.","default":"","x-example":"[LEGAL_STATE]"},"legalCity":{"type":"string","description":"Project legal City. Max length: 256 chars.","default":"","x-example":"[LEGAL_CITY]"},"legalAddress":{"type":"string","description":"Project legal Address. Max length: 256 chars.","default":"","x-example":"[LEGAL_ADDRESS]"},"legalTaxId":{"type":"string","description":"Project legal Tax ID. Max length: 256 chars.","default":"","x-example":"[LEGAL_TAX_ID]"}},"required":["projectId","name","teamId"]}}]}},"\/projects\/{projectId}":{"get":{"summary":"Get project","operationId":"projectsGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"get","weight":141,"cookies":false,"type":"","demo":"projects\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"}]},"patch":{"summary":"Update project","operationId":"projectsUpdate","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"update","weight":142,"cookies":false,"type":"","demo":"projects\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Project name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"description":{"type":"string","description":"Project description. Max length: 256 chars.","default":"","x-example":"[DESCRIPTION]"},"logo":{"type":"string","description":"Project logo.","default":"","x-example":"[LOGO]"},"url":{"type":"string","description":"Project URL.","default":"","x-example":"https:\/\/example.com"},"legalName":{"type":"string","description":"Project legal name. Max length: 256 chars.","default":"","x-example":"[LEGAL_NAME]"},"legalCountry":{"type":"string","description":"Project legal country. Max length: 256 chars.","default":"","x-example":"[LEGAL_COUNTRY]"},"legalState":{"type":"string","description":"Project legal state. Max length: 256 chars.","default":"","x-example":"[LEGAL_STATE]"},"legalCity":{"type":"string","description":"Project legal city. Max length: 256 chars.","default":"","x-example":"[LEGAL_CITY]"},"legalAddress":{"type":"string","description":"Project legal address. Max length: 256 chars.","default":"","x-example":"[LEGAL_ADDRESS]"},"legalTaxId":{"type":"string","description":"Project legal tax ID. Max length: 256 chars.","default":"","x-example":"[LEGAL_TAX_ID]"}},"required":["name"]}}]},"delete":{"summary":"Delete project","operationId":"projectsDelete","consumes":["application\/json"],"produces":[],"tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":154,"cookies":false,"type":"","demo":"projects\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"}]}},"\/projects\/{projectId}\/auth\/duration":{"patch":{"summary":"Update project authentication duration","operationId":"projectsUpdateAuthDuration","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateAuthDuration","weight":148,"cookies":false,"type":"","demo":"projects\/update-auth-duration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"duration":{"type":"integer","description":"Project session length in seconds. Max length: 31536000 seconds.","default":null,"x-example":0}},"required":["duration"]}}]}},"\/projects\/{projectId}\/auth\/limit":{"patch":{"summary":"Update project users limit","operationId":"projectsUpdateAuthLimit","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateAuthLimit","weight":147,"cookies":false,"type":"","demo":"projects\/update-auth-limit.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"limit":{"type":"integer","description":"Set the max number of users allowed in this project. Use 0 for unlimited.","default":null,"x-example":0}},"required":["limit"]}}]}},"\/projects\/{projectId}\/auth\/max-sessions":{"patch":{"summary":"Update project user sessions limit","operationId":"projectsUpdateAuthSessionsLimit","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateAuthSessionsLimit","weight":153,"cookies":false,"type":"","demo":"projects\/update-auth-sessions-limit.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"limit":{"type":"integer","description":"Set the max number of users allowed in this project. Value allowed is between 1-100. Default is 10","default":null,"x-example":1}},"required":["limit"]}}]}},"\/projects\/{projectId}\/auth\/password-dictionary":{"patch":{"summary":"Update authentication password dictionary status. Use this endpoint to enable or disable the dicitonary check for user password","operationId":"projectsUpdateAuthPasswordDictionary","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateAuthPasswordDictionary","weight":151,"cookies":false,"type":"","demo":"projects\/update-auth-password-dictionary.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Set whether or not to enable checking user's password against most commonly used passwords. Default is false.","default":null,"x-example":false}},"required":["enabled"]}}]}},"\/projects\/{projectId}\/auth\/password-history":{"patch":{"summary":"Update authentication password history. Use this endpoint to set the number of password history to save and 0 to disable password history.","operationId":"projectsUpdateAuthPasswordHistory","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateAuthPasswordHistory","weight":150,"cookies":false,"type":"","demo":"projects\/update-auth-password-history.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"limit":{"type":"integer","description":"Set the max number of passwords to store in user history. User can't choose a new password that is already stored in the password history list. Max number of passwords allowed in history is20. Default value is 0","default":null,"x-example":0}},"required":["limit"]}}]}},"\/projects\/{projectId}\/auth\/personal-data":{"patch":{"summary":"Enable or disable checking user passwords for similarity with their personal data.","operationId":"projectsUpdatePersonalDataCheck","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updatePersonalDataCheck","weight":152,"cookies":false,"type":"","demo":"projects\/update-personal-data-check.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Set whether or not to check a password for similarity with personal data. Default is false.","default":null,"x-example":false}},"required":["enabled"]}}]}},"\/projects\/{projectId}\/auth\/{method}":{"patch":{"summary":"Update project auth method status. Use this endpoint to enable or disable a given auth method for this project.","operationId":"projectsUpdateAuthStatus","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateAuthStatus","weight":149,"cookies":false,"type":"","demo":"projects\/update-auth-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"method","description":"Auth Method. Possible values: email-password,magic-url,email-otp,anonymous,invites,jwt,phone","required":true,"type":"string","x-example":"email-password","enum":["email-password","magic-url","email-otp","anonymous","invites","jwt","phone"],"x-enum-name":"AuthMethod","x-enum-keys":[],"in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"status":{"type":"boolean","description":"Set the status of this auth method.","default":null,"x-example":false}},"required":["status"]}}]}},"\/projects\/{projectId}\/keys":{"get":{"summary":"List keys","operationId":"projectsListKeys","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"API Keys List","schema":{"$ref":"#\/definitions\/keyList"}}},"x-appwrite":{"method":"listKeys","weight":162,"cookies":false,"type":"","demo":"projects\/list-keys.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"}]},"post":{"summary":"Create key","operationId":"projectsCreateKey","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"201":{"description":"Key","schema":{"$ref":"#\/definitions\/key"}}},"x-appwrite":{"method":"createKey","weight":161,"cookies":false,"type":"","demo":"projects\/create-key.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Key name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"scopes":{"type":"array","description":"Key scopes list. Maximum of 100 scopes are allowed.","default":null,"x-example":null,"items":{"type":"string"}},"expire":{"type":"string","description":"Expiration time in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. Use null for unlimited expiration.","default":null,"x-example":null}},"required":["name","scopes"]}}]}},"\/projects\/{projectId}\/keys\/{keyId}":{"get":{"summary":"Get key","operationId":"projectsGetKey","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Key","schema":{"$ref":"#\/definitions\/key"}}},"x-appwrite":{"method":"getKey","weight":163,"cookies":false,"type":"","demo":"projects\/get-key.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"keyId","description":"Key unique ID.","required":true,"type":"string","x-example":"[KEY_ID]","in":"path"}]},"put":{"summary":"Update key","operationId":"projectsUpdateKey","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Key","schema":{"$ref":"#\/definitions\/key"}}},"x-appwrite":{"method":"updateKey","weight":164,"cookies":false,"type":"","demo":"projects\/update-key.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"keyId","description":"Key unique ID.","required":true,"type":"string","x-example":"[KEY_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Key name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"scopes":{"type":"array","description":"Key scopes list. Maximum of 100 events are allowed.","default":null,"x-example":null,"items":{"type":"string"}},"expire":{"type":"string","description":"Expiration time in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. Use null for unlimited expiration.","default":null,"x-example":null}},"required":["name","scopes"]}}]},"delete":{"summary":"Delete key","operationId":"projectsDeleteKey","consumes":["application\/json"],"produces":[],"tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteKey","weight":165,"cookies":false,"type":"","demo":"projects\/delete-key.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"keyId","description":"Key unique ID.","required":true,"type":"string","x-example":"[KEY_ID]","in":"path"}]}},"\/projects\/{projectId}\/oauth2":{"patch":{"summary":"Update project OAuth2","operationId":"projectsUpdateOAuth2","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateOAuth2","weight":146,"cookies":false,"type":"","demo":"projects\/update-o-auth2.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"provider":{"type":"string","description":"Provider Name","default":null,"x-example":"amazon","enum":["amazon","apple","auth0","authentik","autodesk","bitbucket","bitly","box","dailymotion","discord","disqus","dropbox","etsy","facebook","github","gitlab","google","linkedin","microsoft","notion","oidc","okta","paypal","paypalSandbox","podio","salesforce","slack","spotify","stripe","tradeshift","tradeshiftBox","twitch","wordpress","yahoo","yammer","yandex","zoho","zoom","mock"],"x-enum-name":"OAuthProvider","x-enum-keys":[]},"appId":{"type":"string","description":"Provider app ID. Max length: 256 chars.","default":null,"x-example":"[APP_ID]"},"secret":{"type":"string","description":"Provider secret key. Max length: 512 chars.","default":null,"x-example":"[SECRET]"},"enabled":{"type":"boolean","description":"Provider status. Set to 'false' to disable new session creation.","default":null,"x-example":false}},"required":["provider"]}}]}},"\/projects\/{projectId}\/platforms":{"get":{"summary":"List platforms","operationId":"projectsListPlatforms","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Platforms List","schema":{"$ref":"#\/definitions\/platformList"}}},"x-appwrite":{"method":"listPlatforms","weight":167,"cookies":false,"type":"","demo":"projects\/list-platforms.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"}]},"post":{"summary":"Create platform","operationId":"projectsCreatePlatform","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"201":{"description":"Platform","schema":{"$ref":"#\/definitions\/platform"}}},"x-appwrite":{"method":"createPlatform","weight":166,"cookies":false,"type":"","demo":"projects\/create-platform.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"type":{"type":"string","description":"Platform type.","default":null,"x-example":"web","enum":["web","flutter-web","flutter-ios","flutter-android","flutter-linux","flutter-macos","flutter-windows","apple-ios","apple-macos","apple-watchos","apple-tvos","android","unity"],"x-enum-name":"PlatformType","x-enum-keys":[]},"name":{"type":"string","description":"Platform name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"key":{"type":"string","description":"Package name for Android or bundle ID for iOS or macOS. Max length: 256 chars.","default":"","x-example":"[KEY]"},"store":{"type":"string","description":"App store or Google Play store ID. Max length: 256 chars.","default":"","x-example":"[STORE]"},"hostname":{"type":"string","description":"Platform client hostname. Max length: 256 chars.","default":"","x-example":null}},"required":["type","name"]}}]}},"\/projects\/{projectId}\/platforms\/{platformId}":{"get":{"summary":"Get platform","operationId":"projectsGetPlatform","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Platform","schema":{"$ref":"#\/definitions\/platform"}}},"x-appwrite":{"method":"getPlatform","weight":168,"cookies":false,"type":"","demo":"projects\/get-platform.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"platformId","description":"Platform unique ID.","required":true,"type":"string","x-example":"[PLATFORM_ID]","in":"path"}]},"put":{"summary":"Update platform","operationId":"projectsUpdatePlatform","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Platform","schema":{"$ref":"#\/definitions\/platform"}}},"x-appwrite":{"method":"updatePlatform","weight":169,"cookies":false,"type":"","demo":"projects\/update-platform.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"platformId","description":"Platform unique ID.","required":true,"type":"string","x-example":"[PLATFORM_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Platform name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"key":{"type":"string","description":"Package name for android or bundle ID for iOS. Max length: 256 chars.","default":"","x-example":"[KEY]"},"store":{"type":"string","description":"App store or Google Play store ID. Max length: 256 chars.","default":"","x-example":"[STORE]"},"hostname":{"type":"string","description":"Platform client URL. Max length: 256 chars.","default":"","x-example":null}},"required":["name"]}}]},"delete":{"summary":"Delete platform","operationId":"projectsDeletePlatform","consumes":["application\/json"],"produces":[],"tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deletePlatform","weight":170,"cookies":false,"type":"","demo":"projects\/delete-platform.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"platformId","description":"Platform unique ID.","required":true,"type":"string","x-example":"[PLATFORM_ID]","in":"path"}]}},"\/projects\/{projectId}\/service":{"patch":{"summary":"Update service status","operationId":"projectsUpdateServiceStatus","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateServiceStatus","weight":144,"cookies":false,"type":"","demo":"projects\/update-service-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"service":{"type":"string","description":"Service name.","default":null,"x-example":"account","enum":["account","avatars","databases","locale","health","storage","teams","users","functions","graphql","messaging"],"x-enum-name":"APIService","x-enum-keys":[]},"status":{"type":"boolean","description":"Service status.","default":null,"x-example":false}},"required":["service","status"]}}]}},"\/projects\/{projectId}\/service\/all":{"patch":{"summary":"Update all service status","operationId":"projectsUpdateServiceStatusAll","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateServiceStatusAll","weight":145,"cookies":false,"type":"","demo":"projects\/update-service-status-all.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"status":{"type":"boolean","description":"Service status.","default":null,"x-example":false}},"required":["status"]}}]}},"\/projects\/{projectId}\/smtp":{"patch":{"summary":"Update SMTP","operationId":"projectsUpdateSmtp","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateSmtp","weight":171,"cookies":false,"type":"","demo":"projects\/update-smtp.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enable custom SMTP service","default":null,"x-example":false},"senderName":{"type":"string","description":"Name of the email sender","default":"","x-example":"[SENDER_NAME]"},"senderEmail":{"type":"string","description":"Email of the sender","default":"","x-example":"email@example.com"},"replyTo":{"type":"string","description":"Reply to email","default":"","x-example":"email@example.com"},"host":{"type":"string","description":"SMTP server host name","default":"","x-example":null},"port":{"type":"integer","description":"SMTP server port","default":587,"x-example":null},"username":{"type":"string","description":"SMTP server username","default":"","x-example":"[USERNAME]"},"password":{"type":"string","description":"SMTP server password","default":"","x-example":"[PASSWORD]"},"secure":{"type":"string","description":"Does SMTP server use secure connection","default":"","x-example":"tls","enum":["tls"],"x-enum-name":"SMTPSecure","x-enum-keys":[]}},"required":["enabled"]}}]}},"\/projects\/{projectId}\/smtp\/tests":{"post":{"summary":"Create SMTP test","operationId":"projectsCreateSmtpTest","consumes":["application\/json"],"produces":[],"tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"createSmtpTest","weight":172,"cookies":false,"type":"","demo":"projects\/create-smtp-test.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"emails":{"type":"array","description":"Array of emails to send test email to. Maximum of 10 emails are allowed.","default":null,"x-example":null,"items":{"type":"string"}},"senderName":{"type":"string","description":"Name of the email sender","default":null,"x-example":"[SENDER_NAME]"},"senderEmail":{"type":"string","description":"Email of the sender","default":null,"x-example":"email@example.com"},"replyTo":{"type":"string","description":"Reply to email","default":"","x-example":"email@example.com"},"host":{"type":"string","description":"SMTP server host name","default":null,"x-example":null},"port":{"type":"integer","description":"SMTP server port","default":587,"x-example":null},"username":{"type":"string","description":"SMTP server username","default":"","x-example":"[USERNAME]"},"password":{"type":"string","description":"SMTP server password","default":"","x-example":"[PASSWORD]"},"secure":{"type":"string","description":"Does SMTP server use secure connection","default":"","x-example":"tls","enum":["tls"],"x-enum-name":"SMTPSecure","x-enum-keys":[]}},"required":["emails","senderName","senderEmail","host"]}}]}},"\/projects\/{projectId}\/team":{"patch":{"summary":"Update Project Team","operationId":"projectsUpdateTeam","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateTeam","weight":143,"cookies":false,"type":"","demo":"projects\/update-team.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"teamId":{"type":"string","description":"Team ID of the team to transfer project to.","default":null,"x-example":"[TEAM_ID]"}},"required":["teamId"]}}]}},"\/projects\/{projectId}\/templates\/email\/{type}\/{locale}":{"get":{"summary":"Get custom email template","operationId":"projectsGetEmailTemplate","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"EmailTemplate","schema":{"$ref":"#\/definitions\/emailTemplate"}}},"x-appwrite":{"method":"getEmailTemplate","weight":174,"cookies":false,"type":"","demo":"projects\/get-email-template.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"type","description":"Template type","required":true,"type":"string","x-example":"verification","enum":["verification","magicsession","recovery","invitation"],"x-enum-name":"EmailTemplateType","x-enum-keys":[],"in":"path"},{"name":"locale","description":"Template locale","required":true,"type":"string","x-example":"af","enum":["af","ar-ae","ar-bh","ar-dz","ar-eg","ar-iq","ar-jo","ar-kw","ar-lb","ar-ly","ar-ma","ar-om","ar-qa","ar-sa","ar-sy","ar-tn","ar-ye","as","az","be","bg","bh","bn","bs","ca","cs","cy","da","de","de-at","de-ch","de-li","de-lu","el","en","en-au","en-bz","en-ca","en-gb","en-ie","en-jm","en-nz","en-tt","en-us","en-za","eo","es","es-ar","es-bo","es-cl","es-co","es-cr","es-do","es-ec","es-gt","es-hn","es-mx","es-ni","es-pa","es-pe","es-pr","es-py","es-sv","es-uy","es-ve","et","eu","fa","fi","fo","fr","fr-be","fr-ca","fr-ch","fr-lu","ga","gd","he","hi","hr","hu","id","is","it","it-ch","ja","ji","ko","ku","lt","lv","mk","ml","ms","mt","nb","ne","nl","nl-be","nn","no","pa","pl","pt","pt-br","rm","ro","ro-md","ru","ru-md","sb","sk","sl","sq","sr","sv","sv-fi","th","tn","tr","ts","ua","ur","ve","vi","xh","zh-cn","zh-hk","zh-sg","zh-tw","zu"],"x-enum-name":"EmailTemplateLocale","x-enum-keys":[],"in":"path"}]},"patch":{"summary":"Update custom email templates","operationId":"projectsUpdateEmailTemplate","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateEmailTemplate","weight":176,"cookies":false,"type":"","demo":"projects\/update-email-template.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"type","description":"Template type","required":true,"type":"string","x-example":"verification","enum":["verification","magicsession","recovery","invitation"],"x-enum-name":"EmailTemplateType","x-enum-keys":[],"in":"path"},{"name":"locale","description":"Template locale","required":true,"type":"string","x-example":"af","enum":["af","ar-ae","ar-bh","ar-dz","ar-eg","ar-iq","ar-jo","ar-kw","ar-lb","ar-ly","ar-ma","ar-om","ar-qa","ar-sa","ar-sy","ar-tn","ar-ye","as","az","be","bg","bh","bn","bs","ca","cs","cy","da","de","de-at","de-ch","de-li","de-lu","el","en","en-au","en-bz","en-ca","en-gb","en-ie","en-jm","en-nz","en-tt","en-us","en-za","eo","es","es-ar","es-bo","es-cl","es-co","es-cr","es-do","es-ec","es-gt","es-hn","es-mx","es-ni","es-pa","es-pe","es-pr","es-py","es-sv","es-uy","es-ve","et","eu","fa","fi","fo","fr","fr-be","fr-ca","fr-ch","fr-lu","ga","gd","he","hi","hr","hu","id","is","it","it-ch","ja","ji","ko","ku","lt","lv","mk","ml","ms","mt","nb","ne","nl","nl-be","nn","no","pa","pl","pt","pt-br","rm","ro","ro-md","ru","ru-md","sb","sk","sl","sq","sr","sv","sv-fi","th","tn","tr","ts","ua","ur","ve","vi","xh","zh-cn","zh-hk","zh-sg","zh-tw","zu"],"x-enum-name":"EmailTemplateLocale","x-enum-keys":[],"in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"subject":{"type":"string","description":"Email Subject","default":null,"x-example":"[SUBJECT]"},"message":{"type":"string","description":"Template message","default":null,"x-example":"[MESSAGE]"},"senderName":{"type":"string","description":"Name of the email sender","default":"","x-example":"[SENDER_NAME]"},"senderEmail":{"type":"string","description":"Email of the sender","default":"","x-example":"email@example.com"},"replyTo":{"type":"string","description":"Reply to email","default":"","x-example":"email@example.com"}},"required":["subject","message"]}}]},"delete":{"summary":"Reset custom email template","operationId":"projectsDeleteEmailTemplate","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"EmailTemplate","schema":{"$ref":"#\/definitions\/emailTemplate"}}},"x-appwrite":{"method":"deleteEmailTemplate","weight":178,"cookies":false,"type":"","demo":"projects\/delete-email-template.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"type","description":"Template type","required":true,"type":"string","x-example":"verification","enum":["verification","magicsession","recovery","invitation"],"x-enum-name":"EmailTemplateType","x-enum-keys":[],"in":"path"},{"name":"locale","description":"Template locale","required":true,"type":"string","x-example":"af","enum":["af","ar-ae","ar-bh","ar-dz","ar-eg","ar-iq","ar-jo","ar-kw","ar-lb","ar-ly","ar-ma","ar-om","ar-qa","ar-sa","ar-sy","ar-tn","ar-ye","as","az","be","bg","bh","bn","bs","ca","cs","cy","da","de","de-at","de-ch","de-li","de-lu","el","en","en-au","en-bz","en-ca","en-gb","en-ie","en-jm","en-nz","en-tt","en-us","en-za","eo","es","es-ar","es-bo","es-cl","es-co","es-cr","es-do","es-ec","es-gt","es-hn","es-mx","es-ni","es-pa","es-pe","es-pr","es-py","es-sv","es-uy","es-ve","et","eu","fa","fi","fo","fr","fr-be","fr-ca","fr-ch","fr-lu","ga","gd","he","hi","hr","hu","id","is","it","it-ch","ja","ji","ko","ku","lt","lv","mk","ml","ms","mt","nb","ne","nl","nl-be","nn","no","pa","pl","pt","pt-br","rm","ro","ro-md","ru","ru-md","sb","sk","sl","sq","sr","sv","sv-fi","th","tn","tr","ts","ua","ur","ve","vi","xh","zh-cn","zh-hk","zh-sg","zh-tw","zu"],"x-enum-name":"EmailTemplateLocale","x-enum-keys":[],"in":"path"}]}},"\/projects\/{projectId}\/templates\/sms\/{type}\/{locale}":{"get":{"summary":"Get custom SMS template","operationId":"projectsGetSmsTemplate","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"SmsTemplate","schema":{"$ref":"#\/definitions\/smsTemplate"}}},"x-appwrite":{"method":"getSmsTemplate","weight":173,"cookies":false,"type":"","demo":"projects\/get-sms-template.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"type","description":"Template type","required":true,"type":"string","x-example":"verification","enum":["verification","login","invitation"],"x-enum-name":"SMSTemplateType","x-enum-keys":[],"in":"path"},{"name":"locale","description":"Template locale","required":true,"type":"string","x-example":"af","enum":["af","ar-ae","ar-bh","ar-dz","ar-eg","ar-iq","ar-jo","ar-kw","ar-lb","ar-ly","ar-ma","ar-om","ar-qa","ar-sa","ar-sy","ar-tn","ar-ye","as","az","be","bg","bh","bn","bs","ca","cs","cy","da","de","de-at","de-ch","de-li","de-lu","el","en","en-au","en-bz","en-ca","en-gb","en-ie","en-jm","en-nz","en-tt","en-us","en-za","eo","es","es-ar","es-bo","es-cl","es-co","es-cr","es-do","es-ec","es-gt","es-hn","es-mx","es-ni","es-pa","es-pe","es-pr","es-py","es-sv","es-uy","es-ve","et","eu","fa","fi","fo","fr","fr-be","fr-ca","fr-ch","fr-lu","ga","gd","he","hi","hr","hu","id","is","it","it-ch","ja","ji","ko","ku","lt","lv","mk","ml","ms","mt","nb","ne","nl","nl-be","nn","no","pa","pl","pt","pt-br","rm","ro","ro-md","ru","ru-md","sb","sk","sl","sq","sr","sv","sv-fi","th","tn","tr","ts","ua","ur","ve","vi","xh","zh-cn","zh-hk","zh-sg","zh-tw","zu"],"x-enum-name":"SMSTemplateLocale","x-enum-keys":[],"in":"path"}]},"patch":{"summary":"Update custom SMS template","operationId":"projectsUpdateSmsTemplate","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"SmsTemplate","schema":{"$ref":"#\/definitions\/smsTemplate"}}},"x-appwrite":{"method":"updateSmsTemplate","weight":175,"cookies":false,"type":"","demo":"projects\/update-sms-template.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"type","description":"Template type","required":true,"type":"string","x-example":"verification","enum":["verification","login","invitation"],"x-enum-name":"SMSTemplateType","x-enum-keys":[],"in":"path"},{"name":"locale","description":"Template locale","required":true,"type":"string","x-example":"af","enum":["af","ar-ae","ar-bh","ar-dz","ar-eg","ar-iq","ar-jo","ar-kw","ar-lb","ar-ly","ar-ma","ar-om","ar-qa","ar-sa","ar-sy","ar-tn","ar-ye","as","az","be","bg","bh","bn","bs","ca","cs","cy","da","de","de-at","de-ch","de-li","de-lu","el","en","en-au","en-bz","en-ca","en-gb","en-ie","en-jm","en-nz","en-tt","en-us","en-za","eo","es","es-ar","es-bo","es-cl","es-co","es-cr","es-do","es-ec","es-gt","es-hn","es-mx","es-ni","es-pa","es-pe","es-pr","es-py","es-sv","es-uy","es-ve","et","eu","fa","fi","fo","fr","fr-be","fr-ca","fr-ch","fr-lu","ga","gd","he","hi","hr","hu","id","is","it","it-ch","ja","ji","ko","ku","lt","lv","mk","ml","ms","mt","nb","ne","nl","nl-be","nn","no","pa","pl","pt","pt-br","rm","ro","ro-md","ru","ru-md","sb","sk","sl","sq","sr","sv","sv-fi","th","tn","tr","ts","ua","ur","ve","vi","xh","zh-cn","zh-hk","zh-sg","zh-tw","zu"],"x-enum-name":"SMSTemplateLocale","x-enum-keys":[],"in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"message":{"type":"string","description":"Template message","default":null,"x-example":"[MESSAGE]"}},"required":["message"]}}]},"delete":{"summary":"Reset custom SMS template","operationId":"projectsDeleteSmsTemplate","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"SmsTemplate","schema":{"$ref":"#\/definitions\/smsTemplate"}}},"x-appwrite":{"method":"deleteSmsTemplate","weight":177,"cookies":false,"type":"","demo":"projects\/delete-sms-template.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"type","description":"Template type","required":true,"type":"string","x-example":"verification","enum":["verification","login","invitation"],"x-enum-name":"SMSTemplateType","x-enum-keys":[],"in":"path"},{"name":"locale","description":"Template locale","required":true,"type":"string","x-example":"af","enum":["af","ar-ae","ar-bh","ar-dz","ar-eg","ar-iq","ar-jo","ar-kw","ar-lb","ar-ly","ar-ma","ar-om","ar-qa","ar-sa","ar-sy","ar-tn","ar-ye","as","az","be","bg","bh","bn","bs","ca","cs","cy","da","de","de-at","de-ch","de-li","de-lu","el","en","en-au","en-bz","en-ca","en-gb","en-ie","en-jm","en-nz","en-tt","en-us","en-za","eo","es","es-ar","es-bo","es-cl","es-co","es-cr","es-do","es-ec","es-gt","es-hn","es-mx","es-ni","es-pa","es-pe","es-pr","es-py","es-sv","es-uy","es-ve","et","eu","fa","fi","fo","fr","fr-be","fr-ca","fr-ch","fr-lu","ga","gd","he","hi","hr","hu","id","is","it","it-ch","ja","ji","ko","ku","lt","lv","mk","ml","ms","mt","nb","ne","nl","nl-be","nn","no","pa","pl","pt","pt-br","rm","ro","ro-md","ru","ru-md","sb","sk","sl","sq","sr","sv","sv-fi","th","tn","tr","ts","ua","ur","ve","vi","xh","zh-cn","zh-hk","zh-sg","zh-tw","zu"],"x-enum-name":"SMSTemplateLocale","x-enum-keys":[],"in":"path"}]}},"\/projects\/{projectId}\/webhooks":{"get":{"summary":"List webhooks","operationId":"projectsListWebhooks","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Webhooks List","schema":{"$ref":"#\/definitions\/webhookList"}}},"x-appwrite":{"method":"listWebhooks","weight":156,"cookies":false,"type":"","demo":"projects\/list-webhooks.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"}]},"post":{"summary":"Create webhook","operationId":"projectsCreateWebhook","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"201":{"description":"Webhook","schema":{"$ref":"#\/definitions\/webhook"}}},"x-appwrite":{"method":"createWebhook","weight":155,"cookies":false,"type":"","demo":"projects\/create-webhook.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Webhook name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Enable or disable a webhook.","default":true,"x-example":false},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","default":null,"x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"Webhook URL.","default":null,"x-example":null},"security":{"type":"boolean","description":"Certificate verification, false for disabled or true for enabled.","default":null,"x-example":false},"httpUser":{"type":"string","description":"Webhook HTTP user. Max length: 256 chars.","default":"","x-example":"[HTTP_USER]"},"httpPass":{"type":"string","description":"Webhook HTTP password. Max length: 256 chars.","default":"","x-example":"[HTTP_PASS]"}},"required":["name","events","url","security"]}}]}},"\/projects\/{projectId}\/webhooks\/{webhookId}":{"get":{"summary":"Get webhook","operationId":"projectsGetWebhook","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Webhook","schema":{"$ref":"#\/definitions\/webhook"}}},"x-appwrite":{"method":"getWebhook","weight":157,"cookies":false,"type":"","demo":"projects\/get-webhook.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"webhookId","description":"Webhook unique ID.","required":true,"type":"string","x-example":"[WEBHOOK_ID]","in":"path"}]},"put":{"summary":"Update webhook","operationId":"projectsUpdateWebhook","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Webhook","schema":{"$ref":"#\/definitions\/webhook"}}},"x-appwrite":{"method":"updateWebhook","weight":158,"cookies":false,"type":"","demo":"projects\/update-webhook.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"webhookId","description":"Webhook unique ID.","required":true,"type":"string","x-example":"[WEBHOOK_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Webhook name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Enable or disable a webhook.","default":true,"x-example":false},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","default":null,"x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"Webhook URL.","default":null,"x-example":null},"security":{"type":"boolean","description":"Certificate verification, false for disabled or true for enabled.","default":null,"x-example":false},"httpUser":{"type":"string","description":"Webhook HTTP user. Max length: 256 chars.","default":"","x-example":"[HTTP_USER]"},"httpPass":{"type":"string","description":"Webhook HTTP password. Max length: 256 chars.","default":"","x-example":"[HTTP_PASS]"}},"required":["name","events","url","security"]}}]},"delete":{"summary":"Delete webhook","operationId":"projectsDeleteWebhook","consumes":["application\/json"],"produces":[],"tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteWebhook","weight":160,"cookies":false,"type":"","demo":"projects\/delete-webhook.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"webhookId","description":"Webhook unique ID.","required":true,"type":"string","x-example":"[WEBHOOK_ID]","in":"path"}]}},"\/projects\/{projectId}\/webhooks\/{webhookId}\/signature":{"patch":{"summary":"Update webhook signature key","operationId":"projectsUpdateWebhookSignature","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Webhook","schema":{"$ref":"#\/definitions\/webhook"}}},"x-appwrite":{"method":"updateWebhookSignature","weight":159,"cookies":false,"type":"","demo":"projects\/update-webhook-signature.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"webhookId","description":"Webhook unique ID.","required":true,"type":"string","x-example":"[WEBHOOK_ID]","in":"path"}]}},"\/proxy\/rules":{"get":{"summary":"List Rules","operationId":"proxyListRules","consumes":["application\/json"],"produces":["application\/json"],"tags":["proxy"],"description":"Get a list of all the proxy rules. You can use the query params to filter your results.","responses":{"200":{"description":"Rule List","schema":{"$ref":"#\/definitions\/proxyRuleList"}}},"x-appwrite":{"method":"listRules","weight":289,"cookies":false,"type":"","demo":"proxy\/list-rules.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/proxy\/list-rules.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"rules.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: domain, resourceType, resourceId, url","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Rule","operationId":"proxyCreateRule","consumes":["application\/json"],"produces":["application\/json"],"tags":["proxy"],"description":"Create a new proxy rule.","responses":{"201":{"description":"Rule","schema":{"$ref":"#\/definitions\/proxyRule"}}},"x-appwrite":{"method":"createRule","weight":288,"cookies":false,"type":"","demo":"proxy\/create-rule.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/proxy\/create-rule.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"rules.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"domain":{"type":"string","description":"Domain name.","default":null,"x-example":null},"resourceType":{"type":"string","description":"Action definition for the rule. Possible values are \"api\", \"function\"","default":null,"x-example":"api","enum":["api","function"],"x-enum-name":null,"x-enum-keys":[]},"resourceId":{"type":"string","description":"ID of resource for the action type. If resourceType is \"api\", leave empty. If resourceType is \"function\", provide ID of the function.","default":"","x-example":"[RESOURCE_ID]"}},"required":["domain","resourceType"]}}]}},"\/proxy\/rules\/{ruleId}":{"get":{"summary":"Get Rule","operationId":"proxyGetRule","consumes":["application\/json"],"produces":["application\/json"],"tags":["proxy"],"description":"Get a proxy rule by its unique ID.","responses":{"200":{"description":"Rule","schema":{"$ref":"#\/definitions\/proxyRule"}}},"x-appwrite":{"method":"getRule","weight":290,"cookies":false,"type":"","demo":"proxy\/get-rule.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/proxy\/get-rule.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"rules.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"ruleId","description":"Rule ID.","required":true,"type":"string","x-example":"[RULE_ID]","in":"path"}]},"delete":{"summary":"Delete Rule","operationId":"proxyDeleteRule","consumes":["application\/json"],"produces":[],"tags":["proxy"],"description":"Delete a proxy rule by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteRule","weight":291,"cookies":false,"type":"","demo":"proxy\/delete-rule.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/proxy\/delete-rule.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"rules.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"ruleId","description":"Rule ID.","required":true,"type":"string","x-example":"[RULE_ID]","in":"path"}]}},"\/proxy\/rules\/{ruleId}\/verification":{"patch":{"summary":"Update Rule Verification Status","operationId":"proxyUpdateRuleVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["proxy"],"description":"","responses":{"200":{"description":"Rule","schema":{"$ref":"#\/definitions\/proxyRule"}}},"x-appwrite":{"method":"updateRuleVerification","weight":292,"cookies":false,"type":"","demo":"proxy\/update-rule-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"rules.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"ruleId","description":"Rule ID.","required":true,"type":"string","x-example":"[RULE_ID]","in":"path"}]}},"\/storage\/buckets":{"get":{"summary":"List buckets","operationId":"storageListBuckets","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a list of all the storage buckets. You can use the query params to filter your results.","responses":{"200":{"description":"Buckets List","schema":{"$ref":"#\/definitions\/bucketList"}}},"x-appwrite":{"method":"listBuckets","weight":186,"cookies":false,"type":"","demo":"storage\/list-buckets.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/list-buckets.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: enabled, name, fileSecurity, maximumFileSize, encryption, antivirus","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create bucket","operationId":"storageCreateBucket","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Create a new storage bucket.","responses":{"201":{"description":"Bucket","schema":{"$ref":"#\/definitions\/bucket"}}},"x-appwrite":{"method":"createBucket","weight":185,"cookies":false,"type":"","demo":"storage\/create-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"bucketId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, no user is granted with any permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":false,"x-example":false},"enabled":{"type":"boolean","description":"Is bucket enabled? When set to 'disabled', users cannot access the files in this bucket but Server SDKs with and API key can still access the bucket. No files are lost when this is toggled.","default":true,"x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB.","default":30000000,"x-example":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","default":[],"x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","default":"none","x-example":"none","enum":["none","gzip","zstd"],"x-enum-name":null,"x-enum-keys":[]},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","default":true,"x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","default":true,"x-example":false}},"required":["bucketId","name"]}}]}},"\/storage\/buckets\/{bucketId}":{"get":{"summary":"Get bucket","operationId":"storageGetBucket","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a storage bucket by its unique ID. This endpoint response returns a JSON object with the storage bucket metadata.","responses":{"200":{"description":"Bucket","schema":{"$ref":"#\/definitions\/bucket"}}},"x-appwrite":{"method":"getBucket","weight":187,"cookies":false,"type":"","demo":"storage\/get-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"bucketId","description":"Bucket unique ID.","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"}]},"put":{"summary":"Update bucket","operationId":"storageUpdateBucket","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Update a storage bucket by its unique ID.","responses":{"200":{"description":"Bucket","schema":{"$ref":"#\/definitions\/bucket"}}},"x-appwrite":{"method":"updateBucket","weight":188,"cookies":false,"type":"","demo":"storage\/update-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"bucketId","description":"Bucket unique ID.","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Bucket name","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":false,"x-example":false},"enabled":{"type":"boolean","description":"Is bucket enabled? When set to 'disabled', users cannot access the files in this bucket but Server SDKs with and API key can still access the bucket. No files are lost when this is toggled.","default":true,"x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB.","default":null,"x-example":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","default":[],"x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","default":"none","x-example":"none","enum":["none","gzip","zstd"],"x-enum-name":null,"x-enum-keys":[]},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","default":true,"x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","default":true,"x-example":false}},"required":["name"]}}]},"delete":{"summary":"Delete bucket","operationId":"storageDeleteBucket","consumes":["application\/json"],"produces":[],"tags":["storage"],"description":"Delete a storage bucket by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteBucket","weight":189,"cookies":false,"type":"","demo":"storage\/delete-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"bucketId","description":"Bucket unique ID.","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files":{"get":{"summary":"List files","operationId":"storageListFiles","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a list of all the user files. You can use the query params to filter your results.","responses":{"200":{"description":"Files List","schema":{"$ref":"#\/definitions\/fileList"}}},"x-appwrite":{"method":"listFiles","weight":191,"cookies":false,"type":"","demo":"storage\/list-files.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/list-files.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create file","operationId":"storageCreateFile","consumes":["multipart\/form-data"],"produces":["application\/json"],"tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"createFile","weight":190,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","required":true,"x-upload-id":true,"type":"string","x-example":"[FILE_ID]","in":"formData"},{"name":"file","description":"Binary file. Appwrite SDKs provide helpers to handle file input. [Learn about file input](https:\/\/appwrite.io\/docs\/storage#file-input).","required":true,"type":"file","in":"formData"},{"name":"permissions","description":"An array of permission strings. By default, only the current user is granted all permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"x-example":"[\"read(\"any\")\"]","in":"formData"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get file","operationId":"storageGetFile","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"getFile","weight":192,"cookies":false,"type":"","demo":"storage\/get-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID.","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"}]},"put":{"summary":"Update file","operationId":"storageUpdateFile","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Update a file by its unique ID. Only users with write permissions have access to update this resource.","responses":{"200":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"updateFile","weight":196,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File unique ID.","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Name of the file","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission string. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","consumes":["application\/json"],"produces":[],"tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":197,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID.","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/download":{"get":{"summary":"Get file for download","operationId":"storageGetFileDownload","consumes":["application\/json"],"produces":["*\/*"],"tags":["storage"],"description":"Get a file content by its unique ID. The endpoint response return with a 'Content-Disposition: attachment' header that tells the browser to start downloading the file to user downloads directory.","responses":{"200":{"description":"File","schema":{"type":"file"}}},"x-appwrite":{"method":"getFileDownload","weight":194,"cookies":false,"type":"location","demo":"storage\/get-file-download.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-download.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID.","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/preview":{"get":{"summary":"Get file preview","operationId":"storageGetFilePreview","consumes":["application\/json"],"produces":["image\/*"],"tags":["storage"],"description":"Get a file preview image. Currently, this method supports preview for image files (jpg, png, and gif), other supported formats, like pdf, docs, slides, and spreadsheets, will return the file icon image. You can also pass query string arguments for cutting and resizing your preview image. Preview is supported only for image files smaller than 10MB.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFilePreview","weight":193,"cookies":false,"type":"location","demo":"storage\/get-file-preview.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-preview.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"},{"name":"width","description":"Resize preview image width, Pass an integer between 0 to 4000.","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 4000.","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"gravity","description":"Image crop gravity. Can be one of center,top-left,top,top-right,left,right,bottom-left,bottom,bottom-right","required":false,"type":"string","x-example":"center","enum":["center","top-left","top","top-right","left","right","bottom-left","bottom","bottom-right"],"x-enum-name":"ImageGravity","x-enum-keys":[],"default":"center","in":"query"},{"name":"quality","description":"Preview image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"borderWidth","description":"Preview image border in pixels. Pass an integer between 0 to 100. Defaults to 0.","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"borderColor","description":"Preview image border color. Use a valid HEX color, no # is needed for prefix.","required":false,"type":"string","default":"","in":"query"},{"name":"borderRadius","description":"Preview image border radius in pixels. Pass an integer between 0 to 4000.","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"opacity","description":"Preview image opacity. Only works with images having an alpha channel (like png). Pass a number between 0 to 1.","required":false,"type":"number","format":"float","x-example":0,"default":1,"in":"query"},{"name":"rotation","description":"Preview image rotation in degrees. Pass an integer between -360 and 360.","required":false,"type":"integer","format":"int32","x-example":-360,"default":0,"in":"query"},{"name":"background","description":"Preview image background color. Only works with transparent images (png). Use a valid HEX color, no # is needed for prefix.","required":false,"type":"string","default":"","in":"query"},{"name":"output","description":"Output format type (jpeg, jpg, png, gif and webp).","required":false,"type":"string","x-example":"jpg","enum":["jpg","jpeg","gif","png","webp"],"x-enum-name":"ImageFormat","x-enum-keys":[],"default":"","in":"query"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/view":{"get":{"summary":"Get file for view","operationId":"storageGetFileView","consumes":["application\/json"],"produces":["*\/*"],"tags":["storage"],"description":"Get a file content by its unique ID. This endpoint is similar to the download method but returns with no 'Content-Disposition: attachment' header.","responses":{"200":{"description":"File","schema":{"type":"file"}}},"x-appwrite":{"method":"getFileView","weight":195,"cookies":false,"type":"location","demo":"storage\/get-file-view.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-view.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID.","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"}]}},"\/storage\/usage":{"get":{"summary":"Get usage stats for storage","operationId":"storageGetUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"","responses":{"200":{"description":"StorageUsage","schema":{"$ref":"#\/definitions\/usageStorage"}}},"x-appwrite":{"method":"getUsage","weight":198,"cookies":false,"type":"","demo":"storage\/get-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","enum":["24h","30d","90d"],"x-enum-name":"StorageUsageRange","x-enum-keys":["Twenty Four Hours","Thirty Days","Ninety Days"],"default":"30d","in":"query"}]}},"\/storage\/{bucketId}\/usage":{"get":{"summary":"Get usage stats for storage bucket","operationId":"storageGetBucketUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"","responses":{"200":{"description":"UsageBuckets","schema":{"$ref":"#\/definitions\/usageBuckets"}}},"x-appwrite":{"method":"getBucketUsage","weight":199,"cookies":false,"type":"","demo":"storage\/get-bucket-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"bucketId","description":"Bucket ID.","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","enum":["24h","30d","90d"],"x-enum-name":"StorageUsageRange","x-enum-keys":["Twenty Four Hours","Thirty Days","Ninety Days"],"default":"30d","in":"query"}]}},"\/teams":{"get":{"summary":"List teams","operationId":"teamsList","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get a list of all the teams in which the current user is a member. You can use the parameters to filter your results.","responses":{"200":{"description":"Teams List","schema":{"$ref":"#\/definitions\/teamList"}}},"x-appwrite":{"method":"list","weight":201,"cookies":false,"type":"","demo":"teams\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-teams.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total, billingPlan","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create team","operationId":"teamsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"create","weight":200,"cookies":false,"type":"","demo":"teams\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/create-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"teamId":{"type":"string","description":"Team ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[TEAM_ID]"},"name":{"type":"string","description":"Team name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"roles":{"type":"array","description":"Array of strings. Use this param to set the roles in the team for the user who created it. The default role is **owner**. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","default":["owner"],"x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}]}},"\/teams\/{teamId}":{"get":{"summary":"Get team","operationId":"teamsGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"get","weight":202,"cookies":false,"type":"","demo":"teams\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams","offline-key":"{teamId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"}]},"put":{"summary":"Update name","operationId":"teamsUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Update the team's name by its unique ID.","responses":{"200":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"updateName","weight":204,"cookies":false,"type":"","demo":"teams\/update-name.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-name.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams","offline-key":"{teamId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"New team name. Max length: 128 chars.","default":null,"x-example":"[NAME]"}},"required":["name"]}}]},"delete":{"summary":"Delete team","operationId":"teamsDelete","consumes":["application\/json"],"produces":[],"tags":["teams"],"description":"Delete a team using its ID. Only team members with the owner role can delete the team.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":206,"cookies":false,"type":"","demo":"teams\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/delete-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"}]}},"\/teams\/{teamId}\/logs":{"get":{"summary":"List team logs","operationId":"teamsListLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get the team activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listLogs","weight":213,"cookies":false,"type":"","demo":"teams\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/teams\/{teamId}\/memberships":{"get":{"summary":"List team memberships","operationId":"teamsListMemberships","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"listMemberships","weight":208,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/memberships","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create team membership","operationId":"teamsCreateMembership","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Invite a new member to join your team. Provide an ID for existing users, or invite unregistered users using an email or phone number. If initiated from a Client SDK, Appwrite will send an email or sms with a link to join the team to the invited user, and an account will be created for them if one doesn't exist. If initiated from a Server SDK, the new member will be added automatically to the team.\n\nYou only need to provide one of a user ID, email, or phone number. Appwrite will prioritize accepting the user ID > email > phone number if you provide more than one of these parameters.\n\nUse the `url` parameter to redirect the user from the invitation email to your app. After the user is redirected, use the [Update Team Membership Status](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/teams#updateMembershipStatus) endpoint to allow the user to accept the invitation to the team. \n\nPlease note that to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) Appwrite will accept the only redirect URLs under the domains you have added as a platform on the Appwrite Console.\n","responses":{"201":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"createMembership","weight":207,"cookies":false,"type":"","demo":"teams\/create-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/create-team-membership.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"email":{"type":"string","description":"Email of the new team member.","default":"","x-example":"email@example.com"},"userId":{"type":"string","description":"ID of the user to be added to a team.","default":"","x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":"","x-example":"+12065550100"},"roles":{"type":"array","description":"Array of strings. Use this param to set the user roles in the team. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":"","x-example":"https:\/\/example.com"},"name":{"type":"string","description":"Name of the new team member. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["roles"]}}]}},"\/teams\/{teamId}\/memberships\/{membershipId}":{"get":{"summary":"Get team membership","operationId":"teamsGetMembership","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get a team member by the membership unique id. All team members have read access for this resource.","responses":{"200":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"getMembership","weight":209,"cookies":false,"type":"","demo":"teams\/get-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-member.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/memberships","offline-key":"{membershipId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"type":"string","x-example":"[MEMBERSHIP_ID]","in":"path"}]},"patch":{"summary":"Update membership","operationId":"teamsUpdateMembership","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Modify the roles of a team member. Only team members with the owner role have access to this endpoint. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions).\n","responses":{"200":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"updateMembership","weight":210,"cookies":false,"type":"","demo":"teams\/update-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"type":"string","x-example":"[MEMBERSHIP_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"roles":{"type":"array","description":"An array of strings. Use this param to set the user's roles in the team. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}}},"required":["roles"]}}]},"delete":{"summary":"Delete team membership","operationId":"teamsDeleteMembership","consumes":["application\/json"],"produces":[],"tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":212,"cookies":false,"type":"","demo":"teams\/delete-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/delete-team-membership.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"type":"string","x-example":"[MEMBERSHIP_ID]","in":"path"}]}},"\/teams\/{teamId}\/memberships\/{membershipId}\/status":{"patch":{"summary":"Update team membership status","operationId":"teamsUpdateMembershipStatus","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Use this endpoint to allow a user to accept an invitation to join a team after being redirected back to your app from the invitation email received by the user.\n\nIf the request is successful, a session for the user is automatically created.\n","responses":{"200":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"updateMembershipStatus","weight":211,"cookies":false,"type":"","demo":"teams\/update-membership-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"public","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"type":"string","x-example":"[MEMBERSHIP_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Secret key.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/teams\/{teamId}\/prefs":{"get":{"summary":"Get team preferences","operationId":"teamsGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get the team's shared preferences by its unique ID. If a preference doesn't need to be shared by all team members, prefer storing them in [user preferences](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#getPrefs).","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":203,"cookies":false,"type":"","demo":"teams\/get-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/prefs","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"}]},"put":{"summary":"Update preferences","operationId":"teamsUpdatePrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Update the team's preferences by its unique ID. The object you pass is stored as is and replaces any previous value. The maximum allowed prefs size is 64kB and throws an error if exceeded.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"updatePrefs","weight":205,"cookies":false,"type":"","demo":"teams\/update-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/prefs","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"prefs":{"type":"object","description":"Prefs key-value JSON object.","default":{},"x-example":"{}"}},"required":["prefs"]}}]}},"\/users":{"get":{"summary":"List users","operationId":"usersList","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get a list of all the project's users. You can use the query params to filter your results.","responses":{"200":{"description":"Users List","schema":{"$ref":"#\/definitions\/userList"}}},"x-appwrite":{"method":"list","weight":223,"cookies":false,"type":"","demo":"users\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-users.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, email, phone, status, passwordUpdate, registration, emailVerification, phoneVerification","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create user","operationId":"usersCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"create","weight":214,"cookies":false,"type":"","demo":"users\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"},"password":{"type":"string","description":"Plain text user password. Must be at least 8 chars.","default":"","x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId"]}}]}},"\/users\/argon2":{"post":{"summary":"Create user with Argon2 password","operationId":"usersCreateArgon2User","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Argon2](https:\/\/en.wikipedia.org\/wiki\/Argon2) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createArgon2User","weight":217,"cookies":false,"type":"","demo":"users\/create-argon2user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-argon2-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Argon2.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/bcrypt":{"post":{"summary":"Create user with bcrypt password","operationId":"usersCreateBcryptUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Bcrypt](https:\/\/en.wikipedia.org\/wiki\/Bcrypt) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createBcryptUser","weight":215,"cookies":false,"type":"","demo":"users\/create-bcrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-bcrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Bcrypt.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/identities":{"get":{"summary":"List Identities","operationId":"usersListIdentities","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get identities for all users.","responses":{"200":{"description":"Identities List","schema":{"$ref":"#\/definitions\/identityList"}}},"x-appwrite":{"method":"listIdentities","weight":231,"cookies":false,"type":"","demo":"users\/list-identities.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-identities.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, provider, providerUid, providerEmail, providerAccessTokenExpiry","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]}},"\/users\/identities\/{identityId}":{"delete":{"summary":"Delete identity","operationId":"usersDeleteIdentity","consumes":["application\/json"],"produces":[],"tags":["users"],"description":"Delete an identity by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIdentity","weight":251,"cookies":false,"type":"","demo":"users\/delete-identity.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-identity.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"identityId","description":"Identity ID.","required":true,"type":"string","x-example":"[IDENTITY_ID]","in":"path"}]}},"\/users\/md5":{"post":{"summary":"Create user with MD5 password","operationId":"usersCreateMD5User","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [MD5](https:\/\/en.wikipedia.org\/wiki\/MD5) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createMD5User","weight":216,"cookies":false,"type":"","demo":"users\/create-m-d5user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-md5-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using MD5.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/phpass":{"post":{"summary":"Create user with PHPass password","operationId":"usersCreatePHPassUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [PHPass](https:\/\/www.openwall.com\/phpass\/) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createPHPassUser","weight":219,"cookies":false,"type":"","demo":"users\/create-p-h-pass-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-phpass-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or pass the string `ID.unique()`to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using PHPass.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/scrypt":{"post":{"summary":"Create user with Scrypt password","operationId":"usersCreateScryptUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt](https:\/\/github.com\/Tarsnap\/scrypt) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createScryptUser","weight":220,"cookies":false,"type":"","demo":"users\/create-scrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt.","default":null,"x-example":"password"},"passwordSalt":{"type":"string","description":"Optional salt used to hash password.","default":null,"x-example":"[PASSWORD_SALT]"},"passwordCpu":{"type":"integer","description":"Optional CPU cost used to hash password.","default":null,"x-example":null},"passwordMemory":{"type":"integer","description":"Optional memory cost used to hash password.","default":null,"x-example":null},"passwordParallel":{"type":"integer","description":"Optional parallelization cost used to hash password.","default":null,"x-example":null},"passwordLength":{"type":"integer","description":"Optional hash length used to hash password.","default":null,"x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordCpu","passwordMemory","passwordParallel","passwordLength"]}}]}},"\/users\/scrypt-modified":{"post":{"summary":"Create user with Scrypt modified password","operationId":"usersCreateScryptModifiedUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt Modified](https:\/\/gist.github.com\/Meldiron\/eecf84a0225eccb5a378d45bb27462cc) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createScryptModifiedUser","weight":221,"cookies":false,"type":"","demo":"users\/create-scrypt-modified-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-modified-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt Modified.","default":null,"x-example":"password"},"passwordSalt":{"type":"string","description":"Salt used to hash password.","default":null,"x-example":"[PASSWORD_SALT]"},"passwordSaltSeparator":{"type":"string","description":"Salt separator used to hash password.","default":null,"x-example":"[PASSWORD_SALT_SEPARATOR]"},"passwordSignerKey":{"type":"string","description":"Signer key used to hash password.","default":null,"x-example":"[PASSWORD_SIGNER_KEY]"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordSaltSeparator","passwordSignerKey"]}}]}},"\/users\/sha":{"post":{"summary":"Create user with SHA password","operationId":"usersCreateSHAUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [SHA](https:\/\/en.wikipedia.org\/wiki\/Secure_Hash_Algorithm) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createSHAUser","weight":218,"cookies":false,"type":"","demo":"users\/create-s-h-a-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-sha-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using SHA.","default":null,"x-example":"password"},"passwordVersion":{"type":"string","description":"Optional SHA version used to hash password. Allowed values are: 'sha1', 'sha224', 'sha256', 'sha384', 'sha512\/224', 'sha512\/256', 'sha512', 'sha3-224', 'sha3-256', 'sha3-384', 'sha3-512'","default":"","x-example":"sha1","enum":["sha1","sha224","sha256","sha384","sha512\/224","sha512\/256","sha512","sha3-224","sha3-256","sha3-384","sha3-512"],"x-enum-name":null,"x-enum-keys":[]},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/usage":{"get":{"summary":"Get usage stats for the users API","operationId":"usersGetUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"","responses":{"200":{"description":"UsageUsers","schema":{"$ref":"#\/definitions\/usageUsers"}}},"x-appwrite":{"method":"getUsage","weight":252,"cookies":false,"type":"","demo":"users\/get-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","enum":["24h","30d","90d"],"x-enum-name":"UserUsageRange","x-enum-keys":["Twenty Four Hours","Thirty Days","Ninety Days"],"default":"30d","in":"query"}]}},"\/users\/{userId}":{"get":{"summary":"Get user","operationId":"usersGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get a user by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"get","weight":224,"cookies":false,"type":"","demo":"users\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]},"delete":{"summary":"Delete user","operationId":"usersDelete","consumes":["application\/json"],"produces":[],"tags":["users"],"description":"Delete a user by its unique ID, thereby releasing it's ID. Since ID is released and can be reused, all user-related resources like documents or storage files should be deleted before user deletion. If you want to keep ID reserved, use the [updateStatus](https:\/\/appwrite.io\/docs\/server\/users#usersUpdateStatus) endpoint instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":249,"cookies":false,"type":"","demo":"users\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]}},"\/users\/{userId}\/email":{"patch":{"summary":"Update email","operationId":"usersUpdateEmail","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user email by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateEmail","weight":237,"cookies":false,"type":"","demo":"users\/update-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"}},"required":["email"]}}]}},"\/users\/{userId}\/labels":{"put":{"summary":"Update user labels","operationId":"usersUpdateLabels","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user labels by its unique ID. \n\nLabels can be used to grant access to resources. While teams are a way for user's to share access to a resource, labels can be defined by the developer to grant access without an invitation. See the [Permissions docs](https:\/\/appwrite.io\/docs\/permissions) for more info.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateLabels","weight":233,"cookies":false,"type":"","demo":"users\/update-labels.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-labels.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"labels":{"type":"array","description":"Array of user labels. Replaces the previous labels. Maximum of 1000 labels are allowed, each up to 36 alphanumeric characters long.","default":null,"x-example":null,"items":{"type":"string"}}},"required":["labels"]}}]}},"\/users\/{userId}\/logs":{"get":{"summary":"List user logs","operationId":"usersListLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listLogs","weight":229,"cookies":false,"type":"","demo":"users\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/users\/{userId}\/memberships":{"get":{"summary":"List user memberships","operationId":"usersListMemberships","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user membership list by its unique ID.","responses":{"200":{"description":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"listMemberships","weight":228,"cookies":false,"type":"","demo":"users\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-memberships.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]}},"\/users\/{userId}\/mfa":{"patch":{"summary":"Update MFA","operationId":"usersUpdateMfa","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateMfa","weight":242,"cookies":false,"type":"","demo":"users\/update-mfa.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-mfa.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"mfa":{"type":"boolean","description":"Enable or disable MFA.","default":null,"x-example":false}},"required":["mfa"]}}]}},"\/users\/{userId}\/mfa\/{provider}":{"delete":{"summary":"Delete Authenticator","operationId":"usersDeleteAuthenticator","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"deleteAuthenticator","weight":244,"cookies":false,"type":"","demo":"users\/delete-authenticator.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-mfa.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"provider","description":"Provider.","required":true,"type":"string","x-example":"totp","enum":["totp"],"x-enum-name":"AuthenticatorProvider","x-enum-keys":[],"in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"otp":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[OTP]"}},"required":["otp"]}}]}},"\/users\/{userId}\/name":{"patch":{"summary":"Update name","operationId":"usersUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user name by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateName","weight":235,"cookies":false,"type":"","demo":"users\/update-name.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-name.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"User name. Max length: 128 chars.","default":null,"x-example":"[NAME]"}},"required":["name"]}}]}},"\/users\/{userId}\/password":{"patch":{"summary":"Update password","operationId":"usersUpdatePassword","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user password by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePassword","weight":236,"cookies":false,"type":"","demo":"users\/update-password.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-password.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"password":{"type":"string","description":"New user password. Must be at least 8 chars.","default":null,"x-example":null}},"required":["password"]}}]}},"\/users\/{userId}\/phone":{"patch":{"summary":"Update phone","operationId":"usersUpdatePhone","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user phone by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePhone","weight":238,"cookies":false,"type":"","demo":"users\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"number":{"type":"string","description":"User phone number.","default":null,"x-example":"+12065550100"}},"required":["number"]}}]}},"\/users\/{userId}\/prefs":{"get":{"summary":"Get user preferences","operationId":"usersGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user preferences by its unique ID.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":225,"cookies":false,"type":"","demo":"users\/get-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]},"patch":{"summary":"Update user preferences","operationId":"usersUpdatePrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user preferences by its unique ID. The object you pass is stored as is, and replaces any previous value. The maximum allowed prefs size is 64kB and throws error if exceeded.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"updatePrefs","weight":240,"cookies":false,"type":"","demo":"users\/update-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"prefs":{"type":"object","description":"Prefs key-value JSON object.","default":{},"x-example":"{}"}},"required":["prefs"]}}]}},"\/users\/{userId}\/providers":{"get":{"summary":"List Providers","operationId":"usersListProviders","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"","responses":{"200":{"description":"MFAProviders","schema":{"$ref":"#\/definitions\/mfaProviders"}}},"x-appwrite":{"method":"listProviders","weight":243,"cookies":false,"type":"","demo":"users\/list-providers.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-providers.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]}},"\/users\/{userId}\/sessions":{"get":{"summary":"List user sessions","operationId":"usersListSessions","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user sessions list by its unique ID.","responses":{"200":{"description":"Sessions List","schema":{"$ref":"#\/definitions\/sessionList"}}},"x-appwrite":{"method":"listSessions","weight":227,"cookies":false,"type":"","demo":"users\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]},"post":{"summary":"Create session","operationId":"usersCreateSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Creates a session for a user. Returns an immediately usable session object.\n\nIf you want to generate a token for a custom authentication flow, use the [POST \/users\/{userId}\/tokens](https:\/\/appwrite.io\/docs\/server\/users#createToken) endpoint.","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"createSession","weight":245,"cookies":false,"type":"","demo":"users\/create-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-session.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]},"delete":{"summary":"Delete user sessions","operationId":"usersDeleteSessions","consumes":["application\/json"],"produces":[],"tags":["users"],"description":"Delete all user's sessions by using the user's unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":248,"cookies":false,"type":"","demo":"users\/delete-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]}},"\/users\/{userId}\/sessions\/{sessionId}":{"delete":{"summary":"Delete user session","operationId":"usersDeleteSession","consumes":["application\/json"],"produces":[],"tags":["users"],"description":"Delete a user sessions by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSession","weight":247,"cookies":false,"type":"","demo":"users\/delete-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-user-session.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"sessionId","description":"Session ID.","required":true,"type":"string","x-example":"[SESSION_ID]","in":"path"}]}},"\/users\/{userId}\/status":{"patch":{"summary":"Update user status","operationId":"usersUpdateStatus","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user status by its unique ID. Use this endpoint as an alternative to deleting a user if you want to keep user's ID reserved.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateStatus","weight":232,"cookies":false,"type":"","demo":"users\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"status":{"type":"boolean","description":"User Status. To activate the user pass `true` and to block the user pass `false`.","default":null,"x-example":false}},"required":["status"]}}]}},"\/users\/{userId}\/targets":{"get":{"summary":"List User Targets","operationId":"usersListTargets","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"","responses":{"200":{"description":"Target list","schema":{"$ref":"#\/definitions\/targetList"}}},"x-appwrite":{"method":"listTargets","weight":230,"cookies":false,"type":"","demo":"users\/list-targets.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-targets.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.read","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, email, phone, status, passwordUpdate, registration, emailVerification, phoneVerification","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"post":{"summary":"Create User Target","operationId":"usersCreateTarget","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"","responses":{"201":{"description":"Target","schema":{"$ref":"#\/definitions\/target"}}},"x-appwrite":{"method":"createTarget","weight":222,"cookies":false,"type":"","demo":"users\/create-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-target.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"targetId":{"type":"string","description":"Target ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[TARGET_ID]"},"providerType":{"type":"string","description":"The target provider type. Can be one of the following: `email`, `sms` or `push`.","default":null,"x-example":"email","enum":["email","sms","push"],"x-enum-name":"MessagingProviderType","x-enum-keys":[]},"identifier":{"type":"string","description":"The target identifier (token, email, phone etc.)","default":null,"x-example":"[IDENTIFIER]"},"providerId":{"type":"string","description":"Provider ID. Message will be sent to this target from the specified provider ID. If no provider ID is set the first setup provider will be used.","default":"","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Target name. Max length: 128 chars. For example: My Awesome App Galaxy S23.","default":"","x-example":"[NAME]"}},"required":["targetId","providerType","identifier"]}}]}},"\/users\/{userId}\/targets\/{targetId}":{"get":{"summary":"Get User Target","operationId":"usersGetTarget","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"","responses":{"200":{"description":"Target","schema":{"$ref":"#\/definitions\/target"}}},"x-appwrite":{"method":"getTarget","weight":226,"cookies":false,"type":"","demo":"users\/get-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-target.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.read","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"targetId","description":"Target ID.","required":true,"type":"string","x-example":"[TARGET_ID]","in":"path"}]},"patch":{"summary":"Update User target","operationId":"usersUpdateTarget","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"","responses":{"200":{"description":"Target","schema":{"$ref":"#\/definitions\/target"}}},"x-appwrite":{"method":"updateTarget","weight":241,"cookies":false,"type":"","demo":"users\/update-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-target.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"targetId","description":"Target ID.","required":true,"type":"string","x-example":"[TARGET_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"identifier":{"type":"string","description":"The target identifier (token, email, phone etc.)","default":"","x-example":"[IDENTIFIER]"},"providerId":{"type":"string","description":"Provider ID. Message will be sent to this target from the specified provider ID. If no provider ID is set the first setup provider will be used.","default":"","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Target name. Max length: 128 chars. For example: My Awesome App Galaxy S23.","default":"","x-example":"[NAME]"}}}}]},"delete":{"summary":"Delete user target","operationId":"usersDeleteTarget","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteTarget","weight":250,"cookies":false,"type":"","demo":"users\/delete-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-target.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"targetId","description":"Target ID.","required":true,"type":"string","x-example":"[TARGET_ID]","in":"path"}]}},"\/users\/{userId}\/tokens":{"post":{"summary":"Create token","operationId":"usersCreateToken","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Returns a token with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [PUT \/account\/sessions\/custom](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateCustomSession) endpoint to complete the login process.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createToken","weight":246,"cookies":false,"type":"","demo":"users\/create-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-token.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"length":{"type":"integer","description":"Token length in characters. The default length is 6 characters","default":6,"x-example":4},"expire":{"type":"integer","description":"Token expiration period in seconds. The default expiration is 15 minutes.","default":900,"x-example":60}}}}]}},"\/users\/{userId}\/verification":{"patch":{"summary":"Update email verification","operationId":"usersUpdateEmailVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user email verification status by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateEmailVerification","weight":239,"cookies":false,"type":"","demo":"users\/update-email-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-email-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"emailVerification":{"type":"boolean","description":"User email verification status.","default":null,"x-example":false}},"required":["emailVerification"]}}]}},"\/users\/{userId}\/verification\/phone":{"patch":{"summary":"Update phone verification","operationId":"usersUpdatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user phone verification status by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePhoneVerification","weight":234,"cookies":false,"type":"","demo":"users\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"phoneVerification":{"type":"boolean","description":"User phone verification status.","default":null,"x-example":false}},"required":["phoneVerification"]}}]}},"\/vcs\/github\/installations\/{installationId}\/providerRepositories":{"get":{"summary":"List Repositories","operationId":"vcsListRepositories","consumes":["application\/json"],"produces":["application\/json"],"tags":["vcs"],"description":"","responses":{"200":{"description":"Provider Repositories List","schema":{"$ref":"#\/definitions\/providerRepositoryList"}}},"x-appwrite":{"method":"listRepositories","weight":256,"cookies":false,"type":"","demo":"vcs\/list-repositories.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"type":"string","x-example":"[INSTALLATION_ID]","in":"path"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create repository","operationId":"vcsCreateRepository","consumes":["application\/json"],"produces":["application\/json"],"tags":["vcs"],"description":"","responses":{"200":{"description":"ProviderRepository","schema":{"$ref":"#\/definitions\/providerRepository"}}},"x-appwrite":{"method":"createRepository","weight":257,"cookies":false,"type":"","demo":"vcs\/create-repository.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"type":"string","x-example":"[INSTALLATION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Repository name (slug)","default":null,"x-example":"[NAME]"},"private":{"type":"boolean","description":"Mark repository public or private","default":null,"x-example":false}},"required":["name","private"]}}]}},"\/vcs\/github\/installations\/{installationId}\/providerRepositories\/{providerRepositoryId}":{"get":{"summary":"Get repository","operationId":"vcsGetRepository","consumes":["application\/json"],"produces":["application\/json"],"tags":["vcs"],"description":"","responses":{"200":{"description":"ProviderRepository","schema":{"$ref":"#\/definitions\/providerRepository"}}},"x-appwrite":{"method":"getRepository","weight":258,"cookies":false,"type":"","demo":"vcs\/get-repository.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"type":"string","x-example":"[INSTALLATION_ID]","in":"path"},{"name":"providerRepositoryId","description":"Repository Id","required":true,"type":"string","x-example":"[PROVIDER_REPOSITORY_ID]","in":"path"}]}},"\/vcs\/github\/installations\/{installationId}\/providerRepositories\/{providerRepositoryId}\/branches":{"get":{"summary":"List Repository Branches","operationId":"vcsListRepositoryBranches","consumes":["application\/json"],"produces":["application\/json"],"tags":["vcs"],"description":"","responses":{"200":{"description":"Branches List","schema":{"$ref":"#\/definitions\/branchList"}}},"x-appwrite":{"method":"listRepositoryBranches","weight":259,"cookies":false,"type":"","demo":"vcs\/list-repository-branches.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"type":"string","x-example":"[INSTALLATION_ID]","in":"path"},{"name":"providerRepositoryId","description":"Repository Id","required":true,"type":"string","x-example":"[PROVIDER_REPOSITORY_ID]","in":"path"}]}},"\/vcs\/github\/installations\/{installationId}\/providerRepositories\/{providerRepositoryId}\/detection":{"post":{"summary":"Detect runtime settings from source code","operationId":"vcsCreateRepositoryDetection","consumes":["application\/json"],"produces":["application\/json"],"tags":["vcs"],"description":"","responses":{"200":{"description":"Detection","schema":{"$ref":"#\/definitions\/detection"}}},"x-appwrite":{"method":"createRepositoryDetection","weight":255,"cookies":false,"type":"","demo":"vcs\/create-repository-detection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"type":"string","x-example":"[INSTALLATION_ID]","in":"path"},{"name":"providerRepositoryId","description":"Repository Id","required":true,"type":"string","x-example":"[PROVIDER_REPOSITORY_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerRootDirectory":{"type":"string","description":"Path to Root Directory","default":"","x-example":"[PROVIDER_ROOT_DIRECTORY]"}}}}]}},"\/vcs\/github\/installations\/{installationId}\/repositories\/{repositoryId}":{"patch":{"summary":"Authorize external deployment","operationId":"vcsUpdateExternalDeployments","consumes":["application\/json"],"produces":[],"tags":["vcs"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"updateExternalDeployments","weight":264,"cookies":false,"type":"","demo":"vcs\/update-external-deployments.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"type":"string","x-example":"[INSTALLATION_ID]","in":"path"},{"name":"repositoryId","description":"VCS Repository Id","required":true,"type":"string","x-example":"[REPOSITORY_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerPullRequestId":{"type":"string","description":"GitHub Pull Request Id","default":null,"x-example":"[PROVIDER_PULL_REQUEST_ID]"}},"required":["providerPullRequestId"]}}]}},"\/vcs\/installations":{"get":{"summary":"List installations","operationId":"vcsListInstallations","consumes":["application\/json"],"produces":["application\/json"],"tags":["vcs"],"description":"","responses":{"200":{"description":"Installations List","schema":{"$ref":"#\/definitions\/installationList"}}},"x-appwrite":{"method":"listInstallations","weight":261,"cookies":false,"type":"","demo":"vcs\/list-installations.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/vcs\/list-installations.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: provider, organization","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]}},"\/vcs\/installations\/{installationId}":{"get":{"summary":"Get installation","operationId":"vcsGetInstallation","consumes":["application\/json"],"produces":["application\/json"],"tags":["vcs"],"description":"","responses":{"200":{"description":"Installation","schema":{"$ref":"#\/definitions\/installation"}}},"x-appwrite":{"method":"getInstallation","weight":262,"cookies":false,"type":"","demo":"vcs\/get-installation.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/vcs\/get-installation.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"type":"string","x-example":"[INSTALLATION_ID]","in":"path"}]},"delete":{"summary":"Delete Installation","operationId":"vcsDeleteInstallation","consumes":["application\/json"],"produces":[],"tags":["vcs"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteInstallation","weight":263,"cookies":false,"type":"","demo":"vcs\/delete-installation.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/vcs\/delete-installation.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"type":"string","x-example":"[INSTALLATION_ID]","in":"path"}]}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"project","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]},{"name":"proxy","description":"The Proxy Service allows you to configure actions for your domains beyond DNS configuration.","x-globalAttributes":[]},{"name":"graphql","description":"The GraphQL API allows you to query and mutate your Appwrite server using GraphQL.","x-globalAttributes":[]},{"name":"console","description":"The Console service allows you to interact with console relevant informations.","x-globalAttributes":[]},{"name":"migrations","description":"The Migrations service allows you to migrate third-party data to your Appwrite project.","x-globalAttributes":[]},{"name":"messaging","description":"The Messaging service allows you to send messages to any provider type (SMTP, push notification, SMS, etc.).","x-globalAttributes":[]}],"definitions":{"any":{"description":"Any","type":"object","additionalProperties":true},"documentList":{"description":"Documents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of documents documents that matched your query.","x-example":5,"format":"int32"},"documents":{"type":"array","description":"List of documents.","items":{"type":"object","$ref":"#\/definitions\/document"},"x-example":""}},"required":["total","documents"]},"collectionList":{"description":"Collections List","type":"object","properties":{"total":{"type":"integer","description":"Total number of collections documents that matched your query.","x-example":5,"format":"int32"},"collections":{"type":"array","description":"List of collections.","items":{"type":"object","$ref":"#\/definitions\/collection"},"x-example":""}},"required":["total","collections"]},"databaseList":{"description":"Databases List","type":"object","properties":{"total":{"type":"integer","description":"Total number of databases documents that matched your query.","x-example":5,"format":"int32"},"databases":{"type":"array","description":"List of databases.","items":{"type":"object","$ref":"#\/definitions\/database"},"x-example":""}},"required":["total","databases"]},"indexList":{"description":"Indexes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of indexes documents that matched your query.","x-example":5,"format":"int32"},"indexes":{"type":"array","description":"List of indexes.","items":{"type":"object","$ref":"#\/definitions\/index"},"x-example":""}},"required":["total","indexes"]},"userList":{"description":"Users List","type":"object","properties":{"total":{"type":"integer","description":"Total number of users documents that matched your query.","x-example":5,"format":"int32"},"users":{"type":"array","description":"List of users.","items":{"type":"object","$ref":"#\/definitions\/user"},"x-example":""}},"required":["total","users"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of sessions documents that matched your query.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"type":"object","$ref":"#\/definitions\/session"},"x-example":""}},"required":["total","sessions"]},"identityList":{"description":"Identities List","type":"object","properties":{"total":{"type":"integer","description":"Total number of identities documents that matched your query.","x-example":5,"format":"int32"},"identities":{"type":"array","description":"List of identities.","items":{"type":"object","$ref":"#\/definitions\/identity"},"x-example":""}},"required":["total","identities"]},"logList":{"description":"Logs List","type":"object","properties":{"total":{"type":"integer","description":"Total number of logs documents that matched your query.","x-example":5,"format":"int32"},"logs":{"type":"array","description":"List of logs.","items":{"type":"object","$ref":"#\/definitions\/log"},"x-example":""}},"required":["total","logs"]},"fileList":{"description":"Files List","type":"object","properties":{"total":{"type":"integer","description":"Total number of files documents that matched your query.","x-example":5,"format":"int32"},"files":{"type":"array","description":"List of files.","items":{"type":"object","$ref":"#\/definitions\/file"},"x-example":""}},"required":["total","files"]},"bucketList":{"description":"Buckets List","type":"object","properties":{"total":{"type":"integer","description":"Total number of buckets documents that matched your query.","x-example":5,"format":"int32"},"buckets":{"type":"array","description":"List of buckets.","items":{"type":"object","$ref":"#\/definitions\/bucket"},"x-example":""}},"required":["total","buckets"]},"teamList":{"description":"Teams List","type":"object","properties":{"total":{"type":"integer","description":"Total number of teams documents that matched your query.","x-example":5,"format":"int32"},"teams":{"type":"array","description":"List of teams.","items":{"type":"object","$ref":"#\/definitions\/team"},"x-example":""}},"required":["total","teams"]},"membershipList":{"description":"Memberships List","type":"object","properties":{"total":{"type":"integer","description":"Total number of memberships documents that matched your query.","x-example":5,"format":"int32"},"memberships":{"type":"array","description":"List of memberships.","items":{"type":"object","$ref":"#\/definitions\/membership"},"x-example":""}},"required":["total","memberships"]},"functionList":{"description":"Functions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of functions documents that matched your query.","x-example":5,"format":"int32"},"functions":{"type":"array","description":"List of functions.","items":{"type":"object","$ref":"#\/definitions\/function"},"x-example":""}},"required":["total","functions"]},"installationList":{"description":"Installations List","type":"object","properties":{"total":{"type":"integer","description":"Total number of installations documents that matched your query.","x-example":5,"format":"int32"},"installations":{"type":"array","description":"List of installations.","items":{"type":"object","$ref":"#\/definitions\/installation"},"x-example":""}},"required":["total","installations"]},"providerRepositoryList":{"description":"Provider Repositories List","type":"object","properties":{"total":{"type":"integer","description":"Total number of providerRepositories documents that matched your query.","x-example":5,"format":"int32"},"providerRepositories":{"type":"array","description":"List of providerRepositories.","items":{"type":"object","$ref":"#\/definitions\/providerRepository"},"x-example":""}},"required":["total","providerRepositories"]},"branchList":{"description":"Branches List","type":"object","properties":{"total":{"type":"integer","description":"Total number of branches documents that matched your query.","x-example":5,"format":"int32"},"branches":{"type":"array","description":"List of branches.","items":{"type":"object","$ref":"#\/definitions\/branch"},"x-example":""}},"required":["total","branches"]},"runtimeList":{"description":"Runtimes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of runtimes documents that matched your query.","x-example":5,"format":"int32"},"runtimes":{"type":"array","description":"List of runtimes.","items":{"type":"object","$ref":"#\/definitions\/runtime"},"x-example":""}},"required":["total","runtimes"]},"deploymentList":{"description":"Deployments List","type":"object","properties":{"total":{"type":"integer","description":"Total number of deployments documents that matched your query.","x-example":5,"format":"int32"},"deployments":{"type":"array","description":"List of deployments.","items":{"type":"object","$ref":"#\/definitions\/deployment"},"x-example":""}},"required":["total","deployments"]},"executionList":{"description":"Executions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of executions documents that matched your query.","x-example":5,"format":"int32"},"executions":{"type":"array","description":"List of executions.","items":{"type":"object","$ref":"#\/definitions\/execution"},"x-example":""}},"required":["total","executions"]},"projectList":{"description":"Projects List","type":"object","properties":{"total":{"type":"integer","description":"Total number of projects documents that matched your query.","x-example":5,"format":"int32"},"projects":{"type":"array","description":"List of projects.","items":{"type":"object","$ref":"#\/definitions\/project"},"x-example":""}},"required":["total","projects"]},"webhookList":{"description":"Webhooks List","type":"object","properties":{"total":{"type":"integer","description":"Total number of webhooks documents that matched your query.","x-example":5,"format":"int32"},"webhooks":{"type":"array","description":"List of webhooks.","items":{"type":"object","$ref":"#\/definitions\/webhook"},"x-example":""}},"required":["total","webhooks"]},"keyList":{"description":"API Keys List","type":"object","properties":{"total":{"type":"integer","description":"Total number of keys documents that matched your query.","x-example":5,"format":"int32"},"keys":{"type":"array","description":"List of keys.","items":{"type":"object","$ref":"#\/definitions\/key"},"x-example":""}},"required":["total","keys"]},"platformList":{"description":"Platforms List","type":"object","properties":{"total":{"type":"integer","description":"Total number of platforms documents that matched your query.","x-example":5,"format":"int32"},"platforms":{"type":"array","description":"List of platforms.","items":{"type":"object","$ref":"#\/definitions\/platform"},"x-example":""}},"required":["total","platforms"]},"countryList":{"description":"Countries List","type":"object","properties":{"total":{"type":"integer","description":"Total number of countries documents that matched your query.","x-example":5,"format":"int32"},"countries":{"type":"array","description":"List of countries.","items":{"type":"object","$ref":"#\/definitions\/country"},"x-example":""}},"required":["total","countries"]},"continentList":{"description":"Continents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of continents documents that matched your query.","x-example":5,"format":"int32"},"continents":{"type":"array","description":"List of continents.","items":{"type":"object","$ref":"#\/definitions\/continent"},"x-example":""}},"required":["total","continents"]},"languageList":{"description":"Languages List","type":"object","properties":{"total":{"type":"integer","description":"Total number of languages documents that matched your query.","x-example":5,"format":"int32"},"languages":{"type":"array","description":"List of languages.","items":{"type":"object","$ref":"#\/definitions\/language"},"x-example":""}},"required":["total","languages"]},"currencyList":{"description":"Currencies List","type":"object","properties":{"total":{"type":"integer","description":"Total number of currencies documents that matched your query.","x-example":5,"format":"int32"},"currencies":{"type":"array","description":"List of currencies.","items":{"type":"object","$ref":"#\/definitions\/currency"},"x-example":""}},"required":["total","currencies"]},"phoneList":{"description":"Phones List","type":"object","properties":{"total":{"type":"integer","description":"Total number of phones documents that matched your query.","x-example":5,"format":"int32"},"phones":{"type":"array","description":"List of phones.","items":{"type":"object","$ref":"#\/definitions\/phone"},"x-example":""}},"required":["total","phones"]},"variableList":{"description":"Variables List","type":"object","properties":{"total":{"type":"integer","description":"Total number of variables documents that matched your query.","x-example":5,"format":"int32"},"variables":{"type":"array","description":"List of variables.","items":{"type":"object","$ref":"#\/definitions\/variable"},"x-example":""}},"required":["total","variables"]},"proxyRuleList":{"description":"Rule List","type":"object","properties":{"total":{"type":"integer","description":"Total number of rules documents that matched your query.","x-example":5,"format":"int32"},"rules":{"type":"array","description":"List of rules.","items":{"type":"object","$ref":"#\/definitions\/proxyRule"},"x-example":""}},"required":["total","rules"]},"localeCodeList":{"description":"Locale codes list","type":"object","properties":{"total":{"type":"integer","description":"Total number of localeCodes documents that matched your query.","x-example":5,"format":"int32"},"localeCodes":{"type":"array","description":"List of localeCodes.","items":{"type":"object","$ref":"#\/definitions\/localeCode"},"x-example":""}},"required":["total","localeCodes"]},"providerList":{"description":"Provider list","type":"object","properties":{"total":{"type":"integer","description":"Total number of providers documents that matched your query.","x-example":5,"format":"int32"},"providers":{"type":"array","description":"List of providers.","items":{"type":"object","$ref":"#\/definitions\/provider"},"x-example":""}},"required":["total","providers"]},"messageList":{"description":"Message list","type":"object","properties":{"total":{"type":"integer","description":"Total number of messages documents that matched your query.","x-example":5,"format":"int32"},"messages":{"type":"array","description":"List of messages.","items":{"type":"object","$ref":"#\/definitions\/message"},"x-example":""}},"required":["total","messages"]},"topicList":{"description":"Topic list","type":"object","properties":{"total":{"type":"integer","description":"Total number of topics documents that matched your query.","x-example":5,"format":"int32"},"topics":{"type":"array","description":"List of topics.","items":{"type":"object","$ref":"#\/definitions\/topic"},"x-example":""}},"required":["total","topics"]},"subscriberList":{"description":"Subscriber list","type":"object","properties":{"total":{"type":"integer","description":"Total number of subscribers documents that matched your query.","x-example":5,"format":"int32"},"subscribers":{"type":"array","description":"List of subscribers.","items":{"type":"object","$ref":"#\/definitions\/subscriber"},"x-example":""}},"required":["total","subscribers"]},"targetList":{"description":"Target list","type":"object","properties":{"total":{"type":"integer","description":"Total number of targets documents that matched your query.","x-example":5,"format":"int32"},"targets":{"type":"array","description":"List of targets.","items":{"type":"object","$ref":"#\/definitions\/target"},"x-example":""}},"required":["total","targets"]},"migrationList":{"description":"Migrations List","type":"object","properties":{"total":{"type":"integer","description":"Total number of migrations documents that matched your query.","x-example":5,"format":"int32"},"migrations":{"type":"array","description":"List of migrations.","items":{"type":"object","$ref":"#\/definitions\/migration"},"x-example":""}},"required":["total","migrations"]},"firebaseProjectList":{"description":"Migrations Firebase Projects List","type":"object","properties":{"total":{"type":"integer","description":"Total number of projects documents that matched your query.","x-example":5,"format":"int32"},"projects":{"type":"array","description":"List of projects.","items":{"type":"object","$ref":"#\/definitions\/firebaseProject"},"x-example":""}},"required":["total","projects"]},"database":{"description":"Database","type":"object","properties":{"$id":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Database name.","x-example":"My Database"},"$createdAt":{"type":"string","description":"Database creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Database update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"enabled":{"type":"boolean","description":"If database is enabled. Can be 'enabled' or 'disabled'. When disabled, the database is inaccessible to users, but remains accessible to Server SDKs using API keys.","x-example":false}},"required":["$id","name","$createdAt","$updatedAt","enabled"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Collection creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Collection update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Collection permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled. Can be 'enabled' or 'disabled'. When disabled, the collection is inaccessible to users, but remains accessible to Server SDKs using API keys.","x-example":false},"documentSecurity":{"type":"boolean","description":"Whether document-level permissions are enabled. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":true},"attributes":{"type":"array","description":"Collection attributes.","items":{"x-anyOf":[{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeRelationship"},{"$ref":"#\/definitions\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"type":"object","$ref":"#\/definitions\/index"},"x-example":{}}},"required":["$id","$createdAt","$updatedAt","$permissions","databaseId","name","enabled","documentSecurity","attributes","indexes"]},"attributeList":{"description":"Attributes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of attributes in the given collection.","x-example":5,"format":"int32"},"attributes":{"type":"array","description":"List of attributes.","items":{"x-anyOf":[{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeRelationship"},{"$ref":"#\/definitions\/attributeString"}]},"x-example":""}},"required":["total","attributes"]},"attributeString":{"description":"AttributeString","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"fullName"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"size":{"type":"integer","description":"Attribute size.","x-example":128,"format":"int32"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"default","x-nullable":true}},"required":["key","type","status","error","required","size"]},"attributeInteger":{"description":"AttributeInteger","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"count"},"type":{"type":"string","description":"Attribute type.","x-example":"integer"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"min":{"type":"integer","description":"Minimum value to enforce for new documents.","x-example":1,"format":"int32","x-nullable":true},"max":{"type":"integer","description":"Maximum value to enforce for new documents.","x-example":10,"format":"int32","x-nullable":true},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":10,"format":"int32","x-nullable":true}},"required":["key","type","status","error","required"]},"attributeFloat":{"description":"AttributeFloat","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"percentageCompleted"},"type":{"type":"string","description":"Attribute type.","x-example":"double"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"min":{"type":"number","description":"Minimum value to enforce for new documents.","x-example":1.5,"format":"double","x-nullable":true},"max":{"type":"number","description":"Maximum value to enforce for new documents.","x-example":10.5,"format":"double","x-nullable":true},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":2.5,"format":"double","x-nullable":true}},"required":["key","type","status","error","required"]},"attributeBoolean":{"description":"AttributeBoolean","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"isEnabled"},"type":{"type":"string","description":"Attribute type.","x-example":"boolean"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":false,"x-nullable":true}},"required":["key","type","status","error","required"]},"attributeEmail":{"description":"AttributeEmail","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"userEmail"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"format":{"type":"string","description":"String format.","x-example":"email"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"default@example.com","x-nullable":true}},"required":["key","type","status","error","required","format"]},"attributeEnum":{"description":"AttributeEnum","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"status"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"elements":{"type":"array","description":"Array of elements in enumerated type.","items":{"type":"string"},"x-example":"element"},"format":{"type":"string","description":"String format.","x-example":"enum"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"element","x-nullable":true}},"required":["key","type","status","error","required","elements","format"]},"attributeIp":{"description":"AttributeIP","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"ipAddress"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"format":{"type":"string","description":"String format.","x-example":"ip"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"192.0.2.0","x-nullable":true}},"required":["key","type","status","error","required","format"]},"attributeUrl":{"description":"AttributeURL","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"githubUrl"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"format":{"type":"string","description":"String format.","x-example":"url"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"http:\/\/example.com","x-nullable":true}},"required":["key","type","status","error","required","format"]},"attributeDatetime":{"description":"AttributeDatetime","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"birthDay"},"type":{"type":"string","description":"Attribute type.","x-example":"datetime"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"format":{"type":"string","description":"ISO 8601 format.","x-example":"datetime"},"default":{"type":"string","description":"Default value for attribute when not provided. Only null is optional","x-example":"2020-10-15T06:38:00.000+00:00","x-nullable":true}},"required":["key","type","status","error","required","format"]},"attributeRelationship":{"description":"AttributeRelationship","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"fullName"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"relatedCollection":{"type":"string","description":"The ID of the related collection.","x-example":"collection"},"relationType":{"type":"string","description":"The type of the relationship.","x-example":"oneToOne|oneToMany|manyToOne|manyToMany"},"twoWay":{"type":"boolean","description":"Is the relationship two-way?","x-example":false},"twoWayKey":{"type":"string","description":"The key of the two-way relationship.","x-example":"string"},"onDelete":{"type":"string","description":"How deleting the parent document will propagate to child documents.","x-example":"restrict|cascade|setNull"},"side":{"type":"string","description":"Whether this is the parent or child side of the relationship","x-example":"parent|child"}},"required":["key","type","status","error","required","relatedCollection","relationType","twoWay","twoWayKey","onDelete","side"]},"index":{"description":"Index","type":"object","properties":{"key":{"type":"string","description":"Index Key.","x-example":"index1"},"type":{"type":"string","description":"Index type.","x-example":"primary"},"status":{"type":"string","description":"Index status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an index.","x-example":"string"},"attributes":{"type":"array","description":"Index attributes.","items":{"type":"string"},"x-example":[]},"orders":{"type":"array","description":"Index orders.","items":{"type":"string"},"x-example":[],"x-nullable":true}},"required":["key","type","status","error","attributes"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"user":{"description":"User","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"password":{"type":"string","description":"Hashed user password.","x-example":"$argon2id$v=19$m=2048,t=4,p=3$aUZjLnliVWRINmFNTWMudg$5S+x+7uA31xFnrHFT47yFwcJeaP0w92L\/4LdgrVRXxE","x-nullable":true},"hash":{"type":"string","description":"Password hashing algorithm.","x-example":"argon2","x-nullable":true},"hashOptions":{"type":"object","description":"Password hashing algorithm configuration.","x-example":{},"items":{"x-oneOf":[{"$ref":"#\/definitions\/algoArgon2"},{"$ref":"#\/definitions\/algoScrypt"},{"$ref":"#\/definitions\/algoScryptModified"},{"$ref":"#\/definitions\/algoBcrypt"},{"$ref":"#\/definitions\/algoPhpass"},{"$ref":"#\/definitions\/algoSha"},{"$ref":"#\/definitions\/algoMd5"}]},"x-nullable":true},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"labels":{"type":"array","description":"Labels for the user.","items":{"type":"string"},"x-example":["vip"]},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"mfa":{"type":"boolean","description":"Multi factor authentication status.","x-example":true},"totp":{"type":"boolean","description":"TOTP status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"type":"object","$ref":"#\/definitions\/preferences"}},"targets":{"type":"array","description":"A user-owned message receiver. A single user may have multiple e.g. emails, phones, and a browser. Each target is registered with a single provider.","items":{"type":"object","$ref":"#\/definitions\/target"},"x-example":[]},"accessedAt":{"type":"string","description":"Most recent access date in ISO 8601 format. This attribute is only updated again after 24 hours.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","$updatedAt","name","registration","status","labels","passwordUpdate","email","phone","emailVerification","phoneVerification","mfa","totp","prefs","targets","accessedAt"]},"algoMd5":{"description":"AlgoMD5","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"md5"}},"required":["type"]},"algoSha":{"description":"AlgoSHA","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"sha"}},"required":["type"]},"algoPhpass":{"description":"AlgoPHPass","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"phpass"}},"required":["type"]},"algoBcrypt":{"description":"AlgoBcrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"bcrypt"}},"required":["type"]},"algoScrypt":{"description":"AlgoScrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scrypt"},"costCpu":{"type":"integer","description":"CPU complexity of computed hash.","x-example":8,"format":"int32"},"costMemory":{"type":"integer","description":"Memory complexity of computed hash.","x-example":14,"format":"int32"},"costParallel":{"type":"integer","description":"Parallelization of computed hash.","x-example":1,"format":"int32"},"length":{"type":"integer","description":"Length used to compute hash.","x-example":64,"format":"int32"}},"required":["type","costCpu","costMemory","costParallel","length"]},"algoScryptModified":{"description":"AlgoScryptModified","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scryptMod"},"salt":{"type":"string","description":"Salt used to compute hash.","x-example":"UxLMreBr6tYyjQ=="},"saltSeparator":{"type":"string","description":"Separator used to compute hash.","x-example":"Bw=="},"signerKey":{"type":"string","description":"Key used to compute hash.","x-example":"XyEKE9RcTDeLEsL\/RjwPDBv\/RqDl8fb3gpYEOQaPihbxf1ZAtSOHCjuAAa7Q3oHpCYhXSN9tizHgVOwn6krflQ=="}},"required":["type","salt","saltSeparator","signerKey"]},"algoArgon2":{"description":"AlgoArgon2","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"argon2"},"memoryCost":{"type":"integer","description":"Memory used to compute hash.","x-example":65536,"format":"int32"},"timeCost":{"type":"integer","description":"Amount of time consumed to compute hash","x-example":4,"format":"int32"},"threads":{"type":"integer","description":"Number of threads used to compute hash.","x-example":3,"format":"int32"}},"required":["type","memoryCost","timeCost","threads"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true},"factors":{"type":"array","description":"Returns a list of active session factors.","items":{"type":"string"},"x-example":["email"]},"secret":{"type":"string","description":"Secret used to authenticate the user. Only included if the request was made with an API key","x-example":"5e5bb8c16897e"}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current","factors","secret"]},"identity":{"description":"Identity","type":"object","properties":{"$id":{"type":"string","description":"Identity ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Identity creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Identity update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"provider":{"type":"string","description":"Identity Provider.","x-example":"email"},"providerUid":{"type":"string","description":"ID of the User in the Identity Provider.","x-example":"5e5bb8c16897e"},"providerEmail":{"type":"string","description":"Email of the User in the Identity Provider.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Identity Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Identity Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"}},"required":["$id","$createdAt","$updatedAt","userId","provider","providerUid","providerEmail","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"phrase":{"type":"string","description":"Security phrase of a token. Empty if security phrase was not requested when creating a token. It includes randomly generated phrase which is also sent in the external resource such as email.","x-example":"Golden Fox"}},"required":["$id","$createdAt","userId","secret","expire","phrase"]},"jwt":{"description":"JWT","type":"object","properties":{"jwt":{"type":"string","description":"JWT encoded string.","x-example":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c"}},"required":["jwt"]},"locale":{"description":"Locale","type":"object","properties":{"ip":{"type":"string","description":"User IP address.","x-example":"127.0.0.1"},"countryCode":{"type":"string","description":"Country code in [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) two-character format","x-example":"US"},"country":{"type":"string","description":"Country name. This field support localization.","x-example":"United States"},"continentCode":{"type":"string","description":"Continent code. A two character continent code \"AF\" for Africa, \"AN\" for Antarctica, \"AS\" for Asia, \"EU\" for Europe, \"NA\" for North America, \"OC\" for Oceania, and \"SA\" for South America.","x-example":"NA"},"continent":{"type":"string","description":"Continent name. This field support localization.","x-example":"North America"},"eu":{"type":"boolean","description":"True if country is part of the European Union.","x-example":false},"currency":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format","x-example":"USD"}},"required":["ip","countryCode","country","continentCode","continent","eu","currency"]},"localeCode":{"description":"LocaleCode","type":"object","properties":{"code":{"type":"string","description":"Locale codes in [ISO 639-1](https:\/\/en.wikipedia.org\/wiki\/List_of_ISO_639-1_codes)","x-example":"en-us"},"name":{"type":"string","description":"Locale name","x-example":"US"}},"required":["code","name"]},"file":{"description":"File","type":"object","properties":{"$id":{"type":"string","description":"File ID.","x-example":"5e5ea5c16897e"},"bucketId":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Bucket creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Bucket update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Bucket permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"fileSecurity":{"type":"boolean","description":"Whether file-level security is enabled. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":true},"name":{"type":"string","description":"Bucket name.","x-example":"Documents"},"enabled":{"type":"boolean","description":"Bucket enabled.","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size supported.","x-example":100,"format":"int32"},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions.","items":{"type":"string"},"x-example":["jpg","png"]},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Will be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd).","x-example":"gzip"},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$createdAt","$updatedAt","$permissions","fileSecurity","name","enabled","maximumFileSize","allowedFileExtensions","compression","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"},"prefs":{"type":"object","description":"Team preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"type":"object","$ref":"#\/definitions\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","total","prefs"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"mfa":{"type":"boolean","description":"Multi factor authentication status, true if the user has MFA enabled or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":["owner"]}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","mfa","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Function creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Function update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"users"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"enabled":{"type":"boolean","description":"Function enabled.","x-example":false},"live":{"type":"boolean","description":"Is the function deployed with the latest configuration? This is set to false if you've changed an environment variables, entrypoint, commands, or other settings that needs redeploy to be applied. When the value is false, redeploy the function to update it with the latest configuration.","x-example":false},"logging":{"type":"boolean","description":"Whether executions will be logged. When set to false, executions will not be logged, but will reduce resource used by your Appwrite project.","x-example":false},"runtime":{"type":"string","description":"Function execution runtime.","x-example":"python-3.8"},"deployment":{"type":"string","description":"Function's active deployment ID.","x-example":"5e5ea5c16897e"},"vars":{"type":"array","description":"Function variables.","items":{"type":"object","$ref":"#\/definitions\/variable"},"x-example":[]},"events":{"type":"array","description":"Function trigger events.","items":{"type":"string"},"x-example":"account.create"},"schedule":{"type":"string","description":"Function execution schedult in CRON format.","x-example":"5 4 * * *"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":300,"format":"int32"},"entrypoint":{"type":"string","description":"The entrypoint file used to execute the deployment.","x-example":"index.js"},"commands":{"type":"string","description":"The build command used to build the deployment.","x-example":"npm install"},"version":{"type":"string","description":"Version of Open Runtimes used for the function.","x-example":"v2"},"installationId":{"type":"string","description":"Function VCS (Version Control System) installation id.","x-example":"6m40at4ejk5h2u9s1hboo"},"providerRepositoryId":{"type":"string","description":"VCS (Version Control System) Repository ID","x-example":"appwrite"},"providerBranch":{"type":"string","description":"VCS (Version Control System) branch name","x-example":"main"},"providerRootDirectory":{"type":"string","description":"Path to function in VCS (Version Control System) repository","x-example":"functions\/helloWorld"},"providerSilentMode":{"type":"boolean","description":"Is VCS (Version Control System) connection is in silent mode? When in silence mode, no comments will be posted on the repository pull or merge requests","x-example":false}},"required":["$id","$createdAt","$updatedAt","execute","name","enabled","live","logging","runtime","deployment","vars","events","schedule","timeout","entrypoint","commands","version","installationId","providerRepositoryId","providerBranch","providerRootDirectory","providerSilentMode"]},"installation":{"description":"Installation","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Function creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Function update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"VCS (Version Control System) provider name.","x-example":"github"},"organization":{"type":"string","description":"VCS (Version Control System) organization name.","x-example":"appwrite"},"providerInstallationId":{"type":"string","description":"VCS (Version Control System) installation ID.","x-example":"5322"}},"required":["$id","$createdAt","$updatedAt","provider","organization","providerInstallationId"]},"providerRepository":{"description":"ProviderRepository","type":"object","properties":{"id":{"type":"string","description":"VCS (Version Control System) repository ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"VCS (Version Control System) repository name.","x-example":"appwrite"},"organization":{"type":"string","description":"VCS (Version Control System) organization name","x-example":"appwrite"},"provider":{"type":"string","description":"VCS (Version Control System) provider name.","x-example":"github"},"private":{"type":"boolean","description":"Is VCS (Version Control System) repository private?","x-example":true},"runtime":{"type":"string","description":"Auto-detected runtime suggestion. Empty if getting response of getRuntime().","x-example":"node"},"pushedAt":{"type":"string","description":"Last commit date in ISO 8601 format.","x-example":"datetime"}},"required":["id","name","organization","provider","private","runtime","pushedAt"]},"detection":{"description":"Detection","type":"object","properties":{"runtime":{"type":"string","description":"Runtime","x-example":"node"}},"required":["runtime"]},"branch":{"description":"Branch","type":"object","properties":{"name":{"type":"string","description":"Branch Name.","x-example":"main"}},"required":["name"]},"runtime":{"description":"Runtime","type":"object","properties":{"$id":{"type":"string","description":"Runtime ID.","x-example":"python-3.8"},"name":{"type":"string","description":"Runtime Name.","x-example":"Python"},"version":{"type":"string","description":"Runtime version.","x-example":"3.8"},"base":{"type":"string","description":"Base Docker image used to build the runtime.","x-example":"python:3.8-alpine"},"image":{"type":"string","description":"Image name of Docker Hub.","x-example":"appwrite\\\/runtime-for-python:3.8"},"logo":{"type":"string","description":"Name of the logo image.","x-example":"python.png"},"supports":{"type":"array","description":"List of supported architectures.","items":{"type":"string"},"x-example":"amd64"}},"required":["$id","name","version","base","image","logo","supports"]},"deployment":{"description":"Deployment","type":"object","properties":{"$id":{"type":"string","description":"Deployment ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Deployment creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Deployment update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"type":{"type":"string","description":"Type of deployment.","x-example":"vcs"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"index.js"},"size":{"type":"integer","description":"The code size in bytes.","x-example":128,"format":"int32"},"buildId":{"type":"string","description":"The current build ID.","x-example":"5e5ea5c16897e"},"activate":{"type":"boolean","description":"Whether the deployment should be automatically activated.","x-example":true},"status":{"type":"string","description":"The deployment status. Possible values are \"processing\", \"building\", \"waiting\", \"ready\", and \"failed\".","x-example":"ready"},"buildLogs":{"type":"string","description":"The build logs.","x-example":"Compiling source files..."},"buildTime":{"type":"integer","description":"The current build time in seconds.","x-example":128,"format":"int32"},"providerRepositoryName":{"type":"string","description":"The name of the vcs provider repository","x-example":"database"},"providerRepositoryOwner":{"type":"string","description":"The name of the vcs provider repository owner","x-example":"utopia"},"providerRepositoryUrl":{"type":"string","description":"The url of the vcs provider repository","x-example":"https:\/\/github.com\/vermakhushboo\/g4-node-function"},"providerBranch":{"type":"string","description":"The branch of the vcs repository","x-example":"0.7.x"},"providerCommitHash":{"type":"string","description":"The commit hash of the vcs commit","x-example":"7c3f25d"},"providerCommitAuthorUrl":{"type":"string","description":"The url of vcs commit author","x-example":"https:\/\/github.com\/vermakhushboo"},"providerCommitAuthor":{"type":"string","description":"The name of vcs commit author","x-example":"Khushboo Verma"},"providerCommitMessage":{"type":"string","description":"The commit message","x-example":"Update index.js"},"providerCommitUrl":{"type":"string","description":"The url of the vcs commit","x-example":"https:\/\/github.com\/vermakhushboo\/g4-node-function\/commit\/60c0416257a9cbcdd96b2d370c38d8f8d150ccfb"},"providerBranchUrl":{"type":"string","description":"The branch of the vcs repository","x-example":"https:\/\/github.com\/vermakhushboo\/appwrite\/tree\/0.7.x"}},"required":["$id","$createdAt","$updatedAt","type","resourceId","resourceType","entrypoint","size","buildId","activate","status","buildLogs","buildTime","providerRepositoryName","providerRepositoryOwner","providerRepositoryUrl","providerBranch","providerCommitHash","providerCommitAuthorUrl","providerCommitAuthor","providerCommitMessage","providerCommitUrl","providerBranchUrl"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"requestMethod":{"type":"string","description":"HTTP request method type.","x-example":"GET"},"requestPath":{"type":"string","description":"HTTP request path and query.","x-example":"\/articles?id=5"},"requestHeaders":{"type":"array","description":"HTTP response headers as a key-value object. This will return only whitelisted headers. All headers are returned if execution is created as synchronous.","items":{"type":"object","$ref":"#\/definitions\/headers"},"x-example":[{"Content-Type":"application\/json"}]},"responseStatusCode":{"type":"integer","description":"HTTP response status code.","x-example":200,"format":"int32"},"responseBody":{"type":"string","description":"HTTP response body. This will return empty unless execution is created as synchronous.","x-example":"Developers are awesome."},"responseHeaders":{"type":"array","description":"HTTP response headers as a key-value object. This will return only whitelisted headers. All headers are returned if execution is created as synchronous.","items":{"type":"object","$ref":"#\/definitions\/headers"},"x-example":[{"Content-Type":"application\/json"}]},"logs":{"type":"string","description":"Function logs. Includes the last 4,000 characters. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"errors":{"type":"string","description":"Function errors. Includes the last 4,000 characters. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"Function execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","requestMethod","requestPath","requestHeaders","responseStatusCode","responseBody","responseHeaders","logs","errors","duration"]},"project":{"description":"Project","type":"object","properties":{"$id":{"type":"string","description":"Project ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Project creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Project update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Project name.","x-example":"New Project"},"description":{"type":"string","description":"Project description.","x-example":"This is a new project."},"teamId":{"type":"string","description":"Project team ID.","x-example":"1592981250"},"logo":{"type":"string","description":"Project logo file ID.","x-example":"5f5c451b403cb"},"url":{"type":"string","description":"Project website URL.","x-example":"5f5c451b403cb"},"legalName":{"type":"string","description":"Company legal name.","x-example":"Company LTD."},"legalCountry":{"type":"string","description":"Country code in [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) two-character format.","x-example":"US"},"legalState":{"type":"string","description":"State name.","x-example":"New York"},"legalCity":{"type":"string","description":"City name.","x-example":"New York City."},"legalAddress":{"type":"string","description":"Company Address.","x-example":"620 Eighth Avenue, New York, NY 10018"},"legalTaxId":{"type":"string","description":"Company Tax ID.","x-example":"131102020"},"authDuration":{"type":"integer","description":"Session duration in seconds.","x-example":60,"format":"int32"},"authLimit":{"type":"integer","description":"Max users allowed. 0 is unlimited.","x-example":100,"format":"int32"},"authSessionsLimit":{"type":"integer","description":"Max sessions allowed per user. 100 maximum.","x-example":10,"format":"int32"},"authPasswordHistory":{"type":"integer","description":"Max allowed passwords in the history list per user. Max passwords limit allowed in history is 20. Use 0 for disabling password history.","x-example":5,"format":"int32"},"authPasswordDictionary":{"type":"boolean","description":"Whether or not to check user's password against most commonly used passwords.","x-example":true},"authPersonalDataCheck":{"type":"boolean","description":"Whether or not to check the user password for similarity with their personal data.","x-example":true},"oAuthProviders":{"type":"array","description":"List of Auth Providers.","items":{"type":"object","$ref":"#\/definitions\/authProvider"},"x-example":[{}]},"platforms":{"type":"array","description":"List of Platforms.","items":{"type":"object","$ref":"#\/definitions\/platform"},"x-example":{}},"webhooks":{"type":"array","description":"List of Webhooks.","items":{"type":"object","$ref":"#\/definitions\/webhook"},"x-example":{}},"keys":{"type":"array","description":"List of API Keys.","items":{"type":"object","$ref":"#\/definitions\/key"},"x-example":{}},"smtpEnabled":{"type":"boolean","description":"Status for custom SMTP","x-example":false},"smtpSenderName":{"type":"string","description":"SMTP sender name","x-example":"John Appwrite"},"smtpSenderEmail":{"type":"string","description":"SMTP sender email","x-example":"john@appwrite.io"},"smtpReplyTo":{"type":"string","description":"SMTP reply to email","x-example":"support@appwrite.io"},"smtpHost":{"type":"string","description":"SMTP server host name","x-example":"mail.appwrite.io"},"smtpPort":{"type":"integer","description":"SMTP server port","x-example":25,"format":"int32"},"smtpUsername":{"type":"string","description":"SMTP server username","x-example":"emailuser"},"smtpPassword":{"type":"string","description":"SMTP server password","x-example":"securepassword"},"smtpSecure":{"type":"string","description":"SMTP server secure protocol","x-example":"tls"},"authEmailPassword":{"type":"boolean","description":"Email\/Password auth method status","x-example":true},"authUsersAuthMagicURL":{"type":"boolean","description":"Magic URL auth method status","x-example":true},"authEmailOtp":{"type":"boolean","description":"Email (OTP) auth method status","x-example":true},"authAnonymous":{"type":"boolean","description":"Anonymous auth method status","x-example":true},"authInvites":{"type":"boolean","description":"Invites auth method status","x-example":true},"authJWT":{"type":"boolean","description":"JWT auth method status","x-example":true},"authPhone":{"type":"boolean","description":"Phone auth method status","x-example":true},"serviceStatusForAccount":{"type":"boolean","description":"Account service status","x-example":true},"serviceStatusForAvatars":{"type":"boolean","description":"Avatars service status","x-example":true},"serviceStatusForDatabases":{"type":"boolean","description":"Databases service status","x-example":true},"serviceStatusForLocale":{"type":"boolean","description":"Locale service status","x-example":true},"serviceStatusForHealth":{"type":"boolean","description":"Health service status","x-example":true},"serviceStatusForStorage":{"type":"boolean","description":"Storage service status","x-example":true},"serviceStatusForTeams":{"type":"boolean","description":"Teams service status","x-example":true},"serviceStatusForUsers":{"type":"boolean","description":"Users service status","x-example":true},"serviceStatusForFunctions":{"type":"boolean","description":"Functions service status","x-example":true},"serviceStatusForGraphql":{"type":"boolean","description":"GraphQL service status","x-example":true},"serviceStatusForMessaging":{"type":"boolean","description":"Messaging service status","x-example":true}},"required":["$id","$createdAt","$updatedAt","name","description","teamId","logo","url","legalName","legalCountry","legalState","legalCity","legalAddress","legalTaxId","authDuration","authLimit","authSessionsLimit","authPasswordHistory","authPasswordDictionary","authPersonalDataCheck","oAuthProviders","platforms","webhooks","keys","smtpEnabled","smtpSenderName","smtpSenderEmail","smtpReplyTo","smtpHost","smtpPort","smtpUsername","smtpPassword","smtpSecure","authEmailPassword","authUsersAuthMagicURL","authEmailOtp","authAnonymous","authInvites","authJWT","authPhone","serviceStatusForAccount","serviceStatusForAvatars","serviceStatusForDatabases","serviceStatusForLocale","serviceStatusForHealth","serviceStatusForStorage","serviceStatusForTeams","serviceStatusForUsers","serviceStatusForFunctions","serviceStatusForGraphql","serviceStatusForMessaging"]},"webhook":{"description":"Webhook","type":"object","properties":{"$id":{"type":"string","description":"Webhook ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Webhook creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Webhook update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Webhook name.","x-example":"My Webhook"},"url":{"type":"string","description":"Webhook URL endpoint.","x-example":"https:\/\/example.com\/webhook"},"events":{"type":"array","description":"Webhook trigger events.","items":{"type":"string"},"x-example":"database.collections.update"},"security":{"type":"boolean","description":"Indicated if SSL \/ TLS Certificate verification is enabled.","x-example":true},"httpUser":{"type":"string","description":"HTTP basic authentication username.","x-example":"username"},"httpPass":{"type":"string","description":"HTTP basic authentication password.","x-example":"password"},"signatureKey":{"type":"string","description":"Signature key which can be used to validated incoming","x-example":"ad3d581ca230e2b7059c545e5a"},"enabled":{"type":"boolean","description":"Indicates if this webhook is enabled.","x-example":true},"logs":{"type":"string","description":"Webhook error logs from the most recent failure.","x-example":"Failed to connect to remote server."},"attempts":{"type":"integer","description":"Number of consecutive failed webhook attempts.","x-example":10,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","name","url","events","security","httpUser","httpPass","signatureKey","enabled","logs","attempts"]},"key":{"description":"Key","type":"object","properties":{"$id":{"type":"string","description":"Key ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Key creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Key update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Key name.","x-example":"My API Key"},"expire":{"type":"string","description":"Key expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"scopes":{"type":"array","description":"Allowed permission scopes.","items":{"type":"string"},"x-example":"users.read"},"secret":{"type":"string","description":"Secret key.","x-example":"919c2d18fb5d4...a2ae413da83346ad2"},"accessedAt":{"type":"string","description":"Most recent access date in ISO 8601 format. This attribute is only updated again after 24 hours.","x-example":"2020-10-15T06:38:00.000+00:00"},"sdks":{"type":"array","description":"List of SDK user agents that used this key.","items":{"type":"string"},"x-example":"appwrite:flutter"}},"required":["$id","$createdAt","$updatedAt","name","expire","scopes","secret","accessedAt","sdks"]},"authProvider":{"description":"AuthProvider","type":"object","properties":{"key":{"type":"string","description":"Auth Provider.","x-example":"github"},"name":{"type":"string","description":"Auth Provider name.","x-example":"GitHub"},"appId":{"type":"string","description":"OAuth 2.0 application ID.","x-example":"259125845563242502"},"secret":{"type":"string","description":"OAuth 2.0 application secret. Might be JSON string if provider requires extra configuration.","x-example":"Bpw_g9c2TGXxfgLshDbSaL8tsCcqgczQ"},"enabled":{"type":"boolean","description":"Auth Provider is active and can be used to create session.","x-example":""}},"required":["key","name","appId","secret","enabled"]},"platform":{"description":"Platform","type":"object","properties":{"$id":{"type":"string","description":"Platform ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Platform creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Platform update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Platform name.","x-example":"My Web App"},"type":{"type":"string","description":"Platform type. Possible values are: web, flutter-web, flutter-ios, flutter-android, ios, android, and unity.","x-example":"web"},"key":{"type":"string","description":"Platform Key. iOS bundle ID or Android package name. Empty string for other platforms.","x-example":"com.company.appname"},"store":{"type":"string","description":"App store or Google Play store ID.","x-example":""},"hostname":{"type":"string","description":"Web app hostname. Empty string for other platforms.","x-example":true},"httpUser":{"type":"string","description":"HTTP basic authentication username.","x-example":"username"},"httpPass":{"type":"string","description":"HTTP basic authentication password.","x-example":"password"}},"required":["$id","$createdAt","$updatedAt","name","type","key","store","hostname","httpUser","httpPass"]},"variable":{"description":"Variable","type":"object","properties":{"$id":{"type":"string","description":"Variable ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"key":{"type":"string","description":"Variable key.","x-example":"API_KEY"},"value":{"type":"string","description":"Variable value.","x-example":"myPa$$word1"},"resourceType":{"type":"string","description":"Service to which the variable belongs. Possible values are \"project\", \"function\"","x-example":"function"},"resourceId":{"type":"string","description":"ID of resource to which the variable belongs. If resourceType is \"project\", it is empty. If resourceType is \"function\", it is ID of the function.","x-example":"myAwesomeFunction"}},"required":["$id","$createdAt","$updatedAt","key","value","resourceType","resourceId"]},"country":{"description":"Country","type":"object","properties":{"name":{"type":"string","description":"Country name.","x-example":"United States"},"code":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"}},"required":["name","code"]},"continent":{"description":"Continent","type":"object","properties":{"name":{"type":"string","description":"Continent name.","x-example":"Europe"},"code":{"type":"string","description":"Continent two letter code.","x-example":"EU"}},"required":["name","code"]},"language":{"description":"Language","type":"object","properties":{"name":{"type":"string","description":"Language name.","x-example":"Italian"},"code":{"type":"string","description":"Language two-character ISO 639-1 codes.","x-example":"it"},"nativeName":{"type":"string","description":"Language native name.","x-example":"Italiano"}},"required":["name","code","nativeName"]},"currency":{"description":"Currency","type":"object","properties":{"symbol":{"type":"string","description":"Currency symbol.","x-example":"$"},"name":{"type":"string","description":"Currency name.","x-example":"US dollar"},"symbolNative":{"type":"string","description":"Currency native symbol.","x-example":"$"},"decimalDigits":{"type":"integer","description":"Number of decimal digits.","x-example":2,"format":"int32"},"rounding":{"type":"number","description":"Currency digit rounding.","x-example":0,"format":"double"},"code":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format.","x-example":"USD"},"namePlural":{"type":"string","description":"Currency plural name","x-example":"US dollars"}},"required":["symbol","name","symbolNative","decimalDigits","rounding","code","namePlural"]},"phone":{"description":"Phone","type":"object","properties":{"code":{"type":"string","description":"Phone code.","x-example":"+1"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["code","countryCode","countryName"]},"healthAntivirus":{"description":"Health Antivirus","type":"object","properties":{"version":{"type":"string","description":"Antivirus version.","x-example":"1.0.0"},"status":{"type":"string","description":"Antivirus status. Possible values can are: `disabled`, `offline`, `online`","x-example":"online"}},"required":["version","status"]},"healthQueue":{"description":"Health Queue","type":"object","properties":{"size":{"type":"integer","description":"Amount of actions in the queue.","x-example":8,"format":"int32"}},"required":["size"]},"healthStatus":{"description":"Health Status","type":"object","properties":{"name":{"type":"string","description":"Name of the service.","x-example":"database"},"ping":{"type":"integer","description":"Duration in milliseconds how long the health check took.","x-example":128,"format":"int32"},"status":{"type":"string","description":"Service status. Possible values can are: `pass`, `fail`","x-example":"pass"}},"required":["name","ping","status"]},"healthTime":{"description":"Health Time","type":"object","properties":{"remoteTime":{"type":"integer","description":"Current unix timestamp on trustful remote server.","x-example":1639490751,"format":"int32"},"localTime":{"type":"integer","description":"Current unix timestamp of local server where Appwrite runs.","x-example":1639490844,"format":"int32"},"diff":{"type":"integer","description":"Difference of unix remote and local timestamps in milliseconds.","x-example":93,"format":"int32"}},"required":["remoteTime","localTime","diff"]},"metric":{"description":"Metric","type":"object","properties":{"value":{"type":"integer","description":"The value of this metric at the timestamp.","x-example":1,"format":"int32"},"date":{"type":"string","description":"The date at which this metric was aggregated in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["value","date"]},"metricBreakdown":{"description":"Metric Breakdown","type":"object","properties":{"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Resource name.","x-example":"Documents"},"value":{"type":"integer","description":"The value of this metric at the timestamp.","x-example":1,"format":"int32"}},"required":["resourceId","name","value"]},"usageDatabases":{"description":"UsageDatabases","type":"object","properties":{"range":{"type":"string","description":"Time range of the usage stats.","x-example":"30d"},"databasesTotal":{"type":"integer","description":"Total aggregated number of databases.","x-example":0,"format":"int32"},"collectionsTotal":{"type":"integer","description":"Total aggregated number of collections.","x-example":0,"format":"int32"},"documentsTotal":{"type":"integer","description":"Total aggregated number of documents.","x-example":0,"format":"int32"},"databases":{"type":"array","description":"Aggregated number of databases per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collections":{"type":"array","description":"Aggregated number of collections per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documents":{"type":"array","description":"Aggregated number of documents per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","databasesTotal","collectionsTotal","documentsTotal","databases","collections","documents"]},"usageDatabase":{"description":"UsageDatabase","type":"object","properties":{"range":{"type":"string","description":"Time range of the usage stats.","x-example":"30d"},"collectionsTotal":{"type":"integer","description":"Total aggregated number of collections.","x-example":0,"format":"int32"},"documentsTotal":{"type":"integer","description":"Total aggregated number of documents.","x-example":0,"format":"int32"},"collections":{"type":"array","description":"Aggregated number of collections per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documents":{"type":"array","description":"Aggregated number of documents per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","collectionsTotal","documentsTotal","collections","documents"]},"usageCollection":{"description":"UsageCollection","type":"object","properties":{"range":{"type":"string","description":"Time range of the usage stats.","x-example":"30d"},"documentsTotal":{"type":"integer","description":"Total aggregated number of of documents.","x-example":0,"format":"int32"},"documents":{"type":"array","description":"Aggregated number of documents per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","documentsTotal","documents"]},"usageUsers":{"description":"UsageUsers","type":"object","properties":{"range":{"type":"string","description":"Time range of the usage stats.","x-example":"30d"},"usersTotal":{"type":"integer","description":"Total aggregated number of statistics of users.","x-example":0,"format":"int32"},"sessionsTotal":{"type":"integer","description":"Total aggregated number of active sessions.","x-example":0,"format":"int32"},"users":{"type":"array","description":"Aggregated number of users per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"sessions":{"type":"array","description":"Aggregated number of active sessions per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","usersTotal","sessionsTotal","users","sessions"]},"usageStorage":{"description":"StorageUsage","type":"object","properties":{"range":{"type":"string","description":"Time range of the usage stats.","x-example":"30d"},"bucketsTotal":{"type":"integer","description":"Total aggregated number of buckets","x-example":0,"format":"int32"},"filesTotal":{"type":"integer","description":"Total aggregated number of files.","x-example":0,"format":"int32"},"filesStorageTotal":{"type":"integer","description":"Total aggregated number of files storage (in bytes).","x-example":0,"format":"int32"},"buckets":{"type":"array","description":"Aggregated number of buckets per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"files":{"type":"array","description":"Aggregated number of files per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"storage":{"type":"array","description":"Aggregated number of files storage (in bytes) per period .","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","bucketsTotal","filesTotal","filesStorageTotal","buckets","files","storage"]},"usageBuckets":{"description":"UsageBuckets","type":"object","properties":{"range":{"type":"string","description":"Time range of the usage stats.","x-example":"30d"},"filesTotal":{"type":"integer","description":"Total aggregated number of bucket files.","x-example":0,"format":"int32"},"filesStorageTotal":{"type":"integer","description":"Total aggregated number of bucket files storage (in bytes).","x-example":0,"format":"int32"},"files":{"type":"array","description":"Aggregated number of bucket files per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"storage":{"type":"array","description":"Aggregated number of bucket storage files (in bytes) per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","filesTotal","filesStorageTotal","files","storage"]},"usageFunctions":{"description":"UsageFunctions","type":"object","properties":{"range":{"type":"string","description":"Time range of the usage stats.","x-example":"30d"},"functionsTotal":{"type":"integer","description":"Total aggregated number of functions.","x-example":0,"format":"int32"},"deploymentsTotal":{"type":"integer","description":"Total aggregated number of functions deployments.","x-example":0,"format":"int32"},"deploymentsStorageTotal":{"type":"integer","description":"Total aggregated sum of functions deployment storage.","x-example":0,"format":"int32"},"buildsTotal":{"type":"integer","description":"Total aggregated number of functions build.","x-example":0,"format":"int32"},"buildsStorageTotal":{"type":"integer","description":"total aggregated sum of functions build storage.","x-example":0,"format":"int32"},"buildsTimeTotal":{"type":"integer","description":"Total aggregated sum of functions build compute time.","x-example":0,"format":"int32"},"executionsTotal":{"type":"integer","description":"Total aggregated number of functions execution.","x-example":0,"format":"int32"},"executionsTimeTotal":{"type":"integer","description":"Total aggregated sum of functions execution compute time.","x-example":0,"format":"int32"},"functions":{"type":"array","description":"Aggregated number of functions per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":0},"deployments":{"type":"array","description":"Aggregated number of functions deployment per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"deploymentsStorage":{"type":"array","description":"Aggregated number of functions deployment storage per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"builds":{"type":"array","description":"Aggregated number of functions build per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"buildsStorage":{"type":"array","description":"Aggregated sum of functions build storage per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"buildsTime":{"type":"array","description":"Aggregated sum of functions build compute time per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"executions":{"type":"array","description":"Aggregated number of functions execution per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"executionsTime":{"type":"array","description":"Aggregated number of functions execution compute time per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","functionsTotal","deploymentsTotal","deploymentsStorageTotal","buildsTotal","buildsStorageTotal","buildsTimeTotal","executionsTotal","executionsTimeTotal","functions","deployments","deploymentsStorage","builds","buildsStorage","buildsTime","executions","executionsTime"]},"usageFunction":{"description":"UsageFunction","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"deploymentsTotal":{"type":"integer","description":"Total aggregated number of function deployments.","x-example":0,"format":"int32"},"deploymentsStorageTotal":{"type":"integer","description":"Total aggregated sum of function deployments storage.","x-example":0,"format":"int32"},"buildsTotal":{"type":"integer","description":"Total aggregated number of function builds.","x-example":0,"format":"int32"},"buildsStorageTotal":{"type":"integer","description":"total aggregated sum of function builds storage.","x-example":0,"format":"int32"},"buildsTimeTotal":{"type":"integer","description":"Total aggregated sum of function builds compute time.","x-example":0,"format":"int32"},"executionsTotal":{"type":"integer","description":"Total aggregated number of function executions.","x-example":0,"format":"int32"},"executionsTimeTotal":{"type":"integer","description":"Total aggregated sum of function executions compute time.","x-example":0,"format":"int32"},"deployments":{"type":"array","description":"Aggregated number of function deployments per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"deploymentsStorage":{"type":"array","description":"Aggregated number of function deployments storage per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"builds":{"type":"array","description":"Aggregated number of function builds per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"buildsStorage":{"type":"array","description":"Aggregated sum of function builds storage per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"buildsTime":{"type":"array","description":"Aggregated sum of function builds compute time per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"executions":{"type":"array","description":"Aggregated number of function executions per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"executionsTime":{"type":"array","description":"Aggregated number of function executions compute time per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","deploymentsTotal","deploymentsStorageTotal","buildsTotal","buildsStorageTotal","buildsTimeTotal","executionsTotal","executionsTimeTotal","deployments","deploymentsStorage","builds","buildsStorage","buildsTime","executions","executionsTime"]},"usageProject":{"description":"UsageProject","type":"object","properties":{"executionsTotal":{"type":"integer","description":"Total aggregated number of function executions.","x-example":0,"format":"int32"},"documentsTotal":{"type":"integer","description":"Total aggregated number of documents.","x-example":0,"format":"int32"},"databasesTotal":{"type":"integer","description":"Total aggregated number of databases.","x-example":0,"format":"int32"},"usersTotal":{"type":"integer","description":"Total aggregated number of users.","x-example":0,"format":"int32"},"filesStorageTotal":{"type":"integer","description":"Total aggregated sum of files storage size (in bytes).","x-example":0,"format":"int32"},"bucketsTotal":{"type":"integer","description":"Total aggregated number of buckets.","x-example":0,"format":"int32"},"requests":{"type":"array","description":"Aggregated number of requests per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"network":{"type":"array","description":"Aggregated number of consumed bandwidth per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"users":{"type":"array","description":"Aggregated number of users per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"executions":{"type":"array","description":"Aggregated number of executions per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"executionsBreakdown":{"type":"array","description":"Aggregated breakdown in totals of executions by functions.","items":{"type":"object","$ref":"#\/definitions\/metricBreakdown"},"x-example":[]},"bucketsBreakdown":{"type":"array","description":"Aggregated breakdown in totals of usage by buckets.","items":{"type":"object","$ref":"#\/definitions\/metricBreakdown"},"x-example":[]}},"required":["executionsTotal","documentsTotal","databasesTotal","usersTotal","filesStorageTotal","bucketsTotal","requests","network","users","executions","executionsBreakdown","bucketsBreakdown"]},"headers":{"description":"Headers","type":"object","properties":{"name":{"type":"string","description":"Header name.","x-example":"Content-Type"},"value":{"type":"string","description":"Header value.","x-example":"application\/json"}},"required":["name","value"]},"proxyRule":{"description":"Rule","type":"object","properties":{"$id":{"type":"string","description":"Rule ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Rule creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Rule update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"domain":{"type":"string","description":"Domain name.","x-example":"appwrite.company.com"},"resourceType":{"type":"string","description":"Action definition for the rule. Possible values are \"api\", \"function\", or \"redirect\"","x-example":"function"},"resourceId":{"type":"string","description":"ID of resource for the action type. If resourceType is \"api\" or \"url\", it is empty. If resourceType is \"function\", it is ID of the function.","x-example":"myAwesomeFunction"},"status":{"type":"string","description":"Domain verification status. Possible values are \"created\", \"verifying\", \"verified\" and \"unverified\"","x-example":"verified"},"logs":{"type":"string","description":"Certificate generation logs. This will return an empty string if generation did not run, or succeeded.","x-example":"HTTP challegne failed."},"renewAt":{"type":"string","description":"Certificate auto-renewal date in ISO 8601 format.","x-example":"datetime"}},"required":["$id","$createdAt","$updatedAt","domain","resourceType","resourceId","status","logs","renewAt"]},"smsTemplate":{"description":"SmsTemplate","type":"object","properties":{"type":{"type":"string","description":"Template type","x-example":"verification"},"locale":{"type":"string","description":"Template locale","x-example":"en_us"},"message":{"type":"string","description":"Template message","x-example":"Click on the link to verify your account."}},"required":["type","locale","message"]},"emailTemplate":{"description":"EmailTemplate","type":"object","properties":{"type":{"type":"string","description":"Template type","x-example":"verification"},"locale":{"type":"string","description":"Template locale","x-example":"en_us"},"message":{"type":"string","description":"Template message","x-example":"Click on the link to verify your account."},"senderName":{"type":"string","description":"Name of the sender","x-example":"My User"},"senderEmail":{"type":"string","description":"Email of the sender","x-example":"mail@appwrite.io"},"replyTo":{"type":"string","description":"Reply to email address","x-example":"emails@appwrite.io"},"subject":{"type":"string","description":"Email subject","x-example":"Please verify your email address"}},"required":["type","locale","message","senderName","senderEmail","replyTo","subject"]},"consoleVariables":{"description":"Console Variables","type":"object","properties":{"_APP_DOMAIN_TARGET":{"type":"string","description":"CNAME target for your Appwrite custom domains.","x-example":"appwrite.io"},"_APP_STORAGE_LIMIT":{"type":"integer","description":"Maximum file size allowed for file upload in bytes.","x-example":"30000000","format":"int32"},"_APP_FUNCTIONS_SIZE_LIMIT":{"type":"integer","description":"Maximum file size allowed for deployment in bytes.","x-example":"30000000","format":"int32"},"_APP_USAGE_STATS":{"type":"string","description":"Defines if usage stats are enabled. This value is set to 'enabled' by default, to disable the usage stats set the value to 'disabled'.","x-example":"enabled"},"_APP_VCS_ENABLED":{"type":"boolean","description":"Defines if VCS (Version Control System) is enabled.","x-example":true},"_APP_DOMAIN_ENABLED":{"type":"boolean","description":"Defines if main domain is configured. If so, custom domains can be created.","x-example":true},"_APP_ASSISTANT_ENABLED":{"type":"boolean","description":"Defines if AI assistant is enabled.","x-example":true}},"required":["_APP_DOMAIN_TARGET","_APP_STORAGE_LIMIT","_APP_FUNCTIONS_SIZE_LIMIT","_APP_USAGE_STATS","_APP_VCS_ENABLED","_APP_DOMAIN_ENABLED","_APP_ASSISTANT_ENABLED"]},"mfaChallenge":{"description":"MFA Challenge","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","userId","expire"]},"mfaProvider":{"description":"MFAProvider","type":"object","properties":{"backups":{"type":"array","description":"Backup codes.","items":{"type":"string"},"x-example":true},"secret":{"type":"string","description":"Secret token used for TOTP factor.","x-example":true},"uri":{"type":"string","description":"URI for authenticator apps.","x-example":true}},"required":["backups","secret","uri"]},"mfaProviders":{"description":"MFAProviders","type":"object","properties":{"totp":{"type":"boolean","description":"TOTP","x-example":true},"phone":{"type":"boolean","description":"Phone","x-example":true},"email":{"type":"boolean","description":"Email","x-example":true}},"required":["totp","phone","email"]},"provider":{"description":"Provider","type":"object","properties":{"$id":{"type":"string","description":"Provider ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Provider creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Provider update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"The name for the provider instance.","x-example":"Mailgun"},"provider":{"type":"string","description":"The name of the provider service.","x-example":"mailgun"},"enabled":{"type":"boolean","description":"Is provider enabled?","x-example":true},"type":{"type":"string","description":"Type of provider.","x-example":"sms"},"credentials":{"type":"object","additionalProperties":true,"description":"Provider credentials.","x-example":{"key":"123456789"}},"options":{"type":"object","additionalProperties":true,"description":"Provider options.","x-example":{"from":"sender-email@mydomain"}}},"required":["$id","$createdAt","$updatedAt","name","provider","enabled","type","credentials"]},"message":{"description":"Message","type":"object","properties":{"$id":{"type":"string","description":"Message ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Message creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Message update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerType":{"type":"string","description":"Message provider type.","x-example":"email"},"topics":{"type":"array","description":"Topic IDs set as recipients.","items":{"type":"string"},"x-example":["5e5ea5c16897e"]},"users":{"type":"array","description":"User IDs set as recipients.","items":{"type":"string"},"x-example":["5e5ea5c16897e"]},"targets":{"type":"array","description":"Target IDs set as recipients.","items":{"type":"string"},"x-example":["5e5ea5c16897e"]},"scheduledAt":{"type":"string","description":"The scheduled time for message.","x-example":"2020-10-15T06:38:00.000+00:00","x-nullable":true},"deliveredAt":{"type":"string","description":"The time when the message was delivered.","x-example":"2020-10-15T06:38:00.000+00:00","x-nullable":true},"deliveryErrors":{"type":"array","description":"Delivery errors if any.","items":{"type":"string"},"x-example":["Failed to send message to target 5e5ea5c16897e: Credentials not valid."],"x-nullable":true},"deliveredTotal":{"type":"integer","description":"Number of recipients the message was delivered to.","x-example":1,"format":"int32"},"data":{"type":"object","additionalProperties":true,"description":"Data of the message.","x-example":{"subject":"Welcome to Appwrite","content":"Hi there, welcome to Appwrite family."}},"status":{"type":"string","description":"Status of delivery.","x-example":"Message status can be one of the following: processing, sent, cancelled, failed."}},"required":["$id","$createdAt","$updatedAt","providerType","topics","users","targets","deliveredTotal","data","status"]},"topic":{"description":"Topic","type":"object","properties":{"$id":{"type":"string","description":"Topic ID.","x-example":"259125845563242502"},"$createdAt":{"type":"string","description":"Topic creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Topic update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"The name of the topic.","x-example":"events"},"total":{"type":"integer","description":"Total count of subscribers subscribed to topic.","x-example":100,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","name","total"]},"subscriber":{"description":"Subscriber","type":"object","properties":{"$id":{"type":"string","description":"Subscriber ID.","x-example":"259125845563242502"},"$createdAt":{"type":"string","description":"Subscriber creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Subscriber update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"targetId":{"type":"string","description":"Target ID.","x-example":"259125845563242502"},"target":{"type":"object","description":"Target.","x-example":{"$id":"259125845563242502","$createdAt":"2020-10-15T06:38:00.000+00:00","$updatedAt":"2020-10-15T06:38:00.000+00:00","providerType":"email","providerId":"259125845563242502","name":"ageon-app-email","identifier":"random-mail@email.org","userId":"5e5ea5c16897e"},"items":{"type":"object","$ref":"#\/definitions\/target"}},"userId":{"type":"string","description":"Topic ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User Name.","x-example":"Aegon Targaryen"},"topicId":{"type":"string","description":"Topic ID.","x-example":"259125845563242502"},"providerType":{"type":"string","description":"The target provider type. Can be one of the following: `email`, `sms` or `push`.","x-example":"email"}},"required":["$id","$createdAt","$updatedAt","targetId","target","userId","userName","topicId","providerType"]},"target":{"description":"Target","type":"object","properties":{"$id":{"type":"string","description":"Target ID.","x-example":"259125845563242502"},"$createdAt":{"type":"string","description":"Target creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Target update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Target Name.","x-example":"Aegon apple token"},"userId":{"type":"string","description":"User ID.","x-example":"259125845563242502"},"providerId":{"type":"string","description":"Provider ID.","x-example":"259125845563242502","x-nullable":true},"providerType":{"type":"string","description":"The target provider type. Can be one of the following: `email`, `sms` or `push`.","x-example":"email"},"identifier":{"type":"string","description":"The target identifier.","x-example":"token"}},"required":["$id","$createdAt","$updatedAt","name","userId","providerType","identifier"]},"migration":{"description":"Migration","type":"object","properties":{"$id":{"type":"string","description":"Migration ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"string","description":"Migration status ( pending, processing, failed, completed ) ","x-example":"pending"},"stage":{"type":"string","description":"Migration stage ( init, processing, source-check, destination-check, migrating, finished )","x-example":"init"},"source":{"type":"string","description":"A string containing the type of source of the migration.","x-example":"Appwrite"},"resources":{"type":"array","description":"Resources to migration.","items":{"type":"string"},"x-example":["user"]},"statusCounters":{"type":"object","additionalProperties":true,"description":"A group of counters that represent the total progress of the migration.","x-example":"{\"Database\": {\"PENDING\": 0, \"SUCCESS\": 1, \"ERROR\": 0, \"SKIP\": 0, \"PROCESSING\": 0, \"WARNING\": 0}}"},"resourceData":{"type":"object","additionalProperties":true,"description":"An array of objects containing the report data of the resources that were migrated.","x-example":"[{\"resource\":\"Database\",\"id\":\"public\",\"status\":\"SUCCESS\",\"message\":\"\"}]"},"errors":{"type":"array","description":"All errors that occurred during the migration process.","items":{"type":"string"},"x-example":[]}},"required":["$id","$createdAt","$updatedAt","status","stage","source","resources","statusCounters","resourceData","errors"]},"migrationReport":{"description":"Migration Report","type":"object","properties":{"user":{"type":"integer","description":"Number of users to be migrated.","x-example":20,"format":"int32"},"team":{"type":"integer","description":"Number of teams to be migrated.","x-example":20,"format":"int32"},"database":{"type":"integer","description":"Number of databases to be migrated.","x-example":20,"format":"int32"},"document":{"type":"integer","description":"Number of documents to be migrated.","x-example":20,"format":"int32"},"file":{"type":"integer","description":"Number of files to be migrated.","x-example":20,"format":"int32"},"bucket":{"type":"integer","description":"Number of buckets to be migrated.","x-example":20,"format":"int32"},"function":{"type":"integer","description":"Number of functions to be migrated.","x-example":20,"format":"int32"},"size":{"type":"integer","description":"Size of files to be migrated in mb.","x-example":30000,"format":"int32"},"version":{"type":"string","description":"Version of the Appwrite instance to be migrated.","x-example":"1.4.0"}},"required":["user","team","database","document","file","bucket","function","size","version"]},"firebaseProject":{"description":"MigrationFirebaseProject","type":"object","properties":{"projectId":{"type":"string","description":"Project ID.","x-example":"my-project"},"displayName":{"type":"string","description":"Project display name.","x-example":"My Project"}},"required":["projectId","displayName"]}},"externalDocs":{"description":"Full API docs, specs and tutorials","url":"https:\/\/appwrite.io\/docs"}} \ No newline at end of file diff --git a/src/Appwrite/Specification/Format.php b/src/Appwrite/Specification/Format.php index eb3ddff8a8..e5461a7119 100644 --- a/src/Appwrite/Specification/Format.php +++ b/src/Appwrite/Specification/Format.php @@ -240,17 +240,24 @@ abstract class Format break; case 'projects': switch ($method) { - case 'getSmsTemplate': case 'getEmailTemplate': - case 'updateSmsTemplate': case 'updateEmailTemplate': - case 'deleteSmsTemplate': case 'deleteEmailTemplate': switch ($param) { case 'type': - return 'TemplateType'; + return 'EmailTemplateType'; case 'locale': - return 'TemplateLocale'; + return 'EmailTemplateLocale'; + } + break; + case 'getSmsTemplate': + case 'updateSmsTemplate': + case 'deleteSmsTemplate': + switch ($param) { + case 'type': + return 'SMSTemplateType'; + case 'locale': + return 'SMSTemplateLocale'; } break; case 'createPlatform': From 4ace8ed0273eb362465ca072561429f4a97c67de Mon Sep 17 00:00:00 2001 From: Steven Nguyen Date: Thu, 8 Feb 2024 01:17:54 +0000 Subject: [PATCH 24/87] Replace catching \Exception with \Throwable \Exception doesn't work as a catch-all because not everything extends \Exception. For example, there was a problem where the messaging worker didn't catch an exception here: } catch (\Exception $e) { $deliveryErrors[] = 'Failed sending to targets ' . $batchIndex + 1 . '-' . \count($batch) . ' with error: ' . $e->getMessage(); } finally { As such, $deliveryErrors stayed as an empty array. In this case, the $adapter->send() threw a TypeError which extends Error which implements Throwable. Updating the catch to catch \Throwable ensures the error is caught and $deliveryErrors gets updated. --- app/cli.php | 2 +- app/controllers/api/account.php | 2 +- app/controllers/api/avatars.php | 2 +- app/controllers/api/databases.php | 4 ++-- app/controllers/api/health.php | 2 +- app/controllers/api/migrations.php | 6 +++--- app/controllers/api/proxy.php | 2 +- app/controllers/api/teams.php | 2 +- app/http.php | 4 ++-- app/init.php | 2 +- app/worker.php | 2 +- src/Appwrite/Auth/OAuth2/Firebase.php | 2 +- src/Appwrite/Migration/Migration.php | 2 +- src/Appwrite/Platform/Tasks/CalcTierStats.php | 3 +-- src/Appwrite/Platform/Tasks/GetMigrationStats.php | 3 +-- src/Appwrite/Platform/Tasks/Hamster.php | 7 +++---- src/Appwrite/Platform/Tasks/SDKs.php | 6 +----- src/Appwrite/Platform/Workers/Builds.php | 7 +++---- src/Appwrite/Platform/Workers/Databases.php | 8 ++++---- src/Appwrite/Platform/Workers/Deletes.php | 3 +-- src/Appwrite/Platform/Workers/Hamster.php | 6 +++--- src/Appwrite/Platform/Workers/Mails.php | 2 +- src/Appwrite/Platform/Workers/Messaging.php | 4 ++-- src/Appwrite/Platform/Workers/Usage.php | 2 +- src/Appwrite/Platform/Workers/UsageHook.php | 2 +- 25 files changed, 39 insertions(+), 48 deletions(-) diff --git a/app/cli.php b/app/cli.php index 668b70d8b7..559378bc57 100644 --- a/app/cli.php +++ b/app/cli.php @@ -77,7 +77,7 @@ CLI::setResource('dbForConsole', function ($pools, $cache) { } $ready = true; - } catch (\Exception $err) { + } catch (\Throwable $err) { Console::warning($err->getMessage()); $pools->get('console')->reclaim(); sleep($sleep); diff --git a/app/controllers/api/account.php b/app/controllers/api/account.php index 49eabcbf5c..defd552aa9 100644 --- a/app/controllers/api/account.php +++ b/app/controllers/api/account.php @@ -505,7 +505,7 @@ App::get('/v1/account/sessions/oauth2/:provider/redirect') if (!empty($state)) { try { $state = \array_merge($defaultState, $oauth2->parseState($state)); - } catch (\Exception $exception) { + } catch (\Throwable $exception) { throw new Exception(Exception::GENERAL_SERVER_ERROR, 'Failed to parse login state params as passed from OAuth2 provider'); } } else { diff --git a/app/controllers/api/avatars.php b/app/controllers/api/avatars.php index 1c5d1ae34a..ffcfb8f10a 100644 --- a/app/controllers/api/avatars.php +++ b/app/controllers/api/avatars.php @@ -291,7 +291,7 @@ App::get('/v1/avatars/image') try { $image = new Image($fetch); - } catch (\Exception $exception) { + } catch (\Throwable $exception) { throw new Exception(Exception::GENERAL_SERVER_ERROR, 'Unable to parse image'); } diff --git a/app/controllers/api/databases.php b/app/controllers/api/databases.php index c913fcca5d..833e2f81e7 100644 --- a/app/controllers/api/databases.php +++ b/app/controllers/api/databases.php @@ -151,7 +151,7 @@ function createAttribute(string $databaseId, string $collectionId, Document $att throw new Exception(Exception::ATTRIBUTE_ALREADY_EXISTS); } catch (LimitException) { throw new Exception(Exception::ATTRIBUTE_LIMIT_EXCEEDED, 'Attribute limit exceeded'); - } catch (\Exception $e) { + } catch (\Throwable $e) { $dbForProject->purgeCachedDocument('database_' . $db->getInternalId(), $collectionId); $dbForProject->purgeCachedCollection('database_' . $db->getInternalId() . '_collection_' . $collection->getInternalId()); throw $e; @@ -195,7 +195,7 @@ function createAttribute(string $databaseId, string $collectionId, Document $att } catch (LimitException) { $dbForProject->deleteDocument('attributes', $attribute->getId()); throw new Exception(Exception::ATTRIBUTE_LIMIT_EXCEEDED, 'Attribute limit exceeded'); - } catch (\Exception $e) { + } catch (\Throwable $e) { $dbForProject->purgeCachedDocument('database_' . $db->getInternalId(), $relatedCollection->getId()); $dbForProject->purgeCachedCollection('database_' . $db->getInternalId() . '_collection_' . $relatedCollection->getInternalId()); throw $e; diff --git a/app/controllers/api/health.php b/app/controllers/api/health.php index 4f459dd862..d28dcad564 100644 --- a/app/controllers/api/health.php +++ b/app/controllers/api/health.php @@ -679,7 +679,7 @@ App::get('/v1/health/anti-virus') try { $output['version'] = @$antivirus->version(); $output['status'] = (@$antivirus->ping()) ? 'pass' : 'fail'; - } catch (\Exception $e) { + } catch (\Throwable $e) { throw new Exception(Exception::GENERAL_SERVER_ERROR, 'Antivirus is not available'); } } diff --git a/app/controllers/api/migrations.php b/app/controllers/api/migrations.php index 87d3c12c99..13d0f3374b 100644 --- a/app/controllers/api/migrations.php +++ b/app/controllers/api/migrations.php @@ -610,7 +610,7 @@ App::get('/v1/migrations/firebase/report/oauth') try { $report = $firebase->report($resources); - } catch (\Exception $e) { + } catch (\Throwable $e) { throw new Exception(Exception::GENERAL_SERVER_ERROR, 'Source Error: ' . $e->getMessage()); } @@ -822,7 +822,7 @@ App::get('/v1/migrations/firebase/projects') if ($isExpired) { try { $firebase->refreshTokens($refreshToken); - } catch (\Exception $e) { + } catch (\Throwable $e) { throw new Exception(Exception::USER_IDENTITY_NOT_FOUND); } @@ -852,7 +852,7 @@ App::get('/v1/migrations/firebase/projects') 'projectId' => $project['projectId'], ]; } - } catch (\Exception $e) { + } catch (\Throwable $e) { throw new Exception(Exception::USER_IDENTITY_NOT_FOUND); } diff --git a/app/controllers/api/proxy.php b/app/controllers/api/proxy.php index 3081b3def3..4475b98a2e 100644 --- a/app/controllers/api/proxy.php +++ b/app/controllers/api/proxy.php @@ -89,7 +89,7 @@ App::post('/v1/proxy/rules') try { $domain = new Domain($domain); - } catch (\Exception) { + } catch (\Throwable) { throw new Exception(Exception::GENERAL_ARGUMENT_INVALID, 'Domain may not start with http:// or https://.'); } diff --git a/app/controllers/api/teams.php b/app/controllers/api/teams.php index 685c230f4c..d381e062c0 100644 --- a/app/controllers/api/teams.php +++ b/app/controllers/api/teams.php @@ -1055,7 +1055,7 @@ App::delete('/v1/teams/:teamId/memberships/:membershipId') $dbForProject->deleteDocument('memberships', $membership->getId()); } catch (AuthorizationException $exception) { throw new Exception(Exception::USER_UNAUTHORIZED); - } catch (\Exception $exception) { + } catch (\Throwable $exception) { throw new Exception(Exception::GENERAL_SERVER_ERROR, 'Failed to remove membership from DB'); } diff --git a/app/http.php b/app/http.php index 0b17ae5b83..a0d1af34a3 100644 --- a/app/http.php +++ b/app/http.php @@ -77,7 +77,7 @@ $http->on('start', function (Server $http) use ($payloadSize, $register) { $dbForConsole = $app->getResource('dbForConsole'); /** @var Utopia\Database\Database $dbForConsole */ break; // leave the do-while if successful - } catch (\Exception $e) { + } catch (\Throwable $e) { Console::warning("Database not ready. Retrying connection ({$attempts})..."); if ($attempts >= $max) { throw new \Exception('Failed to connect to database: ' . $e->getMessage()); @@ -91,7 +91,7 @@ $http->on('start', function (Server $http) use ($payloadSize, $register) { try { Console::success('[Setup] - Creating database: appwrite...'); $dbForConsole->create(); - } catch (\Exception $e) { + } catch (\Throwable $e) { Console::success('[Setup] - Skip: metadata table already exists'); } diff --git a/app/init.php b/app/init.php index 26f9c7c34a..037b399f54 100644 --- a/app/init.php +++ b/app/init.php @@ -1410,7 +1410,7 @@ function getDevice($root): Device $accessSecret = $dsn->getPassword() ?? ''; $bucket = $dsn->getPath() ?? ''; $region = $dsn->getParam('region'); - } catch (\Exception $e) { + } catch (\Throwable $e) { Console::warning($e->getMessage() . 'Invalid DSN. Defaulting to Local device.'); } diff --git a/app/worker.php b/app/worker.php index a1454a63f4..2080970acb 100644 --- a/app/worker.php +++ b/app/worker.php @@ -246,7 +246,7 @@ try { 'workerName' => strtolower($workerName) ?? null, 'queueName' => $queueName ]); -} catch (\Exception $e) { +} catch (\Throwable $e) { Console::error($e->getMessage() . ', File: ' . $e->getFile() . ', Line: ' . $e->getLine()); } diff --git a/src/Appwrite/Auth/OAuth2/Firebase.php b/src/Appwrite/Auth/OAuth2/Firebase.php index 9c64038089..0e2859e32c 100644 --- a/src/Appwrite/Auth/OAuth2/Firebase.php +++ b/src/Appwrite/Auth/OAuth2/Firebase.php @@ -279,7 +279,7 @@ class Firebase extends OAuth2 $role = \json_decode($role, true); return $role; - } catch (\Exception $e) { + } catch (\Throwable $e) { if ($e->getCode() !== 404) { throw $e; } diff --git a/src/Appwrite/Migration/Migration.php b/src/Appwrite/Migration/Migration.php index a0529c5aef..1cbe0d1813 100644 --- a/src/Appwrite/Migration/Migration.php +++ b/src/Appwrite/Migration/Migration.php @@ -401,7 +401,7 @@ abstract class Migration try { $stmt->execute(); - } catch (\Exception $e) { + } catch (\Throwable $e) { Console::warning($e->getMessage()); } } diff --git a/src/Appwrite/Platform/Tasks/CalcTierStats.php b/src/Appwrite/Platform/Tasks/CalcTierStats.php index 2c904973a9..d8f7ad3537 100644 --- a/src/Appwrite/Platform/Tasks/CalcTierStats.php +++ b/src/Appwrite/Platform/Tasks/CalcTierStats.php @@ -2,7 +2,6 @@ namespace Appwrite\Platform\Tasks; -use Exception; use League\Csv\CannotInsertRecord; use Utopia\App; use Utopia\Database\Document; @@ -200,7 +199,7 @@ class CalcTierStats extends Action $mail->Body = "Please find the daily cloud report atttached"; $mail->send(); Console::success('Email has been sent!'); - } catch (Exception $e) { + } catch (\Throwable $e) { Console::error("Message could not be sent. Mailer Error: {$mail->ErrorInfo}"); } } diff --git a/src/Appwrite/Platform/Tasks/GetMigrationStats.php b/src/Appwrite/Platform/Tasks/GetMigrationStats.php index b76e0428d7..ed10ac345b 100644 --- a/src/Appwrite/Platform/Tasks/GetMigrationStats.php +++ b/src/Appwrite/Platform/Tasks/GetMigrationStats.php @@ -2,7 +2,6 @@ namespace Appwrite\Platform\Tasks; -use Exception; use League\Csv\CannotInsertRecord; use Utopia\App; use Utopia\Platform\Action; @@ -180,7 +179,7 @@ class GetMigrationStats extends Action $mail->Body = "Please find the migration report atttached"; $mail->send(); Console::success('Email has been sent!'); - } catch (Exception $e) { + } catch (\Throwable $e) { Console::error("Message could not be sent. Mailer Error: {$mail->ErrorInfo}"); } } diff --git a/src/Appwrite/Platform/Tasks/Hamster.php b/src/Appwrite/Platform/Tasks/Hamster.php index 1dca095e93..126ccd07df 100644 --- a/src/Appwrite/Platform/Tasks/Hamster.php +++ b/src/Appwrite/Platform/Tasks/Hamster.php @@ -3,7 +3,6 @@ namespace Appwrite\Platform\Tasks; use Appwrite\Event\Hamster as EventHamster; -use Exception; use Utopia\App; use Utopia\Platform\Action; use Utopia\CLI\Console; @@ -120,7 +119,7 @@ class Hamster extends Action ->setType(EventHamster::TYPE_ORGANISATION) ->setOrganization($organization) ->trigger(); - } catch (Exception $e) { + } catch (\Throwable $e) { Console::error($e->getMessage()); } }); @@ -135,7 +134,7 @@ class Hamster extends Action ->setType(EventHamster::TYPE_PROJECT) ->setProject($project) ->trigger(); - } catch (Exception $e) { + } catch (\Throwable $e) { Console::error($e->getMessage()); } }); @@ -150,7 +149,7 @@ class Hamster extends Action ->setType(EventHamster::TYPE_USER) ->setUser($user) ->trigger(); - } catch (Exception $e) { + } catch (\Throwable $e) { Console::error($e->getMessage()); } }); diff --git a/src/Appwrite/Platform/Tasks/SDKs.php b/src/Appwrite/Platform/Tasks/SDKs.php index 256b36d885..5ecd10f8c0 100644 --- a/src/Appwrite/Platform/Tasks/SDKs.php +++ b/src/Appwrite/Platform/Tasks/SDKs.php @@ -18,8 +18,6 @@ use Appwrite\SDK\Language\Python; use Appwrite\SDK\Language\REST; use Appwrite\SDK\Language\Ruby; use Appwrite\SDK\Language\Swift; -use Exception; -use Throwable; use Appwrite\SDK\Language\Apple; use Appwrite\SDK\Language\Web; use Appwrite\SDK\SDK; @@ -242,9 +240,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND try { $sdk->generate($result); - } catch (Exception $exception) { - Console::error($exception->getMessage()); - } catch (Throwable $exception) { + } catch (\Throwable $exception) { Console::error($exception->getMessage()); } diff --git a/src/Appwrite/Platform/Workers/Builds.php b/src/Appwrite/Platform/Workers/Builds.php index d9ab2ad81b..d23cfbff94 100644 --- a/src/Appwrite/Platform/Workers/Builds.php +++ b/src/Appwrite/Platform/Workers/Builds.php @@ -8,7 +8,6 @@ use Appwrite\Event\Usage; use Appwrite\Messaging\Adapter\Realtime; use Appwrite\Utopia\Response\Model\Deployment; use Appwrite\Vcs\Comment; -use Exception; use Swoole\Coroutine as Co; use Executor\Executor; use Utopia\App; @@ -420,7 +419,7 @@ class Builds extends Action variables: $vars, command: $command ); - } catch (Exception $error) { + } catch (\Throwable $error) { $err = $error; } }), @@ -459,7 +458,7 @@ class Builds extends Action } } ); - } catch (Exception $error) { + } catch (\Throwable $error) { if (empty($err)) { $err = $error; } @@ -617,7 +616,7 @@ class Builds extends Action '$id' => $commentId ])); break; - } catch (Exception $err) { + } catch (\Throwable $err) { if ($retries >= 9) { throw $err; } diff --git a/src/Appwrite/Platform/Workers/Databases.php b/src/Appwrite/Platform/Workers/Databases.php index 0b670cbe50..ae8ed31621 100644 --- a/src/Appwrite/Platform/Workers/Databases.php +++ b/src/Appwrite/Platform/Workers/Databases.php @@ -165,7 +165,7 @@ class Databases extends Action } $dbForProject->updateDocument('attributes', $attribute->getId(), $attribute->setAttribute('status', 'available')); - } catch (\Exception $e) { + } catch (\Throwable $e) { // TODO: Send non DatabaseExceptions to Sentry Console::error($e->getMessage()); @@ -269,7 +269,7 @@ class Databases extends Action if (!$relatedAttribute->isEmpty()) { $dbForProject->deleteDocument('attributes', $relatedAttribute->getId()); } - } catch (\Exception $e) { + } catch (\Throwable $e) { // TODO: Send non DatabaseExceptions to Sentry Console::error($e->getMessage()); @@ -397,7 +397,7 @@ class Databases extends Action throw new DatabaseException('Failed to create Index'); } $dbForProject->updateDocument('indexes', $index->getId(), $index->setAttribute('status', 'available')); - } catch (\Exception $e) { + } catch (\Throwable $e) { // TODO: Send non DatabaseExceptions to Sentry Console::error($e->getMessage()); @@ -455,7 +455,7 @@ class Databases extends Action } $dbForProject->deleteDocument('indexes', $index->getId()); $index->setAttribute('status', 'deleted'); - } catch (\Exception $e) { + } catch (\Throwable $e) { // TODO: Send non DatabaseExceptions to Sentry Console::error($e->getMessage()); diff --git a/src/Appwrite/Platform/Workers/Deletes.php b/src/Appwrite/Platform/Workers/Deletes.php index f22fa9ca4e..e227e1a418 100644 --- a/src/Appwrite/Platform/Workers/Deletes.php +++ b/src/Appwrite/Platform/Workers/Deletes.php @@ -11,7 +11,6 @@ use Utopia\Audit\Audit; use Utopia\Cache\Adapter\Filesystem; use Utopia\Cache\Cache; use Utopia\Database\Database; -use Exception; use Utopia\App; use Utopia\CLI\Console; use Utopia\Database\DateTime; @@ -585,7 +584,7 @@ class Deletes extends Action // Delete metadata tables try { $dbForProject->deleteCollection('_metadata'); - } catch (Exception) { + } catch (\Throwable) { // Ignore: deleteCollection tries to delete a metadata entry after the collection is deleted, // which will throw an exception here because the metadata collection is already deleted. } diff --git a/src/Appwrite/Platform/Workers/Hamster.php b/src/Appwrite/Platform/Workers/Hamster.php index 0fb705d0f7..71d7e9012e 100644 --- a/src/Appwrite/Platform/Workers/Hamster.php +++ b/src/Appwrite/Platform/Workers/Hamster.php @@ -340,7 +340,7 @@ class Hamster extends Action if (!$res) { Console::error('Failed to create event for project: ' . $project->getId()); } - } catch (\Exception $e) { + } catch (\Throwable $e) { Console::error('Failed to send stats for project: ' . $project->getId()); Console::error($e->getMessage()); } finally { @@ -410,7 +410,7 @@ class Hamster extends Action if (!$res) { throw new \Exception('Failed to create event for organization : ' . $organization->getId()); } - } catch (\Exception $e) { + } catch (\Throwable $e) { Console::error($e->getMessage()); } } @@ -464,7 +464,7 @@ class Hamster extends Action if (!$res) { throw new \Exception('Failed to create user profile for user: ' . $user->getId()); } - } catch (\Exception $e) { + } catch (\Throwable $e) { Console::error($e->getMessage()); } } diff --git a/src/Appwrite/Platform/Workers/Mails.php b/src/Appwrite/Platform/Workers/Mails.php index 8cfcf34018..ac9c44c3b9 100644 --- a/src/Appwrite/Platform/Workers/Mails.php +++ b/src/Appwrite/Platform/Workers/Mails.php @@ -130,7 +130,7 @@ class Mails extends Action try { $mail->send(); - } catch (\Exception $error) { + } catch (\Throwable $error) { throw new Exception('Error sending mail: ' . $error->getMessage(), 500); } } diff --git a/src/Appwrite/Platform/Workers/Messaging.php b/src/Appwrite/Platform/Workers/Messaging.php index 57a0e5f648..149dcad55e 100644 --- a/src/Appwrite/Platform/Workers/Messaging.php +++ b/src/Appwrite/Platform/Workers/Messaging.php @@ -254,7 +254,7 @@ class Messaging extends Action } } } - } catch (\Exception $e) { + } catch (\Throwable $e) { $deliveryErrors[] = 'Failed sending to targets ' . $batchIndex + 1 . '-' . \count($batch) . ' with error: ' . $e->getMessage(); } finally { $batchIndex++; @@ -362,7 +362,7 @@ class Messaging extends Action try { $adapter->send($data); - } catch (\Exception $e) { + } catch (\Throwable $e) { Console::error('Failed sending to targets ' . $batchIndex + 1 . '-' . \count($batch) . ' with error: ' . $e->getMessage()); // TODO: Find a way to log into Sentry } }; diff --git a/src/Appwrite/Platform/Workers/Usage.php b/src/Appwrite/Platform/Workers/Usage.php index 5537fae504..7cf6edf512 100644 --- a/src/Appwrite/Platform/Workers/Usage.php +++ b/src/Appwrite/Platform/Workers/Usage.php @@ -231,7 +231,7 @@ class Usage extends Action default: break; } - } catch (\Exception $e) { + } catch (\Throwable $e) { console::error("[reducer] " . " {DateTime::now()} " . " {$project->getInternalId()} " . " {$e->getMessage()}"); } } diff --git a/src/Appwrite/Platform/Workers/UsageHook.php b/src/Appwrite/Platform/Workers/UsageHook.php index 68e6a3fede..2a2286212d 100644 --- a/src/Appwrite/Platform/Workers/UsageHook.php +++ b/src/Appwrite/Platform/Workers/UsageHook.php @@ -129,7 +129,7 @@ class UsageHook extends Usage } } } - } catch (\Exception $e) { + } catch (\Throwable $e) { console::error(DateTime::now() . ' ' . $projectInternalId . ' ' . $e->getMessage()); } } From 38c0f8ddabd78c403b27a5cc83b77b656ec542ad Mon Sep 17 00:00:00 2001 From: Bradley Schofield Date: Thu, 8 Feb 2024 11:39:01 +0000 Subject: [PATCH 25/87] Add Query Converter --- composer.lock | 47 ++- src/Appwrite/Utopia/Request/Filters/V17.php | 323 ++++++++++++++++++ tests/unit/Utopia/Request/Filters/V17Test.php | 35 +- 3 files changed, 376 insertions(+), 29 deletions(-) diff --git a/composer.lock b/composer.lock index 8e1ef842e8..1429dfe408 100644 --- a/composer.lock +++ b/composer.lock @@ -1029,16 +1029,16 @@ }, { "name": "symfony/polyfill-php80", - "version": "v1.28.0", + "version": "v1.29.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "6caa57379c4aec19c0a12a38b59b26487dcfe4b5" + "reference": "87b68208d5c1188808dd7839ee1e6c8ec3b02f1b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/6caa57379c4aec19c0a12a38b59b26487dcfe4b5", - "reference": "6caa57379c4aec19c0a12a38b59b26487dcfe4b5", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/87b68208d5c1188808dd7839ee1e6c8ec3b02f1b", + "reference": "87b68208d5c1188808dd7839ee1e6c8ec3b02f1b", "shasum": "" }, "require": { @@ -1046,9 +1046,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.28-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -1092,7 +1089,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.28.0" + "source": "https://github.com/symfony/polyfill-php80/tree/v1.29.0" }, "funding": [ { @@ -1108,7 +1105,7 @@ "type": "tidelift" } ], - "time": "2023-01-26T09:26:14+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { "name": "thecodingmachine/safe", @@ -5123,16 +5120,16 @@ }, { "name": "symfony/polyfill-ctype", - "version": "v1.28.0", + "version": "v1.29.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb" + "reference": "ef4d7e442ca910c4764bce785146269b30cb5fc4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb", - "reference": "ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/ef4d7e442ca910c4764bce785146269b30cb5fc4", + "reference": "ef4d7e442ca910c4764bce785146269b30cb5fc4", "shasum": "" }, "require": { @@ -5146,9 +5143,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.28-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -5185,7 +5179,7 @@ "portable" ], "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.28.0" + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.29.0" }, "funding": [ { @@ -5201,20 +5195,20 @@ "type": "tidelift" } ], - "time": "2023-01-26T09:26:14+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.28.0", + "version": "v1.29.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "42292d99c55abe617799667f454222c54c60e229" + "reference": "9773676c8a1bb1f8d4340a62efe641cf76eda7ec" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/42292d99c55abe617799667f454222c54c60e229", - "reference": "42292d99c55abe617799667f454222c54c60e229", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9773676c8a1bb1f8d4340a62efe641cf76eda7ec", + "reference": "9773676c8a1bb1f8d4340a62efe641cf76eda7ec", "shasum": "" }, "require": { @@ -5228,9 +5222,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.28-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -5268,7 +5259,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.28.0" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.29.0" }, "funding": [ { @@ -5284,7 +5275,7 @@ "type": "tidelift" } ], - "time": "2023-07-28T09:04:16+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { "name": "textalk/websocket", @@ -5523,5 +5514,5 @@ "platform-overrides": { "php": "8.2" }, - "plugin-api-version": "2.2.0" + "plugin-api-version": "2.6.0" } diff --git a/src/Appwrite/Utopia/Request/Filters/V17.php b/src/Appwrite/Utopia/Request/Filters/V17.php index 50a33a93b9..74720b648c 100644 --- a/src/Appwrite/Utopia/Request/Filters/V17.php +++ b/src/Appwrite/Utopia/Request/Filters/V17.php @@ -3,9 +3,20 @@ namespace Appwrite\Utopia\Request\Filters; use Appwrite\Utopia\Request\Filter; +use Utopia\Database\Query; class V17 extends Filter { + protected const CHAR_SINGLE_QUOTE = '\''; + protected const CHAR_DOUBLE_QUOTE = '"'; + protected const CHAR_COMMA = ','; + protected const CHAR_SPACE = ' '; + protected const CHAR_BRACKET_START = '['; + protected const CHAR_BRACKET_END = ']'; + protected const CHAR_PARENTHESES_START = '('; + protected const CHAR_PARENTHESES_END = ')'; + protected const CHAR_BACKSLASH = '\\'; + // Convert 1.4 params to 1.5 public function parse(array $content, string $model): array { @@ -13,7 +24,319 @@ class V17 extends Filter case 'account.updateRecovery': unset($content['passwordAgain']); break; + // Queries + case 'account.listIdentities': + case 'account.listLogs': + case 'databases.list': + case 'databases.listLogs': + case 'databases.listCollections': + case 'databases.listCollectionLogs': + case 'databases.listAttributes': + case 'databases.listIndexes': + case 'databases.listDocuments': + case 'databases.getDocument': + case 'databases.listDocumentLogs': + case 'functions.list': + case 'functions.listDeployments': + case 'functions.listExecutions': + case 'migrations.list': + case 'projects.list': + case 'proxy.listRules': + case 'storage.listBuckets': + case 'storage.listFiles': + case 'teams.list': + case 'teams.listMemberships': + case 'teams.listLogs': + case 'users.list': + case 'users.listLogs': + case 'users.listIdentities': + case 'vcs.listInstallations': + $content = $this->convertOldQueries($content); + break; + } return $content; } + + function convertOldQueries(array $content): array + { + $parsed = []; + foreach ($content['queries'] as $query) { + try { + $query = $this->parseQuery($query); + $parsed[] = json_encode(array_filter($query->toArray())); + } catch (\Throwable $th) { + throw new \Exception("Invalid query: {$query}", previous: $th); + } + } + + $content['queries'] = $parsed; + + return $content; + } + + // 1.4 query parser + public function parseQuery(string $filter): Query + { + // Init empty vars we fill later + $method = ''; + $params = []; + + // Separate method from filter + $paramsStart = mb_strpos($filter, '('); + + if ($paramsStart === false) { + throw new \Exception('Invalid query'); + } + + $method = mb_substr($filter, 0, $paramsStart); + + // Separate params from filter + $paramsEnd = \strlen($filter) - 1; // -1 to ignore ) + $parametersStart = $paramsStart + 1; // +1 to ignore ( + + // Check for deprecated query syntax + if (\str_contains($method, '.')) { + throw new \Exception('Invalid query method'); + } + + $currentParam = ""; // We build param here before pushing when it's ended + $currentArrayParam = []; // We build array param here before pushing when it's ended + + $stack = []; // State for stack of parentheses + $stackCount = 0; // Length of stack array. Kept as variable to improve performance + $stringStackState = null; // State for string support + + + // Loop thorough all characters + for ($i = $parametersStart; $i < $paramsEnd; $i++) { + $char = $filter[$i]; + + $isStringStack = $stringStackState !== null; + $isArrayStack = !$isStringStack && $stackCount > 0; + + if ($char === static::CHAR_BACKSLASH) { + if (!(static::isSpecialChar($filter[$i + 1]))) { + static::appendSymbol($isStringStack, $filter[$i], $i, $filter, $currentParam); + } + + static::appendSymbol($isStringStack, $filter[$i + 1], $i, $filter, $currentParam); + $i++; + + continue; + } + + // String support + escaping support + if ( + (self::isQuote($char)) && // Must be string indicator + ($filter[$i - 1] !== static::CHAR_BACKSLASH || $filter[$i - 2] === static::CHAR_BACKSLASH) // Must not be escaped; + ) { + if ($isStringStack) { + // Dont mix-up string symbols. Only allow the same as on start + if ($char === $stringStackState) { + // End of string + $stringStackState = null; + } + + // Either way, add symbol to builder + static::appendSymbol($isStringStack, $char, $i, $filter, $currentParam); + } else { + // Start of string + $stringStackState = $char; + static::appendSymbol($isStringStack, $char, $i, $filter, $currentParam); + } + + continue; + } + + // Array support + if (!($isStringStack)) { + if ($char === static::CHAR_BRACKET_START) { + // Start of array + $stack[] = $char; + $stackCount++; + continue; + } elseif ($char === static::CHAR_BRACKET_END) { + // End of array + \array_pop($stack); + $stackCount--; + + if (strlen($currentParam)) { + $currentArrayParam[] = $currentParam; + } + + $params[] = $currentArrayParam; + $currentArrayParam = []; + $currentParam = ""; + + continue; + } elseif ($char === static::CHAR_COMMA) { // Params separation support + // If in array stack, dont merge yet, just mark it in array param builder + if ($isArrayStack) { + $currentArrayParam[] = $currentParam; + $currentParam = ""; + } else { + // Append from parap builder. Either value, or array + if (empty($currentArrayParam)) { + if (strlen($currentParam)) { + $params[] = $currentParam; + } + + $currentParam = ""; + } + } + continue; + } + } + + // Value, not relevant to syntax + static::appendSymbol($isStringStack, $char, $i, $filter, $currentParam); + } + + if (strlen($currentParam)) { + $params[] = $currentParam; + $currentParam = ""; + } + + $parsedParams = []; + + foreach ($params as $param) { + // If array, parse each child separatelly + if (\is_array($param)) { + foreach ($param as $element) { + $arr[] = self::parseValue($element); + } + + $parsedParams[] = $arr ?? []; + } else { + $parsedParams[] = self::parseValue($param); + } + } + + switch ($method) { + case Query::TYPE_EQUAL: + case Query::TYPE_NOT_EQUAL: + case Query::TYPE_LESSER: + case Query::TYPE_LESSER_EQUAL: + case Query::TYPE_GREATER: + case Query::TYPE_GREATER_EQUAL: + case Query::TYPE_CONTAINS: + case Query::TYPE_SEARCH: + case Query::TYPE_IS_NULL: + case Query::TYPE_IS_NOT_NULL: + case Query::TYPE_STARTS_WITH: + case Query::TYPE_ENDS_WITH: + $attribute = $parsedParams[0] ?? ''; + if (count($parsedParams) < 2) { + return new Query($method, $attribute); + } + return new Query($method, $attribute, \is_array($parsedParams[1]) ? $parsedParams[1] : [$parsedParams[1]]); + + case Query::TYPE_BETWEEN: + return new Query($method, $parsedParams[0], [$parsedParams[1], $parsedParams[2]]); + case Query::TYPE_SELECT: + return new Query($method, values: $parsedParams[0]); + case Query::TYPE_ORDER_ASC: + case Query::TYPE_ORDER_DESC: + return new Query($method, $parsedParams[0] ?? ''); + + case Query::TYPE_LIMIT: + case Query::TYPE_OFFSET: + case Query::TYPE_CURSOR_AFTER: + case Query::TYPE_CURSOR_BEFORE: + if (count($parsedParams) > 0) { + return new Query($method, values: [$parsedParams[0]]); + } + return new Query($method); + + default: + return new Query($method); + } + } + + /** + * Parses value. + * + * @param string $value + * @return mixed + */ + function parseValue(string $value): mixed + { + $value = \trim($value); + + if ($value === 'false') { // Boolean value + return false; + } elseif ($value === 'true') { + return true; + } elseif ($value === 'null') { // Null value + return null; + } elseif (\is_numeric($value)) { // Numeric value + // Cast to number + return $value + 0; + } elseif (\str_starts_with($value, static::CHAR_DOUBLE_QUOTE) || \str_starts_with($value, static::CHAR_SINGLE_QUOTE)) { // String param + $value = \substr($value, 1, -1); // Remove '' or "" + return $value; + } + + // Unknown format + return $value; + } + + /** + * Utility method to only append symbol if relevant. + * + * @param bool $isStringStack + * @param string $char + * @param int $index + * @param string $filter + * @param string $currentParam + * @return void + */ + function appendSymbol(bool $isStringStack, string $char, int $index, string $filter, string &$currentParam): void + { + // Ignore spaces and commas outside of string + $canBeIgnored = false; + + if ($char === static::CHAR_SPACE) { + $canBeIgnored = true; + } elseif ($char === static::CHAR_COMMA) { + $canBeIgnored = true; + } + + if ($canBeIgnored) { + if ($isStringStack) { + $currentParam .= $char; + } + } else { + $currentParam .= $char; + } + } + + function isQuote(string $char): bool + { + if ($char === self::CHAR_SINGLE_QUOTE) { + return true; + } elseif ($char === self::CHAR_DOUBLE_QUOTE) { + return true; + } + + return false; + } + + function isSpecialChar(string $char): bool + { + if ($char === static::CHAR_COMMA) { + return true; + } elseif ($char === static::CHAR_BRACKET_END) { + return true; + } elseif ($char === static::CHAR_BRACKET_START) { + return true; + } elseif ($char === static::CHAR_DOUBLE_QUOTE) { + return true; + } elseif ($char === static::CHAR_SINGLE_QUOTE) { + return true; + } + + return false; + } } diff --git a/tests/unit/Utopia/Request/Filters/V17Test.php b/tests/unit/Utopia/Request/Filters/V17Test.php index 624981dafc..4c0e155ec5 100644 --- a/tests/unit/Utopia/Request/Filters/V17Test.php +++ b/tests/unit/Utopia/Request/Filters/V17Test.php @@ -41,7 +41,6 @@ class V17Test extends TestCase ]; } - /** * @dataProvider createUpdateRecoveryProvider */ @@ -53,4 +52,38 @@ class V17Test extends TestCase $this->assertEquals($expected, $result); } + + public function createQueryProvider() + { + return [ + 'convert queries' => [ + [ + 'queries' => [ + 'cursorAfter("exampleId")', + 'search("name", ["example"])', + 'isNotNull("name")' + ] + ], + [ + 'queries' => [ + '{"method":"cursorAfter","values":["exampleId"]}', + '{"method":"search","attribute":"name","values":["example"]}', + '{"method":"isNotNull","attribute":"name"}' + ] + ], + ] + ]; + } + + /** + * @dataProvider createQueryProvider + */ + public function testQuery(array $content, array $expected): void + { + $model = 'databases.getDocument'; + + $result = $this->filter->parse($content, $model); + + $this->assertEquals($expected, $result); + } } From d9faa7b9d3478a74e0ad896df8fb7163b5cb9565 Mon Sep 17 00:00:00 2001 From: Bradley Schofield Date: Thu, 8 Feb 2024 11:39:33 +0000 Subject: [PATCH 26/87] Run Linter --- src/Appwrite/Utopia/Request/Filters/V17.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/Appwrite/Utopia/Request/Filters/V17.php b/src/Appwrite/Utopia/Request/Filters/V17.php index 74720b648c..905f2ade7e 100644 --- a/src/Appwrite/Utopia/Request/Filters/V17.php +++ b/src/Appwrite/Utopia/Request/Filters/V17.php @@ -53,11 +53,10 @@ class V17 extends Filter case 'vcs.listInstallations': $content = $this->convertOldQueries($content); break; - } return $content; } - + function convertOldQueries(array $content): array { $parsed = []; From 5a1fef9ec6130cf063a91bf2d1ba8f9c32bd8ad2 Mon Sep 17 00:00:00 2001 From: Bradley Schofield Date: Thu, 8 Feb 2024 11:52:51 +0000 Subject: [PATCH 27/87] Update V17.php --- src/Appwrite/Utopia/Request/Filters/V17.php | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/Appwrite/Utopia/Request/Filters/V17.php b/src/Appwrite/Utopia/Request/Filters/V17.php index 905f2ade7e..246b52deae 100644 --- a/src/Appwrite/Utopia/Request/Filters/V17.php +++ b/src/Appwrite/Utopia/Request/Filters/V17.php @@ -57,7 +57,7 @@ class V17 extends Filter return $content; } - function convertOldQueries(array $content): array + private function convertOldQueries(array $content): array { $parsed = []; foreach ($content['queries'] as $query) { @@ -259,7 +259,7 @@ class V17 extends Filter * @param string $value * @return mixed */ - function parseValue(string $value): mixed + private function parseValue(string $value): mixed { $value = \trim($value); @@ -291,7 +291,7 @@ class V17 extends Filter * @param string $currentParam * @return void */ - function appendSymbol(bool $isStringStack, string $char, int $index, string $filter, string &$currentParam): void + private function appendSymbol(bool $isStringStack, string $char, int $index, string $filter, string &$currentParam): void { // Ignore spaces and commas outside of string $canBeIgnored = false; @@ -311,7 +311,7 @@ class V17 extends Filter } } - function isQuote(string $char): bool + private function isQuote(string $char): bool { if ($char === self::CHAR_SINGLE_QUOTE) { return true; @@ -322,7 +322,7 @@ class V17 extends Filter return false; } - function isSpecialChar(string $char): bool + private function isSpecialChar(string $char): bool { if ($char === static::CHAR_COMMA) { return true; From 98a6b96af9c63504d009a082c36ff02a3722f077 Mon Sep 17 00:00:00 2001 From: fogelito Date: Thu, 8 Feb 2024 15:01:20 +0200 Subject: [PATCH 28/87] Hardcode size and orders --- app/controllers/api/databases.php | 13 ++- .../e2e/Services/Databases/DatabasesBase.php | 93 ++++++++++++------- 2 files changed, 72 insertions(+), 34 deletions(-) diff --git a/app/controllers/api/databases.php b/app/controllers/api/databases.php index c913fcca5d..97b62c3426 100644 --- a/app/controllers/api/databases.php +++ b/app/controllers/api/databases.php @@ -2411,6 +2411,7 @@ App::post('/v1/databases/:databaseId/collections/:collectionId/indexes') $attributeStatus = $oldAttributes[$attributeIndex]['status']; $attributeType = $oldAttributes[$attributeIndex]['type']; $attributeSize = $oldAttributes[$attributeIndex]['size']; + $attributeArray = $oldAttributes[$attributeIndex]['array'] ?? false; if ($attributeType === Database::VAR_RELATIONSHIP) { throw new Exception(Exception::ATTRIBUTE_TYPE_INVALID, 'Cannot create an index for a relationship attribute: ' . $oldAttributes[$attributeIndex]['key']); @@ -2421,8 +2422,16 @@ App::post('/v1/databases/:databaseId/collections/:collectionId/indexes') throw new Exception(Exception::ATTRIBUTE_NOT_AVAILABLE, 'Attribute not available: ' . $oldAttributes[$attributeIndex]['key']); } - // set attribute size as index length only for strings - $lengths[$i] = ($attributeType === Database::VAR_STRING) ? $attributeSize : null; + $lengths[$i] = null; + + if ($attributeType === Database::VAR_STRING) { + $lengths[$i] = $attributeSize; // set attribute size as index length only for strings + } + + if ($attributeArray === true) { + $lengths[$i] = Database::ARRAY_INDEX_LENGTH; + $orders[$i] = null; + } } $index = new Document([ diff --git a/tests/e2e/Services/Databases/DatabasesBase.php b/tests/e2e/Services/Databases/DatabasesBase.php index 7580d73711..ee8dde00db 100644 --- a/tests/e2e/Services/Databases/DatabasesBase.php +++ b/tests/e2e/Services/Databases/DatabasesBase.php @@ -1268,7 +1268,7 @@ trait DatabasesBase $this->assertCount(1, $releaseYearIndex['body']['attributes']); $this->assertEquals('releaseYear', $releaseYearIndex['body']['attributes'][0]); - $releaseWithDate = $this->client->call(Client::METHOD_POST, '/databases/' . $databaseId . '/collections/' . $data['moviesId'] . '/indexes', array_merge([ + $releaseWithDate1 = $this->client->call(Client::METHOD_POST, '/databases/' . $databaseId . '/collections/' . $data['moviesId'] . '/indexes', array_merge([ 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], 'x-appwrite-key' => $this->getProject()['apiKey'] @@ -1278,33 +1278,15 @@ trait DatabasesBase 'attributes' => ['releaseYear', '$createdAt', '$updatedAt'], ]); - $this->assertEquals(202, $releaseWithDate['headers']['status-code']); - $this->assertEquals('releaseYearDated', $releaseWithDate['body']['key']); - $this->assertEquals('key', $releaseWithDate['body']['type']); - $this->assertCount(3, $releaseWithDate['body']['attributes']); - $this->assertEquals('releaseYear', $releaseWithDate['body']['attributes'][0]); - $this->assertEquals('$createdAt', $releaseWithDate['body']['attributes'][1]); - $this->assertEquals('$updatedAt', $releaseWithDate['body']['attributes'][2]); + $this->assertEquals(202, $releaseWithDate1['headers']['status-code']); + $this->assertEquals('releaseYearDated', $releaseWithDate1['body']['key']); + $this->assertEquals('key', $releaseWithDate1['body']['type']); + $this->assertCount(3, $releaseWithDate1['body']['attributes']); + $this->assertEquals('releaseYear', $releaseWithDate1['body']['attributes'][0]); + $this->assertEquals('$createdAt', $releaseWithDate1['body']['attributes'][1]); + $this->assertEquals('$updatedAt', $releaseWithDate1['body']['attributes'][2]); - // wait for database worker to create index - sleep(2); - - $movies = $this->client->call(Client::METHOD_GET, '/databases/' . $databaseId . '/collections/' . $data['moviesId'], array_merge([ - 'content-type' => 'application/json', - 'x-appwrite-project' => $this->getProject()['$id'], - 'x-appwrite-key' => $this->getProject()['apiKey'] - ]), []); - - $this->assertIsArray($movies['body']['indexes']); - $this->assertCount(3, $movies['body']['indexes']); - $this->assertEquals($titleIndex['body']['key'], $movies['body']['indexes'][0]['key']); - $this->assertEquals($releaseYearIndex['body']['key'], $movies['body']['indexes'][1]['key']); - $this->assertEquals($releaseWithDate['body']['key'], $movies['body']['indexes'][2]['key']); - $this->assertEquals('available', $movies['body']['indexes'][0]['status']); - $this->assertEquals('available', $movies['body']['indexes'][1]['status']); - $this->assertEquals('available', $movies['body']['indexes'][2]['status']); - - $releaseWithDate = $this->client->call(Client::METHOD_POST, '/databases/' . $databaseId . '/collections/' . $data['moviesId'] . '/indexes', array_merge([ + $releaseWithDate2 = $this->client->call(Client::METHOD_POST, '/databases/' . $databaseId . '/collections/' . $data['moviesId'] . '/indexes', array_merge([ 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], 'x-appwrite-key' => $this->getProject()['apiKey'] @@ -1314,11 +1296,11 @@ trait DatabasesBase 'attributes' => ['birthDay'], ]); - $this->assertEquals(202, $releaseWithDate['headers']['status-code']); - $this->assertEquals('birthDay', $releaseWithDate['body']['key']); - $this->assertEquals('key', $releaseWithDate['body']['type']); - $this->assertCount(1, $releaseWithDate['body']['attributes']); - $this->assertEquals('birthDay', $releaseWithDate['body']['attributes'][0]); + $this->assertEquals(202, $releaseWithDate2['headers']['status-code']); + $this->assertEquals('birthDay', $releaseWithDate2['body']['key']); + $this->assertEquals('key', $releaseWithDate2['body']['type']); + $this->assertCount(1, $releaseWithDate2['body']['attributes']); + $this->assertEquals('birthDay', $releaseWithDate2['body']['attributes'][0]); // Test for failure $fulltextReleaseYear = $this->client->call(Client::METHOD_POST, '/databases/' . $databaseId . '/collections/' . $data['moviesId'] . '/indexes', array_merge([ @@ -1406,9 +1388,12 @@ trait DatabasesBase 'key' => 'index-ip-actors', 'type' => 'key', 'attributes' => ['releaseYear', 'actors'], // 2 levels + 'orders' => ['DESC', 'DESC'], ]); $this->assertEquals(202, $twoLevelsArray['headers']['status-code']); + $this->assertEquals('DESC', $twoLevelsArray['body']['orders'][0]); + $this->assertEquals(null, $twoLevelsArray['body']['orders'][1]); // Overwrite by API (array) $unknown = $this->client->call(Client::METHOD_POST, '/databases/' . $databaseId . '/collections/' . $data['moviesId'] . '/indexes', array_merge([ 'content-type' => 'application/json', @@ -1423,6 +1408,50 @@ trait DatabasesBase $this->assertEquals(400, $unknown['headers']['status-code']); $this->assertEquals('Unknown attribute: Unknown', $unknown['body']['message']); + $index1 = $this->client->call(Client::METHOD_POST, '/databases/' . $databaseId . '/collections/' . $data['moviesId'] . '/indexes', array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + 'x-appwrite-key' => $this->getProject()['apiKey'], + ]), [ + 'key' => 'integers-order', + 'type' => 'key', + 'attributes' => ['integers'], // array attribute + 'orders' => ['DESC'], // Check order is removed in API + ]); + $this->assertEquals(202, $index1['headers']['status-code']); + + $index2 = $this->client->call(Client::METHOD_POST, '/databases/' . $databaseId . '/collections/' . $data['moviesId'] . '/indexes', array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + 'x-appwrite-key' => $this->getProject()['apiKey'], + ]), [ + 'key' => 'integers-size', + 'type' => 'key', + 'attributes' => ['integers'], // array attribute + ]); + $this->assertEquals(202, $index2['headers']['status-code']); + + /** + * Create Indexes by worker + */ + sleep(2); + + $movies = $this->client->call(Client::METHOD_GET, '/databases/' . $databaseId . '/collections/' . $data['moviesId'], array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + 'x-appwrite-key' => $this->getProject()['apiKey'] + ]), []); + + $this->assertIsArray($movies['body']['indexes']); + $this->assertCount(8, $movies['body']['indexes']); + $this->assertEquals($titleIndex['body']['key'], $movies['body']['indexes'][0]['key']); + $this->assertEquals($releaseYearIndex['body']['key'], $movies['body']['indexes'][1]['key']); + $this->assertEquals($releaseWithDate1['body']['key'], $movies['body']['indexes'][2]['key']); + $this->assertEquals($releaseWithDate2['body']['key'], $movies['body']['indexes'][3]['key']); + foreach ($movies['body']['indexes'] as $index) { + $this->assertEquals('available', $index['status']); + } + return $data; } From 103fec16640c17d0feea756098581b34885c170e Mon Sep 17 00:00:00 2001 From: fogelito Date: Thu, 8 Feb 2024 18:10:25 +0200 Subject: [PATCH 29/87] parseQueries --- app/controllers/api/databases.php | 12 +++-- composer.lock | 45 ++++++++----------- phpunit.xml | 2 +- .../e2e/Services/Databases/DatabasesBase.php | 12 +++++ 4 files changed, 40 insertions(+), 31 deletions(-) diff --git a/app/controllers/api/databases.php b/app/controllers/api/databases.php index c913fcca5d..51975405c7 100644 --- a/app/controllers/api/databases.php +++ b/app/controllers/api/databases.php @@ -2898,6 +2898,7 @@ App::get('/v1/databases/:databaseId/collections/:collectionId/documents') ->inject('dbForProject') ->inject('mode') ->action(function (string $databaseId, string $collectionId, array $queries, Response $response, Database $dbForProject, string $mode) { + var_dump("ininin 0"); $database = Authorization::skip(fn() => $dbForProject->getDocument('databases', $databaseId)); $isAPIKey = Auth::isAppUser(Authorization::getRoles()); $isPrivilegedUser = Auth::isPrivilegedUser(Authorization::getRoles()); @@ -2912,7 +2913,13 @@ App::get('/v1/databases/:databaseId/collections/:collectionId/documents') throw new Exception(Exception::COLLECTION_NOT_FOUND); } - $queries = Query::parseQueries($queries); + try { + $queries = Query::parseQueries($queries); // todo: make this to all parseQueries places? + } catch (QueryException $e) { + // question: should this throw GENERAL_ARGUMENT_INVALID like all QueryException and get 500 ? + // or GENERAL_QUERY_INVALID and get 400? + throw new Exception(Exception::GENERAL_QUERY_INVALID, $e->getMessage()); + } // Get cursor document if there was a cursor query $cursor = \array_filter($queries, function ($query) { @@ -2933,14 +2940,13 @@ App::get('/v1/databases/:databaseId/collections/:collectionId/documents') $cursor->setValue($cursorDocument); } - try { $documents = $dbForProject->find('database_' . $database->getInternalId() . '_collection_' . $collection->getInternalId(), $queries); $total = $dbForProject->count('database_' . $database->getInternalId() . '_collection_' . $collection->getInternalId(), $queries, APP_LIMIT_COUNT); } catch (AuthorizationException) { throw new Exception(Exception::USER_UNAUTHORIZED); } catch (QueryException $e) { - throw new Exception(Exception::GENERAL_ARGUMENT_INVALID, $e->getMessage()); + throw new Exception(Exception::GENERAL_ARGUMENT_INVALID, $e->getMessage()); // Should this GENERAL_QUERY_INVALID? or 500 is ok? } // Add $collectionId and $databaseId for all documents diff --git a/composer.lock b/composer.lock index 226d55e38f..1429dfe408 100644 --- a/composer.lock +++ b/composer.lock @@ -1029,16 +1029,16 @@ }, { "name": "symfony/polyfill-php80", - "version": "v1.28.0", + "version": "v1.29.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "6caa57379c4aec19c0a12a38b59b26487dcfe4b5" + "reference": "87b68208d5c1188808dd7839ee1e6c8ec3b02f1b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/6caa57379c4aec19c0a12a38b59b26487dcfe4b5", - "reference": "6caa57379c4aec19c0a12a38b59b26487dcfe4b5", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/87b68208d5c1188808dd7839ee1e6c8ec3b02f1b", + "reference": "87b68208d5c1188808dd7839ee1e6c8ec3b02f1b", "shasum": "" }, "require": { @@ -1046,9 +1046,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.28-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -1092,7 +1089,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.28.0" + "source": "https://github.com/symfony/polyfill-php80/tree/v1.29.0" }, "funding": [ { @@ -1108,7 +1105,7 @@ "type": "tidelift" } ], - "time": "2023-01-26T09:26:14+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { "name": "thecodingmachine/safe", @@ -5123,16 +5120,16 @@ }, { "name": "symfony/polyfill-ctype", - "version": "v1.28.0", + "version": "v1.29.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb" + "reference": "ef4d7e442ca910c4764bce785146269b30cb5fc4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb", - "reference": "ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/ef4d7e442ca910c4764bce785146269b30cb5fc4", + "reference": "ef4d7e442ca910c4764bce785146269b30cb5fc4", "shasum": "" }, "require": { @@ -5146,9 +5143,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.28-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -5185,7 +5179,7 @@ "portable" ], "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.28.0" + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.29.0" }, "funding": [ { @@ -5201,20 +5195,20 @@ "type": "tidelift" } ], - "time": "2023-01-26T09:26:14+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.28.0", + "version": "v1.29.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "42292d99c55abe617799667f454222c54c60e229" + "reference": "9773676c8a1bb1f8d4340a62efe641cf76eda7ec" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/42292d99c55abe617799667f454222c54c60e229", - "reference": "42292d99c55abe617799667f454222c54c60e229", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9773676c8a1bb1f8d4340a62efe641cf76eda7ec", + "reference": "9773676c8a1bb1f8d4340a62efe641cf76eda7ec", "shasum": "" }, "require": { @@ -5228,9 +5222,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.28-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -5268,7 +5259,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.28.0" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.29.0" }, "funding": [ { @@ -5284,7 +5275,7 @@ "type": "tidelift" } ], - "time": "2023-07-28T09:04:16+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { "name": "textalk/websocket", diff --git a/phpunit.xml b/phpunit.xml index 90ebd4225f..e772866051 100644 --- a/phpunit.xml +++ b/phpunit.xml @@ -6,7 +6,7 @@ convertNoticesToExceptions="true" convertWarningsToExceptions="true" processIsolation="false" - stopOnFailure="false" + stopOnFailure="true" > diff --git a/tests/e2e/Services/Databases/DatabasesBase.php b/tests/e2e/Services/Databases/DatabasesBase.php index 7580d73711..60a6ca7cea 100644 --- a/tests/e2e/Services/Databases/DatabasesBase.php +++ b/tests/e2e/Services/Databases/DatabasesBase.php @@ -2034,6 +2034,18 @@ trait DatabasesBase $this->assertEquals(2017, $documents['body']['documents'][1]['releaseYear']); $this->assertCount(2, $documents['body']['documents']); + $documents = $this->client->call(Client::METHOD_GET, '/databases/' . $databaseId . '/collections/' . $data['moviesId'] . '/documents', array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + ], $this->getHeaders()), [ + 'queries' => [ + '{"method":"contains","attribute":"title","values":[bad]}' + ], + ]); + + $this->assertEquals(400, $documents['headers']['status-code']); + $this->assertEquals('Invalid query: Syntax error', $documents['body']['message']); + $documents = $this->client->call(Client::METHOD_GET, '/databases/' . $databaseId . '/collections/' . $data['moviesId'] . '/documents', array_merge([ 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], From 7176d7feab82f64a24b9231a08429dc19ba58b62 Mon Sep 17 00:00:00 2001 From: fogelito Date: Thu, 8 Feb 2024 18:12:43 +0200 Subject: [PATCH 30/87] Remove comment --- app/controllers/api/databases.php | 1 - 1 file changed, 1 deletion(-) diff --git a/app/controllers/api/databases.php b/app/controllers/api/databases.php index 51975405c7..265ea3f6ca 100644 --- a/app/controllers/api/databases.php +++ b/app/controllers/api/databases.php @@ -2898,7 +2898,6 @@ App::get('/v1/databases/:databaseId/collections/:collectionId/documents') ->inject('dbForProject') ->inject('mode') ->action(function (string $databaseId, string $collectionId, array $queries, Response $response, Database $dbForProject, string $mode) { - var_dump("ininin 0"); $database = Authorization::skip(fn() => $dbForProject->getDocument('databases', $databaseId)); $isAPIKey = Auth::isAppUser(Authorization::getRoles()); $isPrivilegedUser = Auth::isPrivilegedUser(Authorization::getRoles()); From bcc6564e5b2163e0c3639459c7d68dc2765104aa Mon Sep 17 00:00:00 2001 From: fogelito Date: Thu, 8 Feb 2024 18:18:39 +0200 Subject: [PATCH 31/87] typo --- app/controllers/api/databases.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/controllers/api/databases.php b/app/controllers/api/databases.php index 265ea3f6ca..d7e4e00bca 100644 --- a/app/controllers/api/databases.php +++ b/app/controllers/api/databases.php @@ -2945,7 +2945,7 @@ App::get('/v1/databases/:databaseId/collections/:collectionId/documents') } catch (AuthorizationException) { throw new Exception(Exception::USER_UNAUTHORIZED); } catch (QueryException $e) { - throw new Exception(Exception::GENERAL_ARGUMENT_INVALID, $e->getMessage()); // Should this GENERAL_QUERY_INVALID? or 500 is ok? + throw new Exception(Exception::GENERAL_ARGUMENT_INVALID, $e->getMessage()); // Should this be GENERAL_QUERY_INVALID? or 500 is ok? } // Add $collectionId and $databaseId for all documents From 18f7168160b69e122aa00a12af402c3a76afbc9f Mon Sep 17 00:00:00 2001 From: Jake Barnby Date: Mon, 12 Feb 2024 14:18:19 +1300 Subject: [PATCH 32/87] Merge main --- .env | 2 + Dockerfile | 4 + app/config/errors.php | 17 ++- app/config/variables.php | 9 ++ app/controllers/api/account.php | 23 ++-- app/controllers/api/health.php | 115 ++++++++++++++++-- app/controllers/api/proxy.php | 11 +- app/controllers/api/teams.php | 4 +- app/controllers/general.php | 96 +++++++-------- app/controllers/shared/api.php | 11 +- app/controllers/shared/api/auth.php | 8 +- app/http.php | 7 +- app/init.php | 7 +- app/views/install/compose.phtml | 1 + bin/queue-count-failed | 3 + bin/queue-count-processing | 3 + bin/queue-count-success | 3 + bin/queue-retry | 3 + composer.json | 4 +- composer.lock | 57 ++++----- docker-compose.yml | 2 + docs/references/health/get-certificate.md | 1 + .../health/get-failed-queue-jobs.md | 1 + src/Appwrite/Extend/Exception.php | 17 ++- src/Appwrite/Network/Validator/CNAME.php | 14 +++ src/Appwrite/Platform/Services/Tasks.php | 21 ++-- src/Appwrite/Platform/Tasks/Maintenance.php | 3 +- src/Appwrite/Platform/Tasks/QueueCount.php | 70 +++++++++++ src/Appwrite/Platform/Tasks/QueueRetry.php | 64 ++++++++++ src/Appwrite/Platform/Tasks/SSL.php | 10 +- .../Platform/Workers/Certificates.php | 24 +++- src/Appwrite/Platform/Workers/Deletes.php | 7 +- src/Appwrite/Platform/Workers/Messaging.php | 59 ++++++--- src/Appwrite/Platform/Workers/Usage.php | 13 -- src/Appwrite/Platform/Workers/UsageHook.php | 35 ------ src/Appwrite/Utopia/Response.php | 3 + .../Response/Model/HealthCertificate.php | 71 +++++++++++ .../Health/HealthCustomServerTest.php | 70 +++++++++++ 38 files changed, 645 insertions(+), 228 deletions(-) create mode 100644 bin/queue-count-failed create mode 100644 bin/queue-count-processing create mode 100644 bin/queue-count-success create mode 100644 bin/queue-retry create mode 100644 docs/references/health/get-certificate.md create mode 100644 docs/references/health/get-failed-queue-jobs.md create mode 100644 src/Appwrite/Platform/Tasks/QueueCount.php create mode 100644 src/Appwrite/Platform/Tasks/QueueRetry.php create mode 100644 src/Appwrite/Utopia/Response/Model/HealthCertificate.php diff --git a/.env b/.env index c8c0fccb2b..0b5ddf24c6 100644 --- a/.env +++ b/.env @@ -59,6 +59,7 @@ _APP_SMTP_USERNAME= _APP_SMTP_PASSWORD= _APP_SMS_PROVIDER=sms://username:password@mock _APP_SMS_FROM=+123456789 +_APP_SMS_PROJECTS_DENY_LIST= _APP_STORAGE_LIMIT=30000000 _APP_STORAGE_PREVIEW_LIMIT=20000000 _APP_FUNCTIONS_SIZE_LIMIT=30000000 @@ -73,6 +74,7 @@ _APP_EXECUTOR_SECRET=your-secret-key _APP_EXECUTOR_HOST=http://proxy/v1 _APP_FUNCTIONS_RUNTIMES=php-8.0,node-18.0,python-3.9,ruby-3.1 _APP_MAINTENANCE_INTERVAL=86400 +_APP_MAINTENANCE_DELAY= _APP_MAINTENANCE_RETENTION_CACHE=2592000 _APP_MAINTENANCE_RETENTION_EXECUTION=1209600 _APP_MAINTENANCE_RETENTION_ABUSE=86400 diff --git a/Dockerfile b/Dockerfile index 968b0bb22a..de858afe7b 100755 --- a/Dockerfile +++ b/Dockerfile @@ -89,6 +89,10 @@ RUN chmod +x /usr/local/bin/doctor && \ chmod +x /usr/local/bin/test && \ chmod +x /usr/local/bin/upgrade && \ chmod +x /usr/local/bin/vars && \ + chmod +x /usr/local/bin/queue-retry && \ + chmod +x /usr/local/bin/queue-count-failed && \ + chmod +x /usr/local/bin/queue-count-processing && \ + chmod +x /usr/local/bin/queue-count-success && \ chmod +x /usr/local/bin/worker-audits && \ chmod +x /usr/local/bin/worker-builds && \ chmod +x /usr/local/bin/worker-certificates && \ diff --git a/app/config/errors.php b/app/config/errors.php index 79a092ec99..8c3b08b96c 100644 --- a/app/config/errors.php +++ b/app/config/errors.php @@ -711,6 +711,7 @@ return [ 'name' => Exception::RULE_VERIFICATION_FAILED, 'description' => 'Domain verification failed. Please check if your DNS records are correct and try again.', 'code' => 401, + 'publish' => true ], Exception::PROJECT_SMTP_CONFIG_INVALID => [ 'name' => Exception::PROJECT_SMTP_CONFIG_INVALID, @@ -798,13 +799,25 @@ return [ ], /** Health */ - Exception::QUEUE_SIZE_EXCEEDED => [ - 'name' => Exception::QUEUE_SIZE_EXCEEDED, + Exception::HEALTH_QUEUE_SIZE_EXCEEDED => [ + 'name' => Exception::HEALTH_QUEUE_SIZE_EXCEEDED, 'description' => 'Queue size threshold hit.', 'code' => 503, 'publish' => false ], + Exception::HEALTH_CERTIFICATE_EXPIRED => [ + 'name' => Exception::HEALTH_CERTIFICATE_EXPIRED, + 'description' => 'The SSL certificate for the specified domain has expired and is no longer valid.', + 'code' => 404, + ], + + Exception::HEALTH_INVALID_HOST => [ + 'name' => Exception::HEALTH_INVALID_HOST, + 'description' => 'Failed to establish a connection to the specified domain. Please verify the domain name and ensure that the server is running and accessible.', + 'code' => 404, + ], + /** Providers */ Exception::PROVIDER_NOT_FOUND => [ 'name' => Exception::PROVIDER_NOT_FOUND, diff --git a/app/config/variables.php b/app/config/variables.php index d689c8bb0e..5909fbfc64 100644 --- a/app/config/variables.php +++ b/app/config/variables.php @@ -948,6 +948,15 @@ return [ 'question' => '', 'filter' => '' ], + [ + 'name' => '_APP_MAINTENANCE_DELAY', + 'description' => 'Delay value containing the number of seconds that the Appwrite maintenance process should wait before executing system cleanups and optimizations. The default value is 0 seconds.', + 'introduction' => '1.5.0', + 'default' => '0', + 'required' => false, + 'question' => '', + 'filter' => '' + ], [ 'name' => '_APP_MAINTENANCE_RETENTION_CACHE', 'description' => 'The maximum duration (in seconds) upto which to retain cached files. The default value is 2592000 seconds (30 days).', diff --git a/app/controllers/api/account.php b/app/controllers/api/account.php index 49eabcbf5c..a6db09880f 100644 --- a/app/controllers/api/account.php +++ b/app/controllers/api/account.php @@ -978,7 +978,7 @@ App::delete('/v1/account/identities/:identityId') App::post('/v1/account/tokens/magic-url') ->alias('/v1/account/sessions/magic-url') ->desc('Create magic URL token') - ->groups(['api', 'account']) + ->groups(['api', 'account', 'auth']) ->label('scope', 'sessions.write') ->label('auth.type', 'magic-url') ->label('audits.event', 'session.create') @@ -986,14 +986,14 @@ App::post('/v1/account/tokens/magic-url') ->label('audits.userId', '{response.userId}') ->label('sdk.auth', []) ->label('sdk.namespace', 'account') - ->label('sdk.method', ['createMagicURLToken', 'createMagicURLSession']) + ->label('sdk.method', 'createMagicURLToken') ->label('sdk.description', '/docs/references/account/create-token-magic-url.md') ->label('sdk.response.code', Response::STATUS_CODE_CREATED) ->label('sdk.response.type', Response::CONTENT_TYPE_JSON) ->label('sdk.response.model', Response::MODEL_TOKEN) - ->label('abuse-limit', 10) - ->label('abuse-key', 'url:{url},email:{param-email}') - ->param('userId', '', new CustomId(), 'User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can\'t start with a special char. Max length is 36 chars.') + ->label('abuse-limit', 60) + ->label('abuse-key', ['url:{url},email:{param-email}', 'url:{url},ip:{ip}']) + ->param('userId', '', new CustomId(), 'Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can\'t start with a special char. Max length is 36 chars.') ->param('email', '', new Email(), 'User email.') ->param('url', '', fn($clients) => new Host($clients), 'URL to redirect the user back to your app from the magic URL login. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https://cheatsheetseries.owasp.org/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.', true, ['clients']) ->param('phrase', false, new Boolean(), 'Toggle for security phrase. If enabled, email will be send with a randomly generated phrase and the phrase will also be included in the response. Confirming phrases match increases the security of your authentication flow.', true) @@ -1586,7 +1586,7 @@ App::put('/v1/account/sessions/magic-url') App::post('/v1/account/sessions/token') ->desc('Create session') ->label('event', 'users.[userId].sessions.[sessionId].create') - ->groups(['api', 'account']) + ->groups(['api', 'account', 'auth']) ->label('scope', 'sessions.write') ->label('audits.event', 'session.create') ->label('audits.resource', 'user/{response.userId}') @@ -1623,13 +1623,13 @@ App::post('/v1/account/tokens/phone') ->label('audits.userId', '{response.userId}') ->label('sdk.auth', []) ->label('sdk.namespace', 'account') - ->label('sdk.method', ['createPhoneToken', 'createPhoneSession']) + ->label('sdk.method', 'createPhoneToken') ->label('sdk.description', '/docs/references/account/create-token-phone.md') ->label('sdk.response.code', Response::STATUS_CODE_CREATED) ->label('sdk.response.type', Response::CONTENT_TYPE_JSON) ->label('sdk.response.model', Response::MODEL_TOKEN) ->label('abuse-limit', 10) - ->label('abuse-key', 'url:{url},phone:{param-phone}') + ->label('abuse-key', ['url:{url},phone:{param-phone}', 'url:{url},ip:{ip}']) ->param('userId', '', new CustomId(), 'Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can\'t start with a special char. Max length is 36 chars.') ->param('phone', '', new Phone(), 'Phone number. Format this number with a leading \'+\' and a country code, e.g., +16175551212.') ->inject('request') @@ -2736,7 +2736,7 @@ App::post('/v1/account/recovery') ->label('sdk.response.type', Response::CONTENT_TYPE_JSON) ->label('sdk.response.model', Response::MODEL_TOKEN) ->label('abuse-limit', 10) - ->label('abuse-key', ['url:{url},email:{param-email}', 'ip:{ip}']) + ->label('abuse-key', ['url:{url},email:{param-email}', 'url:{url},ip:{ip}']) ->param('email', '', new Email(), 'User email.') ->param('url', '', fn ($clients) => new Host($clients), 'URL to redirect the user back to your app from the recovery email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https://cheatsheetseries.owasp.org/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.', false, ['clients']) ->inject('request') @@ -3204,8 +3204,9 @@ App::put('/v1/account/verification') App::post('/v1/account/verification/phone') ->desc('Create phone verification') - ->groups(['api', 'account']) + ->groups(['api', 'account', 'auth']) ->label('scope', 'accounts.write') + ->label('auth.type', 'phone') ->label('event', 'users.[userId].verification.[tokenId].create') ->label('audits.event', 'verification.create') ->label('audits.resource', 'user/{response.userId}') @@ -3217,7 +3218,7 @@ App::post('/v1/account/verification/phone') ->label('sdk.response.type', Response::CONTENT_TYPE_JSON) ->label('sdk.response.model', Response::MODEL_TOKEN) ->label('abuse-limit', 10) - ->label('abuse-key', 'userId:{userId}') + ->label('abuse-key', ['url:{url},userId:{userId}', 'url:{url},ip:{ip}']) ->inject('request') ->inject('response') ->inject('user') diff --git a/app/controllers/api/health.php b/app/controllers/api/health.php index 4f459dd862..a85f9da321 100644 --- a/app/controllers/api/health.php +++ b/app/controllers/api/health.php @@ -7,6 +7,7 @@ use Appwrite\Utopia\Response; use Utopia\App; use Utopia\Config\Config; use Utopia\Database\Document; +use Utopia\Domains\Validator\PublicDomain; use Utopia\Pools\Group; use Utopia\Queue\Client; use Utopia\Queue\Connection; @@ -14,8 +15,11 @@ use Utopia\Registry\Registry; use Utopia\Storage\Device; use Utopia\Storage\Device\Local; use Utopia\Storage\Storage; +use Utopia\Validator\Domain; use Utopia\Validator\Integer; +use Utopia\Validator\Multiple; use Utopia\Validator\Text; +use Utopia\Validator\WhiteList; App::get('/v1/health') ->desc('Get HTTP') @@ -355,7 +359,7 @@ App::get('/v1/health/queue/webhooks') $size = $client->getQueueSize(); if ($size >= $threshold) { - throw new Exception(Exception::QUEUE_SIZE_EXCEEDED, "Queue size threshold hit. Current size is {$size} and threshold is {$threshold}."); + throw new Exception(Exception::HEALTH_QUEUE_SIZE_EXCEEDED, "Queue size threshold hit. Current size is {$size} and threshold is {$threshold}."); } $response->dynamic(new Document([ 'size' => $size ]), Response::MODEL_HEALTH_QUEUE); @@ -382,12 +386,62 @@ App::get('/v1/health/queue/logs') $size = $client->getQueueSize(); if ($size >= $threshold) { - throw new Exception(Exception::QUEUE_SIZE_EXCEEDED, "Queue size threshold hit. Current size is {$size} and threshold is {$threshold}."); + throw new Exception(Exception::HEALTH_QUEUE_SIZE_EXCEEDED, "Queue size threshold hit. Current size is {$size} and threshold is {$threshold}."); } $response->dynamic(new Document([ 'size' => $size ]), Response::MODEL_HEALTH_QUEUE); }, ['response']); +App::get('/v1/health/certificate') + ->desc('Get the SSL certificate for a domain') + ->groups(['api', 'health']) + ->label('scope', 'health.read') + ->label('sdk.auth', [APP_AUTH_TYPE_KEY]) + ->label('sdk.namespace', 'health') + ->label('sdk.method', 'getCertificate') + ->label('sdk.description', '/docs/references/health/get-certificate.md') + ->label('sdk.response.code', Response::STATUS_CODE_OK) + ->label('sdk.response.type', Response::CONTENT_TYPE_JSON) + ->label('sdk.response.model', Response::MODEL_HEALTH_CERTIFICATE) + ->param('domain', null, new Multiple([new Domain(), new PublicDomain()]), Multiple::TYPE_STRING, 'Domain name') + ->inject('response') + ->action(function (string $domain, Response $response) { + if (filter_var($domain, FILTER_VALIDATE_URL)) { + $domain = parse_url($domain, PHP_URL_HOST); + } + + $sslContext = stream_context_create([ + "ssl" => [ + "capture_peer_cert" => true + ] + ]); + $sslSocket = stream_socket_client("ssl://" . $domain . ":443", $errno, $errstr, 30, STREAM_CLIENT_CONNECT, $sslContext); + if (!$sslSocket) { + throw new Exception(Exception::HEALTH_INVALID_HOST); + } + + $streamContextParams = stream_context_get_params($sslSocket); + $peerCertificate = $streamContextParams['options']['ssl']['peer_certificate']; + $certificatePayload = openssl_x509_parse($peerCertificate); + + + $sslExpiration = $certificatePayload['validTo_time_t']; + $status = $sslExpiration < time() ? 'fail' : 'pass'; + + if ($status === 'fail') { + throw new Exception(Exception::HEALTH_CERTIFICATE_EXPIRED); + } + + $response->dynamic(new Document([ + 'name' => $certificatePayload['name'], + 'subjectSN' => $certificatePayload['subject']['CN'], + 'issuerOrganisation' => $certificatePayload['issuer']['O'], + 'validFrom' => $certificatePayload['validFrom_time_t'], + 'validTo' => $certificatePayload['validTo_time_t'], + 'signatureTypeSN' => $certificatePayload['signatureTypeSN'], + ]), Response::MODEL_HEALTH_CERTIFICATE); + }, ['response']); + App::get('/v1/health/queue/certificates') ->desc('Get certificates queue') ->groups(['api', 'health']) @@ -409,7 +463,7 @@ App::get('/v1/health/queue/certificates') $size = $client->getQueueSize(); if ($size >= $threshold) { - throw new Exception(Exception::QUEUE_SIZE_EXCEEDED, "Queue size threshold hit. Current size is {$size} and threshold is {$threshold}."); + throw new Exception(Exception::HEALTH_QUEUE_SIZE_EXCEEDED, "Queue size threshold hit. Current size is {$size} and threshold is {$threshold}."); } $response->dynamic(new Document([ 'size' => $size ]), Response::MODEL_HEALTH_QUEUE); @@ -436,7 +490,7 @@ App::get('/v1/health/queue/builds') $size = $client->getQueueSize(); if ($size >= $threshold) { - throw new Exception(Exception::QUEUE_SIZE_EXCEEDED, "Queue size threshold hit. Current size is {$size} and threshold is {$threshold}."); + throw new Exception(Exception::HEALTH_QUEUE_SIZE_EXCEEDED, "Queue size threshold hit. Current size is {$size} and threshold is {$threshold}."); } $response->dynamic(new Document([ 'size' => $size ]), Response::MODEL_HEALTH_QUEUE); @@ -464,7 +518,7 @@ App::get('/v1/health/queue/databases') $size = $client->getQueueSize(); if ($size >= $threshold) { - throw new Exception(Exception::QUEUE_SIZE_EXCEEDED, "Queue size threshold hit. Current size is {$size} and threshold is {$threshold}."); + throw new Exception(Exception::HEALTH_QUEUE_SIZE_EXCEEDED, "Queue size threshold hit. Current size is {$size} and threshold is {$threshold}."); } $response->dynamic(new Document([ 'size' => $size ]), Response::MODEL_HEALTH_QUEUE); @@ -491,7 +545,7 @@ App::get('/v1/health/queue/deletes') $size = $client->getQueueSize(); if ($size >= $threshold) { - throw new Exception(Exception::QUEUE_SIZE_EXCEEDED, "Queue size threshold hit. Current size is {$size} and threshold is {$threshold}."); + throw new Exception(Exception::HEALTH_QUEUE_SIZE_EXCEEDED, "Queue size threshold hit. Current size is {$size} and threshold is {$threshold}."); } $response->dynamic(new Document([ 'size' => $size ]), Response::MODEL_HEALTH_QUEUE); @@ -518,7 +572,7 @@ App::get('/v1/health/queue/mails') $size = $client->getQueueSize(); if ($size >= $threshold) { - throw new Exception(Exception::QUEUE_SIZE_EXCEEDED, "Queue size threshold hit. Current size is {$size} and threshold is {$threshold}."); + throw new Exception(Exception::HEALTH_QUEUE_SIZE_EXCEEDED, "Queue size threshold hit. Current size is {$size} and threshold is {$threshold}."); } $response->dynamic(new Document([ 'size' => $size ]), Response::MODEL_HEALTH_QUEUE); @@ -545,7 +599,7 @@ App::get('/v1/health/queue/messaging') $size = $client->getQueueSize(); if ($size >= $threshold) { - throw new Exception(Exception::QUEUE_SIZE_EXCEEDED, "Queue size threshold hit. Current size is {$size} and threshold is {$threshold}."); + throw new Exception(Exception::HEALTH_QUEUE_SIZE_EXCEEDED, "Queue size threshold hit. Current size is {$size} and threshold is {$threshold}."); } $response->dynamic(new Document([ 'size' => $size ]), Response::MODEL_HEALTH_QUEUE); @@ -572,7 +626,7 @@ App::get('/v1/health/queue/migrations') $size = $client->getQueueSize(); if ($size >= $threshold) { - throw new Exception(Exception::QUEUE_SIZE_EXCEEDED, "Queue size threshold hit. Current size is {$size} and threshold is {$threshold}."); + throw new Exception(Exception::HEALTH_QUEUE_SIZE_EXCEEDED, "Queue size threshold hit. Current size is {$size} and threshold is {$threshold}."); } $response->dynamic(new Document([ 'size' => $size ]), Response::MODEL_HEALTH_QUEUE); @@ -599,7 +653,7 @@ App::get('/v1/health/queue/functions') $size = $client->getQueueSize(); if ($size >= $threshold) { - throw new Exception(Exception::QUEUE_SIZE_EXCEEDED, "Queue size threshold hit. Current size is {$size} and threshold is {$threshold}."); + throw new Exception(Exception::HEALTH_QUEUE_SIZE_EXCEEDED, "Queue size threshold hit. Current size is {$size} and threshold is {$threshold}."); } $response->dynamic(new Document([ 'size' => $size ]), Response::MODEL_HEALTH_QUEUE); @@ -687,6 +741,47 @@ App::get('/v1/health/anti-virus') $response->dynamic(new Document($output), Response::MODEL_HEALTH_ANTIVIRUS); }); +App::get('/v1/health/queue/failed/:name') + ->desc('Get number of failed queue jobs') + ->groups(['api', 'health']) + ->label('scope', 'health.read') + ->label('sdk.auth', [APP_AUTH_TYPE_KEY]) + ->label('sdk.namespace', 'health') + ->label('sdk.method', 'getFailedJobs') + ->param('name', '', new WhiteList([ + Event::DATABASE_QUEUE_NAME, + Event::DELETE_QUEUE_NAME, + Event::AUDITS_QUEUE_NAME, + Event::MAILS_QUEUE_NAME, + Event::FUNCTIONS_QUEUE_NAME, + Event::USAGE_QUEUE_NAME, + Event::WEBHOOK_CLASS_NAME, + Event::CERTIFICATES_QUEUE_NAME, + Event::BUILDS_QUEUE_NAME, + Event::MESSAGING_QUEUE_NAME, + Event::MIGRATIONS_QUEUE_NAME, + Event::HAMSTER_CLASS_NAME + ]), 'The name of the queue') + ->param('threshold', 5000, new Integer(true), 'Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.', true) + ->label('sdk.description', '/docs/references/health/get-failed-queue-jobs.md') + ->label('sdk.response.code', Response::STATUS_CODE_OK) + ->label('sdk.response.type', Response::CONTENT_TYPE_JSON) + ->label('sdk.response.model', Response::MODEL_HEALTH_QUEUE) + ->inject('response') + ->inject('queue') + ->action(function (string $name, int|string $threshold, Response $response, Connection $queue) { + $threshold = \intval($threshold); + + $client = new Client($name, $queue); + $failed = $client->countFailedJobs(); + + if ($failed >= $threshold) { + throw new Exception(Exception::HEALTH_QUEUE_SIZE_EXCEEDED, "Queue failed jobs threshold hit. Current size is {$failed} and threshold is {$threshold}."); + } + + $response->dynamic(new Document([ 'size' => $failed ]), Response::MODEL_HEALTH_QUEUE); + }); + App::get('/v1/health/stats') // Currently only used internally ->desc('Get system stats') ->groups(['api', 'health']) diff --git a/app/controllers/api/proxy.php b/app/controllers/api/proxy.php index 3081b3def3..8d3f559d62 100644 --- a/app/controllers/api/proxy.php +++ b/app/controllers/api/proxy.php @@ -14,6 +14,7 @@ use Utopia\Database\Helpers\ID; use Utopia\Database\Query; use Utopia\Database\Validator\UID; use Utopia\Domains\Domain; +use Utopia\Logger\Log; use Utopia\Validator\Domain as ValidatorDomain; use Utopia\Validator\Text; use Utopia\Validator\WhiteList; @@ -278,7 +279,8 @@ App::patch('/v1/proxy/rules/:ruleId/verification') ->inject('queueForEvents') ->inject('project') ->inject('dbForConsole') - ->action(function (string $ruleId, Response $response, Certificate $queueForCertificates, Event $queueForEvents, Document $project, Database $dbForConsole) { + ->inject('log') + ->action(function (string $ruleId, Response $response, Certificate $queueForCertificates, Event $queueForEvents, Document $project, Database $dbForConsole, Log $log) { $rule = $dbForConsole->getDocument('rules', $ruleId); if ($rule->isEmpty() || $rule->getAttribute('projectInternalId') !== $project->getInternalId()) { @@ -298,7 +300,14 @@ App::patch('/v1/proxy/rules/:ruleId/verification') $validator = new CNAME($target->get()); // Verify Domain with DNS records $domain = new Domain($rule->getAttribute('domain', '')); + $validationStart = \microtime(true); if (!$validator->isValid($domain->get())) { + $log->addExtra('dnsTiming', \strval(\microtime(true) - $validationStart)); + $log->addTag('dnsDomain', $domain->get()); + + $error = $validator->getLogs(); + $log->addExtra('dnsResponse', \is_array($error) ? \json_encode($error) : \strval($error)); + throw new Exception(Exception::RULE_VERIFICATION_FAILED); } diff --git a/app/controllers/api/teams.php b/app/controllers/api/teams.php index 685c230f4c..b8d0a8229c 100644 --- a/app/controllers/api/teams.php +++ b/app/controllers/api/teams.php @@ -534,8 +534,8 @@ App::post('/v1/teams/:teamId/memberships') } catch (Duplicate $th) { throw new Exception(Exception::TEAM_INVITE_ALREADY_EXISTS); } - $team->setAttribute('total', $team->getAttribute('total', 0) + 1); - $team = Authorization::skip(fn() => $dbForProject->updateDocument('teams', $team->getId(), $team)); + + Authorization::skip(fn() => $dbForProject->increaseDocumentAttribute('teams', $team->getId(), 'total', 1)); $dbForProject->purgeCachedDocument('users', $invitee->getId()); } else { diff --git a/app/controllers/general.php b/app/controllers/general.php index 2a139622ad..0a776c71c1 100644 --- a/app/controllers/general.php +++ b/app/controllers/general.php @@ -617,66 +617,58 @@ App::error() ->inject('response') ->inject('project') ->inject('logger') - ->inject('loggerBreadcrumbs') - ->action(function (Throwable $error, App $utopia, Request $request, Response $response, Document $project, ?Logger $logger, array $loggerBreadcrumbs) { - + ->inject('log') + ->action(function (Throwable $error, App $utopia, Request $request, Response $response, Document $project, ?Logger $logger, Log $log) { $version = App::getEnv('_APP_VERSION', 'UNKNOWN'); $route = $utopia->getRoute(); - $publish = true; if ($error instanceof AppwriteException) { $publish = $error->isPublishable(); + } else { + $publish = $error->getCode() === 0 || $error->getCode() >= 500; } - if ($logger && $publish) { - if ($error->getCode() >= 500 || $error->getCode() === 0) { - try { - /** @var Utopia\Database\Document $user */ - $user = $utopia->getResource('user'); - } catch (\Throwable $th) { - // All good, user is optional information for logger - } - - $log = new Utopia\Logger\Log(); - - if (isset($user) && !$user->isEmpty()) { - $log->setUser(new User($user->getId())); - } - - $log->setNamespace("http"); - $log->setServer(\gethostname()); - $log->setVersion($version); - $log->setType(Log::TYPE_ERROR); - $log->setMessage($error->getMessage()); - - $log->addTag('database', $project->getAttribute('database', 'console')); - $log->addTag('method', $route->getMethod()); - $log->addTag('url', $route->getPath()); - $log->addTag('verboseType', get_class($error)); - $log->addTag('code', $error->getCode()); - $log->addTag('projectId', $project->getId()); - $log->addTag('hostname', $request->getHostname()); - $log->addTag('locale', (string)$request->getParam('locale', $request->getHeader('x-appwrite-locale', ''))); - - $log->addExtra('file', $error->getFile()); - $log->addExtra('line', $error->getLine()); - $log->addExtra('trace', $error->getTraceAsString()); - $log->addExtra('detailedTrace', $error->getTrace()); - $log->addExtra('roles', Authorization::getRoles()); - - $action = $route->getLabel("sdk.namespace", "UNKNOWN_NAMESPACE") . '.' . $route->getLabel("sdk.method", "UNKNOWN_METHOD"); - $log->setAction($action); - - $isProduction = App::getEnv('_APP_ENV', 'development') === 'production'; - $log->setEnvironment($isProduction ? Log::ENVIRONMENT_PRODUCTION : Log::ENVIRONMENT_STAGING); - - foreach ($loggerBreadcrumbs as $loggerBreadcrumb) { - $log->addBreadcrumb($loggerBreadcrumb); - } - - $responseCode = $logger->addLog($log); - Console::info('Log pushed with status code: ' . $responseCode); + if ($logger && ($publish || $error->getCode() === 0)) { + try { + /** @var Utopia\Database\Document $user */ + $user = $utopia->getResource('user'); + } catch (\Throwable $th) { + // All good, user is optional information for logger } + + if (isset($user) && !$user->isEmpty()) { + $log->setUser(new User($user->getId())); + } + + $log->setNamespace("http"); + $log->setServer(\gethostname()); + $log->setVersion($version); + $log->setType(Log::TYPE_ERROR); + $log->setMessage($error->getMessage()); + + $log->addTag('database', $project->getAttribute('database', 'console')); + $log->addTag('method', $route->getMethod()); + $log->addTag('url', $route->getPath()); + $log->addTag('verboseType', get_class($error)); + $log->addTag('code', $error->getCode()); + $log->addTag('projectId', $project->getId()); + $log->addTag('hostname', $request->getHostname()); + $log->addTag('locale', (string)$request->getParam('locale', $request->getHeader('x-appwrite-locale', ''))); + + $log->addExtra('file', $error->getFile()); + $log->addExtra('line', $error->getLine()); + $log->addExtra('trace', $error->getTraceAsString()); + $log->addExtra('detailedTrace', $error->getTrace()); + $log->addExtra('roles', Authorization::getRoles()); + + $action = $route->getLabel("sdk.namespace", "UNKNOWN_NAMESPACE") . '.' . $route->getLabel("sdk.method", "UNKNOWN_METHOD"); + $log->setAction($action); + + $isProduction = App::getEnv('_APP_ENV', 'development') === 'production'; + $log->setEnvironment($isProduction ? Log::ENVIRONMENT_PRODUCTION : Log::ENVIRONMENT_STAGING); + + $responseCode = $logger->addLog($log); + Console::info('Log pushed with status code: ' . $responseCode); } $code = $error->getCode(); diff --git a/app/controllers/shared/api.php b/app/controllers/shared/api.php index 85a74ecca8..30c0a2ee03 100644 --- a/app/controllers/shared/api.php +++ b/app/controllers/shared/api.php @@ -179,6 +179,7 @@ App::init() $end = $request->getContentRangeEnd(); $timeLimit = new TimeLimit($abuseKey, $route->getLabel('abuse-limit', 0), $route->getLabel('abuse-time', 3600), $dbForProject); $timeLimit + ->setParam('{projectId}', $project->getId()) ->setParam('{userId}', $user->getId()) ->setParam('{userAgent}', $request->getUserAgent('')) ->setParam('{ip}', $request->getIP()) @@ -350,7 +351,7 @@ App::init() break; case 'magic-url': - if ($project->getAttribute('usersAuthMagicURL', true) === false) { + if (($auths['usersAuthMagicURL'] ?? true) === false) { throw new Exception(Exception::USER_AUTH_METHOD_UNSUPPORTED, 'Magic URL authentication is disabled for this project'); } break; @@ -361,6 +362,12 @@ App::init() } break; + case 'phone': + if (($auths['phone'] ?? true) === false) { + throw new Exception(Exception::USER_AUTH_METHOD_UNSUPPORTED, 'Phone authentication is disabled for this project'); + } + break; + case 'invites': if (($auths['invites'] ?? true) === false) { throw new Exception(Exception::USER_AUTH_METHOD_UNSUPPORTED, 'Invites authentication is disabled for this project'); @@ -386,7 +393,7 @@ App::init() break; default: - throw new Exception(Exception::USER_AUTH_METHOD_UNSUPPORTED, 'Unsupported authentication route'); + throw new Exception(Exception::USER_AUTH_METHOD_UNSUPPORTED, 'Unsupported authentication type: ' . $route->getLabel('auth.type', '')); break; } }); diff --git a/app/controllers/shared/api/auth.php b/app/controllers/shared/api/auth.php index 0b24f8b3a1..8698e19ae5 100644 --- a/app/controllers/shared/api/auth.php +++ b/app/controllers/shared/api/auth.php @@ -43,7 +43,7 @@ App::init() break; case 'magic-url': - if ($project->getAttribute('usersAuthMagicURL', true) === false) { + if (($auths['usersAuthMagicURL'] ?? true) === false) { throw new Exception(Exception::USER_AUTH_METHOD_UNSUPPORTED, 'Magic URL authentication is disabled for this project'); } break; @@ -54,6 +54,12 @@ App::init() } break; + case 'phone': + if (($auths['phone'] ?? true) === false) { + throw new Exception(Exception::USER_AUTH_METHOD_UNSUPPORTED, 'Phone authentication is disabled for this project'); + } + break; + case 'invites': if (($auths['invites'] ?? true) === false) { throw new Exception(Exception::USER_AUTH_METHOD_UNSUPPORTED, 'Invites authentication is disabled for this project'); diff --git a/app/http.php b/app/http.php index 0b17ae5b83..41759e9f94 100644 --- a/app/http.php +++ b/app/http.php @@ -264,10 +264,9 @@ $http->on('request', function (SwooleRequest $swooleRequest, SwooleResponse $swo // All good, user is optional information for logger } - $loggerBreadcrumbs = $app->getResource("loggerBreadcrumbs"); $route = $app->getRoute(); - $log = new Utopia\Logger\Log(); + $log = $app->getResource("log"); if (isset($user) && !$user->isEmpty()) { $log->setUser(new User($user->getId())); @@ -299,10 +298,6 @@ $http->on('request', function (SwooleRequest $swooleRequest, SwooleResponse $swo $isProduction = App::getEnv('_APP_ENV', 'development') === 'production'; $log->setEnvironment($isProduction ? Log::ENVIRONMENT_PRODUCTION : Log::ENVIRONMENT_STAGING); - foreach ($loggerBreadcrumbs as $loggerBreadcrumb) { - $log->addBreadcrumb($loggerBreadcrumb); - } - $responseCode = $logger->addLog($log); Console::info('Log pushed with status code: ' . $responseCode); } diff --git a/app/init.php b/app/init.php index 26f9c7c34a..266c080c92 100644 --- a/app/init.php +++ b/app/init.php @@ -71,6 +71,7 @@ use Appwrite\Hooks\Hooks; use MaxMind\Db\Reader; use PHPMailer\PHPMailer\PHPMailer; use Swoole\Database\PDOProxy; +use Utopia\Logger\Log; use Utopia\Queue; use Utopia\Queue\Connection; use Utopia\Storage\Storage; @@ -201,6 +202,7 @@ const MESSAGE_TYPE_PUSH = 'push'; // Usage metrics const METRIC_TEAMS = 'teams'; const METRIC_USERS = 'users'; +const METRIC_MESSAGES = 'messages'; const METRIC_SESSIONS = 'sessions'; const METRIC_DATABASES = 'databases'; const METRIC_COLLECTIONS = 'collections'; @@ -986,6 +988,7 @@ foreach ($locales as $locale) { ]); // Runtime Execution +App::setResource('log', fn() => new Log()); App::setResource('logger', function ($register) { return $register->get('logger'); }, ['register']); @@ -994,10 +997,6 @@ App::setResource('hooks', function ($register) { return $register->get('hooks'); }, ['register']); -App::setResource('loggerBreadcrumbs', function () { - return []; -}); - App::setResource('register', fn() => $register); App::setResource('locale', fn() => new Locale(App::getEnv('_APP_LOCALE', 'en'))); diff --git a/app/views/install/compose.phtml b/app/views/install/compose.phtml index 87dcaade6a..9c66e72821 100644 --- a/app/views/install/compose.phtml +++ b/app/views/install/compose.phtml @@ -143,6 +143,7 @@ services: - _APP_LOGGING_PROVIDER - _APP_LOGGING_CONFIG - _APP_MAINTENANCE_INTERVAL + - _APP_MAINTENANCE_DELAY - _APP_MAINTENANCE_RETENTION_EXECUTION - _APP_MAINTENANCE_RETENTION_CACHE - _APP_MAINTENANCE_RETENTION_ABUSE diff --git a/bin/queue-count-failed b/bin/queue-count-failed new file mode 100644 index 0000000000..ca8f2b4291 --- /dev/null +++ b/bin/queue-count-failed @@ -0,0 +1,3 @@ +#!/bin/sh + +php /usr/src/code/app/cli.php queue-count --type=failed $@ \ No newline at end of file diff --git a/bin/queue-count-processing b/bin/queue-count-processing new file mode 100644 index 0000000000..325d86111d --- /dev/null +++ b/bin/queue-count-processing @@ -0,0 +1,3 @@ +#!/bin/sh + +php /usr/src/code/app/cli.php queue-count --type=processing $@ \ No newline at end of file diff --git a/bin/queue-count-success b/bin/queue-count-success new file mode 100644 index 0000000000..34fc54b4c1 --- /dev/null +++ b/bin/queue-count-success @@ -0,0 +1,3 @@ +#!/bin/sh + +php /usr/src/code/app/cli.php queue-count --type=success $@ \ No newline at end of file diff --git a/bin/queue-retry b/bin/queue-retry new file mode 100644 index 0000000000..f9473e6b07 --- /dev/null +++ b/bin/queue-retry @@ -0,0 +1,3 @@ +#!/bin/sh + +php /usr/src/code/app/cli.php queue-retry $@ \ No newline at end of file diff --git a/composer.json b/composer.json index 2c78bcd4a3..3e74c0ff56 100644 --- a/composer.json +++ b/composer.json @@ -62,7 +62,7 @@ "utopia-php/platform": "0.5.*", "utopia-php/pools": "0.4.*", "utopia-php/preloader": "0.2.*", - "utopia-php/queue": "0.6.*", + "utopia-php/queue": "0.7.*", "utopia-php/registry": "0.5.*", "utopia-php/storage": "0.18.*", "utopia-php/swoole": "0.8.*", @@ -75,7 +75,7 @@ "adhocore/jwt": "1.1.2", "spomky-labs/otphp": "^10.0", "webonyx/graphql-php": "14.11.*", - "league/csv": "^9.14" + "league/csv": "9.14.*" }, "repositories": [ { diff --git a/composer.lock b/composer.lock index 226d55e38f..053690da4a 100644 --- a/composer.lock +++ b/composer.lock @@ -1029,16 +1029,16 @@ }, { "name": "symfony/polyfill-php80", - "version": "v1.28.0", + "version": "v1.29.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "6caa57379c4aec19c0a12a38b59b26487dcfe4b5" + "reference": "87b68208d5c1188808dd7839ee1e6c8ec3b02f1b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/6caa57379c4aec19c0a12a38b59b26487dcfe4b5", - "reference": "6caa57379c4aec19c0a12a38b59b26487dcfe4b5", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/87b68208d5c1188808dd7839ee1e6c8ec3b02f1b", + "reference": "87b68208d5c1188808dd7839ee1e6c8ec3b02f1b", "shasum": "" }, "require": { @@ -1046,9 +1046,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.28-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -1092,7 +1089,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.28.0" + "source": "https://github.com/symfony/polyfill-php80/tree/v1.29.0" }, "funding": [ { @@ -1108,7 +1105,7 @@ "type": "tidelift" } ], - "time": "2023-01-26T09:26:14+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { "name": "thecodingmachine/safe", @@ -2264,16 +2261,16 @@ }, { "name": "utopia-php/queue", - "version": "0.6.0", + "version": "0.7.0", "source": { "type": "git", "url": "https://github.com/utopia-php/queue.git", - "reference": "0120bd21904cb2bee34e4571b1737589ffff0eb1" + "reference": "917565256eb94bcab7246f7a746b1a486813761b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/utopia-php/queue/zipball/0120bd21904cb2bee34e4571b1737589ffff0eb1", - "reference": "0120bd21904cb2bee34e4571b1737589ffff0eb1", + "url": "https://api.github.com/repos/utopia-php/queue/zipball/917565256eb94bcab7246f7a746b1a486813761b", + "reference": "917565256eb94bcab7246f7a746b1a486813761b", "shasum": "" }, "require": { @@ -2319,9 +2316,9 @@ ], "support": { "issues": "https://github.com/utopia-php/queue/issues", - "source": "https://github.com/utopia-php/queue/tree/0.6.0" + "source": "https://github.com/utopia-php/queue/tree/0.7.0" }, - "time": "2023-10-16T16:59:45+00:00" + "time": "2024-01-17T19:00:43+00:00" }, { "name": "utopia-php/registry", @@ -5123,16 +5120,16 @@ }, { "name": "symfony/polyfill-ctype", - "version": "v1.28.0", + "version": "v1.29.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb" + "reference": "ef4d7e442ca910c4764bce785146269b30cb5fc4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb", - "reference": "ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/ef4d7e442ca910c4764bce785146269b30cb5fc4", + "reference": "ef4d7e442ca910c4764bce785146269b30cb5fc4", "shasum": "" }, "require": { @@ -5146,9 +5143,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.28-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -5185,7 +5179,7 @@ "portable" ], "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.28.0" + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.29.0" }, "funding": [ { @@ -5201,20 +5195,20 @@ "type": "tidelift" } ], - "time": "2023-01-26T09:26:14+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.28.0", + "version": "v1.29.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "42292d99c55abe617799667f454222c54c60e229" + "reference": "9773676c8a1bb1f8d4340a62efe641cf76eda7ec" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/42292d99c55abe617799667f454222c54c60e229", - "reference": "42292d99c55abe617799667f454222c54c60e229", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9773676c8a1bb1f8d4340a62efe641cf76eda7ec", + "reference": "9773676c8a1bb1f8d4340a62efe641cf76eda7ec", "shasum": "" }, "require": { @@ -5228,9 +5222,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.28-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -5268,7 +5259,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.28.0" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.29.0" }, "funding": [ { @@ -5284,7 +5275,7 @@ "type": "tidelift" } ], - "time": "2023-07-28T09:04:16+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { "name": "textalk/websocket", diff --git a/docker-compose.yml b/docker-compose.yml index 72d81cc8a4..0a806929d7 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -582,6 +582,7 @@ services: - _APP_REDIS_PORT - _APP_REDIS_USER - _APP_REDIS_PASS + - _APP_SMS_PROJECTS_DENY_LIST - _APP_DB_HOST - _APP_DB_PORT - _APP_DB_SCHEMA @@ -662,6 +663,7 @@ services: - _APP_MAINTENANCE_RETENTION_AUDIT - _APP_MAINTENANCE_RETENTION_USAGE_HOURLY - _APP_MAINTENANCE_RETENTION_SCHEDULES + - _APP_MAINTENANCE_DELAY appwrite-worker-usage: entrypoint: worker-usage diff --git a/docs/references/health/get-certificate.md b/docs/references/health/get-certificate.md new file mode 100644 index 0000000000..bf1eeb8384 --- /dev/null +++ b/docs/references/health/get-certificate.md @@ -0,0 +1 @@ +Get the SSL certificate for a domain \ No newline at end of file diff --git a/docs/references/health/get-failed-queue-jobs.md b/docs/references/health/get-failed-queue-jobs.md new file mode 100644 index 0000000000..79d4af6497 --- /dev/null +++ b/docs/references/health/get-failed-queue-jobs.md @@ -0,0 +1 @@ +Returns the amount of failed jobs in a given queue. diff --git a/src/Appwrite/Extend/Exception.php b/src/Appwrite/Extend/Exception.php index bd1397bc20..29eba3785b 100644 --- a/src/Appwrite/Extend/Exception.php +++ b/src/Appwrite/Extend/Exception.php @@ -244,7 +244,9 @@ class Exception extends \Exception public const REALTIME_POLICY_VIOLATION = 'realtime_policy_violation'; /** Health */ - public const QUEUE_SIZE_EXCEEDED = 'queue_size_exceeded'; + public const HEALTH_QUEUE_SIZE_EXCEEDED = 'health_queue_size_exceeded'; + public const HEALTH_CERTIFICATE_EXPIRED = 'health_certificate_expired'; + public const HEALTH_INVALID_HOST = 'health_invalid_host'; /** Provider */ public const PROVIDER_NOT_FOUND = 'provider_not_found'; @@ -276,21 +278,16 @@ class Exception extends \Exception protected string $type = ''; protected array $errors = []; - protected bool $publish = true; + protected bool $publish; public function __construct(string $type = Exception::GENERAL_UNKNOWN, string $message = null, int $code = null, \Throwable $previous = null) { $this->errors = Config::getParam('errors'); $this->type = $type; + $this->code = $code ?? $this->errors[$type]['code']; + $this->message = $message ?? $this->errors[$type]['description']; - if (isset($this->errors[$type])) { - $this->code = $this->errors[$type]['code']; - $this->message = $this->errors[$type]['description']; - $this->publish = $this->errors[$type]['publish'] ?? true; - } - - $this->message = $message ?? $this->message; - $this->code = $code ?? $this->code; + $this->publish = $this->errors[$type]['publish'] ?? ($this->code >= 500); parent::__construct($this->message, $this->code, $previous); } diff --git a/src/Appwrite/Network/Validator/CNAME.php b/src/Appwrite/Network/Validator/CNAME.php index 678a57cecd..e1ae061c84 100644 --- a/src/Appwrite/Network/Validator/CNAME.php +++ b/src/Appwrite/Network/Validator/CNAME.php @@ -6,6 +6,11 @@ use Utopia\Validator; class CNAME extends Validator { + /** + * @var mixed + */ + protected mixed $logs; + /** * @var string */ @@ -27,6 +32,14 @@ class CNAME extends Validator return 'Invalid CNAME record'; } + /** + * @return mixed + */ + public function getLogs(): mixed + { + return $this->logs; + } + /** * Check if CNAME record target value matches selected target * @@ -42,6 +55,7 @@ class CNAME extends Validator try { $records = \dns_get_record($domain, DNS_CNAME); + $this->logs = $records; } catch (\Throwable $th) { return false; } diff --git a/src/Appwrite/Platform/Services/Tasks.php b/src/Appwrite/Platform/Services/Tasks.php index 8a73825755..671120a817 100644 --- a/src/Appwrite/Platform/Services/Tasks.php +++ b/src/Appwrite/Platform/Services/Tasks.php @@ -3,6 +3,7 @@ namespace Appwrite\Platform\Services; use Appwrite\Platform\Tasks\CalcTierStats; +use Appwrite\Platform\Tasks\CreateInfMetric; use Appwrite\Platform\Tasks\DeleteOrphanedProjects; use Appwrite\Platform\Tasks\DevGenerateTranslations; use Appwrite\Platform\Tasks\Doctor; @@ -12,6 +13,8 @@ use Appwrite\Platform\Tasks\Install; use Appwrite\Platform\Tasks\Maintenance; use Appwrite\Platform\Tasks\Migrate; use Appwrite\Platform\Tasks\PatchRecreateRepositoriesDocuments; +use Appwrite\Platform\Tasks\QueueCount; +use Appwrite\Platform\Tasks\QueueRetry; use Appwrite\Platform\Tasks\SDKs; use Appwrite\Platform\Tasks\SSL; use Appwrite\Platform\Tasks\ScheduleFunctions; @@ -21,7 +24,6 @@ use Appwrite\Platform\Tasks\Upgrade; use Appwrite\Platform\Tasks\Vars; use Appwrite\Platform\Tasks\Version; use Appwrite\Platform\Tasks\VolumeSync; -use Appwrite\Platform\Tasks\CreateInfMetric; use Utopia\Platform\Service; class Tasks extends Service @@ -30,19 +32,8 @@ class Tasks extends Service { $this->type = self::TYPE_CLI; $this - ->addAction(Version::getName(), new Version()) - ->addAction(Vars::getName(), new Vars()) - ->addAction(SSL::getName(), new SSL()) - ->addAction(Hamster::getName(), new Hamster()) - ->addAction(Doctor::getName(), new Doctor()) - ->addAction(Install::getName(), new Install()) - ->addAction(Upgrade::getName(), new Upgrade()) - ->addAction(Maintenance::getName(), new Maintenance()) - ->addAction(Migrate::getName(), new Migrate()) - ->addAction(SDKs::getName(), new SDKs()) - ->addAction(VolumeSync::getName(), new VolumeSync()) - ->addAction(Specs::getName(), new Specs()) ->addAction(CalcTierStats::getName(), new CalcTierStats()) + ->addAction(CreateInfMetric::getName(), new CreateInfMetric()) ->addAction(DeleteOrphanedProjects::getName(), new DeleteOrphanedProjects()) ->addAction(DevGenerateTranslations::getName(), new DevGenerateTranslations()) ->addAction(Doctor::getName(), new Doctor()) @@ -51,7 +42,10 @@ class Tasks extends Service ->addAction(Install::getName(), new Install()) ->addAction(Maintenance::getName(), new Maintenance()) ->addAction(Migrate::getName(), new Migrate()) + ->addAction(Migrate::getName(), new Migrate()) ->addAction(PatchRecreateRepositoriesDocuments::getName(), new PatchRecreateRepositoriesDocuments()) + ->addAction(QueueCount::getName(), new QueueCount()) + ->addAction(QueueRetry::getName(), new QueueRetry()) ->addAction(SDKs::getName(), new SDKs()) ->addAction(SSL::getName(), new SSL()) ->addAction(ScheduleFunctions::getName(), new ScheduleFunctions()) @@ -61,7 +55,6 @@ class Tasks extends Service ->addAction(Vars::getName(), new Vars()) ->addAction(Version::getName(), new Version()) ->addAction(VolumeSync::getName(), new VolumeSync()) - ->addAction(CreateInfMetric::getName(), new CreateInfMetric()) ; } } diff --git a/src/Appwrite/Platform/Tasks/Maintenance.php b/src/Appwrite/Platform/Tasks/Maintenance.php index e46de1b522..3245a92448 100644 --- a/src/Appwrite/Platform/Tasks/Maintenance.php +++ b/src/Appwrite/Platform/Tasks/Maintenance.php @@ -36,6 +36,7 @@ class Maintenance extends Action // # of days in seconds (1 day = 86400s) $interval = (int) App::getEnv('_APP_MAINTENANCE_INTERVAL', '86400'); + $delay = (int) App::getEnv('_APP_MAINTENANCE_DELAY', '0'); $usageStatsRetentionHourly = (int) App::getEnv('_APP_MAINTENANCE_RETENTION_USAGE_HOURLY', '8640000'); //100 days $cacheRetention = (int) App::getEnv('_APP_MAINTENANCE_RETENTION_CACHE', '2592000'); // 30 days $schedulesDeletionRetention = (int) App::getEnv('_APP_MAINTENANCE_RETENTION_SCHEDULES', '86400'); // 1 Day @@ -60,7 +61,7 @@ class Maintenance extends Action $this->notifyDeleteCache($cacheRetention, $queueForDeletes); $this->notifyDeleteSchedules($schedulesDeletionRetention, $queueForDeletes); $this->notifyDeleteTargets($queueForDeletes); - }, $interval); + }, $interval, $delay); } protected function foreachProject(Database $dbForConsole, callable $callback): void diff --git a/src/Appwrite/Platform/Tasks/QueueCount.php b/src/Appwrite/Platform/Tasks/QueueCount.php new file mode 100644 index 0000000000..9b7bba82d1 --- /dev/null +++ b/src/Appwrite/Platform/Tasks/QueueCount.php @@ -0,0 +1,70 @@ +desc('Return the number of from a specific queue identified by the name parameter with a specific type') + ->param('name', '', new WhiteList([ + Event::DATABASE_QUEUE_NAME, + Event::DELETE_QUEUE_NAME, + Event::AUDITS_QUEUE_NAME, + Event::MAILS_QUEUE_NAME, + Event::FUNCTIONS_QUEUE_NAME, + Event::USAGE_QUEUE_NAME, + Event::WEBHOOK_QUEUE_NAME, + Event::CERTIFICATES_QUEUE_NAME, + Event::BUILDS_QUEUE_NAME, + Event::MESSAGING_QUEUE_NAME, + Event::MIGRATIONS_QUEUE_NAME, + Event::HAMSTER_QUEUE_NAME + ]), 'Queue name') + ->param('type', '', new WhiteList([ + 'success', + 'failed', + 'processing', + ]), 'Queue type') + ->inject('queue') + ->callback(fn ($name, $type, $queue) => $this->action($name, $type, $queue)); + } + + /** + * @param string $name The name of the queue to count the jobs from + * @param string $type The type of jobs to count + * @param Connection $queue + */ + public function action(string $name, string $type, Connection $queue): void + { + if (!$name) { + Console::error('Missing required parameter $name'); + return; + } + + $queueClient = new Client($name, $queue); + + $count = match ($type) { + 'success' => $queueClient->countSuccessfulJobs(), + 'failed' => $queueClient->countFailedJobs(), + 'processing' => $queueClient->countProcessingJobs(), + default => 0 + }; + + Console::log("Queue: '{$name}' has {$count} {$type} jobs."); + } +} diff --git a/src/Appwrite/Platform/Tasks/QueueRetry.php b/src/Appwrite/Platform/Tasks/QueueRetry.php new file mode 100644 index 0000000000..cba68f9936 --- /dev/null +++ b/src/Appwrite/Platform/Tasks/QueueRetry.php @@ -0,0 +1,64 @@ +desc('Retry failed jobs from a specific queue identified by the name parameter') + ->param('name', '', new WhiteList([ + Event::DATABASE_QUEUE_NAME, + Event::DELETE_QUEUE_NAME, + Event::AUDITS_QUEUE_NAME, + Event::MAILS_QUEUE_NAME, + Event::FUNCTIONS_QUEUE_NAME, + Event::USAGE_QUEUE_NAME, + Event::WEBHOOK_CLASS_NAME, + Event::CERTIFICATES_QUEUE_NAME, + Event::BUILDS_QUEUE_NAME, + Event::MESSAGING_QUEUE_NAME, + Event::MIGRATIONS_QUEUE_NAME, + Event::HAMSTER_CLASS_NAME + ]), 'Queue name') + ->inject('queue') + ->callback(fn ($name, $queue) => $this->action($name, $queue)); + } + + /** + * @param string $name The name of the queue to retry jobs from + * @param Connection $queue + */ + public function action(string $name, Connection $queue): void + { + if (!$name) { + Console::error('Missing required parameter $name'); + return; + } + + $queueClient = new Client($name, $queue); + + if ($queueClient->countFailedJobs() === 0) { + Console::error('No failed jobs found.'); + return; + } + + Console::log('Retrying failed jobs...'); + + $queueClient->retry(); + } +} diff --git a/src/Appwrite/Platform/Tasks/SSL.php b/src/Appwrite/Platform/Tasks/SSL.php index 6dbf4dcd70..12cb0d6be2 100644 --- a/src/Appwrite/Platform/Tasks/SSL.php +++ b/src/Appwrite/Platform/Tasks/SSL.php @@ -7,6 +7,7 @@ use Appwrite\Event\Certificate; use Utopia\App; use Utopia\CLI\Console; use Utopia\Database\Document; +use Utopia\Validator\Boolean; use Utopia\Validator\Hostname; class SSL extends Action @@ -21,19 +22,22 @@ class SSL extends Action $this ->desc('Validate server certificates') ->param('domain', App::getEnv('_APP_DOMAIN', ''), new Hostname(), 'Domain to generate certificate for. If empty, main domain will be used.', true) + ->param('skip-check', true, new Boolean(true), 'If DNS and renew check should be skipped. Defaults to true, and when true, all jobs will result in certificate generation attempt.', true) ->inject('queueForCertificates') - ->callback(fn (string $domain, Certificate $queueForCertificates) => $this->action($domain, $queueForCertificates)); + ->callback(fn (string $domain, bool|string $skipCheck, Certificate $queueForCertificates) => $this->action($domain, $skipCheck, $queueForCertificates)); } - public function action(string $domain, Certificate $queueForCertificates): void + public function action(string $domain, bool|string $skipCheck, Certificate $queueForCertificates): void { + $skipCheck = \strval($skipCheck) === 'true'; + Console::success('Scheduling a job to issue a TLS certificate for domain: ' . $domain); $queueForCertificates ->setDomain(new Document([ 'domain' => $domain ])) - ->setSkipRenewCheck(true) + ->setSkipRenewCheck($skipCheck) ->trigger(); } } diff --git a/src/Appwrite/Platform/Workers/Certificates.php b/src/Appwrite/Platform/Workers/Certificates.php index b91f886a2c..13e85d473d 100644 --- a/src/Appwrite/Platform/Workers/Certificates.php +++ b/src/Appwrite/Platform/Workers/Certificates.php @@ -75,7 +75,7 @@ class Certificates extends Action $log->addTag('domain', $domain->get()); - $this->execute($domain, $dbForConsole, $queueForMails, $queueForEvents, $queueForFunctions, $skipRenewCheck); + $this->execute($domain, $dbForConsole, $queueForMails, $queueForEvents, $queueForFunctions, $log, $skipRenewCheck); } /** @@ -89,7 +89,7 @@ class Certificates extends Action * @throws Throwable * @throws \Utopia\Database\Exception */ - private function execute(Domain $domain, Database $dbForConsole, Mail $queueForMails, Event $queueForEvents, Func $queueForFunctions, bool $skipRenewCheck = false): void + private function execute(Domain $domain, Database $dbForConsole, Mail $queueForMails, Event $queueForEvents, Func $queueForFunctions, Log $log, bool $skipRenewCheck = false): void { /** * 1. Read arguments and validate domain @@ -143,11 +143,11 @@ class Certificates extends Action if (!$skipRenewCheck) { $mainDomain = $this->getMainDomain(); $isMainDomain = !isset($mainDomain) || $domain->get() === $mainDomain; - $this->validateDomain($domain, $isMainDomain); + $this->validateDomain($domain, $isMainDomain, $log); } // If certificate exists already, double-check expiry date. Skip if job is forced - if (!$skipRenewCheck && !$this->isRenewRequired($domain->get())) { + if (!$skipRenewCheck && !$this->isRenewRequired($domain->get(), $log)) { throw new Exception('Renew isn\'t required.'); } @@ -185,6 +185,8 @@ class Certificates extends Action // Send email to security email $this->notifyError($domain->get(), $e->getMessage(), $attempts, $queueForMails); + + throw $e; } finally { // All actions result in new updatedAt date $certificate->setAttribute('updated', DateTime::now()); @@ -252,7 +254,7 @@ class Certificates extends Action * @return void * @throws Exception */ - private function validateDomain(Domain $domain, bool $isMainDomain): void + private function validateDomain(Domain $domain, bool $isMainDomain, Log $log): void { if (empty($domain->get())) { throw new Exception('Missing certificate domain.'); @@ -272,8 +274,15 @@ class Certificates extends Action } // Verify domain with DNS records + $validationStart = \microtime(true); $validator = new CNAME($target->get()); if (!$validator->isValid($domain->get())) { + $log->addExtra('dnsTiming', \strval(\microtime(true) - $validationStart)); + $log->addTag('dnsDomain', $domain->get()); + + $error = $validator->getLogs(); + $log->addExtra('dnsResponse', \is_array($error) ? \json_encode($error) : \strval($error)); + throw new Exception('Failed to verify domain DNS records.'); } } else { @@ -289,7 +298,7 @@ class Certificates extends Action * @return bool True, if certificate needs to be renewed * @throws Exception */ - private function isRenewRequired(string $domain): bool + private function isRenewRequired(string $domain, Log $log): bool { $certPath = APP_STORAGE_CERTIFICATES . '/' . $domain . '/cert.pem'; if (\file_exists($certPath)) { @@ -299,12 +308,15 @@ class Certificates extends Action $validTo = $certData['validTo_time_t'] ?? 0; if (empty($validTo)) { + $log->addTag('certificateDomain', $domain); throw new Exception('Unable to read certificate file (cert.pem).'); } // LetsEncrypt allows renewal 30 days before expiry $expiryInAdvance = (60 * 60 * 24 * 30); if ($validTo - $expiryInAdvance > \time()) { + $log->addTag('certificateDomain', $domain); + $log->addExtra('certificateData', \is_array($certData) ? \json_encode($certData) : \strval($certData)); return false; } } diff --git a/src/Appwrite/Platform/Workers/Deletes.php b/src/Appwrite/Platform/Workers/Deletes.php index f22fa9ca4e..2875964d59 100644 --- a/src/Appwrite/Platform/Workers/Deletes.php +++ b/src/Appwrite/Platform/Workers/Deletes.php @@ -630,12 +630,7 @@ class Deletes extends Action $teamId = $document->getAttribute('teamId'); $team = $dbForProject->getDocument('teams', $teamId); if (!$team->isEmpty()) { - $team = $dbForProject->updateDocument( - 'teams', - $teamId, - // Ensure that total >= 0 - $team->setAttribute('total', \max($team->getAttribute('total', 0) - 1, 0)) - ); + $dbForProject->decreaseDocumentAttribute('teams', $teamId, 'total', 1, 0); } } }); diff --git a/src/Appwrite/Platform/Workers/Messaging.php b/src/Appwrite/Platform/Workers/Messaging.php index 57a0e5f648..e39a2dd823 100644 --- a/src/Appwrite/Platform/Workers/Messaging.php +++ b/src/Appwrite/Platform/Workers/Messaging.php @@ -2,23 +2,22 @@ namespace Appwrite\Platform\Workers; +use Appwrite\Event\Usage; use Appwrite\Extend\Exception; use Appwrite\Messaging\Status as MessageStatus; use Utopia\App; use Utopia\CLI\Console; -use Utopia\Database\Helpers\ID; use Utopia\DSN\DSN; -use Utopia\Logger\Log; -use Utopia\Platform\Action; -use Utopia\Queue\Message; use Utopia\Database\Database; use Utopia\Database\DateTime; use Utopia\Database\Document; +use Utopia\Database\Helpers\ID; use Utopia\Database\Query; +use Utopia\Logger\Log; use Utopia\Messaging\Adapter\Email as EmailAdapter; use Utopia\Messaging\Adapter\Email\Mailgun; -use Utopia\Messaging\Adapter\Email\Sendgrid; use Utopia\Messaging\Adapter\Email\SMTP; +use Utopia\Messaging\Adapter\Email\Sendgrid; use Utopia\Messaging\Adapter\Push as PushAdapter; use Utopia\Messaging\Adapter\Push\APNS; use Utopia\Messaging\Adapter\Push\FCM; @@ -32,7 +31,8 @@ use Utopia\Messaging\Adapter\SMS\Vonage; use Utopia\Messaging\Messages\Email; use Utopia\Messaging\Messages\Push; use Utopia\Messaging\Messages\SMS; -use Utopia\Messaging\Response; +use Utopia\Platform\Action; +use Utopia\Queue\Message; use function Swoole\Coroutine\batch; @@ -53,31 +53,40 @@ class Messaging extends Action ->inject('message') ->inject('log') ->inject('dbForProject') - ->callback(fn(Message $message, Log $log, Database $dbForProject) => $this->action($message, $log, $dbForProject)); + ->inject('queueForUsage') + ->callback(fn(Message $message, Log $log, Database $dbForProject, Usage $queueForUsage) => $this->action($message, $log, $dbForProject, $queueForUsage)); } /** * @param Message $message * @param Log $log * @param Database $dbForProject + * @param Usage $queueForUsage * @return void * @throws Exception */ - public function action(Message $message, Log $log, Database $dbForProject): void + public function action(Message $message, Log $log, Database $dbForProject, Usage $queueForUsage): void { $payload = $message->getPayload() ?? []; if (empty($payload)) { - throw new \Exception('Payload not found.'); + throw new Exception('Missing payload'); } + if ( !\is_null($payload['message']) && !\is_null($payload['recipients']) && $payload['providerType'] === MESSAGE_TYPE_SMS ) { // Message was triggered internally - $this->processInternalSMSMessage($log, new Document($payload['message']), $payload['recipients']); + $this->processInternalSMSMessage( + new Document($payload['message']), + new Document($payload['project'] ?? []), + $payload['recipients'], + $queueForUsage, + $log, + ); } else { $message = $dbForProject->getDocument('messages', $payload['messageId']); @@ -299,12 +308,26 @@ class Messaging extends Action $dbForProject->updateDocument('messages', $message->getId(), $message); } - private function processInternalSMSMessage(Log $log, Document $message, array $recipients): void + private function processInternalSMSMessage(Document $message, Document $project, array $recipients, Usage $queueForUsage, Log $log): void { if (empty(App::getEnv('_APP_SMS_PROVIDER')) || empty(App::getEnv('_APP_SMS_FROM'))) { throw new \Exception('Skipped SMS processing. Missing "_APP_SMS_PROVIDER" or "_APP_SMS_FROM" environment variables.'); } + if ($project->isEmpty()) { + throw new Exception('Project not set in payload'); + } + + Console::log('Project: ' . $project->getId()); + + $denyList = App::getEnv('_APP_SMS_PROJECTS_DENY_LIST', ''); + $denyList = explode(',', $denyList); + + if (\in_array($project->getId(), $denyList)) { + Console::error('Project is in the deny list. Skipping...'); + return; + } + $smsDSN = new DSN(App::getEnv('_APP_SMS_PROVIDER')); $host = $smsDSN->getHost(); $password = $smsDSN->getPassword(); @@ -354,16 +377,21 @@ class Messaging extends Action $batches = \array_chunk($recipients, $maxBatchSize); $batchIndex = 0; - batch(\array_map(function ($batch) use ($message, $provider, $adapter, $batchIndex) { - return function () use ($batch, $message, $provider, $adapter, $batchIndex) { + batch(\array_map(function ($batch) use ($message, $provider, $adapter, $batchIndex, $project, $queueForUsage) { + return function () use ($batch, $message, $provider, $adapter, $batchIndex, $project, $queueForUsage) { $message->setAttribute('to', $batch); $data = $this->buildSMSMessage($message, $provider); try { $adapter->send($data); + + $queueForUsage + ->setProject($project) + ->addMetric(METRIC_MESSAGES, 1) + ->trigger(); } catch (\Exception $e) { - Console::error('Failed sending to targets ' . $batchIndex + 1 . '-' . \count($batch) . ' with error: ' . $e->getMessage()); // TODO: Find a way to log into Sentry + throw new Exception('Failed sending to targets ' . $batchIndex + 1 . '-' . \count($batch) . ' with error: ' . $e->getMessage(), 500); } }; }, $batches)); @@ -376,6 +404,7 @@ class Messaging extends Action private function sms(Document $provider): ?SMSAdapter { $credentials = $provider->getAttribute('credentials'); + return match ($provider->getAttribute('provider')) { 'mock' => new Mock('username', 'password'), 'twilio' => new Twilio($credentials['accountSid'], $credentials['authToken']), @@ -390,6 +419,7 @@ class Messaging extends Action private function push(Document $provider): ?PushAdapter { $credentials = $provider->getAttribute('credentials'); + return match ($provider->getAttribute('provider')) { 'mock' => new Mock('username', 'password'), 'apns' => new APNS( @@ -407,6 +437,7 @@ class Messaging extends Action { $credentials = $provider->getAttribute('credentials', []); $options = $provider->getAttribute('options', []); + return match ($provider->getAttribute('provider')) { 'mock' => new Mock('username', 'password'), 'smtp' => new SMTP( diff --git a/src/Appwrite/Platform/Workers/Usage.php b/src/Appwrite/Platform/Workers/Usage.php index 5537fae504..2097f101bd 100644 --- a/src/Appwrite/Platform/Workers/Usage.php +++ b/src/Appwrite/Platform/Workers/Usage.php @@ -20,7 +20,6 @@ class Usage extends Action ]; protected const INFINITY_PERIOD = '_inf_'; - protected const DEBUG_PROJECT_ID = 85293; public static function getName(): string { return 'usage'; @@ -70,17 +69,6 @@ class Usage extends Action getProjectDB: $getProjectDB ); } - if ($project->getInternalId() == self::DEBUG_PROJECT_ID) { - var_dump([ - 'type' => 'payload', - 'project' => $project->getInternalId(), - 'database' => $project['database'] ?? '', - $payload['metrics'] - ]); - - var_dump('=========================='); - } - self::$stats[$projectId]['project'] = $project; foreach ($payload['metrics'] ?? [] as $metric) { if (!isset(self::$stats[$projectId]['keys'][$metric['key']])) { @@ -91,7 +79,6 @@ class Usage extends Action } } - /** * On Documents that tied by relations like functions>deployments>build || documents>collection>database || buckets>files. * When we remove a parent document we need to deduct his children aggregation from the project scope. diff --git a/src/Appwrite/Platform/Workers/UsageHook.php b/src/Appwrite/Platform/Workers/UsageHook.php index 68e6a3fede..4781b1e892 100644 --- a/src/Appwrite/Platform/Workers/UsageHook.php +++ b/src/Appwrite/Platform/Workers/UsageHook.php @@ -57,14 +57,6 @@ class UsageHook extends Usage try { $dbForProject = $getProjectDB($data['project']); - if ($projectInternalId == 85293) { - var_dump([ - 'project' => $projectInternalId, - 'database' => $database, - 'time' => DateTime::now(), - 'data' => $data['keys'] - ]); - } foreach ($data['keys'] ?? [] as $key => $value) { if ($value == 0) { continue; @@ -75,15 +67,6 @@ class UsageHook extends Usage $id = \md5("{$time}_{$period}_{$key}"); try { - if ($projectInternalId == self::DEBUG_PROJECT_ID) { - var_dump([ - 'type' => 'create', - 'period' => $period, - 'metric' => $key, - 'id' => $id, - 'value' => $value - ]); - } $dbForProject->createDocument('stats_v2', new Document([ '$id' => $id, 'period' => $period, @@ -94,15 +77,6 @@ class UsageHook extends Usage ])); } catch (Duplicate $th) { if ($value < 0) { - if ($projectInternalId == self::DEBUG_PROJECT_ID) { - var_dump([ - 'type' => 'decrease', - 'period' => $period, - 'metric' => $key, - 'id' => $id, - 'value' => $value - ]); - } $dbForProject->decreaseDocumentAttribute( 'stats_v2', $id, @@ -110,15 +84,6 @@ class UsageHook extends Usage abs($value) ); } else { - if ($projectInternalId == self::DEBUG_PROJECT_ID) { - var_dump([ - 'type' => 'increase', - 'period' => $period, - 'metric' => $key, - 'id' => $id, - 'value' => $value - ]); - } $dbForProject->increaseDocumentAttribute( 'stats_v2', $id, diff --git a/src/Appwrite/Utopia/Response.php b/src/Appwrite/Utopia/Response.php index 7ee01f53ec..1a4bc7fb59 100644 --- a/src/Appwrite/Utopia/Response.php +++ b/src/Appwrite/Utopia/Response.php @@ -70,6 +70,7 @@ use Appwrite\Utopia\Response\Model\Token; use Appwrite\Utopia\Response\Model\Webhook; use Appwrite\Utopia\Response\Model\Preferences; use Appwrite\Utopia\Response\Model\HealthAntivirus; +use Appwrite\Utopia\Response\Model\HealthCertificate; use Appwrite\Utopia\Response\Model\HealthQueue; use Appwrite\Utopia\Response\Model\HealthStatus; use Appwrite\Utopia\Response\Model\HealthTime; @@ -279,6 +280,7 @@ class Response extends SwooleResponse public const MODEL_HEALTH_QUEUE = 'healthQueue'; public const MODEL_HEALTH_TIME = 'healthTime'; public const MODEL_HEALTH_ANTIVIRUS = 'healthAntivirus'; + public const MODEL_HEALTH_CERTIFICATE = 'healthCertificate'; public const MODEL_HEALTH_STATUS_LIST = 'healthStatusList'; // Console @@ -421,6 +423,7 @@ class Response extends SwooleResponse ->setModel(new HealthAntivirus()) ->setModel(new HealthQueue()) ->setModel(new HealthStatus()) + ->setModel(new HealthCertificate()) ->setModel(new HealthTime()) ->setModel(new HealthVersion()) ->setModel(new Metric()) diff --git a/src/Appwrite/Utopia/Response/Model/HealthCertificate.php b/src/Appwrite/Utopia/Response/Model/HealthCertificate.php new file mode 100644 index 0000000000..e4990acc0a --- /dev/null +++ b/src/Appwrite/Utopia/Response/Model/HealthCertificate.php @@ -0,0 +1,71 @@ +addRule('name', [ + 'type' => self::TYPE_STRING, + 'description' => 'Certificate name', + 'default' => '', + 'example' => '/CN=www.google.com', + ]) + ->addRule('subjectSN', [ + 'type' => self::TYPE_STRING, + 'description' => 'Subject SN', + 'default' => 'www.google.com', + 'example' => '', + ]) + ->addRule('issuerOrganisation', [ + 'type' => self::TYPE_STRING, + 'description' => 'Issuer organisation', + 'default' => 'Google Trust Services LLC', + 'example' => '', + ]) + ->addRule('validFrom', [ + 'type' => self::TYPE_STRING, + 'description' => 'Valid from', + 'default' => '', + 'example' => '1704200998', + ]) + ->addRule('validTo', [ + 'type' => self::TYPE_STRING, + 'description' => 'Valid to', + 'default' => '', + 'example' => '1711458597', + ]) + ->addRule('signatureTypeSN', [ + 'type' => self::TYPE_STRING, + 'description' => 'Signature type SN', + 'default' => '', + 'example' => 'RSA-SHA256', + ]) + ; + } + + /** + * Get Name + * + * @return string + */ + public function getName(): string + { + return 'Health Certificate'; + } + + /** + * Get Type + * + * @return string + */ + public function getType(): string + { + return Response::MODEL_HEALTH_CERTIFICATE; + } +} diff --git a/tests/e2e/Services/Health/HealthCustomServerTest.php b/tests/e2e/Services/Health/HealthCustomServerTest.php index 3ea1b884a7..c817222c48 100644 --- a/tests/e2e/Services/Health/HealthCustomServerTest.php +++ b/tests/e2e/Services/Health/HealthCustomServerTest.php @@ -424,4 +424,74 @@ class HealthCustomServerTest extends Scope return []; } + + public function testCertificateValidity(): array + { + /** + * Test for SUCCESS + */ + $response = $this->client->call(Client::METHOD_GET, '/health/certificate?domain=www.google.com', array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + ], $this->getHeaders()), []); + + $this->assertEquals(200, $response['headers']['status-code']); + $this->assertEquals('/CN=www.google.com', $response['body']['name']); + $this->assertEquals('www.google.com', $response['body']['subjectSN']); + $this->assertEquals('Google Trust Services LLC', $response['body']['issuerOrganisation']); + $this->assertIsInt($response['body']['validFrom']); + $this->assertIsInt($response['body']['validTo']); + + $response = $this->client->call(Client::METHOD_GET, '/health/certificate?domain=appwrite.io', array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + ], $this->getHeaders()), []); + + $this->assertEquals(200, $response['headers']['status-code']); + $this->assertEquals('/CN=appwrite.io', $response['body']['name']); + $this->assertEquals('appwrite.io', $response['body']['subjectSN']); + $this->assertEquals("Let's Encrypt", $response['body']['issuerOrganisation']); + $this->assertIsInt($response['body']['validFrom']); + $this->assertIsInt($response['body']['validTo']); + + $response = $this->client->call(Client::METHOD_GET, '/health/certificate?domain=https://google.com', array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + ], $this->getHeaders()), []); + + $this->assertEquals(200, $response['headers']['status-code']); + + /** + * Test for FAILURE + */ + $response = $this->client->call(Client::METHOD_GET, '/health/certificate?domain=localhost', array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + ], $this->getHeaders()), []); + + $this->assertEquals(400, $response['headers']['status-code']); + + $response = $this->client->call(Client::METHOD_GET, '/health/certificate?domain=doesnotexist.com', array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + ], $this->getHeaders()), []); + + $this->assertEquals(404, $response['headers']['status-code']); + + $response = $this->client->call(Client::METHOD_GET, '/health/certificate?domain=www.google.com/usr/src/local', array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + ], $this->getHeaders()), []); + + $this->assertEquals(400, $response['headers']['status-code']); + + $response = $this->client->call(Client::METHOD_GET, '/health/certificate?domain=', array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + ], $this->getHeaders()), []); + + $this->assertEquals(400, $response['headers']['status-code']); + + return []; + } } From 05884e154e64f5e6e9f43fc82efaf1b79a3f8efa Mon Sep 17 00:00:00 2001 From: Jake Barnby Date: Mon, 12 Feb 2024 15:10:18 +1300 Subject: [PATCH 33/87] Update telesign credentials --- app/controllers/api/messaging.php | 36 ++++++++++----------- src/Appwrite/Platform/Workers/Messaging.php | 6 ++-- tests/e2e/Services/GraphQL/Base.php | 8 ++--- 3 files changed, 25 insertions(+), 25 deletions(-) diff --git a/app/controllers/api/messaging.php b/app/controllers/api/messaging.php index 25260e1071..1feb945bdc 100644 --- a/app/controllers/api/messaging.php +++ b/app/controllers/api/messaging.php @@ -387,13 +387,13 @@ App::post('/v1/messaging/providers/telesign') ->param('providerId', '', new CustomId(), 'Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can\'t start with a special char. Max length is 36 chars.') ->param('name', '', new Text(128), 'Provider name.') ->param('from', '', new Phone(), 'Sender Phone number. Format this number with a leading \'+\' and a country code, e.g., +16175551212.', true) - ->param('username', '', new Text(0), 'Telesign username.', true) - ->param('password', '', new Text(0), 'Telesign password.', true) + ->param('customerId', '', new Text(0), 'Telesign customer ID.', true) + ->param('apiKey', '', new Text(0), 'Telesign API key.', true) ->param('enabled', null, new Boolean(), 'Set as enabled.', true) ->inject('queueForEvents') ->inject('dbForProject') ->inject('response') - ->action(function (string $providerId, string $name, string $from, string $username, string $password, ?bool $enabled, Event $queueForEvents, Database $dbForProject, Response $response) { + ->action(function (string $providerId, string $name, string $from, string $customerId, string $apiKey, ?bool $enabled, Event $queueForEvents, Database $dbForProject, Response $response) { $providerId = $providerId == 'unique()' ? ID::unique() : $providerId; $options = []; @@ -404,18 +404,18 @@ App::post('/v1/messaging/providers/telesign') $credentials = []; - if (!empty($username)) { - $credentials['username'] = $username; + if (!empty($customerId)) { + $credentials['customerId'] = $customerId; } - if (!empty($password)) { - $credentials['password'] = $password; + if (!empty($apiKey)) { + $credentials['apiKey'] = $apiKey; } if ( $enabled === true - && \array_key_exists('username', $credentials) - && \array_key_exists('password', $credentials) + && \array_key_exists('customerId', $credentials) + && \array_key_exists('apiKey', $credentials) && \array_key_exists('from', $options) ) { $enabled = true; @@ -1386,13 +1386,13 @@ App::patch('/v1/messaging/providers/telesign/:providerId') ->param('providerId', '', new UID(), 'Provider ID.') ->param('name', '', new Text(128), 'Provider name.', true) ->param('enabled', null, new Boolean(), 'Set as enabled.', true) - ->param('username', '', new Text(0), 'Telesign username.', true) - ->param('password', '', new Text(0), 'Telesign password.', true) + ->param('customerId', '', new Text(0), 'Telesign customer ID.', true) + ->param('apiKey', '', new Text(0), 'Telesign API key.', true) ->param('from', '', new Text(256), 'Sender number.', true) ->inject('queueForEvents') ->inject('dbForProject') ->inject('response') - ->action(function (string $providerId, string $name, ?bool $enabled, string $username, string $password, string $from, Event $queueForEvents, Database $dbForProject, Response $response) { + ->action(function (string $providerId, string $name, ?bool $enabled, string $customerId, string $apiKey, string $from, Event $queueForEvents, Database $dbForProject, Response $response) { $provider = $dbForProject->getDocument('providers', $providerId); if ($provider->isEmpty()) { @@ -1416,12 +1416,12 @@ App::patch('/v1/messaging/providers/telesign/:providerId') $credentials = $provider->getAttribute('credentials'); - if (!empty($username)) { - $credentials['username'] = $username; + if (!empty($customerId)) { + $credentials['customerId'] = $customerId; } - if (!empty($password)) { - $credentials['password'] = $password; + if (!empty($apiKey)) { + $credentials['apiKey'] = $apiKey; } $provider->setAttribute('credentials', $credentials); @@ -1429,8 +1429,8 @@ App::patch('/v1/messaging/providers/telesign/:providerId') if (!\is_null($enabled)) { if ($enabled) { if ( - \array_key_exists('username', $credentials) && - \array_key_exists('password', $credentials) && + \array_key_exists('customerId', $credentials) && + \array_key_exists('apiKey', $credentials) && \array_key_exists('from', $provider->getAttribute('options')) ) { $provider->setAttribute('enabled', true); diff --git a/src/Appwrite/Platform/Workers/Messaging.php b/src/Appwrite/Platform/Workers/Messaging.php index 57a0e5f648..06359707c4 100644 --- a/src/Appwrite/Platform/Workers/Messaging.php +++ b/src/Appwrite/Platform/Workers/Messaging.php @@ -330,8 +330,8 @@ class Messaging extends Action 'apiKey' => $password ], 'telesign' => [ - 'username' => $user, - 'password' => $password + 'customerId' => $user, + 'apiKey' => $password ], 'msg91' => [ 'senderId' => $user, @@ -380,7 +380,7 @@ class Messaging extends Action 'mock' => new Mock('username', 'password'), 'twilio' => new Twilio($credentials['accountSid'], $credentials['authToken']), 'textmagic' => new Textmagic($credentials['username'], $credentials['apiKey']), - 'telesign' => new Telesign($credentials['username'], $credentials['password']), + 'telesign' => new Telesign($credentials['customerId'], $credentials['apiKey']), 'msg91' => new Msg91($credentials['senderId'], $credentials['authKey'], $credentials['templateId']), 'vonage' => new Vonage($credentials['apiKey'], $credentials['apiSecret']), default => null diff --git a/tests/e2e/Services/GraphQL/Base.php b/tests/e2e/Services/GraphQL/Base.php index 4cf63a3fad..c5cbb955fa 100644 --- a/tests/e2e/Services/GraphQL/Base.php +++ b/tests/e2e/Services/GraphQL/Base.php @@ -1832,8 +1832,8 @@ trait Base } }'; case self::$CREATE_TELESIGN_PROVIDER: - return 'mutation createTelesignProvider($providerId: String!, $name: String!, $from: String!, $username: String!, $password: String!) { - messagingCreateTelesignProvider(providerId: $providerId, name: $name, from: $from, username: $username, password: $password) { + return 'mutation createTelesignProvider($providerId: String!, $name: String!, $from: String!, $customerId: String!, $apiKey: String!) { + messagingCreateTelesignProvider(providerId: $providerId, name: $name, from: $from, customerId: $customerId, apiKey: $apiKey) { _id name provider @@ -1956,8 +1956,8 @@ trait Base } }'; case self::$UPDATE_TELESIGN_PROVIDER: - return 'mutation updateTelesignProvider($providerId: String!, $name: String!, $username: String!, $password: String!) { - messagingUpdateTelesignProvider(providerId: $providerId, name: $name, username: $username, password: $password) { + return 'mutation updateTelesignProvider($providerId: String!, $name: String!, $customerId: String!, $apiKey: String!) { + messagingUpdateTelesignProvider(providerId: $providerId, name: $name, customerId: $customerId, apiKey: $apiKey) { _id name provider From 272b9fecd7f817306fcdee78a7a21bed27912e17 Mon Sep 17 00:00:00 2001 From: Jake Barnby Date: Mon, 12 Feb 2024 15:15:42 +1300 Subject: [PATCH 34/87] Update lock --- composer.lock | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/composer.lock b/composer.lock index 053690da4a..d67fc77aea 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "e6e0d6874f4d718d96396d71a66864da", + "content-hash": "55d2ed1081591f2b3b3af9999236b109", "packages": [ { "name": "adhocore/jwt", @@ -1748,16 +1748,16 @@ }, { "name": "utopia-php/image", - "version": "0.6.0", + "version": "0.6.1", "source": { "type": "git", "url": "https://github.com/utopia-php/image.git", - "reference": "88f7209172bdabd81e76ac981c95fac117dc6e08" + "reference": "2d74c27e69e65a93cf94a16586598a04fe435bf0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/utopia-php/image/zipball/88f7209172bdabd81e76ac981c95fac117dc6e08", - "reference": "88f7209172bdabd81e76ac981c95fac117dc6e08", + "url": "https://api.github.com/repos/utopia-php/image/zipball/2d74c27e69e65a93cf94a16586598a04fe435bf0", + "reference": "2d74c27e69e65a93cf94a16586598a04fe435bf0", "shasum": "" }, "require": { @@ -1790,9 +1790,9 @@ ], "support": { "issues": "https://github.com/utopia-php/image/issues", - "source": "https://github.com/utopia-php/image/tree/0.6.0" + "source": "https://github.com/utopia-php/image/tree/0.6.1" }, - "time": "2024-01-24T06:59:44+00:00" + "time": "2024-02-05T13:31:44+00:00" }, { "name": "utopia-php/locale", From bb264bef23d01a7c2093fda84361278a1cbfe1cc Mon Sep 17 00:00:00 2001 From: Jake Barnby Date: Mon, 12 Feb 2024 15:17:50 +1300 Subject: [PATCH 35/87] Increase sleep for flaky test --- tests/e2e/Services/Account/AccountCustomClientTest.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/e2e/Services/Account/AccountCustomClientTest.php b/tests/e2e/Services/Account/AccountCustomClientTest.php index 3ea8e2723b..1169686ada 100644 --- a/tests/e2e/Services/Account/AccountCustomClientTest.php +++ b/tests/e2e/Services/Account/AccountCustomClientTest.php @@ -2227,7 +2227,7 @@ class AccountCustomClientTest extends Scope /** * @depends testUpdatePhone */ - #[Retry(count: 1)] + #[Retry(count: 2)] public function testPhoneVerification(array $data): array { $session = $data['session'] ?? ''; @@ -2248,7 +2248,7 @@ class AccountCustomClientTest extends Scope $this->assertEmpty($response['body']['secret']); $this->assertEquals(true, (new DatetimeValidator())->isValid($response['body']['expire'])); - \sleep(5); + \sleep(10); $smsRequest = $this->getLastRequest(); From 2059de5deac93970329769c0c3bfcb7504889581 Mon Sep 17 00:00:00 2001 From: Jake Barnby Date: Mon, 12 Feb 2024 15:40:11 +1300 Subject: [PATCH 36/87] Fix test --- tests/e2e/Services/GraphQL/Base.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/e2e/Services/GraphQL/Base.php b/tests/e2e/Services/GraphQL/Base.php index 4cf63a3fad..46143ed928 100644 --- a/tests/e2e/Services/GraphQL/Base.php +++ b/tests/e2e/Services/GraphQL/Base.php @@ -1208,7 +1208,7 @@ trait Base }'; case self::$CREATE_MAGIC_URL: return 'mutation createMagicURL($userId: String!, $email: String!){ - accountCreateMagicURLSession(userId: $userId, email: $email) { + accountCreateMagicURLToken(userId: $userId, email: $email) { userId expire } From dd8fd2e3946baf4ea1d8847bae657adbc2340309 Mon Sep 17 00:00:00 2001 From: Jake Barnby Date: Mon, 12 Feb 2024 16:10:28 +1300 Subject: [PATCH 37/87] Allow querying on labels attribute --- app/console | 2 +- composer.lock | 57 ++++++++----------- .../Database/Validator/Queries/Users.php | 3 +- 3 files changed, 27 insertions(+), 35 deletions(-) diff --git a/app/console b/app/console index 0a007a3b1b..8c8f0b7ccb 160000 --- a/app/console +++ b/app/console @@ -1 +1 @@ -Subproject commit 0a007a3b1b6eafc39dc19b7129f41643102f9676 +Subproject commit 8c8f0b7ccb0d98e9561f03a6486de1e59f3b3b9d diff --git a/composer.lock b/composer.lock index 226d55e38f..971dbc0a75 100644 --- a/composer.lock +++ b/composer.lock @@ -1029,16 +1029,16 @@ }, { "name": "symfony/polyfill-php80", - "version": "v1.28.0", + "version": "v1.29.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "6caa57379c4aec19c0a12a38b59b26487dcfe4b5" + "reference": "87b68208d5c1188808dd7839ee1e6c8ec3b02f1b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/6caa57379c4aec19c0a12a38b59b26487dcfe4b5", - "reference": "6caa57379c4aec19c0a12a38b59b26487dcfe4b5", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/87b68208d5c1188808dd7839ee1e6c8ec3b02f1b", + "reference": "87b68208d5c1188808dd7839ee1e6c8ec3b02f1b", "shasum": "" }, "require": { @@ -1046,9 +1046,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.28-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -1092,7 +1089,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.28.0" + "source": "https://github.com/symfony/polyfill-php80/tree/v1.29.0" }, "funding": [ { @@ -1108,7 +1105,7 @@ "type": "tidelift" } ], - "time": "2023-01-26T09:26:14+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { "name": "thecodingmachine/safe", @@ -1751,16 +1748,16 @@ }, { "name": "utopia-php/image", - "version": "0.6.0", + "version": "0.6.1", "source": { "type": "git", "url": "https://github.com/utopia-php/image.git", - "reference": "88f7209172bdabd81e76ac981c95fac117dc6e08" + "reference": "2d74c27e69e65a93cf94a16586598a04fe435bf0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/utopia-php/image/zipball/88f7209172bdabd81e76ac981c95fac117dc6e08", - "reference": "88f7209172bdabd81e76ac981c95fac117dc6e08", + "url": "https://api.github.com/repos/utopia-php/image/zipball/2d74c27e69e65a93cf94a16586598a04fe435bf0", + "reference": "2d74c27e69e65a93cf94a16586598a04fe435bf0", "shasum": "" }, "require": { @@ -1793,9 +1790,9 @@ ], "support": { "issues": "https://github.com/utopia-php/image/issues", - "source": "https://github.com/utopia-php/image/tree/0.6.0" + "source": "https://github.com/utopia-php/image/tree/0.6.1" }, - "time": "2024-01-24T06:59:44+00:00" + "time": "2024-02-05T13:31:44+00:00" }, { "name": "utopia-php/locale", @@ -5123,16 +5120,16 @@ }, { "name": "symfony/polyfill-ctype", - "version": "v1.28.0", + "version": "v1.29.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb" + "reference": "ef4d7e442ca910c4764bce785146269b30cb5fc4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb", - "reference": "ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/ef4d7e442ca910c4764bce785146269b30cb5fc4", + "reference": "ef4d7e442ca910c4764bce785146269b30cb5fc4", "shasum": "" }, "require": { @@ -5146,9 +5143,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.28-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -5185,7 +5179,7 @@ "portable" ], "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.28.0" + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.29.0" }, "funding": [ { @@ -5201,20 +5195,20 @@ "type": "tidelift" } ], - "time": "2023-01-26T09:26:14+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.28.0", + "version": "v1.29.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "42292d99c55abe617799667f454222c54c60e229" + "reference": "9773676c8a1bb1f8d4340a62efe641cf76eda7ec" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/42292d99c55abe617799667f454222c54c60e229", - "reference": "42292d99c55abe617799667f454222c54c60e229", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9773676c8a1bb1f8d4340a62efe641cf76eda7ec", + "reference": "9773676c8a1bb1f8d4340a62efe641cf76eda7ec", "shasum": "" }, "require": { @@ -5228,9 +5222,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.28-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -5268,7 +5259,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.28.0" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.29.0" }, "funding": [ { @@ -5284,7 +5275,7 @@ "type": "tidelift" } ], - "time": "2023-07-28T09:04:16+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { "name": "textalk/websocket", diff --git a/src/Appwrite/Utopia/Database/Validator/Queries/Users.php b/src/Appwrite/Utopia/Database/Validator/Queries/Users.php index 9b0dfe61e6..d9ecfc6a12 100644 --- a/src/Appwrite/Utopia/Database/Validator/Queries/Users.php +++ b/src/Appwrite/Utopia/Database/Validator/Queries/Users.php @@ -12,7 +12,8 @@ class Users extends Base 'passwordUpdate', 'registration', 'emailVerification', - 'phoneVerification' + 'phoneVerification', + 'labels', ]; /** From f237e863de13a7888b87e0e9a16146bf98a486c2 Mon Sep 17 00:00:00 2001 From: Jake Barnby Date: Mon, 12 Feb 2024 16:55:00 +1300 Subject: [PATCH 38/87] Throw on updating sent, processing, failed message --- app/config/errors.php | 10 ++++++++++ app/controllers/api/messaging.php | 27 +++++++++++++++++++++------ src/Appwrite/Extend/Exception.php | 2 ++ 3 files changed, 33 insertions(+), 6 deletions(-) diff --git a/app/config/errors.php b/app/config/errors.php index 79a092ec99..a8e7daf749 100644 --- a/app/config/errors.php +++ b/app/config/errors.php @@ -867,6 +867,16 @@ return [ 'description' => 'Message with the requested ID has already been sent.', 'code' => 400, ], + Exception::MESSAGE_ALREADY_PROCESSING => [ + 'name' => Exception::MESSAGE_ALREADY_PROCESSING, + 'description' => 'Message with the requested ID is already being processed.', + 'code' => 400, + ], + Exception::MESSAGE_ALREADY_FAILED => [ + 'name' => Exception::MESSAGE_ALREADY_FAILED, + 'description' => 'Message with the requested ID has already failed.', + 'code' => 400, + ], Exception::MESSAGE_ALREADY_SCHEDULED => [ 'name' => Exception::MESSAGE_ALREADY_SCHEDULED, 'description' => 'Message with the requested ID has already been scheduled for delivery.', diff --git a/app/controllers/api/messaging.php b/app/controllers/api/messaging.php index 25260e1071..8ff8d834dc 100644 --- a/app/controllers/api/messaging.php +++ b/app/controllers/api/messaging.php @@ -3077,8 +3077,13 @@ App::patch('/v1/messaging/messages/email/:messageId') throw new Exception(Exception::MESSAGE_NOT_FOUND); } - if ($message->getAttribute('status') === MessageStatus::SENT) { - throw new Exception(Exception::MESSAGE_ALREADY_SENT); + switch ($message->getAttribute('status')) { + case MessageStatus::PROCESSING: + throw new Exception(Exception::MESSAGE_ALREADY_PROCESSING); + case MessageStatus::SENT: + throw new Exception(Exception::MESSAGE_ALREADY_SENT); + case MessageStatus::FAILED: + throw new Exception(Exception::MESSAGE_ALREADY_FAILED); } if (!\is_null($message->getAttribute('scheduledAt')) && $message->getAttribute('scheduledAt') < new \DateTime()) { @@ -3207,8 +3212,13 @@ App::patch('/v1/messaging/messages/sms/:messageId') throw new Exception(Exception::MESSAGE_NOT_FOUND); } - if ($message->getAttribute('status') === 'sent') { - throw new Exception(Exception::MESSAGE_ALREADY_SENT); + switch ($message->getAttribute('status')) { + case MessageStatus::PROCESSING: + throw new Exception(Exception::MESSAGE_ALREADY_PROCESSING); + case MessageStatus::SENT: + throw new Exception(Exception::MESSAGE_ALREADY_SENT); + case MessageStatus::FAILED: + throw new Exception(Exception::MESSAGE_ALREADY_FAILED); } if (!is_null($message->getAttribute('scheduledAt')) && $message->getAttribute('scheduledAt') < new \DateTime()) { @@ -3329,8 +3339,13 @@ App::patch('/v1/messaging/messages/push/:messageId') throw new Exception(Exception::MESSAGE_NOT_FOUND); } - if ($message->getAttribute('status') === 'sent') { - throw new Exception(Exception::MESSAGE_ALREADY_SENT); + switch ($message->getAttribute('status')) { + case MessageStatus::PROCESSING: + throw new Exception(Exception::MESSAGE_ALREADY_PROCESSING); + case MessageStatus::SENT: + throw new Exception(Exception::MESSAGE_ALREADY_SENT); + case MessageStatus::FAILED: + throw new Exception(Exception::MESSAGE_ALREADY_FAILED); } if (!is_null($message->getAttribute('scheduledAt')) && $message->getAttribute('scheduledAt') < new \DateTime()) { diff --git a/src/Appwrite/Extend/Exception.php b/src/Appwrite/Extend/Exception.php index bd1397bc20..6a52e97b23 100644 --- a/src/Appwrite/Extend/Exception.php +++ b/src/Appwrite/Extend/Exception.php @@ -264,6 +264,8 @@ class Exception extends \Exception public const MESSAGE_NOT_FOUND = 'message_not_found'; public const MESSAGE_MISSING_TARGET = 'message_missing_target'; public const MESSAGE_ALREADY_SENT = 'message_already_sent'; + public const MESSAGE_ALREADY_PROCESSING = 'message_already_processing'; + public const MESSAGE_ALREADY_FAILED = 'message_already_failed'; public const MESSAGE_ALREADY_SCHEDULED = 'message_already_scheduled'; public const MESSAGE_TARGET_NOT_EMAIL = 'message_target_not_email'; public const MESSAGE_TARGET_NOT_SMS = 'message_target_not_sms'; From 3ba6652be8e5cb157e35e3de632ee758c630ff10 Mon Sep 17 00:00:00 2001 From: Jake Barnby Date: Mon, 12 Feb 2024 16:55:34 +1300 Subject: [PATCH 39/87] Only set schedule active is status is scheduled --- app/controllers/api/messaging.php | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/app/controllers/api/messaging.php b/app/controllers/api/messaging.php index 8ff8d834dc..5e6634a136 100644 --- a/app/controllers/api/messaging.php +++ b/app/controllers/api/messaging.php @@ -3141,7 +3141,7 @@ App::patch('/v1/messaging/messages/email/:messageId') 'resourceUpdatedAt' => DateTime::now(), 'projectId' => $project->getId(), 'schedule' => $scheduledAt, - 'active' => $status === 'processing', + 'active' => $status === MessageStatus::SCHEDULED, ])); $message->setAttribute('scheduleId', $schedule->getId()); @@ -3155,7 +3155,7 @@ App::patch('/v1/messaging/messages/email/:messageId') $schedule ->setAttribute('resourceUpdatedAt', DateTime::now()) ->setAttribute('schedule', $scheduledAt) - ->setAttribute('active', $status === 'processing'); + ->setAttribute('active', $status === MessageStatus::SCHEDULED); $dbForConsole->updateDocument('schedules', $schedule->getId(), $schedule); } @@ -3260,7 +3260,7 @@ App::patch('/v1/messaging/messages/sms/:messageId') 'resourceUpdatedAt' => DateTime::now(), 'projectId' => $project->getId(), 'schedule' => $scheduledAt, - 'active' => $status === 'processing', + 'active' => $status === MessageStatus::SCHEDULED, ])); $message->setAttribute('scheduleId', $schedule->getId()); @@ -3274,7 +3274,7 @@ App::patch('/v1/messaging/messages/sms/:messageId') $schedule ->setAttribute('resourceUpdatedAt', DateTime::now()) ->setAttribute('schedule', $scheduledAt) - ->setAttribute('active', $status === 'processing'); + ->setAttribute('active', $status === MessageStatus::SCHEDULED); $dbForConsole->updateDocument('schedules', $schedule->getId(), $schedule); } @@ -3284,7 +3284,7 @@ App::patch('/v1/messaging/messages/sms/:messageId') $message = $dbForProject->updateDocument('messages', $message->getId(), $message); - if ($status === 'processing' && \is_null($message->getAttribute('scheduledAt'))) { + if ($status === MessageStatus::PROCESSING) { $queueForMessaging ->setMessageId($message->getId()) ->trigger(); @@ -3419,7 +3419,7 @@ App::patch('/v1/messaging/messages/push/:messageId') 'resourceUpdatedAt' => DateTime::now(), 'projectId' => $project->getId(), 'schedule' => $scheduledAt, - 'active' => $status === 'processing', + 'active' => $status === MessageStatus::SCHEDULED, ])); $message->setAttribute('scheduleId', $schedule->getId()); @@ -3433,7 +3433,7 @@ App::patch('/v1/messaging/messages/push/:messageId') $schedule ->setAttribute('resourceUpdatedAt', DateTime::now()) ->setAttribute('schedule', $scheduledAt) - ->setAttribute('active', $status === 'processing'); + ->setAttribute('active', $status === MessageStatus::SCHEDULED); $dbForConsole->updateDocument('schedules', $schedule->getId(), $schedule); } @@ -3443,7 +3443,7 @@ App::patch('/v1/messaging/messages/push/:messageId') $message = $dbForProject->updateDocument('messages', $message->getId(), $message); - if ($status === 'processing' && \is_null($message->getAttribute('scheduledAt'))) { + if ($status === MessageStatus::PROCESSING) { $queueForMessaging ->setMessageId($message->getId()) ->trigger(); From 8ed2b1f3a5e879560349b21ea7dbb2b29fd815c5 Mon Sep 17 00:00:00 2001 From: Jake Barnby Date: Mon, 12 Feb 2024 18:35:05 +1300 Subject: [PATCH 40/87] Fix tests --- app/controllers/api/account.php | 2 +- app/controllers/shared/api.php | 7 ------- app/controllers/shared/api/auth.php | 7 ------- tests/e2e/Services/GraphQL/AccountTest.php | 4 ++-- 4 files changed, 3 insertions(+), 17 deletions(-) diff --git a/app/controllers/api/account.php b/app/controllers/api/account.php index a6db09880f..911f366b18 100644 --- a/app/controllers/api/account.php +++ b/app/controllers/api/account.php @@ -1586,7 +1586,7 @@ App::put('/v1/account/sessions/magic-url') App::post('/v1/account/sessions/token') ->desc('Create session') ->label('event', 'users.[userId].sessions.[sessionId].create') - ->groups(['api', 'account', 'auth']) + ->groups(['api', 'account']) ->label('scope', 'sessions.write') ->label('audits.event', 'session.create') ->label('audits.resource', 'user/{response.userId}') diff --git a/app/controllers/shared/api.php b/app/controllers/shared/api.php index 30c0a2ee03..24488316fb 100644 --- a/app/controllers/shared/api.php +++ b/app/controllers/shared/api.php @@ -380,12 +380,6 @@ App::init() } break; - case 'phone': - if (($auths['phone'] ?? true) === false) { - throw new Exception(Exception::USER_AUTH_METHOD_UNSUPPORTED, 'Phone authentication is disabled for this project'); - } - break; - case 'email-otp': if (($auths['emailOTP'] ?? true) === false) { throw new Exception(Exception::USER_AUTH_METHOD_UNSUPPORTED, 'Email OTP authentication is disabled for this project'); @@ -394,7 +388,6 @@ App::init() default: throw new Exception(Exception::USER_AUTH_METHOD_UNSUPPORTED, 'Unsupported authentication type: ' . $route->getLabel('auth.type', '')); - break; } }); diff --git a/app/controllers/shared/api/auth.php b/app/controllers/shared/api/auth.php index 8698e19ae5..0ae538372e 100644 --- a/app/controllers/shared/api/auth.php +++ b/app/controllers/shared/api/auth.php @@ -72,12 +72,6 @@ App::init() } break; - case 'phone': - if (($auths['phone'] ?? true) === false) { - throw new Exception(Exception::USER_AUTH_METHOD_UNSUPPORTED, 'Phone authentication is disabled for this project'); - } - break; - case 'email-otp': if (($auths['emailOTP'] ?? true) === false) { throw new Exception(Exception::USER_AUTH_METHOD_UNSUPPORTED, 'Email OTP authentication is disabled for this project'); @@ -86,6 +80,5 @@ App::init() default: throw new Exception(Exception::USER_AUTH_METHOD_UNSUPPORTED, 'Unsupported authentication route'); - break; } }); diff --git a/tests/e2e/Services/GraphQL/AccountTest.php b/tests/e2e/Services/GraphQL/AccountTest.php index 389fa56290..7fe7e5cdd3 100644 --- a/tests/e2e/Services/GraphQL/AccountTest.php +++ b/tests/e2e/Services/GraphQL/AccountTest.php @@ -89,9 +89,9 @@ class AccountTest extends Scope $this->assertArrayNotHasKey('errors', $session['body']); $this->assertIsArray($session['body']['data']); - $this->assertIsArray($session['body']['data']['accountCreateMagicURLSession']); + $this->assertIsArray($session['body']['data']['accountCreateMagicURLToken']); - return $session['body']['data']['accountCreateMagicURLSession']; + return $session['body']['data']['accountCreateMagicURLToken']; } public function testCreateEmailVerification(): array From ac8bddb10dfea096351e5e6f4090e86be1183a86 Mon Sep 17 00:00:00 2001 From: Jake Barnby Date: Mon, 12 Feb 2024 18:41:32 +1300 Subject: [PATCH 41/87] Update sleep for flaky test --- tests/e2e/Services/Account/AccountCustomClientTest.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/e2e/Services/Account/AccountCustomClientTest.php b/tests/e2e/Services/Account/AccountCustomClientTest.php index 3ea8e2723b..1169686ada 100644 --- a/tests/e2e/Services/Account/AccountCustomClientTest.php +++ b/tests/e2e/Services/Account/AccountCustomClientTest.php @@ -2227,7 +2227,7 @@ class AccountCustomClientTest extends Scope /** * @depends testUpdatePhone */ - #[Retry(count: 1)] + #[Retry(count: 2)] public function testPhoneVerification(array $data): array { $session = $data['session'] ?? ''; @@ -2248,7 +2248,7 @@ class AccountCustomClientTest extends Scope $this->assertEmpty($response['body']['secret']); $this->assertEquals(true, (new DatetimeValidator())->isValid($response['body']['expire'])); - \sleep(5); + \sleep(10); $smsRequest = $this->getLastRequest(); From b9b0df949262f016370110f99a233edbda9a1e6b Mon Sep 17 00:00:00 2001 From: Jake Barnby Date: Mon, 12 Feb 2024 18:41:32 +1300 Subject: [PATCH 42/87] Update sleep for flaky test --- tests/e2e/Services/Account/AccountCustomClientTest.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/e2e/Services/Account/AccountCustomClientTest.php b/tests/e2e/Services/Account/AccountCustomClientTest.php index 3ea8e2723b..1169686ada 100644 --- a/tests/e2e/Services/Account/AccountCustomClientTest.php +++ b/tests/e2e/Services/Account/AccountCustomClientTest.php @@ -2227,7 +2227,7 @@ class AccountCustomClientTest extends Scope /** * @depends testUpdatePhone */ - #[Retry(count: 1)] + #[Retry(count: 2)] public function testPhoneVerification(array $data): array { $session = $data['session'] ?? ''; @@ -2248,7 +2248,7 @@ class AccountCustomClientTest extends Scope $this->assertEmpty($response['body']['secret']); $this->assertEquals(true, (new DatetimeValidator())->isValid($response['body']['expire'])); - \sleep(5); + \sleep(10); $smsRequest = $this->getLastRequest(); From adbe11fd50974292653eec46e1019260912ba20e Mon Sep 17 00:00:00 2001 From: fogelito Date: Mon, 12 Feb 2024 11:55:45 +0200 Subject: [PATCH 43/87] fix Indexes --- app/controllers/api/account.php | 4 +- app/controllers/api/databases.php | 37 +++++++++------ app/controllers/api/functions.php | 12 +++-- app/controllers/api/messaging.php | 40 ++++++++++++----- app/controllers/api/migrations.php | 4 +- app/controllers/api/projects.php | 4 +- app/controllers/api/proxy.php | 8 +++- app/controllers/api/storage.php | 8 +++- app/controllers/api/teams.php | 8 +++- app/controllers/api/users.php | 18 +++++--- app/controllers/api/vcs.php | 8 +++- composer.lock | 45 ++++++++----------- .../e2e/Services/Databases/DatabasesBase.php | 1 + 13 files changed, 127 insertions(+), 70 deletions(-) diff --git a/app/controllers/api/account.php b/app/controllers/api/account.php index 49eabcbf5c..595a4104c5 100644 --- a/app/controllers/api/account.php +++ b/app/controllers/api/account.php @@ -911,7 +911,9 @@ App::get('/v1/account/identities') $queries[] = Query::equal('userInternalId', [$user->getInternalId()]); - // Get cursor document if there was a cursor query + /** + * Get cursor document if there was a cursor query, we user array_filter and reset for reference $cursor to $queries + */ $cursor = \array_filter($queries, function ($query) { return \in_array($query->getMethod(), [Query::TYPE_CURSOR_AFTER, Query::TYPE_CURSOR_BEFORE]); }); diff --git a/app/controllers/api/databases.php b/app/controllers/api/databases.php index c913fcca5d..0eacdab3b8 100644 --- a/app/controllers/api/databases.php +++ b/app/controllers/api/databases.php @@ -493,7 +493,9 @@ App::get('/v1/databases') $queries[] = Query::search('search', $search); } - // Get cursor document if there was a cursor query + /** + * Get cursor document if there was a cursor query, we use array_filter and reset for reference $cursor to $queries + */ $cursor = \array_filter($queries, function ($query) { return \in_array($query->getMethod(), [Query::TYPE_CURSOR_AFTER, Query::TYPE_CURSOR_BEFORE]); }); @@ -815,7 +817,9 @@ App::get('/v1/databases/:databaseId/collections') $queries[] = Query::search('search', $search); } - // Get cursor document if there was a cursor query + /** + * Get cursor document if there was a cursor query, we use array_filter and reset for reference $cursor to $queries + */ $cursor = \array_filter($queries, function ($query) { return \in_array($query->getMethod(), [Query::TYPE_CURSOR_AFTER, Query::TYPE_CURSOR_BEFORE]); }); @@ -1649,7 +1653,7 @@ App::get('/v1/databases/:databaseId/collections/:collectionId/attributes') ->inject('response') ->inject('dbForProject') ->action(function (string $databaseId, string $collectionId, array $queries, Response $response, Database $dbForProject) { - + /** @var Document $database */ $database = Authorization::skip(fn() => $dbForProject->getDocument('databases', $databaseId)); if ($database->isEmpty()) { @@ -1666,22 +1670,23 @@ App::get('/v1/databases/:databaseId/collections/:collectionId/attributes') \array_push( $queries, - Query::equal('collectionId', [$collectionId]), - Query::equal('databaseId', [$databaseId]) + Query::equal('collectionInternalId', [$collection->getInternalId()]), + Query::equal('databaseInternalId', [$database->getInternalId()]) ); - // Get cursor document if there was a cursor query + /** + * Get cursor document if there was a cursor query, we user array_filter and reset for reference $cursor to $queries + */ $cursor = \array_filter($queries, function ($query) { return \in_array($query->getMethod(), [Query::TYPE_CURSOR_AFTER, Query::TYPE_CURSOR_BEFORE]); }); - $cursor = \reset($cursor); if ($cursor) { $attributeId = $cursor->getValue(); $cursorDocument = Authorization::skip(fn() => $dbForProject->find('attributes', [ - Query::equal('collectionId', [$collectionId]), - Query::equal('databaseId', [$databaseId]), + Query::equal('collectionInternalId', [$collection->getInternalId()]), + Query::equal('databaseInternalId', [$database->getInternalId()]), Query::equal('key', [$attributeId]), Query::limit(1), ])); @@ -2491,7 +2496,7 @@ App::get('/v1/databases/:databaseId/collections/:collectionId/indexes') ->inject('response') ->inject('dbForProject') ->action(function (string $databaseId, string $collectionId, array $queries, Response $response, Database $dbForProject) { - + /** @var Document $database */ $database = Authorization::skip(fn() => $dbForProject->getDocument('databases', $databaseId)); if ($database->isEmpty()) { @@ -2507,7 +2512,9 @@ App::get('/v1/databases/:databaseId/collections/:collectionId/indexes') $queries = Query::parseQueries($queries); \array_push($queries, Query::equal('collectionId', [$collectionId]), Query::equal('databaseId', [$databaseId])); - // Get cursor document if there was a cursor query + /** + * Get cursor document if there was a cursor query, we user array_filter and reset for reference $cursor to $queries + */ $cursor = \array_filter($queries, function ($query) { return \in_array($query->getMethod(), [Query::TYPE_CURSOR_AFTER, Query::TYPE_CURSOR_BEFORE]); }); @@ -2516,8 +2523,8 @@ App::get('/v1/databases/:databaseId/collections/:collectionId/indexes') if ($cursor) { $indexId = $cursor->getValue(); $cursorDocument = Authorization::skip(fn() => $dbForProject->find('indexes', [ - Query::equal('collectionId', [$collectionId]), - Query::equal('databaseId', [$databaseId]), + Query::equal('collectionInternalId', [$collection->getInternalId()]), + Query::equal('databaseInternalId', [$database->getInternalId()]), Query::equal('key', [$indexId]), Query::limit(1) ])); @@ -2914,7 +2921,9 @@ App::get('/v1/databases/:databaseId/collections/:collectionId/documents') $queries = Query::parseQueries($queries); - // Get cursor document if there was a cursor query + /** + * Get cursor document if there was a cursor query, we user array_filter and reset for reference $cursor to $queries + */ $cursor = \array_filter($queries, function ($query) { return \in_array($query->getMethod(), [Query::TYPE_CURSOR_AFTER, Query::TYPE_CURSOR_BEFORE]); }); diff --git a/app/controllers/api/functions.php b/app/controllers/api/functions.php index 9c1f3cfa98..5b753fa86c 100644 --- a/app/controllers/api/functions.php +++ b/app/controllers/api/functions.php @@ -372,7 +372,9 @@ App::get('/v1/functions') $queries[] = Query::search('search', $search); } - // Get cursor document if there was a cursor query + /** + * Get cursor document if there was a cursor query, we user array_filter and reset for reference $cursor to $queries + */ $cursor = \array_filter($queries, function ($query) { return \in_array($query->getMethod(), [Query::TYPE_CURSOR_AFTER, Query::TYPE_CURSOR_BEFORE]); }); @@ -1266,7 +1268,9 @@ App::get('/v1/functions/:functionId/deployments') $queries[] = Query::equal('resourceId', [$function->getId()]); $queries[] = Query::equal('resourceType', ['functions']); - // Get cursor document if there was a cursor query + /** + * Get cursor document if there was a cursor query, we user array_filter and reset for reference $cursor to $queries + */ $cursor = \array_filter($queries, function ($query) { return \in_array($query->getMethod(), [Query::TYPE_CURSOR_AFTER, Query::TYPE_CURSOR_BEFORE]); }); @@ -1803,7 +1807,9 @@ App::get('/v1/functions/:functionId/executions') // Set internal queries $queries[] = Query::equal('functionId', [$function->getId()]); - // Get cursor document if there was a cursor query + /** + * Get cursor document if there was a cursor query, we user array_filter and reset for reference $cursor to $queries + */ $cursor = \array_filter($queries, function ($query) { return \in_array($query->getMethod(), [Query::TYPE_CURSOR_AFTER, Query::TYPE_CURSOR_BEFORE]); }); diff --git a/app/controllers/api/messaging.php b/app/controllers/api/messaging.php index 25260e1071..d787dd5766 100644 --- a/app/controllers/api/messaging.php +++ b/app/controllers/api/messaging.php @@ -843,8 +843,12 @@ App::get('/v1/messaging/providers') $queries[] = Query::search('search', $search); } - // Get cursor document if there was a cursor query - $cursor = Query::getByType($queries, [Query::TYPE_CURSOR_AFTER, Query::TYPE_CURSOR_BEFORE]); + /** + * Get cursor document if there was a cursor query, we user array_filter and reset for reference $cursor to $queries + */ + $cursor = \array_filter($queries, function ($query) { + return \in_array($query->getMethod(), [Query::TYPE_CURSOR_AFTER, Query::TYPE_CURSOR_BEFORE]); + }); $cursor = reset($cursor); if ($cursor) { @@ -1950,8 +1954,12 @@ App::get('/v1/messaging/topics') $queries[] = Query::search('search', $search); } - // Get cursor document if there was a cursor query - $cursor = Query::getByType($queries, [Query::TYPE_CURSOR_AFTER, Query::TYPE_CURSOR_BEFORE]); + /** + * Get cursor document if there was a cursor query, we user array_filter and reset for reference $cursor to $queries + */ + $cursor = \array_filter($queries, function ($query) { + return \in_array($query->getMethod(), [Query::TYPE_CURSOR_AFTER, Query::TYPE_CURSOR_BEFORE]); + }); $cursor = reset($cursor); if ($cursor) { @@ -2272,8 +2280,12 @@ App::get('/v1/messaging/topics/:topicId/subscribers') \array_push($queries, Query::equal('topicInternalId', [$topic->getInternalId()])); - // Get cursor document if there was a cursor query - $cursor = Query::getByType($queries, [Query::TYPE_CURSOR_AFTER, Query::TYPE_CURSOR_BEFORE]); + /** + * Get cursor document if there was a cursor query, we user array_filter and reset for reference $cursor to $queries + */ + $cursor = \array_filter($queries, function ($query) { + return \in_array($query->getMethod(), [Query::TYPE_CURSOR_AFTER, Query::TYPE_CURSOR_BEFORE]); + }); $cursor = reset($cursor); if ($cursor) { @@ -2851,8 +2863,12 @@ App::get('/v1/messaging/messages') $queries[] = Query::search('search', $search); } - // Get cursor document if there was a cursor query - $cursor = Query::getByType($queries, [Query::TYPE_CURSOR_AFTER, Query::TYPE_CURSOR_BEFORE]); + /** + * Get cursor document if there was a cursor query, we user array_filter and reset for reference $cursor to $queries + */ + $cursor = \array_filter($queries, function ($query) { + return \in_array($query->getMethod(), [Query::TYPE_CURSOR_AFTER, Query::TYPE_CURSOR_BEFORE]); + }); $cursor = reset($cursor); if ($cursor) { @@ -2994,8 +3010,12 @@ App::get('/v1/messaging/messages/:messageId/targets') $queries[] = Query::equal('$id', $targetIDs); - // Get cursor document if there was a cursor query - $cursor = Query::getByType($queries, [Query::TYPE_CURSOR_AFTER, Query::TYPE_CURSOR_BEFORE]); + /** + * Get cursor document if there was a cursor query, we user array_filter and reset for reference $cursor to $queries + */ + $cursor = \array_filter($queries, function ($query) { + return \in_array($query->getMethod(), [Query::TYPE_CURSOR_AFTER, Query::TYPE_CURSOR_BEFORE]); + }); $cursor = reset($cursor); if ($cursor) { diff --git a/app/controllers/api/migrations.php b/app/controllers/api/migrations.php index 87d3c12c99..eac9432d42 100644 --- a/app/controllers/api/migrations.php +++ b/app/controllers/api/migrations.php @@ -390,7 +390,9 @@ App::get('/v1/migrations') $queries[] = Query::search('search', $search); } - // Get cursor document if there was a cursor query + /** + * Get cursor document if there was a cursor query, we user array_filter and reset for reference $cursor to $queries + */ $cursor = \array_filter($queries, function ($query) { return \in_array($query->getMethod(), [Query::TYPE_CURSOR_AFTER, Query::TYPE_CURSOR_BEFORE]); }); diff --git a/app/controllers/api/projects.php b/app/controllers/api/projects.php index 30f6b1f376..6b84c75d6b 100644 --- a/app/controllers/api/projects.php +++ b/app/controllers/api/projects.php @@ -247,7 +247,9 @@ App::get('/v1/projects') $queries[] = Query::search('search', $search); } - // Get cursor document if there was a cursor query + /** + * Get cursor document if there was a cursor query, we user array_filter and reset for reference $cursor to $queries + */ $cursor = \array_filter($queries, function ($query) { return \in_array($query->getMethod(), [Query::TYPE_CURSOR_AFTER, Query::TYPE_CURSOR_BEFORE]); }); diff --git a/app/controllers/api/proxy.php b/app/controllers/api/proxy.php index 3081b3def3..47e1fc0f2e 100644 --- a/app/controllers/api/proxy.php +++ b/app/controllers/api/proxy.php @@ -163,8 +163,12 @@ App::get('/v1/proxy/rules') $queries[] = Query::equal('projectInternalId', [$project->getInternalId()]); - // Get cursor document if there was a cursor query - $cursor = Query::getByType($queries, [Query::TYPE_CURSOR_AFTER, Query::TYPE_CURSOR_BEFORE]); + /** + * Get cursor document if there was a cursor query, we user array_filter and reset for reference $cursor to $queries + */ + $cursor = \array_filter($queries, function ($query) { + return \in_array($query->getMethod(), [Query::TYPE_CURSOR_AFTER, Query::TYPE_CURSOR_BEFORE]); + }); $cursor = reset($cursor); if ($cursor) { /** @var Query $cursor */ diff --git a/app/controllers/api/storage.php b/app/controllers/api/storage.php index fc5d00dfd0..305888d4cf 100644 --- a/app/controllers/api/storage.php +++ b/app/controllers/api/storage.php @@ -167,7 +167,9 @@ App::get('/v1/storage/buckets') $queries[] = Query::search('search', $search); } - // Get cursor document if there was a cursor query + /** + * Get cursor document if there was a cursor query, we user array_filter and reset for reference $cursor to $queries + */ $cursor = \array_filter($queries, function ($query) { return \in_array($query->getMethod(), [Query::TYPE_CURSOR_AFTER, Query::TYPE_CURSOR_BEFORE]); }); @@ -743,7 +745,9 @@ App::get('/v1/storage/buckets/:bucketId/files') $queries[] = Query::search('search', $search); } - // Get cursor document if there was a cursor query + /** + * Get cursor document if there was a cursor query, we user array_filter and reset for reference $cursor to $queries + */ $cursor = \array_filter($queries, function ($query) { return \in_array($query->getMethod(), [Query::TYPE_CURSOR_AFTER, Query::TYPE_CURSOR_BEFORE]); }); diff --git a/app/controllers/api/teams.php b/app/controllers/api/teams.php index 685c230f4c..dc426abc6f 100644 --- a/app/controllers/api/teams.php +++ b/app/controllers/api/teams.php @@ -152,7 +152,9 @@ App::get('/v1/teams') $queries[] = Query::search('search', $search); } - // Get cursor document if there was a cursor query + /** + * Get cursor document if there was a cursor query, we user array_filter and reset for reference $cursor to $queries + */ $cursor = \array_filter($queries, function ($query) { return \in_array($query->getMethod(), [Query::TYPE_CURSOR_AFTER, Query::TYPE_CURSOR_BEFORE]); }); @@ -708,7 +710,9 @@ App::get('/v1/teams/:teamId/memberships') // Set internal queries $queries[] = Query::equal('teamId', [$teamId]); - // Get cursor document if there was a cursor query + /** + * Get cursor document if there was a cursor query, we user array_filter and reset for reference $cursor to $queries + */ $cursor = \array_filter($queries, function ($query) { return \in_array($query->getMethod(), [Query::TYPE_CURSOR_AFTER, Query::TYPE_CURSOR_BEFORE]); }); diff --git a/app/controllers/api/users.php b/app/controllers/api/users.php index 375efe77cb..b74fda251e 100644 --- a/app/controllers/api/users.php +++ b/app/controllers/api/users.php @@ -542,7 +542,9 @@ App::get('/v1/users') $queries[] = Query::search('search', $search); } - // Get cursor document if there was a cursor query + /** + * Get cursor document if there was a cursor query, we user array_filter and reset for reference $cursor to $queries + */ $cursor = \array_filter($queries, function ($query) { return \in_array($query->getMethod(), [Query::TYPE_CURSOR_AFTER, Query::TYPE_CURSOR_BEFORE]); }); @@ -838,9 +840,13 @@ App::get('/v1/users/:userId/targets') $queries[] = Query::equal('userId', [$userId]); - // Get cursor document if there was a cursor query - $cursor = Query::getByType($queries, [Query::TYPE_CURSOR_AFTER, Query::TYPE_CURSOR_BEFORE]); - $cursor = reset($cursor); + /** + * Get cursor document if there was a cursor query, we user array_filter and reset for reference $cursor to $queries + */ + $cursor = \array_filter($queries, function ($query) { + return \in_array($query->getMethod(), [Query::TYPE_CURSOR_AFTER, Query::TYPE_CURSOR_BEFORE]); + }); + $cursor = reset($cursor); if ($cursor) { $targetId = $cursor->getValue(); @@ -882,7 +888,9 @@ App::get('/v1/users/identities') $queries[] = Query::search('search', $search); } - // Get cursor document if there was a cursor query + /** + * Get cursor document if there was a cursor query, we user array_filter and reset for reference $cursor to $queries + */ $cursor = \array_filter($queries, function ($query) { return \in_array($query->getMethod(), [Query::TYPE_CURSOR_AFTER, Query::TYPE_CURSOR_BEFORE]); }); diff --git a/app/controllers/api/vcs.php b/app/controllers/api/vcs.php index df18320cf2..096f57656d 100644 --- a/app/controllers/api/vcs.php +++ b/app/controllers/api/vcs.php @@ -977,8 +977,12 @@ App::get('/v1/vcs/installations') $queries[] = Query::search('search', $search); } - // Get cursor document if there was a cursor query - $cursor = Query::getByType($queries, [Query::TYPE_CURSOR_AFTER, Query::TYPE_CURSOR_BEFORE]); + /** + * Get cursor document if there was a cursor query, we user array_filter and reset for reference $cursor to $queries + */ + $cursor = \array_filter($queries, function ($query) { + return \in_array($query->getMethod(), [Query::TYPE_CURSOR_AFTER, Query::TYPE_CURSOR_BEFORE]); + }); $cursor = reset($cursor); if ($cursor) { /** @var Query $cursor */ diff --git a/composer.lock b/composer.lock index 226d55e38f..1429dfe408 100644 --- a/composer.lock +++ b/composer.lock @@ -1029,16 +1029,16 @@ }, { "name": "symfony/polyfill-php80", - "version": "v1.28.0", + "version": "v1.29.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "6caa57379c4aec19c0a12a38b59b26487dcfe4b5" + "reference": "87b68208d5c1188808dd7839ee1e6c8ec3b02f1b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/6caa57379c4aec19c0a12a38b59b26487dcfe4b5", - "reference": "6caa57379c4aec19c0a12a38b59b26487dcfe4b5", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/87b68208d5c1188808dd7839ee1e6c8ec3b02f1b", + "reference": "87b68208d5c1188808dd7839ee1e6c8ec3b02f1b", "shasum": "" }, "require": { @@ -1046,9 +1046,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.28-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -1092,7 +1089,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.28.0" + "source": "https://github.com/symfony/polyfill-php80/tree/v1.29.0" }, "funding": [ { @@ -1108,7 +1105,7 @@ "type": "tidelift" } ], - "time": "2023-01-26T09:26:14+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { "name": "thecodingmachine/safe", @@ -5123,16 +5120,16 @@ }, { "name": "symfony/polyfill-ctype", - "version": "v1.28.0", + "version": "v1.29.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb" + "reference": "ef4d7e442ca910c4764bce785146269b30cb5fc4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb", - "reference": "ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/ef4d7e442ca910c4764bce785146269b30cb5fc4", + "reference": "ef4d7e442ca910c4764bce785146269b30cb5fc4", "shasum": "" }, "require": { @@ -5146,9 +5143,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.28-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -5185,7 +5179,7 @@ "portable" ], "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.28.0" + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.29.0" }, "funding": [ { @@ -5201,20 +5195,20 @@ "type": "tidelift" } ], - "time": "2023-01-26T09:26:14+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.28.0", + "version": "v1.29.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "42292d99c55abe617799667f454222c54c60e229" + "reference": "9773676c8a1bb1f8d4340a62efe641cf76eda7ec" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/42292d99c55abe617799667f454222c54c60e229", - "reference": "42292d99c55abe617799667f454222c54c60e229", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9773676c8a1bb1f8d4340a62efe641cf76eda7ec", + "reference": "9773676c8a1bb1f8d4340a62efe641cf76eda7ec", "shasum": "" }, "require": { @@ -5228,9 +5222,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.28-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -5268,7 +5259,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.28.0" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.29.0" }, "funding": [ { @@ -5284,7 +5275,7 @@ "type": "tidelift" } ], - "time": "2023-07-28T09:04:16+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { "name": "textalk/websocket", diff --git a/tests/e2e/Services/Databases/DatabasesBase.php b/tests/e2e/Services/Databases/DatabasesBase.php index 7580d73711..90ea4d8fa7 100644 --- a/tests/e2e/Services/Databases/DatabasesBase.php +++ b/tests/e2e/Services/Databases/DatabasesBase.php @@ -492,6 +492,7 @@ trait DatabasesBase Query::cursorAfter(new Document(['$id' => 'title']))->toString() ], ]); + var_dump($response); $this->assertEquals(200, $response['headers']['status-code']); $this->assertEquals(2, \count($response['body']['attributes'])); $response = $this->client->call(Client::METHOD_GET, '/databases/' . $databaseId . '/collections/' . $data['moviesId'] . '/attributes', array_merge([ From e5bada049379d58c850b95d2a260cb052776fdee Mon Sep 17 00:00:00 2001 From: fogelito Date: Mon, 12 Feb 2024 12:03:31 +0200 Subject: [PATCH 44/87] typo --- app/controllers/api/account.php | 2 +- app/controllers/api/databases.php | 6 +++--- app/controllers/api/functions.php | 6 +++--- app/controllers/api/messaging.php | 10 +++++----- app/controllers/api/migrations.php | 2 +- app/controllers/api/projects.php | 2 +- app/controllers/api/proxy.php | 2 +- app/controllers/api/storage.php | 4 ++-- app/controllers/api/teams.php | 4 ++-- app/controllers/api/users.php | 6 +++--- app/controllers/api/vcs.php | 2 +- 11 files changed, 23 insertions(+), 23 deletions(-) diff --git a/app/controllers/api/account.php b/app/controllers/api/account.php index d9d1f21098..306ceee51b 100644 --- a/app/controllers/api/account.php +++ b/app/controllers/api/account.php @@ -912,7 +912,7 @@ App::get('/v1/account/identities') $queries[] = Query::equal('userInternalId', [$user->getInternalId()]); /** - * Get cursor document if there was a cursor query, we user array_filter and reset for reference $cursor to $queries + * Get cursor document if there was a cursor query, we use array_filter and reset for reference $cursor to $queries */ $cursor = \array_filter($queries, function ($query) { return \in_array($query->getMethod(), [Query::TYPE_CURSOR_AFTER, Query::TYPE_CURSOR_BEFORE]); diff --git a/app/controllers/api/databases.php b/app/controllers/api/databases.php index f814768a54..bfefaf8e7f 100644 --- a/app/controllers/api/databases.php +++ b/app/controllers/api/databases.php @@ -1675,7 +1675,7 @@ App::get('/v1/databases/:databaseId/collections/:collectionId/attributes') ); /** - * Get cursor document if there was a cursor query, we user array_filter and reset for reference $cursor to $queries + * Get cursor document if there was a cursor query, we use array_filter and reset for reference $cursor to $queries */ $cursor = \array_filter($queries, function ($query) { return \in_array($query->getMethod(), [Query::TYPE_CURSOR_AFTER, Query::TYPE_CURSOR_BEFORE]); @@ -2522,7 +2522,7 @@ App::get('/v1/databases/:databaseId/collections/:collectionId/indexes') \array_push($queries, Query::equal('collectionId', [$collectionId]), Query::equal('databaseId', [$databaseId])); /** - * Get cursor document if there was a cursor query, we user array_filter and reset for reference $cursor to $queries + * Get cursor document if there was a cursor query, we use array_filter and reset for reference $cursor to $queries */ $cursor = \array_filter($queries, function ($query) { return \in_array($query->getMethod(), [Query::TYPE_CURSOR_AFTER, Query::TYPE_CURSOR_BEFORE]); @@ -2931,7 +2931,7 @@ App::get('/v1/databases/:databaseId/collections/:collectionId/documents') $queries = Query::parseQueries($queries); /** - * Get cursor document if there was a cursor query, we user array_filter and reset for reference $cursor to $queries + * Get cursor document if there was a cursor query, we use array_filter and reset for reference $cursor to $queries */ $cursor = \array_filter($queries, function ($query) { return \in_array($query->getMethod(), [Query::TYPE_CURSOR_AFTER, Query::TYPE_CURSOR_BEFORE]); diff --git a/app/controllers/api/functions.php b/app/controllers/api/functions.php index 5b753fa86c..8f57d6f3d9 100644 --- a/app/controllers/api/functions.php +++ b/app/controllers/api/functions.php @@ -373,7 +373,7 @@ App::get('/v1/functions') } /** - * Get cursor document if there was a cursor query, we user array_filter and reset for reference $cursor to $queries + * Get cursor document if there was a cursor query, we use array_filter and reset for reference $cursor to $queries */ $cursor = \array_filter($queries, function ($query) { return \in_array($query->getMethod(), [Query::TYPE_CURSOR_AFTER, Query::TYPE_CURSOR_BEFORE]); @@ -1269,7 +1269,7 @@ App::get('/v1/functions/:functionId/deployments') $queries[] = Query::equal('resourceType', ['functions']); /** - * Get cursor document if there was a cursor query, we user array_filter and reset for reference $cursor to $queries + * Get cursor document if there was a cursor query, we use array_filter and reset for reference $cursor to $queries */ $cursor = \array_filter($queries, function ($query) { return \in_array($query->getMethod(), [Query::TYPE_CURSOR_AFTER, Query::TYPE_CURSOR_BEFORE]); @@ -1808,7 +1808,7 @@ App::get('/v1/functions/:functionId/executions') $queries[] = Query::equal('functionId', [$function->getId()]); /** - * Get cursor document if there was a cursor query, we user array_filter and reset for reference $cursor to $queries + * Get cursor document if there was a cursor query, we use array_filter and reset for reference $cursor to $queries */ $cursor = \array_filter($queries, function ($query) { return \in_array($query->getMethod(), [Query::TYPE_CURSOR_AFTER, Query::TYPE_CURSOR_BEFORE]); diff --git a/app/controllers/api/messaging.php b/app/controllers/api/messaging.php index d787dd5766..4b89befa27 100644 --- a/app/controllers/api/messaging.php +++ b/app/controllers/api/messaging.php @@ -844,7 +844,7 @@ App::get('/v1/messaging/providers') } /** - * Get cursor document if there was a cursor query, we user array_filter and reset for reference $cursor to $queries + * Get cursor document if there was a cursor query, we use array_filter and reset for reference $cursor to $queries */ $cursor = \array_filter($queries, function ($query) { return \in_array($query->getMethod(), [Query::TYPE_CURSOR_AFTER, Query::TYPE_CURSOR_BEFORE]); @@ -1955,7 +1955,7 @@ App::get('/v1/messaging/topics') } /** - * Get cursor document if there was a cursor query, we user array_filter and reset for reference $cursor to $queries + * Get cursor document if there was a cursor query, we use array_filter and reset for reference $cursor to $queries */ $cursor = \array_filter($queries, function ($query) { return \in_array($query->getMethod(), [Query::TYPE_CURSOR_AFTER, Query::TYPE_CURSOR_BEFORE]); @@ -2281,7 +2281,7 @@ App::get('/v1/messaging/topics/:topicId/subscribers') \array_push($queries, Query::equal('topicInternalId', [$topic->getInternalId()])); /** - * Get cursor document if there was a cursor query, we user array_filter and reset for reference $cursor to $queries + * Get cursor document if there was a cursor query, we use array_filter and reset for reference $cursor to $queries */ $cursor = \array_filter($queries, function ($query) { return \in_array($query->getMethod(), [Query::TYPE_CURSOR_AFTER, Query::TYPE_CURSOR_BEFORE]); @@ -2864,7 +2864,7 @@ App::get('/v1/messaging/messages') } /** - * Get cursor document if there was a cursor query, we user array_filter and reset for reference $cursor to $queries + * Get cursor document if there was a cursor query, we use array_filter and reset for reference $cursor to $queries */ $cursor = \array_filter($queries, function ($query) { return \in_array($query->getMethod(), [Query::TYPE_CURSOR_AFTER, Query::TYPE_CURSOR_BEFORE]); @@ -3011,7 +3011,7 @@ App::get('/v1/messaging/messages/:messageId/targets') $queries[] = Query::equal('$id', $targetIDs); /** - * Get cursor document if there was a cursor query, we user array_filter and reset for reference $cursor to $queries + * Get cursor document if there was a cursor query, we use array_filter and reset for reference $cursor to $queries */ $cursor = \array_filter($queries, function ($query) { return \in_array($query->getMethod(), [Query::TYPE_CURSOR_AFTER, Query::TYPE_CURSOR_BEFORE]); diff --git a/app/controllers/api/migrations.php b/app/controllers/api/migrations.php index eac9432d42..442b06e448 100644 --- a/app/controllers/api/migrations.php +++ b/app/controllers/api/migrations.php @@ -391,7 +391,7 @@ App::get('/v1/migrations') } /** - * Get cursor document if there was a cursor query, we user array_filter and reset for reference $cursor to $queries + * Get cursor document if there was a cursor query, we use array_filter and reset for reference $cursor to $queries */ $cursor = \array_filter($queries, function ($query) { return \in_array($query->getMethod(), [Query::TYPE_CURSOR_AFTER, Query::TYPE_CURSOR_BEFORE]); diff --git a/app/controllers/api/projects.php b/app/controllers/api/projects.php index 6b84c75d6b..e4d5226771 100644 --- a/app/controllers/api/projects.php +++ b/app/controllers/api/projects.php @@ -248,7 +248,7 @@ App::get('/v1/projects') } /** - * Get cursor document if there was a cursor query, we user array_filter and reset for reference $cursor to $queries + * Get cursor document if there was a cursor query, we use array_filter and reset for reference $cursor to $queries */ $cursor = \array_filter($queries, function ($query) { return \in_array($query->getMethod(), [Query::TYPE_CURSOR_AFTER, Query::TYPE_CURSOR_BEFORE]); diff --git a/app/controllers/api/proxy.php b/app/controllers/api/proxy.php index c64033d274..96586797b2 100644 --- a/app/controllers/api/proxy.php +++ b/app/controllers/api/proxy.php @@ -165,7 +165,7 @@ App::get('/v1/proxy/rules') $queries[] = Query::equal('projectInternalId', [$project->getInternalId()]); /** - * Get cursor document if there was a cursor query, we user array_filter and reset for reference $cursor to $queries + * Get cursor document if there was a cursor query, we use array_filter and reset for reference $cursor to $queries */ $cursor = \array_filter($queries, function ($query) { return \in_array($query->getMethod(), [Query::TYPE_CURSOR_AFTER, Query::TYPE_CURSOR_BEFORE]); diff --git a/app/controllers/api/storage.php b/app/controllers/api/storage.php index 305888d4cf..3e10d2a9fb 100644 --- a/app/controllers/api/storage.php +++ b/app/controllers/api/storage.php @@ -168,7 +168,7 @@ App::get('/v1/storage/buckets') } /** - * Get cursor document if there was a cursor query, we user array_filter and reset for reference $cursor to $queries + * Get cursor document if there was a cursor query, we use array_filter and reset for reference $cursor to $queries */ $cursor = \array_filter($queries, function ($query) { return \in_array($query->getMethod(), [Query::TYPE_CURSOR_AFTER, Query::TYPE_CURSOR_BEFORE]); @@ -746,7 +746,7 @@ App::get('/v1/storage/buckets/:bucketId/files') } /** - * Get cursor document if there was a cursor query, we user array_filter and reset for reference $cursor to $queries + * Get cursor document if there was a cursor query, we use array_filter and reset for reference $cursor to $queries */ $cursor = \array_filter($queries, function ($query) { return \in_array($query->getMethod(), [Query::TYPE_CURSOR_AFTER, Query::TYPE_CURSOR_BEFORE]); diff --git a/app/controllers/api/teams.php b/app/controllers/api/teams.php index 8986ce0c50..7d76843b37 100644 --- a/app/controllers/api/teams.php +++ b/app/controllers/api/teams.php @@ -153,7 +153,7 @@ App::get('/v1/teams') } /** - * Get cursor document if there was a cursor query, we user array_filter and reset for reference $cursor to $queries + * Get cursor document if there was a cursor query, we use array_filter and reset for reference $cursor to $queries */ $cursor = \array_filter($queries, function ($query) { return \in_array($query->getMethod(), [Query::TYPE_CURSOR_AFTER, Query::TYPE_CURSOR_BEFORE]); @@ -711,7 +711,7 @@ App::get('/v1/teams/:teamId/memberships') $queries[] = Query::equal('teamId', [$teamId]); /** - * Get cursor document if there was a cursor query, we user array_filter and reset for reference $cursor to $queries + * Get cursor document if there was a cursor query, we use array_filter and reset for reference $cursor to $queries */ $cursor = \array_filter($queries, function ($query) { return \in_array($query->getMethod(), [Query::TYPE_CURSOR_AFTER, Query::TYPE_CURSOR_BEFORE]); diff --git a/app/controllers/api/users.php b/app/controllers/api/users.php index b74fda251e..cdc622e89e 100644 --- a/app/controllers/api/users.php +++ b/app/controllers/api/users.php @@ -543,7 +543,7 @@ App::get('/v1/users') } /** - * Get cursor document if there was a cursor query, we user array_filter and reset for reference $cursor to $queries + * Get cursor document if there was a cursor query, we use array_filter and reset for reference $cursor to $queries */ $cursor = \array_filter($queries, function ($query) { return \in_array($query->getMethod(), [Query::TYPE_CURSOR_AFTER, Query::TYPE_CURSOR_BEFORE]); @@ -841,7 +841,7 @@ App::get('/v1/users/:userId/targets') $queries[] = Query::equal('userId', [$userId]); /** - * Get cursor document if there was a cursor query, we user array_filter and reset for reference $cursor to $queries + * Get cursor document if there was a cursor query, we use array_filter and reset for reference $cursor to $queries */ $cursor = \array_filter($queries, function ($query) { return \in_array($query->getMethod(), [Query::TYPE_CURSOR_AFTER, Query::TYPE_CURSOR_BEFORE]); @@ -889,7 +889,7 @@ App::get('/v1/users/identities') } /** - * Get cursor document if there was a cursor query, we user array_filter and reset for reference $cursor to $queries + * Get cursor document if there was a cursor query, we use array_filter and reset for reference $cursor to $queries */ $cursor = \array_filter($queries, function ($query) { return \in_array($query->getMethod(), [Query::TYPE_CURSOR_AFTER, Query::TYPE_CURSOR_BEFORE]); diff --git a/app/controllers/api/vcs.php b/app/controllers/api/vcs.php index 096f57656d..80869950ee 100644 --- a/app/controllers/api/vcs.php +++ b/app/controllers/api/vcs.php @@ -978,7 +978,7 @@ App::get('/v1/vcs/installations') } /** - * Get cursor document if there was a cursor query, we user array_filter and reset for reference $cursor to $queries + * Get cursor document if there was a cursor query, we use array_filter and reset for reference $cursor to $queries */ $cursor = \array_filter($queries, function ($query) { return \in_array($query->getMethod(), [Query::TYPE_CURSOR_AFTER, Query::TYPE_CURSOR_BEFORE]); From 74f7143a18a76ce4a47e18f78a6acc61e39d0839 Mon Sep 17 00:00:00 2001 From: fogelito Date: Mon, 12 Feb 2024 12:04:46 +0200 Subject: [PATCH 45/87] remove debug --- tests/e2e/Services/Databases/DatabasesBase.php | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/e2e/Services/Databases/DatabasesBase.php b/tests/e2e/Services/Databases/DatabasesBase.php index c3d6a005bc..ee8dde00db 100644 --- a/tests/e2e/Services/Databases/DatabasesBase.php +++ b/tests/e2e/Services/Databases/DatabasesBase.php @@ -492,7 +492,6 @@ trait DatabasesBase Query::cursorAfter(new Document(['$id' => 'title']))->toString() ], ]); - var_dump($response); $this->assertEquals(200, $response['headers']['status-code']); $this->assertEquals(2, \count($response['body']['attributes'])); $response = $this->client->call(Client::METHOD_GET, '/databases/' . $databaseId . '/collections/' . $data['moviesId'] . '/attributes', array_merge([ From 6aae8cbf64cbc4a5292ab677a755cb18354e8ac6 Mon Sep 17 00:00:00 2001 From: fogelito Date: Mon, 12 Feb 2024 15:27:19 +0200 Subject: [PATCH 46/87] Add cursor test --- app/controllers/api/messaging.php | 6 +- .../e2e/Services/Messaging/MessagingBase.php | 55 +++++++++++++++---- 2 files changed, 46 insertions(+), 15 deletions(-) diff --git a/app/controllers/api/messaging.php b/app/controllers/api/messaging.php index 4b89befa27..aa0f44ac68 100644 --- a/app/controllers/api/messaging.php +++ b/app/controllers/api/messaging.php @@ -2987,9 +2987,7 @@ App::get('/v1/messaging/messages/:messageId/targets') ->param('queries', [], new Targets(), '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(', ', Targets::ALLOWED_ATTRIBUTES), true) ->inject('response') ->inject('dbForProject') - ->inject('locale') - ->inject('geodb') - ->action(function (string $messageId, array $queries, Response $response, Database $dbForProject, Locale $locale, Reader $geodb) { + ->action(function (string $messageId, array $queries, Response $response, Database $dbForProject) { $message = $dbForProject->getDocument('messages', $messageId); if ($message->isEmpty()) { @@ -3028,7 +3026,7 @@ App::get('/v1/messaging/messages/:messageId/targets') $cursor->setValue($cursorDocument); } - +var_dump($queries); $response->dynamic(new Document([ 'targets' => $dbForProject->find('targets', $queries), 'total' => $dbForProject->count('targets', $queries, APP_LIMIT_COUNT), diff --git a/tests/e2e/Services/Messaging/MessagingBase.php b/tests/e2e/Services/Messaging/MessagingBase.php index 59a5d5dec2..111f0294fc 100644 --- a/tests/e2e/Services/Messaging/MessagingBase.php +++ b/tests/e2e/Services/Messaging/MessagingBase.php @@ -5,6 +5,7 @@ namespace Tests\E2E\Services\Messaging; use Appwrite\Messaging\Status as MessageStatus; use Tests\E2E\Client; use Utopia\App; +use Utopia\Database\Document; use Utopia\Database\Helpers\ID; use Utopia\Database\Query; use Utopia\DSN\DSN; @@ -682,12 +683,27 @@ trait MessagingBase 'x-appwrite-key' => $this->getProject()['apiKey'], ]); - $this->assertEquals(200, $response['headers']['status-code']); - $targetList = $response['body']; - $this->assertEquals(1, $targetList['total']); - $this->assertEquals(1, count($targetList['targets'])); + $this->assertEquals(2, $targetList['total']); + $this->assertEquals(2, count($targetList['targets'])); $this->assertEquals($message['targets'][0], $targetList['targets'][0]['$id']); + $this->assertEquals($message['targets'][1], $targetList['targets'][1]['$id']); + + /** + * Cursor Test + */ + $response = $this->client->call(Client::METHOD_GET, '/messaging/messages/' . $message['$id'] . '/targets', [ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + 'x-appwrite-key' => $this->getProject()['apiKey'], + ], [ + 'queries' => [ + Query::cursorAfter(new Document(['$id' => $targetList['targets'][0]['$id']]))->toString(), + ] + ]); + $this->assertEquals(2, $response['body']['total']); + $this->assertEquals(1, count($response['body']['targets'])); + $this->assertEquals($targetList['targets'][1]['$id'], $response['body']['targets'][0]['$id']); // Test for empty targets $response = $this->client->call(Client::METHOD_POST, '/messaging/messages/email', [ @@ -719,7 +735,7 @@ trait MessagingBase public function testCreateDraftEmail() { - // Create User + // Create User 1 $response = $this->client->call(Client::METHOD_POST, '/users', [ 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], @@ -728,15 +744,33 @@ trait MessagingBase 'userId' => ID::unique(), 'email' => uniqid() . "@example.com", 'password' => 'password', - 'name' => 'Messaging User', + 'name' => 'Messaging User 1', ]); $this->assertEquals(201, $response['headers']['status-code'], "Error creating user: " . var_export($response['body'], true)); - $user = $response['body']; + $user1 = $response['body']; - $this->assertEquals(1, \count($user['targets'])); - $targetId = $user['targets'][0]['$id']; + $this->assertEquals(1, \count($user1['targets'])); + $targetId1 = $user1['targets'][0]['$id']; + + // Create User 2 + $response = $this->client->call(Client::METHOD_POST, '/users', [ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + 'x-appwrite-key' => $this->getProject()['apiKey'], + ], [ + 'userId' => ID::unique(), + 'email' => uniqid() . "@example.com", + 'password' => 'password', + 'name' => 'Messaging User 2', + ]); + + $this->assertEquals(201, $response['headers']['status-code'], "Error creating user: " . var_export($response['body'], true)); + $user2 = $response['body']; + + $this->assertEquals(1, \count($user2['targets'])); + $targetId2 = $user2['targets'][0]['$id']; // Create Email $response = $this->client->call(Client::METHOD_POST, '/messaging/messages/email', [ @@ -745,13 +779,12 @@ trait MessagingBase 'x-appwrite-key' => $this->getProject()['apiKey'], ], [ 'messageId' => ID::unique(), - 'targets' => [$targetId], + 'targets' => [$targetId1, $targetId2], 'subject' => 'New blog post', 'content' => 'Check out the new blog post at http://localhost', ]); $this->assertEquals(201, $response['headers']['status-code']); - $message = $response['body']; $this->assertEquals(MessageStatus::DRAFT, $message['status']); From 2f9cadf4c084d585351d444e07909567c543c954 Mon Sep 17 00:00:00 2001 From: fogelito Date: Mon, 12 Feb 2024 15:30:34 +0200 Subject: [PATCH 47/87] remove var_dump --- app/controllers/api/messaging.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/controllers/api/messaging.php b/app/controllers/api/messaging.php index aa0f44ac68..87dad03441 100644 --- a/app/controllers/api/messaging.php +++ b/app/controllers/api/messaging.php @@ -3026,7 +3026,7 @@ App::get('/v1/messaging/messages/:messageId/targets') $cursor->setValue($cursorDocument); } -var_dump($queries); + $response->dynamic(new Document([ 'targets' => $dbForProject->find('targets', $queries), 'total' => $dbForProject->count('targets', $queries, APP_LIMIT_COUNT), From 8256c8b29488649a5c90caffbd721aa8a07103d3 Mon Sep 17 00:00:00 2001 From: shimon Date: Mon, 12 Feb 2024 17:22:33 +0200 Subject: [PATCH 48/87] cache collection attr migration --- src/Appwrite/Migration/Version/V20.php | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/Appwrite/Migration/Version/V20.php b/src/Appwrite/Migration/Version/V20.php index 505fc3a7fd..6747c96f1e 100644 --- a/src/Appwrite/Migration/Version/V20.php +++ b/src/Appwrite/Migration/Version/V20.php @@ -129,6 +129,24 @@ class V20 extends Migration $this->createCollection('targets'); $this->createCollection('challenges'); + break; + case 'cache': + // Create resourceType attribute + try { + $this->createAttributeFromCollection($this->projectDB, $id, 'resourceType'); + $this->projectDB->purgeCachedCollection($id); + } catch (Throwable $th) { + Console::warning("'resourceType' from {$id}: {$th->getMessage()}"); + } + + // Create mimeType attribute + try { + $this->createAttributeFromCollection($this->projectDB, $id, 'mimeType'); + $this->projectDB->purgeCachedCollection($id); + } catch (Throwable $th) { + Console::warning("'mimeType' from {$id}: {$th->getMessage()}"); + } + break; case 'stats': try { From c4b5153abdf7b557fa9f8165f8af8862b050c40b Mon Sep 17 00:00:00 2001 From: fogelito Date: Mon, 12 Feb 2024 17:41:14 +0200 Subject: [PATCH 49/87] composer.lock --- composer.lock | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/composer.lock b/composer.lock index 1429dfe408..971dbc0a75 100644 --- a/composer.lock +++ b/composer.lock @@ -1748,16 +1748,16 @@ }, { "name": "utopia-php/image", - "version": "0.6.0", + "version": "0.6.1", "source": { "type": "git", "url": "https://github.com/utopia-php/image.git", - "reference": "88f7209172bdabd81e76ac981c95fac117dc6e08" + "reference": "2d74c27e69e65a93cf94a16586598a04fe435bf0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/utopia-php/image/zipball/88f7209172bdabd81e76ac981c95fac117dc6e08", - "reference": "88f7209172bdabd81e76ac981c95fac117dc6e08", + "url": "https://api.github.com/repos/utopia-php/image/zipball/2d74c27e69e65a93cf94a16586598a04fe435bf0", + "reference": "2d74c27e69e65a93cf94a16586598a04fe435bf0", "shasum": "" }, "require": { @@ -1790,9 +1790,9 @@ ], "support": { "issues": "https://github.com/utopia-php/image/issues", - "source": "https://github.com/utopia-php/image/tree/0.6.0" + "source": "https://github.com/utopia-php/image/tree/0.6.1" }, - "time": "2024-01-24T06:59:44+00:00" + "time": "2024-02-05T13:31:44+00:00" }, { "name": "utopia-php/locale", From ace75b0786890ca52b4dab6b977f50af763389a3 Mon Sep 17 00:00:00 2001 From: fogelito Date: Mon, 12 Feb 2024 18:02:04 +0200 Subject: [PATCH 50/87] parseQueries --- app/controllers/api/account.php | 14 ++++++- app/controllers/api/databases.php | 60 +++++++++++++++++++++++------- app/controllers/api/functions.php | 19 ++++++++-- app/controllers/api/messaging.php | 59 ++++++++++++++++++++++++----- app/controllers/api/migrations.php | 7 +++- app/controllers/api/projects.php | 10 +++-- app/controllers/api/proxy.php | 7 +++- app/controllers/api/storage.php | 15 ++++++-- app/controllers/api/teams.php | 20 ++++++++-- app/controllers/api/users.php | 26 +++++++++++-- app/controllers/api/vcs.php | 7 +++- app/init.php | 1 + 12 files changed, 200 insertions(+), 45 deletions(-) diff --git a/app/controllers/api/account.php b/app/controllers/api/account.php index 911f366b18..c7b433b658 100644 --- a/app/controllers/api/account.php +++ b/app/controllers/api/account.php @@ -14,6 +14,7 @@ use Appwrite\Event\Mail; use Appwrite\Auth\Phrase; use Appwrite\Extend\Exception; use Appwrite\Network\Validator\Email; +use Utopia\Database\Exception\Query as QueryException; use Utopia\Validator\Host; use Utopia\Validator\URL; use Utopia\Validator\Boolean; @@ -907,7 +908,11 @@ App::get('/v1/account/identities') ->inject('dbForProject') ->action(function (array $queries, Response $response, Document $user, Database $dbForProject) { - $queries = Query::parseQueries($queries); + try { + $queries = Query::parseQueries($queries); + } catch (QueryException $e) { + throw new Exception(Exception::GENERAL_QUERY_INVALID, $e->getMessage()); + } $queries[] = Query::equal('userInternalId', [$user->getInternalId()]); @@ -2066,7 +2071,12 @@ App::get('/v1/account/logs') ->inject('dbForProject') ->action(function (array $queries, Response $response, Document $user, Locale $locale, Reader $geodb, Database $dbForProject) { - $queries = Query::parseQueries($queries); + try { + $queries = Query::parseQueries($queries); + } catch (QueryException $e) { + throw new Exception(Exception::GENERAL_QUERY_INVALID, $e->getMessage()); + } + $grouped = Query::groupByType($queries); $limit = $grouped['limit'] ?? APP_LIMIT_COUNT; $offset = $grouped['offset'] ?? 0; diff --git a/app/controllers/api/databases.php b/app/controllers/api/databases.php index cbe6f7995f..444ccc1ec9 100644 --- a/app/controllers/api/databases.php +++ b/app/controllers/api/databases.php @@ -487,7 +487,11 @@ App::get('/v1/databases') ->inject('dbForProject') ->action(function (array $queries, string $search, Response $response, Database $dbForProject) { - $queries = Query::parseQueries($queries); + try { + $queries = Query::parseQueries($queries); + } catch (QueryException $e) { + throw new Exception(Exception::GENERAL_QUERY_INVALID, $e->getMessage()); + } if (!empty($search)) { $queries[] = Query::search('search', $search); @@ -567,7 +571,12 @@ App::get('/v1/databases/:databaseId/logs') throw new Exception(Exception::DATABASE_NOT_FOUND); } - $queries = Query::parseQueries($queries); + try { + $queries = Query::parseQueries($queries); + } catch (QueryException $e) { + throw new Exception(Exception::GENERAL_QUERY_INVALID, $e->getMessage()); + } + $grouped = Query::groupByType($queries); $limit = $grouped['limit'] ?? APP_LIMIT_COUNT; $offset = $grouped['offset'] ?? 0; @@ -809,7 +818,11 @@ App::get('/v1/databases/:databaseId/collections') throw new Exception(Exception::DATABASE_NOT_FOUND); } - $queries = Query::parseQueries($queries); + try { + $queries = Query::parseQueries($queries); + } catch (QueryException $e) { + throw new Exception(Exception::GENERAL_QUERY_INVALID, $e->getMessage()); + } if (!empty($search)) { $queries[] = Query::search('search', $search); @@ -908,7 +921,12 @@ App::get('/v1/databases/:databaseId/collections/:collectionId/logs') throw new Exception(Exception::COLLECTION_NOT_FOUND); } - $queries = Query::parseQueries($queries); + try { + $queries = Query::parseQueries($queries); + } catch (QueryException $e) { + throw new Exception(Exception::GENERAL_QUERY_INVALID, $e->getMessage()); + } + $grouped = Query::groupByType($queries); $limit = $grouped['limit'] ?? APP_LIMIT_COUNT; $offset = $grouped['offset'] ?? 0; @@ -1662,7 +1680,11 @@ App::get('/v1/databases/:databaseId/collections/:collectionId/attributes') throw new Exception(Exception::COLLECTION_NOT_FOUND); } - $queries = Query::parseQueries($queries); + try { + $queries = Query::parseQueries($queries); + } catch (QueryException $e) { + throw new Exception(Exception::GENERAL_QUERY_INVALID, $e->getMessage()); + } \array_push( $queries, @@ -2513,7 +2535,12 @@ App::get('/v1/databases/:databaseId/collections/:collectionId/indexes') throw new Exception(Exception::COLLECTION_NOT_FOUND); } - $queries = Query::parseQueries($queries); + try { + $queries = Query::parseQueries($queries); + } catch (QueryException $e) { + throw new Exception(Exception::GENERAL_QUERY_INVALID, $e->getMessage()); + } + \array_push($queries, Query::equal('collectionId', [$collectionId]), Query::equal('databaseId', [$databaseId])); // Get cursor document if there was a cursor query @@ -2922,10 +2949,8 @@ App::get('/v1/databases/:databaseId/collections/:collectionId/documents') } try { - $queries = Query::parseQueries($queries); // todo: make this to all parseQueries places? + $queries = Query::parseQueries($queries); } catch (QueryException $e) { - // question: should this throw GENERAL_ARGUMENT_INVALID like all QueryException and get 500 ? - // or GENERAL_QUERY_INVALID and get 400? throw new Exception(Exception::GENERAL_QUERY_INVALID, $e->getMessage()); } @@ -2954,7 +2979,7 @@ App::get('/v1/databases/:databaseId/collections/:collectionId/documents') } catch (AuthorizationException) { throw new Exception(Exception::USER_UNAUTHORIZED); } catch (QueryException $e) { - throw new Exception(Exception::GENERAL_ARGUMENT_INVALID, $e->getMessage()); // Should this be GENERAL_QUERY_INVALID? or 500 is ok? + throw new Exception(Exception::GENERAL_QUERY_INVALID, $e->getMessage()); } // Add $collectionId and $databaseId for all documents @@ -3052,14 +3077,18 @@ App::get('/v1/databases/:databaseId/collections/:collectionId/documents/:documen throw new Exception(Exception::COLLECTION_NOT_FOUND); } - $queries = Query::parseQueries($queries); + try { + $queries = Query::parseQueries($queries); + } catch (QueryException $e) { + throw new Exception(Exception::GENERAL_QUERY_INVALID, $e->getMessage()); + } try { $document = $dbForProject->getDocument('database_' . $database->getInternalId() . '_collection_' . $collection->getInternalId(), $documentId, $queries); } catch (AuthorizationException) { throw new Exception(Exception::USER_UNAUTHORIZED); } catch (QueryException $e) { - throw new Exception(Exception::GENERAL_ARGUMENT_INVALID, $e->getMessage()); + throw new Exception(Exception::GENERAL_QUERY_INVALID, $e->getMessage()); } if ($document->isEmpty()) { @@ -3148,7 +3177,12 @@ App::get('/v1/databases/:databaseId/collections/:collectionId/documents/:documen throw new Exception(Exception::DOCUMENT_NOT_FOUND); } - $queries = Query::parseQueries($queries); + try { + $queries = Query::parseQueries($queries); + } catch (QueryException $e) { + throw new Exception(Exception::GENERAL_QUERY_INVALID, $e->getMessage()); + } + $grouped = Query::groupByType($queries); $limit = $grouped['limit'] ?? APP_LIMIT_COUNT; $offset = $grouped['offset'] ?? 0; diff --git a/app/controllers/api/functions.php b/app/controllers/api/functions.php index 9c1f3cfa98..ea7571c6b8 100644 --- a/app/controllers/api/functions.php +++ b/app/controllers/api/functions.php @@ -12,6 +12,7 @@ use Appwrite\Utopia\Response\Model\Rule; use Appwrite\Extend\Exception; use Appwrite\Utopia\Database\Validator\CustomId; use Appwrite\Messaging\Adapter\Realtime; +use Utopia\Database\Exception\Query as QueryException; use Utopia\Validator\Assoc; use Utopia\Database\Helpers\ID; use Utopia\Database\Helpers\Permission; @@ -366,7 +367,11 @@ App::get('/v1/functions') ->inject('dbForProject') ->action(function (array $queries, string $search, Response $response, Database $dbForProject) { - $queries = Query::parseQueries($queries); + try { + $queries = Query::parseQueries($queries); + } catch (QueryException $e) { + throw new Exception(Exception::GENERAL_QUERY_INVALID, $e->getMessage()); + } if (!empty($search)) { $queries[] = Query::search('search', $search); @@ -1256,7 +1261,11 @@ App::get('/v1/functions/:functionId/deployments') throw new Exception(Exception::FUNCTION_NOT_FOUND); } - $queries = Query::parseQueries($queries); + try { + $queries = Query::parseQueries($queries); + } catch (QueryException $e) { + throw new Exception(Exception::GENERAL_QUERY_INVALID, $e->getMessage()); + } if (!empty($search)) { $queries[] = Query::search('search', $search); @@ -1794,7 +1803,11 @@ App::get('/v1/functions/:functionId/executions') throw new Exception(Exception::FUNCTION_NOT_FOUND); } - $queries = Query::parseQueries($queries); + try { + $queries = Query::parseQueries($queries); + } catch (QueryException $e) { + throw new Exception(Exception::GENERAL_QUERY_INVALID, $e->getMessage()); + } if (!empty($search)) { $queries[] = Query::search('search', $search); diff --git a/app/controllers/api/messaging.php b/app/controllers/api/messaging.php index 25260e1071..056bc3648c 100644 --- a/app/controllers/api/messaging.php +++ b/app/controllers/api/messaging.php @@ -22,6 +22,7 @@ use Utopia\Audit\Audit; use Utopia\Database\Database; use Utopia\Database\Document; use Utopia\Database\Exception\Duplicate as DuplicateException; +use Utopia\Database\Exception\Query as QueryException; use Utopia\Database\Helpers\ID; use Utopia\Database\Query; use Utopia\Database\Validator\Authorization; @@ -837,7 +838,11 @@ App::get('/v1/messaging/providers') ->inject('dbForProject') ->inject('response') ->action(function (array $queries, string $search, Database $dbForProject, Response $response) { - $queries = Query::parseQueries($queries); + try { + $queries = Query::parseQueries($queries); + } catch (QueryException $e) { + throw new Exception(Exception::GENERAL_QUERY_INVALID, $e->getMessage()); + } if (!empty($search)) { $queries[] = Query::search('search', $search); @@ -888,7 +893,12 @@ App::get('/v1/messaging/providers/:providerId/logs') throw new Exception(Exception::PROVIDER_NOT_FOUND); } - $queries = Query::parseQueries($queries); + try { + $queries = Query::parseQueries($queries); + } catch (QueryException $e) { + throw new Exception(Exception::GENERAL_QUERY_INVALID, $e->getMessage()); + } + $grouped = Query::groupByType($queries); $limit = $grouped['limit'] ?? APP_LIMIT_COUNT; $offset = $grouped['offset'] ?? 0; @@ -1944,7 +1954,11 @@ App::get('/v1/messaging/topics') ->inject('dbForProject') ->inject('response') ->action(function (array $queries, string $search, Database $dbForProject, Response $response) { - $queries = Query::parseQueries($queries); + try { + $queries = Query::parseQueries($queries); + } catch (QueryException $e) { + throw new Exception(Exception::GENERAL_QUERY_INVALID, $e->getMessage()); + } if (!empty($search)) { $queries[] = Query::search('search', $search); @@ -1995,7 +2009,12 @@ App::get('/v1/messaging/topics/:topicId/logs') throw new Exception(Exception::TOPIC_NOT_FOUND); } - $queries = Query::parseQueries($queries); + try { + $queries = Query::parseQueries($queries); + } catch (QueryException $e) { + throw new Exception(Exception::GENERAL_QUERY_INVALID, $e->getMessage()); + } + $grouped = Query::groupByType($queries); $limit = $grouped['limit'] ?? APP_LIMIT_COUNT; $offset = $grouped['offset'] ?? 0; @@ -2258,7 +2277,11 @@ App::get('/v1/messaging/topics/:topicId/subscribers') ->inject('dbForProject') ->inject('response') ->action(function (string $topicId, array $queries, string $search, Database $dbForProject, Response $response) { - $queries = Query::parseQueries($queries); + try { + $queries = Query::parseQueries($queries); + } catch (QueryException $e) { + throw new Exception(Exception::GENERAL_QUERY_INVALID, $e->getMessage()); + } if (!empty($search)) { $queries[] = Query::search('search', $search); @@ -2331,7 +2354,12 @@ App::get('/v1/messaging/subscribers/:subscriberId/logs') throw new Exception(Exception::SUBSCRIBER_NOT_FOUND); } - $queries = Query::parseQueries($queries); + try { + $queries = Query::parseQueries($queries); + } catch (QueryException $e) { + throw new Exception(Exception::GENERAL_QUERY_INVALID, $e->getMessage()); + } + $grouped = Query::groupByType($queries); $limit = $grouped['limit'] ?? APP_LIMIT_COUNT; $offset = $grouped['offset'] ?? 0; @@ -2845,7 +2873,11 @@ App::get('/v1/messaging/messages') ->inject('dbForProject') ->inject('response') ->action(function (array $queries, string $search, Database $dbForProject, Response $response) { - $queries = Query::parseQueries($queries); + try { + $queries = Query::parseQueries($queries); + } catch (QueryException $e) { + throw new Exception(Exception::GENERAL_QUERY_INVALID, $e->getMessage()); + } if (!empty($search)) { $queries[] = Query::search('search', $search); @@ -2896,7 +2928,12 @@ App::get('/v1/messaging/messages/:messageId/logs') throw new Exception(Exception::MESSAGE_NOT_FOUND); } - $queries = Query::parseQueries($queries); + try { + $queries = Query::parseQueries($queries); + } catch (QueryException $e) { + throw new Exception(Exception::GENERAL_QUERY_INVALID, $e->getMessage()); + } + $grouped = Query::groupByType($queries); $limit = $grouped['limit'] ?? APP_LIMIT_COUNT; $offset = $grouped['offset'] ?? 0; @@ -2990,7 +3027,11 @@ App::get('/v1/messaging/messages/:messageId/targets') return; } - $queries = Query::parseQueries($queries); + try { + $queries = Query::parseQueries($queries); + } catch (QueryException $e) { + throw new Exception(Exception::GENERAL_QUERY_INVALID, $e->getMessage()); + } $queries[] = Query::equal('$id', $targetIDs); diff --git a/app/controllers/api/migrations.php b/app/controllers/api/migrations.php index 87d3c12c99..7ccf531411 100644 --- a/app/controllers/api/migrations.php +++ b/app/controllers/api/migrations.php @@ -14,6 +14,7 @@ use Utopia\App; use Utopia\Database\Database; use Utopia\Database\DateTime; use Utopia\Database\Document; +use Utopia\Database\Exception\Query as QueryException; use Utopia\Database\Helpers\ID; use Utopia\Database\Query; use Utopia\Database\Validator\UID; @@ -384,7 +385,11 @@ App::get('/v1/migrations') ->inject('response') ->inject('dbForProject') ->action(function (array $queries, string $search, Response $response, Database $dbForProject) { - $queries = Query::parseQueries($queries); + try { + $queries = Query::parseQueries($queries); + } catch (QueryException $e) { + throw new Exception(Exception::GENERAL_QUERY_INVALID, $e->getMessage()); + } if (!empty($search)) { $queries[] = Query::search('search', $search); diff --git a/app/controllers/api/projects.php b/app/controllers/api/projects.php index 30f6b1f376..c8aab0829f 100644 --- a/app/controllers/api/projects.php +++ b/app/controllers/api/projects.php @@ -18,20 +18,18 @@ use Utopia\Audit\Audit; use Utopia\Cache\Cache; use Utopia\Config\Config; use Utopia\Database\Database; -use Utopia\Database\DateTime; use Utopia\Database\Document; use Utopia\Database\Exception\Duplicate; +use Utopia\Database\Exception\Query as QueryException; use Utopia\Database\Helpers\ID; use Utopia\Database\Helpers\Permission; use Utopia\Database\Helpers\Role; use Utopia\Database\Query; -use Utopia\Database\Validator\Authorization; use Utopia\Database\Validator\Datetime as DatetimeValidator; use Utopia\Database\Validator\UID; use Utopia\Domains\Validator\PublicDomain; use Utopia\Locale\Locale; use Utopia\Pools\Group; -use Utopia\Registry\Registry; use Utopia\Validator\ArrayList; use Utopia\Validator\Boolean; use Utopia\Validator\Hostname; @@ -241,7 +239,11 @@ App::get('/v1/projects') ->inject('dbForConsole') ->action(function (array $queries, string $search, Response $response, Database $dbForConsole) { - $queries = Query::parseQueries($queries); + try { + $queries = Query::parseQueries($queries); + } catch (QueryException $e) { + throw new Exception(Exception::GENERAL_QUERY_INVALID, $e->getMessage()); + } if (!empty($search)) { $queries[] = Query::search('search', $search); diff --git a/app/controllers/api/proxy.php b/app/controllers/api/proxy.php index 8d3f559d62..85e52599e6 100644 --- a/app/controllers/api/proxy.php +++ b/app/controllers/api/proxy.php @@ -10,6 +10,7 @@ use Appwrite\Utopia\Response; use Utopia\App; use Utopia\Database\Database; use Utopia\Database\Document; +use Utopia\Database\Exception\Query as QueryException; use Utopia\Database\Helpers\ID; use Utopia\Database\Query; use Utopia\Database\Validator\UID; @@ -156,7 +157,11 @@ App::get('/v1/proxy/rules') ->inject('project') ->inject('dbForConsole') ->action(function (array $queries, string $search, Response $response, Document $project, Database $dbForConsole) { - $queries = Query::parseQueries($queries); + try { + $queries = Query::parseQueries($queries); + } catch (QueryException $e) { + throw new Exception(Exception::GENERAL_QUERY_INVALID, $e->getMessage()); + } if (!empty($search)) { $queries[] = Query::search('search', $search); diff --git a/app/controllers/api/storage.php b/app/controllers/api/storage.php index fc5d00dfd0..ac4b3a5086 100644 --- a/app/controllers/api/storage.php +++ b/app/controllers/api/storage.php @@ -12,10 +12,10 @@ use Utopia\App; use Utopia\Config\Config; use Utopia\Database\Database; use Utopia\Database\Document; -use Utopia\Database\DateTime; use Utopia\Database\Exception\Duplicate; use Utopia\Database\Exception\Authorization as AuthorizationException; use Utopia\Database\Exception\Duplicate as DuplicateException; +use Utopia\Database\Exception\Query as QueryException; use Utopia\Database\Exception\Structure as StructureException; use Utopia\Database\Helpers\ID; use Utopia\Database\Helpers\Permission; @@ -42,7 +42,6 @@ use Utopia\Validator\HexColor; use Utopia\Validator\Range; use Utopia\Validator\Text; use Utopia\Validator\WhiteList; -use Utopia\DSN\DSN; use Utopia\Swoole\Request; use Utopia\Storage\Compression\Compression; @@ -161,7 +160,11 @@ App::get('/v1/storage/buckets') ->inject('dbForProject') ->action(function (array $queries, string $search, Response $response, Database $dbForProject) { - $queries = Query::parseQueries($queries); + try { + $queries = Query::parseQueries($queries); + } catch (QueryException $e) { + throw new Exception(Exception::GENERAL_QUERY_INVALID, $e->getMessage()); + } if (!empty($search)) { $queries[] = Query::search('search', $search); @@ -737,7 +740,11 @@ App::get('/v1/storage/buckets/:bucketId/files') throw new Exception(Exception::USER_UNAUTHORIZED); } - $queries = Query::parseQueries($queries); + try { + $queries = Query::parseQueries($queries); + } catch (QueryException $e) { + throw new Exception(Exception::GENERAL_QUERY_INVALID, $e->getMessage()); + } if (!empty($search)) { $queries[] = Query::search('search', $search); diff --git a/app/controllers/api/teams.php b/app/controllers/api/teams.php index b8d0a8229c..eea7217912 100644 --- a/app/controllers/api/teams.php +++ b/app/controllers/api/teams.php @@ -9,6 +9,7 @@ use Appwrite\Event\Mail; use Appwrite\Event\Messaging; use Appwrite\Extend\Exception; use Appwrite\Network\Validator\Email; +use Utopia\Database\Exception\Query as QueryException; use Utopia\Validator\Host; use Appwrite\Template\Template; use Appwrite\Utopia\Database\Validator\CustomId; @@ -146,7 +147,11 @@ App::get('/v1/teams') ->inject('dbForProject') ->action(function (array $queries, string $search, Response $response, Database $dbForProject) { - $queries = Query::parseQueries($queries); + try { + $queries = Query::parseQueries($queries); + } catch (QueryException $e) { + throw new Exception(Exception::GENERAL_QUERY_INVALID, $e->getMessage()); + } if (!empty($search)) { $queries[] = Query::search('search', $search); @@ -699,7 +704,11 @@ App::get('/v1/teams/:teamId/memberships') throw new Exception(Exception::TEAM_NOT_FOUND); } - $queries = Query::parseQueries($queries); + try { + $queries = Query::parseQueries($queries); + } catch (QueryException $e) { + throw new Exception(Exception::GENERAL_QUERY_INVALID, $e->getMessage()); + } if (!empty($search)) { $queries[] = Query::search('search', $search); @@ -1100,7 +1109,12 @@ App::get('/v1/teams/:teamId/logs') throw new Exception(Exception::TEAM_NOT_FOUND); } - $queries = Query::parseQueries($queries); + try { + $queries = Query::parseQueries($queries); + } catch (QueryException $e) { + throw new Exception(Exception::GENERAL_QUERY_INVALID, $e->getMessage()); + } + $grouped = Query::groupByType($queries); $limit = $grouped['limit'] ?? APP_LIMIT_COUNT; $offset = $grouped['offset'] ?? 0; diff --git a/app/controllers/api/users.php b/app/controllers/api/users.php index 375efe77cb..d2838ffe1f 100644 --- a/app/controllers/api/users.php +++ b/app/controllers/api/users.php @@ -11,6 +11,7 @@ use Appwrite\Network\Validator\Email; use Appwrite\Utopia\Database\Validator\CustomId; use Appwrite\Utopia\Database\Validator\Queries\Identities; use Appwrite\Utopia\Database\Validator\Queries\Targets; +use Utopia\Database\Exception\Query as QueryException; use Utopia\Database\Validator\Queries; use Appwrite\Utopia\Database\Validator\Queries\Users; use Utopia\Database\Validator\Query\Limit; @@ -536,7 +537,11 @@ App::get('/v1/users') ->inject('dbForProject') ->action(function (array $queries, string $search, Response $response, Database $dbForProject) { - $queries = Query::parseQueries($queries); + try { + $queries = Query::parseQueries($queries); + } catch (QueryException $e) { + throw new Exception(Exception::GENERAL_QUERY_INVALID, $e->getMessage()); + } if (!empty($search)) { $queries[] = Query::search('search', $search); @@ -756,7 +761,12 @@ App::get('/v1/users/:userId/logs') throw new Exception(Exception::USER_NOT_FOUND); } - $queries = Query::parseQueries($queries); + try { + $queries = Query::parseQueries($queries); + } catch (QueryException $e) { + throw new Exception(Exception::GENERAL_QUERY_INVALID, $e->getMessage()); + } + $grouped = Query::groupByType($queries); $limit = $grouped['limit'] ?? APP_LIMIT_COUNT; $offset = $grouped['offset'] ?? 0; @@ -834,7 +844,11 @@ App::get('/v1/users/:userId/targets') throw new Exception(Exception::USER_NOT_FOUND); } - $queries = Query::parseQueries($queries); + try { + $queries = Query::parseQueries($queries); + } catch (QueryException $e) { + throw new Exception(Exception::GENERAL_QUERY_INVALID, $e->getMessage()); + } $queries[] = Query::equal('userId', [$userId]); @@ -876,7 +890,11 @@ App::get('/v1/users/identities') ->inject('dbForProject') ->action(function (array $queries, string $search, Response $response, Database $dbForProject) { - $queries = Query::parseQueries($queries); + try { + $queries = Query::parseQueries($queries); + } catch (QueryException $e) { + throw new Exception(Exception::GENERAL_QUERY_INVALID, $e->getMessage()); + } if (!empty($search)) { $queries[] = Query::search('search', $search); diff --git a/app/controllers/api/vcs.php b/app/controllers/api/vcs.php index df18320cf2..6a9397eaef 100644 --- a/app/controllers/api/vcs.php +++ b/app/controllers/api/vcs.php @@ -4,6 +4,7 @@ use Appwrite\Auth\OAuth2\Github as OAuth2Github; use Utopia\App; use Appwrite\Event\Build; use Appwrite\Event\Delete; +use Utopia\Database\Exception\Query as QueryException; use Utopia\Validator\Host; use Utopia\Database\Database; use Utopia\Database\Document; @@ -969,7 +970,11 @@ App::get('/v1/vcs/installations') ->inject('dbForProject') ->inject('dbForConsole') ->action(function (array $queries, string $search, Response $response, Document $project, Database $dbForProject, Database $dbForConsole) { - $queries = Query::parseQueries($queries); + try { + $queries = Query::parseQueries($queries); + } catch (QueryException $e) { + throw new Exception(Exception::GENERAL_QUERY_INVALID, $e->getMessage()); + } $queries[] = Query::equal('projectInternalId', [$project->getInternalId()]); diff --git a/app/init.php b/app/init.php index 266c080c92..16cc9bf8c4 100644 --- a/app/init.php +++ b/app/init.php @@ -35,6 +35,7 @@ use Appwrite\OpenSSL\OpenSSL; use Appwrite\URL\URL as AppwriteURL; use Utopia\App; use Utopia\Database\Adapter\SQL; +use Utopia\Database\Exception\Query as QueryException; use Utopia\Logger\Logger; use Utopia\Cache\Adapter\Redis as RedisCache; use Utopia\Cache\Cache; From 4018224cc6f4e2283cd8181be08860c39e03e685 Mon Sep 17 00:00:00 2001 From: fogelito Date: Mon, 12 Feb 2024 18:06:37 +0200 Subject: [PATCH 51/87] parseQueries --- app/controllers/api/databases.php | 6 ------ 1 file changed, 6 deletions(-) diff --git a/app/controllers/api/databases.php b/app/controllers/api/databases.php index 444ccc1ec9..f0b0783b02 100644 --- a/app/controllers/api/databases.php +++ b/app/controllers/api/databases.php @@ -19,7 +19,6 @@ use Utopia\App; use Utopia\Audit\Audit; use Utopia\Config\Config; use Utopia\Database\Database; -use Utopia\Database\DateTime; use Utopia\Database\Document; use Utopia\Database\Exception\Authorization as AuthorizationException; use Utopia\Database\Exception\Conflict as ConflictException; @@ -3079,11 +3078,6 @@ App::get('/v1/databases/:databaseId/collections/:collectionId/documents/:documen try { $queries = Query::parseQueries($queries); - } catch (QueryException $e) { - throw new Exception(Exception::GENERAL_QUERY_INVALID, $e->getMessage()); - } - - try { $document = $dbForProject->getDocument('database_' . $database->getInternalId() . '_collection_' . $collection->getInternalId(), $documentId, $queries); } catch (AuthorizationException) { throw new Exception(Exception::USER_UNAUTHORIZED); From 6f6b39ae20c4cecbb3efb5a1e98eef2a3dc47d65 Mon Sep 17 00:00:00 2001 From: fogelito Date: Mon, 12 Feb 2024 18:09:48 +0200 Subject: [PATCH 52/87] stopOnFailure --- phpunit.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/phpunit.xml b/phpunit.xml index e772866051..90ebd4225f 100644 --- a/phpunit.xml +++ b/phpunit.xml @@ -6,7 +6,7 @@ convertNoticesToExceptions="true" convertWarningsToExceptions="true" processIsolation="false" - stopOnFailure="true" + stopOnFailure="false" > From 94e580c2597c37f4bd5f805b7a9dcd0df364c37b Mon Sep 17 00:00:00 2001 From: Jake Barnby Date: Tue, 13 Feb 2024 15:05:15 +1300 Subject: [PATCH 53/87] Fix graphql test --- tests/e2e/Services/GraphQL/MessagingTest.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/e2e/Services/GraphQL/MessagingTest.php b/tests/e2e/Services/GraphQL/MessagingTest.php index dba655b558..d8aa08ce71 100644 --- a/tests/e2e/Services/GraphQL/MessagingTest.php +++ b/tests/e2e/Services/GraphQL/MessagingTest.php @@ -45,8 +45,8 @@ class MessagingTest extends Scope 'Telesign' => [ 'providerId' => ID::unique(), 'name' => 'Telesign1', - 'username' => 'my-username', - 'password' => 'my-password', + 'customerId' => 'my-username', + 'apiKey' => 'my-password', 'from' => '+123456789', ], 'Textmagic' => [ @@ -104,7 +104,7 @@ class MessagingTest extends Scope 'x-appwrite-key' => $this->getProject()['apiKey'], ]), $graphQLPayload); - \array_push($providers, $response['body']['data']['messagingCreate' . $key . 'Provider']); + $providers[] = $response['body']['data']['messagingCreate' . $key . 'Provider']; $this->assertEquals(200, $response['headers']['status-code']); $this->assertEquals($providersParams[$key]['name'], $response['body']['data']['messagingCreate' . $key . 'Provider']['name']); } From 01e88e65d661fba545440cc057bdf4ebdbb21a87 Mon Sep 17 00:00:00 2001 From: Jake Barnby Date: Tue, 13 Feb 2024 15:16:37 +1300 Subject: [PATCH 54/87] Fix swapping options/credentials on create/update smtp provider --- app/controllers/api/messaging.php | 27 ++++++++++--------- .../e2e/Services/Messaging/MessagingBase.php | 23 +++++++++++++--- 2 files changed, 34 insertions(+), 16 deletions(-) diff --git a/app/controllers/api/messaging.php b/app/controllers/api/messaging.php index 9b3e529e94..f325300c50 100644 --- a/app/controllers/api/messaging.php +++ b/app/controllers/api/messaging.php @@ -1204,6 +1204,7 @@ App::patch('/v1/messaging/providers/smtp/:providerId') ->param('password', '', new Text(0), 'Authentication password.', true) ->param('encryption', '', new WhiteList(['none', 'ssl', 'tls']), 'Encryption type. Can be \'ssl\' or \'tls\'', true) ->param('autoTLS', null, new Boolean(), 'Enable SMTP AutoTLS feature.', true) + ->param('mailer', '', new Text(0), 'The value to use for the X-Mailer header.', true) ->param('fromName', '', new Text(128), 'Sender Name.', true) ->param('fromEmail', '', new Email(), 'Sender email address.', true) ->param('replyToName', '', new Text(128), 'Name set in the Reply To field for the mail. Default value is Sender Name.', true) @@ -1212,16 +1213,14 @@ App::patch('/v1/messaging/providers/smtp/:providerId') ->inject('queueForEvents') ->inject('dbForProject') ->inject('response') - ->action(function (string $providerId, string $name, string $host, ?int $port, string $username, string $password, string $encryption, ?bool $autoTLS, string $fromName, string $fromEmail, string $replyToName, string $replyToEmail, ?bool $enabled, Event $queueForEvents, Database $dbForProject, Response $response) { + ->action(function (string $providerId, string $name, string $host, ?int $port, string $username, string $password, string $encryption, ?bool $autoTLS, string $mailer, string $fromName, string $fromEmail, string $replyToName, string $replyToEmail, ?bool $enabled, Event $queueForEvents, Database $dbForProject, Response $response) { $provider = $dbForProject->getDocument('providers', $providerId); if ($provider->isEmpty()) { throw new Exception(Exception::PROVIDER_NOT_FOUND); } - $providerAttr = $provider->getAttribute('provider'); - - if ($providerAttr !== 'smtp') { + if ($provider->getAttribute('provider') !== 'smtp') { throw new Exception(Exception::PROVIDER_INCORRECT_TYPE); } @@ -1231,6 +1230,18 @@ App::patch('/v1/messaging/providers/smtp/:providerId') $options = $provider->getAttribute('options'); + if (!empty($encryption)) { + $options['encryption'] = $encryption === 'none' ? '' : $encryption; + } + + if (!\is_null($autoTLS)) { + $options['autoTLS'] = $autoTLS; + } + + if (!empty($mailer)) { + $options['mailer'] = $mailer; + } + if (!empty($fromName)) { $options['fromName'] = $fromName; } @@ -1267,14 +1278,6 @@ App::patch('/v1/messaging/providers/smtp/:providerId') $credentials['password'] = $password; } - if (!empty($encryption)) { - $credentials['encryption'] = $encryption === 'none' ? '' : $encryption; - } - - if (!\is_null($autoTLS)) { - $credentials['autoTLS'] = $autoTLS; - } - $provider->setAttribute('credentials', $credentials); if (!\is_null($enabled)) { diff --git a/tests/e2e/Services/Messaging/MessagingBase.php b/tests/e2e/Services/Messaging/MessagingBase.php index 111f0294fc..1255f99fbf 100644 --- a/tests/e2e/Services/Messaging/MessagingBase.php +++ b/tests/e2e/Services/Messaging/MessagingBase.php @@ -177,14 +177,26 @@ trait MessagingBase 'bundleId' => 'my-bundleid', ], ]; - foreach (\array_keys($providersParams) as $index => $key) { - $response = $this->client->call(Client::METHOD_PATCH, '/messaging/providers/' . $key . '/' . $providers[$index]['$id'], [ + + foreach (\array_keys($providersParams) as $index => $name) { + $response = $this->client->call(Client::METHOD_PATCH, '/messaging/providers/' . $name . '/' . $providers[$index]['$id'], [ 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], 'x-appwrite-key' => $this->getProject()['apiKey'], - ], $providersParams[$key]); + ], $providersParams[$name]); + $this->assertEquals(200, $response['headers']['status-code']); - $this->assertEquals($providersParams[$key]['name'], $response['body']['name']); + $this->assertEquals($providersParams[$name]['name'], $response['body']['name']); + + if ($name === 'smtp') { + $this->assertArrayHasKey('encryption', $response['body']['options']); + $this->assertArrayHasKey('autoTLS', $response['body']['options']); + $this->assertArrayHasKey('mailer', $response['body']['options']); + $this->assertArrayNotHasKey('encryption', $response['body']['credentials']); + $this->assertArrayNotHasKey('autoTLS', $response['body']['credentials']); + $this->assertArrayNotHasKey('mailer', $response['body']['credentials']); + } + $providers[$index] = $response['body']; } @@ -199,10 +211,13 @@ trait MessagingBase 'isEuRegion' => true, 'enabled' => false, ]); + $this->assertEquals(200, $response['headers']['status-code']); $this->assertEquals('Mailgun2', $response['body']['name']); $this->assertEquals(false, $response['body']['enabled']); + $providers[1] = $response['body']; + return $providers; } From 7b791aa371ec626ba9f269687eb14d27d86e9877 Mon Sep 17 00:00:00 2001 From: Jake Barnby Date: Tue, 13 Feb 2024 15:20:10 +1300 Subject: [PATCH 55/87] Fix telesign test --- tests/e2e/Services/GraphQL/MessagingTest.php | 4 ++-- tests/e2e/Services/Messaging/MessagingBase.php | 11 +++++++---- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/tests/e2e/Services/GraphQL/MessagingTest.php b/tests/e2e/Services/GraphQL/MessagingTest.php index d8aa08ce71..18fcf71f0c 100644 --- a/tests/e2e/Services/GraphQL/MessagingTest.php +++ b/tests/e2e/Services/GraphQL/MessagingTest.php @@ -138,8 +138,8 @@ class MessagingTest extends Scope 'Telesign' => [ 'providerId' => $providers[3]['_id'], 'name' => 'Telesign2', - 'username' => 'my-username', - 'password' => 'my-password', + 'customerId' => 'my-username', + 'apiKey' => 'my-password', ], 'Textmagic' => [ 'providerId' => $providers[4]['_id'], diff --git a/tests/e2e/Services/Messaging/MessagingBase.php b/tests/e2e/Services/Messaging/MessagingBase.php index 111f0294fc..96478f485f 100644 --- a/tests/e2e/Services/Messaging/MessagingBase.php +++ b/tests/e2e/Services/Messaging/MessagingBase.php @@ -51,8 +51,8 @@ trait MessagingBase 'telesign' => [ 'providerId' => ID::unique(), 'name' => 'Telesign1', - 'username' => 'my-username', - 'password' => 'my-password', + 'customerId' => 'my-username', + 'apiKey' => 'my-password', 'from' => '+123456789', ], 'textmagic' => [ @@ -142,8 +142,8 @@ trait MessagingBase ], 'telesign' => [ 'name' => 'Telesign2', - 'username' => 'my-username', - 'password' => 'my-password', + 'customerId' => 'my-username', + 'apiKey' => 'my-password', ], 'textmagic' => [ 'name' => 'Textmagic2', @@ -177,6 +177,7 @@ trait MessagingBase 'bundleId' => 'my-bundleid', ], ]; + foreach (\array_keys($providersParams) as $index => $key) { $response = $this->client->call(Client::METHOD_PATCH, '/messaging/providers/' . $key . '/' . $providers[$index]['$id'], [ 'content-type' => 'application/json', @@ -202,7 +203,9 @@ trait MessagingBase $this->assertEquals(200, $response['headers']['status-code']); $this->assertEquals('Mailgun2', $response['body']['name']); $this->assertEquals(false, $response['body']['enabled']); + $providers[1] = $response['body']; + return $providers; } From 2ce85ce6ef238d80beebdc60c25cc4ff5ff8d6b2 Mon Sep 17 00:00:00 2001 From: Jake Barnby Date: Tue, 13 Feb 2024 17:08:45 +1300 Subject: [PATCH 56/87] Add unknown error is delivered total is 0 but there were no delivery errors --- app/console | 2 +- src/Appwrite/Platform/Workers/Messaging.php | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/app/console b/app/console index 8c8f0b7ccb..8a267dc220 160000 --- a/app/console +++ b/app/console @@ -1 +1 @@ -Subproject commit 8c8f0b7ccb0d98e9561f03a6486de1e59f3b3b9d +Subproject commit 8a267dc220417dc1778ec5b391f9feacb8e1fdc5 diff --git a/src/Appwrite/Platform/Workers/Messaging.php b/src/Appwrite/Platform/Workers/Messaging.php index feed820e15..99730d475f 100644 --- a/src/Appwrite/Platform/Workers/Messaging.php +++ b/src/Appwrite/Platform/Workers/Messaging.php @@ -264,7 +264,7 @@ class Messaging extends Action } } } catch (\Throwable $e) { - $deliveryErrors[] = 'Failed sending to targets ' . $batchIndex + 1 . '-' . \count($batch) . ' with error: ' . $e->getMessage(); + $deliveryErrors[] = 'Failed sending to targets ' . $batchIndex + 1 . ' of ' . \count($batch) . ' with error: ' . $e->getMessage(); } finally { $batchIndex++; @@ -288,6 +288,10 @@ class Messaging extends Action $deliveryErrors = \array_merge($deliveryErrors, $result['deliveryErrors']); } + if (empty($deliveryErrors) && $deliveredTotal === 0) { + $deliveryErrors[] = 'Unknown error'; + } + $message->setAttribute('deliveryErrors', $deliveryErrors); if (\count($message->getAttribute('deliveryErrors')) > 0) { From 1f470aecd27d63745cbc29b3041cfa97f16377f2 Mon Sep 17 00:00:00 2001 From: Jake Barnby Date: Tue, 13 Feb 2024 17:24:31 +1300 Subject: [PATCH 57/87] Add subscribe permission to topics --- app/config/collections.php | 11 +++++++++++ app/controllers/api/messaging.php | 21 ++++++++++++++------- 2 files changed, 25 insertions(+), 7 deletions(-) diff --git a/app/config/collections.php b/app/config/collections.php index d1bb04756e..54e72740de 100644 --- a/app/config/collections.php +++ b/app/config/collections.php @@ -1891,6 +1891,17 @@ $commonCollections = [ 'array' => false, 'filters' => [], ], + [ + '$id' => ID::custom('subscribe'), + 'type' => Database::VAR_STRING, + 'format' => '', + 'size' => 128, + 'signed' => true, + 'required' => false, + 'default' => null, + 'array' => true, + 'filters' => [], + ], [ '$id' => ID::custom('total'), 'type' => Database::VAR_INTEGER, diff --git a/app/controllers/api/messaging.php b/app/controllers/api/messaging.php index 9b3e529e94..538ed25003 100644 --- a/app/controllers/api/messaging.php +++ b/app/controllers/api/messaging.php @@ -30,6 +30,7 @@ use Utopia\Database\Validator\Datetime as DatetimeValidator; use Utopia\Database\Validator\Queries; use Utopia\Database\Validator\Query\Limit; use Utopia\Database\Validator\Query\Offset; +use Utopia\Database\Validator\Roles; use Utopia\Database\Validator\UID; use Utopia\Locale\Locale; use Utopia\Validator\ArrayList; @@ -1917,15 +1918,17 @@ App::post('/v1/messaging/topics') ->label('sdk.response.model', Response::MODEL_TOPIC) ->param('topicId', '', new CustomId(), 'Topic ID. Choose a custom Topic ID or a new Topic ID.') ->param('name', '', new Text(128), 'Topic Name.') + ->param('subscribe', [Role::users()], new Roles(APP_LIMIT_ARRAY_PARAMS_SIZE), 'An array of role strings with subscribe permission. By default all users are granted with any subscribe permission. [learn more about roles](https://appwrite.io/docs/permissions#permission-roles). Maximum of ' . APP_LIMIT_ARRAY_PARAMS_SIZE . ' roles are allowed, each 64 characters long.', true) ->inject('queueForEvents') ->inject('dbForProject') ->inject('response') - ->action(function (string $topicId, string $name, Event $queueForEvents, Database $dbForProject, Response $response) { + ->action(function (string $topicId, string $name, array $subscribe, Event $queueForEvents, Database $dbForProject, Response $response) { $topicId = $topicId == 'unique()' ? ID::unique() : $topicId; $topic = new Document([ '$id' => $topicId, 'name' => $name, + 'subscribe' => $subscribe, ]); try { @@ -2217,6 +2220,12 @@ App::post('/v1/messaging/topics/:topicId/subscribers') throw new Exception(Exception::TOPIC_NOT_FOUND); } + $validator = new Authorization('subscribe'); + + if (!$validator->isValid($topic->getAttribute('subscribe'))) { + throw new Exception(Exception::USER_UNAUTHORIZED, $validator->getDescription()); + } + $target = Authorization::skip(fn () => $dbForProject->getDocument('targets', $targetId)); if ($target->isEmpty()) { @@ -2225,25 +2234,23 @@ App::post('/v1/messaging/topics/:topicId/subscribers') $user = Authorization::skip(fn () => $dbForProject->getDocument('users', $target->getAttribute('userId'))); - $userId = $user->getId(); - $subscriber = new Document([ '$id' => $subscriberId, '$permissions' => [ - Permission::read(Role::user($userId)), - Permission::delete(Role::user($userId)), + Permission::read(Role::user($user->getId())), + Permission::delete(Role::user($user->getId())), ], 'topicId' => $topicId, 'topicInternalId' => $topic->getInternalId(), 'targetId' => $targetId, 'targetInternalId' => $target->getInternalId(), - 'userId' => $userId, + 'userId' => $user->getId(), 'userInternalId' => $user->getInternalId(), 'providerType' => $target->getAttribute('providerType'), 'search' => implode(' ', [ $subscriberId, $targetId, - $userId, + $user->getId(), $target->getAttribute('providerType'), ]), ]); From b2f119868df8d4a7cb157dcb9fb0574daed861e5 Mon Sep 17 00:00:00 2001 From: Jake Barnby Date: Tue, 13 Feb 2024 17:41:07 +1300 Subject: [PATCH 58/87] Add test --- src/Appwrite/Utopia/Response/Model/Topic.php | 7 +++ .../e2e/Services/Messaging/MessagingBase.php | 52 +++++++++++++++---- 2 files changed, 49 insertions(+), 10 deletions(-) diff --git a/src/Appwrite/Utopia/Response/Model/Topic.php b/src/Appwrite/Utopia/Response/Model/Topic.php index 8f3724b0ef..25889095fd 100644 --- a/src/Appwrite/Utopia/Response/Model/Topic.php +++ b/src/Appwrite/Utopia/Response/Model/Topic.php @@ -39,6 +39,13 @@ class Topic extends Model 'description' => 'Total count of subscribers subscribed to topic.', 'default' => 0, 'example' => 100, + ]) + ->addRule('subscribe', [ + 'type' => self::TYPE_STRING, + 'description' => 'Subscribe permissions.', + 'default' => ['users'], + 'example' => 'users', + 'array' => true, ]); } diff --git a/tests/e2e/Services/Messaging/MessagingBase.php b/tests/e2e/Services/Messaging/MessagingBase.php index 96478f485f..72a087a116 100644 --- a/tests/e2e/Services/Messaging/MessagingBase.php +++ b/tests/e2e/Services/Messaging/MessagingBase.php @@ -7,6 +7,7 @@ use Tests\E2E\Client; use Utopia\App; use Utopia\Database\Document; use Utopia\Database\Helpers\ID; +use Utopia\Database\Helpers\Role; use Utopia\Database\Query; use Utopia\DSN\DSN; @@ -283,7 +284,7 @@ trait MessagingBase public function testCreateTopic(): array { - $response = $this->client->call(Client::METHOD_POST, '/messaging/topics', [ + $response1 = $this->client->call(Client::METHOD_POST, '/messaging/topics', [ 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], 'x-appwrite-key' => $this->getProject()['apiKey'], @@ -291,18 +292,34 @@ trait MessagingBase 'topicId' => ID::unique(), 'name' => 'my-app', ]); - $this->assertEquals(201, $response['headers']['status-code']); - $this->assertEquals('my-app', $response['body']['name']); + $this->assertEquals(201, $response1['headers']['status-code']); + $this->assertEquals('my-app', $response1['body']['name']); - return $response['body']; + $response2 = $this->client->call(Client::METHOD_POST, '/messaging/topics', [ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + 'x-appwrite-key' => $this->getProject()['apiKey'], + ], [ + 'topicId' => ID::unique(), + 'name' => 'my-app2', + 'subscribe' => [Role::user('invalid')->toString()], + ]); + $this->assertEquals(201, $response2['headers']['status-code']); + $this->assertEquals('my-app2', $response2['body']['name']); + $this->assertEquals(1, \count($response2['body']['subscribe'])); + + return [ + 'public' => $response1['body'], + 'private' => $response2['body'], + ]; } /** * @depends testCreateTopic */ - public function testUpdateTopic(array $topic): string + public function testUpdateTopic(array $topics): string { - $response = $this->client->call(Client::METHOD_PATCH, '/messaging/topics/' . $topic['$id'], [ + $response = $this->client->call(Client::METHOD_PATCH, '/messaging/topics/' . $topics['public']['$id'], [ 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], 'x-appwrite-key' => $this->getProject()['apiKey'], @@ -311,6 +328,7 @@ trait MessagingBase ]); $this->assertEquals(200, $response['headers']['status-code']); $this->assertEquals('android-app', $response['body']['name']); + return $response['body']['$id']; } @@ -330,7 +348,7 @@ trait MessagingBase ]); $this->assertEquals(200, $response['headers']['status-code']); - $this->assertEquals(1, \count($response['body']['topics'])); + $this->assertEquals(2, \count($response['body']['topics'])); $response = $this->client->call(Client::METHOD_GET, '/messaging/topics', [ 'content-type' => 'application/json', @@ -366,7 +384,7 @@ trait MessagingBase /** * @depends testCreateTopic */ - public function testCreateSubscriber(array $topic) + public function testCreateSubscriber(array $topics) { $userId = $this->getUser()['$id']; @@ -396,7 +414,7 @@ trait MessagingBase $this->assertEquals(201, $target['headers']['status-code']); - $response = $this->client->call(Client::METHOD_POST, '/messaging/topics/' . $topic['$id'] . '/subscribers', \array_merge([ + $response = $this->client->call(Client::METHOD_POST, '/messaging/topics/' . $topics['public']['$id'] . '/subscribers', \array_merge([ 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ @@ -408,7 +426,7 @@ trait MessagingBase $this->assertEquals($target['body']['userId'], $response['body']['target']['userId']); $this->assertEquals($target['body']['providerType'], $response['body']['target']['providerType']); - $topic = $this->client->call(Client::METHOD_GET, '/messaging/topics/' . $topic['$id'], [ + $topic = $this->client->call(Client::METHOD_GET, '/messaging/topics/' . $topics['public']['$id'], [ 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], 'x-appwrite-key' => $this->getProject()['apiKey'], @@ -418,6 +436,20 @@ trait MessagingBase $this->assertEquals('android-app', $topic['body']['name']); $this->assertEquals(1, $topic['body']['total']); + $response2 = $this->client->call(Client::METHOD_POST, '/messaging/topics/' . $topics['private']['$id'] . '/subscribers', \array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + ], $this->getHeaders()), [ + 'subscriberId' => ID::unique(), + 'targetId' => $target['body']['$id'], + ]); + + if ($this->getSide() === 'client') { + $this->assertEquals(401, $response2['headers']['status-code']); + } else { + $this->assertEquals(201, $response2['headers']['status-code']); + } + return [ 'topicId' => $topic['body']['$id'], 'targetId' => $target['body']['$id'], From 014464506e8e6a7917ae3feb295ba67a511eb491 Mon Sep 17 00:00:00 2001 From: Jake Barnby Date: Tue, 13 Feb 2024 17:45:03 +1300 Subject: [PATCH 59/87] Remove redundant hook --- app/controllers/shared/api.php | 75 ---------------------------------- 1 file changed, 75 deletions(-) diff --git a/app/controllers/shared/api.php b/app/controllers/shared/api.php index 24488316fb..1a9c9f7380 100644 --- a/app/controllers/shared/api.php +++ b/app/controllers/shared/api.php @@ -316,81 +316,6 @@ App::init() } }); -App::init() - ->groups(['auth']) - ->inject('utopia') - ->inject('request') - ->inject('project') - ->inject('geodb') - ->action(function (App $utopia, Request $request, Document $project, Reader $geodb) { - $denylist = App::getEnv('_APP_CONSOLE_COUNTRIES_DENYLIST', ''); - if (!empty($denylist) && $project->getId() === 'console') { - $countries = explode(',', $denylist); - $record = $geodb->get($request->getIP()) ?? []; - $country = $record['country']['iso_code'] ?? ''; - if (in_array($country, $countries)) { - throw new Exception(Exception::GENERAL_REGION_ACCESS_DENIED); - } - } - - $route = $utopia->getRoute(); - - $isPrivilegedUser = Auth::isPrivilegedUser(Authorization::getRoles()); - $isAppUser = Auth::isAppUser(Authorization::getRoles()); - - if ($isAppUser || $isPrivilegedUser) { // Skip limits for app and console devs - return; - } - - $auths = $project->getAttribute('auths', []); - switch ($route->getLabel('auth.type', '')) { - case 'emailPassword': - if (($auths['emailPassword'] ?? true) === false) { - throw new Exception(Exception::USER_AUTH_METHOD_UNSUPPORTED, 'Email / Password authentication is disabled for this project'); - } - break; - - case 'magic-url': - if (($auths['usersAuthMagicURL'] ?? true) === false) { - throw new Exception(Exception::USER_AUTH_METHOD_UNSUPPORTED, 'Magic URL authentication is disabled for this project'); - } - break; - - case 'anonymous': - if (($auths['anonymous'] ?? true) === false) { - throw new Exception(Exception::USER_AUTH_METHOD_UNSUPPORTED, 'Anonymous authentication is disabled for this project'); - } - break; - - case 'phone': - if (($auths['phone'] ?? true) === false) { - throw new Exception(Exception::USER_AUTH_METHOD_UNSUPPORTED, 'Phone authentication is disabled for this project'); - } - break; - - case 'invites': - if (($auths['invites'] ?? true) === false) { - throw new Exception(Exception::USER_AUTH_METHOD_UNSUPPORTED, 'Invites authentication is disabled for this project'); - } - break; - - case 'jwt': - if (($auths['JWT'] ?? true) === false) { - throw new Exception(Exception::USER_AUTH_METHOD_UNSUPPORTED, 'JWT authentication is disabled for this project'); - } - break; - - case 'email-otp': - if (($auths['emailOTP'] ?? true) === false) { - throw new Exception(Exception::USER_AUTH_METHOD_UNSUPPORTED, 'Email OTP authentication is disabled for this project'); - } - break; - - default: - throw new Exception(Exception::USER_AUTH_METHOD_UNSUPPORTED, 'Unsupported authentication type: ' . $route->getLabel('auth.type', '')); - } - }); - /** * Limit user session * From f28f9df41cf2aaeeb381589c75f7558f26db4ab7 Mon Sep 17 00:00:00 2001 From: Jake Barnby Date: Tue, 13 Feb 2024 17:55:32 +1300 Subject: [PATCH 60/87] Update geodb --- .../dbip/dbip-country-lite-2023-01.mmdb | Bin 7002339 -> 0 bytes .../dbip/dbip-country-lite-2024-02.mmdb | Bin 0 -> 7465153 bytes app/init.php | 2 +- 3 files changed, 1 insertion(+), 1 deletion(-) delete mode 100644 app/assets/dbip/dbip-country-lite-2023-01.mmdb create mode 100644 app/assets/dbip/dbip-country-lite-2024-02.mmdb diff --git a/app/assets/dbip/dbip-country-lite-2023-01.mmdb b/app/assets/dbip/dbip-country-lite-2023-01.mmdb deleted file mode 100644 index dd98483fe5acbc18da51bee2ac06796602265f29..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7002339 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

r)N zt$9S6{?pPWLu-DUcbt!#H(LvuVMziv`YPNN&nrwivb2^n&wQC-N3;U1Rdr}9(vtogxiT%g`BQXsYc;do=H|QB8no7> zwI;2#X{|Nl;|yB%ij~}xmga)i`ndzG4QXvlYa?2l)7qHUrt)`BxsUj7mV1idLb#=H zD_ZXU&tbB+acJK|Y;8wt7h2oX+L2bF|2l-7Xze@_Q_QZk_N29&WwaXZPD>yEa=Uhz zd(pC4z_O?&wDy(TezYE-wLh&ZXdOW7Tv`XxI*Hanw2r1_`cKQmpVpzYj-++inBE<< z4tFT>2!~=c5ws-!Mba^rWEqd8WuJqWttp^&0<9BsMq|(PpVld*|EaW2qa~?tolffv z^~IUR!o&JS`ftWLIZ5k0T9?u~pVq~+O#f+JD7+{?Shc_<7XP1KxQy22BMhx8Y28Na zDq1(wGX19|@i*gI?OrEzqx1$DHwsJr&oA~{w}`yeq54kZ-?D}he&o!+!t+#1)Xqnp6(iG6r6ySdKZuMymX$@$Z_}k*M z2=XQ^z4_mf#o@f8>?Zy)-ZR6-{|B_bqxB)JPicKrrrH!h>yxq$pV9i7*5|aor1gdQ zgx2P?z8YnJW44i+0<3PO{6m^(*a(Y5hh!m-OFh z{h?5Q()x>*8qKwasqx>m$#WUHTX}8W{ArJ8{_XK;Pe{Aa|Dy73(|^m`o`klEIqgYl zPeyx6**g2$QxvV#miV__*fDu7!+c5KHvOkPt#CTp(_2#BN9`F!&P02D+B4Ihi}ozE zXA`L@z+FqWXVWZrbyRl>WC(|82_^ue|{6Qvcfv(Oy`d(*MF?G1{-v z{uk{fXzTkgF0Z>XYA;E9f7(mQe`(rl(q4x4^0b!~vz!&-Hn;d`uRwcMkt@<(iT27P zt03B%0(2csdo}s2E?mR%y6g1zTC{hfy*BNQXs=_WwbHt@P5foAPkRHk|AzVCl)W+S zt(3Zna8ufw$=KY+WZRzqp{-BAxFBY4t<-IV+d7o7op5`hO#!rbbg1|{)83o*E+Tg| z(o%O5?oN9TTiCSs6z-MJn6mdNJ@=)(Uv4Yf0kn^&eIV_l6yYG+(*O1$v=66!sCil? z4>QA^xmMN@w2!o1x7pZ}{+rLyNouciG2?dxdYN&9-2MBDUV#*MUZqJ69En}xSnlDn(fzO6KF z*X|v~orLyXYNfkrKSKK+XFG+VeJ}0%O8b5>4+tNm{gC`0&QoPSDtycsYj8dPlZ#>d zN!m}T8c)-9$M}rZ!7BVLZ7u%W&lgRRUox~cJG5Vv&r8CWX}@B*^69Mo8XY$t{*TV= zw4MHcLHiBb0qu&Ms}9G`@A{%fyDp<4^c>3Y&6xEe+9BB5XQTkF?D& zhfZEe+FjZo((ciIn|7b}koJIfW(V#(3$c2W_FH)bLw5(P?Ih@Z+V9eSFMsAC*Dgi2 z@4w6Vi1uf+Kc@YuV`zU;G>g?FAJv~*G&^@(SN=}>E83>^w7;e;{Vy8)JK8_d{$5Ex z2!FJUZp$a5_RqBcEB=?9r~NDK-`t?JT^q)K(3yhvpLBA0cSZa~2ikv|Lw=;L+>TY- zy1O$Tor&p;PiI2M(3zmX)19-O zvBGJJ%6F!tGb^3x>C8fB2J^8JXQVTe)x0zF$Wi3=q%&LYqk7IkXInaR(pg!#=Att< z9aqFWbQYl_{qLCm)0tnmfY9`x&O$=df7^2L?<^|PJ^?0UaXL%USwi-b<|badOVe3K zhV;L)oTXaW<>{;-V?{bz{JZOp{I{ykDs)z-v#L@}{B5%aS%c0dbk?M^5uLT@Y$%7d z>6H54S(nawBG(sgU>WnvnIgi*#uRnl)NHHCW^^`}u|>&jNk`K}XKV4M|G8Y#*^bUp zbhf9n51k$8>?{Y&y&zdF+Y&aNUQ{+-=r?;+gNp^Uxg>}_^_>D1Ymj_b$$%GCYk za{!$KWgH|l{g-iwP*XsW{ct)*h&3N>q&bNE8MY$Ks;UYR0 z=Oi7|e>#_zSuUsZBAqMf+)C$4I@c=oD&f_1t}!>a*+{sK&W&_T|COpK!1$ZAdo!I| za?e7SI=9hzh|cYF?xu4G9eo9?b7$dG#Jq>jeRS?MGJnvkbHAcJAbhZBQY+AXSb z6*^AvUse3q3jh28n9l3AYxSwniRo17)alel3Zm1X6VUOL*Uz2HETKr70u&*k)1uQH z@uAbE)0Iz$j=ujW&$5PnI&Lrw=)6fMliSep=00|SHVe>syKMh=>3l@zJvtwVf4_|L z;YcnzAJh3%sh=2GoTQ)SHk~i%d`0KWQT|_(j-m67vV2SGboe_uf6@7#&YyICpz~uf zzjS`ebJ6*kj`Y7{`cLOq;cs+)HwP#0Ch32a`l-Xod2{}o6!T9d{$^;7NXH``zbGi3 zfOJBe!qSOyM)oA6Qz+x4!pVf1H1laIosx7a(y1Mv7j4x@$CA36`O}cjKsv1@S&7pL zr?*}A!$dk`$3=HyPv<9Zf26Vso zrSA9Nsf*`H(iKT<-#KKI!VDCz7r~dNAplq}!3MMY@>^b`6ZANg_Cf$`(vY*-%Fy_xDsp-FbYziRVOQFEyLU?4ry47XXwN&nMxNY6FKow@nRo1Ra4 zA?XDLDSy(7NG~S6jP#OnSYBFmgvGy{^ok;~9qCncUAtXP`WNXnr1~6fdM)X7xQ~jO z!}X*$klsOhBk8TAH<8|K>TR{U#p1YisZ&??%UyaK>Fv(2d$8{MJ-w6ke$u;0@3CcS zdUyU)FX_Fc_qmr~6t`;Ke-hINNFO5AUjTxA3*JWcBc!jAK1%wGihGRoandJcKVd~% z9iAe6I=9`fGf1B$eUbDz(qi#X>fBx!?W2q@k-kj&%4nYSHPVpOHGYlsbR zZ0rBhu9Nzt4N@;>Mvyef-AE(S7HRBuNfT0c^T%p9f~4)-CQV7-CGC>FP1++JD9b-@ zfgsID3;id3Q>nTN(6iH|S^!vQy+`^j>HDM~iXzM(w_kO3F%HGW@5V1 z{O%-{S!qmOC|h?*x>M7gD$i?2)Ez^2db(p3VH)AIw!-gD_s4t9f@O zy0g)pIgdbh7G;?=KWe(O)18~{9A)a9bWQwivzYUg{Jf?A{B&2Ny8zv#=`KijF}e%U zHQA@TaM3bdn;>k6-rQ(AF1jAl$GBZay2+-Nby% z-jwcUMUu6~7IgQZyCvOS=x!y4t%cjr-GT15WtVLya(joyShwyd+)22zkwyGn>6-Y{ zwTWOzXjQs?kjZnqx-1%{plV+_d2=<(mjRlL3EFydobO@=^i47Lv3Vs z4=WbfW^4W5JyM5!lApZ$s;fI8=HO>|AAl+B#x(Kh?5Xv8+x5Iy(?i+M{ zx)r(&x~BhhYjo>2>p4%Ip0)t%+9iOrC7>JA4e3VtxojA{M>jENm&^30Mei)SZMt93 z?a=*{Zc4YO;N3hX-9FuS>1rbAW^~`8Tk3zeeEz@twz5e4^ZPvA_r$y}{DAI9bWQ(l zb8}_)W4fQ1?VQWjplj=Yx}TTjeo1ddx?je{WoR6VV&5$kiL4 zp6Nfm2}k)%Om8ZBCjRs^5%ea@Q|V1kZwkena+Lqn^k$$pM*e#K$1+YsZ(4ayC!Bti zzpel2&15SaGi(Z=C;ji~5}@E`7e5ERIq5Ay&-9<(-1HWrH;-)l1U$X@g!2pCYnL3e zphM>%+b#s;ya>HT^T9)JF?#mQlK92V!Hu7u>A#qzgi8yT5iToSPAL8Ft>A3;&=kFu z=p9RMWqNzlTZP{C^j4*}9=+9^gZx()u0d~2`vZ#|!dmp!wkP*`>y*s8=4{OR^tPb4 zf!sDU()>4~x3T>@&+JWvn+i9hw|UOnfAf1=I#T>r^tLV@;_YoiZ`;z|&Kx>t(%XUF z?(}w)^G;>1o$2jj=WlP8?` zb*|X1MX1uN$*7l1gPx~2{;2wd^fH&7UPLdZ*Qb}z>)GR=y(YbuBD94aVJhr8EdKT2 zo)J~)^af_QJ088E0={XxR+I8qV6)#5^DaHl0+OXSqrId%wv3 zRrs4jdHy~s@}Ek|OZiLo--dmJ<2bY|{qZb|8ROHRfc|9kCzONM|NV(&Pa-t^|0jN5 zn%SR1NmB}^5>71~<4|Fz(eAYLccMQX{gvoXPk%o8Gnj+bXGZ!n(Vv69iN6@>f8X?< z{%pe8Ey*cTe@-)upNsz7MNjoL1@z~&BsV1b^V463{sQzDqrYJ3zYzU$@!wyBexd)S z_UdlMTwJ(>a7p1(^q0;{Da%@xzQn&T@$autC}e*{=dT*BOn*b=U4{Ot^lc$ce>M6h z{<7Dgzh;?hEir3bk{z9iKmGM=*NpXr8`!QL*GBZW60@;T`rnuS_cs%>Ieq>9+aLA& zZ+~kgZR1eJw!-b`Z$Eb8GwJW(P|S`F#q3P~Ec(09KZyRWj#TPy^mnJfkL*3@+wZ@! z_Y&^yuw?cXv!8H(;Q_(}9qJelrhfwcLqr}*U)tV3jQ-(DJwkY78SSV%mz<9l9wR)K z{&8xP<41aj{)zM@`~8#h?D9NCcq;wVbabbe$9o3-Gjm(~*>XEac&_j~hceEme?gh+ zLi!h#_Qft$c`xPdjp<*;@Cy2uYeZeaAfbOHgGCkLD*9K`cl~<}{hP(OzW}%ny^j9% zZdc3=^ly}*DZr8DaEq8*>Ayn%Hu`sH_x9qZQ~yqP3xfV#^k1TXx03D=-b?=p`u90o zyZ6(7ptK(p^N{di;Un}PRauV-?f$38XWL*EtsF8x0Jp?j}2{edtm-f`W3 zlm6Rc-pU!-Cf73FqyHKG_vwG4-4BEx(*H;m`#5(ioj)y&&*^_f{|owGI)6u&yorC# z(Epafc=W%c?;81g`ajeEp-lRb{!h8>kiKioKk5G>Tl(KO{ipxC@Q;z0xk3Lg2IJ8G zn*n){f**|gPt3vi3?^nU0fUJcOz8NLB#Swigu!HvVPI2$jL8|8^8c@!>A!W~U<`vf z8H{Bxt+Lw`AbvUqGs>8r!3=qy=Ez_s1~V&Z78@;tS%tF+XBW=l(BfF?Tny%8FgF9c z=fhy0B9u#YXT)HB1`C*{*$Wm)W-qMDEMiG+vy6)|*ouKO*46If4D1#VgC!X($6%?_ zZD|I}DDSd4V`$B?JcAV&NW%xF{|r`Qu(FI*7_81Zu-H^dX3{3gWN60|pKQQrk8-vXmY$0RIoN+INXRtMcQy6T+ zK$1Jymce!m4rH*sJa=HQ7XuT220ICNX0SVhT^Q`fU{{M%Udfgf-a~GCmb-iB^^T9qz8V~)q=SvmPv^m*3{GZnnE1mPnA$Tqg29pIBR2+`AO=U5 zS)~7iV;LOB;3WAU&)@_GCz`)oGi%vgU{T7c3_=E{X7C_` za~NF4;9M)q`12T?U)mQixUkG+kAO0`Sa^x>QggG)y9U3R!4)E%{$J1FDoZl|s~KEV zM!1&2b-7(KH^}Ek2GV~;6LSlLTN&KV;5O~vUi#m`;Lg&v--4aZ;2txqtb2v`F}T0< zd7$)ph=Ki*%Rs+A3?7mFCT+e?R z^8$kx8NABirPBFj2Cw9{p;gkR00y>xP(g24WXoG&P-P(fAJoLug$;8k^7;&dV%M@n zB_HP`gC^N(3|eIF+-#FMHFNs^4uh1zn+&?8f6o~V`oaN&jDaowEmg?iEe3DfTGvl) zoPXo`?p+4|W$+$@@09C(1|Kl^h{1>doAF}?pGbM^6+jF=vs5$e{ttsM7dT7>GKPNKN$R4?rI7c*c70Qf09kWVB{qFi^1Py z6sg%bR!TOma6BVzcYHJQtIlk~B5XD>+00~m>GD*2jyIcuY{py}3M^vILbe2%7XR67WQ&m5;-72|TN!3^lFcJy zF0#38nddh5-mq+5viZf&H|9rsB^ucRWDC0G+1ME?WcK4P*}`^@#cl2dq}ig1xfq%C zPF^dr#mnPbQmIRkEp17zSjcRxLeOCv$aJ zgX}i4HOVBundXknrU0^a$kr_**d+kj`eYlBZ9%pn*`{P0nTlo`lWk&SQlhGsv`+w# zZEmD^vMtHB5xEuF);X!&ZOu04?JT?NYdf?Z$aW;#jm-3413CYok4a!*_mYL zkex+#w!I?BwT5dGckenom+U;-b*~n2yn9X{yMXLsvJ1&BvS0t*UufMwE3FwXA-mLa zxjS-dPqNF&t|PmG>}s+r$*!^ncSXCmth-C>>>9Fb?S`a#hpLO?UcZ)IPj(a84P-Z( zr;FpB4|n%1vzy6oaksVYx7s{HadzBJW^zh)2icuuFX^D}BGdXmyNB#WrQS<+AK4RR z(tq=Rfb2mfJtTZs^?xJ}PWGtC$H*QpinF7W_-9)GXSV()dq()I@;+DQeV)uJN%q1> zURNvUDd(3**}4SC^b>$Zd!6AjWN(oDPUcS1kgQ79AghtpEqflsp>>=`<||-eNlpff z_z{_F#y(j>)+1}mr)8-oGHs!~1&GZ41x(hpUxZy}DL&ai{u$Y?WJ9v@=1=w(*=J;L zlf6gwPB{qQEsgidJ|WZMKl@M-wEoZjcm1E0>;LR?vad9rzaT3v0kr!y*|##jDIdgWKYO&3WgIgG^uAeF~dn1PU>tMw0XM?Z8|6xse7K*D+&wz?tKx8W zhFbhP(%nULzq1VIVmL3uxf#x5Pf9r6ZSINs;e6)cHg}CMv`YYn3knxvxUfCD>;5%X zq)PvXiz(F|{*nwAXSjsTChi~NZjNyG#)nHWT-q4-xzmC47Xso`ADjqw-jzA+*-Jea9iPa!tI4SIMhMy#Bdie zJLgPU?rseCWVk!SJ#u~o8QK(}Ec-A#mf^k(57DmaKg0bQ9^eew2QoZJr5v1Rk$ot` zqZuB?@F<3d%k2p9M~?FOxBIY{OUfCB$CSo#49{SAJj2r%p1{z=UlC3cO8keXIFg}> z|ELJ3=eu%qy?hqK^JM>js?GxHa-!$sKNg3Vgwvd}Ch8z*RV(GH^AGWf{1Jfp-|VR(G=pt~0z|1|$PF==;?NZqzpm4cx@QLk!%^ zz=I6j!oULz+-l?bHU@6jGfrNr@|OGq988n}~zyNtNo@E*f^4et{);{K5nxJs+8 zzTZg>8F-k1=NNc|fhQSwl!3S??C^I6 z{*cBp@TcKlhJPFWpW#1-{|bt{qSV!xfW|OYZ%im?oQY^mY@A69CpDa`EH!!xrOOaW zf^GbdhQ9yJ((h;*Q)}Nf#Nd21M$i~#ha>f|!^X6R(-}^0ID_GgG-fhlW(L#O7=?=A|(^jk#&ep^v~d=A1y=kmZV^QyQDm*pkNPG`5hra^wQN5@~EjW9$ENwzVKgWOksj zz1A*stD4%8#!h-DL+hz^wfS-~HthXx8phpd*n55&yPNPHH1^cE4MkgHBJ#)5*w+;I zGu+>L@BkV|&^VCBAv6x6ad6c;QkS;tP#TBRI7}0QOy~`>DHF7e0rl!g!=v;qG4ESyf`4E0~ei8bHG z+u1ZOG2$E==Z>6C2H1Ht&R0)FQU~N18W+&G$V^?Rb&0y3LG~7CjliWeZlrOU313d* zT9drO@Jhq046io4Mo^z0Zd^x0UX&`IO?l1uHz;3jUp8){@i2{>Y1~EQ78~=oO42j` zZ?k%Dr*Q|3J2iCD3i-)Btj66I`Fm*GXOj2Uk-XmyAD|%*|Hzt3LM_k#*ei%NAdk@a z+-iT6#$z;|qVYJ5C)6u(MunfOiKl72Ov4@%Z9Hp5`u{H@o~I#%WCoGfw?NRaSwM5k zD>UAs@oFvk8jaWWm06894Byn3Wr-0(8gHBKJ2WK!e?UVo0cgBmju4|iRAFU)MC0R{ z{)EP-rubROG5QM{Khcmr>eBd%Mw7L; zJ_z65|E!H2Yd!e0mHtv|$w~2>aemkJK;sX?KMnuV5hdNB{QtvQlEyzc)6@7DX9Ny7 zQ{qfeokY$soC$Fz!I?Z((%G;l`ZOlSOQNBlaux+GPo;tV+R;LK?BOolTXj>55Re`l6z^g6TQ%!M;M&YU=N zsAFQp5{R0TGu@ec$8Ac_S!Z`+KX&j-K!C4MxS*=$xk2ZFBrIlC#XGNSJ>C=624#n9I=O7%* z|IPt82da!@b+I7%**O^J5J{3FhhMC&YM>6oITA<4)e%RT~zEmTx#N{S=1|tvK@hrwp(Z=XRVs zH0L{a>Tp%gT{w3eNB{qeb8pF4)YI*LbKn7-2Q?=+n*VVg#(8AqLdR)WN?+(mcns%5 zoX2sV(1S-)?@axBi^&fvqXSZ30jG;Sm2_}q$OUFZM<9-` zbxGz?AM`DtIFX)5>Z;~{oTgz5r>$br`x@{LP8X-Aqt1-uNc=M!&$*xx1y0|H!J6}< z9sXoE7DwOzhVx5(B1qN0)%5QoBeeDPpW1g)wL0@R&i~=AgY!?x#Q7H&@j*RzC%_$M z#DutW;ZB4*1MbAQ|HGXGSJO4_q_}1Nx2&t2DR8IMF;gZPcPiWwxWjRkgFAJ}*DCaI zB<^%ZOj~oNSAj}*M%>w~bSB)Hac41lR9!l&5+-T<*$wBwopU_q+_;P5&Vws&dz0$s z#hp(}m7c$@aY5Wga2Kli3oD_`U$o{dR!c5{yFBiaxXa)!RhKSZmdYXSvWClPky=;* zcQxDH`UgzU=m z|2npHG`bt%Zmd0SOLQG_?xu#D;ciZF5$+ZQr{ZpjFZ5P;Z{Ti?`x)*wxQFR~|J`kI zrIzh=hdKHRcL&^kaCgMr9e1Y@a*^)ttgAA27u~6Lchx&z@}fw0H{B3WVh`NCareaC zOB0K{X;Aq6Z#D19|M=W}aSy@OPXOcYk9$D1B`({-u6_j!_aNMZ^@X=0|IPNehpLfp zClbURjeEFmEy|0k+#_)B#y!#;J_`2^+@o#4HTFSW!_gdVm zarNV0%B=X;shH3j+Z%9i#7x4#?z6bhOV{H*rvpG*A*g-&BJL}=FPU#ID_?$6wYn;! z>owfhl_UGBg3?CM$JI*!+_&^=#jd{p8TTE-cX8j-a4F|~!w(EUH2etnV{4KA1pxO` zwI;$!e~ugDeu4X?URI=%uVkpZxY`}K-&l3xxs2HFMhuDr->aDV@B{8ZN!Q_$Zvm`h zj(Ij3eQl;132;N)NK2(5^08?hdkLPL9ZlTda9c9`aND>&+>SNBYk|@?)#Ik-XNLO| zZjSq-{&~SIaOE5y)PF{N^^2O70U$rkGh=b>6HD&TxWDKyvyrAv)+F#do^;9|c+=qi zX$|=c_irr~F>ROH!TksKUp)I(y9eF`c$4A{)4uj5G?f4U3O%vmB!U`GL1j*6IJw~z zhEw8Mz)LadBX2m~)LLoT3*HFrCT}F(9C*{>&4f1{-VAutYojEmiA&y$N=xdKn0Pbe z&5Ab)Zx(Yq)BScydfse!`tXm=q_%#>n-gyVyt(k^#hV*%9^Gq|@hmcug}nLj<`)lD zU3y27s<$BC!gvdnmFgb8w+P;%RfJ_I%38=<9B&i6CGgh5TM}<69R{K<(eswZTLy1s z?J{p!yydiwN-vMMLfu$>|1;i7TBNOB1#eBfRgJltaaOM-*C=HKM^3Oc-r9KUNkxNXgsq8(JY9AhfElO8IuGu|#Wy{i(@y2jt#a1T7Y|Lg5lni9m@ z2k#lYeetfv+Yj%2y#4Wx$2$P;P;35ycn4{2_YTH8qD7>S~c|qf*7LLV}&urK*(=DJ{{q!mw zd1vCChj$jSDMyUr9XIATNU~VU>mE~;oXTR15!W!Ws*1I-HLaU&RO2glDka) z7VRdD^KB}YOH6LJ(A}XvEB`LM2k`F3yGJXMX;jtk#k)@rb!6VJe(E@X5btrb`4Ha2 zc#q;eqDG`tEUUm{RkYQ@6Q=tl-cxu_t0@tab4_FNtfp@7IlPzfp10BX0^WDZ zI~t9b@m|GyMGvK?)X&%OUe}7G`7-lPG>9}t+fqP#oQ?Y`psAyc*HMmyMLdz!g4e?vYc5Hsvk_xOH^&>qEAaXfG+ne*BkD)IpGGcxn(RjE zSW;_0xo`zT2uBCtD*|Yj`IPj{tg!eE0#Q5M( zB+DE83Gj#M&333#l7=64@%qUj%<8{6+B> zlfKZD>o1PKJpK~+%UZjZ)CHlx6#mjiEF-9`6IA|kO33`>uVC?6Q9~!jwbGUGSJ7HD zq^s&u!I%5LFW|4PDZSEK6MqBzweZ))UmIUfd<~Q=($vCw`0Hy!WEjY>(Z+6wzd8O! z_?zKxEHN?WCQ=LjrYb2_i=@0q%ijWjYYUoO0&Jy4Vp&jBWbpgj;_r*U9sZv9+vD$! zzXSem_&b`)PKLJr_jfURS5=gs4GH7yp@(vU%i6}@%Q$=E@1vizkiL`WWF$ngiu3ow z-yi>Y`~&ch8X>!9{(<-hSu_sDw?F*)hu|NofvWmt9sJSwhwJ&}A7QBXf3-I?&PQ8~ z$KW4ZIUq}MUq1|I5jz2Y4E~Au=gIKHKMDV29fwMvVtA_IY51qBit^9EKeMLKGS1of z=hU2Yg(Ecn`6GV+Sx1OQ?}9S3;a{kYmHQq3#RMnYXc1>FC6I<+hCdena{Tx3ufV?< z|4RHD@UOC1U5%_g{A;ucIy|n$zpflAiW1}>dM0)w{!J=lk;j)I^eFzV`1j)9W&*e4 z--UliDTA+<02ZISYtB72=RW)gg~q?%1RkjQ58+FT9@a|bXX+;Q82&5xkK;d&{{;SX z_)p?LgZ~u%(<&)FQlbv*XZ29dQ&HDGl0p8m8F>+3H-B`IuRUmsfB#kdH}PM?e*^z@ z-3F0iDW|zvz<&$>?Q+25YyLMo@2ajk|31El{{jB@_#fhbhW`=%r&jbazNM_P39?qv zp86dBJNz$9;7j~(@Fm(`%c0H`Qlp#{nxMYb?v}2!2;l#K-w+yqK#UmS;Jc!w0+o!9 z-@=#i6XS>Yk@7`YFQ&xL1iz{B<2Y@6IV(H(UFFM(Q&~>&C6kz>D(3hF{*U;5eB1n& z;K)z*bL7>;{!c2YC;QI?Q{w-EFKPT&{NKeI{%=~UZvTP*j}d=bZvPAaZ@q@qJTHHJ zT~O&#GC&DQHG#IBU>L!K1d|a6J#je{2__-1m;aP)wp+u%rg9*<~unxgI1Zxw_ORyrrd<4r8%ulcofqnv#z)mHpOGat1uqYz4 zvy59A!@;74iy4YbOAst;^pb{45iD&MmeE8cDuPB3EKjgPweZM~GMSYK)*x7!U=>aE zGPJbnRjs5>e)!V!u>_D)irlVjd zLwo*HitIEY*wvW35$s;e?_r!h3HGW^C5`Gn1fvP|CD>1Au`(?O``Z{h!0 zvK+x7hKFj#({Xs1pwi{iQ9I}ef+GozAvlWQXxVenKuKd|{HVN)4Y@M4r&xpI2~Mc# z6RlLYfV8t@>I_a%x89)1Y?Y_zkmhjYco~-0u@l= z!dmiT;%NykA-td9QbOsY%Lt{*E+>cyt{`}f;7Wq)39cfzhTv))x@E2it|hom$AfST z32q>GnBYc&dkAhK&}2?R4!FA}_@*2Y@Klg2*&E5R!S>Mg-*diqEh_0)I+dGEdn_&+5~?RbO=&{t`2VwE!cc2Ar0ptT$XTN!X*gjBV3ele!@ivZTl;<*)!Bj0K$beR%JZR z4XK@QF~Y^w4H?OT8iXYYbqk1aX+l~2s|78RaUL#5xEkT|R=R@WissBpMz2h`s;(!) zRqR?!CpbG?op4>NYYh`#lW;9HtF^C9xK3HG9j>Q*ZQc5s5_NLX%X7kw2yZ6bm~b<~ zO$awt6$!gDR_BgzbHbYlx3D&DNjREtE5ZW^wJ#onxHI7{l`}GUv~)MZJqUMKVUsuJp1S5&mAwh~QNBiIU&8$f_p8*!J&TwX9Y}bP z$scTJ`9D0A@UT)>2b)?uobW8dBM46-Jd*G@!lMX}B|Mt&7#-~r3TK(hzN`?!<8_Bb zCY105!V`z;B|KTpD*qJ1Qwh%?JdN=5N}z0oR(EDuJK@=cR}-E?coE^bgy)+x=ao|u z;TXaT32pta4vbYTjm*V_m#B=6K*|4C5K8{PylhKt`AWj8lv9R66t&)K2(Kl)!92W< z@Ol-lY~ENoDfv^*WgW4)>L9$8@IKv_2yfHvi12p9I|%R8JqqRAMR>On_ZZ%*eA(O( zl+}oip9fH}2MJ|pJw*7h22(1PTqJooe3bA{!p8_-wUhL5!Y8cbo+Nx$7h~a5gijMb zquD@)wC*#M!}2-8=LzlF)^a=Hi-dObH+-4!6+PYLn^3xQB5iq%Fd=-MutE3+q15{( z;roPd5x%Wg$6{I5tKmDE#6sBu5`0gmeoZVN5NhVPXna(yM#7JEH4=WJhf*ZjIQ)$8 zb3$paZ2_hK5`L+da^Y9DB(oeIena>z;SYr05q_^Nl298G4h$Uto%IYrsMS6`;66SA&mi(m?m81XvGU6{wAb*QB!v77bBD*ysih3yf|ALmlqlt;8Aew||GNMVk7V=TRFs~QXev{Ysobvb zqTxhStE9*XM?w^hAexD2B+>Ll(-KWr+R{4<}VM4bi>4C7BXCz zXb~d4@kg|%;bMX#WTb`f5iOyF7A-}z8qv~3D-tbZoMr1Gy#+wDJkbgzr{?SaKherW zvIV4`5a}&|nqHmAHvg5sCed1=MYMLUYo04-J)&KR)+gGTXanuXXhWinG}X%jKH6B% zu(fuFjI?MQBH8@6QB+=@NOI7a??AL8 z(N21HNcV}`(t|>1y}O!)-H1*g+MVbKqCJTAth!jvyJ#<>y@?JWvME5V?Q1soGu&UR zlW9FVkmyk3*c1>QOmv7=QRe(ervReSIxv(tymWx*NDJUmM8^^xtzpzsn*}8K$o@|x zW8-*CllEn-slvfQ;E(bI?dX0x)>)qL$`M%+sNQAXR+vPqI1pu zIXWz5!5p1Oq_cpg+-QtxT|jh^E|{YW1=Szz$BRpv=u)C9&BA3C?aPU-&<2W_o(oqI z#TL@5iLN1fh3HzM`-!e2xvkpi5?_+oaiA_eAw_2!$%Dt6C6+F2{ZB}(NiU#=xL&7 zhGdAID}{-kH}w|`Uo?El@MS?WB7S~B^cvAeM6VOQL-d9TylMEB;oGIK(YpCV^q%4S zbuAxQ(TC%SeQW}{$xQUAp?(FD=yO36{*uTsLWZlHINuZ5_unIXXhEa*U1d$RelXnu zL%Dvp(5Z||-_{v&(T(O*P=6OSPJ zKjJBg{vnpU{V(w_Vu)?m%ie3Mj>QvdMUnv|-^LRYPewcmv90{YJ#kpBIO55PZRbZ0 zC4s2c|A=)Ks5Y+S;lxuDPopPt*<_iL;*ly~iG_GN)0&?6N#YrZcO{-t&&qfv!bQQZ(v~*`3;FT(mUExkz85C8xwCrygBiv#GC1IQMyBPH4a-4Z>d*FvJonLZTQy2 zI}&e0ysgfsvXs(Jk@bH@EbD*49W)ba({>`>StBE z*rySnZp0bHXA_@Ee3nL4p1qX&YuXp*5TC30Uv6PMqg$8tBt;9h_Bf_?(V)MeN_s@7ySELV^5$fuQ~*fa+MJo-2`%%ud`SnS!`Q0&&}F>=6H9G4B%hh^3cP z;!MY$-LMdXxFG(SxUb9mc+j+dH2leMtf0yZY7>4T{?)X8GyJ_OQagXzIr|s!Kg53% z+m?}NmAgIhzuM9A?$&a&BomMfBbkI`LN%M{egetFWi2}Dl1WRNWHOS;m6j2rGE&lRh)@r zW|C2wHzemI`UnuotZG&dXH#oc6?2fxsR93Hdy=_G<|dg(i{vzv^U)GJ$$TX9%Z8XH zlSJ%@{f$W$B3YkgVUkry79m-ZWKojENfuK@YnNnE5`F)hdA=0MiX=;utU$7iX4hm{ zDI&4||7z2guM{O?Xp>hWSy{7(Sd$Y|1y&_llVmlcS0`CRi$p+jwc1&WWL=WAN!HPz z$r&enwX>e)D`}CO+Q|mS+0Y!5DZsA3RCg1S?MOBy*^*>45`FoD*|hgRn0>2sD-wx- zy#*q%S3pS9s@6&Lb|l%MJk+Yif;N9=lDkQE(e1=!SCTO#yOEqgBK!a1?H(kDTaWBX zvKPrdI;xYs)mtU@B{_^l?*fzTFKEO8B>M6nl7md~V8cTU4=ojq9@>F&r7LFk~R{fNzO~#KjM9m(r&P%RNP9!;lmE;sPB7qeZNwZ~6 zOHNl^xoVJ2v*b*Yvy`uc?QEUVl5`xt8Q2y)H;DHuo+u zyp%*Zmyujvg;d;A=dU!p%J6E#YXtQt**Lk5o}6vN!}!Rqg1gG{+3nuHpzQNykq#Tpq0K)qR;%0e4v$9 z_CHc@HNu~ed`DupgOkrlKG$5Q&VOOi_>$xs5*gU`$g4P6o}p^(TeYuEuq_}p^#h6S z|Bz@FGQuHojgVwzSM-T*hk*(h$2^Q_&Q6k${6!-9e=LdQ|BR$flIl7(=@@oN>?W7^ zAlHV1vKUKpl0sb7J)fknX4Qc~k{?NI{V&6>T%jdDTV1~x{%QgFjpPrK-_@EZ3Tj<; z2~gSjo8v#&XvX1((-!m2xh=1eq4(wv^=v^1xyZV8DsEuDep zjOvLTieqYdW}36o97S^$Jw1gl_ls51lD}!`)YF`U=A1Ma(#??OT-trjx%B~_<~%g# zrMUpj`Dogc|MEnQ{3I1i>Tc=-X&SfY!Za6Arm8PWb1@y0a?ezj<;}%uE}?y@^pb{4 z(OlY^FC4uEOmkVoG|yKYHtHpsD^2j|6*O0#V4=rou0sDVnyXsrYV@b3xjLPr zX|6%@NSbTX+|-KJqG>PxX_j{MpJ+7o{XaDAMVMTN-YqGAh3{&24IWTjOkJxIInF{~{*;uW9Z?(_ZG&+?nPsCa|mFZic%H z8ex9{YuY2A&Amz=Xzo*&?n`q&6WibL0Gfx;Jg_d+_y5p5SP#v4nupRnjOO9SA3a`+ zjwoel9z{z8By_*gJci~2CV4E)<7i$+^LUzP(L8~sF7;`iXm}FMlU3bnp?Rt?Pb)bz zPq)J}Xr5UL)cmuJe-6!aY3e;+n)V7fCC1Ra*fQ_hH&X}(JH6}2$Vi2emk4AOjq=7%)jr1`GNzeV%y zQj+F7WsSyv&+vUieJ`959~pj3^D~BW+CX><3jVJ``)(z79g{IyAZQA``wKDZtwMyB+>P3z~l#{g>h2 zhNhzO|JdQbf~wWB6=Q1{t$k=sNNXcn6VY0Z*2J`Cp*0DusWiK`CZ#o5ng3}`PD{6d zXiaIT3jnodvjeT+w5Fyt9WC2wX^k+Mk#*^`r6es||ErN1Xw67#l!?g}kZ@!#*9@9X zTC>txfYxlZbcIiAc3QUi-B1~GbG!}(~p*DTDlCaWyiC*Jgqg%=M`wJsBWwOD;chAD7OHF zvns9Cj96Vze=-NP)}*yQt+i;`ilVi))}k$1mzE}fJ*+so1w?DZ^3dpwX>Cf&@_*I* z&1mgKYjaw=)7pa8uC%tKwS#r>R-%7U^tmz$T?Nrk{)7qt^1!?W3 zbmh+;=EI)j`LnmuRq4JesVX)FwDzZU0Ih>*Y5u3B$zLBHR{9XbLzN?Qv2sS!x{8)f z1T9Pc$~=;m1Tj$U^SBq5gJX$&t=uhojKNUGLlv@Wkp zuQ2&5%Tiib)Beaf*U-9_ww!d=(R!cO^|T(Qbpx$CY28TcRtxe?hPvrT>lQU=ai*oW z9%$W8>yDCR2JfPEj}dn(Q{A|i)&nMaAFcaKrX4=0v|6zJAC-KB)(f;ArS&AO$E@h_ zTILBQROTsK&(eC@O6?Z#IDej_^?WIBl9v2iFVQN`nwO3FN^M7zKdskky`krVy78u+ z9d8-FP3v7_zEjKV{=cYL=?AnTS|8GKX?;ZN8(JUJvMtKiC$v5_#m@{sr}Y&r%l|FQ z|JDk%V{JDdzNIxl>pNPO`PGvj%1TQaT5_H`LmXOiE(f&y%80hY@_!YdnARYzgjTZ> zkd=0;MXPNYrbDZ%*BX^@k5+2@j8;J_AFq~vC8k;EM_T{V`ia(Ww8ql<#oV?jpt57P z0MwJ;#R4tK|GN28Iza0$T7T=I7M0`qpQ@;hMpd#?dji_SN?QGCPel7}+7r{>lJ+FD zXQVwT?I~qDg7##Flhd9;jmWFCru^PG|D!z>?P+Nbx5KFgM=o*$?P+L_FwV%5WAt=_ z@-P7H>1oeU(#D^O_R6$pro9a9QM4DJJqzvmY0pY~F50u{KepPl8_uDdSL)B4s;+!} z|0ivG9cX)AqvtD&hLHAx#$Sl`Vzd`Ftwm}(i&kQ4YH=%C!f;8$r3{xAR57h+S=!4P zvAp35hW7q{d7)@~C4J^u#a5xc7VTAOuR(h?+N)O>vRwJFBkf(SUv{Fsvl-k)jmTpgYJ9hnroFq#>_J<<|8DeNwD%rQa$l3*PdVzq z{+{?S;b)kDzVu|5uKE0!BSK#_S&} zsGr(tA4mK6k~aQ{w9lY@lF|0^e|dJgeG2VUjdPme>4N2}{AizPoU)B)8-0$Js-Nf5 zKCh&WKgRF^+Sk#((CCY-`4<~~3GFLsUuvAo3@&8a`zBu;C+uMm#EQH{x+ad*PuPe9{h|qW!c5N7w(fpEcCQzmys+Z_E(k z7Y$!BwC{hlUorYs!`B4$nfCVUbuYYW{I?9>HhjnMUBmYTZ9KeB`vc>ASaOX1*y`2w zKkZKqKcn5D{Wo#iVkT&u^M4;ubhEgRZ)37~vU{sEd9xj=ukyw!Zw6_Me7-l>$cpA04@4 zD@Fg%*2O;^hAb$*GprP*GZCHX=uAv!IGsu8OipJ~6PT z>_lf-I;)w$a&(rbv#QZ6&{@%RS2EO>e;R+4(nx(M`#&4gS%Z%Jw^tlklg?Turu#p} zS;tVG)>Cz(*Qc|A$!uu2QOP%Y6FOU)%%*fUEBSObr?Z8XZdr52`vgp98#>!s>2`+O z*D`jc(Alx9m(I>~4x_URo&C-Ju5@;zvp1dHO>2)@Yfn0Rm9+8qsnz$TvtLOoYD*8G zbD$BL{ORcC4;@|q8}m>VQ_g5QN6*yF zfzI^jWdo&FH*Ux8fZ-@0;+ublwv}e`@~&V}4k1WP#oJ zn9etJJ}EhLKBe;+oiFKpUUR;vZGKgA?ElM^=ik!#uIB3$K*x53Is>(qLno)>(rMH2 zOu#n`=)`owS~pUn8UP8MCLK-w${82)jwyBxdxj~UOvOx+PC<84I(<67(itrIbbh4s z6CF$Yow2o~<^M|SH@eXIosKyF2c5s@{5fP(2s*k2ByQ08#}5A;Dy2IC-HGT9D>-y0 z9OrF!V!D%*igoE^bSD>@?i6&VGGa=)n*a4zw!J%??$rO~jG#M`u5QK9oz`$Vy3^C0 zh3*WcB;6V5&Q#Mgo6M-%;H-4#GR|y}P_;)@vFTj@S#MV9}&x6{3Y?!Csj z)6iyz?%hV;BWPOp(S67`_ZvQ7_~1~zbae`#`-tJAC7^5=Vjx(QgZ0NTJvA0`x)Ig=zd7|O}g)z*jt8g8&>=O zbgTSN_kH7kAXq#35#5iC`HA7DLq&F|QvlsB=zeL0=6||h3+hkf`E5zl{f_SU^roZx z1KphNfJrv!HjQxTx^yGD9^Jq=ItA1|*c71FVr6O-$+&&UZi{Z4ZjWxKF71}ObW;-^ zFaLK7dXi)NbbqF+`Je8OwboB`E%{fT|3dd4y1&x>gYIv&j9vnm)}M6$HsUWWs+dE> zzx0M_X%Bi6s6c76HzB===}j~qXA*k4_%8(n=}k^=YI;)`J*A=Me|l5V8!p6V(wjx^N#FEaF|r?)!28R#uZZ$^6a(VK~$<@Vmp^hVK})#PWX=ghR2jlqmQF^HNE5MolEZo zdZ!ulM0zLDJB8lKDp~n(>Ui|&^vOOUt#K3(zB0$jf=xI^lqhhExjA*U1u`a8{SYVDr&tq z(X%N)>04^!x6!+c-tD!_9VV&y-)g*@-hK2e`Ky-B4#vOV#2zRQjedxprSaawcKC?l zqx2r5_awc?RZ=ZHQPykpQ-;--r;L7_aG&!P7k zz0c^qZenlHdyn3mM!!Yx9V6bZwRBRb>G$b7pjE80oU4Qr%LdOOWcvA634LaJn?_jzmz21fOJFSSn^LdR=&Mig>+NWw@Ei6J)LxO z(%nfl`IBx*x+CdUq}!5iO=?em+MOW1%acm}-(GJsmG^+s9V%Ljb|T%GbXUD+lggmsF9!q)>sSL;yth(b%3#2D1Vb(}b zCOwt(l<_z^L6p^zo6xTAke)?)De2jy7m%JqdLF4h|EW)=sn6$=j;WsitSnzh zda>TbPwgvUDsxHsoT}I-y^Qo~(#uJ&B)vkbvxn+QuhK`w>K$Rd@s~bC`V8sAq>qw5q9ehKlRifJq_ysG!zc7lE2{XE_M;Md3)t#?mh@H9 z=SW{BeV+71{bx%0g34=Wy;M0YZY%$l+RkgFZ<5L@;Oypa`bKT-EhQ?ZO$6z?R?B;& zKI!|UUz2`7`Wfkmq@R#}MEbD^s8;2V-v6!X&q==|{h~aqnf4+qjo3G&-;-MYPrs{- zDE|jihjf6{9{wCRT3k}^zjaBAI;0_KlQbetNMjYKRq7gBr0pReNV}vNspfxDUH{i& zIcYK8VZWqFHTjeNL@v!4OFkj#&t!X%{z4|n>Q}Piq`#5=BX&rCC;h{SKS}>4{cF5> z$B)v#WRsFXHX)ggD6(PWB(sUgEaztv5BXyI+1zB) zkj+Rof^0fd97#6qcv{nw&G28XnaE}%o0)7DvQee+Ql4zq@{nwHvN?q&(?@_xbuya* zlsS)Z$mS(mh-^MGI~}t5YuyEvs61SlY*DgB)Pi*Z*<$0-OOS0&wj|kVWJ{5)AX;Qg zlPyEG9NDtt*|Fqb*<8`YRw7%4Y~}G}RvnLCoos!wHOSUB;Wf$D($dO@b;#Bo?{K}6 zCfk5)6S57-HYVF>NMMK{+mvjx@ea2j+lFjQ;gD@bwsloh)v_(w9%S2*?PLPmlkGsZ zW9dUFNwzcDZe+WV?OO3o*W`B};*jlGd%ic>vt;{_T}HMq*@V)ubffe4j~&&b|~3l6~7FH${${PawOR?WV-%0JN6e~6*!jcc(UV4zB#57L9KNX z*|}sVlbuO+3fbvor;^plzv{0u#?w8^jGs+*&X5tac^=sXR&>7MnA-k@WEYcNG$f4t z-#@#wEG?O2my_K|b_LlDWLJ`1YZk5|yPE8pAw{d@Iz7}zU0?FaZX~}9f7{u`Os$aL{< zZGWRAO!6(Vcgfx+)8wxzRZqP~_JIk!U)ibnACY}a_A%M#R{9Cqr)2u@kE&PpzaaaH zOxOQ4=WDWWO1ifH9oY}UA+x^#C^0}*<$p4#5>~!P_7j;;)-w5kEF_D`Z1G=tm5??6 z>t~xRBkPb^+RwUmy_WwgKXbA{vVyG2{I!hc|C%04_7~aDWWSUBVh%|D|E&_JTTS){ z*`MQS{Y^drnK=Kisr*wGk=N^g89DhdWtN`g6OkWIJ~8>av>b0gM1nCIms6ypNm`<{N#2;kn0p+GV_ryVEp-OYt{PSN*5+y zl6(>J#mE;OvQNG^`4Xjkt+kYvs{N&F&a&jIkuOKSGWqi4D_ZFar4e#n|5p}NOD_S) zSFKA|C$|NEz6SZ4%B+RS*EY#@>RQ$#--2A%|KuAOZb-g~5gU%%|hiG2UX_-f%Y@*Bu6 zH~tmmy7NPRrPiXv)#TS2VSfQr&UNJ1SD`4cH}f0G?;^j6{8p2^nfw+Z^rx-9jr&gj3wKtfTKnDP50KwOejoY0%CBVZACG>J{9#jkXgua4wTF+9zhD(TPW}Y>Ge&Fv zCx43E@_*IpXN~!spb^j4(Rh*kBl4HX-z9&UT)N{G^4Cn}RTWmBZ3?Jb^d|Y+R{B<1 zYP8J)D*2u=wf6VPKOq0GlBsk*wxUmJnNRKTvr>lq3ks?FOA0wbzM`0o{A=<*$-g1* zkbg_=lYd7(U|Qdk+w-4gCeIt>uJN6+cgQ_8Ta^anP4bXDCXa?jvJm9S&>?w?e7yC4 z-X;H;yhq+APs#PMPx7pkCojfR933pDrlFX6$RCOk6w^_Rq_D+*T`$G-;~G-TNHL0Hrc#Sy=JASVp{N%B!lam;Vrhyw zDCV=nIVt8cVs46gDJ=Py9aQ#FF~7J+u>i%Q6bn);OtDba9OW;fbk&f>D3+vHoMMTg z+D&&UJ*=!PL$Nx=vJ@*(ELZX=mZw;OLT7<-it6gh6su6!;=ih5wYsh~DAuP~lfte7 z3Y`%|mtq|XUGr1aR{<4&1B#6)Hmqx`E&(VuG2u;>UrBCGaS6p16vt9*NwEjTRuq=f zi>)cPq1c{cTZ--UtQVE?3@Ub@*s(e+`5K&^DR!aIkH1S1#cmY452@(+TkJ`3FvVUJ z2T<%yu^+`g6qfmG;}n+vD+>pjor8vqP#i*W1jV5gqbaKVUsrc{DMoQ5#nBW;4QZK? zV`{PEC{Cj|-k2vCo=9;D#Yq$=molXy#i>e+Yx3z7XHc9+aVEt%6lYPKU6oeeo?EGF zOV6jckYWtQ1^<<~h~nb^)^aJueH52b+(dCX#kCYyhziA(6jxJRHJ$_44ACZV9mVxV z+(2>Te{J4OaXZB=R(h*yslnSy8Hzh7?l#Vy6nAN98GMzwhvMEL4#oWxn&BxPpm@-T zhYTMcPv%jIr;Pa+h3@}TJVEhfWwVOR(-hBBJVWv9cy-wnps{*^;w9lzyjTuPikHW; z|0+d7VG}{|I>l!cHhUItQhY@57R9?(sm%pNo&SsXC_bQgU+vTlq^M>A3d{e6=6?!J z{-q4X=M)1JUr>BwMPE{URhCkGUCvX+|CZuABfh8jq2ib8nWABQha#kKDSQgc|KwgX@NqHePh*@B^heS^fc~`f*P=fi{Uzv6Pk(;; zGti%%{){Fzli|#UqYP&;wDrH*pRI~je-7bW(VX<>GGgwUGY|cFYkEE<)LXj{=I3y(ANJ|&u&kDhgxz+`a99zi~i0vXBYar(%*yrZl*YH3ZTEI z$_$PFzFime_o2UUt-GJ8R8s)`1MTo2`bQgau;C$whZ-JcIGVmDfBHul9%(o(|I{%oK?tKyG(1TUwf9e{`KKEHG{e*D(lhB_PTwv8v{Ib~=$}LX zT>2N%Kac(x}7nw8NXUbX3>&C zO5A=h=74gl9(3p@^j+h7^g|JHcrQ|YuKZos(`j4qo3Dw zQHSvb`h)a;Gy%>3MvOK5+0gQT|5u}bGpwcn`hPMgY4$G$r=RQuC2xCnzYFgOo`GuARQF*q}WvokoV=FDPRvl`A;MMk}y!#Hy?X!(Dz%Kx=X z^D;P}3Cu5O!~zU1Xv9K>n*YbMwkU&(8Q+q>+FydfB~?c0r3{xgtnLCcxEzDWGPpd0 zJ2AKdgBvoqB7-Q{A~=kWpFzqwm00ta7RJ?X)QZ5 zxDSK7lpF?kHG$m>cV}=9BQ*arxR;?OfBmWMz6>79;C>~C!TlLLz+?`rIR`PQ$={fo z|4r*KI~-l}Z3-AXg25w=e-wkqFnDy?7RB=196XM}n;ATw!7&V;z~C7SYVtRglMGL0 z@RXW!Dub5%2T%Whs;&cEYNCstyD9rDC}6>Wf!#md{=BwLbA{@gQ}$NGJK=eu+6xpyXc`_9a+yp3UOlZ(-9{l9wzt1cy8 zhVIK5T+yRP_f_Z~N%CrRU&BECAKljxuP5F>yfH^R#V9g2DWl?>(R~ZLZ)bcfy6ry! z)w_2G$vcU6|^L2W8=rk z;K&o(fvHh7qn1knS|~a z8N8&7*%XwYO!5_Uzsle>%_{#oy5F$zn`G?2|LJ}Q-BZ#1uFbxO?)NEB^JnlO@gw3C z;>S61{hx67DZ0Nw_h(A#T%V)+3mbol?ypFGt<0Qtev9t!$bWB@KX5pWINd1GJp+|K z=>7@aO?3Z^?h3kpLHD23%tZIE41UXz!SBRb=>Eenw#i@Q|0e!}?te`d-Lui%{akZU!zYULG*^ zQ7JQ^|5xTxzR=HOHS>F5SLkcz`4kdC6 zC~n}UWONHaWph-v$OFc@1)#DeD(e4vLk_n=h0b5umc#8(*_@O9zi@374?5qjwT+HBZFg!_V2$cCvbS8&7Q>J$*7#d;8e?>ra`gDGf+8` z*|Uge6VD-@OFS<}2It$73sJd}%tgeDiMj=#G6EHvf8{a`>Hn20Oks|wT!qR=RIbjm z6kJ2R7M1HPb3H0Iki1cuVv(azxdRpJ|CO65xP^Et@itU$SN)ulJIUWgyqkCr@m}QL zJI%IS&jYAVLghhJ*GA`a^e6&3Y= zRMh+#%+f%o_>;rGh&2DoKblhUzr@)(RAmL#zNl1DoePy3s={o5N{C8~O2lDZ#ai1y zrD@}qU0cGG3K-}XfJ&xVMWLydifq+E)wQvQs!y5vKLh(Gz*;*us`FT${$K5d>U@;V zZ~5M+_R-kf$?5{A4nlQ7RQsd45S0rP`w55 z*@`7w6SqNC&EH%jne9>CK^eVoJEA&_!A_Rh8CBgf^gmtgZm1rH>h7rSkLn&&?n&Is zXi(i7RrP;V_a*M9JnsyL!-)r=dZ6+uI|$W-860AnLp3OF=HW~oK|GRp6sq+9>Msu!Y4^RJ$a>RG6&|5L160IH{}+B;v7#C+%(sA=jRP{Ft*xV)k!hf+{*P+QDq{}01yplBHN0L+4XBk-lR{Z5 zq2}1wMa{FZKj&I%T{(%`T&T^>U>@SUR@qAf?L0qf%b?a9wM8k=EdaH?s4c)?L8AIU zgN0F3|7Wb<|G;1|;^M^q!~r=nSOT>r87xIyTKS@CAZlx&HVCyLOf8Gra+=lImq(5M zUt5vG!NiqJmTO*_jLyzrRn%6q@#?6pVPpIGPi<|=)*-HIv+JR@zKu6PZ9`@^Ql?np z#;9F@+9s$SirS{A?Sk57sBKHx=BRDK;D4&uHE&7Wib(&jZDadvXEob1y8~)FT4orT zolx6ZnPT2uQQHr--K=JJ)b_CPo~Z4`lD$#e7qxv%iDFT^KeNM$2iU3uQ9Fo?`agq1 zto|_6jz{fq%OAn)k*FQT;AqPq!{M>09j8n&*9oYdLHu>6f0=x@X*)YQ^ZyNP%+YPT@BRRzl5M!cPPhh67g z9NwKHgL_a@|7Uz3YV?1t)qe{_@*&hFpf(z{v8X*v<`JuZl*7k}V~CFvpU9CbRR1UQ z6p>p%?P=7W;ZV(=!FV$l&|Q2PnBpL??U4L`M+rb_?hq4pbs zeyIJ9S{=1ns71&h=%&~EC-E=T{zdKYJ`-{`_$NpG1|f}S>mQ8dfB91DCRR|ZGN=)Q z92tcAtnEC`*Q0Ya5CF9%YAt=Rvd$8t#;-G~CFc7TNv2$6rgP=rfD{OVc@XgX-}1*U z1djfbl7No@3q1WJj=)DyX3#~POaG=r`MEX7|Gim|>wD=x0nNXtIiEC`55fEhdKdR3 z|Ce|HzXC4ki(rBLf3G9Z?|(zEkp8cB4HhoG(=1p7^$fwHi1tCS7{Wma7DuoSg8urA zOu+#CcH&?OPC@?Rdg5{OxH%xN4B7(sPRzslvkARy+ zK>rW)_lV@G8kk?JV08r6|ARFVtYtN8Tfw>r9zw7lf{PHS|0CD{!R`z;M6eNpEf5Ul zaAV>oIp(zpHbt-*navHu_A1Sc|}{|6@{IF-Xwa+Ny`S0lIr z!Ik>@$$vxjrFfNz5nO}dTK!ip`9BxQ|I5FkKe!&j%?NHlFcQIy`ENvDnWorl7J^X- zZqnZok_c`=a5wTt4h450xDCPWeI|X@XXdGW#=qKU)(QyjL~s`$Nz=Q}xY>PPS_#2D z2<}I4FM|92t9$^#ga1{IM(_uMhY`Gq;1L8bBX|_S^ZaFhj5r3t<9+f+%>0ti@&tmh z2%bUkBvVi2NPZmgX_cuyDJDfoBIRq08!|V$PCiR*1B2zCSc*(S~%wzzO@u(uLXb}vBS`d54ySCXPm##~KTeP$$n+@~Kdjkz$W;AG z{7?|O2ulbZ{fgs{&&(eKst-yFJ%qkKuQUG>$o#*2GYY#9E`)F{g!3bu8(}Ym^B|np zeDlBVMEQeO!~8+OcKu;*gbN_-gRt*^t|HXue--Nw7e+V$VLybq;V*)4(f?daxH!W8 z|5<;y1j3~eE{Sld|6av12nYUm{mUY}5aDtNPeHhR{!52&1%x@Sh;V&`gAoovxRUNc z`Crktk43mL!c}ybe@SDwYTvo{)Sq3r8gX^v8VJ|a4J%wrWtv@^xDIh$;(9q!vjM`5 z5pIZZqdv7^`Ij8_ox6r`sGVyQgqu;u@Bh>pH%GWdUaRv`k8n$byCU2Qp&B^Ctr4pE zGv1cC9m4JPH5u+e+>tnpxD#>b9JM4zccV+UY{egH>i^iM5ns&4@h-iDBe|L_jW7yk+rp`QN{ z-h=Q#g!kI)eI)Nk_<%C}`I31E;b^OQ7@=T5a_Grj_PW*z%w*cDtYlJ@`{08B72*1r!`EM%)dj3cFLyiol5vL>kk--e* zi{GrD5#}%WUzE|3nZ#ca{$>TgcZmOB_D_U=DXIFuiT@z{SDB(`H=?BwRuJWuTSeGH zSVI`;Uu1^?!cdJjKm32-Agm+IZNH%pG07b}xADS_V}yD0q{EX_gjtUpBZB@ZeI$rV z+BR~CF3}_U#4@of$6U{NZbZEi&4Z{HBK=N)!q21m5Y7J|50CmFS`blRL<{`K$)kl3 zEs1DheUSI(A)gAolxv>c*A zh?f1&UJxyhXoa4=4AF{u-|{D0MJpj%1hEB|K~i&jOndVUp%R?~^{y*OF}(VF>f z?6`GnBiaJdI*2wxv@W6z5Uq!3eZ4>2n)N1VhYiivjA$sLO%ZL3DF2r~lX`9iqRkL( zo^Q=P+Zm$&A=(bnmWZ}Nv=ySQ^$9_CYeuxK{uJ`3sZRe9(e{XjA=&}aj{jZ%PKb8a zA9}uq{M8lhf@oKLokY74cPH*a+>^K$aqk@U<)_Mh5#5hyKScK;+8@z9h=%LYH#z{( zb%+i`bS9#M5UHgjIv5fCU*kg&>G>bg;Y9U+M0)ryUe(djh)zOuj53-!7LoctwgHgVQUz3(?)0<>M0c z+?&s0{uCv;&;D>9K>ZEQ^&p~$P|shDqY>2*J&b4yqDK&oNA#!`>V0?&(HKNeAyV^4 z^aOFN&GI84V?NP1L{BrT{*UNc)fA}-h+aeV93r)ML=zG5^PlJiu6dG`=|@0hUe-XB zlM&^QmCvv1Rik12I-++GnM-(+GMazH&wrwKOcUGTJw){Xi2fg`|0DXyWZCUwM1LWg zifB5bPY`i)iF6A<#N8qK9MKnu_?b^+{XhCzJMikL{1%bE5n!CVqV@l1n$aN2fAxN4 zb_SxK82oJYx&ie$I@4Gy4xB`oAh?BkDF9L=|3I)y^KE zp4(}NdTzoI3+t!@QA71w+eFktln46#&xn#@qI^0Xrie1rxzN`I^%Cm7*4EVlP6J^=yeT6{cO}X zM*U#aH$i=CDmNu=hWh4KzXj_5v+# zjQXLdAH&pPs2|SY2-RqZBZ=HE>PIVCtl?Pl$Dz*ifBghass2RNPckvrZ2iA}D(cq% z>-7Kn8K|GhlCxA_v^@v)J5WCt^$|>+hx+*p)c+Y=$hH>|FD71MYcECp8fq>>{c;9Z z5Y_w{T!s48CT8KasNY2XI^y-H-@xET;z-m-<$*Tm+DP6^yan}J8Qi72TJpUI}59JKW(Zq*|j}RZtk)6k&{u1hsqy8M~PoVxZ z>SHyfvp-3Eia5@!7Ipf6o&K+y@u*Kw{hVu=Nd5DuzrbJ;k>+2_sQ!=oi?kr4(iiTe;4(sB;O;xPyB%RA?hD7n35xdk8QV4Q2(0Dr>Lv> zGv@if{sro4{-}SYeDRw3#%jJrUHu>R@ADMu_QU@|HXZdJQU49~8CL%j>em13zp!v7 z>c5(-ZT>s?S;Rk3|C7OA#J_ViG7kSmeKzWK#<~TdULjVAHPnMVU>p*oj@kz5O`B~o z8>5~uFeRzU>UA|BZ2gXw0LX8}p(uKN`LC9eQIvJ+9=-)3~<@?65By3sAoxaiN|p8vW21fW{)^ z7e%8#8jG1eXy_K8@tn3xprQWHDV8EGZL(+#L}LgVgV0zJjb*K7IcoS3P$Pf;uFFGX zFmWX_q+n$<)?h$yY;X%`tVWq`0Zgrl#<~pFLSt=9u9GtwYuojR>k~InQt!h?XzYf@ zP&9TxV`DV7Ah`(|n^LwJk^Wz-Eic&yjV&qLinw)-rW?id|HgKVw>LZ*JEE~G#lz6x zHqqFbf?bTD2hrFajYHAc1C4#r(5-=0dlC00?vo>H_e0}AH1@Z{;b zrVr!8&^X+d9D&BsXdFrXQ606%P)` zp5L6)dit0EjWf}>2#vGQI1i1psX2#uZjTa;^VvcDAB_t;X1tipC1_lR#t2qj+Ec~h z?+L*r^zT|>dOJ$f{*C!c@#V{YJ$W+F63p>Zq4H=&{C&-fNAqyOur z-Hyf`HhZVd-i^j&H10uT92)nc@dz69|Hl1jJcPyrZ1tcKGak(~sQKFtkD~De8jmqM z#*&ZQiPZnmp!qk{{H@?=G$x_(3>wd&@hoe{6DJq}W14^Cd3I3$??}Cf2Hzkw)c*~S z#w%#NkH)KLyp0CUzwtU6ZxjN(18=hJTUP&$NulvB`S&cJ8`tM(e2B(WG(JLu=AYkl z?eMYD7*q5hACZWFfiw`gvQ#&>A;M&o-l0yKU=;}#M<5x8PK;t*2ekaZ{0>*!GUiyE7{$IRc{zapL#%yZ3JM=XF zMy+F=A(|yLA~aeQ*U@OOC;h+Z7L!TP$k6DyKyCr%J~W}VO)(Rp>7Y3enz{dXq3JQ@ z6U#-Qiu<5B1kJu^E`#O*XfB54f@m&`=0gAN*^lMi z0-B53CX1uFWG+LqKXCwYiK0-~uoSD7w)%l+E|2CQJ6x9f<%}N96)0YjdL31rMY5vXC&@7yvV(t#jHElQR|4sFOG`TM{*R$CT(A*47J^Z7&5ti<^1IhtFd$*rNO0(%KtvBTEHZ94SZp?Mja+oO3jnmeGmADTO&xhI;#(A*Wx zojAqL#9cbN?Z!U46Zh!owwH;~r2jY7|Iysn6r#C5nunt~9Ldw=9Oq( zhvro_bu~M13uqQw0Gjmw<_$$#oqZ&lccVE9&0EmCi6u98WN$_D4m5A$q_>;Sin^XV ziFXyGwz>z+d(nIVP5OWH{vuWAAEf>vL!$XGnopzo2%3+Y>Ck)(&9P{z|D*Z1C7-Z* z`hQdXAI))wWc&=8FQEA>niJ4e|L;gWM*+8h=JSR}bCL~Sv{Sr{R(_3>(OL)1SI}&s z`6`+}p!ph_AEWs?n(w3e2AXf9N%L5q-3} z(CYAiEu0H2YyMg_FIs)jqW`z_{EwEJKU(}?leZVGzNRx;3ox}HvDgC8>W9`qv=%{Y z3A7ePYcVTcoNMS$9AHSsOA?o2lckBv!NiiTI->;BU#SS_h%ECtCZXwHI3ZqDAv>sreUTUG09wP=ClCzfJ7A&uKLw|9 zsQ!=E>4s!{CR!Jubr$2Z(K-*UbEuzl{^#&~+wj7U+KbV;2CYlbx*RQ zvzo`znuyjDXpKW_EK^U~lx_iJouAENaZHE*N!9$N2^f44`&;rql742jl9)K4L4 z5C3|xpP*Gi>r=FTM(Z=QzC-JCD!)MMYX)DU^_6L&s3qSJbqk>2d$fK;>j#q4h{am~ z#xtn-DMzdS1+7_V%_Lu#KU%+`^}7+U>JPO3LF-S(e-Z!g$g2ONHJjMo(YcD)L92#V zZs`HDAzBTzB2$Z2y%6hFsQ;tYvZ(|y&@w;MlqvOpqem>-Emr?8^s$S09>nzj*hf4U z;<8r7T|HGC&TaMcvO_P#y%E#@WA*={p%(U`zOU6UhA1rFtr5YWe_jPhV=hf{ol-mcpx={h{fkWjF(5e8sZfY4?)cHe>|8S zR_dr-naWj&dj2;l#H%A-8!-?6@tUk!tD|Zi#OotomsRU^RBh0q*$DBLh=(HHjO806 z-h}#&^MAZK8J_=ReJPq&h_^z#BjT+QZ%4s4h_~&?Zf|A97Jzsd;$0E%#EEt$cAWp? z-4O4Acz08!s6YBWiF+9m@ji&pMZ7QKqY>|i_%Ou#BR+_&h7%7!T$sP@pj!aqLx_i( zK2#o#nCJhP{vRJzq*Qzi;!_bHi}*yuH2>I|e|$oR>?HP7|3_@k|M6*v^|X(e=l@vG z|5~CNZUOPxjP)%5W#=Kj1o8QZFEC2P>i>u@V)o*qTpNx+d^O@rnY|40m548==87H- zhwA^-TtmE;#|D0reBictG9*HDhz$hg7hpRUs{s{5Sh{qwm1@R+@Z$*4B;@c44 zg;>oW@g2lFJNn$sS?)1y8Q+KaAqMv&et`N1JM^QO>iGO8eiZRjh#wxj=6Sw}80V0uaAX)5C6rBeG7nO9@7>H&;QAMBcD&;Ll&|BDhG7Fz(4m65EC zWECW9AmRBx(eppcS2ubjJpU(a73F&Q>mXSl2|xTv*6ZnvWCIrJ`QJ7fisT?98zb2n z$tFm)Mxy?YWHTiBGB&reEs7Fd+m<`ING?Zm3H2j5#ihi{ ziivdUE0A1`qB%^HYO@&O`-eSqysJtD? zT}agbIlR*-k4*yT?LoyD@{YV}~@&LsTB6%3eLwPNd(WZl<4j(Z?B=rAe43e=( z3jas)gqelPCy_i=4E2sZjpRA<&mhtBKa%mp2_2e=WS*z&1>&R}jR46@NIpUGGLjFF zOh)oL5}yB)S6QX!f2({0$va5+`A_ne;gP&;vJ}5de2=JG0O$G;$wyW^g(*G%BbjPQ z#-AdYiR3dR-y``P$=67}Apa$C&iNn7H|+2&@jEjG;~$XBpm-Wl-vS`{F-O(tZTX4# zGf}qy3VuaWm_L%=nVLoZ58|IixwiTn?d6dCgZ4Z~{zZ~EoQJQS=BPjP}C-g86rv1E+fg%cC@4oq7X|t7W%fURc(*xn_6nR(4LE= zn!nMbJuljequmSbzG&0`+w)W0+X{3GAhQ74{m@>J@j}FfjfU|e?7S#(v5x-z(OwGe z0pyo3dbD*5V3qnm+RLCl2i;B15=WtJ&0p`yEok3?_N`3a zmLt2}ZcFau@GheIzZKkz_CsjjNB(}+K44Q18X4N7nSI#ukD&diiK!oh_M2!wj`nkC zKY{i*w8v7fhkvx6>QFw7_IR|PF$~(pM?h$I_6GKx&@&9m+6o8KWz0caW>j&{uES9K)!}{ z3+;e$h;|+AIsQ*^gV?k^W3+RtPe>Lw2ko@zobvpiigrs&hGgs_od>ChbZ(?-{z%K( zA?+g0WtuCR7i~H((!NN0Q8^#d-bmH|i-ua*$0`><+7BuHKc)Yt9sZv#!VdKRw8Q_? z{z%tEIsoYkNS8o55UDl)bg8^E(xr*Z^h}C$5YlDYjpzS#`C>78Eh{2j1?gbJAmtX2 z>K1@>Wzzwvnm6sej&(shw;fRyH+7Ur*dE#Hv1kq%Y4 zG1ASEZeoXZ{u$X13Z#c4JsRl|OdV;-qio4Bd4Tj-;&B~SCm=l?>51e|LV60)lTEFn zUihg8Z>>iE}p4;q0Fht@-Ocq4}r${3rdYXLh9O|47yR8GMJd!~D}}NdG`O9qG?Vi^D(C z8C0tObCzF_{)TiW$zKhrsBQTcAhlaS`X|zVS)%@r^lzl<|7L3HXA}7rAT724q&1{1 zqyf^A-kF>KE#$?MG%2WQ!wP)XrtM z09`8;FeNpV9oY4)f0ju^atAQ~$TMDGeBB0FHtjCw@} z6+@l(5YEfD0NG)7_9KuTn`@9AiA>EO+0n#fjDWHFKeFSI(e|?wij-EJWH0R$WS1a2 z71`Oy)c=v4j_iyM<(bINDu$Xp2iXP4)c=v4M?BxOVyxzmj2l6AaYxk%WY;3Q6xo%? zE~8TYpW-Ww4B1s2UQL|i|H#z*kzJ2$B(fV=tLAU2I2=X1$&koyLG}c)Tan$5>^5X~ zA*286g72X6PNQVZkASj!IK{oh`%GtK4No2+0AK5r$$8+4Fxkf!&@XPRucH!uSPbuOgeo_(f!s8N7r{{lAdu zI$yE+*O0x5>~%YQqtNJWe9Oeh-Vq40cai;s>^)>(B6}a%N60>~f)8!^6l9+w`#2vW zn@Uvw@96ni9wYmls9OLvUm^Pr+1GaX4N1ENWZzT#1G4GJrp@W5Q|K0eY=$9`{fz8i zWWON$o%~E>>i@`oGo2aFLiQK3KPc$<{3rXH**X4?Y&NnwGMax@K^7pZvZ`jLQ`FgY z7eH3L1wht7me1Hk79(r@SD6$;U6P*vk*WU+kYk<_lmv?l9KqZISK#%O3w%MDVl{t( ze*R;!f_VfB2<9c|AG`hM{4eMu=-W}XprD^X&;Nos=YPQ>?6WA*n!nE2U$BN? zfM7Yn5`tv}OR`q|U!eYPnhOT9c90z|Yf^&c1uF?wpkDo7Fu0>?h+tKL`oCZmQ>&=M z)rhMbQn03ABf(k%J?abACaxp+kN*qQ{{)7`79iLmN5iw#P69pZ3w9RlLT1;F?CyfS1ba}h zXHTJEZz|RQ1^agB_ZJ)|7%n(UaDd=2!GVH<1=jreY7`v8hKCjnwaMXZbp-LqqM@$p zXo32_K+pe1FF0Osy5I!C$$}HvsxW`Xr%->Y(F;zqRc8p!5u8cQS;VtVit)LuI*)k1 zsbzej;BLW1g6jkq3$74cBDhpAqNDaQDlhM-x{}OQ0yTg3SN|7W+o8E$aEn0C|AHF@ zqXZ*+da^|QUvRS_1-A;+?FIS~kl=R1v;0otU8cF<9>L>+dj$_td7t2Z3LY>5#t#V| z5saol&;Pbo{a^4Haf~4uKOq<|7|Zxc!PA0b3lNMeWV$Nd0tC;RhJp!#7X;6doJf4$ zq!_FJ3tl9?R5Vd$vgBW0j8_ET3tkm`EO<@uw%~Ot-(c;VrjOt)Qz&>x@PR-N{{lVy z3*I*x#viiwBjOZO!g#9SE5Rp%&jg=#=+*oMYW{-a!ym?l{|nUr1?vBT?@XcK2f^=x zX@Z~0PZ#{isu{$eaztW~2PicUjx$=|(>Phn_L{;=_MI&pI=avgA9fI3l8ADVZr4 zyILh4(f?0R=@L=@7nz$lPfu2)m&n2*^NI9jlldv=P3%+1bfN`B79=_6{4df^WN}t4 zB0~R{#flQ0t3UMvM3xd+!mLwd$)29fE+eJ6L$WW0D z$?M_Y@*9h6DzZsWH#SlKr*aFCT}1M`w1dc&BHNPOinuj#n;ccF%h-;%y{Tn(M>2Z; z7ukupv&o9&=l{K^*-d13ruML@Vha%2TV#KceJInzzsP<$TG?<`9Y8$Lkc$C5uzQ z7Xd@7L#0HPrS;mMwBl0+_o)CFT zWGtt6(g+lF@#93EHnlw{GG62jkqII%iaf^-6GdJSndASgon%^xyd?6fh@SsNCR_3q z(@^9!c2NJfsW(O56M0J+y{NZY_>RcC9h&z=rigrCOFk6&$ix(XEb^(yRF;3zQ^nzD zMBM_Y{8A(k`AXzBk*`I*C;5%Yx0HQnWQ>0hnISTbg6Tv({M$Z1iTon+bB~@SGl{=i z&F>;==_0d4{t)?FME#%4UqvguUTy*MuSqf6%{~=kl~^-bkx(QSi9{MA>i?#XNYe_6 zw*VrElw5Ypr%0ugTYjdkO6aNLutanWDJAuPtt$D%vXr_EL)qL?I$cWhNNEcx%`2r9 zq|{4Fi%DrdDJ?|({8H*IrM~&b(o@C41&F!@P`0oQ`f<33l+^$8n6kyCw3L+S|D^#G zsQ*hz&;Pb?X(iLooq-cokIRpDV(lt`LfqHHMC2j#Fy9KEJMplg^j#TvXq{d(gZ0zV@sZ8lkujBl<5DZiBg)B3#9Zs@r9z5 zPWK}9FIoL$DZM47SETg1lwM`(HIrie2Fu?p%C+I!QhHxX?=Y+9e+u3+0x5mK;fEdi zDN_1gN*_z<3n|h6OX~kp`cz8l{MtcR^|@{JC9_{i=^H71ZAh#6R!SZIU;05x(`?mr zDg7)Z^?xbNApT@hjCuYq&1C1o{2Bi)ZvNw#CC-~t`a_)jm*`J%a^w0-97jrjOQ|WP zf20&hNzGqMv!zs(Qn%?WrAkg}tdrI(8B!UMtXr~p3m~PIlrpAbDJ4{LOD&~Et9%wm z{Xc&Ppfac9{O`EpEGUjAPA_qMapn@IOih=Wh4I|1orgGYN6-1h=`GIu9m+n`^d+kK zo0K>UiPK*k^?z~tiL;nEi?H*eJ+&MzZuJ99tvK8QoF&Css-xR7;%p_(KylU*XOK9n ziLN@9b!Y!$|7+KWD_*MVx)a*_GsO;_NBT?&S9{dPS9S3vh}pKpgtN zqy8_>{>0&`EP5U&&W++6B+l9594yX>;v6E*k>VW6Sq`I~=I_ige{qfy=U8!$Hhsj= zEr3dzzoX_aj&285aFRHui*qu0n!j@@^~HxjD%0hiAhp4 z8!65c;*1jKE^%%W=QeTF|HYyCJH_E&^;&qlICn66rzvNAw>S@qqvwAP`4+&rPn`S3 zd7zMSI&mHn=TUJ+v(>|94dU3h0M279A463Cw}P?aJS)zV;yh)Uanw9*hjt5a#*6c! zI1|K~D9&>xo1-{1e@D$<9Ni9V;Y;GYDvqB2nVL+r=YQul4qqp#|6AEx;^x1(Z;O+6 zdq6gPA56#3{_5GWCB3x&>&gi&Xy?r)g9A`42UT z(TJ0ZyP!CkxO0gMam(V0mbfKxJ#n2v=DJ0p>zja@E{#n?cW!a#7gzmX`@8cJdlBa| zO&IrPA-4dRTYy_^0pczsZhvtX7FQi!+e1%p&g6 z;w~%hGIlsn+(9O0Tb}>j;`}deu?2`bSlq+JT}j++#T_Eq9&}<>@ zR^sxP#VyQVt8~(>iQAYa;%+DI9^!5|Fe~D0pboL?qu4EyNk{0`Cr`Kh`I%^ z;hy5s5G*C+;y;c5G3iYdf9|Pq3+z#63ma;=>=NPGtu@|BHKiQK<2m;$A53S>m22 z?%7nHW1F07Wa6IBstbCmD7#49i^Uxw?j>`0ZFs4zx?J2F#l1pY^?7lx6j%LU+^c)^ z;$BPUIts2QcKE+LQrtVm9VPCq;@-sU%{j8<7SlxB+c>z;yxqpbK>&w?~bQM)lU-l6>(oA{}MIU|J}((Chn`^zA3Jr z|HXZs_=YKG{1$89?&$fhxSxpop12>0OaFKE^B-~5|837HtooSz)DHeralaP#GiE;* z_lu&fmVZg{S4J%EH`J*Ai~Ak%dy`^3P27gK)5ZNu+#kjLP23sO|0M1&;{M#DqK)yh z;<@6s#B;=r#m&T3^B1>gy3~lpcaFbfOt#mu$Xb6c!NkTTaYSPUcABLtza1O^nU?Rvyymg zh&M#MRmEGG^RCh}FNfR$Ji7&GD{cYaTH>wUqZDsl@$!pZPrRYxt#4=H7U1a?Al^ns zEZ)YPcN6h86Hoo$h^g6Jye*2MPPC&gQy)guw*XWgDc*_V9VOmz;_3NcJnR2n;s4?tPi4pX-#dwn`oDNQ z|9hvJhGb3`?;P>Y5btd9&NNetcUF&pwdaa=k$61+d*`$20^*$WztM|#iTI9qBgA`M zyi3JUTwi>K#*Q!XC;-=qI~9scj#CEk7F(f_@Bj9$EZZPoppagP6s_mFtciZ@!k$HjY? z+1&rfi1(pq)Pv)d}PnndW4xc7IV@UDFi}!+f6Ii9^fAJ>TRIvq! zH%Yw7;=RbM`ai`ln|Z~1g~L~guNji@8{+*U-kaimD&AY-z0dNu#e0X@cZu(H=syr| zig-N#dvnhJ;(bizRHB~$?E*d%Z@PG&i}$s7Us&=>%JeM&r~5{{@5TF;jUGX;% z-xGfc@qO`oi(eLh9`U=1{{CFr*|+}htN)YfMVyZ~e~vjXejo7{5x=ka3yZ%1QwtIo zG6Kf^de$TUqT=@#U;SVF#XB_W|7IxulHv~$e<|^o7hla^{AI)+B>uo2JPJAP zR{RyjUy=I3#FY%scxCa|pnetcS0%F=arF+(n&Ph`{#ulE_`km{mFp1;|7X0R_7;_t**{a^fDh&F&-qA>!{V{(goOpZ@O;7ylsfxheQ_ z&i^d8TY!J4_{WHU82cYC{!!u|LBWwd{W;VvfSO~8$B{g~M*$ z&;QzagbKdSUjvs}<>lhj|9$$u&-1^}Euc_dEB<&c@;Vk?Fa8bUKf=y8ia%2Pd&M6m zKJDGVN&K5_=Ub?`m8e^Q`66HObqf&xPU2m}yT!jp1#>j_iBJFc>Hn&KQ2d9)A6;nl z5+1e<9~FO`_%wf2juHQH(@lJC0sh#0D1LsQ_55!-i2t;tcReYZR{g?6*@zwmrpG;K$H>=`Mw*c{9C%!>^ zQ~bB`z^?oq@joKZEx>0lKf6-@&6W|=YRj-4zk-;Rm88dkmm2J`E#iLFMgy$U3^2z3yI&9 za+mlmDGRePF(KySlmY!euPqnPe^;_xlCqNrj9n>v41CL!=iHO>TujX^<$0vso3U;I zQtm~Zk2rsh#nqMjNVzY`1&9lFq!yO)ic;<;<;A4Di1ONJQ6rG@;!++c<^Gl*!0ZxI zUQ)_SGhWInmob5&b{Hh(Wf?4IndLcLL5KOhDi48}n~ycU_YrM!+|*pvQWrvIyc18O#u@to8C5JZ=ZN_m1&N_nE~^E{O=NO=+i`hQvdU;is^@?Phs}s{CPT3 zo+{-ZrTmGMzmW2$QvRH&&x%4mi$}^|O8MLTSv*qyO3GhL`J2vX@kseQDgPkl?|Yub zBjssQo~}m}`z#(Q&yaF%xj#ucl=9C~{$0wyNcq?NQ9e?hsn3n-HH-0Y`T)o8@(Z6O z<-er-hm`-!AKh3ylX1q!QvO@YLHIFIQdUGqwpn!ou$vwVK(%A54j+hq=WU45l%0qI&yy43%rYa!yo z#C}BU|6PmbL#}FZ^8IzFB?F{u2^%j-rtp8p%ShKi=^83sgQRO^GRsPr`oDCk`7>C7 zxFT_|bgjgI{%;pAUHRQu_5W0z1=J%&^Y!_m@rh0*G70Ydaak63cZbE@-QC?C7I%ji zhlR!6b#ZrJ96tD_Zck^!InTML`qr)LPM++oPIe(=79=wVnYqZ!IrvT}iRUIG^Uusn zW&twuxra<<{v>O$J((jsIg-pm#*el6nEZmsEMkEjX;I-~!o`J4kXcfJ?#7v=6)%&Z z@3tJ>r^qZ%?hrC7kolC%iexq?vyzl6li7^SDt1rKnE#VmE%~BDGOJq$TdqN7O)?vh zS<5qPlUYZpbv+~h&#dov+|ctIks0MDyi_(nbK8>&e_e z<|Z;Xx~xukv+3=qx1^*gZzJ50IE5UPQo_CD0FOqqi z%u8fmCnNK>&aaSp)if5{TL2%wA?8itI5KZJ-k<*+GVhZ4P}$@){J!TuFqxh0Bc(nT ze&R^QpOH;oB%hN#ip&>ek0A4<_^-(BO6F^_iCKL^c49K$ivNzxUu3=~^NW^02!AB= zlY;RHD)@Qm}H-!;dnZNDW zCM*BXb_aTCdSv^?m}W}hRAi@CFpcqP=jq5UOLls)3y__G?3`rH{3V--?92*gA)7qv zS$&C3jU*;JyRvh*rQ*4Sa~os(&O>%y1@j5#H$L5W1lh&NE+~Gaa3RZD)xu;KQLw0E zwAbQ3y9C)KeY_M|^Z(?BY&rtSE=P70+2zTuCVmCsie%;g*_E|iB|!zNT40Z5b+YS{ zT|?xWLht|CwY6Nwom{c}KfAu-4TLrV$ZnLNx@}B$J29J(-BiJ5WVceVxo``iMu6?U zwU*lmw@uLPMRt3Ot@93Kcl7a2Vs<9Gi!tf*xtqw{g?o@afb5=%_Y!JMWcN|LuW-Kv z73^<;o#8;w93=i=vWIx)P_l>l_;3r7O_MR5J<`5xQB#}j(PWPydu;Lrjw(Nn?D6(} zj>*L)`MK{QvL}+8hU`h?rY3u`G^da~)t~<~vagXno$PgF&memN*)#o)XGwfE*>gN| zu9)+L=NoC~zmV+ZWJi0=MPx7bv5f$-mkRCv?|F@YtVTfgDzfJPWUujA^M7@|p6pn% zH;}!D?2TmqC)rKHn}xTKz1754ewzj9FXeVIcL?t!dza_$b{ewxDs`Xme&HCQ`9IkQ z6Z9p?6ZkyYhsi!k_7P>x{1wRmvyYQ~VxSkV5s-bFto+{^J}dsYfsE`6WM35dl98r) znd~bHUNt6tAg`1Cf$SS(za;x6*^kJM^ZK{QzAgPbWZx(It}l5nEw^9I2MI~`Lzj~H zW8o)cKQ)={YhM9O_H(jd7?bY%mCt@n_8ZB*by>3Ck^O#1`6Ic+lYb(YB|Dz%KV*L< z`v=)ye23)a`kRk`A1eGaiOK#&_HUoH^XM@DlAGMJxrxY`|C5`T+@uO7Nj162TwrK| zDad8ghnYN_T#j5oPNN}Lkf10mnSSs(%$3Q>{Bu=hYnHWc^&w42t|>Ai7n5r#ZhK{i zT-U{R@?1~ZzEI|$o653o$48c|Jh(TxX~~(rkeiO&^yHQyHv_r3$jwM@HgYqW-m){3 znU|4Xi^ zom-OIL1*5PT=H9!`R8_4t@%H>U4`cV3U(*AhXV6|1vUbFD~*8MzT)>2?k_w*c%bkg z;lT;&7>80!p4G!BCQsVo21 zLUNqYlcyc$ByCs!bm6<;|8xRU^CwE6$ZsNPhJx=a!au1SoFZg>UyH9w(uNtGJeFdo~Vw%E@04Y_a0{h;_ea^JhQhF0<;xt~m#?)5Xdzoh(y+^@!4 z2O9z8ekb>bfFj;;w@{^O#DYno5$=e7Z zpLK1;=gG_e^XC6zN<-N)`3m_^e3iWUKl!>Ttxsb}sS%KmBxsRuJB^lI^3#xyjj{3` zdHH|d{9k>h5>D;9k)M|Q%u-G#oL)GCa7Lj!6Q_Y?P)+!auNq&Fw zbCF+z{M_V6lAp%}c9MC8dJB-BpS;Z9_z~n6Oq$WEOt;nxM zenawW8*k(~a3;C_d??HYW z@;i~=)_B`-JM!E6cn2{%+S2ygS<797yBcZw-N^55v3?_BYy^h~u2a-RN{6XXs8$Z~xR(pu>Q1XY7Ka%|6+Wm-hi}cw$iu}<--4g#lnf!6S z!}02H0{Ig?V}JiE@)XaUs^w|I)5)JlfOeDETMEJVyR;*GkGKeaTb4|1;#xc{u9&NNj@e2 znS#&Bf2H6Hp&tS1Uf+;6dnf-b`R^2bFSK!>z`p-o!Fck&EBIOXi||+BZ|Q@zK7Ww^ zQ{-Rd|4xD=Mc!KZKL1iEP?(6qUSfNmm7Sf!96p|t!dw*Q zwxu0d{-16=AB9CI%&(FKgd=>_f)qwlSeU{>?f`~q)uI%Zq9Fe-$p5Xa`9Fmvy+;0D zSjKl-mcnxCzr154UXj9f6jq|JmQpKISjFpCrLdYv^M49!cz#U_Y@@X)Y^2mW6xQ|G z^~A{k3+De6Hnf!KM^TWy7dED#aZr%|7tH^q+}xjB{%^HgiQk&SHeR!>*KAMWXbL+} z*q6eN6n3Yulf*ll(ze@0xGRO-9HZyQKB)D04i_rYvKM((-a1Vvs zjj@y8A-q#~7lpeWuM^%Y()^#o{f?(FhJu;D?>3ggixeKB@H7Q8e~BNV@F;~RC_JV< z6Z~JxCxzbs3(xqfXDN99FFa4-1; zzY~6+pu|6FX#>JlY5BA87oq&W@Ee8SO=FMZ58fe%bYN8OH&ppb|{u8HpB-M%L*zKYZR;L z;gcuR#Odch6hkYw=1q!`f|h667MR%lpJMF!9!2wiic@-KDho_G4aE@@r=>V6#p!%@ zdWmPCI3vYb6wgF)=Hc^*oQ>k#6!p6<&hBgHpg5j~GVxGlvEC~l_Z zh7>g>ildUHn2jlJqQLy$9ZAd0DQ=;_`+spOEw>h?9|2L^E?J7%Ubq9r9X+!X#hpd& z;ut;Z-6%dqad(Q>QQU*#sTB95cpSyOC>~64Z|V1;D8n!AOL4#SNcQ~5|BDAobCC5+ zpW8zy9!c>~@rMZy7alRtXn7RHqZJ$@Jl3*mLh*PPQ#?T_`G4^wiYI&i6u;ML6fdH9 zI>qxSn)yqArtmC^XHz`KNIUJhE-y0-9+(bAKyaJ{GXx?5&N;K+r`}B7>ajN zyi3g8p1H>YQ{G4MVT$)FJH}^q|1Ul$axBG%(xaOG5wCfa;$sp#?wKdFeA1Ste466- z6rZ8^ImKrwen9a#imyrYJjE9jyh!n7iZ2cNtMCG6lMNJGk^Or z{SOrXrT8Po-zm!ft><{v{w(~3qRhYen=271^Dq9X_%Gq#LU*Kpk~lqiX(CEfP{Np` zbIC>krAa86`BR!qIC+BhlbolNaWSQ=QaMU_1qDha1w|7$hc5+wmx@wVO7~K#QQDGH zozfhX8kAu zNJ)DXGl`kmlvX>7a8^pQc_z`!Zn5)<(wvkQrDXn3X>Lj*D9z)Q^8eC&l;%&wlolB5 zBJqNhMk-jy>lfB?5nGymF-q%ETAb2Kl$M~hETtvAaw$qn`*<0zUoHtKEiYU_xS~rb zUYXMBlvYu^s^clG<{!lx;@70K4yCoU``QyuYlqS2|JHwfDL0_B38f9KkC7V*M^W0? zF~04llr~dpbKw?)ETyd|oknSEN;@mHjc{8^+c^!T?J4ab())jDCrjC3cA<0#rCllQ zM`<@{b{FnJX>Uq<`rY^P`h9$`uTN3&Uh2NMd@t??+D*@yf3j4K*=UKT!Hk{P#oMepL1+t4g1F zGk?i`@yu_O{-yN0@ph^|D9Qgze|hF_@k#0*V_ctLB7!0T1XEZxm{>T8a8d&Ef5nqK zz2Xc(*7G?rd4hs5X-^G;ARvec$^>-+`}~K%?*9a}w3WpTmD~NFz|22Q*-|4QXcKe@ zx@pQvVy7YK6D&(GCBcj;pNe2=1=9#MAcE z|5P&M|G}IDixA93FuziB6PW)K%qyHP!J(5cKrn(}B*B6ynLI7F=|Thx|5v%F$`>P8 zoM0)%OAw?V{-|VWrzcp(wIW!KU_*lCC0>DGH3Ip+9cCqhl}&H4MnK?4K(IQ&It23n zU`?-Ci(qYw)8E>{W+w@(6_XzZFeuDQ?aoX)8 zf-ea^CeSB5!6yWts$Bjb$p8P-{3`-8d4jJAIaH<5IjI#W{EdMXd|J@T+o`Lc#lxLKFCgFt7e<+*(Q=UyY z^a3c)LHPp8b5c(1Yc9%bQ=Xgh(v;_+ycp$qDKA8MKFT8~>;7LJy8qh)v=KmgWO_W? zVqtBuh|v6Bg2jEH&;QFd0w^!#swgi*d1cDWQeKg=ef~pvdEp99U})q@gC*rvD6dL+ z4e_f{UfuOKv@_TUpuCnNDX&9$6ymT`)*HhK{lx6dyr@RB@UDRYp;ZDMx(?UDvuIjd%JFVj> z?@4)oDfgnhH|2diZ01EG7gBzN@@UGpP`-%rb(AlrZ1zt163UnQs>>)}PIl8%R~NOzK8Nyb-S1HeU$BA z`%u20@|ZzS6+W0QE&CAVhX+~8k5Yb@@?(@=p!_)HXVl>d%69)(tPxO7M}U}Th4$}% zC_kT|ws?{9Yhqratowi2n}7LLuX&yFILh+>@|%uSiJ8BGw<*6fbhh^>e?j?u${$ny zK)ZY>*@XMQmY)be6@DiCJVEKdr2L(Nuf%^X{6_e#(?l1hV0hl>5> zFO?>hC<#npoizd~HUgBj4}Yk{O7%QxBS6elRHmmgwO?ukRHmgeonusMpZ`$Nn}y0u zu7hf4p|S#%S*eVqG8>h-L?+7FrJuufpfaZ`p)xm>`KjpsUzu0p`CLlz0;(DzH1qdW z3sG5y%ED9@qayRKq~@=x#i=YsMdn|baQ|16rPC(%oGeR4{$DZw_nlXyvNn~KsH{b0 zWh$#tSw%h5%fFYcu5N2k(f!{)&mz~MvMH5yscb-HJ=N;|pFX!6QW-_XMuTgml8uF% zq-6R#+MLRXRJNe9H_lZND%(@p+GO_RZ$o8U_1`XSWe;ixrFI-*cBZl$6%B=o znZMhG%I;F`p$>Zr_ZrIXL**zc`%;m~SN5Z#0Z}dm1mIa=FA8Q@Ok0#f!iDrWLj{zpY`4JvntztgoHVL|7gWAXQ`Ycns!;ic%5PM@rSg;X-%41RP$78;tN!ZRLfLLNtWsa|EF4!pz2Btt$&?r zW2jG)>MB$ts&i6pQJt1*o2oAP)ehCJKV(cb^?%Rk^Z)8p+H`86`MSk0o9b{Fz`B3eaRJWqKE!C|ZNp+jSUTU&E)%~dMKvh;>-I3}}YO-_M#CF`3 z>Yh}0livJa0viEh_M*DCBgOASb>DPphu@#-Ayg0WVjBTe4-y_cBs-L<`9Iaeg-1BO z;-jdqK=o*9$=QyvuPv$`OZ5?|$5FkC>hV<1p?U(T6UVr}{kAC#XI{RsLU<|5qpY zKhW@_A|JBt0 zRr}MB=4YzEtMC`9zbgCNQ0G6W+V7p}pF$e}RR2!UGW5~d@7T7_DTT6+0cs;&+V z-!`;D>lsm-o?46A)YRJ4del17oBvaboy?0h9coijn`#1YvT3MIt8PR0|Jn@H%;Blc zNNpx%XBMXZuXr|Uvr|id5fYpEQ=2nEzv|)O>s*=Toi@QQrq>U+8WeWm0&e5Sl#zuliJ$U)^bZjJN7!lbyLzhuTO0QksGF@$wpDzhT6u|wxqTR zwauvg*Z*tg|J1f{o2q;(q22;mYFpQh+ICWIFWkZDsqIAV18O@{yO!E6)J~wbE472D z?M7{XYP(Z2x2LuTHM{>S-pe=KN6USM6F&c;c7T`zonG4=Of9kWL&P6S?Fee}|C;%K zLK@mpj}#u|NNUGe%631N+Hus5A1FnhNbLe@Cs8|{+R0*0QTeGt^M9wOb_TU`Bsi1W zS-$z%K6|cG=Lyeuq~Z&yT}f>;wM(g8dv|FuV{Jwfd;FZOQ%Y!{7ynvDQeJwxqfYR^)8Nz3P` zJ+FOV5WeVS1Elr}wfCvLO6^T*uc_qq1SNjM$*7H^_71hTM7}+!)$(28dnuU~en`Da z?IUWxQ~Q|Ox70qN_Nj0C8MUvd$^UDq|5LN+pxx#FwITnneMfCPweP*aMgX-Rg+IBT zihri2`+x0MuS`b(wLhpQzWpcl#M1ww_7AncRbnq}FE;}6i*_Ybb_)z zIrWm2*QcPKp`NEM|F7o;RVvX(K=oounm(XjR;n^kQm;{;oqC=6bkrNvW9lLG7WJmK zh=%rUtF|NT4t3~JpPG8#DXC9MeS-f}pGJD~e=nGx`YdWbgHkgJH3I530+gE72l^|3 z`k;0W>LaPoNquhWbD1X9&qLj;p8CAh=kpuQ@3SM6TF@;OFGPK5>I+j}oVtDfBXUvd zi@8{5(C0t(C6!ugsMhZP)KmYbzMPiJI|20-X-q|ZCF*xjUzz$b)K{UtE%jBYZ%lnP z>T6Rs^QXRsc3D%H-v1S^Lwy74>nct!|J2v_{muWWZzLS$NX45_PtBkDW@0v{F1N35 zq2-pT*j@=+Q{N_CTDR?}??ruk>bq#u9jNc9lAVM*4=HyQvm5n2sPCSL)0Fk}BcQ%F z^~0&}L;V2i`>Nr7!uIYIkg!)0Qoch6O$_{g=wm594^AXgK6nT{J=rm>GW2s+E z{W$7pQ9qvgsnk!9=0xfzQ$K02qYhvrK-trTr;D`vKlL+RO7Yp$&!?`TP(N49d4sG9 zFQ9&*_|cB1eo?}UxrF)+)GwuO#!me*>X%c$lKK@BI@oqsNqlumn(|sP*9rZnK=m7` zo3T^BiTcgdZ>2uu|8?_!>HjzAqvf5{f1rLB^%tn$P5nvg_fUU``n}Z0P`^(N?{~F| zA5hhULi2y$*8HFPBh(+K{-~6x|C_*0^@LYGMg3_XKjS)3e^#33gf;@y?M3PzQGbd0 zJJesM{yKGi{!@R|3v2|a4bcO!&F0qW&fIZ>fJJQvP56#-+r3r-t9V4vK%IF&XurXiP+XJoUe*|4jXN z>hk}(`9JmFhC2MAsy_!EB>0=UdpQ3n`|lu20~!-gC~r(cW61v-lhdfsn1V*eX=r3= z6ls|M)5r@8L**scnMR_}r{8uIzZCNwssu{n*+(uPR~+uH8`G`37h zJLlFkwxO||T5aq5Z|?(t|8ML>V|QtGrlHZ$*wri;xOb}1UC(m0cb{J(L!s?HdyI!je&yNwi|OXDdT=h3*C#`!d^q;Ua_OH_Cv zjnUFvB)oV~rR=3NE^`cx%V|vTe;QZOxQ<3@{xq(kVdg({jO%IK;A?NBanm46;}#nC z(zunzJv45kaVHJk{~H<;jXQ>#+~qsmJs=Z?#(gx#>V)^x7$fEZuYAxcX*@*ZF&Ym` z_K48@-^sLmT=)cyCsWcoKTYFP8qd&poyM~?UXtcHZSlPD1>uWniM@xq@|(w>T6wb5_F-(6c8f7053#$Pm( zSJB^uFVgsbgvp=Te+UzM{FksoI1%CGgb+? zHwtY8h$(ueB&Ga6^!^`K2|I)}!bsUVVMA4+u<2@jhZdokzwg{7oJLhKVUKW1Li2x@ zO#;HHgj1(vdYb6hWQ8I9N@7+fT$ON@fiejQR}-%8NWwJ4w+7m+&(^%fx9IThRUW+Q-bH(~k~fN)R30}1yc+)q_|3-=N3J5;;Bst!oEvuEQV zLi2wq4-wk^U$VmqPbEBp@I=BR36CW_N&>t86CUGaip~EO*a#pzVW|H}geUv{rOt%_i78>|HGmCf0+8es>TvNN%)ZBhY24el>dkS_5V=*A3ou>Abg7O zS;D8)|CynEW&Yvw>SpHe^)Jy}fbeCSiPybC_$A@1gl`kRM))S->(ak5=%cpd2;Um& z@DAZ8;@>5FkI)RC@O?tN{HKNX^nRpPHUcE@9|47*Y5BP@odSek5&lB>HK9yC{6@9k z5`HJy_X(!WZLc2*f0AIl@aHsToBm4pmr8ykH1j9a{XhJ3Nb@(%i3r`P{*n0KL4TUi zoRsFoR@*fHPgAy>%q?k7K{KYAp;@JwrCGEl%^c0VstOaTj4#m)#Fu?}#r33FqbdJy z)@hpmt4~OCg8$QOdA_Y|N7(fpdNgOH*{3-J%_(V4Lvtz#rgj3w)6$&I>!%;^O3g@f zCY^0&;Vf=1#k0|zN1Egz%udrj@S!;eP4oY>i9IKCr%TJuOLIQe&Ogx596@tGnhVlg zkLF04E74qt=8`lQrnx9hyZ<{e&BatJ|8EZYe{(6C%h6m~2Ute9>`;~bziIwYbH$;3 zSEjj!#H-L;RoT^qs}D5Fu1Rw(n(NS9djfB*y#F`Xr@1A~4QOscb3>=0xshr|3BCU} zH&y@5L~btJB0*oW70sP#ZcTH0n%gLAmw%e}M!;)!P=_6bJ2_JEE;RR|xhu^*Xzr#e zduxyitjV6~(oVj&O7;=jM?li=PxEA&2hco<=7BU1a(bEv(>#o(nZNYuTL7AeYk7q5 zNY}(6&7)}^L-Tl=$0~c=AWQQE?RBE?B-c~%DKyWgc`D7*e3R2@o=sE!-}L_9^#0#G zM^*Cwruo0Gx`5^-G%r+kG|h`?UNqP}4eZ&tl;&l=L?fV?jsTih5hV}*YNF&%>oqjr zqoGhw@GIAf4|WkH1DNp{;!mc0Gf9T z?{PAk_xY@i0GeZj5BTg@n$OaFh~|?tA5N4sAEEge&Hws;Q~uvf{a+oPqWQG+&$#}I zpQHJTvd`0efo5X(cKN6I(m<02c9K_V+WnuV`M;{t5kPYs&2MPFMe{?NZ_|9opY~nJ z-V?s>$#ewJ{D|h~G(R@p`rBIonl=Jx+Ft>SH1ntVrO2;5`L&gp>|2@%en<0Hn%~nL zPxA-yKYHa)UTK$qn!mWE;@@cgK{LJltLjhj8V$|Ahm`*iO-|GNpJ*bYNfaQQIF%)b ziR>)^k@x>-3YQ|vh|i`+itDQrJ06kW}<0{X3%mvqUneF&*(Z6&6JY1 zMfw(iXf~n+h!SQlZ81C19BMMBt5Q6-a2}$0Q_`NL`J_)r0MQ7dg^3oFawO401Em=A zf1*W+78~$H8Uax{0*IC(+MH-v4Av@y|IMC%fn{}Zh<&=ajkv?0;@>b60;k$XKy8;Km{NTN-Auql!Gzwf^V z(GEmg5^Ybk717p1scn*&NFyNfBOpEhjzqf=>GB`h<)3I5oo&~lv+Yi_7ttQ#_Z;H) zCfbi^A64x;*iOs+g$Fp2=pdqRi4G>Zo9Gat^N0>5I)&&kqNCOJaH1nra-`7i|866q zV~9>5lK)5M|3t?R&LFWyKx89;=ww$&bSjZqJ<)06PZyryv)=rpv!yvlc&=+pbUx8F zL>CZUPIMvB#YCee_>cb+U80_s5~coc<+kG$L{}9bKBBQi_xscs3G6KZ(Sxoz z(L*YKnCLO0N0fThr3}+o$P+}*5TUDWnXZGieDmnpXgi@p{J6h8deNU@G^aD|{>5oLZ(nmiLjVJn5ZGR@3;Q#9L8_@*+ zm*!6*`G55HU|*ttXl020r8NnyiA>f)IB|kbMr%@9lhc}PP-XpFQ}}F_R#7E6VV+ju zzsi#IfzU>PWK~)XS~Xhr!A25xdiPp@Xm-*YHo0ZmVv}|@;%Dw7ZbI_WXmia#|4TY9n z{%OtQ1d8WVc79q5(po^wh(T7%k#0$AVOq=4T7=e;v=&v>ViL&wTT2Y8Xf5TAL2GFV zmJ#~D0&Xo&Yjs*HsKbi1R-vWOe_AUKI!M2&(EMM@HE69vYfX`B3C;igM(awmo?ou- zt2U%lqO}q21!#?;^)#)GX`M}L6Iut*+LYE#v^Jx)9WCAeTU*fDn%0)Sd@I*b+ifG< z)~B}Dj&}c7u%q94XIgvH+J)Bcw9Nl$?dCL!_mJ2w|FrgUC5q+$t$k_jPiwz{-UYM{ zq;&$VgJ>O2>tL(0@VE{SV`v?z_$Z-`1{2sxj#Y_${zL0{M=Cy%)@c%) zM9a*dmVNj`>(n8Q%)fPpWM{gbwEPHYokQzpTIbTbjMjOyE~Rz8I$S{OB3kzO53SLz z%FvefR{*pwnLyf(m(#k2))lI~Qi7|TfL1yJXkDx9b+m4zW&Tg=hCvfrHw~Tn7FuIy z-Ae0D$!?=%{!i<6p_#vLZst$xZd&)!x@XW$Rrk?K{a=~~Xgy5pLB(Swcxa%f^$4xU zX_^1idTfY)LVEds>!~DmDO%6aPR#0ATA$E*j@BEro~QLPtrwhz){AQO(om~cXuYa# zuL)lt>h>nBccdRj>n&y99?HHe<~>>;DtMpP2ZOe%vJpVbfBw_@l-5tQKBM)W_|Iv5 zLF;Q;U#i^9KP|VX?i-Qcrlj>rM!*jue;g=jji>b&t)FTAM(Y=~wQ=ACw0@WV58N`k+UZ9?v?rq-)1I7mKzj<>cJr4qOFK{7%-?N6+x(w) zQCM=M;xg?P?F#J%ZM*!_t_lA;0@|U(8UgJnEjMwSwv7XoblrBed$ebz-KRYx?I~$b zOI!ZmHvgwRjgxutbm~04a0cIMCLh=opgoHh&qjML+GY;oXBW;PoYQOOrad2R^MBg& zI#Tict|~#=BWPbpdqLVe(H=>AJ=zP=UY_>Cw3nc*`+s{;RmuO`=Kp@vCDmam+RG|f zTDXkMs$@AQro95~HEFL%TRz{`2x!{~puI}k&p;K3!S)e>?SmF=wm8IYT|q6LY?@7Yub9P5Wiq7ty|p_QkYsp?wMMt7%_K`%2oE zNq@QUilHjI|GOpaYiM6j`&wzP8`9iB`^I!>Plb&D+BdsG+PBia&3DlK-?AD3?K^1S zX|nW>%-yt~qJ0nTv9#}1lly3op?&{guOy(Y`+xgE-}52bkI{ZusYg8dsPFl>`pEy= z=Ko&sH0|eTKcnokL;Uk%?EX*N%wNlwoPhQ#w7;kQD(z2bzef85+ON|dNBa%0w6_4N zeT(+H3hXTaZJP_0vd8|O@O`IL_CwkqiL}eVQ_}vF_LsCj6aTqnU!+Z};a9Z3rTw+| zZ-)5qhC2K}`!Cu*($<~7{S)o+>h`nnmm%eEV(k7;`w!vJ=l|`$=}boZ|IvZ=Kg#}V z*qJCn*MyGwKb=X0lR8rI$I zXHGgbIz2jdIxRX4UlpphDU5uFwmNr2n)%a-T}pAE&UAF9lx8YA)6g;hcMT<&)-CBw zPiJO2Gx+6bT>C8eWdDOG2&unSA`z?27r(@>tNIG-T89`@mI%fXT&nuiSS<=tykrn99qTMe>WZX@&~ptC)l-RSHHw#qla2s72h;fqPAWBu|tI>)fJ#{BcNj= z!0&Yy9r=I9{GZObLmkeia}Avf=v+bPLOPew8Lho85?(yiAXbe4muCgxs%R)bncS=Ze{KM zPv_nQ{Q>O$PiKr{=se*0v2>oK^N_L+(|L@J`9GaU2en#0E_}j~be^K~9G#~{J|leA zr4-BmJ9hu4^P<~G@ym2Rpz{iyx9Pk}=M6fqN&os#?VA?c0mcd6O3RITM@`-p%Ktm5 z|I_)9&S!K!a$-6ktM(J&rwOX$b2?uu_=3)tN`2*0ioa3HU;gdn-_uS06#qcCOXo+r zlhgT$PGaNZ>HJ2={9lE?(D~KH>hQbgH3B*|0_gnZHlp+Y=uSrGA1VK(J274Jf4Vq< zV)=h}g8!$r-6`lc=w|4a>1M4%H%GTfH}3`M2vCy}-N2nBJx{knx2md|XX?H%q$`u} zHt9w_+oEg!?=)T+)18lQkM68=`*dfdJ0;y|>FWO9HUFnO&7g#?F8|%>wQqX)S8Vrx zx-&~Z%aDFHx^sz4va?Gwhj7jWos90>Vr&G^op-2qe!5H1U4ZUFbVo?Dpfn?gGz-&R zoUZvl-9?3V|98#lE}^O=-BR(=bXTUkjN)bKuAo38pu2o3vsNq8T`67K<61>B`F~gb z-yQP*?wWK@p}Q8{UFfb&cT2kK(A|)({NKvgqig<8cLVF`US{2m=x$1Pl+G;w@0$Pn z>}Jw$F5JSAinpS>J>9JpZ{v8n=KplJbLDh*@VrJq*G2%{oqcv!x`)!;jqZMQcUPZ1 z=U-|>+9!&Q@r4Di_L)+yLx1@U*-Q(#VPWNcKGXJj3znhxB z#CHFud#rHi{@*=8%!$&RBs|%*ReUPlYw4aw_hP!I(@mY9?wNEipnDcwGkm&d(>-TU zrNZ-s=clA;E|hY#@S+4IxPG!?{G2QJ0-hIXd^(`d+9z*_ddE0(7j)&F)pQ8 zpZ|2nN@@P@s~!>aDBUOMJ|?A^e=4x!J?WKC(|tn%jexF=0J_i7eO`gx{}sF_d`bAS z@D;kRDlq?7pb>DNtl+V4=#FEW5#ryX`!?}vbl=hP-Q?@@6uc*VU-$vt4~d9?X zPivce8KMrX1N?1YP-ritf3*D9w$S&;6GJ>3@x;U};z@`D;z@~f#FG(ch$knW!o>b} zWKCil0oEtZ6BmgK69h(<+>*FVY=%!d3xemh-V;{?Z-2wDLd!PL-DNs%*kmNCZ3&mZsIw# z>714_y-f%8oQHURV)K9E`K(F$Y%D-Ll6VC1f@$ZJxBI`>EJD1r3Ku0_jCcv+q0fKf zC5e|x#cAy_#48XlOKi@sLT~=|#I8uZGVzfA$Ey&V`I}gJm8?#@22(Ciye7Suh}RC6mDcMzvPu^%*Mo<*isDfW-cb) zT-hz0Oz~F4TN7_bY+wFPysatKM9b}ocOc$zz$5|j&cu5V?_x?T*;Tk3@$RY2G7 zFMcoLWVtW#K2EO=`&pbG^#I2cA4q)AkmeBL3y2RTK7shKgeN|n_$UQO2#@p~jwU{i z_!#12(*q>Ulc(28j`x}qiO(WFiTHHllZj6yJ|z*@kDd0kq4*3Ho;hH&Je&9&;`4~l zH9kH0`2!8{g~XQyNT}^BJU%9Sp5COV~8JA z{D42zSmKB5OP1Ypl|HMF5I;)%xRj3#vcylgnD{B;=aqe$_!$My3ZF~Rb=L9);uncu zQJlQyUmj$MUlsY9F)AT`gZK;LH;F$c9!LBx@mtcoEqrH4`5y6yBHt(eV2J<7;`G`6 zM1oIUmiRL*Klj-$iN6=~74g?z^9}L0#NXLcO%f#jL9!o(KY8VNry>4@-X_Gq(o6j9 zH+p&E-|0<6{D<^^5-0BTm*T%&iJ|=}{~`X@#kNZidXpL7n^-uBaMJX&y~(wlf?k$h zCW$?t8;T3`+VqO_>hwzVD)a(Xm4`G{i*1*h1pva68O2O5oWVDrNz0iN^vtaER-!i>y+!E#AH4N6j``CT91Z3MlM^cFPnge?}LxA4$%QF=?#TTC4m z7cMcBU5eiF^p>W#EWKrnpU`Kyp?C#)D-JDJrnd&YRT75Ys>0PQYs=Lwu-|p!|Lclb zi{9EkyN*Bkdh|A;x4r}$(AzM5Txsnnuix0~H>GzWz0K$yLT__=d(hj0-j4LPq_+*d zt-O9~uiuv5_Vl)MyeD_?!A|scrMI)M+QowOsopJ#>7^rp-k$Uhptl#jed%c=_2mEV z4~{AKqh|xcmmjF|gM0Oot_LDwiSBOtX0KKc}T_@%mdPC;lGxMi+gB7MHzsbe) zZdU3Rdbb)Qm!|hWdSmI`PVXLicSvw2J#&7)@7+GQm);n9_gTuexZib9`~W>01omUE z$%p7YN$+8Lk16|z@KMVq_p9FH7FdTTEHM33^q!~pG(FjV&qjcF`M+Z6U!eD*rP7nX zO#eiBuh3tP-mCNzk9v*X5A=zU10_R zH|fXI`Hr9TDz%pjXK=?{&7et~|Gen7wU-#%q8uF{{CevN*Qew}_qU;f_@wO#YSRW15$ z`dy_ugA{!m0ZBvpefrbWpOXGG(o7|sdT>Je)6$>L#L16)0rY2}KO=p!efl;6{K51U z@J7x?e_{InM}GwU+3C+ie-8R{(N9N!>qbAF0`%vlKfk)o=UXi>Xe)j}`XhbSLW30j zMd&X|e@ST;qrW))3Ffayw-kM|efmpVRr05xzwA)?^7MD6zXJV@=&wkBUHU80Uz7gI z^jD+5iYcvjRsXH4~nYFyeMgaYFY-!KxdY)gO{sulyrvUv?^tY0JW8o(BH>JM? z{mtlaZsO#nrB|1-TRMjR*7Uchzm3RkjkFy#0^CcnzXSapMegLXI>|2dkD$LR{R8Rm zMt?5}cBj9Gf;~-{mM6#FkN!U5_cdNA`sV-i4;V079z@^#pZ+2A52JsmWz#-~50v!H z{OKPhJevM-3XTyTo1lLhj~C1!PH&HwGkcE6GSt@O?R>C624x44v;+vwk+;D5r~U5fsl^zWvBmo1Z@FUvQ>p_^&t;!+&G= zzYPDK;eRo_ivPp^l(MB-hX2j*e>B=?lwToJmYRX&>oKj-zoNX9}Dt zE6h}Vwazq_HEkuIu0J)L8F1#pnGwgryEA|@3}QILk>6Pc$AW+Lbc~}*0L}_ky({6~fU`2rS2(NST!OPI&Q3V1;cQ^Y)s3!!vnI|u zIBQALBx{!%j9(XLJ)HG5%i3j@Y>2a^zO$WpEGx&#>JSe!F( zj>9>{uD?8~zTQJB`ucUzv9g&g(e$;yjIWAI`%#_v1W>Ga>$4k%!76I3sYL zz$N%ToyqV-z*cRn{Ix&+{SS?1z=jVqIPJgx+{Z*cy?`4;C#Lw;xUd!s*8 z_@8io!}-~SzX&zvS7rKR=69SwOgJR?JAdO&iSrNcq&WZLmZko~ov75%FYDTh;A;FA z3GQU7$DO>y;7(D&rotVDJ2mcf2ABr7AOEe?^tdyce1-}?P-?K;nQ&*vof&sl+*wp! zn(b=*FO#@);LasH?wn<=@pD(md2xHV!*QD?cW_sZff$xs4W57_Do@_As?clV-i~n+$#RN^WiRuJ3p?4dUpZb1*@_PRW|G9A9qn) zi}~(iLv$`tVV1&O4tMFQ>@rql+5TX2m$&2!xGNd6qQd&FTe;+MSH(RPcQxECaaYIP z2zL$K^>B6nkGmG`I>xL$r0lvw`1Nsh;V{gGmGX@(xe4xOxEB8>)Vn$Eg!qrU74F`+ zTjTD6yAAG+xZC1xk6SGPea*TAh;rPWO!Ll~oS<`8+}&{Zu&muH8}`JV@bcfX_QADK z?`r(VwFvC$5>OR60QW%LgDv-}C0Ho# zaV9_B=n1$M`OA>i?}d{s>l9pz|E|V={nN5%;9ibZn_C? zM%wolJPV z$?^J;zwaM!D!gg&rncN^6km=gZ#ujgOgR0Z4Z`3J;4O|f3@^r;3D3ow8E;O!S@34V zn{`lwm7U$_9F@+w@a8qi+<5c+FLJoaox!^BJUkyS#H-;2mfMg2cpChNAZ_jNqN=;uiCa;cW@< z7B#*f|M8ZO67*EG;fRdKHheC=i_aUcMRSRc!%Kah_?^kPI$ZH?Toi8-Y#0OJpS``>nl+s z_rTjrl6ZR#5$;{`c>CfVh$qdrwZPN+KbocZ11gLKf0Z0uS#_uZ4#PVVPxt?pJfh0A z`0pKE7PqWp@lL}#4(}vO9*=i|F}4KsN4^Dr?-Y}3{MSG2m(%giHsKjY&op{gm3xjQ z&()+_cwQyH0PkVE3-PYUy9nIS?!@g)A=h9~j=7AtadSsd@yL8QrVH>yj3REl>O-hC#y8}A;xdsSYIbG-ZU zH0%9FcD;!AHr`8kui?Fn_ezP!v-odz;=PXdCf*x;RoX{ysRpadbiRY9@!$CO z$}GGO@Tb5VjrS|whj^dkjlmm-_mROqHafNhD^+Vh!Lvod)A(Oz;eCPk9p0CC;|=o_ z-q(YD73oi2){8$S{#^J|;m?XcHU5nF)8J2!Kdr&0 zD-~9y`ul&&8o(chKQsPJ|BIQW(mY#L%HqF22mYKYDdU?zH+~C$9()&Hmjn63xA^b( z<3GNK-@y0r>y}$nSUH6Jpg&*y5I?e9jsH5H{TM$PM4BWuK!#u7=lC7`wgTi&dc^Mz zg7JI!^OZ^b`SBMR%rdVognt44!uXrvFM_`z{-UN~F{6tc)%&0LOX9C!%u@JO{P&j; zZTQRLFK5j1gUaz !NlE8(wrAL>*c^Wg{H@GsTdG>QkK}KSeFXx|_$QfpCr`L*=bviw)9_DM{fapQ z|ICU%3;*njKgV*R*F@t-3;7ddJuJ*W=%We*^xFdXvz`jJ5h^e7*cBLi}6t@5k5s zpZK?{P?;Jtoo3KfYf6)IS{q;@dy*AH;tJ{~>&f@czR#kVY7N#OR|& zAHz3G1|zWlB>q$Qqwt?Lz%%&I8S|`A8`T>8jTxz<&RT*0f?;07f2oq#{$Km&qYfPfM6mO@3Y`@xN463jWHdE&=%CtK4t#e>KT>_}}CIgs(4u@T*4v z<$pGS#s3K&kR_nM`Ny{BFsA+h|mnFc0zwk9%3*?_ADnGGMt*bUE zwW+9S{HIn0|JoFmoU+6iKQ*;!j8VTCGhM$GwHc_*OKnDKvzUB<+OR51mjG%rYZ0w$ zR%&xn)A&!#f`4s}GOGg2WiWmJLv5Z)$#7~K;i);)Tw^@NtHdw+(Rf=6YJu?$qoGh! z6;adZO)aLDP-|0bX_iV-YP$b7K37Jo?pU&08BkcVSLM!6ZDDG*1gM4uEq9?RcM)of zQ(IJ%n!8vfU&4}0Qq!J#z>r@zv9<}u(No{=`UwEFv#DK3?HuFJrKVw@+Idy$ zE|8>J^5loqE~0inwTr3UNbM48S5mvwz?WI?UvBh@vS*FI%5tx!b{(~AOmgjDt|hNG zdP6Csb`!O`sELzrr*?~F-D>o<5@7rtrc>kp5aHd_EdJLl{?{!2_Xn6bVI;K&sXc1N zAEKuB|BW9(?U6w})E=Yu47JCpJw@#a13Wocg(aWvC)GdCQhUyX&ktg#jiUAjwHK(p zVp%U5eTkag{~z3|)a?F$?KNtz4=MX*Wz}0&>TPQ84BDoBtuyO=YI^x!=cD}TjFV3J zirN@zAB&vYN9CxXHkR6_CK+dA>68ANTlg$YWndPwZDzp0^RSU|ENz)eIiBHwO##E^+^<2pR`OGKRI>%$cy?E2A_FSq6(!pOyM-gQcj?LA^$OPU`be zw@<_Ba}NQ}OWm~^hf{Y3OIaP_km%L@Bh(q3(NMBP66D1B0IQD2RE zN_|o48TFpkl2dO}?^5slZ`q=s)LQ1FK0oz^s4rk@7yMu3!qgWTV*g^)mov?aQ(uDm z($tqM@zj^CY!exilvOM(_sIN?Y#R|XD5d114q`qpEwL0}JsINg?qdIk60;sP= zeQoON8gENL-w*3mr8c0xiREr+)Z%}AW8oE``ZuL+@n8APt5RE1--h~DRnnG#zDu{I zz8&=)sc&z^cPKGRRl`nYlKL*xZ>GL0_0y>DM*R@#yHnqv`X1D6t6$&K?9o+#`rbqA z+1K>^pV9p)Z3k40E&S&I6h)K8>-81;9j*E&C`Wyeg^e(4S6Q@vkZ2&(Q`_e@#j&$h`KEV zb&dbjFC3!hV#8cg;;HKrV3NzJUvJ{OS^^RBhHJfckZ%ka`vT>o;22 zn<{O$P=AT~t<)c-ejD|NsNYWgKI(T+zni+of9kgXx6ZZXJw|m2sOq}k>UzNFgH??W zSIh{*_m=?bk5L~<{c-9~QGdd+p6sjAx}K)~tO@NCuzp*fGtJc!ps-QYUofEt|FSss zm#L4Y{tESXsK08tuTg)K`s=3fjlo(h`IgbQ2Zhw%rT(6kdf(^=Lo|O#{WHUlq5cu| zanwIH%-BJUB|kCxXZ~i~qrd_^Olka7eVxHH1alEgOE6%_=?FCb6U<;#gTKg)A4V_>!Au65xfB{d zE5RHD8vhAqAH-X7&N4|bH-Tf|c?jmMg!T!TmU0d38NfGM6I#Ing2f3M1U-U~ASY-N zvo!TbaZ6D(jl7c{z138-L;n36>Y zHCS>9g4GC?Bv{&t^y5E)G-_pnWeHXwu*D)+eu6fw-F^Zh7!v;ji~m6t|AW;DHXvAo zU>(zJ@jqCLVC}vEN+H1(1Q!!*NpL8^ zRs?$xY)!B;!8QcjTfO%FC)lp9TsvzA)377KPJ=ZP>{2PzS3m^zUMSeT1Q6^=Z~(zx z1pi0S5B>!E5bQfdg9d+s{YyQSwgU+cGWo$q4;joQIE>&7g2M?;AUJ~H7y^y|1VIR6=kffxYJmPO>5=8`bwh3Q%KCGkSW3Ka;>#f#56xi~qrp_#d1{ za1nvU|G?sZFd_bzIteZzc!1zif?EkLBe;>^a)Rp!t{}LY;K~Z7OMvp)oNJ6;TV|O( z*Bk9G0hW6cf$lSnx3@rQ{A~nxo8)$aJFLi^rCNgi5DJJexViYL4v0V z9wKImMT@hHKYG*%*bi^dEDZxj4P@D9Oe1n&}jO7I@R#{};a zd`R$t6(3y|SE@}IL-5i6+Mr7S!8n3Xh9XV)IlMcGr_+EzYzRkNsIr1#(#p}ON`0?B+%eb@VC)^*BJjFjVWkML}L;f zD7Z1P(6TIzNfpzWtV&K^X3?0E#xyjhGW^s-@YB+muAkI`{YL;AGtvlY4A7X9#xNSQ z(U_^yIWvt}Dt^`>s%ED#M=2LdV=fvs8gtWdXv|~v&TF(E{L6wgYzb(1R%FQjzfm_y zU{oIgtZb9Ud^92&sU>3?8vJRrN`UbhjV=xQ{zSU_X{G|n*mnS*#s+7i&{F99^pqj8xPKcB`0G%lubp}{Wt-%^**=x_eD7On1b8dn(d z$`VQAs?q=&*U-3|# zcWHc1<2@ShmuhKzKw}(@(KJ4y@u3wQQ)Veur+sX6Y+tDEwf%oX_y06LE0xpug2vZ| z{F26y{eNRTjc;ja{I8JTS;6nir13uz&OqZQ!pUg-Oyh6U^9zk%Y5YOMf`6k5{^EbF z*Y^JnT>=dJ4KBPE&&y6TEgi} z-Vgr9&q(MJ4iIXDCmcqo@t<(!s?;oH?S!)t&P6!8!R9bJXPIUE+=Rmk=drT$mSvTy zDyK{mdW3<2eZrb$Y49IZVv>+>Bf=)(5`+<9K^PMzC5Es?m=oHf5N7{dux-UVM!Th2 z!XDuwR^xnx^Aj#axPSo`ECEW@!hZZWfXz@QB z68|;V;(w^|pKv9kE0?MWS0&U4Pq-T4>Xx;J(SH0ler>|_2<@RDTvxzV+4U{g;(yqW z|0da(@Ib;%2zMgflyEE4zZs#$|4`#U;g+Qm1Mfm;!9TR%A6CI%_3ufzH{o7GO6^0qAK|`MqrUv!})|)5?(-f3E_p7b&=7FOMvm05?)St z*AN!2786@)e80+;e_~4_$J|dgckop zefdN9j?s4qHCyt1!Vd^PBphApQK}VNGXB(+p@fj0wwJn)X{j&4^|^1m7}@#(!gU380x9)kgrD9iir>!aSgxf12~DP?`B@ zE>Q6c(p<=d3zrfrwJ6PlX)Z={3Cmi%e{$4ZlIDsum!i3}x>x$HxeU$a^t80OtezyQ z^5to+peIVwP10G~Q!CM2jpoXhy9&)!^+tykw}PwFJb>mJmb)g+ooKE_b4!|Q)7*%r z#s8*uB~5!+Xs%ClLz)|uu2X70G{D9*H!)^Ynw!(yY$%4N{sgq-8o*YErtSZm+tA#W z=Jqu8_umv?I%)1849y)&AYG9|i3(Z}P+0E$gT14f07}cMEHb&q7(A-C;G5gZ| zzlz__B>Pv$11tGK%E*~o^AH2*LSW2cKY?H!pu&11`M z(izk|p62B=PoQ}j%@b)}O7kR|XPdT@X`Vv!G@7SQn1jvJX`X3H&M4=gwf(Hh!gFX| zY}4din&;7!3qR-6yg>VL!hF>DKV&}kCuZLynN2!ct}p|xv@v-V&1-00T~?uojOs3n z|2k){r+E|28%$Wmf4Mf$yqRYI%P-5iRY#hfPBw36J{d4~5IHpOr1>h%yJ)^b^KP1t z(!6Kjj@@Y9YxUk|{Qbs1VEltdA2Rx|(Gf-;5h{PfW}2MlV>Dl&DeYAW%_nF+sRy9S zKSlHDfd^ir`HcNYnn<3d`J81vuXyc_k(L~#?$RPJ8huG@Fy`e_UKTgWYeru;pTA+I zzG;%T%$T>0e~0F~H2JI$YHNCz^q1Mxp_&!Un2_GVx?I6Vc42VcODYR-!pgJ{!^OL~}^((mHj;dyg1Q zRLxDK+kT>XRGWXvIdb){0UKw=ntYg(Gf%e(P2al`H?-MkZ2R4 zCea2&5mB2c*2oYgL^)AQEqr=BQL2aaQC23Ejy{d3LnH=tEvq0}a#-{YQIBXoqD6@2 zx8wo?-=0mhpwWelE-X~CN=me-!4@;RxX~rbT)piREk(4nUigvU<hO_ol$2ve~6+UsX_27Q$H%XS>lTAn@1LF{)gNP2+szs-aD6Rd_2}sp;_`p+V47_j) z(UIooqlg|MI-2PCfe~*J9Yb`i^h^@SMnQ(Zmjs5h;A-5>*g)GmFRw=+lVCW z-(F&*?L>DH-KB1PPyBPYb;LabV`WC%OLU*!4IaD9zz07Kd=wMOfP9$fL86BSWQa;v zeiUm#dHjh+sKT+Y6Fq9)e$43OM4u5oLG%XElSI!GJ!L)hG|{s}&sf-Y<1l+C~$NA+q9qZ66VRJQO3!iN+CqV$7#nSKq47iN+IsVNUo`T5V3S`=8O* zn$%J84bczA=>319?}+sNe+B-L=y#%@h<+vdndlcaRg}x0f`1!CDx*#QllWYszr^80 ze-qD5^bfHF=YI!2dWq;iVtex=e2n&cJTdW9sw$p@cv9lYi6>M0Wqyfi03D^JD>3a1LIH8i6FTn-ymL?cp2hFh!+*4salM9N#ey7pk^#l*|}6DSy~x& z)UpOxPLrx?c}uRKN$sYUh_@hKnRrv;RfsnsUX^$~;?<;&h*u|GL&t`Ugm_JJxc>ML z@!Ce$F}ki$?Mk7)UPZjV(G7?_DhY#Hg}7*c;{VgB6z``6r3!VF{Qmy~#0RQ{vYN*S89i9-mm#6{A4+_fdFgQC z6N!%?KAPBG{ygpyAEixr;$q@sh>s^emiRc;ESn;!;!W|ezWP;OyaY&po|$A&!g<+SbUB)N9#I|SbFVz;`^*~FCe~<_-f*d zh%eU(8w=(V;>)aQm#PoNKVqjg=L%6sd?oQ!rDWi{x2y-RAr=Q-OMC4hhZK56tRqfZMpz%xRPKT$Lg zKd&Z98s*NA0oysp#mg5zRN~J_<|F=m7;6!KK`dkDOB=~w$;N~DYvONh0FO8Njq1@p{f_v1jU?*o zA1v!fb-t?oiTGz?-BxKuHVlY=BblD~cdO+Ol4*$lB$=A{FOtcL|0a>%k*WHhF4^(F zI!a}|7CxCs8JRW7#3YlFOj62CGT9(+$SFvsEF~mUsRkPf8mp6O)%nSEI=rQ8#O7oM zH8q)$WH`wH$xI}}blQqnWrv*1Ofo0QEF^ObytE(5tR%CM%&t>R=FUs|DI<;5thqEP z&QInhnTKTF0co#Dq-xD|ND2~{L~8dWi^L~MbnqlK9XUyzB(P+|XlS%4)N&)EaXGq3 zTEg1xYp_Sx6VbWMPt}NER`E zQIf?;7Sm0Ux=#GI1j&-R-bp`-&apZ;NyK~7FRPO*OR^%#awHn_NtQ2H3N0(qFIkCX zHBm*fGRZ0=tE$Ijv6d~jxJaJ+B&sB9kgQFzCdpdEl9yF3kw->XvJT058fFuHc+_5d z<`k0kRlmgZWJ7cKMkEK5Y)rBX$tEN_l59${HOXcqTaj$8+SCbKkZf7<5_8lx9slD= zwjr?xfyD0rD{_019drOlL7@_&lbuL**0z^xZn7)M9wfVw?5;aT8A#$N9YuSR>`k(l zuBw8RIFsx{av;gRB>R&{bM{lqbTD5{tshHD9 zZX`L~glCw|XOdh%au&(i+Ab;n_0%Ni7(JKdJd*RZ3VGBLDu!t@#fFPWt|qa~zxI(B zd8uVxMsg*|_zL^_(}W|CWU zMbjqSN=y3pHpAaeau3NJBzNhyKe_MU|Fsq!Lif^|mE=B>uSo7Ed6qDF zNgmSbbVNN&@+ip&tMQRisPwHXNFFo#xX~w!J}K0YPm|c@Uq*{`km`AkM8?DOB(E7@ zB*`d}mq}i*+!xge+B$m#5MGPCV)WHA%W_{Qd4uE~k~gg_wvHrktJ}pSq1wQAN#5%x zRpAFDW38bJ0?g< zhx}WDN&cf{j{t+k|9*wmB($ccH7Tvh`momIYCvlW)zi{P09sR(S;kL8Yerf&HCp=P zZ?vW_JxOZ@HB2P~rG>PHS&^BH&TMoRp{9Q}T8q(|omP$39JJ=9H7BjPG%AV`8Ek69 zJhXgT^BO-~SE!a_RG%?vc{(@+EVQq)POD8Tpw*&f5ug>)ifJ`9{;0x8@xn_;Y$cV@ zUjDSQVbi=rD;Fvl<2$q#pw+d41+AWzmAbU*`Do4GPpaAll~!) z6~7CuU3J}Q?N&+b_kUEfrvdgd{d*hT$LPL7Ez5pqLz}Zdt;1*?V8R1U+d-AKgJ~U7 z@rMdPdD*pU)kn}ep4O4Hj-z#yt~jluHL|tz2!NKo{};R*2MCq-V678qon{43q;--E zQCcVKKvh+z7(G>yeaY#xEdICj#~)NKfxUG$Eh%*lt;=bhOX~tFbsjBS0t6%7s@g83 zb&>8fTNfL>#OS3$E%!3jrny(py2d0|(z?oQzPfL%*-YzNTGtu!dZRZOz0v4RLMuJu z>f32a{J%}(?S%H;LF+!#eCPD46CDm#|(q!#~E zjsK)GlzK?*_n#-|oQZVi{?ICiaXKsM+@!OS&P6)Awj%9+|4Ul^{#ze852-^sug<}A zc-gvs8&j9m)6H1w8?70w>qbjDC=Iklnj4ZXLE0qkkVd5T%g<&TX+qkPW|F2xv#QBC zX}jc2-X*oDo))C~@h_=;M4ZlVyng>nsxN}H#&SBO3zIHl?ON36VwKH{D@NP9B_WKX%Cf2S^jc#Uib8THY<@<(hMY<#D z)}%X-Zlk$sl`R43cBI=6jYy_pC(@m(LAZ;7E&it(|4DZ@x`$SwdUOde$=;;LlI}x# z5b3_82a?+Io$hC&ZhxZ(lw(h+v`C8|OnL&9-X>Z6m#o zv@Cl)=?#{9qtTm64C&3H%_O&y-a%^n|Md1!XcgUQy>?gC%)2#9NBg~`50l-AGO|m%;@7rpD_BQP{r#Qc-r(lWBjwFob)-;=Z9cM zk-kCt0_n@7FOt60?=tC&a_vZ8A$`^Kyk^$EUfOT`o22iNO4q+j`nI+GoxvX0ktq*T zsZ7rg)E+q`k}j70K>8tBopcP@%%qb1oK%khNXL?XN;;18lYSNQe59@TOpA*#^1z#Z zLHY~nm!#j3entANp0A}}>w{`K-sm^F4U=cd5#ilmGpPg-!v)PA?=Yr$fh9ulT7%(NdG1Mn^d>is;AuDrT>xH=6_IEyPPYv$-N4MzW zoJ`JteSP~UvtDeL7X?y9*=1RvE|s^$Sx9yZnf>^WxGsyxVzT|n60*(7TKfE(rDThd zWn>HMkjQefHd#k|P;9L^O5y*|8H;4^eG^lzvRgl)YoO%Lgmwe3S}T=`UpU_ zsG29EBGcecwglO_WJ{8*PPP=;3S>)@Ek`EB^$kEgQSYrmwkFxyWNQulwvzsdlHa84IweoG9@&OEu(S2aHc*A~*H^d^ z*~Vm>iiAwB0O{+gY_mQ_W`wqA3$iWAwk6w2-vMS@4}APA**3zf0qU0R$aW>$UWabB z1KE!H8b{tuWjk4MSpt@oKeAnvQG<6Q+ryf(yUqe_*Pdh+9<#l~c(T38_93&w-$85T z)tMsqH+lfs!Ft}5*?D(%km`~5a@iqdCz2gXcB~n8n03M7dOnpML3X6NT4rK)6xq?n z9HSC(g$j=&J6@2+%gY~mfYM_cvXjVeBs-bx3NmTn1!Sj67TIZJXONvPnEu`cR- zr4lVDXA?rtAv@Q`)pAonFr|hLwsQ$l|>@%|4$X+J9 z-4xzI_KsVSej;tm5$#mzh8-{mfkiV-7R`#AzIj$P7 z&QZ6IHfpamGJVlXCKE^Fzwu+q#%b;5$$>8f|EXROVl>(3WIvOAQ5r_}CD~Wj%U_d; z4N}*4WZ#(ozg5HJPe+lS|C0ScWZ~FR9!M~IJK|VX# zpO*ZKT*CF=;n6Zc1jST6PElafzPZm)pMC*)I*PpL27 z#rb7W&8H?GAfJYOdh%(>r_*<~vM@>WWi;k9kk6<{InIzSlau#+82K#ZGm+1%(@I{+ z-u|n`fqYi-*`$vYCUuER^Et?S+cHSS07aKluXW3zIKMzK~idX2_i`8A!Rk|Batr(UvgFH=uR^}OUKYw%AYW03sMIb;0J;1};0MT8 z)>Tg~tK_SauS32Xx&7xCnV$I?Xf)0@ zB;Sa9OY)7$H#7MrMmH5I8pv(`ugn&uJ>*-NeCx6ba=ZT{ZdW_EBj28U5Aq$zcOl=g z>~8X%$al7*{|EFeHQ!YySFZOzrI*QfFK0UWp5%LJ2Z;kMOp)(H_jU4p=}PzgA8qlf zc<&+d{cR*1Kz8^+$+|B?TNoex#Zt9V))n5qLED z3FOD9bF}-8B|pwgI$llEQ@IbVn@-e`BX`*HlgV!-KZX2M)uWC*jr>gV({;kCmu&Z_ zWA7~T3&_tVKcD;@wNRUUF8O)dYMJ#y#SBGWNG`TrWcJ83xr$tEv!w0+^UKIDx8xN@ zuhd+dL6*Fl{2F7fCBKne-~U_kdZRZ8Rf!Ign~d82UxYF@h04F9&2J;Wo!nmdMB8bb4X$?e!W*YjU%?*o0LB-I-alYc-yg8UJ6h_qUL@+kRZ7XuJWc*A`7`R4ex=VTFFMtLk>oFuk0O6T7fo?{88h>j$fd@Y4f6{5 zYviwLR=Kch!PiS(&hl)u*d8N)TcdIQ4*C1!@0v01sUM`HrAI`$4&%|ZCE|UkkyiDL zA^(V6#_h+J97{glm~rHvkbh>p{QqA)+9Us*Ttb1A`hr}~e~s4*Athf)z9IjX{73Td z$bTUJUM~X+Ml8`$A(KM9{R{ceDi_-($bX|f5&7@re<)tE)a`$g|3&^U`QPL=x}+g8 zgEZ#r$6vag5R=-_o>&Ki=x6$WVCJnFA8PWOMq%mNn7s-X<0cxl9|$; zhW7Ndg_*8juVjfQ+cVIfu{1;bPJ|Mv+QVqiM7u_NX4>=8o`v>ov}e_VWuLZZr#*+3 zlHt*wllEM?e28J1oSXJM3X?yrcQ|d2wnN)hOUeso*2T2-6_EC9yDo#7c0jvDyFojl zt)8UaGz%lz@xbdxs^`mzFT+x{rV@%}RcdFn?>6V;wA-{dr`^$AeY;D0Azggi1?`@W zWaZ~GIzR0ND#?PXN3#~Dy(;ZRXfIBCQQC`@tXy9Rt!y9ez(b@sJw2~f%2 zitOj^YncBtx}VYgX&*rQP}&Dt@}LTNFzrK1-n1QNxrZBngwZ379wpSWjuvW?V=Z}{ z(c@L9Hk?5FMB3NTK8g1Ev`?me2JKU-+*1v68tozb|Mr@(C9_9?G9dB1FuOgHF}xQN^*rsuB5GpzqGF|<;GuYS=Z6N#hB}j-auRL zf6~6msD>kvmz4Icv~M%HTmdR;yo2_g6@OQWq&Sdu_fhR9bQ*q_(teWmQ?#G4arm@G9-Vjk z2&25ti073Tu+Fbhv}Knr4S9j~i?m;%{Ss{r{)&;vqjBI>tK~JdL93HedQeFF%}VkX z?YB*$hkX*PXxk@Xim|BM{($zEv?cz3N?U|ut?DtfKcfAyS|u?=9>iqTZjZBh@rgD~ zB7kJcC7el|n0Kd}y&6wY9w*H|?wBVn#|El=EMPj-CTGoGbCZ{uz@*NAR%1ms@ zNsLZPM}PlQcrDeL!h};AZ%csUr#9g*PTK$-I`bRTrBjp`Iz2k`4dN|#0iz4j(I5Y$ zv#`-cD*U2!7Bk7>rKFNCNoOf5xU^7X>{3=|S>u;ep=w)!&Ovlmq_ZWRmFR3pXJtBT z(OJb{s~TO+kgHdk*D&Flm4>w~xsFl$)~vIh;nz31L0PIQyOF^*Ho6I&O)L3kbZq~x z{@g-xt?X8GcA~SjCRM(T(QWB$SC!h{Bs&es@dS{r_@2 zclM&Qw+Z*DF#B5a|LDl7ZDYQ(zex_Db6_bEO6OoYSI{|x&Z%?`rE@Hu!whz~P-BiT zdZf{#j2=zrm?0XD6QRkEH+lk{6HW6;Mo%_s55IkHoJQvYL!M6O3}enLwb40?&e?`P zr;?m&fb-~_UrH+Zg(knq=*4vOxsT4JRqkbUE+53xxsuLpbgrUvgW<2HbB!_ATB+-* zQrC;H;%}sLlP0ylZZ>)gomPve8rEXGpZ{4 z0-YBt{-v^%;a{QiYK4EzB(ED4Rd1SRebcT0wdWnW5uJDG&P?Y$I=|3)pUxL_KA`h4 zozWWhJ0EJ?R%VO@b2{>o-~-0kqR<&f=W{xr(D_WCm^%9Xuf}}&`{6QOkF=IA=}1Vo z9bo5cI^WY7Pe+e^>3pNc2w0Y$&Ud;P32%!Xogb~zpXmIoJ2A0A-bTvm*7=q0WORO` z^QQrRr}KyA%Ac%9oxkYH4NtN5Z%h6|=U+Pi>FOzJMUOnbb)h@4;-xv=Ni<7d33ew{ z%axg&?o_&7cc-8`rG67+wbPxN?(}r0QRQ8GP}1Uh1Z;X{pgWUg%}95E?l3JSZ4p09 zqtvz!>CQrTINe!waqP}UcW%0~>r&pGL%r0UQ=e11bLlg*_wg>(TYqd-4D)_}71-Tc;~#2YLrso(QBnx}w}J|CHMU(Ibr&FLe{T+tO{(mCHYN z<)E9H{@iGr?z(h4bQhzmzyD0Ppt~U5o>r&H`HaqQbOCLk3hkJq(Wq_yySn+OyNXZ&mz3^mbXT{sYZzVA z=vqeCHvBq+c)IJEe0`&O5NynbbnX1NyRjuVspOl|-OM!T{U5qp7~Rt7Rz|lrx{XjR zB2?YG9o_BeJ}VCwba$Y;BVBocBk%tuYiGK<(cNX>omKR)tGlaEeZGE0`eJvwduZP& zzo*f?jP9*M=|Od}yaEz>it+jh7~TDi9zgd%x<}AGi0;86(T>*KL+Bo=_XoO%=^#XAs;J(cbgbY)0iMfY^N z=NaY(E%z>kY3@CAAEJA&b?bdr@BKy}F#4cSMXEgyR~kl`hDVIr6413Jp!;~G z^GRjYhNtLS{8#=N6-s#QK1cT@y3gy)pYBMV)EX{E(S1Q1r~~pveHEZZUZ(qs4icU9 zuj=EroCkGZ)5xQG-k|uB?wb^=(tV5W+ltf>_YTE;bl;`>8Qu4+H{aJw-SQf_`vKk2 zbjMkZQqdSKq61il^v86^>Hv_@E)ib)@e{hAsziEL3{xXNr;u3p1>NuHeyOimyQ1?O zx?j^BuSnCTcB;YOYC)~^dy1Lq{y;G)-5=@xPFKRUM7E!`A^nK`YsLJg0al~&9~2YO z{gduLbpN9JcPX!O|D`Km0cf=EOA549F)@W){x^B4xtNS%fMRlrsVSzQn2N%V0IZg( z>@*b9Q%p-S-T#)IfnvrI)2CX+FbZ81N+iWB6mtqsF{{zpjLvR!4xv(zVy=prn_`}d zpSNNhiYA4tA7;u+r^2J~DME@GML<#4_bTFBq0;GvK5SZdj4v6Ah$5yaC=v<@DdV-L z3cLSVWE35WoT9B`PoCy%Brm9$umVh@Vd^^1dI4T-B1Yf@}Uv6k^`Q>?E;y;z50U5fS8b@JdZ zW=L=@HlWzdoUoyJY$J+|DK@3pL@kt8Lqd(A*qmYuwY(hm#!zfUu{DKW>7>|(Vq5df zcDgzj+f(c)9YL{!c85fdVkeCWeSQ~;-6(cd<#J-u_vG%X|LgxK_M|vUkGhJzDE8K< zqQ&=-Z}BMhrT9OJgDC9BABz3;v|U~o6bBfUBLI7hDh{SNL_fKbAW$4CHd7o%aRkNT zIuhhhyYHAW79McaE6A5cjA z?|;8fF?t9;hT?MynKGZ56F#OGOJV2B#kl^PG*x2n|7Cv3s-*4uLL-0#6CJ=`(USrE zH9eU!<0*cn_{K)mw>Evg(_N5``R^%yFy_ZfA|F|c{AUV1|J6U${2RR)DSkJn{XuUc zQ}QRpUlh{tzjYXh89EyOrLg_KG**PtgFRV&#?zbF_(|wZOK(zo)6koY-jwtvr#FRq zSmvGhR)$b-Dtc3we4k3JRz1^cQkm)L%~0}MV{d@o+VqCen}gm=^ky;4%nFb(Ag<`m zN^drLvup25FNjqVi+Xd?TZGj;z& zphO~bvsYJDS}@Rxl##!TUXxxVN%@ACUQ91hnA+K*m+Fb04MM}`^yZ`2rdQDG(Ccbe z`E_T%NKZa_9yZBz^ya6xpcPp_!6-dW+Lr!k8t? zt}$NBUe=gpgo=e`06DD!nyKqPKwPt*&x;zU!^2 zj7rv0=KX#3#(r-dqw5-7&*=I_H!!-PQSr~l#%v-#wPDPrMmM9kc_rDxBwNzc-~SX| zD7|fT3F~c3Z-08*(c4}RR@8tUl#yuD+mYT*^rY8zrYDx~qCum#t4}hl_qk9|ON2r2@N{eJ<%8Jv|AfQoEf_(1)dUpAzcM!c(=p9V&XnKd(=snbW=P-Il z=o3fpaDC#CGu+;h^p4U!fD9p#Xn!3;PdEQMzk0_R_;`9J(mO%7c@pU4Wp(c)dME2C zlEL(=+uo`4&Zc)7J$u#PJ6%_z-Wf*EEY~9)4`nRv*%eULe;&R6bYAz)r*{Fp`{-RL z3l_bLbW6|^J8z(O3B9Z7U267UX7qBSR~Wrgs7-{c%H@fkUjCscmx5$E2y>m$>ov-W zL@T|K-c82bOz$>h#ErKKqkj@Gd$*hLj#5JJPI|Wa*Rprh)5|{wxK{x>2k)o%8NCPS zjimP=y(j5CL~n#SQ(pm9^*%!HQ7iZuy~iuz6J;%Cr2hVc0iLG!487;+*%hYVbAuSw zre=(y_ZGbu=)FwuMJsDpK>NjCq4x&8SLxZyf5q#YhpMc8|D}KGoVV$XrS}fKG4$T0 z_W`~4=;=f*0an*&dg{qRi3ufAeLN_kH;$hE_(LiAf2z&_+Lf$n!}E-dJGMRZ4{xWL zw9-h%wr$(CZQHhO+qOOP&HTHnyK{2aI;&Q7?YG{ly*sImQ{h9%U3`d{gcX{jnw+~E2Do`%Wq!N>?W-`bONx(!qTrJTKatwYi!BN8V74!tnpfN3)WOJP}V4{ znX#tEnjUK!Ecw_MYg&2Fn&C3bS2GUQ3|KSD`&#sw#9p-;X>OA_2e4+vnhi_8{BJs9 zwo8)moLKYAQq!6XYi_Lh)TrnGmYn|!j~Nj2X17d48*4$VMKz^`WY8?#Fj|X92)X<} ztR=A)!&+Q?O$h1!67p>&>DN+Nqp_AYJ(W`k>92*=GW_y&g6bQLmV?#Bakv8wOjN%7GVbdLFyA1lLJ7Awc7&D}KGrf*nMY=s#jSZ<(yOasEr+!t*78^@2#-0OG{~0^!qVbzbTczrt8m>GSgW%0 zk65cweulL=@dj9H;QfoWCXR`<7PcAcwP{_1wGP%_SnFb4kF_4wkyz_v?SN%mHpAKw zOP~2>ZB(!KtWAu9C6730ESqC(gJptlrA^KA->j_#VE$x~x5e5XOTYi4md3s#*1lLf zVVT$1&RDxD!!A{;I_jtj!yZ_BW9^Bx*Pyi_*{4bdYd@?*vG&I@V{!o2fi<$u;b5#o z#zx)U@nxVn&)DyE3ow8pVp-YfOQ$xI!(8_btj-(!8H#;>uy#rkFl|6K*sSU+I> zie=uUzhM1@^>Ynt-d4(BD#;(J{NC{YImGrit>v)(p*1Jg|7eZE`j^&3SpU%)M?$p5 zq6IDe{-@@t#&Ky)Kx;f&;}58WT<{ZC7FrY2nu69Ov?imaU%A&YQOx86FIw_=0a{Zv zUQ^SWnbtJ4W}r1Kt?7i;3{Go$QEGig0gF+d|EbC>v}U6rL_dD3b`1q#Vh8fbxB%FE6Gxg zWi&0T#?(33v{G6Qtqv`hRzS<6=5(vwDzX80X^X>FyxThP+tUjc+| zYg*gTs(<;h@!Fo&uC#WbwG*u!hnRP!)l~j^9Co9%C#~IS?NP&OyFUN3*7u=x9Ibt6 z9ZG9IS_jhFUz0gNTYYI#k8(h{!3_GO6xK~etL^qE;l-@D`;Iw>l)RsqIGperI*)=E|}|@+-{)t1g#rs zJw)p!T6faAS*dQJb-OCJs=Tctp>;>4D9K&4?$g%0Y2BmBy++mm845WCqV<5v2dgGp zP4RC%q9l*1d`#uz4dzK&f6#i0)seYa(0Y!R7JnV0Djcn*{w`jdtd1=tMhxB)8y{}&N6hP|(S|8Sc`c?5Ut#4?3LQASW ztxsv`!=LNcFKB7mZ+%(iK;qRP!48(Y5Zi9HVXxY*-W5$m}2 z1llxV1y+4x>`~a0U{8jv^}pts9D9n!Yf9{?YL}{y_SD!jU{8ZRZG)K(d-^eB&4@h< z_Dt9_55gG$_N;PQN0}XGdh9u{&&QqAR9zD`jr_`z}*ba7t?P3Smo*2cq zo&~Vm*dcaj#J!FcV`tb2wm$b;T)KnqW9QgC>;k(S7?oCwf1SXx*y~^~hrI^&^4P0l zuYkQW_KMgmjf9iFuOgQk*RWx)hQ0d0g1sj8T0^aCH{-J|_U72@VQ+%HKK6zNgS|n8 z#NG&dJiu$d%H0$J76D$y(9Jk*gIkGg}pPj ztoE^G7Qo)MBFEkxyLs}nz2_hz_TCEH2YWy4eTVG(i(bb)5c^Pt9i;MLY~2EAt6C0I zc{uhF*hd<@PEv;MXl$+U_A!b%7W+8t6I4IG8MnIltMO#)GgUbS`&8`HRX@#01I9k1 zQbbDc&cZ$$`&?~mb^!uAufbn{{Ur8<*bif0gnb|O#n?AvUxIxV_NCZYU|)tUCqI%* z{W`gF5C!{c?CY_0J77!w$G%Ql&9+hW8?bM}zEK>_u5*Op7VNvRZ^ga?`!;Nu3&gAL z#huvo%D;(tkFwoc0V*W+{n!tvU5Y=puK$%mjgMe!@wcV;tL1T(Pc)oQVgHEzH1^xr z&tSixB+sgR4trz@z3nO?_hs{{Vw*$ z*zaL~i2Xixz4&i1A61I7eS-ZN_NN1WHGVFa($g=ozs3Fv`y1?$`d_(Ye~0}8_DJz> zynezN7yD=If3SbS{vBJV03rOX@%;n)FYG@Dak2j%(*K8pxy1e#`#&5l{yMgjl{2<9 zIpd7ro$+uc#~B}IBAf{-J5ICycP7S}6lanFUfm~?OJSP=XBwO-aYo_j6i~hPoT)2- zf^`azpwl&8GvLf9eKC)Zc4oo}aAw9?0B07QIdEphnSIp6KjX|c)x8UhTKG)!pwUt0 z{|E0ifH`sI!kJg~xpC$(itwn!nNRKWHXL+1maaO?D2xmncbELBp&T2R-voX$AIGf-|*~gJ7z%=1(jfR4qCMNYi0Bhu1uHUyj5%3Fj!BV-$IG!+9*u@i@l`l}5xl0jDYc zRSq&HCmTGDo&`ClHom9hm{;H#IG5p^iE}QF9t1gO3qbI7{l_^E=RzFa0*L*BCe}qb zmnib$hEvXes#djMj&lXh)vC)BfTKSFAj&m3*W+A^bKL-6`QqHru-%071kTMk_u$-u za~qB<{wqAr?KpQD9p{e5au?3smEJJii}Mi9eK=b79a;Z3O%FE8!#IyB&m#@bV>tE7 zzrj3-^D@p;IL{di&eJ&0;7H{cKz)y%$9YkCWL{{D^7*g2yn^#4&Z{`DxO590tC&!&k>}IoRK3@>`Ddb`DW=veE|G1-Yr`5};RZb&a zGvn~NtS)e;$DLU|l5l5`!syP3D~CT)0PDE3nA2?BS#f8>okJOBuK>7n;?9FR7w+6* zF{7apcizDz?)3<92WZfytoh5s2*@a4siCl`(#nqbc zW{su5?I}Z9S*qx`%iyk#yR0@Xhr2TF^0+H1$qE%l^_3d@D!8jQx}N{k5!b-o0C!E? zbrdhV0Nk|)v2fSLT@QEt%C}+IP!vgcBixM#O}Lxl9*(;i?jE?C<8G&zEpWHQ-3E6n z+-Ci+qphvmR(|9))|X8jn^f>wlxD zejIMS_}9x5Ri32sWL&BIMsGMz!#x*QHv;Y%xLWqzGb;e@*|_J7i9ZkbV%+m_FT}lI z%%+PPPMHWAhRg6)!o3`CIovC7|Hi!%_hsCxaLs%3YTR3Kufe?m_gdWRajz5KrY}ap zy%ATBecYQG&RYf;+}m*P!Mz>#PFy|zQD5Awlx;K8gE0?o+tW=;hN5;91<~D!oCzfcs+8`qB`UsWYGAzKZ)6 z?rTc&I_{geZwxSv*W0)s;J$bloZvwmt2QcCHCdQj& zOv_|=qwprjn-WitfU0c0sRX8+cvIs|hc^x0w6*WhIN;5IH#gplc(dWngg1)@npu*m z-Dj%{9!1HxJ%Ic=O^dfHxoB{B>*9FEe7^fLVb$CGnQVTS}-J9tBue0jVT)xN@*_LcE|##;sNQoL314#Hav zZ(F?8@ixLUpZ~6pwL ztiAE%s0VK!ynXRxUZ??vO6&)yY}WtY!Fb2v9fEfh-l2GPc$Or|_Oo{mIH*^{4S<<&P(Gfm)s$YJCCkJ-iq3-o$$e?=`%a z@#^y*yjO>iuZz3z)KdW7TaD#yym#>4t-*Da_wl~M`vC7#ybtj{R$rY0gk-4xd!ONb zp^1H7G2neE%=IhzYrJpq>f*1k@9=)a`yTIy8df8J8uI!D@7L-QPl`X@?|8b@_x?~4 zodP_a0;KgHy!y4*#Ql%X6!>EioQ@B{Lil6jUyMHv{+jsX;xCCm9{x=DKLP%v z_!Ht!Ea80J0+<)DujfD2nD~?7PhRu;^+y1bj6W6rboit2r_sy$2nb)NfZBI@{2B3Q zkWN*DQ}x=P8Gl~8w{(22&1N@DRj=v%P zMpbJ=xCy=%|C()c{2lSPz~2skOZ=_z<>TN6ybb=gm0nBX+#Y|2Dv*ZQ34b^Io$>3F zA2seegx?*15B#S7*Kzm8KMsE%{KN3~#XkstKl}smWm0IO*Tvsl;vcN?5d1?20JR*B zf0Qam;2$YXHUH5@!9NDSuKbPtczpBDIsyM=e69b!d`!@^o`SFS->>U`V?P7`Jp429 z&(>J77f|IK{Bw;m#Be_Th4^Ex|NUkb@Grst5dTvA`|&TszZ3s*{G0Hvz`qv%O8l#p z_Ns=znF6FQ*WpXq$G^U6H4^{E26;37EmbD?x8mQ9f7=l34$&on`0E-*U&^Z2jh zzkvTT{)>(ArAB!L|26zq<#LQseFOh(W5ItD|E-Es+1|l_AOBta_Xb9VeNelL%SQyJ zgno?wJ^m;7U*ms@{{{YMl?#4T|NSqOQ?~%xFTMN*|65hQ6MWs@AMpRi{}KNeeAxov z%i%^96#rNJKk$FU|GmODUVq~MRVOyW{|~-N@;_t8|F>ocO#P?!t;Q`FhhRE_aS0|P z7>{5=g7FC^7!xxQfs}oMiEF#)lU6#xbW~mtjJX_;F2f@4qa}vx$Fc-nx!%-@oU_OEc3FarzPXvZI zHGzc*mLgb$pvq^_#%nQcmBl~75(G=unV9^|S2u&D305E&tr&|SBWMwH2y6n6K#D(s zD=wNpflnYSe}bUmZ|osKLQtRo5a<>_V5x$;6-@PSl!ECMJAdIbGpHnlHHuv~*# zzG@{{kzgBwl?b*XSealGf>j8l)Dx^quo{6Be*x>=F_K_Sg0%=XB3N55rv=g) z+(~e2<9-{#?V60%f9;E2-lg(xmG`K;*GLH@>D^Bt=RX7wRz?Dy0)mGL+ zspVNPG!AAtI637`2!D}jI3qbG& z!J7o{s4iOo0+|tnK~jB};Jx~??uASN1RoBJ1RoQ8LhvoYrvzUTNc|^};!hwOfgv`T z0tmiV*=zxX?K|a^j{pdMAox)MQvWMof?sIQMer-_2?%~8FtFd7rau&{>;K>{)&Exc zPvuVVFKx5n|4)qVu_~j;_swf>Y?b4v99QLdD#tfcl4(y!dm2?HqCGL~DQN3N&~A!< zdopdEyh=tx$Sgp6DwU&D*6V*oPD^__+OyK0UYlkxQtk37FzuOC&a85%{0Hk|9JqkIHFdxOT<)c^Lzw0EGr3GJ=aQMLfIH&ZE70PQVQZfT_W z3dz{RqA+!%v{UDVG*FkIAy8hEXoc1xak1!a89ZCDBMnAf8p)Feg+Q&8a<3*7U zo=E!++9%OIRWDCgDN}$dr_sKI_UW|Gqix=Urr^urKkc)OY%u3Eoaa^+BWa&c`vTe* zseWMvrd@ydtHw)dUr+lo+E>%Qoc0wB=1SUE)#RFk(P>{p`&!!9)%LpkH_*PBwjBP@ zzDYvYIp0ECPl4LE4tQwaUg@;ugJ5;JOXb~-{a!kg(!P)OTeR<|Eo*z)575>lAknq{ zw;!hc2<=BJug3Rr+Aq<5g7$N?rT)`?igr`{+t1LJIbtY7ssFTJP+8Z1)nBeKv|pk9 zD(yFDzeZaszu4bOnra3q{!QHf(V2kuzjVf-ZO(t7qxFB#@y^(_S7%&0;~SmMc$H-! z=}bsxB05_3I}?u)t20?0s55z^Oi38hnTpQIbVkuRiO$q?Hl;HSoi?3m>HHs^>FCTw zXL>rb(3yeGOvabaj19xgqG*P6X4NKL{0nAwI&)}}a}K39H=PCP%tL2>I`h(*uksy8 zItw&x3(;9b2^X&1=`1Qub*#ncwCF5OXK6Z1&{;~6GDi$yMprr=t6{L|cyye`?lyK` z-Gd?D4xN?gn8DHV-iheMbadI@(J7!#quVg#be5%4(CO1D>GbMMs=M5ggP;bv93A=0 zmrk?(@2n_sYvjsw)~2%x9a;0!Sykm~6@bnfdbuVYDgHy8>(E(Wo7PpiUe!ux13DYi z*^tgg75_le*`$fM8Jz>^Y))qvI$O}$hK>|}Iyymgwic?ov)j_q)qZC?<4b4z%C6uY z>Fh*j=K;SOccrs0o!#i{sh7K}*B(vWz3A*+<0V`@1<=_~!CL=22N=D%V{=y^ce>x{tcKJq``F2O=6gp4S zIhD?nbWWplEuGWpTtMdx1)oXhJUVC5IY+6^ZaB}aN$L#GZ!*7-&J}bnqI0R@WeY&( zlBV@C@sb=auPmxxN#`n6uBLO%z^;zh(Yc+@^>l7lzzr&IRC&_?N#_sRBNt^Kr#Sr=A7qd`9PMI-k?|l8&zbo6(^2 zRmDc<8#>?7`L^<{qR{!iY5kGTPt`wh7z-Wq`qAPq`mf?5%I}0T(fNaL9KHOL&R=x? zqw_Z%)B4YVna;lh-6(`(5kfe2#ZyNN$0eMMa6H0^g)P*%Ae?}3LUoy_28+8)1d3_4 z0O90>Qxi@>IF*8@tT+`T>wi_IA)KCYTEgiDtqPuju&(@-op5Htg$ZXNoQrT)#mq*i zWj~y~!PJX?ZJnENe!_WFpOOO{x5L$$b5-v$-I<+|AVgjfz z(#<6*op33_X7L}^_1};Xwg}sVHlau85V~XX`-H)8CWM{AC1FIgG+|8mK4C(524PCL z8)27lOTvtBL&BVJ4Z?zOWx|qB>%aMSS=cv$2zC7*>Z9bs<>bGZLw){RsLy{3_4#k1 zJpZl!ALnot!d2xH3`=zT#Il$!nL(`>!@5;ayHM$7#X(>3|_wZ zCJY-9Zl3B;0o1Q(+YU9pU$c zKN9{h6#6H^e+YlpD8CT?LHKJ!`x{|>{v#HN`zPUFiu`-PP$`7}5=~9`AJGIvV-e|m z5kaJj|0*BD5RFST9+6c30Rz#5M3WOuL^KJ}#6$K;iR9!*EY+w+QxHuhnM6}Imb&E{gVxs9yXNE!9{?6Fo*`5$!|N zB3hfsCR&!rAu=W1CGv^90fSM90;0Ai&}otn8@8AzCrXIY#?mFqWRIyss$K<=RDL2k z0#Zw#NEiPjnB|C8BU+wlWd*E2v?9?;0}^%D!=GqXF;+bD}MYhU$N`mB8v=Y(umIkskg; z+f{a=?VHveiFPB}iD(yNA*y!)L__C4(e6Zh5$!=Fdx6SP!CL?8DEktfO|&1;F+}?l z9YJ&e(V;{K63Mck=%6OzAwvvW|D%!mugD`+9;H&Z0Fv0TM5huRM|6_fk0&~TNInHH zm-1Jqak93a(p;WKbf#KPC(?VZNTRcbT+Si7p6Fbn%ZSb+x|ryEq6^iluK%jbS&*S6 zx`}hZUJh`bwjN;5Zz65BhhU{Hxb=j5fa@(G;;Ez z5pO5DQ~B>`FjD^;{T`wRiS8wmnolJ4zluWifG9Hf4-q}0tq)fg)gNsb9w(lT=n0~q ziJl~SkLW3)mx!JwdYz{Yvx?(Qib568$crrRk3vDf(YTe-9jq{zq&I z{=ddT^xwcPmodaz|22Q&afv4-9*=k;;_-pTG4Ui~uX+(rMm&mma^fi( z%ap`23skuog?MU}(-2Qv+iTzHi9O;Oi031ok$5iRnTTg4o>}o){A=WF#B&hOF7CBO z>%Zy>o?GQS#8Uhl%>2ZQ5idZzFmYY{i5IF`6~74aqQrXpst%d~j29;!O}qqgQ~cwl zi0k!#!)y`T#4Wk3^KppX`jt?Rr%${BaX_3Aw}~U-rvArG{f}efRPJD$RKCRBiqJ^n zoLDP=ToBjAU+sP3<%pLdUUoR5HZ9-qtVp~j@k+$zAwMe#G8<8M!YHU>%>Mmgm`n}y@|IV z-i3He;%$hv{!56h8_sQscOc%b%7<9?1&zKV@lM2b<*)EY67Nd98}XjRdiWFXQM+hv z#Cugp;(ZjnFY$rI`>DRaGzmj}1Vk*wpZMU)Zg_|fCBB6CFyd2)4<|l`_z1-usq!e| zqXj%N4#yIoKzv-qKzw}FN_?WSokV={nD|qP&mxxfzxg9Ro%jsm`kVh%M~KfRzJT}~ z;`0=9ZpA=+e&wai7ZP8rt#$oxFqabFO?(;gb;OqwU!|BUh_9^3)%R-RYt`PI0%?zk zuP45R_y%G*^C50_0irjvKzu9l9mKa0-(E$mB=McZa`HbE7E9w#A$A}*tkPtsk{6tMyXZRHH3&c+oKS%rw@ksrzV8qWi{4Wx}Li`f( z%VS1)mAF~_*PL&Vn9B1e@!!O65r0ekHu0y#?+|}P{4VkPI%w}TAwD4fa7<1){~`XQ z0;v8O@t4G(6OUQ{I3(i^bCQf-vn9(nVMuel4(eq`meoKwr2gG%t$gD$xI}( zkVyTn@*$bEQWQKpNwfY>wEkD4m&{F)lFUQ0G|9Xqi;&DmvLMO)>Qx{93yIgsRZl7mQ&B{`Vn z2$Dlc4kJ0V?t=D@}TNn|3ZVpWnvHv-8;B$tp}JcPfLn|j~lKf6mzelwDe~@VLR|d8GO*#q5KctYz%auge|H*%(V-48E zo{mjA0qHoTDrY= zTi0n?*CSnjU^fcshNMT5ZbZ5Z>Bgj6l5Rq}IcYrwkZvX+>H)8hfJnC@-GOv#((OpM zA>DR>X^`93Q6$8Uq&tyHD~i|%8PVgQd9r; zAC5(OAnBo`2a(FL59z^UwjM^>RQ~jcK@;gwr00_!O?nFHF{CGw9!n}^pY*svo}?!X z>3S}do?MZTo=SQa>1m{AkPe;yr_B~XsLm!m*WgKIMo{HEaj*M$0qK>b7m{8~s*C^H zehKO2q?eLjHi+K1U(xtpMS3mi)y7UbRR7cKNN>&HBIY(W|7dYtw602-1-$fb=cW z?@8Y#{etuz(vL{rCH;W(J<|8-|O9dwVt+J5H;ScGbr1i?b0sKR%Wj`I< zm;dOFO?NE1&H8`Pm+m+ds-RbDoEB~P;nGw`wX1a6IorUh~dO54g*(xO6 zdJCY&x#-TTicA4?=V=(`qpM}VD_elZ*c<_M7p7~|U4-rubQh&t=WJkf7gM=-NS-Gr`7H=yg$_3Ne@*`^!O?a&Pe`KXuH|GL*H-JEV$JCX@( zBy*|%bn7D^x_!FK)7ABVSL(k~Ehmau@pf0By9(VE>8?z7B}v0PZ@ginD+fW1%j$H` zp}Pj%-RZ7LcOAOA_?L00X92qF(%qi!dUUsxFR^sjr@H~&&FOAPcO!X@$HS)A8`IsC z?k2)q_eG0;otPH?&o+`LgqX*kbY&MncWb)aRCv1E(%o*zcL%z9=HJ~>o{rKrKkH`X z&gPS4O<>niGdx0fH|c`;tl2z`T-f%YyC>ZfRo{#5-gJ+pyARz1<(VPfeMc>Bdbc0l z{plVcUgil==GiItEKYAo?KnhJ%#QW+J#f;%J~o7(~UG12`85_1<*Z9<=I9m z_*^pcb~umjEp*SPdoA4y=w3$m!s;<8bT6WNvH5v=x|f*eR_TacDxdP3hh;5c-b9zv zy+Vyw(!GZ6RgKrx64!jpB%`{TM!Zht^>lBbd$Z~{(!EKNS4`u0E8Vx~-bVLc9f8~F z-a+@ysuy(cGLHHpyqoSlqU%V~y^rp5bnmD8INb;6KCJw*{-^s;gE6 z3A)dyED$zDW0_ibUiClhS>K?yHrqfY)UUX?_Nx z`v%=N#a>4=FN1&SzC+hEy-W841;3~A{RZQ~7=4E9-x{LyQ0JFLeK+`zzf)=>A4m5C1jchOpTM$P4ms zy8qCv-{}qDKeDOF#v+@T46^YgL^d|rIAmj<|77EnO-QDPKj!zUst#roRXpl73E8A% zQ;=n}$s5e@!wi+4N-7$!pL2nfy)3%4Q&&k!+@#r@9N-EMzZ| z%}TZ_*=%Gv+3aLXlFdOjzveI}*<57vkV)~cawD6UY`#jbjARRtnUoeJTZC*OvV{j= zB^g@(XN!?7K~@)kA*nN2imXkxG?_y-nyh6Q$gHN-9zwcgKAATNK^6?@9Wp8SWODvb z7BvhBnH>9*rHw`Fe;vIbTaT{kwwi4MIWGj=c zMz#uBbN*9#2}85~&(5vWE%}4l5Nt& z-HdDtvdwFEfo&`<~j$qpdfi)>%Ay~*|&6TctXnCt)SK(d3$4yp(%X0k&X{=>+QCOe$0Ui_0C zN!HZ=Ix8*yGGfOzc^*%8I@t+iCzGAnP|5n=0LV^Jc`BI{|0<$d%< zf2j3bvJ1%0BRjw1sanY{BpdVOKf8qNcCt&!t|z;U>?*R$$*v^R#eZ|h4GG!RWY>~i zQwNgJ*9}Fyf$UbY8_8}~@J&s`Tj~Ua;kF_D4zfqd?j(DF>@Ko<$?hi8;$H<7{C#Bg z$$#ZY_8{5AWDm(@lN;G1O{~Yro*{dj>?yJ*$etWvj6$aC|N1UGOZGh3bA!GZh3tif z=Owa_$X+IUNA0hWy-M~5*=uC4>n~+YDahNVBzu$Wt?EQko;jAiT`|a$A+vYMwD@Q5 zlYJoPllq)DGW`h{3HLGC51QB~8s$^6&&a+e`>IN0$-X7~u8!3V zm$v>$_7B-lWPgzTO!lkEjqI2D%rpBJ&8lQ@#GGEM$LIb~RSD;$O1=q}3#x zk5zl+V^fSxJ`VXFM{k8Pe?uy`84DclTWUeNysN9pUmj>tugl{ zpMrc8`IO{Sjd8#7sRuCfY02flhkQDf(^p9H8OdiMpNV|T^PhZH@zp5gvy;yuvqm#e z&ANj)M^OG+izWQiQ@&(BkGV4`Y$(Utfz6kkZjCoT$A6?BVF1aTwuG}YY%MvaR zOj8rIBP%6=MdTZh$K>mfC**~?q~u)_S3_qibGekUEy-6V?~yNO7Hs5w@@2@Etrl;> zFUIA`S5#$%%C7oKl}^42`I_XblCQ3@Rx`Bn*u8uW127hmlI>dBy0($hBN>WyjY7Vj z%JrN4HzePld?WHLv^yJdJ-N|>A%W`^7 z$oC~bfP6oLB;Q}cndd0VcpgZ8D7m>!2Uk5MKg8r|06J)gDMo+)R}&*YlKfQiqsUJr zKbrhFjdBe6vC_LLd5NoMLHP;Qn9EirKZ*Qg9nw<@NVAV1S6lDy=0Ho57z zP73+CHh0`g19FC@R1{GzEom2W=C7j*A@NmII%{4)7rAX661F9F@X zF!>ea*N|UHe%0W6yyRD_*PZ0ol3yqKtE)}*$cc)-f!x?{B)^sXCUSE(Zx%Ka;`;C9 z>5k?H%ktaE?=ZhWM1K1y-jybEFU&SAzl;1{^1I3JkzJ=LmBwx!@R;96{vi4N>}A^({CQ}R!yx>YyV(%;W&9*Ob=`FG@B zl7B<~75UfVZb(dbVdG5@s%t z$4$##-VD)F6iZXI6giqg7yorWHifHkbqbJFb^Tx6mm;9JouW;#8%2j=J&KTGHHwI$ zPZ3iT6lQocij+cj0ad>$g(4qVDD<;{qSrJnL$M;ovJ}f33&nCn$Q6V{j4M&du|LJi zl|}V>7eKMPUap~XO^UTuk*@%$?>ZDx`KwE9TAyMoiVY}aolmhL#YWO9y6goiFvX@6 zn^9~*q3iza~r^Z5zk!DR!dRfudgdH};(=cBRlQz|i`rke#U2z# zQS3=^Fon6f`x-Bby(#vo-1TxliUTS3r#PTC)_ojV|5F@7aRkMo6o+e8G6f7V966*P zO>vyk$`*j4S^pQuQ=CF^0>w!bCl29H7F{!^IF&+DKistaY=Dd#L zCT+T&;sy#izZ%N|i|G3pc`$~zSAQ@l&@-k?>3elXyn z_=w^QijOHirTAoEHwwjPDnA#ajQp1r-%xy|Mm_(pMoEz0s`0xjVTvCpXQKF#(iGvJ zDE_ASnL-!*#V-`U3Sm{)i{B~!r1(QDb(Fs<#Yl>OD95HSq5sp%e``!R79|6iewgVNi!Ou*&809RKb5YJpIlD}MiMWmEY}S^QT3$~7q0 zQr|V3{MV+G?*$DptVg*8<@%JHP;NjeWuJ1x0fw@!|CF0jZce$G`07|yl5$JRZ78>@ z?37#AzLKh(|4?q%Aa|fVfO1F5eJFRL+=Fsw%H1e;q1<(t)994D5Ap0txfkW$gRB&= zugd*Y?r&t(N_imVF_Z^U9!_~M<)I2VqykVLCW?Y7kDxq?QtSVS`_WD7v6LrK9!Gfs zr7Zpj(J7lFpz>tOQz_;AXDC}){~HVC8I*TZo=JHXdzq6n=_0jgY~^2*AtBv(`3PI(RGO_bMCUQc8KT%;QpQ3!0@@dLvYA;Q|=#@@ZY4%g{*Dujre1!PoT6{r!fXdFy>k&!_y3-jtNzQ~pc&1EoR!s8m0x{8{BMMmDj2qx_rl zcgjC0N9w<(Iy428|EOi)^&h=)>5WBCSN_#F^v0$)&IogFJbIJS8($*!^zf%Qq3RO} zRZqSGL~jz6BlTYalhYge{I@q1y@lzGqBj@4sp-u`ZyJS7YosdE(UZd;dNZh;(MV|$ zi>&|Y&7yKvmGa>)z1daHQ6cHg+2CahOm7}~3(}jH-U9Sw3ZPdn{snJV5n@@Wa#4K| zdZXzrN^c2z`cCOBMsM+odehT3O$_&ddtw0YEN%jddpP|6^x$F z1-%u;XjWN0S^U#mrNYo#m7dgpdb0kPKjB=H-kJ2)qPG{lwdrk1ZykD@YSX&(o(B!- zhtNBgo=gPhkKSSQ4p-#}l}9T6D3wR6JjO@?3(s+iIiB9B^iELyM3wsGpWexeIb{eh zi+_5$5$K&UWIxN;Wl!2WTje<_&sBLIz4MJSYKaf^@vPfyqXy{k2!W(zR#8n~X`&Gc@l@}YMlJ=qi($HpS{pPtSIy}JI> zyMx~I^zNkh1iicH-B0gsdiPXb^zNm1-Fle;#_D(ffrT#a*TK|=k z{^azhqCW-wDaZ63HN-Ow{aNTwOMgcC)6t*4LeiJ|-{>y|NYtN z>*Bv@Rq$N&=dQqdIWPU?>CZ>sqd!0WCFw6f-*7HSe^L4i2~t8VOn+qk-$Y-G{^E_k zM1?e$^p~P<(_fl?i~eZ(R)rD37z5?dm*QU;>HG9E`T_lfew)57`}>{Bi+)5u9(LEP zQu^J2k$z6Uq+bkW(xbnOB4r9NNczjtUvA){O)Jpfg#L=!x)S|$>90(GHN9Mg{;C3Q z(x$&U{WY{{O_ggYgB%3u&vAmItBDMq_6eAUoZaEcT@VCD`vBbMD;DS zX-oQB(cfA~^e$-Awk%@?c02la(%+u`x%79SzZd--wN>kXU+O>oUFd76@5>ZGe>asf z1yq6P*HZxfz3CrKe;@h>(BD@8g4ZoTU#0*}=0N&~(Lad3toi95+}IDT*c5X({iEm~ zL0^i01rS*?97F$f`p42giT-i)PoO{M`oG_-|NAG?KUE1&X?#x`W}|-w{WIyGP5-Rn zK=kzpNYXox{!R4Hr++E^3+P{B-05FP|03ZL{o>lO&h0Y#*V5Pe-@k(X)%35Ve^ni{ z=?nd91{V6)(Z8Pljr8mKFNBJuf3t?r;@{We-@i>QI`#DL5Ry9XT`V&h{k!SENB!Gy69)Gwg^)Ga5!SGqe4gnVFfH znfc7jd}d~U_OD8*XU7p271dQ)*)7d(R!Mue_psYS9bx2A$D>9t^2E>?o?_$;MxGYQ zGmN~%h&=)@qINJcCPgyxyzC3IFIufmCD_Z1Nc=}^{%6Du|0Azw7)IVS#|YnI#KfNw zYXoxMHOH#nXXIB#K42sr<3D8NQ${{wkT(iE1Zu#6$I zGvu7hQ`mvR3KX`cup)(ZDXb*smEB&eP*|0MX*-40D6B4L4RMi&p`f6bTEzn`Lt84MWs!pB|3Zm^#NS;Gg$ji( zg(`&>g&Kthh5DeDf?fgTSKW4JRtvDJ=uy~=g6Y4u-Za~h!sZmV)V_KI$g^9y>^9EX zR#n@{+WQ}s>`37%3Oi9ai^9$nj-ap$h5ac={|mcO*oT6|zhL6864QSQ>I;RvEof)k zm%@G-r(-^V!od_I{)Ruu#SfwIKMIEqz!VOnaCpY!Fh^22fx=M~j&}UVP&n3QkE3vW zUY_rMB8Af_oJ8Ri3MX4Czq(T?SQp62?HFgIOA15tf8lHj7o-3R=g6Kbd!Fq1d97tH zq;L_1%PCw;;Zl)Yl49gsmcz6!g)1nG{s@4=)f8T)a1Dj~DO^k8b_&-~xP`*?6mHZm zH#nY~DBPU+86gGJe_?KOkvk~dL*Y&ece%*jgWW0I>!|K?*#{^*OW{EZk5hPv!Xp$O z&bP3OdXz#w`8)g*6rQH=Bn2D(v)#?Hn`ZOBoaZRKKw*sh=ZDx#|0&q~?~t!h_?*J4 z6yBro8ijW#yiVaQ3U5%5_`8pWg6V%+p4C!#H}fgHPvH{^A5i!xO;Px82=j67+oqpV z_-tr7mV(~!7rvnIr3$~I@b%~xR`M-{AJP&E-%6gtPcp-&9@n)j%7v7W<{>Dp%{r~XBp`aFEXZ|0jDzkQg1!NbLwHAQ4aB8zN z<1MPlVt9+oSz>T4cuN}0@Jrz>ZE@WJyk+s$!&?q-ZM^02R>fOEuoWFZEx=nDZjesKjkg2dHh9~K!Sr8_#6S0U#M>EfCri1j!?Q;KG3&_3&1-a&txCZT0jcGJ1cV( zJO}SXymRp$z&j7`7QFNEuEe_l?=rj#@l5UUE|R@C=eLOU0tGKO$M~;2|{_(fO-&)RAL*Q)`+17DxkH0(q4){Ca=kNd16#mZmyW;OM#JrpN z`F-01e_#AP@%O>s3*Wu`AG&JovLF8bLktJvzkz=c{vG%SyBahvFZN|3Cbr z@DIax^S@of5%@PX8+g?up{i_`R z)%e$BJ$9WMe-^BX9F1iSo|+j82%So5dSN4@_YLY{%`o-;{S~Q9sUpa694=T{D_|` z|IkKh3;1=2|9AYq(k1>M_< z6HHEE`cE*SY_9(V6BA65(*~0&HCbw1WD0^Q38u2Y+-0>Ae{-hMa$4ExGCaWy1hXhI zBf(5^X0}vzH-cFenJrt&pMzk2f;kE1A(+eJ#+-Kn0-OI8aa|x-fWW4Gf(2z4GC+Fs zgGC4yCs>qVu`J@^L-T)N;!mJP5G-u~TP`EJZ2l9>V0nTL!3qQ$60AtD7QspcCiny^ z6PW&6q3yUDfsOqHtGmdWmK_DGO|TBZ`UL9|kSbG1Q9`)rBX{!w5)a{C=t{M$^;cLIQmQCD@suN3ab+ zpI}RZO$lt~C)h0Gk-tS&LXe9;f%O7yy)D5G1orYrNIe4NsT~P+%3w$sV6tS9_u&Ct1Yq$;kw#$T9sVu=(Fow)GhV7ZaRG za1p^-1m_c+O>i#3Ifl`{b0IiyfLDq1Ke#Ys$WjEC5L`!aDZy0)ml2re6I||gxze0` z$E%gPhTz&!S_5BCa0|f=1UEY5O#~YLbthGIE5YpqHvc<}=Kq}eE`m1*?k0GW;2wfU z2{il%_hop3`w1R!{)4GQ@R01o1SbBLk|lVI;Bkk1!Udlqc!l6;g69dIA<%38;MqYT z!I+GJ;01!0#5|<`!OKHP(|-c>g23s2@Fu}W1aG;0-xk9=1nP!5qwQJ9l`Ekgp2&MVq)Y8JzH{lF~68UgO z!kGx&4}Wc6>kC58MmUE~GP`4*Q_Eccg_(zNQNno%7bKjIaQ>`TseJw?H1Q`~m~fGd zC&Lih{7<+zVQQuSx>5y~%#egj6IKY9AzYtuS;Ex`mm^$-aCyR&2v;yFBVW;RuADgv zuIflubIuxsYZIFO6Ru^!{NAoZXv$BxZWeLz4G2TR4GBHMjR;2wHzwTVzZh!-`KHF; z69yK^nIl5I_7Bwp?5HKevO8@uT5G8)Va-zJ*JT@oO~O`&cbpx=QrdI4zLs9u7o?QaF-##ZiIUh z?oR0R-(5c8Uaoc@!b1r6B|Ly|Kkc%=rSf}nAmPD;qvG#Qawy@Eg#RNvoKP(w#~(3N zdlcc(4u1@xiGN1x$d4yHAq^6qNO%gN=|ADg2FtJaRKn9!Frm%=a?Z${)DoUWc$u8D zWzQizm+(Tu^9aw+V1y?AZo7*JFCn~m5D}q00?4_X@D@Tfg78Yh>%@5#q4YnzM$6F_ zKzKdjO@ucP=KAk;x!DMF&RYrZCA^LBE|uR-cn9H~SvI$Jb$1iqGdLCDeT0t?-cR@t z;RA%G{6pD?vyDi^e@eB~nFn3M1Lol@Tu{!FMJ2ZTR5 z2KQ5d@E2iB{|SG~vS~TtA4C(&`IGQ3A_&z2ES3KGC)yRS^-5v@YB9?_~q zYZI-e`07?-fHjDu|B>{6^lq#}G%Ef?>l1CHy*5zQhK_$@q7g+lF+w|x^grL-C)$)K zAZinZL{*}QsF)#D6%&WI)~^yqH~RN^yID!L>CfWMRXC-rD>MvVxmh1yAxeTbcN#iD*42Z-(?x<4n^wGcf>^w8kIX^Q9(A{+RL9wn0g=L}B}J*D`Q8J_5Aqsp_X{=Y%= z9MQ`}V~8aC(ep0*B9V#zU?ZYeh+ZRl^}j(k|3_~Uy-)NO(K{)C=xw*-yF~BhCHeV3 zAo_?XAO0<6_>Ud_Q=&hKJ|p^$=yRfPh{h6qMf3&Hm-b9IdVXsJuIk$%|9hfeh<+e4 z%_sUX+ns3W=fBafM86aLmZdUIqCXt+FNzTTP4rJ1AsW63|5B9xXV+33m*RwmDUL^R ze2Uf!1}CxIixbIOXOS~0#bqc?MsXI3lT)05;uPt>QKmShvQx=Uomz)a{{^#q^HZGO z;`zR&{}g93m^t}V0L57;E<$lOit|&Po#MO{=b$(b#W@9=OZ;;W_^sRyIo}{caRG`8 zQ(TbZLRof@62qbtm!!BDMH~AmF76oe0}Er~PjP80%r3;1%TioUCCkf7|1G|vV_2DD zm*OfEixgL-xUNW6qqw@9H7J_wQ(V*G*QU5m&Y$0t^(Yo7u1|3zl}P`K8#?^P6h|ly zJp$xa_Wp;WPcfvZ`QLql6eCv~Q>=)yBx_Fr6z#V?sJ2S6Nzvwiil+Z^8s->tOUt&4 zTMJOUM{#?KeTrLB+|*?^qqw>Aw@6{BPjM^RttoCxaU09#@$E84Y&%fgkK&H)e3Ek+g$bziqBBIlj1`Z z@1l4g#k(Em9*Xx4Hd2+|{}&&SpFagqeAxbNZ}Ab?N0rL;pW@>bpU`1U{3+Vcen-t#~ zkUIwJ1={O9iZ=OEeBaf6Nb#d#JjG8aej&`K6hBkd=M=|g46f=+ir-TFisILf`5Q~+ z=lM?M-&6b{ugZ7-iFkR6KNC+u@fV7J3HB?+-{kyG@ejxF=b(_{-^3G8{6FGxDgHw| z4#j^nShgdv`zt{4cxi-q{48#q@r1;a5>G@taaKZ{zyEi&lMzpzrBX{gCGp(EQxVTd zZ2C_;4e@kx>{&pZ(-Y4yIG$275zk6&;!iwF29rM<@f>ny&+x=^5}WuB%8BP8POIi6 zUWj-;Vw?Pl=Xdx82Vmlbi5DYYgm}?GxxkAPFOf&`6D~=-46*b-UV0R4H)L6rEa&)F zFem$T;+2RmAzqnyGvZZ39-%pLYn>$wjiz&w~1@S zruoEm2Wt|yhB=8l#5VR5+ao{kCi=6+Z}H(+x8fa{3h`m zquKnPyiNSEkna$`OZ;B?3#PPupV-EJ;tyFg=|Bupm#Q*4?nEq25N7lrj(zvNj zw~#-+ZC$cQ07?_eP9!_A>?Enp!3LO2C6iN{LfI*^ETyR^O+7$TnpWBAD9t2idP*~7 zB$VtC!1*&PJB#eBva`vW{!^MGwc2hjN{dsPo6^FR=Akq{CHwg=rTH=*VHQxt^qT}P31W!IBkUv{(wP}+!6LTO`4fk-x?G?F^<3zTgB zm+xCJ_d`mNc#5*Itm!|ca%wXqr3$4QrK&AeOQ}w&L&@I%P-@DyWZQ$P6iLbSpHh!f zU)fCuSxTEz+J({?le{XTIXcQaXXsaY`LO6hBdslZGOvP&%8E=|82@ zWKWkpLp*27o;AQLW%^I)TuSFDd%o-ivQGT%oEKAig3=|F9-wq7rJE^TM(JABO8-mJ z|I(F|u2SvQve%?G#mG1Pr*ysS4YCsd(oGpaky|L;P01R8mbb~?PU#LY+$nq45U0f7 zXw?x)_ffikDEpwwA98FDQ+h-UkIFtKJEZ@mCn>#1=_yLjD`j1P(lfHp%04GMCbjmj z-AmRK?2p|aoBt`9{!@BI5u5)hy(Vife<-~n`(|og)!UROp!5!=>tmdiQ#<% zh*`@IDSbrgb4u1M6!}Ed9|3K+S zA%BwnS@sv%UsId$3z@cnKji$W>|e5fXBbMuXa1M+I98bQm!X{NKjrZ#YyQv9Q=X9W zoRp>i<%uazCHy3mCzT`dFX!_==&aR_hX zFR=8#JS*kd9CCKba||KpqC790 zG0Kal<&>9@HBk~^NrzvW@~)JZpO-jVV)l(!RdTNmG+@(wvH`#`OBC(1ih-eth1lHDjD zFK2hkdr&@%@}86rqP!R711RrJ*@k}sr2l2pf6Dt0ok9Aa-@St=A1c5h*)Ej-XHK3y zobpkkQVS@%7EnH#^0BHqW{B2WfPyDbzL4^Xlux5<`cL^}*;8asO|AX0TYWm^b10ud z`7Fw&|5-e>l+Si-=TesJm(R;0Dzp|L=OPOl)y1-xP`*^oWm#NQSCA}7`AW*4Q@)Dw zBb2YEe6zi5DPKeRTFTcsw(BY1Ncjd^ieFTD3!r=p<+~~0O4*cO%(qj%Qy6<*P(=El zpY0yXHtkcsm-2lBPRb8Zwm1Kjtp#Lp$`6}k;72LHMENnwPYYu$fbtWRpQQX$hH-m6 zL-~2i694jZl*i=R(UV&Xp!}l4zfAcZ%CAs7v^nO`!3}V zD8HA2DZf8d^&#a?D1Suxi)FNsC9&b(z`~P^ zOEN9Vcq9{(jGqQcCLodQClltJIdT$`DFm35WHORm{2kAfBvX@En{W}+f9Fp}GCRri zB(sprKr$1_jDu`?9ul;KknN3t`?_9Q#1c85Wh z#2x_@+=XN}l6?4AWcM6qr`nU`SdzU+4kp=~WIvL9gfabh4EvKDNOHiSN`Qm1CCMQq zN01y!au|ut|2fRA{cy){B+1bvNBuW@jAJ;C#QaI>lYBZ9`JBqMBx9*eK=K7iivN=2Cz7v7 zz9sou4Br^7b|LwW{OFDjQH)mCAZlR->{mmDPn`Lv~H=Ywv%k*vo$^ zqw~KzgT4Q8{)SXMDjQMRMBt5Ge1uA_{4U~CiKqlr!Yq<*r;;KSd-;+=)u}WLZ`bSeztX0%4V4a+P3@PDRk~DqMr)VQH?TRIQQ4Bp=JH(&u=rLE zxwSb)yRGBjj>`7V-@#>fqH+_JovEBdWfv;@P?7#y;chCo7C>bW**#_VqOx~Zo?0sV zQaMcV{iy6ur zA5TTEcPb}PIZcF1#;J&%fw^iY;%F|R{rt(aNq4F#hwTa3Y7kNH)sJuYsMeX>~(C)7&^(vLu3~a}+ z_dgkc%9~U^pz;=#cLjS}RxQAg?`b*u{)ftkR6cS%A5-~M0BZqq+#`V1j-~P|l`p7# zr_`5JzM}FC71RF=pIR#4W=ksHQ~8OC8bRg9A;8ZLV6TA8w=4aP%J1giewUViQk{v) zUsR`}@;B89sQe#QsQjZX{-x^X|BNBsw>mD>@u-eJ;51})LaLKforvlrTH22QMT^}P+Xm&Ivds5 zGo(o7q-ttUbuOxN5B4&EZ6W=)?EF+05NtuJ3+1pJvj|)5Ky^{NTT)$&=8jYsr*=8j zC8+*NH6=NS>XKADRF|TfP+gj8f$B0;SD@XRdgPE z5YTcp+10JY&Z$>GcFwh^n*O`^x>WVTr@Ef->t}KK_7p&MBiW6qS|gA@l3H;S3Y-GRq?+qL)x)SBp0QCi z{dXltQ9U|cQay(1Npg;*dR&^Ndc5oj4tZi$Mb+kiswVzaPnA7Qc1ZuLXHva_>RD7T zqIHc)zl4jZUaZt5vbp|Ky^QMR10>Zesop{LDylbAy_)Kc zR89OApUL7>pQZZT5Juu( zeL)N_+IEJ2$sF7F6{_!3eU<9FioZtnbvbWPeT(Xw10I3jrkabtl^c(>0Hr>l`Y~0T z{}p##p!x~b^cOy>5mZO@Uzo8}zfkR$qq`XA*Hpg|;9IIcQ~i#rP5V^8r~1Qxkw2wz zG5lgq?*B$D{qFmn+8k8>pq7gEpVXlGmq`Am`VZ9{tjNFAH2mw+F}B*c*)G(^qc%RZ z2{PuKzcvxIX{k+2Z7OP$P@A0Eq|}`LXCHBG3TjghAJsOhO-*eYBgxKLn~vJd)TXC4 zBefX@aUEbLcYs-_&8FH}b2j5q3$Sy}No_r9b5UDZ7<&YurjAgXSN?p|<`>}tj&MP0 zt_2vwBGhcQr?x1y#pEn5>xTbYidiz>+VD$LTS^idRrq+Sir{+`JfSM^hHR*p%`d`~v5&Z}tzxf4f zrvF(vwSZcaT1c%Vj@mu~?@R44YWvCGpV}dE4xncGPtE3kMGj7_B8O@z{m)aT z|I{@6*N!xpEsvshwD89`hGQ*doW~1r0=09fN&F3e619`5ok30S|7-dCA8MyjJ3V7C zYvpHBJ4*~_XM|>r;aqCxQIovaH2>Ewpmw23H2>FZ{vVW3yOi2xg9x=Ns6R>VO6u!S zyNcS6)UKxX47F>hJw)wVYWGsRj@lj6uBUbjwHw^NH){8rsNFooX5z2-ZPacbir-1? z9>wpXcK0A|V7s*Yl#=+{6+J-h!2yQa!^%EF?Fl(*0X4ON+T$66;!nyxMeXUK+GnY~ zN$ojmFDpBSn(4oMwSd}-)Lt6Gzv8m53iFz*T0rd$OWA4PqV^@Vx2b(f?Hy_#3G=S3 z=|8piseK^ihXZECKc@D{egeF5szP@j?dwA81kKHVTIzzpsH zGf|(5`pnd4$s)?mN_{q+YIfN6z$(sIW8&O}7`r_0V5@uoQ zi{vT0#zmJshx2GloH;YQSb>L&hLZbE%T4E73$ zx|do@nIAYzNZsat7mukosFze;mQ7?Us;bJ?Wb^r7e$&eB>RPgG>K(5dqJB<>&mz>%qkeuCp?-lFE~GB~uaD|K^-HPWL;W)9w^F~H`gKC4E#OL5dlmJo zweK~u*ADG?y~Er<{YGVP%CgjN7SAmPuruGL~y3=KC{&)Vp)E}gNU%I4z zzw84;*@qN)nEDgcACdp4_#czC`QO0KQh$m@lls#%(lb0mV-o7mQvZhfbJX8f`55ZY zQ-4*y^uKP80MuWSeVO_z12#ooqyD<~dLxTde^c?dQmgno)IU_@UFz@2dEX&FaF~y% zOX2Gu3-Af`PgVQh`M*AvdanP}zZCK->R)GU!hcIW7549p*3SGr^&jN?sO(R&KM&!5 zrT!1~->Cm3*zeR$|Ed2uz$pH=?BEmmmxd`kjd5sT_{O*yo`zaL_I=c_rvMrg(wIn? zi3glCCZ#bKjmcfwaT<%#aN<9D zX7>otSdzxNG?t>V8jYoCtStUzXe=v7;%`^9yq22(8!OUSX|NZKRnnBQ_6Q(nb=fs! z?Eyi~S~N`mX{<9;yB>`yjrD10@^5TF!}MSHjc9Bv{3b*Af>IuhA`M@DAWWEHXhc?? zA0rl^M8oEP`Dy`;N`|3PGsmv3PNR|e>EB+a(V~%lyR~T?N25by9~xa6+tTRK*h1U& zY1sTPe>2(59p{!J)cb#9)+0c}x`V@SM`L>$d(hZHg*(#Nm4=Bwjh$t8$-(*A)B+m2 z4>9aXW3OyUV{fCi+I?vpPGdhB2Z(lm2RM+%K^aEzgK3!l(>PQ%pZ{sN7SK3?#xXRG zv=aNUj*_)U07qyoK*8f_Tu$Qz8W+$wk;Zv6PNH#ghNN){jnio4^S|(?(>RO98QS;E zjKr)R=4@GO0W{9FV7~kL8Jo&4q;V0A%j927;}U@{&B5YP>IxdS)3}nxZ8WZ;aU+eZ zXyYo$7)#>= z8lTblP}z@UKbHMO*7V=utu+iSzo79Yjc;ju7nzPfKo8}zC&nY|Cpo-=^BAhoPp*dfcqPYOgg=j7~gj`ridjz1l zsKYPj@JrBKfo7VLsyCMuOpgFfJpweBp=tWB_;OjfTdqiRO`0pwT!p4J3rFt6zquOC z)m_k9fJoMoU7P0ma@L`_ZknRG-he^N4QOsCz(%Q6M2`S=6(clzGz&DFG(DOTO<#aO zHcYK6DblRal=wGGVsrZ6H2qhks;ZiNoBwGxQtPrUnjHb!S&*i^|FJ(WA40QFb32-w z(%g#XW?7u(<}|G}sLEP^^S7oc@wbcJHjC4=`Jd(vwiJ@)PP8wfxihWPXzoHQ{j%JZ z<});Rqj?3*-Dw_Aa}S#7?t9YQTjhJ@2R5pGXzr`vel!o1vp-F11Q~zo(6lZ<^WZE< z^H7>c(lq_2d6?|s0vwS6oeiKeniH85? zX{xgKKQzy9fV>6JJe%f4G)??faxTsD9OitQ7dZdIjGX4h4w>GuOI`LdnwMvOYH40c z^I@7-(Y&4J)iiIUc@52c_@}AIgr?~~%^QZQZqflv|K;35^HyPQ8^YN9PxDTi_t8`f zu;tw}?-BCe0aCF0X-fZ_rvEe_8f0lc;&yqI=3_LUr1`juJYi0L8=s>2^ib8aG{2#l z>i~^BXkZ6hQjlH2v4|9fyC9 zrp^2`-6KHL9t|AqW13$o`w7iY<$NalxdV*V@{81_5t?7o{5tbpwykk%ZuY}BWv7SNiD*4zV(;`7py_#0+^ zS_=%av=*YZG_8ecElz6@fldEuxkrHfCM-eA-Rjnov`qX{u#n5BYFSy$|9Qy@v_@#H zNNZhME74km*2=V2$^Vzh)~dp^ z)uq+2Lc=#{wbBw=PW)Te3kGLUsxRcGv`qhLZSJ<%Ld#tLX>G0LHndVo{5`&^mqyc_OV*@fXi2v`)>) zGZ?MYX{TTLXV7|BRAk5G{qcy7kis%)PVXmfiFRg26-A(ISTDOQ$EueM1kT(C*x{;Q>|DkpBfM3g7Y27Bk z?Xr6RW3W4EN&mAiQDd+cAk2NT_or6Q1GJ?7ts(tyJwj_Ntw(9SOY1ROFVK3N)-$wB z{At=)FCQ_`L)jbw$i zr=dNas;15VeRO+z+BW=W7}_&B;|v{%pp4`?YZQb z{?ndEHlP3H&o8@xFbk$u&O)*a+tR8Qr7cNsFGhQDrIxUi?UH7f6eiby+Dp5tWd&G{ z_KLLaF+s}}Ty`ZbS61yRva8CP{yWSXw5zn&q#e;-i}ncZwP|lidmYuTYk#S-y`Jp) zvKyqsHyPqADDD}|&hOI>gb9Z*McN7Nn0BuGLYA$>*eY4A{2J{p?KUP$Q$;otPp<#+w^V#9`CDh@w6}4b+tEIR_V%=QqrHQW zJ6g)F#q^){&a`(??XFp^{M~8qMSBm2+|!&#-V=Ur+WXKxnD)N352C%F@cU=Av=5-2 z>%T>^k0!0PJA5eZ^JxE%_A%l)jP~Jjj*valF&ssEv<1*Umi8$E94C7`?GqgGL`AF% z&^|e}X`J?{wCyvceVT0A0`mFaRh>oqY$4B)JvWQXKi^2K_5#@pX6t4`|hktZ1*a1pX~jP?E%`R{|Y{oS|J~y{g|9bUFvb#lKu7*8O9-> zru`x9XK24o`&rtr(teKiE40U0q21)?X}=)y7hTCqv|k=3QT8=~Uw2h+X!$1Xw}z3l z-=Y03?e~?nuQ7-Jz#O~Yk7$2JTl(KN{ipqDhRMLR-6KHz3p%sW{*ulNw7;VL7wxZU z|4#cG+CR|#R<+-Wb4dT&Khpk<_D_oc>^Ri|+Ib6b!9Rqt`QM%GZ#omv{y#b<^|b$y z{g=)-8Nhbzj7w(%I^$WYGyZ68XTl-O#B?U7GYK7y{TS%GXpxj{tV0b?9tNXI(lQ&{@yQ4YPiR zr?a7!rvEOo37rz15jq|n(|;HDg$!g(|LH_7RiqPVzKfLUBy?(Ya{Z@M9ipmdKAk4r z^mA{~xspzs&Vh6~bR_$ouA}PH*@2Gqzq1(~4f&nT>1^QuY5|?ChWNLkvu&ECvz^0i z?{?gg&R%qOqO*G%p|i8>E_8DJr?cA-&mMF}=YJvhrepKJ{C#EjqqD!;npX_1694>3`f9T};FaKyd#|x%T(K(jR==&eVPoN|5@0^t46*2v% zb4qH(a2lNp=$x+L8FbE-b0(d$9R6%NrvDCqo&e`(OZgYlxtPvHhRL_M#5tD=a2cJ; zUF3?akj_U6HBWBO0$Mp@1OoqYbMbBp7-jn2Jv zZdb`2vUkc#|2ucfzbCcs0Qb>(kdEm;od>d@SzFp80G)?rAF-ev<1sqV$$6a46G}bl zQcuyb`Jc`+vd?Dmfu-|2o%iUxK*x!H=OsFC(0N&eugJbC`3j`Em&VwE*9w)&ahw z^Mit}1=tPwkQ7q)6kX3 zcc-O09o^|2eum5uW+uA!^2Z_~r#mZMNqToSy0Z&2N0y~KC*8T+0p_M_^S`T_k8b)G z`{$=Sr2O3l=`Q2|3#VYZiwu?IuYl+-L3eq&`5EXgNp~r?48fuvM}h9fLgr&|TdfV@d$KzHplNOv8&Ci`^PHHPm}u*6@NMt4KH zK3&cK-HqvbbZ!2pJ0e@K68E8GKHY$BD8h(tET@=Z=$5oBXG{4Nx(&J}{&Z`yb<5_T zMXLXs(QPT-mhH%z_|xsV9s6`Q9X<)&&FOAoBstGkY@U8JTeIm^bhn|O(r!zyO?NxG zAJN^O?$va6pnELc9qArHcPF|B(%qTvUUYZSj!yr(yV14xKXmty9o2ujduKb+-G}bJ z%4+`a?w_5FZm$1I9VFU==^moxp$?-K&^?T<>AySwk#wz7ILy&>P5fQs_X4_?(!EfT zi)8cppYA0Nd6|%x%bNJpy;An7)TSl!uc7-S-D~OIOZPgux6{3zt{eWlHwq*D@0$M8 zy+!s`SAJVYMfVQ668!F+bnnWtLf$jv-$(ZWy7ya2ek~8ueUz>Z|8yn(-CX=t`ROLU)A@HthD$&hrPSMUW{*9E%L|L!Y7zUq*#(Y5)X?i*P| z{#$fEr2DqYrT^V`9sWJK_8_2?z5g*kUw%w)M!KKS{g>{ibbqG%8QpK_eol96j8&M(wFeBstV>Ug zplA9|Zv%(lklscEB)v`OmFbPpE7G(1pPnbYFB`b3P^l=jimMUyN?BHsgkFnYMX;(O zHQBmsBehC3GX}Tp(0iR;m)_;{dh`ya*Qd8Vy-n$*lD?TrHkaK(JX^|cCF|b*^xXTO z-gZVl`Z?}EZ%2Cj(A!B2JJZ{P-Y%+j`rq44sonD`yHVBx={_hW>R4Hu|LGm?f+skJ zljup(dnePA{`XE5{xkD^85Dtb54yIPoQ#B;6eb@Xnacm1F$bLibfPlJ8$W_r^9p6Nfm z+Z_4r^zO)f7qLeG=ifu`UV0DHyH7jbpT_Cg{7>&e*@rTu{6~bbmp}9#lYLxvRR8Hc zMejL!PYd}BJvaR4H*gHS7wMV!3-E$D`7M2kp6S2hugJbCYmWfh3vM^9eVFNlJ^X3ANu?BK5)Sg=?%^Qy-x)A)FD69@^gA)9sUbT*)@Je?@xMP z)BA~@=6_@UR(R_I^uDL}gR3(ASJlr-{UTrUfA2Sk`JLV$nXjzo|DK7zN;3P8e9ixT zoB!!!fb=~5@#xP$e|-8=(Vu|+WC~75e#pk3y*EIJ$M1StoDl$)M z6`7Czs`TflpI*xX^cS>v_UZTS5rF=}vWw7PG>y|=Om=Zu)Bg-le@Xhw(O=4zR<$&J z(|`KQ4q=ve*%j!osO(CzE6c7jgj|h&On-Iy1^R2yU!VS(qBZ@Ovo`&8oWHIj)&g8) z1Ns}LK7G@F`Ww6WCiF)#->ltyPqn^mAREd?^os)|{gQ%Z`VCbj^ec{`sz^ANo7d--G_nDv|#8cXfc>6wLLX{+?Qz_{-5Ffbs83{}B57(Lb2}{%Mx} z0S!Y+iV%%Kzt!pnnqmBb7Z$_GsB-=$}CU*c4A+`rps>KjWl-qN6&Q z{%Q12p?_*xm<3(xbmyd>;KlUMqJIJXv+19!EzWV-^XQ+S*XF0aFip|7`QKqKQRGtk zSJ1zV{^i4XrLJ_ytLeW={~G!a(7%@c9rUlGe;fVl>EEh-Z=i4Qf8^gp|7Pdkl5@JN zpl`2$TvnZ;Z~9OFZu;O6PHTpl&f1Uov^i%zRpMI+U z@6mrNJ12cT0`%XZ|L)-Axns08|I`1F{*eCnKcPRCzSIByXY@ZG)YAWgzDYX$FX?|p z|2z6$i^TMw{^9;@!!`-QC^YT?cn}cXxOA!`HRDPbPe8 z-Bqhj)vjHqlRNuVpW)5>*KA?Dypj3iQ`nTk1Qh0?Fd>Ce6ehB&!o(CNrC|D>GZ&=) z1=D{DIv@&Dh;7Otwy7x0Kw)aDGT1Z}rj=v*FK2p7S>G8cNcIaexyUROZ1Q)=*(hlK zFN_v`4q2Q39e!>K%TSny!on2hO@kEXvy?gWQ&>Rw1!Wf+s#=7?ViXq5NF07~3fcDZ z`Jcj);#rD<>3;^Muq=gDDJ(}}1!ePB017K=xst5uKZR9>s>V=Qlfr67VtZSiLazTp zu0>&e3KIXqI$0Hkbt$YjU{KWtvKvy^$YD07u*m>JVKWN*QrMhAiNY2XcB8N*h3zS9 z<@#<-!RCJo+sbY?s1@@L6n1pToha-q%q|&*!mgIG+T9&y4^{0+VK2oCvc(K9zf7S{ z!K2^{X-5Es^a{xI-$;xtpZ_U@6r!PcgF-?<`d?_N(Da`|N4A?GDa09%06kgLe+nbA zdsEnFh;u&*7f{%r!bubkpm3Nl2U0jl&cTlJ5DJG5RUJ;@SPIhrg3bQ|A4TEl)Tdzj zpGI8#I10xrZsJej#6gzA$rR3_pd-L`Xs-YiPNQ(Tt388)y)0yG6wVev2SMRnv7IM- z{t)IuVJ@O@35AQTF#l99&3p=%QMf$AQ@FxqucCMYg{vtpK;aq+e^a=Y!ow7hZ zTgoC2YH8x{B9BmbgTkW}B;bX|C_GN#30L?eg=Z){<(5xpRib*9g3bRFO#dC=MMd2F zUwB!|S17#d0IyMaJ@ZBKCWWslyhY(-3U5>Rkit7Ec~{x@WZ%#56h0Vg^ik$h_=Lh& zD*06QGYU5UQ~1JFeL1L7{2K~CQTSHi?-a?!pTZ9mejI=){7m5w!G59etB}9R=Hj3F z%Kk~=ugq8W|0qsJ;U9{VQTUhQ#D*zq{x3pteB-ys1hNy#+7Xbm6(^xM>CjU8U)1GK zaSDo44y8s>oXS;AO;Pth#c2mS5%csEXP`JQ#ThA%rfA|%ab}9MQ=G+iTbxyPwsBS2 zLlx(sI1j}+g`Z0pyDZAPXO2Na%C}R4rE=yBflj1TIS5|ykiZ=gKbmCuJf#Qln+WhaTRuN`ZTN-$b>}nKO7jm5b zE4~)RwdJgnS~=@d9H;*jH=wvP#SJNLL2)CBn^4?1LyB!viknm1Y!Jz|L2*lp+fdxf zac*sneZt$O4#n+cZT_dYgY1s7JEhhkcM)b+ie-wsQQS*QI|3-~L2=IkQjr2h(|?LX z^MBDxQ}$!=D#e2-)&%w`_9zAvV~Qa~NqsS*SQoPKU*;A?>3>oBU(EGC!%$3eu-^&sIo_7m_e6?!Q9Oy_85B=ekiC(j>A(G0FTEfXZ&k|lU(W3m?@;#6ytN_kruZGjdnmq1aV*8>Dc(!* zafSHDC!6p_i5PukFt-YR{S~wjQmM0pQ4zHKgDM#KI>r5xxyDH zz9t480mYXnO8kqjs65wy`LA28J@p%oG_wV* zY8FbS{|+-drFj$|EjtILIaO==uZZq{jBQ>k$(iS;{4S*hC{IXfK}x4mT8Pr-loqD6 z3Z+FTElX)pl`lpq?Jj>0**z)Qp^*AY6)BbSrFAI_<5AM^U#ey)N;OLUP*q5&MJb|WvQNp50I@aA zk*~OpfKtbi#FUPplu$Z|QjgMpl=_yk&tZhp-YSv)m-ZcyD7e2c2gpA#OHn$Ql4QSh zh>IL1z~LFE{39tHOX(;|$51+Y5O?_FD4k5{cuFUU{{-0+4dxy}kyEk=rPCme5D(m#Wq|2YulM1@|zw|VvXB__7 ztP7>*DZNVR1xhbddXbX5{Lv;Unf|+y*C@Rq!q@G8xnrO0n?_EI}(`u{H_+nDhGWB|%G{9B|9 zQSMWonDVleC!stGr(*Lqu0ckm<6&l+p%2QFEp0dQhtogqz{V(VG?@DH% zJfm&9Jd^CqSzP|Cl;@*78|68~IXmUiL)kego90t?M?iTV$`b#3?}Kbu{s(tdFt0#GqGJMR{p+tm85+vK-}2C@)WW4azG}UWKxb zgYrs(IsG?IH~*K%D76}8oBth;#J{{2<@G49Er8Acl-C_#v|L|y1Iim}pLPUL-gtna zyeZ|7@@ABG5^{6OTTtGX@|Id|l_4qH{7-qC)Vhcr0hG6w)e%tMG0RfknR1cxE|m9F zc2~-~sjtMpY~t^brvH=+*;0Oqa)ol)B9`*96lLkZMQW6Nw}-%GBg!%5I%T~Jlp8MI zGRLaglr{gC|2zMe6J>i2KSKEy%6n73lJY*3Po}&t<)bO@NBKy~`%^wx_yZ`L_){J? z|0{k7v}N zJww?uWzUi|{ZCW!&!udtPTBOI^7)i6$g-4m1e7mQ{9=cb#>3`Yj ze|aqBdxseArz~wRKS23GwR=eRVcA^&GdyLd|7FvEkv~cKsmvGt83muE{0imgEv7u(mAf23^lKjm*NXwG+(zgPB$)MiM< zf1>=e!$|+jL;7F-U6?;8|0zfMU;bM>S+9To!{&{L2i`;m_QuDX0B^$o0wz{!lGMtX z6mPNt0B>@>jZwBW}|2@^yk$DL8M&gEzmH3#3-gf_QcW;4Lh>NZu~{3cSVe z7RR&k9xuZ$fw!cqT?$Y7pZ8kU;(6incs||=cst;&h_?>jN_b=NR>oTuZxw^N2hXbT zR#TVN(>UH5vN{61weW2I&+vHb;%$Pr9^S@y>*H-CO!o0Asdd4cb4>j4LcAmJBE0?a>Udqe23{M_4gvvMSuLLFzw=|f zy_HSydTAW5?`TIdjI#U4?u)nIpjMFs@D9W~T>e3LcK?rO!#|$%-!uJBvjdBFB;Luw zABA@`-tqE}!884rf7}3%cLJX2zv3rlalBLTB>Uc}E+zfA!as-t~CWfA1Pq zUF-T@=X%{>juGC7cawNb|M70gkn(TCyIYvs@$Qgwr|ew=jF$J{jm3Ka?_Mq4@bBH9 zE)AJK@lq2&n|Pn%y@mGyp6Nf{J1T$IA>UK*{R}T(uK?ahcpp2= zCs`KH4gz65$NM77itQ`BU-7=i`%&3%@V=Gvon!bO@4x!*{e)-wkN3+E&u@5t;+gm> zHS`ML=?L)t#>+n(ynlrGm&$nK7%JmanU=}~R3@V`A(e^p4OAwkBJtOEL}gNIk$#w! z|52Gzj?Mp6?4`+QE2F4PO=YTVsnj$>{&Z9%_?79Y^Q<;^DiNEWT>pzv* zsf-r?9I|uD&XvLB&qHNPD)UlVo63At7FTe7Dhn9KHnt!Y>3?P6jGu}f0aO;1UCdzi zAnDH-DoapVk;;-vEk$KHIZIQ~0Z|#!|H|@8t&o+=Ux~`9R92S1%HUZt0F~9Ktf5r? z3P5E|Dr@Did=KkT*@Vivf~_aJzU&6F8_Mc9sBE12?r}{2mD-Go^uMx27MXV0NvUi_ zWoIfH{wo^(?b)}bvYkq{ceOiE*-@W^T@YE&K9gOj>>=2$vb#~)J;N(&uLg?mMWsNc zO2x!qkrI`%FkZ$+CD(r{H34k?rxLhqXoVK36Q#cl4g80wG^sVHw5Z-irA;+$(V?1t zJ6$S&Q;DhEO(mgnHkBTgqp0+$97tt^%6?S#7TZ3Ke_zMHzq%igE#)6XvqR;2Nmgm<*qEE>^)Ror81Vvqg3vt z;>5plzp@XgwdVhd=KspWiae5SK>lM?o{{r76^Vbv#Gi_egNo^Y2Bz|?;?GfeiOTaT zG4WUM#T;h8U@t56ic7sliKU-4yKdPyM{X=z8D*sZQhU$1!C#H&F(k)fTr#gXERVS3qj{y00 z1W=un>XcM%{-^rC)G9c+>=dcBh^0o!+7Uo?Y71KJv{dJyIvv%SsZOty=|5E+2UXMm zjDhMb!p|x@o9yheqf_hH=A=45Rh$2*&MiBS?7R*zUk0XX`cHL1*@a{mmNoHr;Kise zNp*2CWV>A=OF6(&`O>JCp}H*9<*C}CkdaW8{-^&3c9R}NbtS5sP+gho>Qq-zuT`mz zaY!5f9qk%a*Q2^7)pe+@MRn~#m(-zZ`tOkIQ{BKZY)Exu(b^G^ml%Fis@qcCjOtcY zH>WD`&%co^U9I%Ly3J74c2swxx;@ohsqR2^7q#Az>Q1g?=N$Z>Ub|D>ljbFx6cDsUGSuhf_Vm z?dM4GIGEK zqIw?Hv#Fjlz)(GR$anf*y^!j~R89XKgU$cWzl`ejR4=D`71b-W0qMU0RIjFbE!ArV zcmb}Xx^;UUyi;wN8Un@1~ZD#ywQur#hDE%T({B z`YhG^s6I~heyR_O>Vdq8B%>_2=g4( zm$ZTBslGsUobnH0UZMIn)mN#$LDlAes;_5Mj_}PCO!cj-gz7uOnEq3J&w}bs^#iKk zQ~i+YXG(oU^<%2J_>19FNBB8aQ+ujkQ2lbipvc#<-%$OQs)@gqwn&^Hi5C#CZslz zoQY*8$+AXOn~d7})c!|pL28pzo0Xc0KeZ{TO;2r9>T5Zb?9|lq`JdXficDt!Jsq_f z6q!+WCTcT_e`x-%%|>l5YO_YPtAlDQfdmTOfz2BejL7 ztwwEOYAaJ)gxZqS7F9>x|JN4RHtf$MwIzmnEk$ivYD){b%usweMV1%d^q<;_S(e&L zd0+duR-v{kwK0Q2OIdt%YHP?@(?!;zwzhcIkzH4Iy+I+h4XEu*Z9{5XP}_*w=F~Q( zwy9v7( zTGSq-)~0q5wGOo-sdcFxKrN=WH?@RXUu-?scf_20|NBteFZHSI>p1t%QVJeO%>*$c#a-69y4#Cs8|@+9`vG z0H;wqo7(Br&Z2e(wKIpaZYSqZyMWrc!k?#|VKOwHv9~{BHoOx`o=k)NZAA2Q{1jRepO0pmry< zvDEHT@NU_A2DJ`zpW>STYfk)a4-ZlMj@rZ2-lp~lwU?+pO6@6Xk5PNv)jmP($+X;- z`SHkRHa`WZy-e*jY8w9Sab9(>*QwdqPwkD2pPIx!f9iLr zeM(LGUwe<*N7UXI?FX_$^MCDQYM*4Bj^{IKUsL;>+LzS6u#`5YUUnj65o+I1`*tX$ z`M>r9{)E(ir1m$ppQuUpYd>c&YQIwZo!W0klJC=w0BV1V+{8cUw_x^7{X^|v!}xap zgOBX^vJ(vO_|kuWV*DxbC&8Zre^OOx{`YPE$G6L$oL>(9DE#U0CH}q*|M*V-ebax# z=g1lGef$~m*T zkzgC+Zz|4Ba+vkq%t-73x4_?8ur2Yo8sgaoe>;5Xe~#RKD7z#6UidrV=aWDFF8I6S z?~1=$#+-ri_rTvXkK{ZBd=I~fU&b#DI32!%U(ow1iy!Gr@$bt)ZSSHe_#BA@%O_&5PyIC1BQ|KCjMC={vr5> zx~jwQ4<8`$kHEM2KaJoYC400(9*chl{&Dyx;UABGqPm}ufgR>#{8RDW5ulFv_7;GD zx}&ut0RJrf^YG7Bi*xYL%@`c!d|@uIVE)Npgnujk#rRj_UxI%*{-vrl{dZMY;9sTS zm085qUW0!V{+oz<(Y8N&M&WpTd7S z<4GCtpTU3D(LR@P;=h3ZD*lW3_D0}>FXO+GH`SBkzvfbJ;J=IiCjQ&_Zw+>pI{5E6 z^7m3O{`+qE0lw)!{ztMOXL0$T;(v?(8UB~}pIZwn)Dd9LSHgUa|4r6Cv-scP|0v}5 z_&*F%_&+IV^M4k^|CJz>=-==&=HK!E!2b*X&jCgyZvOZGA(#;VUjhim8(;{=Cvf7g z?}9-0KZ8#!n1oZvNO7pnerzJW+9lJU{+;k%d+xE6U;?02Z4!y2DV2F<|bH>U>;%Sm6iSn(*MA{ z0=N=_g$dHFE~45+Wu^bYkp2gD|3k1O!BT@>1Wx~hWeL_KSdL(2g5`x=L3Tw0Tj5IC z_6SxXFtsOGRd$R4Y|pC`tdU_HaxH?*3Dzdqh+rLp^$FG`aKnFIwE@9~c~u_Sm|#-^ zH~eS6UBPCq%N7LN5Nt`XmFr^1fy-`7u$_x)h|1UBmIG7+J=n&Ki+5`>NHVIle zGTVIq>|KHb31R}9`3aH?L(nJKk077_3HBz~$EEglyV_qR|2+bNgB(n+1HqvLhZ7uT zC3(jq2u>h4lHfQ3yZ<3D@h3P&_Smf4tObwHmIOKof|GE~O9w0cK;9`O^ z2+kom)3U~J7J=!%{aCMaUHm+P^9e2z<^qCo^S?u0LU0Sgr35z;Tt;xY+y4~=*AUq7 zPoRS!xH>CQ#O8m3>m2xcf*Uel-ET6a0d97HTM6zXxQ*aWg4+pn`J)d?_`3-1cF27G zCm2g`Zx%Fb4|Tu8JV@|1!9xVE5TyG548bD=cI`v(sI@lm;{;C=JmE^7RQ9PX>w?b` zJg@k3F7g7w%LFfqVcZdrWrci|;5C9b30^07Bae@J5FG)wjdut>B6ycTQXjl0!uJV2 zu#ya)@AG4V&j>yd;M072#_&18mkK)l556M!dH_)BTf+3W`a8n(dA}zdMeqZ`zXU%L z{6+8+!LI~ATRZzeelf?Ge3Yw1ojG$EeTBj39^szpS&s@k8lz~2qz*OpKwA# zcLa#vO2UbaA$zWHQo_lc|35-$emJ>{OgV&{if~@SsR?HzoQ6<>A5LpK45xG5b@>z8 zOA@X`xD?@XgiE{4EJL{Lpo-A$e?+AtAaqwi;mU*? z60SnHCgG}ts}qhPTy4k_U_xXyswVeAwjTwh%_aQKY~HzVAba8qSB z$*c0sY)-fp;TD8j4#&li9|45h64nT}Bixg4d%|7BWA{IVI}+|B$MipSRJbeQ?h4uw zAZOeWK)4s7M_3>%5xOHFFDz#aBC#WYu<96m!h|p&Y!Zfqb!DR=yd44R)gtT=wzH*R zUBWm==8bxUdlT9#0O5$G^7uZ4`xEXj|&T;)K_^>5-b#4e5ZfJu_Y>Ypc(;&uIi7p89BW7;yq8e( zfBtk2i0VPYhcdjuti>aQe-l1R_#xqAgs%}kPWY@Co*;aZ@TnYc;HOpcOco)0j_?)2 z=M~iDPxzwzT>lAQ&blc0s;hdP@NL332;X#(w+xo==N-cL3Ew5O;okt+cWO_hBfy-G z2!A5{nD86IPY6FJ{FLys9G~-ik#Q1!Noezbx+Kg`0m5$yzbE`|z)$!C;g7=|34bR1 zo$wdJUtRfc8K+zRAx?V*Ap9$*@<={8cnn`(Huni{7*C&(ZWP?6U|3tM*xw{|Bh#Vq6LW-u%-LH zh!)BKM2iqDL9{55X+Dv?0=Po=XDV9Kg0{V-TxuDjb%>TFvQeLCIU>#fk%_)5|1aT%4s$WlC7GWBh@AdMmlM51bOq5^qAQ86Q}!w%oBxTf zk(K_Z-{x(15?xP}TIqjuBhl>w*ed|h%|s^t@^2-&EpL}c?nvVqKuT>yCivEuy!xTE*X`zADjs)Mq7npXhg@4~V`Y z`jE(Up6DalkBL6Xs)#-{a(h^J{}X*7%$Gz?|0AdW(YHjuDEl4J_f}|}KM?)s*nT4V zIrGK&tHbCBur7a4pMvO5>f;fa_!IptJNRDyA^LY5Lmlc9Qyr+ynP9&qK>;At!b;dy5P66uE8j0~wPkk0e^a@a)k$SHG)Mw5x z4mlh3g{aR?eIDwgsn4mZIUMa=)a~yGvZa{kr9MCP`7D_CGX1CShJWk6F!g1qFG77u z>WeD7m~4LkLtVco^(7p`Qq-3=KmE7nvR|S4vcfM%eHA&&Q`hic*P&2f$-!367&1$J z4D}7DuSR_>Rjn>-w?Nd_beOgE6zfo5Pw{oLxcv1UWpyij|JS#rz9aSRsGICl-#+7aU3Q}GhJVZMLVZ{9*ziw%ciEx&zrGiZ zr>Pfcq~BMO`didX)X$|}roJC_k9tJCLcK=4YAy0_$IpD~LF!NsUA#^`q25riDcedr z%4y4XWV_VkEbg*B>YD%SBiiBKE^hiyec#k7zCZO7s2@Q62+Y^MfOzL)2N@G?Nj(O z6+BD6^xvw^NrQ@sK+dp-5LsNX>SX8Rwo*Kee5;%}c)z75U)^;@ai{7>Bu2$A0*d#59m{@11d zIpALEFH^sd`eW4Zw<;@tfck?fe8?5*2&g|o{n0Fi|GFFg z>(6GJ5$t*DrvLI^q@K_JE}|o#t|OpsM*#KLslSo`tCICMjVJwgChKq0n3noG)W4$s zF7*$ozo)+MtK@@>O_7hNe?k3Y>ZbYBKQRW|;b$3!x{d&gd}*mX`!)3x{0(&}fBjq4 zenJ>;)c>I|5%qsp?m2&e@8pb5ZiP#M$?#{hAF=T z%t&J<8ndg=^q+=KhsLZlW*gLIcp7uin4iX+H0BXcvaaTKd_9b0pDH?VJ&{$@u*K#!0ps_rSRcWlC z?1~P*5{;EpB#l*u@MDCrR{$C&{`O-S6Mq_ZD7eTvG`6R)E{#oStVd%b8YccUHW1$Q z-yt_1s@hbT&1h^xV{`di$V&ekPX8ND{~OziEg$~n??A);K9|OhGA!el8W+$=XdFSKM`M3g^=XXA*;|->WcPJE`7IEQ185v3*nu<-66RppLu3!l z@bV@8dB-DZoJiv+8pqHu@wXp)*kfrN=X}$D8Yc`foJ2#y-Z+_t=KqG>|Ij#1*7Tpo z83Vj_b(ZYeG|tK5G|r`Qo{;AckTfo&aUYF~Xk0D)#WbY<4gLLZ<1$x!xw2QtUP&X@ zf3aOd;|?0v(zr$0>twH|af7lq%HAY`<)JVE0r8c$|O*;sLH0%2m#ok}?N?~Lp@{Uq@fwZSEtO~Ar17?3Z@I`jL)rIed`9Da z8Xu)W8XwU3FoR_n8Xwd6gvO`Y-UcZepVRn4v|rNrY7kfC8=4c*_?E_RG`^$pBaQD( zveNUn@k4g<()fwSFEoD6;zn*+y#nZHrty2qN#hS1f71Au#$RqfdIe}?-^)K)Uz+3P z*(O%i9G~U{wv*Ifm`P|(O7nj-C$s-o-}L9ki00&}b^eqzSE4zJ=E5|mqPYOg zscFtea~hg6iGNy})5)3Mc5WSKpgCjatFMW_;?n=-thTiM%uZ8k-yBVI4guzL40CBY zw?jJpZ_Y<^{sFTvb_CE|$RQV@Y4T2UQJRa-G5&v&&P z%@t@aKZuCUUIFB+Omi)otI%AH=BoBJHOJ)NT3T+))oHFF+BK~to2+a!2I zC&%>Per$&u(%PTqMl?U6xiQW2Xl_DtUz(fJ++El`+uVn&vj* zG5vR(+tb{M<_-?Cql@pHIy865kTiGIayOUVgJz`2o;3HO>B%q9EXtAiH%) zRhj|Kn&Z?FV9yl}!Rj=-!Z&DY{%^J{Yny4yI{k0PS|&92q1lt)Pnl_I{%@N8r@?`x zxgX7AX{I0G;Q}8Zd!Xz=G!HhgbvcBl=|9cGhH8&c>PVVL(>%)JBBy!G5au{xj;DFD zoD*oCm^vwd=1C5Jic+W2Je%fembH$j)6Dgs=9!9^{;SZ2f12kGbvd8rBQ!6dc{j}q zX!fJjI>d83%{ypH^P6`L;^Mp~UD6y&^FcZH(!5X3{jv|_Eo_Gm>5s<4_QxUZ zYky20rTG%g$7nvK<>RtX$l5D_9L@jDXJ|f8^I4kDrNJT27ihkiFULLg%QRo1`JOiL zD$UnuzMf%dzCrU{ns25{ns3SKAZWgmlcY`cnb3ScEf>QFG)@0$ekAB)X{93Y z8LgRUeokvVnqScTjpmm$zgNjuG{2VfO={(QOY^${gCalB{E_A_G=I|a=l^D<|M`}r z|II%H`;(^WKh3{0Jk8YqC-rImJ7Ay%t?6iuPityg6VRH9)`YY);kPEDHL>AalgLgw zs508t|7cCF_!P2J%8nYwC^Ah77Jk|+MQeH&nSs`f=4YF4%}i@yA!ngAE3LU{%|>gq zBC|Wp9JJ;fDlz?67ds$?v?GAle6sV?T0q$aWf#gw)_SzIqP0G)Eof~Zl2rdUrL~a*Y)osD%r|T8Hj}k0AjiLDMy~R$ zX>B7%^M5O!|7mTnppF0|*@;$(*3PtcRooo`t=(u96wz7J+Jn}fStD9|rE%xm5uk09 zY1L?Xv?@dUsSY81!2(wp(b|uehW}QBR-#@_T2B94ZCV|bbX`g8dP)CVeOub6Jwi+K ze`_D%_s#GFOX~pI=?8lttsiL}MC(~v2h+NW)*-Y`r*$Z;qi7vQOS0dx^TKsJ(m6-d zI+@lnw2oKDV`&{X;8)}XS|_FvTDkbULLC9EQ)$`!pE1)qgVu$rI+NB}v@W1^wwC9J z;apdH9<6cnzYAVO>oQsw3-9#5W%};`m(#jJ*(p@!A&>BnYT3WZ!x{lVZ zw63Rh3$0xIY2B#8n`Cta=r_&C$MN4z>ka|jTv`1?>6YZJh%#tzFw)vm-Y_fJc zB%V2F&rREo0NQg6?ZNb)_PnlE`rn>k!3A9HLbR8ny)bQiK-!DYUew_iQ)Ju`Kzj+= zOAhfboskH(EbTG0m!rK3?d55&tl$c?S2T<Zg+|8)f{GZ+NS@s*OWE= zr)}adXC2z>I^SLaQlIt)w9lZuA?=X%Mzpu5y)o^rXm3J$bK0A#a5Dqv_$@M@_Lh!n zYuYCMVw3*2x678PrM&~~0_`1X??QVgE3u~b3Ls}!+I!I6jrQ)AQczWU(%$R8ks|FH z?Go(@?J{k9FEBt>WsRyszE3+B|1?NDqJ0qUI_>>vH)zMSo3z`sTjLlE)}fv2e-@{m z(C&$$Puqrn?M?dMmj1W*&4R-0Z(FjRq({Jk`SxsiFzv%>AEMNuvWE?2kDz@j?IUR) zPx~lkkCr{gwL4bJ3aS=8NPb1x^3ud_w!v zX~r%@`?J(q(EKlGe@|QD-!}25tz)7s@o#@Co}u~wwmXISkrS?^{Sya$L;Gj;P9^9U zVrc(L=NH<)(Mf+pey6h&?LX+G*+1!wru`S4QMCW2gGjPn{X_d-I^$&zXuC=uzcW6a zN$5;KXCgYf|Iy=HRmWZd_pf1}DH693NBbY`YA4V@Y2*ziwh zI@#%SutjF1W4A*V$-B%#XEr*s4kD>TXLgsJgU&*9r2n0{vW|4-rZZ3K)6wwXnNKD2 zyOIUy*!=JIrdN#4B6OBg$)a>5{vC!$9h-XzgThSRqX9GH>|8!QTvzAgi0y=AENTt@MvyL36|DE;dtUt8>4e4wm zz(#a79*S>D$7X&yn`J>dThQ5Zz^v5PmNLvXbfo_soB!!-FS~4mogSSgoi?3u`cJ2$tegKkv6l9xU^_IvgKboKELFI%m*1o6ecWV+?1x>^UxSZq|a1&Hr>Rpkv}M@R0s@E}`=} zolEIRT057~xtz|8bZq_?_)0pa|8z|JS-U8(Q(CjGajHckUC_{SNaWotNo6B!-9SJVWOZ`H#|hiq2!k zW{n=F^Mnd@`J)zep3bt0KTGEYInU9_#oyJwD2Aa|fR0`PI0q9OicPhH0EGRa?rp|o2)6$)h?sRl*_*ZHMb8EBEr7Yb|=x#@MQ@UFzyP53fbhnT*bOadx z)(YBN0Nrgkw?MZgaFK3_ zu1~itevfXIuIYbPrC`kw26XF+gmfbdX5_YqhS-{Ul||Z$bm(^J_UKCdyAuDD{6ig` z-9FtBx_eJ^pJlUJy8F^SkM4eSkD$9h-9yB40A166x(CtCl|SoF_fW+Tv!wy@Q-JP~ zbWf&x6y0MLKUzHQ6`*?@-4p2M;xE97bWh6m;C6Bf-81Q)O4nw7x~C1YbkA^@v*?~f z_v}F`b?Ba(;^mxA_ewbz(7llEWppp1dx;_!r`EwP%^Y>HR{*+KGEpel)H;f0j>;KX36l-EZiALH8@VUk>6b|2iwA`>lAsqx*eUJXPK$p4xiF(-7PIpCMIc zuK>g|5YK3F^JkJZ{a4AX#B(Szo0c~J6OYaqi034pn|Rz2Ks*m|e);1t^Ao2f3lMAI zj~5irLN2=q@nVWBnnmR66~G!TLA*3^KK~Oh<#x3U@k+$Y5}Wv|WO>;Yw7nIxpi9{i zpzNx|+YpZ--hg;D;K9Kkzhs;j_;zNng zBtDGzMB>AVk0m~W_$cBdho1Ln;#~Q&An|c}isOk-$YJ@eP9i>)IDZ8oKE>hf{-5}C z;#~P%{4C;&h|eZIUx0In&m}(3HtD_&#V;V%D?r}mV&W?mzl8Ww;wy+R)6&HMzx%n0 z`0D>sT}%8c@pZ&65noUI5b+Jfw-et;d`pTXzKQteK?$)P0mQdiL|Y=hgZN(JJBjZh zzKhu25r*(%hmiLXKcMpaUG0NI$cKraA%2ATDdIMKOlaU_-*3Xh~FfBo%lccuXb;_s&|OrCw`Y$mp^H{ z|2*A?#Gepr__tmk4<1J(pAmme{5kO#d6n(+%M?SbR{(RqA^w5*Tj9SWcKV-xwm%a8 zO#G9Tt1s~{L;i0hvk?DIGCA=dBoh(;N&GMIU&PrTcBlWb^gm-r#v>Wu_K?`^ko8Sc z{m&==yh}2%;**d}Mv~wEEAl@BM zl0``tCRybF1E_X!k|jyf55b22!9JB*DvOXTL$U_RvLq{!EJw0}$d}K+B;)j-WMz^u zB&(3Dnp5SU@M~gd_(lbr8v+BnOk&d%@67 z4kI}{+m*u~Npc#=Q6$Hb9PKvj=Kth4k`qaeCvp0pcR4BJBsrPH#GmBUyipD~o#YG> zyYnGA)Ac%=IlJiM!Ai03#Dv}FHE+e^!k(hkl0&8 zwv*H$xmxY6A-PV@wHcno=6}a?BgyT`-b8XU$*m-}SauxXw#+BFgTyqSi{)@SX zWb9x+B=?cLKyp9HlOzw2JWBE)$-^WM4KUiCT>**kF_Oo#E{Z?l;!kP$G|6)$&yYNu z#dD_@tk3LdW+DT zf!Z-a7PFrDu0O^v2Lz&0sll4SF{7(_7O;bOhvCyZoWI9zBzNdh2H` z=xvxe%5F?=D|(yA-<00wayH8V^tPbq=Kq{?YkE7<+lJou^tPq9UDnri-(j$%x0CtS zcW1}8E4>=M-RPC*?XJ`w^!B2+XNFYk0=;5}x1jC6oMq{G^eXhK|IPaJnxYEmh4dm< zRi|g-pVf+|MK7V(rq`v{v6Qm(;vq~gD^D%G5&HMh+nfIJ^!A~j{<7^$??Za~(YuD; z{`AhJcL2R3>6!kk#X+(M(>o;Np?9bvhtabmfZh>9{72C{gWl2fPNa8?V>p)HajrJ) zd%^&(@{{PDEJEpj&-9<(X;y3Gr@KOlzopKiceV?jlfhJS9=-GBTtM$~dKb#S$RRJL zcZmq|%O84|4b@&jPcI0)s~kRm3!rx`y(j5iN6$ujde_stLC%e`H;L2k|Fyh@p3VQM zulVis?xlB!Qug=1^rZjBb2q(vT-8{IPrn+|c6#^IvljvR_6k7nA$kvI5%D}~z7akq zYo`FcCoGtMYfsU8n%-OVo}u?Ly=O)8oM6w(zL0_Gy-4q+ywFHY{OP?a%xezwx`Or= zKrcT9=)IjT6?uo=yAJuDBJb17#oxt0qW3ZV^g87edfy21DZS5(!J4K=z!%Q9DdO*U+H}(|9gwuPJWR6QPxfYdOy?C{GZeQM$ZO&dcV{AL$rUo{Yd|Nf78>S zCgFwr*KB`0`eaC}>Q6v_3dJX+Kam`}|EE7m&eorl{$$SoAN|RPYHj!zcocmd3VrE+ ze;P5{{IBeE^oRcbw?8BOt?180e^L4~)1OC}S?HVo)1Qt0-1KLcKUzF*vP z1u&`|=Ib3 z{aR{=U;+J5@kq8l$kK1pPX)Y1KUS(OYexY6ZU&>D(C;hK%OdjABVcb^suBHt=^sX4 zF9QAj=^sk}0Bz|&`)|nm2gx36|LM3f>n*_jXXNw`&v@t`q3n_Lk5aA8|McDP-#=E_ z;|y%^6X@SY|3vzy(6_$=pl|x`vZvC&g#Kyt&!c}j{j=y>Yr)QRn6v4-`QHf7O=$%< zpS}q`{R`+{XhFplxj6IbUrPUa`j^qahW_RBucChieG~tT+_kV*0P}5oHviMV&ZTb9 z@<#f%(7%a(F8%`s`uPz+|91NK3Va8B(|`GQ(Z8GiJsF!KV=bi*NA2!sPA^q>aLjP_0uL^0yKmFH*c|-P1*?jmPyBio7rTf$WF$?f!@U#~EJ! zr}Y1({~7(C>3>fD8zH}-|D~L-g!y_1|E=Pt|8l;k|3j9g|0DgMhLFDq@T=@^vcHS% z4~PGg{$E4*|6^ow`u{MJYP-aLWIU@HG5u#`eAx-c;YXzZBhvqoNtB&b*7TnddqGIc zOpEo%pd!_3FXN{r0U$a0J}#N7_nCXMpn$?jI6BXDvYcqM`y&y7?)k$9K)}{$eMEg zA5~`oB+IR<;e26cX696wnVFfHnUm>hnr4{p4Kp+6hMAd}nVC6x$!n|a**R5PE?N5Z zOZLplviIEFwIm1W|CN3ngIteJO=o>Nd(hc{&Ng&5q_YVfRsY3t<2G$No62-E88yKZslgAvn`z+L@!4`M~(pfN$p5yCo!q|PiGeyca?EB8CCsPA(VAb zIwuHtFFJeEIh@WubPlAmuL7vJ`_WPLpUwe8UaJ1nIau_E$f(|b=o~hLIf9PV{LYbd zjuPw9t(A_{|BkNzLUp_frx;G8Q_|_s@#*OLPp2ywTShqoIxZbm|BY9VPC_T36VVBW z^l=Li$5i+;8KwSriUCppQvW-Z;T)lJJDrp0TutX>I%m^S^`DOF|3x^B>r31$WM9 zM$w!}=d4y1{W)|lp>r;si|L#vanElf(z$@ng`$!AFKbt{`V+iV*e;Xtav86nbEUCf z)gtL!L+3g=*Q%-b(z#y1H_*9Rgd6GnPomt^`igvum~NHvwq`W6chGsB&Yg4~qjMLX zc13p!Oq~LB?xmxS36bxY@quPEn&t?Q_aB9PM68bvSs$nK1fA#TJSnE9B$KC&?=zy* z_1`F8pz{Wu7Zr)(e2LD>BD^BLuNv5EqI_M!)c5C2Iv>zc%|D&Dl~M`s(0SM3-xG}- z0Sf;iozFz`5gn=j9aaD7sD~isuGjlHoi9ZHrHo$fKeYc;Gju%!RjIj@PeHkPXYEwc%? zF4hKE>tU_0O*-y|SW^5)SG@_=7Fe5NZ8jjm+T8GLiM2J>R*GC0nh|T8R>s;6Yger8 zv3ADV0c%H%Q43U800FD|Z{*#u_QBd6YcH%lu=Z^AgAr?QgH-h&YdmaOSu@1&M0_zYgRs02in2d)H;g7^R8tbTmMgYeQMLZ7cc&rl}4VF5I3{}SnU91Sp z#tN{c_**Vk4@>%g%O6k~yfpthpBO8{QvE-cs{buNR*qGQ(i{N_pz42v!K$(Thc$wA zG1f^~XJVa8bX; z1nVlSOU3artSba|`A{r#1Xx#NT_><>u&x~fT#uz6|FLcy(%*#j7}m{LcVXRvbvu@6 z{;k_u7}gz1P?^gWKyAp~SPx^}gY^K`y;#lfi?07IQqp@6OTGNGB!=M;tVf41k7K=r z^#sjj~GUURB^UTiT~FJrxi^@=hn@T)Bb>vgO*vEFF) z141lS|FPa_VIsdrcR{T8=}v_80oG4gABz4Xtgo;>#`*&56VZICyp+3~4%X*tsy`-m z1c>Qttnaa!`u`o)w}ZGEsWSheQDXgQ@IPbyj`fT9s{UVu-}I%``h#v$wEv_#7S>-_ zs@h}yjrET~>fb@p%Ms83y3iemt`z?^tM0feoX9GAcYGNqpgZA^a$>r()18FwlyoQ6 z{9Sbf(4AbyDOxbyspw8icWNP-W{6=ry0g%op6-l-*H-|#Gtr${5t;(E`7?)m~=ujQn>!BE_d=*g>IwVmF`V+ccYuo-JR}n zboZcpDBV5j?oW3wy8B4ny_>PglkUEB_iJUdr~~L8O!q*#2kC`qr0V|-<}kWP(LKDG z(mjIik;4q4Jeuw?bVoaXQ65j%qk95fo9>BpExNk+i?!Q~>PIcjX=S>u(fD*#!%w#- zW6MHPQzJ(up~bkC!EG2Qd&O55MPz;MbDpm*{Tx|bTS%M?Jb`U<+&(Y=!H zHFU3{d$lHSzpE;fYmL|SbZ?}4gPOKhwebHLo}1~uN%t1IPt(1X?n88Mqk9kC+v(m# z_YS&u4!jx{x~lnaHFWQ#d%q~}GnxnJKBzO%c|J_{3A&HaeN2#Y1gHcaAB8E}C&j9+ z01Xx0XXw66_gT8n8RqBdzDW0lffwDEl&M{jVt9q_t90L>`x;&S_^-i&q5BryZ|S~G z_Y=DB(EWh!yL8_(5#JwT{*dlRnpq|DvB}|6x?j@$tU=QKobDH6@~i%z?$>m`8BjHj zbibq9{4#z|SJiyFs{V`qC%XFahwd+QrTB|UV87G-i|!wS{8J^MSMfJpDgL9#f3bI< z`ycj_*kfVOhz<5+*kfZ)h&>MW_}JrOkJmEj==KCkXfv@V!k$D0vL_y3uqQRv$+4%y zo&tMn>?yIQYV|rFdm3!h{0~yHr^lA!ulZ-fo)>#&>^ZP!!JZ9!R^=`$YDVnYO{_Vw z)w2(_Tmb}wt&V^OfIT1fBG~g|FND1Sw*Hr&nnwW^Hav@B%O=~48Q;aRmlz-$0edOz z^{|)5UIlv@Yq^s!Uy9(E-9K*q4O3PX&YsI>L|WTMPl4Yuz8vHLg^U{~1p zV%LHh!M+6hB9U#B^B#2c`0 z9KeM0ChXg>Z^ph=rnj_KYno zk6}NA{fIC>Jcx^J>c9OswmkdTPYhX~8j_!BWb9|LpBswx0`|+;FAA;Hf4#a_u;0Xf z6fmPUk!dCA>icRzXirp0R-?0C}{vBHt zf1%ay|04g5JzD>w2WLE-(f%JtHUFB~nGk0moQZIj!q zXI7lq#?;Tz;>CR~oJDZv#+e^y9-MgxNSygv8D{~Ug#@fm0i1=07#77@3TH8#C2*QO zS$x3I2sr9G(1LN6#%Z2?M*DxGUmj;uoE31^!dVe#Rh*S@RyNUBQG(v#)o|9pk@`Qn zv1=NhwQ)AYSqEo5oOOrdu8*@pi!sQJa5f%ja5gde&2VyaGUHeZtkx)30OjuBBseZkh~wc%&+qs;69rK9UtA&?6+Fg@^v^j;#`j-&A;Kq(apbL zZpOJ2=N6pXac;$t;@==g!SV#8w(%~UdvK)x7c0)aIQMC!UgiUM%@Q8O-45rWCT*OD zai_p}1m`=PM{(Z3c?{=yoX2sV!qLSaN1X+d&(k>1;yk0Kq7mhD#`*%zt2i&>yo@tc z|D9Kc5>~|@M;!#l>rI@GaNfds7w2uISAchn^*x*qaNbu_ox_JMrkUb=jPnJ~Cpe$s zd^+G12L1kn^CiwVIA7s>-7>T=oNx71@qCX9&JQ?$;rxj6JI+ryzu?FfK=0?TIKPdC zP+or+D)T2`=Wm>UasI(E`=fLIPa&Iix#~~AB8-hYKJGYb74Eo3sc!+e6W~rFrU`K; z!X54WML8+%Q^A# zS#f8_ovl%-AC=)8xa#p|NHaHX!#oe}0=V%WgK@E+*NVc!d(q_jRuKp zjsPXEX?)jKg3_$hhQM79cXQnJaW@kE1~P7FtQ+HQDjIzSz}>7hsZqt<0(VQ?ZE&~3 z-FnodLTuYOwi?{+alggg0rxuG9dUi!op6uB-5GaZ++A?@!rc{j58T~wch`=3jiW~Z z?%on~pFtqp{csP#-5>WrTUlUL@niEe7{e+^caf!&PlRuBrd-mAIz)AKlw)BCFg6Yg}#l2mW`V_#u1NUy+J8{SC|J{3ryzawo ziv0cJ_yF#MdR>ZK9RV#8_YvGj1@oBF=v6;~`!?>AxX~``i%z z1>DzgU&MVGcc}imui(BqaBT6ouj9Uf`<9TrsY!I)cW^($eHZs5-1l%lz#Xmsg8#5( z!~GcdQ(Scs7^ES9&vC!P{i0FgemOAV%0vQ#%#!(Moc;VpsJ@T-@9ou1y7B~AWI^qFf1Y z6}+MMA8%D<($>}S*27x^Z*9Ca@zxqM+&XycYK_LPkGG-Fj@|5pM^j)SNrv?W~bHhh2?H-3uh{ z9(V`g?TM#)e!RU*lzs5_$J-ZgzcCpOz&o(T805itN8lZTcNpHGqb9Ye!wu$0Jar3D zR4U5RMt>|`igz5ICHmv>PQdFlR=g86UT5CL>*3jWu2`KmD?AU+Z)L+7;Kg_$UZnN1 zQt?U*Cc`@gFUK3fEAT4360hG{2P0l>@FyuMmHEjnC*G-eXXBlQrz$_*=|+Dh-dU|| zH0R)*k9RJfssDQCFHq!qbr<2kfOj!|^M$+w?;E^J@fyu#c=zF5j&~E@6?oU;U5R(K zL^P*>%1U1W@UFwVp^1xkyncc`h(@GiW2@TC7A z{p{{F%=hCxhW7y8LwIro=(RkI_lUu$`fu1C$9oFziDrr?&A-M!jrT0xGc8Q4&*42k zm^M^+FXDZG_Y$6}`FJnO_=<`08s58juj9Ri_XggZt-fWzdmB%8{sT_D_axB!2J<1_ z7kD4xnU^2$6THvxK2-qO4Z-XFU*s?GzG|&_Uz<$6#h(oCJG?*fz8BaJc)#HNh^N|q zyq|P#dhNgB{Vw|7207#DQvmNT{PFSr#s}{oynh9$%NpK)`0C|HIks&6*!bh(kE4}M zIDfn$c>?^2@h5CG_!A9$@h52*@Fz7qljF~aKL!4b_*3Ffhd&kmG=foo0v5p(e-%Yt z0r2(vkH|CO&w)QP{%rWO;LkdUr3B?NyWyD=e;)j~@W-tGiqO=5e}4SM@fW~f6n{bd zh4B|^q8NrnT0v;_6#(CS>-;4|za;+BA}loo)>i=hc9{9W)5z~2>r zFZ|u`_rRAcfL_I(17G~T@%O{u2Y+9!)ZecChcE{!Sw%TW#)D0)L-CKtKMemU{KLg` z1pbiWfbqNd_Lw}bnyMT;6TOFj4Ss-s zCVq(D$B*z;w~rs=tBZg^X7~ku-ZChq`o5LMTH&9JU*oH`A77q;M)N-f|8)FQ@lP8N z3d~#ql*?K8m*Ss|e?I;>_~*9FlF50k7ybqK7vo=uuR4DX&|9tFfABBEzYzUd9{nZ)^nhqq4dQ{|@|{@oyFDEynjYe02*@Q_XfK z{yq42;oq(Gn&IBT6#stwC-EP^e+2(Q{D<)$Qr4D7;~&M>%|HI*_)oO_Ee8K7{Acl> zZl?HB|BWyHbE4Fz0RD^g4#Izl-t_n{ zHvSm(AOAi45Ab#ISIMXZK2(C*rH}Ey!2bmQGkmH4dQU!Y0RsL~#;@>I^FOq2-{Sv* z|D9OB$Ny1;A6g9lPxwFU9S}~j{wm{d`05~Nt@wY^n-u>qdgJ2%O%MEk@c+Ya()(94 zwAuFL3ed7O$@j)?tn~B|KyN&Hlh7NV-bC~!pf}-gbb1r3h$g5wPDXDkl}~SSdQ-Gk zdin|=`l;znL(dd{6>GYdf!+-C)}%Khy~ceedh^noncnR5W)a6(>CM(6+Z^c4L2oX4 zb1J1?%iQ$l851)fy@lz`PfxY|^cK)om7zWY=q*A|m3?}P4y*!RoZfQumY}yZy(L96 zTKomS483JlGVSNvTb|x3^j4rJWxpp+K$06heFdPmD!tXkceU0_G^^ z=&eIIe{FQ+iv`+l<~8^fn*z+HwfIHN9;GJbDYD zx1C|wf!^-)cBHqnV0LO9>Fv@0=2ge&^wLZq4XSjhtWHR-r@9)Fq}uyGyT6x<7mTwEIswqL+?0x$J0BZ z#T#pfo_hA7r_O>lD|&V-({t(N^gMbIJ)d46$e!^HwTp6(>6y;Im(t5xjNvKhjnFIU zRl;Cy0m{+z|Gkswozi&GJ6ZcG`BcMjI=xHiok8z>dS?pkEPChCJDc7)1H6!*r>3&= z0#jE2dKc2Wh~C8my&x~8cP+ik=v^roIRbiDv>19<(YuD;)olW5)Stz5^llXV^)lXI z^#7xGvuJKInp^0pQ=laj)9v(Lqjv|rC+OWt?-6=;(Yu$P?*HlC(}L;UNAE#;_tSeo zGwAQqL-ZaV5Gs?}!$)OQrvSaj4a1Z4nqvMGy=UpE`Y#FSD*(Oc=)EBL=QW%1eX)g! z{$&|oq4%m%YWLUaeN68SdhgIvM*zLIWPE!F^Dey)MEM>)ssGy7JpS}PQegF=d_wO_ z5k95&nYesT?+cwz`w6NLUkT=GdfyC8^u8n8h2Hl>7t{NJa289+CxR2`{Yj^bZZQPo5KKfc zF2VQ&^7!9=I>7`4y7|{^P5!~eDpsKSf5jY3Mle0WWS# zzyFB562Zy@s}e}_Ke{4a{|VM0*oa_Ff^`ViQsins^(}y4U4jh=)+1P7$JIM9TK@?) zCfH13Z9<^_5YQqCHYeDUU<;+uURw>x+YlT?ur0x!1ltkpOt3wHJpQNzb|lzo%!s=X zsLD^Ut6|%nV2@Tdn!O12C)k@{KZ1P-#_0bCYy<}o95`?!IGEsAf*p1_;}N*?O}1J(Z%9N+p9oJjBjL5JW90*l}zf-XT$U=xG{4uMbL5_p4H z;@%?&26;9DK}3)e#01HhdUFIQOhHhIdnu!?{{*#6N0g)f?Kqj>Jc3gQ&LlXMK)v}8 zoYss6a7HT=oJDZ9k|LvUSVCAijLu5W3Zk>Eyx|CuN^5!~Ej4Dwcjy9jP0xRc;^f;$F|0~o>G z1os&Hy+iu@37#Z)fZ!2=2MHb~cu2X+8V&wYg2zns#|fSo)A|&_vjo!r2U7e;ck;Q0 zfxz_t!HWdH5xhk3CBe%C9}v7k@D{6J2|gwGh~Q(B?I!~g0;&JO=LDwy>rd({g6{~_6@cIy8NVI!`kvqyf*%NeB2X6r z!~F9gw?-iN)#!gG_>bTZg1-s=6q7m#T1NtP1Q4|4MXms1A{>iw0%Zyz9Gg(R`4f)Q zIuedYs9*k#WixJL5I1k~>gmVziLO2`YtZkq+BB6Qz3Fjo7TWwu9mj<+Z8_r9(FyVZJs^=$E z^e))C7P0OJ;JvM*C#9pHz3@Xa6`f! z2sa|!l5k_f%_Qz7gysoIrLnn?Oa0f;w<6ry#M*{%d%|rAb?2}5M6Yp2!aWIhBHV*; zXTseGcOl$$Ow8^rl^V6zUJ9T>?=7SL6ENX^gcjlcghvt{KzJzOfrJMW9@OHE`ypzo zsSYDNobU*((aNI;Par&+@HoO_2-PdlP;_1VTMglfjX>Bjgk8dj&?f8=I)omf+nNOC z4`i7JghTy*7>hC?%tTNxLQQBwdH>OSTN2(v*eAS@up&H*uqHf>aD?z=@jA(PokDo( zV5MS`gCIPE@XQv|S_#i4Jdf}krBrLtrvTykMk9X$P^OCruOhsd@G`VF$cmgntnJIkfYCnVtWK@L$5=-MwD-e?>mbqb782vxd#6*(}V66+$WJHsz|BgyDMWdN|#z)jR@y|q4 z5lv0BH_XpR=s>WSte zT7YP7qWOsCA)0qg{QMfMLM%umJ%6N60V3V}O9G1#El<>J!ZJjQ6D>uw1ksYiu>`iX ziMwng5G^;vzXH*!L@N@hHy@&vS`*PK1B~cR{~xVEv>DNwMC%IGS~9BspJ*N9yB^U7 zL~;daKk;ZoqD_c4BGNBE4c>tD5kRy#(N08L5N$)WCDB$o0mZzv0dGsReIpZX*D?_8 zK(wP~)3J6Y+Jk5pqTK|kPXVIc6-oO&QJi~9&U+c2eTZzLeTfbs+D}aK5ELCibdXGk zt^m=&Ef3M5L?;p*Msy6(;Y3Ff9YJ)Yj-vB9T7_tTccNp7jwd>`PVrVM5hy#L?;pTiPW19 zQKgbmg7p7dKAA{Wexg$}r;>I5Pjm*+xkSw`&e=p~weFIY)PJ4Tc|;e8^8A*8=t824 zG@Fic2}zUurNqAyT}He<(d9(H5M4p^BGHvZ_Yz%2bQ96lL^lv!LnQrwB=x`j?}S9x zoBVH-aQ|zkBHv7O2hlA=x5-*=9YiO(-DGtq(Orh&ZX(_P8|!^Uj}zTb^bpYlM){z@ zKTPz9ksl?}{l9@dLG%of90bu*M5g}hwLeRwdVZqk4E}|dN|Y}VeNOZ;(Yr*i5WPwC zD$(m=k|UrYQNC{&-?xa~5zX7p*eaWm=slv3h~6jqkm!R^lg{B|qECsW{u?i%&srGK z7ewC@eJQkG5q)i9ss4XJMf4rf_e4Jt{Xq2NAasi%`q_B>N<1skZ^RQ2{Z2d%(H}(r z68%Z^57A#le-Ah%^Wm!gA2E%USpEc{1Xcevb3Cq&6^|#F@mmw|gv8SjPeeR9@x;WF z5l=!q>A-Q2D)AJ=Q>mcwl*V`J0gQNB;+cr2BbJ&UPp=(S8Z!>TW+t9xXgVA5;>5EP z&qq85@jQ)*cuwNEi02-_B&OcroHd2Y7MUp9S#}#48go zNxTB_QpC#=FHLOv|Ms^sUXFPAQFoP+JpQY-oBAKGLcAvNs>G{H&gKfBFsA>H*CJk* zcx~c!#$3yKYAPQM@dm`_5pPI*B=JVXyAy9rygl(I#9I+>N-S-EyjhzM@fO5ej>)z) z@pi=95O1sXvI>LWfp{0<9f@})-f0lmMBlX$hvwwW8yL2f8vbzWa6B-CN7Bk z#N`maQdDMFiARWa^RND!OYtehXAqxCe456n{7*O0&m=yZSn9vtw{wVf=Wj6Q6F*CQ z0r5@57ZP7hd=c^G#1|7w^RG6ossEP^a*$a9& z8;Di$S0rlszm|>oX5t5kZy~;$_*UXOh;Jj-mEZW@Nv!L?@w$ijKH_^@wgyIge`{(+ z;s=QzCw_?dQR0V*AJK7jCXWrK#7_`EB`)d+5aDU!X9fV#JV*RK@$qu;ULh<_(p zmG}>mS&086nV9%5lCg-@5kUM8@xLONBS7V&uK*;FOh7U=$+#rrw23KjG9HO}|7r6{ zCM20?j0}@WNM<0Jlw@j>$w;OonVdv5|B6R@se_=^kW51|J;}5r)9FBF6%tVuf0CJ$ zNeMG6p-DBFm1JR(*+^8KCz+jO4w5+sQAp-8$azTSCz)4G6;i$b8+iee1xXfak?lyb z2+8s!i;^r!vKYzYB$Bqo6^11Yaw(E!NObcrre#T%Ypn*eg6LNyk^VnfX<#K;#b8z= z*^Oj%l1)k0AX$fGO=VKqt|gXJhD7!JB>EH}*`8zvy;quNCz4$n4av^Nch{Cpl)IB0NwNpY z{v>;n>`fx?KkdFLuYE}NCD~88G=!S-0FuK<4kS64L|p`o{t%KwTiIw1Z)1^|`kx#{ z;*cCoaw5qwB&zKvIkqJsIi5sUexvD-bV;lMEr~sl8-c_n@kmtLPvRS|KnaodJ@Raldy=iiIo8(;*brBeo=Y5jT zNIoF>nB+r}k2FBLe?s!O05NxmS_mEZ7xP4c~%z9CWX|0Lh3K$_oZb~{2>B^+@k}gR)AL+uR^OG(p zvCO~!Q7bb2f4T^1ljNeLiw&}pSc{V`p<}h*#&jvt6-bvRU5<1a(q)J7!oPg0A(j4L zt=;th=_;h_kgiI)2B~`dAzfXO%cm^UHA&YZU0ZXCo^)N(4M^8(k)-Pz{tZbtCf!Jb zRiI6V4&MS3vl-lY4J?nAmC>AuR;u2Juy^#AFBq^AGZ`a?*MBt4Y$@CHwM znD$cg5p4pbM@eo+4>(DWB|V4qIMR^xcv98slb#^si86Lt9?~wUD;iry$LKxMfYc|I z#~(?i0jM7px~cy)X-ry>CZri@I*2Yjxj~ks6={Fes&{gP^mNjbNKYj_nRLwhpPDOx ziggC*S)^wU7)Z|^lFuc*f%H7mD@e~Ly_EC<(u+thY!i@VE+)N1Pj&RmM1Q$b>J?o{ zdbKD`{ZFqUmG_@?=>0#v-r#Q}y^HjJq_>gYM0yM9%>%Y3Ja&>~4+Bz=kWWo^|tyh{2$>1(9#kiJf;YCfqx1xVi_eS1v&yC#A6 zjPL>JXQUsJenR>Yspa4e8IM-;(}7`ki3D*P&&l zq(74Wq%@jM4u$kr(%%f{@2${`q<@k@+SLC>{#)sl@}D8Vzoh?>>6f2YPc}B$_+;ad zjjKa9UfFm<@&t+}o6z7VCR>7R60&*7CMBDJY%;Q`$R=-G$fh9Em0#zaO-(i}*)*eR zWYdvNKbVTwjAXNu%|tdU+010K=;-aLv)KkyvN_09&rddIt0Yrb1C!glWK#39`N-xM zm?{3sWg)Uf$re_4HC?22BwLJZana~~Hf&3hZA`Wl*{WnqldV9u4B2vIas;$N)z0Ww zAhH$7Rwf&2{xjYD3;Akf>yWKZrrLfo^Zt{qMW#D{6L(#*4an9bTVL;z-iHmzHX2j2 z3E2*0o04rswi($L!o0cR(anD|CEJ>8Te5AGsr@!)+mUVG;M=KSb`u1IhL$J75q(m=7X5 zSjW|w97=XL*6{zkjzgY>yVu|97yzCvV_bg3&{_x5$*v%~i0o3bi^(n-0EFZ+ zGAaI}pY@ewSCdKcH>r|c(|VCzM|LCG^(GnJ{|lA60+6Y{1&eSC**j#nl08Ls8`=G2 zx0BsNb_dyA0=Uy4?;fN?cCS(1XM_jH9wTe&|084%kxBD!vTZPAj}Ey%PWA-ZlLL(e zdYbGdvS-Mim+7-IJ~zOSy&ydL7C`ng+3RGlkiACsY6Bi1#qkZYw*;@w0ukg0(DJ)v z-;=#Z_8HmxWS@|IK=v`&hh$^)|1Brkrvq}b&&j?b`@+!bBY^B{vTw=08Dv8C-H_K0 zWPg+WNcJn)Ph`K4{X9S#s^7@|Ap3owCu{2eUz$W`{twxIWO5K>|0+}aIp%T%H2a*R z+46D7HzpsKd@=Iz$Y&xSpL`1P3CJfUpOAcF@`*-c<&zB98YTH;$-Tg?vu(S;=P?us#CF)x})n74ux=QvbE@ zyyU9jlg}sP{4J7vLGp#kb@MNTi;xdJ{wtT}XBG0r$#wrvz9ji_Kwkvs4@SFO-`yg~{5~{t(4<_H6{6O-3$oD7TmwdlrB>4e@DfvN4mbH@~ zLVhIqq2z~?A2y^vVt{W1@}tO)CO<|8)xO7(r{u?zJLD&jTjVDSxHFVnS2Xs3joc;o z$vuV9JKrOZ$OH0l;3!@(c`|TpOyn8)$>ceCUjPMpIdCDb$VUWLYcJ(;QVSqIh5Rh? zQ_0UDKaE^H{)|a3R{;HqpG|&_0_Y6SBfpmXdqD5fHR zlKf}#r^w$Uf13PN@@L3jCV!Uv1@h;}pVyh_eS497^dJ978m|lhoQ@@;}Mt2}rrCBY^x5gZYcR1^-Px)coiF zswiqR&HH}=#e@`NQ;bJ3jv^_{6`=jpit$A`fp#n=qL`FoVntGn)_;o0D5enPj-!n8#q|qtKP#FfT~4FvUU&AXypxq7=(eEJm>eg_zVPEN-kzQY_uz zDV7@3YgvjFD3)v4D3))n6f07wnoqG(%OJk17`D|Ywxn2{Vnd2GDAuNsBS7)5Wf<0> zSf65DiuGEJ@!ddA6?h|xO@(=5iqZEU(QHPsIfW|z%2Ds?RusEXY)!EP#Wob%QJCT{ zyFp>9V<}FgIF8~3isJ|RR-oum zbSbQXp2AkLW^*Y*3XdY7@EavXZ(uc;h$5Asu>cYiH=`&-pSK#Z>LY-nqBxtPrjQQ5 z7!m796em-hqVe*Hi2gK+( z#ibOg{u|%Rl%PNTD=4m|xRT=PMniE`s~1_H0utz|;y9|D$-5;wFlRC~l^> zi{ciF+bPsP{-L-{!P*t6sX7HHO#ffpO>rNEs{a)C4v-Z0Q>e;M@xUNqaeSEK1&T)~ zo~C$|qAB=I{a3|*0Hb)4;;At;&rm!kY|plOiqRv0;zbHo@F`xRcv%62jp9{`*G2!D z(G2|wpm>YoGm5t{B)_BhUcpB5R0n|&n)+Y-Le-RxU+K?A@f&49@jGQxj{cx*3g(}b zlT!ReIWEQD6#r8E(-KnXZKU{*62)2SS0Ku@2pTT*UHxw&M%nXzu6Xtmc? zl-p8nO}ULG*ZS>-*mj`YopMLYT_|^=)SbU!*p+g(RvwI$do(iTo(8iw<%yL0P##XX zFXcg$`%xZ1sp`MM9H;~x{b0&NDGzCl1A0fdM0ILhNG zPZ$6i7-fetptLAm%C2Z^N=IY#?s=4|_?vKY1gPbNlrd$b^g7RkGN()_GmUSP(L5#P zo0NUZTPZ8biz#c$vnWR>Pp3SIQdNG+lMUOcl;-hYGn_$r<}fqm*_7u~o1LR><51?8obmrF!B0!9~jCFKp2S5aO|c{Syj{eO8K<@ICca3keS z5=FiL2;t3?w~UFojq(x7+bJKQyo2&CO4aY^9+tFW#{>Jpz70r6|H=sXM|N9%#-$=Xb-P?rzmh?BJFZI8_*$}xL0V?gS z=x;-R>%kf&LwyCHzdiju=vATE8=|M&N#zaRa*=<2!T&^pBx` ztOh8yxW2PS{1|9UM6{epff z3(V-7&R<6<^(f=R)n+1GR%PI0L^i}`gYUtli{~r3%{P$J!Pya3zO9^)y z%)RsP(#rZAO%=Evb8i)S(^#7p$1O1=r z|0vdL6%LYE&8OQ-J=TRAbTqi+;oTH+|jww@CW`(*I984ty)9#vZUy zjY~B-)p%5sP>oMD5!D1#rueseUQMh+HJ>@wE)$EV=^yHwJ4Pw0Xmk{f5ohKm1+s9m8h1aT1MEGqFTBU)Q?)ovQ*29ULOHe zD^RW2S`9`Hf@&42)u>h-n5d-r*F0-d`&4UDeN44B)hSf#P#sLQF4eYF>rrh%wLaA* zR2xujBoQ|pqT1NR+LUTDvnQJm0k)*thH5JV+j?MUq}rQmuTffM+Q(q_qf#}WN?!q}4x~D$wYDx)hfoDnhf*MV z-jG*M$(k*s%BiAeN)=N{*{>2~&4!Q#RVA>JYV_a#P}Ni?QK`qD)=Q$F+$KYHD%Cwy zr%_!&bvo5~RA*4Bf={K60IIVL@|>1|%G?5~^QkVOx`65;sta3~0be{6>r$%AsMIZ> zWoQJdE2(awx{B(0s;jAV@u#|$>bfzhZlJn}>PD*n4eNzOodqJ?N_9KcZ91q*`wlAI z{8QaUb@#v|_Y)Zh^`POD{$KMyO7%F^W5WqhJz%Wk{s9aQ(myGW#RI0F3y-M{O)tgkWQ%Uh}w@dBSTP;{%?@+x@ z^{&X$|LY7tp!!IZ>IfL*N%aZ!qEw$!PeAn<)vr{aQ>i*n^@WUIQhhaWq56jE2dbw2 zf2TZ>&kENbG6A!lzEh_ za#L3T1DKzB0qTXCDfNP_o_b+wDgNzZm1!~Rov9n&wW$}UUY>dh>Sd^xq+XhOsR5y3 zSXK!t)^aA$3e>AmuSmU;1}j>11W4#rsn?)hje7MKZ@ilNzm~>pMWEi7dcRgP7^x4SK9KrgYI6jr zEjonyP>s>i52v=MkDxx5`bg@d8!PouEr$9SCFoekQJ)}IeFRXSNUiPyLm1WkQ`^+8 z2&Vt9Jq6PddyGs@9Zmis`;VXzB;3pQL_}`VldyTLAULEr9w_>c^?2 z{~wJmPe5uDo}zx9`e|xa`Kg~VUe66>^#Zl3`P45O>&tDzqI{M5PwLmGKcjw~`aSA5 zsNbf3QwWFZfBlYfS5e+IJnvI~O#K11sr<_Nk+G`&UqXCpG@n!dO#KD*x71%!%UMvH zBS86n(2>NgK0yEe!L-h0!AicWWoV}k%<|ZjFCwgnN-7C-!{XMDHz$4 zktrEjnUSd&S%{IT8JUfdX&9N2k!cy3o{{Mkn~BJX{0X>8a%3h(W@Th%MrIjURS3;I zJ0tTlG6y4bF`_O4Mn5+rQv3zhC>fcLkp&r$n>;vKb?rFtVw3)Ol{sh<^Do z{97@y10!2EQ%1I7WIIN-RW6!G{`jkXcVuK2f$hY|&O?}88QFu8-5A+j#}Z$|uoojS zBYQJ)%>R@17Qn6>OV@UuFf%iAD$LBx%*@FNGc(+PMHb7JB{|H@%*hEeGc&`R{F>H` zxA*^5oto-dy?S+z?DUMr`_`qkAFab^?N93vS_jZNh?c(pF~uBgq7GGv&U-kmBWaCk zGSWK2;78R4t)poj(;x;vj@Ie4j;D1BtrKXSOzT8iCylC2E6e?V>$HK3))}S&Y=3hhW+R@1M^y>d?Zy>yb){S`eCvp=`{omuwSf9|k1#3-Ow_=S$>o!_% z(z>12Q?zRG!?fA}bw_c?6ig;h5HPruGuhM#*)@!xP6eF(y zTK_Ft-_v@VR=w(XXnjEIT@iVY*879P1o@EGM_NRc`f+2^`jpm}v_7Ntg)HIo(NSN~ z`j*z$v~=emQuxl)^8>9vY5hp+7g6|$*3SbGTEEizoz`zd$RAonJ-xqZ$w995H!X7o zR4+}rWM63gr|Y!9S_ErctXZ(e!5NmI&{jm1I+E;s}9<2Sb4j5hY zL0AWy3J<}O=5Ol9IvndPtT9-}V;v#-M`9g=brhCd{){k>#X4?uB`08=f_0)qorHDr z=t@q-Is@x8tkZ|1geLHwsbrIG%Smz5azXe!oFE9mPfOX-}^kS?Q*8i|B!@30P z(&3eg!sQJa%fhma?F=b+Sa)Hyv97}MvAS3RR*Ds3C0G$wJRlFmu`(m2w*aghtHSDG z6~)#eHg#gXFVhdOROiR~(BQiH3-~E^{RRFEdkL)1u_wj)0_z{F zFR^~X`U>kip?!_@4c51{Jyi4eSU+L?fc0ae+<38m)-;v$SFAs=e#81*bJWw5R{-Vx zOT^Ws&`?NC_!qlw@Bd+si#-lD+S}0TKwGYWlraJJMA#D!6tE}8)}6lru_wcx9eZ-@ zX|boko?0cfr>wo$Q;p=cr!oBLuxG-a9(zV%&M=%EduHreC04G0l+h8R@hrNYV}m~x5eHO zdpqnMu;u(e>iO)1t!{xNb{7?*qjtkq*E`s|WAA~zm)LtYUXk6~F!#ki40}K91F`qV zHvM08B?5$pr~;a*boQgLpTa&GJI6i-`%>&=&?~S4^$^BKAuv6DQfCnK!vD``u+#|8|?1{`PM{zuW2g9k2vFD|AhS)_RrYrz>h6&1op3n|2y^{ zN>;i4RG=>DZ|r|X`5zev_5NBfXPSh}QCK=Ip zCc~K$XL6h=npmSS70%S7k!f*e!kG?7^?aP^8#S@z6+nSA=z2 z7H0`l|B^V;@SUY<0*=}OgrE-pILj%Tu4)CGHE~wNk<-4j5{@)~&0iH~b)3~yxFDjo zhEZD!XI&h%1>mUrpGH%r>*1`Av%vtV4V;Z|cEi~iXIq?2aJIzR6lZgBZDusL&>@Py zl}K%kv(0Fo?QnL+*&at-`{3yFKh91{#FT-fwg8-68w6)}oc(b2z}Z`(_LOlit*mtR z!P!?$^^@5j=O9ry07veBG%l|IihqbvJ`AUYb2!fFIAd_sX&>hZoFf%M)o_&2JO<}P zoMUm0$2qR?8rKQNI0@$zi8@&kl+>v>r!`)KoPl!@&Y3vp;hcqY4$j${p!g&GA4gsX zoC|O+Y+_B8i*YW+`JW`ZM7wmgmkD^eVOltmAhIJk4vvfC<9Il29jKp7fD?{JVw^rs zf>Yq6I9;3!r!y#3WOJO}aFl>0PNhKo1g^lj4(Cdot8uOxgyUR;bFGfm%PD!j2!+|3jN%k#ThH%&ozkH@(Q57JTKzBf}^$o zoR^iptV^b^;=DFMaNfZA7UxZz4{+YXc~>}ZnlXg!3WJ7dRi`e2(+6 zDd`i5{Zz)!RLDrRU*dc%_*aJfjV7oHzr*<(=X;!AaDKq~3Fk-U)!Ba@()ktV51ij{ z)a8F8RgXA-;{2tjI_e)>aBA0oH52FGffsk2#>O2NcYNIO22!{aD7#T`C&FD6cVgUG za3{f?0(a8Ji#r+a+;I4qXk`T-lkRq>aVpqjo19vst)knv! ziMy7TYQDqnI=EZlu8X?~?s~Wz;;xUY4*!Ed+>LNI9!!->m9Z)AX1H?rH|61OiMuWC zR=C^X$}50zNyv64R{sQyyCd#TxI5uqfx9#A1-QH59)Y_n?*6#D;qHaIJMNyi`j3AG zW#I0OyDzSKK~VqH^7k9E55PSH_dwi(YY_J!9jKXy;vSBB*g#Ff#~7U>aZklP3io*2 zqjA-r{o@|fka4B|>!)`D?n$^OHi44pWZY9mWL4_ZaL>j)9rsLJIs7-zM7ho~8PCBz zPqN4spvBGk-@Onw!o3LB#=RK#Qeny#;F|Nldl|0j{B8@^(lzMyI=DWri`&NaR8qn9 zs8$z#F5EkCrTI&s3ReWR zFNkq(ZQ$OgrW$zw_etCbaUa2bsKIg779jjbaUZX3+{X;^M58I-Q@GFJK8^cK;}!7P zA$u(D(D~ne5%*)Xs%{w>^h1$i6yorWX$d$=Fq zzTeP<@FA`~`8Oc$C%E6>ev11gu4?|cpW}|4{6$9{{&CetFjT|0xZmOafcw3|btOan z-~AbHW!zuzrp5ggZz9~^@W#RY9k;Ie58S_T|HK{D|0U5sLs|aC{ZCKpm3rWfk2h|U z5l?Rcc&h*7P1xWKA8%s3N${q?n-p(yyvdZ;Jj2?+n-Xtoyr~8_-ZVqGro)>bZ+g7h z@Mgf91#d>YnKW62>;5lNvo?Wvv*XQ$H;0+dX^gq?=Ea+5kgGQE=4+;S3*aq@w;yjAfw##;?<9lX_RS-dsy*1}t}p*4Iw^$H-~b@A56TW?SX-UhV`Z$rF|MnaU% zCU{%oZE6%Y!`mEh3(b)VC2%Xet?{Huol5}|HnH7?{LvPRK~-!rmA6# zAV)L^-ck51yrXF!g?9|z-+0I3J&t!AUWj)*-UWCk;GK?lBHl?R>SVlA@zjfeK~8Io zdc->e?_9hy@y^E6&EL?@8KRwscfOj+bHKY0?=rlL@Ghwlyo+W0pYf{gz^wXmJQuGn z+m=<2>;ia>;d^*Ko_PgOfk`du;t}`~>e)WlLVX&+-1i`vUJLyf5*-$NLKJTfDFF zzR}@Y^E*A2SiB$VDV}Tr>ZAD??^nEE1{}QK8XM323ZVFZO4MJ*n8Nq`fX} z>HqpEZ9scF+8ff|lJ-WTvoY<>)W_Q1g!ZOQl;HaQpY|5!`KbG!`XBABWmH=L?QM;B zd)oWb-huY6w0ESvi-_z*d*>#qp$WJf?LEcVUB*2c7wx@htGgh@SD(>7#@LVcLA3Xm zbO*?IVB-?|VA`tN(^mICwDnH_v=67PdOqzjLz?=31xCB>|Ml1S7~0p;K9=^Sw2z~G zChg-Tb^SC>7UM)2PpWmqIED6Uv`_Oxb7`N~@aw5? zE|Bp;dF&Sn=VIeh{hzkl5d^=Cc1HVh+N#gfZqc^HP#b~axU?hM9_@g3o3`KJ#w&+^ zoj0bf{t8GGQbo{NI3l@{Q`#TXRyRLG_-C{~Z#aheCGGEMf7Nhke@*+F+NS;OfJXcKT7>ow4M*&s zg!41)KWYC$TYd#-oBRLv@3jBW;gX&9Urj7+{Sz?l|HH3a$G`Y>+x!oI8vJqaC&mYV z0`Mf{cV z<@_&e5x(99@K?iM2Y+?^weZ)#U$cp7^zo(t>$R+lzXASw`0J16Y>2O#zY5XJP4ExK z-xPlb{LS#Uz#q8+!ru~qTl}r?Rp+k*@m2G06!5ph-(IWfC%+^9KKMJ~%isC=g~-wS^ae6<%0sqH;v?~8u`{(dz9U%d#JSn2=jX`A!Ee+Yj4l{*yw2>ino zO??9o#~-8Abj?TNAA^5XgWw-+)Q-j1mp}N&4`n|Q|6Kf&@K38j{FCud!9TT$GMcC3 zpM`%0{+Sxrt2-NCHUB18ZQ!4We-XZH4gLlA7wSZse=+{0`2WM#o!{tRhOh5`8Z~^2 z;0k=3p#EYz_%GqR_&4Hv_*de$@iTlMKb9vD;D`8;&NcFpCHUz8#P8tu>M4E~KOe#i z{7UfBWbfmvT|iBB%k&ZaNAVvU5G36b_)pF{5A5NFvsG*AUfv$-+!?Q5%0_RKjXiG{~`XX_;2CAhX1CxRR70+L+90+ zZ{xp*|BeDx@$YIWWxp@{4;nuHNBH01e~kYn{wMgK;eV>gTIX~8FGeeWCE;H;1hK!x zm(#xg9sc*4tUt0Jh452D#{Y$&?%TiO|BL?{{-5&A`5j-j03Grd{y$Rl-zG}F0NVQ> z!FUAY5HLtYAXh;3(t_~`CM1|Z1vd2uy7|{rf=LLbAeglA5==%gc|#NLlmyceOhqsa z!N^a*1k(;Bnx0@rf*BeGRb(&|!OQ~@L1rb`i(oc_)d*%MsPoQ2FdxC31amb~1alM2 zGl(KkuK*G|Kf%HT3lJ<+BLoXJd=s?@f%N=fQNv%HKoHgA=Seq`5l576fY$tV^(_A*@BPHo-arotjUu9>GSU zvp&HF1RH9vu5Dw2%?LIj*tAKlN0nD^0R&qT>_V^=!S)1O6KqSc&45g>of6c~Y6pUy z2-FY3gDeC)4{7d7up5Co^Aqge-~_S-=z8`hxQJjMf|CgLB{-a5KLXX~3HB#AfIxoy z9m#kw!J&07fUF>1Q!mXME_!f4#EEjLV`;O z9D+*;S_GF7nEtPyaNYmy(XlQ;TSPpg?-K-#-7pE%7C;aaq{2)LGgF3E?h=$jQ(FLm z>G3Pw-&vC3s+M!p!b zzasdB;A;Xo>IdHtd`s}%=xTo;_(`6C>i^26lFCoO>H+>rpc+1bybA>S{)gaC0pbc>mKSh2s!1QdKw};pBwl6HY`Z{lC@^C#*wi4&lUvs_hd_Vvxxi z9Ra5xoQiPD#-*}^Qxi^0DEI$bVLHO;2O+|lk#J$cnF!}4oSATT!dVFA{2!Y0zmA=Q zaBjjm33dN(bO>b&7(AbFKEnA47bILj5t=6us*S+dix93rxG3S$go_c@%UPUobpH>R zBph}ACtQYbIl`gl9}YGDa7DFhwd9oub@Q*&5w1#jnEF3+4_6~xop2k%H3&B(T$6A; z!nFuh=O;)vk>QHz(YfaMKzg+@y&j+)Rfka0|k%Bz8*^we^s9 zTf#jFwI)w1h(XxjVT7+W=&mug6@OZ)_36CLE8$rz^)cs#%k0m@# z;o5Zq;VFb_3m`m+@Z<(J-ct$BAUuum|LOms>Hp!`gclQ@LwEt`3g#yO^`O+@pRgh{&0p73_y6k&uOhrg2v-};Yo!=<`ES&2AiP(l-h3B0iDuZlVtf?;+ZN@Lr+`3GXBPgz$dCmk1vq ze46k35$gU=sQwmIV!tN*mhhXQT;CC@9ib5v&W|$6;a`1`O#csmCH#-@ zH^RROeu{!gSY{~H3)_ySH~rV|k@L^Ltc zG(@WT6HQ7qg>cjsKs0$h3O*&#R3>WZ{2xtAG$+w?L^BgjPc#$J3`BDIQwKKdZJuE? z3z78yNcVrD*@@<8G)~Akyc5qJ@c8C0c}NS)xUW zmLgh=XbCCX-2X&1e@UIIc~(kcX`*G6veZem9MKA*thWH76^T|Bot2tcqE#BQ&{iW_ zhiG-N*C1MpNT2@|N9mjXuWZ%-iPn>GeWSJ^QAo5A(J@3D6YWN{3DMR>n-Xn7v>DOn zx@KLWYW_rOBdCpfB-(~(N1|#}l1GbOO;yQsjxIhLJ6R=u{%r`H4=`np)>fqVtH(B05LBXAd$G zoojT?C%TB}0wQz%*L7Y@^uGaL!Y?JVi7u-_BJ~PD)FQHK*9c944v|ab6M01HEkF?r zhbU+eqKK$&p)t|*Lf}#!yFu$oq8& zk^U8c=p&haOk6jXPlzWY`jqG|qR)taAo`r>YoafRzHI6gg|8YxqHl=4Bl>orPxSpz zJwFotPV^JeuS7o+{W4IHjK2*tGXQxQ)~JTKfLlr^M3#b%kpaZ$`Wh@rK0f60a`=)&I@XHZaCU#G4RrtXv~r z^)65oh&LzRs4IcqigLh<7I5jd&Mg)Bm;p z?n4TD67Nkc{a>$ZpCRvl#0L=XKR{}OSlt2Zkk#HSOVPkaXP*~I4X zAD`7I5X(jopG$mRlf~q^fcRobccF|I8NS{Eh%Yh7WyEdb%ZY7awq&%7jzjDbyA63T z68pqa%^?niA2u%HSf&Yas>%9kcZhE#?h;>5oD*M3+#{}t3u1lqZxs5(y7L?4D&lL1 zuO2Lr_*!Dq|Mh2m1MyA7H!6@kk~l zQT?ApAO3YHIZ;WCoIbNMcD%}KUsIEJ|u$xb9&lWb3-`aj9GB-=GnnyJ7YNOn}9R@<3mHzDsrVzvO4Wp|Q2 zN%k0G?nSb96J;{)OL88`ek8|{>`yX=Kk{tZ%(BqP59khmls zN!#%KAzDaMkVGUMl9(hVNt9QV<#A;us!P%nMBN1qI3y*>)g%>(>ii_?{4d6pBv)ys zMy?^bP86;+n%9%u(AXyGCer##cr(fGB)5>fL2@g}6C}5hJVbIk$vq@@kf@VC$(;jz zlDm!Oy(ABi+(&Z1R@P7HK{eI3od1(YNFFtLA0tsG|3L`JlO)fRJVo-fiF$_QITAVi z8z#wEqwoUBD5Qb4l1@W98R?Xylao%Ni*KGoIu+^EI=op+IxXq+q_PEQ zWQKu0=}e@vlFqCURnIJqi*z>9IZ0`4D7oriQ4(s@ajB%P0R5z_fdRnI3? zdqG_o=|ZHs^P5#HO1cE;Vx)@?D@&C5PNqwdE>F5N>9VBDD4M7VN52J-u0X2VKIw`^ zSzZBjovV_rNxGU4R#)MQxrQ=SRcn#1E6Cb1u45F`;h%JUMbpd;No~@NNRJ@hm~?m2 zO-Q#V-IR1|(#=S>AlYPNOu-oZ2_b^HD1zPNOkik zRoj8V_aNP$bWc)s;3wTnMzaejWM9(#bZWK614s`gJ&^QZVIE|3%odi&oHaMCf2 z*Km#`J&W`x(vwM#COwu^AO3}Z9O;Rq$CI8g93`%kngU2qAw8Y+R3ms=gV$5iGf2-I z1d^UjdJ*Y4r0UL}^jy;OhP)RT!3!IZ^kULWC70R-NG~z?Wu$WEPt_HWNLk9IKSzi3 zUQ(Cz3Q~_WC2f<2q|*OY-oP*;(%2{@LkbybLE0hBYml_taHIyc7YJCAR>qd*ukkBM zZzsKq^hVOFNv|WlhVteS)5>=Up}zmWtHDX{ zCeluacVnula8@fg<%5o%&I~P4*k8C@}&q==_{eo1^{OQmwQ2Mo5`?sXu4Tb1m z0Z4x&tsDDKq^k3ij=Tks{z_Vx_q&eLpT(c`l=Lssf5iBEwD(`KsYw4L8=q_(vT>DW zru#qHc$!=*WD}50N;VW)qb`5Q<|3QBK@2`G+2&;Pk*!QNKiQIG z3y>{JwjkNUWD6;&=J{lcXj!GR7}*kJW(&}Z8mw+9vSrES@Sn-yUn?v}wj$Z`WGiT? zra~oX?*Fq@$kroUl}vSevejf<-PEuq**auvk(rafR#w}A;jB-#G1&$ZxFOj_qjD+D zO~^JS+iVyo+k$K_vMtGWA=`>J>l?^9rCub|BkHz#RuVWNJqca96TD z$n@{OWV`F~l-iyRpKNckL&)|a+fPc}*Tn8mcAy{!80JA_Y8Oybz1~B~#*iImLJl|h z5oAY`9Z7c7FkjU47C?3!*)3$pllf#PkX=M}BH3AFCy|{d%#+DZAv?9v)H-U(r<0vQ zcIGfnb~f4hWap5bJH*ttKx7w);DstgSAH>>L-s$i7TG0amy=yecA1V9&Oo0`Z2@HV zkg_X?`u&&8yai+dSxFX>b;%+j#AF#+LYC^-Mp>zKhSX#)$a-Xj0`+HCkzG~WWPKUs zT_C&C)PFVE^@3kRb}iX;O_cH8Kz5VVCRaeBNoM+gb}QLSWVew$M0Pvb-DIl&i`tzs zs&@e~?jgHRjC<=*1n(zPonPz+6-_fACVQIf5wgdH|0vl||IeNvd(uQbH5By>+4E%2 zl8qI?=Ne95NNf z20G)>nVin}bS9xQ0Ug!z=}f3A?5K@E{ZrtiO0YB85Hbawsl_!Vov9j{aHgR%9i3?h zh=9{KQ#v!!nS;(ubY>NNW;(Mdm(DVqfU`GKvFD^SKb^Vg%p+613(%RD&U{Us4VlgY zbQT;6lr2Ejya=6D=`2cTX*!G1sS(xx=`5khI54erG*8>uV8J+lF*Dmhg=X za}#CgYB!^E44uvC>`iA2I@{9OQpj7$xHTQ!`J1G4wxhEvo$cxDL}v#&J2pB-ZD%^W zjDC{4(b+?!b~l_o>FhN+Y9BhP&(qmgM)e9nXMe*#kj~+B4x)1?orCF&9R5XC_kXd+ z&^eOM5h_rx?kGA(H+EAMonz@-Oy@W{r_(u}&Z%@xpmQ>v6X~2Z%#<2V86b2{Gn!}6 zIhW3vbk433I%hS?VxMC;=h3-<&iQJpE4h%)MFXaY|BsGM=Mp-X)45c_FB|Y>D(?av z)&GU>&U45CU(o5%d4x_u z=T15$o$KgSbgrb+S0QSRs{hv_bgrUv4V|kST#%7h06N#xxs}chbZ(+^;}GX&I=AQ= zq)ySijn3_K?ij}D+(qX>I(G}<9y<5axtGp;!yIuvpb=HuLxQOHf*PdrD4jRxJVxhv zI*-$NhRzdoo)V7P1v*bRWC5R*@i{tU2b!Yu0-aaH^&*{@=)64I`>Js2$N2g{N{~0{ zd`PE0|G!5^^?y3=(0O+>N1DHKeb8vq`H0S^bkr6=N8SH4d^(>gLxGKBTLm$bY%-r z#?o|`8H9^#Il3#+U0&=J=<1svlWS$VtBOnQ1qxIms~PVabT6a3Cfx(*u0?lSx@*(j zobEbwH>A5RUDfvKuGjD-R_zF4Y(#exG1Oil#-?;P(^)jKg@kWOcWWW2Euc08+{PH& z(cPWy_H=imyMwr73(yKX)7_P>*#dO^yEQs=_n^CvgzQOoFS>g-nnrnFy8G8Q-H|IG zAsw$J0HD z?g?~H)VN;k$#hNU*Xufs?s;@ir+XINGa3cD`YnL&*>u&(pRVrzChz%lRnMn;fs7X# z{9?M72%_$PBv4%k8T)d&chYUqE$CWwW4booHeH9VYdF&Xb!|S~P(<|okJypPmC()U zrgZDJpD9pBb%*R;1J)zmlI{(3E4tUv?bB6fe!5qfyjRhc=08&HwREqidz~W4S`70> zx^nZ=y-8$mHu$Y{Zx`gYCMn%J8biRl=srXDZn}@qy@&4o0;=;r-TN9E-3RDCME5~8 z)oansUucikiReB?_er{s(|uxeRZr11&0nge`z+lT={_g1V`Y4v?hB1_GtzxY8LEbt z>AphuRqfRZuannbq&LXx*6}8J-3;HN`vcv#>3&A{9l9UUeV6VBbl;;Z&EGsLx*w|Y zw9dzLKc)ML79UyN=XAfJ`vu*v=zclGANujP`z_t?>3;YB#QsRPei}c~{f+L=bblFC zPWRWwru#eHzv%u!_s@a1Ht7CMSAP5*sYHJN?fyp&`8bMP|C8eDk$gPz>B+|@pNxD0 za&z*}Cn8s!pIlx6n#JamHnHTBlTSlF1^LwEQ<6`mH5*ycC!e+k$)_8nBcFkMZt@w) zXCt49d=~PV2VNo1+7w1UJNX>Oo|Am8#x{t05fJ{oGR~)_s?-I@Hz!|^d}Z>5$m{G2 zlP^ZTh|m^QG-1kAZ2{zJN08Vh$(JWzihNn}rO8M2e<3W_WEXn{@)gNf8mI}l3i$@) ztCFuxz8d+O~kOumWc=nq1!fV8~@ z`QGGPlJ7{q75R4LTa#}~F3rFBM9k+xzCF3>|4kX>JCW~BzBBo*Fg zdy?-pdM*2qA5Ok6`2pnn2~!{b#XgYy5b}e_4<4ke!^saNKWwzl81kdYRr42u>HqoB zz-g=Naz>guOPo#yjRM2mEl}N zem(iM93ipxU zKO9B=Ao-&;hx{RO)&I%W{}7;wB7cnh8S=-;)tR6C34=dH{&ZtEWb$Xp#|lSn0SZ)~ z-Sfu#BKc3`FOh#j{xbR7rL{v)Ksti9rBOJ-z8U_pZqdKV!7o4gMHM|nqz{8x$B)%M0w;yvi8UjYOe zPZ`>tfZinZCTs%fskZ=ny8qLgl%Bftr#G35lWTp2Oi9md0V>NhTzNFTX{k=8Hy!1E z^roj+kKPRQDta^0+ne4@^p>YLGrjrg%|dS;db84-Q%ahR-t6?|(E5W_^yZ>Bw*m#B zC(XY%-w?6@y+!INy#-}duK@HGRs>b#qV$%cw-~)8WV(1g3ZdpK+1LhIn%=VXMz#QY z`tnEkE704F-iq|rrMD8jHR!EOZ&h*W^FO`S=&i0bb@nystz9GZ^cFyGou)7etRK$C z^wy`hAw4<#OO&`aGF7Q9fS%eE46-@B9q4UAZ(Dj>(%V`HTQvlF`tUDFw-eX)%BAbs zk=`!!c4`oMI~#mgdVA2@jo$7JV(>lb?WGa@-1eb&KD~YE)t`0!5s#s_KfQzL$)!;5 zKzav_<{v`uFnV(M7X>No@Ie-O>I#US>i_hPYH)hT&^v?PvGnTi(sA@oq<1{M69!Qt za?)T*?-Y8cn%L9mjqd-wGwGcpA!o^WwhmOE%ejJ>{@=TRo=xvUdY99?h~6diF0RS+ z{-;9pGgSSb-et{HY}o=7XzqV{4!x9~OD~}3(es7Y9)w8JkX}r0XbVsZNyDL+(aY(n zjX+|%2Jg`;=}GgKdJNvD_anV4=sid8N_r2{yNcdz^sc6N1HEhLU2B-v(YwAbKuz_E zZlrfJJ@rF?L2jXU>tI@g^lqnj54}6+-9_)t(XP9jDZP8?-B0hnftQ|K{^)PcL-d}a z_b|Q3>8but?@@Y>X|h=hy(j3Yji9MSQmb8n-ZS)`Rb;I;mfnZ-o~QRFy%*@cM(;&> zFVlNT3o89r=)L;?=)X=+Z3;%`Eqd?Lds|YxGlaiK?*jqf9|+3yBYI!Z`1GF0li=7{X_3pdVkXU zjo$A@=MPn9vji3Lm+1W6AoTu^VqALvQZ#M@AQOrXzcavg}s}7`4TL8uUMsq=mMJX1dkiDSL{oi;OqgX=t zrvDe_0VZ0K zq>%n!nEqd^L$PiX+sIO^Pw@uD1{5B}h7?CpY(%ju#l{rdQfxx8CB>!`n^SDogf#jT zTNs6{D7L9>3UwFMcqRLG6gvvOJ;l)Zzu1XFcYdMCD}V~$jp87R-6{5=*n?s(@$PA| z?5)Ms^7o}UfMP$2k;A``4{XSi^k9lH6o*h8Cayz`jx>M$iL2%>WYzzLb~MEW6vt4U zL2)d_$rQ&?oJeszh3WrhjTGkZe~MEmP7@vTE3hh3?*bHOQk+Y17R5Qj8R`ErRn4E` z{CaE_NO2*BH2LBpii;_v`OEj5;u6ETjG{$xxr)-2TNI8+*+Ww17N}@b+)Ck7^eF<0 z4n;_jP^kV-5f4J-A*2H8^FKwGqDPUd)UtMpf}%8b)fn|iaRtSV6jxGQOK}y&H3D8e zAc*XBGG0${!!RzO-2W6ei>-eJptz0VX^Pt^9-_E|;y#KyDek7YtEM#y6!%cvtJU<= zxL-sbpm*r7(a0qo%JnUWzv<>n`*b#eWoUQ+!A94#j5_?^1k3@gBto6zWC5 zWchHQOz|H0>2PKLLGcg8pA>%$Y3lwjxztmoFz5er9Li}Zp`4IX{t&1fk5V^($_aGR zI;5P4ax%(^RmO4>O4I+F&#s)Daw^IxD5o5RGzCzqUxX!US{du}|BRHf1t_T*jCUqV z)%Gc89#){7jdC5z*(sN$oP%;v$~h_LqnwLUH-E}`DAnPA5J)*c2k%1uP(o)zm3eh^tQLZeY+5#w7pj?qscYecJg>p^GRVi1e z)LTHEnsSYyI@dB}wHJugx|Ew!u1C3%OxKrj1Ii5*Q)l0pQvC`bu1#f>{;$1TQ0_vx zCFORMTTyOpqPC&jwy_PeJ>^c6J5Z{mTTqr8Cfbjq_R&yc_~2TaPdDbJ%k zhw@wnN^Ik$Jl`l>NO>vcMU<-ZQ>s@0NpVTT6#Fu9N&nZMkwqC(+LUcdwGjxxrSt|- zg7}mHWvD<^_Q?64GNHVJGNmjjGs>K@L)mSZhTo$sh7l2|YJ{?1+sdWvD=Dv{yoPe9 z`Kxr-HXO?9DPN?#f$~Ah8!7LgyovHw%9}+{nt!9FqHd$SU5l&fos{=c-bHy2<=st2 ziMn^lR{dWpc|aK|>LE&L@8!dkk5E2N`6%V+^S^$QPg0Jhe2Vf}%BLxx(Wym8q*VV` zppt!_@&!Fr3xA37J<69U-=chlQgwUES1Dgp99@ZA3YBjT5aGxxK&f5Xz~gRoz8@rJ8{9H_HDgf2UMEpYjjNKL=5ie^b^v{|pe}{Hvz5el-r&xC*Jv z`M(-ZrbFldYC{Rk6pv}`$3Uk!qDn!}pR{*NHjl#TC3sKESwSeIB zH%uzo0-7gWElj2RKh>gCiw)EyWC^MjscPk=sg{%!OEtN~yA0KGRLeH$#JfDz3VN#b zS8DiFD+^(j#!Iyt)oxU)Q*A`G2Gu%LYZ~TSRBJc3WLcL=dVaN@iIw{wwbBinYN*eDwx!yEYCEd!8#UwIk!q*LHd%J5r&PPD zsb1agR0mP*LA5{Co>cn?VK1t^RiOT4Rr9CXubDPD)d2z?*nm_AQyocl2-V?Kht}d$ zhYhmGbPUxI0|lz1sE(sLn(A1pV+OcUJD%!9D)S1UzZ>TKU!B4guTq^#Kcza2{*+Xw zQ$0_0234QxOe%}&EUJsC&ZauA)}%Uz%4`8@dOp>KQq={6)KnL#f|d7wRF{cy3Du>F zpr6C#jZM`uOq(jBa;O3-m#R%A{aRs{41#Lq`H#oMyji*u9c{(snm-=!=$>dwyCbC8g>4sx{2yGD(U}~Is8|* znyA~2afdPPqI#6-ZmI{U?xDJmYNY?y9IE?GRS!}$9HGitHDqMdGFHn6$^&-{hR4-AzOZ76m#a<8{1U)X+5PH>Hk#v{7>~I)mNqleg3EV zmg--s@2GyK`kv}1D%Jm~e$=wcuKWKlM*ml;-*j#I38?!Ysz0gJnV(AC|A_GqmHw0s z@*n*Pl&e1uedv!zUu^{1+n4^|thYZQ{mJN0M1K%o&I$6XQDqn{TXW}eSQ9KWa-aLe^&bP$3IfJXwGK5bI_lU{+#sZ zp+6UW-T94o-o}uS`DI*SfXH+q`U}%vg8m}(7j0bh7o)#;Q?o(pRV+nc^?$P#b^bT@ zvh=s4za0J5=r2!SHGKMN7ofjlL!-Yk{Z$NqRRu~o{nhEOM}H0aYtvto{#p%gnCsAA zcQmp-{S9k`zS#o$8`0lFkd0;Bg#M-`d^7r+H}+tpzZLx*=x>+fa8LSY(cg>y5%l+_e+d13=pRUbU;6tC!E6EQ zQ&z740v=S4VjQfD8dTmx>8t)v|8V+a2Ds3Uq<<3qqv#(`|7iNh(m$q=68>?@9{HY} zK>tJ)F3R*zrhf+gQ|O;Y|I`64vgZD$f98B zez?Of?(Xp6uuB6a z<9g$77^b~Rd4=6v3TfPmvjUCVXnalMb{fynxPwNU#+@{L8h6oX(73y{x~H~s%!y0G zDk*BNMvF#soMF|AoW=t*3K|0%9U46vUB#HzveYkoO=B#L z`)J%d+yjmJ{NH$x#uGFiqVXt=hiTa5Pwj`sV>BKgXIO>wB#ozN)b+oL=UEzW(|C@? zt2Cac@e&O^|I>JJ$ehN@Cb9Zoxq6Mpn>6%uz*KJx1HV18s@g0p{ zXnarOM;bpUpz7&QB~Rn$VSauUA&uWGw%=>ypEy#w|H2uc#{Y1n+W$@CpHf?496S7% zo}CGBCc?4$U*^Y|SYefRQkoP?OjfBquZFYwkV8|giLwS2c>?e2kN$9_k@2n2w$H;(QC3a%XPhjSdx{y0bB9Ds8e&Ve|G z;2eZwhkpTAwudTH@rUCaQF}OYnEYtragH&1>@fN9IA`FTfO87Yi8v?YoTOTdp=5AQ z#W~#!Py4t0Oq}y^&cd;p@0?xZ&&4^fa#Ho>0-TF*?C*a{&)VgSYy71+8O~)mci>!( za|6y5I9FSXR~o&lMqYz+ok?^HkYI4M{@47CI8y3w!nwsTH~%}@+i-5LBvn**;`lgs z;WTip{;R`#N(_$Gf5*l7cl~z)oES$x2dtH7s1+Rj3cyM0c$zr(8rfzm!AJ|wEpAVH%$Hj&XYI~;yi-$kZG&KzwwXaXywOwOie1cPn0~) zQ#dc;JdN`l&NDdAR*_e*=W(?74+(Kz!g;xN^2(43=QUiJgj)Y`-oTZb@FwnfIB(&6 zjq^6nCphomyod9yS}9EHzcKIQe1!7>&WBY)RewKLWQF+@=PR7gaC8?CA#cKA1d zNvh&+KEJ{F4d+{&pK!jz`2oky|D{7U|FQP-v*CZi(aK*1pn%_T{=}&c|K|TMoWF52 z<`RZuTR<6)3+{}#yB&t2x=qV%8e}6K&r{kWX7>gPAEZj$M&&G9e&%wPG_gvh| zanHlO1owR0i*PT%y|9YE?kR3n|3!{_Deh$osC-_5YxUo?`tM#s^5%*Qx*Zv*<8@T_$eN!;FZ{faU%-glMca^EUy@&fD?)#-V?gzE} zBiv7L$JPHD@EPvkxS!+xfcpjRe{sL8O}?rzU*mp@`^~UczQeWRKW={hi2FP4Pq@G0 z{*3!e>7?p~rb5sEBEf~RyH8bAq2GA=Yyjk&P8`oUre@?sw@$B;7o7-Tz1>ntVbUve6|M9BgZ~Q{q#84W& zMer8I6U<_GiwmIC;w>?ZUlMOAeN|UW<1J&1ZU?0wyyfxM!CL`u4ZIccMjK!h-b#uw z7~UAXRq)~yRw?5uRcpKntsDQdhcpKww z@^AlI|M4~-=4Zaiu1!yZ*;9Z4RUjeD) zYP@TP!V)>mBsNuomktv)@gBiz;q^@0#>??Kc;n9h;s>w#1iq=4=YpgkK#Rz_n65a$9vKk+X5^HXYj1@d-@fC z_gpQ10q-S~yjV(%ueJcZSMfi=dkudVyw~w($9n_scf2?8zQB76??b$|@%|&Wc(xaK z?}`U|eGjiH{`RWB1sL;@(U0*y#rs5feKe%c@IEj38u=yOHwOO7=zsCPR#oNaTfATJ zzQg+w?|Zx-D%;B2Pk7^Qergl_3c#!DzxM}zS>gZ0`wLGG{CE<{-z8os{&@J~tK6q@ z;!l7-;lJAQC&r%+e-ivD@h8Q%y}+NWa-z1n1(>&~@TbL}8h@H0t;t8=*XRGTcmDMF zGvVvuAK$isNMEI@mI&UvhS}^$Fo++nA>&m*TdKPKg`McC6B)$ z{>JzlskX}hCit7-Z#pCq2H&;-ZGB7p9q_j@;nw)u;ctV#?U3iv3V-`bqP9EY?_~I$ zORcEzcg4RQe>eOy@ps2R0)G$ugYfsn-w%H;e5?8X-gTV&4zt}K|3Gu7Tfi{+!6rNe z|Ipg%F#N+6ATUGXABlew{!#eH82IQ?i+?Qs@g_O0mYjgEhkt#oGIKKiY51q$Tk$Vd z+84VB^3Nz?Lh;YSzZhS)0Q__CwdUj77NGd^@h`-`U>{%*|KGru`u}Z}GpY`S0<^Z2|Z{5lFT9nP6W0UkIke|CL|@{NM2Z#{V7vFZ@67tCRmw@9=F= z=urMc0Ks_Unhta$C|?OCB$$+7B7%u4fS3gO@4w`gU^0R!2y`Q;v=%?XR0J~WZ(jx+cLo1XlkQ zQ{Mt9uUi1YdL@`(1A>iBvY}Di0yN-F#1+A&wZqM7W($Jd3AQBI#sFIpY^|!Q-E9eW zB+&bRg6#=*C|jx9+KFISf}II=De<-3&i|E%JqQja*pt92f3O!pRs7B8z61vl>_@PF z<+-vtkl>)oXC*m=;7Ec)3AFMP95#d}sDA|r!8ruy5md#$ZsPo!xzL)v zNMAMDi)*V(3G`xz;4*^C39dB$iduUWLG_pawd7iYn+dKXxPd^=|F!%^f}2XdmfS+1 zm7n0&5=L-4!MK|rff3wA&?LB!0vylJbMHoflm-r&6&JvOZ~?L2|-4X zDxeIhvTYHJC1?}$2y%iB!Lakc+E%*&fnNR)42C=q+)MBf!F>b|nCkx0Gr@z}bmjkH zQ#~@w>M??^2p%VRi{J@@mkFLEc#hyHf~RW_&k*RzzkD?h&l9{v@B%@7@~;ysFoIW% zzDn>0!D|Gs4;j{BR9gVS+XNpIyhHE-!Mgc>6-s>rqY6X-@zdL#IR;7fu} z2|hQ~XQgxV@Wl{ss{ay5G5^~5ZwP)M_}2LE2)-9a!Da8Xi62e%Qz;?%h2Rg9$QJOM zF~3(P774+h1b-3yOQz>8i52qmf!w?fW1%)`ut^AOHLIJ?=- zYHd|p0O1^ja}mxt3_tfUeqO=_2aZ zO~M@s*CO1QaBaf%4X}>UbqTHbTWluTfY6G6xRJc-qr?*GFr zO}^DooP^sDZcDhm$+xTh*cMRv+==i&!kr2CAl!v;H^N;@m{RS+?xi=vJqhvs^|ZOolU@2Ua!5Y{LE&?$um@WhbNCu|Z1gs}8NN|#-!j$P>QFK7D5Guthwu}^_Xs~C)cQ~O0pW+G zw#Ixs^h)?C;eQD~Bm9C;H-g&#mxR^Le{J<$rB8cP*cnXbGbEh!!E5pJ+iMy8^1L79v_$O-e)U z(W2&UF`|Fp|3nho(xzIH$clf}uVsjqCt8+hxuMpTsr;`Cq$bP zZBMir(bhzp6KyFTh;&C#SISrQpJ*HF=C(w7_#YO-4n(^V?MSpU(N3k6A$K7fR{Yh~ z?nHYM?V+~gy0BO2jc6aD|D%$Fhz=$?q_nDS4jpS^55EFhyUnUb2x4bAUc8Q45AZ>PPMR4B9i)lN)=(*Q=NgQnfCNjPIM;GIVL%a z$m+i#iS+zWbe_Vjk3<&`&q#D3(X&Js5&1+H6Wu~|3DMO=ml9n;bXkcfy1ed@ehA1z zbXD!=8loGCt|hvj=sJZ}E#6QfO9_#F1rXg_Yi}jGn@Ed4(d|Tc8gobK)A+jnNB0o9 zCTS2k3b6Q1qFaEu4T$a~3W?f85m81I8z3R7>VMsCQ%$r{t^a156LpF7{7=*=wI=To z4UExG0AuX_r|R8(L=O|)Z}JC->dGJ0S3ug?M~I#zdX(r1qQ{6HFa3x~#Z-|zMf5b0 z7JpS${+}cIndo_<4~bqNdY$M+B0KO$FA)u^|Iw>rNHnbYM{f}Qhv-eBw@vj{>6z#q zqIZY4PV^p;7Jmh(lMm|FKO*{;=wqU`7JTB#iFG3=F~n05PfI*CaaH+iKlK%m z#ZNq)xzeuyV!aD8S2GcBO*}L4V#Ko$&r3Y3$!8;;i+Fb8If>^OYO8F~Jm@C?@jRu3 zcs}BVOftXG1&H&br@ zem&w1h}ZwOaKqZe#>86?Z$iA8NQgHr4T(2bK<$TkOX97DB*a$#<86ueG^_21wK5(%AMah_iT5Gim$*9l*WL~wzMS|#;^T=A z8adVH#0QUP??rsbhY-tjGjzvfBd7aP9;8VL@}-YK~a1<@fpOI5}!$YA@Nzn=bHR%qvr@6(Ld4n^N7zU zzCa~n`@odiW%Y0o@x>+-{u2HBBJIm%DlvdY_3=@}SMs7yd=*bjLwq&e9f_}@b1w0< z#2N8*#CH>4FDAtL`!BKH{}WsBkG1#{-(vJuqqiBo-RK=g?eHI4@t1Z74-(&Fa{UA# zw)4L-F0p44-)JDzn2=Zx|HQG;#Hein)>Gmp*>A)xk`8g3WHsWPWDeqj_si z?u}@zZMItciS_(XJg)wm>OM`Nw)FtXti%%Px5N(-KTZ7bi2IKve#Eqo5$}Q$*M}U7sS#jtN$X@?tG)IXx_df8K3xj;=hQ0 zApV{BN8(@PuQ-T*GWv7%7aj4h_WE1-Dmk>*KaBoazy43PYWp|wKguNIkx*(YOfmt< z3?vhhOieNo$)qF`S60a+%E;&>laWk8GI{xGex@Xus`67|rXd+gGOcMxC{mJ8ww_E! zGQIL;kjadOnaSwPHD(sgk6Dq-rYTBhm(1wsCv&PR$x<>G$=oFKns6SW)hH+PnPh&F z1xS`9S&(FLl7&bXAz4`6iXR!ZWKojE^i{mcbML|=OOPx@@_!^t%By;lN7iz(G|4hn zOukY{F)hh*B%?`|CmBVu0?CTyd{#f2AG`dQ-f7rlNLDe%&i}2oN$l`nu90MQlJ&GY zC2NqZX|T0O*47B6`Xze!Cs|jh&L8F1Cpp)c4UBF`vJuH4BpZ|LK(dL1N3to2o%xf^ zNH!)#2Hr=T)>qpCl(F-FasY{a4kQQFfP+h063NCfB!^j?hm#ypHbJ6S zKqNrP zmQkz!$vFzsS$7_Z73V~6fk-YOxsc>ql8Z<#t}0$~3CUF?my%pTav90xYAY+fnzvW# z>nq`ihpd<>Iw;RWHZh4eMaH|km9 zlt)M8JCa{Xz9;#Kko;bniz|{pN&eDT>571lGfZz4So3 z7->ejIO#GXAzgx0I=B?+k|jW?=4WZmm;#n1y`FSA(p^ZGC*6j01Lsw|JW_buvs^hYDIble({*$gpy1oV@ z2`pD@x*_T2q#KcLLb|c4r0+syb)=h`hs{)?`PqVWYtk*tsY|+*=1QiqXf>W~EmXby zC$%2}(j7>5BCQVp<=Q0OS&lu1+128a`adn{?xd2OJxC8E-IH`5(!EIS@Lz_ik?%`- zfaP#M8-o2cei`es(4_~F9!`2N>0zXYShR=g(iU@}RZou~J%;p16>7jo89iDTf=Hw< z+RAaH7m*%MdOGO|q$iV}SWi*g0xDOhke+Jhr&Z?a@C;I|^Q32zo@J>!TazQsbs)|q zy@2#Q18DItRiqb|17u@&G3hm=myl}BC%u&PGR?4nrFx`SkX}V<_1}b~R}b@lE$MaI z3rVj~ouxOBCZu-$Pj4a(NpB{#LwkA)>8+%C__wjRoz%4!?;yRC^d8c?On$e}5@W9o zqjm)(hLx>P8YpiI+1iZ^7OSlYbv~pz1m=oV&i^v)TVx|h+hmfrob*-Fg7gv64(Yw5 zT??j1Iw0+NuSeos4)lEkYzAhF+SD_pjMxf z3i313FKps{UbidZeWlULpi6980lp^vj`SPSZ*^+b{i+Md52SyS{z&>O=})9TmlFmt zmlD^yU;L2%M*1h|@1%cd5@g`yQTbn_HWrUBG(sMolmF=WX5%S9;(TLcd(}SyBAbA0 zLb6GW*ZY4my9JW3p=?sJDaa-xn_T^u!Arr(rX-tM7fUvkj-6D7Y#K5fg%T#aNj8#f z921WOICIvK7fTCL2Yj+YQ-DWTVMeB^yJwa^1u#C1XxjBU^)PbpcmGwX#ou zY%LYasAYNuL}r&l*?MFflGzrZNIm~c{>kc}02H|i*#TsmlI=pa8QHdEo0DxtwguUi z)#S9vOtv-IHkw9xwK7Y#9odd#+mr23uBK8;wiDUTRVfy{Ozdn|vc1W6BiqAXcUP^B z#hzq)=~&3rl}BcNCKJYLezvcA(|NMLwkW*f547GLM0PmY!N?`aD=?4M$t0vx$c`gBk?eS~6Ldl8>el&5b`sgixmJ z$Zl0tHEC}ryUXNu1(e-cs>tppYmnVD4CxH+*7r_P=rdyec$vS-MiB70ipW$QZD&+5dpa!U3* z*-KkvP@E%Ve);H}$pb#cO0Alf6zRGxiO#x5?fldrQZ<90j@U$=)G*x7wg} zhDh-5k$p(^KG_H3=8Pmtm*Gb$(Xsx-UOy%KtgO0anKj`TMkSe2Gruw3Hr(uM;bo$d zeM|NO*>_~$SF_Y+CfSc{z3LX znlh|^)0A2F56#TvyPBkYrYM%ho zdUJ|$hR~dn=2X>ek+En_L(}HJBw2FO96@uW=2Q9UXzJy^_Ea6tNOLZlGtr!r=FBFU zh34!ut^PN){?~?c3|ZB-bJMgU-<(GVl;*rf=QBFL4skhx+UP+AuF1;M>LmGC+d6|n#-zI)a+VnOw^^i|(&%{^%zNK=M>Uz&TH+kHxy@%tHm|I(J` z0hLOf98?Pr(dDf19I9H`BbtZPJeuYawcM_Nnp*!=Vqwrcmgc22kE3}u&EsjFMe_uj zr_$6*d-HaZ(UXmyqP9AMdjC(;wg7!SgXWoKp;KCUK8NP{!qYsL=6PyZ$uBVBg_4!{L8cXwjn)lMYuk@@K zl|Ml9!IG~f57T^t<|8!i*x!6~2v76zI;tlHO!Fz4&l~eJ&1cM;UIEd3t}>~*@B&S} z|DpMk(U*Y8U1}oYYzXU`4_D=&HvGoarv9pay0*;H65+-XiY{7S`*S5UnZv>(pnSf z`9~&dYa&_`D=!BpeVxSUqzaQAsx>*SscB6?YbsiHCnhif%kq&kgW{*5HLWotXpK}W zkyoneY0XD#23m8{nvvFQv}P)8Y0az)vo(v+S=F0{G`qddp-!sU=At!^c%wD9`c#v7 z6)XVd=clzetp#W;Y?uX&E~H2eY!Tgvm06V5VkIw>))KUqGDdG2X)Rf{WyqyzEkkSB z(tp_yt>tNLO=|^OYtmYg)+)3{(Hd>|l`5pRGKSX5`dUT4Dy`KGvsxLC@oO01ep+kM z+Q=jlz&f-xFn(QH>(#-pugIz+8!G>LkCp^4zx)cbiP24kYLF_~T)?!pFuEnJt@PL+ z=5mH#-PXLy7?dhHt zttQzLD3jz!TKm#E*k1RewZ8!lr~wDkI;iALen{Qip|lRG`NL@)QSvtHj-quut)tE1 zF-DIydYocx2GTl#)~O~uk=9A(`DCM~47Fw1IL+wkw9Zg@mD00x$+XTkdJe4{X`M^U z%6scPTIbWUg5SEp9O@RJNwbvFx`fu%v@WG}rFp*0=;gGos1j>PT34Bger3?QhSs&_ z%C3M^a=poK(C%nTZ=%(pb+hre(7Kb>t>*T&I^f$)b%#)s-(|0N*RS`~Fs=WzTv`z= z&yc>+z-U;)jE`w$w36CGTB$Ucra5n^O1k(QH>h9KhNVhgQqPOh+M|jz}T94`>_7#N!|Sw z`4lbt1duz2O7g79pOaTw&#O?Kyh!T}S})OhS-pu+n|nn+@mjAMea-0WLe2b5T4f|} z+3VZ1-Vw(5cgrC4Rh_&~>swk@|63o@(qc~QBU&HR(rQoZ6I!2Y--pU|>vNNTVN|yO z%gKN3)qVoj#MWCt>pKOgpYLgD{WspWfYwj6o?jXX#Gxm5?X)I zmK6O->mLjCFQaxL+4{Rof=b%s3DtD9$EQ6pZM}D*J)zNws&q-x?p?w9zrNS2oxxL$Lo~jhN zzR?Y6Z%A9O{b_HcDw$&%iPV2PxwZ8VflRx((Jg3iSxdH}y>-b8rM)ffyJ&Am`z+eq z(>{u}9{y?Xh-@6~ooMetduQ7EQ!njZXiM=IMvA{}F-q;2-QH6-g0d2}_olrc?R{wP zTkQ^lQE&UxKEjv-Xdg)XaM}l1TL)`AQeoQm6F~b=+WPx%S!c?IXdkJPs;#5V>KNK5 z(w50{g1zb%K>K*DoPw0^cXgDM>8oHwu1n(z+Sk**lJ+&UucCc* zrIi_|Q}5_p3#1_#H5=#OUKf_*ZkC<02!IDeg)8eNT|7b#9p=d z(|*k8<3rwPKS}!~+E3Abk@nNHpQWwmf3;Pg&zY@#8nj<1g+r9~%e3E+1k!$m_N(Uk zHKVVqe;Y)l8q8a?zo-2+?N4dHL)(gc`(4^{1E61swDtT?TfY}-$%nK*viLvNfm5yh z3aoSBGuqM@EBLZ?L~<|D#Ab@RS+LA)k|ceDWE{Cm^4kd_wZcG%fi= z%1Y-(Kf2I7G$?Y(c+ZK>7OTHZWN#x6uZ%(eopL|8~ zb;w7NuSUKS`O4&@$;VXPv_T|ag?!bahAbzmldnm>hSVHQtgPI8E%LQ>2bAPks>#FR#`u<_*a=s=P@u<6FqJ_>*r+zS+NSIP)#YcPHPHd`I%F$hRZknq2?* zr_R#0%9ppz`SzBj9qQMe>~&}IUCDP**f^`*YV$qF4<_G}d>;erydvLQkvfk1k{>|6 zANl?ot%NEyT#ktOf#e5il`ehCEo*)V`O)Nuk{>~S82RB^o#d!lo;LF%$?fJxUd2St zg!wV#$CFFaj;rohC5`eOm!Cj>qJGxNI+aJx5BbUD=aZje`8n0-Y2@dSpH6+JRiZLGla8?;yXB{5tZB$gd>7nEW#GOUN(Pfh#MC_Wg45 zE7X+;WlVMcUqyZm`PD-cgZ$cx*U`V8{3grZ4MuO&p30|IF0O7Rzr|jArn-&%c72s> zNMM@qJINFByU0EAyU81Re9Gyi895qUr!YJ_DqknLN+v3i!xG*8KM z@{GJi-c+IHvs{3B|6@HW$h+iv|D%ueT@8C0m?qZF|M^%7nR54%|3rQt`3L0plfOv* z0QqC&584<#ME(f59scF8r`dQ^PkoX%9l^(qK0*E*`IF?&l0QZMj5J4XKLN|Ul1Ey% zIY$1x;a^Y>B3BPDk-tIyvhlBwzefJ5YUPpBX8yV|RaQF&_DEU7JMgC8f zs{)D%Ra=a2bONC|vc*IclTb{o%Un!kG>b`fA;?sbv=@_8Oh+*VGCzwcDW*2zRBBtE z%!_Gi#{T%Hu={@*9c^fOikYm587O9~OjJHI#jFOHrK}7Tvr){her%63lQ}6?pqPtd z5sJAf7NnSm!tVSFt^bCZpTa7?L@V=9qg}|{F06nmhD9lsq*#o?_Jv~c+SU#d(qD~d zDT-w&mZn%nW01)&RAy$e9L4fFg5qBuMXpG(4#g;n)hJe?Searp#h9u&X;IFi#VQo5 z>KYU$;m`hQdUse%7L}J2VMfkZQFq#U>Q%QEW)DKE(zKHgoIgMid)sj|42? zsfSG|wxHOILQno>c!u1PVky98_wh`xJ*z z9A@%ERj7UrFPRcUaU{i26em&~O>rE>F|}Mvgn2k#7>X10wOq@^Nfc*LoJ?`5sZJ?X z6sJ*~t~novJaZU-HpQieKZoL6iVKZDkK%k|Vtw<%nT`zSo*3$E}fa*Dtr2`SpTEfx`l7JrIFCyz=}ij1N~(Hxp}s*+7d z=912$g2ImdMW>V~Og;1|28vY7SY3w7+^cg>*W>*Z4;$^DWv}YMe!TO?^Vq&?C@XwSy~CD_#d4zy?;~uqms^es+A*C z2Ri!4KYD7iR&?$l5}h% z=vW6O9?if~be5&FG@WJ22$gF5%h6e0r-#gHna@(YIxEsymCh(SE7Mtt&KNqQbs%Ka zWV@8bA~m72iki!-Pz_11favJ`kF~WXoz3X1MQ1}gYtvbe&N_6~)fp%~l}Gm3&iZsV zDEEc3X*wIx*@Vu<+E5kArrMmm%89zOIi2n3Y(ZyhI$P3_%YXa0kkTQ$d1o6s+iE=J z-#f`t>TFMECptUO*-^hBWF5()N#2>xE}Ca4JF@P?i5%cNyV2R*m^}=$C!PK1h}*pt zsounJU+rC4Ew!`z(>YMjrJVy*E@$}8L39o-SDd=lm=CpV97g9DT~M9F=^SA>*ZUtj z`UyZs?|&38R3otq#?Encj;C`PofGJsOy@*8cKP#JHbNd9%~R-{DvVm0Ii1t#oJHph zI%k%h(j01>XVW=HBh+2BXEXCWx-!b=)A@+b1$3UJb0M9O&P8-?qI0oXU1Ic7HB={; z(Yd_luQ17#bgrr;SDQrt{-4gZbgq;87UQp{bA#T!bZ#sq#@ms*bBh6P6>7|FMsKHc zM=iON&RsQsw`uR8)2KZ=CUK2=bbRw13~ME-ZDTqKo%`sdwInmECY@F-DWlEl6tzS@ z0qAs%+DA&KPiHW4N|`5PjovF%w8q5mRtSryk}s&{Gs!K(GN?2@gLLqiOwfF7>B%w&d=r#lnf`RL9}cW%0~(4CF0ehAds+3C(vwkQ(1 zb6Pxem0FX`V-oubKmqg9U7YR$bQhwlo5C<#{RE)92;D_huKZ#pfbJ4>*Qfh`beEyK zWUXDwFiV#n=q_uo%h4S}cX{JiFuJ1AQ9_Mb$>``|?XGN+Rp_p2%xZMkqPsfXHR-NV z!7Qc1(_NeHx&~WEsA^TXUJ0YS0o^U>ZfJmwjBadn69sFJHZ{5#-OY{JLgm$XZDo?J zjc%iI#cxY@J7etfr@Mp7%jMABiNW`Dcc%NbR^#q2BVN0M?ykn~Mt66*2h-hy?m;Hm zlkQ%04>W#ny8F=GcjR&xja+`I5zo&*}6BbR@Cl{`O>JO(~ZRCG@_dWO+6h00^8KHDVcloGn<+N*2<=hu=8=w4{Z5`VGr zmuMuFhs)?@bT6kX>AHgMb#$+!d$l!vRT&%IYsz@&UaL_p|2W<2>E25B2D&%Xy^-!s zrM!;$mZ4X=w`uA$tGCz8opfEgcUcp6({0ebr)djw@UXZ-3M$S?xlMl-TO!UGhvyl zkrO;k_d!!Vq#co2s?+Qdx*~tnI`|mfC+SLZo)A|e(Y9pfXy2a_iRJAXx-ZaumhN*3 z(8cn+GBN>l!n{cLWy8NzdMM3DE+A9xRk}jIGT7^M-=O;+x^G$xZ_#~QJxtc4`;JN8 z6)N-J`1k03M)!TXAJP3l4-fLi(fv>Xa@vv4hwjI8KcV}ns=k>`J3INdX85_$FN}Vv z3r+j`-;paaa>biRj*@l#4Fj?Lmi}{ezoR!N-S6p5X6x<;x zo34~-NWB^8*=CK{tUO6WyW;Ua<3)N#-Zw{d*nTuYF-rV#KqBjq{ z-RR9rZ*h9_(Ob*{o?nyMTY%nz^cFVBLLxC{5u=L=EhU;InJ2v^=>4DOQ>IpLNy98f zZ!>yJ(_4w&GCHGFwJg2mj9Ff1T5koNv?^bb-l&o{`Dl8pn|uttm4z{W6{D*fT}_4R zVGVlgn`BL+YZ+bJ=sHH%HM*YAx~&c9ZDgCPj3f$I~wc`!|Y^qXQR6q-BqYXzB|3W>Fq&pFM4}Q>SSnizDZ&i zJ(b=*^bVxAuhe!Mvi*$iZ}b46GH+|u!St@7cL=?s=^aY%2zoLchmRb6uPzGlCRL($ zB)y|X{C1G;7c%o@zvvx9?|6F0(mQVC(ze*gjJ8R50zGN{M6tEkljxnS!>aT16lG*; z>9jwM-s$u%r*{Uu3+SCm?=0E%Y}%Y{^c+10_RckWp3(D5fbkdV7&ujUzLG8$io~4hE(tDWRBRVUjA*1vjqgU~z&;od}j!h=UOZ1+h_dLC4={=`% z$)2>X)#C+vFKQ-bx>mh@ncl1PUQw9zUHc;4f4#Dj%&XO#^!}mu7QOfBy-iQb&O7wp zl@g(au9{TusY%t!2lT$8_aVJ6>3t*_ruQ+u&*^Oq1Ms~ zp0+UlOYdtD())(q_w>G{XO};Jy)Z%^Ipp_#p!XNOAL;!@?q?!aN zmHo-+Pj1>NgqlQCY)+L4P{>(`%mlGYBQ z*Ai+?FHHX=`is!thW?`TN7G-7{xb9zr@tiqCFuX3;%#miekuA(>pGQG*c76_Ed5dR zm!rRYiKM@RAy?Gba+Ft_g8oW6RWz6}^w*@nGX2%)uR?!Soz*fwC;C49IOAU4$r z*56F4+!{B~-<-al|LJdO)Xx8XJ^zc=B-_&8i~e@>ccs5Q{hjFVKz~O~f;6<&WH$Oc z)89p2b)yuaj@@qb_oTl&{XJA7;aQPajLw$5=^sdcANu>*KtL^m4I~= zG}@EtUr+xO`jYcg>7PyiH2P=KKb`&=WshWh>)_8Cxzr9eI_JY@&np+HcJsw2 z>0dzq!jbD}G1MdOcrN{m>0e3z68e|Xzf{{T>uUdU`d8?yq^RoeRrIf+f3*m8wrI51 z(!Z{ZLEBwgCi4yS6Z*0e8}x6Ye;56m>EB8J7W%i*zg63nNMvv7-%kGyjlm?!*xo_^ zZu<8qri?^K#G&ugmry+wimIB=0sT;;RZJuvWE|38U7^rhf8>9^EYrtZ=o zSXOiTg)R*dj@I%{zf1pN`jYU6==Y@w`UA(=N2sdaqW?C7x#_>d0Q&FJ|C0WH=zmE6Jp;U7 zg6V%y8q)vB1W z(I17@wo?BkNU8rqf31bTl>qvGnEX$(`pc-?xJnFv8~sP=U_7Cf;b43QGccHd!Gxud z!9)zEVlc5GCowvy(aDTXZgdKxQwlBpXrqIvjZR~9TB9S3jx;)*(dmVn?Tid&D$N

=*0OB-EAXl=M0gOyFVJcAX?c15G3jILC}MjK{KX~)Mo%^B`9cO4F}PTGDS!+vG2x|Jhh=jgT&B#5Ft~z2$lyu_9)qhG zxN;%J;A#ffFt|;(kHNJ@uVZk%F*g{!QOH76q2Cp)Bj)4?;ssAsONCq!j3@-^x zADJg=^-68^8iThO=oyB=8%Ez$!~2gFs*IS(o;Z*#;9b-H$LM=T-xq4k2Mj(GraA%2 zcY&PH2A^nVR^5}qr$#?x@VOpbRq_RcFKhlQll<4{*9^X?<=-;+uH;9q+hgzp4~vH% z89Nh$pBOuW!OskSDfeFnQvW4szcKh-!%+SY#!kcFPsUEp;4j8b#6XUGc2*qN70}=x z#*W9>2^b4w$5$(v*fnMBgykz^CmtyW+Od-`c2ez*95BX=X6$6ujz3mZQ;uBE(euFA zsTezTjcwbuabr6-))zZBHg9a(_KtRTc6N8Tv2EM-My#G0K>QtAy zy1J*jr$;nq#ufQlaHgX%D~+3J%tm838ne?_i^d!@mZdQ#jRk2)Mf1~`o5s8}=20i5 z6$WX{S0O^7u|P$qu@H^LX)H`*ky>m~8jB4{3PNKE8cWkylEzY%RxP=V6l*)n(O8Mb z^1?C|@m$yZm82jvBv7l+Se?eIG*%m8neZAk*8KmJwP|cdV;vfs&{&tohBVfru>pQ^KUNwk7 ztviOsg)~m4aW0KhXq-XgR2rw7h0}&CSn*66XVW;VQWR*!bB3(Z&XTI%(` zj?!CbyhB6ICWpptG#;gKI}Kgo)3}4ioiy$iT^e^)wbPKPXQ;0GXgoyYei{$b(EXnw z59{i5|A&U{|ErP5Xgo>daWiQ7e{hODMdLY>e455HGzQ7PGGg@SX=whh&AK!S8XgU? z>CiwC{-E(5jqhl@PvdhMAJF)W z#)mW{cYQ?T<4UrY|5T6)uY9KQ1r58W*7(v4epS=Iq48~n*Oc!~;0GGN(vbZBvlV}; zxxWZf9PF{~=xFIyMVPr#s{0OoTImaB+11 zr?O@;6XQ%GNTrK28O~HDHaX4|CNSlYywRt|8G$p6;Ug<8!>6q+OpkLj&I~wv;>?J% z2F^@4i{s3UGcS(h|JhA`R-D-?6{}?qoVju4#L=BSq14vq874Cy@)=KU!u$pos3dU~ z!dV2z_W!HibQZ-~tWvCHmcUsNXGt7Q_&7`9EM2k8)Ur6sg#w=O7$S{y6*K?2ogr>FzgV&5Ak&;2c;HaSp~g%v27+`Jb^49bN^_;W$U& z9A&H{D^{(049m_VG%aIVC;9OsIPSZfW- z|IRfyH{e`r^4H;9U&+*xHwxWYH`SC|a9+c?6{n4J8_ttBx8vN8a|h17ICtXQZSsTs zZ@5kYqK3y?*G(WA1A~Kq-Zwv7O)|$ni2^jL^CBZ?BEnQU7XY?J)ERcsbw;p zLGm|&66Zx6UH@BArvO7X2gE}u%wcw7ZaNKEdzr~#v_afZs za5u-D9(Qrv8F1&poe_6V+?jA^!LEHs|RdW}@UAWS%DT|u?U%TktKqJJySmUT3%Gg-P~&UkZiu@M?)qkJU0j_4hSjn`Ex8fy zrnq+h*WF~uf@zJCBJO6jY?q0b6f93D)J4}9mlRQA6A$9(D55_$i_YmBp zaQ}y^t9{%rhYW;iMYq$9*=u0?r{};2;!bl=?Vq+B-}B>Sf}8g zje9EY8MvDKadjf71aQwZ%2@)35zoOr7xx0(^Kj1}GF8doURX)uUW^;zUV?i+?pWMg za4*HRrM`O^?&app6~oM4g?kO__n9GKL2&iDz>o&6i|Ytp3Dk6ZD98wu0q%!G!j+g=_yqSe+)syCxStC?toSAF zSGeEcemz92YxxdO2I}{Cl6HQ;lZ5#ro;d##-Z;2F<4ThM1@||rXfO-l+7{3t@_*v~ zgZmfm-<9#ovf#Kn1*oEj7Cl}3*Oc+`Cc~QmZ(_U&jXTjW?j)u)X=Tdr$?-iqA`i?@9k6D*$;29 z|5M8xh<6m;L3oGb9gKG<-XVCp_#bBHup#4kmj6A?|Fwmq@s3ActniMlYthZ0ntKA? zNq8p;tLBcuJGtW4GNjd-WyU5$4J-i3H);+>0kmMG$#jdxCEp|*3LsN&)8E~)5-Us}stj&~)VUINsVtA<=Mv)ABVi+5eky zg!d@k&3Jd=-GX;J-mNC1`Ckq(Vs zMg$snFbkNq$Bgng-e3yAd$JP7dm68W_Y9tg_bi@^_Z*&s_q?ez1Xhy6A)e-cvmD@A z^7q1uVp*Zlu zuj0Lf_Zr^Yc(3DW+Q-u=KoEg=Z&i3*d>8LSy!Y_lujqIm472u8h2wo(b3Y}Jk@gw> z`*@$@%b@)NU-HbC_*3G2h4%;E*LafZb^VX`t-fN_7t z`yEdwf+4Qa|HL03?=QT6t*GmNJiQiB#2*KLTzmwtC`PQ$Ab$e0=1nr z@Ylv)(^zW>tm*6E>#`qz-HKAvH^AQ%e?$C@hUoY<7x;txk3R~3OZ?67x4_rUpGvZ7 z9sXAM+v0DHKgj$weY+t^{2lN|TYGoJ-wA(L{GFv}lwB%o_`BinUhD3Gzh_0SxqIOs zh`%@fzWDnLu>`^24}X9B1BQrZ_8|Pj@ejt=%#VLaZRb$@!z#S4>j?a#OyVGZ;FwC-@Kf-0!H<8c!PBZ*3_k<^OhM$Rt3KQ4 z=ir}P(eZT(FlR2nzX|_B{44PL6EpsXU<$~j1R#6PUqUK(Oe?9)y_}3bJ za20@mofIn>qu*d~a20@mGyYxpx8UE7e`_U)uTwycTmJV4`QLQ!#=pmqLGm~JetZf0 z1NaX9gZNM3KZO4%{=>DMN9rIvhW`Zq<3b-+%ac_R|7m<(?c+aV@Y!K9&l^Rj06`3Q z@jd(&zK?Hd-w%dyLy@V9_z`}4Sh0iuB7PS?Gdn$eUHs$gr9rKt>wo+LzmKoUe;BLY z|M6eKx8=S6GX5+0ui+2d|M6cR(!zfe{~a^<7QQb2D{J`g8u7hhln)5xWdD$02KBAAO{ zW`fxWbPI@J)?qUB{!d^tLNK@rAeg(ZYaW7m32YV!2KirDW`99~#RwLvB^M@GL~w$^ z;@|Ma36?fw34==#X!4iCEG$E?Ji)RA%T-ON=_?SdWb!Kx(Fycgz=*37oJg=5!FB|z z6O1BQgJ1)KH3`-uSc_mCg0(AC0!?MG{x^L6ibb#?!Nvp|RYhZMBG8ac>$)~0*ot6~ z{|UA*?v?^YfM9DY>J(tewl#fwg8d10AlQ{)M`P_|aA$%+=C37pBiM^zcLL4)1bYl? z@90`)Z-RXZH2+r=liaWN@Bo4%2o5CpAHhKc2iIDf{A>JBQ#p*_@QPB?k0dz8SVtK= zy0&>N!SMvT{vYPg2{rd5g3AfU5L`fTGQsJldx}BJ|G^;t6P!VCHi71Ug0lq5Aw~$! zAvlj%WW1~03LR}kDqa3#UDM%POKf~yVI`9HXh z;1+`G32q{|f#62rih6C~=Bj8aw-Ve=aGT&2k>C!3LFTXJ?i+KxYJ_YyKyAUtmr7kl<^Aj|jdX z_?X}`f=>uO9kOX!pI5?_7QvSUUk$VH4Z-&W-wK7`yCJ$2e<0B0FNfLrnWm)KUucd? z@GHTe1iJn=$=?nBQPoTEmlgje_?O_HN=7X-$Dv6jBSfQ&M{^PtZjMiL0-6)ioUmdU zQS<-6W^+=SQ_!sQe^ajoOlHbqGE>u>f#wLKkEA&*&1r_XMx4&z^tJAcH0Pi>6U|v^ z&TK5r|8mp_L0&B^`jPl*zf>U2>1qxs+H$5%v}C(=BV=1E2zL-RD6 zCmVhWP0jqGSnJxP&^)6m3Z!`!&GSt7Y?|i?Vz^EL#yy|rMKmuk;)NAapcOBsc?r$2 zGAe8s=y0NW8O_IOUQY8mQ@?`dm4@j3Uz%4N)Z}l-wTj3?q|NIM-azvXeUqYjBh8x( zxtZo|G;g7Ks}%KdeK}O%_CZncJ89l){@i6o?lxH8|83q!^C6n|8}R{}Iy;CFDVoZ| zG#{n;NL3VQVvlK2o+)iUK~s{?lQch~`4r8ZrsV%7P09Zb&1Y#oZ>P+20<|G}`ZN^R z7P&Nin%*#$F8*t7NV7w;MYC;MQB5}idzpx4mu5nYE61SR`qFO!E_(U()>4+Wwir&uM-kHU-y1{rQUKx5oO~;5Rk> zJDNYx{9cQLe)*B+PZd{Ns`31VaAumn5>7_*H$v(6-)a6s^ADPT(fqSgG|9hJabV|P zLI}tCj}necsH0aYmE~{(!bzk^I3eLggcA=94xF-RCY{~P#yuDX-JE37Q*=nXC<7Ma5lm@33dO6a1M1+ zVlMp^&P6znxioj>d1a7rKJ8x_)zUBF0)&egvLK=4f9uCkrU30Y!bJ&}CR~hgNy5bm z_2pl&T_7nQ$e-RR~ws=UVOU7{XNvcOqO(4N8g& zS0`M9a8trH3D=UBu#C7i;kwATo=nEtwI1O{g!Unba09{(E6G}3zyBZyp?(6wEQ})D zj&L)=Z3#Cgv=_cY`vgR2pMVg{DsQiVh58DZ)-}-Go^VG(P5y(1+tcIn__|r%g>ZMm zT?u!q-WAfcCJ*t3dk~&VxF_M!grf=nCvQg*?j_Fy6Yfp8k0JZ&^xL&(M?cX3!aUJkC8N8YBmWoJdEET(*@Gg_T zgYZt}4o3Lhf*4(10anD^xR3CD!iNYSAbe1thhJ+l^I1CaVZuj5Mqhlhm;MMJBh(j@ z2_GkXg0MySB;oUfPZ2(+5B7&o6Fy@C_735r2QFSU2tyk%j=m@nx`dt~zPzSK z7#M8o>y7fpclF|)RumC-2-}1jc6(fZNweQ2?5T0d81kBf4(XII(|*^;=Y%g37KEj? zeYLj<`-Cs3y!4kmzAo>LhA$C*O!%_(vWzRq=W`L-yCLCghQChuhDBcJZxX&$<8N#9 zvObr|87wDz)7>?^{r z4f%%F4us#*TAA=WT9XofPxv$855hHpAMFJBNhf+uCcn@cm+)6w;}HHvs4IVoi9V1Y z{z3Ss$=LcowDbMY{8z<(uh&s6Jb~Y(;A%4;Pe8`+Kd86 zZgdZ=nGDWsa2A8J8l27G>;~r$Xj*g8nwOR>{^i|-);yY>tT{S1TJzIdiq-X)R4_nX1*=#oG4eXst+Vd5w=&v_ef^NxP=X ztF2W`a#dQJ(^`$zdRAPW)*7_drM0FN*D|=aLCgOZTPcoQrAcdjS{u^R^}oJ}Z2r*N zh}Om?zlp(34URInnZUaCEsV0I!L4X*Ps{dyTDtzHrJFyrwi8&5B|+pBR3q+4%hvy` zooVfE6ukNC@*RmzBjFXG;e5k?5ih!Yd=~C>FL?ppVk4i z4iqsxf910$l2q05!NxtrBKbdBn*VFo;k2IC)2DR=ts`mOM(ZeA=hHe`PHH{BT6zgU z>sVUH(K?NmF8*nqAkdH#Y1#U}HO7j%{x{?lgQtocHRW_#XVkcD0kzIDnX_r>`k$6A z{tY>=9{(56x}4U9`o2%=B5T6M1}~wd_k3xMtuhZS-TbNXD>N&%uB3IX4XvwaT}|tn z>eZwH)FF4Baj&O!gCK_ANb4r~`6;cN4c=n#R{b5S2q^t_TDE)Bx`Wo8ngm*R(YntN zdr7BtkKy;~pp`t{T7_BE{f}r)dL_qUu>q%NqNiLF5 z$SXqnmRai=S})O(N_|?-(Q;@#PpcuX)D052EDu^PEl=le8{}p=pw*%!Lp_vM=pdK2 z=$MIUwRMC@FUt!}EeU3aR-aavR!*x&E2WiaYL%m!i(8o@R-{$XDu;@K(9%l)S}#^a zS}zkxev_mp$@W!RuZc6-7MXfluhV*i)@QUNq#w|Fi`Kieq{;7y=c29=P*d;GdS4qN z%^6TWr1i0}KB^>XeM0L~Rk4ZK`u%fSUzvsMMo)A~iv^vZ!MX=oy{DL{woAL5m8Y5hg(Us{^~Y5k)_(UNQ* zjYBjp5%MnKKr$L{fLr>~P(%|F%|J8}(Zo7>}NkK$266yV4`RssIJu}fPMDr2ND()F&Hlo>y z?At!k97MYLPo&FlB3=9w&7dn?@C8AYK zVC9NZv4~b9+MH;0qP2~?hQZ3Fz5;B;b%-`HWL={5%<}pMH!!$iC1&`>Cbo&eO%09` zXe@mN*eF{NZA+vt|5|Y?qODC}n@Yg&?P~7!L^~M8-v5p4{olym|BdYZ-$>v8Rbg%Q z?nK8C?Ll-fk-hvIjV9WU$X@=9_BNS)4Aw9Is+PX|OLTzI4>Wj?z}n^^L`R#z|A_4U z-{>%tIozPV{~Ou+zmdNGTWi^C%h9n~9Qby;89AY%5S?hnlZeKcos%nFqEm=YHOgtj zteru0rVLKW=QiHXB08JsTB37^E+IOX=whPth%O{LpXdUe<1F*&Ng7=wu%c9uXe`l{ zM3)j>PGtFC@_@+@T_K8s6J14g4bj!Z6^(u!k#Mgkx{>IHAuiEPL^oGOqFaX1ZzHKV-r0{^bparL=O`^Nu)P_i5?}=J%6Id z1nL{9ia${!Pg(J4Whwocif;IGM9&lHW1mF!2#`$Tk*iaAiigGL^;t5M1}QiNz~WQm5W({D)6Ggmxx~0 zSw@nQ(e=_pbKPr1?-RXF^d8Y0;)$iHH;LXdL>K==cCio**8f%JAMx{nL?00SM)aXh zRnbQ_h`!MAX~P)#dZ(TjUk_2N_^rY341PbvBKpxN z@(CbO`I+b!L*)J6!T2{Pe<%8b=x?GwiT)BwH3iF3hv*-of2FbdrIGeHv~7BojMpBQ z_5`%;(CwPe*%tLG*2FEzYP52}Sf1aEi+UracSo zS!vHrdp6p0(w?2Ref;60BS**~^OSrSu05B2c2ALcXwOf3UfT01tCErHJK<{8lK&Sr zWFft;jO?w3$Jndx+E=zkk+RLka zl>wBc>aXjtz z^=V&6djs0n(%z8vX0$ib)n11+CmYmHfJ!e|N1SHxbc1IY)LkIjX9=_# z&!K%4?Q>~gV#V`lpKs^I1qLrPc#*-21*#8v){L#yFEy>p3|?;V3WHY)w2H2#eNBa{ zSE4RsKoWBMdfGS0sXbunSiOn%543NlUC_RT_Fc4ZrF{qO+i2ge8B)~c`vWp2)&Dzn zheXHK-LxO4eGlz>b?iw7Zr^9)|9%x-RR-7tv>&YThiE@6HPU`W>s9Wfv>&T*qd!6W zNuf)1w4b7#(tet@Zxua5Tk3tTN}fh}p0*}`+BOliUBkUf!0>=}Xp(jpSiNo07Wqhs zMsF)3S1av~74`p*w0i~<&Edv1Rz}-C0ji4PTS;4TLZ9}Vv|ph8q7Dyj`%BjLmubId zh~xo1CG}9tuN(1=s%ZFIwBN4UTYVXW_Pew{p#2{0_jM+%29oSswm+o(y`|QVXn#!m zOWL2%{>%pCr&_xP^K;r?sBu|lRO{0ASG2#S{Wa}xRK|AUMr30AJ2k#aQ#M7Fu4l)O z#FE5*A|6TmXW|KI|3WP1!mq^R(*DhY@H_E1wEv(jmj)7qKWW<(V4HzP`G@wu7Js|w zh!LV5a-k>J!jcu^@rftU8pSn07CZ1HsRXmA)t4dA{OJ&596OYiYjHeKJ z;wg!zBDRk|i@J1>m|E{KV@*RmGx4;m_C*C*aUcg5wpSQb{VkmGL3OM-czd zh*i@LGyL#M!0;nY@+gBx3pC;}l>qT^8fQC;^VUrc<74al*?!o8IED&otCuOPl$KVfQH0mN5oz^!YDuO_};ip19tUrT(Q zjz9^Ed}&R`!wtl8+(>*2@lCpID^o+Pp8(b2Ef!?`8Q*4u@OI++i0>f2m-tR%Y2#hm zKyBLHDk(dYqEbDgu!(MnS(F|y-3RH6Py7(^lf)0(*nY&|qXG?ijQH^yf1+AB8~rKb zr->VeKV$G&gU^W!@$=R4o7f@#8Kt~M>=Eb0zKO}O5%-#cn|w&zGI~@~+Erb|9qC_U z%m1wJGWc>OVEC(6<7)di`w z_-$fIzwZ!#MEtJFyk`!-Z}5ZK$q!XgoB1*E*TkO~Zr^{4?fY-BUIGw*Vem_XUkR+W zzA?++*2V8k;Ctd9DvEJ`8ixNu2jX9e{~`X3`1fI~KZyS{^}h`MJ*<|0>5Mawtb!(~ ztTV0}?~GT8>A>hrKxaZalhc_AO0Tjy|0A903{J0qW9iHwKiZ%(Bb_xyoAJ8nObN6_p}C?dq&VXXTo^ z3Y}FeeB>0L(OI2NPG=4MNO)&WQ(ueDhIH08d>xg1ei1tBT5&x(>nlZT*+9P~F1QA2 zBRU(?+1%)x7~It0C_0;|%s@602S4>}quT>y1)&r?bZph0bU?`&oC$&lAPq-gNe2Iq2vw;OQKwf5cGaU^++8IfTw(bfl$&pTBE+m3z2AJqE=i=^QnzcnqB}bdIHS zf(ajI@OTxFe+;SmiFEY;@3s2LMm&Yi>2yw|b6Q2Oxn~TMJd4hyCVV!XbLd<|=Uh7H zTkG`y?}l7J=RzGe(vU$LFQ#)zUG-QKtJ-*(nYx_LeRQs%bCs!IS!-QQ=T{q?1y*8oDu13c`R5Hb3_1o~ zft4^FpN?b|`^%?#*ffFAV9Q`+ur1JP=@{%9v1c$bm>SFk4&2Z)sGw77QO}*e!58Sf zXvj-?f++oEI036o-=_195#KfVp27D88u9_14-NT9 zDW7SovEnBNKc(}T<|3{4bAw;d(S&38R|dZ}_>IAD1zOeL)A^Oo4_Z{+AL;yL$j?gA zxM>?Dw;1s^I=>t8hrvGu+VLfwzv=ai_z#_b={-hw9J(vhMTy;U=~{;Djz@QVx|7qL zpwgu~A>D~;d}0%x#Nea`C)2^N7N(#(tszs=ok|eHr=~li#z)efM)86CbaXAfcc-U2 zLoG9-Y0X4;=894a&q{YTx|Zs@v(we&Pj}A$FEcmYdFX1+r#o-0IRB6g-MUA*3z^Kq zbQht!6x~HD8M=$nUA)GZplkX6KZln#t!3ygOLqmsm!rG9%3F(!qEi6fmFn78p}Ria zLH?(^nsHY*xCUL#|Awz+(58UyI&>}hch^(yAXXdDZPVS*#5OXxG2OH2ZbElIx|`D7 zf$k`}ThiUkxH>f$qR;;rvK8HJ4cVIRHWgP`bhk6&_QNPU(%pmZPIPxQ*3JfZsqO4m zNz&cDrtC>~Z@QyRY%k?njaJ-;?!J}0)wMs}W9c41_b|E#(mljv4l;PKiVa+?JU_Ie z&^?^)Q6_T)U7d?-v7;5&XdhEkj-z`D-Q($=ME3+^oj6Q>j8RTjiW#AMD%~^ao>o!l zo?g)f(mm7QSrvuuIdt!#doJB;>7GaTGP>u}y~t!PFetNtI!5s)4hrA4JL5o5Z8(~8??UwtHZa^z0)YS)4f9_ z|LcXj=-xdmQ%#=5!0iW!G1W{hIy)-4~7WQcZbT5&3mX_f@*z(S42Xr*vPZ z`ySml=)O(&O--=fw{&KaL;Lrg3a6{T05k6UbU!lW1A`x`z<~9!Q9h|CbU&l3ziOrX zxxp{!%F1C#_-iA6qZF0-wl?y8P5Hs-KhpiFru?jkdi5(kNdmvolN|Uvy{YK_f$TPP z|D^k`1@JF}e;fQqpc>5W5A^S|Nt3os>)Pj51M6VRKO-h{>)4WDgT zjdRe`{7+9O1wAAVy?N-ZL~mYtOVXQ<-a_;=|I^c{%@FVzPNFh zQ2Ib}DSFEpacO$X)bh*LT+RRVY&z&^^4CK>S()BC^j4v_2EA2lt<~tQUI_@KSLgqp z<^P`Mf74x;-iGun|Et*gCcHsaqv0FT+gOE_yNM!N<0yKk(%X#Qp7b`Sw*$Q`=xsx9 z%UW_PdRte*HDz0Rn*ZgXr@sI*WJh|t8nTnYo$2i&h#muh-Hg6Fy*-BL^hVP=oZepa z4y3m?z5PsPA9|Mm2a5Yw^7IZ+M14Mpo>Z;LpPo(!brqKUm3UY!c?7-V=^aV$70M0k40`9#)8ubrn*ZsY zUE4gD-Ual|GvfIwGiaA4e|kC{)Rar;X?mwOmfofGE~j_dFs|nRsz~oDde@rd)dsJr zEnG+M271?5VhYvTja8A}&Ghc2cMH8c=-pa#Z=-j6C1Aoj9T;*Ky}Rk%GhkIKir#(n z9y0Fz1|Ohj`TxHrJWTHqRndAMRYd#iaVtJy(2{@eDZ`&O_>9444O;T=Jx|Z4*D#7h z&!Z>nf6dZDsUW?8UW?u!|I?H8zjEnC^g8s~^kQ9^*DCb7!*mmpKj@_-8NG~TW_r2l z7WCeuSJHc(UZ378^j@GR$zM|I)bw7W_p<)^RIVr={#Mu6y;n80_Fk*t|_WwuOc#(aWWC{|oGbPDXT9If;gdhHvWCY1b-9-_i z91^i)S`yjt5#i|!PG7}Dolj=eXeTqtX0lq4VUWy1GAqfoB(srRO)@*ll_YbJ97ZxH z$yOwDk*q{AH_758^N=h^GB3$|YC%oSPqKj4{+uodb&on(h-6Wcg-I4sy45n`H5ojM zsT;C6Jk5k8OOPx_vLwmUrm~d&)7BBo%aAOq|C4?3bc>rfygbPYswj&M85_xp8n^dy zl9fr;C0T`J4U$z!R<}^Brqzjn_@?n(lVoj@wdBsV(uJrN)~N(Y)+5=JWPOs2NH!p` z=l`W%kyKAMCfP(ivEih<(8(y0%}F*h$EMb2 zb|Tr1WCxP%ht4UB`HostXLh#YfBBzeHc$Ik<-ec zI#aLHl`fTpWkX%A?DalxM zK<@r1m>o+Msgp??HW3@BU?byG!Ib_V4{9Es_UFMCCz} z$4MR{d6eW~l1Hk5sHAMCBzpf&TP^$T$rB_`>D`J%-v50`^GWhF$uk-;X|MRHje3qG zAbFm|C25d2N|$KMq34)h|+0Er&G(a zLo1%hXisM#otbn-(wU^9krPc-?Vgd&LON^JO)4p;SUNlDlB9ExE=D>h>D;7q4VoiP zs_}V9=dFAu)u(_+=O4Yf4iq}8?O&6_*q>Gc<;{US+B^BssNtYsB zmUL;-Wh(#0VYvq(2kCMWv60i9NxA~*dZa6ou1>lV=_(>gy0Xe^+*T!BZQ!JYU0G|8 zu1&fo=~_w`F^PuK*CEvqDMjFOCy=gBx(Vq9q#KcLD8!Kqo-`P@>Bf~L>87Ncla3;- zlD}R*>bOd`AhpH6wqh%_DYbui9qBftN0V+#Dv{rgbQjX?Np~XMfpkX`(;TA1PhHx1 z&Wq@F#4XPqbuP`i*#?&LrC`_-Jf({(*3H|RgEG&fb?Js zi%tQg2Wcy$IynKgI-wjvdMN4Pq=zZpeNz*xAd-#KBT0`M@yqR%DH}P*ke)+&Ea}Ol z$B~{$dOWGj^|gnRrPGs0#|TC59BE>awwyw$JO89M3#c2Xlb)ek;*6YV>6xTwk)Ev; z$xxAVQx=Wsxuh49o=18i>G`A=C|4YlF`$D%lD}q#$~V$W1ScI^7cV1yfb??GTS%`U zy@Av&5YnqirAMwNy_WPEO`#TcJrkdO!Cbvw9kB60dZXFA$>7aem(;Gc+)8>IsV?|Q z^%8*e4z=*hB&2s)@ov)l&DuSr_mbYH8AC%fwIX&Jl0Hbk(4j_93

wwhuN!-fu|7hwrKmBK^KX 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±bL%SL}@TdZteQ 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 z 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%0DSDne|5i z5x}LT?Fhx!iOj$(K!PEq^x|qKU2u2f3LomH_wEv%A zI;mKFgBb`sHVd=_q&^B}CYVLEc~Qf>3c+kf6Zq3XFbBb$1amuQE>$XTc?rx*uqeTN zR#}4iEzlxZfM8()y^ki)gMbqYi7;;yEMoVC=67qZz$(%pSd3sLg2f4zAy|T7X@VsQ zmeNC(h3nScR-U}4f@KL-AXtuIc@-dE4Nw_Y%(piv+7DJH2nkjp2nb39WrZ~U7*h06 z;OjrOauQhM#{`kJfb6RsY6Nv%T1aoMQ>1gjBb3Tp%3{~u`oKY{lD5R5IF&Kgjcs}s2Y7rmx))+z+lP3sWo@E?Np2sRuCD@T*X96AmENkkiT?jlr%sFcF-3az@mEGm3Y>z~+C&6ACLMD?tXNh_Iuhjhr z4)F1_zea*u`#=JV{C(0l&g=IO971qD!J!1F5*$Y0JAY*42vT<^`a$SNe|Bg$8s|kGlM-{x5 zposqodP^UFA}`$GB0T~7Fxw$KoY!0@OrLDPcU;SQ$Af>jPw+0m z2L$gCygzP^F8QIxs)_m9Ac35}_s*vTpAq~(@Hv4y`M}18oIk-=j{XX`sGzoh5_~69 z>e=t*4MhA%#n9q^OZ}PPPl8_vekb@N@WHrGgFz7%1r7JD^>nHQt>GuuWw~GDsxbg z^Vb-Y9bf-1iZM5p{iw`CWqvC2Qkkz1GhKUPtt>$0U(&KWy0W0|^vXh1)~B*Cl{%G0 zs4PQeQ90Pk|4~`eiN&ZaPQ^F>n-Tk2CrV%`$E9^CJIhijQCW`4iq2o2iVpuDrmjR~ z<@}P$Dml}|%2cdDEdDox6)G0|%i2&fqEhoDI|5={enMq+Dh(=aDorIxy_L&Q=}^h2 zbg9^}|Hik!0LV+2iYVv-l~t*X8HY2L%4$V{UB;5AtU+Z>D(g7C7L~Pg^<0a}x>VN7 zX;Y-K0hR4taziQ`QQ3yd##FYTvI&*VsBAi-OJ(zMw6=7Wt*C5WRy6-Y_ug77ubi2g8y7bgvRjxR5THY zsmp_?oJi$hDu;+^F>~cmDko4mjLP9!v$80na)jfNjz>8jZRo@?j>l55KmRpJ`y=4n zm64~q{gVjozR*IDU!FqcR4T7gIgQG_R8FUI6O}WlTutRnDwk3@i^>I5&ZcrM6-@{B z8@{W$EZB+#1rGlJVoU>XS)BdJVQn6KSK-8Q*obPd4bA{R9+fM z@-n~T_-Zcf^y`E+jQ>k$j^z!)iK$qF|3c+0Dqm80n~L?|J5=7M@~(WW+|he-TsC)C zKA`fkb3UZl|B^r}{t|7*Etas@ zKKuvagoNW0PLOl7GATZU6NzJI;Mntm?V<@MA)JO3?4ig1 z=IZSYPB<0eXu_!pN6DHwb1SnV-m?g&Q7cJ)IyF%^J>l$xGZ4;9IHOuGv`@e^XE{BK zZX7XZC7ewau_SA^a1PbTCY^9jwMjUa>?_}S2ou7230EYXk8m-<`3be`L%4wIB2xhGRz3a zc>DVjkd2veRl>1_igmF~(BbNY>k_U(xHjRMgloydt8LXPx-q4*RVX0@F4H~g9}}aghL6BB0Nmxl+59dM-U!4j?B@73jXy~ zyZu!7;|R|pJf840!V?HjAv}@L*Z;$lBxzN!mY3wIhT;^r#_5D-5S}RkV_K6c)3XUL zAUucgJVM3)`W0<*zUm?wU;hs;B6L?DUQBq2nng)k{}*jP<#+|*V}w@{-cEQG;f;h> z6JAGn4dJyuKi=cx)9QXb;SKT_rf4^v+RAQ$TL^EKLGNzDTM2K|*vLy|U#f<85Z*_4 zC*j?m`&}A}77d2?5Z+t7=`fqRN6g^Eg!dEr_rJQkAM~xoMm(h6ymMi~M+hI)Q(@j9 zD*xkzZxB8~_%h*>gf9?2MW~pcQ2yUaOZY6|b1I>3sJ9587oqaMNcd7=$|N;fULky) z@KwUs)CE>ByOm_>zZxNysY>-G;d{=McOrb7P>%ynzbis@d7tnT!Vd_w@}sO()Q<># z{Xg$w>3*ul6!AILNeRE8YOeK5!e0r$BDC^+P52|>H!>ozZymqW#1ww-_(MKb4a@24 zKk|oK|8e2psM_W4LkoWp`hbzOKV9H2s^cj&Z&Kq|$EP}hlByFHT2-h{YXI6XJjd7PM+>c5=O zQvlWZsVc71Jf&hRNOdu)3sGH!>cZj|rCOA#J~$P}e%6@P#f_l4gf4TweHU-NTwU7v z%ZM+5WgXrBSLOeyu0VA~s%58FqPjBG64h1gGS4d~s0LI+suf+jBcfV$m10gAGHX<= zxi+MlP+i{z8jelJmSdZ0hw2!oyHtBrQ>XieUh9midwwso*J4$wYrD)?s;g05!|BzB z@@rCE>+jO4*6X;IfB#ioPlLgJ`CzMVFeEmjdI!~wscP|GrqmjnQr(Q|;Z!%L`fulK zL3K;2J5t?>>UPfAn(8)Gx6SVhDdsmwb$d_UVT4b0C#pL;a~Fx(&+gyqu2c`Cx*OHK zJZX2TdpNPD1pXf3dsE$q>VBTIuaY!q_owPZ%O(r+Hg1#ZK~xWRu|ufJ?NdEeNgnFB z))7?Crg|jR)2SXs^<=6?Q$2y|F;tIp`D4c^vpoX%{a)4j4^?;m1?Lo*74uZ8^5Oaw zNoPK?oLAFB7~T2vo!fd{ERGBEq+bo4(E1NmO#xK@pz56>`cJBV5xMiv+b#M> zZiHw8;>n37B>I^MqL+v!BHD~-Vxk3zCXuOVQpd@N<|i`YxrzQsG(FK2M5BnNG_OT8 z6_M}!H@9Z@lzES6G|{wjM3MdiQX!?prqiw!n?xe>|FaRzNHnt>*A!sGhG-U|Sw-6& zVLyvequGh(B$`96$$s`0NjB#ao!2_@DIoGsz@qs^{pvGgenUn7lCOvsBwCkfA)-a~ zY9LyeXc0Z6crHZ$M^q+SjA$jI#fg?DT7qb4q9uuz8r?f8&&3F$Wr&uwOQZdAxjfbB z6&zR0IYcWP;ha^7N;z$cL;;aCLdBE9p^T;g=fp%Uq8d>`R5#9$-yo9bABWQ>8n{Zw z&2}AoL~{N_nh2c83|(vtkwP`6#}chYw3-X7?zo2Inz?|}Yv*|pt&=l})+1V9{=cxi zfs1WOv=Py!L>v3%CV8qlu4voMiC!eK|9`)SXiK7Vh_)g+lxSpGMR!ME}lHhn(Gr_9EJyXipc|qev|*>`k;U(LTAbA<=$B z`xlokJ^^#-!bBS&yI*;g5mp`BA0wR6$ zOLSqb>$HCh99@!gh%O_#p6GI-tBI~~fh&owD&&h+x`yaFqH8Ue|K;lufapdsMckC9 z65T@d5Yeqf)~B}->6>379U9~1ypyQ-@|WoDoaqAhI^IY00MUPl?Bg%buF!gL9La}? zo*;UJ=rN*4NBFM(cz#LrB+>IkPZ2#s^z?`f(X&L)ja+(pUikacK3&u}e3|GYA~}B| zO%_hPM)W$7`}XL+L~{Plf0M|A|45U9eikK0@4Dsph(2(c_ru;UJR9+h zPP_A0jy@N}vk?0fFyi6k*sj1~VAFG9Q&@uI|w`{n-;FILP5HbKNoICDv<8a=JhjH6d<{$hfH% zaXaS_cZRw>PwEqIPMi{NM4SM( z`4j6PIQsk?(BvY1p1MyA7H|CsN#*=O#zMJ?~;yZ|MQ>t`*$ybEV|8&k> zB4p|w;`^O*FY$fETII{NJoN#`2gl(&O#B-0BgD@TKT2$Me~kD^;>U@fD0GWVwg2aT zInNTmO#B@2i^R_pzc6lIMialJXA_m`72;R_SNC<|kBI+E{0{LO#BUM5sZx1fuJU$H z6TeIR0r7jpzWL{G0e|`X_vOdLpAdiM`F=WXNr?TJS?gRA_FbmLUsE4N{0+7JiNB>b zgLN_Scf{XQvts{1{NvvXkFgD^pS8dh|3Ym7V)y^?Z^VBQ|4#fT@gJV*H?_?a`GdJt zzcwB<-%VjmQ?HG$fh1x=Y8atRYZFm(hhLkRn&SUl#*-#<;mLCjwJE4gnU~*Fr=m8s zn%Bbk+9*ez0!PiafY$skU~1DjXL>_B|A*R))E1yN6SY~W$@%MNKC?C}wb}CeQk&iW zTb9}!o`w8BH93E3b2}>dcVb>@^HG!YA6Y1)_AhEy0C)aUS%})g)YhW52(>b`MX4=I z?feNDNF}12zK2^3zGWqICt)^VmbP2UKwFb48%h<^q%Dq5obwn$# z9<^1e^{EY9GS#b}n&SUlnA(_}rZ$$^8q`*!rjNgrn%k5$Jpx#jsjW?Ib872Q+lbn_ z)Yf;KJ`32RoFq4(wxNXWS8z6_wh6UOhnI!(_p)t4Z3k*wQnMD=irO~Rwk~vSp+-OJ zlPwg~ko~}#tX3{;A+F8`jar$iW z^W`kvFXuT^{-4?f)E=aEA$IC@?ILP7QoESi)zmJbcDZ~`?NVx&N!@x`msdDmN$n~z zbI&O|*Es)LYS&Y{PW*h;w048UhLY57qIR=O-a_rxoKNkxaqQed?Otj_|6h~;r*^la zUZCfa)b69EDS(nC<73nwr{@0Oy3Yz(R7z6- zwWq21{?CH>oHL)7m{K(hQ1ee+RNt5V@)c_TrKTx>nqC1=d)-h!$-I%%)ZX+YIYuYm z@zi&zY30Z7P!Im4@`0SWh>xh-=>3@5pVU4XDt=1sGisX9seMlE3u+$uTSQv>irRP1 z|C-u2PJAmZdru@`1^-U`K<&qz*16@ipPgy`{|{=vQuEE9lGozTuom8Zeo5^w>f;qj z9-2}gpE}ehpg!S=`45s8a|-HHQJ+#AyJhmm zuNS>TeKhqYsZT?FHtN$-pPBk})Ms$x)60VS`TC61b@-bKY;TK{ub=;4*ZKdNj|}bA zQhj#EIUMJtJ{R@*ou1oq9>;m@-!!PtC(BYTJj8>aTDr_Ri%uSb30^ccrgsjuP0 zSn8{J?N)c5vbCjU=;XUAO}|LwS|<8F?-JMQ7Q zC-uGbD$@p}oyk+*$C>-;Qg-%p+~4s4#{(U;3zYi7)DLm3LmdxuJlxPyoj#Jf75*p} zKHBjZ$73D+69Cycp85$ce`2mn{Uquq59w1}_*6reIo&VMpnd`MGo3!m@oWjm+BwwE z9qOLvob#2W+Fdx5xybn!J6=Nl(xLoi&beG-lE0Gr{nS+*>Q__0llnDIUn>DIucLnb zkiLQXjnr?Wev|9o?0C!2@~sl{9Te1W_oO?9N%r#BOx-=Sa}V`k5PYosQZL-o-`bCo_5YN)Sq?YIVDN=dFn5i4D}ZsUmD84 z?5VF%f7SV~<$S0AOEN3iI={Y}4T^~E>!x1HAFvlH)X5xf4LR)N0z`o(FTm1h`9)atLPoD5Q>gKe+r~WJT zAE^IK-Nbw+zs-R82{sb@MZVW&&-!oF|DgW64zxD`+h<$1)IW7O55f9&xK?;l2u5SCs~nXg>eK{a+Q_E$>V{f zL{cRwlY}GzNu?;~u&7@6h@|F3Jd#RMA6jUTtU=Nw8IZI{dL(Vnr9;v!_oC1iQf5=Y@Z90>?oqheP@zg za(c+wmBi!xWH*xCN%kmGi+0$HWFIf>-XmHhS^~05lKn}JB(b4&uwNeNk_Qb_4x$vOYaKX2rcNRJ7PnB)^jUO!A9N{m(jZ5s2^SdPYgG>kJpjRk2eU@|o9`>)}B(O8JaBF-%Qztf9K zKsFbnv7~brr?EuN^vk7aEJI`Ik=$K)+5D2m@-!+mR-jR$u_6t*eHxkqBp|b^3?<8A zDm55#LK?Ais*b+?BY_%?28}w6B$t$;Of_k=a(c+=&{&g3m&U3zdNeW`eI?0AI-*Ns zKtuk2s5O?xYB}v@SEsQ?aVf>MXly}aZ5kWVSck^?G}fiD-iW*rG&Z2&i$8zc+?d9u zo}?+j&2C0x^FpiOY)NAq8e6Ggs?OFTWNq7=5ZaMJjqPddp!2sIJJQ%$aYaL)0PCQP zhB5b|@oyTtDa2~*s_#wiKa0lhS|M-jL1RxvP$q2n_=`059`%NG-#*T%((p$BJ87Y@ zKh1@_3hQ^gHc9o+x|LCVizLv&Q zG_Ip@CyncA+)CpH=if-<7AJ0U)Dn=YW2o$k^&c9y)3`&-f`1o{hiTkR<9-@C$;5s% z?xk^Gu1iBpK;8w#`VWlltbN$BE}@yx`X4{As*Ym@2C5Q-BKg8jZJUyiVgy8vk|4H~yBCqJQoCcU!$n(_G?v zG`^zoK8??5d_dz98e0FS@evJu3m^-gkuyJ~@!5z?8tN|^Ulua9%cb!(4IAO#(D<3g zx1Rc)hFXikz}(wvOu>@+8*IWCWHQf5e|znTnXDXgynuYR;zB zAu;EmIUmhAb>lbZqB#%Ex%J3kmh(3b&3Q#ga(>4J^fcG}7tICjQqOnxQ|iLBj;6T? zEvwF=G%u!U%L6E@fvkiL8bO+%Ky_$bB@yknq#CT{;G~+9W@2eT-{LaQS_QLH>bH4&5dcU zP1FDCy}1s}btR*2T~9BPB)Ng(hK_dllGF`p+7WPuJ`prG6Vo2$B)xuq&D z&ek-y(f)sv(HPryIL5Z8c>>KHXdXs$N1D6R+==EcGTLzwfU3gagN6;i=tIeq)5a3;+Q zXr4v$Y*{u*4dZiYp6jWK|7o6|^PRSVcaf$HE7ePR&t5|F4VstIyo=^#G;g4JIZbPg zD`=W2`Tx9MigkwOHENBQ#?rjj@j9B<7uGaxZ=`uE&6{Z6oR^2@EwbRvNb@$Degu|E zrTCxbok}fw>Ta4Z(!7V}BQ)=&`2fxPl&UKGD}bh60l1dl|I+mJpQhG-BxWlK%|~fI zLsL@#&BtjzMe_+O8%>`AOvY-h%cn(1=2^$*92Ni5l>Z;L%u6(1rTH?=SBgRFEll$@ zmweq(BYaq@H);Mr^DUYm(R`cc2Q=TI`995eUGlvVNteH!rVjrf>V8b~Ynq?X{F3IU zE-(L2^K-{9q+8_vmFS|yzM=U&P51vz`F|Z!Vd%jI%^zu6Wq+di8_l0-{*u?r?9lvm zXzh0qwqVu#LvLo4O1c(VAKnvA)O)+#0QrrZo+%X;qTebdJ+I&fw_& zKaYi4Gt-)n)-1H<(h&-+S!vDYGP66*Vd(rhwS&}X8y>B>Y0WdF=go%=t@%YLbpcxb z4yEPqf5lmdmR`0>z=ln0QCcNhRS&(4wFIr@yzWcVTFNCA|I^aq4=oS= zP15X`-)JpQOY1+hR&-p+(H{g_tEg;w&$i06YP14cv7BV9LMwF1q4R9nMB{Y+PZO;= ztq!e37L;kju}Q0V1fbPc0hF)%f7Px>%l&`L{lDKtv<9@cp*4oq2DDbCwFa%RwEX*D zQ@4@RT3rLij)oJxCatxc@b#b8I-cpej_WzDuS`u|McR$Q1Fh|4T+VPQT07F(nbuCS?`^36 zC{%r|ocqw)m6l%qdN=Lv=r4a;z9`h%%d_4)7jSxCTKg#oF>CgTWov(02gr$uKG5+X zS_kJGLt2M=UWd^-iq_#Ofcp9f$0LjK6g_(kEgR&=(z>74akS2+bv&(;X`SE}PINp; z`Pxs7dl|9Q(mI#cWwg$tbpfsOm1;k= zh7H$CX=w_eb+NM0J$p%>DpVI-PU|XKSJ1jL=j6>o%c^-Jt!rH6TDNwct0$#{O_FmXvy>EcD!s4(0ZKKgR~x{ z<>&vj9(Kt`Bx64{yZnCe;f<{RS9M4O;3HxQM0r9MOyFD`ia(iwB*KVz3=z|tq+~} z$nj&xPaNIaCw?o4fvn zmi6ziF8Q0^O~2FnL+?_Ri;&izwCz}9^ErRf9Misjn+XHwcz=oNq+3~OS#oSKeS1!<3R98G%~It$RAmi7g- zr=z_&?dfSpv}d5bIPDo}&qI4A+H=sJSw^hc+q2M~bx6-fTmC=q9olmmO?xiKxy8@N zVS8TM3(}s?`Sa&|+J10uTc2Axe#3{de5cp2CZfHj<63I2LS-G=>(gGBw*GWLdFA&}djr}V(cW+z&ch zt~<1EhyVEZ`0YJt@2RiORffH2?`<^geH{1A`A+Xo`xM#-&_0&-fwT{!eURsMu;U?) z^8dpgKioM-I3DSElv3@$&-T%d#~3>QINB%DK3=Knf)mt|>aRTYu6u)HZ|Ja+BLN0|MRgVNfrJE+PCRo()NwCZ*qD0f7-W5QlnZY z!a2vXxJ#3J`wrT7Dm=64-a@$c-JW`nGpOPtbml_T#i4l8jAc z?T2a0|I>cd@v)pQ%%7VyTArl+l&3!J_>80Cf6wJP+VcOy_J5J~tJa&eU-J6COk4gx zuP^P_Xum$JwLjsu-%zUe3+=b)Oi24}+F#OshxSLb-?dcQ?>V~jZ+{?pmFmOcxc!*6 zjac{p?N41&{@>f}^Ss@LJ@OUppS;#z)BeUK<^R1F-_dseuXfX00NQ#r>@w#6?eZ6= z<^MhPH`>1s=|6Hww`^0uUy|&M=jeA(3zdiM0BR5Gclbh>A3&5 zDXB9loylBxa%qX9qtEC}QOrl3sZ=Q|VaK<2cijJXMmxvXe{8^XrlT_}o$1|<$NwG0 z|8!<@bpLOE@X?v2coy!=ro3!^k<1))=F@2G%trEU`G4aG)xsq@9pz8Op;FBF_D&y z+fIXy`~Qyof8m!p?*DT?+3C?))hbS>@0ik&|EDu>9HYYceeJ1Z>B#@n@mIjo@+qLB zDZu$_)7ga1I&?Omvo4+W>8z)G^B}=iEu_04osH>u{O>cP9)88&l+HF@_|52S?!*?3 zTRLv#xV7Q1m$#*}3!UwpzrEuQjypQ;;{%(%DJMJNwVkGZH=Ttg- z(>aFDK6DPD3($f_i`TKsF%OqCI`_uIH#R|D4nC}9Ojk}cRa$;{eQ>(f9{K{ z#VnfY982do6~G>NJAVGB@;ZUeiEhnb0f=)lom0li|p{l8^V45#bq+(73hIycH@G4kF2cijIMCAp2R)#!G*c3CNMdhYkhn*B7S?|04vjt@Gz|F=||J35chd7sXsbgVreqw^}A$LTyr=LtGb zs&*P_PYsEu={#dJoo927P?yg;zChcc&*U#z5Eozxx5YQ>aP1Q_>wx z*Zse=rlvbex%ilIUG4u@X}iCPhE{4Va!Mt5_%v(v57 zorCUTbmycyFWtG+fL-~2y7OoeEMNKT&PR74y7POf7BF-|2g}o4P?u&|^ulx((WU4` z>H2^yYP2}rRp>6^mY1Zv0^OzPF0Tz*-K8Cup}VXr`uWecQ_B?XmXW}UuCq$Mj zeO=m&DanlPs(K{s4(QrJK>x^%(;b`BbXOY^YtUVX?wVePwH()$usscF%&bdy1Mf$j z|4es%^^S-Q>FVTvx*HivUi2n(H`S%+&2m27E$Hq|cT2kN%)49B-C85RyN%F(>g`{_2( z;PEM-dw`7S@*uiL(LLB@JpS)0{-^8yzk9f}ba@2bBXiodj&|lTj>kG`3ZQ$u;|Y!@ z8tSc3_awcLRjT|y-BanUM)x$jztTOO?gMnspnEsnGwEJJ*Lv+Dy4wFq_Z-)f|EGJN ztf_6!cf7#y!n_@PSYBMLlXNeodoA6|=w3tja%rh6{S$z$R)OeV<)|)Jsx1J@{&jS3 zp?kg4H;AtS+(`GPA${|3%-rfSw>jRfRGVwMcR1cj_pY4dsrNYEOV?+F?tR+vr~=$C z8T*NTkglmeME7aB57T{|?jv*`qx+}?@}XPw<`d$m0iUF+_&+Z{-Dl{&M)z5|uh4zY z_;jCle8ExvpYBVBuKTi~b6yoEZvopd(0!e*`~R-{|E~N0!gsw*_fxv>(0!loyL8{n zW3c>rgzg7)Kc@Sk+m!#;9jY8Z5$)xt`x)IYo%uOkjRf1A;Fn*~HSh7Y)9(Mf-#Y!B zWYqrO)0O`p+HwEib^qU$|Id4$?r-!~q5C^M^QeE&n~LuLqc;iNKk1oc|4TM|^8fVY z3h0e5U2FW_1oS4%Y3EPmII%c+$$OL1^CimOWb`Iia~WTXQ@G@mlJr;4^rogaBfU}d zW}r9PQ>Ss9)^R$==?!zs`YU0T#Qc9%Ehd|@&|8?^tn}umHygdVojE(bIf@q(y*cU4 zReVljuPSWR_2!|c&7btspdiS*q6 z_f8N$k4$>_@qY9{Qo&Vv`(XUy7(3n_s*bq=8*Qk{O+AyJnQw&rFQ{6`G0!n zOD6YAy$k7GPS4~2-o>7JiQ}b`QBAe~U$kznE9hP6saNG3r>~)RC%tRw`97cCb@bf- z_ipgi8y#;_cCz66f7GzI(z~6W{C}}(+Pg!v_Xxea=siU5Zh8;+kiN(9UV8Vrwf{&` zL;Ze3=P3Rk`Viay`82&pWJ)dM~-|%k*BM_d2~->Ahwg^?os^eDS}i#hdh3ruPioX=k^cDfexmmWy`Sm*M(-DTzZSZF!oMs2K6<>% zocMqA$D{Wry}u-5x!XQ`8$bPj=rSMe{R!wpf5O6uep4uJt^7&5m>8Glfe@y4SHlV*MeP92v9#>0_l^rjMtE^6c z4PAO`&|i!G*7Vn=zkvp7e;vnl9oM73exYmby1ya)E$MGWe+&8>Tkp`{#6H0rWuK|` zH+9^M{^shn7Y-2m$6xffl7;;K>dXJr-!`{Ne>=b2UYD}ABmL9q@8ry#=^sLW7y5hA zm;a})H7F-`qp$CO>F+^bFMo?cs}Z|5eJjj9p1QB&F#hi={+Fccc%Y;I|9k&nmCe4* z=^sk}I9EB$QI7!hk8so@0R5vJk9Iu9@mNEBiPJycFHdkhk^U+4wf;l@WC>V1ScB;D zR7d|N&c2T6+rT)7{+TL(N_Cc_|Kpf0&!ul|avuHL=$}vjTKX5zzmooi^e=Tg7tz0% z{v}2Aixzf2(7&Ai70TL~Uc#$fzDhcj!_wchbMhiMxlKd;IcV`ttu`>Ylov{;TvKp#P+&K1lx|Cmwcu#PLzb z$LK$9gmk6&L}5gEJw^X%mwCqVS^6*1e@?Hg*`tOeDda6$W{SQV?L#6)_{f|BA6UR>to%qc0b1#fP z0?7DRq?6PCn$#TZH!kok=>+t@qyLLve((5$qt^fF|3v?1BlJ_R{Yw8&=l@3k_nc2( z>;LqJoi6$>ankWf7449YFUfpJ=yF15Lh9fDrV}ew{7FbBEyR2p(%$U!pQNXgPC+^i z>6E0SNT+h)sdFuJQ>3Fs+uUJyQ#vhaopd_V3hDHu|3^9l>Aa*flFmUo6X~p^Gn39D z6~8MDNoOOSU0GYd=g$}EoTPKht)+7*7Bykpzmd)(!um0tk5qo1bbitWNdJ}drLKxB zM7oF*3m1G_SV$LDe5KUINS7mBoODUQTq2htU5a!W(xr9jxp?Zb!_?(TS0P=2RBoSC zOF&Ne`cF}+5@|W-dy>xrCT7P$q@i=Fj*+9!1*yIT)Ax62Lb@YqgLG}uCg~W`7HOZf zP1+^xNUX@kQmsn52I*MR)rMND|1BUDUjjN^aH zok$NR-I;VRQX6=?k^Y->*FwIi@9v~~lJ4=hk)pnPlO90252>8L=eQrKd;Y)6cA)bQ zl5U}O2FgbIJB4J&#mgm-Kwn3rvypLek4f75`fZM|!d2 zC8U=sqI0I*L8O=KgNXDBzjv-Ay^8dD(yK|YQKq&$m0nAFoo+pg^DRzL7B`UIOnM`! zcK+vu^t0zg&R=8`k@@;h_7AcN z$b9`Lx13E#MlM;%XY&7KlaNhj9I{FOH}#)nbCXR$HY3@TWYdyOMK;P+dHXqpn zWb-SjusoasRF{Rw79(4jY*9C&xxmE8isp6Z;$%ybDfl0zE=A_f|8JYilC4Iz99cxR zJlV=*zWyUqE0V1=lDivUg{(wYAuE#wBW69XkW8L`gh>{YwaIF(SSM?eC1l$9DVd^1 zt#RlMSw_|+>ywS+|Fd+&EZKl;RkAT793#la4y~KukFZo zB-@^>@ccvmPGmdh^w7?~$>i$Eb|u@5Z1*Cyu(K!G-d@MOhVuJJph#8xPd1zaYzoc} zWME_XAO_Qs9ZYtJYu!$ED1#}<4kLSr>~J!LY9Z7Zq*->Q2dKr#(JZ5O$*Z;HQ z^Gi=Uk?a&FP9pR5pQ0qElAZ2_Ic-?Z!v8z-EV5h4&L+Ep%>4gFWapBd?@8wk^SXfS z!d!RAxtQ!yGOhm%ZC*xp`TxpXNp?NiRb~*sL78cwN*_&i<6`Z0?-XZ&(>|L^t$=)OTz}x5jq0JA;KKfq^?*Fq-$v!Je zSlIc3>|3%g$-XB0>VK1b7Eo({NA?5R_amufKa#og_c~feWWO+g>{kZn(tjgU?Z|$2 zRQ&J7`;$zOzwDUVfu?{WX)r#635I;d|1K~Q1NZrZi5W~XOr3O?I=Raz9$+v@B z82r0{bF3nZsUpU)l_=Fq{-42;43<)XJ&D2643=^JvN^};$?!59Ye{|wp;dJH0UetOk20Oa^)(qtT8Eosg zo#Xb7I~We-cXDC<`3r+x9RKaOtD(fi-<`o;4EA8K=jbKg&6#dzZwCA1XJh*1z6|95 zC7@Ap0E3emnEyY4fi>gt3=U>+B!fd-_)y2g9EZXG;D~Y5k8&e=1YmFs15F1`A6Li} zmnSkfX{4y$o~JN4hry`~JpT8EQwFCqIK%Tg)A20FvvZp{GB{VkVKGF{XK(?7s~B9! z!0w%k7+l8SVlTiYIv;FssSXgcGKjuh1;{I|4!v?{@M;FPGPs7p4GgX|CWGtr)H%3b zPah^PTF#%rO#Gc5}ld3q@GEQ9|t zkn?BoJcE}Qyf939QNpHWOKpRf9ba*L)$ujQ*9~3Q<9|Cr^xz@~%vpCM` zIGf?nj=ldKq32@E-2b1dvjBG8=-F`TDbu}WW@ct)rr5EanBpXMPMMjRnVFfHnVI1$ zGc&h;`%AKY?&(ZMBWqu2wd=K3UauW(i@c{?PAHAJX-K{E(9khYV_q8bm9EwfFF?cM ze?#Lx4O<9m=#4;Wmd0W<>>+PsaeZgGv4qhjjV@KaH#Ek9Woax&V^tc<(^%0AuAru5 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

I&Hr1smFgwZx`Wn# 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�IIWRb?2ZuXJ*eub#4*n5e}p}AJsw1 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 z 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%0Ac} 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

>9}Xr>ip6=ckrKe_z{47~*fWd+5sS3xPP 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

F{olVRy&T^fxHUG`BTz|33S!cdk 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

byeO}<@Lx<#FMZ-o{Xnp18j(murZ#BO^oiI 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�<*hg_JDiBy=>K6 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 U2>D$Cbv}8QQjjD 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�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

?C8FZ5U^UB8z$k`}29BX~tP(W$ICaXO zARN!(3Bbv8PNY4l?@l;{i2e89a5{#J07hf#^8PskQ#TkE+2_oio4kGU@?Kv(f0dS3!!?f48D0msh`(O(21U&XZUXavd)R5;3U?}d8;lgV zUGWYluxOjtbU-73d*EKjtHUT5BhCHr0E~tQwUqz!Fg&W|BmV9l>#Kd-VR!mX z0e*#d;1iJl+X-kc@IHJ1AE_|?{ZC;V0XmIO;XC*Yz7qer;ur9x6KMIh;y1=v=Wh+z zbMd{FKfq5g(Pz_t|Etu`@QdT6pG0Olm<<0Y`y2cYf59JGn*ZCwI#2O`rIHcwpMlI& zWTqjL`oAeN)4CF6rzevoGXt4fw470bnaIp+8rL~9E1B8J{Le9DX7haN|70>rmCpub za%75R@?=6X1;?AfJ$;#oOodE|OxgAE-KuF5+hL8&%4F(fmL=05Gas2InJyXc|Cu(K z&R}OUJu-79OELpw<``^CW(b*i$jn7%?m;rS3K=thzn`IGhLM?H>jr^U{~B$%k31+{{?n1VA-9>97twoGW(L*h0Gpgb|tf$-;dt> zr^-Fa>`i7b*Fn$4K8DksoB1aXGW#nY;CV;d2q2@ukvW9Sp(Y-j2${pl982a1BTc61 zkU2{DXfnq*Ub{Vx%xU6}CvyUslgXUuvSdzjS5)>CGN&4^y@@$p@eIW?$(%KqC36m$ zTgjYD=4vwMk-3b_`D8AV@&d&XWaR(8A(@NCUqUAJ|KvhsE*EM3FL0$|`uPu;YqY$U zjC?+GotE} zn|>6T`yE!>2g&?O<{>igk$ITR^JE?&^E8=9$vh$bV`N4P$p5FD;ge*Za(&2*F<`Hs zXQUjfXyz~QoB_+eK*oHY%!_1R5_s8C#=K&{&TSl-#MoaW^Cp?sm3qUaEShq>V&C8Y z$xI;gj!5}``U-rX%-3W-5dR^WPswNyWIh)2NfPa0SNu%O=VZ+G$$a5>VVeumd_!g; z8JWLnzEk#lGC%Z*e>7~_pUC_y@JnAd@&ErsPFDPl%57xKWJATG)!H&LknA>FCR-O%QLK`U$<|!fYZ_$R zWSbJSj7)1gV!CcAJfLX)Pj*hS=J{lYkew?5ZvSHDAv>=zX`i8Fhl$q+$SxqfpyEPg z<^S%DTy_zWi;`W2>|$h>Bx~b9Hi0HvcEPR^Pp>Lv~$}>yh1n?D|fxv$gmCehRIm-Bu4WGHrMW*`vuGO7;k{ zhdG|?;r{AJdgdsvKZfjyWRE3#JlW%1){Fi7|LjQ#PxfT8r?@IFIF0PtWX=2~kpE}T z6!t#_&Yq*?xr*m0o}WZ}*zJ!X`!U%I$=;&WMPx4~dp+4p$X+4lQnL2upRD=6zwVV} zuOWMtF_yZzFLkY$>%8&?EpJr3$z-PYBOrS#S+jAnw~-x5_Aauwd(9nW?{wI=x|{4h z65l(>lO09&d9wGDeT?h_WFIE`pzrXI0lUXXJoBh$Mw5Mp?BisgBKri{C*39dg~pJ5 z+9^}sb~u*ovt;G`Q(j9ikbR5ni)6=FR-^YAN*33UGx7tq#63hCOUvF>>mkF zHvRp7vVW5O>;L!phrmppZ1SJ=YH$Qo5lo#Jj>*)GU|NR>Yy=QY@3I6l68w+A`+qRA zva=|rBYPMSAw+(wjx-EU<1{zOR%0**}-ZA zB=aTMkYH1SjR-a-81AyVy7|97?Bq8i*n(hlw@f0zmV;Q!tqHav*q&fpEw>xY66`== zwokC5BMEjU*u^~~E)wiUa0tQf1p5)}L9jQ$o+{a^ug^Y)t&fcW?P`Al#~eUl{_lDD zzisWLvSp?$pps{oIr5A)98vP68LxiQ=a!z z2u>w9ZLnO*GYD=WIFsNSg0l!NCODg51i?83=jnv#S0Ztd#54zLCi#gAN#6)CiqSKFN(hsOcIzpsL}Fw#XkuC zbUZ;i1ql98>R)n+ng2&_T5?mRn%vanY&4|zo}13|(_2Yy23sc2PR{(F+|1+ee3wZy}g~`%REEkb$k}Hv`kt>s{c)m(5c0C=V z@;bSOEz{Z-xvuy&xsD^X>?sZylPc#V|0cO1&`6;Tq)DG{#Mh+}h+eAh(XwkXx7BdgSE% z&T#CUH&maEyk@v-C2|vTo08i~cr(S#6}KQK|JRL>+nU_=7Gv!bE+}^ zy%V|9MV>+KOmgRtJIk_mt+Nf-nali*v00$6rVGf8B{zcHgXAtGcL%wP$lXNlVsh7! zyM)}8xyr^WRB{5SWE@A)jb3Ccc4?s;;r2){t?#RLeyq-g%{OI{^6j@)>1 zuaSF$oDBk>dNbXCJv(oyQ2s9gxp&C@LhfC1-;jHc+-Kz8C-*VA52XB%+((10l0M|j z|CRdG_y1hWFUWmGPX6z{0PU30?*hnuOKzfM-;wkFpELhg&mRq#{wH!jJJK`1il0Po zvS)rHXXfv({wMjwRsJHM_~GB=&1}j2L+)SlGYkJmek$_QlAk*5kWWVd`RT~dKz@41 z+fMQ`l28BTSK2>63wf+hepd4T6PS&B>ikw{RT=SF@;UN>BgNzmr<#y_OupzC@)3D^ z|4+WGSRr3^N`Kv&SJuflq-lDlTRNA{oBxwv zmi)>B%aLE6yxBha75rVSWO|j5UxobY%C1U&wLX3ghsm#Lz^=76`7_C{LwyqD^ z{CebvlV4xu8+iSOT51GX)yCxI^Z8B4Z|XJX|9&%DNWUfdt@_Aq$nQaZTk<=S-_BQU zFXaxta3}J+lHb{9Z3JkayLm?c{x>1*-ZcX9dy(Ip{J!M(abl(R>%#|-KZ^W;rlpy`fc!u2{Xc&+`BTUrL;iSWk0pPcDV=%dPw-VIl0S+3$!Tiv zt2lqEs!mfpo%|V2ue&>o{3Ybib`1G*$e&Aogp}t0aqX_6o%-$zMhOYFF-?TuWYtpTCa$_0~lF$=^u+7VnJOaBh}cdgv??OT_(w&3kC4~z z|JY`Jr7$D;Nff3bKbibr()>o={Ga?E|((fnUv%BMgS+7vn>yNW&2xN|7XL19q} zb5a;eVTiJGQJ7aiBcL!(pLjlBr8obD1t=^m<$@Fz8kC6{rkMWyPYR1sSXPXU018V` zSdzlh6qZVs_OMej|M&fulWcj#6)3DkVa2}e%6)iM3hPlw{hz|>Dp^BuO$uvKSck&e zrcbZ3t^*RRPhlGh8&HtX7dE7@5rs{Z8ct#3L8X{YDfF3t!OUO$mK3(~cr zwxh6m*dr-KH!k!e)p|BT)BPi@m;b02;P&hz^ z_WqxOjQ|SiPXQ<#sHNMO`M*0)k%uTAs;CiA&(6#T zy3mO!nE6w<#Fhpw^;^1}!p#(}5P2nq>nL31HCI#6XeeB3j5EW+^-|v8H8)bYsV{pA zg{LXpN?{a*+bG;A@kk1{3*2E!ebs1r7lpei*zbH&xW}a^+&8G9a6g5|C_F&nVd)>F z@K9g&5yN&b{{Me3jHd7;g~$D^J<%tAO3E?*E}o(ACWWyS#!+~d!V46hli+zP(IzRp zNZ}O;%8DcU`&2_bGfR z@PW^MMB(E>fez!Z!lndgXUo%Kr;L_^KZ%{72y@ z3V%}gnZjggG${(n2$*EGQ=X&Wl>ME;AA>xFzeN76DDy9*=5I_m72zxbQxi@@IKA++ ziqj?0?kJpra3(SK`#+wX*#r51XguL;MjDviXETKJ5M~LxgaKiLFh^JghRy4Ipy5K zxd_etT?yg5gv$`lN4U6@LkZ_6Tv&Jk!UYKz8axM)!w44@Nc~@Uu_Puk!X>m^(w4SQ z8v%q%_g!6+B3zEp{9oA>2v>Ai9ag41J>e=uGZC&zF*&`}2*(hvPIv_28ibn@uBpPc z2!|7{O}M_6>nN^ExSn+ze3ue#Abvx_jf{6+CZYL1p^XE9O$j%1SbNxl@F2o131#Eq zR)kv4dWP@C?E;3C;Ei&+=z-jww|o{yfF= z71N&r5MD@lotTRVFDAT#@Djqy2ro@Yd!)yExx<845?(`i72(x`S?%`PDNEbK^@QgC zgf}Y6|I=2t5Z*_4tN7ap?-m$Icst>pgm)xMcTw?o_2GL6?;Xq%jv{osN!RUqZ42cJ7Jl>ZSqNFpYr_Eg#QsfLpX_WETMcme3tMz!k46cp6~?| zTkVUkO88~MR|v-ursnT8>A(Lae1q^~!Z!&&ARJFPK~--lzHMUL)jNdm5x(nc{f)fu zfRvgA;YU983E>ZfpAvpW_!;3B(tPf_eL2{N@N2?vmG$rc!|w>q`P1fh^@$SvNNDf* z34iie`GxS;|F4{EOFIGifA~A$AA~ae@K3_OT-F=xKZNps=eNbFD9&iL#i=PyBVgt) zFdao32f{O?8#Coh6lbP5J4G8D%Fashe;#WDBpWV5F{f-sF-tLU8oQlh-s=k#L&NSh zS&S%NO|e9A4T@!oi&CsmoQGnSVwYk}u}RVVKY38J5kS%Z`>$e4%eK!>837b~6bC5E z`HOQLny9A zaSMuTQMW*LQm14JmF!aTAKelckuA4Wv)RrW7}$xOu8i$t@}FN^vWS z+fm%wS8b!(ZGGYP6nCPygGd_$eOKIBGiYHM#oZ@j5kDz$8G)F2P<&?t5C?4C# z98Xb0p=kc^@9t!ZXHh(b;^`FS|8~XGoPgpPYI3G6(>ygT;w1tX`zv1RI@rW1n)y?_Lh(w+Q@qN6-S0INzod9A#nBY6qj)#P>nYwM z@eLGj6p;U06aOiY;ae%*M)3}cBc-|B8YVlmo_88H&0Xm$*6=+P@1^)K#rr7A?Te$N zx!=TAW#%s?^?%_<6y^WL$4p?#$0@!@(fps{lN6t&Xy#9G48>PzL6N;Y+eCkpZKd1ObQf|w%&sP+Gr}#C+pDBJL@wbZKQJhHe zd*L6PSolZ9pNvU6{NgahUnx%VcrwM`oFIu5|DgCE#Xo)aFNzum#ebCj*YR#+L{k|V zO-(cnkr_UbjR2zQ26s+01JR6wRYWrry+t$&(I!N*63tKaKcXQ-vk{evW+%!e|B%b+ zi84f4HI)Cm(~Hdii3*A#QAAWU{os4lsML4$3Q?7)M-&q^RZ=6W6E&>F9dGg+MJ=K( zQJcs+fB(rx11g+DQU334m{d8OXyd_ULK1CCbPdsFM28b? zPP7Nn7DPJ}ZAr8P(N;v;5_$iRwy|2fm+kyjws+l#%>RjYa=bdr{EggIsofNJH-TMu zPoe{f_7b@_(SAhx2=D6z7Oi%Fq5~ZEw~&wrDRnTBz3nGTKmQj#%*59J2%__ejwCvr z=qRG&ls%eA<{!!Yoij(r6P-jP|BvMV={=rIbSlv))=-Q(oYsfWAUc!i9Pwunoo%V~ zob4L~@#i^`=mH{HdNhLQLZVBEE|TD4ClEIOC%Vj-DPJ8L0nwF2X8uH1TUHk$x|Zk> zqU(t6BD!AL8;CRoq8o|4|3^2wZbY{dnc)-Nra02=R`?F0I}>0JJH5M!?kBoOse2Xg zb6KKMP9yRGBJcmvLqrevr5+`EN*eQjqS1#w4Wc)Vv7LRjg?aNLU^P6Lce)k>zq?8!-UzDaIGXIxMBOtO7 zK=hxHN&nK+l%_YPG>zi4iqrY*36uw5&8n2mI7+j5es%-aIYVhEr7Wd7 zrGQdVvK*znR~9IRPVAY8Qi)QPQd#1P5Z3R1I%6r>2%xkyrDZ6sNNHJ0%Zpjg#HnTl!*<=3luG?y%&L^`r?eWSV=1jp zX(vi+P}+*pnv^!8v=*gxDXp!lb*xF+XFWO~l=A=5Zo<1KF_BT) zlhWQ|`u_eyX&*}R|5UR-rNby4K2^w2P`XC^m6YWFrK_zl-T$?e zZl-h{r5h++??{Pnq$KnAr$p%%O7i^Dt-f|-pZ*R?_fRtbr*xO%-Ih(SBL6SlCw^2P z{{W>QC_PB&B}xxb8coUkpVA|Wk1Cq^+rv)#aY|z;Jwa&i=r>qCd2kDSbrg6-pB*y-Mi~DaTQIjneDxOU&9P{#<&K(p$=o_qA_Z zDt(ULq4d78?^1ft_;k-7i2SgR`Iyp|ls=*K8KqC1%w;KkPU(w2(@d-)k4@z?QQZfSmlEC|a=^vA& zH~1grsVrNbn)0-i&HP=Ka%%p{&OmiW%E{wz$}>?ug!0UkSD-u#<#{O2O1Vt=f0PT9 zXQP}|iTS_%{f2VJ8ai7m2ZoK$DQW~HyDf*FFH(+_DjDN8S*}p-P_9yLP>z+Yd41h$ zy#JS55~P3sfpVAf5XwD~^8fN2l&5_1@5|?sApQJDcwWl$QC^(#P|EW8^8Df#pe+B_ z9f?_(@-WKs{PH6HP8Um3zWEZAm!Z6*#7ikIZQ10JyaLP1ijn!-$t>^r6)A6_)Jl|- z&;MoV8C)Hx1_um<*g{o?aNzJ-bQV=Rot$xb_dGx_VSLDccQ$D1UviA zX8s=Uu9SvCc~9e&qP#cd1C-iFabLy#DDUqCTAKe0B)6s!VE1^i6Hq>s@|~0qqkIYF z!zmw2`3Q-R^i@YuK3dE%j?oDmM_JBaKA!Rkluwr6M9QiEOLGe4(o#U9%-xFDc>>3P`-=uE0pi1 zJcjZ;lpmpdFXaa)oBt;d%A*wTx23&`9@O$7TUypefcQtXe2nrF0;4HEZmBf;q{Ec` z-+w4SP5F7s&qzGhXP?#bIlt8xw0zNLU!wf7;q*pcrTi`Bag^Vs{2JxABz~Q;hC=yG z%Hvb9^vb?Xd4iF)^LKoo_b7iP=6%HvD9iuTt9(rP3(B8R*8Bgm|NYPM=dO?L{Y%PU zQ~t`BDcAbOKkxGY^7oW~qWpuaqCAnZ`M)cn{4?d>DE~rv66If0K7H9t_WS&u@}HFd za3xMd*+zi&@DG)pDgR3)@wfk|)Tm5FB}-*$Dzj3VhRO_7rcJ9VHUg;lfB##V(epD= znVHHg>0P)JsQk}oXQMKE@;7^InYGm`NDg%z8GN)uisLU-emzT}cS27=!4XF&J zvLu!HsVqum0n6HT7o@Tfm0`jQyAmpkI3RK{!=|)v0jMltOFNCFsH{q5X(}s%LQl@wQ2^q>D!R->{u75Tr_u0dr@DpSl~*RuEjRMw@kJ{9@@;H$2( zL6S;ec$JN)45zX=m5q(Gl1->=>aj+E?R*O=+fdn3f~|bkz6CI^t87bU2P*P^>#)6R zF7b|vJDJk@>_X)MD!WoSjmmCRj-|3YmHnygA=#c(_Mx(uuze%osf{MmR#5vA#mR34G+ zQ7Vs9c}#e;>8HFVpP-WZzfNO}>qg~iD$h_E>-X?1mDKq?^8%Gu)$m0sFA2QtYhN*t z9?m!_uPOUFl{cxF|NGQeFqQ|5N$eNcExeEtTJ?d`IOcD&H&ngW^OgGJkhOwzr?DOrr9O zvhx2ar#D&TZ%Nc${6TdpDt}T*4ByP3%HJ+!(U!>w_|IX}SEr^ro$=LasHXleetMBJ zn9}XPIuq3=sLo7vU#hcEU7G5wROh9dG$~S@jcP!3c2(I3plbe4HQU!AXV}QRVu5Pt z7<=BU5!Ei$64hAQGF9_`s%HM~D~M{1YLjYRy!pT1TT4uvY9}SrJ@=>%QEGtd90KP5 zPD6DrhpB27ROj*C=A*hW)uGbQuW0^HbwRIR$bg;RF!75hE=qL?s^0&ri~DX%D!Y`G zq*cpM-HPh6RM(-p9MzR2SYFZmpX!QK&HR0bRj95ZepRZg3CRD`dtB3$R<#z@wGF5I zx>Pr%x*pYylwDtO14aM&Pj$HIt#)Ion;1@O{rmsw=2W-v8vprEb!)1-Q{6^|+ftR! zSGS|Oy_g+LpS(FqTkS-3XR5nW-Np6MbG=)NQ_UV!_f+j(j;Fde)qMsvRQIELJ=OiG zo=Nops>e}1km{jSb)>fcgQy~jAxmup5c)mZJ5mYY~ zbD`ozRL%c|FELV-ctItp!OI2_6tItw>&Ubs> zpW%yC&F!gb1XN${dyZZeKh8>Q&#zORK=lpZ;Z0@7Q+NR$v8OmdJcko# zIfQs#fw_q1Hs0FKW59MbAMpajLp|^R{%5?PWD7Z7%3;Kt5HCW!8u6mU%Mvd}yd<&S z{KrcSDpj}?@zTW0xO=peU28ewm5G-pUXj?$-(`tc>cgw3d{tx8s?~`%BwmBq44-&S zMg0`mdagsfo|tvLetqH%9Jc7bbBs449&StPkp3?K#G4Y!*yGKJH&<#4;;o3cbV}`c zYs2X?wJq_E#M`+n@%F^>|1`Uk=XXv3@h+~AcsJs^iFYSHop=x8!-)4J-cOpni1+qY z`w;Kzu&%p5@j=7~`0RniI*=)wu@OLg2=SqPRfiLwM0^DCF~mnoaFp+$5s+^6SmNV| zPar&E%R0&!T99z*o&iEkkW~@$~UoYB`Y_0e0OywSud1GHOK$ z%>SvCj5JX8ovZYgrxw#%j#`cSAJpp9=cCr3b|keXwbiJ#s4YdUO>HQ(4z(fb(4}VP zFFZhP4gnht_DFAbE^2c-hMM_5wRx${H>jaDKea`~FQB*}wbcKqEi7i3Z?&kaqPCd$ z#i^zKPi@J;`=z!twPhq&Rx!D$m8dQ6YgeGQqTzIVD|=oepth<@QCpqb_SDv(wm!8r z6O!6mUa5&tTZfv=-%{)OZW~bBlG=vSZ$xcVYQu#$R@}ro=(<{Nrl=86+rp)&ZDqiE zZcWX`gz&bC{^!579jNU`ZAXziDeg>dFKW9`+nw63Vs=Yn-?jD-xu+wkng3JU$Cd^( z0@4H7pV|S`4xx6SQYH{MNbz8Qr>Xx_J52oHibo_d5l}md+Pl<_rgk^AW2jv~?O19j zQ#;NCcE#hVogi?cXHGI;wWm-!Q>jxGPg6Wy@r)$;4cG{vb~d$hsGUbm{y*hx&v!~{ zBdFa-?LumoQM*Vb7b{+30_)&^{#(18+SSzj`~RB!zjl?$Y*!izwQH$eud3_(Hg0fz zq`8UONM&!Pc8lYwX(H5av!(U9-Sc-)^ZsAE%V+PQ_5!tgsXa~YK5CC7Jhf5O?iYA~ z+Cu^lI=%42sVCPSrS=51$3%`+e7sNgq?pwIsg3dbe@6UR#b*_tOQJyf{$Kb-YA;cH zjoQmvzT!2nQXA*6?(TJJZ&7N8WHQJOygug@Z8ivMdlo8s)$Nq{}vZtGd`=Ks_+3+j27r5;jm zQ!i4FsYgbdrbNB$afN!-VePFZL0z$-*mPOyEd#dy4)r0_yPoe+ACS`gU%>zVPkk;e z=l1+O)aP|reTGsWMSXtihf`mG`p(oBq`nIEg{Uu1UFKgO=4&-0>Wix3V(!L;m!Q5R z^%bZuMSWQ@OH()h@6#+tefj^-tVn$&iB}%vsjo_X1L~_$Ut6iw71yA?rodW#%5@Ce zNv=zMJ&)7h|EIno_3fx{M150fhEq5H7v99}iuz{Mx2C>1^)0EV=I=FIdCfMS+14}L ztBKzK+tqi}awnhNh5CWiccs2J_1%2!?$Yc*eNWHy{r*qgMgaAFsqg2r`-?fi^%QnH zm;cuf7ITQ=q14U%?P0HqBdA|W{YdI3P(RA?)Q^_(7{y~1kE5>l|7q2U)K8~=l2Rup zQQ#ECQx*OD|N0r!M^HbLx>-GS`G5Uv;dA^6oR=)cnEzA1z?QbR3$?t+md0PKc!@17 zdl~iXsb4PA{Ga-jidQLKP5oMdYm(?Mbe+T0Z=h~APW?veH&HjAr+%~IEsD3g65)~5 z&Ht(2kwo9>E-`m2-ebH8?xlX8!`k8f)L*6k0QJYIKj<|NQGZxs8xsPLQkVbNM;kLZ z4eL)R`y}K{q`I(7Mf{Y~nLv5%)df%;ocPyKBJcIGmFYxS;URQtZ-2Z|p$p8ChszZdff^-rmP zN&PcRS?%Z4&HVfB^egILQ~y@kZ~FM}`tT3bCsO}~y8ORx{!jhq!9LV~6*GzYZ`3Cn z?=M09cZaF}Npn%^f6+LX`rkAX)A)x*O#NRPvr_+$#`H9%a0BR? zGte;q7oLg6%mTAG#?GpdJOYvO|Hkae|JI^q#%XAn|4W&p5z&zO+vN&0La!-0O%iF8 zXn6l`RK%qJ1ptj2jk##lX>@5ce65WD8ZE`PV*2}^!aW-1|H3u`Xw0cN#7Nu!+%%S^ zF%OLe#M=mNF0bu?CH8Xsk(NGa75r*oem3G}foF zj#JWDSB2^Of8h-j{pbIU;aYC2xQXJXN%VWzT#WqRwy`CRt;B5Ir`eXqUNp87zdeoJ zXzV~^XBuYyB6o6P8oOw@tK)SSGXKUN;#2<@zqgou6!)cZfWUq<%>3<<9?^l~)1~mi zG!CJ0l<=X7hbbPecm$0j6JQTJ!=q`OLgN@3Cn$R?jpGFR{J(Lc)6>uhX!zg%Y@ABt zOo>mUak{`6rX2LN##tiIR`mYgIFH6S8t2ovm&OG&u2FUbjSFd9M&lwaW&RB_e;Su2 zv9G5_K;sG;S1NlIjjIQ<8aLCpUYZ*eZ?rzv@Fu6HVdgL9R>j+BjC70_ z+(F|`uh9r-+)YFNpC0~wG#*#&D8>6}JV3*&p2mYT9ujysiT1G5e$-(akI@+2$3H=1 zY_g>Bq~cRF#(3q^G@cn$D*G&r=V-h{<9RLR|BV+-Gv(x8rtylaqVcLr(RhvKtTbMy zkyzgwG(M;CCXIJ!j8`A;|Bbh`oZze8rSY+t_h`IN<3k!|{{DzQGCXDZiIkrzY6RF_ ze?j9<8eh`*iN;qnexUI+jqhlDL&K&(y6yBxzaM01Or-H+-|}Y~lW6>6jGdK@0G;Y& z8o!JA%`<;EV9}Jx2>9FMf5iBYfRb!;Dw}YUXHWB$N4DH=7aZ(KT%Z&@9jljTBEaqFEJRQnV33 zv*NPCG0mDSjj#9dO`0vww`q1f?m7+40h;sBH1kg$H0A%zAvEXGa&9LRo|oo=0`n;j zrD^_8(?&!3WZ7~dks1NbVZw_z0nNo|zCv?xnitVrf@UIKlIAuvm!i22&82CsKyw+D znEwkbM{{{suH}j}&FX2cq`0!8jR1Sbo2$`WljiESG|d`)yIM=k+FrRX%}r^pM{^_b z>(ku8QdZ^tzd7798UfAp{l7Gu(cD~M3!1Y1=9VV5J#6i>w)+k7V1?+@9ucG0PC|m&An)v|0}zvyBC_~{~qt_v-?T2zoI5W)BIn1IEd!)G!LeE zB+Wx4koh+cGlAW&{J(jG?|GESqkZ-mEsv#X{%;T4+X*yJ6K^Ac=1GbtE1p90)CBl$ z^8e-;G|!=_q0p51H_z_VoJ;cpn&%l~-TcpgnB}4QK?|*^c(iiN%SNXBt2F9;u|#I zbV{1zX};yL`M-L;L-Qk=?|S~d1kik+ruje351q_sKc@MKcr$+i^M9J3+tTj$OPZ5u zekJm2nm^I}M%YFG&F^UbK(o*Mn-gjNm=wBlX?|AxMN#H&g_BZ^;op?fENK2g^G_}R zN}|Bu25cw)(kjvXkJfC)x295@n$|S5W}s!}FGl{~n%a#5(WJ4|Fo9$%u=+L_IMdu%NkCPad|ppX{|u} zL0T))`j*y8v~HobGOb-{twPIOoz|*~t0}IoxQ61IwAM<1@3s!D&Bd=vYdu=>|JM4n zHZYC#@&4Z$uI0wGHWl!n|FkwUWxBU5XzifvmbA8_wXN{hiraY2cBZ$^+Z#v=ccitG zNE-(NySOZ^-DsUhYj;}5(b|L7fwcCdWmZpXFIwjRwDxggi?-a4*8T!!{`Rm}X2Ksu z>mXV({MNy=%>Vrc4x@F1N)Gq>Bm1&P8@A5J&^mUI7jrzV6KI`9>qJ_oiaCka$+S*! zoqhk)Xq`dJ{C}{VmW==}I9s*nD4y$hTIbWclGX*ZE)hRM@j_Y`30&-C!j~#uW{mAq z{@=R7H@}M3^|Y?`*=uNB>v8(|zp88m(7I9aCR#T;P11zct+d{!bsMecXpN+0{!Ht3 zT6fSIMe9yl_lU6(Kev9{j?qu`GDeseuoch`A8D&VYQEm8BObHS~CCE z6SSV9W&ZCqV;pb{t!HSB^*H?$h}QG8UZtg>&@%r|9<*MfmHI!eSB$hPj-xf6)@xq# zI;}S(mj93>xGiPp~oztEaQ>sKpGYbW>N-)YZ6 z>krz~()yFuf3&>+xBjN}4=w-B-`#b4D(l&v+I65kP1>_9^KYB^)1HC$Otfco8ryAq zW+!tD?O7#Dcny^H?4Bn*fp(VmP}%|QI_(_oh<4s<3aSlh7md-b#FP}vv@5h_`|awW zfOgGyZqS~Sc9XU|zui(*n|8;UM#W63sD z+=%w@KFuZ~H3-_9_3>NKHdm*;CGD+fZzH_5-}AP#)1Umh652aRu%n{+zvp+MeK74^ zY41;aH`;sC-d&nKXz%GYd-dtf|7qJ$5ZJHp**QSWfr>7Bkjd;E4xxQ4?L%ps)zdyq z@o+`|{=a>cmPacdlf=Hx$I(7s{0WLDS~l%`GVNPvpF;am+NaV!OM=rBZ3NIhL-9<1 zGH261pSGF5c=LbS=h@Qsc>!%1etQJ%3!TOn+6bV1iCpXvh0qb_7;!TP-`_8v&c^mC}1xC`oo%UU{??{$n{O|v_W&YO3CW0@w z5kPws?fbp{0iSw^PV&|9Fzs(>KSFx~?MG?9M*A_^X4kYw(|(-x7~v;qKj}L>Wx(#} zX{DZ_{T%JFw4Zgn&puE41$Qlf#h0XiS@9LcS50i!8fPFiz1PLOq4*~4@s={pTeROc zoXX7qX}_!Z9_^0>-luK;FZ`k6N4B)xenR^TF`v@@%t$Lw|Nf`&mx^D}PW@k1-_n_t z_II@ZqMi8vB-%enHc?UL-~NgAFIw6NP}Q#nQao9y-xPmW{6q22B>H>#o6a<}|1rjP z^)K!J40NVSnU4Qe?as8GnU2o%bY_xl20AkuKj_b$nd#WK18M)x|LAn-%tj|iXLjEq z`Cr*H9%mCkC-C|_otRF6j(olo(kV(1Iej9dQx;QEoMQf3*67sf$n84~I!&u`&swJ~ zL8p)D(V36VfcQBS=cF^Yz!1f`T&?gtit{E>dl+iKc0Rx20(2Ji%tHQ(!|3czXAwH< z(OHzvic&5{XK^~q2-^stvm_n!f8nKl?XsR(j?VH*t>744eI+{P@N`zDvx--)DrPl0 ztM@6_6uFkytW9SfG3y$Wp3M4mwi3Akoek-1N@pXlA1;1l#lFvfI-AkiT;vvBxupSn zcDAOoBb{xO-PUKf({g({J2*y4^M5)!d(AFd?n-AjW756tLFYm`d(t_9&R%p5r?WSm zgQVPt&c1Zy_MQFc?C<*cLivBkPF2@B*k$P)Lg!GGALdfRNBHcKbdI8PtjMDkk8ur! zkE3(EDW|;JPo#4aowJlZna(M6l_0OT7M4I+uBTc>?HY1lY516`lL&TutX@I@c(5Egds_I@i&;-m20Q zzR|GpH#w5dEp+apb1R+O>D=bCBm3_94(ac7dSM#@bna2Kd7(XzqVpJ?`$axL=V5^d z={#hDDI0i%&ZC12ozZm6=jlAI_=Mt#j|vi^M8(R@>Tyloyl}w zpz|r67wNpN4jKWSm+8Es<*UBWI6AL6tUbR$=Y0v@R2;AP7M-{0yhCS#Dbp*yOXt0G znKIu0J0H^dNQE{U1p0pev-269&*}U~=L}llVK`>FNAI$JzUzbpA4dDgRddht9vQ#FpKu6sI=E zmebJn{@?M?g)iZd$Cq&PF(Sp;THVtN7YBY40rMsNdxNE6u1-dpwgjb@waw@Q6T$S!R;#Z@)x_|~mcTM57Olh*U z4J5CMuK7RR_2_OxcYV5B(A|LUrgS%?J6x%aymDi@n>aie>24;?=3cXB{`mp0}95 z$Xok%HInY_bnm8nhtJ+g_b$WfQQxDId+Cm%dtV=K{_iypO7jri$LT&S{D@`kT8}C| zra0QjwCxjOo>Y8FaSUC1|8Ea_C6A^11>MB|U!nV)1kbxH-50cck?ueUHqit^|OnFUWQ&Eob|1y_&>b@y#?uo^t$wl^y*SZiY3J|y$Zcp*hYYz zOs{4@SbRgVNw4L2dTlZO^Z%ar|K0$-Iq1ztZ%%q<`1FP-rtkmh&7DlSEDX@O;uD6lNO$ z=2(W_N(^jBZ)JKP(OZSy5%gB2w;jFJ=xt7Kb$T1oTZ5iVzPBd5wS3RD>DicYZRxG& z`SlY(Zv({*T~>IwqTc`aHWA*G-e!G*Eeu=jmWo@^+uAeR(A(BwJv-aelVkUGptmEv z-RSM)l{?eh#bb?t^p77RJ7{|dv_=Sq5J{=%vM)4P`5P4vwC>Dl{#dN(MV|GN%a-b~N@pWdyCw+&|L-A?aW zdUw!!lHQ&49;9~{z567)Tk#%x_nKY}>5USp_y4^I94Y1@dXLeQ|Mwmd^Jrgov|-!8 zTsW9XUx(|aa~0{*W+^q!;l7QN)lK~P zUCbNCSo1d($J^4Lqqnu3p!g2G_XXai_nrw-%?BbsbW7on8Hnk9LhmnnpVIr4-e>f_ zq4&9I>?&Ul;l)u;YX?+1Dloxq|AexmoYz%Pzb?IfR_Oz$^k ze^>m&^XC6j{>{L&^!`!yU!VPtfvHkFU?YHmX%ex(bPOOcz2XcE%*enj49uiu>i^bx zU{(fZW5B9htpv0CJ{blgFTEQG0s_% z?lNJqbzB}RT245TaI>Of$ zzI))iOXtIPH>XUJ#a z>n{nCJOI9dUi_Tb!x!Lt1HKpG8_b-SNcz8T5PYvl{(pTK!qQja6Z2>6`ak10;d{%| zhr;)^7Z3B+H3GgV@Qs9T41Dx|pZGuPjw0WKPy8Rg_qDDn!Z()62k?o>!#9rP5a62t zpZLGm{v;NCB#LBm2=KY{fB2@t_Z9VN@J)wrE_^e%I1|3v@O|Rdnk9j(_ft=qw1A$(%*@GXMxYtbcMOfDgpdMz*G;OwWprH_Wno<4#pU!GVU+ij3NS8`mW_)=(Rg=8>tTC3K+FuTLB)2o*mWAWbqza!fJ8DrSC^VhlzOMjS?(iwTlrgptyjROtT({onBX-^jDbmNe;! z1EZj0wtoZsAHb*!<0y<9Va$P14@Q3&YX09G2F>4S$cl|%+{~acc@x=0k?q{V#ipc~ zzo)l=(G|w6FxtVm4Mr;_w1jcH&Vg}7#+{$v-AO3l>Pq@j7MN}rugvx&*?(Zd;inu2IDCh-C?Mm)&mAT z-zf3@uhA366aT-3C)q+Tvc%v2H~PTn3*#9WPwRXb{Unh7JgWm%831ECjDav-hw&VY zS13LY;{^sU!gv|ROOnsJ6bI=T#$c_(7y{!}7SaFReftKC_hGyVV+0KGe;7ky41@8u zuI|+x?(M^oFh;=;|7Y^MIt|8qTpX_&tJgQ0zp;a*G=HuF#*fmVWc~zW zrx$YwkTYtJr|f0UJ{bF9`~pKJ|6a?#>Kt$J05cDg;{PxX!8pu7{2#^!M87C7WO8Y7J3-G7m&%sag_lx;6$Mt{4dH6m5_d8zQVlVRs=G2A% zMy;^r`tUyje*^g2z~7Jwjo@zqe`EM>;o?p3H_`d<%ebIwQEv)=GX~9dDOY)hrgSb*&Y5KUR=We{XOA#{U3h4&&B`Q zpWg645C2o}_lLg^{QZ;;e_!%xFXtIAc-Gqq14NO`f#h>Kf$QZOU^K_49sUpDUj+X|_~*bs34Sqo_&X2rNpwX z1@M36#S3);{9nVr9R9^jSVD48@YDSL%i#Z3XL|W7;QtQ(m9i*pt|C{H;{V*1weW9% ze;vj3T4cNt{w?rtV!T;&H-D>+;os&dJ5&Jw_wfG={}1r*hW|$@Kao30*Zft?#XaO+ zav%KrMR)hWFBDz>hyOSD4^TN+BIgkN|57{*{~z$5V0?r;O8!Y6ga5b+ z{}lXZnDaMzTIaz34;RnsMTrCFAy5^8^AV_oKq&++LZCDP`BhVaymI$<9(XHfdie8TE{|MZ{ zqE?=MCjxgP&_*()<+kKqvM9%>9ReK?XpaELg@E_|XW%}a?=^Bi0v*pO2t0tmO9(uO zKpzAiLf{DmIwQ~(0r7tX9wEEvd;}hqz}?Jl2y|y@4+I`Z;4z)Up7bn{rn^e>mj-(w z(3`cMDv{F{0kL-ko<=~11IEuF@T?d2_f{(A&(i0}=gAikcv0(I`^yM?h`=BOh9mF_ z0&gNPm}x`ER}pxff%pG^18+#(|IU`T5E#mYx5;7WN)Z@=z*q!EBEV4~@D3B+B}bJ= z8;yYYKLTUUiCp}E97m2PCn&Pd6A}0Vfk_C=K;R=5O-6uYLEvKqrsy>4)5z&1l$i*8 zO7Rl}#QzbPEv4Q@AutDlxd?p5qIp_J;PZ1i2+T)dDFR<2un2(#T1P;J00b85e8yjs zi^(NgM}YnxSVoaUfYe&<9j}!Leucm)1eI~EhN;f6H83k8@ErmN5Lk=AUIf-5umyqj z(xBAcKyE}}lc#K!K+bUSe+0H6@B@SG2<-53zW3JnBLZUh2yh4p?34tlyPM)3olj*S z75cyA|BL|rKj8U);5V=CK?LaPf!|r>5CVr8{2>Wa_Xq+==bnFo#|Z~}q9 z5je>-`hVb*o9SLhr&)By>;GAp@w$2= z%z9pH^}W^_!fXb!5lp(h*%+ql|J;h3VY<$*@?kdhnraU7HYzPh_wPTzYzgxYn78Z3 zS=6dTd?(C%V78&&mb?pQI|g@4nmYH)_7ZR(Qok3b>;Eu2P`TghLnoNsVLkwpCT~8- z(uc^-qznOGau=A7QtV20lOmSF>;Y44+GEro*E-CeTzo?3Fn$tdFR!#Wm8Wzm%)T&Z z!F(F#7?}NFz5??ZnDln@S(yF3S_5DXWJNK5-7zk{K*|sR^Cg%sOR2P3iCC_ufu#3=70VV^DSLhRfPFAbB2+_OXwqY4D%hBG=Fmx%+XAHPl}|j_`kRI zu`s8={D2AL$nh{I!4&g{`JrS=Fwx8Zh>Mdw-FpfoIa680A;6r@cm~XwUgjqf$l7Pa z+z9him`h>Kfk`Jf=Q4jD%+FxXXZ$(LFLV{5wErbc*Z;lFEQGm;MPHMPy-d&l&2L~T zOQ-*vp8uQ6VXlC=3g$}5KR33TtMwwx@4R-_!d&OY>s0`AgO{@j=5H`J!`usV3rzaC zxfSL%nBOyVJIo!ruGiZisQ*}EjpF|>caghc?m3qalm2h+XVK4EhxrT4UrXd1fO!Pw zLFW8U9wHCx9GLE}fMFhmNs~AKWWq7>ILs3|Q*{aEUog*5KSllx^R$$@*8LBH=fOOy z^I`t$>cR6RIao^T(oV1pg7+X;7C{5S3lOY`U^(Vo=++IEN09y>6#r+D3;_sUB8$=j z5Ufh25?Mr6CaWNLsR|g&5WxJ)5v)O_8d)7dF@MHalCJ+FSQEiIRB9nu+snC{$~Cem zYrodhIXVPo2td&1mHH995y1dO6G6IqFo<9X!5D%Z4uTP{g{W$fnQ>1^aM6ALpK%&N z3&A|&44EZ!itLY#U@?M@EJ{xbo-RWGf_3#G<9Z0*iC}#MZ$q#Ff=wtkBpZ>9$(t0t zj@^vlEeJNJ-W0)RQuJSG3j}X1vDlJn;{OQVLAD}WE6T^+*ftc~B6t@An!i+OhhX~> zY4;-d5`y<3*c-tP2zF-j{RnoH9LeuQK0rQ*pqRgWg^H5F9Fs z>LmNgoMBo)a0G%A5FCl%80zmJ_%4G{2##j(p00%;{a?2u{Tz$n2TT}8j#reAyDL6K zaH3WaoP?nGzxp7^AwZ7B6a?o{nTp^v1ZN>Q-OHIleJ1&dJF}9yvl0B1;v6q?t_1EH zKSS_yPyd2x^AY^gQx@n<1Q#M)gy15CS|a#0Lds_rBltUlOAuU#;8FzD^!^)GU*^@7 zAppVU2(HkIx5ib}S0lK_%lr<(wGz8sT94o^1UDeKjhP$CO$csgum!=b=aRiD+Y#J> z;ExD$I0*hA3I8?7@glg>OWuv(F9^E+kKkT5yAQ$r2>$HWa(m+XKZ3t8=Kz8SC4ns? zcnHDc2p-l7f`1@*#EXw2Nb?UK6Gi`}>);85lwF@x3W9$j_%DK|5Ilq6-&9UZCfCcw zf5@|LpF`)#Vu=19Duqz#|B`iALuC=V0HF#9m1Cyo|Dp2#oe3cs0uZ_wA)3G5iVzSA zAyf&W>k%qK=qiLNBXl`4s~~hK1De0ot*RDPmk_EZfhg5U83GWx((7#vF4jco8iZ=8 zn2WU$67!djv`~lQwWOH8*170I$j}NxeuM%PO){u;wh%_>MuZ{=;J6V9-+q(x(A`I2;GZNM}+S4@;fm9ep!^YbVBG6gdRXhY#*Tqbq^8h zjL^e6M=LDt!YbbPzoBjvyOTX6Sz2(P|0C2Bq5cRxfzZ*QQ2^GNUSKZL$OXca>95n6`Omk2FlsrWxaUy%zH+1sxXT0&*9Rv0fu zNc>-~g37n#a)efhF72%JIraHsAao3&e-S#4&?)AeK!P9sFm z51rACAaqs-k{lNQXK+4QiY)D}D_oX~7a)8I!sQUIz{Lv@F0TUlsJ#)sh~mY1k#R*5 zWF^tv%*qJAfN&Lr>mz(A!hVD=L--nmt1|O)vKqoQ5w6bo3WTph_)4knwjloR_09AD zaBYOIKBuby;W{LTfbeyUuSeJ?Ia10YKzbfP*h1JuI7U5)aEL+J%Zwl#)iJl!oBxLs z2)q7|a0=nHG3jbstdF`)m4ZQTySj?QFJF~S@O!gaZLBUw)}-PRf)+yUW+ z2sdSs3;_r?CT~Kx2?P3nnEua-2scCcZWc91xCO$uGrpA+|3|o`BDd%cgzrSS6~)$C z6iQATgxex~m)qNOeid%V()I}7<7M89@O=`yeZC*z-UxR@_+e&tLihnM^Ff3kqS*Od zJ{KQBxC_FMA^a%9-4X6evD^R8>EX5iIKsMzJ(>1|PDA)fF4Fwnt$PaLXA$m0y)XGR z*^i|E|F>QJDGoq*pb8j2hcNx$ZS6&b#q+HhL=Fd`f3$Td6*W_YPU*fGr{2$?EG8uB}Y#rzqsBRMXFIRu0^QjsA5;mzb0gts!-Ms6o*{^9Q#|3Lmo z{zUF1cagivJtX}<0!p9Llh46`@#Xll^lKe}tXv1-#h<_t| zn!y=S)ct~pXAvod@V`Y%4MffpB_ev!;(Clr7cIIPkur?SioVRpxEvyt5V;VMixDYb zbU2Ji1?m?`j@tjy&Lw0;5~8oz$hZiR%0*v~lA|A~f=E?FE~S2%9bJa!t|3DTvfjlp=|*W9jv>==M-; zas&}SB0)p~EH$N69T(|;hzyIO_f;f{$XG;T)Z=7=Od|3oA}MZBS{j#4vk=KJkjXzH z^5ZW=@}x~Vh&+Ty0g;wmEJox82J-ShA~z~BsE0^>1`SAg`5%!+WMlFsvI%)Jc?&5I z{}E|MHYZz<^6(##+Z5HoWh{UE4H0?y6OmRV|M{0J-ib&XDs4#_0uZ^IY)7^y<;!10 z?j`RdJCO45ACZn^CsO|SCnB8ue=~$}XGHoT@-X8^6d80ugp+?s?uv-~1Pqbxq?kV< zGWkd3ak3}*1Syw4B2SXN$ll~rWFJL!G!f}bJ}pPqUE?!|$mAc9{+==bk%3g?<$pw; zCto0C@{h<%q`drth&=p9L?-`;3?}u~$shkgM85n*M1}xF-cXd2%3beU6o-;;lfy`P z{}YiB@ClUooug~(R6xsBXT?jXM>e;|J(e6^nlS z2~i+gNd+8M>QSkT=w*mjVZQjktU~HmCB^^UF(_Ic(dQ7o0?|7Wy%JF$qE{hW8_^o- zG(eR8AEp26F)MmCqSqpN4cn&&5WNS{wus&(;+D@4y<43Ch_+*9dlB_@6ulSGrxCpm z(T<3AVCnr*s^<*RPE;OHhXc_E$%n|!*sTHE55q+Pv#*}D{{vQ?p zM|8aC>d;I4A)=Fc&P+s<{vQ?p_m1Glh)zRv3NvNi<<*)_Wris3{`mwkwZms2RtM49 zh$_eU6ww8U&O!8Z?%}zJ&SS05q?UVz$Upx=bUyVjMR%{+uMk~~DE&XWh^1e%mfmkm z5M74oQtID`&f|;dw^WvsE69~>e-*i!Ttj|Gt|ixz>&Xq|MsgFmS&_jOax1xw+>YoD z2H%rEkTN+$^e0mO`7ffo$lc@~a<3wTeTeR7@H6>~r~g{H+J#gOAXX01gNXi#=$9MfYwpfb-#^aOd5{7apRh@K+Hmhm?#1GWr4dWWsUAzRG$p0_ZY5?R zmP0Hjj95d&Za}OaVs)8wqvYu08>>&HfhgJ&VvP`Mf>>kf zH;K;M9K>#>a*HT#Kbs-e1F`0abw#X&oMW+D$=k@5yKD(#GXcs^Z!^M=J%C+9&s-ALyZ0(qyM{OhuTpC z5F3ct3y3|(wCAOkyOtNJyd;Xdp9dlK7Gkd;_8MY?SxWzp(f@fIW!R0qj@TP475|s5 zldEPZVj~&6jo2`rQNs}%AtRKUxT=qwWA7lQ_%72%NnKScbw`up|6Xfj5&H_U4-lJy z*f_*KLTo%@A0jqEa{l;<`4h=WqPXo$MrA>!2#TZGtB?yIj6Tg;p# zl5;rB_#4D8Lu?u2Z%O)pY=w;Gv6bX1ay7XI@d}82huAK})>2tVt|vE;8_7-NX2fTC_N8vMV%udKCHNk(pAh>2F_{iY!pcrXJJ%q#Q)1Z<^;mZ|VtW|uCHEor z7h?MnJB--Rh$*Z8h5E0GZ1y+V=du+C$=}ICQmQsz^gj?ghS(9tN69~Bb@EZy$Z;ws z6xESJ?4%qosdWnR^AY3VAOU}Q-_<5qJVl&W$}seF0I^wkv zzXI_Zh+oOltE5!Tg(R~kSxXe{sPU^2zZUUpsMir)j)=;;;$gy9dWUG#CstA7z6QtH3w$=1me9A{~zNgMc4C?cyB6Ck$uR%%9;>=n(RkD zLq1FPCkK!N$>+%D$rs2M$(Ixvyo~rD9kc&~5&szRA&9?@xcEQfuPJ)_ivAxL|3~~S zawt!ax5;7TaB>8x=Kt!tQ1gGqcgazRk4Ic?Y7ieyzE8^YAH>HZJ`V8@R4gB5DeA)* z@d=23=*1INfcPZxBXY9NL|ptI@u}oAMepd$Kq89xOvG0p{t4m>5TAwk+@fvjgq)4| zr_7%t`T7nhJ`eFP5SRHs;^P0_5t&a#{NGc)LY!6~S3|%emU8~@o`*{iUxxTn>YV?( zXFL5rF8=R%#Y)7tBfbjp4T!Hsd@bT@SnE5<+0A)Wd>xhbtYt9Xi1-%7H!L;SdxbAkyc5tm0mh@U!_iTG(M zXGj^U5I;-)D@>e+L}?_rA&F8-(d$K`3`@(FP|C^PNL(m;Mx{wy0f|eHxQOw^qU$R< zQIQJBN@S6q)gVzBi7H-vDH4|<5kaCV619=IT;}HqHUC#s^MA!FNHzagv6}xYs`=pb@_Hl!40sEW&~^PvDcbP_5+;j+NQ7j5=(Ze|KrgP| zi9`&E0upf~@<=3*u!@$vfkYAsng1h^R@D21J1v7mmU>Qfcc0iu$cP|{`luO2q8N!* zNZf$LZAjEbqCOJz{{;PCk0Xf&Y^NdFh-}PN--JXHX-B$oGfDqXi2ozejBM^Dv_L}q zU!@7xBgUKSBTJ=!QgZ=8OLqofIEHqAwCJA@MX4{go#m(GQ7d zsB`}B_G$nU&m%FAy3GH*-o8NPMN#w&Iq@L}DWnlUVu@Ihp(ziEogYg2ZP?OqDrCVwzl55=6mSIhUNLDD%Js9||SDkVR>2KKUiNfc%PFNG>A3CKr=S$fb%!b1EUR zjEmor%SDtnSCA{oRpe@N4f!3pmRv`!CpRea8l?Xx=>P6HuoVeq_~QRaY*+O5;rB>> zj>HdY5eX5I_z6i1iJgphk-Nz~NR~%pFXMgWek6`F_!)^`82n29Mjjy50}$;?zaw#o z%3*l|ocM!0LLQX|yt3*)NqGcB{R9_Jl7Eq>kW`oX-$?w!#nVWfQGtA9yUtSl7s>PF z4BzpD+ibEFl4YeRSsFGE1u{%13=an^ez#R3la8QHHBjL-I-_#s66(LjW_y|Ebi_$w<~h(uZVi zBx&`@tC740Nily(&<#rC*CBbmY^Ktc^(B=OLeh^UZ9f@sizG9sV?KAF*c(x$fpW*;=Ao(2m zJoy6oB9bq$otMc$3X;>1 zoQdRgwTR>lcSUl1KhZfz&hj!pWzHN=pNr%?BtO%oC3^S;)8><3k_*VM$c5x0B)>*- z4dcZ~E@7~g{Dxen$lzNfmor#_*_;AGx3WSy8H!NdC&|90HODkUYr6 z-%0v^@-X8+$RkJ|LsI-7$v?GS3uW;*k|&r$|4)klQ&&U4-_%c&XUKnaDdT^Ux(KQB zkSc=|=kuvjGCHJ6%c!U4QK_;>U5L~L)Mftf&VN$nsZx(-=D>Jg-hk!p(64Qka$ z)g^Bv>yh=z24q9B5!sl$iEKjNOx~g>AK81&s5B?}{6EF#|0zEIPx1MGiqHR3eEy%} z^Z%4Q|3~UhlF$EBeEy%}^Z%4Q|3|7F*`DO{|CBucN9sPZ1IdT~DL(v9@!@|;9{#iF zL8KmHz=!`SdH6365~YPMGGk0VN_M5vjqFbLARi+iCwr1lkaDMt)RRc{MXDE4Pa)M? zDRKxz?^7avno7SC%Cks~M5@0$5K9dp2a?Z`&yz2ZFOn~jFO!4FSIEKS5b{;>HKg8R z@H$d&FnCi@dL`=`O1_QMaHNKn&__tD&Sc4Xhez{WZV2c9srQf?%c9XpasHp;{9oT= zranMw0#cm+r#S!D-|weBWIGc{&i_+<_>-EQe@DJbkVTDwke~)MrS2ht%gtEk^1Kq~^=@BFExOq!uEzfIaz&+ojLgMO66w$MuIL zNPWvHOOg79rOPB=-X~FK_;RFHA+>_>O40SV38~do)`;S|$6BPeA+-*vO-QYm+uPIz z=4_N4ItCXvBejKrJpXa;&QjZv+J)2(q|_R}XXy`8s=tp*>7MKqMcFSMoRV0C|x7T~R*jEB@4BWIjad4_M`pI)Zc?q>du3tn5#um1!SC z>LgOfkvbv!gm$D12dTf1I)l`yqTL&i`kQT@mIjaU9#eLmy2{Q{|5tSVyfl42(w87z z3hDAlmqz*mq{~Q7x~$~reV#5yHqqiOw<3<;{RUV0@6*8E=IZ`(l;Po59zvWO`iXFIrXW?^B?ytRga9) zjgW3k{ibs|(l;Z08`8HR-5lwrENv#GyLq0cTTr=G6g{S=TO!>GX+Hl+-yymlr_!yN zd8a7u@okIrE~M{5TJ5E~k$wc}c1U+bx;@hOA$k z^#?`QPL=LVipbyy>>1P={P4+|j85PJrkrmPZ)8hYJ9EddiKTZEn)Bn@-|1|wSP5)2R z|I_sUH2puVTciJ{Ut?3Rll1?z_&?GzDCqTa@oiFu0HlYLG6Wz!l6(j0cNvT#-y=sW z%16D4lpcfhS4hjCz@iVxapZWUCouSsoQU+t3?`8uAw5|I@{x9?P@Jk2q^EIlI?^*3 z%p^Y{XOXkXPsustTyh@y8TmQ+1v#Jml3buzVh=2&xQP6kTud$@mm>WQgJtBm}%>a0e3J<|HRp#QsP>1L$2BTfHLi~l1n&wspj zb|9@3`hS}K@1Dc-|1|yIUE^+~l~M0O`d6g)BE3(xQMDrt?nj#bpBDf3u8!Z3J|J76 z9+RdIB7GR?-vbe?_sM*dTYu2A6AtTtz8D|Dp*xvRflysORGt#9$~F3 zs9Y%u_dwD230O5?)udjlMCR47n!>sURzsBus}8Jd8C*wRFV#i&kp}4}1F+=%PsTx5 zeE-u5bCK_VT73W0;`^VLy#L7})eXM?Y03MaRMN041{pF-=16%36qZdoWPvOuZy@WE zeE-vu_dj9PCmSfrXZr$JjbJr_MgObHxAk`=4BF1*PWSP)dkjFupWeUH>`WrIRL92toAGw|M%8-AFPhB z=>Hb|Up-%y7CMpQ|3%w4+p!*k^$4uaGGS9LXFaU1VtF2`=4RHTuzJJl3hN12-C#Wi zt25qJ|~KMb-aK~YgjMB8UyPkSVLjG3~LCiL0t7K%pY7L|5aFTz>??xuwE~rze(jS zQS?m7dK=bASi{)PaF&jcQgy_o?mMvFgC+BSSkgDwH>}ZA-WNrGt8R@&=4MzQz&ZwN z9IOvvjc3jT$#M7FL|8{*O@eg<)<-Oz4C`aL|C08n$eoupm7E6a5UlC2)HOQ;)~~Q; z!rBh&6IkEEn#G*i;Rx8*OS59%ZBe+g?5tOc;XQj1!L zwa_d5S_QBc>qW*(S?e2enOjBLSx$xT|5$wg$65tzGpyCH*1=i>Yb~trq#dqT6V`fI z8)3=&KdvrK$yWeuZ41ele?;dHAi)lm0PA~}{y^&dpBV3iwI9|lSbJdYR*Ki!URe8z z=5Rl#_SN?n*3ZnB_kY~AyX!qb{U9tc|8u3V4paZ*oFb)jK7;k=IR(~nWE#Vw|63LwW^Lu8nYkWn&5#>oVk zB>DTVjQsu!84H<43^K@M<%-Va$UJG24p|_J6`6knGIgo&`A>$=e=>ajli~B9j6DBQ znL@XU_&+jDWCQhgj+tAKX^BizWLhB8jHS(`bn9xy;{V9pCW>l7Q5J7UM&|#>v=YVL z^LHZC6PY&1bV8;rGVR&JyO6n?ne8M~-!o?JL8b#T_fo&FL<{2o$aEBi>q6!MWFAH4 zL1Z3A<{_5K{9oSwlFUcQE~2>kU6JX5OgHM{|DOIB74d&hc>7tI^JdYOFf#n{SB5|S%J9cu8UFYy!ykWT z_~Wn4NapkRUm5=XE5qM^W%#XSW;9Fr`>)Ix#$(A3$Z_O&a)P3KR+L6&BC`9CnS^XT zWIjUX5HgdI*^11^$gDzU3No{hnTpH|WTtVurYm~;c_x)l6f2)EXAv^9k(rCkr;O() zdi$CFpV3G5bC!M~(}s-v{uh}q$pxhR{uh~rB!B;#;qQMl^7~(8_=g}eOBwU`zZw4i zH}fqrE0I}_4FC9p^3p9~l_MYJ)tS}EtV3o^(UJF&`HpK}D}B@BX=Xh#n~>Q+o%4V9 zoZn1kONq>F$m~XDJ2E?DyX0E_9+{tz`GJ`nR@`%SCzV}NSC6xqJ;?lq%wA-EMrI#N z_e-hU2bupPBj=KLx*p(>I!K*EfSze*4kKF;nLm(GW_|>jzmPeKj57Q`nR!fF(9icW zC#Z=3%YIN)AL;Yo$ed--X=KhY;Lzi4^}ooLLiRk-v-AY5XX*dhGSaIo{XZ-Ik8C-T z{-34)XDd*-h~&wiy+pg{2 z|IgC@v-JNg{XbiiIrRT5{Xa|p&(i<1b&$PQtw`mZBeK^c%Qe2` zZX;VC*^iNJfb5&dHbk~LvW<|v8QI2a%7^St><|5)=arg=BYO+7O{t6j7p;|TLAC|5 zud?x5k>!<}ZAtxhlK!7VJ_3@u;{PlffUL~_89#@t_&;MA z0+4+XS^9sL{-34)XF31R4)!vKNT9ws&AukDnq*&R#WzIMPvo+1A^SeELy>(K*|(7$ zf$T8m43`}3D%p`#-VsH+L3R{ddyo3)68acq$0IvdeqWjWfTiQ4RNp~oCm^c~|3m5% zMR(8bkEl!*#a-hRWWPpsDzbBsordfuY;ZcVGngs7ytJT%3Ne+s*mhE zWa=IHk^!zk9u}XU+z4qtucrn~>e?#aocwN^u*xo#gyK z`#s|yNL}$K#`OQ}F2=jbJ&N*CH=$~8i>K{JPMtYFBbP(=7vwHN_E+S}BKsS1$|nyX zdlp&xfA)8_a7e0)g&rpVAdiqo$v??sTy^BGP#r+-O7beQ23eD=Mb;*- zCa)puko@C6x$78TPx?qhk%6BK$XFn22_lz3E`(eZxiI@9{_l;X(1N^`yp3#0-cH^@wjx`Tcam-7?|bChl6R4J zlkLd%P&a#c#%yZ)Z$aSIqsOatxtZB%%SIr@LDA4{K+ zTJC=CkKA*}4WK?yboFA4oS&Tk=fwQIUcH3er^vmG+y}@FLT(sxuORm(a)Xh34LLD? z{PL~a`O z>7@9-d&igiMBF$xi@Nx~w@>CEw+p$s$bEy{JmkJYP925$$cg_WCxe3fJBS?pKes>> z*Ao^Zw-`C`f8@Rv-Q7z|s4Oj^EJJQPa^E7i61n9p7612+;3_Js$u;D6a)QaJwHCQ` z4AzqyJbfc_o2YCiw~$-OZHn@kMXK*WPW6rcpA-N0w)!WoMf~4Wb|ZHPxjo4JtehXY zy~yoj&VI?!PyBMq{|_MdEA`(*S8goZPXEt||9gAjFmm$8A4FN9x_Sh;qs;tM6g`*7 z9f!Rcxf960#p~-Na(^Lr8o5)<{97{h*q1wl{N2d?gS@h!v&hGg`xp7r$jd9B$jcdp zy!gL5VHlS|K8$=>#ut#~NY4NBod4%J|Ic&&pXdBP@6P{`uZTR#J=k2FX>86ZvMgKSWq|0spA_&@SdMfZs0nkiVJA zEu!eFJKqfXJCJXV{B6j$VCk(=s_#JaEveitias~;t&nend~515|99Ol-FP4b%2sqjz6{|9hEzkbe#NzG@SY zr~l{a|9SC$^xy@=;GD@~`vy68}g3 zP3e{XjwU}8`QgZm|06$4bUhm8N5HO&{7B?iA^#5YbC7=*`H9GnLVk?=us#1C@}pVn zeW|70GCvmi@yLHbeO!swCQuRocYP*53Hj;Be}w!Llpmdo9mEeirgG zsedB69#8Y)|HywTihEwoMSd~z^N^p9{Aav^=>K{8zy2Lo{!8Q+A}{`r{8v&}-;d{L07vxVOuYUYBii^J?e}KV3PfL< zS5%XKMK$?XRFi*2HTjp;4kD_}2M^U~1qj(irLs35J%Cc+0z6N$}ITrTSitdw1 zyABmT0@C-G_Vuviuzj#ic`eE|VEdU9P;}2XI|w@hJ49VZK==H&#s6W)MA5%dvJPY*eRB#rBt7{Hs}9#Rut`-b{=*Cw)j76M|6G7+Qn2j|99)&2)h^Tda&<-T_1K! z*bQLc0=psXn_xF$zWBelt|nB(|J`fQZVI~v>}J%Pi|+Q}Rw}oNqJFn7J-HpWSUv1J zV7Fo*{_pjz4eYyN)BkPyzkWx^ZpX~_lBpfuz87{E*!RJH2zCe9onYV3oQ@@O9-t!r zFUL++Du4eI_QQn}7e!eo=P26ukud zWd?&hgKgDDOn`4xc8uK;X*1z__l0Q*hYZ^>j>+8GM_ZJFBH!^q*}2(NUcG%ls@ zs)GVs@3;4)=lb5nejoNY87}QHu*b6J;{QcQt1})Cdm?Q5zfJ#l&$>x0{YWykZ`&Wk z{v7rc*t1|yg*^kd_&;o!|GV##*z|v!{_pO$*|6ur7XODmM>5?bIFHI_qPS=E7qHjE zo)7yg*k7`Aft2dGioKA^B2xSx_F@^SZNC3+^ZkEY-v6h#4EDDS`2N4Wg7Hdn6)Erk z!{(0&Y`*+&ucfk1QO<2C-N601k?Ruw_xibo%2rX_^KCosR{MVk?(7Qtdlajo;RiUs z!Tu4BItPA&a~*8u|EFN@g01x3u=lIyTCn%P-pkhZookO2XHFGsl-}EqU-H-s!+Lysv zP0HW@fm4UPR#Cni66Jb09pL!jB;XiuB5?e0f^fwD;h53~cN^*dPFNIubvW|(pW(!q z85iB%iX@zy;iTYX;E4ajv7}T#cXjyvufy+u9e)4o*mBl64p|`O`(HRWkaZOq@GD@a z9vpuE>+t(uhu{B7GJgW#G=_5%lbh&TYH|YS7C867Y0927Bb%$!7)}eux02%ja5(>W zZfAT4N&k0RGv=V+v{5k^IRrR&!MU4@?L57`dyP2vQom319}|r4htn5MM>u`pbb|8` z9QwaQ|9AIuXJ*p>9r1rSUF3;`^Qi1V3A)1R#-Kad!_yz*;^T07GI+w%|Hs8A;q+qA zn|w-2)x1Sf)~ojF({TE8b^YKx!$ADsJNg6QJP${n|G;@pboWetfy#>|l$YUr1ZNPO z5pZ6C^ERBpaNdA31kS788S)xyy)L!%?9q8s-dA+qqCQk~{av#&jLL9P-1BE7ocH0p z1Ls}ogSx|VM)6D*|A#YLGTm!%44g@D`1>zM{2z|Y|KW@$C&=xF`fkYiken!sJOn(e zC&O6@=VLgt;Y@)u3(izHGvLtwof7`<%w%iyfA&zu1vw!U&Alr7yw?iR&uc`uxw;fVjk*)O{58}xsN{?Dy|a{z^};2cEZ7C677V8J;A=NO#B zaQ=kD-~T#C*v?UDNAG{G2+na7)E+*8LU}kRnIrxW=M>4wzr)GDb4KRR4kz}`S;n0I z7dZbfaQMWDU*K&Wl^|*K{@h5t;^vkRFJh4E>d*&L*Wt>k|bfI>&+bdnr><`=~OQFurc z{g!g!VH6%kf&O3UBD%gJ3SF7mO%#276?&l13x&r}cmjpTS=v)d-97L>Do>Wk?~TH9 zC_F{I580P|S~ZA5Kk^y!S+YMlfE=hOA34LHm$^;h1@cAmCGuqyMx!uD#aw&^g~1Gl zkgt-jk*||)pfH@lo8((43}x`PB7lf2{*S^slKx*1|3_h?B7;rjW)#H#QP@g~{}=rzQFenZte*cA~Hc1^R!1{_kFidzml(udi--dZ0%C!Y?QsL*Z8xepmBt6n;bD z05cCtroOi-975p;3WurxA-a3Li2tMTrzoytsO$Qay1r02fdc)%ApY-Nr+=fk0Sf&4 zZw3DSw}L#zLE$Wl{V4G7zZJ{he?zhS3=_qrNdEn|;xZ_{3dLnnTnWV&Q0L!&E9T#S zE0(|ihT;n3MJQH}ea=U*jM37=;)*DSY>VooepXXl#LUWM74lN@GO{X)tE2dG6jxJ= z`qE>ASD;v4{t-oeWQ{e*nq)1qHhDF94Os`p*Q5Aa6kq4oRVSO8`xX08{C`xP2lNxg z_r+DDTCU%qC`h%T2-1rnWJ|WCSHJ?&q>Ew$q*<__pdwbVVOK1mVneWl2ntxRp{NKd zh+QoBhyQzb6MpfWoX@#?-<#Rl&1QCXve_K3XY+8_Ak+%mAbKLAJrHfn#dhRLWP7p$ z*-`J{jdmhClU>NJWH++AP}?cgnomZwCq*yv6tXwjhm4X2X_6LclQCgst6lC@Pv6<_ z=!yo2zJzET(Z>-@AbKXEN#=0;A5Bwd$gCb_(Hxm43uKWjk$uU2WPkEh@-*^v@(dxx z07M6>mgZ^AgAg5x=wPmEh_Gg(9-oK~L-a~S&(dp<=x}lbITF!J5FLf+WJE_JIswr! z^v9BCljBJ3{}DZx98aD{vj2~2|BvW}h-&9A`TA04BFj!9FAhzmHe(8+Qz@pA)76*p zunb?Lod1t<{y)n3|0w7GqdNbuIa-|a|548WM`t2>8=}{6jn|U1$l2s|_=e^kf+toDI& zwYqa2V%o#xBjlsxLh>;oi#&no5=5Uw^eIFaF{I;v?XXg^G0?}27uB5O1 zzYfE+CG7vB+W+e(MV)sLU5_aH|L9se>oi(!&wGe|i0J$D+5eZ1RgV9o+W%MT`2@zV zh<*w~j?d3vNbe-`KYt+lIigz;l@)1MkLV^u!=vsiEgOzTqMI3F{~u-lAI^D3zeV&% zM889HJEA)NM|7K(3a{g$KhW8sPI!Ka{)DKs;b;0f{;$*@e!hNJCmdNtcf!~Y(LWL0 zjp$#9?n0E~|L8xOQ{MJ}SythF!f- zu5qM!MiUqVVH^pg1fwa8qhU0I(Go^;wxory{C*j&=p0q$90Q{@jAQ8^r+#>J8OPH( zfowyb2%{&AwrsP0{|n>>`3zdPlNY=8odA0;QgNl@BcLP{!ga$fT8z)YTL>V zZvizJns6n?A03B#cq?N2?!xa*eSt&V|9}{~O~N)&5@_sdbKraRChW|AzMel{Q?+ zC{F?9_je+Uw_r?y@feJYVO$PlGK}d=n*w7h#k8s#F45tWaVh=Fs{9!+9)NKLjH_W> z$>>!Y4QCsSncV-^kox~$FlND+3u89*b>#IziW|r|F!<+RQbXD2Uw|3<7ho`MA#Wx1 z|G!}Hzrc)nFy_ljVetM>gAYA3?xJ%yc@K>HU@U-fueOallg01XMOl%SeGtYYFxdGU z+WD8qlg6XmF75m)@Acy_UV`xij3qFhgz*#%_WuU^|8VSKu>UvM|Cf)1XJNbmgZ;n3 z{=e+A|2NqG%kNe7eOw0P4H(N|yb9xGI@m(LW&dKe$Vcu&vu2K#@5{eQWg?Eekz|6zQr zrOHR|r!cm{kp6!YjEy>aH$G>MblR13lkp{t%`mk8hw-)gJHn%s{lBqAo$|JS3u8MB z{{M@?{@-B#Uv9$>Fn)re{XdK!wN%+>|8KDWFW3AV`pFUgJIv`Y{(vdn<4&0S!T1x# zZWw>T*ad_Azrp@LoYgnj{~PT8!+Ba`kFLvP|8KJY58q$27R(@>JcPQ2jF1hqsU>-p>7EGKtxi zneE7v$o6ChvLnp?FgwAtVRoj|h2;E?*^Rn8*@HZp>`C^5X}~-MW*?Zn#nG3HC(USC z%O}({nQ2uyF*^Lzm@c(P`eZ=H$po2%nTMHznT45#nGsWa19{1h5apz1=JW}Za*b~m zVD^Psgjv$44C7@FFMSoJ_W$~giOd0-r@}l3=4q^1`hPi2*#DaYs0Wf~l7q;>a9n3<{}1zOb;8f4$>+bB*V3P*zHFW5TnF<;?Rd@WVctMzjz-I+=EA%M z=1uf(RzLiv&%Bk+ZR(Vd`FSuOggGDPy)flXxf|x4%(<(o)ID?-s1triZ{A1ee)0kJ zm$82{AAd>Zz5FrR_l z4(1ZrwP8LB>sy%5!Fm+t^RTXh`2wtIFkggKg1HptE|@RDlw*Dw%(XC=!+aCw%P?Ql zOI`C7n6Jtas3YOT6C(J)#{>|jSD%<#vmXepY`CnLVVg4Vi zLt*ZQ)d1!mShZp81FIISePQY3j}{Dj152O(ukVPIwd%mC2TSLF$~m%ji+=$i9gB4U ztV3XlI2hJJ;i_2*d-Gw{z-kCf=YRBgtJDMQFjy^MHGq87!Uu(U*)%t(LG_!)gWV7+6QaI$C|XY?PNa@>p2MX_KV$XPvN)ht-Cm6VwTJ zuXUno-O_fj99Sp8IvG}bSY2RsfYk|BM@?Xk5LRd1^D4T+>JF=0Im%6g)uR&a3Cn=h z3s!GfI{y=HJFGsibn-{j_zuD{Vac}e_h0hq)0(CKmmdQ2->fVbRtA;_D*?-AG=LQk zw^0u*%}!d-!#a!kLtqVsHLUzumU&C9c{r?5utvZdS@vbS%2ny_0+=%v z)&y8*!#WSvI9TV>JV&TMWYbE*gQdmj88rJQwX2P1o&^55GrIN;Bdoa;9Q<1x{97FSTO9mbI{4Ro-L84C?iCGdJ}mh%PQ;z$UF6;5 zJ)~}XxFT5h(Yc>|fP9dAhtW8?YXS^%ATnU@d{g{@+@} zoWE#ib_b){Ovcd&NC`W_Y^ z`(SO;&#$)m2Ut5aS+(5!Dg23)`#(j?{hva)|5NxIshvM8{qa}0EwKKCy&tTe3WrM(Zyf69|m>ePZ=>HNbs+jU?c0lO~jLt)p09f8fxUpB{X z0GsnaHm5#p&i~k)|FJp$V{`t;*7+Z8s+=!uo&VRDw9V%HzugG-;i02_wfc==9}l|; z>}If!gxypcrp3#pn#1N!vs=LC@4xI;EXCh{+5G*N&EJ37{QZ}$zyB)lC^vZcAI$au%>pf_)$C_OK!!-xs?N86^$UBzg0XE!{r<#8WdJ*siup9J$`HJ=i`odH;{C z_y537kV!H{riFS9tI;g%F|c#6hrrImJ`Hw3uY&C&St9$A{mB00sY3m(K{HS1_G1 zo6YCH+4}om*nIw*eF61_;pvZh0_@qaC&Ip%#V3U!*pp$;f;|QH4A@io?oT79lb4W} zl9!Q}3$-PBoLs@<;Y#u<@@jG>c@253Q1gXyKGh@qI@q_tX8&*BKxYnj%Z=n*@+R_T z@)q(|q29En@7nFK?}a^&W#@Bq?jY|Z?;`Ie?;#fm%i{qN+J^gKzYY5V*e}6;5cXo& z55Zo<(8I7F;nqD$^8ep${{OrEIGra*{{Opdk?ak5>HG2&Y~IXc%OwDx|6?!V+Mgw# zBcCT~-+WBj>Lfu~OKozgSew}OQ^B-(J|H0<-A8bDV!RG(J z+pEGRF>^KSuVAl%{Vwcxv_f_@u-C%=81_1GVDr!4ZT|VY%|Cy)`RDI8|NPzFz`&RY&&ZAB=cHcf!QMpbwXKfp)cG3r7TB9%Yv-?3mA7sy>~Hn+C=DxD z{ykzVVQ)ihB<$^owSoNuVhv&MKx`k_Kf;#Ioc+Je{@-T*Z?pfm+5g+@|84F6Veiy7 z$Tuvi`Qu;vZ*CF$e|s18zhrn+@21`()E3Hd9@`hO28ivaheu2vq1hTS{{Lf4|NjxO zI%Hk49$8<=ZImeIe`4(aW9HNQz(zP6lSPR4sL##Psjr8b> z$^HM*47vYbDEI#hn~+D6P041$aIc0t6S01RBiV`UOm-o=lHG*mu~4iB_s_{> zPqG(z3fY_NBh;O*`_@3r3^f-m#B8pe^Zzl<|HpLxA2E;A`G3R$VR`f$OCVO_E={tA z6k?qJk8%D#mSu?Z|1r-0$2k8V5E;*h&k365efV@yx{~d{q`53r@Yq^r8t|G4{XOf)%k8%D#HcK2`uWsFSh-v4qjx?XuyKePXjvHy>0|Bu*hTVBK9C+Pa^gZqcZ-N^~(5P_$axMe2jdYd_u@I-l4~swrVkAFCq36Vo!%H zVYSa7#^-;=`25cppZ^)-^FL#J{%4HO|BNlwH$^rwKB*d4+tHe2sja zWd9%2{$JNvA!2XAISH{Ywh^;~F9lfhfk7rH<#W?e1Zlkbu5 zlOK>D3d1cz>?6d!L+oS3zC`R3J+sF?B|jrKlAn`bkeh^BRx`h152o|~h;1gnA-9lQ z$!~?yJf*%VatheSHt;Ge#`At`2OW<8W9P~Q^wu5wC&cP(eL&zF3LN*kJEz!@5TyZ#!)RC9A=Lk4Q!)XlXC^$`YM>$8b z@}^`nvN_p;Y)Q5fhVO;equX)}9Nz!KHp4j%4(CZ6oqd9%lRt1c5#;FP4;&r*!)Yhf z8dSH3(;H3)INjlNgwq91Cpew;5z}FgeBb1Bh0`tU(<-HU!0E~2Cx^QWPA@p8gl~E! zrw^Pn;6&jB%rr<7jzwXUG14LR5&(`z>ikc*v2fyW3UE07cliCU!|#6`_Wut1e~10Q z!~WmV{$GoeaEfqB+*f_ceq?|0RPr?PbfI<#x>pCl83bn_93A|tA0C;`U^qIMhcg7u zP-e3Kci8_s?Ef9@|KW@zM`>AUhL9snIAh`53g>J%SHT$vX9}Ei;7o*bE}ZjO^LRMt z=}Niza4vwOM ztMtQg9+O2lkHC49VxdO42jDzT=Lz!3DqrURUxp*||Iad{X8}081aOvA%03522mElJ zhoj^FioX=jOW`7%WpI}7ZLJ76ufSOeN5mT}%PAn|^-9?{X|B-XtPqa$|Ep=rDd6qU zgd*eUKQFz=gTUGQ$WsUIN!ke7S0wpTg%aM8@|)U^0sV)^EaIBaDIjJ z1Dv1W>HJRqp+)q#`jd-)>0-J5f8g#5XBV8^aQ+Q_ zID5BiPuX$zDd)TU!L1Ef`!~4zhtcv%-8yjVhG~q}huaEn1GwPg0i^aVa1Vleu!u^* zL*O0(w+8NEaC!fy+YqjvFEl57r`$%Wwd~=c3AZuarf{3kJTi<*5xC9ZwxHQuO?6sU zMUR5p0q)Uo+rm8t?g?;@h1(kLaba?p30M1vO7q%?hO4Il*2ex{9lZ*G+dfRA?g+ON z+^%ptbFoWUM5&qG;CA2Zz&#o6Shzjmo({Jc+$7vn;QDZT!?oe|fosBz!Zr5R&$Vm+ zA65c42G?cH&fXljdJ15so;VndlZlF-f?I@}hMR+%spMoU`&lRd;TFPV>Jr@kaQjv= z`&BYetvIKJ$#BnrJD5cVz#UkLo=Im=*h08N;EsSh6z*AYhlM$8?QqrM@$Zggkx}Gm zxMTK)n0YqbS#Za}oeuXLxEI1bmzm??o=?G3fWGe+>@5iQBDfbbIsxuPxRb(lg$Zyc z!=1|Llu8?>Rh7L2?v-#aWx{1}XHZ;T*$-D}ro74r>Q!*BhIz`YmlX1MpkeGcyZaM_K!55Rp8?jx+{A-E4~o#nER!hH4&0S+--i1Z+*Rewa&$G^HG4}j|6NVcLw#-N!(9(|BV6hK zKY}a$|A&lzu(uT44VBD~;eN{KCt(Yz^%8*MbGTo^)d4&gH&x|)Md#~E<~Q*6fx89n zA8@zA{RQr~aDRaN9o%iq{Jv`K+bgAZ!2OBQAFFEC{=bs&E8O3h@VlDy;qHX{H%*=b z+{*XAuJr%16Lv9F?*A+G?54S=yy)!<5AgPbcL2Ov@akyP+aF$S5tW>}@an^>SLHOQ z((L@bgVfQoJO#*E$vXtzq3~)degs~_y``9W7`#UCj-Wm~To-lYFb&?3@JjHS!s`mJ z8N6fRHHX)VIW6G*um7iW6uhG;jtPrX9|x};yw>pAz|+nj-U(GvcK&L%t!(K@@H)Y3 z53eJ<4tq000k5+P&F`W@x3L>M4_BpH7NQSMsx5%)u+b)BeBW7gfA}8KZsS zO@h}C-bi@;;hh1m(*Jwf|HIR-0J!!6@P@)02yYNP?ffe(91L&B-bH2(gEt)BS!(_- zZA7Tyje<8G-e`Ddivv&30`SI$wNa0QcMiOBwS|>F0p5A=E`oPHJRS4HyP%vOem1=c zV$z=&es&YWpg>$)V=@WQ>J7YJ3+E8tzpB3J#_p9zmA z0`FQzXTh8O-}YP&Uyj=w;O&Gr2i`02ZiM$Ryt(l1hIbRZdGKzA$3EY?r93U*-3IUW z^3`HEQQ*yocPCe&r+`WtZvoPsApQRX@D{+kk2&|2b7UgI(_4UaQPUn24ey~a3hxnk zOW-{U?@4$I;XMvdFADaq7oMIwSY#2rr{MAa&$9D0yl3{-%$#T8Era(Qycgj;5ATKl zMwh~4&mT6Xyiv>H>HVK!COkQ?H^O@j-n;N#hxZn|H{j{upY^YRx3b*4a`9F0R>OOH zZ=2z*f%nedMV49%Zv(t_@ZN{F9^QNZt>FWBABJlWeRvEWE$qOPBjM{95q-fwu?VE_kv!_Wxl! zwYc{GT93aE{Qcm|EM>W#a&7+p@EgFd4Zj}zI`Hd;ex+3Xy^Vx_0Q`gD9|-@T|K?zC zo$zbm9|=DK|8V#X;U6Z&;U8LAS9$y|i|~(t-voZ+a#fX9!EXw`75rxKTf%P+zs3I& zxFM|YDDr6d$5cn*9|ylT{MPV0!#^H=TlgoyZ&Tg`T`5liD%!#C0RJTT?aR^fUg`+H zQ@PHv(*=GH_+8<5=SsW%ca0~*?*+f--b&z~QlIHgnuXeLGY)+9}NE-_(R~2gg+Gi zS<(~2AEy1VisA4_)I80T8VP?C{IT#y!yi+#Xs33YB>c1CkNdB4F8m4b$HTt>{(11v zFGpp&wB`%pUsUt-%UXl{>`tAD@F&Bc1pnfiB_;LcE*JHuz@HlGiZdPlb?`5Ne-->o z;m?478T`x3Ih*IP)D`fr{BNnN;a>}XCj4vuyG66$&(`nwWR3F8h^|rk|6Ab84x9^r z4*VN+wo{@ceA&r2>-{R?knnGXKM($G@Nd@%bMa+zOzW8spSMeiBQulg+y#Fb{JY^l z0bky-hu|-Oe?R_|04Y7;Y)XD=gpr|gC2V;;IDzd68_up--5rYJSx~agf*;|9DQkR z@4#ON|6TZNL#N`ehtK|B>Mv)0fZ$;GAHx3?{s#Ep!2byT7w|uZ{~7#G;OkX@wx^uG z5&q}@bvD8O8vd8?zpC~{!{1yfwFUlm_*>zBNB>*>O|iD~d-&Tzt@k;r^8@^!;O~I{ zW9U@;pW*+a-*8DwcvQgu4Z(i!e}}&d{vYuFg1-~~pXFnwoFo0ee)+4V%J0s<@b|!% zw(Zt=SMkGlC)fu8|29z^nc0?>1ho*TSxf+G+_5FCb}A%a88na>PmJ&h0?{@=2V5i~{61i_Kz zy(BlW>l&MBTG&?vEf5@wpe2H%5VTT1e5Zn=5mW~M<;>#{oPeM;g5&?ww*+kvoLF|s zd!rqKUI7s z41zQQ>8LXZq+`z_C?Loo$m^$D4mSA|YkmF}lhmoIi&Mg0m5vk6;{va}k`Q3Cuw-9>ICK$&z1oEYnh{)vUU@30>N#XP{~0s zk7ehVi)cM}(z%PgJMv{;mlL#J0@EC$e7i-4y99xw>jBlr*jPXQWzAHfGwMBi4eVMCSvn9e8UrwBer@EP^SsvI4FA=p&q ze1-Ua2);(}BZAEcb|Cns=AXL|Y+>eB@>>Mk5b#70aPVJV`*ucu*jrmMGh76}2`PR@@CU_Cq4WmSf9aEIg1^as5bQy)3xTxuU;QbZ zeBL#>TeXZsM923b_fc~N&PDj;Jr|Qm#>#PpqT@dfemUq)M-GuIl>nQ+n&i{n( zZ@d@VaEf$0i1*gcM@1hpinyVU6j#$iT&lGZe;Dx?;!_cK5buY$i+B=okM;Oupj)IH z7)LyzTKZL8Op$3agLs}Ii+D~%C8vP6tgEPw90OXauj=yt>5upz#80Jv8hJW-2I2z| zAE23XR@G8xsxGg0uy)1qA>>fRCn7!!@rw{YOOrJ;9PtqqJreOzG)I$q34r)m@@!Hs z0T4fjJeM3#o=55>0OA*r7YZY%ccPvk)Sao(Nr+EI{9<+F+@#JF)v}*ePec6bNZ(fw zpN{w?Ji0C=FGKtaipvq7Awp{7;+5o8>b!Cw^-RR?M*JGYZ$$iBty!y;BYZaEHz0l; z;@9iG{ofkrsFri6rp-nCc8Z%2zZvmc5x+&Fvi~)DTa}(iXFlS0B7R4ee^-^hNB|W4K)`SNUe@LD3;v=#;#2-ccMZ^~(z8LYxBIy9}$AuJ6ApRu9 zBB5@zMxUzrc@yGKlg}Xj9O6r;pB3t-UZc;GFH|{8xvrOLcGgFH8M$0Y@iOACs4n*a zuOT6ysn-$Th4>qYzbOSHCE1xP5MP7%O8G+##NQ%Uk#Cc$g*wXB=sO}1e;4sT5MPV< z7R1*fz8UfLnxLWg5SQQohWZ1@qE;y+6i z@n0%Azast{o!>);dMA_rB>xg}hyRWEKcS}oFA}v7|G&s#w;{eea^mgsLVOPr`>06l zOYSGseXh>_NSug7?V7*;M4}E7$0AV|iKa-@L!t>1^~GnX0TKsP^npkmMDt)09#iEXN2fJ; zJb41yrYfgxq)`-!cH~J&bVQ;(bqAsD6ODEvJ6Abfk?4m+HzYhHx+BpWi5`*muOM+U z*^}%=o+8wGG}L*jHH#TiHppcp8W zo`iakT%aK_m>fb5C5H+1bFI+s7I2c$k9lQMPiKTO6J+BrH|55=aA=;EtEk zrNT;`mm@I~i5YqYk+_276p$`ng~Zk3Xr?Y+Q}fsFNL)+KLgIQPW>a4$)FW1-H;{AG zkxpKnxk$W##7#&%iNwvau}IuP-ipLyNXUjiip1@@6ErjriTM?M2NHMEt0fy7fR(dzE0;2 zjmjBQqbrd328oqOe1ybXNUTR)<&|9=1ZF9*9!$h4UlY( zEO{J~$0ON#Zzeb71curmd7}DSVOu2IQRt)ulI_V3WJj_S*_rG@b|t%!-N_y#Z~iQ| zq!*H}BY6sv_aoUG$(xbvgXFbHMv;`Y7)U0NG?8?Xw2+J;$zelziyWz~^6q#@21xqq z$dRBejH_Nejyj3tU?fvWW{^y)U#=m`XpYPySdl{;tZN@djwZ(-Ikr;g z*>oh~9M*X*Ii5U^JYUG13&;zF^e2!L$w{PMiXu6goPy+35t^)PpGHn6FG2FsFofh~ zbS_7721{K*>J$)?SCLl>nKP5TMo52F#IBFzZ1OttdL-u}c?0zv@N zd=SYekbEf8TaK}Z$w$aXk$eovg`%Y_oyS$nsX;TJta+<|4``#Bjpe1*{)hhTEu!`>`gyc4IJCZ+A{D9;REfQW0CAAqy{;ZB1a;kqt3P}Ej z)P6|*PUjDDCz7&teezUrsjqBkcyBE z$wQH9gw$c8b=4X@T(!L9ok}&X`R072nvh2#)e@MgwzOf zBvNCL8bv)?zetic2sL3WQfI4{nG;<+2dOKOIv1(QNR8M3drh53%G*5=sSA+02&oJ8 zFR-NsjZRQ4$Ajug0QuR&@yQrA+?(no?zJsQ1^yq=ECxQa7Jb`(-KBJ~(jbCJ3Y zshg0x1*w~L2TCc8-l|&GrTTWH9z|*%^?dSD7NlNB>V2f%KWxr`D3|$o1rVLM^3HIlw+gN`C)!2T~izkC6Hl zsgJ2Y(ZfbEm6GroQX50fz4S#S`YuwN$S=vSklKvY*P>-l()mWUoK-b*E7C2H`WETK zk>dP+>U*RcBDD>vJxFawN{%$n|LY;Q1F0YN?NI#_QhNUnQab)eiWdbbj{j2}|EF~P zkJL``Px3GFZ}J~<7x}MH&)S;5`+qvU57ISA^ExZNpGMQQG^%2Mq-%$nNY_ESF3oxs zr#{jRD*6Da8R-L&KB(dxOb19G5;{VpBdX>u6>9$CpC|Ywg+D^5+ zYpUBLeJ|2dP^K3;BJCjE3F+QQcaC)Y3h6FnSEPF)-3{p;NOu=U>(S`RRk|0QQ`C{M zkVgANI<`VON*bhzw2ibSnl(r?rdnE}nJ&_!koF{mw2$;zkjdEeK&0bHpMi8je1?)p zrz$#)bcSY@%#nGrKo-do*_Z4`_9sszPa{tk)_kk)HPQoAhu5L$Gm##O^dS0!$su8y z5b0r6nZp?!L5{5QN9!++(__f7NRLPQY^2XYdYs-aB0aE1&#ltuA$4`{Rj`Sq1i{DJ8CnJ3c(o>M0hV)cjd)T+9^-ZtnOPPO}I_2YV2AwO^ z(G9;6>8p^QiS*U#l=r|jReBcEw<0||Qm+Zp*OAvFeG}3*P|qQ6Bc;2KlB?Hi~*B z(i@R}3+eSpuZkQ|59znb)kwdK^cw1SgiG_GgRsK$q$hJ1nCcv{s`#} zI%g$!VQKVZ)p~S^{*?So9ofC=e2(;1r1b&&NN*y)M0zvDS4e-YH)+UOL!;l2Thx)- z)cLkX9-f*0j{F|!ACVSQj@#|x=-M^9L$&0q{)zlq9a+0Nzam=~>EDo=su znZ`)(M5aE{eIkT6Jb$azC;bGIfyI zpSreC+D2WMtfx-7R0CuVLFNGcv+vA-LW+ZsIhX=MU86>8BXcA&$05^HpEjRqMm9(0Xk=O-(+ZiEdV7-WJ&hivT53~$ z40)_NviH>Crz4|pB{C-<(-xUF)Ox)cexkY94w;kG344i52V`tyIx^G=ncm2BMy3Zc zU6AR9OxL|-k?F2l-hHkAWMq0F(^DO3k2ndyu&;(o>GE+etC+L}otq9YU>Hqj!;aS2+tJT~{J=uaM$CWbUVUAauAb z4k-IWjMckUh`ESIO6eYU-YU1DUUp zc@vqBky(MvT4Yv6eCgueB3B`^hT?5xR*R4#TzrRox5`;pvsQYE_2hfVe2C2Z)E@}- z=+)>3@*{O*d)Ky#$X!yIPmuXkZt+FtGjby`nd}WrdpXB{E;BmOZ13o00hq znQxHUfy@@2m&j}-zeQ#n#dpYjuQL^L)M<1(`GY$0(ry1SGN?5&KM5&*M&=iaUxm7* z8vPyFeUbSiQfoCbJ4x9&|044jGXEg+w>X-q(Op$qD&K?5?*BR2eN?|)OEa_k$>X(= ztwrvykJ{G7+Q`;XEdwoGtcUF9$ks>pPGlP(I}q6ekQM(xWE&xSP-I_;9xS8)vWFmh zD6%!OsGF9JAloq1OgOAcAFfYj%pO5DMz$$M6J(DRA!WJP4A~aQHm`D8h8o#c$R1VY zAA@WZ*<x z|>f0pC_EXV&@9sk$-7G`q%pXK;J+dnjg$a4Ij)$u>F zXOIJ`qGuv|6|#en9gXbZnr{~)E8~CRP;wZuBauCedN?^ks4LZ+QL1GWt$Gai$yoAi zWG_Q@9I}@ndyeiU-D&3{JHDdNL-u@{7myc{`nVfpCy@H%FJvc?7n768Ddbdg8aZ89 zd0#HA(w8H91+p{Lk$WJuwkxZmS0j5JvNP#lqrN6wi|j0l+3J)_UC%vs133rTdC1;~ z>@CR7rE?Q`b7Xi=DI!GnRyrL2XKzy`-jD3V$UZ>*Ao-9`s-k|RN-vDGJ{Z}@$j5~gPaylG2yKH#DQ5c2iZ3w zCqIttn~@IkiC96dMD}fpw~$>WLdIHLTurV~N7|tI?;`sVvTGx~Wbdsb*CYD@#e2xU zFG4dl`XRZY%F*#ZvY(X48`)2h)$u>F8`Y84s{R5wIVLwD*8|xvk(I9aD`bB__G?Br zliwiwEwWpvw+bs|ze9E#vfo!Z+g0l|tkk@N{81fU{0Z5gk^L3fU(}IrY1RBqb-5*f zAlCueoi#t+gzTT>U&tLm@i(&nQ0x*?{7cGbd3R+0;naJSxqXn^R~+Q_BWsnTx&4u= zUD0)rt6S0aSgJm94MInV+=0k7NA4ho4i-{?JOsI#O4$gVhR7YtQiqX^D$&D{JEEc+ zBiE#&WjrSBY>Hg7&=Dfnf@Vu0MJw_sC zI}5o%kv2P!8%z!%hmymDQkHsn&Bo5ijUY!NcQ$gPkQ;;CXmPZDjgGC-IJ*wrV zIHCNqV{erA|K#34ZZ~poBDWE_707*z+)6F3hwEF&t*Yp^k<)=La%)I!407+1Ysq!w zdh$K;eewhHLo)n~d?dO&0?&Oy|5Ng_&=ex~IdYqj`$98i^sejr61g47eMS8>a+@{8 zkvwwWAh#u4M2?pLxo?sCuHt-;+_s9|j@%FBf?DT~qLKSa9Th(#_Y1|ZB{~0}uZ8?UT-+b|+Pc;GI%M5)!F)YN>m%Qw z;v7KdK%qKXKVh;JnD0D);3G$C2eL*c3;`5N_W)~`Z75K_dEPf#S)ksRTN zeUVQipQ-s_Hu70gc4?6!k9P zq0ix0F#!326lba-Ui#C!{zB`Ex18t0QgJ==u80!2AWI-2Zto@)sdL5%~%F(>AG7qmxui zzUs;36m`ncX~>H|T^5nQguE2_TadpD`J0fxT+=i(1Nkc|`by-lqIoqrle~t!mYhZE zZbbe%@_Lfv|NI>48_BuCn(tnuzFD>0TcV|IMSec=9RKHUr!y~16C%&?e>qd<|B=@n zi2OasKY;uK7B0m#d`mL{weZl9)Eolg1BU#M3g|2gt2k^cz!x9G@6U>)*rBmWK;S0leh zL|6lzcabkY{D+I{k>^iV^Y0=5{@zUFKV-E0@E_`rNk0EGuh0MF;%CTjR9$Z27szi# zepAi=$)Wot`4#y!^4}o8S+r(qbc<@aBvk!vq_%A7ccgrfe?Wd4^>(4;Q|};uta5%v zA%grbDC~>;ugL#}{BJrBpZ}fwgWO5}Db#v2%K88NKh(RB-;KP^|0A!_N{-I|qp*)U zADu+K9|{dns1-TzOceGfYm;?QsE0yb(OOoc^;JtL)dxfx|Bb?d(+UL~FiA zYg9|V>V_yBi^8EOG(+LANQ2){Xha^4LKBK3P-rYd%WCvUvZ*>!gF4M4&9|Y@f^12) zLg8o>juNeR zYcvgYM&WT3x}Y!?g{~-+Q0Rt&jY4-6q=p`m13pIKWU?pOi#$cBYtd+*$Z3sGhzcnT z6if`S z;X;b@QMf>a)}zsj$O-Cfx{Z1gc`-Q|g-cMFg2FTurfN>P)O6LdUajF$@-lVaSE4W@ zGGG%5S458Kg~FBORVZ9TaWx7vMQB-#UQ5oZa;`(+9u%%e;Z_uGkP1vCB=_NGtwn(!LDBMoYL*Y(}`6%2WLf5F#yU4q%oCPR6gu=a%p%YNJkGx+< z@c;@BiqNgr=);kw3sHE4e3V>BJ|@&0jXr^5eH5NVVG9b2P*{h;ViaCP;i;N+vi7G* z`5-)p!V>Cdg}N;oeV%-w%2|rSDimHq;T05?=}B205nNb~0&ioJQo8sm3M)`}4TU#Q zcwKYK{+p`hbEi4{|CfUP|4YSroBnEY4GQm~z{`_zzCQoClDQs*Pf>U;l9-CZ`{V~G zd_?gf3L8Y|wrlib@{=m(v&g_NQP@a+j>4A|U!br_gqG6iS14>o;p-~r8`UzeuF_p*P6r?l%PH&7Ud{0U@wS!_i3UW)sa@}f;{z(2*<@^$<{{jlXlD`Qlen;UC5!wcg z{)yr~DEt*M4?y8>@*fob4~1RS{|Yrzqr1sH|8t7_M!bhm+>fkAw^RZn^80uYHb>ADK`|M*or)gJQ~GgQ9LHR(TL7*Rr+`oEfh~c zu``No7(Efi_7rW&b|~`4{?ZbyxdYje>?G79O8qW18y2A06~#U%c0=)G6uZ;uA=ELL zMth=o3W~kdk=oShU8SRR4AQLfZ4?tI#v*-&py-e;>7f{)=!@2E*J!*-Cu>$^QB09( zGDBvCx^|7`(N}6Hpac|)C@w;=gyIAg`=Thd^^3?qAr|{bdcB6?spM%Wo{8e=C=NjJ z3~_Y58XZ`r2hkZ^ZW)WIUL1N6eCa^DMH($(b43XD(CD-&t)i%BhNwc z0u;|h@jMjAi=%7T==oLpLOK^!ITKO5AH_*1&PVZLDT3l;atew!qBs@B=_pRq2883} zBFF#5OPO;SiaPj@^vKH##Th8-_@DYp6gmDc>iD0I9D5x97q4Ym9skpxjiQeKsjo*- z$N$uGgv^|a;;ks&M6Kh06mJPbOyl^!$nk%1UX_1Gq^%qncanFZxPanr6z>tCtI+7Z z!>KzmxA|FO^A;lvoJ}N@Leb(q>C`z~gxH|G1e082wEj6oNjN)b# z<-_|jich2X0*cSne7^z3B|?g4QGAZ#d3EGEMWZi9B66fH6;ix};xdZmLakY&ub{XB z#aAPd8&G^rNbx#~Z&17`)b?m}WzFV!kl(B+SE2X?if^O15yjQw&|HJ!I~Dydifd`E zBiEDfk?)fqkROs8$dAa6$xp~n$d5x0^R;R@v{ZkC z(moML!WI;_Ml!Qd{FeL<#qAW|qqt3k?gx$jK<+?sk2om)h~iHu{v1Xb`US;b8RGm; zQRjc?|3U6VQRjcC|3Z-iZ>{zp6gmG>TpG+26PS(QXEJggwnwxDmjOsG!Ug4lw6b|C>@1TLzJ4Lbg1s7 z(qUvHlp3RSIQ0=iZJ0)zkVjTI&FC~&M-y70)RLl=I^nxeIvS-DQ934a+VdzKOCCqI zCXXjiAlnF~Aaz^T(~dj|B^#yoD48gA(3*8!9Z~93(VbE1LbEH`jqFbLAWtTHlD)`N z$lhchGD;f4NGeZl3AJC+)x}6ho$_{hD5X*IBd0G!DTs`igi>5ckw7U)krL{j*JuW% z{wQUcpCj`ql~5{B7ll$ebzicdI`S@S{il+rk*AYqkOPF3QfH!cHA;g}Iv1tED2+gA zNaT=pC=C@-3`6NGis3@7S)(H(HL?|>$k8aBjnWwEu|lo6M(z@pgmEaHqmFEgE{;cO z0!rsaAedsX7m+sfo9XD}rF-QWXIK z6;VY0ic||tET|xezMJhOJ-e%bVy9aXEPzrhAWfwg1r$Un_HG%1haqvTccHBv@uLdhHCSaO_VwR5FIf|BuyRn>TCQl5yCw^1^Q<;mn* zewrdm-eH8}Ka@-@6Q9ob405KTd{}91HaQ0+n@}U6iaw$$KbSfRcHvonOuP zR}~adqVE5zrPTd@|FbVd$s$J7{eKl-Osf0;s{Ao255=QoDftPxjFboAQ6fV?pkyVv zO3_~tN&tA<7mREmHY^A#dW&HO#Q z1Cdiu@(oIkq2ybX{DzX9DA|LOU0iB+wPsJMf+9-3W8`~97Jfj}FA~#!5@)vocOs)T&{=@jc|HUJx zB2o#Fa)_Lc$Z1j=DNj}?lT%Sef_)x2gSBUpXOU-@$*jx>5UGbq6-3TMq$(mc5vj&_ zb+U%vlp-SMs)+pOQ`TDxk-CVS&$9d}8j(6>GB1!!|HzEgN2Dbp4G?LF$c4XRzq6~;L{{3Eyd04xti6J~l9VrwwO5f>Bhr-dYshA$wapP};g=b2MYbld zC9gx|dR0)3u$>#oHi)!kZ9B3(*}+dkICZ8#jGnf&M{}vfiCjLC*FOZ`Dh`dy$b~qy=5SfI?%ZR*&$Sa79L4^7rq5elk zSL-eXMMPdz1vz-6o!1e06OlJq9!riZlR2J|3FO2w@yU$5MZQhGLry7^GYygDh*19{ zGZ6U*k(r3hLu3{r?;=9|kIdmxbE|cGR}~Zyc~2Eew{1Qm3lUks9O{4MgEEVJg#AEEw74zlVHN&Syd|0C4@ z$ghn5MpFMH)c?p)6)9cI@iOJV5IKp+i87JD%as3x))d+)&;adJ6^B-iJPq2J(8@!r z1g!!ir;`<{ogxR1A~ezeK!>%npq&HlY>BA8tF%*D%IeSIQm#T)g;oz*HE8EUs}Aiv zXf+tGNuFDE*Lqb@gjP!mK|8gf)rD3^BEIHp7f6}6^`O;PWoQk^3(1Sfi=j1C1!+?n zyaZY!|1GpjpLX$6u<*T4w?UxmyT?4HnG|_)(&B+$fZh+Pj z+I7%cG18j6RxT1%BWlQH?RqJwv2A6kHqhEZ6a6p!6zv)BK*~VSQYA}K|FxSLzXe(s zXtzRBQs0S@+sNCi9xq7#@dC8YQV90jovao8_XmK2b{Dkgpmm3KFSNU%Wue`}oDwnu zEd@=3mVg#zBu2(%E=ASIraz#G{+E7=G;2lwOFu=95uG%k<)N9-Txb>}HtAG7%pH4J z?FUaqcS@7sYXb(#v zXp{P{iT;;HME{}nCHp~p3R-_?Pe2>M$Ut(CFCB`|o>Y-QNwlY-Jqzs_i3G>qU@80O zwKfFWThN9=8v~8XqrJe^UW7Ih+Dp)0hBk~5>c2L^-;IjUUXgZ!V`CI^MoT1Ei|9YJ z*T~nQjfeIIv~keJN{+ggk=i$XGCzr{58`}HO;VGH3q0NOR`d_+6v4GO@Jm$!gK>G~Z5ol|mZG*NJ+9qi0pnU;t zJxamB;HuXQX^4qSqpN7NVCUdN!if z5j_XdDu`BQEyw>?N2X*}C95gQ(Jql1h+c|lO_t9k&m(Kec@aIItWDM->yj6c^~m~U z1M))hBJyIgA$f@+3ynm|q-B2l(Z*_B!Cs0sL9_*;S0H*7qE~Vocv$-TFnTqj%@A#h z=rzF*pj#r$QTPAL%by9=w-#+F&-X=JG2U8Q{#E8LK=e99Z$b2WMB5>H10!w7wvwZi zN^;sG+7ZzXEK~o3eJc-`AbPW8sz(T=d@G`NBH9VjI}nv2pb@=YYSqt1QtnK4k%$`q zK_Xod?T%SEa-?@ zEEtHIsvtXGnzBhpA`BwxF_I?>WRbjAQI=ApMnroc*%;BDh#y9@7vdVC_aj~t(FYJy zhi-4gena#@#MA@(ry}|gq7So$N61IX$K;oq=;Mg~gJ>T_U*X%ni1uTlKRJLLNDd;O zAfF_kLi8m>pGNd~M4v(QIYggDbg-(DuU;J?(*6)chss|))v2l?YD9wQ3yi-gX$&Gd zjFI8w2t;3&gGVI?EsR9;S42l4s`k}rL>D1C2GOaAzKZAsL|@}luaj?(W65#ko8)*! zd8z-0M<+5eiJVNnMZQhGLrzhYmmIy*5PcWX>5R)10Eo^cXOXkXIf^XIE#2n#_;wyS zpIkt`PkulyRFs#jnsFALLQ; z7=eZAM(k9?Iw4jLu}cs;4Y3-Cl}GGs#45;AvD3+l zWF_(p@=Wq9MR}=jId%>sl}V6Q$f{&Dvbv(YB)=wN7eM{}OxAK9S&KZMtWDM->nh4i zma4}{eX;?`-+yEL{Wo?oBMlYhCHajIYlYaQh+Tyk_j#-_bNKsjtO?8f@i%rQ%m0%F zgJrK~q$w%C|033mY)-ZyIR$W#-x{&@h+WJ0b>#Kr4P+a#E!j>{Ub2N97`c(`NZv%= zOx{A?swgkXzm1XG{Rm=rAl8|YF65nLSF#&<7uj7=Ug{`{-GkU`h?OAr2x1Y$9K$i8GhvOhV19H=O-&C?Nkf{`c5 zr^u(tXUJ#C!HV*dbqzsm1Y$!Of1Z4Se35*K97YaTl$R{^G9#~$Bgs+ZXmSkss-nCk z|8+**Ajcy17GmRAev=$eP9P_elgP=6@{$(bX5<}m3OSXWMouSZD9TInXE8FHoP*d} z#O5Nl46%0+TZGtqjL#$IlMBfA$q&edit>`yK4fGu`4RasxrAIwexfKZIj)v7vVvSm zt|C{HpOT-EYZT=rYgxz0dh&Df3vvUwk=#UXMrI=4T8P(2{CvdgB3_%B zbtF@Dw`B1P$a)g-d%5ujh&Mz0Lh0P9PGkHc#4l!{At_V9Bi@L-l)Q{=OkPelA+Jzm z;Y!3gYFYd$zP*}kN?xNVSD?~nb8bls*%H5h9&d$sTf|!rkoe~MYk#2~y!yms3@$M4mHK5#?jNgMe`~Pw2|Ci=R5g(0s4DmsT#}R)B z@dV--#FH{MLOjLx(~|F>5%DbI2IB1h$MrJpn9?neTck}oq)U2=EaVX{uuvrLCGR79 zkUhy>Z025ueW58B!aZS+f|KP0k_blJAo5k@Lv; zh|39%_yVXuRHzpGYuNZg1{X<0oi)<3%2|x~M=WsgNnfwxOA%j(_$P>eiuf|bS0cWg zIV)tT;Corc$ZClMpOpXqjIUvQZJGFb#D7NobHq0y{sn6{NNw=BHmR{?)C=*=h;LzG zE4hu_PJT&#MSe~0Aip8MC3lj$6j|7f_#VW6VEH@5zn8dLX;Awk<3Gs=FtX~sh#x?F zAGdA4qy?YoAR~t)q8_V}-E{;BwVl5p(H!w#kvI$S-;gMW`0t3HK>QEHk0Va~k5m8E zeI!}xPx3Em$G--TpG5p$#N}H+{2z(?$7kXci6qn+RH^`p(~vk5iSkHPM4|#~MgIep zOH^V+^xtnm?vY9hXCqMyiF1&sfkb5_sv<%CPf-8;qdFn?e~_py%c^^)it2fyL`@{l zW&Ave1g)Kq#MMaDMnWZs{v%PBynw7H|Bp@7CmWD5R2mW&kr$H<6XMj1ob~5`j3RB$b#GgLL%m$vq&V6 zxDN^5|4F1+l_q8UPb9J=$Nx-l{Lci(|4eZFPf4(lu$kkKF6k+lOVkJ^r6%WUxfkxhy+s2oiIV7|ODLE{Ogk@uE6G zka&q4Mh+)OAn`U5FSGm#5@T5yiNq)tMw4R{S$GwR*I4j}qf`y@xi%SUZ{I6p-rZlI?kioTA9WRH#36NqjmvqclE~Z)YJfn}s=y%QhfE{ZEMg z`)4r{^O0DL!~!H1A|d*ZgxEo#w+YdIBtDdgul9+LkXVX@=syxm%EUimWEn~QPppu8 zwuzPGDsnaXsUi!XA+d&qwd6W-J^4BLg(3?Z$c;#Bl8D+EX?Y8h>Jx26;twRYA@L&; z+mYCb#Ft3yK;kQI$=8zX-#Jfw!-$+Fa-hogt46*VL4V8<2b&$u>ydh-6#lv?JS-)PKK!l4Sosc@yI|BiS2jayQw%x00PmnUV>~+sQkS zbdl_gWD3bHjND0fCA*P#A*mtRU6uLvZX{*=XCzC=h{XM!Cc!9@GX67?GGHJJ2_%#M zpMzw&G@e0H^q)C7Bt`#OHjpgU|D=Va=s)9*zZN7#|B=j-qW>%ukre$$@;B3@T_?vOISI)(86QthAm!{RJ;En5@)r3v`Hs~3eUju?9av73K85jMRUqWTsH1AB|jsj|6jUK)*<;hlItZBoOfR^ zX9KyB+$6QZH?oD1tr7|Hx1-Pt$uE&r$M#o9|Bd9=NcBN-2U3?I`3;gMkyM+v56PWK z{)FT%B=;b>TUzk1Qro=_~^w!e{5I{Xh(XCV16Qst2n z{YUClvK)DuNAu2pSqA`(f`u*He`hQ zpK8Ri=)Zp_3aQ3ObwTQKq^?D(2~sVQx&o=DNL|Uy|B<5qNL?*U`Da|}8b+Ft)c;hA z|F31R6;iDw;=4xbI;3ty>UyNwAa#R^%aAzIW?Pc_pQ8S!I>=JNS~?=t2`TD->Sku% zLf$GlO01-X+sNBV_Wx6zr8f9p?nKH$sw+})q`Dzhg4A8i>`vZI-Xr;HuzhJQLTY4` zj47&dBv?)$l|?Gaa*9lo8O74=$uXjn25Cxd@GaX&^+L))s)&@!T93?=1<6zcP{@|t zOWsHJAbTnX|Kdp9kJQ6RJ-~Qx@9sGWm*P&?`=jLTUn1qmg<8sWGg5m8AZsME^@a#aPD2k<|axc&YUjEHx3S zcaWOI+R5ZwU%Q7FLq0$kj-x z`M*?CYW^?9HKdyVOO@A=>q#~Lmx`$QzZ5r+8%e*x%`9&rx02h)?c|r_SLD~^4)Pn) z|4=(w-bL;v_mJO_-;+O(KaxL@Ka+dOedK=f0C|u+L>?xOkiU?>lE0C^lYfv$$z$Yk z@=x+F@&tL3{G0rT{8yMhh2+R8>2fTeMwTZlkf)Os$x7rI zjjT@AAZwE6lIM}N$nzChs7=;Ex~@c&LdrJRlcOt5{ZCW>)1v>u*^#~&>Hi_!5b4H9 zQ~%S{|Fq~o(w9l5-}gvg&PWsT3i3*+^_3(|{ZEVjBi)pw{->Ksj(;wsTOj=y(k+p0 zgLEs2OLA+ZuVvvn@_JJAKRDCVZISMQbUUQ;NK^mQqW?(Ws4kk2?nvH5-mEqT>03z7 z|C{c_vdsUBwEP7HX_@~Q>CR*q@=l~pq`M*=L%JK%B}m_e^xbSwW&~CRrf~{jSz`og z%?~ms>gOOGM>>mi0_il;$Z5cU=Bo_N73n@mzl^lf z|KUjYV}5^f06CDP{->$`Y3hHP`Y(+?jWqQ?P5n<(|I?!XNDm>0lGOh+^*>GhPmBH| zJxozv>fb?W(SLv2SoI3hBUu$`Y0-bA zCm_8W>4{aBUGd zLHZ-4Kb8hLezN?ZGp$}~@~@@-JXwq^M|u^~E0A6(an+Q1se#4PtC9Xx*3LV(GTw4} zjjBR=Ez(LE)*<}`((94_JQ$E!rOBSzfb>S$7+&is89{opG$@5FqAJqDHi<}KJNYH4 zE&;wSjqgDEo6@p;SfqDC4f5b`n_7`X_8|RTY0meI{6PLl{)DuQ|IhMXr1zDU_al9v zw0w}Yhme->|K%n7^A~=KU&-Id-{s>3N61m6Pau7a@#Ey5X7&snItl&Akz++Q<1q6nR3XSiOgxpR6wS@6rpM~0F9kMQY0a=f%uP86swhI}# zh`g9=NM1rVA}>{xt1#J;#$1Z}pP~L|ME?WD$ovnP=EzY0Gt~bK^*?hBm!kd$pS=Y# z*CErA@m6GOQuIIg1t&xO&xrmb(}rv-wZ4O7+9RX3rvoxKA#)>ZJ4&tp`$FbsM%e$) z+{$t%@;1rw?~G;cK;|w6J0sJDg*(ZvWH-e?OEcY((U7^D@q5S;G9o#C&oC2ZBu2)` zgwzIGn?mMEWYWmoi%bTYJTh5iEM#)bWdA?I{(r`lrTpV9W3$#FUDA`q5fw? z|4X;wC1hShW*9Ofkr~cy7(u>Fvi~3Khf$1-CPn{|c~vpE3d_8X%y?v||CzC@rT%9` z|HVlqe*!s?WdA=S{r}*;aprAgenaLRWL68s@Ae*OBWbKWOa>MmCTe$xTulw6+DAuaMcw_%?Do z`K9CpEqu+$4)PmPEna#}n%RZSeq?qd^CL2QSo^;a{gKSr1n=!LF z*@A3Iwjx`T*OJ$f*OS!$EcHLzmXUVI-imB{mOGF)k{!vL$eYPq6y>FQ0$J*RR`eg) z+sQk~&SV!-^k1Hrk(_SiU1WFiZbf+%OKMAyjUyXjStFxlOfm4FY=V&_nIh9t>;IOQ z%_6V9iyU%QkkyfW4_O1*7m+oQ9e}LGd>h%vk){4;ssCBge`NDyft2}wk-e9^kL3Kn zSN{zLvNnZBy$ zPL)Wm97+Apm6uw-o!sfjorPRQ)>b0VAkUN>f6wI3X5<{QGAa5W?Au&bd0M!Tn*&vBUcl-+Q^;DeCmI$7R%?$vi@Gm)nTMAc>!5ZYJ>GQVB|tl^dGs4$%cx7 zg5??^*A%%+k-Gx9%UIi(yqs(znL%q;GD2<4iT)#Zwbc4YNbVZsnj_b&OhoiQIQMg{ zkh=r9*2uL-?poxoM^5xVI8$;rs4{YG$hKrVsSWmU2jp%+j{2XY{^xFD&drkJA6>ay z8Ra(A+}E7^?{{gogA|IC8U>hDq?n&exgPO-P_c&|&kbTL1k{KLb0~i@d z4kAVWOTU+=kb4d}(SPKgA)h4&OHR;&=s$8p$>+%z%GADuJdhiP-0R2rjlgP>B zTjbm1JLDATQ<0krU7Z)xpw~ifI&yoFn}OUWtw3%za?6mLgWM;`&E>N1 zlJAl8$ob>~@_q6Hav`~h{E%EsenfsuE+LmHil!;57w_#Lx7-gRw^9|5TP1JR(W0Kw z$f*ze1#+Juw+^{A$gP#XS*ojh_3f*FDCO28_qp7=P$!N$ztmjPxeaV#qqGowYbvO| zwJpefjoen`zC>;ta@(a=S&X`8rJjAxeI;9>{%^1PUAY}>;Tvf|-BD4udU89F`w=;{ z^S?uGH*$MKL)4TswJOP|>ACNb`=MG}U5&-32Jw?oRdYYFg`cGbHP);8>tk*obhWkn zkvodq0pxx|?jUkUkUNANXPj3*p&oc%#w5x8g50la`YknER<%a=$vE)2-`Uz9(%QOR z)tXmA?ih0aAa@)&CHQ|L_m>(JQD)ElyCDBF&z(e0rUO$q(_}((HAH;wUui)x`sp$!yBb4s+y7)PTD=nVGt@wlGCryrv{udCsh`Dm z&Xz6tQJ4AG^vcj{LI?C}(5pbNT6LeLX2Dhi>Q>!z6ZGoPYsip~YFf!omW-XNpUW1` zlP#$^!hSX@7D3vnv9V#MRm1d7sFWWd!{yws5tyaMco-O+dc}`Y`CtpzF|^L%#!h3+U~kw}jpXdMoJHL2nKHTIpS@ zdz0p_j0oh+@^FXH>hqAM_~n4D=ZEB=k7+gzAl` zk>S;#uQH#Yo`Rm1F_zWn?mL=QyW(@`S+4x z&<8_*P6qf@rg^fxOcLl<%t@+K|8?rWF8VK%Yl!kt|8?rWF8UAs6LJ|T;tzcV47G}tFm8ap3dY6I zS3_58QDXHi^v|HH^J@)sb-u5KzMhM$Qw$tL|6I!IQ5T*1uT%eh2hle}SNmrR^zG2q z2a!Mj|K}k3m(afoIfzdE*Qx)$gXrpn+6#Rb^dF(CulsxGd!T<8auEH8{~Sc8{_E6# z-$8VBnEe8MKlDS;4?sT{auEG6^dlh$(SPL!l)V=?i2etRv!Ne_aVqp<(Eovc9Qq09 ze?tFD?g0G1gXkxr{~dA=o%(Nx{s#_Xl!I{wjMHG84x>Db3LytED#EA~auDN8*&ajm zKX4G^92m7=REAL#24GZ!Q3XcTkb@Z2VblmYh(Y}~ME?T^G0un407h*X7r>|kqi)DS zjCwHYhaAMXkXv$*Y>Dq62KC<%{fE&AMpGDbj5aV{htU?sy)fFrh`?wM z;|>@dV040UBaEA2bcAtJ$U%%-VB8vV5QF+}Q2%`gF*?Jz8%7rx-C*1aqie`PjJsfT z4>^c&54TP9KX4F3gQ3HS!pOjg!AQc0!$^c2#7MzNhaAM9{u`qIfrA(Zj64hzh6BTb zVTT;VaA9~M2QdoVlA>&h?;yr~FrI?Z1IA-8dP0p_Z}fuE8^--G9tb&z@gR(cLJne3 z{|(Xqz(I`1VGM%N2S$GwePQ$qIfyX;#=ww+7*B9}ME?T^F`kAo48}7sUV!l|j3F=v z!+0*_AjVJ_&xahup#B@wf8Rlj;V{O)7y)A>jF(}&5^@k@6pYa!2Qgmdmb@mP#di>c z`frH-!x#r+DvUQ_ybVM3|0lti0ApgvL5#^T-U>O0LH##G{{sgxroosCV>*mkFlNA* z8FCO~HjFtT2Qk?HH>Cd`IEcaizrp^$LH##G|6weIu>!^-7@xrS5XQ$a7Q>)8|G$G6 zOJFPwIfz01H$?vf2Qk?HH>Cd$W3{Z;cM#(wWFxmh2uSCqsFl)jD%xW;Jz^oeb5wkkX z8X+GsssASX|NfPTc|OdBFl)oS5M~{i^pr>6!H=C7PfG!wBY-Qc^k}k zVBQY%QJ8nY)M0jpsln_5^B$OY!n_M+SD4*GK4NxHh~;B4!k324)Oq z5@sA`BIF}x3T8UwBPR9VWdGm45-|;!_rWw_7GPR1U6?jZC*&ih2Qwe?5mWRZ=Dmu6 zkC;7RJ_NHT%m-lhf_Z<)N6g+Z9}M}3`7m1${SSP^d<^C=n2*DJ8fG7uPr&R8a{$bK zF#Csm#2g57P{>D2(SMli|NB=W<})x~fcY%UAutESd@kf8=1`c=hkV4O{+puzfsdHO zVZH%#1k6`qz6^5|%vWHJ4EcyT8s?agkC>wWFkhF?<@<;^7UpD_<6usJ`6kTqAs;a( z!kiTH5tH|S%(tZl-$zW*f0$FrX)x!*oDTC{m@{C`hB*`FtdNhGb70O5`G_g{4|ATh z>0gPM3t+0q`!E;5`~c>{kdK%j!dx8k5tIFYQ~LjbkC^QLo78_(^dII5awW_SFjv7` z4|6rlH84Mg`I$)K|NDr!7UsH;kC@bdQ}jRZ5mWmAFgKB#6$2kJw=%Mg+)j%4!=w?I zBK|OUz*4LD2G-p$zlEg~U?;4zVD5tX2h80t_rcr)^Cy_!!Tf=Xe6JWdi20+Gm4len zf0O#}JBYa-=C3dhz&s4|Ak0G{2QiPp{3YZdCiUN>{`(GM9))!Z%wsVBhIt(337CJv z{43-jri}j|IEYF8H>v;rm56mJtV*!T!Kwi3G+5s z*2S>SfmI7uWmq*~0ai6wRbW*OIfzvqR*jH@Sk!+@^gp-~vCfCp09I{S7r?3mt8U0a zta`BOhaALW|KDQ&-**tJA*`!lT>|S0SdCychIJ{d%R&xfT@I^B$U!XXza{z~IEZyM ztX8m^!fFod8d%Lj4q~-{)iUHDR%`B=YZU_rv8ex+=s&DBusXqN3+rZB?O@#qt39j^ zAqTNK!n!HsAQtuCqW=31V%-L-8?4)5b%AvUtj-|^vF?P`HRK@HU0i#2*(%>btb1U+ z3#$ayldvMN?uDhn(qTnmWnjf%C1J&3B|;8jrC_B)4q{RNE$Y92C1M${@~});4lE0n z9dZ!Mh2@1D#A5&7V*lTF5bHizkHYE!>mgV@VLbq=7p(h34r29&^ls)tzgo5wJ$WdKuO$AqTNW!5STM5R3hPOY}c*5bF(C z@4y-hYci~HuqMD#_y5O-9K@OkYf{KTEb6~S{r4TjngVM!tf{bOz?ueYddNYnnXqPs z9K@Q#Ju_E6i|-&7_1_ZxhczG8QdkRMsq*`<7Qy-e*20j3SRcY#9C8qg`frK;2M%I= z0_#&)%V4d9wH(%pkb_vOV66^0i1iuQF8%+&K`i$FE%yH{>c1uW4{HOg9k4dS`V!VA zSX*Ijh9#5#{^uapHdxz34q{RNEz$qLK`i$FE$RQm+9~VxuSBffaE`;;1N$JX?^rA1 z4~s@%iTK0%iKPBpdts|B*#|odYd`E;VI6?2l=C3$a@ewBWmmeH!d@ zV3&t|ChQ8ZE5SY;cEymJ*k}CbCN}&3Hv9j+o7k0M*Mtq&)nHeFT{Yw;c6Hb_LT+MH z|845O|I3JdKJ2Su*M@xw>^iV7f?XGOeb^Vkt`~9>y8-MALvCVA{~vZk`9%Kph}{VG zm9Q^`eL3vQU^foAiQNSD6(KjVMgL)6r5N1TvYW!b0roYpuZ7(Vc1zgJVYdjmiQNiz z>yVq+*RdVZ|G-V`Hn4Ak-4=ES*zI7q54nkbBkYbLH?ePK3!?vlo7kNgxsALXb_wh| zV0VYz8Fp9LU0~lCaud57?7Kp4V&BbW?~yirH?bqIQ?NDIaoADVv5=eC3E0Vyo7ic# zkdYRAH?ecDm%!Fx4})#Mehjt=y9aCwb`iD>+k@@Ec0+Dr=V2E@ZemOSANGCHvhOB# zPuLH`?ghIy?E7Iq5ONdyLD&z4+{70BhyAFu;Jb=$4^3wsFc!LXkTxrsd#_VXb(v8n$y_20j*WeDeTWeZep)x3!?vlo7kVj-U|B**qdN)fW0x~CiZ67TS9JPv;S{P|37dOoBD5y z{=?ouQvdC5Vef^#6ZVg=cftM+_HNjFLT+Mz5BrCZo7mKUTl7D06MG-q+)o}*4BW&% z#K>Xt2r1$Zn?_)>|8M^eN3G%yI0e{8;V1<-2Ipef$KfdT{u53)*nh$P7xoF*e{=DZ zih+aJatR;~;!yt`>c8(G&S`MYgi{_)MK~4UoE~xzrxKhqLJs0k{~hYT?;uWPIJMva zPE9yf;8cfG6;8E~gE*Z3-T!Ufq5eD6f8Rlz^WijrQyb0&aO%LR8*&h*9-R6i2XQWx z59mn$Ke!%o8p63A&LwcJhSLbnm2lLDy&TSEa2kgk#AyQOijadi)PG0xKX4GIDV)}D zu7T46PBS>oLk{A!gwrbIAdd9^;fVeR4&vMZ=TxosQ+pbG}W^2 zAkO1(2EpkAr$3y&aQcND#2El*V8}rn>HotK{SO?(c^b|zIM2X&0nW22bF@hw~+z&*5x^^97tua5li%7;+G2 zGn_3U2XUzXj_7~jAkJ5CcEkA^&bM%O!1*TRAkI!WYKGr3zpXoaxK+~s4;;i{|KDN% z-=Y3HqW^IA!ucJ}J~+R?*$?LsoC9zUh8)B>4ChG5K^*G8Bl;gWh{OKBBmI9k$7H?! z^@#H)JSE_NF@Ay+@rOera76s!{3~=%fqMk*sc;{LTMlj-?rCtZf?FQ$`EV=1tqk{c zxM#tw2$#2g+)8S}z(?FOrL26!75#^Mj=c4K#0A`Q;Z}iL9d1>qdH>4(!tU09TQlS% zuINA9TGE2=BW`WD4dK>-dm-GqaO=ap0B*gIkGKtFOMD-3MgQSS|3CO;#JvRW6>uBD zZ46g!qzupg-+#2+%i%T&`G|WZTM+#Ze8jyP?yYc}!o30RHE^$m+YD|?xXt0V2>FQH z3U2F=kGP`$aM}O&uSDE7aBqU!7H$W)?clZ#`G|WX+>Rk1ajE|<`~UuZEw>ZgyW!pj zw;SBs;dX(02i(pfA93%5+co4PuINA9?((_(Uq;+};3nXfz>UIO^{Lq6gr z*+NP&@DW$^A1?3zxH-5*xH?=9t^wDEYr?fcKH@rX-H?yCqW^FU(x&et?!9n(!@Un~ zFStG6_6+%mdq3OaG!wN7w!PK z{owWw`G`9Z?x2v5xa|MC(*F;9#C-I|S}vxX*=r#2pIv`H+ve)PI-#fB#Cv z9S-*mxFg`c3ioBWqu{;*cVx&%+|h8ygnYym{fGOyV&Eh0Sh$nnj)OY^?wfGOhkV4H z2zOG*N8GpAg6MzXBkmNqOW;n0I}h$OxO3r7hdT@I47f8xKH|=XJ168LuIN8p_W%7~ zM%?*u7sFiucOl&O;eHVE5qA;X4?{lUQvY4i|G-DwrEu56{RHl(aF@Yd33oZ%6(JvS zSHWE!@)1|`AMP6YT)vOE>)>vNyB_WaxSzxQBIG0PM!1_oKH_d+3tOcH|Gt(h`VaR@ z@+-JM!2KHT9=JQ;?u7dd+;2lZ;_iaGJLDs-=s(==rA_~r5%)*92jTt%cOTrJ;qDFj zh`S%|fsl{5?Ekyc{||h`W&hu${=1_8aDONNfOiVqqj3L*dkpShaF4^4$$$U5ujQVA zdotuBF7@9P{SSP^lm0)va^z`>fsc3<7&)D+NQ(HwqY-!_{_xI%cLLto@CLy<2c8G7 zGQ8{H0bWCRRp6ZuuPVHA;Z=iIgNsyG3>?I(DP`p#9`)a&{`(H%)rNN=ygKme!K(}J zf{=rF_2D%LIfzI7_o)BAgLs#~y9!<-cvrwvtGFEAW$oxh$K|JceNB#G& zM7*ovwSw0aUUPWYz-tzA5U&NimLUi6TJr-+|37dL?|OLM;oSi5R(NgT-2|^Kybkc% z!D}CK5bs8K9YYS{QU5*B|KLi*>jbYWyxZV)hIc!>J3c1!YA2^7YfoH?Z!ZYCI;OQX;@l1F!`TKwW z^7S0<8CNlI5RdxriT=YY!h0Crz3_U&yANJ3cs=0t3^|B*KfDJ*4&qV&J?g*jAl@VJ z`ont^ULSam!FxR9AYNa1{X!1n4dB`b%2xRf;ynRx54D z-m~zAz#9xt{r+3#O2iuq@A;5}c+`K7`tM(fc*Eh1fj0u)NO&*9dnM!`-Y9sZLk{Ax z|L?K??>mV12E2FRjfFQE-Z*#@;JpcNe8@q(iSQ-VAut z;7t!Xh&L17tdN6vbGVnJ{~tJr_a3}8@aDl=0&hON#qbuuTL|xccprou#9IXK!;ph` z)PGO(Ke!U{mcm;N?-O_{;4Oo{ddzI@0* z@~0zTG2|e5>VIDJKX8yd`~P|A|07>n*6Ux1E`A6FXX$EeEutc zkJJYHErNUkd5yJElFxtT<@qn=JB-NlU&yD(G%3%21!G*~bI2Ew*O7OSH&|AqzuzZW`xMFN zzw+|@SLrqkMt&&r&#_jX|0-?ydE|#9FVBA=|04MkIZSebZ;H=<k3(Lb|3dzC@(og+{|cT8%)iOVcyaIGf&BZ(&qV%RCfbL#`#)k?YCN$uGzaiY#oD zZ%RGSmEVj)edM7*-Hsp68za9CnkpEJ)Gx)x~ma;$ULjD_WtvWH)9@t6x zXUA^I369V2kUxa{_sH)>{s-p#Nd83rESdgOjro0y>?aS92g}qRM*er?k1+lV`78OG z&H--bdJW>zJuk=3Qve`>W*6NTC+ zoXhxmB=x@_`d_-=!p#cgvqi`V#%}}@qh09R5m^lr}OUOp#rHa9M zQD}_9|4_J`@g^kozd-#Dw)`r_uO^$4*C+@G%PWP*{kCfbBboka z!v+6*SJ-S~!Hl?+hMB;Rp-A zkktReZ<6WzQGxnjILg{%6DTTKK8a#Q6#hoB918z1hx%VUMasofCEs`U z;%SVOCo7PrORcXAMe2X?493qS&mzy39RFA?Rz~rB6oFz56sxedDoOn>R+r3RT{Rg$ zmpqTGRi?H!iuF;f!+2ei`d_RkIld+o8!&z$c@cTB)cW6M@e&mKpx6k-ZYW-g;9F?6fb9f6Y>i3N?F$T{o+-OTunA5ssF)eY|cmvvL)GyY^@la(Z%afycxyo zQEZRm4Xma97u&MjPBQ)PsMvv#8_AC3O;XE=8&JFj#XC^EmGMsGZRG8eVL7T)CPO$E)*>kyQ3IK@op4LP`pQK{o}0|;ZhnIC1X+>Y+C}wEQ(3SQ)HUVNKUZ! z93whukfzl7icz#t?1iF(Vi84`wH}!#3zDhsSjusDFG>9`_F%cE)CQm8eiR=@@d3tr zlMj*)Nsd2$Lh%ts9wn*&MbZD#E$NHm8Wj7X_#TS=QJjL}02JRwaUk;tkx!ub3W`sv zgBiuA$fwC?s#wtzjbDxlbd$$&Ye6nnXgIp z|LPc7No5r&_991PwPuYEkN+Oyf5G@Q7{3wY*D||~r2mgs|F53wAE^IGnltjVX3g`@ z$8W;;Z5Y3q*)8N&@>i`fPuL!>{*Up$k@WxZJ2h+G-;Mtr)_xfO2O@H2cOxQ3_a`C^ zG5#+^4#4=o5vhssd${aB$_V{GQbSuX&tHn{OMO3*{vV-dTf=E+D=>L(%tT~Kq!pdJ5HzVo)ks}x%sag3yvTpfN zh_ph4{vT;U?G8G zQbalN@s)Q{Jr8rC#Egp`@2#vYTR7N3kWi@*hmC@wYqy>HiUnaa714hDf{`ClFEpr_M`2#6g7quZ?)rc?pQ{5)k1fAflH5L~_+0 zSU@B|q)4$u(*Gms|KW&^RH#oNCz6viYrH5j8Id~?xe<|D5V?ujDdf%MRILp6@m4Cg zk++j~Xx3a?BX=P(1ChI_Pb2Rkr)!Pz*vL#O_mcYKUx>^m`TJiH{rxXQ9w7DizYv*2 z^7p?Y{Qa+p{{9ytkCOcTuZaHs7a~uP`ukrDoHp!`{DR7tB>g|4 z{vTdhBHtpi8IhHUY(!)gB5M#a-B0}=k?+XwwLWZ({vVKVMEw6B zME<1s7s**xWREFO#oC9gLDnSI|Mj`knym$ED6IWqb%u2Stmd$4!)gSp4y=P<(f_S_ ztUQpcugjX_VA20A`oGnH*@l`m$H6)TR#RB?f2%RGhmlRR#<;gd|F;gOPXD*)|K>TR z)={vIg>^Kn*05TzhW>A<|HEpf?U)f{ssD%9daEt0<6yO8O?$Ef*->l4dLC7a{%_I$ ztxlRX?Ng7}fx0FCZ@@FVf0zOD@qkT<>MD2EiJr zikU%KgIPa>yqvs3v*9)jgS8pfa9BxLBVb(zYb30zVU1$tmE=|AXkE(87OZQij3LL8 z*J{?dpEV9v6xQ|B$CDA#(wcBPV^rd#>67&TaE}~VKf`iiWnp=&Ns(z%&A-~0a#ZqU zfu#RiCB|h~3t{=N=E4eK-63m-Re?1D))ZJ1VNHfL3Dyl#tZ!AM4=?@}){U@k(wAcO zvbExt*3GbPg*6q{Evid5R{dUBx52ty6?rK~TN}R<)*M)O!IJFVu%^SB2J4>i8Te8u zPld8(z?!M^Pig1*mt=8RvtZp1Yc{O=v^6<3GJ{q90ay=enH(0b1=d5bo`Cf*tjAzI z0_#!LW!3UYIoSr?fX6kK_b=9yeEAftr^5}F0@a_PK978soG)asKtEp>#?Qfe9@b~D zUV!xutQTRu2J0nQuflp6mYTn=Iy_>FVCe?y5fkbWdmYwWu-<_6rYiqCVoPAXt%|Hg zHv3sQ%kRSa7}k5RK7{o?tPlQstd_$1h;#M6)nl~`)~B#O(T`Y2JMt?7)^b?<4H0?C z;{fY(SnFVY0c#bkFJXNH>nm7aYrU9^P`6M{^h$Y9k`6afRWIf9e*l zzDM5Xz*+-qtv(e^zQiQr+rPkCF9EC#uzrNK5!Mfy+HjS&v+-G2KWUlVSJ4{ve^{IJ zaIN7L%G!eHKCrgJk}3VKu(re6rr8xcSgHOG%f$45YnNuj(fS9hJ+OAOhW>BS|1I_Z z@IImSkH+TxOSA@}br7wI=zfUO|7F9Z{b((6fARpbwlKW+9<7Tg5T*Y|O}+X*q6cYB z*aH1OO8<|l|0CK+vt~P^ha&bKqKy%gwI7D)3`CnCdOe~|5$%p>GenO>l>Q%8{}1nn zM4Kbp8PTKI+R-HaKT7|Ps{iYti?$+LlWj5Iq^up@{Zmmi`~5|3~TnQT2aBPnQM}?M?PU^a2KF zAj-SP(KGq-Eb?sf9P(W9Jo0?9AK9NAAk-tTEni4pL|#l@LS9NEBZd0NEZvtY5gmgl{XeSykLcB;`hVDCqxAo%`ah!Ak>fOL<^$33 zhz5v85KSR!A!;M4^M6F?|55sXRQ*4EpBqgw>yR#~{;#J=mr5gAKvex7(JYxG)&HwK zll~v2|3}Nr`kFP@rf3DxTM(Uq=#7X@WOfp%mjFa3?^Ssdl_})SbH}3kaucLI7aTKGL5{4oUU1O_b)mV(U%dGe)}Y%vk;ww=xo;9N8V39Kt3o8ul3P~ z5Pclchp9h8K1x2OHR7nc7f)zxeoZy{6ru|eeHzjEh|Xp98FC)^tX76wyFg>^9aGOC z`aFXd$QQ|%gw=EL3ZlyqeHGDn5nY7nn}{xE&1>ZAx6ZSoz>n%P%W z?BXLt->3co`60PfYs`DD=*Lu+k)M#CYBp?P1)_Tp{S48s5&fLmFUT*+ue5TP>DAv* z`IcO%x6z`jNWIaG=xXvi@_TX(xt3fdD%^ z`2Ti9w=({f+_qQtH!3^GovO>e>r(vv-{>Ez=*!)R{>k7kQa%^@Z~OlswjW~q=-$O@ zkTuD@{69wjkJ0~Q^#2(B-;A_o&mQSVIB|6}U^;fRQJLu>$I-4Qzj zu^xz>hS`nF&R`;tfV&@{J^MAz7BF`qz(HisKCw3kc z_R?5C#{D&GuI8}|5W5_)3lX~vv5T0!n7o9%R4dI`jt!(Th#X7~(QJ5RuAnlMr2oh0 z|FIET6CUSLh~0wNm58Mfy9%)gVxtke7BTvN>>4gRh8(L)ng80yuA?%Jyq+Ad*>I~Y z#B9Xq|FIaeaWbJb;Sr$!$LRktmswA<=I(ARjaUV-3}QvZvdq%|W9t8i6|^$k{t}fk zss4{xpxHI%_)kFWM#LskpG4CCW0Uu)xrzD|lKvmt%l~7yBK8nsw;?tivD*=wh8X=n zrv8uEUF6-u>b|T0hdvgYf!KYB&1B8JgTwg55ue{3ErpC#vOO?ZwLQhAPio_v9%|HodE zGQ?gcUm;&57m+^N~HKmU%H9G^d^?MhAu zWNXcuBNIOs@iO9V5$}(9JH$I7-X8Ieh^zmHXERR!kE{P9egb)-X3d$3cSgKB;`IM` z7iPPX-Lxh=o;|40|KmLwpF*BWo<{Z}>Hl&1e_Z_^@iWN2B>g8&|Bs(dG?jn8x;+G#VsIsS6**eS;A-+3#K$lgYjoKF#IG|k;^Pp%p4stagtW*g86)Fl zg0#sb=?Ha?bn`sKbBL$7{b@2oW`)(grvJwa)QhD0f3=7Bh|fbjK>T6ED~R8Z_ypF_ z|KpPopDM>0@f#4I%-}}yCUOemH|yIa8DfT7c?(mwB7Pf#+sQk~JITAqyUA(fJ>+z9 z204?wmz+h;CiVWm{)r#P>HqNuxwUi1hxXd9M-YD!ar%Fp{vW6R$Las(PH$ZOA921f zh|gvGjJ9CrGWA*=V zUKC%B_*aOpp#B;8Ir#9kJJC-^#5>we`fXHRcE>+E6)`Y)iJ&Y`6^_km!a) zMCEg&WEZllu(~DPkvJ8J9@I}Jdy=PUP1pkcKhcXi{XfxL zv(oGIT%3W#LhcnLUR*SL?&$qyCRXKe9hLK(ppuK;l9qE<=L; zpP>II)c=vVRBOT(22vSB(*F}fB$mhBQ@H|(G7>|P$RRO|%5ZW7Ig%VjUP)d>jwY{0 zB8J2@67%I4ax8f*64x;pCuDFv6633J1PQAeN5i>UBF?e|X_Lunje~?s#UoQyJ&i=B z8fUBR(Ek$!Ru;*U)|eSW!bf5f5&`uJIf0z0HQ^b&L1XiOx5SOGrTg84#M?+rLE=p$ zZbsrYB&H(qDiXIK@hlRzA~6?<+mLt!iQAEwiNqa9+=IlONK8ZGF1CNSw#hzFJulO# z&-hnI;$9@~Lt+;7*{X-zb3YPuka&Q)`oH|(2;+yyhlSPN^(YcgAn_P=^?&nOXufvJjNc~Sfqf(r?;`OD67MnlJ`zij_<-?;TFE&)Uw(wd#|+f} z!#iDxPmx%M#BwA)M`8uDpJ_I1{|h9(M&e8AU#T8C!#7BLkHoh~$Z=5rM`D#`&8LPE ztEqgqS3Uhdu~rrHS=_{WB=#V&0f}u$Y((N`B!1vh>i&)Gb^xbQQ2P=^B+CCHtc$^>rk(&y4+CGr4A(Pt73Yl4cLug9}K$@Z2G^g z{vVD+`w-S2s){)R_F=G_!EQpmsp{q|*oRX&LKT@=>AISeN2y|F1$GO#vZ7;<{1J9b z*uTPV1-k&dHSEE#+raJ$`&ih=!)^<^1MGHep}n?X&XnDe%5kd5Z?EWDPJrDRw)#Kp zPO6(b5B5n^x~LNFX*bxX!R`*bC+r@~s{e=Q%U1t~ed=CHFW8sCKAn1RvX5qE;$fdb z_9f3G&w_n6gL8xo&Lz(y&nNql{b3JaZ~=KCc@cRrc?o%`Q2*qAYBv4fR{yV_g(0xV z!M+^!XxLZ49tC?Sw{RFaTq|W}Ymb0EQg=|!oxY_1+v@+-b96QAv9PbICu(Pm}uv4%d*dA>4f88UYxwCDjxfK21 z{5Q?cQORq~`j(7~uouEE!M+`K8TJjZeb^IV2h6JfS1Z;3VNX)UxRyN`_ARh)q<#}Q zg}hn11njBo7=0PvO8qvW*+STNz_xC&fc-LT^?%qeX^puG*y{hVUsWX>Yl~sO5BoLPV(hQO zehaqxKkPTPCfo+~f7oxUVjRqVmx}s-b!2@&Mg1T4Qt~5G{htSa8Ek(4%hvCI!Cp?T zAoc&YusR!k&+zk5{R&G)~92Z-tY*i&(b{mrC!QPG}VE=~X zKCpMd{tNa_*nhz0MZx}E>%(5E{tx?4RoEt9{tbH%gMU<)-|>-}WDO*1BUuy4T1cw@ zBe|bu%}g?>{*UAVs+g-%vJR35B3YMuJ=Kj9ChJo_m1ZPa?aJUCC}_cd`ePJsF(* zzxx2mQ%sEHX-M`)vKO~R{XhH+PqGh^XCiq9^}ec`-}_6Rh2*(No=yE6)j6i5eJbZ8 z`96~UkQ|I;e;Pj!-3RVHA?1k);18>Ho%WlUK8n{+}G9_43WB$e z9Fo^F7+=*RNQ(cPnkZ8-GLEFo|78)IObQt|NQ(cP*h4Z^jnhbq|4V(A6#ti4{9jlg zi=@o|MJba$8Ia=tqE8?vl9R|A$jPMmztr4BP9bk5r;@jjx02%jQh7Uh2YDwc{x7=t zzfk;Ncn>+9oI%bc?1iDES!qIQazmB>5EiG&z@i zhMY$}ON#%?dKZuj$>+%D$rniRf2k4w7rsosLW=*3vWQ$vzDB-IzCpf8zC|t}-zMK7 z-zDD@s@ZC5A0YV+k{=?u9Lc3fE<^Go_PUR?zsUto`|2m;r>YoVO|C%l3nV|I{<-QL zO?>$!l3y|ST6Oas>g2abu0e7olBbJCNLhq!|8IF7>M}#TgEg+o}AfO6ZC^ zk^BQm`hW6w)y)hixto=LsuGUYzv1kMf!M@ z8P2J2dQv|{_3#LsMy1zYmA&B%fzt=hKsaYGYmVocjL(vj4u|u9N9X@=IQe%t`FA+^ zcR2ZX`ZLSz!}-6%`M<;Yzr*>zqw{|_mkD)iH6Fxu4c4s+kICh5hQYal`cT!w zqdJ_*2vy9i%oznI0q06M*TT69&NXmGv*v2836I7YDq~d%+qn)-6wWv}5jf)i(l^Ba z|6RNI|G&$|n2oFQx!Fz|P6kdAjt9qK*4?WcaMnF41boXKz|vHk|F5BE#_U)mJ^uZ}P0W;kN(B2I-P{x89; zB)!NH{}<&BpEz0O%i<&(XX<#2w5vjWZUQvDy!H>#K!ud@=)YB;N?|KDDf^nZu`A9~SRIAZMU;B17W{tst^P<|Ac zvHCw8b-(J75&z!|=NIamR1eSf7Ajj+G4AbbgIfd6b~wA?{03(ioE@y$xmS()Kb${Q zG1ndEPdIzv{6+omy(;PdF8$wpmcXqEw+`HW;qDK2KdpCbX}uXQuKGXR+Nzji;?{** zA8tMB2dZw)wR;d1s1h#Q0I5xI8^WCjw-MY3+(Y1=5BE^Ga_gos+-7hO<5Eq?rn;;d zmG0qio5MYV`jNu$Q#7vnKis3W(u{QX7`W}=wuIXTZYyTh|EpVdES0vZnCqR}o=OL@ zBY7NoJlr0#6x!c2`~QPziO}li~Jca0+>9RX>d{ zd%-=OL2t4Tc?Q{+Jd-?&Jexd+JeNFAsP8v*Mg8E8fZHGLV7LR|UIzC9xEI5{ko$6x zP(I_z_!9C`Rm``!-GNjFsbWU1I|S}fxR+B`|Cb+iWju@=u8O(hyCdO_fjbKBXt-B0 zdzEI*mEBeUhkK1G#@XDlaL2*Dmil$7hwae+-SMiJZ$Y{i+?(M>;TGV=;CgW5aFcKo zT-Me~Ge%tczw4?JZhs1H7H*oA8P(0$adTAidsPuWabbrmWTgbnxO z^~;?E_eQukP@k-o;eM(A!=0i^xUQ*iAAoxc+!=6hg*y%IZE){|OaFK2|8n|tDf+*A z_g>51Lw&j`;g-yVI~%S!gR@jO_a|NYzk9zbVQUYIt|{!+nzaQ>usKTIT;!|BNc(NO=~igW=AH_bc25aNmTx5bi5*pM(1%+~--p zm;bvjQKA2b$K+MGufbhJo&F!{uT!D_hkNlB+>hWcf%^g6x0zM{hx;!1o_?<0eP1W% zGN;n`L+VR~)gJXRyv=ZzQCI(m`zg6xh9}$=@Z>0c1}_I!e*y;X7vz`ZSEPOg0IvT2 zJKS%{mGFAQT?J1pOB&n*cQxECaKD4Qkpo4H%z{tj0T`wqCy^)iPb9-1~L^fma{iK3d?_fOi1An(*{n5AgQY zGTDBw7QFrcxA8K&@M^=W3y;75B5T*;dhiZpkJ1mW>sq{nr~_U@1_#4ypsBFUMidXx z!xAcu;kAW#7`(&bHDR_X*~}C$J_6p+@Q!5MTy1Z(rSt>;UORYQ;I)T$JiHECtYsbH9jCF`FjY=~cOtyb%yyC=;AU`=)`W3a zc&Eba22bzy!0S%-&;q%wJipHvpb~l|cUBUAWi2Tnz7$s;*xFU^@fh zT@7y#ykYPL!@HbI4biiyi|gnA;SDv#jEBR!65a@Sqxf>LU zkXcg+FVB|+vPhQ5GU<~6Ss^Eo6Uj;N9)NcPyu0B|hIcEx8{ypy?~Rl6;CZBYG~p zHSnIHGLL+goKG$w7s6W!?>TrM!h0UxTku|hw+P;g@Lp!YOG2*Y6?m^|ES*a3km&JQ z4DWS#uj%2ED~>8}zL15eFgR}psaRr*pl z`2XOoX7F8A`CbD(J8P-0BiEA~NM0tq9~l2g{zRIyZ-&n%QS=m46W$(pe=+`Bb#qPkIR8&^{%@32 zO{D4|wJ%cpBekE_r)p`vxl*S%|4-Fc#k8ENi&TB2>akMSRjuUwKLu6fglao7|DS?X zL!`PO)d;C(NF9RIVMrayY~#HuIsZ>JRV7^S;Yf8t>IhaINj4`r|4-@sAE_4PF?!rm zElIruAk~^|BV=$aQf;eoJEYoERR2e+BY7NoJb40nqEH%V+?i`RNne_oYN{(z6OihL zl#f(*W_yq)lRc3dfYd2S^_RIKQl}zynob%u?uFFp40@A&$TP^kLI!6dbryrOtI9b@ zolE6B@_e$NW@Th?DH$e6T|oUp@*?tLq@qY&g48IaE~RoAIglJg4n}GiQbQPDPF{f& z&EK>vu9X^2eFQmDs0W8xq^?Bjs%ktMsjFFY4N})3HHPt6@>;Et0~jtf4yo&@k0&Ff zrCFKX>4A!oaWbL0iZ)V7r1D5PNTrc-DSBi|Yovc_S%%D#In{ZTkSb6qk|naNSs7)z zRKRnm^Z#%@oSKN#WTYlh*ZIF%nf5xqqfgzWiuo>f>Sm@D=YQ> zPk65~rSpHJ^fpm=4=r^!QePo8jXLN5sp*Vokb3_IDbD{>vn1xr*+_BzpVIk1QV)<1 zl5>z+hSWny%}45Cq&U4#J;D^<0;C>8>T!8VD zFTWu5 zU%(8$CchDe?=({@ky?w?Dx|(c$~3rIv!O?Q&-yicDeI7uzO3zr=WKD8kazC;bxj%UTS(~gw)+Or+-T?=?o6IUb|Je8bzd~w9qGPE_h5W7*^@klJe53+>_whV_9pv~X9#t_w6!zIv&gf_ zbI5ba^T_kbeq?`g0C|B>?~ZCa7x8FZEUcb|OOd_`>C2EFiu6FFhaf$OHG{P#JgS#d zxk42)64S$w9*OjD>LXN_Rp|L0MP9j=G8*Y|NMDWgSfn{8NsrO27_8P`OY;6txUTDw zwvZlAJ))Ii--uF)sbc0Q=>*cxAZ;T(3+W`%cO&f}eFxHJOFY)6$TZS9q%%lobzUSZ zl0OMPyawq!(uHbVq*5Zwq)!H91?dS$--z@?q;H@yN&l-Dwli6S6+4i=iK!`7{br=6 zR^wZczLi;B3hCQbU$KL+`ajZl>E4C=I}Pa>NYnq*(^U_T82vx3{vTd1(zB6%4C(uj zeh_K;fBFH<8ZS!ELHc2&_5M$_Wtx9l&A(cs{*SbpKhnHFq@QA}{*ScY|EX5aLzi^ZHUPAhHq+dpQ5z_SkH2vS)XHG9>z50Lk%)Wv25~OMV z>9Hlf^e|R+1|B=@F zKh++)0_iW1R{uv@&A-~`zohb&Dq(;72I=pS{uXJeT*>Sz&6<1KY4v}kzf;Bhe=xlU z=^v0@OMM+l|4-{JAfz|y>5zAD8vn?wj)>|x`URQVNN+;=H>Ab?#qhVVW~)J@){MbS4P^F5rl#td zeM!#$GqtqF{7*J>fX3!dd!`OD2P0D#nfl1oW4&HCtF3YVpHcr0_b$@_nM07F|7Ym` z=H73H{-0^AmFAddnjq61nWo6JMWz`tEs!}JndZnG!L_LWhkYY+6qTb@G5>kb9D_`2 zWa$5yR;rs3lxf4tV^uL@Ez=H}6On0;%yGzcV78-X!=rILl@nA6x3d#6U6AQa{Up`H zHFl-aO%-#GJ<|i35y+g3%xO&ZMCKF*r)o{O_Fl*gMdozsy~#c#@Be3b|3Aa~{~6x@ z&+z_#hWGz7y#Jrk`~S$CPxd4GlLN>L$P1Af#NZ-iE@p5EGM6z3@Bc6!sP`zewZY^N z@^bPDq58jOhj9ys3suy9G7_0F$c#c}G&1V{$Xun_@Q7VaMg2c~!a!y$GUJe;|7Z5{ z|IGEQ9Iut;T9dJG=j+Hsal=exVkjSvOdN$;$Rv>c02v$EmdGTLc?}r{nHk8q$lQR8 zhm4O*3Yk1IX||amvt&-&f0xdaDNrerC9Ey&zR{U&k> zc{4dxSgpJjnY)nD`9CtZlXsBn|J7b}H-O^9(XivgRq0{-2pEaro4Z%slEk|3_v% zxj?h#>YsTInU|5F|7XSN6^ODw>PY7h_|Cv{rT}0|xsE&6z(d&?T1DQ{dc@vqB zka-IkG5IB|e4AANN9J8!%D8&weJUT2ACgP=%6?2`nJVFSeu~UWWR@fIB{D0RrT=Ht z|B?AZE6pd~GwT1yd`*5seyiEg_f{dZ2ATh(zMA}w{9bE5AH-Pwzv`Lmk(IHt0a-EF zjmZ3k%nz)g|7Y|KDKbBkzmS{A&EytxEBPzAjoeQDM(!YYlDmWqekcDRcawi=Z`5`D z&9(0#|50Z55r+RM&elZs0A%U^+5MQUMeeUP=E!GjQ>jDNCF^O{9OrC(WSby+5VDPs zRsTo!V6p+J{vRI6>>*U>|JlZj57VsapV_9!Hb=G@^~1>{$RoAJT>G*|Q8}7yLF)WJ zeAaii6|xy*TO)fhvTcye>hvto``H$WIIu( z|7X?zk?o>2riW*{QRzjNXkLnk)4*FFr{E0G<}ni1qka+KDXPZ4M7|KS{Mj) z$lic#0oefAA}dRz`aiP1E*0*3g~|kSB1!)@Pm<40rb7SE-o$tcd9yIQ0%mVPb_TMy zB6}CIw=sJ=c?Wr?R)+oOZYtBrd&udUHP2Sc&P4WpWbdUui=0i~r#0c$s{bSVAUTJ8 zh=Uecl6;DMTI<6$pP@qk&pyj|{$AOI$i9T^ zbJU+FUm#!9n((~5yjT1xvP+O%gzTHhE@tIxwxK;H3>}PC;{-6Cq zvu56s{R-Jt$kP9_^#82-Ke8*e#>|AXQY^}9@;mZ-&4xXHEwY=DU5D(C$gXF01G$m> zK`YIt0kc0*`I$81SNFPl9JV0)8?sxO{gvECZr2)f|2eyZ%1&|@`MYM#Cy}zdk!yhL zpUCZx>|e;$K=yCe>>>YA=JwHgbL4Y1snGv(^#5Ef&6@qn9e~_{$kk>|9kMQ2k2UO{ zx%yNNBI*A*_5bkL<{Bb*JaUbYYlqw+tT~iyOdduyA)Cr23AtwE;p7qIkz{l7DDr5s z1$hkFl59n`Cfkt5BG*;|X{83W^^iw~WCj@8klZ}zJ)BkhdF{b~AXKgK&b>w<-gRpwU zen4&$az9f4iTs(=(HGvU$!*p+9HCp0+sT4ok=w>#JNX;ALm1Bea=VcG3%TE^|3U61 z|749Bzv};0KmP~$gOJ|``F)YEp_O^{|1g{15BWOC*P^~Zc>q~kYs}0oUzbWf@<3Ak zKb$e%sr|3)RpYl17{An7i*bDj7k?*Z9UwK2H8LQ$M$e)XR zU&d!5e>U=GX@UI7=e6?Zgt7dGH-8>$&L`#JKmYFL04f)d7m^o|7n7F=^-n*PBCER$ z`GLsG?Qw|*AwL*-`AVyVEkKMwiv$X~Bz^0)a;{B&c#MpzD1TeN zK;EX3Bpu{^gx`CF0Ko`$?U|HmkI=!b<=k>~#yt{1{AM*77`~y{;mw@~n*U2}?H_5liCFI-WJ3{^2x*GZSsJu^pKz>LrB|joR7BX0d{3q4;Q{!1^KO2{Z}g6$nD7gR@HY<*-7p~{`ac>hX#7Y z{zO4c{x5nj=l}UVjCKAWx_yEEUr_%?VPA4T&6@Y%h5b>y289DqcngKvC?rs*gF;^v z>Y~sBg?cD7M&Upd8la&5j{@ia1i@bWs?+}qjTm$OUpQ2==I%k^FcgkJp$W51 z$!6r?T4UyQg(ImnCyyeJ)~uNu6plgRI22l<&=!SO%(f=mkjHAJxhGI)N2NX4f$XSR zUcveDcoaDQFPzAioygAQNn{s&2T|xsb|br!J;;;Ep5!UyspM&7FY&i@NK|3~3M&6?S7;bIg9p>PTH zOUcW~fm#zDy}?w5ke8EJXx7YX3d2wsi^6aeu0ml1vm;5){|i^{RXLja)#Nqg7|m|h z^N7N=C`3@Wj`2A1dUCw5x-OmnqYx!yWL&f6zhDI$g?mv*qHqHW4hkg{Toke>==>jr z6qzP7x|DezQOHrrlLfMepa*nXN#)qjqLOx19rdd9}i!Yx*;YkKhkx!Fzh2b2pFb{;iHj`J7gUd-{UL=ALIkhQ?wPUS`cJ+ zjl$>5a{gc7{J-!OD~%t1!|b=@N^+HELoZs5!a5Ybqy9a)hSd3gbsyJL*+6b2f6#0= zDt|(;1`0o;uoHz}Q1}&vO|02WZXvg7y?OUk*hXbL`5U=Iv*tc_VHXO2q3}EPKgiwW zpIT$?;S~O+vWNUfS=>jn=B{S3CW^IDr2iMy|52<(?oS?|mFAsMu?~s{p;(uCJ@P=Z zzSfw%D}u_wB`wL&hCQU%lgcUNspM&zHRqyuI*J#d*c-*ZDE49Y49yxh zE}n_vc_^Mm{cQ3aQvE;dUB&aM^dtL|12h{R{|iyP0>z6^9Ejq@%$g%W|1YZlSGRKz zvxCVYTpWXv?8{gb*P(bVinCC> z4#g~r<4|-^ydK3EisQLdgtW-0wh*=-r;;FTGO5|{NV-%!GDW7zjIi2sawtwhF^{5; zVu9HrSt83?X`H7RP@(@9CorCT%#XUKWvvzj&kAuTRI@oN+p zqWBq#>i;M{PriWSaui>bjYN?j{?~xt1t`9PBEJHl$|4jOv*tDOb=@h|-$3zA6hA~! zKm3W}lB)hTitkW)7sdA(yr(H$FTVmHeiF8@l-ZBSkI7{uzY9?0R{&%$wDA?{LK@Kj zi(jxc`hW2&iK{)~8x&WgNdGU=|BI_wDF?Ia$wm5q@q6m@|KeKBnpsD2JxT|nxB^g?TiG3P16})x zD0M}t6St}}c@o)0TQJwnQa38y$sXj%nl+=TbP7tnP@?~rPTNaA9i=l->dpE-r20Qf zeYGY$p7j3`{l7&2FVX+Qmd{7&Zj}0=6hWy!N<&c^fYLyeEElTSD zC|yI2A;)Ts85gDNsEi}8C)NMWc|plSX#z@7lrkvAP;yX;vnD~(|4a1$@F=;|Ju*eA z|5w+QMX7{Rj(VOfkm~={b5y3{lL4vzAC9%sM3inqX%b44QMy5O^U0jjjeFHhLFqP> z=>MguY~dF2R;>xQ^L8qCkav=IX*L`S(@^>crF&3%8l~wdJ&4i_lxCqcla=>sr5XFB z*;MW$?h9Hj*)EkS9aYz#_r|3@e{e}pfPFOqWqM-;jLQ-i@PD9QaF6E8w(F-5um zBQsv);$QIh*VCi@Ob?=mI#e~j`zN^<{4isk-~Q11T-<^GS! z$}J#yxr~%sKoWmSE+&p9} zd>G0#P(BdlnkXNDvid*D`;oOs`oDRXSEm1$>HlT=f0_Powx?Vl<%TF9#HB#e|H};| z4*yS4ZbbbMlKx+AtXXqCDmOv7CCW`vZjLhN|K-D3c?5Z+R+@fZK8niGWDD{b&4ydj z3gvbvx2E2PRL@7bt=5?NL%BVb4rE92IL(?-P(A?@K1caP_%l%Mgz{%7cSiX}lutsr zAIe=&?uBw!lutpq8<(a3m+Ajy^?#Ig{$JgmQ>oDZ%{;SwI?88J?2U3C2K4{3`ajBN z3eB>7c{a-Q|FZf&%IA^iYmIT;a(|RHlT=zj@bO&a#CZN&hda z|5wjT3FQeWmzkyim+AlIiq?c$MQ`mKaKJflIbuqdXhs8Pw_j<$D>=(i-zwud@1obsHW) z`B4@;i1Hi;50MX(j|i)kk5Qrjm!Duv|1Z=3!!bS=!tgyvc`?fGqx>4mOHh8D**C~H$+xsJJhpFBd53(L zd{47x7E%5H~H{ zq5Lh%U$gQXtqiwhCCcBUyo$Q)h@7?6s6*Ysq!wdd-GgyAggplz)J~KgvHc z`xE&y`3t#8sF#WIW|X(c6cpvH4@+8voZuny9f1>;k z%6~EYH_ChT*)=i@!! zky>xgh)@6b>Hj|c-#JeF*$HDL?wsdOMalE-P*JbTkW0e(;T z;{RRYcVf0Pc@o)0E6ugWr~mu(f1m#EtN(}2?4JU^H~dq%)M;cd@^q~+J;$g2`)5$^ zOP;COu>G^)JMhneKLY-_@Gpgb9{da7pU=vEWPfsiE)^b6`oDh>^^3_%G;4ake;NGC z;SZ!fh#X7~(VB3puAnlM97Yb;ta;btkAy!C{wVm@z`v5&tH{yh)mj<0Glt4o@>=pb z&6;uHUk^V9e?0XFX_4yxp#%GIDhbjilY3=d_&3A%;QR1X@bmE1|KVrIESb}Ka}UHX zP$`lnvaH##R|N2HfM20Lft*NA(i-E>{$wgQk~fi4G;7`$_*3EE37`J&)BpY3SaUmh zhgOEYl>YD2|9$m;`1g?0wZ{Cf%Abh|-QnMh%8&48p|S}6Z20rx-v|Fu`1iwq5dH&N zANH0xY~dmDVe%2puH4S}G5Alzf1L3X&hVm~bolxx4EQg@{}}!&@ZW>~D*QL#%f`P3f3a?=xQ)E;_Fvb_nZ)uW zAOB7G{N}I5OQ^g}z61YVJz`QR$6vGh{2%xqkROsu$&ZBkqzIuFEF(W5KZU;>73uaX z`0_IZU&H?#!3g+YAdu1YC4z?Vzk>f8d`bNP{~P$S`zZL#A_`hmv@+Z%`(EZx3u^!x6gzbdABm2pVXcvbtq0q!>XX1f3Ba zf}kaWLlGQ-pfQ4`2o6KgL@T9PS(p4ia?lLH;i_og`=!AOAHk6bjz-WN!BOF1=O!U& zf#8@>kq@`%dRrmrfS@&kwg}oFI99h)8j)`R$@d_Fb_m)xSieveX+gKDBZ3nU9EX5E zkS*u*8D4*b6A^R@dz5@;Lt8!xL2m?I5cEXQ6+w3d-LxG!<7;Oi=z-wmuvz{_HiAfrVf^0x|!+Mokb!5Yz3EWzDDw5(rWVYy>WXBm(DuqefPt+w6s-CP*X5BFN~f z<L@*h_Bm_77chua7;3n;> zQYn8r3Z!e@iC`*%+YsD>KyUts`>vzrb_DtqpuI-TT?p<$a5sW!I%=em@Z3#DFhgJd zZ`9n2;1vY35IluoHiCx{+=t*n1otC&AY3pUHFFR=q{{zB%_9gNNAM_u$No1)^jtiF z;7N4=DGo=CoYsX1<|2^M_Y8u0{~a~+5iI!csCf>-iwK@a@PalXqejMvOd5li5WM`~ zQS&N-4-hOu@D_r_2;^wIhTwHQK5J*_UWbSJO*1+WEJ5%tg0~U8!+q&%Mg)TQ5WLTs z1G|cj1^R!m6u~kCA0hZyv(lja$+sQ?z4@apga>xH#0Yo^2=oaI2tFsjKp_7Al~$S) zs{P~}roKgG0D_gMh(WDF@CSnbL$C?KY6Ke)e1~8yg6|Qm(Phoh)?>R4!TSI9^Nk38 zLhu8EAOG9We@4J-mTY0z&o?9Z4Z#)!+YoF;@azBA&$n0m`3?lT5UAtnU)axo*I2iI zH!8Ie{E12p1b-p;2Z3zZ9?hD5{>@@k_R*K-;8$v*QVW%RQQ7Z5{k*b2DhHSYsKwIH zD|Jvg7?rxH)JLTrDhG!BTy|gjdF3Efp!NS=9V!h_IRur4s5JUdKd&5$N@H#F-+o?c zf=V}3nxfJcm1d~4K;>{$nxk?ADo1LiG;8{Kd8G|1 z$Ns0ESK6U+0xIoM=_oCr(jmMqRE|SMAN~`rNL;aUA}S}L(g_uP_~-w6c%=&}UH{X= zE8S5!8HkI`=|5TjfgfDsnV=HF*s=h8#;?OI}BgL*;q~ z<59T}l?W;UDi$izU=)=EDly5jAg&k0Ft$-iqT+<(DBKYbl^iN5R5GZfwK6=yS+kUU zdfvBku~#BPyqyK825c0sWK3lkMg$^cst5&jkm78qEF z`akbIvp?~=zU#iu_q^|%nK|doGiPUKXWSn>XfwTzQR;Y59i!D@4}Z2*yV2<8S{)Cm zgZ2KqJ!4#gIv$0OId<>S!Ct%h|1;`f{@=m;zk~UI$J2HshMz7wo@IoLgIxdVc+R5X zr=AXHJ8mleqB>qt$4ly%ppKU<>bAtj)kHW6PKHw)qx&v8URB2%>Ua(PbvPAHbBum} z(P7tr)bSR48@^-F@N;p;d+Kn}_to){IzAve9exOBSZ4T1r(-6{$8Z*$y+rgAb<9zR zUH?(XXOQbZ9bZ_Ed&RBkU&628TsY6MUH>$6|H-t&YEz(EqV$Y$-^~$2wUw zywfb!MX}`->q>MPxGc2mKam5(RzO)1;t8>pE$U7#R=mJ{|@Y-99Za1+>jiRfmExl8(+ zE4HO#TbLfUPpl7_Tfwd2HWqcyX|b)^PO+U8+n(|ca7Vb4V|%^3SlJy-mcN@~NyTbM*x?92s{)X z1`l^^ul-2Hj#um`^rIoye`3c{KF%_u+D=gH6vg_Zp9oKaCtFT9_F|`^aQ!F7^`F=o z77ef4#LiUgTE)&%Y>;ASD|WtO=a7FcJP!`E{Ai6Apm6;sb`j-^mxx}X*p-U8j{t5T zFN2rED=a7K-@zzX!K>jl7L8i|I>l~L?0WPY;Ej;$KQXTVMEiBCVnY?<`cLe3a)!V= z9HZYN#X3-8Fb)%r(No-GDa9UCEUj2ev5aD#Vp+vXisi`6LmVJhbmex7mC-A(3TqY( zf9D(XQR=V(1K4zIx8X3w?owW=G<=p$Y?5NHD>fP3{9mzG;H&U8$LMSlo2uB`ikbf__6B?tzGXSl zzQ2R=E_@HZZ_#L6O;=(U#XeNLq1X(?4^ZqQ#hr1@RP1ZTK341t#bzny>Yr^(g- z@y@V|WArP<_%e#GsQ9wz%faQL`F}LFLt^v*eqaKOl|M7Lu*M;j@G<2SLPsMvFz5)7%a3i>}<%Bbk_$Da5;ihmii-uz_ zzJ=mDDZZuR+bWL#$MOI8)?{w8MCNuV_Z`1gsAvl zaBsK|+}E+&KV1~xPx1X-x%-|I__wd(gB3qe@zWIVr}#07AEfx__2zgsQ7W{$HNm~f6EDfe-S?k#r$9KQ{br<4ZmNGpRV`?il3qQ zIf@S;dL}#zo^6@ou@=YwKH~jpEl*2&4Fa{07VaDI7&NDSo@+=KqS{0&j)4Sx)%PRD1}^ z9dIb@uxPYLam7oDClt>ro+O%rX_&Fh(6!<@lsqiJqD4cWiI)}k703VMRiZWMSx)F1 zar6J^EE5kD|61{;;*%9`DgKD!!xYEfS!I|)5%Zz*s{}0c(@lO<=qd5K_|BTGf z;TM)4Z3+G#$N%GViO#cV7ZQ*v76ONMv{-4+peJ8lHMWemjRf)w)?52dL#O_KAQeqD!4pm}LB@R+zFD3R@ zVsDn(2kr~^vl>DdN*sXF7aj=vSv0C2|4$rZO0;)}DRGt(hm(o_Cyu0i6g(R8{;ve@ z|4P{VzwGjC;&>%^|Cg2fD{*35KS_y`NjL?b3QvQl!!zIjc&4MZo>g+T66Y&%4r@FY zo(Bgy+QkQJ`3vBM@FIAzV>F*kT%yG7N?fYM^-5f(#8paMPRViQATl4pAbn#2reclo(1*2aLfuOu(c~|J*kG z{IwEklnl(moMSY{NEDPPDN!^f8b4)n@c%@Wa?PUQohk`miSbI*l^Cf+Lx~Ye1WL4& zXj)Fxw$c_y&9vzU4^aZ7aBI-HCTu7XMGY zPx%AK=rc>=LnS^}Vulj4mB9ZKGs!XkS7MfBhV%A>GYzMF0zZZ3|Lu|ag%ZChF$eui zi2o<%Ql1CDc8@?&;v4ua{0@E(=fef?2lylW3H}Th!e1OI{A!KmH0==Rg_#x$z?1pxwMjAoBx$+WaDY=f4t17v=lHJJc4tv1WEHk`AHHrTx@&BaxzmjWPG(0OM@&Baxe>9eo zJ(b*6$qkg;Ovw$E+*nET|LA^+WG`yi1onoTS~S|i&6V6*N&G*#CDA@`E6WMTYSR3_ zoxh!uyD7Q7k~=E7gX!VfKe-c2?F@H;yIM4y2PSt{avvr4K;IMY1OWA)K}z;h@&qLhQu0tG4<_dj%ZXa%FeQ&x@^JJcApV~;|8KA581!S|aqxJH zhK`i%ujE-uo~Yz$N}fdYWOxcZ)iR@XosMz_901R>Xn1Z)o~`8hN}hv$E<6toTq5TJ zlnWvLpS;+j;d8%}mnfN1@=_&-DtQ?>_iI84B#WAq%+WLn9Zk{Kn7O5*=X^M57t zuwa?dh$^9!VFjB1M}Cs@P<&X24H!7K+rOo}ThTCOZc=i%QVW#4Q>o*Wyi3XXN{&$S z4JGeZa;%c~DEXk0_bPe6lJ_l9!$|5J1xG{k|8@^Pq~v2tn*S^L2*m%B=Kt-zcpUu+ z_#`y{XByy^dRoZ|N$pEWLn&|0nVPr1^h)EfbY|Rmn-@Oomh7 zE0z;}gOGd;<#jj}PP1rK|C>shu`Br&d|SzPD7*{bgYP@G_kFsO^AJB&at4Ku;7s^2 zoCRmQMU=D!mHY&L3O|FN!!O_*_$B1|&q<#D?2Z@rtD@xB)bAM}pNTGnzrbG|+e`h9@&{Z5|Fmd0e@OnNR3|0>M*qi{S_&?0 zIbrLi%>SeOR9B@|RcaZfR#a+PGM9tP!xbzuoV}#j=G4mQt3X*aTyLtIQfnyH9lZx! z4X$oEp%dy+Eb~mmD*0JZCK;Bj!~R|z4ek#2uxR*AP--uw z4pwS!r4CSPAENkw3ja@;|3}ABsxQ$4VLy0~MWdEHM5!Z{Iu!jdi2tXKu$=H(P3kE0 zqapsEGXIaR45W@%>LI00Q0f+?`YUz5QYR`kK&g|IIz_3IEi*g^rB0=W(;)tzGXHP) z*O^M4t<+hjghyox|4-rnDf~Y*(4yg)H+6whgO$2asY{i*h&nHZgWx5W89vo8bs5U# z5dTk^|F`S8N~!CWx|--U@LG7C<%H+o)D0*%!kggD7LB&#R;6l6-KJDpsoRx`DK&(g zJK#{*Vfo>an8N>4_$pMqm88h(aNJ)_j~NV(QM!xL zOIb9%H0%UBJ4XAM?uxPu#Q)Rg|ItWDub{M)UXdvNpI({rDwY#YqSC9Pbc6VRx`#!> zk&s?p>8+GrL+Oo_UQ_AylwOO>wc$E&UCR&KJiR_jPq+cx(4wIOr#Du5Go^c>ZvuP6 zO)V!J1L@6Cwt!p0J{Aq{X-{vh^v+6eqx5!4Z)$9;MoxWPoGN}|4$F3d_KGYUI;IO7sEl&{9oxyl^(40WlCfFX*&hD!$;{W zt>E^{-I0>M%F32}wH4fZRnktpNon(crLTuKz#AROzJB=Ko5^U>qhaKXkct%F0nYXNa2rN5^bBuXID{g3?u`i$qJX3@eV&JB8CV z6c75a?ihJmI#BvfrJLw2I1CQAoba5Rz6)gpyxR?OrR@oXO5Y3bgZIOca1ozW5WoYF5V z{XF^$@J0BN<%HkLr6-_Fgp=T8i$ z_nkgV-^8Wo5&ar|1HV;f8Ku8dW+|n=SNa#F`SEYse*EkHly;{8 z`|+>R?%{8t^0U(J`EORXd%)7};cqVb8+6Zqb7lANH^)WrPo@7-dU15Gm;2|b|BnY(4wWoD>0(}{9t*adcV<-V&@|0JAD=M?HGAmi8`*YtWXI2Rd zL|0X2U1ho{vxYMGf2N1+b!IiVx?|MlnKe`ZhQxGUVvGQ-(aW)GA-;a+fWi-uz?v#&A-DzhK@{_p_U*K(r0?uT*^ z#Q!t+f9T$s!<4y5nZuPiii9JS!T&>N$Q-TA3CbKp=vavVXYha5Q?_^gA^x8^iSo(t z6nHAc|1+mkJ_8Pb_7scWlvS+R%QNC z<~C&>ROWVNs>%#eCacUH$|RH-%Ch)>CPq2FL_J9q^M7U1(EPu>mYgyLW%8y(Jy;|M z|Igt68T0>kw5H5m%6Q5&mGQ}}!v+j2Gur+Z$}l(_-f7X$RWc)#xnG&P(eHux!uu@e zH=Hmt5@i$|4Ii**_$=+dQ&3)kufo?X z8qP2?QdDDwuD6>eJU(tVqzr#N)C;Y^h`4eR^{0shV z(Qtfbmr`~sWtUcVEoD0?yRx#Km0eERE|!_?3YUS)F0s_|C@a7f;Yt<_-!+z9McE$8 z3Vl`B4R*JjXubG#Do2iJ!^Ei?4$togsP8^MiX zFQWKcwzsldD!VEAW^i-3h2=zB(#Oi7qh_~O_7G*aQFeP}wOku62M>Y=JGR^BP-Txs zJWSccDI5XK|CP1VfgNjBK1SL8${tJkICwlf!O>0`qQFef`Hz<3ivR5mM|7Y?4EdHN8mwL{F1MNGh?D_Blcpxm1B5_DQo_(?6vSZX#OAhM)pQ!Z&vmuQ=&b+g`8XAZSZ!BhG*pL z9m=Ma9ja_h*$&gA(HJK)0rCHA%A(;XyKF|;qOw_{VSAeYD_gLfsOAz%8CGD`qR|-k zlpUq4uWZ<5b!GAYtogsPO=$k#?$hDQ-lMGfzp{715zzcUa-QtHDCYml-VaAwH1ve* zXl30PGyhliLDR!4huMdfeO%c`(8s_>;bWE)&VRB`pgalj|LjITvR^6ttg`Pb zJ5Jfj%8pm|C1sx@|9SWVe9@MQj=`5v@c%6SpPgjU@E6e8DayX3>?`Ep|5@{YWnYI= zEz?^x=X6Z%@&Zzy~Vzk}a9hGT|*7byD!g&*Nh z@Mp(%oxdozs=6L^a&ffp) z{*>btz_~8U@&4bOz5f?|S>^2gzm$0eaL!%<>^4|A^MB=5hO0n1M(v#Ird$u@x|Nu|K~QM zys^~~j;P!wD7_*6pWDo$;nn!u7RvQkZcCzl;8t*JxDDj}zq##PQ!B^&e{;P5H^=*b zbG-jIx3hA*x;M9ra=Vhr`+sx1|2N0`e{*{(w~unX|2Jpv|Fw~6b=v!XDeTu)4p8n$ z<@zee3x9LG0yx*t?w@h9iyZI&&Dr~Z*}OxQ2(7SS1pu>y^7zxf>|o2+jYMyBXf%7-sVCZOWPdD>nq*0f#z9PMeD<_mFaNY9c*>1X&R4FbT%BkG;{Q4G|90yQ zLmv+Bgy#S4mbqKGk;>hJelNuTbLRi;JsO2R8a@CYv}ky3B=@j#FDmzla?dI^M!6@I z!~b)Sk@+}$!t%rOS`PoujYWSNK4Z~e!k!(6G9Kdpx#uaH|F>&+Nx3P?;s3b_L?^;Y zaI$4at@Mg=)0D&ibNGMmb#kU!PP9F5pu7p+g699x9s9X=mET^u_muCX-22LXtK0|5 zeX87aNsZ_0hI+)v8QC%ORQ|2gyjb~~8=E4L8-0)Jg1`nz)OVE+Ss5yby<)Xt)!^#pZ22|dns6<+He3g;OXhlTec02H!Uk|d7u*}}W6`M2{gm&g{Ql?%z`pQ6%L!)}`GZgn zhKImIEgFu!{Nc(UrTh`-N1E*Z;tX=m0nOjr{YG+=T&fHqoDjp z$`_S?SoxCj_b6XhzRrRb<<0+ z9|7-PB6_d#BbC1o{eIKKU9;p-%8y2W06qw9kHQ?~A5ngS@?(@Ar~ISJKczhWpU406 z=Ksn+Y5C#3ANjE;Ps3;6vlfkxsqxA`ul#eSgifA+ft(lNOVIqkz3&s1e^dEM%D<-k zWTI2xEAUmz3_q>pUq_h=r$O`o_EGbe^6xAEHu^j8UHG2mL?iYClBHib1+*hYo5ROqF`+A8!^VI6YTwVdf)R9FwLZ{L;MzZ($U z5N-rFw#=~a3Y(~~g$ljVH--3rfdf4JPOz{gdLOtIH2;spDY)vsDFMpscf`7ur77ee0 z7XDUo1r`2Lv6G5RS+uycqg~0da%UC0s@TQy!(XNsmqA|^E(e#lXz1I;6;)hA#g$a- zrsB#(@&6+JU&Q~z^IEYx(H?L$xVmF>L=@LlaXl5+LSGxM1J|{jaHJL2N9hUi|DySS z^bFGC#wsnRVlNe6RB;m(&s4Fuio2`0sfydExS5JusJOZ1ho9++_Y36GKD&M3RUUEyvPbr-0uCHGLVpNe~`xSxu9q3jL!f%`hP z+i-uB10eJNBJ=;Ko`Y08RYm;2cnCT8fAKKNhr=UOJYK~k?dMeQ{i5PgDjwY~AEV;2 z?XsN$+T|0-><>?bC&829DUR;PI4Yh-{ink--~h*V3!J6m{VJZV;!P@^qv8cBGXF0! z|1SqT;0#E`yiDE8vxIFuV$04X=SbEvI-LrX6>`Ho8YZ|B2WHtHv_ou#Xjw$Vp+uszg~1*+}GWh zq+(6QmWrN=4HbPA>)jT5t_J%~*1b2g7^v7Z_j3;|bmDxsCBsy_Q^n!-ubX@P-zO^G zWo7rbV7iKTvv>Evd*OYyr{Pgw9I2w&yNaV!98CfLFXI12^Z&>_ijSx`PQ@|gJPPsu z;^UO@|KgKw0I2vB91EX@JpZ$3&;PUvEoVGSJqMqMFIXr%!xmpsagK^FtN6Bx6I7h6 z;zV*LSx$7+Pf>BIiuix=Ridv!{6BQ>;xrWezli@A&HvjqyrberD!!}Y`zo6Mw;jOz zU&ZP0LpZ~tkzdVJ(Y5f$=(FH#=oW9^>s1Vobo{@F{};coXn3Y5eyQRgDt@Knd==-a z__d1jEc!-2>iGtK3%`TkJ6dnrRxMC*p^86H{t^BJe|8L;S4I54i2oPO|5g0mqTv~{ zxJae0D*ma`QYtPc`WO5g{$rWpthK}%OPx$Fb%tFm8eV@W;r}J`|LAUk(()>urP2y2 z?V{3(Dmmj_Nu@PaT3My;D&hYn{J&)WuTnQ#HuTI=4;1{rWd5(x8Ws)ry0n%`>#KzS zm+=3R`M*l*Sx$Hjs?-w&|1X*UtF)0t!_iXerBWZ2Hc@F)m3o^Vt#>mrH-}rmEiD?( z$4XnNw7p8^|0-<*w}s~a(P$~*|D_$#cY@~s?e*@e(orhyrcz&(c2{X1mG&TKPq-J{ z+w#NSFPZ)6bn*X=A_CS>mRf%y@I*2I#Upi!ooWs!Z|I!hZkF;nw_DV;qbgD|n zsMKGjV~HLIkB28%W_W%norrQ0JQ<#1(Wsu&P)>(uzya_~$LNm7(%C9CRXRtd4wcST z341S{r_w+&&Hq)p0A6TIMQwhuN|&oN2>lXxDZI>bqF%cKbk~0z?ctv)x$8fUw?cRQ$CcgnAIBlk9s#P-P)9q0tQ=FR zs8U>|j7kaCn1m^qc5ELbS(F^i!-7RacPf=s@>D9LS6~&^EGNA7Rq|2lumJ;$M#n`< zr6*MyrqXDYhO0DEr8~*F%W~WWtCD*PsN>x#-9y1W0@VF`AH3hu?t?XDl;uZ9{R1kE zQ3?MqJw$B}!$&M9yv9{}6y-7aIDEpQ(a3p9rDs$ci~h9fq3v6DKdaI>^zraH_`KzW z*C$Ias&bV|FR7eR>1CCBs5C((*X9#d`aq>gD!tAklU15R;T8BQH2-gpy{Rg_tgYqtX55Dgh%}GkrRr*Y&4^^6_lKH<%AHkXMW6O+MY&MEB1efy(H2-h6 z)#obBRmuEcr8)3R_?6{EBViuO*YF$otwp0={$Ay!RhqBTuPQB2=|`1*uxNO-s`L~2 zKf{I4{J(uP{if1lmCXND`U5V4e=d>p7s}u8A7gnbi-u21DR)wNWtBUtyqwDB|0;Kd z%fMwVGrYs6ygbSZa7DP1MZAo2$IF z%3BcK683>xS!T4ZZBX$4@^+NBw`lk&vb>|pyQ#bry7|A#yTDy7Cp-t0cSqR+?g`ER z+tGbg9;ouZDj%luek%7<8UHVv|Et^=9%%W|_8f$AFgyevYSE~b4p;dYm5)F_5*`JQ zww!QWm5)U^4j%8OH!7b1`@<9AN$_NN3Op5_22Y1)zya_~cosYxo&(Q?=Q-M+yU(+H zzRH)Vd;x2}5MBf?hJzg2Bj-|;?@;+N^vmHD@JcusUghS)Dqjt+f!D(8;PvnZcq6r^^Vm%l(lrg7>ql%TRW+;J4jP1JIhL|JY40B$`zHfD(6);|BvR| zrGcQu#5JM-aUm z-UIK2_rd$!A)xX|I0}x255NcEL-1kv2pj_+b##?bew^CO|5bhxK4qbBo=|>T<>yp> z2K`w$4vx2+Xe2+6@&bGjzGTtxd&%+ym8YvbQRS&BPf~e`%9AY`jbZ%1jQ^KkW7*d& z8Xc9>RDMTg{J;Dr(YN5+mJ=N*@1o%UW%GZPKd|WY(_5`9kG+D$hax5}N<3JlArfcK90Q8)*Ko@^=;u@5L?8 zS7m*b7pSs~%0H<5r^-L7{Hw}8k%|A8@&EEKwp8RfzY)d%%lLnJkwv3@U#!Z~D&zm< zzsbb^EBJqSJ*3jf^h#&g1$K3euF+MNRi(Qs%c-)mD$5gH0pkA^{6BQs$|~rBtHN%M z(RNmPsIrzStD&zB*MMs-k+U|+I&fXMo<+lvU+JmJ&Z=yn%9g5Zs7h~DHX;ZAuk@n4 ziRFhQr?M%^W^i-3g+;@&Ri%$A+o@vyugcbN8@R3Iguh6wY>%=7+!5|%(eU#~WfxWU zQDs+Ec2{LL)5Bh_>_O(9(EMMOy_bmYtIC0@?1zs3SMdKzU&{%9fmP{86#uUrOd0>L z97>t{e=3Koa*A7{Ds~HyDo3hf_y15nS{3g9G5uIojzc`Y9X)}6`>S#yg_GdPVbo^7 zl~YkpQ{@6xP7ife&QN6l`kC-7$its2Jp8%B!=EcW{JFxzpDXt8XZv$^0#tbTbHyJ1 z%z_ugL8@Fr;Zk@Ryc}KuuY`jg?a#LDYE{=%kezFjcNoC9cZ#sti@-232lV z>!T&4oqkQ0Kf9|SXKRY7|yb^Xl&sB75u+~ z|5rY<=&xbRf1%1eRpzkNm+&h%*K#6<{2JvO_$~a-qEU~`S9K{>oc}LUk8ai`zWmUVYx(d1={$K58IpN+_d!Vld@&D=?77fp> z)wNW;MAfxb-A~nZRNYF|byeL+)%D0Ez#}Z_R#!4`XpH0$;#0-@1p9Ss_sgT`M;{WL-YUk zdiO%v8}0-5wP-jVs{5;YvZ@EDdZem-RXs%21Ig(J4}#|Z?b;4SISd{SkFaPs9;!#F zdc3MfqaOp0g~wS=_*t@g0!n{)B0R~W;jhlCr>J_is;8=YrmCkAJsq9_2Uun}uc)47 z<)|IbQS|~<&n4$PI1rw1IZ^(FC>Ozt;UJ5K*AuFjs#;a`GF5L^^>S6OQS}OPu7rc( zRq$%ZXhu=JR@IwSy$=0)cmp*5kLJ?Vn^A6ox5C>j8qWQyLsU(vdWWhVstz?hoKsa} zWX53vCM_Dy^r~r93#w+&&Hq)+LG%CiI4Po(U>Q~{8qS%kHC0Ee>Zv+HRbSPXs&#T2 z5dW{5|F>Ij82WH{C%ns|;nj)i-KvgM^&a$l;eGIa%W>aO*cOhma@1cBsQQ$u532g8 zst*yx|Eu_ab&O?3?eG}U$Kez3NsET(qv}{y$E*4@`ZMrZIBtoY=TM%9FTfWq8qPec zFYDgjRGpyV&VMEYl!*}4j@IA-&dOuKgrmEA?KZG;jN0t*EoA`fq7W!=H7XM$5e5&eK zs+#|+`Z@dp&VgS#w)<|bs*6>fhyFDTxA0ra--Vf~ey{3$Tf|+gt1eLWhj#f#Rex%i z-TS{>bRqmj)nD8CZz%5lFE09rs*BqCpY6*3VqJg3e~h)IEEM)~t&?i2sn%Jwkqm4r^d}cHM{voHM=Q@?G_4`s&<*ZtEF~1yaHYc2g9r2)$kg4ExZn14{v}sI#TCNs@)ux(Qie(4c-oi zK%4)oX8x~Q2aLhEBYT%nEs2t9D{1tMYT3484^$_opxPs<6)Bfs8JhpAR)sa_K_8m` zQ)sA$|JTg_Rcpava5%gZn*Xad0^Y6KDAn#^lkRPA#(jkDha(+{j^^J7+W$VN+C%N~ z!|esl|5bYwJ_a9$_R{KG<-&OljwVze{34L>N7Q$cPukbg==rd;R50pjF%wM&| z&{`v!3Do|P*G=A1@|LlXx3s)Y6gtB$u&ZM;t!wzYc}1;WqNNmB&|y-gfe~N8CZ)S@L$2 zcd)#j zy3M)D-rD9JCyzIOxff}<7hTyV^_O?5yc6Y}Ebk=CeBwpBnbSh{3NX8k(>qPx87QZ_ z7m`vKAn#0TYB%k4pQ_wFFy7hd=g7NU-nsHFl6RiG3*-%y$HgC4mHV4IkhBY}>^^aO z7t6a;-XM9GnBrbS=la)HeVP3``8)TjIC)pdyIS6r=!4~5Wyh?Gx_P5zUL)^%dDqIj z&OXVyX{{SSrr#jXzWlWx(erv%c{j_ODv$4fy<6oyChsZy+<>eKfD6e3ls69*V)~m?#SF=oATz#drRKO^4^yBfxLI*y(jP8C3@Cg z{@Cu>>GD33_o2KQCjQ&AGx;~{*;(>FlQ&!5C#(p6j(YafcF%q;?@M`K$eZ)up8ZPR z-0-@kRcJl?wY*>DeIxG&d2ZNzPo1=b9T)TEEwIdgd-g|pKg)CTf6L*xSSat8|Mu)} z^8Tcr-{t)wZ_$5ycCoy_m$8-p zuV?+`&w5CLQnY{P}orZ@$xs4zo-0-<-4`_lE1n9P2_JXzxTgA?(_cW z@L2Y@knaqCOZk0VCI9xgZ{{C*p!{v+?<9Xa`8%*8I|W3?vcF^0~ii2HLr?(Zf4Q2Bey?<;>F`DXj__qC|&aesgLy#MikJ?k@Qex~Wx<7dl1=f6FEp8SjDyB)t!{`vAR_-~Kf z{r~@~Q~n_NmxNVOt@*$F%i$IB?~#9{{EYm;@^6)YmHg}FUoHPy`PVGbzt>p}QUBf` z|7Q6&%D>6P{~gi(E&R(7?cXN9L;mgZx$VcdTY%dAJG9-uG5JaParue=_HRml`oH~~ zmEVw`lV6damyiGZ_`mgUNq*Vt|F?gu@;&)A6Qln1<=6k)zkz%_-*3uq$shLL{=HNF z2>EyYw}0;r8&gkCgv_{892p+e-iK-v{MCWJyocyQcKO=vv{HOohzq|pwU8nr<@}CQuv*b^b|Cap8@?V!fMgFVuUs*59Gfi zpLhQH?^-DIZU6mtFHe{Mk^B$k+vNY>GqOKZ{>T6A<=OJTk^g`4=g9v={%5W>`JY;y z*2|yE|H8`u_VSnV=gR-e#Hg3&$>;qMP6^M*{;@sl$|4|*=uPQeni)mK%07uCC|-dpwV zs;{ql57pOFo%w&A`G1}Hf1UY%c$K)${J+lpzs~%>&ip_898vG7`i838{NFBcxeqUO z=Kpn@|Et~$+Wg;j3gt~zcYC*)>RYI8`O$Mw>su1-1Gj=(JGPhFR`u;w-_De1Ejy62 zBisq@Y*BaXh^=>5)d#7*o9bt&zPsxCsJ;jKo^UU?w`26ZbA4Zw{owxa0N58E=qAIe z_k#ziemsSPRX>Enp^g*|Q~huXN5CWDQSfMZj3b3(A^vYQpTNKU;fe4hcrrW%o(fNc zr^7Sg0LV|kT-RG|XRCg`>gTZK=fd;gK*#7aU7hPc^$XE2f)`sfyz*baMD@X{Uy6Pi zyc}KuuXK#Aa@Vg?{TkJ;HYMucYst9|UJq}uXn6g$ev|4WRliyFqUyJ(o>cu-)rYEn z8=1GmA@B}cD!i6n??8#cIOG%%emYinWpKa@Q{YUi%3}ADK=rGmqR(&}7o$xL=!g8Yhy$9u9cptpqqS2O& zQvF5MN2~s%>JO+sM)e2Dc?doXAF=#szqtNW=lV~b>pyk7{uABfRDVkKajK7Hsi)yH z@L9`=Y8a359OU{>-Hw;&-pl$+s!vt@W!0ysK7pKxa1xwsnNgd+g7PZl`cM6Ji-zCe z)TgQbrs{8)68<8){uY^UL$3eS?fOsjEp7dMHHNGHff~+9rmOy^>L02;U-cQPf1&zE zs=Hp8$+92AS#Y-15Z=L6{{-bz_!<1%qTxL}^*O44t@@YfT>q)hr997aqQ3qH=@lm+K?LSsIjUV ztEK*JJ>dq9QCl@OQsW{uHdbRV zHF~MBiyE7#vAr6-$=nof2F?G~*aB{8=fOrFxE0(Qavi3ztt-3zRbxAw1K3hKz#ZXE z5dRN*v#~46Zg6*q|2Ot@<@R>&t;Qj0?4w3sHTETEKe#_UfXo)<17SaS5Iop1>dnTX zYMiIWVd#g$BjAznD2V?z%>UKE{2M%}sllnFVg663zZ&>|!~7rRWHs>r#;IxyKsikf z{J&xTZ-3Tq=KpG(rN%jGoNc0eoUAG5h6$7hvL)xk3!wRbyEQIW<7PDmsd23um#A^2 z8kdrT|2OdehWUT@{y1u5Fwv{v)$kg}&>#5sIyJ7Ra09#%-sITr+iTADB%6~kP)ebn5k#?NZprN%32j8NklHSSj9VKweiW0V^Bf8#!uy&sOW zWnDMfNFEIzfcSsoA&Z9hcr+eS;|Vp!5XJu+_ji7Oa&{F!?+4ow#;xI5(s@&i2n!OEgIf?5Ui$PZ3U|n z#s35RKUm9h!WIbDA-XQa{{!>?=zR^r1`4)Ou%Uup3N|8VV~d9K$zT%&TPWy_zA4-c zn*X=!-x8${+zM`O(eN9DU|R*dD%eiJ4hpt6Jv{FR_3@cCl!*&ATbsTLJzb z>_K!-xYrUn`=IO#_k;UeH0;@+uUbbdI8eQ~f`X!bUUs(-yV@r9RZvz?v1MHYx^F99@2sGv;9douf?*1L z1%ZOPf`*N7w}?BAYzvzTT2^+7TZMaoLoi&y2nB9<++~+UobL9;TIOyA_qYuXch-I{ z9NeeiAqDp<7_DHWf>Ew9t&(WpA5ie1{p%XURr0}!3LaMQsDeinj4{RiFfIH}DtJu6 z<58yj9hvRplM3Eb@RWi{3dSmUUcu7}#wmD4!Lyd>8e|rCN(AE-xQjph0L?X;JFf*V zD0o@Hiwa(fbeHU&Dj!TxFwu@O*YZwr-v|Vg6--kwMZs$dUQzI>jTyILu2moXRl(~D zrrITrxsTb1wfr{}ysh9(1#flx>YQ%x-C_DihbeeRfxGgvdABhO+{JVE!)*ocEBIW& z2MT5>n6BU>1s^JyVe56hW82e5!Au1-ySttWQ}Da}>pIspktvJdpC*!~z>Pz9^x^*j{@*nJk8YD_c2aX~ zH9M=hike;2TwYE5ziIxj=CW`(%Ma%OP5i%!|2OgfCjReUkZSo-b2T;b|0e$5H2+t# zht&|C1)BJO6aR1G|IH=*zqyW@z13V-%?;JW|C{FjYW9R1SUsT^HSzzZ`M;XI;3gIg z&*{xg)$F4t{@*nJS91$!{vXXun)rXy{9ny&;IaY`^M5rDfPF0|{6$`~ zAId@SV0ef{qrE;%&4FqjuI4dn;{Q$ae>IPS=KqnCH}U_b`M;XS!xJF>-^Bl$_{@=v^oA`h84D=>s%Bcvf|?nkS(tMTu4dkv-JScaTtqLyGORd; z7OiGY%|J~L-G_D9upD<>+rBqp3l4+B9oseBrRHKaN2vL>ns=-DteW?z`G}hLsySNC z`^di^j)bFZ*{J3RP#%O2!G|pxwfPt|pH%Zv^vB@i@CnO_9N;OGvG8g5j76jR$Ei74 z&GBl!q~>!(pNB8N7cDb9FE?LCnE)rkNfr&SZ*qbFP}-sX33#&>_E}{He_XTCL;NI!CP&)H+G6{^Xx%`B7h=tkxN7oq~QUJPn?1IZ+!9KsgiQ z|E;qv8lKl$=c;v?TIZ>Cky-=EIUimCFSN|?YC!8^ltJ(kc&SCBEiwOB>k4?K>26BX z;v+!IJ_5MLQR^DDvT9wc))2L>Q|o56t|$Kncq6>YmJOe=(7FZXR(KmU|BpV2wC+$V zq1I6J4v7D^;+7N61X@Y-6ima6MZ+_4E2maXt-M-AwF;(({?;myiT}4Ml&cnvMzyC_ zQ!V_zRVUhjf#pQ4(Lxyphr>H98uiEswPvVww_1;>b&p#2t936q=Kt-HFjB3D)Eb38 z8a@CYw47-BA4Yiuj)CU??Q!_HTF-)_lgQO3dX@HvY{$LR}d zy{FcT=r6&SomHwe0ZxRI;AA)jz5-u`uff;hR5%U30pEmg!MEW%@Lfl{zHRGzpY?tK zr$hWd+QN_2`a!LkYJI8J$7+45)+};nLpOlk$o#}Hy2{kT|6At&YJCCcSTq_lU#a!2 zT659o!LQ*rY)9m@9*|8Fg@XgHT{{ixR8YW<|vA8O(Mt%YR%0)K_S!QX9@+@Jg1 zeQOcQpKvk!%dtJ8{?V{58n%?_!`Oyl`2VoZmJ^Q5VO@#h|HJVAVar)GJg@yfRc8S< zMfHY##Rl~zRZuVx6D&eR#J~U(5d;eZ6YNgx#uf{+%k#!XrsmOYYY@^8figZ&% zEZZ64{}J>5a26%f9lZzK0B#8J|42`lrbsVKwqRpLHX-N@`@l`%W^i-31?&sAg#F-F zaBD}ql3In^Dl$Tm?O5aXus<9CcYr&Z;Y4aIhjn2zG@-;cjpk+#L>w zdpL%l&LVrVmc8KK(EPvExBDt`m?HZra-bsnQ;PpbMiJxx!F}h*K`8it7b@qZK)loC$CuH2)91D}w(=jzvEXPO{SQ2suHK%N02h z{UkUUo(%E-2>u^AO_2)~IbD&n6gh*^DUJkF6*2!0T_|!k;yLhKMb0PS65wVJA{VsF zyvSlZfSrB`0sbE`{|}Gzi21)FSHi2{G%F1pFLI3{w<~h3A~z{=9i{kx1pkki|A$xe z$jy}A0&j)4S!v+Uk?D%uqsSfTcfz~i-R*Ml{|Npcxu4P*RvNq+FY=%wZz%GRB6AdZ zSdpe8k0?@AWG0!jU<5{?`M)A@cSBQ=1WdvdOgj=}6v-0gU>+7=5tg9mNKjU!62#_{ z5%YgVd{~DK$M6asX+xO}ABB&(!$y(E6?wvrA2$)<=zgOx@}wdQ6nRRK=MUQ<0Aq zc}tP^6nUG{CGZ{iE?nvu)W*N>EAj!shtO@l>l6Gx_`YQ16GgsL60B;oSf;FIYl*H7*MMs}h9iyW+Dh!M=sJp>t7u0>=PBAr(eo8u zSJ6?5uBYfAMb}rfr=n7{yP}<`p$qH^yIF0)o{IKB!T+Nh5}W^9ldKKB6x~$Ojfppb zy*&J>G`@$_@KbNMcd;Z_iJ^$&*7we+i61(UBo#Gw=b?gt_^Petu&m=qU z2zP?+;ZLXR0tY(UpZi=H9jxdciVjiK^~tWRaVXpk4s#4$G&MW2JuTWN4jjJ}|lbAb7Z z{;KE#MP1H9Mc-8PMMYm#^d<6NhUWi@F0y6Aetr#QF?=1qVWq*iCHj`4OBKccqf01# z2fo`b=RK77;Ro|A2qOzu@1Ft^M+^ zVyh|opXsqx;Ht2LXA0oR0US!u9EG3Wo?73-*&6zfFkx^O+XzGVjIRID>f z7l{AI@c*C>V?7k>rPv0PZU{GmJsrbskKzBZP0)M8KJ7|3Q|ti6Hdk!0Vp}M-onn0z z>!;Y3mJ`fK#I|B7t|>A6Gq$ajhArG)v7Hp_PtE|i1KhD)&dw;iz=3d(m4tk@NbT|y0)!pq?0Rzq-QiCu|;|Hq~g zUu~sfYp+%8CdIBpzaHKIZ?v57D7qQt7Ks1H@c-EDDAV2Hsu=VCF`NHa>@IjWya(P3 z?}PU{63l=PDE1)1L-1kvh@<_vd!w;gilr5cD3(+#${J%Z4ik>ys414RIC%OcmZ3BY zb1)Ch|64~zNwFUk^Aua4SXr^UVij_#5dV+)mLK+210Da5;r}uGKlUg( z02a(q>`9cT;9U4Ld^4)e*WnxRO&htzxKkf{n|O(0pDOka@w;#-d=J_!V8uRwA40xd9Q%m)V@HBd%#AJ6 zegasr&*3uo1^g0z1;2(t{r1+|euc^5Czv8RG)!`bBVV&`{ zP}YX)z>ZcLcuRa;#k(ku|Hs#-RM7n2cAwRZ|Hr!#cZWT!H27Q=-%#;Q72inl-ir66 zv=_wxKo)q6~tA;SehguEp`8itnNLZs^0H`M=`BEhm@{jE_LU z|Ks?7d~YiaYZ$5cL5lCI_-MuVBh&m}@dMx}%M83aexSwl14RcbZvG#7b^I{JpH+N} z;1)d5|gQvqY;1oC&o(a!#v~i~UPI3Gk)^aX951#MXYT<>7U#<8>ieIky z#gyXzar{4S{vY~b{0d61g!q4anw17_7QaUE8x_BnQv5%T|HsY$TkE=s(wpHe@K!4g zkHFg%uPHuV@p}}%L-D&5ztc*?qw8*qgR5BlUd2m_-$xDi!x``a_#m{e04x45d<4#f zvm6N`ibn}zFb)%r1WCnHisuwh^KS-bt<)Kd)trX~SZt?zti22?uERLBM(J$$D16LH!)<>;@h26ZV@fdIi$6uqT=+D6#!ADUd`|Jd6@OmwZxo-W z_(zJrp!j==&nI&MTnO?1IQ}1h*)6X4D^`gGixhvA;5E1yz7F4j+?S8PMf^5g0^fn} z!ljOZ6)XNeYy1Fy2;B~CjVt2rKwYNzC+MHT&*0~l6MTY;e}VEP{0e?;rC~39tN3q< zf2a6Qihob(4{$mB(K5r{#{c8Lps#?xS}8{t|NgG{N&@^pj{nF1`d^OX|0vN#@qd+Y zZvUSWt1GdJ$%njj2(EL9gyiflBP4#7;`==#*B=cUHnCe@t=bk(&!j3?hH9DZzeB z?20lJn*S3F3*VTX7_QXOO6;NJvr3Fm@_HrqRPuBs_EO?pCH7Y06eadiVzLq=S#V#7 z|0nh*J^+rgIl9DXcpy9o9<0O!fqzGxpOLUj1tG%({735;3RlFJOQ2vPja+B>-m!%TYKJdf^$D{ zCdygxY!3C0!3s zBfc751M&X^{-1EW#+@cNDDk=yH!AVC5;rMPQQ~GLJSA>XqNv2JN)(i^uK+8-_&+h7 zdhURC!n>gPzY_N-kteuU3H(2CKmX2v4?z4s@euLD@DWFXnM%x3B1s%kBFavQ!8l9= z-DtG^l~N*2at3B$&M{1Lf!ps~6qG0hmj*{Ac=-=QP$jBLv?)h&Cdq)EAhM%^Q^XD zbynegC0GZwB)clv zUCC}iQ7fT`1y=utN^Y*?MoMn1WKSh~g=-0y-9*VgO7^zoFn?1eH?!>u6nEGsw@`8$ zCHpGbPsuG!50~9aNgf;KU)Hs)lG`h}UAvtAO4^sd!j)Qkc2x2JC3jMCn36jyIoOpd zxr>qml^kT5!K!V&LzEn0Vder776xUa+H$el^m_)7$px>@(?8tQu1Icb;)6!hbn1b{<5W@l7}mK z1Xc0<->|B2L4uM;DtVle6O=q!$%#tZ+oanqdyJCD+P}dntP>_Fd7_fXE6I;PwpOGh zFMkUwH~&|XYeDi68}%)|4H+IC2jm4UYnBme-i&s;{QqfKWYBoYT*q^W|h2A z$>~boq~xti-b_8WSdQCdtMfK!{vXbbC+|=)r6m5J#Q&4{fAStO?}hk(@_zRLM9CTO z0sAmw|30YXLj(`QN8n623r1iR#$X&KVA9d{lvRcQC(Zv&vDW64Y$};ovZ7=Gr3g#V zgJs9o)>Tnz(1&%{aBTH?o04;soQ=--KlvE(4IAoD*- zoBy$ox5=-SWd0|~{7>>brz>gmKT7@pmqYV^CGGtWO8yLgfh!;nlY|xi&RSN&Kj5E` z@qaLXoBT(q)s*}f{Xb)B6}T$w;28EmYIT$~;F@qPxVEENfi2rnseP2{q*M>3)>TSM zt%tt8<uM|@s zsY_f{N?i&sgO|fA;Fa(yI1OG6uTknDrLI-#cBQUU>K3K0SL#NJZg6zXQ0gY7ZnjTD z?$JTFAKh=Mq;4gFR{+_W<#yS0rS4Vg4yEo^>Q1HZvd^|`n(G9m?g^^0?T#u-#BFdkd=#4h zxAwdFzfyA`{-47CQ|AAzH9n)%yGlK))XPda|9?TL=gFUEIl+u*YCa17pIS(a|EKW( z;1@bluPF6~Quu!g|4-rnsm0{KZncF+8vdWc|5NyXY6&^-w98ql)MrY)r__f^;r}V~ z|JM2Sf5`s`ehl&dl=*-74UrW7pThrBUy$=9{0e?;nPGdrRoWTgcS^e>?R%wuSLz3) zRw%Wc%pc)T@MrjoW9$6=73DWmf-y;IrBZ(>h5x6_|66VTo6LV8{-47C)8_x-Ti??i zlwMcq)s$XGY5YHp|EJfqrP6D`wJkqrdAcJ?CsTs&E2Y;{y0g;e|4PgB;Fw8wLBapi z-H6TqmF{6VVQm{Ky_M1%DZMF0J(cc7urb^O_J(~N!|hFPhO#-_0``Sl!hVje%&nE) zS?O(*-d^c#Dc#OWgS!vu{wM?B4sb`flVi|A{@q3Cfdqr#U^oQs>eyP>Zpt60^e|f}3Il(Mn`ZT4_Q~GqJ&sO>jN~gf7@Jwj_AKoQNpM!EP%BsZY zD}AZb7Z6_vFM=1tOB};-Y5Fph%i$I9N_drHE9YvZA5{7prEgRETBUDL`Z{v1x13Wk|S)&^TYDTPObMPvOsAACD4j;nz%0zcykn~eiYVs)N_(&jE3gV{ z(EMNNI&8ouY=g5Q{+~AgSNd_K7b^XP(oZWr2jxll6rAg5f9?vEen#neN}mB#8s4T%JfubJ!QHnvp%|D zXNdo2%>TpdQKmb354Zu`5N_lcZcC<@GQE}A7=07dgZrnMJ}6u!GWdUHbCfMCC%Ds; z*;1JulDE>n?4!)KDCYmlY!Cax0gmB!E;2hRvx_o2q3>*ZaK>c@q6{)6 zxG$3#qHJenc2#DXGDDRaqs(r~?61r)W%g2Lck+kBJ>Uqqr(^hhW@c}cec(ul|7Z5I zoZy>%nFEwLM43^Pj)n)qgW$oAt@a#>a+oQ>^*3|4GEHU1DpOJB2ujDn@$g7E0ZxRx z|0l!y-!i=aEyMeNGRL`Hqs%18`+qVg5Zn8IlsO67`+t-<8J?odOl3}0=2B%&bBepN zD08|pXHYr?PK9T}v*6kA9C$7~51tP%fEU7xpv`?LbBUwvUyCnO<~G)KxiVLvTnVp& z)8N(c8h9VA;`*bE^&i&*1+V{6B;LXUzY@YkHc5C90|AtWZorSsto?0d0!b!KJx+khsxL>O_`5^p&Icg6nzRmgXaI? zST6I0GAot&Qkfr=G5=TQYl#16@c#_{pE3V$_1JP{epcp3GJi7N?HXJ57q|lA|C!&2 ze|Kzo@*m2ssm!0suA&V7pZS}df8f8+{6BnKU3OJdvK^rLzp|@C^Z&3t*|n7Is4V`U zUB~ob%%AN|RhKE4&|M1zT>==~8;aGSCH2)9B zf!QOKovQ2vWhW^+QQ2dZJ&K&8EhpRy$D$n9PB~uLQYoD5HPZ1upYD5t^G z;Tdp>W2+5kDtno-XDNGuvS(9z4m=m02hVqG@CXPtL&}HPFMCemb%@R3S2IG z2g;rBE_gS*$1yyAv-c_cu(J1~&wvlW2jN4Gtv-JQWhR^jBQWaNT4P+1S7`mW6Hj+?BmML zSM~{IpHX%WIZwi;;9O|_-)hyfD9^#?;XG*m-&)rKWfv*C5dB5?5_}oH;@E1#t0=F* z#ij?&nSDdqkCc5=*`><9Md{mc348~>>llusviN`Yee@6DhtM_qf9v{K*)Np+1pQO^ z8T=eBa}38|*)LJPf?vaL+=`U_)>h}vGK;@g&J8AiP;O0Smn-{+vOg;Oo3cNV|1-q@ zvnz;yb!;6izoV=)C3sU=_D|(jQT8wNzu`adUx@z)zgd}E)s$QZxEfp?uHhK=UT!Vr zx+}M~a_cL%4y7GoC%7)e|AQHfoKQN$F0d=?<{0`|u7`3PDYpUohNcH@lQaKUt{2=G zZsIO&%JqhQ;HJv$sN816o5L-X+giE4#9P9C%57!scOO*(S|!^kx2-7_ZwI$muD?rA zZUEfDl7nL=w^J)~XXSPwc_17F2V1H0ZL4Zm<&ITusB-%#x0`aql^aIOcXter%-kL* zBOv~t!~b)8TTbxlEH_fQqm9pwzm37(3~O;zqZ<<3Mu3*!H|bBNEi%;1w(?tGLB+9?+)_nC4RE7zvnCCc5T z+@;E0N!n$~T~2U?YX0_bYdca(60s zE2X!=+u?L*{@-ftT_|_Mp!e=2zRz;P<9vp4GnIP){XuB{uiV4%5yw{MER+b0!kBUm z`J^PPv83J&!&Qz5wUL z1&-kiK<-79mmvP1dxdzBeufurjdVt44eoR8qg@DphMAAUnB_qp=hDz{AeF3NqOyfe=)m2>uv|L49Y z{~P!%{LYpQuA#XfP?p0V;ZN{q_zPU2++WK5+U0k*nZLo`;Y#=i{L|5nMn_Bg8~y|T zh5s4ztH4!Z2e=wsUHLVXU(>~Qnz(xA-=X~4%6C$J9cx3rqhq+e`E^m&gX=@V&W>RZ z=esJusq)>F@2PxuN_#;3KX3l8{6>}^oR#@rC>z5~U~fC#@_nqM+@Jf=g#2d8_f>v# zO1E$fp99QqiP8^l1-FLVIEHSJ-%j~`l;2+Yq00AHei!8jkh25a5$*(cb`1S0KM-XQ z91MrRT^+-bL*C8*@2UJS^xffbi2vtDSZ3gUdHg@Ww<*DqnIEbA80Gg>{y^pTV=4SU zkN@XKp^Uct;4MRW{6Bv%`XTU8c$nn`vtjwem7k#eSo9+x{-4MH^XC8IZzAN)|CK)q z9u1Fy$2x|`e}0mR$0>ij3a`ML83m1)UInK) zwrajc`J0r#79Ic3 z&rq6$Ihcn9$5xw5C>|`simOU__v0^)?uTF;eQ2)$RlWh6uno?J?kB)p>0{7d0jj+F z2{6Yw&|U$m{8Ml)bieg?!Ov|xpI>H8a`jvMrSd;1|CRFJD*rV(=KtZh3-jNhd=Gzs z%c1#yYb`&ku(tBQps#?x!r$D`QTg9(0BONW<^Le~6aEGNhX25S;eW=$DsWZU0j>sD zhikw!9SPR5tAH)Fj;*&~{;xtOxGr4JF?6Px`1rCIR+T{#UVYmwB|0)cHyFvWFVE*4)`yS{c z;GPiwFW~Al83j3=tMuh`ZI7Ed}oeH<8a6LNyUoihy;U;MQ-`b*E zQEr2`!|Cu2$MCvVxJ!juD%`EY11jMEg?q`l58e-FSbp%iukawsLlFNjnE$IV({jR| zkEoDRA&MS@acKUpLejCzayxoeNJIR;kR`_d3;2JbfKu%8*&`~Hpyy~UcONAR6&04N zP*veA6>2IhQo&c@Q5EVe)qqXd24_3E*DMo11|Nq{z&Wm36`r)pEqF?WxdczcXW+At zF9H;vC!Pmifb-!3xDdVwUveaPS%p_Dc4Iy_4-*gPGyoI+__*8`@ zDtw^AJCwc)m%{hp`;M)%1OG2Lb8xHp2!0IB|66C@XDWQH!sqDA;1}>q_?2U8Z+?UF zE&L9C4}WlMweUw3odN!&!oMmw|6i%XFXXI%zrx?(?~Yw}2-flk%AfEr_&5B=vDHQY zsn|)yRZK6g3Om5n>=-Dn4%dKd!nIUfhhS}c#kA#gbhNhyx!L$4-CkUe8rFw`onaT) z)pk~~8|-e)uz!1~xBAExRr{%RqU%`A8OkaZU#4p=KtZR z@8Xsy=KuEirETNZDh^O_8{%!@b`bwB_IGjU`9;p4;*ON!|HYkY!!B?j9Hio*Dh?(d zqT*;3cU5su6^E)g9C0@lhpD)`i>*lHp6-S!x zdezaj$2Q!40?ai`#RK?vl>O`e+`GAo2cjGV4~BkBWQ+z-kyn(cy5cibn)F zDvnceJmQfpWrB+K`(KFM0xoh3xX3NwB9{QGaFR+}sCc}JPpf!>iubE{qKcQPc#?`| zsyJE2Q&l{f-aEy%BA7cWo`!<|7xDk%6qKo!6MR#)5zO#XD8R|BJU#ivJg<6XXBEy`kb=D0f5rzli@A?{iA%0L2+9y8ZZo ziYXNzR57CBL*(QCMf|^L{;%RJTPm1;C`M86|04ch#Q%%FE#cUOyRPj;t#~}V+#Q%$P zEHij-Oz|m7=b93HGA%x%;!i3*tKw1>pHuNQ6`xn}MHT0f`2w5|7r=#%;crwGUqX2q zz5*A)R~=i&z+x4bsQ5ZM{$C8-;4PH5Ei-t&qKN+&-!&zehbg|N;^!*5lhpOe2jrXo zx3(JpFXI12^M4gTg`ZhY*ptgt{8mN$zlbvzzar;r_>EjuRuAC+#lO+b|5f}K{%1MCmX=mkX)TpH zm|j{9t`66LYdYGmIaul1a2?nYc7k@~grlR<`YLUtl2q!dQfErLSZS~orEVzQVGp(jF>prP4r^ zwpM9?O50Gwws1SRJ?!roe$p@D|0Vptv=gN}!(A*Vc$%>^NTpp>8jL=~^x*6$4Mo`v z4uiYH;f~>RU!@T$?T5IhN_!FP4flZ~;l7StJ~gVeze)$IbO7-vI2z*rCG&r4m2>9O zA?Sy~!{8WrxMOQyAEDCeDveWVl1k%MnyAu|)fz+Fp6p&Sj5fyct*99ucZt8|J= zC!n7QPlA)-$&TTDsM4t@r|yqqBM=Z;`yHv&;OKo{-?zAKP8_3De?SI ziRXVxJpWU=nWcFCr)1CnsB|0T`Jd8s7l#*aF5fEMrP32B-K|nmrF&F*h{oKj(tQN? z!x``a_@HArr&oGdrCBOHf|`s3amP|*6XX(RH=^MFg^IhRBA(+4IhP%!N(oD4hW8)IVvqt=}DDd zROu;|o>$5IU!|wvGw@mXoMX!+=Apa*=feeXp`&%R)$o!^i&c7=_!YPaz6xJ+Z1oBL zU&8-OZ&Hf?m)^FV(3jp(>2sCdRms)7l$`hA`|tz!p<`?9_KQrv3 zZ@9c6@^+KAE6WbG%-|Z~4MW+zowA3#z2uER-_!J9k9d2d?9(oDUwH?~+fUvodHYj( zfRzTbB_96o9cW6}0|(1HOx_`69%_16^B8$Y$TRqQY-tqFx|K&|`Z0!;J-#gKiaE+7YO_6u9ywl{JLjI{%8n*Lvlru~T z=J&j*^3IlbCi+>X2cvh-{9oR=ri91d`SPBZcY(Zn&SZLDJPWAdJqhx>U?(4INgTKCmC+nZ0xdq&<|;-^htgnxR^ zqC96x*l+XXeJ$?=dGE=aFYirx3*@~dFE|=sw9Igy;{P80?=7O9SLH2sXNtVntj{fY zUEUjZ?zofMDejlfytm}NBhUO_-V&=VbcT0PmYNctYwyeZRNe>jK9XntFV7vi?vHVr z7qtJAcFJe+zL57hnafNMk0|qhd0&|lJn83sqjGU3v>N}OUkoP?~KfvYiNBf4L z_Y?dX{sLFPU*T`?ceoP%q4I|E{#3b>yuVQXhVDrfSKGfTuP*ODi_5F1+(G44d5DGI zy)E+-@b*lLD_uk7wQPE)yk^+u^4cofTOeF12^}r41ow=M%U=(!4+T4`+(YFqDtEPC zzO$TeDtEUTBx-O!V5jm17Q0`vv(k-VPuL4?4BhiTuCzDoqw;3fIps}*a|+Qt0%X3e za$mTmV|X@|w^DgqmCgTE-p2G`Uzg4QRo>o|;8-dTPI8PzIV3 zcvN|?%0pEif^PmFUNy?Qp$s!6@UHT3Rn}K|50#%(d4$RlmG@NnaFzE``9PKTR@wD~ z`M=6`T(#P>9}50oHvd<7l${{%@#FGn3)~&~@E%D1aLPUQ(Ik0DdD=JDwkD`shm|g zu5wD{1UX5|3C14fG)l&lu%4XCMV0gD1=GXzmQXxXg69Uy6_wjmuBu#DxkjmPrQsIY z_+RCwDZv%3JX__*ReluxG1J2%5dSaZ|KYMvsr-S;b5&lX^3y8MSNR#0pI7-=mVK_> zvhz@0FeO~e0+nAPG9*OlyBj85dSaZ|7HBY{3H5L@Mri7TmgS|B=}9`-w9U2Kj5G6FKFX` zmH&bNI)>X=Sw)q#R9RJ()m7pm37cNw#!@>Wj#}Z z>s>{voUKY{RSr|7iz>ZU>8eUkRl2FNfhyg}?_v32%^RX@WJ4)F4#`qvQXTU5SUn-QX~|I~)%8fFt0Zjs$zby;a$#rHoW%-&VYzD(3&> z9H7dmRy-QzKvfPhCG4?75Dzsa_~o_A7*&o}<#1IdsxnrU@v0m_&N#~nu3{DQe^n-! z67GwmR5@0aqtTBsJvdV;$DvFzB{Q%DJjssmgh(T&l|Xs$8VX1!P`mnc@D$|0|c661EEe zuUt;%6{ZKSSh-4-8&sL5%C)NC{}uE9)>dCf{`IB=W53Fcs@$Rq{$DZwZ}r2iWZq^< z@Dx^Mx+*hOxkHuvRk>4@dsMlLoVzV2Y^V9ZD)*TZwsVFm52^A1`h%v2`_cSgl}Aho z#wwLrs^sK`vX!(dQB@ME#K?(TPI$&8QBtOa`_cSgm8>bWfq(O=6bOp{(^c_Q+f0?R zs_v++sOoH?s)}2-rplA5_^LdnN?nyURT?bYY`5%elt)bo_ubA^L(@&W7p(6QCFk5u_dm5){VQk73s`COGx$@$E3 z!Yx{c@`WkkKKe?PA5{4oJvj35|H^k=2RUo~-q95i0ME}nG($BRC}n}Pt^@n z?W5|3s`gUV{9o0cmJ_yZV-)j$RePImSLczcZmQ}Qs&0nf&i|`@QQG-`bt_c|sJgYP z+o`$@rQ2FP!7*9I|EuQz;b+h44yx{~D&}9^$@E~~Rq_AoK&OOHOI8P~8dG(Ms%NRX ztE!V!9jfY{s_v%ha8-x7OjUQc8iIXP#s8}#ObL$g>R#mRt?H4g?n68hn*Xb6H-A;# zA9DYqgdo4?huD0cr>)p5}7|Jr^uWrC{5 zs5+7L9tDqf43E9)u_)&MtzJ4_)l*eHLDk8so=E9QRvH}nRW1tEQ%nha?=)4XsCqh? zXP6%D->E3(|E*=uR`n`X&r$VaRnJxR0#(l==X}cv`_24c)r(9Cyt;acs+X&JDf(rm zhsWm?C|8;iE;~)thg7{<)fuW@L+Q2fI>`KgmHGcF^Z!-m|EtXZS8e{E?z&Y~=KrfU z|Bo^q-U0avaP=p>MT{w|5cso*g6vCk9$NqIsZdadD^?6n2vUdExYW}b4vu<-#ea<$@UAZithyH?NYfBfX z`iZIwRdx9T3jxp^g7leFMG;--2($CGZ{iE?f%VgYUx+;D?S~ zW!#>QAbEN6z=q z#{c$kdv!Vd(GDK__h(9fvC?4FQTyP*09%AfEr__w>QpsIWI+ZcO#tlCi3c2RAx zYUcl{4RQ?cIo5`t>}pDI{?>Lw83uPZJ-C}t+e5X3RU4t&eyZ)M+CHk`|Fylz3HAd1 zU)$G|VC+}hU$xPy9YAfPOb@PHwF6NOG9~PXLr@M??Qqo&BOYU=VLf9}jxZ&7=AkxT zwX0P-Qngc5o1oex)h4QTjA}=bd9-B)_f>27e+~Z+_s;REout|cWS(f5VXG#ioNP+i zs#8_FRJGGoo1z;2U&H@{IpG@qUo-z#?JRhj%w%HIKeq&?Y!`jv)cK#E$$v} z?LyTqQSG8|AW^$G=y{uCbk8T(E>rDF)h?&DE375qR$PTL&6IHM*QhpKwQE(oQ8oO( zc0D;akYh)SYB#BNt7Md{sE8q9Ln?nSxJ zl;GM_o1xl6s^R~&2Tc#Ip0$U`d<4#f_VPE?coAGJN*sf6)$#=P3OLo0s@comR7Rc)?nkEu3CwZ~cG6OOH8;7OFH+9^+~_PlENf9+XHpR>~7Gk$Fz3jQCw zEvL3XwO3VJsM^b_;r})B|5lIT|FuP?gnQ>T)t0G-|JU&U8vb8<)2>9dx8U1w348~> z>qxK^z6ZH@)jlBp5ZWG8?IZXx{6sZ-|FdeJ!OtD-&-x1gui^jUIr6pqwN?8@zAOD! zwI5W&|7+h{`@>^nxoW?w_M>VmRQrkE!2fIbe|SdQ_+RcN?QW@HgjrjO@(27A{>2&e zH)My}3H7gP|H)s)Mt5!(2YcD?Ab$<{_`kop)fxPvoWG{kA@cHcR?B0E_1N_edQ04zlZ!?Tm~kNVoGZ>ah@s&`hsqw4Fa-ie%c{$I!c z>#}-+HP*YR-d**sWOg$>nE$EwK-s{QU|Z@NslJKoJ<)r?jjc4;YxUl$Z>D-5bjJU| z_SQE?*}^h|Bdxxr>LXR}r}`k(w^Dt8>RYS6o$A|=iT?-Vg!=X<_SQUo|tT@26%|_5D>Jtvdc+A7wegcWvtUfBhhqJs2LM=IyEXdbV5=Xd`WSa2 zsD3yc3y*-~;COf>oB$`nqttNSb+j68M<1hlQT1b0zh3p@R6kesNva?3(zs&Yv8r;I!9Zh)qI2MIn`b8fa*87Emi&IuB(2i`YrHQ zcpJPOPKS5EJKy87v2Z&hcg^)jZpOmRez{!mqS&57(N1L!dWl^qc8^DkLtPn z1WdvdOhfm|MOT`2w6$2ASKS8xL1(gECDq?h-BZ1)dRg^~o0sd_e`G+_YpOr1I^+L( zz3b4isyAR0w!zu(QTP~q96kZ(z$f8Ta4virKI7?nCj27$LGNp;C#3ME`%?_ zm*C6r6}Sk#3SWbZ;p>jp19p_YsrnbHzoq&z)%pF$`jReRIxBkzz6+Pa_u%{R1Nb5Q zKky^?G5iF63O|FNJ6b<~*|F=er`WD9RbQ#Pz5ieJue%=Oy8RpYE&L9C4}XBm;g9eq z_%r+ku7JP7-{9|#wvAAAcM15@erTZn7j*MKF6O5P>i-h|XKbtjSA`wmYH)S923!-a z1=n`8?XqP%s6#=2@qjrG)6zsuqQT{kJ&A>_8S(OHcymhUbEKlkjqnoH=W z#s+G1SEEPQHJ)`!*UpRGd(lbW(4HB#rFyEdnHs&+=&i=aYHZTQKii!n?jUi-t41F+ zHnmZu`{3iQBbL9p8e6Kdg&KWrUG7n$InUa@ZuC=QtFFD5xM=}90A4;tjcwF8O^t2U z7^=p0YV54W_G;{)Mt?O1bg3@ydh}zqxO-1~V@EZ1vM)uti2`?(bl;S0?4rhCH3q6N z$mSXTnQ9wlYagP;r#zF`r&DN-rha!);L^^lhqij#t}hR z)1Gl^j5kkc90@1DiSQ_RG&}|#3y*`7;PLPTc%mb9+E2i!G1(E_b@-{)hwhjOck$`; z&lzf5qsA09&QfEl8fV(Q06Nq4sv2jjagH4r&UG8-x{XrfJU9GM<9v7lybxXlFNT-E zOW|eka(D&25?%$T!K)qJDu}P8RoB7mp}qWH4SooqaTD>)@D|AX{~P@NSL1e+>F^GC zC%g;Z4ekB^YTWDCqqWKQ?BPW555X zMnuiE)QGCFRE?M#PpJ`CqoPJajl3F3H8N_X)UY3aboE=e+frFIa-rfn*$p@w1vN?( z*(0C?o*GR41Pi*ceWR+zY&B|XxFgnAgUKIP>i(>TrW$QFdT|4@P%o^k1g`N)nI4b3u-J>W4;;-Orb(Y zHD0uTQPg-@jW^VIMUB_gSfs|QVVbMWs#>gu{rInm?$7FcQ;j8Ryrst5jDAO&hgjx2 zYP@UTX8nIPzo*7eYP_$;GBrL><5M+0RO4ec{*M|q^ApzT{K1;^iS?xWkYIat0T{YJWDpYfQH5F9SWx-sk>Y`?M zHM^?W&D!J4(;YVMdCq1JTg2J8qgA*e+z9rBz2L@bZldP4YW7xhbCf=CQ^>D?xnr`q zg_`};?CV5Ux@Buawjyn7HMg-Mw{<~}HMdifgQU4V3H{X^U z&4DO`;9xie?h1#hIYQ0dh=(~6?5^f;f;|Go#_+bid#bq?!QO$c=00lD)owxeX`<=I z|HrDizwN>10dN!?4G)9|sd>1X2NNISNN}i{hY{HCKiZ$wHdf6EYV!M!P5b>v62_}} zq{YE;(wvBRRIBu8HIE5my7V|&I|=em-swr9|6?70A2_$Qu7)$op^Er{=9{-WJ5pwbY!h<{kEL zc<$V(ru_trns>u{;JxrZct4y0AAk?Shv38T5jYdha%8=c)+%CZCe@6yXA{<|!8}zn zg<|tR;e1pxtEOv7PR*j4c}fdb8hp}hmQa}g3Fdp76*YY|ng40p{Er;~cKp=UY*VvA z+-#@MMtQWI^0?X_SMv$AO;K}>n(wLkq?#|Q`IMUT)SRp4vuZxgQqR~@!RPCy&Ht$R zyeZ+fyrAYnHRq!*Fg=(-ZN7+N^FP)bw$v+XzNzLSH5aRC^FM07W~ITM*(UQpP3C{X zZG213cht1`A2pX)X1K<8QI?t#_RsrjJ4Ve9)aK5e57jnKP1j(z)JKr{pXMiO+h5I3 zT_tLMrnW8B{G521+B&NF1@V_^{;TF!YW||;*C^k>Z{c^21mCOq1A)8w>uUQE{^UsT zvjuK4!HQO>`D;u6P0imCSGJTt)ch0WFZegK->$X4CC=Ob3u3jcqPA6AaR;@n=3=#R z7rt!`;x*w~aBaAbqy4#GnrrKXvaZ@TQrmiguD12nrdHfpZC%Le3cI!R?rQ6SvO!DP zFxWK2o@(nwuyLz&6Sehj#eFE+6mF(A>k#5CU|;*!ZDU(Mwe705tq|SsH@WQ!(zYeu z4sH+o!vSyyxFg&N?hJQP+aR?Kbg}(8r)nFlwjp+QxQU}+mbGmtnY+PZaCbNy?g2-@ zJ>gz(Z%2ZC;7GOYOR%5m?z{vEM5fs6KqKKjhDyWDcR_wiDZ&(ovDptgXij87Jv4I`bnMpF4nUtAK z+M|Gopzu)@MFj)}EH8fd?3?lbtTpSm&g^@V+_asOG8yEqrhbj++4!%ca=j?3Hjt^` zfZUVF-H6=1$lZk8?a1AX+%V*BVe74usqfY1Zlf|>6y>xs>>bFBKu*VZiLS5H=I&`^fQS zp}7zFmGA$|@%^8+!W&Az)gDBbd^CNPrkoyU_UyxhD)}N&{+sowsFLEnI z$)>d$d9~554{}ofBljoy7x_2&5BWdjl~HeG z{I4*-3G!PazbWGuVGQRN}x8gyqp3czXJ)f71^3> zL$)P%RBVj79TgV;`S!?5m5zJ|ZH0 zJb40nB6$*dGC7z$g*=r!jXa$^LyEd8z-Azlmi1pTC8% z)cT_&@S;|F_Xw@qgrB7eyc4 z@{^H&8+rPFUi`l?o_Cn}t|?DtS`;zfFffkvB+_REK~f1Dh<7WwJs#q)U3FPgcnq8IW}{ zBqK%jMjFNm^0Sank^d5T-v7;u|2LMv4E9ax|Lm?={ww5vLVh-N`hQ;hANg;T2_rvO ztXOu*dB}fDhfS2OZA zb>9C~yMWB;MpBMY*^#=iDGFPo&;o@mP}odb3!6);-Wm&AQrW6m{x&FVheAv0+lsEP zG|EuhlRJo_dsS$KLPr!@qtG6OHYn_bLR;qSC^`BKB!zZVb{2&_=hqG>?80DI(REc; z*bRj)D0D($4-`7Hb$4mi^IO=H%3h-A{i3ip3j3n45B09iGWVm>O%(kUdZ9ZCC!lZu z3P+-FAPT)v=z&5{6y*Ld3I{hE_7Ez)M9G%Vp(yl0;V|lli=HiwzEqBAmU$Ek$58Bt z!qE)+OKaBK0VoVYVIXyNC0~^pIzEod@uFl?JQ0QaQ8)>Odr&wTg;P-&%$!psNAKx{ z(@?kzh0{^E9fdR4dM0@mc{X_tc`kV#$@;&*`oC}?m5US^T#Ujc42F=Gl9!Q}lUI;e zl2?&elh=^flC1v=Qvahcl)Qnwk-Uk#nPmN6koq5mVdQP(aK*-QxPyvp)nf0GIf9h> zU-mLl?j=W(_lce@p9fHQ6om&-7=^+^Y<*Z-7uOj-LW=)qURQVwg(p#<{}-Co|AjHk z6#sAZ>KPPb6vm?PF$&M3@Hz_5p)e7J=TR7k!VAoQQS!6xWIUA#qGVh0ODMdG0_*?6 zE23vx!fVW&)J%B;g()aZM&WG~=>LVcq*eQNf&O23SCnkbQ&IQ;h4(m~_eIxNNDAWr zD10Q!syU25L7|MoG!zObOh@5!6zKnj&m<>X+Bs(CMalMe1BD_ACUr}6eJ)V2sgy*? z)=LG200jpH9|f1Kp0w(Uy-=l66J`BLjP-g68AqaLdrgAEpD3g#e1}343bRr80)?3< zNd1q3_Zg#Pvi>nXHx!J8iilUmEj7>$+-ePP9qXUf1sc%7UNp2-~ zH;k>xZOE47wj}R;7~3=6fdtu#Y)!Ty+mbtyJCW_kofYNCYqXbbRi?EIr@O0Sqi?&x z=mMh?j6Gn`{|)-Tewy9bllgl|zTWxV;>m%!RX4?eWi7-xFx@KgRwt@?xN@| z$~cfp4^i}9V;l@)A&j0d9)WQPjO$?Zf-w+AZx~0yI21-77>98v`oDg<$>>Yv2pNyw zUyP$*^oP-py7+(gJ~ZPPDg#8xrg$ujAutBPH~|Lz-#A`c^>NTRk@?&&jFTC&{x?|v z8?65g*8c|Ue?#hj7-y2K{|(mvhSdKs&Lz(yrT%Ad0Swmv2J3%=^}iwYzkF2nVq6O2 zY8do?<8t=l3i3*|%fPrwb{w@rC8qxy*Q(aWdb}RS9WaK%7zX187&pVXk;97r%lKuR zr2iY@|CzTK^nXMAAI9yX>#E66vv3~_)unr2(Eknkf3_s)|AzQ~W7*yh;~^Lia6At- z(;ucXN)-M38e=q!w_!XAV;qdfU_1lkaTsG@i2uWQQn5|9Ul~6|KCRf8$FVS;hw&`+ z=S0tXOaC|M|Jj_5hw&PW2{2xUF_HN%aXhaw7XODKabpaVU`&SbI`ub1*Y9RD-lWpZ z|BZKG%z*JOjE`VUf$=_!smu}oZ*1)!Q29_4eQnD47{+uMpHQDBdgcuDe?$Bq#^<6- zz(ar`hX5D_7zP9Szajn)qe#;K4e@^%Wf(MbqXNUB;*uWelk|T>{2xZ3m>o3?`oAIm z4E}8S`MwhavtC<2%XJ zM>k^u6`Aqui9TZy%)MYNhPgS6B{2Sgu@uG%7|UQRhw(l0e~|oa%s*23Nfdp5!T1@* zN*KRTmu;!BURJ?a17kJy-$c*W!dfc7i=wLnV;zkD!B`JN8U6;g{wb|lpZ})vk0{v| zxDn>2F#Z+Y+(dNkS7r+;n~9>QWo`j;N0?i}+#cpuFk8ahnmOAv%h{I7cB1GhnmfR3 z4HMK`iLQP|Ez@d4wiP8C|4uMF!fXe#1I(S-+Fn}qe3|rrbJu41yTRNYW+!HL7F|2G zxd)X!MbS@Mnq6R?1#@qh2gBS4W;Z5ug}E<-{UlQ_4Re2(2g2-5{Q%Lkx#&UVpk|pp zVGf3Q2+Tua_F`*qY0c(^{%;;my${(}e%EFmK^{pSMfM|)Ci|1ekORnpvHmyD6h$8y&9h-%3G*D77sEUk<^?d%<51^I zPPPOtq;ioc+NsP-U|t4u2=z-v*GFEH{%>9(O14z5f_VeXt6^RTlm2hg|8?DEUe7TM zmHccC-U#y+m^V?E`d=TTVctqb>i=wCHix6U66Wo&)rzAO=gt-ppT`&tUN5Gs2 z^KO`r!@LLPLon}!c|XjN9M63+o@@y`K!yIF&E3N=N5d5Vhbi@cR{NQcQh7|2Y<{1B z`7})Nf0$#)r=&HT_h(>^gEQ6sn6JQ`1XKJU=4+CZ?H#XEq5o&=>rI&Nz!d+7`L<+cTjsk|rih~Nq?qr)oCfoK zm>Hntqe`BsIFg=*`e^dOw(OdezDgNJB;{nVjn01&jO!~hWHOr^}o2e-JT*mwY z=1iDhDh1{Y(X-_4f0!#p$=1|rm}_B* z|HE7(x~}0(@qd`IwKV2>J*>lFZh+Mp=AW=y!TbxBGVQ-%Z4UDv=Kqh}Nd5~;-ZKwt z6B(zv8)&tFwV95k|Ed(XSpQpF%2ar?k^!x)VTu34;+AY}%UF$vH-AOn0T!SCQ6o`X zpp3aStoE?lz}g9x_&=;26|*&NwWA{bpWPF*I>71(i~euX|Mebf?Z(Vbl9?&H!|DNR z4_Im{d&1fq)?Uo%A~|}!Tl-My+DzFGR(Dw4sP8YjzWZZ||HC>^l<)O;4uVCiw+@EY zldXqHE6@A*wKuFo8HoR94q)|xbpx!vur7vm1gvvl9SQ4bSVu9lpJZlz>rdqvasVmU z|6%cpw>5|{um4-T{%`U6zs2kS7O($Xy#8;o{K}pvMzyj6|5n!E{7%l59>0;?23UU{txR)QM9XD zSHrpv)-}}W|GFl(=>OJG$<&T#-3aSJSU15M221=O)-9y?e`EZ&!MX?5a9DS->2_Fm zFt}54bnR-5pmMh;*;aiom67Cq*T)NMJgk>s zO`twe#-@)E*2`305k*&M)@!idhBXP+WLWfn>kVnuwWakY^WPFB+dJNYH5Jyo)an2F z_-nmK<$cM_ln-GohxHMx&tZKGYdS3Pe^}EbM|+O-DV5Je$+m|aECZJKKdgf2`q*lj zR4lS6y7-I@s|4!{#${Oi{}+q@|6;im`TsAL&$vp~$bhVqA<6%Lv0}yvnUYP4@=>cv zruZeS84PBUv&gT=+2q&c9P%4-E;*0<7Sh6vX8cbSH-V-6UwQc7%oqP}cnUQJ#@ zUQ1p_Uau%#Aq{k{p17WgXBZx!-{fbm#I90;usW1qxd+A^#3CLKifW^V1J%$*4w909E;-9 z)SnSuA47}JQh81keS|8$fZ~@ZzKG&yD2_w%Z4}3&_!^26P<$Ch@qZLwl6-x1D2o51 z_^K%Sm!!o>C{9L^{$Hg3XG@I!U!?zQ$1c8u;)f`{i{g7IivOcHwb_{8r}BX)`i+#u zk5HV3;>Xm*{~LXnPDT7b^N`}_C^{(SP^8rt^C*h{qi9G@<|-D7B^1T~QM5(ZM~z~c zN<|cXoGQ8~hA4U{)=>1>+N}OB22|>jzxF4_5sE2_G2=w^Y>G`(z7R!MAjKK5m5t0q zaRG|6P@KbruTY%L;A_dudi4#8-=a8|`aIFIb^RTc`J(6=zNlvBFBBJ|s4RC8TUq}X zmoQ$6;x8yJLvgvddo8ie*GK8e;BAfsLs>>i~q`1TzeC8Q?doQ8M!&R z1-T`;6}dIJ4cU_1mfQ~ZPO!I!-5T}|RG`S9l`Ki+Dl)k?u-h`&QCgL*uJhaNsO(I( zCp$>1`rUyHvMcOvusg!u3-)fXcZW^?w>!%`>boGP5-yW|FdI| zP5-yW|Fg=+-XC@k*z|v!{%?!_XJ>!5_&@A}$)3%I>V?t?uzSOv5BpHq55hhS_EoSC zhkXp}KCqACAbnvU!Qe<4R@Z5EKPpF){YBUNuRQ?vC9ns=J`VP=Y#k)6**qRkY!@iV#xJ*%+WGP)iUfE2!8ul>Q*T5bM`&zbM zM_w;E`uy6y0rt(X>HjwUU;Ca-|F^~eGv~B#gMByb;jmR7Zs&NU{?GPb`z|UY6x*C5 z4h;Jq*!RJ{m+?qN*$73ypL{?Rp2xv{2zCkf!>~VrJqq?z*pI+|4EAVdivKs((c`e6 zh5ZCAF&S~D>n9*X|O-1 zI32e5KkU!gx+&uvYy)sEhwM#{4Z6@&D|9AM6DvDVI|tQFE~n_Da}`V5{Z1n3?o{dnw~( z8fVo23?#qsL#` zT!t!bA&OqArL9nEiPF~8w-H^}45e+UY$uBDNofZvK&cH%tr)kKR=szW+EUq36n*3^ zwL@tTN;{*p7fS6>>Woqclsclc3p00>Ons(M+KoylQTW^rzwVCG9t`#rJsW2il=eqy zZ>XhR68}f3tF&qdF6~F9n<)Csy3`$|0Vo|n{Xnt@d64QhN(YlY$wSCqWN-3NlFxsZ z8ozK<_q%~XS z7g4!b6#e8(X$VS}qeTBN(f{@RozfM|r2p%ym!+#wx*er!P`U}FYf&1C68*o_%>PR_ zaHtz){OjIgd^1YJP@?~r=>OWCO1H6fxMXJA(j6#`MCneH?na6JUlRXsETwyxf3GO| zIsDRnC_RW0{l7&2&z8(X%zRifvoSw{l7rG{l-@(>QIwuW=`oa^MCoy6J|UUX8qnOj2a< zI!bRam`uKj(%UG#C9P^M)RDUMP8Q2hQ`m>8ijDpBeUwa;K0xVXls;su_+TCGUp7-_q9mn0O0!U+|Ci|hnP1I8 zX&y@S{}TN_8xQ@z^qq_+%Upo+K$QL;%F13AqP!VOi%?pQ(qfdBp|pgP5dUxNDc@81 zq1hOIM0pdGexkmD{F(ek?W8FEO0FbVk*mqy$Tj3z@^|tNaviyz+(71t;{Pb`M7AS$Cfh4A=pctn$=Q|cD7to}awnAcK)EyZ z-9^_&sPdjv_7X+!o8`Sx?uGI`C?9}wSCqSls zA0)c2&&xfj93o2AlinyFiSnT+_d)qEwjSOrzb};|MA6$%`6!h8quh`B(V}PLIflvr zQLdpix^x?UV`#fC=WsTa+EJc`7$NSCX~(H6)0aR zF(0B+0m@f%sB2KZR`*uAEq%LQ29#hZc>~HfHk6yF+)Unr@~sSpk#flh<>BP*DBqz1 znL5`R#kwr@@&WQe@*(nJaumvss6f_^Oz}~apFsIBF5Aat7WC1r z{3MkzqGa3K(;Liu(e)9z{1P)?CSMU< zcG6eL*T_jIzs}$dax(cQ`4;&$`HmukcTt|gU@G|@$@f2(`TplJ-~U{e_dhp0;S-c? zl&7I=pgbMr96R$V%AYa#TzZvly{!Ms1yQ&sGQmXIVo(%4bCnXx%TX?)ybNXWf0P~4 zB|WvHq3n}YvPK4Eoear{jLC#d$tLm(QvUo4O6F#( z;5sO;hBE-=-%yEAUW3Z{D6d6jAC!Mbr5(zDpaPWFq5LPx>p6xE&BpK-mA^@;|54_B z-ttDZ;!u{~|Dv)9$-A_b7L57(-wJ;pTH)`1EByU$g}?u;Y|R|`{VyslN&fz~BDcIz zkz2s1?4T$_YA;IjY)M z?}4eX{;zZrMc4V2-BH;Kl|7g#{;$mkl`d5F7DaD+m9D59ii+w|4^;L;r8_F!m?Qq* zdj49*2ar<#H-}x zN%Eplr61#?TYotjmHy;0<>VFQm8d*}%2lY0M&)X?F{5$~c`bPzDi5M^J>#LM+=0psjBg}wB5x*dA#Wvz zk++e<$=elWM^ltZ+)3U=jv((Q?;-CcN0RrE_oMQF3S{lb;15YG!NaJGYQ&G|@uTu6 zn;sKmRE1OJaq4tc@LF5D(|E687dzz=R@)%@?%t{p~Ck+bJD0xM}_bIQ3rQ5gEAxH|ES18p)suj zDi$gRbyM_gibX1{|MgL_QbwhQN(B`U75aZg{J)X!Ghgce|7r$Q0#sQ4S3=SCm7hus zXG>HPR92vpqVgRoO{mP|;9sC3^*<^zBws(RRGEd!TvWcIKAZfSoI`%2*yzJND&LBd zxyO7|mZGu%l|`s1QH^<_v}WsNF_k5vWb0)aD$7x!|5xb$+0yutnd1MA%%4$NkIFBo ztVQKlR92(1k~ym+CmZTFDr-dH*$}^~L%<&l)`^}?cLOT_pz?MPD?o3!`YVk+bL$= z?y&xMAd0?U?uk%Y!^6(z}Xv4cR2gN*$+-v=E!~|Hy@=Z^nZu`ua};40Gxy1i2uXs zA(?vlJM@2t{;z8}rx%bHuXtp&Z- zhKr)_#5s4sc@fT?aGr*97xPDuca!&!_o|Ht&Peh;H3>NPGk$=4kbH=Im>i|Z;1M{Z z89YipMm|nHK|V>2A)iu|{>!wUf%6=kv79>V|7^aVr}BbgV_lDfqw>eYc?r%0woYu; z`Z5*zf3_rFgYyQQNz`ALOzmvWWGdqS(hb=*-iGrVoOj?Xf%7h$kKjy!^FExZY<*8M z^|P$b2UNuW8_W4)I1Ax?LVX%Jo#gu;9KQd-;rkyPdH(~PJZD@51%5T)m~dENI~JTG zMVl;BRXJ`tH8LRUWJpG2OeSPXHj!VDUy?J(nWX#$Fr2Rx)#Mnn z{&!gaJFNd5*8dLce~0zI!}{Nu&mJxyxuIt3bP<=#V#UVNTMB0doMmv9!=e8>^#9E9 z=>LxPf4!!DhO-jRFB}i+|I8UyQCTfx*5{kf8n|j9uZ8m$oZsQBheQ8&=>OS1vVlX1 z|2KyE8_q^J|4{#*==xaTi2uXgL=;`4x-H;t19vmHTf*I(ty?r}<@FzTYf<#PyDgcs zElK~^eQ_dwGXa9=m?g#g9xZU6$40nIH2g2>n z9I5}aW1`!G%0Z&&a}BpA+}>~xq25dMtXK4Zm;SHM1>8Px`@`)E_b9kWF#kx&&z4(1 zDo2Z=pF4GrfqN|60n`VIp7nna+!Np)NB#I_I{n`j|Ied%Jl9~1PEGlPYV6g7w}qOowt!+jR+3vi#KBK|LL1(DVl$#J6S zYQ&uYw**)GAMQ&e{oj2>Jja!T3tTZSxRc1&$v4Q!MN`+r=%|HtL~e_X!*$L0HfT>8ID|99#CZsYww>Zs?^{9S|N zG)YU5K@qO_zdl65EpzTFGVj^CcH!R&*MsN6_2K>tw+eR=+#1~3a09qaaO-emxFLs) zWY}zbPN<}!=-<7%U%;IS_e<(CM9=o7Sya9fMOSg|*Kp^?*3m-IGv{0kcQxE4aDRfk6z&gjmoZ2DKf6BQE~g^?-x&W2xWB^vnffoH zXZs85e^>m!G5+7+Zh))&{|~rpng6@AssowyMEoD_dQtSz-~AKrKXCt|{wXYuO&S3e|X!-81z!|=>Oh!)VC*h zfOjiAFm6S*Cfks0$sNg^Ncz9GGvoGT2Y7?w?En`sgRXaG} zpPcQ#UJvFRL>??-Q1|QA8>GEM;2j6A7rdk3^@i6M-l6ag%g*|}!{POjF({)`+nBm+ z>(T!``oEfr%t$|Y1K}MFZvedh@Q%qwzEJl4#?+5x<{(ih!V~|8cLI4Lc@n&nC0})0 zQN6R&JB9kG@GgRP8oYDholfNpcxS;oQ_|FXan;ockN&T|$~fsr-g)pYfOmeg9Pxko zsvghtE`~Q0-X-v^f;R--0a{b>^i|aag*TCcTf3<4l zd{fQ)^)hC)JZ0)PkT=4+86N##Ev38(?-p4j>XL}M?&l4IHyYk;%p6YMPToP@N!~?{ zAX)!=_b|Sf97*0s-cLS2J_v6VyocaDtiH<3s*k!`>OCS~)x2bj=usv=Mm|nHLCPTj z-WZaH08edo&+zM5@>!Dp?}`7zdx3nBr2lie@Fu{U1aBg|SK!hAy_Z!^w&&{o+LQfV zdnN~e9o`!Zr2cR01#iLo6yDqLK7jWQys7ZsWzH1I(PzirdsN;RMLUD{A-qrEeMJ3Z z(RIz^O`|ehltue9{tTW4?{jzscsVM0Y1Llj8B|PBvS}6JmEqacOQLHp^~C?-Iil$L z&GX>*fak++1+NN!Q+PFaf58jjt%p}`StY#Tr0&hOQrtq4md_jIm&LC%!v&gT= z+2q&c9P%4-E;*0?>a%Z!doZ%wIpodqWDv>v7G;gw-Mey z)MbCqjxyfAqWG-;wZr=@;BNzeGx%G=r~mu(f7KJo+=>+c&$b!ACH(E-)Bk<(|LnhF z{T-Mo{-5>1Zw-HU_-){KfZrB=JNWc}U;ICN2ZB%k_uGq-^=B9OyTRX;W9uloKI`{8 zQR&<)a}W6Y!rv4A-teXVhu=k7b!Fv?|HJR9n7tv;-w%Fw_}!?>R-IkD@DHGJpeTAP z^$&u7HvEI(4}#wlen0q!z&`?hFZhQuxi|bn864JZs6JHsilVQI_(xJXs#(s_@CU%} zPo0N=Y_6sLhcEswD_7#<;GY8jc=#v5r~msWN^91`lbJJE6umF|r@}u2{%O?3{~MWS zQaMW$y>I&Gz`q>+x$rN6e;)h`;h)c(3nV8S+eK6^7Deyl{tzmcl9!3DuOj+az`q{; zmGG~De-&Gm+y6J7YpGl(imn{|q3~~le*^U!MbGBwW-7Nd%N&O4>+o-bKMnqH_|L9lIBV?$opY(rU{J*gl?t}jzeEPrtfau!g{D)KwpN9bb-#Y#y z@W;R(4gYcYG=Kjw$=5#Y)BJtb|N1$9|0(!m;XlpsJR_O{hpAUWB3d5KCh|My>oualA6)qg!m>s#t;dE2!ZMI!~0e>d^FR9NET|Jc~b2^LsN|Y?~Yxwiw&w)P={x@u$ zE3Mg{_$`(1MA27Z`~|40O-L`&g=}3!F6LbD_rLy9RCnRmW$?deAiw{DznuJ${E1wF zY76*0uk?R`zZU+lN@vqb_^TMKCVwN>D9Tro#V! z^yMjT_#4T8h1E^SO%>&%mQr;yDx0IaEvmf!FKJt%x)t@U$!*A%idlcE>_&BaQ6zr{ zROKhYsLI3tsJ3qCZBT7XWk+%+vK_fI*`Dm6C?Dz1uBdiHwIlW2w2o>gR6A3VQvg)= zXy|*Qx)+r$?MLwt zRC}S?2UR}*S>^MeRX+b&JzOQozMoB{FRFb0v&!c`tMdG(?0wSbqsjiL4q|W&ssk7d zB#%{8voDn7<4`@G!3pGvqN}5WG@Xp-LG@Zx zZ$$Mve!ZR?O5UK@tZz4=Di>Z*y@kA0TC=|K`cHK@sw3ERJF0gu(97X2$^5@1b~mcL z{!_h|IU}Vt>)ZX@uIT?91l5O7eHPV+QGEi{QK&wO>LbhO_+MUwxT9e}#ON ze2tu>D1*yVdIQx}s7^+;gzB59evIl{s7^ukZH`C$A62RUv!i)+Dyko#%KE>``d@op z^+RS#{hzsC^%GR{s7^!mGgPJiNA=TYt)Ej7|Idyl)dH#(ss?pabUp@#YLSX9O16B; zs4A1JpcLOG_>a72(G2=we*QzPmM1DbjNzNc= zlC#LK$l2uAn&p=y;mlBq9dPnJllKDJhu zq53nb-=q2?sz0!GxwNW#XR;)JB3Fo#&D}3lekE6mo^4~RQ3I;Kp|%OCYf$|Y)wQUu zL-luN{vnzASXNz6WrHaCH}%!OQ2igOe^dWQbbWoPx{=DiqUfpAHbre~)LNjn1!_Di zuSq`}ty@ZdZ7Wgq+No`W+IFb5q`qyl%>5<99hIF$(f2-T9Z>6t+Ah?06+P?cZm8{vS|{qA$=%64Bu8J1tFivCbrD5xfwg^5 zy9%|gs0~5Z|NS^rH*$Zq%24Z09zY(5+G(iukfTHGAo5_cCwT~J{ZQ+L+EM)48?{3j z97Y~a_96R{N03J<%14=rqD=8<)J{c>?|-fx!<+%+K-5k|?O4WxNdEsz?ReBqP+!F~ z)TL?Z+ezff_>huT{*>^=j8s8A{$j-l#4wpmq~^ zGkFVnD>;n3jT}ziPToP@N!~?{AnzvcA@3zelJ_afNBZ^vX8eNMgGl$YEeIe+I-YTqxLpxkD@jXwZ~9<2DQgg8-v;t?DLa~+5MN=Q&gn>&-TaKSk#_J zjrD(x^}jwVsnP#y^nZN~wl*HM*HD{)+RLcX|7+s^+1^@vg=2nI6kYSzCZRSNwb!Xj z{omN~-=y-EDB1q<4r(@P@1piTYE#%M^*?IwNsfN@zV-oXpQA?quZjPo#`?eZ32L9B zHVw7uGB%c-LUrrE_L=^Q8teZW>;GCo#wi=NL7JpR78TWYi&_b_uTd+bHVd^1r{$0? z$@;&>`oG5dzgANV0kwdvlOY+AF`1Al*+hOpeo4+CXDZ5E$k?R*M{TxZW4X;iO|AWJ zsLvH$ZQ+u``oH#_DA}@FfS?Czs_9qM7NYh8YKu@?irQl4)Bm$!mr?m%hRr-@Ich6V z`;q!jqU&Qp?Pn_Dme~^#wUr3eLSBX18q`*^^*3qNmm+IxsnGvx;{T|vL!c~<|Nm0k zfPjx^*8W88FRm>4{}%@TkpDw%BLjKJpW0Zk9h=JAmH<#fjs}I zK5Y)%2?3w~4EX$Kz~?^$*+LNT`OiR}|3uLE|CgW@0{;I?!2f><+Ol;=1f3D6QFTPn z4nYS5J0obXnq*GZno@gcunU4+#W2;SEw!xFF*n$a!*-H1bw6F*bqaQ;vIl}L2=+vv z%zvP|dMqZX?)3+IOQx#E*>eP4Wf@A}_CwGe0sTMNU#6(9U<3!q@(d0XMITLqgAg2v z;9vxYBj|~sH-bZ$(@S#n@iaJ;%3-2#?el9N1brDC@t=<1CJN>$C4b{2#$}qGahX1>Lbbfq*d>C!2<}C;Xg?IAEg`oO1Dz&x2>EOZ|_4{vXi)_0`LO{vW)^)^Rdywwxy* zn1o;=f>#i*{tsT3R(;e6#Qzb<^`FMldmX`>2;QJRxtT8hkKk=lvN6AlActTIf{zhQ zMeqRv@qYyGOOD#tB&Pod;{REd9(;n}Qv}o4I$iW^YyXVO=b~hDokvhYP(WZIFxbla zKU;c5Dz@Zj>%EM?ML_=#9MQ8rNd1q%C#$5?{|Ev_*>lwqBnT0XKoB8306~m!YXk}E z{~$;ae1)J1!3+dna45O{)0pB+Dsug&F|FCC|B2vh>T^i?e=rwywI9txAm*O5G*7Yk&D%)f?x^br6k|~9Ps_m0pI@|@cqxhj|hH6@DqZc5y<Fu1!93fu;9jrmH7QuQ1^8RN8e~{~BJgO!XWdr#q z`4{;&`49O&a-(AAko8SaZ;Se-ZLZ&ddJA$ha&vMEa!Yb6a%*xMvL)(mP~TSW*44M8 zvOVfxu!CZoZIs>$_11ECRn1*ITZ!t9o;1nib|iNq+mSny?a2=0E~xK{dLPs~qTUVl z-B8~f^-l7?xAo4b?}_^EjQ5a#zg6#LI{h<#-HYs^w&aGg50$Q{@7qxJQ-R#ItnZI{ zFVwrEeh_mGK>ff*P7gWCsJkllgW1%xp&ue^O8U^7JhY)7hWg8SsNx?KN3{Y=!={GNsSgQ%Y^+kBn=Uq2W1 zp{Son<$TmHNBsi%r_}m|vI|JsMW|oQK>VM<5Y#VaApS3#lcZfCu>@C=SD{Y-7v&n% z>Hl^5zbMyBvdsGpsEduGej~|4K>cRaZ;=GiZ$+K{FY#?uhNCY2FCVqd*VPKTOKujc zuQHn>P`{gL_mK4eI{m*c{*U_of-;XKaBdL3`U_&{}*wzzGp=JG1MPt z@Ps0RCsC*WOXgD|N(Y`n{X5jhqW%Ty&#LML_2IPG&F(_177^A+74lzqG!I`a7t<#rSQ}*@XJLI!1j;BlA5K zp#DDU7V00MuC|j8QU4fqKHi@V^$F_y+xPl3JsuA7X=4nZD-rb^>IUk0)C>RRP?tYj z&lE{3qHZ?^EI~b`!ww6j8xHC&>H+Hf|M$AD2SmM!dac<=>WwjkN<=+EJw`o6J&~NO z&rSa~W?6b)qCSI*aV9y7l$YhAKAZfSoI`%2$Y3t&^BVED5-4x4&u=ITP**oP)fg6% zi^#>~5^^cIjQn1a!4Kqe@<$P6oGZi_)ngm=pUGdyU&)oIui|X3CVwN>kZZ}`N%{X@ z)Yp;g$qkBX42=KcCi*wG)q#xvhj4S$HzHJ1|5uc76KU0zPuPOWW}@&)9lvgYa7zYT ziLQ^-;Wh|&Mc5MIjtI9!*c#z>2!U{WX6_)F`Z`$Hs#)BIt!+iowL!QO!uAN;QQui~ z?Id9bD!YiHYnZSj!o3jghH!U;o!Hu0TC@J_L1j--bd?x(LD&u9-qiOYyOOMa!~G;P z>x0z)2)m1tP5nTG7a{C{uph#M5FUo`V1&I8_GG5i|5=R`_NF5Be`C6bBRm3OAL@NY z*L7@oB$cB?$)<8N!m|(x03&qpZrKSJ^U?0#Q(0hJ3y$(GW^2yaAq3Bv0T z4ncS|Li&Fw{*Ul-@(Oh#gYZg(SIIo8ixui4$~9~i|8LB@m_Ndy+vRpwUqW~f!tn_2MffDbkqAd2ybs}n z27nJ@K! zBmY?{tpD}dLHGg{*8kx+$<$SJIDz^^QL=6LWrQV!uONIM;j0MWLiifOHxN!@=IfHF zuW*Kwsk|vlw%@&ta0VJeEH_M-f@H2!` z|0DcV^lbc6|0B#b%Pb(Y5VHOcP0{uFLdg0*Wc{!2qK0LJF~SPM0HK4>N9b~Fo(z@k z9jyPunkYPLU_u>X$RPSpN0=a-g)l|SXg!KQA{-5>ge~7k2xDnCT2>(UY0+IMXqD>XGZy*x?N3=P)1-Yfv znbB40`e+aqdCaR)?T&`MhMd_`>#?S!Z;^&LgmSJfi=f3&kG z`d&uV0nv$wc0qI`qFoW~iKru@&WLv7u$?4RJ6Nb*_S**QMw`1IttM- zoOC}#M>FUzO?tnG1|T{P5nUxZmaT)NRek0*A)^0BC#bJ&Hl>qCCn357(aDI;MKl=E zS%^;IP^Xfo$$-lCqtg+cf#^)Vv>W2t%sEHC>a+6bJVX~FI-k1uf3|%_7g3S=zo864 zbTy(&5nX|Z{vTZ~t$NRmu4MjI&6H~pU5`loAJKK9XKR`MABq1XV(}l{#Q0{((Z3Fh zZbei_Gz`&HM7JS&713}+_aM3*(Orn{V7~Z&V;PR1a~o?y)1|3>orUqnxl`~#!t8OCGDXUXTt=gAio z)gFQ9MMUGMj3+0M6G^H65xq>Z{#P}#D6b)!%&tyCB>s=+4aLS5{wAV#5WPkHZPBy+ zPW&IylxCUlAuL)UKcac$x2l{#^c^{$TtG^h zfoLJQh+IrAA(xWN$nVJ?$mNP{x({Uh6QVy5tw6K}5&b_B|3~yIxf0Q8M5|P+mk&iA z0@SsLi2fh_F0I)fw+_*ti0J>3_+duRM)ALvOT#239=R0nruV1C3hruBHNKWlkLe4 z;8xjMBJV60itVnihEEwNR({Yo`@~Phaet_xEJEH5cfuWEaF2EABFfZ#C;JT&Y}9q zPHmV-VB-HjhPU$6K0431fj8jZ}e5nqP*9K>Svh|fiQ9)t5GC!6|(h%Z4*|Bvba z`tE!@gqfE%%e)-%9f+?$d^O@L*-HP{N0#^+D)j$Y{2%f4>iUvgVv2{7Hz2-|!A<1N zmZ6DdIBX8sZ9K53$31SMv2)Pb~hA zxGIW1V~PXB5#l=aQ1ombV=9R#`kqeQgm@m}FA&c}{3Tn(|Ffe~Jd4U#i02^NH(CE@ zYvCKV&Xs&lmtVg{{2hb&qU)nuth%=v@j}EuAzp-dDdNSvdRa#0d-4a8|Nk5F z|9{moS9ccT6^MUDO#hF?{~POlCG+Y3RoQY7|AzQ4#A^_*M@;{Z^%njITi3}%m7A&i zBk=|*e=6#+@$27+|6w4G*I48KBI$%=6C^;gDUz*`v_P^268e9#xn%0)pV0pk@&Bxc z$u>x~L()>lnQZ%i<4m@vvO_ba6_TBiv_`Tck~VB@E3LZnPj;fxP87Y>CGC;yilhVe zT}0Q%xTGVM-9*uAA?b|dKqR{(>560zBwdi~$(+3;M{m^${Xe1q>#Zx<7s>ueSpO&8 zBr}^X{Xc2u|49!dhaeIEM{+RPQ}T6Hne;+(7?R%94;5XnspN1feMHIna0HruMRFw4 zl}L_4dJd9)NPb6hG!g?zep6ww@)e*<7DPUBv-KYO7bf5Y9zyuT!UmN66ODD*3?MUAwco^Hf^_T zy=*v=8<5u>N! zNxo%zpt|qYW=FLVKE;Hm73HIiF&T^GS?X#prmk+%$#`BsqWoV4&iq|zEae*?(}NG2i)2OjhKKCUHol_>L8 zFm8i%52S68?t*kjq&p*}|EKLFNB1*r&&&>@=wo!cE7DF#J5t|GbhR}~KRc7VH&gaR zdMeVrknV%D3tPqiv-wTCQrVZJ|EJw#t4{ZqT|B72jE zl7}HZ5$WMb2O;f)^k}4gksisWBNS!3N|pcjll88?s{Kyw(P@9A1CbtsbbwrSRJ!`T zm~@8E|0`FQn9qNv$IBq5iLED-gV}V7ilqvbp-w}3CeqV6zh}sD$d;S< zKhm?CDd!^n1nGH5pGJB<()*EKfb=q?7b3j`sq%l7f3f82qeeP}%B7;HE=lXgeE(a@_rImrv2T3;TRN06-~X2K{cq__RQM!AdJAK||1IVF-%`H+ zE#>>)QojF9W>fqh>77XV^0$;Pe@prDw^UyKmU&k?lKr_)G22hm2arCB^g*PfkShOI zy;c7I-(K(tmC>T;bBFXXq)#G!oca@@>tFVzW2h+q|8L8G2C3@OSft~TK8y4Pq^#o7 z=OstGM5_E>O>vwkdS6Z_AblC>MCva!%Y22(tD@-2C!K_JD$>`HzJv4)woWGBB;S(r z<@9YSiPhSX_+9E#6dT*Xdq_V-`abm!MAu%FIl#xwlxax6L^>U*gY;9RCeqK4=8=m3 zBh5*sy2~T6_&-uZlx%Dk(h|}lbzAhz8Ol^DqGWUAA`OvxNNY%awpOJzTQUKadb9ip zX^J$ao;1^&sC*%cJ{L=8AYF)bCepb`XCeI>=~v8|Ejiiz&Y|*6v!Ui8osU%fAL)0Z zXZy|qDrzPEw=XP0x*X|Zq|1;lVe8Unt@Qtt{;%&Vr9UG58L9X`QgOwG%hCT+@&CqN zwhB!*BVCQAo=AT~(@sd&plM5_Ymxqi^mnA|k^aH)tdpU#9&Vr_{-52;OaDfbvh;t@ zq^v{yAL&Mt{@*12pG~o;g~a;aN7Lq#(Xt{*R`XNL5{*R{CirKnuYD;BDQPl1!t?kgX51MvHQztaFN7Jro68}fjE|R0SrKXNl zc59||M$=ws`u|Lw3H%iE|Hs`Ty!1uMeWue{xhtZggK|bCB}YX$k{p#Tbh%Oqp&}(m zIf{~8so0sF+1=T5c4ua{LZXBm;s1HRKA-*n_VL)q^YPx-=RMbFKJ%K-&S!Q;{2#I7 z$rGehx2V`jRBHS`b_!xG5TpOc=>M_ilCOW2$66wG8e*+D)v2QEwh=p>${Ebm)1HOc z6^OM)tRrG=5W4`ewuqgJ*xAfHM>2IgkDW*5{2Jv##5y3>j(U61&DLE+|BqcQ zIl9fnc>Kn$t5JF*)(5d0IJX-`H?5*Cm42dV=a2PA>^8)1M(h^E2C!88znVXY%B`a4 zU+A&h5gUTo9n=SluFvwZp;Yb^#mspaVoMPlj@UDZ-Hq6I#O^`tVZ`o5?0&@VWB!Pm z{E<{1AV-l8s>(#{A*oXJQBD|p1hKJ*jb`Z>Me}PeM*okE6UEfY1jMEwHW9JM5u3#P z$E4J(+Y?kKi(>ZIRK%V{Y#R0HqMJ7G6czFR>YSfNY#w4W5SxqGbBN7GY$kJNNsgJn z_&;KE$QMZd|0^c{|B{dD2E<;bPXCXI|5vA-kJw_w79h3|vDcXMx|Euh^9GegHTiEM z_BLWmsJ|t;9z&14L*-pjex^glmLcXK_8wxNBlbRGD-rtuu@#7Y$js%EX=?8yDj$nt z>Sq;VpCa}N_0^)A<8%#`&uWw}5Zi#*mxz6h*jFrFE2U;W>!_@+$^Qm13$bsh$3!=4 zYg37fVy1Nw3lU2omP0IwSQ@bub7bqx9pJGHm8>ZGycWwNruIdFx-YtMj1rYV6w`(y z#5PeZBUWLsQA+i-j@V|zen9Ly>feiQ>S_y>A4SpUyVy^#)lT^t_UVXigQbqd?XV6( z>=#&SzwbcoFT{RDY$sy$|Jd&`t$u=WjQ$_{QxvnumH+>X*e)*RAJKIWB=(;u)^4Kc z^|$tbbpWhAVeJQt{%`HgoPEfB$$FBn&#l(}RK)+yabz6`>tI+1QJ4O|S(YXK535cT z?fKTBusXpy3|4zs4PjjXs}XY!CmWMTkVlgAf9q(*$B@U8$C1aA;{UKtBpN0^qH`oBg0H<=@u`9RII55nFJ)v8f4ax$#1U`>Jb2CS*D z=D?Z;i$k~8bXXk!wK)E3as1cf_^&17zp!S=1px`3gT?V*OU8ex$Ph4>D;Eu5y#Q+= zgBM}(SEMzUUwQwhCHH^A;!UB}JQefnd{}b-C#=`13U2|GZPD{w1Zz30#jrkP+MBSJ zFp$g0u-+!+`OmQA=1*8l6&Wmp^&SJc|C7N768vw@D`4@`jr9?%kD0KNTt$9Dt|sOB z4}&$Zc>Twc>pxU@3+VsmxfWI#*4MC7u-3s!GG{$3UjMOp{m0_Ld-c#wY#s75&QdMLlqeu2D@Q3ZUp;qiPZzmWadYZN0LX8N0Y~p$CAg9 z$CD?JCz5jWKkSpqCgdq(Q$^V>DQynB73>z=BJqFYF!rfbP7_5R`}P^Ihr>P-c2C%6 z!M+%FYuM+*ZUg%q*ln4Ac1`}dRL&DcyOw-74iS- znh%D3C+s2Ahl;L$bJ^nmu!o7F&yx1tu&2Vl2lgYd?`7$Iut&lc|A&3QWa{gOw)j8n zQRIWGJz)aZB!=6Qbw&-SG&!Hmy|7y*=1bYGO zxlnI&uwQ2BD^jZ83vAD$GG7$^e@6Q?*l)moo%%x2^*PsGL}hV}vIKF}Fy4Z_4fflx zy&Cqru$RML3j2N7%Q)40GL>m9A5i&F6tgWWV6TMz5%rHn*Jo#Y6_rm!(N{w3 zPhqczy$1Fdus>tz=Td6gz?W3MBG-~%lj{^46wYG20d@@bH;lg(-Lw{qiYu#1Dr33*ySCcfkG&_OGya z!v2k!ze}cBw?C--DT=B2zhVCidlz+jzS(#Gi4xyUGWB(a_#TMwhxnd|?}PYWEZw`N zbYCjGVT6|ABcE;#s`S5YchTi6^Np@DBb|^OAxO^{6fSJLA)X2hcf3d$d z#4kd;J@pQv>sA`Sm`X=cOr2bccsIm5A$}R+omtvNO7$L$v;QCODvG{F9q*3#m5BFX z<`trw`tM1lmni!9ieHWR>xf^2_+yA)i}*u`Ux#=<#IHyEM#OtF{|3o7`??Pm`oF&J z9lr_jL5TOKelt0M97x`xXx@Pyzm>{uOmif50=M$NH7HPq3TqNxa$8a-bD^0 zRsUZps{gNe4|y-C`u|E9K`Q@O@ksIkauoTXVqK??7(a~oc*Gw;d@SOlxej9#%`p-e z|3`eBD5mBoP?<SN z{2A)cif)$j9F>`(m_0Qc@s|;Q9`P3upTko6zrO1r{t}hBignGmGJXZ|`G~*Dc%EW) z&I_o#R--ILJcjrih_6I^5#sM7z8LYh5Py@IOC;0m*|({@L%vHcmH%|9C|dbF6Jb{CmXd|MBmb zxjQp|Ah(F3-wqJp3hxKRe?meXgFnMOjH&Gl}pQ^Gaoc-bK1!rG4;{R~= zky2etPCY97iK1P|sSoEMI0sNaP;`AQ+5we=MbS0s)WJCk&LMD)fO9CEMsN;ePD9Dj zZ?bUc|4w63%o2};b3B}*m`VS4j$wSPI(Xq6Cx@`gl=uYdV*b^+oeZZXoF;IZ!8wJc zO%=^kKpioEI4x@OTfsRU&Z*Q-6WweJ&EGjw6x~a7TEiI#rwyE|;k1Qw9w#{)&N&Ru zl}uB^=fi0S=K|^%imvbWbm;$%_&=PBL|3yn?)v>`C?_uTqrrpe*PbIDOz;3#T`n>$oP@%bMtCS~@pSxsghOabGz7;q+sC zljypIJ2z7qAd0>^>f8e7UO0o`425$moIBvq{~hsvH?L}wJ02Sw4nAm?E?W8geOeYEJN zb&aL+s3>NCjfdmInE>Y#I1}N_f-?!uQ*a)GGY!t;%zuKMEK{jl!JR2^rpje=<%;r^ z{_i{~rTSNi^E8|paOnRI{a=r#IP`yKretd0b7sT&5YF>(-h(rTOA-HvLvL|pa39WG zQa%4)#p?P0im#ID`Tr_b&;M6kK&t2et61Fvq_~h&5C2#3B1Hy^;k*e)J?dYHOW>&I z|Eu6_DOKwuv3mZ$&Roi`%c}bOT&oXc%}u>6hx0L<71Tcx-5m8RsjL!3j{!NW;aG4! zg|imU8aQ9T`HVR={_lKAMf~6NpPjGad;@14b@6{V8>Cb%Mb=aNA5P3D65DV*IB_@$ zIP`yq{;x+j9QwaQ|4+->!b!u)!O1Yr%6v=vwRzXYhmQx`*%l2xkYJt#G!%`H7`JOR1^b?Nojd#jNeG zaCXA^jk@@M^|dn(+P%xNX1`dsXuM&)!-xaRzNCfu_av=&_-#co@; z?cknG{T#UG!#$U=oD|Ga;L`tH`oCFvd$@z(c7WRv?nTVMSn|!bUqa_T2f zUao%T!|h6TBfFD5$ScSz$)02{@+!Ff;a&~5H{5HeTuWX@Uau%0wI(w28{pmuw;$X- zTw-6XGrp-N?PewqAP17S)Rf)|cPL!?zk55Uy+h`s4qJCH+#%XwR7JtPlcn^3cNpX0 zaPNhCH(Z*(`r)jOch&QB?}Ix+W+GG3|6TEaxDSw{Nb!HT50MX(^nX|UAMO~E{_j4@ zcpN!ik--GG6Ll;<9^J>_z6JMjxO3q?0e2SM$#7@DoxL@}8!!+jm@D{$w- zeU+v2q*R|r+yzu#6U7`~3*jz?`v&zzqU(N$`zDnoqUiBQ_ieZz!+i(thj8D8`ySk- z%vmNm`uy(F|J@Hn(Z5aH<;+<@ek8i?8@MasehzmP+)v?t!qU}Js=d@*L*+A3jGue~ zcP(7{zx$Qw#(BPG<~mXISf{%I31ti4Ks`mo{T6N>ZVYY`t_9bDO9yu2HFFUEhbui9 zb53zna5Hc{>gk%yER|f1Qh-~A>%$G;>gG|BQvK`34VfQ_V)jl2?q;|fsnh?B(|$+g z` zHB{a@EW;t=MG|C?TVq9GEEk!VDn{;#i?C61tSq-5$=oj4ka3y?SliB?D) zi$oJ7jzi)^B#vk136iOM9f^~uoGglNKZ#S2XpTfv>diz~hoNj^3sU^Qy8fpk(FTdr zkT??w@qZ-FkWw=r`hSA{uaB%mTO`g!;%sJ~BbmAlB+jF9z9=U1LL|B&(GH1Ak!X*^ z#Yl8u&P9@=&+LhgR4x(4%%>9)mmxv_PjnGopP>@$>n6I2V(OqIyEx;K>@L^12o2g#q2=!>Lk2K|uu28o-Hn2kh# zB!(ezGZMEWF#w4{NDSn(x5%_+U))MX{J**;cOWqoiNVx|)MV2C6XO4-w~!c)#7HFW zM&dpszCL!^NYP3jRM@cyaL&p2{Ff?v z9f^g^c|+0kloE@P_!5aXk@yS=@qZ-VBHt$8QH=_TcgdxsbpDZek9?o}fc%hLPOcz7 zB0nZqlB>v1$kpVhroA`xe%Bh#9COHfIQVy5+w$RZ*Bk3>dva}?yL;Y zMc3P#6#qwZA5rwOlJ$^$3(5VEoQ~xFNIr~YeI)CUJOD``c_8x-s+q&VROtWue33i^ z$x%p(|08)A*^q36Bp;rfJRC_ixU5#`2qc>!sm6a*tj2#8)%dUCF{B#*Rk0fXRaE1@ zifa5 zyqN4rUP8+ApBZ#QvNMA&vMyov0u$lzuq2QU~&-XgmCyOSxs70KJG@$F2w zgB(l_L2@XAJ4u-e$ze#|$6z>;cQd$$yjQWh?IWnr?vf)JKfuz18Porh;{Oe{?9Vp# z2$BU11tgzm<{Z)Wxjsq%PtyN& zFDv;nlCLBA3X=1Yr2i-9)y!uB=kQvMvJlC|NQ(a>xkz;F70EZLi2qmJ;B6#hNWO#Q zY9!x9aygPqk$fM?Wz2j}GR@jb{~yT@MKMSB3M5w|`4RPxMK=z!ii-6A%~)0PQzX|S zxdzEEko=6LpG&Ek&zDrbs!_g1as!g|F5SX3LAx|NjBGnS9W{jJYEflMBZbd~svQI7LG|@RXq|QL#JG4Uy_i-ay_c>nvg)r1~P&AE|yw-9%9xP5OXRr8jE@sex)f@=@1JQiG7X z7pYr0=iA8J$vf0#E~EyNL&%}zo#b8QFr@BAYPgDJFDS|+atdH@pI!v#c0V~1snJM1 zfYgIXjgnGz{Xw?tA@X7J5z#-mMkqyNkQ&S2QF0tPo}55VBqx!NDKdB*sVA!OWEH3; ziqur3<|8$Y3Df02!l@^bdJ!r0{7&l`;v#Y}`6ju9)HU|D ziuv^&q~5K@OI5%veGjRXNWG8La-``0Df+)YBcxW)Rp|dI`oGavA@wOz;{QmkmS&@` zkf+vAq5r4o|Efq`(@TAcR2-?Vkop#>wMeZ;O8WmuiT@j)Pi>$g{$Fi-F)9`**MFqJ z%Tx|hiY`)lq}cyY(f?E8|44aAWspjXU2DfqWs%CM%aV1wy`hPe_&-v<%u`=iPnD30 zkfQ&m=>Ph>oTC4y=>OW)Q=8x^_t*^YSfsu~O4<1LNd1fy{XZrCkJOJO{Xa$jH)}5a zf26j{a`o9QwF90qUg`fM^&3h5PwiAEETs7S=afAEnTPpbH!5Uu~mG^Thw*@dV-V{a;=^c>5{Qv@|KLFYDm3p1lJZA0&;(19>n>|M%$s z9{t}tlse7dYsgs4AKu|)V^aJd-jSsEKfI$!@qbwdQI3Om9=zk>oel27>t#|OQk{j^UN3|C38hCx+T??-_Jh}b@Px*hf z-{L9%SBmog|6k|6@cP5+M_ru){(l{m`K!zUqUcuY-2!huyg~3Dg?B5wd*Iy$?=E<^ z!y5wc4(1P*e0|N?8%pI)QB1uJqcWVlTXa1Z@7)XUL3sDU8wqa&OYfIb-ShDtpfXAn zGoOdxjfVFy^+!b4*O|RBRK|*;``F$%cr)OQhc^x01bCC-O=J%H|DN>!;qm!z-V<_a zRuigooHvE~RQalV)ZTP>Ps4kX`ctBtJR&zH zn^cyFV(Rd1c<;k|hx)tZQgRvHKpwO%>m$cL{okYi>)x-o0^XM;Bf8FhecMY;m-C#03z{EYNL@Kpa_ zx%75;f5ZC)-XHLGaGvykkN)rR`oAaF|7A=^UDfygWX@l*6z)@g-33n?Exdn4*Y%&? z4e5Q6-W}<^klsT|(|gvG?oFlU`cJwZ()E$vkNWn-RV5A!% z-2mxBk*?!Zhe(dzU+KfBG!#YqM*481k3_mL^&>>rM{)WnDo2Z=eIR`-(oK*)4(St- zKAxo~NU1)$)AaxJ$)cD!oC4J=OE+a^GqO3^LPp}!Es<^|KCEn9eMC8prKc;3A~ka+ z(jOpw7SipJZjJQ$NVh@y9HiT_^lZsATX8Ox^J*0OfBHh|?L^mYCfxz)&PZQ`^d(4N z%+iiEQ(a1h{%`WTAiWIf%cx&Yb|t$ZJqGFSNZ*Qd52SBE`U-W*K>A9uC)tacBZrfBllLfA=XM{J5#;^kNb&)46!{?e5cx3q2sv7@I-jvfKacdINKZq0981TO z6Ud3=B=RxxaqSh3Cf_07C6_8z=kuNlkbYmj z>YhgWL!?tkFGpIe9_ba(XQlMVlB3Ub=~YO(NYnq*;{Qm0O0H3dC(@shpOasZUy@&u zYss(4b>w<-1Nn_2gKv?JRbvZjn_|4GI1FAyI>F_N{~HHRdr138r;*Mfonfi?zvRn$ z(*M&1QH=8_F+`gFpRV!$bi{n|e{(G;y%Cu+kluvM-bimo`gf$iLs}X8_elSU^bgG6 z!a3_Y*-C}|e?2ac-iGuJq_-lHs z|Ct*9&j6V^WDe%s8pzyqeP+b}kvWv4|7RM?IV;nMJe+Jy9zh;S9z`Ba9zz~W9!DNe zoRo^;tDT z|Ig6>xei>nF38aTGvfc|Jf7)>%#Fx&N9Jl|dLYvinJbulrR3-xraDBCVY50j6OqscLfQhQSRC^D0g8HdayWX4mOKu(k#RRfaq82LE) zgy_oUM4v)VC8v?o6~!y0^eJT27Cnv3On!X^nP(ZyAfHo|{*q+QB4?A&lXDcsqonjj zWL`x^XU?VaGWm++sJ?;Z%p>QM3&__L8*Dt0@j_%iL*@-+-a}>)GH+8{jLe%1mXL2L zR%`4XD({j@$z@V%YV3VvRw45NGAoezkfqC|)YO%(nUATj6y4O-CsbCGpOR~&)YR4I zP|rEfe1Xh57JZ4#R}9vYUrVN`tMybikbM7d=36N>b!8!wM#e@)9qD}kZ-(#x&B*(I zt98Zq|7Q69-;BKfx4Pzh|8FMCIp;`eKh-+)kv$k0WnX_HQ$pqkWCCP1GA%?VVo)Y4 zGL>n2o2YCizazhwQd5&#kogrEwfnXqvz4Vkkv~h0sn6|Hej#^=Zt7Fr4yPvkomB6C zRPi5DYU=YZWcNnqZ)DXQ9#zpUWd33BFR9-DSgp@2TX-v3yw&n#PDR=xjG%|X5YQBl4Bv08802FTrkY#p)>BCFp2s7en-wllJa zA$vNq4Us(_*+$47#iGNJZOq^Z@<>Hfli8!G977&Us`o!uYchKRvMrE35!q9aJ&C0! zlT9Q?*JQRSm1bmf(REE`TT*F7o=To3rMf1wXCQk4vS%WDHjBJp4&+6WqmSZjM=F<)my(^NR3F9JF31i<_A+FzM)q=K zuV6w~WVwDQRz?KOb(DzQ)9OvI}F)D$PQ-Ft;pWS;CAv3$uu=KgvwCzPVz1(H8nOI*%8Rz zP5mD7Uh+Q4F*SBSm67BFq}l}Y4dK&mubo*(Z^m%F=1%bjdNb_Y{?<$!A12wMYNYivJ@!lbj`` zruLpkb^)?;kbRj&FChCOgO|v;l4)x16)LZi^T_#9YHIH_WEUg*I`xI*8{{I%F||kk z&n}_<7WuZ6n%a98Idyn0MK*`*GGx~>;XP#EXYc{}A-SAff$S#?K0=oMpIynXs}!rX zx*FNfk^PkV8uGK6(l4ldNq$wMe@$f_xt^r|XX*dhZ;^E<#*nob*rfP>b$_|YddMcI zC&^SzX_`ug%+~06_KouvO~cQF1H**_WlhV1VQc9MT6R@>NL$o`A$-_&=J|J0QJCrWNN za`*q~xjm`uMea@RL+(q~L+(HZ`ysbKgZktFil+7E4nnRDIq`qw4kjDalpaFmQ1Y-E zy%BO9kUJc?mMm(F9Q{9cB)=X-9!(yD+=&d1MeaBT$CD>0n&TpO5^_zEJDGYD@|2p= zW>lJ!Eo$^uR8A$u|B*YLJcB$Fxw9FZg(8JMa(x-}BX3ePE|I$#xk1PcpgxeirKa>&Dz}lh z*XV;KmP#Ii+)xIp|33k_yO0}&+%V+sqc|M7yBW~`bN8y)I7w~<_4~<@r1-x%-g6Hk zHwL+fs6R|TLXMUk?a#TfR30VAk>jOQ`*3a|a!(;Q3ArgOdJMV889YHwmQ3x#xv5m9 zk<-a1rBwTH?rG#^A}9Wj+_U5i@;S-TKAf9HWj6UdIY&yh59eM)E=lnvTxuq;! zM!qLGruIId@*%lgbbWTqeMIGBawSRsH?_JNx%J3>irkkhT7%qY3_d5nP^{MKS5(%L zUz6*k)YR$*wHl}5kS>{!Qr0TJrjYZHSB)*ruNmaeM=p!}0m$W$ z`wcne|C^92AQv*hN3O`ALoZ@E%6{bjWPK^stu%ii@+TpG5b}+Y2l9t9;b7z&FsLIB zk$l}d%^yakA=!vLTuOC~<&QxASmckSPXEsz&G;C}(KVJoj>_@m3FL`Vs%s{HGV-S* z-vs#A{ksMPqXHz+cJeNFA zN=?mNK;=T@uSdQe@|Pjs9{Ecsc0m3j1{aeZ6|40_|Ic@#-kIzorKWx^NB%10yCQ!D z^4(b4o$Mhwrhdf#k?%?N5?!~b{MA&hA?g45>!j4wTW{oVLH-8h#pIE{5&1q0=>PeC zl4>wlB*)a-5Gq5-JITAG)YRK>k5aazFAT8HoQQKT76c+8F&m|1fp>e}1%-nmQbd{1eDO ziu^?6$1!I-IYDwv9ZsV182Py9rVb}lnL_Eni_i#`BlijkNgVcKVT{SKfhdZOpSd+o&KK} z|F72AC)8JypOR~&)YRDL$j6ZX0{L|;`Vx8ie|{~$ivL$@Y(13?K0Ns2!%!{0EI(PIGCjk$U4c<^-wsJ%3)+f(e*J^IGjpj@(5D=-_%dx zXcU^Fa1073vglY8j$?2W2$fxm6ORP7@g;P;zPQ3-$l58b8y7mg< z|0tYJooQg*GT$i9%ZxE<)jK6fR)eIVhaV;5_ntnab4Lg;d&+?a2;O zYU=G`6uP3&5rxhuT*A^z$xf1E>a7cv%gD<`H}%$yN_SHHAB8KVRJW@_PZau~&y~_ z$uTwd5Ec4=;SteIjg6r`mVA^H|F72A1Qeb`VIm5XSu_a+`hVeZetkkRO^r>VGL@W0 zPM1@NsjuHTERlW zmf=hFQRB-6-v3i@rBsis6;#d-D5N-*N2bY)-1||;k~uO@7D%6z8}?8rkpUT!5m_cH zF_j}kF>7)Z{1f3H4gWa!$FTHRDb?HSA5Z0k8s#MTr@)u{ zf8aL}-K+!e|M8oNqMt+Pw}9UleoOd0;J1R`8UCs8FM-eTUth+5;h#aCNuEWvCfks0 z$+O9GNRI#dGX4wye3Ik8KF5Fkc2wGv9mtEwi%F>~@i&>4~W_}9X}68=^2d$LrIhBL@_mU9sC>MUr$}ef2;fGMk;+o z(POxNKlpdTzX|@W@cY9b2%qD>{(zbsj{o{H{#)Hgx4|C_|8~yp4$;jva{SjHDvG}6 z!M_Xs2>8R`-vfU*^Y5<7zn98=qUirM`}e~i1%D*<2SnFTHt-*$@(}qj`3U^+@JFjv zfa6@9!F6f6i>j4}Xrj#ahMu`hsMtyZZf?;J*TYuG+=$Use=d;#ZkAPk&{+0R9sAufbmo z|8@9_;4g&#h9s!^NuMgg=eslWO^KKP!pK^=V$erY}X`jLWTw;|k zU%!O^HT@7sb@oH}GBf-@>=y$5?7fsoA2q3gFB0pUqp7`~-Xtev+9f z$u#wlrjn^qauTaY2+GbXz~2SmhyN3NbzuGgzXX3X{DAcnk`Y;Mu>EED6>=lFNl_Is z{*F1{>#vNrr~?7Mbf4gF6@BOBj8&8S8~!%g_k#X9m3@=*C3j{2yxbFm>a89k zxfLhL7QH`^F(3X}l!t$!*pzHWHYZ!4*ir?uI9VC_|1b5^P;86h=}`B~7y19+qWu52 zZeK8s_x~4p|NlEb%N{JAjpBJIo})|&#d8(wcJ~>dPhKF3dgGy#wnOnU6x+*QD0V=x z6N(pc4i}Rh73=nxh~gzEUaErX*UrrEqNolKMSi`U?22Nys?r_B9@Y2?mR?ErM6s6& z)TZ(4)hOP~#i{*rEsA|nybi@1P`sX{y(Lrq|3%jDMzW76^5{IJ^b^l1-bD6Sl)HIF z8Nkwk&aQ;z-qXNAUsaz^lC}@q^+d#fMOQ1jUC%RQ4h*e6$402BmbY ztedHmaVX9}aXg9>q;%;P6xCjsisB>`pFr_3uC3hv-{6Nqj3<**6zl5qx$(tmC_ati zbUA*DPm)i`5v>-tX#k4PPsitLpY=gR8s=z-$PD87Q?d=y_*3X1bYm#I{|fP769Y1OYws}@~O0Vpn#<^D5- z@tY{Vjp7osw;H zp4=eHNn06zi(&%B7>aQeEjDah4xEPV89VebSFvv3e~gnTrcq3>ay-SlvnDXkpjbjN z%bL&0NlkV^9>oF!pJbQG?45v0NJeCttdJWO#d~EYn^{-ik>8`J+V&6Xpg?hp?us)O z|3~pBX(0ngGTw%g@`3FrosHrzC@E{*fs)Gk6{X!!{0+rF)iV!K{2j%e>LLS*e<;>9 zxr^~%DE@=u-*VP2?ozC4m}mSi`JbXZ=~0!Ic1LM%sqoSsDD5e0SlUbWsj4oC_d#ht zl=hXHEY(wNu;Y8i`;+xWQO{kJ(gS5GRqZkrP&x&rgHbvhr3NgmL+LP-4v{S_9V%PB zt;Dz?*{DWojM8x^9f8u(C>_bU9VK(#z_WJg7%In#^5xTvk4NbwlulrLqUc|r!uVve zi6~KmaZ|Dx*&L--D79eRQnBvvdW=;)oQ~3Iq8!NmRXT(EnWD(1okg}rsSSg+S~mxB z=^TpZlIM}MgjDwgB1bQQ&`^;gE%B6tX;>rl#|bUjKlQ0k4+2$XI>=?;`` zL}>s@eNegyrM{d)KSlHJp;CV;(*JLeAHjGaN@}6(|CiYRmy024xwnzh|Cg&_q6|jq zZj^?gbQem}|3~RgDb>GUO2eo~|6f%F<9kT<|4Y?VfJ~(t-b9o}qBI(%2T)SmGK!hf z|5pbQWA^_`kBFjw#gxXNG!CV)EPYgTvsUA&@DyN{I|-#}C_RSKWRxCf=@XK#pW#rN zLS?Eb`X8XB=_oyo(v#Gm5?%i%rSuGyXGPJ!e@oAyvP0FqiDK5D*MCZ{P=8f){d=l3AEm`8EkJ1@O5*=0y)LEt8cXR7DvLxh^LZ1c zk5F1dU9SJ2^ft-&zm(pUb6jaDxs2rdUrO@+7nJz&7YRN@X*rb@itiss5!esC+33*N|V=q9oUUP+BLtsgn&TIVgRD zl7-T@Eamkdv)61YamhD|i&6@u1ofoo`np!hqmmZI)L|BZIyQ3%4n!%BU@w#kD5)*- zQBwA+{9mm}i44e4H3pO-vP@RUjpQbBGx;6)J^2HLzp^`Ahl|42>B8lH>b0tDwVK3{ZwjU~8{ zN;^?>+Y34%xCy~U2(CnMF@nnwbVSez!6nSRv?jANl`f)~I=mb~cLZIjcN1ND8fxi1 z$SXuKb=VWZ^$2<)xCX&hEWKJv&01Yc zMKA%uI4(u}zdHYkR3?eSvm3uYjzIh$!DP`*JxoRLEP`nWobfM79#7ZJ=y@DhSo5X@zc_`i9AVj%vHV4f&u zPc1;O5CQ!^p#SUZy#f6{p#SS@t-+fJmLXVz;2i|?|3Lh|x~JadoR^AX_R)I?K1A?7 z^$$eX|K$vpQ<46^bmU}xK1O&Qf|Uq%Ay|cABZ5y5tU<7vrJqWs*=l`Ue@>nLAAG5b z5PU_hCBG)uk?Y9~qzPco$?~}TRsRllMq1}K_myDYT@eK7gS^_bzMSrs)J1k z{zR~uTlXFLJ^2Ht<@KLHhO`iDC4VA+MzDjyHU!%d{GyL#*}szcD}tQ}enarPv@uoT zYPq8Sq1a%c@PPb9RCev{1@R- zK4x3Q{}E0QMW3z0NeHJQd<@}agpadS{NIdKg;S_Z6-9e*I33~B2-*J++5b255&uW{ ztYoVFBJpzw7a*L8@Fj$^5Y9nJ{}1W^W<6hEru6@-^Ph|GRfOXI2wxH1%uW0s;rtrq zHH1qLzK(Da!i6jq|2Jo)a50rPMKRm{7Q%NCivJ^gM|5rxzb-|%jKO=N>)uQF0m3B0 z4-tNaa5=)&2v;CniSQ$4ek_^#mrl5f$|qE`+kA@fbA)TCi~pP7ec=~Wz7$2Dal*9- zV+g-SxB=lhmadml-M0z9p(6c%^E)fF5IP8L>g@mPGgRnONhq2(fP^W86@(r_A7L6{ z4q=8lS;gwo^Hd6=n3kq0Cq!7H9*A!Cdqkxyiaxi78xbnI*o5$Vg!KPV{J)z21M|0t zqWkdSR)pIS{zUy}(e-cPa66S>L@}-6*MoN-gzz_PYlQH3d_NN5PHa;3`3K6UAp8@N zYOa4F>VfcYL@H+&qIwAbL8RQ^U(SvGAMGad)b$+gfoN|;drD~}N4i<7Xdf#3)+qZS zIvCOZhz>+lpQY^ooB13>1(L7#QPcp@p@{0JA0oPb%6)Vgm4>3|I*blSbTOjFh|WiJ z1fp{g9m$-d$fL<)R5Bty|1;wAKcnNR@cEw+pZ^)1L`A*-QDrtE`TWnQDdT2jbFu~5 zl9Y@8h~(j)3{FFII)gLh`gU|C$tUMTtr@o=+mdH1%7l`6F4yxsMbjpu3lOzObRqS2 zigmm9V%&keNU>Vm9T9bgegjJ+{eMKAq*NcFQ5QsA5nV?8a?y30jHLgMsJke-g+x~% z8iMFbM12tTM07o(UWl$ibQLq%|JO%xB>sWAoN zMB@L5`b(+))f3VGqk*EBy*UWc?TEzx5#1)bzD5+?K}Gz(+V+MbdI-^-i0(sl7oxin z4P(x5$x(Og$Q2P874OS%_%$(QHJ|vviJ>ni_i%(aVTlqCQu2?F`W?R9+QDkDf>K5xs+G z0irh$vHu^v&K&Xo>hZV;(Go=T|A_vt&ma-|?UDF@b^h-nT8?NbqW2Lk<9yzeQhmOT zKA`fUDCS6CfoLTny}v%L(dqxuCpF5aDDQ=64I&%SXNcAz`W(?$h`!)F>HlUM*HZaf zrZq>wdPLtM+CW|Wzq<4o6-yL-buNk{`T>!HD2d2rX+lcP-b_*P$TZ1uoG2?jx`^-p zjrjiGs6fRh`P`?7@BfYD{lADpk}naC%8aG|k7%PJgH4DwGx(1DUUXAqTToV>^COqO zmHbIjl_L6?+=gg71NjMnh$BbQuZ({qe28t>HlT%f8%xKW0-$zjdDE7 zC!u@-^%F(cM}7HZDosSuEvMWR8z-UM3>%xE+#KaTD7QfQJd|6ad=|>BP(B^yQ#sXX zGL`n3@)=al6h*shxi!jXquhpiThaAVTt0`&xi!l9C|`{71t_;inf_mHC#9_XE2%a=3mO49$!-5K{FuOP1^dy>7#t4Q&Gl&>ML zCB^?yzFtv2s`ZxX|7H5W_Q`TzRCb}<59L89--Pl2l*Rv1zF8*G9#S4iG7h?;?kh!^ykJd&qmq`^XWb3`n6ol6-(1 zC8M|H2T^{Q!9(WCSoskN)bDq-IWox@l*gj1THvE7Pe*y2jB=L8lM_&$jPgXrs=+*t zvW)-A4}W#lwETnwY6B&I3OSXWCOK;6QhQHIjwC!qK8^A-44x%tkk64bInP<-Z1Q=T zi7ZG}%L~=`MG4fkh4Nff3Mjvf%10=_g39hFzlw4m<#{NlP@a$Sw*@rG@yHLtsbN=g4-k^?Ul-H|)%eup6qx_A` z*&12bb{NVrlpU1${`a!Y^^D6ptEYb}s$s{ni*kZ`QWWK2vRxjTCNpxkQaQ^wrzksA za#V%?hO&?HCX`h(j#yD8lmnKAlBw<|l+3caG=y@6@kY_rT_~b&Mp?|CHP7+W@(*0r z7V<}OEBO=oGs?f9yba~;>Z|M>)!t;?cA)&L%twjpbx5N8&iU^oRsa8Al>b!5h4NqI z-{dY{uu|ebGL@A6C;64#6lGsXyay^5qOvC{r=qeKDo3KSH!5|g?1RcdsO-y}dgOkj z)G8|VN!DcLKoyG%>;&SiX_s%NR{in;|z z@dDY2>Y%Q)Lq#3D?NRBEN(WTBqjC`{m!iVwKUX?(TB(g{P3pbVnR*xUGV*e9k4jgv zo6KB&)H%J<1C?H=T)~_x$)1YU?YfG})ucQL8I^0v>rlB76+ZvJ(i;_d_`ftc^--Qs z>4Qo?27Tpt6y+uzsICGkH={BWl>t&A@^v68%Kud`h`g0l{;w3}|BA~06$g_;P*L4= z^>rvJck(2n;=528R*i?V^ltJVsAexG8kKV&IRX_vptUlxsz0D~iPfdE%7f%Xr$IgOl7sviYvZcmX< zD{>Ccpz>@ro`K49I%du+wS!QZ&ANS_oI}1q%H5%;@CT*@bF2I174ExN6*>7lROX}d zAu0>xF1yNW?Gb*`zri^@`Q zFlk+Ut4rlQPW3)2A2j%+skqA0Ep=Ugqqv-0A(P9rAES~&WhE*uDyvXggNo|^t2$YY z%BOP7$_Z4jwz~gEwL^9P&qvZBtbBpWm#BOrXNt;KsH|o1wIYLcsH|tOK`W}w^Xs={ zjI>CbjFXNctBC$zq5qpB-9sgd3jM#5k#$h(FY6=zk4jz?lj)=KD=I})enzE)%8#hf z|10AEsIdQEDf1YtkQ>zoqOytcW|H@RR^N`Ip$LlUU$MCA`DHEa8qs$o?A)=h=+KiGKe|1otQP*W3q7grD);+03l z3W#Dy1-n?Wfq=aiP!SQuhQ0S*uq%opC^jruu!5*q0Xu?Nc(LtnwwKi1<%REmZ?fO|29c(fmM*Q`Tsb)DpEH8 zZ=%ir8*TpIX!HL@oBubig;Y1BZ2mt^zcx}f{~w3fLCWU;Esf3p8`q_7r*($y{V$`v z|7EoKf1}O+8*TpIX!HL@oB!Xs>yrBw?xAw_G}3%n=1q~>9I4(4bNruNnWp+k;rQP= zj>20ZbqG?H;qFM;_`e@g+ak3+QrjuEFH^=>wJDANQyTy4IzkEhBgOGQQag*gh#LQ= z+KvBHdmyzRQhOq`H&O$XW-p`leT6mtPwh)3Db@Z+9f;IG#U4OCp3g~{k=nL6{%@^2 z2&v!ox42dNvyn`}^o)Xf|kSz?B7m2Upux|U4cfwWcook+cp)Llru zjMUvojYrD--|{j4H=6(d@5tVd)I&&_|C?_9|G#|9|4n&BH2=5oW8&lD1n~*+NpYh1 zl=!qr^GE6#ak4l?d{%r;oGLyqz97Dc6st78C^I584XHPgdIhQ1k$P2W*r$@Kw$yYf zZ&0!4^ti>hka`EHw-ug2J?Vq*N_me;(#}6X>T9GvMCwzdW+F8kDb4?+%>Vz_RzKES zpHPYCc~Wzb`U0uXq<>C5=_6lC(fm(x9OokSEmHHO&lkU8`Xrz4khY%wz4RZ%9~o-~ zoBByyApVThLIoCyzle*)Uy)jY)Ne@1##6sb`~xX|{~4(`tECF-`Tvxj|4-@p{}lb7 zC1=VMQhb;bsWejZ|CIbcCI3(56va~jQhNSBrRV?6`KgqV3X!TPtofgm=6_O}|4C{7 zC#CtH6z6~Fs9Z~vKdHLHn*T{@{wJmRpOof*Qp=g%-jT8N>6MV)9O;#jZbP~Q(rY5E z@BgRu{r|MS|DV?P|I_;Ze|mMTwFYyrAq{irENbd0-9_QGMTi=arn_30gJGs$7wL_W z?xyg1Vs~+UaRYHfaU&z0pKEO*_7HoDy~It$-r{CP-fv?1K1lD1^cF~OkMx#O;;nD3 z@HXPMVq6b>EzI`Ab$1YV6#I$&#ht{R#a)d2CnKic4e5Q6-d*86#686U;$Gt3;yy-> zySUbV;{M`5@c=Qd)q@m1*vS6K^qT)k4~|NS~&_sYnl3U<6~W zV2nK-=`)c&L*bFs<35-kCFLwCu}h@SM*3}}#~^(n(&r$39?~}cw;aZ{OLM-I3#cUJ zya?$xkRB)fV(}93QluY4`ZA<%SLNvRn!Z9&HvYG4?V7@PHPZBdq^}jPGb(UB(l@li zHzIwL#G6GM|Ho-`3P|e|V3or|aEExOco))lD{zldfqRj@uN5ATG~2E82gC=(hs1}) zN5n^st*-Gn(i4z=3F#*&a*IzQJ+T#j3Td`a>64ItrWKxy^psZkS)`w9g{LC@d@K9{ z(l5s0w$THSe%ZoEPZM7eUlm^yUl*qv*(#XwP1Vd>teN>drby2~dM48EApJhl^8d8_ z-#me_ABZ0^eR3RUA^kDZ^navhQ;%n8)AWC&Kcy1iGfjU6$4u#SWUO6%flMc)zeGBP z^jAnPLi%f@zejp5(%&F0|4-BZZBj+~d@FuOB|a0Se?WQx()53%f1;k0@MkFtsU+?E z7o`6}dNIj+FCjQPetb{+bxP*%~EKlp4nEsQC@jPexZzcFg{Fi#t7t%=AkWyo}tvPwH;Rb)0pW;JBGBeOa(KxPeO)`GpG!F4+` zWt?ZGi@YxOjm{5+Ueb-tk+IiADN!WY=F$h$ZV+CjTmc#f9A7^*n>)Z zWHY^_Y%2Dq9@k7}b7XczrVldlid!JFrP6H0G|4`0gG^s!ww1me^<*pCOWA=+eC#s) zkU15Z{>Yq!%ub5c_&>9Y!n-0f2$|iin;^5h-6Tb34{=X%fVh{qx44hEuehJMzc^4l zKs-=9NIY0P#K@k={0EDNibKSq;xO?r@o@17@kpZrM~O#^$B4&@$BA*86BItts69Ga z`*;d#BdPP@$efPM2o8Jd5qZ1VpM z{lAsN^%h2k{*TO!;!Wbs^kJK+%iMy@tqR;G-Y(uD-YMQC-i^$?3f#kO*^Ec#K3k+i zGL!p}nSjg#$ULIVA4KLM1s*oW`>4f7k$Fsk$En9(C&)a3%w%MqMCNH^CMxzR#wIm0 zNy;-+k~TjDnU|1xR{C?|RPlLaUf^0bWt5TsTRF|jGA}E3nlZWN&Af`tKghg>%qPga zj?BBrOh@KzWH|mu=1uV}rnfq`iS*12Deq8;@3dy#L*^r7-j^=_&(QyonQ6w3%q-fw zZJpuS(m&?9Nq_tlnLm)3gNzyeXNvutvGKKVM&ths$N$KDEzT9^iS&PDz7f9_>Ho-R z{GZYIKl7uMpTq^?&m#RFnML9+;$l($pZN`$-))ftHY5A^5@h~F=08falw#5*|B^!g zXFp}0{~}XGCWTA^nKUw4WHQnnrb&)tPKx|L+0&vF`ad#dv0`kcuOU-M#zn?jnx|O$ zf7ivs6qf&I&PQ-Mz_}hyM>r$ltODnFIGy0^ z4QEw2o4{F(YdNcnYlv&IEjb$hI~tZa8vi>Q|2t5u#{Uk-|8UyGbw!Q;9gY7TjsG2u z{~eA09ghE%Y$H~?voULxIne*%^b~uE8vi>QAv+xZ!`WQyBW@vT{O@S|?`Zt*X#DSJ z{O@S|@AOs5?ZqA7><(u~IJ>~<2WKZZ9RG82oB4D6&+^zbva_p{-KZ!59F6}SjsKki za5(s9;-vihz&QrazAE{C;{HYj2EsW&fdj>Z#Dm2{#6jX<@lbJyI8;;{a1K-WaFOGG zI7f;{iANi|E}fw8vEp%5;@0Av0Ou4qCrUp_r2n^C$f5Dl*_5aBM|3GIM=|T|HHYuT}t{toa?B>PvAQ@z?lT+MmYDwxe3mlaBhZk z8=PB|@>Zs_W5=~_7w@1F_fzLCIQPQ2TlziJ<2SsV`=pGglI-aNa2|*AAe=|wJfv9p zfBZzE^QaX1e`{M4;7o+`g!Ct=+X;nbp#Q^pnu@h0hM$4+I-JRHUW79R&Qv(^e~13x zO7px@zCb0(=Os9=z>)tu)2Jsk|Ef~HMkU$n>2ThK^9G!^;mH4;w-}r3m;B#(he~`F zcHV>YA)NP>&j;=DnJHx!m3YkW%tp2goR8rwhVu!Wxo|#(^M#Vlfg}HS5RUxcq5mh(raJO}hyLF> zzQ4k8;QR*XFF3!$u>$;Iv2d0!O;SJfe>i_qiJ!c3{)Ur+^N;j@sV8-nmXc|gG7HCr zlY>)%L;r_U5Q}2TUdx43=F7R33By(CH7+JC$3u2aIKFhAp5Vy;9nSy5sf!J46WMi;T_4%5$aX`vO)1x9%D5$D*OStnO8n$rb^~NLMs`E#8&Qv+gv@RtrANDz zy^!4!*-eq%9NFHA-HfsEvB>t3vIUj+9G%??*#nW?TKYEPw&HeTUn2)6+3k_tLCTI| zKe4~Klen|Ei@2+}o4C8Uhqx!Q`y)F5*?o}ROWE$t@lUdeeOrP3+KB^^rT@nYvOM(2 z9!w?fq1i#mjzM-XvPU3$D6+$l9ilWtnI>*&*~6q9-cFJKXXXFdqZNCMcr3D`kv)zn z?WC4H9@!J5%m1?{DNO%I_7w3{akw}_JWZ7UXX*dQjug)nM~P<{<5r=?v$<&J&FneI zUWDwq$exevSVf)3sJLfk>Ho-HNF}}s%Z@|#Qe-cdehKxY{ahyHaw^HXSE6X`=PKkJ zWUof94cTjuU4rbj$bO3Kb;!Pj?Dfb_K=uY?Z$|b;oi0}SnZ;^7VcpG&VMyG)6 z9SYxx>|F}T|Ficfe6M()NdHInexm{pAp4*K4~Y+pkBEyMSNC#PMj(}FTP+@;6-F#Qs8BAn)r(Ns>s)fkbT|Ak}&*+ zw*Dr!p49N$$bN{d{6G7SV&4_t6XpL|`M-7t*_p`BMs}8BKQgxZormn_$bNHo+sG}^5qg?~ZzH)Izp{44cje}9+q2bIK0Y{dq$OOY)h`zNv)WdB0;Uu6GQ zO8S3tPRypH(EnS#*qUV?*{t*&^(4=N6#73apJgi}>mplGxGL5do9v7Ee~7FvJ)oXA zKqRG3B`JRsxiyhphFnKv|BKv8$Szl!75~3hZe=RD4pic^XKoebRzt3n^i`?H<;<-v zWeqAChiI`ga%&+64TyNxhN#B%uvaQXeY)&QFi!G4ri`=fZTq_?a#v4&n|Ov2OxJ4atF3k4sI77gxnD12AhK1 zq3!gc$en`RFzJWII&z02cSI|EByvY7_Gs}K@mNvcU&W%Pe<+y1xB{?GqpGh_MMz0=h4WW-3pIE?i?jJH&(Ro=c#_qHzwyq9{LNB zyGZ&t>hU-;cL{Q4?3W^U1#*`u_HxGBhPcX=;#E{)SIJ$2+)c<`EB!k0dhrH68k)P2 zPlVdF2E#W?r~kKF)NRPkK<;+ro=5HuO2d z^`u|CfZS`yy@=d264@XEpk5~_nmb5e`||BO8H4#ApVS88o7mb*@)aC@fXVkxy9nI zqWuNDDZh(e;K(F@;4$^RyiwTRjeUz2I3;W3349tX1TulP9TP2B-X`-*c6wEdKn?NT;UaD zekD=acvReI$~F`&8Pt1|3$tV z^6M$kU0mO&zy`=~sDLJa@|ygyxfia|1NrTd@2PMvaZ|CkxS6=Q*hkz#+)~_1+}fzX zHsZG8c4A*6CwaJ`9gyFViwyTezP|!Hi93tC7!}wR`P~%QUED+5Qyd`fCGKr(Wxg-+ zry;)|@<$-gmw%BTC>|glD8|J&SYbW4mLH_>VDV6+0z;4=+6oVoav1W5Q%QE@NQp?~o{6)y0p{SAKnQ<)g zqmVyK%4qTImOe&{=OBNs0%KeHd0IRl`3qXgh4EfUA17Xn{3Wf}OOd}!;^pEME&WO@ zUL{_Q{5388TI8>jc)fT-tZOeg{zqQ^pQryLf2&ys^0$e)#hlm8-@I=A=I@fO`@ebK z|3&^@k@tU*ACLTV$n*X$^1At(e-Qb}$UlVqQ^-Gz{FBH(g8bviKZ^Wg@iUMtj6Exu zpMbn>{@R?gxi=Nv|J5S$y8ml88uF8n*Zto_pMw0e@iTW%m3}tp8Ni~DF4sX|B-)Fr2i+Qo%{^sXCnU&^6w-6u3|aHo<8Aj<#q^nWcbKwjhj{6Z}*5`PgFi@%D$8Cjpq=MQlS zmH1qfUyA(S$p0z*FX~Ckf290NB|b~$)5sT*&meDx?dBmcble-(N8 zf1du|+G0&9T`KXpJMW{=75M;#PRNJIFGoH?zKMKYDI4w9T_%P5(%S9{6gr@=67>Sd zPRT4;p`(;lsKi?-tcpSx6jnoFO%zsF>>7++c)Y@$#kHt>q?#5cNO|e*-6}4)ce1MT~Qc>g5Liv@cmyD z_7L|J2Z(!#dyD&s`-=OC`-=mO3LJpKfeIWX9*n{vjIta0Hi}^WgT+I|A>vSRn0T0Y zxOjw-ZIWvpg~E6gjz-}k6pm5(j}?y-<^KixKMFGcg3P}l^DoH!3o`%0aHXODqi~vd zx+woI$o~uUe-uWE^8bSTzaam&aYbPa3g;+R{$HT~qagDyoUbtbAB78zJT456Q#mgd zFA*=5F8?pc{|oeg6lDGdnSbGGDfE97t`+6~1^Iu0{*S_q;!Wbs;w|E>;%!DN0}8jJ zaEFvT#k<72#e2kiMZN!J{en5)kHSMJJfPA(XiR1%3lB@t_`jg>f8jAYbK!A1v;DZa zCs0_3!jmX`fWkx+rlIf@3eTbNGzybZn4}yy{!bjEFh$C98vn;`Q+Nf1w@`Q$h3P1~ru6iGmW0mmhWI9x#0}m?;awDFNPnlDPX9-Nh2NPnzQ!-m|530Ntv+LC_!EVHP@w;#@Hh4N+v5fLKME--@p-L~LBZ_WL7|2M z{U3##DE}`Mbli(#i3f|#po~IAfhra2&Jsm76~)z2?2ID)AH_8p8@H>X zT1&BuboqZ#{$G^;$M-CXZ76Pl;<`%HO_cu^yW7+&itBR%)^cNbL&a`nOj>wx6O>Lw zu?LFZqu3M0(@^Y%;=U+uisFta_C|4Q6gNY03lulkx_!8AQnoFnaQ-Lh9mQ=>?2DrO zzbOBY&(y{3m6HD7+HOA-cSo^5io2jF|1a*`E_PR?-;GM#CX0KZxEG3hN*_QyzVBAt zTgpCE;+|F955=JpC|;u2OBoxt^Wx=Ft`M&jui{y+c(r&9iW5-0R^jW!>ruQ% zfg4b~QGuJpo5fqiTa60bhT`oC+#%lC((lsZ-CVR@S-e+^_le`h`^5*u2gQfPhs8(4 zN5#jC3Ovq$ojZz8Xz|IGJ`u&Iq{PW4Da`Nxqc~ZdB0eiVCr%Zg7he!xM3JxCTmCUo zoQC3SD88Z^d)3%#ORr0rP9W`gFVg>8eP=F;-=H{8 zvGb|NU&$!a|55yoO42WWKxqvWe?&2h;!i04h2jDfe?!q4{4XdjRQg3spOksA6psH} z`~EwMmggVRmrze~UMhv-|JaAM_&19GpqNJSUoFc2<1aB|Hc;w-ViU#XC@xd_|1y1YOjl4T z$^T38f9p;5WLK#pN~@x@ielye@$oIKCS`Tz5I^x%S`(!`QRcaTe^TaBS1E0x{J+%A#-lh&{z#;-+G6aWipqv5&Zg zk-zvRa%n4+wpJOoVcFt(C~b$*PAK(7X-Aag|D_!mtJ}3G^;7!(?b7dz(rzg2BAx!9 zoZm~kOWA`;JO(QbK@2;P?QcwX_%D57#p{f68#^gBikuQqjVff^8eDY)NKZjX^t09 zpki+{P&oclor=;}l!l`;3Z)S!oq^J6N_jfhO13ys%9&E0Qur*C z#-KD>;j^j7cW_GQNI92Eaum)(=^}~eqjZ4+^8dJ}l*XZSDM}jum+1ekEncRS^8eBm z3SVhaC|xC9EnXvDD_$pFFWz8O;70K#F53HsrCU&{p>!)sC6sPM=}wexSI&2EyGdWT zOUm8iJ>tD6eTLF~C_RtTcpDs|bieq3_@MZZ_^|kh_^9}p$iIL=$=?4p+WWsod;ixs z5v6BQvcNMaJ&n>N6ZyGyyUJkfWR#{*v9cwt;yLM46On0NKSdgDb5lp4JR?}< zcFHS#%786OLFsdp7E1pDr7yMaSK`;=TydT_U;IY=R{T!FeNYA_}{|xf7S#0U|E#^m*oFRPjOK;oApo%QKJ8&6mYG0OjV-) zqonztQbXY;AL=eG6ZH&vX}Q8H$nr|!%3=qxqqvILNnBN2Oj`FrB_d$6pl(&$wC1aB^$p6do|M>d1ydCUa(Q;pI?uc&Io;94Zbo@@L;6FCVV-M~Fv?M=8zG z;xVHA|D)w*|Nm&T|9>=|Af70mB-;N!nr{F9XgpOME{+iG{~t}a|9>=|A&xZK<`f=< z^4Tb#rLEKdle1WPj1>8Qnf{ORSd=e7`8<@*=WM?{JTIcG$$tymo2un;DF2J{#V9|B z@+BzWjPj)@UxV^xC|`-P{J%{9Pi7j+S1ISKsl@Lqm9Itl29&Rpem(W1J=`eeCMxmO zbomyP??(Anl`hC>nb5{9&DGyMI&l=^2P+pAk z!zh1;@*^nENBL2uc}#prjJNy>$}>^s_#frh#Mi~?;v3?d;#=a|;tcT}@m=vf@qO_F@k3*4-)Bkr zNSrNxEPf(>D$Wr#{x5&7@E78j;#cC=;#_f_v6cTfQoe1ce2?-%lz))^qxh4!K%`eB z*N^ePD3*Vr5_@dcCCJmXzv)uFtUO8o9v`7bGdi~mqhT2~6? zU zqFh(X2K9KHSzadPzf=;RT!BhwR8~S|6;xJcY^8(Pk!j)Zq(LeKqQFAE~S% zWlbt^Nh)ihvJNU;q^~W4vGFr?m9D6CL#0hR{lB%=dQ!SmiJ$MPY=FjMR5pZLLS-Y= z?m}f_R5wCp6I4v^fy!y9^h9M_RC=MZxmMp4mEH<$#(d)at@J@L9mRe;qgDEgJBd4syNJ7ryNP=LtD^V6DtiB`qW8Zl zdjG4U_rEH7|Er?+zbbnFtD^V6Dt!Nob;4~OsO`%CD+epg_rFjXBo5~Hqbi4rL&Txt zF!3<)aPbK7NbxA~Xz>{FSn)XVc<}@y%fS3kLgiFcPS(~n|C6+b;ZjBzlX8Q*_ zi8!DRruW0_iqWS-d=Km|2|F3BNzoPm7ist_-n*Xm{Pv5I({=cI6|BB}SE1LhW zX#T&#`G2-0ro3I${C`FB{}s*uS2X`$(fof!^Zymj|D!TqykC4kd{BHy)XTpWz5H9z z%fGfEoByvoj>`L}OhDx&RGv`EC&h^(2brj7cBnE*;b+9j;uP^&@i}p-_`LXn_@a^h zn)$peP7_}dUlm^yUl*r~`u~^8n+ogyUn*}aJVSg(d{=zW$ZKsQH}L@~A1W|YoF#rF z&K5rwKM^_jM`e!qnfST*h4`iTmH4%ht(58Kq4Fat^HKQ@75RVVTeh5dX0r0VS_}O@ zxk9h}gvvrxN^#4}M94b{*@~D{C6%<=+7h9H6p%RZ&D>YQ?gU|GT zR6Odj=U3?esDxA!H?E`F8I=aA=Iu>XmZKv7ugL%7*@?;uu2o%0l>b*dux_nltM&@O z4hnQab#+wb|5f>ae7>v7|Eu!<*cqy8p}H=rT~J*IRr!Ba{vV&ks$I1e`hRi;sdhtk zeN^TDRr!Bh@~X!F)eV_4QOy4*p}GmGm!jGO)sd+7M0I~ud!f1ys+%fj`G1xEkE*`^ zR^|8KP~Ae@Qq=d~s`~z0mEV6ubz4#2f2->IZ&iN(4OM-ouBz|9RrUS1YJcha{##Yw zf2;EQZ>a7n>ich1egCbh@4r>`{kQ4>i?w^=sP2X8-f>vz_fi%z4_kXJ=EA|xeRB^aCLOe}8T|C3cVl(G6Q9T#cQK+7cs{Fr7|4(LUt7Ehm z^#5dxQ5}ow1*o1Uo&Mj_FO(wxugd?c7u(4K)k}EFuyZ%Vm!Wzqs+XgB9jaHLdNrz7 zYAufclQT>88Y$OOiF)jJe>Cu5U* z?v}#&pH`XgL-hev$4kGTdORAbJ}BiO@nP{1i$e8LCSc$(R3BGhg7}2^q)~y1s6M5@ z)5f-eaqKgwMyO6kbvmk3P<;v2XHk6~)#sG|R3lesk9a|RkxJ6uUPkp*RHsSj{C_fg zP<>6x>r`TIslI{g3{>Bg{+9SQW0QXU4yx~?`mS`2|6BE-@qd-$e^h6Rvrr9D{Rq|H zP@RqHcc{w$tMdP<{J$#yugd?c^8c#*zbgN)%KxkMe^lp+^The$H%0}%<#id;d@ueW z{wV$=E)Y5IgsP^Ps*4o|1GRprHc{IiRr!CF zX;57*uHcMQZ6(xtqqZ_?T~X^GrK7lt*hySfTuoeETti$_>@2P&b`jSWA+BR&*|@DX zab2;SxSrTuTwmNk+)&&|+*sU1>>>7K`D?wnzYOpdV1~Jg%~0E1fj;6EqJ970qP7yZ z7Pk?%6}J=n8u{HnrrbfwdzMs0`!hZ@-)YC{>Yp3Zy@Lv1)} zhbw%9c%*30|6A0z-ah$o6Ci6@Jvh^HEP<;avH#M8vn#WTc_;+f(o z@how)c(yo3JV!iN94nq@Y_*dMq+BRoB#sj=7B3Mm6)zLxeZNBCE5)mfY!xi+HK^T; z+O??NfZBCBM%NpY8OR#_AGMo|i8t16LG5ilmFM`|FJjL?uOeLwR=$e z2DN)pdj+-oP_r$LN9|G6?nmt*)E-bi^#8BiA z?zgBFQ2P$GC8&Lm+9K3`Ky3kPKPu%t`2uq>8nwXkGQMxzq=-tc#Pq$1@{TKUErPtcWt;w z!v);#aMyvmF5Irlp^fR|I&`~9;rPFm!}@SHg1doqjsN5NcQ=-@iP%HzX_>(7CF=VR zZf`oFyP3E-Tzz=W?W09~0>a%A?p9jdTHHq5R@_eP3wJlT+r#az#U0@82)CbwZHuf8 z`@E{V6Wm?k?o82M8j4R1E>8iL0PgNuaSw4%#@bp&7IiPU{QjH5`-uC()%V|AegDlJ zC{f>ka}R`j7~F&44uN|x+(C*u#HgGH!#y+(|BrBoD$TG~n!~kt1Y8aK-6L5-D@jtA zW8j_)_gJ_mz&%d&$<~tGvvyCEauStztmvKscO=|Xr4JWJh^N6looQ@J&|VaEc?&>+ zGZj0^nB3`bN5j1m?%8lJfI9~6ShyVj!#$U2lD4PuzpL?o{IsxpA>51MUZj-cm@;WO zmq@u(yiB}Yyu#SFVO`;?;NA%LYPi?Iy++El#-!i5^nbV<|F^b&6Wm+jYW(lsLOq@t zaOwYWZx`%x;(F6S$wjrT@d7Lp|9p{U7cZRN|+A+^^tf;C>BvKHRyArT-^h=YAvQTk$*U zT>X2vKfp~}+lKoi+@IQd4~M%z{Mo3$Lb!_*_yukX?qazAs{8y3_csN87yl5K!2J_0 z3ki3rksG4({KbDmaQ_zn;Rm$sXWh*l%nqe}p1SvN_AeWaxDMPr;x}7e`ahk7MJLMGF%_g3vdIiEB|-t|8VQ@Y%2|Tw!cky zTftohuQ%NP!s`WhIlP{5S9DE}gtrpEl9tXMwg zt6q0_>oZTQRZrjl@$~$Ur{{mXjp1#=I(Z{tue3V1O`EkYxS8J`x4&BOHsv>M?0*ov z&EWNcw>h)2ce-tUz}o`emRz*ctI;O4xU*Zs+lC1k-WJ|=3iK7X7fnAA-j48&h1U<> z0C@f3?E!BmcspAH*08q=kF~d}cEomJH|@yoETrukbKa9FSz~*_8w77}c>8FSzOq)_ z7v6sGtoHVYcOblh@D5-Lu|nF<0`_Cg94sEfJQHOwykp=U3hyv@L%6v&0(e8=4P)4L zkc)@g@DJV*@NC#`1vpaUb_*OG4-4bPwtWtPcbtlPym$f&Y*#=w9pRlM`@l?jz z(|X*s5%8A4I}P3>c&Ed=0p1z#E`n#x=^S`x!W#{56uh%|fb3ws{c+b1uZDLvyfIy; zmsw8xo;lCHJa>FGyRD1EyB^*+cvr%^7~W;@>_F4} z*%EAj?QdK>%jya~5@VgtGUvWu1@BsTw$W=?b=JlHaBb)U?>czbb1$sHSX;8seRwy* zyC2?7@a}|nGrZg2-2(4cdRlrU$DeFPx5K-G^>2Tx8ebuLcfq?C-rex-;drvVsBPsX z{7#E^AH4BxYr57N?cYqS@56fl-sA8dg!c%%hu}S&G({WBEglB%QFxEF?KOag`TZ2T zRSjEf@Nq=tuv)n{_9;`&L4Ko zyxG>>n&=zw-h=lhyczJ`g7hroz^k$o+3MEd*=t;Q9=BpU zZq0^%8^Ei>3*p(vf23PmwSRW-8t|G-7N2F<8Z|}cEmvt*AX**%N(gfBS4OZ2{0{Ih zh2IhWq3~CMzYqLQ@O#5w6@D-Ht63L-Z>y{ee+~HSz+V%77x&wZucXrgwfBd!K z^W$&)!-Ws8W;^k_a*KW&Yrx8E|B38(gTEpC_292h5BIxsUAvU9*Rp)R0%lDG{zmYv zR2#RgGMal~`|kIE-;>?^vjf?d?7t-ZP1(U^kMK8xzZ?9`;co-Kk4mzI%Dknx75uH) zBdl^PHxd4}@VA4%6a2pLcZ9z^d>uZk@c8WJ_k+(X0{IxvJMee5F#KKM@5;j$N7?^0 z`Mbm48~z@O-BTPO?q%f9QrfX*{p<_hO1>Zbf$;Zdh1eb$x$g(iVXQs)wuwRT4~Bn; zt5A8&3j>md94gN^@ zr^7#kTeJw6e+d5y_!Hq@3IA^RSHZuUhd9~&Yv5lC z{}%Yy!M_py_3-)ehqhzCW*=ld+ywt-Hcm@#YuP!@zZL!+@Na{Ed;Cu*+#<_)C;Yp( zYgTysu{`&{e^P;a;ok@UVff?WKLB5MLai0q8N`1OKEM3TOyaSMZ*~4S{72zG#*NzH zuydlF`}_&;pI~dT)064;CoJYs_BSa0Q}ADgZ&|$rf0BC8Gw`2>KN0skGI_3XIV+yZlZ5B~d1X!{-Q) zwW^wjAE{LJw&TV#D;}37g0?2EuA|M|2zw`*sUU?2kf^Dl0c3hT$ju?P-Ea2A3? z5S)o%5Q32i1|v8D!J!C_L@)%wVF-pI7)D#R@v0d+582@e^ylw3A7W=o=5`cjn;_Z90WG`!+$#9rWYQM;5-E55S)+TLIi4u z3wc*syK@l(Z{`tPjNk?Ymms*5{g-=snKg0*c9gF|p#T4}E*V_O9>>_L5nPMl8m?}8 zZLS_%hv0f1DXS>+aMr+$2yWucswzZvbqj*e5!{O45d^m(xEsOk2=3rK16$yo2>9^_ zHeI$!E7d&+9z>w;KLq;zLoi-jm;bXE`~-w*?;!+y_=npvm*&);tpEle_es;;v3?d;#=a|;tcT}@m=vf@qO_F z@k4Q@ILoMA{)lDchCW6x2f-%@KBZ#E$c_jd=CfqvVE@7se1YH(1YaUph~O&(-&z!c zuMx~uR`Yme6wDXDNzRy5zC-YR*ZQS8nm=fjAGNbTi3v#2+~Xw z+Xz!S2(s*zRvS7B2=WN8L{LDuD}o|IYX&8Rt0E{PurgE-xCp8UYV3p7LD+*{#C=&g z?%>vK5pK$=2zzsnEGwIc4mU@*CBi-kIrIPjgTQbrgj@4mY00cqb}kOLMc5DFb_i`R z`Xbz(!!Q|(DrCq1cmA+H!kx9sPJH*xx@ySzALhf7?}qR+gu5d=0O1}8_d&QP!o3jM z|3A)VGNV0I8Sc&Wtl@nT?vHRkZp-$?$Xyu7SRM%5_mdDFgz$KT2O~7)khcE45e`Cl zIKsgQhax-_;Slb!PC6>jFocJ(?O7(K+p!LhKzKC5BM~0Odb5^e{mWjV4Ua*1EElbE zR33(T)J{NnA{84p(4#&;crwCMt^5d2iT48GaD*c`B8oHQ(LWubB{&1&*$77>9EI>q z*109HtHtmvggT?yAy!cljzKsU;W-G;Woa#?ZJm349>Vi^bmCG`xe%f4#YL*IaR@Kw zfwL30C17=3icrJv@G|a~iL6+i0=V6)5PpR4YJ@K#yawT82(LwWKf>z}-iYvegg0v0tZ$)^!9UX+X897D@@8H3*ZBe|7VFvEDwyMCr+TZ)c z@!T&PVA!}ld;sCY2p>fFP_naXAwS!a4Kuk4yEPKBl`lv7a9I_Nb(j+;#_$m`8_3#?^(H6PlbcAmpe3Oe-n53P&jqqK?&OrDMqikC?&f?K5zgYeR@JI)gw_|z2tP)+5aA~Xzeo5f!p{-TLHHTd*s#GWkO%Y&gkQ4c zRyH;XJpvSdjc_i)ZxGHyI6rAK*525ozeV_+E=g=~RZtE;AY6d(M}(aJVKv&ID}E&; z{F$wqTUmrKi|`kOzad5?epwAvQ~Kw1a;jT!Qdlgtno-5H3adr)`~8`ps)? z-7VSQ2>;Lu(>D4=`hdBvO^Lj7oZ5gj)FMJVtOaf^zQSU)|Ns9# zBCH@ZrHU{_SVQO|bP;+ip;e3Rj**qmL!dqzA#5V7Bjn9rW^1~gRl{X$FxE|&csU~5 zuNB;)?O?Q0*B^OFg{T9fPKY`pT7}JW^Z@RQHN|LEM5|e?CW?7%#9IJ})RH<#3wXr**J-DH`%+?yC0f_cTv=^d%5$%m=ANDNE#ENR0X3g)%#5Ok`4McPh zq5}}=k862cxJ5(k^cG$M`vtyRSL)S}}M9naI8s)92W(TRwLBRUDuDQr&B$w^;ew)O~+-VTUH zAUXrlX^1%ZXSLgpH8~QIj-Vy8V`uZ6(OHPDL^K-Fd5F$NbS|PXi0t7X&PwqYpBbaE z4A>YWIv>$Rh%P{MA?Ncgfu*#wOf*ilbTLmx(Itp3M|3GYGrG(Qz2#$yjVZAFt2O<}9Erf$cPxjmHcq|`@iwm2BNQ&{_A!r=OOwT(R@VTA^JwKy#LE1#hkwve-M8Ze^UJ{Ft(1`LPU!Z zEmG_+#@4!g{s+--?UX+dEkm>fQ2~)fr4TJe^fw|s{}cVilu1ARN9+FEZrwDZETW8b zr(H_k|3##edwdT)DkAa_l@Qqt-?CyW?b6qz*yK;^iLc1)G(x2NzY*{Ma%|5$^%O*; z=YJwS|Dz+0=)b6UL9`t8RS~T~y(8*;{s(oQN>J~>9O9JqRit#HVhxG0tD(Lo>Z>cf z2K6LmXDK!}*gB^5wNYOWb)epcItPBJcWsw`T`AqDn8z}}Q{PDB z^FN%jpwa{N^HA@J`aY=lLVX9+H$}Y<>TxV5e^B3?>Fp3Ryano8qrRoWteNCFy1JbL zEOuLQJF&00y|K0Kj;Qa3dOy^6M!mmc`TQq)AJ^SQ+?7gF54)p20QEhj?@8U>g<;CQ z#J#D+J*B=c>ZhZ=AL@sozCY>*qCQY*4q%!jf8KyVUH%`p=lUSjhoC-K`k_pjw5pUuJ?cIdjGes_kZhp|F^F9 zf9rbxw?0C7^8H`#Be!)1>hU2PiTar;!zg3&HHrFY)XzcvZ0TdD$9=zUQ$V(lW2waL zzkWXI_o99Q>er!uA?lZ-ei7=IpgvA1FJ{WPm)X@l*S(BNa;&dF{c6;&lztWUq$aPC zqUV2-8oM6#+fcs&^_x+@QL#5MecX5Iw@A5_N^)dxNBu6;?~r~c^<;~8OSz|A%KK1% z3ia`*KZ^SOs6T}I14{EC)5Pvte^|;R?Uct*e**Q#rB9%q)X$SrCQ?aC{xs@SQJ;kR z6x2Bdg!*L0CN1PyDbGMi6?f16=OHr5q*Z*Q{ zJZ7u^gL)eEf0ZCbJ;^^K#i5dvA%})JY993l>IKwY)QhNBP%kMZ{lB%3RVlT0>w2h% zsQc3C|E+zGq|~V-_0vS71M16AUx9k;WmP)=#V64o2fxG!8-IFf;}!cCdJ;I7A%ECr=u~ z_>ChQ%`$vA8b_gVgkq00w)XL8DaTNW&!>&!&^Q&1+jip&DI>)*#Zk5kXq<(HW_=r@(Xi+LH3n{sL4%h7Xq+qB^Zyps zBR~wC&ukg6=l_lN{J(LWXwUy!m~((=*z^C!%S29!qH%?2&;MK4p8q#qEnXvDD_$pF zZ)9&}nj6uWiN;N6Oh@BpH10y<7Bp^0<5um(Z7fXeb&Wfu+({)K5jE~c<32R#|7hGx zJ*kcHQgrrj$p0H0|D&P7e}jX6G;|NW!6_g#cncVf$HfWa6XKKNL@_Sy(+W=#pFv|9 z8k5m@5sfKmOhw~aG&KLOOA;$28qcG_k3X}(c1dD0NR5}Y?#o7AHE_GHh<2CL!mpw6 zIul#0^#UqypfLlDH?>D^iSqy0?Hli)@je>#e>C1R@lOf2;fhr5r#dKKnEeLURzB2TMPsoi6`x(*KjA z-yDkOacB-h^9VFG{%;=ME|&g}=24>jzj=&p0!`fluwKmY@o1ie<_St8|4(XL{@;}U z$5-^t;b`7~<_I*;Li02|7~h#q-4T zIbYZ0(@T+^+pzhu{WZ5 z2bwpbc`KSXs|>d=D%oH9Kbp5wi5;(bCz|)5d6)FNsmJ5hCjB4H``Rh@qxm(O51{!f znh&D+G@1{g`2?B|qxl$`k0|}4OrIR_$E8eYm&21%CW=o{Px|a6G@nQF88n|obFyNm zFxFZf%kZ2yl}dabZ@z%$%V@qR{Uz%0c%wN@$}3co9`_oWv(S7U&3Dk8j^ax|`G0dRnk&$phvu(n&PVenG`~Ufdo;h*y7d3#x~BPq6#9Rw3=7a) zgyzrEHU3YI>@QLlGi6fGzo8jPv{L}b|7b1|ErErX+9uG{Q^d``6#iTMNBmbziD@xo zRKP(qi)IzgoEGz9K`e?Tu`E`Mta)y$Cc2_0`eGo4Mk|=Ybu^cu*-$x~6qEXoTgY-M z@wLpdm9T6rEL$1NR>!gqSk?*4I&!UL>L77DS+=T_)wq@vEv|uOYbwy0dVCeRtP7TP z!?LxptSgpr{Ez=5>pj4xCf@JwWJ|UtbCQ*&6j4+}6c7}VW)~GjMFkrmC|D>8Sg>FL z5e2(q$KJa%ML@Aq6;LcFuLXNY0b6$WKlho5-{*I|&-GlNYxc~Y$z(D)Gdr8j#*kd& zCo%m$rvDq?jvJ}CsfuO(ui_>WX|ATY8I`R?G3O#~uHr{j+(N}CtGK0#d#bpVig#1- zwkqC9#jRD`M#c31czfB(jHK}nEN4eiOkaxIs(2R_?@Ya&==K=fQ`uD%b3Mi#RJ^B( zJF2*|iaRlP_XfFLsO%w%nc>7;RlK)~_oB}EzZsq5?o>Gcx9!kN#Yd>Pw~7x|@jfcv zU&ZwQnEr3hRD1xpqW{MS$zF6lbsvcPsQ54yi~pmh36}> z&9bd+^INIRAa5gYC-2Zqj_WQJKcM2fReZ0C?_ust$u%?EnEoHr|JiRD@Suvt|5g03 zM4E30$B(M`TNOX1;w376T*WV{_z4w1ui__F{EUj9V*Jw*Z?Bzasfhn4NBV+_=ct(e zAI}!uUafN(IZqVhrSVHDUaaEzDqf^w@qZOBAQwsuAMvMR`hQISx4q>x6~C$C*BMFw zw>5u@3jN<+#YrhT zE?4FJzbgKp)Zs8yJwa9bs%n2#JzQ0fR8^V(t7<=qv3sZgSC1COmVb<@4p3F`e^otB zbXybpfA#nVkteF^P*puiRR^o;$&4Q)xn_o39YW<4&8VI9UR52Ys>4we*uU6HwRP{nt9jU70RCSc9o~^2*89AoGw)Fq%Sgk~^9EGZmSJm@XRs3I7 z&yz@de(C?!38EMut6rq4SE%a6s(PuaUc&f^l54KV>Sa_e7sa;BBvqZFs*|Z-DY_ZC zs#j4F|CgmU+3z)~dWWh`Q`MVPb-Jovud3HlzfNLo%ilodMp4X+t9rAl&QR4`sEhw6 z?L+^sivOGY1XT4-RlQ$T?^4y7s(Lr$?`aT!FO~a5vAymARee}hAEf?}=w|+3eT2%R zqS$`>xT?RWs!yo;Y*l?y)%8|Ssp?!+eOgs#sp>O~f0lfXd|r1CReeD^38$l~D*msk zb2O87o2Tl!0xwd3iJVWqEMseR0l83BSE}kFre7gnB^Q&gk*||)kZ+Q2k#Cbr$fe{m zayhv|Q~sq^@2L6^Ree|09#z#|RrM29UC*pfL&1WBw%nBL9|n*~>rVzhq2SHQ7pad0BHvmrO~PuB7N0Roh0@vZ@xSnnxu^=E(vn zH-hSaRV%4lS=D@VM7nT_iZPs7)k3BtvZ89uRBbC&Yocn6RIRZVr5W|V9$#urX=iY>`j+ZOApYFDZnfB&o2P1TN9wY^pCU{&j`YWu5N z4{p_y>_zq__49wYDqh=HCsa*80?3uKQ#*jU2a*SACiU#2YDcNsA=LT%Up4;zSFJA< z`TZ{@j!?CJs&=HjG&h0BF&@pV{^T*_vE*^&0CJ$FoC}FRLDj~q+KH-ms;Zqt4Dxs@h0ZJ4+U#btUy3M72?> zX1~c|ovL=Ws*PoL;1g{obqYWn_vei1{z3y|_BsoG>yLa1*@lXjS*YPYG{RjS5^&ef)>+SSzM$6r*9 zKP6L}uG7{ZYW)3|+V!e-v#Q;|82QseKx)Mhl$Z)ZGz|D|@Psy(P` zcTq7{r8&7XspwlkN2}U>$Xv#riv*&ST7)t7`M2%4Ai0k$g$j zUQxCAOutMnAQ!6IBJl@yaw@O#8{_BayKb^yD6FeU;9aK zo1CLxRNYs#UsbK9YQL#kRn<1C+GbVzo#p>QZjyLiZQ0`%lKx-&i)rzHRr`niS?2#t z#HQJGmQJWzUDfld?x=c3)#-tC@qblMOMof4o~1(nuZ#ann@CJSN~jl^E|F3bTmO1M zh5lcMsy9~kkV-^W$gRjmwn|c36Dm!~W|~rM+1ECz-b2-!tGbx2s<%+}ma4v!s<%@0 z?Ny!rUvJGU@&BaeZK&)(?kKvs?&@t-y_2fb|Lg6Ty9?Q#+*M9}eK)d$s&|y*<;l|b z*QxsMjG_P6yXbUM!#$~Y6-8>em#TMTVsEm$=yvZtRb7|UOVtli_1>!9N7eUH^#fFW zUqbn%u%>ja`Y9}7C^<~kC#w3X zs(!wzpQh@ktNL(N=ZC*~f~{8!q=nB=^|7jcrmBxt^|QFuNOF{>)Jp0+hCG`*=RaK! zE~-9G)yGpmmz1`W`@Ll=@qbmHKwijw(f{l8|N12oY1{Tv#$2ZA`d}|t^(m^ZzZU(z zs!yUmnY>cs?YX;3)u*ZYRO-Xx3x2oSq-Y=7IT~ARs|F3iYukQzt zv-60mKdtJIs=A)=KSt$o>AJd|C0Ew}RbAG9YV@AW&WS&FEDqOD0*KK zIY-ssQ1!X0zEIWm{C~cxbN*kK`M-VNRDYR~vi@V&E9#3>eX**)Lj6_IbvsCDuaU2d zVpav~Z>stVRewv>m#Vs~|ET&B$u;lD>dUAs7sb|RrK+z|^>?VhE4uk)p}v~R8c}!; zwyNtB{fDZrRrRk_{R35Buj(JF`Z`trh>;&lq%HFkDqR1u`_Le)Q`{<%cjcKedb z22sq)Sp92N|4G%qQT6Xt{afaKC%LxdAE^8&ig`y||5??4Q}th{|0=q92Up)n<#$o+ zwwvH&ReduYeeG{i^_r^x$(X;$zsY}8Jy!L9rF!~buDfc3bX~{5aWqYta8gv#WJYwZ zzrpd~_;7M?ig5DGEl4ikb;6PLA2?k9Vcp;aa6&kWy3DD}dto>c6|VpA`C4!q!MPt! zV>rjcX#!_YI8EW~1g9CCZQ*PUrv)5Y|AEt7%HexlssP8U1dnTMNRQ3>s zy%$bbI0wPm3r=r1-Qe_qBkMnKx=RetBb=U8dWmAo*$2-4aQ3CXpXlskaAbu6j;#MA z%E54sfYS%gVQ^&q2aa6brtiV&OXcte@%`W&4d+PeM~QA*pg)ykM6tCx4$f3K1K&k@cVC=&puyJDh9a+z4kHoa^9BXN;`>B>mxfDmOIP z>Lxh1!nv9HEuz~toIyp_e-h;mI5N9{b0?g;n2_}!`~4BoXTrIc`hB8vEfmfJaCe0B zARKKD55buQ=V3Tc!FdGE<8WmC2YR}$G@R$)$odbQXGP~20q1!t zFNk9IH5<-vaOS}I8O~hh&LhSD;k*RrBRKQntc3G2oHyVsfU_9RLO8F$StRAywtZF7 zwuijNZC@9K@5SJ}2}cYc&RcNA|K+Jl@^UGh<#3isq^;qK2I+U;ybtGHMy`Uh2F_~9 zwO90elIB;y;H+iL2jqvM+gg1L=Sw*2;OKpQ!d&rxIO`=wcOglCMt)9yA-cVCH^BK8 z&R5jGCclwf+rr}iaK4B0Bb*;Z=Xw#GpCrxk8jkosoL@!Z@A1LeNJab~&L5)d*^Z<) z!_C0i0;dY+PdNX;5&wrH{x1^=N&id6qS$j+gX_Yni|#t2oBrUYsEGgDV{x-^Tfz0< zHiw&IF8$vX|A#BT{{>fm{|m1C{uf-I3`j+S49SSBkXw2yR=rUE%HwwR8waC^X||GV8K*Nk^= zPsaBW#q>sZAGrI&rT@G8iEhSR_W(xH|M}TE+=Joj7VZPLAKXLW_Jw;WV-Az8OfPc9 z|KT3dKsgd_f4JiR;L3T@ZsPxNkCjMUw*hbm!5s+qM7YN@SNuOYu9K*oEDG1v;SPp7 z6z&k};{Qp_hfz6I6nl<_!#^JG2zWKPrz3MM+%u5+0PdMcHG+E<+_&M5gnK*OQE;cg z9S!$fxMSdsg?lzjJ4Z@0Ba1tZ%6L)OZ~5{(xaTu*0Xcz`?|;F)h`gA*gq%pqSHR$2 zMqW-{0e3PJlf+e?+XDAW{Zih%OXO8>uY)@k?libpv;1o`lb$f03jJR{luX+8dbqd3 z75|5OBY6{fGb#Qbbum}d3@Y@0Gna7hfcqHSJK^3B_b#|I;fnvml`C35@{Vcxzk8o3 zwq>;cKMeOl<~}64?a#9Q4_Ev@xvn3F`!w7qsEhx@eM)jUH-`HR+&AEg|HFNbd|q0`3m_extM%SlZn@543*uz$-TcNd$)aQ z30!?%mcsoA?lQQm;Vy^!4%`)tTq%+EsOkUiDpBmUwg&E6xbHFYebMbzO#gT3|8_4Q z!~GoYI=JiM(*IrY|DNB%{{vU<|A8y_|G<^|f8?A>`cI^^QU3+E z4)<@kG2DMx2l0P97PwU^HBn3}r5vQvNV%e?#Q$wur7~2qqVQ8@q;g0FNac|#Aw~aB z6(!eBmwneG~QadBn9;tRz z#Q&w^N$#$s_>OiFWAaxMK4wkL#xj2N%p`zF$?Tb`DqzM~IZz^Pnd1LQohXW#A*4=5Y6wz; zs1I%sDgKYtP*LoWo{H32NS%h%=|~M{?g+^>S7Pc6DrbsfMxWG3q{bjMiu!2L?YTai z$~mIgT8%^MEu_XH^$JqwBDDai^BAKq1YHOEe`*3!bCJ3bshLP!q#F&Xi^)sKiR7i^ zW#r}L733tOW*{{gscA@ENo5Lol_nEYk-9obUn7ZmRivgT%C$&chty4syq>%PsT(C% zAA&96X6m;fb?g7tZ$s*KX5EoQ%CjJlx{JJR~F6kdKm&X)^IRQcp1PB>5EiH2I9C{?}a{spm`@sprl2i;UE?RQ-7_2{stBCe>(?Dy^YknNG(BX zIZ{iRyR1Px{Xeym`a7a)Z`ZDvT7}emNUf&6Ms#~!i2ozCRutYzh17>g>y!Qw(%OhV zMrt!s>yY{esZWsl5~)v-`V6V{+)A6nf4!0O|I`W~Jf9tpDMpPO%h-`}VX-GFix-HUMBi$P5ZIEt> zwD>>LEhN&+$8=cN17L)Y1{P9NDo4~9nvQv&Gt{X zXUwjotp6k3fs~H`knV(ZU!-@J>n`1y>_YB=^u9>%$#hq8FR~lCH`$%E&;LidCtvnL zx;N7D@PDbirtC$Y|Bp1EiYAEzkUo%#Jp3PN`5^!%`XJ4p01#0gl7RGKlBF*(Ngqzi zPXHj@k35n*iaZ+W{yM?*G32pGAD1WtkRF(%k4O3hla8VrkUohmbF!vf&eEQPksgZl z5T?cdld~|4%BiB5u^>Gh>2r}Df%IskPe=MJr0M@@`oAr0B)1a(Ps$&I^jM_n|7rTa zjU30w@e*m~Z|U=pz69y>k-iXV`hQyH|8~quU&Q!}MKSLU(-V=t9O+A`UnaVlhorBd zGD#HOL~@K*B9lXU3exW)eHGF(ke-V4^+;ch^mL@JVazm%wN83De_9^?gS0&S2k8e$dHw^^ z^85#+A0{6m<@ujTKSn-IK0!W7%I7jjKaKQjNI!%0OGrP9^el?cA^kkky!l6tRGuk> z^lYT(Aw36a{qQ&b7KY|rz153SXZ6ejS$d?N=ldMHaLO%aRda-2b7L)Yr zq6kCEPt^g2dlh$j`|ykp30vFPYvzenoywenWms zen-k9K#~4|{E_^L{F(ekQ~vcKOW1EnZ)8G00#3jDgWRMkeMyuptlOWO$u;;lG7i%J zAg$Z;U*^V=YkPH#O8tLI#ziKB4E;Z&{Xgl?8JYhhBmQrlJd;Oe5Hba1`XN(9rVlbD zWCCP(y<~iD%h4nw{*MgEkc^P&j7$ZY?U30jQePm`h-^$Y(PW}2GR>ISn%stLPPQOh zYBJG^+!mSEI-##YzTBQ{L+(KCNbW?oC3hyk?GDv4^1X|BGU_*eUa&%DEsKH%dGv#{mBE!1IdHPgEjS17}JL! z(-)aT*{X+WvNPz`KAg%CqL`kXITD!x$Q*^tF~}Uv-2Rel-tT0NrE;7o#;-C1kvS2W zSs&&6j!!i2k3U z|C{%ZnUTnhLuM2*XCpJ3VPj+~TPyK@WX6hO<~*74$XtWWxzx`iIseaGpr7E1%mng6 z@*?tL@)B|)c`11rc{zCnIfYu5cT^#6?bzi}r9+=a~DOo;y{ zEpRU~k05g&G7lniKXV_DTr(HSJVfPTQOr7U=22vxK;|*(kBiPTg3Oato)X23*O_OK z-2s_rk(rCkbI8m>=6S}vAThS*%%(C&6kEm% zuOjmeGK-N}h0JSIUMJrm-z4P`aLBw(E+Lna@)H2aEGJixE6I1rcQs{bkeJoTe2&Z- zrr#sqC)bi6kROsCksp)mNcmtLnNP{}$gqXwynm(@Gb$mYZ9&I;Np2v&BEQy@e~JGV z*%UJ0QU9Kl=aVBN4}nDHC-P_V7xGu~H*zB~Tafvkt@npkC~iV#v!r!Xb8tlFPh|c= zrjCsE{}`Enkoi{v^oI!I{QD!Lt5K7ex>?L7Sx1V>vXUlDUZ#=FAR8f@Wv)l&$UIrl zAG{(fkAOzDM9S!ltWO4{B7tnE6S7C13yKwTD^hL&Lbfs4gltMSBezC&8)?04b7WiT znFg{gkZmbb4*mbZ{m5>M>~_>!%fsp=V0&cS=xrrHZYztc>`utGL$S*{;a;LUu1?yCd6; zxqC~b@q}y-Dm_K9`|XYFe#q`aeP7Xyvt{?Ea)2mu*7RNuLiTWE4@UM-WcyG#L~_mh zpse^mvVBEiXF&D{WRF6&AN3V5gPIf4=7b80i+2P2_{2y8If9opQ5mZhm>Hpa?!!O=O_AGKF zIf@)jjv>z`&mqT>Bm{-1qZa%~Oi|JkShD}kHqA>dgio)g{H;RR&hL3S3huOK@cSz3K| z4zhC@IZq;O-Cja=0kZR{i~lG3LMn?yv3>GYWc7JjjO-i8zQ)|w8^pg!h4X(iie;A| zyByi2)R#%5J&F}nWd5J*>s@4Z8?Hk3Lu6MY`#!R381tUQ*wWTg`9Ks~&PT|8g6zlC z*NJZH`6-q4qS#~n4B5Yt{T$gX$bP}xFUbug{XZ-IkL)+3d<6hm`hS-GpQZn2>Hk^! zf0q8ArT=H?|5^Hfb|bg_ofQ8^b`wee*S;Z&%>R-7OEanSKgeq5hUdX6z{|;2US7&E{lP0zDT!j{gq{x%@B->e zbXz{>|6U}DaXD`*c-z2h1g|N)#*A+wx%`d{yk=Ck7R9U&d(Ek|AX}2H$Zg?m53e=6 z?c_bUKCQZZJvMo5;O!s|sjDhyc7J#~!RrjKExh*JaA$b!m=OQB*N(R*U{txd!i8TGqI~d-f@aX^EA)?#1rT=^Me||3s-VyL<^H!5-_~IUBX5&PGp2iYzfA1cNvFGbvcn`p%|9kX*TiSz+Z{Yvl zBk-Pv_b9w4;L-m*`oFn%&U=#aPf5wP{hy)oEGhmE?|Jft@XvSQ%_3)$bI7^mJn}{I zC2~IbGP!_UNG>8@AzvjIldqAl!+S#~q?_4xehc20@ZN^^9=s*+RahRL z!sk@P|C4Pu!21>6SMYv>_cgrl;C;iGZzaZzJKpzHeh`J_^W{(QerDnq(e1JS2JcUJ z8{ut&_d9d{kX(DNH&fXn%9}qi{TIA{;r-3@Kcbs^COz?gcvVr%{L`zWI21Vt`6G~X zk(-NL3b`|oOCz@(av9_*$Yqf$Bj+JkK#u;OqyL*LB1iwvmHt;|&PNW&1+p*xLb|(`TnnaKN~CF@+_qF& zH&C`mZg=F`Ah!#0J0RBBaccvo#pOn)cxemzfN_{uc&HLP3M=G5}G1q3U zGjh7!x*&G~a(gg$PqHhy7uk&z|3|Jn*@Ns!_CoGZCVC^c4-@-pGO-_W;{Qx@2*}A0 zfZRdI9n6IIKNE)}EqPd?^re0{az`-HkEH+Sj$-;~9j z6f>gb&P47W3> zP7uX>UY5HExhs&n7`aQ4yM(zDCD-rGd`9B!HU1oO zvygk9`U|4lb2ppH94b;bkqljRJKT@JuiPD zS4Zw|?@^ z8_6|Cmv2F(r6}fz^4lW6J@T!oZzsClV;d?vkmCQgwexL}?}Yr$$nT20_&@TyknJUg zW%A{2$ai2u{GT^j>B!xY?}mJ567Tr+3L)Bp40|Mp!>esAOtL%usBdyqZJ zUeXWqy-E2982Noke*T-6&wr6WfaK@Dd4B$zm(PEZ??cMxzsU0m`Fh-!bYGTyxTbl+ z5Ayv`I2rjPk-r1^qmUnk{L#n{LcTxpwEFxp$REqCj+3qI85xNDiO7rpBY%SE=I(|3 zNmNc2#UAfqgepTgXsl51ucdHR3;G*RrC9fACr$cz6Ye}?GBsq$x087YeK z@cd}x&qsa?^5d9wHuCiU{8)*xJz+ev&Lz(i-S}1h0^~16egg6rBYz=tFOpo_TP~q8 zQ54%xE<=6>@|RP;f}BK7mb*vtSCUi6tH`P3)#NqgG;%t5EqNVzJ$VCpBY6{fvnCU_ zAb+b#>w`j`{+}2BPilK73f+;v3xy8I-;Mlz$lt@d%_Q%YNZT6sBmWTc4^Wpu!G13$ z|1cHtf8-w}A45U!>v7~iNB#-q=Oh25elvyqQ{>a6_&@T`GW{I+Joy4Si=0i)A?K3w z$QQ|%G^K7*^2^A7g8TyH*CM|V`9-4Z#+O5W1$p{^elhp>8uBZVr}^jKpz0 zgj|aJawe9^J*#^5l3$@;nw}<0zIlE$lYbZaRU*m-vKo2*1dOELLteiBE7g!~x&EK$ z`hTA5|9P(e=Vkq0!lbHP|Ie=%MP5qFBhPhpNqiy4D+l`}@*9%$S5&@6{u?H~CBGxT zC*_w$k^hnWiTqiUiC>WaHA(-be`x~wjpXmh|Dg|%=}qKjokBPqXKjzU{fe*YbXcBK6NI|}mq?i*DSq&;y0TQ0R%m0VwoBVP6z_ zGe+kB_IfYuM}_l$xI0uFCD2V@~AcKNFO-$4O3-o`MOz{E~CNM$&FNpu6a4`yVP|*Ibn|FT{CZcdD z6PKazBolfF(E1f9Ok!d(c_lf8yb6WuP?#!rxfHIJF9k^A8gd#r9ffO+t{=sKg6_;W z$V*Azh{6mMZZf$j+>F94+~ihKbd_vrw^6*Eyo0=xyo*G=&(`5dX||5|xLPZCg=Mb4H9 zgY;6UFTC~QK3 z>;DC={}+BhfeZcx?Y*-8pVVL0|Mfo#zoH=P|4eU0LDv77{zJ-?fXyftQP`qiqVOmA z7x_1e9t!`UP)FfkDlrN*CaRjI9C=xENEgMl6j)4|Tof}XX8&(wj*)q?AX)#XoHB~r zpy;Ex6^a3hA&N5pM-iHK<)j!CRuDoWouE)s%)`2irb>t zf_h7`mE;;fDYmAv9l5>eW;R&d0mXw*+!4jDDDH&fE-1ET%+93D|E=>B+oRY4#a*e3 zx5!D9`pf(u#ZDyszt|bYJ@hOW#V#_}UGoEqdzwkFK1>w%La{fB-B9d-;@;e0N?pzX6bGR=5XBQwJf7v8&>)xd|KiF2 zmCOJ=1Po!~6w!@i7l)x-MDbLVbPZ2KDTm^46n{i<1d5-ccshz}Q9J|1ktovti}Zi< zuAw-JrHv-XkZ0>RQz)JzZ>c0P7R7N)j3>_}&m+$#FCZt77n1t^f4!l;|6fzz|F1cb z)c61Ew7&meQ{Vrusqg>SoJ3A0_5J@^(f9vr>ihpSr;_^qf1TDh|7%Vo_5J@keJyz% zsc-(*$_=Ex|6ix|mjX2P&HtLWkox|Aot{D7M(X?jwW9C;*VH%vYwDZ-HTBK^n)>E{ z&6(uA6Z~tN{EWGuORnwtUsBm1iuIqbQTz_YZ>WDOy1h=nr}Bd+_ImsY#lKMe8O2Q~ z{(|C06n|yRZxUm#<=?4j^Z(DCHdE35udAf}Uzc__(|@Dnp!g4pRTQ=V>)cp!t&`}1 zKr3}oOvxn|r3^~i{Qp0c(hYPy1Zc$*#W;2;k5X5Z3MlP@QW2##D3wqOP%1Ohm&jjk zVVeG568}djB|0r!s(*H~J z{}TP*v~y_(l-i=SBV%^bw5t;(`hTf`|CidM)ET8+QR;}2_&-V=B;K5z68*m<{%=+- z7|;c!J($>2bp6}MvejNF(d0|r_;PQQ#Q#z1Au+2szLa{QbRbH-QQ8lseV8l$Z@+z6 z+MkN}za0xo2cdKbN(WQ#Bf33n^#2n5-;7qJ!%=!3r6W+f38j80orBVmC=EdAD3p#t zN&FwB{!)T%AMt;bjuXYK#*_x4bRtUh{}TP*^z9P;za;*T(jam$IRvG%QKJ9rx6-Ad z@`k!Jj69V*jg(&jMrj0jI(Y_pCV3V)k{m^jCdX(>-OTk^8jI32l*XYn6(z3!l+I-x z&Lhv)Lpe$pkQ2xY$&1K~$xFzIYou=G zonUD?O4p-wE%oa}|FOvQ4djiY*fzfzr3X;D1*N-Cx)r6{QJTS++a$(bWp_}yQxx;f z?$X^T-HXya)MturOS_NC{i4`j@gPc1p!5(*kD~N2b03jh+mj!o^0+9r&pe6JGbri# zzdo~1i*8GPmdbOY*go(AO242q3#BhnnvK%SD9u6XMU>_;a-Kxm)_94^d{OLv7ohYC zN(-qk65XEDSE(!}Un5_aX>;if@=fwB@@;Ynxs+T+E+eIdE} zowX<%Q2G|7uXrq9lj8r$dHfEgA5o(Jmwpi4o`s(n`Ligt5B!SKzbO5N(w``8L}?RB z^#2n5-=3q*+-i$#B@=Q@eG>md>2D_f5yf8DG0JI_swg`s)tF2FH@Rh3l(P80JzwPv z$~lzj|7H5WSvM%_`M-`VG>9yrd^5^rl#fB#M|o$I1C(2!tWa)@GElCdO#d&7|JyOB zO#d%862;b`3CdfeO#d%86Wx3sR~G+Axw$B2R4unec?XnRp}ZZ+^#5{e$u;d(7XL@N zjVPv-%Jl!T_&>@r|F^xg+z#d4QQn1mdz3q%On)wm|J$pn+>yEB|90#scSiYel)IqZ z73DpcyQk!uYoxpvm2TwTWOv;$Q0_tYBzuv)$$iLu$^FRv$pgp($%Dv)$v)&EC8Q&L9WdIQ64FZ znZ1-pqkIm^W2m1kx|z3>$5I(5irv?_C|{29c_?4Vtn*R6fQbnWVlF~?BFYz2zodbF zDV57aF`sdiuRwV^%9BvO8s*8%y^@?lUPVsTOnR*NKg!cYG2UCg7UdgI7XL^2deLp4 z6#qy0CQ-~?1m#=c>+9=Qls`gw2Fi0$z76FUP`(}IXHmX`@pqDUk$3CPjPgC?O!8jx zKJtF@0rEleA@X5TegX{TN6E*?$H^ziCpDRP3gxF!enwtubJqW|mH0o(&uiNE=H*#b zW|MP7H%?xjhw^HaUqtz3lwV@*e91NQqVfVN^#AfArg{H=`BmL%QC=)vR}%aRK>2m1 z-yr!FfHJ=VQ07+v%1fy8D*$DF1)$8Y0F-6@2j!LIJES}U6y;Sqtt*N08kEFPe~_C{EPgX z{D=IPj7d4IDAzQZsKa+8;j?}G6w_&&>u2C+sd%EWSHRE1-wA#JepC2G_#ylf`~ZGg z>f`&G_GQgLiiE^n~;U5ZrXZRiAw}ZbceEPrNUSf1Vk)sg* zhu@*WR-NE?fxkQT&Z3)s;?w_q@qhST$-T5$!S5!PC5gS^cTdtisPrUz!S9{u`@r8f zN$&@L|0I0?`~w+$5P5K-_ul{KKgnp=tZ1Fa8hzC{c{_`2FD@ z2mcuA$BJ&&()|Hc28v?a`2;kc1^+};^tm_*;nVO>M$i-fAo%m)4~9Pz{t)RGa~zEz#jwuOzQN1pZ+ghaTI)+{L8=8T>KyYIkK&- z)j0UK!5Z@GpUXIsA!yc`13BG?d<# z1YAK*A}5Qke^FiZDe!NCe--@e;7^4=4gS^CuaOwNel9W7$!kU7v#H@= z{!;jFG4gFv&a(6b{pq~FjLLFR%uK^y34b-kci_Lv#45?PN3;h1TKM#TU#^|xSUzB+ z_&@xQ$d3_};je>FbM`-hPyhGD|KaQEY103F@qhSVkYAD;Nb!I8Uz6XE;{Wi!BRT)~ zf6!?==kb4nAH)Bdx%7Wu{2%^rHoo2OgADMlTFB` zWHWMWlKvlv|08IjX`LZxgPn-Za7FYIq5@88&V&NU>Jf^|5J1V!Eglnct;>OJ=x?8 z1ZUb3*#6vBh5!Vkk~1;}!2|?nBN#{h90X(SCK5ItfiC%6QCJfM=Oehll%FUUBDfU6 zMF=j@3WAG`&h*42<}yi0?&XOx3BfH0CL_2O!IcQEK`;fuRK{FoVwk=$;A5qyH+I|QF1*nnU?g3l4?eVK36%6_@+7YM}s zZEfXTe}#ayAAFtcSNvbnl1u*&en9Xuf*%q5WV6h{%CY=n+6}>P2>wQ}5y2J&za!X$ z;E(_9NFq0zGPQ_+LqH%yfEE$Z|AT)K(DsAa)P#{WTfTCjd?*)+hOamTC>a8z1eJxN z;VTXSDrZW7DnON>iY82`_pYRyajO6-f)f9y4k+<|`Pav;Dv8b^K*EC z7pP`X+d*v&)e34Gs1{J-|4C%a2I*~08me_tx9y>JgleO8DDi*!m;LSpMcY?xMUkUx zXLBXp9%@ghU7HQ5*HKq&gZ+8>JM|KEk94r2M@|MD+;KLqMO!cA-0C7In!nUa#sco~Qf6HSbp;g7-|CZ0 zIc(=Eq3(y80(BGARZ!PKP32ZsLrsIa#zsp0r$b#UFFC{~wYnaP<}dr@TL4Mi40R{e zEl{^X-D*mJnjr~eQ0jIl85E2Hbr;l3DDi)&dm4n@Yhs{e2`EWFz%UsCpdNyHIMHPZ zh~i_wP^ibDpUk43fLaUnB-Be#PeILwqWP<5pq^*&vrx~O5|XYZLjcq)5p98Upv3>7 z=9x&S7bPM6Z9dd8sF$H$hgtyjD%3(oE`oZ+*7<)mUkvq{DM4pJy#e($6o&vQT*ifD zk4vDIHh8%l>RlGQf?NqD{+|S|qPQCBJto#92l9S{m=BzllaC!Q*PKK*>5u&V5_kWchnqcA)A<%L@S^zuq{BVM{8g^hHY;GOeC-a zuw#A(E~I|J>2-GE&Hnf3$i?S}vLNpt`@nr&IV-GL*3&OmRV3(y_d0}$H>jDgMod41AzUKT=@!sP6G!fiVOj)Lm%KU;E+V;5FoAE zm+^;-Zbkw015O5x1da!e0*(O^|A+hpJmZfA1^~yI(xgXWprq~I>HiS_2Trmvvadl@ z#QcFFMh8xjgp@E0m<^l?Oa)E@CIG{MbAS=RC~k5(a0YM|(~19Mq$!8TINGFvF~HgX z>5Lx>j05yu#`ER5rmEaZ{2#bL;%)se1g-!sqJA+z!^b6jIk7>QyafO*Pqq^O2PTtO zl2ZWA{B@(*lCK6H2Ce~S0MmdQfa#397Py{?>og_U#@`6s0^B5`6n?YKmGrGi%x%E^ z!0o_YjJX52vq9M1z`ejdz|8+dy&-U)ywv~F@(-9aK>vq)1fUh*5#U+iQQ%47u_Wek zX30kYiSiT`4gq*3=^@W0xf~Jj0?@$xF$ee?m`_YiA}M(T zK>vsJe}Lw1&&7AZkHGib#SgLxO8|Z{Y2fE%zrO;T0S*e-2>b#3E-_|;A$#0pT0@J# z7U0jMguf&q?e-7C9f5zf`vUrh*tMBg5xPJPsN0y3{%_(#{jlbAqGwELdKU;ig!(?7 z9Kr%Z@qc?3Lh=73T}G(adi(~8LI`=O58NDk7$MvmVFh6mgj*qOjF6LmdXb4l*iwHFkAoa5Vk=`|2O-UqIQrNDQ72y9TB!g*dF1| zB1&#Mgu6&OsRP1Y5$?vU4x*bCo3InY9td|w*cD-CgnKYR9sw#bQjYb1gnJ>BhksJs z8)0_|Fk$+Pggp`NgRob!Rqv$r_GLW%Uk6K@AAs-(ga=X=^G7K2e}sMHMuMNmB9tKj z;h_i*lck%mFL}5uj_H5dS3d?EscBcV!lMxmLf9YS0A?M7@K`43|Mo}+B0Lcx=l`Mj zzg;&A#s3kWEQP*beexSQ53Vn z9A1X-DukCKoQ&`a#*6uA-o>pOoTTe zyba-v2ya0s{*RF6Z`KUMTdB;Dt<3slcss(o5X$@?A^qR1?1gtzxkuA}nik%R@DYUf zA$$x>I*cZ_TtG17m=@M+SSx> zF~TJXUqkq&whZRJA-T3~-=e}Hz(F1 z8sSd}*C6~J;d_jEpIl3RpqFqFen@^qeoU?-KOsLQ*ORj3i|{k@bMg!FOL7DG75O#! z4Z`o3_*QzXKJ~igrGy{2_a8OwC!yib2!BKP3-w<`w{5$T3jN>q!%YZl2sb1A3*i># z(*MmT9pT?p{vrP*W4SXVtZGWnmvkLb3X%9fB3IMaA(9~gk@$bqN3LH)9-|L3}Gj+aZ!608#4(y7)h$HslVXoAvx?Cq#Q9YKy1?qMZ@7N7Rln zyGV>_)o52L;{VB39T9a#)QS4;q8s0cx=`6e6mwTn)D=-LM0+9Xj;I@R_m*7at5FXs zJw-8h)I_}z?T2U|>iddruE%J9DhG&SoFqC3(FQ~ZBYGQAA4CHX9fIgcM28|e9MNHn z?k7Bhj%`beBjzBZ~$idKJ;}h)zOu0&`E4T+AMUF-^ zhKaKi{TxZ?kuDlXeLTtezmz63b42Hp7a*Fzg#7*s6Z{F7h(7@nU4m$0qF;*WvLr3@ ze?(W<(KDLNmsgTg$g9Yyh-M+W8quSOuAwrGoK9X#UPoS!=zc^uAd>ZbL^mS33DK>H zZsyBdG?RVJKy;gZX~yp84n+4Lx|5N2k#he}5l@4qABBcSbBm`!C4Iaia3d5B(Q z;w5r^qQ8u20hNX1qD1E}kV?sm5xs%vHTEd+|D@-?Nk#lWai=AS-bb_)(JDmC5UoVC zoG~jT#*7!yJ5*$>Ny_2mKUzaw{NIj}(ON{GBKiQ)$A~^;u1x;zZ-qqbsC*)dy^7Z( z`W%rq0qroH{~N!JzM%4@W|X;x>90`9Ao?27W<=j0`Wex;h<-ry9dp0eOzQR{m7heh zd-(;??})_z5&cGr|I4VVKlP6Opt8v-60-%7zApYm^baDL{38OWh+!XRD4u&s1#9=`9CU!23wV=NXhmS|4M*Lhzk9` zqQ~=OzmPJ+z zL*;i=wnybfRNA1j4=OvL(gl?rQP~xholt3qN?UHbvutZTu(Au4_M(`xS=kMhPN;OC z-cfXO7hgsEAC=CU_LrL~d!W({l|89aS^llKjFDgf( zvL7mkpt3(I2caVVkII1(WA0L`aQR8B`_2(wNh z>Hih+f4)2w6`Fr#c%qDuma)0?|H_$+JPVbPOwjx*qnW1vSLpxxOxdl*GK)h%Wjre4 z|ESRXD>VNK7ym`%5K!R|pugu>xfqrEP`LyZnt5d+Dwif@UWN+Izj8&QOk%N(1?h+l zuwn-UM8SrLiekZnVgnUKRIoRYqF@6Qeu4-nqGAEWg8zB$Zoa<%b8$ zN-zgW@qZ+rC+Yu5@qc-#PPG)hC~bd$Vl3yUX5Xr?zE<*AxCcK8^ z>kQr?-;{iHWvS2R$+wYw4@vrelKvlk5=qkkll1@i++Kp@awI?G5|)z7WI6Gby8_9T zNYek4AB!G+dP>s&ll1@Or>ylE`MKmo{lnyHB)1^B2Fb6HT#Mv7Bg`r{vUttNPf%A&7#D0w<4)LivFJz|3`A0l*Vh{j^xis{z&~N(c|W& z|0k>dFSUL{O11g#NU3vpCsHkt+=b*nNbW}RPbBI8N&0^@<10!3PtyOR{$z45Qpy$S z|0(f*r1mBEQy&14+MldL)+G->%3^RJSr4iD3>uIJA(diqFj9vwXh=39LDrB7GN~vp zwU4s8G*TLa44EZ!q)r;7sVFbmTAPYP<|7>`bqny2YK)Xmy+9VpfRyS;g=CqmD9THn z%u>_@siq8?k%y9pk%yBPDV{RClD#LaGPf_N?ag;@dOjEh{3`n@S&~#QfzGT&gcp{g4`nRDYxfL}GlF zrUoH3SbASvBa@~7j}-ksCH{}pc~L1+=Oab)Ptp8S!&o|;r2nVr|0()^>JsYG`A3T8 zpAz%0ZsZkg;VY&6qpK`+HB#3hbq)1vMUQ?{kQzm0v?$R%F?BssPa`!JsmG8Sht$JJ zjc3jcZiKPCQ; z6wN<14Jr2jRm-bis){cDj}-g=De3?7?Sn{(|05;lFE2T1AK`XBsu(*@Y9>;%kb0c@ z6QW1G;?$E=o)RURKbCq1splv@i_~lebEGu-#aZfkq~;;@0`<9~M_!tGk;;5gB0otj zKNTVmGINn+MsAj(|EI+Nt99Q(>RqJXW~TUm^*FvqMf|^- zxfrRBkXnM&GNkDLDe?dKj+0u>{1u`^cZ$@PHcz5yv(eQG08;{Ql(l3LODUTQN^-yyYy`c}~+ zw@=akQ}qA1Wws+d1gRg9J{+l^kUj*dpOM;&)DEO}BlQbX%J6^Xa(^GN$hyGVP{SuM#+)gBdOLUkMmNLQF#LONtn zmZIoV1=#;jA0|rV80jOB?tt`>NYm2OMQKGXkeLT`_k#2?biAc9*Df|D?wV7^1} zc0{@l(x)Tc9qCR;cSX80bJ+ink6kw^XVj|I1L-r7?n%9u=y4|d|LNYMM9!H$8|eW| z>x*~Jb0M2TDbVx%ua`V#7wiXJcdaw;Q9`hQv`@FRT{(pSr8I*G55srxH7Abl-)9XW~| zO^zY2C&!ZG$noS2rjX0wKBT8t-6Z`i(k~-D8|fF3p2JMu6w=Q#enCD^y^gKko?F$({CaDF4FY>^gE)*=L7ve zP5+O)G`$$wy+|)XdK=OoBE1snrAV(pTKfM;FRxYiBPt(@68U6$71Ey}&HjJ-Q_2qd&L9Qm(sM8N=<^PIblIo_Q;&tSDQch8%za}@38_91-<^QTw-4qlzlgj^9to&c` zJMw!)dA;)>(mz1UAg%oWXQY4RHvFVmJ!f`M`Gutar+gwPw|^o1cU4hW$6kv63N`uv7X~WckHP*VAM>t?)QFSD|9{c=|1X;S{|gi9 zLzDl1Va&gP(b)6U4x!Qz8vp-AQ{U>SCCgvHKueJF=PwLW(B#iw7;7^6Ejd|ecSFm` z{%Z7pP5d943GGa17PMob+0Yt8bD$NW<)L}dsy$D2?Q1@?f-F|qh5Bbw^drIsdFlhzX2F|y34y1H<*!9? zRuxZ$)(#rYUu`fK2<jv#~XkDOng4Q|O!g#BsLAplU1MLiG zJ)w1n)U zLD0^DHW=Cv5!vNX8vt!6v~xvKD~hgn?R;n#L%RUlaA+4olg@v$8|EXYw(uonpNF;pnNy&>3{71ZuRvQ3?Nw+?pe=-^&VfbH-hlQR zmmvNh_gl0#smRb!^z1}v??8JW+Pl=n|DzKL+6Pn?ixTxov=5=Jgtipg3TX6yjs73q zgEacTM*okMRnR_zM*r97|Ir;;qyKB-|M9nP+8StEp{<3s0os?))s{9kidJeGhFrH0l3C`$0Ji_QQHAc89x1A6aSCL*tOqTcc&=P_mA3cWB~0CWa>cMgUmkA{)DE^@V}V(w`9g^ z*-PbLQKIi0GvWrw>__e|dUTXCb&;u0@c?8FWKgeGX#->qLFORpaz@3=&ordcs8(hT zGA)ovAd^ETiHwF!iaF_8Inw_}CR zxgkjesnzB{C-< za||-aBP0EPWR6qh?Ow&LsI(R(x&dWQM5Zk=ZK$6ldff8j@W`|iCHjZx%&Eu@L*_JO zPeZ0XvT79_km<~{j>w$Opp)cBJ^4%*WX?jSEA?*V8Dw{4dLh#TnV#~*AvGU>MCMEh z;#m6s$n+u4Ci^0@3z>e%e2z?iWZp++05a;rABfCT$P7Z}T4V+zbCGloGegL8kQpii z8ls#_o=2WfUO--m%rFMS6&Z|>K%JIS>tbXssp^+fxs1G=9EprP|BdmL$V656{I`re z|4m-1_ma5|nLC*?3YpQ!Ok_L;89x6l!{@(cU;!ThL3>D@DXqs zJ_0TykAUMI&8TKRjEp@0O}&ueBj7T81YBk&GLKjFCy<#{ji0P;$#E9nWd5%jf6bx|ozsT+*L3UqKjsL57f3l7ugSyBbP>m0iKpl~6eHN+l z|0w4mzC9S(Ll`uy>W%moWDT-v{6ET1Qc>R;sMV!O^%a1MGm2b(4%srYYW!b`2C2sX zqq^#w2qoIcs`39w$y0GjkMxl(R7;D<1{6zV80lP#8vj>|Y8)xZHbJ&&HEzbDLyl(e7ugQT_C&TLvS%Pm|Idp5BP%xrxfx}fH?!n zLF8a^h+=%t$_}M+t|%PU;oI|(<@isw*7#3$II=e*I|A9!$X}AMa!YY@_ z5~90*_HrsC$ty%xpN5tVMOK}b*CKm0^=m|r_wG6>qeO|@a}2WMk-eV!SaO_{Mq{(t z8<4#T*$LG75g^tlQkf)~(LFkQ3$phkdn>YcA$uFLQ;@x#Ig`mdBvZZQK-@`Xs=STs z-i_?N$lgPp{r~9Oy6k;arq{}R0NE#yeGu7)k$s4zGo&=?A7&q+@+kQjIg@-`G42Uu zXCXTq*(a$>{~y_>N%sGJVVdPRSmIqxWnC|md*vY#URK4bR( zvx^xoQB%>7{SeuuGAC^T)C<{V$S$Y8g8Yd5m|RJ&B0o`-_WxDcOSG2HxlHN*Bg^rh z>>3r<{2VD?BKteCUm>eX*D+_kl*TRaHI?W}*~s`Cb%G(giTsw_Ol~2!lHZZvliL&- z{6KCee_na=OV}ce@^=U z$Q?p9RE>xSIn z$aO&O2;@#i?nq`HMIKEyCtHv$$z#Z4$>S6m9FH9P|GCyx4awvH&c^-K_N&nA@|06ey98QiPFCs4{ z>Hj(Lf8;JxjQ?3aHh(K zqcan_x;7t2PF?a(Ah!*1#&Jqk9?7wPrgJhAYUe5AzvjIl8eaK6x9YZeuI3Id`onGd`9jazYO>`(UlHQ}$o(ZseEt3d{b1zwLa&S5 zztH!CF8&XFU&)F3mb&;q^g5zMZmAyty*_mDf9P@$<2#_1Q|Lfxa)gwL>`f%vyLcahy{a-&{N+Uni>HoU;e|5h`K)(b! z{a?ShRwn&lr~k)Cb|myg(64}gFLZUn+z9HpFHW$4QP zABX-JOJ^!p_wETQv&bjOr=&D`Lc9J9^tsTVh5j7$*({wSrSZ{up2`cNs2iWGeIE2z zpufm?KKT;4fP7gozC-Ek|LY4yiJt$dzXts)=&wUx4*d=2OQ63A{e9?fvF_XCJLJ3M zdy27V>K{;9EDDbr-+l;vDT8IA$4<2Z`YPxjQU91+DW&nT{sj6O=$}&mjQpJZf?TZ_ ze{R*+Qu$Jpwc8l4gZ=~b_0YeCu9{*abo#%(L2@D=*1uuqCQ*KoqXT_2^zWc=VZ2rJ zXy%nJ{tsQ2Ty3%K(0_yeBlI26e`4v+QX2WTF8&YwS5cx*wfgVScSGMveV6F*K8pWC z-$VXMivL6ZTd|t67sh<(|H3#8#y&7S82iFV!q^YS!7%oRQ6Gl*Ka9HM0px)s{Xbfl z(SQp5KRRcOLtp?#L+Xtb!x5BFw!uxFf^8Cq%@i*VC1OiqC~&{GE5i_ z42!xgdej#(@>InC<7>_EVH^Xa0HZOCB8(75z?_ogM13uT{%=%jDNSG;3Pb!KMl;dl zJ)-{`^nc?BmU8gN;NXwJ!5^c!4Eq=|{sW_>i~>a?a>lVRPKI$DjMgxYXWdq^XU+)nB9ikzjZ5SXXk1Fl{7?0QaXE~U z3^@Pa;5Wj?RWPQ&koo^GIQid@$^S5}gK-m#Q832w?PwTd7|8s87-JP{e*0c1Z^y&n z(5<@`^B^FIxK z`77exFgX9yn8qAV0Tul|7@Yqf*QNg(;{Vk%X9kQ%VbEcWM?{bO$DsckGue8Ni>};5 zwtN4>T<0BX!vUDja{tsh0xk6EzT@?DiLI00j*Z71w{ofG(uV#J$V;hXsFgC$h z17iaW`oAIm592Fx9Sjw(myJ>9zoInk*U?)T8<`{iU-gY|VQhu5nfeydBPTb$qayxa zy^el>u@lC27{9{!k)=P8;{PyqkmCQb}|6xj- zOKV8nkfi@dEpOJq%)(5-Ov6mFG$r|}%Ov^qf0O?IhwK;39843Y_&-cTGNWT^T2$;> zN*?B+FkP4-Ob=!erq7&$MK`SFa6&X|F7=dNm%we z%(l2=G|ZD>o(hxxZ;Jm{b529}H_Z0%FNN6wZe5ri;oJxFbU3PQJHh-BW@nfm!R!L_ zRhV62J`b}S%-Jx{;Cj20J;eGhjZfDyk-h$@!n=qs-_0Pje>Y z$H^ziS>%)CQ;H0phWQMGXGMwEIEQD&bF$L-8h-)i0+@5D)BnvE8P693G+&a_UcJ_K zfcY}@S8CN=2=hIdi(tMD^EH;z|4s3Km~WDANxteYi6Z_F^IcKmwZ9K@8O#r;FD93e z^nX+Qzk1!#|4sUTT=!#`YH2HBu7^|C{vx=niQ9z|8HE$-@ov zC)nz&_!+jUvIFMtFvb62{!0EPnX%jKg!u=|UDU<@cHv*1^?S=6_b>Ml9tNP^*StP;Rd{vRnJta3H3z*7FN@|#48aL3oMn#rYM9ZDWX9uDgW z21k-dkw=rw$rfZw@)+`1@;LH%vXvr(*04^1buz3I<%5i@s|~D^R18aI1v5=iy=@2U z6egTXo<_Eh5@2kV0C4FH}VX!J1J8@Vf9p$TJcu#7GRwf zDX{u5=WMbs*^lf`4j>0AR`UnLx(?P5Sl7Zj2iC=~hQb;S>s)4@N1jiL`NO)99Hv-n z8%9v%EKte0L>0lhl)Q|*oE!=3Dp*%AmcRCk76R*PiKU8s1c-HYzpzHZ8ZDDKmFuc6 z4b^7~>v~u>!5Rze23X@@jZZXbtG-80Wa}l&XJJi%bz@@4Rq_*+l}!^Z&ww=%)-A9m z!Ma)gFZ=Z{amuSaK)1rWEz$MG#L%{32SO1xG1sj zdNr__I6+-6cf-0zdIFpMnpGbrj(r{0y|5mGrLLw&6V?~7ro+0wW@`gj50DR%50Nv- zhsj42WxuvINbG+|%|F9n&4l&1+CeqJEaCP`>~|xqS+M57dJ@(%u%3eTbYjFsiT#(U zPdzfSZK<7|oj6N952j9{&Gf`^@4$Kv)?8T6!+Igna&@AnbIqsYYd-7>YaXl@<=+jq z46fNWG|^98CNIJI4Aufz@56c-)*G;1fwc(MtFRU(4tEp1nkO#!Lrorl^%|_#Ri9rT zDf7YYiNbNP-h`#r^%ktR6ZOU?S`SV%=q0yi>s?sysabZ3i<%||eyO@)us(pb0@h+! zOJOa6^_K9X&6DRU_dDcg;R>Arh*2+X~fDAzW)vjiD z2UwrL`m|}&>gkC=>a_VkSQ}xf-QSSt-%D=U>idgB)sB1vYm<7qOXA20GLH1^<*+ux z+74?AtnXoMh4r0`|EK}XT{C6Yw6zV^4~h0q$zL<5(Z8RY!TJ%_4p=|IQl0;{Y7i-* zCW^0U2kRGDzt(*0*8D!L=G9LUXRAZ@J8X4M?u4C!wF`D#Si52Eh4lxlzhLcw^=IO= z-3en@qVFj+>bp_vZ&?4RCr2d;KdNug5(hSd^)KxGVDAHaUo|q2$WKWmCnSzO4EFx8 z>m*vOmm8w$6{|bDeE{r3U>^v(0qlCP>(~4-tmf~P@-(M)N5Vb`_Q8qDkJ4f-9!&Js zU^j$a1G^DysBh8}l`%Eng^7l@!A`(VCQ|uCueWOcoRK*7N!V%FZDFe_7VHdc9d;IW zF40G;*|<1y^x~Rb^F7fenDdw66#N=?IIbFB{C$-WJOWA1mh-&a+$ulY$eNPE~F66(L|w$4p-xvl2Ag|JVD-34|h*qv(@UYk&VGqHS5qVC(UyTb04 zIQPk#&GY5|2-FCb-5vHM*gasY7V8Q7LfE}v_lA8Y?6VSQA5rsL=bAOA*X&e!AJ`Yb zK3feJ!|n_FT-g0&-jv;+96%0)Jp}e3#)B256Cye1NG!q7NMU>)dA_Sz;<#gB z4}*OX?BTFSsDFG@ecHr6PbH3-1N&mwSHr#}ap6YTm#P5-*lO~p;^pK>@(S`w@+w97 zwWi|#eVyp2E{$tpkAr<3>@l!M!5*z<1td=RDA99r&EF@&z8?12MBQeI9<36G^-lEP z0DC;_8)4r7dqSe|^hCF&@*j?S)%kf7?1_mX|0X()R(F|1TXjy}3|pOJx4^y=_N}ld z!&ayF?KRK;oM@I#l(r?*!^Z79U{6Vu8YYTgBob59hj-XhVc!G$F4%V`w67A0Ml~<> ztXcU5>}jy?m0sedE3D_^eo|R~>8dF_v&%u65x$-0qn)FmoZ*Ken>7=J2vQLOV3aQ150^8b&p*OL7IN1OluXv_aU!d_4EOC@>xHEj9+ zM~dn!mH&Tdya_h{{N3JMRklc=KK!TuTc_prCa-X^_tTl)X;Xqe6MA6v$Mr1hk9 z2W)l3+5fkt|F4>qI>$+D89x!nkj&k1)M5Gqw(9D$|8KMZZ%hAQ>_u|^fwK?ny^R0; zPj|RXXFpM*nKMouI1S;{g;NjC0g~^?_)q*x4W~Yp2IN5`x7ImCa-#X_P9r!8IACdw z=&A)|IY}}lin_;%qQU72Cj;jMI9WJ{!O6iX!_ndRaAf=kj!9ait!|@m95PS3B!2>| z?y#zz9U1?DQzSY5*vG zoTyDsu2t(4IPKw_%KX!6=^dza6eao|(CGxH8^z9Wx-jS}rO{ZHa|V^}WDn7!&)rTh zIM=~B6V3&2&Vn-lPH#AU;q+nV*^(KJn>qcc^cN-G_knPRz!^k+u;_6MoI^#-AI`bt zdD0Jb&X1;&GQJSbrErG9xd_g1=8RCRZtcZXE)gX<=bg*oTmk2D>LW#u*L5Wojv+W# zGroqrR&v%xtuzYG&2UD;84qU+ORp!#lH(*Znn&u~0Ouw+6R6)Pdh|KnnMh@lD9SWs zzixqZC!Aa1OonqCmD{B>Zkao%Oc5n+|EX~9fpZu2yG4(#ac3Hpdqs)sPDg$?ocobK z1kM9+Hp6)k&a-eHg7Y|>8E_tj^Dt{YBDLc7d5p?TQR0?)0?t!#W>J5#mi{!AXGDqj zWj34zaOS{y0gjCSzUUJPdygC%f2WU!Q624^LM<#1LokUxK9@Ua|I z#&WsIN=UpQryv zo{+DD{DH{VmCU^OzuZqHu1C`U^9>juB+Jhq{NK9r4UzATd?Vy-c|3nUgM1D0DdZE( zPb$XFlTTC8M2Q?MpGDq4K1W>_oh^wx{XcJs65TcO4)UiXpGW=_P${K<3hCx5uoS#$*QGXBH(DCA}QN1hfa>uN!A z{3p-xpFGEZ@*MxkAJ0-5|3SVrc><}%f0WXORO3G?R^va4a^51}PEr0fUSj%xUi=^V z_9UGxPyhdkcgcJwHqojM2XM03z%~u zIZX7(A@d`Ue*yW6kiQf8i;=$``Ad+$4*5%wzXJKon14A*|BoCyADx->|2+LaPyf%; z|D)bfeiUnsCdL1&TQU~;iO7#begg92S$cz%M)$kC_&@SDi4wQTB;;>J{$}d8h#uV? z^7Q|__&@TKN&0`D{vYr4RODwMe;4w~*zZREUgYm#<}_K3+83#NA30qVu90saK>k4n z4~ZVP)x*d?jr=3X&qV%FmWuz!-!A1Jr}6|z|Ids6Bmb1-M7^5)Gsw?D{#oj?MUUr|{wpN?KR!1WA^!&QuTdBO zmk(%?`6kKn|Mqt&?p123V z>j?KixbMTQ2lrIC_2D*#+W>A3?m=)9a1Vyt2<{=Q+feF8`{;s7jVSRNlW;Y-DeB_? z@fGA|sAOwp>TnBi4Y)R3lckoTe14a0cE~*Gk{&7kuRabiF2W7r28`vbi;s?5rcx0l zI_KRca9hG{3il|u&EOsm_fX~>COOg3agU&Kq$vEhh;NUE+nhm*|LJg#fqNp{W8t=f zdmKxTm(u9ma9dM3L6pd6+%|AehI!)0x>xGUKi7LZxdh##h0;7Vg!IuMs`+8TUFWqsY>hj0IeFN@z zxQpP5|HGX?-bmgg_g{A++y~%Jk{=woH&eNVt_%$(H`AP`xL*xwdVe%33QSvczCiytY?|F?dmt!ThLq4VQyIt_=QAe+91k zW<)Jyp(yJ60*UGW?(4PM{7ty;z!m?8`?l!u8S*X_@&9-%!u+7lCM@LON-8jk3~_F@kCh#_cOSkF#c5Z=+}1c=TyERSCebVwTjhq z<14t|z+DITYq;xK`hQXyIkUTg%0^M*?cW4<3*2w1Zx%hi%INd=7N`omtank6#tKpm#4wY!OKw3iXQEeC;fkT(zA_wHJ$~p2+xM+!E;zj z|My(UiF$*cPrV>YUpZh1UmOH+W~l zJA<{llRe0ur1*b)c6nz}5&w_R6Yp#)eaU{J$E`O2-nsAw!W#l_5KHO*QUAm{hl==r zb(_zFcOg9bzeoR%_hlF}hm#{n`oBm2kH!+cOX1xB?=pC!;9U;yN_ZogN&o*!2=6NL zYEt|k-nFFoe{~y1!y5~440ZZ{+|J{ujF-&l>hLDOyA|Gz@Fu~#iKP>zG~VW$soWw; z7L@a}+jJN3!6GN(|vQqS-iEgb-W%}f|K97ha^7UE zw?v7z;T(@D{^c0dEO&J|vft%cQy*^7WR>r%?&${~rBceUl|;!YX*5 z!K43spDLxg#?M(Q{;$3>V!Q^vy7t$?Q|9?4ylwElg0~6YI(Qr4t!Iw91k^GmU-nm8 zdn1)^M2U~`xA3;Y6aR;|MfB+I;EDgk`(Bjz%=rP{4tU$C|454e!~0os)Llk>!|442 zZ#TSOssBd)PVOXkDXK4?82>@;QLJvsU+|S@{tZ71?;rTehxan)U!hO`_xDw%4Szp! zf3gl)7k(oK2f#lN{z35T@ojywfucB-)QxxuHj|cf8CL+6~J!>zXZQAeDQzyWwN3e zUoUYYW8x3(*lZlXl4;&+EX7=91#je1-@{olVpl*oJiVel`4Kb)B(M33CS z7ypNUi74?lT!x?n{L4{T4}T;I>b$xF{yXrmg#RG?tKh4X?P~Zpz`q9mX!!JhU;H2b zC|OQ)wfbYITu+WA$H^F`KVHT#Rhq;T;7^2qBTL2q;}J`L5|x|DTgY3Pe_O4(li}Y3 z{|@+5;ZI=>{XgEXyQti)Sl!cU@TbG4|NHd+xMl8Vrucs~^C9^2;Lm{n6#R$bKL-C1 z<~%An(a5bolM4Oc7ypMpi+oaYqR}ee}?+AVx@F=0c@cj~)Hr7ypO<2KgrW7WuYf_56Gn{txiq zgTEI3`|y{;{{a4n@E0?4iDbs-_EIX#M2WBT74W}+PyhGD|KYDBSHb@b{wMH1m0epl zG$Q=Z<2_X#?yqL%8d+L=rF;p0BmA%6tL3a?srY|&?O#*bAWD2>zk$CQ{wC_*iXPoD z{Vi0slHZZvliL)l>)H-q8TF6we~14Q{9oXU|HI!QIr09||9$cQc-+9>3I7lHyO_CK z^mt3e|Ka~BO6)v;qo6$e9~Ab1zn7)|{+D0aSCqnj`TfcKvC#V4j>1TgUG?;5b_)p&P73<|1U4KgQ{az z;9mg95-vbtI0_eXdxpvO#Ct0KkHSUd#iGmGOUO&f%gD>gktke&!WhO^qHq<1tI2D~ zYf1WlLHr+u(Teg?+Y`6>SQMT>VH^s#qc9!?v3eA4Kw$y{@&EV=DojM-78E8?7yqwr z^Q}~FtEEgv;Q=8m`%t)778tj~bQJEFSe>Hk99BKR z!hm$*scR6y2{2`)b=%U7)}>q?`TMUnnr6#uW*%`u<;ANBo;CW_5b zv`{<}MVqDc|04ar=&DJBD608CAp;-9f=nY6u}B7F3B@R(TrI7j*qB94$fi}j8H$He zIgC7px6qzsv-d<+MTZDilvb zaVUyyQS6AKYMj$hY{ydif06zl^{Ho#< zYQ{2(J;{F#rChs7pkav<($-BtA$$J##{wTHX<+|=8rz=*E>;ou1hT?-L zK8zy$zgWxvi}e4Z_16rV+L3yQN* zT!!Kt6z4MSITW8~ApReJhgh74;!7yf|BLkh*bNpi^JS9$UwoDELUIxL8uyXU|17@2 zn9u(#^7)^|x2e2C%JV-_l!t$!_&&+!e-;-rUPAKWpT(sruD0HC6qO;bKyf9CA90Nz zE7qv%McQE%`3dR@8KS)mOaz9cL|F0hX9VqTX@fYg! z|04ar_&b%Ik{Mq$yQ%z9OZgMQz9{~M;$9T#|3&(L^qokN{vU|{$J-q2hoCNk{be~p z9nqt$3h4g<{Xg25pgw}e2pS;BAvg#@0>Qxu8X*w>N6=8}M$gR%=>I{DDADKBAc;Uj zkYZ+9^vJ;i@qYx_T8fUKfWScDA~0EMkv2*H55)iDGd%F9`=aa?Z$wZ;5F!W|mqd>~ zkp*Qc6;a}SY=Yo81Wgefg`gRN!x0?HoWmq1-ohiO94SiVUBS@^S|VWoKWI@all~uw z|HnQY9FL$af>sDlM9`Ycq5nr$P|$|TNs=FplLRLtI28f?KM?v@A&PA*x{$H(iDT0v*E~9?A=<)W`{{#Aey!@*XT#w)y1fvjK%Y5Jg;> z2V+Eu#_oc#2yQ?yj+x^{kB`U%DmRJ}eWnX0B6u3XBn0;&xEa9|1h*i#9Rd6Q!EKTm zZ`EYhy+f4v%()Z6-3X>qzf1IJ)GoM($}~};Pou$o2p&c-9l?VL?q}%(QX2VKK>rVB zh!VH_BM4?9c$Arsi5_pm<5Zp?XOZ;(fc_u1v-1B}5j=}v9)j5jo<}f;na?R!mm~g< zV6G_fzPyNF0Rr)V1TTpmJ&`GRnTq(oc(Rl(MDR9(MF`$N@EVoZr8IViH>tcON__0z zLGV6;cd5T8db}?mP+2TW^nFn9AxaGqEJd&#!7>D2B3O>#Qv@pztVHk;^XdQbmaL-k zi7X*LzMmmjjo@?YUx*&BYYmmPqNsU&vKL<=*o0gr@q@wx&5^R(} zeaHz1(wn~=xAL@JMZPfEA?Ss;RDD8_<9hCNy(vtXp z+#032R1Od&a{f|1lnz3vKJ^BoM_X0m5ig1V$H%DD2&I-N0VNNm8kDjqB~VJElw@7; z|LR&aDj89tGoh42$w5h{Zjkid`WrF{b~Q#Q#w`T=FG2f;^HuNqv zC@n$hIFwqWbUbrfNlv_v;{Pa}NVXwQLg_}7+M;w0N++Y#10|XNi4uSRTjKA3OZ@$B zsXg@$WJmIJvJ=^v>_YPQzol-B`TO6J{Qfuo=e3gj{uiZQ0B$`1{{d zKPvr6{{FW#kntdLFgZlAy8NLiU4asR|6Ahke@p!RZ|MSNUPuljhm#{n&KN0O%=i-W zQt~qLa&n|%buCv?xr)4+yoS7%yp9}2jwZ*D*OOz(apZXN26BR8b@?};^dw3XQMwnU zNi603pAzT)ly0TM`9CGj|0zwT!udZX&i^TK{!fYXe@dMHQ{w!e(ml+S`9IZl-A9G< ze@Zg{2c-u{&i^TK{!eKJ70&-DasE%~Q7WAOQ{w!e66gPvIRB?KOO;la{}f8Epv3t< zCC>jT$^0LbW|K1i2c_r8=gAkyxg_WRlw|%7O7qE=NY4K$$^4({S~&lwB=dhzT137^ zzD~YDzDd4CzD>SEzDvGGzE6HYE>^5AU-|!Xl$P?US*ECp7_T73|0PqduazjRMrjpF zpP?lFkJ6`#)$5f0U!wm<-+GtUp!5|=;{PapDVgz-*HIDwkNc3NuMu8|(guV@lr|zf z0HtqG+KtjClzv3%Ta>n;w3)TGko5o3ck(;m()aRcLA6GS#s5*-E=!L3TBV;*`URz* zsf+*1EG)_Sm8Acd#Q#y+N$ygty2>9Y{fp8bl>SEPPnP~ArSV?S|4VyCiS9VzJ_z?m z$kq$R|KrTCj?@js|EtP@2y+PQA#8-OKEi_$ivJ@#NOGdyODO)2u%Rf?{UQWH4Pg!S z1WEr7#s3keB{TBOQ2ZYu`~UH_=?Gnf20|Ml{XZ1{udd5sKKuX7=UWe<^#2hSBr_W0 z4FiN75ta}hk1#}dG{Q2%LlN>e5jJK%{XeAthvNU$y{7+%;{OO~{vpjjr1?jm0>b79 zk3lH@kFcfGje61Hu~d!|B^sRwTOn+Nur+o1e<=Q6-J_Ebs>l1ZWvSe<5w??3)w>8! zAy1XIQlC;o>Hj0_Af?gWBs?AA*$6u!?18W|!fpt=FsG~JMECme3@Y74QL_qV2|W>> zg|HXnGewV&1^fSDpIS;^ghLSaLpTs&f94O6(x@jH4x%zxl;~4lcn-qz5Duk&uITZS z&!=*MDDlx5hVVs%!x2tFI0E5Vgcl*a0^!97FGF|<^DmYBs4o{@PGzJhajRa5a5TcJ zs9#N9Ltd-8%?PhUI7<4@|NGW29K+J<72~-s;W&ho5RON9Bf=Y4IzdXKt0ugO%0yA# zm+KVa%?NKtNQVh;rE(if*#itGQ@JBnB>zr?k0P9k@P34MA-osi-ORa%oEB%QzC?H* zmFck}bss=D1L1?zAF8E4Oyv<#qF! zK1+QzIY;uP(Vj#2yfm76sqaR^xh$P0rSWl`k8nN0mk=&PxB%gM2wz6H5aBD#d{r{z z^)90F8u>c;2Ew-yzKQTHaXfVzsCHJ*83^A&_^wn`BZulUmz?(RBV2;;1J+tBMe*7{ zq_R|$_^eot@C$@15UxZh{*UnETKTJ}d_sOoenyJ_SC_dO;g<;4P+u#0e06_CMf|_& znQGxX5Gw!Qf>8PYCWITA^Nr-hTlg)N&7#CxxE0|xgwp><_`T@ywetg&=)C%o@lT}q ze|3$&Ap8U2uLyS{{Eel*OKJ4UG>oq0-J!EyrEU4(4%1u~G|1URVd?-o(FCWgB z{$D9J`UwGP(B{zQ&4V&avK)4Mw$L!rvIyriFfKGl-r8K zmrq8yoywF8FfKZk6;DIC6UyyT?#Q8s+ROIf_W zd=tvgp*)dmpG4kF-h%RjDAWJT;{Pb$PEIE8Ag7Rbl2ggM$h%4Ue_8w=<$KBd$m!($ z7nl((b&7s@}P{5#4&q5KQVKQm{CrArq)1RiK_aC4Z(MYoz~IG}+Fm&tJ)+VxW@aR_UTged!AQze4|y z_OariG6DX83t z%5A9Jgv!mROk~a^$%$Lw7AoTZ)&07i3jMz#{$I_!6P5c=nTpCisL=l_;{VmsX{;sw zUsa}~@*pbrQ~%HZQF(~U49Sd--6LqM&cjDh`2m&3P+5-3OjPEf@;EBbqVfbPPoXl4 zwVsq(QLn5*^RGN3O4Ku~%tqyTROT@AInkrf?-lWX{6D7d0!oVGd;2)930xL;3A!`g zJ?rkf1P|`+?g{Sh4#C|C9^BpCCAhl>3A|O`-u}P8b2y)K_o?cx-kF{|v&-zX_qzX? zxk0?QiT6hF-YnjKGrCESCf<+qfA6h2Nj$>s;(b)S>Hpq4nZFC^|K5A3b^lkdB*l9l z?#Bb-eNex=)cGMiEZ#?SqRs>z9%I|%dfUW%#csq444r`_a#>*-Ivs3U)Pz%Ra9JA z#Fa-}S;du8T-lhJ9dju4&7vNmu3RL!bz=XN;mRwn0^-U?o?qwod-YufNebaFSeUhn z=ylb1q1P=YE+26f7ne(1C79!_biPOWzsn#u(PAr)-h-N^_uwn80CD*->aRolnaCAL zqWizNf-!{oq5rdOxVRRGD?(iD#1$#7D&mR~S7~uYiz`lCy8nwSR_Pp%UQ}EOSQ39_ zpQZFZ?RR{+%80AHxaj|`a{se!1?K;T6|oZAR{o!DtBR|UxT=Y(j<~8brv}zU-T%c^ zTd6-aPS^B*m+t@Ks*erWXT$&5XJc`-7FQESo1%SIG#6J(akWT1+x0!$>i?hlt~ShU zt4w^kn~t6jv8<>HaUS&U%jhEa2)&qWgd1yBuBJ#MM(=-N|+TcW%jE zB)zc@_T|X?=_6NNOW(5t#5GD>1I0B&T!WZ1Sn2FxC<*=FrTf3QMzGaLy$3Z7#Wh-7 z^nce_=IH(}uJQVj=;HJLU3~t(OMm{qxF#c?|L@}S|6Tg?|HY+05m#LL^Z&&)17{+C z+2rCg#9VV!LO54k^PGCVe(dY57K-bHxE6_PleiX(Yn8Z`h-;|ApOe_VY2PvY6QSzLR?wMAUp#ijedxV9-1 zU%$EN|1SE!YZs&X{h#96^MALYxb}(bkhu0UdH@gVJ*da8{=N>A9KoY_j6EFJdr0gp zC&l$aT&Ki!U0kQdbx~aOf0yq6;yQ=)e;57VenxQFXE^=eb%i-s+4D8M=fv)DLtMAS zb(2wb68_)0q5HqM?jZf&b&vW!KEQ|S@Wk~9ALA2ziqG&lzQC9G3SZ+Je2ee!y;A?K zRqy$uxc(E@Cvkld*T1azS?Qd;^nVxq-~L&^rGEdTw$lAy+)4CI`?=noj3l{E?0)M` zDMpC6Q;BbIum-K ze*dSqv*_DaP1bcba^3$E-~HmwDeeN|&L!@=;@16N+HqFu^h~=;xQj5es7~zv&36|UcaXSCh}$D>Z*d#qb}>iyf9Jb4Ni1dJ|0214#O*I` zUvl056JPDP14sgOV*eEB4iT%*ODQpo!jrUarY+a^FK5DiF>HH`-^*!xCbygP^mswlX@@? zQ6|2Qbq^EwNO2D*AEEQaN6jdb(K@mFiF>TL)#~HKy;|Jk#XVQt6U6Fx;w^bb+?U0DR@@iFeU8!ddepuGn)@QjC7swmt+=m<`?|QVl3)9u znKwvo>csvT%6&_Wq~g9U?ziH;BkpJ7zANqr;->$*b^mu}K4jZR_!yt4A#p#|6VxkM zT|XE1D{;SI^rh0d$6u4Y(MjTW^iJGg#Qk2}pTzxv(T{r6{yEM~|99(i*qQ%T+~39h zjhX-HJh3;@{|)-T{f;annHYt|NG?V?F;a+;T8xx>DG=&-|m@45i#6i6cwX{7{xfM;`+$#USa6h|6=I=pZK$tVTchZhDombzZf3$5yM{$ zUorgbpG|DV2+)Pyos1x61}mNYhl*KDj4(0IiV-eGeK8`$C?`gw7_m%_5`+G4(Ek&U zDo%`&V$lDM1id%=d^70(MkzKdjb*T`o|Cw3c`<5;Q9+EVV(9)aMn%;9Uq70R%2-98 z8|rtM2L0ctZjUmvrWkd^s6|~{=XRel>XOvciQQ3+24Wl$qoEi*#b_i(H!&JBrwKMi z{r6vDG)Mi%Ut+YxR@fTbU|Vd5?UCz$86BxRp}zi?7+p|b|BHf4fEj=2b3l)FXWbsk z#BOZ#662s4^nardqkWOK_5bn2!r^AubYQu^4Nqmx!@cj8)Xj#8^(T z0#_>a&82tp7p~^^S);?m$I&|S^*lyQay~IwAf0r1$#n>mt9x?Xn?}Y9^eFE{<;zoIoTfOVbGvgI=frp~#(6Owh;cy-we3YQu85)gzZm-Uzw z|2LlK`H7F~XUuu76YdBxUW)NXj928k|2yCHTatG=v3t1jLCox8d=yi}_$21fV$lB$ z-T%e-f?v7WzoGpY`A+>qYbHT`l_fEgVRB4?DKQnM#x$4~(V9!Ppxax|ILj0 zIPLq(%p_(OF})bgtaJMwu|KoI%%&6j`OC~9W*#wfGBX$I*Z+x+Wizjs1;xxqu3!I) zSwN54XQ@g5H+BCPvoID>Hkm}n}{lWeZXtT3^FPvVzEB>Cihs&mz-NfuIW_K}rirFJES3fnFy>z`% z{Z*QX*@vzA>O@`BM4u1+#hfbU05M04IZ(_IVh$2>sF;Jr9HL(n+DG_kotVSK9Ih_= zqCfOrU4=niQ^p+0-bU#;s{85hVvLxR#2hQ;1Tn{nIbNTc>fqJ;ZP<^P6V){=)N2MY zC$sGoJ13bY=6o^#6myQ4)5V<0gc*8*er(PXQ-8L+{)H{ei8+@E^YoY7daCX!<^nO7 zi@8wDC1NfTbFpr@>cG?l^$OEmD&{i%noT9@Cf%lPr4{U9rJkUk(=Vv|OTQaO%+f7Ha=6W$V=xY|J`Rbo)&iY39Ti5EPg{gl85Oa(EQvIy0uG?a6)3pw_ z;|_Hh9d%V2F?WfTRLtFC-V<|=m}kUP;bAfNF>Sw?2gT$mz&?1rheLW->Mz2~BVwKu z^Qf4|nS4y=>hc8U30~0 zv|qoOs{gCCK8pE;p-*D|E9PfCK|M^=PxN}LuMB>}|a)^~*teosEmsokl$}LtNy`j1b z)QfHP>cYyWzf|{;`tGa(Viggqpjf}KNg;Ka9{b@YR$;xOdaPMR8PfNlx+o8I39&q4 zd5dN6r3>9keZ3^h{vIv$rGB*P@5@Kmy6{DPlBmn&h!r4KxLARNK^QDnC`E|9Ep?dg z8+!8yv7#v=#fnme{*H7WgRx?%qt)kL;u&Zq=vw_#{m1&1Ii;|)SQW)8LtR#^3SyNL ztGu46{`^X*zw6(0q0SS#VOo{Ms;m?41+l7%)kmyqVl@$~x>)tas-Z^3swq|-v1(D* z*7McBt>?s||6BF+mz;Y{XdqTYdyZI*NE-9|-Z-(Eiq&4MW@5D#t2sk0u%%eK`Rf*> zZo^1EGQw&jR$E5f>7m3U>>ySbvAF)P#r1!!&UzDdl_-6jUB&7t*6(6<<4foDztvr= z9`>zjFCkVhCiGT1iSGYm^~3&R4HatuwK`D;tJTFCq?@*$GeoKX>2R1`kdMHTV%-sI zlvwA*8ZFiuvBrosSFEvO{VCQsv8ISMUaW~so?ve-)+Dhe|KDxMqhl%)rs)ZZ>rN+` zA=YfMW{NdS52?3uapf|G=IBIqU2C3LOU0Tm)*`VM=ujW_LS5)%Ud)$E^q1=LNqT6R zSgXWZPQ5}bn!o+P)O(}`}2c>Ox&x%G#s~ zu{P^36OUhQxLd4kV(k=byI4E)y{7(PO-;~eCIyql+QYU^XVClEFV-=!4v2MFtb=+J z9UjuJu61z)kJ`C@0{_f_su1h8{!+cVuR#QGwZeXf48XNvW&Sf3NO(ntPPtRG^1b4Kmk^Sl01y{_;i5f4vco}}VQCZ6Q~ z|M^|5=t-%k**(gWTGis=>A;g#JQ>BK`@eY7i|1$Y{FM0gr`~_)$)LC5b%J@g`Q&_)R@D#zKSPY9} z3G_x6y3s%rE%cxd`YP2D)c&j$AT`#DCs5*6iYG`yu8JpE{A-IRM10m==cN z;)xJXOYuaCr;2!V{})d*#$YV!{x2S$7d#2nC6WH`q5peIlhFS?WvR=dehLsz1=Rgt zJQcALR#xh(9O}F(R>SI818ZU})cs#Pb+9hh!}{0&8)74*nR}X0H^pX1|M%$r@2uWR zJblH}n$b2$|M%$rFP`?;0qOr9`oE_$Nf+#j`pHf_`Y|G&ZrB}rU{9p~dwNs%Q98%a zkEA~iz=1dj2jdVNin{-cXE=_)kvIxR;}{%^<8VCc<}aR!N@w-S;u9yHDdKr9o~hzd zkA-RCStTC2v}Zc=b@LI=Oq_+YaSqPKc{m>z;6hx4i*bokzoEjjR6NT_mg5TKDL}n{ zL$5{u_pGK~gKKdeu1DSf#j_Fr#!a{xx8PRXhTD~_zC%1aN%VtAJiBp^JxaY#JeS3@ zpZWkE#6x%(kKj=}hR5*)p2Sml8qeTaCC6}1Jm*O+;6=P-k5XU3t9T8s;|;ut|KKgW zjd$=a-oyL&03Rw@{gHSclRUwv_{<)qejz?N#Pd>ol8fgR$!mOrZ}AJ*p~Q(ZQ7{vF zVP+-kX2GoDlZ`yPom1x&A5(mCQRl`ym>2V5ek_0mu@L@(g|P@0#bQ_-ODI|08(re# zCO7Py+CmTdpfCENKL%hR24OIUU?_%RI7VQkl69jnT6|*2W9^(eUVLVXPlEV#6rYmf zQ%8J$B`<}gu?&{Qa#$WK;BQzFD`91p5^R>vAx6Ki2@rMeg{bzQ87^|1jq#75W{ zn_yFHhRv}Bw!~K08rxu7Y=`Z!gVI^OllTl3pU&i6uq*zKe_%K4jy)Jra4e3)@i+k|;v}4mQ*bIy!#{C4&QLn5&k~=* z;xk)(){D;^M(5%@oR14|AuhtjxCEEtGF*-;(7u0HQU8UjaSg7;bxN-$_AR`DWF!8K zn{YF3!L7Irx8n}niMwz&?!mpd5BK8%Jcx&s&gw_R=cf1^B|nD8@dTd4Q+OKB;8{F} z=kWqw#7lS?ui#a@hS%|i(m95INN(Y6yn}b~9^S_X_z)lAV|;>7@fkkH7x)ri;cI-O zbXI>SzF)=Xz4$H^pAX_&PJBL!Z$a_-B)&h1&%ez7j9>68e#8IpJO0r6Cc&hb43lFD zOo^#5HKxI|m=4n`_4{P>-hRdmm=Ogtp%-SxESMFuVRp=cIWZUJ#ypr8^I?80pmbI* zB)&o7`wMwtEP_R`7#7D8=#4IPqk$$`=s_R!ML+b%01Q+*#}G^sf}t3O;TVCD7=_Uo zgRvNg@tA-m@mDN`rLhc_RXVGe7vJvUTS0uAi0^NVR>VqJ8LMDbtcKOG2G+z{SR3nL zU95-ou>m&3M%Y-XKbJ$F2~DvXHpdp&5?f(wY=dpF9k#~~*bzHnXY7Jq@pt?KyD6R3 zdx-B?@$E_83wvW9?2G-dKMufwI0y&h5FCoba5#=Y`t;a|8K z*Wg-QhwE_zZp6QF6K=*WxD~f4_3!-k`LF|b;x62cdvGuA!~J*w58@#_j7RV&9>e2! z0#D*8JgszAKP$cu#rGWfdAxuZ@e*FfD|i*J;dQ)$H}N05g}3nz-o<-(A0H^4V|YaJ z7@y!%e1^~Q1-`^r_!{5fTYQJ_@dJLuPxvo>#xF`|^>5<0QhfgtzpCQFxE3B540(yMtWbym!V*)a#^#9Wvg z^I%@ghxxGp7Q{mM3l_#ASQLw4aiz1mxA;YgpNrg$2AXK02Yt{N{m>r+Fc5<<7(>wh z9>b`^F#;o%&M`!j#9%DOVLT>aN&FQ{VQDObWw9KV#|roxR>VqJ8LKFr)vJkLfAOm> zer?3B2BS5x7S_f(SQqOl)&FIPUw!dwK++H!IeBA7n}}aiCuv5~99xKAOXj!2*7h9g zw%88aV+ZVrov^c#{d5t(t|Y(XA5Pwl(eC2c!%2FQ^upfa*N6Fiv7bGMdVu&%6~BSh zgK#ho!J#+|hb!6J2=N<9G73jK`4~pWir+XV8Ba0+CyL)B=1;~c_8jVI_$N-s88{PX z;cO-QnInF4N#@~vCttwmLh)PVB#TLw;8O8h#{A{D!k$CDO8k?H-(TW)Mf_Ha-+u91 zL%tT*;d>Ll63KRZbd%xUM; zxiJss#eA3_3t&Mkg!F&^!m4KVBH~|^yqJ>|7yl9@-cI5Ye>aJNrkzuJ#6Lm&eW-oW z5B)I!12G7LF$6=E97CA+hm%A&Nu>BkkwiO5jQGcr(Et78?VO|}{)(lrG?u}#SPsi$ z1^i9P>J`Pm5=mtzsUrSWNvb(Xb@8u3QWI<0IdvTgQs+Qj3D_?F^(5dY@vkrbe~W(u z@gFJv4aNU=@o&V;#@Ga#Vl!;6)c;lI-vV2Te=G9VPTofR+d6eS=Cl|84$Ptd`*))5 zj9sv+Qq83P1G`~&?14S8my&(<#y;ZTm%N{o_ZR;GPCbx0gT#L@bLjv6L#c=1a2%m@ zRv#t)^TdBN`4}9F<8VAqP_pNVI7$2`lTUH-sp3D)ssCiobn&0ToS8TaXX6~4t8|WG zKFI=Hh>LJBE>W`2rMOJ|my@q>@|EJh%BlZi&T8>r!<@Ca4%g!b+^BR`-z5Hb#DBB+ zpAi2ojBdqkxE*)kPTYmNaS!greYhVF;6Xfuhw%s=#bbC}=~dA_s*@zA@HC#mvv>~A z;|08k^nd@$)K~B-Uc>8n18?F#cnfbUoz?G(|0nUkM}8k4;6r?bkMRjUMf)6nPW=L3 z;wyZOZ}2U?!}s_Bb^mvc;a`%^_yxb>H~bI3;}2~>5=@H8Fgd2cl$Z)rV;W40=`g)A zarJa3{F#;no3ZpRw zV=)fnF#${BuUHC8V;L-q<*+-F>th3K zh>fr@Hc>jOHjQOEw;n<*a15#Gd&+80i7hEGf5Zh>g2ym zz#k;toTR%1^dRYJC)B;M5B9}=*dGVrKpcdFafp)Dhf2UOlHoYQ$wx}SD3Z}mq7HQ| z$v8Wqo*)5BBw!--B%F*>a4Js2KXE$Fz?n*pVU`5UCYghCoqV1I%qLmkBnu^A5y@gZ zp8$=#0)9xqGxF#70$<`Qe2s7L zExyC|_yIrSC;S&b;}`sj-|#>Du1q|Jz$7{eOp3`cIi|prm3~(fsq)cbXJd%!0HkhOCE>un1Chm zS1g64u?&{Qa#$WK;BQzFD`91p7a(m942BsH-X*2X$m7wchtY=8~15jMsq*c6*# zb8LYvu@$yfI;*#p!2J@~P6Gdw!1fY2NCG=Brz3X4&e#RJ;_vtecEj#UucS96u!jWp zbn0Fb*qhNl*w@MXF|)q}4j>1g;|g%g(9S;96XV>v02a#J_P9ZpJN2_PJF8w>kB83EaWxPTb|>yP3I10{4>d zvvcYL68K624@%%Q2|Pq{7?0plJch^d1fIlGcpA^(Sv-g5@q$wQ)q@0H#7h!*nfwY~ zwMVJ1;|;ut|KKgWjd$=a-oyL&03YHbe2h<&tosz7N#Jwx7x>a1rG70zDJAd?^;>+0 z@9_hE#83Dye#S5O6~Ezs_#J;J_3A-MFsTG3(|J&GOks~wr^3{j2Ge3Xr2hx~MEx^n zz>FxE3B52gW>Kc;pga7;V)Pii(pYKhQ+Z2dZP>7XrPG}de8@b(NF0WWq;QJB!L)&!5D&}7>3~(fsq)6 z(HMiV7>DtgfFB&aNTIV_JA@Hec8m9R2a!Kzpdt78qUiM6mc*1@`1 z59=$PV`xay2peM)Y>LgWIkv!-*a}-?8*Gd1uswFbj@Su1V;7~f`tK4nPlEoCpivUk zjnVGd1AAgG?2Ub}FZRR!H~s!{HJ%f_$W%Q;)_mI2Om@c$|O} zaS~3(DL56U;h#7iXW&dF>(0X25;TW=uANiQm!M4&w19dcF2cpQ1efA6T#hSnC9cB1 za5b*MwYW~n>g#cX1Z^b$+s>&s;}+bC+i*MXz@4}YcjF%1i~Ddt9>9ZmNXfc~@rVQ+ zB|m28)F&kP7YRBkLH|n7DG9nKL8r;j;8{F}=kWqw#7lS?ui#a@hS%{1-c)9KpceW^ zf^L!A#yfb|9;LpI5AY#A!pHaopW-uojxX>fzQWh|2Hz@K{hb88C;5OM@smAD{aJ!D zNYEGRulNoB!|(V*8=M4_VlqsQDKI6b!qk{XsgEHztpukdNsm9_&-N&FMik71UYHrP zU{=hA*)a#^#9Wvg^I%>jtLKy8{3HdiAQrMmsS8W+ZxUQYfPA<9f=IZK1XNWw7!BQXl2F$QBX4&yNaOX9Cs3QJ=dEQ{r^ zJXTOTt5=lZW)fV9yfRk7s#p!HV-2i{wXinU!Ma!v>th3Kh>fr@Ho>M!=NOukw7{0w z3R`0vY>Vx%J$As3*aYZo#d% z4Y%VC)Ze>v47*A8;9lH^`|$uC#6x%(kD&d?I!1jQPvA*Bg{Schp2c%YXY~sb{6m5- zO7K$&zQpKdyn$^v6|oXl#wu79t6_DevwBSlX(u7I$ZKOAtc&%qJ~qIH z*a#bA6KsmjusOECme>kgV;gL%bdI4tNeAqRov<@@!LIl_{(;@FJNCey*b94OAMA_$ zus;q^I;#(okkt}0SVE>t$Ph+{;xHVJBXA^+!qGSe$Kp5~j}verPQuAJ1*hUP{8QLkg}ZSN?!|q$U+EmfL6Spw7?0plJch^d1fIlGcpA^(Sv-g5 z@d94NOL!TtD4o@>Nu)X%u1k2Fgxrv@FbTOSp`#__9|;YRkXsU(PC{-=$Oj3z!?t(v z9^S_X_z)lAV|;>7@fkkH7x)ri;cI24|Jq2%8+g4JN~K;mG!>?n&@|*}?VLKjgcgv{pQt%+Lo-lkM8Qnxg_$u6X2oon z9dlq#%!Rp?teyw+N@zav{B}-V5DVciSQv|7Q7neVu>^Xf3*Bg-i57a4tm}im66#0p zZ|Bs3652>YgCw+^ga(s@U?_%RI7VP3MqxC@U@XRAJSJdC{1r=KX)J?fm0p#nQJ2RG z_#0NlN>~}IU{$P!)v*TF#9CMz>tJ21hxM@mHdH#RH4bgP7plh8#HI-WTba3W5^$x8hv@S#(1s)Xu$kor#voz9#YPBK$M zXF2t337x~}Tql_)q4P-=;6gj6UW`j{DK5k1O4eF|D?Btt^eS_%ImvYiz2VgADc~PQ zZ#l_r3B5yd7w_3Q^#chL34JJ`UnTSr$zyziPw^Q(#~1h#U*T(fgKzO2zQ+&v5kKL- z_!++_y$afo*>5EO;dlI@4Ws{uC8bV=$uR|{#8j9X(_mUmhw1Sr{24P~MrGpaVVNYX zsDycuXT~f@{}0PXogH&vPRxb5F%Ra&e3%~#U_mT|zhGf3qI8a-7)fy~f!^psHyUW7 zg&y=lU-UzN48TAP!e9)+P^GhaxP(oXun6)<32P-`Q4&^F!lFrHFc#x59uu%6{)(lr zG?u}#SPsi$1^f*wVkNAMRg~&uj;O0)b*zCku@=@w`hQqmYR;vw`qT}uAvVIs*aVwm zGi;76u%*&jy|sk(ldv}AZLuA;#}3#LJ7H(+f?e@<`~$mTckF>Zk^Udno4OD7RXWGe zpJV_I#6dV1?OSOm^)MWcBXA^+!qGSe$Kp5~j}verPEtCnPm!?a5;j%B_Da|^30oy$ ze==t}&cK;C3uogToQv~tJ}$t8xCj^H5?qSQa5=8Pl}fMV$Ep9q)wl-N;yPT98*n53 zjhk>YZo#d%4Y%VC+=;tzH||k7tM8Mr%M!Mq`~V)rLwFdE;88q=_K}~UK8dIBG@ik; zcn;6w1-yutl+H0+A-Rgz@H*bWoA?jj!rOQU@8UhYj}P!6KElWN1fSwFrL+1A3C|&6 zFC{#=guP<)HNL^O_zvIW2mFYi@L&9lU+^n_!~c|--aV19?-KSyC*esjDJHW=sZ(G| zOogd24W`9(m>z$^pD_bwM8QnxrPQm3XO{3RBv~;VX17PFb4s`=;kl@DV;;Rg|)E`)>Z1Ow&`=GJ~qIH*a#bA6KsmjusOECme>kgV;gLX?XW#| zz>e5S>8##G!iP(ESMuNS5A25Bu?P0VUf3J^U|;Nq{c!*e#6dV1hu}~grgV;B1j$Go zg`;r{j>T~}9w*>LoP?8c3Qomo_$N-s88{PXDV^2lNcd3+pDW=TC43&E^Kk(##6`GR zsXrz$d{FKCqF=b5D!WCVMdSGqtwSF{Fa0tr#^uv@f4oMGfMVw z7SBoedGZT*(HXtO=w%7NLVnfBuaRHJ8xnq#(SPhw>f3k+@8UhYj}Me=`w$;V_+#=X z_|zGF#^`eie?k7z$zPGb#y1lFmeF_is8&B1KS=mTiTIiNlZ5|E@fpA1SNw+dCf})l zXd{wfQcQ-)F$JbX`hP@f>NFCORu!3kq)`7PBArB}C;uriw2vwxgG6K`7tDlSm>IKR zR?LRkF$dR1D7VlAwVb+9hh!}{0&8)74Dj7_j9 zHbeS_Q0Ol3wtY_)%!}sa*60C z5tAjNKcfS1AP&O8I0Whc5yPm5;|Lsyqi{5i!Lc|F$KwQ?h?A6FVf(13;8dK3f1-V! z%%Gl$vv4-f!MQjO=i>rgh>LJBF2SX^OzEt?LLzoc#7gp2_!q9mHMkbn;dT+T1drk|JdP*uB%Z?4cm~hnIXtg) zR=+5bZi%=gkx3=uvP3+Wh%3ywir4Tu-oTsq58lGtcn9w))h8ZH#65|)@6-<@;vu7t zoa8Zco=C(~@@IBV{Q_U&D}0S_@GZW>_xJ%n;wL40{#PPCJM|Zd_{!)vC$Z;zmxv!a zk4$3c)X5|=yF@0ZPJt;g6{f~Cm=@Dvdi)80R_bGj%pj2&omwO^6Qf>El9@SKBr+>` zHan-zfjKc3=Egjj7xQ6$EPw^Ekdi(BB9Voix`;#;Wwe-+6lYEeiS#CS**Uc#ku@dK zl*l-Vv`9SYgTCm8{uqFP7=*zXf}t3O;TVCD7=_UogRx4l;LFtUn1ChmS1g64u?&{Q za#$WK;BQzFD`91p5^R>vAjXZ2bV*zSs}@;{Y6}bXFfMG3p!` zB2o7xa;QWFNaQey{6`{(OXLQL93hc&ByuEMjl$752FKz!9FG%lB2L1|I0dKTH2f2% z;|!dMvv9W3E0cZy&Lx?L^Kk*v|05SsFUBRf6qn(0T!AZb75;^*aSg7;b+}&XtiDkq zk4og< zqLS-5Q7JHG;>@U2jHZ^TG~{XRoI1Tk6_BW(sDH)`m=Ogtp%-SxEK2s76|-S>%pp-Z znUf21J2UeznpdLok>|H_>VjAZf5F071dC!ZERH3V?9Cfp=te`LOy*eVac253>MK!x z|SQBeuZLEWJu^!e}vU&rFYDm(^PN1HR?J+LSC!rs^i`(i)r zj{|TZ4#L4W1c%}<9F8NDtUgkrMv;uR6Y8-NwN;|VNz@{V8c#9-C*mZWtjx5oy+lpH zsW=VQ=Rc@?I;soJsCp*O!r2lvhds>2dCq?3OVk3Ag?2){7?}>_E#8s$1 z|3R&|8rR@jT!-r=Y6E-Nh`RriZ<46ZB)b2rgnFAqotCKW)H`q|?!w(lw%vn!aUbr- z19%V*;bA-?QAgPW{Xa_gfASL&MgNaFWhcxzgJaj%qCs9ureTvWUIljP`_zGX+ z8+?oJ@I8J|W_qaF&PR!&|3}gPqdq(N7m51H%x`u={T+X3qmy7#OoquZ1*XJQm>Sby zT1=O7bi^I?80 zpyU_|N^~KTU$C%~7m?_qB*pB6x&(To3*Bg-iS++y548{aq96KWfRfb%B|3;C7(<*q zRHDO3!tI1QQleW)bd*F_mFQ>^`hRpRbsWZH0+z&Iu@siZGFTSNVR@{8^#ACJs?PMZ znM7BT=*r|(?1Z`+(*L7tP}js-NdJ$nLtPi?|IziS8(>4!{a>ORV-swO&6KR(T%uc$ zw6qiI))L)MqT5in#dg>p>HpCksXJk3?1EkKcclMEccbo(J&^t%-AmORLvM+u|3~+= z6Xx_s`hWC5>OnXdhu}~ghQo0Lj>J(o8pq&R9EanTtUf`aCz4FE6Y41v{am7_O7vcd zo+i<&B>GSC={N&t;w+qvb8s%s!}+)X7vdsZj7xB-(yQJriC!kr%Sl$?N;{|i3s>VB zT#M^)J#N5__&09C&A0`(;x^olJCv-xQ=)f~?8ZHIPQ6c}FH7`(>H~NX58+`vf=BTf z9>)`S5>Mf2JcDQPoRVWWFVPoBF5)FSr@n$$@fu#o8+a4{!CQD6@8Dg$hxhRTKEy{# zR(~wfPe`8PGdrh#Au%~5`lZAqm*`g{ukj7O#dr7~Kj26Fg#Y4a{DNQc8~%si@rO1h z2`0s4N-v*+)G06}roz;i2Ge3XOpia|&zJ!-qF^TU!pxWjvtl;Pu5?z85)v!9&z?xVKYhxX(tMsaFf2Z|H8el_ggpIKYHpOPx99v*ZY=y0{4YtL0*d9Az zN9?3@R_`J)!zHFG`S17#cEj%21AAgG?2Ub}FZRR!H~#`AWF(Hl z(KrUj;y4_S6L2CS%3?1 z5iZ6hxD=P+a$JEcaTWfBtCji^w=ruZX021NBUvvo8&B z;cnc6dvPD`SF+Xti8<)hhe!@f%n{}swR7s@5_4N(PEeo3Q+OKB;8{F}=kWqw#7lS? zui#ZBD_)bB>rTxjfMae-%sNg~BCFUJ--rG6#M~N*cF`p#%CyDu&jQOEw)p#xAxdUVmp#|!p_cU7e>3{@A!wrc4JO=>|xKO?j^C~ zCAK$pAMA_$us;sKfjCIXJ_q9vi5*Hl42L_TBN!ctqj0puj$zJN)cs%O)Dv(bPQuAJ z1*hUP{8P!^rsE8Wok>0mXFH>F7@dpraK6MYV9r8ZWY45tBC%&BcB#bfkl1A;%W(y+ z#8vnguEsUE7T4i=+<+VLZ`_2NaSLum`hV)`S5>Mf2Jfn10KPRz|B=$V{1-yut@G@S(t9T8s;|;ut|KKgWjd$=a-oyL& z03RxyV|YyR1fSwFe2y>hCBDMf_y*tNJA98H@FRZ0fAKSZ!LLeZ_5UQUs>FVmxDpck zL*lYXToOGej|saf|(@Fi#)TPQ)k6& zm>qLqPRxb5F%Ra&e3%~#U_mT|zhGe{>lVSH5?748xSdmbOI(!1xv1S}potcG&d9xLE)O4hB2 zl_ah*c@;aSt|oE)C9b-}wUM|QBsH-X*2X$m7wchtY=8~15jMsq*c6*#b8LYvu@$yf zdKC_%Zj0@(J$As3*aoL||HaSv1;64q z{13n552fCJd=iOI>eR_3KDkq;U^Jz~r_%G|Q`-cH#e8;7T>uMWA^ZgkV-YNh#jv=N z{g*&*iFc8^o!lTdCEjupkHq^h#~1zVoH{__%Se16br1$)2!>)9hGPUqDp@58qa{9u zJl4tM$m1nG!AVL={IAR@g{AGBx-6E%@>l_X!-`l5D`OQU`>%@CB)&R%4JWTjUQ6O@ zJ4qdhugjczSl`a68%q3UiEkwFqa|M5r`;sJ33*d&hRv}Bw!~K08rxu7rMgPE#J9ut z*g@huI(a9O&Jy2+`CXCzAOD9vhon39z@FF(dt)E$i~X=a4p6fHfj9^UOZ*TgA4)Pz z;)gST1dhZ}_8jUl62Cy=$5M~O@i+k|;v}4my8lc3RGg+{l|OMh&XD+-PCkodw#3h2 z{#>O0$IrLtkSs*{fBa(VCAbuq;c{GoD{+;Q{r`olagD^Ub@Fv2>m_~z^EV>>KYo)v zhh&Sy-;?;Q5`RkKw~=he9k>&B;cnc6dvPD`#{He=0>Wq@mLK1{J zlO%*of|n!|lZ4D9SuiVR!|a#?b7C&cjd?IH=EMA001ILvWu{B>CE*t=ED1%(b^lih zb#W|#-snO%8fc=09;E*#(Ek(sNc=GX12IU+y1^JC38Ca+c1|5336&)wk~#{bF$QBX z4&yNaOCtS0p%is#EQ4jS9F|wIdIkJV5-O7G{;v}1Dp(b(VRfv5HL(`f#yVIR>tTIt zfDN$`HdeB36KpC8&B&YEIdw}(*ewaIBw?~7w3dW^lF){{Ew;n<*a16YC+v(}uq*zK ze_%K4j`aV8p47dtH}=84O0S03sQcpp9EgK(Fb=_?I1Gp52pox{a5RoV`hSA`C>T#N z0qOqD!}YiUH{##82{+>w+=|<9JMO@pxJ&7*zDE+CNy1)9xFiYt7~PKt z@E{(-!*~RbDl_f6E(yo*IG&J%lZ>8nMo&w^8K*ug3Fn;pyd+#;=0!W9zKmD!D%xkr zb?O^<6aP`N;w`-W|ERFbpf%!?-QUc?2jcgT(?|O0WAS^U=cnTLOwZ57?*)_b@4xz4@@w%= zD1L9qZ}A_y^8WjmAeU4cV~U7>De*5& zQ$}mZ<*+*1(!r3u|K?tc&%OY_Bi=4QLu_4cTA(BgH>}Y{Ed~ z{r5MMgVBN^Xhj=_q8%ORL>GpkTge^5#Xo|^qcvnNMqxDiFa~2W4jW-(Y=TX(88*ij z*b-Y|YbD#;h<{s}c3MO3ApXb2zoYoi5&ur&KV1Af(|5tH*bTd55A2D(us8O>zSs}@ z;{Y6pgOrBLtHpmX4iW#M^ux5CJOW4JC>)Jra4e3)@i+k|;v}4mQ*bIy!|6))&cK=C zKZ}00)|2Oo|0eODN1l%ha3Lzl z-{4z(hwt$Ne#B2oeft*)NG1MX>A&H3{DD957yiaS_!s}h8;}4KVj@h8NiZoU!{nF( zQ!4+vLqKYpG?*6CVR{rapb;}*M$CknF$-qJY?vK$U{1`1xt03%yb`cN0`f^fcL~TZ z0Tu};AOTe+pdgclurLq9kCAPxW*aq8TJ8X{~up@TD&e#RJVmGC}y@v!$ zpzJ9Dy$HRr5B9}=*dGVrKpcdFaR?5@VK^K|;7AD=Edis9A@P45O7%Yp7=vRaU>q~! zwIe0JoG1a42$OLNPQ__B9cSQ7oQ1P-4$j4SI3E|_LJ3$b0gL|sK1;aIQVCeb%yOkR zAOS1Ilu!azNx)SJSS7-q5_oclaJZ;79y~pYaQR#c%i>f8bC2 zg}+hz68IlGpAX!hMWzvV-C!TxiB~8QS$kD#gvaGKNisYf}9o-Q(^id zdS6sb#q?ZUOeHuisWs%%Vrn3!GUT#Y4$ET&tcaDAY^f}!Dl}EGn%-CEw1${!($~`a z+G47s=elC5$7y}7AvZ)n^v3`+VIT%6`FyjOf@v%mqW4x#ZDIVpiV)j|A=zQ=|l@5|dXoN`IwBsSd7C)*ch8&Q*4IKu?4n7 z-hWeTavN-m?XW#|z>Z2|-4W!@*af>{H|&l*uqXDy-q;8GVn6JU18^V?!ofHMhvG1$ zzI}w4=89<~{U{ubV{j~v!|^x)C*mZWj8kwbPQ&Rq183qaoQ-po`W@!c%*O?|5EtQM zT!Kq+87{{axDr?4YFvYBaUHJ54Y*OMZ{IAYdt%xmrjugY%IP-TjyrHC?!w);2lpxs z`_qVNpP2U39MGGCVmd@~7?0plJch^dgi?J1`4pbUGk6xy;d#7(7cu_*XZvL_U7@+E zH`l~;o#qDK#9Me9@8DgfzWu(KzKH1o{X=|&kMRjU#b@{&Unsf5OEJBod962Z#PpWt z9lpm8_z`*kO`lcP@9>rW8-B+h_!EEOZ~TLQm2CeffeGT9z=Z!bfr%tAF-;OoipelJ zrofcS|F#FFmcTd(Oe29+BrvT6=9j>9%%n#_0~#>{X2eXG8M9zk%!b)92j;|Fm>ct8 zUd*R7X5&Q)EI?Bb3t?d_f<>_y7RM4;5=&ueEQ4jS9G1rlSP?5>Wu?Bossvgjuo``J ztbsML7S_f(SQqPIeQbaY(GUGG08JQ(L1@NcrGAGH8Y|i`6z%9hC%P~U-58D$=)p+z zViZQB_NN^~j#cX08%f|;32ZEZJtVLRr%kaLHpdp&5?f(wY=dpF9k#~~*bzHnXY7Jq zu^V<*8g73g_rzY<8~b2i?1%kv0P_9^4k8c6AvhF=;cy&*BXJat#xY8L`#1?)EP>u^18z>T;GH{%xEira9zQs2H)f?7!6E(tP9;BE)`S5>Mf2JcDQP9G=GuO2aQd@+G{CSMVxc!|QkhZ{jVyjd$=a-oyL&03YHb ze2h=_XHQdk4^8ynz!R!B~vLM%WmeU{h>{&6WE0mJ)P8f?7$?R0(P=K?5YH z4Kr=A9k#~~*bzHnXY7Jqu^V>B9@rCmVQ;13xI=>aNKjvze%N2@$pdi^4#puk6o=t( z9DyTo6pqF*I2Om@c$}bQ`$P$vL^BzuXgztF1g(~!>EszW6KCOUoP%?59?r)FxDXfN zVqAhtahZ}kESI1aG%InH)|1!ZT3ms$@V=Gw3lWd z?$>(qK?!;zL5C#hx&$4jIf6&=7#_zHcoI+HX*`2x@f@DV3wRMP;bpvnSMi$C@J;)v z8#FiZ7T(4?co*;CeSClq@ew}8C-@Yf;d6X}FYy(=R_fc|iaD_ay`z7RAMhi7!q4~x zzv4Iijz91x{=(n*2mj)~c+CkgAtqA(cL#G4nxvQvlVb`@iK#F(roptB4%4Hc0gade zGh!ypj9HZW_G}UyBIfL3o+suUV(uvBoMH|Tb1pHL7jtgr^I%@ghxxGp7Q{kW7>g*4 zr95ITD&}H(E-vO0oR-v^Qp}VVa~b-wSWY`7SHOx`2`gh2tcumJI@Z9NNyL)DB6{LzC+ATJ-fsl#;IFx z!kJP37m$ZO6200fIU0Q!gRvNgjj%B`!KTD8gtQgJW?Vj>ic&5hvkfoPtwv8cxRg|o#xhcH*E-9gOr#r#do3&ea{ z%nQZ5P0Wj!S&U0?DK5k1xB^$=DqM|ga4oLG^|%2y;wIdTTX3t=SndINJMO@pxC?jV z9^8xja6cZvgLnuJ;}JZH$M86wz>|1Nsc%0c=7(ZFOMec};|08km+&%P!K-);uj388 ziMQ}J-od+g5AS3A?_IycBbvwf1fSwFe2y>hCBDMf_y*tNJA98H@FRZ0&-ewuD)sH( zCAff?e@JjTG5_TB7yd@=OZAuhFW%q;m=F_TVoZWbF&QSu6qpiIVQNf+X_bZ_-^l4v z(11qFfEh6pX2vX-6|-S>%z-&E7v{!1m>2V5ex<&>pafTw;6n6;u?QB$VptqYU`Z^6 zrLhc_#d264D_}*egq5)hR#obEs7_M@Yho>|jdidt*2DVP02`to`eOi^Fc5>#jKOG8 z>f5an{8xf)61+@;LnXMk1luLJnFKqSbfOEx(2e03fgX%RFGgWB`Y;A#F%BDHV{C#= zl}5jfzo#N8=bAi{o%SPEhK1m_#!fr{GkahSPBd&cs~Stna3sg1kFjkIYoaO&)``+C&A~L zynq+AdGcimej&kE$XD?iUdJ1F6K~;dyrblk?@I7Jn)`b5fc_yq!pHbTf}b+^44-TB zNsJnOoM5a#;k|Ml1?n?X+&=fVlnDDgIF?hnn`QO zSuiVR!|a#?b7C&cjd?IH=EM9-wiggfL7GB(Q&=oT^juUd#W*dlHRO_FsVA0Fm$jKlH}{G+`hH zp&5hGqGWrBSgbTQy$KbIUC$1&I5~A`4cRSrmsrBZI#nzY5;9gS9b@>`)`>>o{qf#mYL*PI2-3+{QGZ=)$Tu^W&tk5 zMYtH3;8I+M%W(y+#8tQ&*Wg-QhwE_zZp2MWeft)%oD|De`fa!!ci>Lkg}ZSN?!|q$ z9}nO`JcNhw2p+{_cpOhC^*fxRIgMxVES|&jcmXfsCA^GR@G4%z>v#ii;w`+5ckr%K z-+o_0s)*%*grpJ6L$Q1l%OhqU;}d*}&+s|Ez?b+6U*j8mi|_C~e!!3T2|wc({HioY zhmpVI5B!P0@Hc8-{=ejZ@rES8gqR2uV-ie?$uK#lz?7H@Q!D@59+Fl<@=HiM`t&Gh zKqF?rjF<^CV;0Pc*)Tiiz?_&1b7LONi}{rL9SYDC#6nmYi(pYKhQ+Z2mc&w68p~i= zEQjT>0#?LISXrrWuPPypB&3>zgh)trPHSLItcA6)4%WqbSRWf;L-a#`3_ueGVvy3X zb%%tQB_x=}qBUeI+AtLD=s+jBkZ(?in;ec2=)p+zViZQBPs#Qe35lhN(;9MP3F#pr zO~_5L88*ij*b-Y|YixsUu^qO@4%iVpVQ1{3i1Q9Opn@dTd4Q%bg<#xoLf zmi`=`#|zpF`4V2nD|i*J;dQ)$H}MwU#yfZy@8NwVdmrFK33){S7@y!%ZHD|@taT*h zg;+C6$V&u?&{Qa#$WKU`4Eim9Yv| z#cEg`Ybe=XQ>?XUYHJO-u2@@%wVqhR#9E)G0X9TG^v3`+VIT&f8H3S+A!tP#hN2xE z=tP&&SYa^Pjo}!99*jgUMqxDiFa~2W4jW-(Y=TX(88*ij*ixx)Z!OjVVr@g;7TaNa z?0_Ay6L!Wf*cH2BckF>Zu^0BnKG+xgVSlB5hk-PMQ2R3(LLQ34a5#>@kvIxR;}{%^ z<8VAqz==2sC*u^QzI~e5zKV6a*aE~lL#*$`I#aAi#5zl?>%}^o`8hZj=iz)@fD3UE zF2*IeRB5l)_Q;ySG-Z@`VX2{+>w+=|<9JMO@pxJ${d z-D2IN=e;!h#JXQ^4v6(2^M~-T){~El^_EzVk&ojEJc+09G@ik;cn;6w1tl9ViuID7 zFVkER>s7tECf4iB-@uz%Pri+J@GjoN`}hDK;v;;FPw=UdUC+e&T+c6PUW)aV-nw5L-^MeiU1Bv3{cYj9>68e#7th1ApQ#{H-)R?j%;tzheCt-`f&k!v9Wf ziNuyz&q>6Vl+$EdLr#GyF%_o9G?*6CVR{raDC4)=jF>@e8R;`&X8kma*s|(5o7l2* znnP>Ixx`jpY`MvKFfZoA{8#`BVj(PyMU-qWip9iMoW2B>)K5!^t+bxYh^;KA<+O%e z0V`r9tc+E#DptelSOaS+*;@;1i>(fQU96{{))!j?JvS7aAE*9WLpF(Rp4bA#)>&*p zV)Kd3OdpIE3_&Z}Fcf+JZ4R;%T^NRLrQyhHv4x8*LeCztMe5lrwkRf}wT2vnu^5Mq zurW5lrpWtmYfk3T034{~4uixtSkFVmHdN2U#5SDC`1fB;l1Jfa9D`$V9FE5c$op@b zM4pUOa4JqyvR(ZrV1}M&ifxvjXNzqPlXJC(JYQ_5#I`_eTgA4JW)UvNCAbuq;c{Go zD{&RB#x+XAwH;zxE4Fns>v03}{@XT@H{%winkR3=?Wi?7$-8hj?!mpd5BK8%Jg8** zA+a5%If6%#_uqD$d;(7@_3fv{_CRcB=+ELgJdYRfB3{DFcm=QGHN39m4mZShljauQ z#yfZy@8Nx=eusxNkMJ=*!Ke5PpW_RBiLX%mF1=Bi?Qg~Qj{ZGoL|KjRmrzWtko zE*0B%3AKvthlCas+fNBiFScJy{>DG}7yrc@ngA1GB20`)FexU({X2eXG8M9zk%!b)92j;|Fm>ct8Ud)I2v4B$FUPwZ#OK4&GB3KlQ zVR0;hC9xEi#xhtI%VBw}fEBS4R>mq=6{{)rJJg`5iM6mc*1@`159?zCY>0m7j{#`H zKny}N2BQT-l=^m?g!YoqPzh}+p>|Fk=tLKWDGi$%N~l{x!)YSWqxX@VdL=Z9J{o-( zgRvN=WU`TjHl}H!HRNX499v*ZY^CIxhtrS1kvIxR;}|8AVY>B|kMyLZ{Qrz?phKi__T>I){EP&cpe*02eBmTqL23X_jaWd6|U% zmC)r9dPzc8Na$V(T}i(RSK}I7i|cSbZorMW2{+>w+=|<9JMO@pxC?jV9;GpGIe8!M z#{+l}58+`vf=BTf9>)`S5>Mf2JcDQP9G=Gucu}cuzbv6IB=idXRlJ7R@dn<+TX-Aq z;9b0j_wfNf#7FoTpWst`hR>Dy9bVGB!q@l)-{L!bk00>sYX@d2}BK8nHTbZ$8DB8vDVBV?Cki*2Kz5{M?Y!!RB zIFgG!LhS3s?h*SCu}6x%z1Y1>MqxDiFa~2W4jW-(Y=TX(88*ij*b-YQ4G%Agy*0KG zdt3T;T2JnP9kCO3#xB?uyJ2_ifjzMo_QpQg7yDs)Jra4e3)@i+k|;v}4mQ*f%1?bC3&*k{ns)Ozx4oP%?59?r)FxDXfNVqAht zaTzYh6}S>tDcQRk*NA;B{W`5DZxH)!v2PUnF|lu=*^FCoD{jN>xC3|MF5HcKa4+t| z{dhoWcvo8N2gQDf<}eiv2G69^S_X_z)lAV|;>7@fkkH7x)ri;cF##cq8_=H1Cl2-~K^6 zrTK)P@e6*%Z}=U5;7|O8zwr$UmM=_e>SVHeha#~6prRmG)eOdZ);wVpFLF>tt#1SNp%H;U> zUmR7j8dk>|SQBe0`Lx>Ns6$g1>*;-cPSqb#LwY~G_oojKhlxH=>&a#eMhk|Z6>S)b zb|s(V5Qme-g<*Q{=2ZPBAcEeb_mT8oaYWHaYdtwe9HYb$D~_(>;QeNoZLlr2!}iz#J7Op7j9rw55A(>p|BmkD9@rCmVQ=h%eX$?*#{oDH2jO5G zf^NPR1!X6{q2JoPjfO7S6^wI2X0w^?a4} zJ1nGMgo|+rF2!ZI99Q5#j#zS>BX@_9FN7Z zQyk~Sv5U#wxCi&*KHQH7@E{(-!*~Rb;xRmqC-5Ym!qa#L&nk_X>yXdm1-yut@G@S( zt9T8s;|;utx9~RJ!Mk`5@8bh}h>w)|_9x=_DUPS~&+s|Ez?b+6U*j8mi|_C~e!!3T z2|wc({EFZ3JN{7Wclbr~8~@;6{1>k?0Vc#mm>82_QcQ-)F$Jc?RG1pmU|LM4{BOHc z#92d}25}Y^r;*bPm=QB!X3T*I>!ASIC zl#%WS#BX$yJXT9kn&aQgyCeH49?jg>edhR98-YSc;kJga;VSgNe191=z#vwRV$=+c& zT%05HW~4Yr>3Os`$LM*iILGOEyf`PQEY68qL!K`YD zxqRY0g{Q@NMsLoF^Bgnh@d92%-hbz1mDNwtT*Yg69dF=GyoI;%4)Xpx@2Sk*`}jbd z5B27eI3F|l1fSwFe2y=a`u11iN+8bH^l$JjzQgzU0Y4(|zw&*{w z{$%DC{>DGZ`|tdx@_%=5C5-P~i7+uH!K9cBlVb`@iK&$FdtIq9jkwb4O*(OWmH+;o>{^i;>sefqvFacu6E+eCa#9!$}X-l;>y8K<-}Z=8}nfN`!6p39$op# z1+X9%!opYti()Y>jwO)y-&Kkn|Na|3^RLoXmZlt*#|l^xf8OqA9pF*d=b*bJLv3v7w4ur;>9wn}|_dvVPYR|jzo z6<0@2J7H(+f?cs2cE=vr6MJEA?1O!=AM*aY29O8hARLTCl!hG_$-{6sj=+&P3PbwgSh6<&&7E-9~a<4T!f2p2`!!pc|$t70{*jy13*)>7(ss6$g1>tTItfDO?P{V@Pd z7>Ge=#$dEy2wKsGp=ej?+nwT0EMYDQTP5;j1>+!EGW!or!1Ko3Tu7o#v5eHeqW z7>A9pF*d=b*bJLv3v7w4l*SzKN?03gi|w#IcEFC<2|HsK?26s6JNCey*b94OAMA_$ zu)k8@K2XA@N!TFz!8inm;xHVJBXA^+!qGSe$Kp5~j}verPQuAJ1*aj|cFe(&*K`?T2ZO;88q=$MFQ7#8Y@0&)``+hv)GEUc^gy z8L!|~yr$H*-;l7k5_XgR7T(4?co*;CeSClq@ew}8C-@Yf;d6X}FYy(=#y3j+4)18* z;|KhRpYSt&!LRrYzvB=5iNEkS{=vWaFJ5;7Oo)k;|7~|C5qG4xlZv~nxRZ%Hhq#k7 zlLAv>Dol-OFfFFT^e9Th=0@T+h})>=4C2nnX(r69_gR?CD(-Cb*|naW6LVp1%!7F` zALhpbSP%;-`OL!NE~4k6;x5K%aV(+tC7CQG?$Y#Sw4Pi}-2UP&Pp*I!u@Y9sDp(b( zVRfvb@X+1drO&EwlXvSc)USJ!{xXFSK=xqdspKcaj&IchwE{JHbdSdtuKjtv&3~0_ZEq&DDJJ|=_2lJ z5|LTl+aj|cD|9>T+T1drk|JdP*uB%Z?4 zcm~hnIi<1S8}bFbh?np(Ucsvv|Ne{nI^MvWcnfdi9lVS8@IF4khxiB|EA{P9#r;d% z&*-1y3w(*M@HJ|;eM^3a@9_hE#83Dczu;Ho{de>JyMNI9RO)y5P4fr;;=g#q6JSD2 zgo!Z;CdFi!98+LQOogd24W`9(m|pqc_HcuQ*OYLhgcp(U44h`fOqdz7U{=hA*)fOG zaI1@i=fqqRo|`@o=EZ!NU&%}XEGXfH=nHE-xhNLH;#dMpVks<*Ww5N0Pb-JzCA&Xsuq6@>&jo}!99*k7-XCrfxs3GXN2t>{~08*Gd1uswFbj@Su1V;Ag--LO0Mz@FF(dn50Ecwd!`$>YDD z65byN;6NONgK-EB#bG!cN8m^tg`;r{j>T~}9w#90fA}Po_3cw6e5Hg><#ZZO#~C;i zXW?v|gL82n&c_9~5EtQMT!Kq+87{{aO8pM2XjbDIT#M^)J#N5_xCuAo7Tk*4a69h6 zowy5k;~w0r)VJ@K@K+LkK*Fy|_(4t&;bA<2NAVaQ#}jxGPvL1igJkQj90Xtd=0PT4ZMlB@HXDTyLb=p;{$w%kMOaQ?N229sh*!n_;XHQ;7hG1 zzm|xE68?t#7T@7}{D8dw;h)H#@e6*%Z}=U5;7=uY_$A@L^{l@0e>wdZZ$tvECnv(h zm;{qzGUWY_NI_1CsW3IB!L*nT(<|e*M~Fli^lX%f44h`fOj=LQA`wR=BCABSlZb2* z(NH3?OGFuo$iZn&%!Roz59Y;um>&yZK`exYu?QB$VptqYU`Z^6rIp6K{L76fOH&TZ zV+E{;m9R2a!Kzpdt78qUiM6mc*1@`159?zCrM}%yB0Lh|Pal9L48$NbV=!7U1g&Vp zP_&~1o#?_abYnP1DD^u;(s(fnqtS;k7>jY(2peM)Y>LgWIkv!-*a}-?8*Ho8x3`yw zSrXAfB8EytM@~CoXY7Jqu^V>B9@rCmVQ=h%eX$?*#{oDH2jO5GqBOj}M;?a5aRiRU zQ8*gM;8+}o+P7!|c_L22$v6e4;xwF&GjOI--#%L+Hb}%A`nfm{=i>rgh>LJBF2SX^ z442~yT#2i2HLk(6xDMAV^*d~&*@T;M3vR`2xE*)kPTYmNaS!greYhVF;6Xfuhw+F~ z-+oLyxh3MbM0}En6B2P(B2F@M3Qyx1Jd5Y>JYK+ycnL4#6}+l6W*96H*YG;tz?*nW zB5pHzN1G&T--`R>2lx;l;bVM)Pw^Q(#~1h#Un$x08sFese24EP;scW(wMp`4@uZZ9 zFXXTI4Zq_L{E5HtH~zuD_%B{h0!*lk-{nb!i7^Q##bn}1&SVO0lAH=tV;W40=`cMC z8qkOtFe7Hd%u2Ro!K|1KvtthN zjwP_9(pagicuI+Fl^#{e{8piyL)DB971PIO@yx|Q4^Ts#qa_J}8vQ!hqg zH2ReK9b#$Xun{)KCfF34VRLMOEwL50Rj|cD|9>T+T z1drk|JdP*uB%Z?4cm~fZ_3h`y^GiGz#Pd`<7dgFzm+=Z-#cOySZ{SV5g}0T4Hyy=u zM?80F?%{oWfDiEzKE@|X^;6_$_#9v0OMHc|@eRJkclaJZDB1o|JfCPj;}`sj-|##B z!1(uH-~L-74dVGj{}=zo8<_wTVj@h8NiZoU!{o~NJ4B|C$dojxFg2#Zw3rTg|06}^ z|LzcJq|bmEF%xFSESMFuVRp=cIhAbBC6T#l@?c)fhxxGp7Q{kIeR~m!>?@H)CDI|0 z#U!$}L>6bJ1eU~7SQ^Vw}aN>~}IU{$P!)s==zUnH`IMAoFKr8VR_SQqPI zeQbaY(GUGG08JQ(L1@Ncv|tEYm29_3WGIbYYsgNCY$1^@au~WX93#+!k?6%Jj7A^E zU@XRABW#RKl-!}IL^h*ot~KPA*a}-?8*Gd1uswD_{vAbjB6r3v*cH2BckF>Zm2B@N zk-cg9XbriaM6Q&`{t`JwA_ve6#6dV1hu}~ghQo0Lj>J(o8pq&R9Eam^0#3w9I9X}9 zq5Ta`rJ07)aR$!BSvVW#;9Q)C^Kk(##6`Fmm*7%dhRbnkM!LxV{ z&*KHWh?nrPQr~`6yh9}Nns`e~Lr^$giF&E~> zJeU{rVSX%t1+fqo#v)i0i(zprfhDn&Qr})iydLqE6|bLo%W+yBD_}*egq5)hR>f*c z!|(IrtuEdgG&Qjn*49t!h_|ku>oH$nybYLXsP$xj3_ueGVi1}!7%dp0Y6LAtw#wj=zr{Q#*firOy z&Q=;ro+Ho2c{m>z;6hx4i*X4q#bvl0SKvxqg{yH5uElk@9yciU?VH4VT)dmi1Q9P#9?{I?VB%Z?4cm~g+_GfjTd;u@wCA^GR z@G4%z>v#ii;w`+b)VJT2sFdQpC*IHEz0c_be29A5sb87wPN<(Mpw6|@<0CGl;RsLB%E zN}{Sr)NYBYDpBJks+vSKmZ<6yWtFHJOxDC&SR3nLU95-ou>m$jKlH}{G+`hHp&5hG zf+0#{@%ZnOMA*I>!ASIC6h@;DV=xxuu#r;V-bA8$N>o$&X4o8C zU`uR;t+5TZ#dg>pJ77obgq^VqcExVk9eXJCJM^OIjeW2$_QU=-00-hA9E?M7C=SEn zI08rFC>)JraI8|_K3<}hQcjSliG)cw8K>Y>oQBhJ2F}D;I2-5ST%3pVaRDw=5*A6+ zV!{%ov3wJ~UnWt@=~v)NT!pJ~4X#Dr|ETrk4Y(0E;bz=|TX7q1R}ywe)K0=KrFI92 z+9S~!C2Frky^yGV5_MUk_A_$;58@#_j7RV&9>e2!0#D*8JdJ1YEb{(GohM(wi+D+C ztfKvSUZJ^)*YG;tz?*mrZ{r=ji}&z8KEQ|g2p{7Ue2UNTxl-T$QlkDz)GPYe_y*tN zJA98H@FRZ0&-ewu;y3(`Kkz61!r!R<)%;cYzdJ-Hi0`8lVj@h8NiZoU!{nF(Q(`Ji zjcG6~ro;3oXh0)oQ0m(=NpxL_&MeU-BsvSHSuq=C#~hdwb75}GgLyF@=Enk95DQ^p zEP_R`7#3F=BQldqVks<*Ww0!k!}3@GD`F+Aj8(8IR>SI818ZU}tc`V)`u2Jf9VXHB z=^J1}^h19PKobUH5SlR`-O}H7i z;8xs*+i?f(#9g=>_uyXKhx_pW9>haReftrKelO8SCHj^`ALH~mp1_lM3Qyx1Jd5Y> zJYK+ycnL4#71aK&uaU3g4ZNu|7T3Nlw`uO+UA%|)@c}->NB9_@;8T2t&+!Gm#8>zl z-{4z(r_{H95MMHh{z(4`KjRntir?@%{=lF33xDGu{EPqM^(DZBmb zb*!Oedrk4xqN$B_u&#buPki&aUrHlz5qN=y^+ZIhUE;@d91N8;NdzO&-n$;>X?jeBq}?!*0f01x6JJd8*1DDwXM zj+0N|Nj!z8@r=@#QF{~4(VWK%co8q*WxRq{@fu#o8+a3M;cdKwy#Ky?zl-yrY5?;ZI)e!!3T2|wc({EFZ3yHdZyPnuu&8?~<- z@4xR~d=rxZ6JjFd{f|jPPKwEp_dg~DIVGmT)R+d-D*xLalU`z~ON>ZNA&D_?YQzkf z5i?1$zatb=v29@fVO*bx2D9|O>Yff$5l3`Ps` z{>NBV*6$EXZ$}3@(S>2?#&C>44@ROFqc9qM7=y7GhmEkYQs3TGV)jT(Gl`ifG0i2W zkHoZKrX{w**4PHyVmsvhkLf_}h@G%AcEPUL4ZC9x?1{awx6<%)F1auE!~Qq`2jUha<7?0plJch^d1fIlGcpA^(Sv-g5@d94NOG;xv{GW!zT*0e& z4X@)3yotB)Hr~Ozcn|O61AK^&@G(BYr}zw?EA{O!CFY;RyrO@NZ}2U?!}s_BKjJ6+ zj9>68e#7th1ApQ#{EdI`ukyb;#3qPuViRH_OpHk|DJH|@m;zH`Dol-OFfFFT^eAXR zBW6(Q+cQb*VTsKwv27$ai^SHK*sKy;N@BAynH_UrPRxb5F%Ra&e3%~#U_mT|g|P@0 z#bQ_-OJGT*(UX~68p~i=EQjT>0#?LISQ)EeRjh{9u?E(}T38$FU|p=I)VDW~*l>w$ zNbiUK7=R`W#2_?dFj_DKt!Tqgw4(!^=)y2`EA=}>(0DKsy%>ej=))L{#W-w)jj;(f z#b($XTVP9Ug{_tP_O=o`Lt@)W>|lv)&uItjh@G%AcEPUL4ZC9x?1{awH}=84*bn>T z033*el!gb#$U|@_4#VL%0!QK~9F1deERMtRH~}Z(B%F*>a4Js2=}LY3Oo?45v9suB z;~boe^Kd>cz=gO77vmCKipy|0uE3SJ3RmMAT&vXYu%2cEZp2Nv8Mok8+=kn62kyjO zxEuH2UfhTK@cMf2JcDQP9G=Guco8q* zWxRq{mBvcy^RG$lb($M^6K`p!9JH#cDxWqI`FexU} zPRS`SC8omEmjwP@pmcr6l2FqeOEUz?t)qd|4X)0l5tb$ds8dk>|SQBeu zZLEWJu^!gP2G|h&&>sVo`u0GHiu* z!?7{DV%xTD+wSUeSG84L)v;~cwrxA<*tV^2)xF<6&iQkV=Y7`Pd+sEil`+0E4tB+E z*d2RdPwb`Czo8FJU+jneXv6?Cp&2b`MH|}Dfr02m7Y1Q4hG3{t-ySZOlj0vCri$Vp zDaNbfA0@`Z;vX&k=fyup{FjKoTl~k1e=N^>(2H@{9|zz-9E5{$2oA+zI2=ddNF0Tu zm4@n7#eaHRK665hvkfoPtwv8cxRiHebd;EavpMX!yf7WNd(0>*GZ+i1x{C_a>Q)|e-#poygf5?CFpHE`~Oo)k;zPA|@ zi!q6wlhP!^ zm=kk}F*oyh^qIW$`NWuCZwiR9ATx!uhFnC9abheg#tvdECdS%gEKXknOJXT3jb*Sb zmc#N`0V^u~Ht!c>B{5c}siHSk#aNAo``=iDToY?)Gvqp07wchtY=8~15jMsq*c6*7 z+1^}?EofTmO)D|BrfGw1u^qNos;9^u#b^^_Cvs=(g53YcZe;F%V-Ipq?1jCtkCJcb zE5?2_{(55+V*rf_&1gZZQvU`!jROPGi7pJnU<|=f48w3G+atsnNfV_v(PE6Dabqlc z(5uw9_ZQ=TQHKgEWVb``>tkd=!u2aXf)1 z@f4oMGk6xy;d#7(7x5Ba#w$vFd%Oe;72`DtC@se85}hCBDMf_(o}{l92ok-{S}Th@bE?e!;K!4Zq_L{E5HtH~zuD z_|Inm_kREz0}`p`zwH4@Bp{mvBxNQUCdU+*5>sJnOoM4L9i~S?KQv$l%!u6o0h!5J zFsoAkhU_#sFem21+?WURVm{1|1+X9%!opYti()Y>jwP@pmQw25%Sb?X2`DQ8jU=EP zr{%E%R>VqJ8LMDbtcKOG2G&#>ih3lVmITzMsiQY_C7>QneQbaYwNr9qY=TX(88*ij z*b-Y|YixsUv7M6b?IoZCO-H@yBmtdix?orArk#>|NI^H^!nz$#$;<#L@KEn*kCq zkY*4L#v$4%d6)#;k$~Y6ut@?&NWfeP7)d`0N8=bAi{o%SPQZyc2`A$eoQl(MI?lkE zI16Xv9HpV2_IGU_&3s&d3vm%H#wEBEm*H|;fh%zpuEsUE7T4i=+<+UE`u5Eda6$sM z&~L?UxE*)kPTYmNaS!greYhVF;6Xfuhw%s=#bbC}sei*snp1ch&)``+hv)GEUc^gy z8L!|~jK^zu9dF=GyoI-w`u4kGN+|*NB;d0I+~@QGKEy}(7@y!%e1^~Q1-`^r_!{5f zTYQJ_@dJLuPfCMD`w9O-^A*40cl?1r@fZF^?*D+li(0EQZCg1eU~7SQ^VKPsCJ3Oyk522G+z{SR3nLU95-ou>m$z8dB~QQzL9FrY7`Fv6+6_oYNL!YDwQp>&b1fEw;n< z*a16YC+v(}uq$>`^5*W?LrgvCdtq<=v=66!#ng}9U+c*MVu}%yiEKs-TG57fbYLJl z(S<=u-XDx1VhW`X!*KmHg40MbMbSrVJ=u-1=s_>WVSgNe191=z#vw}HJQRnCX*m4| z9I2m<;&il_#?X(|dh&QN?Gn=jF)bC-M4CxB8K>Y>oQBhJ2F}D;I2-5ST%3pVaRDw= z8Zylg(;_h~rdgsj|0iPvaRS-*8q;=V;Dr4f!Ho!pnFCuVOr2 z!|QkhZ{jVyjd$=a-oyL&K*{!pVtPdLSZl~n#av5F&%|sH({nMYTlWS1OMHc|@eRJk zclaJZ;79y~pYaQR#cxW#!|LCr@AyMZKk0wrZ|#))7ytP*C%}Z52oqxx|*eX2%?u6LVp1%!7F`ALduG zy#N*zGxxu_FsDVdQ*tpZjwP@pmcr6l2FqeOERPkiB38o6SVhU+s#s0T)#+O9?=NN}O#qto-YjMdja6&Nb}{!Cvx6Ln zPIO@q24e_@VwjR|2p4k%O(aI?eYBWkXxtd9_Z~5OY2vhoJOBscARLTCa3~JL;W$Fc z_K{*9MKc=5=>1qRkE0on6ZC$fm?zOp)*A9uv1AwXG%>#s^K>yE67vi(uNCu5PG{k4 zoP%?59?r)FxDXfNVqAhtaTzYh6}VDq$dF9TtHivTW{uX6*Wr5HfE#fWZpJOR6}RDb z2VEIGx}L@c?) zQeG^%8P0=wF(2l~0$30WVPPzSMX?wb#}Zf)x&JMt$z`xCmQxzK^RsQKKvNMbVP&j> zRk0dY#~N4@Yhi7ygLSbU*2f0e5F24*rM|tXSbB-28GUnXfi1BWw#GKt7Tclk&r~cO zup@TD&e#RJVmIuLJ+P-z|AyW)eXuX~Lw_`40GiN@7PO)b?dZTjbfOD`Fc?FW`t~rf z%oB_HzyFRDO9ZEp7=_UogKmsP4|*|9>Gx=sSo(`)fSw16Wssf+i)9FtLva`m#}P{P zEO``;#xXb+$KiOKfD>^NPFAvgidd%Vd74v@J)W-_U5nN6O9bF~@re6eg1%L4L3 zT!f2p2`zUku8*vkER_eb4TWPl8cGUik>?H5P z-M9z$;yxwY_lxC#o)3!Uke&~V|+} zl6Pju9GDYxVQ$QWc`=_@^Yd&0?OAdmv9=X!VX@W_YZ02FSPY9}2`q`Fur!vzvRF=O zNPS(b<;7Y-&lPDZVP&i$)~d``!|K{3xhB@a+Q|KHtxM+qx7H^&z=qfe8!LH#6R|ec zb2FOe*aBOMwH5QNv5huKZYNf=Slg33Aostu6S*^X!LHa1yJHXRsbotpvG&$;ADX_{ z5BprG-XAK~Fg=IUL|`OFi8Y$}7<6ls zWRF-ci`6UE6=IDO>twO^ryqa=aS#s1AvhF=;cy&*Ba!>xI-2ae|NWkA6zf>Aj??pa zu}9Zm2oK{CJc`HgIG(_hcnVMB8714*KLO|Td|s>swCWX{Sp5 z^MhDF565qTnDJIj)Js)Gh-Ias`PulOKjQ1mR-*| z#FmrOT$mg4=%;zbmXC(}-&TNJP&*|T#v)i0i(zprfhEy*|FgZc*vja+tk}wNS{^H4 zMg6pr*ecUh!KzqIJ0;f;TU)W!B-g^)SO@E3J>>qkHBgyvXehQudTuPXCd@R&X4qUm zZ6UUnG~EBT*5o$YDY+fC#}3#LJ7H(+f?btt?G zvAOAEwVv$7IP8xDa3BuC!8k<8dxnZ_7|n3K89_f%Y@_H$qwg;c{a73)w(<17`(HKW zNn%?rw#novI2EVibew@Rah8&|%@*4nnz?#2kAA+`7SJ!mMf&MtPM3&{``@-q>zP@B zD{&RB#x=nx%>8e>O}>M7@gCmC2THa)#7FoTpWsumJ!A5@Hc5Udwtr%KMShKM zko({Ej?6z&wh!cw_z6Gb7yOFfl}fF_rbj_Pu^X7opiPo9iM_7aGmE{1*t5`N#cY@zb6`%)g}E`0 z((lY#vFF8nV$ZKP1;k!Z&xJTGEcPNiRTPV1aczcN5=&ueEQ4jS9G1rl$o=ozUWxZt z7JC)dldFoI``>q3ou-D^Yw}brtc`WFd2&6mcNTknaszCLzWZP7jj;(f#b(%C$@^Pi zOR=}oo7Q4)qvy7qwiA1Mp6YT~}9)0(}*eBv7 zoQzX&Do(@cI0I)Y_3g98zCrAB=;z`*oR14|AuhtjxCFWX?aRo^aRsi#Rk#}0;96XV z>y`R9Y^2$Qn{f+n#cjA9ci>Lkg}ZSN?!|q$9}l4R`+SIe7>_9R?Z?ECOYFzR{!#2F z#C}KYCz&~gr|}G)#dCNbFW^PIgqQIOUd4F4hS%|i((lO@vELN?Et=a}L%xgm@IF4k zhxiB|;}d*}&+s|Ez?b+6U*j8mt7Q8-v2*|1KWGi7pTv&yZK`exYu?QB$VptqYU`Z^6rLm0CZ*ROf z%8H{LO?j-K_2f!e8LMDbtcKOG2G+z{SR3nLU95-ou>m$zvb~Ww8q+kvrdm&KE{;Cp zXhCj?t*|w=!M4~A+hYgph@G%AcEPUL4ZAD(h92VRNz)5^YdyIy_CtR(VgQ=Zj25(_ z4ejW_Ky;!DgOqF!7Dot8D28c0IYI&piX&1SXT=dEjz!{#7ROj|#Bl1ySoEM5-|>Co7>dJiIF1m~4L@faS*6XH0jpPmxOY39#p z4f&ineu(3|I3A1R0?kFdgqQIOUd4F4hS%{1-o#sY8}HyN<)wGWbS{* zQ}Q!>jxX>fzQWh|2H)a4e2*XSBYwiq_yxb>H~g;DxBryD^y2tM{~Q0{U;O7YFaajS zM3@+pU{Xwm$uR|{#8j9X(_mUmr~L050)@s84VVElVkXRtSuiVR!|a#?b7C&cjd?IH z=EMA0K&fvpB!M0YEG&WTB(R7C)|9}a%oM}oSOQC8DJ+d;uq>8C{!9ZakSk&(tc+E# zs?zUMYYD6-fz@ehXbrg**2X$m7wchtY=8~15jMsq*c6*#b8LYvv6YhT>I2%)wAC7N zdkM5iUBdrD{jN>xC3|MF5HcKaIaGThW#`L@E{(- z!*~Rb;xRmqC-5Ym!qa#L&*C{ej~DPFUQ+7YuSn!M3A`#H%Oo&ff~HE~HE~sz!0X~1 zE`c}1SylpXiZiJM-jcxg5_p?8+`+qe5AWjxe29VqJ8LMDbtcKOG2G+z{O22ba;;b#sIy80l zrXGELaWftZHbZWT&9FJPz?RqwTVoq+i|w$zk}Vy?*^#D`-gKt#BF?V#-LO0M z&}PWJ#2G5i-sC>m7yF?<8ZiJ(XhsWKmF%*Klb>y;LvI4X%$h&&6ppJ77obgq^VqcExVk9eZF;?1jCt5B5dwf0sYmsMNQc z#N`&3ncjj{v?2Gu%Xj~aD-fONLhgT8FgXN6F$}{o0=fTPQRHZhQR?3iOXEQ=#$kUP zfCF(54#puk6o=t(9DyTo6mtK&#*oM2IHkUQg1B~zYofT8iE9$4lW_`8#c4PlXW&ew z-~DsqnkBB;dY(fwS6uV-Wy*50y|^~$ zc_Ymxac$O{Ei_wk8*UfZ4&Ja6efPiW$$P|gQCxe;`*1%Vz=L=Q591Lf?>s85V|qSL zb3$Av_2v}KX*`2x#iecJ{&!u_CY9p4gqQIOUd4F4hS%|ilDFLy*DXEYrnw`oyLxkv z<~}~ahvIs~8y@2mZIb*_xJ%n;wSu!U+^n_ z!|(V5x&K|i$iMNA(vbcE`Jd0A1eg#LVPZ^zNii8F#}t?nQ(*1(!rOQ~#~#=ddtqzo#N8=bAi{o%SPQZyc2`A$erM`Wd1kaP8=@Q&nf@Vn2I|-U8K}RHLmISSr zpxMmN!MQjO=i>rgh>LJBF2SX^440$!C%%%r3Rf!))z(VT8VOoUvrcQs8*n3T!p*n^ zx8gS3jyrHC?!w);2lwJW+>Zy8Y(FSLhiDFK4f&`9-ISnX7@fkkH7x)riDcSy7 zg5J=))f)193C8u`^faP3eiCfZa|UKIVkXRtSum>v zXXDxI+B`X@1ecTGT;$xC2lHY+%#Q_>yr-Z97osVwH|iH#RL{kjDUKzuB$mR`5?qF7 z%WCuF@>l^YVkNAMRj{g(H&m10>NGXR?^0hxM_61UKZ_M%p~N2{x7B zFbQrZ!M!E8IZX>}iLJ0Tw!ya84%=e~?1-JPGj_qQ*bTcY{kDk&_mJS8G`+Nj+z0z& zKlDc<2A~PeXhAF5(2foaL?^m1NXhnK2@atN)f#fR1do*92y!GwVKl~|8)MOfUW~*3 zH~Y6LAtw#wj=zr{Q#*firQIlI^o4 zcn-~6ts&2s;BOMVfV@zG&q(kh3EnQji)ohNQe1}1aRsi#Rk#}0;96XV>v02a#7(#v zx8PRXru4hZeHgrhW+(2#-M9z$BKLpre)0i4h==en9>Jq{43FapJc+09v{K)GR)QZ& z@HzVPcmXfsCA^GR@G8dRHN1{D@Fw2E+js}L|AVz(?|qsFO8pxi(LBZ{_!OVvb9{j> z@fE(tH~1Fc;d}gmAMq1@#xM9)sc-)-A#Ei1hlHrx@27;Mm*8K_{Kh}{7ytPTNq`A4 z5hlhYm=u#?a!i3KF%_o9G?*6CDgAEpryL?QerUi9m=QB!X3T0#?LISQ)EeRjj7ezo7pqpieVUz5g3V4 z7>zOLR_fb55;9Rjy!3I{9|zz-9E5{$2oA+zI2=ddNF0TuaSV>daX20)DD`icL^Bzu z;8dK3({TpQ#925S=ipqNhx2g(F2qH+7?R|#1qp$R2q zwS>e=$QlVbC?RWkY8|e}4Y(0E;bz=|TX7q1#~rv6cj0c_gL`ow?#Ba4LnrNb>=4ai zJc38@7#_zHcoI+HX*`2x@f@DV3wRMP;bpvnSC#tqYZCHWLax)_z?*mrZ{r=ji}&z8 zKEQ|g2p{7Ue2UNTIljP`_)4jN!yB5n_zvIW2mFYi@H2kFulNnW;}86azwkHy!N2&= zXJ`WDf7?S7NoXkvO)Q~VB{T`ANii8F#}t?nQ(Nb6 zu1n5_*)a#^#9Wvg^I%@ghxxGp7Q{kW7>i(0EQZCg1eR3l+e=Gm0|_ldUlz+@d8~jH zu@Y9sDp(b(VRfv5HL(`f#yY6|dh3zvEA?+^NYe-#V-swO&9FJPz?RqwTVoq+i|w#I zcEFC<2|HsKrM|tJgl>?~?h-mwLVHMPu!QzxrWf|cKG+xgp+6ci08MB{3tG{Jc64AM zI?;teN<-4pyb-#$!2XG`dC`Vlx1 zN8xB3gJW?Vj>ic&5hvkfoPtwv8cxR3I%GZ*LKd|ZGFaS<-YCAbuq;c{Go zD{&RB#x=MW*Wr4lzI~&F-j>i!5_()hH*>lLx8gS3jyrHC?!w);2lwJWrJ-Xj3Ehte zB=jKtA-z9Le?&r$(jU`$@(DbNr|>kM!LxV{&*KHWh?nrPlJ{T1s}dSde@*YN)8CNL zoAkG|o_t3_KT7Cb@;$td5AY#A!pHaopW-uojxUsKd5Nzi^fmn(y?;ypPD0<)f6#jJ zC;W_G@GE}9@Aw0M;xGJ-fAFu8_y6-5mO#Q1`uea$|Mg*s>61uUQu<_CPfj6W+a)Ze zg!PrMR1#K6!ct3EUI|OXX;O(V-YNh#jrS*z>-)BOJf-i1Q9Opn@dTd4Q%XaL znG$wd!p_i~#dBIuzJM3;5?;nDcopOE8eYd6coT2oZM=hb@t%_H_a*EB%|m>o_2efK z_EW;1lAqyoe1R|V6~4wd_!i&cd;EYO@e_W=FG{}QtAu@{`Hnxdp8N}c;~)Hs|9plg zz=W6x6JrugipelJrofb#O6l7ko?61w(4@t5T2B@UuOZ=n5?)xs4Kx`rBWA+Pm<6+9 zHq4GWFem21+?WURVm{1|1+X9%QX1NoA{W7;SPY9}2`q`)WNC64EQ{r^JXXMpSP3g* z6|9QYu)0#;UQ@!`Nq8;#+E@qcVm+*n4X`0L!p7JHn_@F;jxDeyw!+rf2HPt2Z)i`` z0Xt$R?2KKoD|W-~*aLfFFYJwdurKyQe>7qMnw0u>i$olgaH~XQk#L)YACPdngin=l zhlCH1@IdCB=)xcj#t;m}Fbu~CjKnC6#u#*CtkUmQDhcSJQ?h+Iu8{DR^sBUNB9_@;8T2t&+!Gm#8*mv`x}W!B;jxA-{E`wfFJP_ ze#S5O6~Ezk{DD957yiaS_!s~Aj7We9mH&N1L}HpGm=u#?a!i3KF%_o9G?*6CVR{tw zLjz{OjF<^CEA{PJB_c>7vPnckiO4PyWh5d8GdVFA=Egjj7xQ6$EPw^E5EjNFSQLw4 zaV&u)u@sh88jRZSPg$CBSRN~2MXZFCu?kkjYFHg>U`?!rwXqJ?#d=sDeLsi#_C^xX zT_PIOH^HXZ44Y#MY>BO~HMYUF*bduc2keNQurqeSuGmefe?t$Np4ba}V;}5`{m>tc z7=R`;qXn&KLpwS!5S{2!>f3`QVzxwtNW?IS2<0>k!!ZIQF$$wG2HhBo9`s@y_QwG@ z5C`F49D+lYh8EgW!)Zp~NF0TuaSV>daX20);6$8+lW_`8#c4PlXW&enrPR02k%)~F zF_(TG&c_9~5EtQMT!Kq+87{{axDr?4YFvYBaUHJ54NCnRHqmUxEw~l8;db1CJ8>88 z#yz+f_u+m#fCupq9>ybhRH<)2E|GaCPe{Z`iTErLrzGN@M4YBPgJTp2u^qO@4%iVp zDcRClBD?6hD@`}-jy)u@C-c4ZncfoFho&#~(|WQI1JHzKw4fDjXjk%nheQVI*-7KV zAPkns5avVmnJ|eAr-{HwttUrI86QA4|*{U`{Mu{h=Xu24#A-~42R*ZsN<(Swr+Pfi1e}PIa57H8sW=U%;|!dMvv4-f!MQjO=i>rgh>Mi^_9YUz zQzDnrFT>@y0$1WHT#ajREw01$xB)lfCftl$a4T-Z?YKj!f5R@C-M9z$;y&Du2k;;s z!ozq3kK!>rjwkRWp2E|32G1(>?dK&nRw6G*%y@~sDADR~@g<2GD3O;Xs<=d||Nq~A z5_wf3UrJ;=&tAjpcmr?ZExe6)@GjoN`}hDK;v;;FPw*)|!{_)yX(;lN{0d*=8|40v zd`EtdAMhi7!q4~xzv4Iijz91x{=(n*2mdPn+a8rbqB2QTLSG-12oqxxOp3`cIi|pr zmvw!02^W>Y>Z8?DK^9A*aBN(D{PHzur0R3_SgYCVkf1(y^BNzN>o?+ZrB}rU{CCY zy|EAW#eV3IMhrj`n$dz*w4ogxO8pz0G%gInU<|=f48w4Yz(|b3XpBKO#-azk7>E6F zfKuN+NTO~?)L@BPCs9KrYNkXDWo8%-#}POZN8xB3gJW?Vj>ic&5hvkfoPtwv8cxR< zN<)!!88#yz+f_u+m#fCupq9#-n#aFpg49>)`S5>Mf2JcDQP9G=Guco8q* zWxRq{F&?ksb)~-jrbH)|s9O^CUZQSudI#^~J-m+(@F70J$M{5PC=@SIPbKP^o}Ww9 z3r=6^%`0YJOVk_sxA;ywC4az=_z6Gb7yOFf@H_s%pGw~ROQL@3S>5x0IsNxv6P>^} z6P-|^6Z!h+#F#`oB`1^U91@+JoB~r~Dol-OFfH=a8=amkO5X1$(FQ$dkm!t@X40F? z%w&=1tn}G1yLL*>iMcR0=E1y}5A$OIEQp1ayt%MM7twQ3i7v)zalI+QOi76@MPC}r zXs6_I5`ABy%S-e~iLM~gy(PM$L^qS@N}N{4Dp(b(VRfv5HL(`f#yVIR>tTItfDN$` zHpV8{RB149t3)@aX@M=V6}HAU*cRJid+dN6u@iR2F4z^jVR!6-J+YTk-`+=}!zH>e zeLwU^BL<)e&1gX@+R%;;3`8foFbIP&1Vb@QseeNRO(aHPG{&GCW6^_NjKlso00-hA z9E?M7C=SEnI6|p!A0^RSC3>_(FOcXloQ}nDI3Be>sfpxCI2orX{Z3tx=&3jjr{fHX zp2^HCoQ-pEF3!XGN;OYjh>LJBF2SX^442~yT&ZN&DqM|gaIHkIV`e>Wz>T;GH{%wi znkR3Q=+hFtoxB5g;x62cdvGuA!~IG&9>9Zm2oFp25oV6!F+7eZ@Fbp6s(JDmJd5Y> zJYK+ycnL3~?hCBDMf_y*tNJA98H@FRZ0&-ewo|D(UDY{;yA?GO5&_zQpIAN-5|e8wce zgqR2uV-ie?$uK#lz?7H@x&LF*sQlmdm~;|TKw{E!D(Hs>%zzm&6K2LNm=&{OcFch} zF&E~>JeU{rVSc6l4FzcmVPPzSMX?wb#}Zf)OJQj&gJrQCmd6TM5i4P3tfJJnSCg0k ziK#9zZ6u}!r!}z_*2X$m7wchtY=8~15jMsq*c6*#b8LYvu@$yf8VuU+e_NV%*d9Az zN9=^1u?uql$8;li#~#=ddtq6G62FKz!rM`WF zxKB&WL~-Yom`M_IRAMGe%o@g~NX%5iG@Onza3;>e**FL1;yj#>3veMW!o?D^Ok$S! zZS5p6OO>i5FXwaxuEbTiTKV6Y??PBBG3)5p;|AP_n{YF3!L7Irx8n}niMwz&?va@N z60?^t+4ujx>Hwz)@em%yBT8*dVvb472Z=c@F}Ee=1g9tQ6rRR2coxs$d8OZlc!^Q} z6VOFHU!u8;S0v`D-pA8i!|QlMVs7%DTiOiy4&KFkcpo3&LwtmfmAvPP#5~pWGn(i4 zLSkO({VST+_y*rf%sbxmUYj9*6nAoo`9%JVU+^n_!|(V5e=2#~FNyiBXRY~5|4-Zr z{_EWdeT_R2CdMS<=Kgml(`J<7PJt;g6{f~Cm=@DvdL{1>ar^1nK$8J8iaV3uXQs)5 zSuvZqv-6%D+6+0DxWmPrTingWok!di#hsTvALhpbSP;4Y-G#|Tu&B~6Uj5RFVR0;h zC9xEi7IztavaGnv@htbhyMor!RKm(w1*>8;td2FXCe~8&{@Pdv>ta2uj}64#P@ilh z?#4XZ1e%kr z_h@lP(L`emx-k|#=tb^-H}}7L0L?%ggoAMia{s%Bk%!|5j|cD|9>T+T z1drk|JdP)j``>*^WoUa;=aJqMZAQU@d{qWc)W(!@dn<+ zTX-Aq;9cbYci&gp?@|YGKM?mr`bSzreu7W&89v7s_!3{?YkY%m@g2U$5BL#3A@{%g zi^^>OD(-Le-?fJPQ)1JL`xp5){=vWa&u44`Oo)jvF($#Jm<*F+3QUQq(0Bj)z9BY^ z#HOW5r!{0jKQv$l%!rvVGiJf8m<_XI4$O(UFgNDGyh^s`li2(;1+<1-NMhScY+;G5 zA+behiefP=jwP@pmcr6l2FqeOERPkiB344*{qJ||jdidt z*2DVP02^W>Y>Z8?DK^9A*h0zPme@*SThq7EdU897HA`%JatG{)ov<@@!LHa1yJHXR ziM_Bl_QAf`Psw(FG)im$y-DlI7PO)b?dZTjbfOD`Fc?EH6vHqaBQR3Q-YATg*cf`Z z){{LFmq}v1;<+ucapEZ@vHc}BUSbDG>}rV}D6!Kdb`X<;aR?5@VK^K|;7A;Wqj3z5 z#c?}hw%s=#bbCJ zwco3gct8Ud)I2u>cmtLRc7!U{NfF#jymIRO;JHi)W~K%7~}Cc*=^Wk$B26Qywc| zMXZFCu?kkjYDz<@PvWUAo*H_tNmC1JV;%9-)lciu)E7?!-q29%$&IlIHpOPx99v*Z zY=y0ryseFR+UmI-O?&Ks9mUg0KkZD@MLb=3LpQA__YhC8czTk1VQ=h%eX$?Y6LAtw#wj=zr{Q#* zfirOy&Q=<-{UFc9c{m>z;6hx4i*X4q#bvl0SKvxqg{yH5uElk@9yciU?VH4NTs)iU zx8PRXhTCxm?!;ZV8~5N|+=u(|03O6cco>i1Q9P#9zu^SUNj!z8@eH2Db9f#v;6=QI zm+=Z-#dy4i*YO74#9K;z`yKI`#dBA@>BVzTJl`0&FP;a4hxiB|;}d*}&+s|EP!e8> z=arsci|37=-*Wm+JnzNxQ9K_EX?%a(l;Zis(P#XEU$rA8|M^`!+E2?*{__`d|9iB7 zzcl}RdJ|wmB_WY`6YDvNc$4Zm8K=p`n?k&)#GCT}zQ>!IqcoTn(88M(%&_UX}Ij`^EcGya&X4RlEn8IfRGt z2p+{_cpOjQNj!z8@eH2Db9f#vAosub68SP-Q5uSAKRMdZ!!`Qrcmr?ZExe6)@GjoN z`}hDK;v;;FPw*)|!{_)ysc(NJaS6oxn*I&G#dr7~Kj26FgrD&Xe#LM29e?0Y{Dr^q z5B|k}%KyG0E}^f9ON5Cr2`0s4m>g4JN=${RF%720beJ9m{m_6JFr!l6o>}@wNL&_) zJ0@{iB`!$fvPoP+iOVi=Wh5>K^EojW=Egjj7xQ6$EPw^E5EjNFSQLw4aV&u)u@sh8 z8d~wQ6jzp}9G1rlSP?5>Wvqf#u^Lv#8dwu+VQs8~b+I1S#|BD$dn1YKE^&?Nn_yFH zhRv}Bw!~K08rxu7Y=`Z!19rqt*crQESL~+Lzo7?BPwa)gu@Cmee&~-z3_uf_(SlaA zp&cCo8(;TVCD7=_UogKmsP4|*{U`{Mu{sPy~(S>gua zV2K+-KUC|Y>oTg;&beth^GwEk(J$a7AZIrmV zcIrlsMCybv@eF6Cu8GdHJVZD(2mRv+GCch)UCzp^*$z|kn zas~MV`6IcKT%{P>8yaLus8`&KdmvXAh!dBKj zQ85@5m$SZtypp_%yqdg*?4`*0^hU+CRIVfYl=Qx+xV}{1fQo*lx<98HKn_I3AWn5- z*vfhcIg}hm-b4;3N01{GIfqfG7)@mid2>m>1r=jU^*B`ATB>j3RJW6NpyEzWC7(g1 zu)c@97Zu;2;yzTofQtK35uoA$>JO3+kq?vO$qG^~@+Z~`Bo5?NY&*WBe8@Zj_ zLDK&#epNN!pFS(yQAk+>atB_Sm zex|fTSyxw-_tI*RhmkeOTIAu-YM1&P0j&v19}C zI7Pn8@nl2t1oA}kBxom>`ZR)e3a2`iY#i#WPlx^&v@@VDgmxyhKcJljEdi|ww40$d zg*F6QGiaTlHIKcq4O$EGY-krkI|o{8Xf2_g3$0ab!SHyqE{f33iyvE4ULIQ$S{rEX zpq&q`ZM@;s_^^B9hbCg*HivdWZ1$P)w!Pvbq=0r2wD!x zWAD#_)&*K0XqP~{0$NvSm$IoF**$*sjQH^W&@O}4Gqybqt%qW4R|9C5$E&Q0pFU0z z+Lh3*fp%5w>ot6NwW6w_^@4USi{9}LwPQ>As6S}eNwM)%Xnpza*Fzfw?FMKAp!I{+ zUp2)R&5K_!JAT4aXai&a-W=O}c)VI2Xg8|<>Ls+n@m`NgEek)C97f(m4kt%I8wqVR z>rwGW1LIX~Xk%i({~WKjKoQz4(C&gZHnyw^5$JEAjR3G&cnhVW?=Bqk3?`rvzX_L?n@4SX(WH2RN>@Ll24IO zlh2UPLVFI{3#^}4j9)rD_Juk&UQ~=XR>$y5(B?sV8Jb$($+3^r=6VI%ThOLJdjr~3 zXsTH5LH!~3X05!&mqrO&A%wo0weo3Rgngf@emsTd#p1M6APX0v!3 z+B?wRhxRVC_t@c#_~0{Q-@mHl)kL1KN^!^M3Mj_d;mPpsj?q9NG^`gtj8yzFWNIT4+DUKFh`S z?v8hT6Po&PtyV9g{iGN__A~jbc^ov=Z9BAe&^AL`4{al~4Y678#)nkI2la`ct=4gq zV(cg7AzPqrh4yo7O;hzUey#;=TWrIf@=|fbozQkj@wuAYuUxy|6l2TO_S^|=7nR>d z`RfJN;{VY8g07C(-OyV?+XMY5XnUd8fc7`E1MIdB+CQ=7U$g#~+#kPevQnTQ68p3Z z^eWJ+@nu!%w(dLVhf=Q|`?ZC7sR;eB*z4+zYLc~}*I|dlq1T3fgsNjZpNZG+5c|3- z^dnUtRS0DgK#xH`9(p`Ba~Slx(2s^*FSf9ebXeF3dVT1}LO&+ne`@THM`G_ThTZ`B zaq4CK(%tdnZ;lV>2E8Hl)1aRK{S@dYLO+?aI!Q5JrI-4H-YDL9N9@PD)gSaz$;OKD z!;XTk{J$A=<^N~JwjF?eregf$Ec7POo5p@y9j|N2U+Z(AH-~;U^cJxlcc_=~_N!vw z{R#b?*oq#pJvT#d1^sg9=f+k)2K_v;HS~_q+dyv@`{!He=aX&Y%@)R1o(uf~=l}UGTvlIyw&jd`A71h=i}JlPebnxy$AG5ppjC z>uLE9lW}7C1L0J_>z;`lo>uACdnTss7=kt`4nLDprsE6jD&xZbyJY%JQC}RB|p?|Dy@|R~N)YA$&^S{pguQUJapF>{&{R_DzSXYPo zJa+q1o(oVntLyWXt_rp?|LcdWnj$Kmq1suS`U30 z^wrSSak!E_S3v&(`j0Z<;@Pt^mt1pY8 zZ-Blbnm$=neg6xtP_}47WqyriQ#^v{MZ~>O16;cF!Mbhy%Lhf9SuF zJIP(LFfyTfQ`PxTb)}M*Lns0O2IWxh2It<1MZ4H&gx90sFiS-v$6FUz;a5ish&I7;%Zab#t_ zH4x=nBQEjJs0-tC81-PB0OM#F$I8MO^~qzRd}}m-alGVP)V|n!#uSqiI>bHJVrETjOliU-GSS zPG!C|T5%@llIM}F$u=;~htZC8+bG`}7gXk3<02TBz-TXV)VP@JKz1ZMk)6pdik11+ z=nA77jH}qx9mb^+P>suATu!A2*;7$st#L(^Z;dOXd}}bH8rQ(MjuZAGd&9W4GT$0~ zB&Mo-YxIS2J&YU5@~zPy#@#Rmz_?kGtuc@s1mi{+gQI+F43Y3@423ZY#xNKoVB7>_ z`2XfxV`P+XjnOd1{BOQBZsAPElH~K)NHBwQ&H3BX}hRnjq{cpZC3NVTiO^pd*nuYNQj7OLyNtOB5cp1j4Feby8BKg*MCCazP z)XIEoOoQ>7msI9kW0{0iV>!73#wvFB0fssxR+i;k z<0lEO|K(dl8O~Z5%EZ=5C^go@*a%}oWxh2w!Po+0b7j6YeulBNEZ-X2Vf+bW2aH`X zeu42DXZ34kzBP7M=3C=;$+yNIQNA_QV*dkUH;lcKZ;d@szBT@av9B!O8vnvj9rl;y zTl0`8-U9$%Sn%@bg@hIt~)W-w2Jc?!&vqkL;N zit?>_D$KKBHimh+?rxx>=5N!vy+5a zvop*tW%<_Z3iC2Hb%WVmLaceIgxE0Onmu4%0kdb6Z_Uf2d~03_^BR~}!MwUG-&g;nB!oot#K>NyJ6l2^A5?k z=Iv3wHSdIZS6RL_?}2%rd>H2V|IN3i22+P=OQtmq z(j+ZK$+xBhGX>LynSklR^vm+CnXJsWW*TNj@~s&}`PR%<=36r_In6AP9RD{bz@Q;rcMY zgsl!pj{ln+|2G$KeZPYBIZVm_Fu#GNJ{JpNDI-#@rFQEgm}_7zhPeXfcQBX2RQqU2 zIF_q|u8OrVm%&{A-{7qpwuSiv%vCUdgt=0k$}0n{`4i05DzAoNRbr~S7UmY1>tJq# zxgO>QH6$Aj#!4JDH^JN-B~p&2!u%QLc9>gXZVN|NqcK%;2h3k2f~q+8{u~t}Vg3g5 z0L+~*_rTl*^G}#+U;LqlPvc|9MPsMtUodxvi7|dXBnO&%Vg3X2Z&C8q9>L zHqL%Eq!|S~73Zu&U>ydl3amq6RfSb8%xp3s*|HI=>ac340m=C2Jz-jdRTEZiShZjs z{$CQ4F-GeMSargD6^#~JN5N_V3$RXt6@zswtT?QrVbz6IPlYaZDv8Dqt@^Nz3C9W5 z@SqAyuo}Q>2tlQ4wHc$#$)to9N%N&{uEI>71% zt0Sx~usXr&93=`hEcVAEur7hsRSkvx7ZPA~ht&htrLZoGQUS-iVD*G`xf-;X;@dmQv3I6SU1AD2G;ekdcnF5R&Q9>hT~l_z_sHJSbbpiRU=(t43Ja2bpxyc zu+#?ZAD-*O!7Eq;VGUA4SpS{eVGV{g64nq{H^CYTYgl-G4~MN_4Tm*C4PO0sLWea9 z*3Ga+!x|HgS*eq|Bn|5pSYyL8b$E`3bt|m#ux^8OFRa^P-33c6>YZv}Dm+=MQ!}i) zVcip+m(_@qIvvBh57vXQ?uYe&8hQ#(!7{jHJp}9F@N6569a$By99SAG6P6Ck2+yAC zj2R#CGAs+09gYiy=RR02tOP6%maoQn!jqsn{lQAYN`+%P(K*fvU`>OSf%P=3EUZUi z3&^%AUSVX33;Iatq!=R0+#QztlBFT$D>4da|rMUCXZQY$qD)?`?(gy%J7m1>j* z)>K%phGRAIyGH8dWle`Q8`f*EX2E(L)(lv0z#?5}rX|y$|bya8yL@30J2Kizg=QBUqon`WV)n@T?Jyfmoly`b_Te zm|rdQe^~tf*P07keO{FR9|mh4tSzwS!&(7r0j$Nal>aY;^);+-%3R%22lJvbSGUxM zQ7yk(%_ZR%bJ5pu)-qVj%Us?10oGbrKf?M6)=F5b%3R%A4QoxAt6S?}ZG^QR)`l`y zw>H7rEUvE3ZlSANKf~GsYb&gsu(rYa1=e<0JIY+$`W2S?=2yPwid@~=1xp2 zVAq0uEbPN!$6(ineI)E7VAm;gb^9pTD06i?4*O`>bz#>lb9K8u>|@GY-EIK;WZ1{S zJ^}Xeup5@Sx_u(-lgeD(ZUnnA>{DQ$TITBZX|PZK&(-5MuYr9g?DJut1^XP>O<*^N z-4u4SGFP`-z&^Xo)$NwB&x73x_PJ%QZnuWrrp(ptwy-@Ki7!R}n<>h>kDyOz1S-5s_A`%>5=VP6LOde}W+Ujw@*>?>hk4*QBSSGTW% zeRY|u+r4042fH`yYs*~S?gP7TnXB73z#a^{AMAm!`@2kbk`T;0AK z_B~~;Zr=yH0`~o|AA<7zS-F_JM_%c_wHP|L>9kx;C>b3>jE^~F;h5Zt25B8(5 zeb`yp3D{}aN!Y0}SGNP$nKD)$P||&w%{~>^I9?-JS{ituj})dH;|74(#_~zYF`lGFP`hfIYj+)$Nbq4ukzM z9JNX3z)>IGPv9H^`%~C^V1EXCCG5{-SlIpo_A=OWVSfkvOW0q-o(FpY?D>`B)%I7F zaWz@oIZ<*?6`6y^K`bOJFZm1Ju!3z?M@0>=on>$<(!kyro;6@^hW)eLk6~{K$E)Siz}^abn+#B^ zTQxe=hP{LH{{{B%uz!X9TQqiU?}WYUzuPd>#RBXU8?rB{wr zJ4e8&1LqiaJ`&DRaO$!K8IubWC$6YYUU2HkK(uo-Szj(sF8qYG`Z{17iw1CxgL49$ z2& z2AsBV`on1l=UO-y$aREsA)KCYE`rk)PJ1}&ZXY%I#c(>v@O5~rhSLd77dV~OsWu$b zmfJ9#OQL%)oNjO~m76h~?&>xSb&`d1nHqd%(IdQulF@1BayVDOxr+6b;h7iC)o^;r z-51U^;kA`I^TO#J-e|$ayADntb@FB17tZyi`UW`t!dkApoB=Y>>I{VQFq}bfZdOfj zZiF)!&ImX|;0&WOR8d`>!MO>}aCOr~c%y~7B7-v$&S(~+)a@4P>P#-soH0_gS1Wi6 z9JQ^+!nqyJI2nR=ZiRE3x&b4+aHDbuoV(!MsV>>%EFa!_;oKdb-{IT~=OH-v!MR_C zrqxXs&I52B4A1Q0y%ynJ7I4OMT`J({>MRdOi$AL^=IKm z@SoR?U? zNKTR&s*6f>qlNP_oXK!rk(a#DLS0?LQGaj1c~u6SooR4hqc}ah^#ac85=#bjQ)GuX z;mnX>XLZMgGgEH8XuJc?EI4c7ye-#p&O30_nyL->8Jzdv%$AXA=Y2TppMM<)^9-C1 z;mm>a5uA_zyJ%I>1OnxTnh9 z7w##Q7v^r`Xmr{=y>fKgJyQmm-LuFhaGS$zD#OukGsWoo-EG0vv(>E^VXlMQ5^fuc zt;lo9^T^hUGC=K~FN4NzTez3NZ3njl+za5ghkGI1i^8$%@NypR#p)_Px;Mk^2)8rb zP7?EYZwA~h>JmO0yLP*Bp55SHDkIo#_i*eQ?qw48c!vhup5jIB<>VD``@>b+p*JVI zio6=`HE?^$BrT2($FAXC3-@}s*U9z1+XrsnC@Y5dX}CAY5VSP)3-ck|0dQ}GJ5UCn z-9Zu&!+S8?!F=B#9G7-)kH)3lJ1WPe-MeI5+Pxd@J(c6q?tPre{ctU~>OdVY0}k$kQYjbXnER1w^;d*kr1&1c!CfJ&Ue>U6{Jhe&FaDRat!2Jqt z2JUBYvv4QF%}G#n^Kf5)TY&ov+#=k^;ZA`2DBMRXbFBMVWsY?x!hH(v6L6m_%dzg$ zWjWS;R&uQS99(ttXDP?JFY+BHkuQ-iD@HlieMRD*I|c4LaHqn3lO0}#I}PsZaHqq4 zO(|tL)_o(&vF;4GZ%K}ImH*3q#gb#)S#aO3%(3pfod0`pRmguI?gvqhb!WrwXP)8QgCqaJmc0Z^=dEV)8q< zOW=NAnPc6hO0UeZuCl%raM!c*4{(2kyPEY%a+Ty*_opbwx@#nwx@*aGicyYrH%PFQ zrj2kn!TlNT<|xOyTcRB6ZiTyDa;&>8%CYVanJUb&?yvCFA@^I9W8IySSKVE3)iJ-D z^&fEmjB>2|mrST~th)#9einP-{tb6ulw;k0;Qm{dW8DK1M7=}cRfSjOe{-yND7-V^ zRfl&nyc!Y?y~E%g1Ft5$7`$5Wj^N~n!>e7HW4$`?j)He&S&sD((#H!vEH%p8o)bVa;$e;lw-Yy@J^H*>zz=UW4)6qbF9}0-YH>Tg?B2v#-;i+ zc&CT8YhMP)hGyBJvE*)__s zUN?B%|DPP|_29bngm;DHSnu*E$9h-7y9S=RW$0aaS6Aj(ub1jiv3HbXz3armJhexb z!|MxAhj%@^o8jF6Zy0CZ4_<$GH?kf8Pks6OHM~J(Io2BtZ;0erZ)jzX^=^{bsdB70 zoE!mfB)l>3M!_5X|L0im7Ix*-o5Z1 zhIgODRPTOx4@!>p9*Ab%&}eqUK(B!UaBm|dI7vlS&sG8VK4z+9$q2Jv0kw($9j*zdlcSdWjWTH2=8Th zPr!Q)-jnd2f%g==r^|Az_iSa3^`3|KqU2cbg($~*liwQw0W4+I!9P51nZ$7-al4HFu;m!Ns9P2HJa;&Eg&hOxT z18)($g;9?6zOBr$-r^|7df!We^_GxJ;Vmo6vEB;!_2K;h?;m(S!uuWGN_bo0t%A1} zo?6Z|@K*nCj`h~T+YE0#yp57$y$w;0^){8|SZ|BuSnua3$9mf&$9mi0?S!`j-mj8l zymLFCNceRsbF8nvku2p{KgM~+ z;n$NK>(`BPtber9qa5q=`7fW(fB6mIs|7m_{z;thc(Nh<6X2gHll+%s{gdH0hTllS zs(%XnQ_FI!e_E7d{nMiy>z@g~DSZC;voAmX9OYQQnK+@}oNS?3nPdHP;I|Y-I<$g+ zE{pTvcVW?*Yy1Ss7vw|RxiZK4 zmvAOs;a?5E8~h%UU48!kkAEra%c30X_mpVrUk?9D_*YcsSpTZZ9P3}hx%HBTkeAN=d(W9Z)?A4Any>i*;aQPfTBq6~sR1pbYz2aB%mju2fQ0f0YD z6gBuJ^>Fwe{1Nc)fj<)dt?);|zXiTJ1*q0B_+zPzQpK)nbH0np-J+;H&R{<;hn03kzxe0RC)wUp0U!Z}cJjk67@jD1Q#?PsmTn z&&bc=f1wJQm7=`$m+-%0(>(a|SuBtyR(6Ny@~FA{PK5E8XTSC3Un&F6m;eEv5f&;KF;BpM(QL!ur# z#L2ociL@S##4$+7^S|;JiE;{%V<{oe{~~dG*os8M@Nh!nL?ljyl_Bg{;Ua zNSs=#8%rTeb$UtRL6SHViL;PshD4K+-c+`;Ox_%cvstu=W-j76YI9L+g#@=hpFHKV zwML>X5^ZF!CC-=qwWJU0cH{-*h2%wKdqp``rGEz`x*^dKi7rTVqS9GfL(fTELZz!H z>VFJL|L#a!fyAY(FC%-9J;}=zm4UFnlDvw%T6CHG8nTzXlx=b?Qokc{9g+nk`XI3j ziM~j@ip2Fuq>;D*iBU-OLt+RL{gD`ig!n%a17-4P3F-d{`u~cpY#oZka3sY4k+?~E zswa}99zl*2C3M2XXe1mY#vpMU65{_z+(Od-6XRI(E8wU<{XZf8kHnoM{XZf8kA$3k z)KVdFFB133;z@l!`2hJK`4IUq6600Dx`Nb59SNhPn^Y{)7E$?O!bL(EzQ=d;dq^f>QN*nBEjeB5|4|% zk}i>Wf~`-AqCREP^Jyd|A@K|n&m-|HmFJ{2+Al9qdGR3SB_v)!;$`ZS57MVlnJP-O zycQF#7cHvfy56iV&(i&}(pQ*^Fru6RHk@yt}`hVh=gL?kPo;wdx zen;|BB>q5Bnb@C5Dx>}jiGPvUjl|zb>|y`C(mz_ZeN_GtCECLKkyH+FK=kAxqKDfg zS(QpPQNs02R!8zABx@kq5Xr;XT9d3r9!}OKxqXs#pV%$QT(X>yq`zqsjW@ zG32pi1M)cXct!d9d^?gS@V!n{l#xtX{*#eB9mz(lPa#hw8!|SLi&XJF?kM^mZF58$K<(4wn6ed>a7){q?#1}N3!ifJug7A z6OtDqc`=d~v9-OlhWjPifl5bFqUGs~WLG4+P`^a<@Jx~HMy0zb(Vn^t$y<@^f#eNH z_C&H5l9wZS6_Qu5=atekJkpZl|43dVN_dp*E$-|EUdZzKnkL&%{>4o7krk~hg3sST)>UyXnzM<6*;=BXAyeWR+* zKFQHY-h$*9P9^@Yu9sPlCC7;pE$wYcRv>vhlJ_Bb2a=5q>ZGDB)|VvLucxDKa!q| zp{Z3`hR#fPZp8tfaC-ucO&@-lCzL}6v>y6 zd<@BFkbE4;Cy|`Ush*JeL~HsKm8V6C_S&;ZzJTO&)So{{f04>0QKD_~GLo+$IT^{R zNWQ|>DbgCv`Bf_6UYH)~vZr20at4xbu$BHF&21(X`oH?-TGsJxB)1{?4w4@rDgKY- zd*u6yYUGynY$QKM@!DQ&LRBH2B#B>zULDw6w<+>fOAKa&4SPjyiyHT^#&{*P1@(bapY>w;7@ zq-r2_DD~>1hi8ox{XZrCukK-E>)}YnkgAQ;kx0@1Q+1>@JTg;9u@6KEKg+2&Qb!|I zmwG+X!%uyxK9yt0W61_wlHUz%Gxq%K100_qov9`46fdny;RC(mE0jz~R^R41eyq&g#Y7gAl2>VcGc zukJ{7Wq5}u(_J(0Q{smrNfL0(B-B_5T!n!E<7AxQON-J86YypHTc z_9d?;Zy@`T{mB93KynayBRN=6)=u7QC^?M0i5yOjAV-p;$kF5&@@DcDax6KHyp_C7 zQQSl3FZ&cJ@&D+WD0Med4IA4f22}mTCNIHfh>SJ%PW^iWvPq* zm-b)*sYj41QlB7tct%J)O64(8qGNI*Qcoi#{*P36w21$QYe(@Jq@HCV{$HBU3rHP4j9LuwLIGmv@-sn?NunLQ_y^#9Zpq^2P?6{%O{9n~h1&!am0rX%%QG(&X;SKkz; z=>IADf9Tk$nMl2jl=weVv!ru$e7-}4`9D(LM`|uoA0YJ^QnT3_x`+5bQXeDr2~u<9 z(-eKO`24Rrw&mmYIs1H}Sn`lBk@^OydDQ2V3rHChl8f||IvI6gv5@+=iltA=Vx%@B z^&L{Hkoq2}Wk@YypQX|#I%bwrSwa3l{z$G=EUlwj>` zi9W4ckopy=pOM;*6n!|gOj*OvZjI)BmH^p6oCFAEm7Hl}KNM^i|Za zK4?C@sPsNaxen=jk?w=^D5U!$JqYRRk?xQ54eZ%ZdWKg$=>b#*iW0h0`bMOOB0ZS; z5Yg2&nk@e?@+NXPIf5Li7#)G>(MaEh^cbYaB7HMkZ;{sUQ;;4<q4nkV!H{rpbWJkXe$y|CY|PE|5iX0{MudtZDRFcns;s zsZS)IAo=5OX^yg{pQgeee@j2h`Z-d5{0(XT5M262)|1GW$d?u6Po1ICuY@(yQ;?p@ zRyhSAJ&l}BzDB-IzCpf8&LC%!Z;`Xex5;-%^}~i$WM9iX-{E)U77w6>19ZN zg!Jb~f6Uf7KkUzvaUv*?VF7XL?jF8L)%|4-BZ(+jA4MJn@GJ-<<8u@GtTf20?Y zi^=d)_C0I*f13WU7Fc>NNBT#k>Hlf*|I(4RlC7&m2~%r&HG)P+uR;0%(rc0a4e51A zEB{%K^d_V?u)p|!>8RUGWs4}$QMVQ89Y}AZzFqWiWFY+um0v}Pw%AUj_aVItX=V7o zv-J;Y4bQOYzo_gc_mF!@@qf8NOV;Zj@?Ubl=;3<>haiX}sDhw2f~p8=A`t&aa41=w ztU(^8D7#f!Ymwsr(YgdjAUFy^9qLDl9`ytj@&D)y9@Ir}9D;fXjzMrVTkA_}_=ygV zrPAP_{>LLY5kW)hCx{-dQE(EKlSSFaGf{8~f=&odMbHXCV+2hRoQB{`1oZ#l4CxvA ze?b2a#Q)Wu8=Oxw1ZN|l{|7BZ5BE_({}06fqkR#ai{N|&^#6eVAGDFyX!+YBxDY`* z&Qr`ky21@EqSBtcnCw7yRE+jx&>6us2)ZEXf#4DZ-4S$UpKj78Jn91ae?b2a-7M&d z;7SDI{|K&-p3#=4{|EH{Na=;(1_Zqk^g(bf`(G#hqb2W4<$6&<&ky<`7>J-h^#KR< z97N^DgOni%)W=~cf)^1CL*OB}3BjERh9kHI!3YGS5sc(iqYj#C3>ESJ(%Owha2tYg z)an0WZVzs!BK}`mySosKM{qZS2NB%ER-S!=`&e`EKajzH`BRP;JVgCrnM0Uhg9-#T z0*$&((*FZfp7IDRd8|WqmfB&fD=))OT;L;^fFOY&K#*i>icCwN=*Y<+$Ro&7&xs!G z!2*?{DAC$Ig5W6xk0O|e;4!v7F0Ijid4kH5qJ&op!P5wyL+}jsXGIUce+iza@`5PQ zdrd;{F@l#6OlQ-}2qq(#ir^K#oFYA=qv%yC(?p4u>NNzj5WJ3H27))(`lhr-OEr_q zTcU*5N5R_&-b3&X^>;;&jyn2(@B#JN$;{y`xA zk6@p)M$7*%mHncGTPAY|GS!fwt7oc;9v;0J`hQ0JKRV_!hauAdnVQHPg-k7EjzEU4 zo2h+JpE{~W=15V(5x)$Osf$dEdR+AIc+1qIax__=Jcc}0G5UmNjzi`|WR9oakUT+J z!{aJ*5;CVDBmR#}Bk~k!RTtfvQ%U&=XcqMU4E;YmwlilT(-oN}$h1SIDKf2)X@<<% z$Z(HjTF89DGew5}pJ^#dH0`;_v_a-PzGG|A!=os3K9#ly^}GO?PRLw{%*DuD#MbuG z8ZAHlKU3-d?9dsRE-Yw1;nA4shRk)ybVue&WG+RfCotNasnh>6 z^#9C#YBiC$UshK2l=?yTc}OvGo6LB;vIv<9JasBE8YVn}jE;PBWDI1NAY&qX3NjWl z^N_KTc@Y^0nF+|a$OOoE$Rv^RInTsF^Gs1mixMqi2AMoES?W2_qpeN<&lE)ovq$C; zWS&CiQDi0}^BDWn|3eSYJVE72=^vhbGEXD(95VF(4E;YkGU@*r`hT!vvU_k8D+B z79jIGGG8I{GcsQz^BpqZu)p{}GT)Mm$i<4K_x+yA5^^cIOns$@%yRi+QHmAF{J`Qz zawWNnR3Bm0VKupiTuZJa*OME_jpQbBvm%Qva;U3E12S8Y*@4V9zPtE;Gy;(Mg$n&Y z^Be1(_g^HWcDEQ7h88rYqSUVQW5_z?d5-vIe-lPKSTcy=aW4|dS=D{ zW$~o0hAfah6xo`{ivJ^9gFH<7gzlZKh3pZ?(*Lvc|L_RR(*LtZvj0)iU+rae)trqX zdpxpnWRFI+E?etKYq+no^{LSRv*Q2AHc$r)vd2lEXgM1qdlItZ|Hz&wdU*U~>Hk^r z|7a{Xdn&RIBik6+e#oAN?4`(_j%;&e&p@^bvS)G*XG#C?D9Sda(oB?So-L5=itO3c z&mmiqt;lo9^T^g*&Nk%vWLvTw$>)Ew7qY&HY)@WHb|5>Foyg8)7i9Sjqxvmk}AMajcgBOuRyjZTQ8T^a0DrPC6%j03D08LYmn`WY%l7)$!p2$)G8y} zM^;>Yrz17}KP&zp<&$iGWXB;p0NIhq4n%esvV%D7jpSf*2su~G4n(eZ3kaYTuZRS(%Dvh@Ef z{Xg2~DfXoQhu_*~Gsr%UY!=x9vf+~CWj>)3W{d1UfqaB~lobDu&QsZm$UcQE{Xa|p zkEVT^J;nb^pN{8{{S?{fk^KnS7m$4y*%#So68RGOGWYLf@)dFlIhA~soJLM3Un5^9 z-yq*4XOJ_=x5!!K+vGcn;u3N!(f_mJ|Hyto&ZaI$njG8F?)Vs4`hS-GABmqK`wg<6 zBl{(?UvOIS|I#G$sLUr9kYABsE6P0v@{S9UU5qUKKf6fuXuo{N*6&3LzX{DQMNS~iF4BfA3Ge~|qF*|o_2h^(61N=~)vp!uw(vPP6J0cO`ByBFE@)HjeD!&YSZ zFJQ8pk==sq9@QUN{tKAwR%EyF<#uuh$seZ9^7o&!^83#e`4iAt`3Y!beOQIu)RTDL>)BIGV$eWB=~ zd*s?vxmc8Fn{-5OFmj!cy9T+=$n`+33v%6&yM#TvlHH_#cxJA6$n{394|3PC^*U*d)}k*J@&Cx9a{Z7Sh+Kc_0}j#$ zQ4#+yO*;g+JCPfT+-T&6AvXd!`hRY?^a-y7b0ay`C{dy%AA{UjnaE8=?hWK#W$QF@y7W;4U%A)F*X7ugmv6Fl zhO~y+Dfbp~?;tme`rD$1XQ3`w+P~$bG~{RE{R=lgCJFnD+Ax zkUt&y4SU=6pumvY~&Xre-82{@-2}cjC?EPuSNb`4dxElVQ(d+~jH%d&;narx_zzXAC^)ccb3|L`-C?}z+A z9z+mNUK=f(d^+wgYe???U)iTv}(KgHIk$!ExC$>$U! zPtMc-^Ys5{KfZ+gE6CIT^OL1#wAZF^+Nq+1&Xb>p{JY3cNB&LZUt{a*2;W5c1z6zYO^$?7vj{hv&rnaw;pxAIKk3XpQ_zfCfAT_$#vv< zas#=MWcbg^|9_M}^(;xA;Xl6>h1$q7|L2+i^UVKw=KuV!C{#h7|NkYw6ZyT!GyLZn z{__(4IrBe}XZX*{^Iyoz#f3a6FSR`Xh5SB}|Nk)`PO_g0|Nmp*5LK&15~Wa;tVSM6 zRwrvHvN#Ndnx(oH75ND`7Du3P9148?t8gS0dH#z9$QTN77IjN{Jrs^E)%8)}^S=c? z|67p%|0sWITNRE+fnVVj8Y%^a6Hqvj#YyDJWFtiur=W0ZscwwIX%tT{DQ8F#t?XHB zYJx&j7JUA<(3~|-AM##jqi~K)B6Uj?TCw0GV4|ESO|pb-sGpC*jVQE5p*srgq)GZ* zfPy>%i~=7DF0?P{7gOwjLPr*zN_uC$?1BQH|1ESa>D{DI4+_bwE+sD`d!W!0g=wVrE(v6e@TCUFCUbb>gn3T!zkz|(EkhK|0rmRF?Hvm8fPnr|D#}v z5;|DHM&TJ0929&MT(*k;M^8W$=>G-!e?j~og)}Mt&mw~Y{l7r}FNpu6P#}vW{l6go zkHVuQ{l6gokHSRq3Gzvj{$CLPmo<_;&!X@G3gZ7LJg=x8jb|NyZ23y7dqw`2%77FT9K>sh$|HC|A zko=Fr`y~CpApVcShca!LAqyX)K&vmzLE#g&ivLRzlb-bdg5-Y`=87K8c^(RXqA(wY zr6?>wVId0i{{sELK>rWF-z+HqSBAfcb66~Mh~D>mD&qgqnWC@^g`FrYN8uL~=>G-! zf8j^=TuH7X!=1aD^%`<5xsF^beiZhgun&d3?DMzu3Gd1){6j^KndtmmIDleR6b})- zSVi=3n-{B5IaHKzj~8p82ow)P@o*GtvbC19hUf8OZ7N5Qb;u*hqZFg9U5uev55+k3 zx}t|mUgWV_tS?G9j#@kx#cxn-fMO2C<50XD#p6+Ik77dvaYd9#=)?|6&s=P1TB^*oH3 zP`nJq?$j?8J^cI@dr;{qO0=i0KyfgNSE6_WidUi78^x>H=Nht?^bE6c@mea^k$uR% zRM#oNg{$U9LqP`r!v-Q+!rEbb-mBkw04ARi~id=15E)W!cxdzSuRr2nh6kfUM-iXWjk6GgFl z6yHK|77OwJ(*AuH#Sc)V{};voOGgg}V@P(M5J`Uev!kH*8LU9d>i&0#G;&&)6MUnnr zr2j|9-ZIW}xy&K@B>sTnDilLM5&tjk3$^jpyNmy;VKLTgF`+h!>oB1vitDLtAnE_b zO=^))+)QpE)&GA~%2sk4xt&!1|553`kiU|@kvqv<{UM8^M!@cj>w28=oQk2GZ5h~)S`athBM=e)M`RdD|BulBBeGuy zJ`fTAN8~zD^bt8S3Xw60i2oxpTJ&HE#s3kxNt9r|HzRU4BDWxN2O{GCi0HmS|Bs0O zBXWC%eENTc{;x-6k$VuCfC&9RBK{xFYa*w;pL~FPkeoz5L_Vx`TSOi~QwjmQ$}OUY&AljL&pDMkG(7QaRii82uXN5mxQ{}KAXey%T)gsD1e3enYwScqPX zNE(sP5Xm6&79v?hUO*&=h>wVkh=+*7dR)ce$-s#CKOzNDwBtpJh&+!-iF%o&|3}3C z5qVBB_3=8gg33x!f;L%&$g7CFh{zg5RjWOy#EJL-eZkcXM7r2gH(V1t4eER~ z=Zmh}Ioh0=Ekx1%Iob-*_K3Ddv@N1-SStP>&Yk`rZAT@^(hi7rMzka2PNM7n9PL7- zt0;O4M!O+85z$K!y%y2#i1tUc2co?ZrT<5JG5=D@*B%({gJ@qw=_k?4MGtE3$4v46 z;A(Aj0HQ+>9f;^4M8*FRy-G^;-W?rGk>b z6r$HL=X%M}-X5j@N9q4T{Wl_dGom*!bF5^l1FkH?E#x>+^!Y;cRz&YX^fpBAL{$7A z(L1D6-)V~8MdfZ$^jTr_UMlyI6GRWT(fx=%jpzf2&PMb>L?<(05~2?=c$j>Ie3X1l zF?b3nIt9_`h)$(GP4u8&Jx=8bat2BNkIt%)GY8RSh|WcH0ixpnh|ZVNV7n}&vWQ$v zE+LmHhHFIsk1nT9{|~lx1kpUAQACxo8;HgcrT<4`GHtNd2~H)wF5F%gq7I^I>KQUi z=42DdE@?}k&NQRq|A=~u;dU$_x)MR~^#3URKPvvuqJI$mSK`2F#s7oYI35OIoB-og7?oh04C6#uccU_S5?O_; zswe|0DXm7HB8uLZjp|fRBWsARW+9n1VKjhI3&!a%YE!8rrMk6^x>U{}&m`-q&IY5t zbU9Un#Am@c8%9HxHc|{c&^U)mV^Q=oHpY1{u7S}6#^o@Y!e|Af8I0yI^fF%{nR@(Y zwBWQYMbZ7iXbqz+j5gFS6kYc;gZ^)b|HEic^7@Y<*MDS3GdjWG^&f-Re+*v#F?jvQ z;PoFvuK&R3PWB*slD!leTneLi825p3nZ)WSCR6o=aTSbyFb2T5f^+BiU+;IuKq}(@ zfnykhU<`pVm^%GGXy>6+hDoMAJ{s4;cnrpH7&pNf0pofYBbg)qAGXOTD)fJ2G~+R( zjQ_)W#=;l}<7VpO|Jo~HjHhxdd7J2JKyKU);|>OQN=FjqE*N(+xQD!#ypNoq$Y3IQ zKa2+$JV;I=h6f`9!-kQilB-baP!a#v%f_#H7zGAC zStLs^)~LM665VQhdw|2M?{)kfs9Z6r5| z614E!Fy4jn4)rafYv(uKqq3EJpQQgA^#5Q_*$(3q7&~C>g7Fb^b}9x}q73nW7`sIY z>iiVO9vJk0<8#r2dQ_k?zYs-_0gSycE5Y~*#$g!yVEh2%YZ%|b_=cI^N@mczzNfNZ z6n)G!euQxd#sTUFMGt)JCn`US63pcn82`XH0^?5@zq0fw`5XB=`G;ay^Iuf{7A0`J ze_j@GB$y||tiqhClB3tftVTurALgkf z{ofS-4@SQxVAh6Nlclvp*P|L!{2%7&q6Bk117>5GXTod%vmQ(9OR4Vv=2=we|7Ih` zXOrUpfeV@E!fXojJnBtE59Za33VW2veaCFBRsm)USrOIKByNSoT9~boxBzAw#CO5G z5b-q3wunCk^CH9_hS?5gN0{_~vxC&HuTq+wSbt}-3)xkk#4|4@yOEb5HWFrc#D>D` zfmkn?Jz>USs^CtTm%TZYCwW-Qbbh+PCTi5L%OW{PPROw~ERgPDQ(9?UGv)i84~i!g1N zd6i?)@3c|B2Q+uU+@-$4 z{D|BsMba}rhWQE1-O?W^di25d$32OQ=%Qwkz7qNOwK7%|{ zCo`^(ScCs%QfY`-BgC2@b~a+?B6bd9jsKUg0>sYyUp`_@IZ3k$$_29SvF2n8vL)Gy zY)!TyFC^P4irLCk?GWq9pgm$87<80UDN^(8j953uT@dTa;9@D&mMb~x5YU}^57AYd zE2kexfPHLqLp&fEW(} zvBAu_nj9jN=$C=Vh9Pzh#cN6Nf5b*GL9gj`h<%3G^@!2rW22aG138+MLjbq?O^9U? z8;jU1#BN6H9>i`zY@C$7cr9Y%WxtNy%1Le`Zzt~{?HjhD zf5ay0QpE1(*9Q=LkijI;`2-rjK8zR-C9y~O^)bX~^0CQ?(f?ypsf+)IO+o*UiT@)u zgPbX)L6go#Y$;-MM3IEK^2k$c9%AzuERae>Sx7EIY%zl+T9@N;Y#Cx1#Gd5j%Mpt) zc#3=)v4{#7M-ij{$LRk`l>ITzqC}XZ4gsk!wpb*;3(yMtMh>w}h}kT1NEb05F^_Sc zEGUNkxro?{h?T?`)ytD(WyGFAYz1P^^6PWt^SYGvucYz}Q`TrLm38FnfvyJCGWR#hw-8&;V1q72Y@_sWnagIxwjuU5<9Em{vCIAbtX3s!OY? zzCi3Z#J)sKmF^9v{R**th<$_D*P;YV{%u(L9b(_Jw*9gRq*}3JiDlUiAa;{kXyBtZ=Ms04Hp#C}Ii{`pbw4v77U7_a}tc>PD}|3{L=LyjSS9Af{; zSM^a3zp2vr@j*TDN{ClS{6xg7AYK{qlO#v&4$6!4jN(<*eO1IyM!Xs)JcVRG)O$_* zG{nzDyashhPmb4QT#Kwt)*(+P>yl?E>N~dlS`YF1qR6r}K>VyQZislJFg}~5=OEr# zE7GL#^AI0`coW1gM!YHF7a-mYao!D7wW(E5juaRFS1W~h3&dN7wY5T={vW6R$JO}1 z6XI(8-yU%_{%_#IKem zR2To%gpxB9@tY7IhWHr7uR;9UP^bULN63F6#Yd9Yk=K)>$Qu+HjFvtonQ~~5k%sC~ z@v(@Dfg{dSfcPzlkCQ(mQ~yd9A5Y#&-bUU|-hud?h~K4RsYlf*+vOg_?-ftmCzn1D zzYp;V3?`EID>6{kKFDB_DC)t^_(Ngv2;!3wf0U(r; zg!p@iuc7iX`3lMFKXEnwS8KhNTt~|IAMrQHH_5li_2dRp%pdVhn`cF{*U!029fAp2B z_`gWhM*J9cx&DKMoB|-hUYC&TKS)%P&ZbN|aUv3x!ncj3QBo^E#cZOP)cVsTe%5kf@JDV}N;^?>Z%K5Z(vg(wKjBh!L1HKpU6B}!#KkP_MqWa8my^Ln z53(oOi@cQVP4*%AM~#Wg8TTdokynuYNpq$s8;rB`#lLlmX)W!;A% zaUBxZFus-?PL3c)DhB&b;(98hDk!6oxDSajNQ_6~MkH=V;wI*dl^p#{MdB7J<3!PS z84|Z5aR(B&QNLaEpbhV&au<0wc@KH7Vz>+wka!r0iAX$%#QiLNKuUvknM6g_OV(G` z?hzy=BSHU9JSKY3Tc)sdswjFdPE1F_LgH~GmLl;467!Ilfy8ViW-@b@Wa_u6B<4_= zD@rim`A956VgYqt{}0w^F_k5fsjuQDmLXvv@gx#YBe9&Na{WJW-9&^+RFq(;Oe7LW z#Hhzb59X-*t$14C6^S$wE0D+_QA8q(L>`G8r?N@5dRO`yuecN|G)_oB_y6j zf=-@zMs$7GKJgqg#s9-;S0bT$)C)+gMq(99UzAe)gi_)qD&qh8n9HxPAn_`L*Z!v? zu?|Vq)UP9XJ`!&r@dXlZBC!>Tw~*Mx5wV8Ba2+8Yy_k=TNSx&)-QvRwZUm-AgJ z?}-xZ-R~o@6NwLy*p9@9EEWF`d%_MXABhswybFm>kocJTZqb9S`6-pp$j`|=r1*ch z1;0eHG7@`{_#26@koX3Pea!hdnE=tn>ll1>2{XbbrmM3|l z;hDcUr>B(d@@)VLsv}AS0r>Vw4vId(-1>o13WG%8bS%*BGtV^mx zfXY{g0L6M_eX;?0mZDr4OE%(M#Q(#!XpCeNB+sROp6H*^8Inz@G!sQTdGZ1zuST*t zlHHJOf#gLmlXd;vaKlkIFf9KWJe_1Q}3V{{PRn)6P3rq*}EeEbU45A}=L-D+a&cNnS?fa>Z~R`yn|1$t$S$7hR74lLM(- zNnS+`A_pr5cVUu4kh}%Sp-5hb2`zQ%FXUe43>Z zDb;tWk_Hu%r2i+y|B*~cPOz<0NZLqR)YD{!%#u09aH$+B;{U;sC7DO^LnI4GZbH&W zay^no=9I`X`3#cJBl#?n^77}JJ7x%_tyUoU7LxM*XZ1ny1teE7;Qim^YQ}O47)jnr zPV)Y5lJ|d;9RDXd{!eoJpIpaGj{lP!|0iYqFPkQuDUutwJoJBk?=ra=$*oAfP5m8m z3;8bjo?_Vd-ly_G1!WtOJ1K5QlK!9kNJ{mXA-N05PmuhW3A;ttN5CZgKPmn%3ntrQ z50d{Nse+%8R7SKPN#+0hklf4Cub7!+{5AOvN&ipM|C8TKjvkFCe_-j4V#BFq%P#-t&nQX zppDd{+cwn}srE>5{GVzky8b7rR0n2u6h-?$sxwlTBGm<{Zb;GpQ}q9!o=ceDo$NvO zBzq|a{VmlSsmqb-LtXqo=qIVZRQidck3^~dNL`E60HlT>H4v#mNL|UCt0X7bE`zCD zEsE~Xsi9Pck=KYGwES?Su19JF^^xRtQW|W9QAmwJ>IUkgMc1SH)Qwbb5+zv2n~_?C z)GbIog48&q?m}ujQnw>T|4-5Xbw5nq!D+?+!@1mz)cr`^L;YUzK5_y%Q8DPlsRyV$ zNKO)68C2>aq{RQ_qfT8@k0SLrQjZ}u6{*S0oFbXQ`c9)VT~EvS38dyDHG}a?auzuo zskunak%d$rWf$sEwA4HuBej4z3l+mYuo$W5kXnLN0jZ@(xk!osBlRS?Try=RdWw7+ zsfel*sVKi1q)EoeIGG@mWQw%NG?^i@WRA2+M^RcsX6JG4d6|2#rF^8yNENAz|A+cB zRGt+@A8}I8BlQweE09`+)Jm4VAf>@}e38m(QS=qO)EcB-MM^uvD-|+dW9Hfl%Iiq| zjno@ReSy@QNPURZTS&cw)Ow^gAw~aB(f@-b*~}Wm|HEb5g49-|=>IADzy7UjivFMa zKr(}Ua~o2-k=l;bPNa6Qo{uWjvx|!OzciX`uTPNr94Y#LivAz8+a8vx9W#6zM(RtX zenM(5Qex~#eTCFM2K4_F{Xa$jPkkp-=`)nnexwc{MgLEU|4WaO$q$l;LXQY0m zco?Z)7#xvOeFRAzMd}Zvexok_A1?o&RK)+oIsOBy3sV2WQucccmfB_hgLMKd`oAS> z9lQao2OzqP8tIz>hoYQIotyP{Nw1z4wXsv3$x z`&(-8uj;HNie7T74y;D7PKVV1R$Z3T|1I%ugvZ zVbT9B`oAUq4~s8``LBg1M=wjlZbA4}f<1FJRJhP;q$OI}2_BioZ5 z6y@`Idsv+~-_EjZx}R8GVU2}#F|6xhb%Qkm)+Nm8PWB*s!Wsgrm;B^J{h^q3DXiWM z`jGN3V+<~b)t5oPP`LtDe<}mWfuVjSzg`7vP^b*1a?c`=715#i^`&$a~5A$O+^`@_zCGQXc++HHqZN#CjN31lA+4=D>Os)^u2p z!J5K^$>JF5r;gTCSkr1%8(#C{#C#9df+EQ+yJogiy+KFY*wXJXwI{%R;Ii~bH;l}sSwr|u)c%E=l`v}RQUYA#pnMmKL2mY^ZzX3 zEnu07&;MI|{@>#B{}!MBw+|DPeHmm169hwSo$=iYe=70`Rb!?uBB@t-3;kk z(iG|1NS}>#9i;0aeLB)-AYE4~SGS?1^vnuzeWV*A-2mycq{pfp^`0onX(X|_HY@Qt zWMib8Abl><=gCn_m2Rmdl!T^YZW5fYRtM<|kZy-`bEI1#-GWL>Sxq(f)j+y6(ruA$ zgY<=RQ(oz6?^BcsFOus960|2fgnCEWuSM^SbPuGvAl(h=uF{Lr9RKSPNSgki7XOzm zD5X7-z8vXZj4vg7lYPj`6lE18ljHw%KT(3(`XfC9=>bSjMtUI9k05;|Gp`~Ck%N&Q ziuBb;50R~)CRDYlqd2XNk z#CR-uGkJ@mbXRVDq{kzDEA`t*KL5#5r0)!K?m}9w|1jYmqWa9q~-b#6&xx@fua0?skXxu-~rOp_VK;0jMVhqQ~dP2CYaSVxZk(|J);qe+kQk$w;9 zBGRuRT|#;#(q*KdLz@1d7XJ@MgX!m)zd{r}a!bE}^vg)EqR#PudNt#h$TgCw&p^|! zP@VdIQqykbV>C*ID|8l9?qe|A+Y-k$xNLP1HAw9<0$jRJM>Z{ttc^ zoZgD`Pe{Ly^!G@Afb=&=i~l3NjoeO#&;O+5xd^0pBE3txtHd88&4+)|^6(FpPm%tN z!RMi}hhJq>gY*|jf5{+x{wMtvzwRTy)?SVDx18^HisAC_NBRKL9RH^|{@3T!>4VHX zR3YNdGORsxK+ZSGCy382l%S zzV?_o9+}a|oPbPYWGW$33z-vNJADTptomwBXb2Z z^#6?bKQfn-eaU{3srTPZe<}k+(R*d)N@Rv1a}_dIBSZhs43<(gQ>kYNIaCyVUovwI zGS?$>E%o8#2y!HOonp9UM^U*!lwj+RL1rd0HzG3;nVXQg4VkgXj6>#TX5J#1`fZ9C z8UG`5t0?+xB6B-3_aejbf96h>-bLO`-XobokGhY_1W|%5em^o(ka+-^N0E7urIW~q z$cM>C6vO2d|3_xBDB3qNQ;~TbnQ7FgiypM6_&+i;MA2vHnOVp@h0JVZ79leSnfb`f zWzIaw30idlm4%`N^)E(d88S<#FBLtg|4Ay#D=1G>i6EnTV3e^Tr9sUxDsfTt)sIXP zxlYKWkX2jFLiTiI(#X7tOa_^i$YhZzA(KO|ynxJFWL6>b3NkOUp4BA%KeLAM%ZlMv5dTN!HBoq6 z;MaA?yv~6BA8g;ZkX7ch9+^Lp*?`OuWHvHq6S}mL@TliGCO%{3z^T!J;=yrMdk}d2E0I#*~|DV z5!Glj^EJPILw-wsM}AN4S7h)5GJMN-<^aDQBoBq9Kk@6&~YA5|0DAcsojA7pZQNRRfVcF%W-D*1X1*nI(s6rryyGy*{aB%#GEQp zsvRIp|IbzvMfd#dsmRtqmj0im|7%~$(*LvK|H#%NYm;?k+Mu?&$aY5d3}l-jdnU4H zBU=yIvyiRN%m$JfES2~_vW-O1Jvn<0vgaY&nEJV*>mypW36-Xz1WR~6vaON50NIwv zHfL!IDGgenmBhjFv_bYFWG`e+ThaACm~BU;J=uZmNOn>T>*<2*0A#x&+XvZ;k?oFb zH|AU-Il(gbphEx8ivJ^fDcM_cf@Qc2*?!1gPQ9<_`pt*gE2#7rMejA)fyfR;_DW<2 zBYPD~#s9;3T}?&&KR8lkhao!x*=wj@OAeP(RlgdeX6gS~`hQUWC}ejadjqnQksXcf zeaMbMc095-B6~BkH?fAXQiDDUXT|@K9Vbe#zPBQK2eP+Om+L>_lHW;%{-34)XT|@K zy;pLAc9?+d!^lpgen0sD`5-xod`L0uA>#kYK1z!JhudWevPop8B0B@wX)G20NA_{@ z3CYys|Lja;W5~{;KAW6F&XwO!W#^Ie$pz#>auKBStNi~ZWG!T~$fjAEkKyFlIunF1CVa!87mWP1s7G&xF+4qp8?Ps^D$~lSne;9A$9JkBYpkIB2Toq(@ zB6}3sUC4fl?8nU6O@1PofirxDtXlHVsqYazaJDa~d`a#lY5rHpbdRQ{73-5R;$kvkDN@qgqhiLTc@SDA|Vf6xPSRgtTM+{wrR zxoXH&NA48nu&H&+$00?kwc$B3BQ&GpL*?rP_IN z^#5Fg3Q9xd&OxpbGtU-1SkA^&#Q%{yPxReek!wOWC7U64K7$L$=41=9CE1E>O|~H~ zB-@e~k?qL#WCyaNVy$|AGVTmpwP6?J9!IV#a$}IY7`ZEv>xSIr$X$Y5Z{)gj344$| z$zJ58is82CL*+72^nRV|i(G%?`cW7E4~}TL0aONx614nP$c;d55OPD18_ZJi|FAuW zQW-|l|8w;J9R2^NUDQV+HwwAy7+IyWMBFLE~_cN=nJksF8H&CIz) za%ovRIU0t1U$?hTJmboms6;Qw}g*o|Q~fZYi8SNO*;LM{pqvZ)0@&wKZ$dUD zn~~=$hSN5u(n1t{c3`)H-3@kY*d1WEfqfBdj{j|r|FxUh?KqW;|HG*|!tMgQ6ZOub zYd5gFQn^?$IBT{qf!zmoci6pP_h4yH$>-*SE&dO?wn_%Axdn{|F|J&mKu*Z?(S@UI#ZzDPW*REyX33~$U zyQtIuZSjBDGX95spQ1d#EHVAxzF!o5mSH~#dmijbu&2O&2==3}A7-Zbf7l!8|Mp~2 zg4UY~`*GOQm^oc^eN?iapfZD;NzQ^j2li~)9BNucHMq6s>aVcp!!}?qfV~*@LgtJA zhrMD6m8Ik|lKyWmXZ#dN|F`M?w)nsLF*S7)b^>;caa{DE{l))br$h-_FAc9h>#!ZzFTi$TmtlLbec1GWTl_y<&LZn9i4yFs&%k~j_OsNV6Fu10 zE2yj#CFrrMV6TDwBK6heOHvy2-j`v&2KyE2uZkWl^I9tFLHDJV_dD4iQrRYozM^ICfV~IyN3cJJ zy_2Q8q%`OuyQzFaeoB5uey$j{lG+e^VShng#{c1Renn-UD8br&1Lt_y-@-l$`#ac& zV1Ez$N7(zB`9pK2VUVf(moJZlD z1!n}DhHx&2(+EyCIA_D@0!REGPGj<1@;rGa$7uqmsf;=#ZYJXp=X}O|V#jIDxCPmg zY(=&v+mIKMZOMzsc4T|91DsB(J>hhe<&>ba(j}HTcIA>>tQfY^C2)Gf=}x@|DgF}yURD&m>JwP>d=oU7sVgEIim6)dIy2U~3*l`F}s$U)>_#h}MJL*QHkhyL$~ z{|CL@xt5v3MNuy>k>wc)=QcRk!MO>}^;AZY^nXYEAI=!^M#W&9;EaVc4i5d_xkYr{ zhaK^MIJb(TecQPm&V6w1fO9vTJ6S6JANHAhsN5?`(7PtUc?ix#>f--!9v~kiCn<)R z^nZu`udkIkkHK-^Oop=n&J;K^;Y@||IGkymcDhU(EEWCV5&sXI%9#acE}YrSoFlq+ zNM|0E`4uu3!imFK1ZO#%#VlPy(*GU$zw@Nz2mSdemeT*72;(Rm6OJLfC(lsWonktM zlYnEvq5nJd|6obdoHj#d$sB1bhCRoHvkHy}=NUM8I7K)G=J=AMM>UT4Kb*2C!Jhjp zoE31y|KU6@x^_-S{2$H>qUfWN^CFzr;H-x8G92-LIBTRd*mm@P=T%Yk2*g|dZhbhL;QS3|Gn@l(-iGrPoOj^72S@xL&bu;|{`H)* zm5TU3oDawk<+(3s8@Zj_LGpPpXD8!bte)wHm84>wX9KPq^R1{RQrRxIe+A|GVP`*Qav_v>Hi-6U-cq2t#<;v z%J9Vh;hiX%+ATf$zgI;R-3Ppr;avc)8oYY&PJveo-l_0vz^l$_#s8%rNbFg4t4SWP(Oo;_as@GgSaig9a_{_lzZ!)vP;t_%I&qpN%Le^2}$UMI;3 z+Nuk@p76TDy9D0FEEWHkYkiX0o$Misc6F~8ygu;g{~rB6SQq-gC;ktwFWHY2{||bC zHvokUyn)Dn0Pjk8Ti{&TjAXS?>6eUiyri% zJE`0yitgLqJ@D4TyBFT`@a}{647>@!g~*S)f=}WKMLOa$d82g0jK?t+(vFk{&aXd;Qb2kBY0oSD@?te@ODX65`PR& zz5i3kpHTUfKguH(ckd? z2^F=ikA?An$R8&OdG*K2iYEkmz7oHlsOQ4?B(e%w75S4@z_=Rnr-bpT$X5^J(~z&h z1duh!T48Bz2IS}9)_`Oe6nfxLRtyIPDh$$H4wXV8E=OOZiCTBVNOfrTTyHsDs7OzkV;$fqEK&#e0wS#LZu_Wc9O5M zE?tnn0{O0C>BTJVMqYw^_fYRar6<`7`Ab8+H}djAUFw%1e>sD`WIwHkYtf(L0CFIC zCGuA>7^KKxF!EQ2@et&PQXCd4*C2l_mEoZ>BCK5eANlJQ1Fz2Cfc%ZfkET9GbQ&r0 z^#45lUmsiZw;(?O`EkhKiTrrx-%8T|^Wy)=-%+6k@qgs+ChsBdCGS%Vj*|I_$UlfY z{XZ}MA1)RBKTrS9)Bp1_{zv{%@-gJ&$WLa>@qeD<|2)V4d5-_{9RKGz{?E(!ANiT& zEOItE2l*)Sa~aF{p8-z+@(Yk(sE#1WFCrI{OUR|AkV>no`e6qp0&jV2*&@&XOQRMKQDuSGug#23M z%gC=r{u$(7K%V}e7yn28d2$6Q{vVuc=T}h?{|~MX&S0Jp8lVw|L4X3kzY@4Pz>(=)t_L8U7aP?~1N|*(5nz z$@i&T!1zNH+9SUW`D4f{|Nja39ms!!{71-th5SzD>>@vwsnozAzZ>~auAE^9D>g7Mk_>ko2F;f0# zJw?$p4M}pVWE%N1u=6IsVV{aIeot^8caG7=`0d zsE@+&D4c=92{Kio5_uw7nLLTCLRM9?MnV4n3x#U37!sU<0-t&z$QmTbnu-i+ zp-`Ja9rE;0uPa+ns*>?P3iT9&v3j8a3XM?U_`lFlbbU3l!0~_K98vW9E(+(O&>V&H zP-uoi6V}sIN;$|u;e0C6D}p{;Xn{go6k1YmMYbl}$QzRi7wYcE_#*1<6oc(j=zzjx z6gr}CHwv9lxE+PgDBO%f7iM-PIsPxG@qZunLE#bPzUbvqM{h$4xUnikJ|1Z%03o`yk;ZgE2 zMYe-drl9a73R6*-i^4P%onweP zr2iM_|AqBR3FopAg||`I#GK8dYws$&LuHF7`W&ddvd=bgC8VN*QN^e|H468wxET7Lg5GsKXZ8wlfOu*J`XDVio)+G(Ekhc zf9??|{K3pWB{S$nf5Sfqg@53mg2KP>PekDueC4$NNv40CWa?J+>HmJE|39r?8Gcpx zCo!{11^r|y)hZ~b!mkUzI{e!3Ph)8f5@b!XmSS+t(62+~bSlcJ)RLS5zdrmk8P^kC zw}an+3jN;~|A*g5Myu zzW9IOOMYwkZQ-|J>4l=}=TH2LsI(I$SgH>2yHM;1zY~MbQmVI(-xdBP@ag}4H_`Pm z%UAxd=C1r-J@3I@=l6m?8~&y6Z-L(%{t)a`vU{|5NO;17qd{9n~`t(59(Q~n4lBgyMX<^L*Y zlw!Enqv78KU-`e%Zxmg-pRfF1DK}Th90&ga_~YT<4gXg7cfh}mIk!tr&>DAAq5tda z4E{avC&0g#`h68LCsMgzlwfN<2!9&&+{!;k!;V*)}fYUCNOuhH{^nZVeC_ztH z20se_NoFo5pCal1exyRCLERK3s4WiPfuDe{>|OjHzFrrLvG_myOojX$64e-{2q_|Gxtd2)qh2GhPkMf^Y9j;rCn4F4tS zYeWy$o&N8O|A(1t;cte&4*mxC^naiJ@6-Q%`oB;A4_aU&>lFVFxBJ`h--rJW^)2MP zn948Y5z&KfaTLW9;r|9-`PlF9|APMqbLjud9%ZTi zCjXJCf_>*0ipRtMPxRt(qU#Yzk^Wz-B#LhTVr3LhMe!sQPe!o{^Q%g!-oC|ZR8A2^ zyJE3Aia_x+>NP~yEnlojrB;Q^Iw*ER@pKfMpja2hhA5taVto|PWG4MzdrPqam9u2p zV5u6R*cipLsh=ad9s?B5rE;DqdS5O!MX?o%%}{KP;`uBUCk)0m#THarilQB<*c!$5 zD7K+~A=#F^h-{}Au4xA<9YqP2sxyiMQ0#(Y9~8Ty*b_zif3X`gFCn{=J!C5V6i2Za zl}pLqqU+IA@iG+qp-BHP(*Jc&C|6zTs(`hT$P=>Nr$k{Pu8^(c)%aTJP=qj&>~ccC~M#c?Q(L2)dKH?roN zBtKY}o2lF)N>Jx`Dz}oik>dX--a+1}7(5wLyc@-bP`n4l2T;71rT38&$cg0rih(B= zAEYu#lweywjN()jAE8eFFN*)8IGLOxnZZ&`qcUBTU`?MuaT$s;P@IqAOcdv!$nk%1 zw&du&rZ|^V%@ZYP$pt7bMsXqaMWP42XbF|2qUfg`icg|wqPQHz2#WOo;?ouKqs$lo z5BB$B45e#Oj8jjLNiv1veiSVfpW)XuiWvr3GDq5^L%O6#=E(v{|1TC9m&mfB45*~V zo<;E$6rW@KJh_5gNz(s|s~EpXt|saK#WjpyRt!9<_$rmx$hD-N%j=BaAnE_bw-~RN z>!`&I>M)e2C&URf^*FFlPt#kI0?m zF7jg(cZWHjD1}pf76yC;P;n1M)kz%m@VCrG zpX3(*<>bf6|AeLE$m7WqR3=Jt2tesXvNB31p>zsLRrs|kc`_;fA9!g=-6^{OrRwtE zD5cX_Ne%hS5_PXiQEID6)*@?@b;#4ny5t$;nJCpm={%I`^J@b|24|tvkU=Aq&XGnd zoh>V+wrr^}O6Tg96smh+r6wqKV{%iJnxWJhrSth!Eo4iSnxoW0JC7X8)a^EPL#@;* z*ndlHQ0jovg(zLbN!m)CvI^}`YA>-~FIj+&D0M-p6H1-+h)YVa&T`NR(Eh zbR9}dP*VOs4y92jjYa7OW{xJuko5l&{a-(8U84V&=>OU?OXE>mh!Xw3bQ`Cl|CjDy zE8R)nMcz%`L*7f?M@}FolJ}DjkPniRNM3*~Jr6;K@m(rkR#Q#x> zkWrHF|19zSpC!Kkv&8p*miYe9Qj*(L?i8S8k$nGWiSPd`WvTG}pCy~Iy#Es=m*o53 zO7i|U8Ig+aqojHl{l6ssA1)OSE2U?-JoNt({lBzAa`ZEtr58|o2c=agy@k??D6K(h zHS@*)gR|6<_&-Xoko5o3Ybd>r(pr?n{N;AAYC75J-azS1Suk}Hs_NetM`=Aun^4-o zX*Wu;K0hsOrt-EZK?`p|X&XxKqVzsW@3C~Nl&Y>SbN_(+P?TUF+>VkO@b94hk?8v9 zT-rtD;|iIdpu7jAPf?zMl3GZ$$9;~{k0>eeYm`*wdr|s=Q++8@>G5ajD=Pa$(IcYL zHz<9N(zn#V6J3wWO8cq&Ad0r-(gBo?pmY$WpHZU!m&E^rU;UR3Ghh5a810mPMd^2x zj#B?kbUi*S{XykV@-Oml@*hRrT~RuQa&?scL-{0>k3+c<%IvY_6C_8Uvy^H6<;tSy z)-G2;xf;s!|FZahFvs#KDn^;ErO!Icr=dI<9&+#cmKP;QE{y#Ed5dSrdF0eKeLkZeSrP4fM3<;IN9CC?+9D2lI2ZOzE@N%=#0 zl$(<+$d+U)vNhR;ypU{5UPQK24D0Mbr6bvi>`ZncyOI}^-AH)_5X#-j9%N6lmtt6F zZz^)>9_7nW9*Q#GcUSI9r5||(*`FLh4kWK6uObJLgUPGOA&PR?lA4E+*N}VzWO+E_ z5#&hnI`VpQ6nO(VnjAyksHp4Y*Rd$y%-|Ms9LYEDm2YKy8+ki<2YDxX7kM{%52=^) zK9nCsc>>D(&&Tpa-AYW5SAeRoC{Nf)yb9AUpt6vp|Ch!8QC?CZ zXBo;-l<&k>wXrUV}3I zzfAuRT9y7^7XO!jgqLYwL-~D_*P^@u<#i~(iSp~z-;f;bpJk5!%j-o6oMa=)@1nek zne_j%_&>_;kXs~EpZ%5T|7H4ru*E+>c^AqbqPzp;ZOq>;`TE*LS^WS1QFRvJQ&jEy z_qD~k!7l9Xz(7R8#%@#u6ce$#3j|xiz;02$+ue-=M!S>^;|q^|!ea+tb4QDkRz zeX6dX)%BUWzERib>iSY$mjCMd!s^54BLBO{|KRgx*IaeYQ-`ACmZ)KxCjP$_z(JD zV`K@)ZV*`#y%by;F5?)y?-W@MXL+~+>;_kaE5ViFDvgbnwb6Y2oE#Q`LE4Z~| zxOF1iDzbwj+u?6-esB#%WJjEx%n6R#kzEwoPmx^}*+-Gx6xl<#yZeH_Cr80o7>e?|7i?`MASu89o58Mv6Uzaj@?9-zp9h=Z(`aSP2u6d8m#)cjyi zjvTJYC`FD?kdL#;P_)x)Vj4W151z%v}fD={NyDRQnNXXBq^ez>$Fan3U*e6I5qxlxe| z6uDfH3l+IUk&CFg*lL1*n~GeDbD258C@yk^B3CPNCH__B2k*YfH8|Ho@;_qvugDEn z6E4F|ii}m{W<^FTatpn;TCe-`YL#Q)ZRP~$+#=%?xlJArk;fGw|09+~{uMpJ zBu~Pp;M4FKNB@eRQ{)vzo>yd&A}`SUqVm{6*7pw15q^U>*KMKkJh~>W`2}u4& zQf`2)NE&8f7Up0c7GM#UU>R0m71m%KHXQ9?&((r$XyboHCc77<$gA)*MczP6fm7k@ z!To_1d6VW_ioC7JG)1P9*aL0O?!WLN?;Q z|KKPV`CgIvije;i%m47m8?pRXP~rJ#&Kf6Wu`30gCoibYn#~ zq<16h4fdSqCODhI&EV$t65PNhx`m?r@;S=2x>39Tr=ooS8@2!cRdhSJy`udT-9gbk z?58Zz9Wi%;JHuVzu5dTl3);27Hu8+_NpmmQ8}1GJz!FM+f-rAkvK=0LmtvRM$uyt z$C=O7vNTUn^hCs9NdAXw{uD)DQ*?-;FDQDdqUS0)RMFEF9Y!VjAGQ4V+irxSXDMp= zujrZP2YDDJ|D%iLe{`gxk12Ydq7xMzMg95k0(c?32wMItYJ-18FI9A`qL(Rp9nH%X zy+YBe6}{44xD{MwW7JSzgLADlXI2%xUeQ|=y#ez^c$1 z*Zn5n9T9Bi;}jjQ=;DhiX zMIUy;&PKW$=2-C~yk5(HzlT4r=(CEF|55TkO8!U5|0ww%jLf6YG41m~Q}iW8yA-wjSM(LD367Of5;z()$1REV#ud#fnn08PQO5u7wsKK!0T;Eu0I<8j zMRU~TZQ5Y;9xW=`P_(3|TjynZE7lvnTWdIVbHe9pD%w$${ExQH56(D6CsX;VIYIhG zrzrZJqEi+9K+)F~eMiwZ6rHB%n^eAKmBEoNIvwY2b9fe-?<)Ep;(hajGceH)75z-n z8H#?a=tuOLbOw{sU(O=97&bUSwDEfz@+Np zKlyv zjouZZeZ`>I%8IRmSk)0>cYji>yJ9^8hvy~#W8{B~{Ew0UG4en74m7r|VjC!C`LEde zww%EzE7lWdLvwVq+BBRI%ZTZKl|+ifyjgj*4xe*w%_|$y8g}R6!QS zw!zsJGX9TkkKVy**nep5q}a}gUCa;ODY4xY8-m$OvE31Sz&+t!iXE+3Z^aH&Y;VN| zDAosmAI179)>pB8gXFjOj=j46j$RMM+0PXyw!dNrgk53fL5dxw*um5sLd_t>82q~e z_i*Q^V~5jw1ieQpcGUkrhhr2wQL$qcJ6cNVgtQh$pI;Skwd#cll z4TZzZ58l7A(-d1 zRvEn4Vz=UqHYa>_w<-3PVq+D1NU?E>xq?s`bKW6!_nB6{9 zvFG6P@CEoHoCIHjFT+f&`}tJahPyKBo#}UcI(rgC8Jngu`JJnaIfQ%lZ#ci36DH(B#r{?7PyD~&A{eC2KUNtmXWa5%@&A|;yhGzlDc()- zr4?UJ@nz^;)_Q}_=JDlmRxl@6Gw~G_@2)uS$N0+ht^!wuvdZ8+74LzwnmNIkB)*2? z+bF)K;u|Txmg4IwZuzhHI#v@d;d(gh!wq0hNdAY*u(9G>D!vImP6%9|`Rcp!m^>U#9pmieI4kv5KFj_;HF4R{VH+E&mli(a|36TGaSS ziVs!%WW|RlPX4=PGyhZ@qlPt>|B4R}rz*LXdAi~w6(50rhT>-{ex~AQ1&QJQ0Lux* z&r#fkzx%(f@66#D6+ch$QA~BdIqn~MY|fVdh>H}r{6}8`FAdfe`f_*$yi)P25Ld%% z9PMFCPX5QQ$G-vI2ycQn!&~63a5NkPZ-ZmuICwj}L-9MEu-zlv8}C;9KE*Bn6~EWI zLZAGPk2fb6fy5tB{4vEJRD7c14^jW{V)c*UJZet3S3IuxQ;I)<|KwtoPvblTpM}rC z=N-c{X7Lvl&niAi@h-YvQv7AaD^?Sn^NdFnPbnV7kHI)hz@(#pEoq#LIqvuT_DXY# zzpZ#)@si>NoTBvxNgFTYRA3d>+*?xdI&8ouY{53{z{&7c_!^u7r^46a8}Lo|7MupB zJK8eabG^g!z6;-T46izgf1u3Tihroow~EhDa)#m`DLF>*nTjt`+)e00c$VUG6rZj5 zr;585i{xiM5z+WAGuKuR@LdAc_|HFKDFK%1HKjB~IglYD-5-TbGj}pr${;v{C zDnb4y{$n*kN+*`GsS-<@6C6zv%PO&g63gK)Z+E8pCjXN*rVVIhZ)s zJ}D%QgU2gzg6$!}kG0%cti)g?E>YqnCC*UdWF<~h;uIx@DltTfQ|(o_nTO9fOo`#9 z1JkzV=`6_zs|jD}nM#aO;w&Z3RpM+V&N1KByN5m3NF~m*r*=)Zjcg^mjdCI40yAyR zT%^Rswig9Y2?>%{G5qB(YR>{wMfCS&1?K(-e<|9|4DHEC&Brj#6wCvqQt{WOtftg{KhPNrH}e0d7Nc?LW!r9cv6X{ zY?*^fd+pEIYIOhVXe*HMf5P%#i5K9Da1wk8lK%8Tcc_k|BU~bD6aZ0f4Xpdmi+q5+$?3VsY)Ro}=|A{6|?*E@? zqwW6xN=$Zii)XavYf4OEJxqnK!#CiY@GUsa(Vo%vvA30&g?If}54aHi3IBqN91(7N{e$?| zm|VjAU@aw=w5^$33NEeW`bsXNniBOt%lX&5>MD$(3xc zbMtY-Ik#n#t0>uB$yJqKp{TNPWj4Qy5>dcqCiMoI>~o6scxlbfOK{J)Z0K+gXs z?fid_6$&_<|4(kKH26O=p=G1&VjDS0x^DR7ASZkvWPAFAXq|BScZTEJ4QqNyh(4#{bD0ejPSo6SiO*cHm_ADtyh+udAszubUHm%1FMccZ>5p42({14!V<_BZo7LHbjq!iD)jq>v{2%TEU*LQRZT#<-`5PsFRC2D8^OXFS-tVk8xB@H5_&@oBIpLDb zSMnDnf1=XH|KT^G$zO36m=l~eO8%~t3+g|V{8!0^N-k28@qd!>fAD!TX}PWBKQ>h` zVoxoh)KW^Z-=>x{KN$0;mbS{&GUfzpFSVRf-IZEisTGx4f!=P`8|;}W_PW%{_^Uw1 z|0%}*;XHdNwUttg|5K||vj$w#@-Vd)TpO+f*M;lB_2CAvC)^Nj1UH6u34l_Y!p-33 za0|Glqa9zYW^0~z8@Mgx``^^|7C{V~mD*9M*Ol5yseP5&S*bmh+C`~eO6^MhZjLrX zTT8pcJKe{b`Hb4{szaQaditn+?KwUz3xR70r&^x8)W1!q4}`zv*l zQU|z2QtCi>5Ih(j0tdlE;bD;bf2O$qXNvoOrjEkr{+}uC|Cu^gsliGer__l`9k0|0 zuD~M2J)B?-gsZ}ynp=RTPEl$I^Enj`g~Q-*rEXX1G^MUk>U5<>VUAGB?*FOOneZ%l zHarKO3r8wtcmDj}vn$07LQ~xTGsXQsQ+EGPr7nhc|4*eZg_kMC%|91ga;2_R>MEsf zQp)cCsTBABNpb(5)O9%5L+<~Rvitwo!yW!o-2W%V{eM#2|0l)$e^Pe;Po=p3Pim}E zcIO{kIqWJ*-Jw)esXLW&HFqiXfKuH5GsXQsQ+EGPrS5}v|4*gH!wHV|u;=CGpDAws zlj7z-DQ^Cm;^vU24-Q-(H=H!0jCH{una4(3Tv?L zXb+o;{7+f_yC&~~j#95FMgFHO|E<#A9aEs?e|Q{By`j{{O1-JndrG~f)Z0pt|0(i6 ze4mp4De^y@|NBbKP>TFdk^jN3RZ|}^|Cu)bFehgzHAku0N`0yn`JW2%e;$?Oe`>M( zPko`(*GiH9De^z~WnJnU>gU>=gYR%t-zj~rQuCDFR;llmUO}lJl=@StAC>w|srgF% zq7?a`BL9PtLyG)Q1^FK&$?weB&i^R2(B>be?q5nTsnjB+{#7bitK`2MX1mHX=YP^R zhcM03ODVmq(&T@d{14V%n)5&D<*hPEvvfD5*H?N)rF$s7lG3XxP5!4X|HCbnw)|JR z`(pE7P3bk2CjZlx|KSlWy%v>g!*$@ga6QLxE2lS5dSlF4s-593ko-@R z|KanJ|7r3+Sm)`zl3O&^Q4C=eWudGQu;il>q?JOI;!;fO24S|1xi1s^o7)41TTh{z)Rs}@N%UeQ2Gk=mGCNfHM|C1 z3$KIM!yDj@@FsXOyanD0N5e7jHaHfJgSW#w;GOU;csI21ztZ=@`{4a>Je=SdtYMlD z!iV6)a3XvJJ_;X$kHaV6lkh3{G<*g=>*!{#^z$@dux4;2etMG9uPFTz{>$cv`(YPO zWHBeEbV2F3(pjYw^d?~nreVf0980HjIC*n|F>t!5bVcbBzK#FGZyC~6oSHe|vp1A} zQ|YGCQ6thmn-iSzPR~~QU!~pC%~$#prN2`8Q>Eu9 z{TY>?Gi{JCU*LRcPB21Ff35VlN`Het*Zkl&0BIZlD?JZ>4}Y*vrs*GT;O$7SJT zL+PKDUZC_Z)coq`U(s(kznc@jrxq%`Na;WE|1v-L6;t|eoPW#--rboclvzoc|0uJJ zGD})-W+}L|)dW}GWtLTD1!b1QU*7!h{zZ3#E1DCeQ)XplR##>fWx6ZF_&+1-4Yo_B z2lcD{ub$=_%B+c4%lu&ZGwUel7HM5&UQuQ}WriuUzB2ul*+7{cmFcO>R?2Ls%qGfM z{wuSwO&c!5rZ}6y%^~@p+0tr)EuPt0neCL>hTd%#^S8&@!JHt;Gdn4>hcY`Wvzs!z z(7UVk2K#NM7tZeH1or^R?5WJ&%It;T+x+ku`{3*Y`@(%;KSw{e0m>Yu%s^!hQD#47 z4pe4;YRLatZ1>DTI0xHQ;hYC4bGR~x;vZ&yxMh#PIntcqTdK^_$_!TK7-f!E=2&`< za}58XEOP?RiB=!Z`6OkAD04FYDdvaki z9#!UPWeEQa;h%Ye$|s?Pzkd~ke}?c6pXGUFCMje2ugr^98NNrz|IA|fpXpN8z0!y> zQ65Tscq%{(*agnLB}Cl3p-2uqOs5BJQfG96`V$~2X! z)7x`KaRtL)0kuCFZjf5@)tR;=8qeq(po1Fi;FhigF2|71D;leP0dnCmEO z=YP=a*>i=OQ$X3C_?!aDatbKRDWEK;fU=wd%5n-Q%PF8Nr+~6{3P@S|norrS;Wm!8 z4zqUt$32wYUfCTG{P;i1`Twl__#czs|7UkqmLLCTdwG9%W%rL`tV~~_?3H2D=5Up=S6kD%u7URdzsg>x z?DgKi0Vn(y0A+7>vr_gJcq<$Y$H3d*SVw!|5@@s`;a^EDeEo)aGVGqfsew+pgT+EdY^z#!l&TV@EPc? z|8+I)`d>$P{jcK-%62LHqOvd1oaD$p|FW{L*rst!m(2Dqh)@s>3hWa^Hm+<+S@J(i z{<9+~Oa5oc{~&3zIb}=AlK<|jK-+~Z|AXTN&9br;L>1OxoweG4P1u5M*nyMbtMD~t zXDT~|X{RdtjYOWxvM%#{6)NeT(zmV$S!< z{;uo~%KoJ6kMz#B-f*4&jKerE`zv|@{LO0I*R1xue<=HpvJ26FLh?Ur`L8U8hG2Y^ zCI54l|KW%+x1@4y<(5+JTIH5jZisTrDA!N9WtCf5x#g7WrX2a7BmbvwZ}ZHp2w6qJ za^_Z1uD5cl;tO_%J(Sx>xz+5wlUp6G0oR0U!L{K!a9wEOuiW}@1K1N<_&ed|Omk!9 zHc^h~&hZs+j<0}odlX3{iaR|uS zAwW6uKgac7ISv6iI|L}VJLC|M;}DSJ5a2HQ$nDK*?*sRNec`^2;m9r5U%A1U1C$$x z*bg%P&mCaz%^ctV=J@_MXW#!ScL*E=4}})~${h~5|3i-Ne{=TzuX6U~uX4x0W8rb| zczA+xCpuvtWZa5%*GT40Vi`_`r#OaV_}r<=jZ$u?a%URuk?6BXDf| zAHIETS2;_$v+>V?=faWjJV!t6`O00U+y%;AtlWk4USz$&yC!Gjf8{PUCm6lwE?4d< z<*vZL(){4_X6|a7Ys_&!rL(E7Q*M%S*DE(sxf_(bQ@I8G!^xh0_fw#iZj^R5i zcN@-FI1ZBkxjU>TeARa;H(oi$|2fA0xqGQ3|8wMjkV3f$_~d_%l*m1V^RUe=e5H>l z_q1}4D))qPkJ0CRj!MvB32Wws~Aq4sqEQlCY4Je()f%Ub6Mpo%H@Qr-po-^wqc+&}dGYrVmzxjfr3zoa?A z=bil0$}gup)>s{F>vOZjz`@2>n>%J-mm zHMlxl1Fq?4Lk^qg+Hf6ng0oEd^_1_a{QCGCm>;}5@*Co8WKQso$Zw+jKFV*Z{1(b@ zM(^g<8@vnhTjFd5w}#umZQ*v1BU*k3^p0>RxHH@Z?h1E4GTKak#o;KA?^ILMvaRsK+T z7(5&v0grUFhx@Hp{%GZoQ~nsHI@U4VtMkX>oM2A4ZU-wrO!&R?PY)yiLqf0g;+ zcDMXj{#tXw{p5P(M=O7W@;57gBfXaYzWx>*%m47bnIEJ4IOT7{xBU07?sgpVKRCad zcN^j{gwsnRxc^UKX|&z{M}=h_5zDEtyw@w> zbW>qPgnh@s?YzG|%^g(O(K|b- zu(Ro4^%izj;RqFW^S!-P*xl*Q;hx<6X=^%xY_GlaBhX8RT$&_+f*3q^*Fyj+(Fr$@GjqbH_dxgxEFCByx;eZ zr#V4|2M`Z>{~?+W!-*<9;{8Wec+Bg^Rd|AeC%y9&&8Jm(2Jx)-pQHJFu$<@@;UpE@ zi6FO?Uv@;iqC%I~5f!4CG4I4_CSX#96e8_=Gb&_pa^A_SP{1jAr$n=?Ld82(oSF)C zM8o?{6ShCJRrrjq4xFsQtG?zn6{dJSmEPCk8}Lo|7M!NSbi~_^h<8+Y*X#FGc;D*} zRQQmB8Q%Gb=1dhn_RcJv*(&_kJD=cuYRxblKF67(!WX{gOBKGtwES1$8#ot!3%_$j z%!A*n$z`mr`+Q#4?VEW#Mvgc@QYcU95nf3X+6yTd);o^UVNJ6zkvJ}M4YaUaaSa9>A6 zKNb5U26$(niu>UZ{>1~(2f~AV&A}=jf-}fFhpKp(*N3Zk1ieSXqr88#ipSuP|Hb3b z$HNogiH?4mPg3!66;H-L1rD)ZThFJeNcb0r(Hss>^S!65IKt~QR6Nt`vs65r%5&hk zaHQ`&PsLF<=X>V@6)(iO2wv>{OK4uI;$?y37x)SlucYfLNcb18L0=nGs(77>*W=s( zZ-h7b-kWLOqT;QH(QpjB%@HwH#c_z+;T_(;Q^mV*?)J_-D&C88U*NdqRB^nDZ>cyz z#ROdszz5+&Dn1-ksyGqH4go4Y3Lk@y!zWaH67dv#8a@Mk{uiH9@pZMV+SNJQb&7zU_P8q4_R+555mSfFHsc z@FO@Aeyrjw#BBIqN5m)aQx!k+&gVFD;1}>q6~97!?TGkB#kq)Yz4M)4=I>QnK}Ev9 z_@nQgPw`JG{*3qq{t6d3B7TFv!$06c75_y11sB1;;Xm+SV`<gwsnRmh#ThDp~%k zv@BfC`^yJQi`h-36}`WbN-JZo0$26ERO*h?!#k^~v^vfj-dR(nwY*-Nu60ye7qK2( zA8z1?=m|H38^Mj?CMsF}qc;oJYH16V2dT8BN=22nQt1YjwpQr?YPL~nTVKy1ptQY8 zJJ7Ww+zIXscX34Q3U^bfmv?r@*#qtg_fo01@7)`x58OwkzKDH&Z$Fj#dp&@zfhz5X zu>AM0;y{&7$2>@-gUz>1bBIcV5QoCU;NkEHcqBZ^5pgs;1|AEKgU7=YR5}qc7@h=A zhNr+Gj)+rL8tU~hm4 z5yYeLv7p!Q3{R-^BtH3HdK&#qP@~ebG@n!HdBh9eC;v;6RC>ufFRSzlHC^5z|4UKK z7>uiw@V!Z#6imYm%)%VZ!-6AgxTLa6fU-&?YN7ABJKL1M{ zY9_;1RkHj?Pk~cadL8kG_uo|MEw881HC?5*z4H#vyDGhhcprWMKZG+J7u$zts`N4b zER}v!X}0y+GXEETqSB|{`3&cCI7cPIzw{-|ub}0>O5eb_(DGlU?;H{HpgRQofcVk- z2S$-jI55B!BH{fYR?`-^D)4gZ1v8q0PFP}x0}bOODU%1a}b zfy;W|4go4Juks4s>8A3EUazDw`CndzvQ^Cwh7INJD(|3j5B$~O>TnIKv3ahk@>+*A~j*M}SU-kvl!gd3^6F=7+nyQ#{XdA&JZ?hvr0ceYY_Yp=JVcU!of%G(FN zt-z5uP?{B0$vHp|MJx;U*l`8RrxxvuUGj7uWzLOCY5jY z4*6fc6@RqKW4wQx3EMZusr-V?ewD|2J%O$V;DhiX z_^`?o5s$z}9TAVg$5np9J5Q?o6z0?3c}8Umf6V9LV&{L#FRDDr_r65$%PPNu@cCaR z|I1O#7>vUNOsbqhq+teT9T7Q|^Ilv2t6YTc5K#7hMdd1H4c5KipxN~Mb6b`5RPLz! zxyqA$&8yVBrt%cTRPVp8vgN2y;h!tQrxS}d6Ay#%otO8esg56c=fmqEEvAQa2c)g}7;yzXGM~n{~*7*af zBrqRTh48ODOmkvTql$ZtKL0C^sq(n@pHSsVDxZQ+!)M^L@Ht1s^Y8`uqAHWT|B@;% zW4;2rV8r)ERf*xm1Baze`rZ^>X_!&P=YJ)KlUJqSD~mWKRm$F}s8aR1MsHn}2BPWx z7EN~u=pZJ0|5ci=sWJsI)%&m0e8ZZyC%>iYa;i*Ik=WhW~}1sPd^3=+EHia1Q(eehI&VU#s$s6X?0Bd~2Glz?la* z1XO-N|ES7*#82>NN5n6xkpGnh-uX?H-@X2WnuYLBRsKRO^1Xl4{0IJPtS+G{v#l;k zb16r}(r_77mo?{q%UNAsRl>j8je-^7O3?CO)m7lCP_Vlrq6b_})zuMez%?BaYr(Zu zT?er)To0}fH*iGsRCPndM&8+&<|e9cYEF>A)y-8Mh`$BgQq`>xTf=SOwvLGH;P$HS zfY{OdJE^*}*SpZQtE#(srx(uds_uc<6Yk}Ed#k!PP9M0B_xq~4uh;$P>aXembHXLx zPu1&G-Cxz=svh7g52W%SRS!lS0tfltLunqS>fwkZyniIkqu|l-7*&r&9OsBQUey!4 zJ`rayJPDqx>M4jJj)+rL9qRS4#rBQU=sg{dP}TBZ)ia@mKjLgv&++#*Vd zrm8Kk+p2cxo$Q@gX}$)hs5;gAudDh7=9}Jmi{>;{rz75m??9jbRr~*6=U{#SKU8&w zcRs?IDfdgHux6I3v%UVWs-JlMDV3k8`Z;0_wD3oK3BQ70tLpQ=Iv3|#RljorJx|r| zz5YSfAHAOM*W}NttxDxD@K;qAAbx|t!$06cN5r41{)JfNoxf@Rqw2pVYD++hYfFYT zwWUZO^fZBSht?!);RO{*WhN^AEBpbs`yuYbxn|ZytYFp5|rFXVcZELT$QEl5m zy9HKld)01HZ3oo`skWo9*~tmjc2;c{@9c`Rn`*rfyL*2RntQ^%RO^i(|7(4G%|5F2 z#orh9gZ+K)0M!QK><9OU2fzaz5eLD8RkQpL_l+9iUpq{-vsF9XR~|v-k?<&ZG&}|# ztJ-mh;~fzvsCFV^FeLnIC!yNOx4Z`9KXQl z;GYXe!t+!cg*e|4ae-x61auTxZ}VFqSlPPM!f=mIRNRzj3v#nCTnP4zEStE+yL zY7NzQRjsMopQ^Q}Y^!Dgt6B$6hOesjniJ?Ls!jF!b(}X;d(%5_;Y?F)x_3AP)ZW2= zSGD&L@B7{lXnv^L4DWoT+Dy!k;Vd{C{@2kS!2z!JscN4Ej%uH)HplBPoKWpc_!ayb zexur4#J7%!?^K(I_})7|sP-eyeE5_1f2R2h{1q-x?Kj{1yJ~-Uz0id1$$zQ7mTHT< z|F;vW{iB-Yzv=oCst3aIU-hNDzqIPhc)cuL%c;IRVg>Jaqq(Bo@4ao>mA$_T%~e&G zce<}>X!eiZ|aEHO!dtX zTX<(n)wjag8g2u(^}XBC++Ot^5I+CwJE^|2ui3>!u-)ssQPxZK-F+|lU*A*py}Z*~ z^}W6BL;XImFWeXQQ@uZ8037Iu;1E#XAAJBkQ1yd+@4>1cf;k8t>ixrL9uCR>`jOUU z>-K2X?^693)h|^2SYLk}mB+&q;E8as>L)pYK3VlsydI+ZshC5(Gfeg2IH!5%bebbn zKLc^5_w5j%`q}UtcrF~N`gu;EN5S*q1!jh8`y!l+;U%hHYF#$B%T&MIYx2K-rRrDF zb+z}ep?NL54qmVN4ZinA)o=3pW_oXdx2itc`(to!gJV@6hqxWy;fT1?FY4W@zpDB@ zs=tDNFT4-l568m^sy~2u5L*7L{xF;fAAyg;#~cxltNw)7PvY1iK=r3pe+Kca?|n}7 z=e>SG^%v=#u?X8(rRys2-&<=AF3e39pl?TliCuh8fkfh@AKHsu#R2(p6Hu zjHr0OO4A(z>WBtx`rel6ZJZ9A9Qc0qzJ@skPKB?-H&lPq3G`cVn(EWN^S0{mV7?3A z^S&JdRQ~{esQL`=f28_MuRm6O76r4t^Iw{usQxM9Gx#~2<7f|i$9<{BzN&wv#?o|= z|MhRsbK$q}JJshQzIR0Yp!$!9`S2(BGqmtW{0bMq-{9}6|AANt|Ac?RMUIHS;XkVX zYof74=r`zXEUCs)<^*rL#xiPbqQDGB;Q<|Gu(_Y}_a0|F4+)9nD zoj`A+#r^fb}JHQ>`PH<;O#4d1GxEt&RcZYkxJ=NID33P8Y_V&6D&OU1NH78ud z{nSXR(O-=R)EJ<~RcZ`W<5Vj5Q)7QW?EyFk!h_T}7;y+3iH>pARH*TSMD;y2Sz}w(hN5nXIyBc>O?)3g$H1CG@zA(QD2%~4OgP%Z-d`y-zEdNOpHX8vA`5eB6*D5yc`d>9yhO3zW%Urb7TuaUFYObzk51iGk zH@HTxxdsl`{{~n5HP=>iJvF(mu(_^P2G`6sx&F7w^}oTjrOgf1yg<#3)I34Wjny2e z<|bMPKcf1E^t>z#BQ*c zn!6+R@cy1A+@;n{uK#WBZLh+uH(Qc@)a<8bU$kBS8(t6I?2lvD|AyC2HuqEWa5eW= zbC8+`(989|O|JiK9*lE{)d%;5YaWVom^s1S-kL|Kd9<2G;vZ#xxC~tX+dLNkI7t2n zpWvD&s(F^0gVh|S=1FP}QS)SKxc)b|$4Hawf16zY8#=?)9HA!H|2Db)H@MQa$@Ra@ zGws=f>&lyFGq-cpJWtJY(Ic%l+{&YH&NnBxdbfF@nh&UXk(y)Fyjaa^)x1Q_%hkM; z%FC=W+#jyM;ridEUH_}*)$X!cHLtOYXWjm0`Z_glRP%azZ?I{D>q(n-{jZugL$3dA z+V#I`j<%X`&%8~|yVV@4<{fH|qxW{}4VUvyoV&~ku6}Laqvri;a{X^}vFm@E1Wh@ zUQN6HSIy^a+TaTM<_kEBUH{vBNzI6wFXO)gyR1IkL!xT7)#UyUO|JiKa{X_U>wlXm z>eG8*(60YQl+-LEDzFN<{6MhV5!P(GetL7*0Q}`MD9L|AXz%QZw|F4=~!*AeRHNUlmaWBd}EGy>m z?BAOi?$1A}`J0;a)%-=xpXmMBdV?#wo4?{LFekWQNAq_z-F*JQUkLw%f5AnL;q~v$ ze{lXaC%98e>pyC(rq+^bt)$jcYOSEw(pJ-21}+PigUdUH|9IHyhO?qML7ul(R!eGG z{;RdB`N8|E)g8z3Kg@yF>T0cxxrSPn|7xvey}@>Gt)te4YORaE9wh%;mj7z?w8|i1 zS{vbPY)){`gx02N9i-M~YVE4l=4x%N))v%k3AeJ!U=6pnQEPj(w#DCWF@Fb~9pO%J zXSj=Fc*ld*ZffnVRxh>oRBLy7_psjZ_3nk!+nnIO->p7s4Nz+z{JwBs*biF%`)x50 zXFs?o| zU&R$_-K5r)YF(q&RrFqM^}+oOTG!%S2d{@Wz#ARIOlaM#)@ZfJ|CZ&y-y&nEyv>|& z`;Jp9s@CmlJ*UlL+Lz<&`=f-gbK|M1@-TU|I2bHeo*Q!Aww z`QJ*=o3!3=%cj-JsYU*`vgQYOsA!S@E%LurWU3M@TTO7RY*p2otyWE~*VU@4^{QG8 zwc2V~{;Sop%JAJy{2*s}J{w z_tcuH7Wv=$fL`*yH3R*TRfg-~W1LxwIc_0;QR@@6zEbN`wdSbx88x3m@ceS!0( zIpO>9Yqh>t>l^&J&<+7=eFx_``epk8=SMgn{sez^4DT$|`c*BWzO_KD-{}3_dc&== zP_0F3{fYmV`QdB%8|NQ$g7w*6LY*(v{*OA_s=cJzpQyc*+8e69wAxa88MRkXds&;R zy&PQLrVX}EyPMi8t8MwO_Dbdl`#^gYoK?;FoE&R+S9?9Rd#Js(+N;sKI$Q&;3DDk{;Qia) zTJ0Ux-UgriZ*Pa*9`0b3!M@ri|Jys`?*eyqPp!5)`Qz9N?hf~WdpaWaQoA=|Z`cR! z1N*{#VL#X(4uAvUevbBMSoSOjsQtd$2de#!+6S==2g5_)Aj^UFq3|$wGaR)KSNmDD zk5Kz|wU1Q$I<=2d`)sw3R(pur$53-DJPsZYPk<-F!SEz_GCal6)}GD(R5%n4gTvuz zj)>FM9)Sp&XL|oEKZkSZJr|Bt`%<;fLyv;zJ0dPn`$EJ;-nm%qOH8vQbX}(Q<-Yd{ zwXejy3SRB~YiM4(*i_f6eS`14QSF<&zFF;CD83brhGTs1ZEBCj85cP2#${^XfpaIk zOYMi%z8if{P^0#}a`(5f^>#lT4=2C}91#zy{gCN!4Nt^;1U?EMgO9@};FItv__QP9 z856ct&(VAyzMytV?HAFL;7e*J)qdG&ny;wcg^0i?jKMfeINDv>!upijX|FRBWYx|g z@~{Alj`nD{w`W=HS1~JUR|8+|n%Z^D25fr2rFPrv4qcP|nt6@p6yG~l?bp42gRVE> zTX34%(-Chw2FtJZyS!`Oa}4ju)c!#2S!$F2ZSucu`LFg&X!#%JYI`=08yNhzdvN#5 z_NVH&*!)cGU)26w?YU~tQTr>k$^SO_A12k;Ol$cc9-Z6Ysy$zA^1p5QulD!w2fK4u z`$rpGxleGW$^SO_9~@2EzpDM0+6&bFLv8ZEP5uY>b89bTK9>LC7^b~Q?SIuK|J&q$ zaHQxgVU-=r$#AJUOR2NAI!mjwiaN`vv!XiWe~0|jc@rM9vM5^sdJ?|+pBYgIyhxkhyPF?;3hV5NvzIx+5w^3pI{T~BN1Xxc>_cx~Xybo-Yjpa- z{`Lo&)*MK$9XG@AK<5B;4prwseDc3T{&&d#&LFD{j>w(Es5#u6V4U1JQk~P(IZB)k?m zIwRCMTb(oLJrkZ~HSTTb{?DRw4$ir7Bs>p}a`a1nfjXC|b0Pjk@M3rgywuUJ;mdKZ zFz4gT&{wJRusT<(Gftgr)VW!mYt^|yo$Khm-YVZ+fVT0!Iyaf)ZhUI`7Ins`b1QnZ z`QdiF4QH%5;XZb|I`^q_hdOtwb0@ubS#P)}1arIBoN!&;ug(MNjHhyf`N3V|IuGJJ zWKNJ3or&taug)Xtysplp>O7&&W7IruHNofH&XYJ#!KdLf>g3e1@xMCHxrJ2cdGrhL zMK}q*1Yd@)z%CepQ5b`9m{2FJPSVa)bW*{FMrY{FI)zP7zUpHvU(q0;{kF z>#zYC|95QsuTC3w;AHr!I#Up@Ir8jN1A+O5I`63SCi*Qn4Niw|JBIh@?!1fho}=Hl zKhXc9>P+CSnEpR*$x>N9rEF1TiJ~kiC5b3YTFG7{iIAN_NOnT96(K^_kg_DC=g!QX zxy#Jlxy#JlU)g0}Ba#34e$KhS|MPpjp4a(KN!n#BLnv|e)c`oHNPDjP)6b|BuYHpt6}L`dBhsAhQ!PTO!jI znU=_Gi%cuVv?l5QnXQ@LMz+%R$$*OZznNc|?U30XnRe9Mi>_NWBmR%fj?E%>MrL

#8S#H)c9mRxuQ=0*%5I|Qqsw$gW-ny+puT4_o&KNcB8oYdeUTZ0Ojl(3A=3?+ zLy*}InI6dO&uzO)r1sCu0aWP!8S#H)4kmj_j6PdsdLh#Xncmb76_LSk44ejJ6&Nlct9`nS3tPeEo3GN&SQ1~T;j4E^8K>P*I;CGmRfWyVrD zn>s$=3->dN9ICgCNf_9zcB(QQ4#+)GcI!pGM6DU znfj%oYp>4G|1(#JqW_mu<|<@vMCNK_rXVB!kIc1_t5-ppsZ_2buP1LHrzti@!cA0e zCa06PkTXd7|LSf`-;T_~$lQUWu_=*Ox};ogUCEUeU|8E zB+RDrkSJypJ%Y?UWFAFkE;5fXcaG%hvq|Q0Do==_t`X!&pG0N>GEXu6G&!GqhJ04B zQ8N8ML;ugv|1hm%(d1PKe<^yD2MdmGJUPI;$WEQcs*Co;%(VJ8ji=x+% znI*`)gUnLuZ;NicO~u7R9tf6`2GX z@qc7u(TxwJRO+O%WtB_+&#aahQ`=9GS%b`H$SA}AoH1WWu9=%(QTbXFGlRZC<|kyn zrT!iHJxTx1(Em-Xey0A5Vxt{?gQHsSci75}*TPa0;SX57kogmqvdwj{wnXMHSQ{g= z9+?fu{LK>nkrGUq|B7O5B#NFd)+VqvgS9F37XKel?Ieo+ZDFeetgf(jfwc#$ zU19A8t0QANNsL}ES)378XHoPhwf2Pi1$%2RMvDKNxnS)>WnWR$x3sdaZmfqS%+9>Q5hqOUb|Xn!#Wq% zIn>9AuE(}Dp2~Tmn3|st>k?QKVNHT{0dp^uTmx-=j z#kzvZm7-|>v95+?!@366gRriJbvvvnux^4i71j-~u4DZ55^u)FG%7bXE8%8XGhj`p zF8<%x*R51;YZiG2ta~Wl35))3(f>_N?uB(fteFhBPqs33et^m>#kL#kUYHH*Iam+D zdK}inupWc;2xA_Vt@M9}wZ#8n%@xIz^8~DCV9lfcBuW3b=>OJyiPUEkOZ*?!0#Que zo`>}jtQTM{hqaKo;{UK-BKiD}#pi!4KL2C!`5%kV|5)<;53D!HH%UJKW4*=n5^^cY z=YK3d|6}p_A4{J9Vb(HOeEvsW#Y<@)aK9faHfp#6Rue4oe^@I;*DF0ML&Xxsw1Wfd z2UuBHt6;gXs<1p*0jwM&^JIZ6lD?w(w%ro{hgBl!|5jO509Hk+p}t*}bPZMtOZ*>J zBHNlar2kuLIyBY~)@oQ^!TJQ&=deCy{AbPLzo7D^C}!?|4eMK2Yp8!Cx*3!7f9rcu zj2r(5TeZ?pu#}De4C^;ozi_KxB}Si9tlz1~`XAOG~^rvgxwx?U)bBj-Us#$usg!u5q1aI;{ULBmaTMc?OmwsDvE9& zyA$laVDCnq{%?0?dJl3>iPUXw?@gtPD5kW1VIKgyEA0JYcVq5;lB@f|?oOqLDEe6% z`#{(|VIM^OVA1t;nJxYgyBFD;Je2IC*f`$9U>^^=AM63J4`*(F@(791US}T(dob*y zs1GEMCXZ3m8TKHV)T-u^rvKaYe|;@up8$I#>>;p+!9I~&4OKMfVtY815u%vZ7zKMY zZ2G@V|2O?|3L{S?Pb2C7HvM0_y?qw!>tT<9eIe|zu+N2kHY4f(_BfSp>~}ou^I@OI z+zF!V8DvkSBK~jA-S#BdSHZpr_GH)>Gxrk7HDi+gZ(m0Ja+3aU)BjCxs^K>U_BG7C zR<`}21JhH<>qIffego`Tu&2Sk1NM!ur^CL9F*i$$DeV?2Gss)X+sNA$8-02w?E7HT z|84Pq*gPrN_cA?GBFzZ7pUMNGXlJ$`ggpoLY}k*$eu%jbORm}bqf{Of#k9a&*z;gN zPW=hd_4?nY|JzTAqW{m7Jsvbw`h@#iS_F~xY!F~(&+pw1~cd6v6`+L$F?~w0`V&>E` zD({oaMK|N&L)azQAHmMSUI9A``(wteB%8<#Y+Jt6ur0ZVFK**Vci?V{+W4gn*@{~Ik3!A@b9Vb@?+m|K-xQ@5B3{a@d6v+J-|!&aTEj&YSlnqK>a ziuk{|M{R!&N4e-1uz!R7CG78Ee+By+*k3bJ{J+t^-%=6(Z`AV#*gwPmk@`=f8^`;F z3jN<4(eJSThP@W{I@o_O_fLt}SI72WRMv}P;{SoO5$p}r#sAH`a5fgj*+dlG<4y}W z+rilk&Q@?Xhtm?y7L3_aVzgs8t*EpXMYouHD=U$>h>|96`Czq2p0 zL*R6U^AVhGaBhOLADr{x><_0uobGTAfzt!dL2wS>UJjJK=r(l3|Kao$MbB}k7o5Z3 z^rn6&*@x^aG5Q%irymvZf3x0pj({@=&Hy+A;T*|a@qaU-9Qwa=j3{QmgW-&Wb1Wmp z|KS`@o}iitjyjytOq>X3C=)=lu60oO4;L@rsR6F#*mcaL%Vb5zZty;{R|ilo&IXE}|m- zZ`Li&WH?jcTnguEIF~W^a+3b;{T1lzJuG|DT~Y7rIjf8%V< zn{eKRvlz}&IBzjm{J#mt)@&Cr&OK?=XMR2Nc%FL}u zuJN%Nm6#O&hm(?ZMRVortb+3?oYmCD{~I&+Gb*2pqR)oTmvA<~`3la@aK47~1DrLC z`G%zbJL3OvzL%|xtI+=)`oI4FILXBgzTos(*Lvce|<*FwvhPjW)iR4B)bK&t&kP}N4BNt`e~o6_&>5+iK4wd zyA87YBfBlK9gzjH?HJGoS@C~lx06V-m-fhZKz4iTJCOAM>`oG(ZVzVVUqCXk3v+js zZS}~{c0zV|ZfD6gCGSaPFH!Uy&vrq!E3*4g-&b^VT-~VbCyE|d+3v^= zK(+_6y^uWs*@KZ4|3~&9iP5X>Y)>kOh@$V(XL}>t7g_p$wvXthH4bBBKk{(0KY4_r z>Fex~$R3OAQOF*H>_FxoExD#XgQyH{rW{A*c=80%^@=WgBHYf%4n_7gWQQSp1G2-B zorvrRWXB*o64_Ic9mTCqB2Okqlcy*ehs>Tv<#h54@=Wq9#YX#&MfN;o&!&D3IgX_N zXU8{-oIqXt-;B@f1;}2C?1ji)jO--lUL?8tYAbsQmC2%*zPk+BYmlY?XX*dhD;aYY zd9_5E-W2~wb_zL_ypFtHu~FJIWba4zMr7|q_9kR+L-uCIOeb$4XOQCm=KPYqor?Is zal-6f$li?5+dBpyZf zF(&4abIHfaClr~OhwPI~JVicD&L^KCpCuQN&nYtTyd>29jqF11m;TTB!jCT_OaIT( z|J6GM(vpkdDwlX2*}sr|1KDNBzKQHR$S!8?TjUaQDJlNn7$NUcd9RuBKC&MpyPP`x zKP&!^>__AZiPY~zWLHvYA~Pi4|H|6Pu0hs8wuY>{|Aj1H{>pkx^ZluF5*q`U%#EZ_f9Q%2H!1uR=;n(u#Qt1?a`i|>DB`Tkdy?|)_G{V!zY0Fhlq^8K&u zCrtC@uk2?`^Zl=^y#IwPU;fH|#k9QtC4bV<-%$CM{En3OzmWZb566wN(GcO$r)!rfSO zcN5X|U1hfg75cySF?S2N+rixuu2?Hm79x!qU-{a>}1l;0ihfpB{;E$e@2Nzujs z;T|lC_9gcaxJSV41-B2}-pm#MH`i-!Un=x}m;Ue4|K0u)qy5Sq0CynVBN=&==w@F> zQ#nSI?_^a8cQD-1aF2yM4DNAohrrb>c|xLW$h=M|6TgO{@%nL3wIn``oDWlvq<{CJ6mPT5>U6m0 z>#k?|0=VzF>)_rDSNtFD4dgUZ*8gyCQf%}l{ofV;H|K8mR=9V-y^WFL|Bar# zlgeEr{olPuzT9;0C1;ZNk@u4ikh91K$=T#Xv>W~375_JD7qBR zB~KQ}BIzqOdO3t!hFhW@iEd_Mg-TTvGe=^$pTJGvs`{tQtxK-H1Lm%xvRV{V!l!V* zfcqKs&qX)R`6ZRFMA3Hx+%<6jg!>KLpW%KB_XoJ&G3I-TG2Zec6|VnHeSU%aJKSHX z|0a=UZmy;BM>Ay|Jk^qa!TksBdglHux%zIiyMfBTqUbs0Z49pkJn?^cn~JXQAbH~d z@HQv6Ai4hcT1t%GyVn|CH+WmY>i}X*-gaa=vOOvOudmej zaYuOce~dZ2nslbJhbX$myuIM<18;BYT}0RGWKaAb zURP1HM|u0f>kn^#cs=2Dhj$=6`oDL8#ONOJ=>H!5zpy(?I0W8d@Om*#|M$fI;q_4` zBY1t~l%(dDr2A1nT+xgc?+AFu!5aW?5Ip+7cNAj=lJtL%{%`g^nEJ8JN;sa1_&>ZM zqU$rDHx%9@@P@&=3f^#dqB4dYOVa;6`oC%ObKy;bHy+;k@Xlk*1V!T#-b5-FkQa)sX0BSLco)ID93K7O z6aR-dnY@&_^ndMC-WAlZlx_8@!@C;Zt?;gaHx1sk@UDY5g)vhlMqf>P*HgJcl-2YH z??!mj;feplyIFK|jJHskA&Q>Y-fi&ihj%-?d*R)|+&js;Ncz8bkHni2W>UXT6unCE z9)LF+-Yn`5if)eOAu11xq8-e86yCe=9)tH1ygBfmg*O-8Ja~^Y@(GDFz4j!Pr^u&C z`oH%~vzP_&UV!%;bDtO8)Nmn{7ez70_%ggVp}t`97QuU!xvxpC*%$raqyHOaF}$Vl z#Q)(fkw{ZA{okYi>!-E7_uysWErX|w{e5^J!duR*K9H?`n9cM@EA{?{okYio0^C4%J51ohyHKMq5pgIf8&ZVa%vVN z$SF@t;r$7(4sQ)Sb;zG`^HuOxGx3S+(ah7&;C%^C{2$&Iq8l&$iptlb=2Wh@!_pZeQdMK&~rt`yJw(xCICmg&J&`+z`oW^>5t2KEN-t4N$%i6$JaT=I8;D$A`$oQ2#<>iz_cd~~`rI1izTsBi%2sByd{5;E@<-A2Sugi9a>~+wLGE|ter4`& zlB=J7%&ny&{*TU>>`RjQ|CJ(zdQ2u|2+NQ?6)%`#sAHb z=J!JW5ajnpzB}?=kne{4K8)Fy>?)D!3?;P^|3`j*QS?|2+Ml=Tio#@pd5-lO$4qQ=h*W`74pX1o_L5pUm7#C0C!J^5XxHjeExdmedKRI{z>GgA%8FOHzI!v!)`+UW+tXfyg9BJ$ls3q zt<-N5U9V*F^#A;w)bAqiChw6LeRj*wME)VCiTs09W{YC>^)T{} zBQO4s{G;S!B>g`>w^=0pKR-_t)4xw4{~Gd7BmV;O^O0YG{4?D4S&7kiIP=d@d0rHA z6bq4m8Tl8fza+XDtFKUbRTO<)oL_|eQsiGpelhZIF!xQ#)h?QUi^>vFv=`;yMm~@H zJJjDL-y@faBjw*Gmy;imACe!DE69(@m1Gl{AuZA-9WqP0q(|lyrB!8L1@5<~*cj~r z3d+_(4xI3P*PFBl5o>{}cEAv!WcDjF4YR`oDfoIKLKoHm5r7Pg~8|JROM*dB#(DC~g3SQP00 zg`F6)v!WWAD0CoqA$LWgBMQf$&}1nS#QNC`@JKb>#Kr4dgV%Ms07RBK~jYOW_t2 z?m}S(3b&&`|1Z%0%^acs7sUUKdl&9TVI~UV|0vumx?ZIe?xS))N&h#4>OmCdqc9tV zxhOn@!lNiW%oy>1^G-_PF)DLJ(dU%H<0w3d0{y=*PjuDkvd5>$r$sTX@eB&DpztgT zFQTx3x%B^n_&*9SsD&{K3uSq%&PS3K|3~3vDZ!NaDhjWo@EY|+qU*Cpf&O2h|C_n| z778U4mY~pt!cr8LqwqEg@1gJxw|!T()s9+NM&*4`^j*8c2PmvS;X~>liEj4(F_o2~ z=qubp28A3777AGuZ00(WYmV2Y;)!DVD35}V0{y>GY!(?XGHj+qD13uL8HLp-R8Xj+ zP-RSwj7j=`A(gH4ot%Q|V%1{ea*e+J1clF0ko7+bpNX!owF_TR`I7vK{93-ytlx(M ze*#oJPG9&Ih2K&54uxM(_?|Ib{}+B_`X{oP{}+CxLjTw6hr(JE)}inRb@Bg3J^!L2 z{@)m@|DbpU3L8*V{`oJ8eNfy8#RE~?7{%@=(*KL%|0uQ~HzPMEw;;DvlNZI7WGk{Y zxfQuJihH8C4T>F5+?EQ+He_3JJF*?w9>pC|+#bap)JN%1MP*9Golx9a&OvI*y#6gC zcTouxcV)UG*@@hZ+@0)9?xCoQLUAuDdy`$reaL;uu4FfIKXQLXS=-1l_TcdzplDV* z#e+~h1jU1?_Y_@^z+x{dy~#sGS0hHozyS^i>@>;K{si7|D48^vWP z(*KL%|0upEx$3Do_5FBJ{2#^TqL|kE5aC=DKSH3oZw36%QT!Obs_;q_*Q3~kVg`tXN)TLzx}%!#XnK}ggX7d_!-mcK)yur3mN(9Pc@EO92UPKzb4n9 z$Zx)i-}2*k?U9lIn~I{Jp!PR|za@P7zc2o8df9KuZCi<=$A-TZ{Lb*VhTjSP zHq70Y1lfjcOKwNDQ&S9ndvben2XaSpCvs=91Gx*it0EH}VJX@JGVm4}Kr`atQ#xJITere}GE!wo`X z_&q7g;-3jw|HJQ19xA;cAN#`Ry4{yc0Qmh#UIO_2;WyU*{s8z~|ND*gzt5GqFP8xD zk5OzCI2iu16ptfi{m+D40>B?a@)E!w3cs=b_lHv-(I`aL|L{*Dx%l@-t295#B>;S` z|NYaLmP-KmXOMCU0RJp<3^`U&6$}3y_&2~GCm$u|Tyi}8^Waa0FQ)+b=QnbB3h?C= z0RKXgrvU#Vrg;kRl+15ga0tIZiIgm{JY`b+=!V@{TBE$n7Fl}-vF;*|83@q|2O92d+?j!FN3e_o&N8O|HJ=){80TwB>ayQhRU(pTJ+mkEo{*H?Ky*Z=+xqL_C63I4C}e`e$_qMMR`qw>2b#)1EUzXATA@Ylnq z|NHcRy(;kkX1vs@an%1J*aU(2KLY7f)7pXfKY|v`l+6+BjbIA|9T9AapaTN>e<1#k zpf$;!3bvN5MBD}e{Xd}p2lW3y{GYiz1qAI7wCBg|$sNcY$(<1FtP*XOpv|JSRCXbE z6;ZEvgH8zcKtTTw#Qza=mRvPv)EO|K{|Dm#rX_h5S)sjH-h639E#uw1bqY=?sv|g$$^`O!(M=m(fZ$RD7b3VA!6fEh)GYTBDw9Rg4iH?1;7SCSQ@^5_ zeifCgMKL8`i?A(%DG1(0FcrZg2(CkLH-hUC%s_Ahf}0Uc<5sf%M{tvDYkGV-m0LtH zrQM3)4g|MRzg=|GYj;w)OBBGxac~KP8<1Zt46TvG879pVj2d_!4Dd%;@zaffgtHlVGB6y4X64CWDEdl*M zp#SUZ(BM4;zam(MAdldE1S=6NN1zt`^#9;P+1B*(3YPY8G+B-fDB3Te*}?Yqp#`z0sUXU(G$c7>IlUD5u_4nT0=FX zQt1D|YNq-8f57Me13v#B@cI9M&;JK}{y*UJ{{jF1OCUFYpzeMP`TT#t=l=sf{~z%A z|A5c`2YmiN;Pd~1JpV6eN%6Pe5N?X#cLaYUSc_mCf4QzoP4w4|z@xH)*D{K-e1LW(c=LxVglKTS%_{o-S-jrIjf9Tdi;_gxezAn))`P z>+ulM|3mSAb3Y;64&iYK+ac_Vusy=v5pIuA+#cZ$2T-358=TG_eXdD!tRXe zAu;+JictI?;X$I9z4t`e8{r|;dx@?cBRrH!A5lzO9ft5Ig#8d6fsp+5VIhDMQyq>&)oJQWL$iz+L&GJ!QHH5byyba+D?(0@X<9OliRPGSPjGVg= z&PI4QLRFu8m`nc;XEJ>sdB4Q#`54ZkLjN}{@DRdB5k5@)5s5TC`xuouqL}gaI7-VA zK7rES2}5>ZUe-$wWz!gmZek}nDOHO=B=o(j&LqODtvxMtW5@SdBH^P6I*g%T^qqGqz{%`78+7zYDQEEYbGtu?f zC~ZMyOHuUPFSSBxSCm?#v>i%Yp#+q+X3RF^wi2nvxtdd@HdNY*qJNvE)DEQ`P-;(o zd(riEO=(9eJCQsolsYgi{%=~l)Dfl5DAE5*yD@in$z{v%;~psO$;4iw>$z6yg3<(( z_Ce`Hl=emGFqFEY)Dxv{C>@B>evIFr>`wL|4^T8Cs&o*QgGJHTYbE-BsTcL${`Wg3@Fr#Qz(|bva7cqjUvIQ&75+xmS@_lh=^fDmGemDwXR*F=OBclpaKB8uc5= zo5-8x`lU3TyoH=W-b&s^-cH^@-bvm?-c8;^-b>CT?<4OgA0THb%50K-&E|d|QZ(;L zl^#K9Axe*;^dw4;p`;9d4rAs@jH&+V~u-E_gTR2Go*|C0DW zN-s!^8FeqB^g2o}q4X-W1D9TrTvNhpj9=7Dc>|@lQ4;@0X)*a0xrAJ**x2?RD({l- zk@WwP_KzC`J(M*3?>NE?1bivKs-?R%7dLW%xg`cZVfawyUNOZ0!^#=jxj z6s6x$`WvOSD6K>350>_)Y^Bc{rN5}G7sc%HA4D6Ww1N7+qU-V_@qa{enlNn@wLsJc z(PoHRBifv~^#4fwA5lw^>wmpUjJBe(HA(-Ewq+WM#w{c9e?;4n?L^l-6>X2`5JWp5 z+8fc1h&mzK3DGWyc4lM;iPTpU(XLcFilY56+6~bjh{XR9brxNJml4tbqrI9%c0tq~ z(LRW}A=;PmT_xAFzO&o&Fz*|05bm9xaikZsPxl29xyvi2fgm|C{TGXb7Uw zh)zT_3eiwT4kL$?^#7=t|3@cLKUvW@NpuRL(-G1CBl^GD`x%U+|3_yrJw|?aD;g_5 z#-)FcD>?_!TZqOXdH~V6h$bT%k7yF2^AJr$G=W>4FZ(h*egTyWMd2*w$BPhM%)}+4 zYmbU9MRX0K%Me|O=yK*>A-Ve86kSC{{J+sw*CM(O(G==aMK|SKPvr)Z{vRp-ABaf# zzv9j0beXErE#wUHR`NFTcJdDLPVz4DZt@=TUUDXRA9=rAg30VtdzppkX+#eqnuBOI zqDK%t#QHoe^)yHHD3!-V(Vid8MKll5HM@-_+Sg z6d-aCd5E%%ccmQD%Q-4}lKvkRnf4_{UkgVeqB5cqb@6|57dNU!d2`zrC;;(ON{GQ2&(V`ak-d=`YAH$*;(-$u;CRr1(Fg@5t}TA4u_kL_d-A z|495F(XZrhJl&jW%_?v{NH@@UOpP-2`C?f@>rAyp?n<5 zgSqXo5~I&4<>RTGKn@{Kl-XJyN)983lOxEH%}c?x+dc^Y{-c?NkVc@{ZF zQC#TPH7K8r^0_FV!@ZAFGqOC>S-yeF zG*bD$%2oc)8mhBrc{<8>qI?U=x1l_PxwlHL_KouGRPGQ(`$PFIldQqpee@xf zk3=yw{}|;g$}3T}P;O!_{ojltn~EdxMsZQjqwG=7iEd^`fl5&nGjaly|3EoJ`FoU0 zC|6Jx|3|qjG5UUNxk{x*#$-bONy$2?9cdNQtI1EuPsz{7&q;ay2jwqGKKxVW!$0LU zRQUW)S)Tvl$M2;5CH@DLe@6L7?)@jl#t5YUm+Ajy`hQvcALX?Yqwji^|3pRE_&SvT zMfor0t|#gL<$svoAn|%sSH%BO*;o|qa+OU{*&G$|e^fRTUC*5g{lBuMD0&rFX@$!E zsI*2!8S+-Bv_oZURDcTozp|}F>N{x_`hSJ~UlIS8Lsk!RRNAA`0hR5Qf(re=vLn;< z|H{r1smDoW7wWr;qWitl36;H3*$tIFP}!Zioh4U4GhEq|%3h-Al~tt+DqT_8hk7&r zuXLlbpG4|$Qt6J$;i&XLr57p(pmH!O2Qo(dzfm9hf8`KSO!>W0>5IytjO^1)7yn14 zpD3oy`=fFUDo3Dl6eod=GCwE7wyl@a7fR7Npzk|Gl)%Xe)Oa0+=Uc^Y{-c?Nl=qCAVMsM=qR z(#lv==b&;nD(|3j4k|NH8HdW{sGN(+Bvi(uay}~Ou~rkB)p;Tn`hSJ~Z~FHlR3@V$ z{*THf5^s8${$HX08|4aArlN8sD%YTL72~g#c>Svmm20U?5kQphEwz z(Es)GA(dI&_Cazs`4IWAqWN~L@+c}#qVgCjkE1e&xpO5~dt>DZD)U4!W9cbWodpMWLjSKUp#B{BJZIbsHih_e}(>E(Iu}! z<#SZ%|CLWr`Lwae&rGqV0$-p)|F3+7%Gdw9$8S(k^N7!XR=(rD`21&u&wp0<{AY#F ze^&VXXNAvyR(?fAnLMBWto)A3TGi&<_K*MF?>bceqP`v#F@KeoKWXy~)c+M$HzGNs ztD7*rDcOSDjNBa6)~Ig5^p>c$G<&SJ`ky^kw?cJm#%zNs&Hul9thPb*P*mHZx)-Y3 zF{T~ap4^_?f!vYYiIgAzM70B|yP>)Z)4QVDv9b3~|GW3yQSHo_Jx~?%S84fE$6MW- zdKXeIV^Q6g>`Hbc_apZwyQ6wAsy&!K0M!EpD7;`+TV*V;Ee{!TJQXfhV zBZrgn@F%Jx$x-A<j_PQpPeE0l{ABvH|J~ymsGdpvEL6w*?;g)a^;}fX;oiqd zmUi9hcq-!m#wV-iqk0*t6H%RnD*eAo|JSRF>P3vF|5wHTQJqYR|C{q*^>S3NLiGyj zSBkDZuqytK>NTS1``FbfsNRk0R8((9^*U6ip-TU+-q0+D>;LLaqUg0#bvmkdpep{4 z>J0K$@-|Y||Ba&)|3~#MQS@1$dJn1(qIxf?_oK@7e^vayk;}75Rs6r9%trMQRO$a! z`oBJ>S081`k4dCa<|0-{@i?k)qxuA@FQYmS)di?NiRye*pJKfDzxigc`V1BEe{TBiy%HEeT=6#a>U#0(7#s3@iT*2Ir$(3Xi;!{!0sKq&|7HOlVoWx-| zi&{riT~uRKJt{dePZr1`>5~B&k|k6ts76ee73EK@ovKwTwPs2}B_->mTr8lv3bk!f zU5%Qu#7|INkLstW{)p;lsIEcvb5!}*PgNcPV*FRAeytK}9?7-8l<*CzwEe2Q;>6?q z9#whxr%k21C{mxFP+g1a&P2?27#BZqnF8?2#3j->Dp!yf8f1!q%>5g+jZoFwZcqxve?5JrPnrR))w+n{i)?~ttD!$ z^l{1Ju+|#2t)%|7t;uZ^&ZzO_FBPU*Nou|q zYI~b{stu)v`=HhfHF^JwyX%S?-~X!d{jZw5|Am@5z=Kfh!Sn&-fr`?Yl6x@OlRTuE z-dobTcWQkQABS3B#Qjh^46!;WmG}#_!?{&|)Kob~pmq*w15g`;+L5RojoMMD4U|IE zQLFba^a~EPW2FA-_gHF!Q9A>*V^JH8+HooX>PIzeBTzd5wV|jDK~0|gm&+4XPxYN_ zZ5V1|{-UVyCdx?EPGVw|l&P|$VNaHxQZX_NPC@Nd*6=j)bg7KWlA}J8Jc}GdjwR1l z6d#tDaj4yj+PSD*j@o$CE<^1+)Gk160&~xoNC}%L38~M8s9i#35^5KrCQtrLmKwJb zHd)e=xYYC@b5Xkjwd+y4618hlyNUt2hBBvg38+n>K9#&qbTejdK<#GKrg0?D|7-Mr z)dGuEwWl-w7IH?jt!_i@A=GY1?H<(l{D19E#@t2TEs>^`?nUhZ)Miq@kGx-U&E98G zd61kfx;dhUQG3K3qa5#}40sH+IjB9(^jryE_lKO_WK_>XEkNx_)ZRnwDb(IX?P=5& zpf+DU3yRt^+(dr=N81Q$&!P4rYR^-Dfm|rLrdBVZ_9|*GbGE)>sv(2nHPl{5ZIKKo zHB=Nulz#yxX{qO8)ZSu37XPR%MeQBbxcKL&L+xEX#<<}!)GXBAM{Naa%emDDHoD=Ql@FcPpE%NekQsa zQF0((ptc6JFPZ*|BcDf0kz+l^&@IOG4V6`3n?dpW^MI5#kHvY z!Ni~BI*H+4_;EdIeGlw0OHLNw?Zub zk9bS6rJ_0ZxHT1-xrnzGU7dX-y{)7r0mStGnD76_V*ZV7+c#pi*Kgg*aj9Vz@5Bvv zM%)!~2gJKbm~xDGSH!zB(GhVc#Pag5G@5E{)e&m&$DPSN$URkQi1%W8Z?X&GeGu;} zH!;-X1ZrE^q?;t9p8JtJ1;pJE_dwhmG5tRl|3`cf;zJN0j9AQHs;d6f{r0$*d{m=F zVh$zykbOlL@i3{L9uo24i2GAKf*e2|NghQGB#$PKQDkBe;=zsdv64`J6(7&66UZTK zmJ`XL0a@qfhU zkmJa6$?@cQh$l!ZNzD1=MDhaiLPgoBsf@nD>9!=7_IDJPk3||M3kfULPZ3`hQISH<8m3FF#Lhs?*AZuT;lcnChwk5(P(~xy z_A%H0`hI5o9O5kE=MjH|Sl0iD7m{56$FlxM{4(MXIA2~t{3;W?{}c26Pt5y2@f(QW zL;NOUwY*=9cnRXSZ8=*JucadQe-Qskt|R6Ce`Aa( z|5t{uXV3=G^|r}I5}DAQ^gYI8QzWgBv_P^2lFgXA`Tv)bY)Pf1C~SXzY>kAoHIend zd7dQM7D-1WK(YgpHb~kbY0Kd4Bt}0QpR}j4y(nhyJ0j_TWGCvp|8MkNsO&0{`i?=; z3CSKvcB8&K*;#V+oJ#gY(gn$0)b|!$&!%J_D*K9}|INDdZ7-)Be;L2@XPUetLD$n3ojmA(?GEKauShhz|v!;uU`(x1u^ zdy|lGBl#O8qp6)Ze2eXHYp)6mxWAker8PERu0Z&Svg8 zl56&UE|u}3n3_*OG6~7~)F+Y`kQYjf8HX295&v(LGa1R7NG?V40Fuj)+=%3IBvX)F zf#hl=S2AAwzcJqA{tpuIe{)eRAEzR@jynB65&uUrO-@N_Tq(~ zZy{%px01IhHtKl?l{-Z-M|U@pnMmmW3H{%+(tV5+|8I=#SxBBn@*t8qNM<8>1j$2; zd01jh>(T#{$3#(=@KW2kNai6C|3@NYsWBSq|H)IL=x>ga`A8Nbc?QXINSt?$6Kay`nF)r~v{-ccR z2c%t*{D^c*BtIef8_CZ|{zUQ%lHZZg{}cMZX$Sg$BL1&ihQ+Q!@)r~9Md#BdNd7^( zF%t2AB>xK2jU-o(y>t_#n<3qldJEC@xJt$Uk!~T%uWOiYiL?XKR!G|+ZH;srq+3y^ z|LbE(x1|EI4N3n`>HqqB;j}%{9g&LvBi%vKxOBP`m7PV=qbS`4=^jXTMYO zxzT8*>Hn$tf7=!lsO*Wf3(~!qrvK}{NcW+#ucGPpNoJDK#o*&O6 zCy1#2)RkR2k;(<+h2$jiBGg|%dNI;JkzRuIHKdb~K8EyCq<0{_4C&2CFGqR}gRekJ z|4+sLkzTFHzkx`vMS4BbDax*qP9?7s>sEUgH{5dDeYIXuh&)6J%jXFNvqP-ER(%Ihjby*=aI^nzpRq{ngr4pxtEvJU_<({(viL* zxsrHQ+)NUSkbZ&mb)>71zJWB4^i8A|(#1&CSb7WTdq|fceFy1Mq`di~F8|dLsVnQ0 z_kYy2w)!abTt>bxA7$?!AYFmq#q+~Lb_7)*DsM^$<3&&wr37v zg>9q`OUNSikh*eEDr||WLr&7_Puih?v?%u?q$Pd1#!LgGHKZZZGSU*#NP1HRs6W|7 z1!+}wszlZqX^b>Qn&=xr>L(_U){&|oC3r^yROF(yNLAsVA^imDr_yw4n5oUB-9DF( zRFHm&^k<}BAyot8You%B?yfpCbuB58-y;1^{6y;TJ^O;+|EB!@HOzaUk0 z_!a4Ia*V2QUB}{+ZNv%jqJ@>|2L=FQk8=u8ev;>dM&vM*1&ORmcXZq$*HF zs$bivZ-lxGe)*_Y$f~XCo1(rs>Mc;;Omww(HO$l-m-Q`B-%_qXRV3q4Z-x5asJBMF zJ?dMbzO~d!l`Ms9gZj3pw?!RFM7@n@Mvo3I6_PoxlHCm*4-CKh;z9 zE~xiJT@|vwG;)1k)Vs2(-N^mqpmaOPj=H1XLtUhxegNtRF>#>mNV!e@V7Yivdzaip zq&3t>sd;bIFGT%N)Q?5I59)(Z?~D2|YC5BS80!5{KLYi`RXpnb^^jv}15iJT;*l(B zIqCyZKUxA*$?8v4o~0Btv3n#*_V-@I`XSbvb|1vd0oA+_>rXz2*h4{U7YETFMr;gX0}*=`u}2Vl5-~aJ5gUZqK%F45=MZ~d#(rbN5F3fu@Tg!i z1&FJULhMDvUXaRBl_smp`+wvo_E^LwAvO-Nm!#yfxtGcDh`oZ?1n%R+|NObg_y4Gq zg|&g0I(^<^nWrH3I%01kHWjfq5SxbBbd{A9gGU^(8HmjcTeTXmR!OqCS>$XfwmP7q z%t34}Vs9fh53vP^$@_n#HdtoF76yxmEkbNDEAySufj)@6$HFlF$ClE5AF)pmQ^$7| z^ZyXBWi*zv0#_imk_N~B)y=Q^NyUDQ*lOups%lZabWuJeXa6jtNVtTZ$|7}8e2&D{v(a8h<#6E zn<#82i2aBdU&|2Nj@S-nvJrk@lujt^dQdu ze_ZRJ%L0PzcHvvH*zpMZ6#4_ffxJbah@x$$3W>?=MQ2^FxTgfcOB!pF#X##2-g|AmW1%e}w*z zif4EPAEPo@lrXm^5Lbf1buLN#*@17e^pIlEx^} z!~9=FdD5ubqg7{p&fd@Oy&iBGtvFH@1bt*D$65q}NwSE#>QMV~}vvM6B-e;x5R z5ub|q8;DP1>U2pBkMayEGerq&U>4%PBR-q@TjU&aE|2&;az5hUBffy`VIlc8xrls+ zTui=8zDF)0mm>ZR;*96<4-o$Xaq0XczKoRk&&{nsT!KI1yb#1!(U$Rl#8;D_kn#us z@z2OLROSuWa$J2YI; zgQre$5Ai=J`iPfl?32_mpZ$pcgZKgJf07*kiT|w}5I-nx>Zh*7@k31g_y5<`4u^I& zv?HJ$3++f~HK8$fY1PD2t4`J+kCwH9Z-r>Js2n4T>Y0e=anKq=llTvf<3Ac`S5zc6 zL#rfflP8jO$hu@bvOakdc`|tl*???Fo=ToZo=%=Yo(ZjyGURfgsBV-rj{j&)q=dm2 zE3|WsEwpQ)wS(3XT6=n4K{EbpSJIa8pYU3yG5%|e|G_An#`v!> z{%aEdBhMS5-45+0Xx*T7Wt!wLz@My545S!`a*jU8sonv@gG`0@&Ogfp!Ju4#ttF0 zho}!AA0`JvdjXnE0fHtk|AaP(e2g4S^5vh}6SRkrPm+=?G(LmVhSGk9&HVoQuwWzizM_lxg&_>CzR*OOLM0}A+dqEtL&RO(X-oWv_NFMolO}C8 zw0EGr1#KQQ#(!(AGoy3fcx} z8=-y9)Gw-}Zlc2AAB+!cUqkyA+BeiUi)VOdZK3j=V&&o8XnzmwH)z|S{S55~Xgi?& zNPT-1pPf{GQjGH11?^X8yQ%*odN59|?V++)lrS><4owC27&IN4+HrMsG)WDv(OQB^ zQj{rCpRK z2mhsP9jIRkJ$nDM-VyrM6y+}f(63dbaUFR*^cy0jQDSe^eN9BI9U!-#u zkgW0`bOvqxAvz3z{xFS!ktZ(!IxhkGAm|eR=`a{N)T{ySTL8Tv%%3I%QCqaJ$`ef)+p--Xmx}*lzbe;WweYz;B7;*;9fIbU4oYJ|Fs*&=){o1$`m(CD7l7z8Jd1f9UVXTH#sD_^&hm2N6SG z3Vj81iT}_)AU`CRk;@gs=Y#r3R91=-=Jql4b!E)EeFHru{zvt;k&49s@Cu@T1-%IUYv|uY{|5RN=o0^-e=9!0os=%|ANp2N!Yyut zz5~Hst3sjE&i8-nY3dyO(GBSG@=s}CB=kIV&QWKv>1jguph=r+qH@jt2`#(&)t zB|K_n==-5F{_BkY%nCaD|GLEguy3IMjl`+Y4irLsD?yMB&ySs@jt=%AM8b<7IlgLQ4Yr;Q4fjZk*Gl81g1h#gEA*7sWAR0 zPNZFjtSdgjXi1_z5~m<>67`cs56+8311b$g3Hm&V(~xL|#OX*hMdA!38Y6KgeHw{R z@b0_BSyY;kXOlcD6X%Lg&>v1TL!t!|&6#?h=t0{~oKNKf@4~61P&9{y!48likT4iqUcGN##ya zg7+*X?ndGPBGBoRc%9T_Wu+8B!{qd^+#d=5)ab&Hl{;%|5JIVkvz%{*#cyhs1~KKp?Su9eRJ#3#6|B+z-Kj=>;HX*SEi7%1(28pkj`nC86*H(2$FaC`G;hFm# z65EiF_>aW*;u*%7AE^8&N|^HwBvJwf#|AfSUBz&^W-1d=wko(C4iZuR2;x8ntBf;^XgpB_n!KbK+ zL$v=DCJ!U!sW*~Gkn*20BxUp)$!dyH60vKLN0T+lTI4Y#-@2bXj`s272_(o0MQQVr zPi-lGQsTcfQL*bHc{!5xkURs)`beIFB;$XQ@jvuo{7*{!NAgtiH1c%CiXyK>$up5` zgQUcNBpZ`wkxis}lV_9Xkmr(3$!278@;tHy$>+bx3us?R@(LT0CvLll1knDhDd!}9?sljzB$@rgS{10NF8f;8nhvYT%yjDDe_a7#& zr*eZRL1a$eh;${AHzD;hlAV!Ujbs-jpF^@Mk^_;v8Oa_<-h$+9NOt48691!8G5#kd z{)cyz$vcpI2+5xGl=zS2UF6+zj;pYcya&l%H0~vPlYPj(P#MH+mHHa8V#{Z24Of^pP+Y|e1Xb~8d!Kv>$ybqlnfiEg0y&YC z{(tyy;^b>oCW#V6q2v@K-$(LwB&Q=em8sJtHHcctH>k`YXOeG{v&h-xTPma@IftA} z&LiiO^8FVi7m{z2i^zA##pJu>d*l*wsiOSU$Z+xlBv&HI{(o{Ax44{KL4KqdwVYK{ zJ{Bd2e#uXe{0YfVk=%^rXGlt@M{*64YiUUQkLqCqk{glyoI2xw(8Eb?qVgrl_@Dfm z_BV>*JxKCfBqh`%xdqAZXh{5*x8jSq4ax0DGX5tS|9MIxxr3=Y#WR>km;4zi)p&Lx zr5f9AB=;c6_@9*cA03gsT#NBPDe)i47;7nxR3jucnH!MQS%(QE4K_FvL_ zR9UI%PsxMwz*o(VPvcDMph?lkVlg>$y($w zNJ&wHh9QQmemqhq(BKDLM5*9nB~rC%$mAcS>X3C6<)`X1RX?ziIti(hnR*J@fNV&f zN}fiZPM(3(nacRD3`jLbsufaaaqpUtXOriU=aNmyW@K~nJhBB+7b0~&QWvPja59GK z7o}PvB_Cffg<&i;=nxsn%-V2vV1DVwf`8aPd;4E~9aIq_^c_JEYpvxPt6J zUWwGzG_FFbqcUV)B+qNeYei8%b%v&{N2)tgH&E|H-bmg=b|$+h(&&oR%{0`@e^hSW zNcH|7Wvlo9DBi9p`x5%AR{$wdy#h$FCsKDJbwBO9kW%me3G%#$N-w1Djg;P0`jCCe z`=ruB|9(h45ZV2i`XKobQUfCWVJZWWdL&TP>PQVj>T#qb{v$P5F+9gp6917JB8r+| zBlc5BjX~;Zq(&e$l*%(CXFreuOc-Wsi16(|3M!nHHA66E;)qC zG^A!AHJ!S||M0q&nn{K6KPB;B{tKYqAeVXzskf1ugVcPa=F(@Lqz3oSsRdLPiV~J^ z5mN6W^$zvLqVMWX`#o}rD8bby^*&N-k@^6sRY-k^)C#1Q(MRHcwAM#dR*Di_(NZ5H z^(j)TsedARxZTgFtPv%cU7uQql!SVu)+4onhQ$By-Zr%nsjraQL|x*4R1b{*DaQYx zx0Cu7DGRABNd1P?cS!9(YAaGdAoV@h-6rdXwecgB?V^P1?nLTWq<*6QGr5c0P5z=7 zUL8_WM;@;jZaobu6`}2s)`OE#5M=ElY5NS{Ze zh3LVY|MUe&UxD<6NMFpPmPlVjqm}ps$0FSt=}VEmgnFAQ`ejruC)<+kq$Q-=OI3um z(E;gBNMDKc)kt4OpN@)A>NQlZC9fl|CvQ-cji>5^`X<_)MGtfCO66wq7P1@C zw;_G2tf+ic4?KN4(%l0)5RtwE=~t2NiS$EA--&czr0+ty7t(h#hkF#G+P;@cZ?cc* z;dbvs`T?Zxr`}I=^_CJTXMgfRQG)(ndH~Xck$xEIN0A=L)JG&W+^<1Y9up<3=f{zL z3F#-O4UP^6!xJ(PTge3pEUe4ZRe4kt&DBgs+Z3*?LBXmSiWmK>+3b`$BB zx%Khn1aczziel7qUPF35(vy&W3+c&7Peq#XKmEG+1otWFX)6tx4_879+IhP?<~4Q;ceU0n+ayy%6blkbaw~izGFy&&5>UCEpWW-KeIQAiY$o zSM`(Cy?Ocrq?aT8A$^vKPY^@WE2v2PkG8c6=`zwEBfS&p)kuGd^e0HKrQ4@Se@0`C z_y<>t^g5(JM|wT=4Wftp@&%QRR`eCpTao@6>2Hyi_>c5vNe!NRrngY}PL!Yz zkp3R&ACcZh{Rh#*D6yT&4pG8Z_Y=}Nq*a?qAiWFe-;iefPfPqq`d4xfxmVT-%l|u- z7^y_%$?^ZRE(KOUHRhR4BAr1x#niN77;n=Cm8>XXRLLXlB3(e*LYnbEZAxlzZ<4m@ z?@$RMbBT(?f24iUgX?U1A2KRz{(;QVNbg7b5Yh*b{u^nD|49EOo?&b}NaY_@1rjmMX(SvrCsY9i%D8cc{)JLW%GAAL^2$_?SIUO0s|4ajVHY86aCH~8A zZ8Kzej$|bMM_X)+%-P7CMb9Rp2kk1u_@6mfl%OqT)an-@(;S)ekvWh4EhIJQ7iBJ> zav|ALbhVG_Ov$uD<`QIhQOL9wJ=`OS|Hxb_O1Q<#@rQ{_TevqP(+;_H$h3zs1eq(4 zNg&e!ndgzY5}A9DxeA#s$aF-e6EasLa~(3*Ft=-~I z8IkFVOm}3|MsG#t7N&NS)NsFUqjI|_VL5vsb0;!)Q12;vcr@>#BJn>`dLi=&GWR0$ z05ZLixeu8>^yw=;Vg8K&nSP>#`S(X=05TH)k$Fh;@Q6Q5WuPcQ?;`UkGEX8i2${!` zk@%0yU`Y+z661eH;(z4-6f(~s^E5q&R`Gn6%5zneVaUuyW;imhATt7)vB-=>=0#*i z(enlI3`;wj${10C-eYDQGUJhXiTcY`JQ@Ep6GaIkZRS;ErXlkhGE8rF=& ze`KbL5}r-dk(rGQ<9}ubQ)iNIlC#7!-1oPr%n>EbZ5}c^k(rOoyT~j+W)U(A>GQVu zgl+O2DiZ&rI)4wD_mNpbeW~a{Jjr}OnId&l^l*!e{~5;r@Fp4wH_7;)Vf+u<(!Vf{fWi20F#ZRnG8q32iT`1p7}a6a zfl&j-@i2~taSV)_lBZEie1eu^982XmQG$8?#tASgVSsvt=)rkpNc@L!q9{QGFzUi+ z2%{d1lVQ|n>PeCs?7MLa6^Z}RwoZl77>2}u7^jnr|AxeW7>&d;&ZA>6{u_+{!CMZD zb6{Kr<6IaQ!)OYl1&n4~t2rt0KibOqFj~T3{5LKXJvchXMf7YXN?2p9VO$2|66$Tp zOC>evZy1-uxB^C7>g~w(k{TQZqXU&IMG0p48XaNugK;&C8(~}n<9Zkp|6yELWvv^i zbP}cbFYTLPbcG@DA4V6^gLB`wnaVAs#D5sK%K2s7M&3?#Cwq{0kn;Y28h66Di^kpL zJ!CKPUa~jYhwQ6J<31Soi>>0hZ0i9SkHF{;V*m`sf8!x3Vek(T<6)L+peSJtKMG?o zj6u{N6FqDvk5hR|fs zGm^i=e;A8M#(zWNKa6)3qZYmd#yS{FVSEJReHhDNF#a17|D!rz&b3yE61>IQSP5e_ zj8)V>7Cq>-8lO=4l>CfbL#|bfa$65$Ba98yKPSJC)bLE-1mkNMUsC@{^q>b~d_!fk zC}FhO0>g&!9gN*Dw!-+44&TGrM&k$Z43Ft{7(c<-L49Wx{bwo?|D$953ycJeUty?P z+QZbnhiVOZi5 z)~AE43R5n!D(aSC?1$mehwsnQvoQ`(|C40=H~yx55JnjMVH~2uxRE_f z?5xCpWRD<^BqjbMTaBzv)*z228UM2q|B*e0Wc<$_r)>38pCCu}1Y|3b1yd_T51z$j z8UM2$PT3P2(r)6c$6GOK1L2EA4m2HWzZgi?2}^4 zp?r#zDWJ#>m2yh$JxjOeBLC;PI1Jh0G)6@FNG^^-_Jv4!k;-UUlzhe_`x=#T$i5W$ zyi8?0vJ+@bBwrz4Rg|A9hV14fWG5s04(%z(zK-l$w5K9FP29w1I_6%faQhbw~ zh3sreQn{&qW|-$3Wamcy^XN7o*#(iZ5ZSjWE(#R27P5<}yo>B-$nyDbb_uc{A-hy% zi|qT7xfmZH%lSW9&i~0SM|Opr5h|5Lb|u|7|0gT+f4I0B*-vPEDoW_N2HDNXuH|;u zk?Y9~ArM^>GQT4d|UCL%jY&lH&^ zGo&GZ+zv977L`ZtPM#D6WQ)kPMb@O7h1~hb+Q^-btb<$~WL@ed(nD6Q>(efi`^Z1Y z{mA}>>;c+;Dysa2vZsF|doZxoNsa6wivNbGxxqH;0Wn!F@RZG+sUR4$8@%f(PNpKBK>?UB0zxtr+L0l6z9{VFOQ$*ak0 zkh_+~b>#Id=M7{hyF$Vw0lUO zTxBR#(Nmm*%+-09yBj$b@b8gEo9iV_E9j-e|DTioe>l#cn@s;Hq6F99+*IV=KyDiK>7ti~$ju;U zDu!=!%FRMVNb(c?$$` zYo&&z6|IN;G;$kYJ&fGv$g4B)3*@UKw-LGR$ZbMy3vyo~_YHE=|3~g?$tUQC{FeU$z`a&l7;_JwjgkUNOnPULnW_Y+fpu9CW&$}i-vqDxWt zAh(wW@27IV(~gmW1IPb!GX9TTf=rSrMH*@3Wd1*G1Gy}X9GNEz$oVviq=}qG!zLZl zRisfuPTv14izISo>idwBc`wNACl8Q+D$@81xxfEg3%P%gKN7h^+*9`d^X&iU*{btL z$i4?-uzB|X^VLKN`iJ=%$k#>wXyi{oz9#a=B411L$xHuVHYc|9|B*jll%W0OfqZS` zE2vkBuA++gu>YU0BTBe#J>*YCzCQA&Ab%2lPL|Z*iAlZzm4>1O|K!b|hWuH`pHBS@ z@=UUkx*bElvD}oYeG$6}bzTrv=R~%CF3dg1H${F7^39MRj(l_EhaxZif8<+`?EmL4 zK>k9tDE+{EOXS)47rPaGE+$)((*H-k4f0)(zf{>=ybSrvX|zTD$_n+;=6pM{J$VHw zpMa5rmA{IM9m%W7YmmPI`DUbQQqAvD=L_#~knhS( z-;De%G`f+uB0muM+mL?%`P-52g?xA9*&E6CK%V{od{5;WWWrT=3y{AXd5QmFY{}ot zq~6G@o$5ooucY#=m0aX4K)#<8NouCQq>8~yK%SR?`~c)7{>yvM!qi8QS3C6t@`ECU zmw^0Wh{fM>2JkV#SX^ zE0Xw+{Af|amOmEx@yL&({t_wiKfI#lC&1i|{6y-nkgt-jp>PHAlaSws{AA?Q$WK9j zGxD#?yV3GfWu}vw0+*kL{B-2kA^!&QOOT&|{CwnR${aIsdlUItG-i{0V|jiK?YZPU zMfs@-W8%L6`GtXk{M*PcitKlgUrdL0Bjr6AZw$Ax6#4g&UxoY!^!bonMlL5;DAM={ z`ITa;`CYQPkIB{KC*-H(XXF}18f&F3iT`?X1Nk}mg(8iO$Zv}5FOmO>;@6S#jZ~N9 z@GbH`(Aa|fcQm$=-z(DC7I>;HBL5?~o!mk0B>4%j{LjemLOzE4Zk|EEkiU|9cs?@z z=T%dY;4dBc;B8uR(y11!$SI(CnN*2DFZ(Nndc|K@>wc5lAnOg%fG;o z=O@7OCT)x4E8y~c1zcWU0f#(40hafW_mP*6f5~o=$p3-DsmSkFCnoX-$Un)y$iK;h zW6R|GyA8u>W6R z|G&Wge}Vn~0{j03_Wuj){}-hHk3t=?E?JMPPjdXH!114gjQ>z! z82<}rpunJA;3c5YNKU{)V-(J!!T4V|Te__3C18bfP&k)HQ&Pkmuyu-;+yMG z=m4_|3Ri{`J_}c=!-|4T0Y%|z6s|#mQ#T7T1r&wr$m>Z?0WEL}Xn|8e3!DO4;1tk; zOaVoqD=AYzrCAobq4+xrx1v}Fh1*d05QW=OcnO8>C=5fP2MPmFxC4bgDD*^u^E?Z8 zqM*M2sIm&@f2w@A*b9Yd{%4_gB=$u?rh1}q9}1i}TId&SS}1yd6lC%z?T4bZ9!6mZ z3IkDi3OtsGEzHqxKtTF*yo4d>zr zawH0)X^bLYK;cDYM4n^BmLiQsVO(G{=a*4fjKX*nrlK%`4iizBgu*M4|EnmxCN`^! z4wF%sLgV$ohxtrHVGat@QFs%DH<&sjNJU|$7_t|$B4sum-iq|OC@iEh4~6-W&w?P8 z`rG6p6y6C^ncKS*-wPBJmT++?3h&eSAkgW#422{L%Tf3Rg%v1#g~CTDtVLlZ3ZI~` zD$3zwuDDvQ5-FcjQI)nPP?*~~6uzLo9)%4wKL0P3iyO&J2p`~EcwKcMgp3g4ly zSwuM&-;!G*pRJMpJ@svo{v!%Mp|G9ej>u_TC8AS$BpE4hcu8&3UYx!;V<%U@?hk1h>QOUi-#%7Pi?Vy1d7!u z9*N>nG^+iV%EcPw(J0mwJ=kLL7>dV|$Dvq(;_(0ddZeF$;+a+S#webH;#o>T zu?cy0mDF>^mZYXAHVbUlzuKB&DBSLiC_awj zO(@=rVrLY)qu2$-ZglI4;?034igF#HKj;4!Z;N#P1wf8|4;1g>T6d5=QM@x)g^PEK zEoHa|#a@BU+kdFsZTI0Qbs*PzBv^~~ zAQT^qQh5oGaz4SNA>@-NK11Uv6rZLsRIy49&r*Djd_G7*aX5%nFz%!>oi^ zm#fz%PbBO7fBDUNFzZVWveA>oP<3ve0`oK~4akNt8UMpniT^OqAQ}Hdy)jG)@-WXL zc?mG(5&-j@Xy2Q{Y(b?N%;w6VeO{IFoKNKfGK~K)FXCb=@?w~m!fZ|Z5=9zq#0V0k7E|&n9SHM*L|Lb5%{HJmi*%9W|k#Y@8xhPaA)%Em|O90GH;rR*jAod9<@U$C59a+e`oZi^gYW-Q_wVL|Fh^5)2<8B}i!>i52a=D#d=926 z{F5*T!F(L%V=xCRf7yNYQ}19mpMW_eu;ngWHmZs-l*ZHHZIt;8%xA-Ua8(vWq+P7}AtALbhrXNV|A@J()O7AY@(hWQrE zcVW(!$F+VGCq>QskjlBm`HJ&9fm%&^r&LX}K z^8*?miW1iCa+s@NuAu%Axl&TqPyMCT{FusW@)MY!Dnq@cU*6S!_VEtsTd;F*+}g4GjdntFyb$SkbxFmtf3;la(rs;^1~Q@4Z5krUFyd(w{K*!#q$~^D~*`W(23}>4^s~W5tu&Rs0PcKxq z`32U|uxeJQDFNy$6|Sf|4}8CFABr@(4Z@#Fl8 zJ%x&891yckg>{;8t~l61=9;Q6ty^cnY7Fa4SdG-8Bo+T#GWE z4@*A&UU~86%4RbwThxJdB`kjS-MXss{4dm_Kv+B|LGxCj$+{NSb!rt@*OUDIyVZ&I zjil@~tj=T?vMU)Jqg!ap`~P9_`|s9mwB@{zpSqM-Jz&Y;zXXlo3S#l0fW^UoOXmN; zlJS37y~Hhej$`$P)gM+LSogz{@qbwNNvhgkvHOt^h{Cgjix0x$;J+o$f5WGo)* z{X7CohovfTIIKaio`UrltS4X%=87Eu4`v}+9RIgu{68Frx1NUeEUcmQl=1&?R-VQ2 ze~Zt5tzn|81}|-U1gt%|;TUcXY&4x9W`Z(6uOXSPscya+M088ROtnK6ul7s&i-)R4?7`|)NlK2lxQw*OFSqa!j!AinXTU7D?FIbHK z7URFg_-|#^Lv~m>Qa%9#t3Vb>le9>ibV!#hksj%jWpW?+2f3d-0P9a>NKkG2CY8Tg z+JjX}dkD4)DSZBGANK#ceS~=0M~d>@&$O$-J{ER$*fn9-pmMaN2Is!b=f8H9=fC!G zumSscdY&Mj!Mtd@f=Z<*swK--PK13Y>^iWUz^)5h9`(Ym2fIFvlf*N)p4z9tJ{5KY z>J3E?%XS(Sj{nFNjBHNI z^WX3rXSR(0!{+=?TgLxkw}gF*I#pp`M7Dx`vGjs$`Tj5LOJMV(y>=Ve{Qj>UegD_K z9CllI3NLQ$V7I3s-~Xl20XDz?YxDcRHorZgl2q%p<@>*|uO*}J|Jw5XU)VRm=J$VX ze*f3LNr}`u!|oEY>EG{`TRF{qG~?``!U!9 zU_Sy|p8vugSS2?;FShyoH<;&d4~9Jiw#0wfoc|NHD?b0V<@s-TCfY;cya4+dII32k zh5Z5S=U`8O{XFc^u!q4O341v686j(_h$ne6{@aZIw#0wQO~qS#4D6R+GydE1{5RSu zdHxG~d=+IP?AKwx0(%l{KL52}lhk0gk3E_GQ$z{+jrLU7OJGlzY_V5|6_RHv16X4Jz(b#G{=VQ1vM8S3m)NBkSrFtV@C_wKAc)`D&QOg=Xf~B!a44LYQQ-G4*sVG zoJu%#;M9h5;{ViuQx{IX|EU4zBsizTIT=nvIH$mA@IN)+oC@c(um;rsywv&PoB^jX zoHOAx`fvBuj>9<%P7~R8RZ*%E)Hetmp4ZN~a!j43aL$9%3{G=79BNvTsya2Mp(@I` z7|!`{TEe*i&V|yV)Wt|0Sv5=0xd=`xwWqQR>fov`qdBda+a++?s6!u2_@{CioOW<7 zm)7pImBXjngV^oKD?|y-9p_3oz2RI1=N32};dF*`HJnaxuA%3(eYLGgV@OIw&NZ>0*TT4EoQM+=73OIJ4l)g)^J_TjU%`4f;{eJU9#C z%%{FU^kBZ6^EQ=5qJ&3nF`U(K-i5P_N$L|dGzW~eO5PQ2Aa=!0`^D7+A|8&^D zb#`$r39WFX{~xvdJyiCJ5}vca!%4x3!O`KwnW{-@&_{I=RFa~w-nf{C!~VZxa4}2f zlmnbRSs;s~Nm`^0R~6f#?UE(9Dj0fj{(|FEDUS3qX&)f}RFvzBY)j^U!Z}F( z16M`hLvW9P^RFoGVI=322LA4mRE{F6DblD8w+4-)$(m#>@)(k@m~)R)w(O>RJlqqg zgRF@3O1QPDoERvy>yq`z`s7K9LHW6O3fu-X8j`2NZ3Oo;+NYCekY_5YtqWz>8pAz{ zMw3W6TMQ}QxzwAI&B*5Dd1MRneDVVFLb4@!kz!c4?!|DggxeZ!JGhs?y$o&}=6|Ua zBZyrtUT>fO|Dl8UJ0zf0yy!mH01hTh{GF z-uR!w#m;cM(2)2adENqlJlt+5y$knNxWB`_4eo5Xx5FI#Vi;r4*r3+^3o?}FQt zIow$#hr6lVBTCS*ckhMU7jAFreX8iv|A))??=t?o693`$7auhqDE32epMpC8?qhHt zrZSLZ{C64uUB>@nE$WQ_uEc-1(*K7$gnUvl+Q+BiJ_~m!^=GQ+&rx|^l;FPA9S&F3 z#t695)rUJ0?kF14|Bv==G~97;$50EzbgLW zF=hOB8UNiWqQ{im>u{$^V^EP<7N^6V377qUSK@ydRopk3+bmInD~qdI^?JB-;C={q zF5Ja%=fPbFcRoEC|HHPy`0p;F{*L6Jt`}<5%T*0vDctv{OZ<;&kMZA?_#bU+8Qj%y zm&08Nm+{|a{AWiLF5|z;_#c+-6S!;Oe#)FblYD~vbayS4byafS0CyYQ&*6T_q%YuZ zq_IhSf{5yV1$Q&tuc?0{dhoqGSK>e1EhOW=yH#xn?)S1eb;gPP1KeG3e}uae?sj_a zkQ{>lIJk`euEhWFI^ynzy9chsf4IMj9v(Z1|8Rd3B|Q2ulv=}$qjVxv_tJIX>Tt7g z6L8aTCH})riGO$$GE@vv!dl9~EyB%HFI4d~saT{fx;kF!;^n$1)q-0>sRmq+slgdk zroE5+gWOMY{-?|NpDyQrx}5*%a{i~wQAGEUDjrL>(V^FF7NgW2r7LK3Ag?6(A>dL++A@BE(lz9@qF{ZJZ$(v#AP)S*=8wd~{5TyZE$D)@JlGOIIA%J!VBsDA2f zDh)$vBuc|s@)6<_^dw88sJuYFNRB2Y{)f*pO5;$Pj?zmgy@t}uC{09ZJbfmJPgtLf z|0Tx%AdZzLq4YXRjQ^!6;u-2wx$ZPkf?h%C4V31iGy|nsD9vQ5#Q*S}6{Xo!*n26> zp*@$JCqBVlWN86Pi%?ofUE+Tjb4n8bQCciY5XVaI!9NP6CGZ-dv=pTTN~!_>fYJvj ztwQNTlvbd$jB72IwbZzTQWSNcE6T?xZAED{?N3O?|I%mDU?g0uL1`_Gb>w<7 zh$NrW=J-!(BW?Z>xFrAoMM;K$P~x9|OEUO_(q{5oatj#^0m;$-o?G9hDBUwD+m9&i zMQJ-qKcgh^AElk-PvWEYNR6+Sc2Qyfzr^@olK79(9`OnKZ>8T*Qp)etW1@%oYgD8j zqNAULr)o8YQURqjN?DW`|4WSjY7&m*oFgUvNBI=tsq!=aml*#`68}+B|NokelKTIb zVo4gR7#^wqHKuI!|1ZUTD5+=t%25CRQdIx{QdIx{Qv8ejn> z{BU?j$acLWrEEbf^{T;Z0Ixc{li<~0D&xN=@gH6-cy-|&1FsG|8LxxK`0p|PdyM~{ z#D91dWF=V}-ifkNhFp1$teT37Y+gNh^`*tC&-bWSs{X#}G5&iJ|HGE-HH3FMyi=La zX`%;l+haWUB>snQxAPjq>j>{Gc$dIy0`EL{D#NDmB>uxYS3HB5=1KgA*Ibm~EcRN! zyAYnle|Q&E(OXiH_z$lYc`?~qG0LqCyteQzrG6PH@jpE8yms(9z-v$a3ekh>pm!ye zt3(O+=xTWT;9UdHhIcJIb)>GN&-LUDWGD5Q4Bn08O=M@X3)z*tnY;zwWO&_Z-%8#_ z-cELh_bj{~@E(PC2fX{>^@P_8-ktF7hIf~AMbz^+MRm$}_sGD7827^K1Fv_WtLIJd z`iAo{Rs-Js@E(TO58i|D9)Qud{K*Z;ehq^6 z1iZ(XI+%Q1Dp~#1&7C)d%9HS(hWC`RnVYJmq41uOZK-w@%#QG$gZCo5=i!ayD#OU( z@J9T%Eh?knz3`s`Z#29K@W#O717B|}izknOE4Hh)^fDL6E6QXEH6rRwr1A>9*Wk(X z-^#;d6=_xeNlKS}T)Pq86tQL3UWYf8#x!zzq`$$%8SrM(cr(&x$@wTNGO~G$|K41- z0lxpon-6aV_hJFOg*+4G`!Dbo!IS<8JbnVkTMX}AcuT0fr&g!2R8h_^apQ=$_aW_N zKdJMNsH{|n0NyI{V{$e53Hd4c8N3XQHSie!y>;+3c~=HR9@h18*C=&G5d1_bt3F60hXs?Wit%@V3I^;D0dm zs=lA%$>0w>8UL4`M3Nowl;=)(zry z^JM%VUX0|)9`vj{ol1gCk|{E+C}+267>PVSDgFN_D*gfQA9(xW{RQs;Q~#9IpjY7iP352{>NrXchv2JY&FhhWnCL;Y z_Zk0v#(z}?<>^<0ewaynbs||ubX7~Tt$Oe!)Wfe2|0Eg`|D&}Uz&{OsL+TR$HkM1Zw~)__~%h?A$m|(zQlj{7mA`gDj;!)O2BZzpcMwJ0M2LMA`~mPg!oLIl z)$rAz%{B0Egnunl8UKBW|I$?a8{l`6rlRUW7H^_YXR-^~mAqLo9QW|M!M`2;t<-N5 zJ-CaMVls<#RCv1mZ7a9ZrrApKyOiQF%d>V2sEg4SyVb>HotYD|(p!OH^JKB{;wQ z3D`Fq{zQ~dhW`rupWwd=|3mn%!Jh+v68tydPli7g{uHkJx~vF40#f?_fgAiqRNj%ra8KWbzZAX%fA~v8 z5BDo*fl`LBZ|^UIzY+d&_-o*=fd2{nkGR%KauxZpI(gx*mQz^eFZQR@KT{0v8vM2J zH^5&QX6Zo1a z;c-mB&%#eqPmyUdqlyIIkb;S)vUAk)iqUZ_!uQ~t@E!OTQ*B8N+qp}nBucm~AO0Wk z%hdOY9^8-k`>7ldC2S#op?nPdzfnF4{z3Tv!vBXphr}nS)$(DYln*D55M6c8%126T zRM((#HI$D=xjIv8NNRA-mTOXx_#bYod@RbfQ9cf3pnN=2CH_~G=F+YpD@6%PTRsux zdMMYSURU&>Rg~*fIZ2eDRg_Ob`3{sDpxg%KhA5wl@~J4FNw?EbKApxH;vdvcxe>}u zP;N~9EYZW9CH|v)jwr!7Rc?y%g(x>exdqD2nR=e223MBy`BWtShv!bYCCV40d=d3l zq6g<}xiytbLha97sMw$}22T9;7J8LTu^(NA?paKZ&yR{{sh< z=@xnpMR^#?&!GG~%Fm+w+<$K3%nVT;j`Ap!N1!Zs1pn#EM)`$6L3uRFucAB#Wlr@h zk41SL$}a^uL_XtD=CseUOaWC%D9ilM$bJpwDHJD>lmA;6WljMtPYo2P>Aq!k(!GK5 ze3WOPJd6G_QGPRAMRJ~v@*I^j%5Oz$%|&@$u&qd0fbwFL7oxm~IlTQ}D$4IfKJTKu z6y^6&UJ@vwkL3J*V59sY%Bz%(@-mc{qx=zbllu!AE5j9~R3D?f2Ic>w>P+CTnEwAi zcbhwR?v3}mh^RzDWT~VDX+g9|DSJthEhUO5Ehr?(R)|7&eMv${Nh--srPL!SONf@w z++}9&-2ZvM&bfY{|Kss_JRk4-I`27i=FFMboS8d!KJQY^V&uQ4a}eW45R&sD)qF%X zOQguuu(VbUACsr7U^&(NPBouU&3dX?fyFOf?&*W*gP~NHtriW+T=7gw<`TmTs0xO#79M zY^}yWOM+gJ)bUWeK{XYs*-16~sOC?q`Il<`qMBXE`MX-@ zKROV~vb(8f57q4bZ!IdIni{H6_U=(lk!tc(Q!u5~O{SVsb&bmZ!)mN*i%h287SAFt zOJ0mTo4h!A^6U_K3EcqlQvX#;UYfiNd5&(C(#dmc#X0f_%hn-pKl1k1HJJ5!OkO?m z>i(Bs)ej`E6M6N?Yfj!l zyw>EMtd**M%6}ipYe(Lx@h26?BG*HJ5mriGo!>rGx4^174PmArGv zJCnS#$vdl74c-2WRY0En1VF8qydL=2lf3f~^wN5@^nCILkk^O2i^%IsUVri~AWwe$ z^?zwn+lAHqi^)@lul)bg|4WdyT>jrj@&=N3HF;N%H<-LZAXA1n@HYx=o3WOvtkePfA20)^cm2*hrAi&O(svK`s7U^?_LBl z|2H#aZz_2YlJ@}gX`<^hyEh%mL!#(2yZ118PmuQrd5@F#C`uobQq#_vP-cmOwd3QH zyxF4bUp;uwP<{w`b11J4#<}GEMBcOHEhO(b@?IzJdGcN%Pv-yRy#QkV@5%h1 zyq9a$gZaOQ`M=rT`Q*Jx9a`2sBamMEsL-X`w{@)nWz4SDaN^j+{h5chvP zx&Kez2O#eMc)0)X;r_q36gs929`65pxc~3r{=bL&{~qrDd$|Aa;r_q3n!L}kAie_d z)=1x~yK3HA^1dSP3-Z2{+hyuuZ?#40UY3XZKWe{AOECZUWd2Xy_lmNt`ZnBKN8XR* zt%trrbUiEfF#q>t{$Cwwo5}lwye;JIAWv1Yjl8W`>SxK(PcC_w|9dk3uZ|)$|5wRs z{;&AE==uu9+ezMT^8O@m7kPi7^lvFOqx2sr|BCW|<6#eZd!g?GG5_~GY$@LV=BfMt zYOC@7H&5RGMxMI=uc+?-E2{hditiMY%9uG zl}v~7CsIB``GYC%Ql2TFrTl)B&q=HDb)?ODoaFb1LZay7B43yC2U5Ns^aDiKV=rGH z%0Z%-WgAfb7|I_)`6iS<6r~NpMqp#`Fhz4uEHCqa%HyIS-xTqYls`&24CR}N&!|j^ zaSD*k=9F(idAa{X`QxNi@0YyH|0#chDB5B2CsDo& z3FUDLkXXI~p#0^OAAn$BHRlS-%l&`K%PD~J@~cAxSIO3iay8}uNBNsL@_YZuPDEr@?TSaGv&Xb z{CdiNi=6Mk@4+9`z@Yp(86L8CRJ;NDkKjgd6Zn&&IUDA;Q2uAi>qANWzp8ITruct# z>vmB756b@v9sZw(|C^Dp6Z)UvU$T^T{`@Wq>rwt6Dt%A+f2pVj*lsGQBWMp5dQpBa z6_gR}qe6=EHI$Di?@_);`8?_=NIjZ{z)=f#P^}qwb1Ht;>LEyn) z1Mm>=P_QA`2y6_>PXMUU1Uwu(LQ$F_`jJ#PfeOvA_M^a~!DG}8qC#`ivFL}g;S}}kqWr~ zQxN~J_R<+xR{Y=09|~Qla4r?PQsHbWoQcx2q*Nc3g>F#9|Eulk4y6a!Q*?cIu5ca| z9;QNXDvYDT`Bb=)3Von2F9a_FF9t6GF9qRvh075SP^_-~3Mhj_ z(W9;~m%kkqVc?D6aBu{86F3sQ8N3A?1&#)91=UU; zqXKD(nQehqyo8sb?jWRify#M&UCmtfj&l z=%0(O?~xY1fbwOn%&)1SYWs!?o2c+D6*f=-{$GIq7nJ|2Qsw`O>t!kZWO4!iU)U%L z=8aVN2|1g=Eux#zzLg5foPVamE-JwP3*!G&*beSc-A;vH!Qa5&si1!Ft3>q^U`6#4 z;A7MN`ksL|RP|>C0 zL5Qtf$z(c`?R6K@?jSx2m z4+EQkhl59eO~E6(}s$D zsd$PS5>#vpwgcOP9l%o+5u8TF(-Cw8&j347u^SaTBkn@Qv#8jWiemmskv{}fJX>Nl zHj3v^u{RaZrD9JicBf(wtyj}}QSm&ptXc4Ul|V)L*|PMo#1}{`K|ioR6)!|^5qL3p z33w@Z8F)E3KoP+}Dqc~I2T35kG#I=}8laEX;?<7{TlFE@H+5%MdP2vVNh-q z#Vk95isPwx6BTcx;z%lvqT;&uR#CKL6vt3;EER8uF8(iHO-kFwfp?0c z9kn=tic_dKk&1UyaS}@Jl2ZLNX7L^A0*ID?9hQt@Fd{z$E*9)t3@D0;?QoJGZ_sQ3hQ@&D==n+-+$zq-ab zRD6YsbE)_u6`w`vbKvvfJW%|;%m^w|Esc87YUR8O1^%y}WGKE*#bs24{};voskj9E2wbXI-IkA`EC)XUSAd@? zR(oI-6~Cn7YASwC#m`VG{$F*BwNS+W^#eRq{ECX-Qt@l(--xcS3yR-C`Cb%#)-JB2 z;y+YePsOcN+(1QGeep*sivLq_lVqB`ycx}DM!UUR8oGs7diXD8W8?pg#Q=C z|EX96OP~)1UidN+~MA_Dk{#Aoac)DjENmYs`|1w5;Uo ztt-``5>W~MUlRW}{ZNAcm+Fe5y`ppgl^Rp&Kq?(dCGmeM;Z#yO7;yvekXrc-p)?Xj z-%~9eMx`UD1phA`F1p^!rKZR{vR39%RJx5yM^mXgm5!lOTPiiD(n(Z0mP*G{3I1Oa z|CeV7r6utHlK8(lHcKt3bTXA%p|rK=+M`NspqwI#*{*g}I)h5>sdO5ZI-vAa#kxs& zVCi%y9VK7yYf*X~cs+OnDE?n<+i)l&MA5U9(nu>(Nkd6-D2#E{&nmQ&hU0O7~Ie4l3P4rLk0+M5S@ayb~M`V*X#6D9f6) z+y(t^Q7{tlaWa*rAh=g_v)=ouG=oZ0sq`R~9zf|dDK%}F4&|X*`43ZR7L^`>{wN6l zFFlTUrevCB;r}K0zd5F6Q|VJGJx!(8sPqh#o~6jZ-EQJw?XlLD!l`~3yS|!X)*Xd z_yGw2FD*g*5x5jw2EzYK%MpJ9u23{{@6t*teL%KR3}ccQ3w!bm%Rpg?W=I`YR;X+8PM5H?V$M5Q08^gER{QfUj7HX#!y zh0(^PyAyfUw`}KA4`4@@{c3`H1b=J-PaKT-6k^DiX-a`NH-{>3Q01iTcyOfvPn&L03}peX9uY-z(F^6w!3 zO7e%0KN!kYQmW@a{?$;1g4cl8VhmgdUJu>?4g+rllasPbB{t@+Xl$gZ#V5zn}cO$)7_0Jy>dT zt^9kT+$W0Zjj7~6NIv}EhyR;>0sr?Ol1#H7A0~e$`H!H6M?u|t;{UP-)psTSEb^Zs z{|S`B|4nVPp*$^_W{k}teE+{w!r`W z50pawhamjl7ymcE+4Pr@zmk0TzYqWSKSAaS@KeR=+E+nYEs7bjYslY8{^#UxB!4aW z-;w_X`CpU&B{IeT&Am`x=Kth>TWi_x$ybK|1N3#GYq#__K>1M=v)49}{|os)k*{hH z|0jQol$w5n|NHQNU;JNm^=k!xJNdtnzXSQ=|7H&9{|@C3QB1G?Nxrh>zsTQ9{@>*P zOFsPHujT*#ZY;G&meTV9e;@fJ@@t@bU>+=hMa60heJFt_W-OH{NRl5>5F;P{A6QbV z?@tDC$qy2u=zb1T6gU*v(9@#pz6vr>TrexTcGRE_1&>j%9|e6V*q?%y6c7bRP{0%% zOhH`=4x|A79~>Y{X-5j`qn?9AG3#wW!C@2}0{u|1A=n6PtZ3%yK@%u)QZU!`K~oBj zrQk>kj;5d)N{^CK-RFV$KLyQ2(R29VI0{anpat~fMc4Z`5dWv(BvDMOT2au2g4Pst zpx|T*+EUO4Iq?6VMk8(qivOGa6`V>zM+#1Ze!A#ptKt7aC+M9;H+|TZg6XQ*zASoB(B_DEjCK?xJ8a1$RTgM|3mVr$7<^ueSMq3T99+m4XK; zfd2>6YL&wO1NcAo8Ww+;0{DL*{$Fjw;}m>H!AuI?rC=5XFH`UY1VMAg`%5%x(LcUwKCtMU=;<6DOg6q`xGpp-~;4{|5y9%BPdHn zF?;G`3RY0C9J=_wnK=aF{}ikgMW4}v)fB9y;4|oJz|W=BjP@@m_?m(*p~L^p@$wB6 z_`m6s?+Pe|Hf4 z0%f}>#tnX@;BN|kqhKcm@c-ZsDK%~W6ZwCMV%E3|iugYT|B7zL>K+O$3ieV^qF^5d zc?#hFf%t!Q*#ee=|C^Ufm6 zJ%#5`*nz^%6rM_9M+#4ae!Apn-wV%x(n%EUKVcUN&!Vs^bg9SqTPXfdVK-6CvgcBG zK84*W>_uS@l=hTTvp3I!(pwaL6oh>!>_=f==og5t?{tOzp@{!i_vytH-a+9d6kbc= zr4(LC;bjyKr0{ZN4vaa4>~eQ+O5hA)@PJJRAz;8c|GpuA}fK3a_W| zMhb60=`blZ{X87X2vHW~5s##B6ooe<7XPod7U$d${vV3}Q#b~^U2;sT#!@(y!f_Pd zP2rssPNZ-=awbTQ84r`7+$D;>atZID@LmchL!TnL{=fF&eNgTfMIYng0~9Wza2kaV zQTQNAr%S1+c?Oh+!AC&xe+nN19|vd3oH?8Y;*IX%lZc-JXM=eEfA|dIIpAFISqfi9 zAn%8#@OcX7QTQU_7i9d1_>y8Zeucs}AihfBYZS^e{}jHint?!mi>+gPe3QZj6fQ*k zmK?c~{I=wn_#FxtQ}`~n;yqc=jAYFJL->Cv{!if&3YSv&ku0nJ)NYlkmg$(n>d!9`y}{8z}si z!XGI74*B0pseV!-TnA;nC}yPnNa0TuZiFuWUmcU1p=<%wfvMKJ6%_xca2xoGJb4ms z2X}zKg1>>kgMWZK!9T&jz`wy=;6LEM;BH0vQ&+y>UMeRk+()76x*7_73O%e>A0zPp z5YK;x^8BatfV$@p!vDiiWlBBL+K9?ZuSi_BMAyAnjzbauH~vsgQ8`Cto5~p~r%?+3 zH~B7 zQiHI392D{Y>Q2|CizadbE^VA+xn);xM6d8!C69@+nk46-8~S+zvr|u!Cf( z9ie8k<}N4P>dFRPIgXUWm^VUGMAi`B3_ReMMI<94lWy<$iM8Q2nX*&6Y2u@-8Z0MCI93 zzL?6lQTY-oUrpspsXP!1UPfj3e|dn^pnbJ`1(gR=c@Pq=6y0nQ{J#wU*H=2_p;W$+ z%GXf&dMaOw{Ocs&^y&>z;QwY64X5%*DvSS9`6gt>5Z?@n|5JGs2>&mO|5r!a7%JaK z<=d$|p2~M1XDm1lyi+pOpE{b#6R13y$`hea0>%HSd^dQHVs%T!|EYYhD5iz?Q~6OU zPo?q61^W{1uf~P(jdfiC`U?yi)-fFk~1ZTZ(! z{*B7tQ2Bc*e~Z%Zq|~hI2Po^n_235C1ofJW@{d&Bh+q@=6Sx`N0?Nixc`NucxDEUT z+z##le^r#;mi*tT{3n(Fz`AxSnwfC``93)WMVKUvFxSbKeGA?AMgcrZl`5F8@99#>IA zicX@a5k*H))R>~C6di_~Cg9oV{c#7cvQFD|Y3myly zkWB4h(Fst*|IMr~YDrN$ids?Bh9dEQicXeNeH=xnKxr$A-h)wlicX`b19Ukxm^%p( z{6B*KEAN$hI#F~5MV%=+pQ0`lol8+yiq59!Oq7bZv;Gz%691>@98vV%jJi|Qi=rOT zdy1~db|n5!QEyR9d-_mxF-3hT>QB)HDD5YuH8T-k2wo(L_V(x!iY}+S zfM~cZD?3#DpQ4eV_`m4OZl!1xMVRVGqba%-r82jv?vdLm8b{F`(8r3deLE8Wr)az= zrX>^EI*6i4R5_BOyC~XB(cKg+q39lpUZrRDKLd=z{Pd>ot!&H|qRp9G%*XDiBf$-17wdgmxsx9C}l=20a6Pto(W z^cSGK2)+cqOwlW{f7Q)i^(TG!8bxnW^g2avP&6Mo;{Vm2c@xS4QB3bGq-Zfk;{Oya z0^$GByNKVbl?nfkK7jtA=xVR2Sy1#5MPE>~l%kasEu-iYip2jZS}r+ywh*m=@~J3# zz89^cXbnZHp?@a2X^;3nMQdv*UsAM=qOU0WmZGmw`i+$8-)BYQ{}g=>{vf(Ow?^wJ z+DOp`=s${Xj)F~4eiFs3aSK)A6sbyfQ?!+$ofQ2{(Qg!OL*_5wc5nyyt73K8-=X|b zOZk(cT@?KV{cq9DdjEm)Z>`Kd6a^IRrKm{JK9tsg9+(FUiq#_y{vY|Gm|hJjs!&u$ zW+b}4)~>++D=|^Dn^h82Iglzzs${8>qKZQmTb8P%B}Y4CB?HA3MZXEKlB3H0RH*}f zKhgEJR0s-#b-{Yz0gBa}`c!E|m4m2q2vrV7srbKfn98A0F#k7gZcLTKsRIA6i2qkx zh53J_sVMp$QKcDGmQm#>s!XQJ(Nt+mm1C%KA}VZ775IPUIDBjY98applB1s5l{z~@ zIRoqjb_TmB8mFzCNtL^(BK}X6v%zkl_&-(71-pYi)YOP7J;7e!d0=nwe6SDLmnzp& zdNs8hIl6g0J^&UlYE&3qGeP{V9vg1784N1YZJQ244YR1z!VS2j_!&rEeg96I=kk zMU{mrzzBaE$|C&{G5o&*|2MtyK2?@b1^!=w|Lbp3Dj#7Rmnv3|(2uF|GgX#T{vVtnBsUrSQm6hNs$;U*RD&qfCStE+^tF=`5iYi|~$NXQv9jF5TufYFJ=66(C zPZjuoMf{&C>!cp-?UfBw*+LcZf2wQ*;r|u!f2wSjOg#&#C{tC+R#A-0ZKFz_D!)+W zZ>nsk%1)}l|10AERQU~r|5xDuW~o1+i~k#!uI!@9KB~a~E8_oD*$wUi_e!R|YOcWl zE8_pg^D70m>QJS~mP-}*e?|PCDghWOqozt(>{^0|Diw(>3ygtrFaajP6ljBK&;c_- zwG~oBR@z|Ygt-6A)_!aqz}EiI#sAq7|7T15pDpo!GuyWggi>FKy};JN980m)fUT?9 zI)tsZY#qwh(QGwjt0`NJ*lNO7V=N{9ult{^!=Z@(>)AeAM?z@^9wo&65VnqC>m;_C zv(MeJ4#F%+^)VhX|Eph&Yt3jci@R)+)BH zWosE**Ri#Pt?N;G12{~m_K|fXI2;_omOTH%mOTH%7T*79-NM$xY{~OKY{~OKY{~OK zY^h}@AQ;0Ip8pZ?4z|WZ948dzPPWENpw=ZHCxVl}yTH4_d)Rt_t;uZN$JP|K?!{52 ze=DlC=zg}Q$~{umA)(rWmuJzQ7YwHoz{3!Ss z_&7KdoW<6=Y(2r&%WOT#*0XFq1${PKbJ$Wn|BT$DR;$yEx8_Qq{?vn5)^lvVz}E9d zvF6D){&H--D2nxxQ2hc+;#b&Oz}BmXUt>$P{B^eG%SY8tMcH3(u=S?IYO<$w>n#ba zg={TiOWyw}y&=jwLe-P%3dMR4ioE}UEqVU~0(k`lTk;AB^pf~LTT6xbbtGFKv$cY) z<(~jJhmv9+76pV<0^t<7w0Worv^lwFu>3bu4>w~1mL zY&%=K*xG?i@qf0&|JnLoE<>z8z@4D_zf?;33;bKCdQueef40Q`t99;SD`0CcTOM2c zP%8ef|Dyq0c_^6wTSc>!RbtDR#nqphLIDigJtFUPx*`CEkH4O1e9aUvAPKAfd>dh zKM<@B9wbz)jbZ*DJ49+zinOpH#}4CIBgBn`rfp5294^%RJ=Tdi8j&(*p=KuJfkz;2&`Km z|8wkIp{cnCl%8NOqpO`8>&>y7Id(qB263zp$1dhrUyk+X*agV!Cp3L>A(V@RrVlUS z*yS9%6#8XCeDB7w0Z;~l@PB=z#IEGn4ICTHv1>U7|Bnqp&eh;h@EW0M^L0?*|EAxD zacl&~ZiGHuXxerYl#xQyZ?|yl0gjF0*m#bO=GYjH-HM#sgr>IJq1*wE1;>GR3Qau| zI5wGM6QNH6?*i`z?-82bm;&Wq@ILT_i=1Cr~)U4$gx*A_7ZYl7Mj++3gtDS*(38g_9n;v2mKA9 zY0m;EZwb{2LNWF>$3EcLB96Vsv3H=nD>S2YF_ia(+R0-da%?HbmO%eVXxgw0%Ev;} zOYr~L3Q^24xRT?yb8HpI`*CbF$Is%}XB_Xyu{9i5M;ZJ-2LF$Jf!fq7fQEDID~>A% z_?qK~aO@k76*%@S$98h;JKms<^zXqRz;ztk%CYr`H-JBa8^KNBPeNI6Gpl!cn;302 z@y{q#`|B43+p9S{IQA=)-@xC&KTN3_s8Z*j9QzA_{KsAdyTE@q_Ai3nRecXW?&a7% z1T|IN!^gb*Z)H}K^(t`;{!N;F>)>e;s0^?fBbS$%u?|GIQ-wV;YyAV;rL)I1^>sr4vxeBe;o7wIOhNH$2pG4zZ&iFS(2#& zMOpAkj${5GpIud+=J+!xngdqn|M6$#qtx&`$6x38Je0lwV*Ve;{6GFOlvhB^|79(& z$w$4?_pD*V4GLEamX9>qYKtF$2 ztDoWj@ui|@hmU{E@f93jj!gJJ?l5!wQz$FJRp4syGjI(E|Bu7}o}-z6A*weyaVdsqvpV zu8!_)9RHW&zi|8yj&DcK4)9m-H}H3%x+GML?*#t@{{sI;$L`|zKN6_EH9KWD$M(j`awc{7bVdE${|A4FvUbePBi62BTh8oL}Mt23H8<`4u^7tVqG=M zmHZ<)aWp5IAwEi|F3Ckd25b%<3u?WE#CTeR6DM$@6DLmO#3`IOi4(0k(Gr=hgl3JH z|0mjrqUT+SwwySf6YY@M9_#>~3c~;KALuyI5y}}tqjcuPIh^RiiL*G-6{Tki&9pv}!OX)F`@&6GJ&M1k1wz)uANy zTmxPUUI$(;9iF%W943^HH-f{#5#UYWNKV|0;1;1|jsiyuWgBnf#2uV~|0iyj`c11a z|4)p=8t(+hbK((BOps$dfmc8$CLz8Hyc@g+oD5C@)h!^Ee;;^1I2C*VoCd1@P^NOG zbK+r6Jj96^@=+bgnmUk#N0Igz_&7KdoCQ7sJ_$Yr&IWP+E%6K|=HTO8Q2qZGRpE2s z^WZ$8USr}#PAuZYOPpB1iI+L?KTf=Y9(Wae4SXG(FEnHO4JdC4RXwur-U1hbZwu9( z3en%;#QU6p|0mvqvRG(({sT^Y%nA5^VhKt=0+)izYGuOz6Y&3yaK*%@oK$|Yk`upk zVihOWabh(mzT(7ZoLI|=HK^fp)Sz1k|4+dG&Dy`_#CM#4|0m%8Mu-0=;QvNh&xtLZ z*uaTRocIwnZxotw{u7kV|EI`?tG}(#e+IXKzi{GLPHgAI4s+jFUmYiYlaK08P5csn zaH572J2|lni~PxnzYzQ_H2wb%C-!jSU+BAqYUIdD_k#O`#wR^agq+B8qQr>;N{d3X zUGV=zAc~$}CCZ#ka3VrxMVPd}7#J7oqdp1$Po|*5|C4D>?$1fQ|2diAWR8<~|8p{H zPF1Rr$vP4z_Y6n*^ZNkak333o1lg8|D^aolACf8uYgYC<)2A;5hy418gVx)*&NET z;BjCJP@V|oBwhiXJQ49pU`wzS*cv=psN0-81#M_6)Q+8O&&eU2g#RZ`Md@ka>9XO; zj^G(!C$KZv1?&o*37!R>4R!<10nY`ygFQHT2`77UvM(olak4kW^Q7O@08XCI$v&c} z8M1z-LGl7lUdYLQoa`_9oAPg_u|*egQeOTehqhW!O;nPXa&izSFXQAuPF~JQdHDl2 zP`B_3SxR?85-)#94(8-lqNtli>R0x%rSN~e`+}43|D^o>my`1QUrt`n$#I;N-~V!Q z7$^__a8iE%%SrkDFDG&TKRFWd&EPHIC~!20`~OMY&rgowR?qkgxnd z#>wd*{=IKfodT5dF!%_l%wH+W{1uh?D=PC>ROYX!%wJKNzoIgKTo)&C31DJe0wm{f zvO51yV*a0e4h_Ip04h@-$jKKuIiHg+aq?A8zKjtF|JMmg_`G=lS>eP1TN*|_nchD$H_?I4RHnb5frF=cGLU&q;aypObk0Ke-3-UT_~+1A1T{EPzF@1o}eLVi6z2c>Oq7EEr{MqE*-{RtvYg6DZ7ElX_W*DT<0n-|6g?MB z?a!(DoFY!u;}j#mu29dGQwKmfP^iB0P)r@fsYaYS7;ys-^Z(SLh#Ly^89CJ$%3-yX z!`W`jsUtY`Hm90$>NZXt$*I1aYR0LSoH~kA$6}GAIfeOus=0hrJtONqj#DRass-ZX zh5D)|bt06Lgu2I4tvJ<#Q>{654yQ2xPhtL_g8!%5$`m@)4r~v008a%^15XD#f@gr8 zz|LS7uq${bcoujz*iESRi>&2bw5_|)^mb29_2yJB=$QYTJ$OEpK0>2hz^SV_)sIt` zajHM3F6I>G|EY^4$LwXy|5KNWVtVOvP7UVN0Ms@RyaF5~i>SZUl~TV1S3$@8-}Kv1 zPTj<*YdCcyr!fCdU5A|O!5hF~LbLYaP(}!~FQrC8xf#3#90iUBZxxz#jp5W|oVuM; zlR0$OzbBf7qpOikg`gPgjTQ&Ty0 zA4=~RnsM>~lxafKhUuJom{SiypHWMH1j?gAS$2s)^r)F~M8BWdO)Ki>#0{W9e zeT|%&4drQ}>7O~AdX7_bp+74$W8irx^Mqz!zsRZioO+23-sRLvPQAyerJP#KsSi2zKJq^h z>X~P136zh7rnSpB^$DjwhQ3^Awr&NKPle`qU&X19K8RB#wv|!)Y%60AI2Ca!L}poN_DDry+Y;()e>={0 zitPmSq)_*y4ga^(qUfHqGi(#vF57k3<fot8_mo``1#K?E~1Z3%#BYzh`IrKq&Qv zy0`6v**==>25dKB`w+Gpu?_#X8%oaJ2FPy=9ws#HQT~4<+nE2`O+`1gHACi6LOojS zW7s~C?dEK^VEb5<9w#*Q!2j(NL^0cb65A)U-4dCtz}7-FA5gU0fTsveAGTxrOSapy zJ(lebY+ugysciRR`!u%CX8UxuJF(pnOPwLqW8Urzr3=^8Cavh4HN?$35_w)?UT|F`?pD!l;t{e-5ME@b->w&DNw#iHwTvEabmOb`^~k(IsE>5} zMz%+>J)G^4Y>z3Bc?Nix)nC%DHp3XM>-+oX^wU^otA%BKY zpDFA|*nXVtN1;C^G&RqJG7E(N+fO2XN@#lZX|_LP`x&<1V|xzU&#^rhInN69m7NX$ zx935B0hAvCvyI>X+VV4DwqF5X1z!VS2j_!$h}4!J2($erxB$dI|FY$Wz-;69zqb5? zFt*LH6fP04O;_7B&^<5@7QmuV>QScvzZwT@hbERa zMx2hZU6Jig!~b2X^*MS26*W*@JL7Zmj z@PDnR58!lDP9MnWhMca?=?0uW2ssA}^_WQ?0tNnWmTJW5CY){z{V<{0Qdz~};1NPS ze$q#B`Z!KEmGk8a!vx_|7rMty0zSJ zPM-|60Z-v{H%_-j+zxCHb^uQWPXkW}JA!9`oxsju7qBa*&q8pfP;FrPY!j%Dvg&id zbHVOl4^H=#KuUXY`aA@^!SlgBW(TR=l)iw|BRJiU(^ql2Kc_F}^o5+hgwq#cOX2_8 z!P2@1;Qyxo2XJ~2rw1bQ3Zdye_c+tr$=&nG>UHKH2gn3NXz6}Xug!(LyzJt?~I6aor<2gMJ zrFSZt@5|B?puqplD7uT&lR14ibojp+EmNSt|IO&SpR*ZGPi5EP^aGr^h11hGUF7tG zoc@v1(>cA0(+_d_HBQgq^vj%n7&SZs!v9r0>BnTOrf~}>JrnUP@Cooq@F{RM_%!$o zI0u{yJ_|kvJ`c{5r=Zg>aQa0~zf||wT{4PPf6D4!K^tBbnmzS8r{Cc8eCYoZnr(a& z$^!5$aG{)t({F=|z<0oR!S}$$;QQbQ;D_K6@FQ?3xD5OlTn>K1=}!@?kku)tO0SfU z8@oeX&FODB{TZi~y{|!g;Qwj(e;WRu{!(-^dcQ`_H$t<2zvJ{ePQ(Ax@P9ML;Qwj( zzZp>*IsFHxH*tC!r+?zKa+uAi4fB6}noDnm^0UzNXoG1G{;%EMaoJ&Zvh3`~P7bAY zgt|AJ{h^Rh-G-9d>auenJM|DBAk^FC)Q57AP|x(72AsK)okQ3;oSj42Y0M7h|4t*x zF}1<}ohG8_J>nd}&N1vXMQuld&A_9;qlKnz@P7yX@1VDx7VO|P%g*s~q&O$Ab0Px# z^GBy8;#Od5cDk~2GCOVAX~WJbrcPbC(~h0?lBSxZ*5!0y=Tv#r**Oh79qb660d@jA zv(v>iPxYFSQCx{0d(r1C)^{NEYO&Q+#2%pSR#ox9l?%Fazly9T_Lo$I6?=X&r4p?n<1&W#9$ zSCtVGsH&Wi?A*o9&4_OSN3k=OozaNV+YWAZI%A;R&dwbYsLnKdd>r&U!SO<=b^<#S z*_kA1T2aaRm~!C%4(9*P6g2x@@ILTP`mRa0aJ%4dl!f)p(EuYSNV%%$e&ra}{TXa%Kqj;MGDi9$@~NYemufF>^g< zZsg1j$Q&lr^MMTJ|CtfcapI85M`9H>3)Lg^nNgg1pEIL5^B8AT|4io0ZJZg;nK7Ih z%bDA;>>WaNfGcJ&|Igehv7SFOfwilS#=T=c>?)Q z3QfyrLwUN^Qgb--9B1Z2e^zK(@;sDzLbb;gGcR&xA!lCV%&VMv8Okd{lm8l&*TMOq z+OrEd^9E<$l(U=q7hRf}w0Fa*Vmu%Id&VeTZi2P+1-!by6oUgcQiC2d?h&Z1DR?B<3_MDx zuPj{EfaBP04juDD8W4Wd3jNuDiY2y@B2H*}a0@KI~r1ZeMo$vwHzD`w8{;Dei?(E)try zUBd3=>|P4}GNEb104M{6`WSHsu{(s_E1?etuM(Piu4eaIc85ZT|Lbd8_c|!oE1J78 z?l5-8vU?-Dqu3qJ?nrjw|1SLB^vTUw>K37?e>A&e*u~N6-X^-qg#Wwnf0H?m-HBNI zPIkv5m{6;pN$lRk?p@ID7MiV_3}uSYjIsOJUC!?P>^{$~y8kni-3Qo()w|Q!eGvK6 zYt=A=-ACDl|GV&i)56D)`FO3&S?tbc7yj?U|J|pg)U^L;cIUFIkC!>3n|hu_JB4^)D7(_`eJPH{1R_yBm=91H15l zcYUpTeq{G2b~hqnlhADSW++=~Wo~7+%PcK?y9GxuL`H@FAf3+@AJKu@T)OHu7US*pk`%>VzC0BZ?_ zW`9MTRaOuG&sw5qV?zBLPBy_=o3rr$Y)W*!zq0WEtRsrvmaNOUM>w11?8BVRarPX} z*5Pam&hE$ACY;@$vkf>)oUPAU_RLL|7Q=BSf9tU2SJDb>u-m%hj6wLXW{?Z zhEi(Q+ZdVff4xQ7!#Udw;t`yM|7YRT2P{AVwelUEk=|LnzxG5^nE{-4GCKa2T)7W4n?K;&TlpT*=qdnJ^?;8oxd zp>iatc_?SE=j=6D`?VnaUlqx=s|Me|*#o!P)Vgy@|88adsqUM{ySZpN0S9 z-OHREjiuoKrmx0ub}VP%|5^CI(Z?b4PN7jIaCRzZCvx^)&Q3xp{67o-&)&noHs$PO z&Q6g)&4hpK3FSUy-Y+yg`~YXCb9Nf^2ZefWpT$WbJEKXKvyXC44amnh`x0j# z=j>e0&gATqoSlUl;QxBAl7;_gXG4D)g#TyfNNl#^SDxD`ppQ z7T^D>SlvL#;{H!|u^46+*XG#|5Pt|R0Y3tlf_V9J_G84$!B4;y;HTh9a22>3{0v+J zeh#h$zW~1kzXHDozX87mzXQJqe*o8k>%k4+kKjgd6Da?khqIf(Eg((`*{z6w2DgE~ zfZM?x;IH6s;P2oc;7;&Q5O?RYeQcuHh>a>xH*%J5Lbjb+yctsHbqX}|H(Od|0m~?U<$OsH0XdC&;_#~zRS+lLA)Qh zKS)BUkU3YEbM+C|m-z*Gv~TU zpstDJBm6&imb5|pVXhnJ`f%_J2}k%a~FwXGB4rWEu6cQb3-|I8RxFx+~rtm060*nuhDXYICmB2u7o~V zsOMd|Ay9C7GJE72&W+&QwVb|C{>n;oJk9 zo6NcUI5!2Q_XH*E{lyCzE87;Ig>G;_mLcxVyW%ySwwp?FANx#TI9AcXzk1tER)u{mz+Fr&9Hl zbWi5#PBM4yYYd&q&@Bv|#n6=uoz2ii44uQ!`3&j)e@OY?_M`kir2OBrNZS`Pr2GG& zOSK>6|DnrOSN^x}?^O)_A47)!uVd&M^F(-`$Xv{@pUK(?&cOH>8v+n;J^NYo1 zUXaGZG!|0i$N{_V{~Nmh?|sjtu{e#@Xe>cvc^XU7Scb+@8m0Sxn}1ogEH{v61sW^U zSW)dOiR_(+jaAgL>HuZxRDQ0bz>jI)n+svrZI}fPBb>Bv9$uWprP#A*h&uVY-~egdm7s+K>5FS2e`3=T6P>j?o8ue z8oSWgordy%L;2s%)gFr9Q{`SN_oi_ijeTT6Z0xIYKb8BdJV51vDi2b5u*ySJ>LcLB zVWLa;;WUm=gz%I7#)BRi2{qRF$WxJYA$= zFe4@WOqFM;Je$Tjs+_CxJdtMSBd`lp8s!EW7wLE}R;m2oQ2uWy|2LHX8_NHUD`hEc zT&41AmHHFVjcZlEPUZC?O%;23|DUG4QRPi4Z&rDWO8p6lhW`FT<90dI8h5C?Q{`PM z^(WvO`V(-Cd&FXrH}0eH0FBX_IQr zG`^$p1&yz1e5tX@|GoPOjc?SV{BKA1J&m7e{GfK_e{26)Ex)K#{x_pAuEy^)$D{EF z4Kwq~{|)8;-kt5nKZ^fXWG_#1e3}!{RQ_)&|M!qh<^Sd+g6w_nnv>D=XiiSEA;#tu zG^bQ$NMvtjnoXL}RQ_+a#on9Srt*JN`QIXanq8U!&6uY0e^dFtx2I|*npye3sr=u} z)RK$roj=Wj=2SFGwO1l-t*O;AjYxC)8QGkU<`y)kr@0o*8EDQ%b4HpYXzKpIIkR94 z=?PN#zd5Vuz3YPJ>@-)QIfr`ZR5_Q*xmC`ia$c3n|4rrp<^pP2P^I#JbEN7Et6W5- z@_%zN)fZQ}gi1Z5n#%u8<$q~x8Jf!fP38aQ@`_wR<%%j-Qn|87I}ghL&DGSty2>?F zD*yNH3^doKxe?8EXs%ClUG=Uf(vDsEzqz4U?Afw0&CO_TqR34L?4#7OxyatGpt&W@ zJ!o!4b4Qw6)7*~cHi}XH@15<ejky&rwq;g)Uv5=+Rqc&+Y2=>P|JlPd%LOT#WZiCc?r#{XM zKegN=vUfe$ypQHvG)L1MOY?r3kJEgB=EF3V|CR>@`65l_|EBVP?|+d()^B=p{eg_`80o^`7=#@{%bNf^%1an*F^t?=C3sWQC%MaH}xq% zQy&30^$~DW9|1QNZ%1KmCs&X=wlhc|~ zl_^A;yMHbHN!Z?yB}0=|iDM{6otO8(NuG_$Q7Okym8Sp4t>(JVm*1EDaZLLRZ169_SiIR6` zLs}cjRG32}1+$5Kw9TuvDXq<{Zbl^F&1r3+wYF5bl}NLrka^yQ*0z$t=sja=ds@4y zYX_A(($e1yZ0)S))h;5<7uZZ@3Ez#@?(*2BwFj;JXzfXBA6n);-CJ^+(!KUt`-*N} zy={zfwGN7I)RpH??hT>(mILOX|zt(sW^q!sg|i^CYMm7E&;7GL^sCPS@M0h z*4ebqqje6gbLG%9V5FQO=hM=DdZ&;vO2|dD^!FcHm(aSL)}^#A(}#fi$ueIoY+Ydw zCBs#;ZlZNHt!v~vhi0K^U8~Jsr!#y#ts7~X5&fSO?R^!{C_TM(GcCROZ>Z8(%=TN} zh1*o#uJR6AcdBxi%DYwmPvt!-@1^x4t@~)bMr$;!r)k|!>oHmn(0Z8GgR~x!%qFdQ z8Kw0Itw%*M!!+GWxyNZeL2HcY#(0N0X`iI^l-143E|zC#y+CU$t>^UcSpkdvd6P=M zeJb&0=I2!?@ZL(AFRSH2oNh>7+feRB2B_dve;7(w3_y4wsg=sHO zdlA}8(_WPJ60{f7DBb@XZjm|B{eOF@fjrBoUHAX(kXHP}yscw<`&_0azzO)adt^5DB?*H2d2(s6bQQ8O5*8P9` z5Y2F?=2V((A5Qx?+DFhnn)Z?EJxaaftA32iV@29-kEeYS?Gw~~qDVU@%KzTqkSIj?`WS-`#v?A&(wvqucv(x z?MrBz-+vol?1pXHm(sqD_GJpYT==1V1?{V8UrGBaIW#9jk0;yL(7skk-WbixoI)mp zd|GdyeGhHZ*p2p6+`ftSowCrkZ>D_0tVo z9-gB84DF|Fescn}$I^b*dQFIM*YmXBp#1{v*EHlsVb}Icv|pCRrTvP^akO8R%*JA7 z$w*25y1b7c?N0km+8@z2Z`Oyj_3wY%`llc5cWJ**TfhHrYkeSeYF=j4#$v+TAJhJl z_9r@a{rlhcXF6DO8tB8{9(kJ1Ww2k-Hv50GLogkhO8_Ik6)CRoVGi0qVE&S}{iFFM zecC_K{)e{Ve={?`(AEdOZG8mX)<*!Q`lF}P{zK)TD*qB`YMG+a+rOX>e@(Z&Hsm*& z%`df0C>T@MNcrKONklQ1P6i{E$smTwA&|zH0`uh_bN*mlj=AX%Erm73D|mB-qdR}2 zo0o*Rpw|VaF22l_v5OvpKKwQFZ&m@*Aqh+^b?HC~1!T^|4?(W7E7Bwsq;5{AH2+j0 z?TDs<85J-s=oh8XYe{CXMWsXC|1&ep3L~`VSwxyPj1<6ZDrcAX)EJo))`q!YF_;_X zgL%OG_;Xtd*;$$&7LX`uenAaiNKPt7!XluXe{(3w7Ztlv#Je~w1xtYW8>^ipo6WE^ ztOd)+$;q;?3M>aJ!t$_!Eo#8h+e)BUE@SR@W-oQ%tHSE4tY#Ck2COMl)SG1Ur7!ab zAZBQ+16#qmumP+G>r3_ih&F^RVIxIu45MHZ9o?p|nZSB)gc+|4d2^L|31D32*jAGClCzyCY_D<$*b#Kv`|sc`u&eF-CH;Lic8A-R31d zj)UW6n`DM;2vEQ$!buWt_Q@vm-`m3}a1ERa=fi1m9-Izm!5LcROpyjDInNem;~bUe ziZn0tIMO7S%;qCjKMUX@xJ+mGVz@*Une$5}i71!LhnFkhYPb@vl0$RNVqU%e#d|H> z4A;T+vg4IA=LU_{)r1?hpPNLQd6wR8fm`jnZ1$gG(f|L&9eUp02@kv<|T9T zl;Ugt=NT9)7WpVWtMWN`9>;uMUchO?i|{?X1Ruc5@Fu(hufaI;+w|sLaAsb@+--BB z$>4Q(!%44qHs4#mpKKnK^A@}dZ^Jvze5*TKEx_pMou&T=@4@>*fVX_42u;eug1se;>gV(XVGKL$>7AB;8Zv>;7o-xEzZ<9(_nt* z>d&S4b$Omx17|v%>G}0J^TQ6#$fcdx-^ZB|X9UhnI5YG6ug+4pn)T6HVt<@jaAtL) zN1e$MXS0KyjZOcv<1C6Z2hRLBbK=Z{GZ&8h_`kFLd(Ny6%1r}jUYz-yIggNSq1iSV zN^usz8HuwX&O-8C=wB{3djn^=Yj76ESw#Lq-`srub{6?~I*Z{fi?cY+QaI*tNxr|> z2^Nw6?QT8@&eAx`@LVbXuJ?a0IvZS%vmDNfILqU#;4J&A)7jqHaA~9z-OcEvdaXE&UEadyYq3uh0UJ)MQlbLJi2nf?H0F>?~` zjkAxl^}f#J|8x9vWJlrbhjSo~c|#8{TxxCtI4iC0tbaGoK{yA?f1v)R<4pM)pWcFV zD9$lBhv6KFb2!cs&MGJH**)B|pJN`_IY;3fZTQ6OH=M1m=HuIOj>S0v=Qy0>89mN? zaoX8n4t`u2$DI5p$u~uR-cHtqZ_dCu1?MK5Q*kcAISuDroYQg6!ZEHh&Gm@0-~#49 ziaO>7f^#;`Ip&w>ocaGxXy0rnobzxl#5o`50%yDT&Ci)SEBq`sq8&4J7dwkQ>#TJW ze=X{mUoUhn#kmIOGMp=MF2}jTS#zW_+j`E%?>RG>idW%W?W{IJ{{84bOE{bVi*qfG z`D9&(bG@^|f%3^+VsiN8){Qm2sYvCBS)Jq$n@oyjbfmsYS1SoL5vIr}9-C zy-aXk*TXkdzA4fWjwE?orGBN>c~^D48glgSf1MB1@*&P=s(gg=u_~Xa{8Xgr(4;ba zF4?}ooe<|soL_OiQp?vWzft+E%I{Quukr_x5@_b_Cslq{`HM)~;csgBUF9Dt|5W*x z%3j@nM3+4O;*KYZtD|!#5Z!zn#4-`n+<-f==yEs-?xbW7;Z8;z;!cjQUk-Ptz?~9r zVca3y3vnB`%iuO~I~vu(ZQ~le+4Xz4jv8H&X4hde`)UmOMmJJRjGGJ?Q`}i`Gu&x$ zbKC;AE8bozx5S+qx5AyOpSf4UoyJ<+>2PPpogR0FI%-DTnffIR-W_3cy816*OmcTN z+>yAm54{?hMcKHLQa;LcyyT@ZJnVO_aqx|YCQ1a~p9yNmX{ z?&5XSlDJE&cPZPU9nP}2yW%c~yAkg4xU1o=fV(p8idu9f3-0yfu7bO&Sj#k_2)U20`F+@o=K$K4-y58S;q z&z`t?+qMUm_V&Tu7k9sY1~DFhdnoRKxCi4NB(7e5_Yg_mi**mftbhVOy!IZ6dzAHB z{4uzv;~tB967F%hCkWC#-r_|+v5q|%_f%Z{|Bt==;ytbQo`HKV?wPoH+s8d?Aj3Iz zKj(?jJs$QDeg!>il#kddSUV?iA?xna_;$9{&3Ar3s{{OFya<9UbfB1_l{{k5I znmWJy|6kneElhOtGQ+bwQQYTnAH#h@k&ok!5v5nfeG>N>+^2A#wzX{O zvAEA#i$y+<`wH$0xXSsiE&&GYD*0Q?I9#QD_tm;{<$vpa6Zd`X;Vs;^ao@#N{_j;Z z7*}rriShyNXSg5YeuDcEu9Clj+1`}@`%$0ceu4Yt@czHX>*9WcH!1G7xPRh)hx;?` z_qadeD*xMT%KujX1^0K{UvZWEjj>yqWN3 z!PEc$<&7Bd&WblX-fRPwIq;PH`#sN%w*cNec=~U@JpC77Ccig-zik8d7Q|Z!Z)87} z7#G2N4sTJs6Yv(p+W>EIycO`4z*|O;-jXVp!dqIDUfbTXYFtj`^42Ke74g=jk+Z%6x#q5K(FW!DOo2_*K-hnlKfd9Qi@Q%bg6i+$dJ8U5T5jFlO zykqf>#yiGZdL#9Y!>gI!T292f3GXDl3-M0II}7g=ywmYcl|bqFwE7)6Ll4ii3B`3b z-g$WEsQp}#<|T7@zSX@8>e!3$uEx6#BcR$`Ocz0;FTk(|tCH8i)NbH?>_u}1!XY`ugLn_&J%abJb(yr1|IvE9kK;XsHwN#C{#d*x>pV~6J&X4Y-q^m^ zRJRR0kMHBXfcHDzi+CU7y@dBB-phEe;=Q7U#)<5WMe4qW_d1^b_|JcK?=8F!@ZQGL zZNFD90p5Ffy7}*ie`vFLAJsj4g7>u+`V{Xoyf5)S$NOSfw^H}38vhO6k9gnWeUGR6 ze>)cC|6U>QC%j+re#ZO7Mp=w50T%NI{*-us;!lY87v8_x!{2zy|2>Sa{O^yCKY^Wr zULJoU{7LZZ{l78#lj56g|73P_7B+>A@`vzSqWcY%^(x@E@s;^~YNT5$UabW93*v|P zv*SnjQ{%_@UHk+;!|&jy7HNAP;D5isSK9YWI}iR;0=CF$@MprG7Jml(>F}o?o@d7X zp+7VJtoS4FXZio%7hnGcWG|;b2mYM+^We`VvHsix8Ro^GAAdfv*y;-m=nLVmgg+8r zS>0b4e-Zq}@E0A(usHq_{X?1arSO*(i?2(7zf3*Gj@ejk_1b|L^aKzn9G^Gqz8ie_v6=vOm5OzJGw`KX4%b!T5*ZAKJGF{&0LV-Xri&!9NoJ z1pK4$kJZ?tRUXsF`^TxJUIk?AC#vNn{F6noJ)DYvCjM#aI^Ej+Gi)CJEVZAFue5J& zUiG3R+j%wS0{koRFI413_?N13G5#f@*eaJ<-M_rHT#2t#?_Y&~b?v>zdL{pLqWgLY z;G6&2qbrDiBmTemH{rj9e>475__yHShkq;n-HN{r|91R4Ro8XF2Hs^e`x$q%g8%4%{c-#!G-S-c%-8(yKaKx9{xb>~t5R?N zOTy=D68{DKSMXm{?@KCQ7HMA6)j0gu)%dE)*XntA!(x2>2{=jkHvZ4}@8Exm|1SQA z`0v%2_whdvy*CvC{z$WZjQ@$nNUhKCzsLU^|1112>ew%Bp#L@gxA=Phr=RD$x}P6v z{EzrQ^>a$CU+{m${}cZ=vHQQ*$Uj8srSkt$*WW7tvBqFLf>j8{Czz370)miWLV_s? zCL)+rkiog51tDuU?>TMgZp3PqIA0N(3tq4Cnt~EeW<3SWw>u3brBGwx3Prc6)*y36%VMqYHMDR5tA{1bY(fO0c`;*{vTN>|rsI zUzdPj?>cHp{{ygQ+jkS(OJFAUo_?SiY;d0(nwRMJ z6Ff}t0KtQG4-fUh!6O8Z5h(v#{Nn?$PY{eFc#=R#K6px8!P5lK5R4t($#VoRsP}oB zJb01dWo_UkiHi&q_XzYtz#R7M!TYuM zLxN8Tl>CE_2ckYD_*@PH{RvP}l>d7fg0Bbzg0BfDB>0Bl4}xzAekS;i;0J>5ZE}hF zk>IC(|I*Jd1iumdI#5gb-)8=ka6E#)2>u~Z@;6D0O9KDx=LyFroWR-*Ae@M>NjNd# zWQ3F0>fxjoA5Kmj!NH~HpA}k4G z!kjQ6ObLhI0t&N!m9R@#NVv^e5zat372&jmQxi@zyyA3()7#kI%t-Ya31=dlc{p+w z!ubeiB~+ddXCs`QQ2+URzt&uYO8ep5b@lq@kBohO!jXgv5H48Hm@Waf&xHvWBV2^A zzVqMjN7n+$uq2`RurEcp3*pj)>k}?RxF+GUgsTuPN4O&4@`Nkc>b(r%N`xy98)LXC z;p&8|39MILlCM#BwHBdrez>++!gXrFjBpFW zQG}cK0|mS#Va@!u!)*w6Al#O4ySmo)wlTr)NVqeh@_#S0joOv)Si;>14C!@Xw`o=12Vq3-#^dI<>66__2x z`GobIA8WaYa17zagtrl1LUi$2}&A&xnNq7z6RfJdf=fSwbYX|aQPk1xo z4TLv}F|6x~ev^$7{TB7!T6c9j;b_7;2=6AmQ(brUON3^&?eS}c20zzE^j4^zC!21N@2ZT=&jw5`E@Oi?g3CC&!dI=!-X9@NHKbp49 zODr!CzD)Qc;Y-$H?MnVuf0giU!q*6u_QTife%>Th^6#}L+1?@4ZGWgg0d2y=_bphw z9}<2`_z~fkgdY=rM)(QgrxsvqeNI@De=lwL72!8Jim&^rB=dKKzYu;;X#R%CB>$lv z(NBaw4@WBhhrjiW;U7fi4F8kJ5XE0aQxpD81mQnKlN0_+GzrmoL=zH?Pc*@>nTaMM zns~THF9*z*qfA%5QAAS^HHoH_iqQ~J&Hud-8BEk7QvSDihbSa+i2}(Gc|Ei@1>1q z>Q7oUf@l^Z-Ta$@^u`j+PNX~^%|SFL(Oko4W*(yXiRLAm&)R!YMn((NbF~oBl0+kk z7SXXUTxVXCNI5^M_y1A7`Ip&PO2JDLElV_f{~s+^XIOz~JE9ed)+1VpXf2|ZiB{FX zRqE=i5v`$?`YAxPrX1SgudS|itR-5vwy#e#if99(O^7xm+L&k~>-sNN#<(fbW;Rw1 zHz(SfXbYmPh_>wGdvhX#+D1B$>Z^cgd!qe_b|Bi5Xh)*mh;|~{g=pt~tVHc<52M{} zt!R(hvX>~)-bDKn?PI;BM8D$xLV!?KC15mMTZl;M05nvEks8W zT|{&g(J4en6P-YG4AF5!$4XQ`f4%>YPSg@75$THXUk}l#L}wG7Msz08=|pGr!=;C_ zY!9NJLv%jTxkTp;$6P>kp{>}f8(mCv4bde;R}x)Hq_iK^PXVGU`r*-4Hh)yF0@1ZZ zy5Wzm6IXP-%^Vs1CL&!3{u^L)vrQG$3enAcy@b4-q}ww?vN;Jx}x)(bGha6FniWXpF^2PZB-VkCl0QhUi)8 zBpPe`5&Xa^5WS!oUaT{`O!Pa^D@30VjU#%O=v5+R{^&JD*8Cs6N%S_6E&=^+^_Os@ z#Ct>^Dqi>h(FgTx=>A^-AJ-K>CHju&Goo*ZJ}3H$=nJAR``w!6rT?${mgw6$_Isiq ziGHvyf&E1EE78wHzgUbh_S%c;B_R5PcoL#Ni4DE~Mf8sVBE1BV4FAeuJf6s2pd3y> zJfYerBA&S4iNVK{5;uv>_kX4&o?J2Y=3fGbh#NLfuame%tb6{rO-#S@*d83lcA60XBAF;#G+kAzp@fQR2mk7aN$LC5V?IUUDGk(gXUk#48amN4x^@ z@&oo2MelVhZLBPMyo$BNW*XNcUY&StwXZ?ECh=O<+v`g3>k!xEFNf=6zEvAycO||#9I?@N4$-|;+p(>d1Ac;h_-1)IR>_xnHzkzsP;vz;EyA|g!p*kvxrY1K85&1;*%vqeA4h*rxKq* zd>ZlT!}FhM4<+Pm;tPq-AvS0J!2UlzpSa%t8<;e6QQg(Wwn}^{@%6-)5nn@mIq_A* zR}j}ver=SJe@~Yr*AibR)vfmi;#-J~UCG}VcR1FA={={IWLo3h_8wqE|>tyhi-`K>jz0 zzaV~#_#@)CiQgrDXTbX&@dui!z66MMIk0Uj`Ny9Se@6VN!1`4_w}$Mf@G{ z*Tmn{L$1kRTKe8rjO+b>{1fr7#6Q>edKD1xZ(@vpuk-&&VtDc|k~Z<*Boh<=LoxyJ zza-<6DF64m>d8d;-(*N8vYjN8kW5aZ`+u=dW-}*KkTgi9BpI?6o1sb48aAs5Bq@nQ z5|FqgK8YuQ9^T|MN)nP7+K+51DP;J+-v8Uo8A(Bs3q}B43rBgK)ky7Pu3vWlVnYjtw`1)(R=%et_#UJB?Ea6|;rPf&G87HOUSn%KwsNTaxV*GjRVW*^y*dlAYAP zv&vmW_Ii-0-PEX;07eu>}S@s zAURB3hm#yZqU3J|Wyf_i$;l+gker~HV@Zxv<@kOQ>F`97n*8PP6q2(@PF3V-BxjJE zJ{(^!0RldoTGwB+%I}^ zw@TCbJtX&$+-m{i8sPur0g^E!50X4e@({@*8uf4=Y#V-zCB+^8Lg!=Go4xKjF3a~>daExbqVOqZtYTWPC9GRnTyWibmpeBFr9hmEI?;o zI`h?0^AB{ppe9_1&PeO+jY6s{qOL_%)|UXCCFra~XGuEC(piemGIR#^|8@qJqq72? z!jGM&}wtfFaGrL&rK+1NGYP(s$U_RiXLwxqKToek8!uFCc3DF5524e4w~ zXCpeB(Aii3=4D)+O$YQ*8n`(fC4b|!v0KsEfzH~N6rt=P+edvs)voD=<>Fh`6I6C{&IfBjsbd>Nr z2husHU%hh(ox?PFeg8-59&Q1hBk3Hi-unK(c#ly_{S>%!Je@P?oIvL^Iw#UOh0aNI z^eVuBdwoijE&=ASbGn9~VM`d7c+aA9wkqfJ?Va=J+(_qqI#z4#bS}0q zI}ewt{W3b2+ltnHC7o;NDE~{9`usxDm% zOh3}nV|B$bwW3RaxSpc(ES;z6j8)__7GPYG|2aA@(5d;~8ebHb#47oBUZL|kopE$t zqf_(0@mla3bl#$){BJF9i_7Zol7@8Nqw^P?_vw5^=L0&Q)A^9jCv-m29%}wKA)Qaf zB8}D0e??dR@6>mJI$zWIiOx544B>xU_RD@>h{k>vui; zgN~AazvsV6C#Uld=>!V+m$cshr{mjkr4y1)BHnZ&(ur+Cb10TcRZdnTryzxNO46p< zhe#Wum{)I#(iUlZxWyrLNqthU50lKg1emBaA{|K@lTJ^XkWNL~AuUK#(wwxu`ET=g zZIZN}Nb5_0Uh`?q|LJU`bCS+Z zTJQY(`RA&u&qKNZ>AYHKKGONEy@yPd|I>x6QJPtpbQRJ?NS7g9lypfAT#R&a(k1#Z z8@?3j0RN}UlCDU)oQ5nzhKrQ9oYY;8`iNKk=Fd5Zlc*XCDr}EM2#Zdd?4GFq=zVGE7Gk=_aNPdbSF~f zf5C63UcCfJcTj!Dy7Qg&a2Jt++?8~dn zWsQ%LK4znA>=@GLNuMBnhV)6&r%9jc11x4N>9cjM=lb6C1=80@UnG5n^d(Xy|6U;@ z({ZFq{{K}s+0xfZ-ynUnpG1&vlm1Hj4(TUiPv0edkMu**djFq((8s5`1f;qINbIMi z-;gT#r=OE5=cmg5;{A&B>tQpKeoLx1{L}A9zqc+y{z&?>9H#ZRfYO0Wfb=)ANl1Su z8;|r4(!aFNKW$g(-=zNxbXf2I%~-PW$tED1h-|_>KWKFXA{*N)5Rx`{m_w>_>#Uo3|e6olvAPcS6xFk<3QC8PmKv^nwn=L2X zgRD!o5?MhuFIh=8f~+E&o@^?zY00K0n`U@UT?lN38OUZLo6!P#nX`Hc$Yvp%i)>c1 zIml)sn|=5g=N#x{ZmVbW)ZNZUwm8}RWDAomK(>(BvjuB!eFAxXKZD%QDm!-txL8l*_vc}36QN$w#M*UYmu$p zw`BGAf3o$+HX>90&o&@a@;AwC{*B2tCEG*}dlnAKKwQu$vR&?P|fA3}B{nc@G#$@D_N_H%@EVyhfQrhESE=z5I05LoZ=WT%sz zKz1_OiQ4~31F@%&omxkoW)n&SXONvob|%@`8giC(W#^EcJAAIrC##v?R=kMpCbEmk zt|hyK>~b>Q|I2Xd=fBw%WLJ^Z{4cJn$*!?g>=>^jGo2{^XE*eFllE%<&u%8Wi|iJ% z+qBPH`>^bGvOCCX=C?WTCL2v=%H2z*`~RL@a^6?Z!~J9rl06`)dL!z|>|v_2$sVC_ z$R4F@*yb_v&&VDpH|Ove@;2EMWM7dzN%kt)Q)JJPJxw-Nd#m^VQtR2e*7Ia9srLny zFIu}`UM72mY~1i3UL*UE>~*qt$=)D)o9s=pw=Bkv@tuB1_8!>>WbY4q%M2|0i0pH+ zkI6nI)5XHZekQTK@k$S0kbOCD_%-D9O_r@ItBwF3nA{@|$$i1(!2mKE$dHhiBSRi;*uvUf=w;wH7B| zVt6M@kq_Me&zG^@d^z$}$d@NyQ7riiwqm{#`N~$eIaeiLt&Uoqd^rE-YmuKzzBc*J zoGa2N6;$af{*hkQ5kJvC%^0q1*&Zjw%}w?D$nPP)SL_Dgllf@!`-fW|B!7|oA@VWg z50gKtc^;|pkBK4;)X#tOC&0%b(Z$pFc~kw|(;G`XkMi{|z#KiTpkC zm&xBCe}()t@^R#^+KT^mo4;;j^Eb)g)*jxfE$@)OYw@=9`{W-g=7SpZ5&0+NANSMd zdjF?~ml1tV{ssBJg z?vREwL<*)kfYDn(UDRG*1#~^S=hOA+u1`0hJ3HNw?sRk`x|t$lx``?sk&-hN*_*&_ zPPa>UYPtp8O1_Om~*rJ}ceX2JCat zU6$^gbQhyL7v1^j>i)kwPmP~f6v;3@-G%8cKzAX!3tFS?WMu!ay9nJy`-jr!;&hjw zyA<6e#oo&%_ND1AGjO;Z-PPzWFP82KbXTUkqUtM&>_@Gl##QS{Tb=IObk|Vhniknz ztM;y=cIE%>de$pr*?{iBbT_2CE8UIg?m%~Ax?9rSgzhK}*;M6bA_c#>jqPqxXWojg z-tg&eO?Mj$>-E{)j_&prZ(@zHyCYpC|L)FuxJw`3-HqPM(NQlxpwxQ?cK9NlBouKR!6 zu#&%IKA}dQME5MZCoA$4x=Q%nQ}yt)y6zcrC{bsMl>BGc7F`9p=h8jTx&(Fs-RJ0D zNcR@H%KzPq>0U$k61rDto=fQ}`FAfLh`O@QsY^ij>bm;1bbHmW)7a}(-e3c}H`Y!-9dz%cdpF&?tVPD6Z>1gAy>uU=dmr70=#CalSC@e919Ts> znR_!Su7?%y2;D~qvOTWGF?64y`vhI3{qB?XSf1`9CBs;{&x*yqJI~YohVBb=-=+H^ z-B&f$ODbQc`-&>#MD{|uuc_sAx^JoShRQc>Hp%}s-FL)j@$b?7Truy{{ebSrbaf%< ze$>ZE)F*U5rK_8N(^!AJUuf)?D!-!pbw8^6EyZ|rzoYvn-S6rCN>|Ch`y<_->Hai; zRQ~Vh{Ee>iztsIhV0J40qWiZNQvMfjegCHzpJED%2`H5LiwOl*OhlpN|6hh;QVJ#i zLYIvHDi%{x3{kW+szK507cG?hC7bfU2`OBPF%%xfc@#dy1{49sOcWtSNfAk`;A4t} zB3Hdbkx~rb{}zuDMnDt zM==Y~ui`O~ptAJuDid86;a?F2&mFQvUA+7B&AD>(|H)DGsLCh+#ce2drr4HZ2lZ}8vHgH|M>Xzb!6u|o{x5c=*j-(_Sy!>g07l8b*qcJB zzSxIiU-3%#el`Ap+HxSpK~|U9JA~q7ibE-mqd1J>D2l^t)g$ciq z;&Me^q*5;dic3_#ROMwNZO$twuB5n@Ldn0lT3ph@H5OAS`HSUx3MKzuY;hyS?G#G> z;=P&T77e_$&Tv~@;*Q#KC&gV9_fXtjTWXdo?xj%LFYXhU%*p*0WBb%qpm<1(#ltGi zEgivK51m$%UPg2fF@f77G6i-upMDYy8YZPNCUZQwblRQW9f-29~-M%P? zw&=_1dWB+~H5R%w*bZM;?;8~FQoKp=wjSz=ApO51hZgxB#RuxGZvh#5@nK!%V~SrX zKB4%E;!_G``{FYST{3!|2)=&)TYOFN1I0HK-%)%!Q004DPQX7>=>7lVr@Dt<2E4yf z{7dmW#a|Rk{u1(M-H-CWSpKmg<#?3J_T~7L6ZG>KOgWJpmbwI(R?A5#Q_9IGL(0i1 z+musKHYlf5*ib*VY^p_<1Cv2wq4d<~=%H)-k^H{e18XU3{x4&-CzKsgdUI7~l+#k? zl$CmQ2`CH7QV#pDsVJ5I%bNV9&~%hDYt;0VGf>V%sY}3rQPSrK%GoGqQP`}*bIz{D zIYbI_F3KG!=cZhNavsXXDd(kJka9kS&2MAN1?tWhqFjV>WNlx#&aCm#d2+8P=$y)}mZj zEo-Z+mw<9TJzSr11B>icFE^sxLR}kEZbCVVa#PC9#9{yzql-e%Qf^7PHRS;Rm)lTo zN2&LJEM|cJ%N;2Xquhz|K+2sd_oP(*FL$Nf%~mOQr`%(B#l0x^)vorY+{e0Pm`eWT z{*+4o|8*#?gD4NykV8}+IuLa@*3W-S<$pT^ zCsCeGc{1gxl&46n9qDQPD$>IlnzsJ_XL&Z|#gykzo=)^19N6k#QT{;rHRX4d-%x&QXTW*~_`m#7@{~UfH1-SSzm&gH{z>^8yV2Dgq<^6#}*g;WJqM5TmZ#Z-xfNrx#_uCdvGvD+U@RZ{7q zP)#KO+toBwn^8?mwF1?2RP#_xPc<9W3{|c(tcI%|E1Pa zb**Knl=iD-ZBFqnU*}(uYE99rm8e#xT8&D{Uo7?gAJKIQsA~SN)}q>oYHcbd{AwMl zbq6|JpQ`46iQUk;MBkWd6Wf1P-~X>hQSC>yIn^FiTTtytwI$Uy+SOK6TU)%0eOs#S zskRe~o!%V=^qr`7)u^3S?lMq!H_@xzEx6iK6zOL#s=cXn6{z;Hc$;~Ds-vk6pgM%= zKm{M9Qu)8vKy@h95mblO*$%I}I#Q9!{}y=+)hSfRQk|f#eE%iZ>oE{x$gE> zs=F0=8`bSp%K6nDwf8PN1c@~zl<=#2sFeSEwZt`=>iz-bgH(@c&WEUK{;wXPdQ^<& zCEY$w^^{`9P(5Mo)sxmMIiIF_rnZl@_UbvRuc)42Y>r@|5y+QRZ)tgjrYn1Z81=N54E7{&tZ@vGoKBW4b>LaR8s0R4I`jqOkenp$- z3yuBK+N-ar{-yec>KCeSseYvTP66Lj{V*)H`biF@x?T&2@+;LJYWa<7fc&dJss5(= z%i?7|{}H{{z*OV?KdR0I?5gSekS!eCF*Is)#>+E~(x$g^W2UuIf zVz#$<3$Pm1OSdz%tnKTX#;}^f+7Z@Hu$sVXYV?UWack{tG%D``i}~NQ)f`qASS?@` zVYP&ng0&m0Hn3X3+5^_^4WeqTveh8}TWw+O4Qnr0?OD{WK`R~VvF!uPW~o)zIC?6F z1Yo6MVI9hf2f;eHUbmkAt;1k3+gqJs9d1fZ#Utx|>JIA|SV#YVdwwFYj;q(|0jn>pp0Ike3itn3FO_wy`oKB~)`{j+l-jj= z{Ghj8?|7)!?>!kx=T?XrHSm(n!2i721%>Qb0?v{qE!EEci zdYnUGT@332SQo*%P>bX+BQVs+)+MZR>6TJ!7_4hyT@H&0-@1YZR~mb5aX752VO?Wf zB|fd|VBJW|>&YAH4Ke>)H#ew$D{Q$6M!uFdM zU_AkAB1<1vCM~J~Zvoa*Mq@n#E1B6zu%2yT_8hFqu$cc%U{e~DPKEUn&J|wU$-?{g<@_)>31WRMFPoR*kj1UiV#Cn_#VgwE@;jSRcY#1&enFYc(z3GnQIw z4Xh8goT_FmtaY%~!}{<4*E9cXFdJcg3F~86pTYWs4nI}OVS4d7W3Jx?tgm2wOEczw z>zf9a-@)QX08{Y?*xSPT5!RoueuDKIYyAxC7g)b;siiUe&Y}kS-}(#Izp(y>wHekw z|Ib(gv$ul14eYJA=v-U2q4~M-g z><~6!+pwF%ZUego>{hT_ves@5{Ok^!Y2V&MmC_fxLH@Vf!fp?HFV52 zSZb|uy;c?WzOb46?T)IH!!)rU?ESZB>;qsQqNnzO{`p!z#9|8M9 z*hj)X4R#mUy0n6C0Di{Q#Ui>@l!Eg#94wmtj8y`&rlz!+sq0Bd{NXJr?#j z*pHefwAbT}lf;`nfzBt^V|W7g)3EFNf4iRl?Pq8d>lN5bV806cHQ2LY&($KE9|3IM0yO@4b)WO=F~1J` zE!c0sUI=@EX~^{MO>=55qN~MQO6{evS5mnQ_S>-Efn87j+UUEmx$~D6%`B{f&HQh# zhRx(}db&oPXq6A@mTTcOhP@8zjY=%g3-kF}0Fb)X!(I zKQ}(r=1a(b=(E3qU4QbgHs93S`VRL0fBs|t0Q)c4Kf?Y6_D||Zoz&j~wSR@pv~Tmi zphbVc=2M`=Ql0+|rxEOb;A{nZGwgqjlO#fCYdG7O){`oZ{Qs}*;cREjL@9@}gRyaT zgwqyI6F4p4G=&2=JHcs2o1N=6yTIA?|M^r8eEzROOE|6I>}Cuk3}<&Z@^9an{KY^u zd%|h6#XxKA1t$%s9UKczdpLW;;pX4;Vjnd&vJJ;E!8^?VMxTKbz{$d?=YPk8!{nbB z2%Qj44o;-iO(YF|0^k(j41rUG(*;fm&Vg{saQ1^!fm4H1-BL>f?g)pQf73eizthRs zIQ8#;orB`GMsL3j)QZQ>YeUzj-haL zeKdFrFnu{5&IxdO(114rqwfW$51if&Jf8^XBt6|SGJW9;fYT37e>kVm!>Mpi+Y+sg z-sy18WYHO0>N;oDBRLz+U^wT%ITy~r1_pyv{$E?pd2s5t08u&@z!?qaLO55cjdKy4 zp>QsTb1|ID;9LTyp8u0j)n-@&Z@dLK_5Hsy9L`N}u7-0hytDKhBL> zB!~9vW;i3@++sA&t@R#_gmb$po!hpIgEOjL>kc@N!nqTUB=)=D+zW@d1GT@W?%_UG zzu#2RqA_qDhVvlx4=LqHy5>AW<=Fb^I5q_yU@&a-p`KHl3Z)vHs zNSjk(37og#ETzpd<@~KFFDKto8gDD$d;n)9ocG|YV(Dt-oJ%ObPp(lK4W*~|1NFG zKYtg>KYtf)QkuFy!ubQvPjG&P^D|3-QBLK5oOgbs=69uu{7*PCUw={mw{rEilsA+A zDpOmLTO-wo!Zu17QaMuF>X@joJyPwF+5xFnNHs=k7o>JXYA2+cuu4BDNU^oNac~* z8z~Q|eUNgHvS?!~<==p6#T1z)xuQ~8%C0gQ+mw$~gj7Ji{7>Hh>VId}x;Zjd%Kvdz zO#!KnNEMN)AXTEKtX#v{OjW6=DU%hI+83!#NbN`c{z}v00n{9*Ojc&ne2;H78TEf^t8kPDAPx%BL!4e@MAMdAic{@l2#H zKBUMjdY4jj zSp&`GNL_{071Up;G=7FtbG1^Iw=i`rQWKE64yiklx*n+!NZo+c%}CwI(wmfKE!{%R zt;!E(Qyz)bD5P$q%oXzfQp%&rJCvr~yO4Sqsk@Q752<@tdM`^KrhGs706B(ykbFq_ z+98x5L24XQV<|tXH1Ut8<}u|*9_5Khy^Pf3NIi?x6G%Oc)RWXdrJSF%_zX3Zlx7V7 zgVa={o}>PGaxyuEd_igYGL4$) zr!+CVM$PNw8%nd579ukQsW*{sfz(?_{fN{eq&`7vF;dHrT0(n{{Cm89Q*TqVoP39T zmrU01O3JJBpO2?jlkbu5lWWKi$PdZ2^nR!25Asj) zFQr!e8>wWqZ$^4Mr2a*E8>F{Fn*Wbj2JMx3dV@|kLV8D+9-4^LiNbjYKD%}q09MbJ6cOdsB_aQB$ zT?#hR4uurb8479L#z?g3te#2-)tg89WI%>UM>>Pa6i6CR$JFPQTBU$=kwU4iDI;B> zrb^bxj^w`Ne&qg2@tiPy0MZ8{-CZ^5gOEO01(gp$`p~+37=HQ^>CQ+W&Y~m8BkQGI zknT!NH}WVQH}Q}#eKeKFkjIk8k;jugknTz01hSVhsVGBadMdMX64GOlKAGdzm+VKL zLY_*>R9=g8f21!%`gEj+Abp08UiwU=&qewym37z$AbmFV=a2)HQ~0P~jR#RVm^_a> zU#S%@(8)^6m%qY`$f4xL#N;y_shx9OYo4%ZNuOP1^uTrYR;pEjwU!#I_R+ZP0 z*CTx&(l;P|7t%K(Jre1g=B&gHiu4quXCVCo z($kQhs&yqQbvs=thb)`)Or&2z`bF)FXtZlDBmIgNi7b(*W){+~BRw1Gc}UMedan9O zy06~mBmJ6MiqhD>fwUz21xPQ{>d8FiNo}I zq&Fb_k zkp5nsNYVVQo44$M^bbh?h&T9vi1tYT%vRI@>0gyHEGqwwOe3WKp!_HK7x_2&k2am& zjEq?Ri_BKqsA%5(N`=feDkqxEwrZc*j@+Kyfox3fNH$R>W1HbzWOhad$TVZ=F66FC zajV{%lP$=WW`D-n37G>RH(aro(N-r1QGc*9S^1emk?DfWVaObT zOlM>cH=o7CAW6}gBQ>k&D0QWWZpa*^b(77H`egD~gJY06mhm5lOiyHvN2Z5X6k~~2 zdv}7;bf>ra&-76yJITyR$n-;o`~OT|)4JMl|DWOhKe?x8`Xh4=GN&VR7BXkh&zTME z2T;TPf3p9~3`AxyGUrl1NNN0>N6q=d=G%^-d;v03khu_<$B?-QnX8Z)ip=H6aQ~mV zgf`s&XD*{WOqq;ThWq~v_y248IXyERnQM{Z{y%e#S|*>=GS{*0_2doYjrwsla}#;9 zQcrI|=GMAA0-2F@`8Jl`j?5?uqscqSJITAqyODVanR}3VfT#B&b00GIn?3o;XZ3?d zW(G#xL_QHBvMVnX$+`sxeCkWrwD7Jzh&?2IcmbnSjhQ$V^1$Nn{>pFP=~) zpV2bh|7V_7&C-upItiKQka?CecbKv^q%_0*e}?;iGcPY7^Ext9k(q_eG-PHX!~K7T z`+sBeBI~|HzD)8Kka<;QV>26>dC1IRDfj=$r<=@tYPkP5Gx7#9A0o2=nfH-d$kI2- zx5z~ttHtCJaw)lte4AWOzC*rCt{_*EtH{;ldrIlMj{h3^|3GPCUW?3nWY$s7?X+24 z$rx@>y&1QUk^3B(Pmq&^`YCd9)qjS}FUW}UJ7m5<=4)iQ|Icv$Z`LID{~7N8lczM9 z?~(Zt8Seix-2WT@KQV@%8^rc2a*}X?=1a; z(hAw#k=+~FJ&UAg3`If_vK_GWFylv0EqFp3*%(=e z&QoNX%#c~qB|T(w6nta@3LzOOWo7=4**x_HvPhQ5GFd^k6S7s6wMR8%J5tz}+z;9P z&G^XRsKEhnCBg%dorCN_$X1>oRizv=0znH>FzZ0+mHjpBEu}8L~r>l|EkFK!2&R7jJ4djJ({8dG<VSjpJeG1rZoGM3UZjRpFwt#(PW>k*Ln`w>Bv5h>PqSk$uHzbe3l!JKKy&5^Z)avcDob583yT zosaBtWM4yeAzi(W>>Cso7!Nu-Zz8*x%D0eRq=FgYCCDyAmigZd!rKjMG5=@ZMRpak zD_DJ{GO^U|tVWjk-$bI$8)W}PR>u4aJNF1`9B!}q05Xa25uv`+rzEre|I}m z%iTc*x3TF$(h;`_l}+J_hh~&_-ZHB0E=G0%w*%bfa9hJ|0k;+0mNec?nM9?|cc*d> zrTBOEgu53tZOFFDWV+pUaNFx?qH*_zn}NFzT!)qxTziYL*tjXU=`9*J3pa%8!u8>L zs+SQko_PyMhQ*EOEmtqf!@V7D0d7CIMYvtymf#))w+wfGxD~ie_%3e&ZmmIc`@-E% zPffI)jO-quf_tD+`+G3l&eR+N_t3h{VO!RWdpJvvfP170Cg84cPk`HvMMuFshC+Ap zXr+2S7H$u?$H6_`)H3>>YGC~If_oy|-mKV1X$IjWmE~|xhTGT3>hl!17sEXj?qIm5 z(V#!v0dP-;dnQlMP#Py^8QDD>?m)Qb=&2miw0kbxLH|Fh^Wa_p_k3gH4l#8#2Hqpw zi&WzdHF{Tqxr!Rz0^G~s4ug9IHJ2;3l`B;+@^HAU|*w*a-g9_}r0Z-9Ff z+#5|5HMrS$(7xXacO={f`QN=wOHF4-!CeA(G~B1)-T`+U+&kgk&lc~3dpBI(1>Ad7 zBi_{cef3#*0PaK7j3FOXpW5QXaL2-B7sOuUd{hmL%;fJr2KRBe6O7)SsDcUU36y_RPGR*I8kA0>W;)!N6lT=pujhY_ z@MXC3;l2WQ4sBkAI}7e??M@Pv*l1L9;m%VbiPn7$?gHvxC*M%2w}o&Q!F?0%TgK9K zjkg2iYAM`r;4XvvU$}3>T@80R+!b({|J`>@MIFzTD$C)ns!zdta6f?iK9y^XrLp-C z?pnC(jMB8V9`2`bng87la6e|njrDQ(L{H_=$UlSoCEU+x@P*P$I+MSgx?k5d-@^S1 z?sss1r1AG~c?)oV&{H{dUVefrN&aWJztV=c05cT7)m#6=*t>t$Ju~^c|FFttcw15U zSDAE2Lh`nO*9=}G-E4S#{^RlakH_af9-seseE#F{`Hz}4f!CDweE#F@tg`HxwP+XQ z((rcGCOnYM5uOIG1^nOPwS=FCw;Q}?;kAO-4c_kX_Jy|xyb`?D@R-THJ>j*1*PagB z!rKd8I}KR;C(kRq4)FG2>E8N4Pur6HzpWaP<@ttuF7s0GVt5ja2ajI_cv*O^+DNGk z-LgyJ`S2om0lZMZ(U2zOiw`l7#qZ_ne)9Uv#N#6%uejxziI{n1t>RVSRk8R?cr~)4 zQl71;W4?|MH+xN_8%zANzaf=!ZlxlXksxRnQR_4DUh)z$U!&S!D=$f!dgWFM>Ce1AZ}iiBhU- zUoL}pKfGb^M!~xr-qkd?0^XJIu2NZJ7;apNL+=`RH^aLY-VN}sgLl0e$g`A1d{FG& z2=6BIoJ6{#i{Tb{BjMc&Z-iQkL(yxyx52x;dG{kVc+txUc%wN2cfh-wG2BVsrKM_r zj|$$s@a|J#OV=KNHxb?#c;nzb2v5e4w*&8C^(M{9!q9;oOY#;V9oL~75AQJ*RGy%g zDm)JFX?Raiev*7jDXU0JpW$-iD?nneOG`Sq0p4@)-i7x(yxH(3!<*8)@pT%rUP>>( zn+k6xgP#U(I=mSw%ZLfZiT5JBSKx`OmsKO7%3BjU&ac9or9$%1Ngi`~bKot2$FBg? z^E`O-;qhx`ySpV{mMfk5$dG#rr`Yq@8{;7`m0|2NRdV*@%*Nb3ccTzD*U08uWP-(;Qg(+ zQD$7KXuF%??*{K*_>zRT(&l_7ZGRh0-F_pI%h=ye$J5_lDHZ)4;5VjbN3sdol-!Br z=HG8dnVWyD#p&|_zd7|Sl%k)zQ}Y%#Xj<@F!Oz0q9e#WGd+5aZt>L$YzbE`QCQFD? zI_vKRznxZ>Q~4f5Ejz$>;O`CJhQAMd3mf=VQ8G9Q{S@0x!)J<141~U`tHSr-NAP`m z3*d7xh-Votp*E2tW2MZ3Ux5D-{385|;FsW^1HTNvAN&gZsy392zh8sjk?rnF?gxK= z6|@(f;CF|A0QCoweE#qA`M<0*G4l^443!-ee#0M3T1v|76O2mB#-m@XvsMs*a&{>NNQMDe&(3^}j0X@bXsx zKHvZJ`6~ebY%P*(;}3*C82-8N2kFyqQOc?iy%wDZ|9ri&{2}yt0ePX)%;`}0W8hy5 ze>i+uz*p&f`Io}KjKVPZSHQnqWpScKS1RR@>e2MDTG#yF0@UMk`BmC>Ia5ntw zl`3#?s&Eq*z|G_>y`-mlaJ_JC3s-h=R; zg8vZwhjmP}7rX`dW8psz|55ml!5;^Iy!KH>Mh?ja{sj0Fw`g<>pWsM7sgy&n_ov~% z2>%&GzyCHp#mD*Wm2rJHv<1nE|0h1FNePf{!;jh;V;2|*Q;BZEbZMg_;2g`ffBZCy;SoK{1x!!{U2Uj zvK#SN!e{=Mdxtb6%g=ug{ z!T%Wk2KfB)SK3@!-t>J<(f;S~gNp^VWaB{}KLgT)IEO|5@+3{x9UO%H$R-gCK7GKM>4- z|0jYo;s1p|Qs3VQB-{Ukpeg*#@c-4Zl`#*t(uoU1*cQPy2pXA4l6Zpc5Hv=xJ%Sx% zcs0UgK!P0+G!YNlHKW-H0TX+`TR_kZ!7d1(@dx}0SOv}h`aQeI()w?2BiIdrji40* z3&HOA;ZX#8AZUx3@2tcUMI1bZRqfS?_M_Sm>W^)j&9i@g!>Q-Iuv zWf6)-8XC9(frB8W3qzWdsgcq^j)M_o5$uP+MUc~V6?h1I9p@lG5Fudl7klw9N?CQ% zdJrSXBd8*f;VL62BG8wAnm74L4jlwJ0=@zywF18X6Ldttmwy;f-DZCcCg_CV09|## zfl3t)(y&!H1VLv6(&Awn`2udAB$(iE1pMAMI0C_u2)ZMXQR;@EtLd^VRE^;%jag$j z8o_Z0jzMs&-u|x=!4*71ScXmNykkC<7Ol1 zi=dyjB3%%Qli*YY{Slm|24bm$c{+kK^i=YyIMks#3&D*D1|X0TJ{!Tg2+lz;P+OEL za%j7Q5DZphaVz2d@f(8k5lF9xAdr`QB-9HKT&TvuMdVPWBuU|-mDF5{;7SCS>8H71 zm~JhC%Y_uKkX1+FDz1Uy2(CqNwYh47Yc$&A3JR`6a6N(>lB=ot9*vv#coV@*2<|~} zGlCHaZb5LXiBm$AO-L{j0U!Q|6X{WKI~UR@1fvm1ZjmnEQ6HS3G)AB;!v6oSVPJdR)j zf{FSrpBPBG(~zD(@T68rhD+X$3Z6#rEP`hcOwwE=A&I>%%l{yd{6D*SPq~G?q?cYW z8NqZ8+7twQ|1+3M%V|nE#I4MZcnD@9+#A7*2tGt0^Cjc9i%BpFE>s#%NR z4+QHFh?!JbuO6f=sio^}1A;FRY^3}#g3l0qqN5#rD%6Z8vYviUeqofsR|tMU@HK+( zn#;RD!8hc$(jtZLg%mc`H9u;2!A}Tew0}nMiwSoR4!N1CID}-CCAl+Q?3pI@pwnn%u!WIa(L%0*d?Gf&Xa0i5Z_%EIp zHPXI^O%OKK?_OmL#knklaA$$M37T44);XZM!OTXMc9tQUfK(7t3ARF+O(9)soLy=@F0X1!Vsa2&_n1T zsRfIW&u`XJ<`-FK$SU^}o zSfpG+SXM!@v;-gyPQ z@EC-LBJ7OtFsvT0n*<%1!x46E-a_W$2!uz9K)H)juG6raPJMV3*&X50Do8KnC1lkf zi|{yYLPj;@{y*%2uouFfs!`<$N*TTrE( zX}@Isg#8hnhVXQRKOj5<;Ut7-BD@sgSqLvcH~`^!2+u}%jwV%cqLVlf;kj&a5II;W z<0A~uM>s_1LQdrp*7>~<;ZTIk|0cGJ5niJ2DX~`b;z)#-Asmfx7{coiUXJhzEtS}` ztt$~;#VHt$@EQtND_5O>@LCnbr%)}gM|cB5@pdCe{w9RCAmsCZV}C2c5gM4jB6Wz~ z4#L}5@ph$p7^Q=+!W{@7LU<>_`w-s6S-zX|b&paf?p_UEh5NONcKiW^W6U)bKByX< zmxmEPgHRU91cdzYSNJHx@m#3m>TU6l|Cn|sB773z;|QP7)g^b9q<7&{D##H&t@=bM z9SNUBxEi4>-B}2qL-;bn=MhdvIGG_$(awha{Z}{@;WRy!sHD0G>TL$XnVQVy2wz0_ zk|vY3lX&_HLV5Xz^O!tY4QC^qhj0$Ux$0az$jVgz^AWzy9=(R}b%cu$zJYKd!Ufud zc+iI4MEI6DmCII?;bMeKDJ;?ERI|(&Cyj>75x%1rQTQ&xl?Yd8U4a5L=+(W z2~iV-KO<^{P)7T2gxpbtzajixhrO#P|DgS!YGdZ?v1)Hy$+XL zcM;$J*D&@*v=1ViAz8W-M5%g5<53}v$fuA&l+_JhqE3jah-$jPWVoV^+Lvfw-6TZ&k^3v9u4)cI zbfC&&DNV~@Mh7E00+DpHGa?D&FfEdfOQWxNbal8|YSTv|>V>Eaq7x8x)xe@|i1=-9 zbQJs8y&l6ch>k~eEFwPqNvi9-_dvuOmPD8YAWF$XQExemIvdd-MCa%| zHyTKutCa4mhWS5Y8jQ}@o=V?^W~E(-h{<1+(z?#n#fYxp;-O`9DWc0b7sJTQl}VP1 zu0(VLqN`{;oGbroMAsp@1`(6L^hLTLgP??9mp{~rE5Z#IBW<(QG!oGroY314aT^eg;>sVbOh!g1pX{Q$5IutEZbbKJkpfZzx^pK8#PP%+fWDbeOB6=1PUjdEAA$kJQctjHsJ%(t488oRb#@fW=x^>Z+ zdJ@so6!0K5WR)yc|@}jO-A$zqA7@8P|r!ukESA;#y(C* z^dh1eh-T`k3}C`Y+I?9)%SSVrCJ7*V711pHW=)i0BQqGyL9_tTTtsgmnx}O&r1|7) zUwpoLnK%3e-W+MUdXuV zuUrq|>}=4UO6$_1Y<;6o5Pga0Q%=EW?9S)p7fLY`$_FtS&xp_Vqi>Mg9?`dmen<2j zqF)ewk7$#&BEv5B(GQ4z)KfX4pU9uJEj|4e(Qg`tjG^>YXYdb1NqU!8KxHBQh3Ic) z364gzS!D@8nA-|DepFX^8|^}_k$TAS>yq4dDklNtc0kTTt}$}0k=qfu=EybC3C%Ut z@NzpLCtvvPj9fFdm%t=H%l<#ND{|1qpWNNlvIYIO)RD>UhTQIIoNJ}0G8(x(RFK$I z-V?d@$hD#Ww%U>0USvC^T-U1Upx)Hg-X#A7ge>Nq%~}p}Deb1LZE>irXOt>rNf$Yf zf=}}0A1xIR5j8n7Ci7%LsWwHjq||6DWK}7vMKv9f+aI}oDetE={pv)`0m>w>+(F14 zgWSQ$bw*BZc2f6HlAo=Nx5JS;3b`YwKa%W1cGcm{byMoGHF8Y;xudnz)IAot-pCz? zTu3A#=Z}7CnI+v^(QH1kkzs;*^fMhJeAXT8gdsR$LIgK)2TUw zJd-?&96<8nf9@R01IcsALF8bPcb44wl==KW$LIeNfGia`G?JmnJ%QZC$lZ^eEZ3`$ zyA(NDZtOJ0w;>nZd7|J;o_LAjgAo5@?q zTgegRNb)w459@NHD32!ZAnzpaBJU>o@@MW|m38&rrxT}bJ%HS!$c;fx=JY{E@{rQ3 zoMfeqZJ-&4+yvyt)ABK;S&b8^;rst`>1pqtL{1ud3b_}Mdm6dtk$Z;vN#wIi8K2yL z$mf)LVNPc06s2sL)X!ApW+2DsKe_3uF|o~L>5C04Uq$Y`tf<@^ zwBTgfBXqi&VEF@%Ki23gSM9Pe#oAA2a`(sQS{rpEAjr@u`SUM|>Lf{guhu zi_f6uOl9)dQQ`q8o`m>p@wtd^Ks*TX6^I8T9*X!p#1|me-+v(< zqBL`NAvG5%&8S|C_%g(oP=Be?M8*6cU#=S2f(qj+5i`}tS0Nrw4fB8EM-8q;d>!@7 z|7Ij_M0^k8n-JfQ_-4c-5Z^+ZTa_k;k<{F#G*`zc#CIYdP5m9p@qh^9K`BhQ;IO2tf zpFsQ~;wKS5hxjSPlMp{mOXh#Gik_v0cM22R^N6P-o=iRSfBXXFsk%#)Bc7&|uMgrG z)X!9!aeE2zT*NOUo`snCKW6?n*K%_0%u##O);z?oBc4w`uQkxWLCpfCS%GgNUW@oG z#48XlLcARDV%jVrmy*lKx0Uh$Ul_kbzN<_kROL#Z|g%Y;hx_2frNGuj&we~S2H>OWDM{xbi^pHu$@$(MrSuhby^8ZjTy#NY7r zTk<>ddvX)`1NkG#FC62a5!at`#J?iu%b)S@G~n}}n9qMq41ZJ4?Nhv>+e1Z>4gc zpR@AYP;NwStB;=Y+mYLoJ1FHty6SgCzJ`1gk9p?* zWOe01O>v|9R$rV-v6_BqODKl+#vXRTD`Qwm3o|+zHPvp-)Ui5vD z??p{-H5B$ z3TKjMAukDk0Ohll(raTmkV-xRQv1P-`8=iR-4Nt2LjD5kFI1X&A4<)|4J>6@-irKX z$X|{8Fyya9p7}q2h1w*4Eh>K%YYkV*8zaK}HOSwD{I!&s|MS;VzJa_^Y3Ar=YMB4c zsvd#-oydg!KS%rLl^=41^UVMG7gS^Hry)NR`RTNrp-ggM{zYnDB3~w% z|MSfMW*lZCzZCg7$S**CF7mG-KaZBo|HkHZYMB4cm@Gto5%OK>KcJjsfVGs@Y4`IS zguJXDktP2NH;@}i$^W8}{4e~Jl>9HU
$f8m$pSLD~^H{`eEcS_AjV!4U!{-87? z^Aie^Lw-g}0)Gxh%}3tN#}qtFzE zZ8WzR8j;)T$LGR!PIc3Z%2K5vIDs{xesZPHVO_38OkX#t(1$mkVU~q!9~GS zjSQ?jP15E9rLl=PGC867D+Gl+3N;i8D3noP{x6i&Cdmec3hkNylU+xlBMSSYurKxd zDfO9^jCm*W0A(^Sg@aJI35A1ExEh5+P`DC>LuteOUts<(9FD?36plclkJc(2i9#0@ zRPIW4BacF%JB6c_T6zo$$5J?sJie~)fkIDeP9XUcfI@GTrpvGJI?4Bc3JXwJhXUXKDZGioS`^-5=^}D5 zxrAJb!uu#Jqx?3x9EJB#cn5`5D7;Gz-y1BfR9W^Cl2YU-tX4{rnauBi3Tsr5qwoO= zAF3eF=#nC_(ePxH)~lfMN8|<+__cy+K1SgaDnG5;e1^j3)Osn%>RWSRhFBAY9#;vje?};-%kqdjFt?`M<#YFV3~rKPYa6 z!e+``X~{jbxV37E+bEM&QQQ{A6pGuS*b>FvMsq6*-mNV?0}+$ z;@;HnqfADiXj9`TlP3VhG>SD8GbrX!%%bR{=+cJ!f8#BnCM22vi#gpg75V&M1evB{ z0mU+k%>PB^e^a-@TFn2+Xcs%8*aO9VQS5{w^M7%FwK1c?{9infwGJW=))iRfn-WF7 z30XW$KVKI+lZTT>kVleT$gX5J@+h)9c{F(pc`SJxdAw2%ZL24Wy-_@Yt@l!z$oo)p zqB6NoizlNr7{$IQeuZK`6rVux6cn#T@l+HqMDa8f&qlF7iW2SVtb2yi^zC%Tt9%~qbN%Le;CCFS^AJt-YORs zA0fvo%}k9$aRQ3tsb~H-QB9zQYRni;L2(+2FVJ$T(u_9qe{n_w%NJ3cgW^jlzKY_@w0}jJeA85%Ma^twaz850 zMe#Kh=TXo6pWID~uT%4e(!{V3#Sc+@6UDbtd<(@TC@!MSVx^hErPM4_nz>kx;`=DR zL;brX_y5I}D6U3vm3fw>BmbVtG6E7naSbg$P@2})qWCe2>rng%MNU?6y_T90+d%t` z%H)$*@e>q3NAXkYKU11jC;NYyN7?`XFE4$KQVzv$P-=?ew|2fl?l&!%!-q)Cr{`O8cV3{9h{5 zLxrrO)DfkcJ|~ew8kKJfWtD+ zC>@Sc7nF`*D@Q7mzt2|cN=-Lqaut-iqjW4vM^k@{(zJLSHODKH>{058(rGB2fKp$S zdZBb8O1){r{BQbx5;Z3)lQ9&b)DNXos6SO{)l~$t_FQTPDNR)8p)4VtkJ2KPhM;s8N*ADXJxUj%Gz_JSP`U)Ap{&LHZ(2`Q0`tGo zT#nK;C|yBI=Ks=Fl!ud7D@|SkT=&6~P=TUkArOAwE ziqiCSDmBxT$$hOf1Eskr%|vMyN-whXC6f8S#Qa}+RW-@?8l~ARouf44IS-|UD9xw- zHIn(i#QlGX@Bd4XVqAKYrEe)sR#}Yl)+jAO=|hy3qO=mFWhlLa(%ZCLt~8M||Cd&% zCfO5~R-yDhN~>x4p3v6M zm-z~GIfHUmPi2wIAvfi+hjNUvk8-HPQVx_dAms?U)X)F!ze%ZGC`nE%Vn|4F7QcSZR)l)IsPG|ETOrn@p(;pJnfIaZlm z1!d;{au4czDwDlgxfja+LAf`|7ogk+B+AVHP{9nGFnj6R) zN#_4D^MCmkYHmfD$zQr)dT|@|%>T)rq&ynsyHLJ^dXAXs#og50L*7f?hw>Pd??+jZ zKVK%4g`_Kx`Cmp=*Oe@ZCs3B9G7jajto5kU_#98oW8?&*FHc1IaW#-bJv@o>Gbler zo2QjYHZD)1hWX!kdk)phQGOof*(gs&c_zwJP@abJ3$$eZHnW2-I^$W;_D1U+So0OUV%ZpH6 zgYsf(mXJ%yWhC=|c{$~GNap`C^S_3=lFC&mucnaXf6>3Mr_qOYOx}&D>_W}1N?CqF zeUN?@DlJfHhe}ISTGL=RR9aEko!mp2gk9N_nl@xxa<2xZ?NPC*?10MN6!sx4Ws=h> z4mBxMvZ$mfXO#czOU0#<@BfRw5}?ALM^!>pB2*4SC5K9xHZhq;rJ#Zu7f~sxka(+9 zP}z_ADk?P!9m#!_CZ7GN=|nRBR}NI!^!H#?4n^e<)g)I_m7`JVMm-l*h50|ZYgCS*{#f!jrD>}NDmS3g6P3$QIRTY3QR#)ssi^cu8d4|&TLMHuuR0g1OE-GiUl=;6hP-WALLDUZ> zd9O6_4?$%pDi=_HA$gI~^x|S_E+Lu!jeZz4m!onuDpydxlDvu>t~9HZ`M+{4_1BTt zD@{~<|FgpPKP!Cyv%>d3E4QL@2Pz{_xgC{}sNAMsfk|iOkmO$(h0192$y8j)J-x#B zKP!CyQ%)tw3iE&EUbc82Dicw;pR(KnWH85&52ErYDi2Y9n0$mBtE^vBsEk8pJoS%} z6O>8s)YaptJVE`FO4U3?K8*@D|El3Fpz^Hh<@bh_=jxWvqcRy4CY;I?R9--34k}Z% zo0VzgbW~nOWrpc{WhRv`qVkf_sPk8-e3hI<&Q{6@tDm{3Y(QlmDyvbMkIGWU_8Ka$ zqw*$K{u`()KxH8x!tbhsDIKr8h00=77O8=p%HUU)s4Vwly;zo^@-8aO|CQx*_>NMV z(|A^pO#YQsDx0}}50$m3F!@*3(1!WH^5GU6t-cPGWEj`ehWTGMY+AGt6-nS9qw)nR zpQuKayaiNv3#jlGAX`V(e~HRh6uu_EQ6_K7Y3X-Vevir~3O|s{|H=Ka!u((Ph5BDn z-5HhNP?ZG!JE}4Qf1o0x^e0RIBL7yJYict!|0=6nDP_=vvMfcYHbQkLRJTR7F{;e} zRp$Td4#q}n?Z~=KNap|ltv8vDYBTD0L3IyQcSW@&s-UJh*+QAvS9ha^`M=8ipNwR+ zHT8RvZOFFDPy9|Ei@Lnd_=eI%JAWqnbfAKsAdhe>7TkwaXH- z+WSh4KSVW$YNV%$D=m%dr3F>WQ7xicqEN1DDyUYesns5!I9G^2w<7rLrG+3VAAd8rdJ!Gf_RA@)=4AL!F$ZRAE2^ zgUG?;dF1)z5b^@@Lh>SVD0wk?33;hf_NCR!P#tDuZS)FMZ%6e?RBuA{ zDpapQbvQ@kYGv|$YnA!G%KTqt{;%FZn;VtV3mx8@Q5}KmEtGFK!b-Q<*$lsNPKt^S|+YAF5+eW&W=+|0lcaDicNZA+0M*A({S4I!sJ?;fL{w*>`Z%gjqsshWW&W=+`5XVwpgI}VNsNcd zzxp4_%>UKrRW>nCq5cJODmhKJl-22GW2y2?ROg}kBC4;T`VwtkR+`oRDmAmn+2kBv zYjgDzvAF=}Q~w(Ix>BZ3SY3eXd#El%bvdeUQu7wMh+IrALG^7^m!irqe`R3hniZOy z_718mQGJ(|E0kvBng6S+RU_ZwcqLy)9)X|LXTDC*P!3e?awT zRDWdYPs$`URhj>*zpBRc=yz2AMO7Bb->Cjc`@fVXswDGlR!!2Q+E%DFLX9iDw#^nl zHAYfn{!iks?SNWu)Ec99ENVNV)*UtG|5{V6RojW&8MWQ@PF-t8?t+>;|JfQfdHy5h z|9`2;^B<90lKlTKwN@%8Go^L+VBOZJ?Ma~x*;c8gd!g2jLVMH>MXdvB2cWh$HT#ej zY6aA6)I!u8)Lhh3sAX7`R!;AUTGj~a&|{HL21;28s*lK=Qcq*l@JK6hCiy!)Q=LBnu60JO3u=e6^a%1urLpNs zO*itW272cI8uNehEU0!IY7+VJoT(nl~-1ZsLIlXX(-gW9R6orqdr)J|gQ$;wrU zWj|_8Q6^7#YNw%g25SAOKV7L$%w$!ZNuH%NtLSXh9zyLL)UHKsAZk~lb}nicqBaP% z^HJmezjhuyWLS3yd4V$7z0@v3?Gn_6Qh%}1#C$0=myyHB%gHO0YkAd(P`irC;ixhH z*RIi16WevDjYjQy)NV%Y2AVPd*KShTTranvb{lHU|Fsdc8QH+Y?bM7?nlZlvHKzL7 zov7W#(z}((vzOYvs6Bw%ebh7m%Y`7NwK3#_N~3ugwHHx)1hpqn8;jaws69%XapZWV z>BR(UCX$aUlh6LOCsCV%+Eb`KhuYIDeTJMwGSk+W|C8KOWB#vA)>6}V=KtDM+D{{= zlQYPf%H)1gdkM8SPKjyjfvO#-+Rjq?zn-60?WD4c{EFO7el0ZH^)0G?K-G8DdAyh{qW@RX|MfSO zRllHWKdOF3)m~I_Bv<{;rRe`ve=`0HReMnNH>&=Tx4IJ))k{sPtNvvU{lAL-uiFqi z0I}ML9f;V$h|&LJwIowLwN){82zjVbkBZn~h#iU8;neB>>PvIUJc>M8s6S7|jz!Ey z>^Q{QAO^%*Ayx;m`iRwKW<8sz-lmA!?>U>gbj9&r7&J;!UkF2XT*LxOuwoq@EY+75y&Oxj_V(nOZ?ti7R z4pcgloyg9J#TZomw+mvHiDPlZEc?D9YTF(jE$i}|JP@_*f=WVN&3H@qsAs8HW#tG5qku&Nr>H# z*kr`+L2L>$IsZ3XaW9qogl4NBKx{f<^#2&=|E6sZG4o-e+0sW5dls=7h|NTd{vV_N zo0^|s{*&ZW6E8y&|?9)_TOggw+?Z9k7&R?1WVhv0aFL%jB;RqyNX~|FLgG)c0@1 zzJsMq@_VNJK+^wX^#2%t{1xMmzheCHSByXYit*tOG5-E5_9wTLzyFHy_g^vo{wuZz z)<*72|!!a9MJw5(e+5M&Vf~e)ecqy*151cagp}0=>Jwnd23qR8I}dBiU~2HJ{wv#m3WQJBrF$J z3RV^t{ol$+sXo#z`oHCfqOX-%9;`eppY;SaG7D7b|7O_`)+MmYu)4vDV0DE>|F^nG zrfKJSTCX#bb%%8!^^1h2Hu}HSLlm=YPgqyNx)fF~SeG&Xa-p8TS-q)TA=Kwk zi~euX|E)fvn|k`edH_~`Shv9%0PA{K*Kk?-zeWGI=>O_r-D)Z823R-4x{)#c-x?&b zJ_aS>7Ff5kbg)n#_15jMM#CBcYXq#JET#Wj!zI>UXN{yz|F`J>>N>MjI0n`|u*Slg z2>s43}!g>nU zbXbqVqW@d;f9ny+)cvLcYX&U(zeWGIX0lHDzpRm`012LkwFuTTu;##emO0On^nZ)~ zZ_O6PjC1ZPyGY4l(gqVDj$(+$hC6#TkC|X zW{EezRtMci*vG-z1nYNLAH&)OYcniW!zZv*&Zk_K{%?+g&!~JZG~2ihmNNV=sBahQ zGpx0P%FY^@U%~nT)^1qe!upz}^ncS2-%+9eo0@-w^$V<@sQ)Z9nZHu`O=vRzfUS)B zPgrWd`~_`Aa2!#HntY7SzumTMD&b*{xu=hus=>Ti9o@ z^lY+?P|wNjbEvc<&lT#vwL8GBf=&Ooc~Y=DOR1hK+A-L1*cO+vg{I{RDoLUC4Lc2c z1ndm#%VB3>cY&RQU4ZSt_F=os_gKRti~}++)T7QW!Y;!uQ4eeA5f$}z2UV0?|x^wK~o^ncUaH^3eO`$pJX zsB-LEVBac%YLEKZZr{ez+l9K9WOYMf52HR@QT}&Z#F4OHfjtWL{jl$VeHZM}u1ZyGG3^UN_ztANw6nUzq>}}WGYk0sX}StJ+SYE&4>S}#g(FN6SW_J{V42d zupff`AoHgS^=AW`E3f1CGz+PweM=KY^G@Bg%U|EJCSKW$!Y zw|W1kJxe;uo=wgnUm)j_^T_$+0+P@FltmWGN+qEG+b_#o)3#S(zXSU<*l)mo9rjY# zi`l{@LUY6|qq1CRj;|H4SHY(L+bcy^l`GoxfBS8T%~AX=>@~38gS{Fy{okhlo3($) zrRe{vZ>5H{us6V7$9TQajOvY4HVMtLn~}N*_9sX*g8eDt!(nehybbKFu+^4+2KzhM zpTph>TUEOq_BPh=h0v_)ODgn#)7o9IzlQx4bsl~C)0X`Wm2ZW5_F}8y`Wx&YVE+vJ zN0$C1G)K)ZROtU^)cp>759~jv|4IHu{!P;V&35gj@~_aeb06Z$y7wb~DB=eoUJLO9 zr8G|e*GFaiU@C_Qbv=?$8*%!7{P6$u_>qX$LHsDhk45}wE_IAhw=;em6$tg(<8={l ziFiHg^~vMO6J(M2iDUz^A$bycGTDf1OrAnEA)AuT$WzJF$kWN@WDAnF!~L~JJ~G75 zxtH>B>kv178 z6D0rtE1qJUCNm`O0F3jeC~=31OY$$^)_<4w5jQIJ8Ux;`&mR?Y!l>Q&@E{fS}JrKVXar%F}r|9}zAE*DvFBir1SZ~A! zB7OzpwEFm!h|~Y$S4)oe;do!f2O!>0lz9IdwOvEyTA}ue_;rZig821_--P%LEWJ@^ zwqg*Kn}ufWw<3N!;)AJ+|C`@#$A?fEN)8jMBT>fN2*j5lJ`(ZA5gB*gDP{4T^t zBYr31^#3^h->i}TAE*E8Gp4F4J^^w1fBbH#*^K%=OX?R#d(O&XRv^Lkz6Q4BECqdwp1B){AI+|(ew&SUlnTC zioZ^U{%`tZDdImOz6|jX5nqn@+laq`_)5fAFq8go_Twrl^nc?>?;!p@;_p&_PiVI5 z11hV9`m7QE2=U#BuR(k#;%iyDj$BV}kf9adNNyrOCO4Cxke`xU$gSjOWpV0r~dqg+A_b(E)5dR+%%JBCwfB%1_3HpD6{;!=R zaWE1MkvK$h5{Htt$-`v7Ck`i%Ade*ZQ|QFejE^Dt|6hsY81s){5_K5YCF_y($>Yfr z$P>v1LbW$#T_Kj z69vXavLyVSev&97(FKW!I{n|YwkwtM$n(i=_4lxezEtS{iT;cSko5lq{Xa2~%5~)RO7{Xa3>1i_DAil0Ve0TRz3@d6UhA~6dI`hVhi z$uVPTHkXrnVQ6T!h3zBvqY@Sjy8x;$_CKAn`d8uSzG&z3VEwedFmw#^5M@CtU}@~5fg8d?;xQj=kFr17K!(e z_>kiJNPK|AYO}1aC-D)B)(F*0HfJ3Yn<%bFVgnKzCDzI6N1BO`S+w~-G4UytE#y}6 zGoh+VFPPw1N^C>o3nYF*Vmn*TzW__@V7!yuMe_O22|oWh@imoigtCp_BJmxA@5vv? zABDd*VEi+ZYIOaA#2&u=6^Y*%{7(Ks{z>w$!4iKn{zs_JBeIIUNcLo)P67WzvWoFO zB=#f8|6WNRAWD+$Ngjk`ExzUdKPLJAzfyWAlC`O;-+!sM>i1uY>i1uY>i1uYymvHt zG-LJqFJ0TQNb>$4N#HF&$vQ~#{vT25A<6rHlDz*%De41n@E8zHIupI`ne3suu#H8_(^kvt8_W=QhCNR+ONlKlQx?KSl_*#gP4Sk)P1OY%%4 zdGo)ltF`fDiTPWwWE&*gBH0nibC7J0WIH6!m8H~=loi#;k<1P=tJ|0Umm5i!YJVk%A~{U@LG3}a zcK-QSawIDmMcyHlhK)vYOm#d~mfEUTH?CS4kK|oUn?Oz^?-pu{kQydaoI*||`TxJk zdy%{kNj|JQc|Y|B$Z6z*dfb>gW1&QAUPMw7bI3M^>fAKJS68!tUAh!E6)Fu3(b&F z10(qolCL63|4+VR>{0aBBu;YvpIpp%3At3L29K03N2(E$Zy@rQ?~<#SSPg39DvH2Ha%=uHqm@*m03=lA4ZF7>a_v~wR)YGCXaC3S#MpW0HK|EFqEKbYk6KT~}Er%F?%lsXKl zW05)>siTlOf;mSD)mBJtN0Y}0O`XRf)etFAuS3=)>mhXlQuUEKUf!yMOTDCq6On3Q zVxycy{bZp&v{Q|diX(LjQfDL81gRECHAU()q?$4FRH13l=~S8vO?%EjsufZ#sh=s- zy_9NA<*XV?8>BiS)fTC9kvfN^?S#4yQ|+nH{Pq4#bwVnJRA=f{LQ}Iv#TM$3pGqK= zM=FUF4}??-DbD{>8ObrV<&g4_a=0w#|N4_i%BK(ne&}S3gYAvFf6;Yf`_Y6Npe z3QdpQL1nbiY|B`r9z^O+>f^}qLiI}BMNS|mB6T-|N#ta53OSX$hrE}(kG!9JfSe}O z*K< z$#p_ma6MAI{*%&gdHpBF>pv-8|4H%sk7V)^kZMnAE7wl{H+`$bACTIH)D9MXfz);e zUkXjmPNa4twTt>!LVZmv^);1m$ZyH-NbVieS3e@9jQuC1enm?BAE{r2W(@yE<#(Ze z#z^Ww5I80mu~CtXXZ zw<3KAl|zO4Tfg*SNFRyx;neB>+AGpWQKA2vWsgO=0n*1IT^DJvw2sh})}vCNfR8Au4|N0tQx-rscA$?`^r=WUWll4p9zW^RsGKe|Yixn^nMj{O zy`@myyrh_JMYa~|(U?9PX^&zXq}wt$hipgk|6kJWk#>>pAd93s%84o6iR?^PkulOD zZ8Aeo#BY(qfig?fIHE+X9@=@QaCkPeYPAL%mE zU678LSrO`^INg=Xc|v_YO?N~3BBU>%PX9MO)}6}5LbZ0q^d(4Nfpkx#FGu=PDwowL z?M0=x(A01x(tVJ=iu%=Y{kwET#Xa2Q$7+sE?`i5Gq53UvPey9**>#NRL2zG}0qkI*O$KtM;oe=F(%R zj1`(K8i(`*q{magtA;+23jN>1UC?7il$G?n8PS()9l{ z{ogG0AnT$3rypYcF!_j3U$;-sKzb(9^#AnZqU&=+`Uz$}Nj^nBO+F*k-!rD4LwXL< z&r_d8&KBymt04UX(sQZP|4pkFApHi?FCzUK(hHG(8R4-BZ4;VhwmTmDnF7xk@WvG z{XhLH75abrcgBB^f0BQZf0O@^d&s@yza;0_>3xj%3o{2Ga}WdijM~6VEqSZ=VCE2H z>LGI|GDjm*8<``JIgH7N3-z{Vj-*2W*Zq?@1{ol8EcN4r+G#WN|4dy`^xnzTN9JT? zjz^{eGAA(qM4`UpG1HLBNj35tA=3nz#?(&{>U$S6^#4pVQB12&L*@}=PDkcqWSS!r zN2Ucbt+?PB$h2f|rci&UkZFxf44Jd2pG~$Q+sa4p%sFH`@?5e#*@5gxb|O2IHJ<;L zu~?5SG+UiO#z7{DOa_@0OVdJiQ9?13C38aU&lwk)3z6X|DMSCy1kA~ET?LZ=|C{0e z|7Joe{0rbr#JECsA-j_2k^CReOgF|C2-VNZWP2}S{oRG8%{`Fmhs-6&T!lE7bFi4E;ZIy(rpe zGB+YK9hsY$If$hHXZZZ*44?m;8H~($Wcd8&44?m;86pRDW+*v~98QiPN0Ot+JIK-G z7;-FmCpk{2=3P?TUE~CEB6&ACiJVMMA*Yh}koS`Jk@u4ikkiNqg=%A^e)@mrVR@^b zVWpT+zyIBY%nW2+K;|)Iobmb_J`3`N=YcO=kC<~=I(e{Ei>1V>&Xoy{ogG6F*4sEvl$t+mQRq`ip;0X*&;M!oBp5S^&jJM+mP9T%oohu zPJSs=>s5`+(El^LsMG&5^#9D)qUf_g=38WbLFPMTenjSbX43!lSu#Wa&-^UHk|e}?|ARwtu{{-2@$>nj79Jt%BPW-kI|ZvVnj=J`M5?nY)Gvh9)CkL*dv z9)Rpo$R3F7VaOhY>>1^#AN} zlB2gMOaIT(|MmGLTOZjIkv*RE(EqjDWE)VS|LgIbJsH_EkZpu)Qx-Kwmj0h@B5(Bw z&o)E$bYxFu!f8T12C~hmv=Hjg_}P}owng?#WY0pDCxvWlDb@FeW$FJ}`oC%CIjo@_ zd9F|&DcKIlZbG&rvJSGHkWC}o8CeV2DrUxn`V)PY{-2FgPmoDzo_b|@3NTI0AWQ$x z<|N1ThKp>8i+ITT3<5Gw7GyYOi$XP4B@U6TAX{c>Bs7(Gq0*H+k33(dG}&%K2`)hP zLS$b>_9DLRPF_s*ATJ?%B0COQ`hWH^WXB+TIkGn*+Y8yNk){7as%kLxJdW&4^H%BV z`Q+Irk$nc)r;vSGI^qA4v(F;?oSfgaqL`h<`e#=+Zw|6AP?<~46RH&{W*3kzlDz*% z#6{eYmyms#`YS?{{~EG1kW0yB$S#*a>Uo1)LB5GBpZ_m9{{kS(M}TJe z2vF5a*>{=7=l@I2`^fV7{}Qi8_CqO^m`{Po@-G0gYpJXw*OME_jn!lFW8~D3*o>SS zLZ2Y}1G4o0Ed4*bl{@h>x!juloaCj~>^8<G$sOcQau@j(xtsi&{D$Ozj%4|d zTG{VKQN1T?`H^eeYML(3RjU4a)$?^W59Pj_h@&2EjPUHPQ zIo|)1~YBP{vV0!nEG?|kUNca)<^Dm38a*_0Od|Zj`#oM8d5xoJeh1nHYQIY zn+RpurpPs`j`=OH*^1MVYhJClVCEUfwPbK6*@|pUo<-6+a%~v56-xc*AlI%sK34)& zf35>^-H_{uoXea}$aSvHsiG1?&SGGbaWX+B$rPC;GeTKc7P(w?>_}j?#Y4`o)&pkd zkt;ALk|i=E%Vb1W$Sy*uzbkU*RmVI9$hKU7+|?|-5V?!0OS@CK7`Yw{E+Ko8my(x} zmy^B7-a=W+70A*5CB8}&vlV@i>sy`EkD2|E8^GWi@>+5rc^!E@c>{T)Q0lx1xk1(O z%@W8~+=|@o$PJcbCwH4rpZjt{s0;g%|>nka&uVQ3*=mK9ywpAKY8U|q_R+`&LfJsmylbD+{?(lj@&C$ zUL{`>>X}<^F>=e0TS9%Q(DeUuDsPZ0NdErUY|bj=K0xj*wzuE6wkyG9K8FJqt z_c?OAky9JK6S-~7ZyWb!--M1g!)sY6Q`0OlO!kqPMUFs+1`ub^nlZy z`o%)CXD^}Blf0C?jJ#Z^k87tloR{ES0q1HsSF-dfp+1_NK2-XW{mA}uXgKtLhyL%- z{~h|jL;rW^{|^1%q5nIa|2y=5hvx6x!g_9nGY!sQIOE{l24^H3HB^Sd83JdhBrH{r z>{d5jJOXDpoDt&oi&x0CCUx#`M!^{a=MFfdv0;?__vN=&$|D(_v2gChmpR!4b-hs? zfX;Y0Q{dbM=WaL?;7pW$Q+=z>2 z%BMUz_rrNW{@X=eP*UG*sfPnQ55jpC&U84B!+8kKqi`OE^9Z)T1NFCJ`qQg31I}ae z1oHLY);aPM>|Ow8CY-0>JOSrPyndS;u*&V#!R|Z_=NTE3>hh8LXrL~hJI}$H2j_V> zYAa^JnT_{rVNq}KE47QA7vRj5v8wJJn)j2O&Ybyh7Q#`hcu{&!9e~PblwmrHpZ z=Ww>csXmm{mOAu*wIYeXgtJ2ylz6Am#9y(t-Q?GBzGcEUrqtwo5C0-KKfuqy`4N5! z&QI`fs|G+~b%AvJTw3)ur{!6>nMN@o-OoI~?wbaBqd%0B%3H4dEu?o&>j< zj9&L-xQ*bR!nmUTNNUUC}Dpl%sl0!*? zD!4Jx)mxVj|8dp*pO3(elL?`EsS)CG{_m#Yo(DGrmk)V!X%210{3#bJz07w+{=uv``_&a_bL{tt-gZ6l_o*A$GsYEA5o<8zAREL><{-A zx#7?q0QVa1g=@)yaBqNn9o*|>LsXOgZ!fzy!o7((gUFi|>(m`BvC5SG=OrNbHnVr! z+u;t8*d0m^GrIK82za&Oj)eOG+);4vhRgdu-O;RP3^|s(Qz(^>gF7DX1jcuX*BO1H z1ZtnkPM-vKGTa4lr@(!fnN#8319uu5a4&fu-234^Ah9|nDXMdj`(PdWA@zbgon);1 z+*O0;dAN_leFE+b8E@`mN}#$_ZI0+q!sQQsUH$~veOlJ8DwoaYPk>$i1Xzpi zEV#4b&SeYdkS_@JCpC8-mH9%cnZN&a7s7oX?jpEvz>|H{`#0R(aDRdO zHQevuenXxA|E?OZ`oaAk?oV)kfcv9aojM|QtL7HSdRafLTg6+dBx}!J>GzWB{nCi+2dT zLq$=O8MSsPIt*Lj)hkj-f{5iz=Ju2 z)yAqJq1NuzgLeYF`tXhy6IP;{TuJ>WO00IhYJk@eUSoJC!D|Fh{rNAKm2rNYOwT-? z2vn=oTdyg+7Vw(EJ00Gs@J^Ft)emY)qw>Ax@>cn+qIU+oR`6QFQS*U7OlO+jMnnl`1 z_Y&{|cu9Dwhf~!#Y35`|)v)8(8%}kpOWlL#OJKG-5AR}l1$gJfE5a)?r$mNA>CXsW z7b=zNrMkl7m%l1Oy_8=mdfnh%0PiBk7fR=g*j=bzYK+O-9^@rtPx8|0Ixm;mrq>Ie zvQxEluZMR9yngVmgx3e&RkAO&MT zruL(mTx5B#--p%lCV)7uNDw6v7$IYhB!SIH`yA9qDc(+Uas{Lx>>J61xz0_8F z!zI|%P3Vmz)u0*+?+(VJ$uUBcb0?K?@a}>)UgD2#snbh!+5{c54ZQ!~o5XFLOim%E za%idHcMrUKWo*b$yw8ZzArHXgslj`YYne_yL_Tcl_a1@wD3uvTk*$85^{eh$3y;r# z@c8@(kLK_3`41jX2OiDeqxpN!!+R6nEO@FJv*Eo6Zw|b9@Lqt&bAf7-`YPwj{1C|%*uNO-m8+JOj~^hk+!`KZ#lfh@Rq_`B1P(@ z9=Po-lR))=EcFJw6;g>V70+2IpDDam@ZN{_7QA=hasICj-+LDxC;uv6Eu}ubc^|<0 z2;ORVoct@@v~!Krsg}|;d+Xq>m)P4tZX|gL$orV_X7UsAQ=uepfyW02N&J~8svi_} zgS~C=zF^vRcz?nB65e<4cEI}z-cHF;FOR1H33kKdoZtJ}EG~7j110z#-mma}fcG=J zAL0FE)}j{FtMh)TUg>Y}{(x8Q|FSGkf+p>6_y@uJ2i`t-d*Jc1zsIitB$F-wug?AO z4}i}zsVdbq__g344*y{IbbkMkYP~jmPX5*6x(5FU_(#J(5`MK}YBe90%@Y}#Y2Y%Zc3GLu>vZrcL znA}|M%|`#kBST_;cV-W9Eb8bdvx7 z_CjHLhj{0i8o|NHcRpZ@RD|9$$uPyhGn|307pBh~T|K>lp$b9t-x z)LgE89yy;}AXH;jwr(N(H{maWzZm{Y@Lz@hGWA!4rcYj@!s|aqSpt7K{H4^F3C*Z@ zgUSk_*;6awzYl*E{CD8L#nQJGiG2)T+2&^WzrgO=9 zC3{fAvg*_T?9uXI1a%v%sE!5@B9ovh5oO{Lr@PvLj?7y zA5We@o=7$j>Jbv0MCD|mS++5P(-EA4pc#TDENv>(<1;vw%4s$7n9 z0`(CnH3a|g0%rpWYK?Z??fc_lhBu9VW5%BtdK>s)G3=k9%(EkJa zzv-D0Yo`C3%m~312r39JLC^(3cLZITL;nxx|3Nnd7a~yifAVje6oZQ-Rxj1O;9}ds{XcjF0Zl%56aoD|p#KN-f7K*e z@CgLZAfW#T^#6eVZ%XO^0sTLq|0}SlH2$nOG{%>69O)4veX7s*= z;9Ugb{|Md@nmXzK!TX}97E0-A1RD^1h+r)O`hP(GH?3O79Qwa$|3)gC$d85k91(ni zU?+l45qyDQ3xdxPY-P@8LQ@<4KiDRUJ_ktywj=nGnLC8)Goy&R5PXl|D+J#l*iGeY zq1g(~D*~R0%#rm2f}aum$jqOZ`90%b$X|tKdw)k>`O+WAH$?C!^2&t&LSBu`zY*+1 z@DKC%kbB90$^Qw>vAJL3`~gDkVEKcPKLq(&)W!eJv$OK_|9oxg^#A!kl{56RR2^Yni`2J$B%A4mRV z(e;V>FkUyQ7&1+=R|MM-W)Bp3WpdPE0Z%v*> zo=vtP+mh#y?Z|V<_GAaLBiV`UOjeOG(h|xlY&qN{NFeVcpF}=`e2Ohe3-zAOXQ|Nt z^A2PBf8LW=fBT;gkS`)n|IgF^P4ChF^Ynjx?#M^T4@AC#{3XbDLH;7-yCUBWdHR2z z{;yi4YR+FkUMSQ(FJgD(>Hm59zuB8Tk?({2rO5X}p8lV|T$a-FD%T3lx~@Zh2=dn>KM467Sb8IQlTiPXE3by)VB~M1 zeydPjOH|Br{-3{HVs*7al%dFvMt&IbBat6YWrR>4#raWG?hu-NF$Vc@$d9Fdr%+vR zkb1_GcM0{ZH9rvr)v$YT z4*3E(mz+n=7s`SQkbjW@|Nk-1|9=$yCFJ@4k9q$2WBygiQ5Wr{i1YvaVp+S{BTJEg z1Nmia&vK#qVp=i3f~5cJPqO({$ZtUYE#y}t|2FdPA^#3@-WBTam-Fva`9P@sHvb{= zYmxtmI{n|&Pyf%a7v1dHjmYmseiQP4BTxU&Z{|{;ke`yA|L3%0_KCj;XK>kQ7|5wV-r1F0i z|4OR)zlwh+{}4(C{wY+k_@OHOha&x7Z?EM1i@ZM4_nBlR77jq69SR4ca4HH1p>Q$^ zwNPk)!oiYLID|ZutSv*ma2Rpe-RH?zLVXlfY|1S&_<+~%OUys5~DBQr9{%^Ko5EZ>e?B~L*G65(IR;+X0yC~d-!tGRskVDB~ zgX%*5zwmI!hGrr$QOlX zJS;+i#$I>{g_l|S3i&F@PmTqC1*~e5dX}KD9EGJUT_!Yp{|zeif3p=UQCN?{Dil6I z;Vl%@PJEj=^ncS=?@^)u>!oBfSEKMDb^3o{4db=sI-zO#1{AiSun~pLC~RWs$3ior z=>G-!zscWe)s``G56XrSK)n_n@!?p>ounD5@Q|3&j>Fe1+nXDC|bz z9~8bu;a3#CLE$G9zGV&Hk;?y7{mTCpmH+>rQ~gZk7vYy182^UCpC~B*SDDKH|8Kkg zqVl&;|E9ID2SsJ_B!TJCU8qDl&#*8byn-O~w@&Bv4FN z$0<4AZGMe<2E{CcTy?2~qFWt%)oB4+m?sNDRYS3eVu?XWmdS|Zm%qg>jJu-P6UFlw z^Ske2H^vu`7m^o|-N}o|9^@rL_1(9uj$i&3FJpW;*^A^CWW_5OUrAm?UQPB9>IN$o z`=LnxFVg?DCls$maS)0FQM>`g>$r{A3(aVu{}*o(#f-h1Q5=loEzG=CsE^#@ZB%X- z>d#HZp(sv7aTtnYP#lipC=^F9XQa^7e+QM(ROq_Ju_%s5@lNXFgnIT~yo<^Np&6NX zqj(>RlTe(BBE7dbMM_nVDHeHBDBdfvI@gGDKZ*~c_yFT+LUlqHeLDG&P#^WhM^O3} z#Ya(Gg5nGmUqJCO6rVxyaTK3KaVGQW|E6a8fAMM2b%z(9MR692&oPt!Z+dAq75cya z#8I4!;!7ybL-9ov=d*NyP|v!H3#lv;n*H@Mim##g3U&JbQaWn!bt*hf=qo(Mr6_%Z z;xZH!m!r4|Mf!h{{$G5P`76m)up&e22liNBQPu3NiV)@8=PrzokmZDAX>lJx)L=P0Sp`F|)qg5oxmE<*7Olxm~6ojG5U zJ5bzDE@-tpIqcu@;8#F zfZ`u=Z-Yvc%)dyU0*e1I-ec-1(*KJ*^dxg1OZTHh|1TXVZ`G@G5Xn0p!&;amE@ zDpeL*It--*MVr*)%r4z*b zODB>I$cCiyf2Aw`S8PN!CYApyr3u+oD77^sPZb*FbSlkJYC%!uoI#}}c_vD&s`b`X zcnT=-6i{k|Qd=>Z694?Y)Q<7FWP7rMP}bX#>_m1ZtH>B>kv2+v{=dqXI+G&GvMDl6 zW=OSNISHiHAzji#$*F_Qb?A`h^&xZ$gbphS7UdtsY^<>(m)yidjdpSzI81$~zuaH0=P^GI-y1H8LgHm5+_N!L< zqcos8zJ^8D%FQ9tr0Y-`#(<}Q(hVrl|4a1$(jXS;U2qHITgk!XZ9=K!c9e!x$3rEM zkvzOw8Nr;92A5_zch)QOim%ElJ}7J zlJ}AKlMj&7gi_CgC{3@9A42J26PwaUQJTTD$H>RYndB4XljKw6)8sR<7fO8oXX!b{ zeE4T+7GqxjFU>*e1$nD_Mp4G+Je1zx;`33W|Cc!bFVX)?^#9UJOn8}mg?yFd7fGep zS?M7)Aa7c#B0K|OGlZujr1^)ZNvYl! zVRPow|Mhj?uqDFQ2+yS6N~rrSr1^(D48t}oZA+db)N{!2T!dQ?wnsP&VF!dg5Ozf9 zBkY7Qjj%I93n9%vr1_hgZPpVf6J(N13H9gwFoV!Rn5CW*>U|NqR6L>S;Q(P5gn5Kz zgawus$r2d~^=G;;qEZp+S!>u8VK;>5Q9oa3dg%fxH2?4-#@)$_g=W2%ARLIWC&E4m zFGbi3;bqLZT&NG^us4+}$ScXKNcz9NMill%H~=C2KkP51`re_C<{w@wirKT*A-o0Q z^$2f5cmwO9|LYlbNdFIc)SLWU5#Ek)Ff-}@`X~$O{~^uaY|C(j3lNS#_!z>G2*)5C z#ii~bM+?oq8;kG}gm+S>|A#dHkk5Y(C&-3}6G`6x8BSu%hd+l?81v!JAs_x6-b>{^ z@_v#Je-5WH=EI-E>5TdC=kQ^Pl>^9H9%UP52+dYJj__H8GZ8+8@ClYaDb!9C(*MI} zL^1vI9KzWMpJ(PQq3NGFROnsdT*mXr`9k9oFCtula3R9i5iUab3PSpS__E}fy-)uS zUlT>wtb%Yc!X>P2DY=YXPVy9Ew&hKPA0k|d@EwG!So#+EwovU0b(nHi`9KcxSMJ5W~6$@_o8T?qd`$oqdn-v1Nw{-2Qd|Af5%C*=JXxgE-F z8PoqwZRb*HFErcL5#>0_oluUU+?l0SLX&S%q5qrhO;Dl#ms5<>WCrCN%KQ>X9q+P@ zj!?bS+p>r9B`EtSS5OX6E}@*~QuO~a{am!{$IXPPHp9z$U#DRdoy_p z%C}Z4gQ?s`-cAldd1!U%FqDT^$0JZ4SsjmJ<{c=HHp;x8P#(**)Bn}LmTei2@NqM-L0S2~`kqVOjPwY~_o8wx%J(6ff%5%`fbs(E7~8@(Hf)Nybl+Pm|A(&yu|SSbm=IEOItE zhkSvYOU@(blM7ImFMlQeG*4v_%CDeI|1Z=3^(>-H|1Z=3&E8y$@>?h`L3ugK^#AfQ zX}KAz^#8Ix;@;#ItrYhV16d_hU*MMCM)^II-(e~J-z-c2FVp|a^#AgQD6c{JBN<3$ zRIf#Oof%iAJsVK|9p#NE|A6u)l)pup{$Hm5m+AlIPr0YIkXy;m$j?byPSB4y->YXEdPk|FDU=S_-E<|GX9nPt%mXk%KxJL zC(8ez{1;3A7Mg9}LuIef^w|Fp)k1k6_5H%=0Fs~kqJw0?jdSW8{u-i#sUJcfDtx~d zqS|t;DLRbe;fRi4a3pyYc{F(pN&kNN5?uhCk>V~L3qOOSO{}KH^ zI+4pZK$J$*5K&5obaWD;lNmH383rz1)rYL2K1Q42(^5UE*& zN@yumU)V)w3Pov+=v+i+A!>{0Y(#D3A2gPpp?*~=L39qHcK9unADJ%938VIiIw9(S zs3X>Q73F{ZsdpCcUcfje123{zzfH!?dZina604W`_1}E{f+NbXN&KO4l#@wU#796! zE@O}M$$-oYC9Qy{$e=`qWSNYFl2bv{#l+Go`hP_KS8Y)HNCv|Nh%RJskx(Bm(Zz^* zA?ktXQbd=qw5L#yvFI`?^na7z8_`vW=>L)Uzwxe!^Z$tcZ!-HKnvAGFqA`dDAR2|} z8rF6#Igq?g4vI+K|EZ|%|5Q}>e=4f`KNSa&YPzCgb@Qj9y7^OaFsbhURI$4GQ*j76 zlpID5Cr6MYh3X|e!})(STGp<g(bFWbMd2~OO2dMDaj~+zyFrw+y>Hnsmbt(PdEc+OuoroSsv>ee) zMDr0nf#`WePa=8-(NnD9X`!C$M$b}tPH6gn7NQpr&89v_sLx{2Tq^T~>X(3u(E>!T zB6<v?k5yjN33}gwS*O|FksGr*$(f^}mHI{t?(I!MI5Pg8?O+;@Y zTFIqW3C*^1{vXl*qjy>Qo;h}+_hpT$L!#A))+73mr5}-N$hAWCimJ~7(FVTVDAZ^3 z=wn2mBif8;3nKb|^r@7Zt=r1{&xEGuRc+f5ZKM8$P@SX{BhLS$9W^p{p>hJEuTVJ* z(QZ^!JHKY;H{`b@{XgRTKl%X?C;u`IIscD1|BpETk2wF2IRB40|BrZ|RrIH9NW}Sn z^fzP9|D!#OIscFTWvr^*k7%ECnp#A$!uh{`TRBMDQ>jHBOw#`=hsrRh)E26jEOj_4 z$DwirDo3M2|F6*hb&pk!;j;99{TZ+VRO+Ephk9M1?#W7hD)fJSpG@UMRL(@D0V=1W z(h!vBn6&sZpm$iiY z{9B1rNeJ~kxspO9i%Ob$MyOm!u|nsmIE-D=BYmOrbIHl0QbDDFN{C94N=ay1Sf&!y zP`aRUAu3&|)Bh{<|4KJ17YI$O=>L`OqL@9{1C?u0xdfG~QR#`w<)~cBrRe`=sa{li zlUI;el2-{$tNNhQ9~I93EB!<_Ju`rr^nW$LlwKK#%8jU8$C&f~$_*0hdL-c{R0gs1 zW}(^dx1ur)mBFZtL*+J9Mx$~&D#K72!pxyUGfIb389|ODN0E03^%HkxEn`p_OP&62 zM#Xqk?nUJ;RHmRp|F2AB&fVlBa{e|;5EYQ7H@`hVqt8krBG@)Ro5QF$Dd zhfsMGm4~@3M}^tO8B`t<{?{8bQF(&;lR~rJr%{=Q$}_0UL52Qbd5$^Hle0+rzjoTn z3smL`^>@M2&iSY;p#GxJ?8il@e2dCUsCLR#!p+9XLzG;{CFow@s+?N*j7*$c_Oizr04h-lMdDcLJ6N>TJz zNQ#iqBK1GN@0pkPeV+IEJm>wM-<&yfX6Ad&oICg2Um5vZwaDM8Y^|pJi2>U&;4kVN z|LY!Yzz!-qt3~dDu@46P17j}?*v;HMLhU5R-jX(I{TFZS3u8YRwW-$;svp0Tn7U*= zp;{C|l=?6ZhH(Il#xM?q(Fg|p-=P2Nb76py38Ai`Y^=zAQ2#gjmn!z|6 z#-Yrm|Lb#M96_bIP?uvI3FBxOEvX+R)U9o_qH>H-t;(fn97nb$kH@gLV6?&Dw_&tJ z?tU2UkbVG0d!%N;I02>$<3t$qVVneG2#k|q^oMZ@jBYSah0y`VX)Nb-@(iKAK8=nr zI>YEh{Y;_09*izjx(fAmYjlUv8^&2M&VkW`xo49-6%%bXGu?|kR~Wazc`*9I=tKQ{ z;m`COgZ^(^P%ZL87(R@PVB}y7fMLThxE1~1p#K{wDps|vIQ};r>aK9}6)-X+UjdST z^Ds&<=>G=&U;C0#=2rB7^=zxQH3Ap|nFwJ-OjLyNRWS(0B`^k4r~k*tcqx_3szqK7 z<3Si|*CSzE31b+Ht6*FYLtm3uGyWR#TJk!fb{^vfD)j%j{NXTefkFQ_=>O{ZOKLlU zr2oe?ybZ=(6mN$?|2OWGf8%p{H;nsW(Eknkf2`C04f=n)$A@4{fblSlr(leNF&f4r zEcQ`hT+hd-JWh@w$I29e@dOOc6>QxoPg0_cgYi5J`oHlEBgd1^lJtN58_>oJR9+Ou z_sdH#UWf5Aj8|dM{|);8Pjmxg665Lr@qIKI#xxl8e`9L3a;7u#4RQuKQ%j8d?3Rg!(f< zCSW#($;BUZmZI4d=IJmGhIuT^LtwUm*$n34FzNp${a-tbN&h$L|8X6Tgn2Z~mfZVM z!Z?!tZ_@vDKV=>VQyF_}m~CMm&-gY%RX0Vm9ob%}N8sj(Fi(Mb67`dXdhBQN{F?NC zbxX>&XTa4zEt{=^nYp6{xJFer*33(08AUE!5I3#N&h!fR4kzy{3x3A zf76k4y!Q-}zr)PJoCY%o^A?zSm_uL|U=D;?gz3R7aoaMtdXj0M49JkA|C<#_>nqb7 z1oIM@gPD7=Fg_ysze)esPle{?Fo(kA{bF9p_^X7AdNF-9%o||R|4sV8c^&oZh4E3) z|IK04hm-Vwll~tc`v{m1!Mqjb-7rVOyaVQKjJ#c_M-k?oRPGYSSK2)=?}vFW_4}&n z^ndd~QPf#bG#`dJ2IeT3qhUTmh5oO-*QEcO^#8cdV_`l8^9e?>RpTpX92NS%N&h#; zQ=$Kx^ncZo=JV2?<_j=il!T=D6)^K9nEd{iC=+4w`(Ng(RWbYun8~kznfwZvIT_}Z zs@$ovBiV2|%%w2jfH@E5447}ioXI-OB4-QZ_IV5D9GGuYe@7T!=X0sND^vw4n(x7! z5A%JPAHn>9%7;QdUNS$X@<}yi0n9}(7gGOJ`1Mw%7nAh=xa7}Zu7$Y_<|>%WVXlPv zIb&7`b?;z)LFG$f+|H|Eu7UX#^{<7oSExf%wWa^Z*XKHzKf?SL=6aalG5336Tr&ON z+#rg6sxmji{2AsZM*bv>>$#Z<{okbjo4+A>A#t#MDEQ>wikR zK9W^#pX4f_$p(yRNOA$Oc&h}Gjgf4Lc~q5tG?J~DbqslIm3|zO{47<<;S!+9HVkNsWIHC>lbqvHF{*=3o*^P4W6?Rq4J+_Nz)?fMkD3tIA7NFG6w*k^_*ug#Q{ynpKfWBvVN8 z)%~Q!TpLNg|1TTzD*#ECI==#t%p#eq+BT0Q-~UhY{eKl79|gYxkmOeYlKculGC-2= z|4W$>k`)#>kQ`K1+F<^Bv5a;k>{2A}M)ESIhafqOiOWfKMy`~Egk6Q?P$qcMigFGA zy_UQV$?KW8K`6O5%0(iH;p9!^&EzdY$r?f4N{&SGHYRQ-?+{ANo#b6Yx$3z7L-O9L z-20HczbgFzl3f2S`B0Veuq2YBNG<`9e3a?YBbY@>z<{RVmN&-xtUi$qD33B$t4Y`oDtYY$RV5QA*aQ;5DXSCnu9rketfI zG@(RJC*MGFMwK!X$yt()+xblfyj7L^Hj?j9nNy|A<-hNe^N@V6N`Ifq2jquHeiZBR zCH)DK^O5|5xeJh7$i%1QB66`%YPbZ+rA%=0Ke?<*UrzCJas|0ksIKAUmq@Nha+Ulm zC9FpBtE%+ZNUovyzbfS${<{{*bydo@NPb80`&fzV`~$@eQz6y1|1 zcO$hol6yo+?IqOXjZ`fv9RKU@Youx;)exyVNYz7XKjzjI>JdwdIaYqk`08a zs#1OdD2#qqx$ z6{Jo@>P)0gL#hK(r*o?_gmIg6q|!;KN4craNOeQ13w4hFm$BbZb*FNcP|tm(&PM7= zqH~zTH55}O znIu!BCCekEY*H=$tkP;BP(`)=r(%Xwi+`%LTKrQ{E&i!kAd4hBkrd58<;B;knp8;z zNL_|hh}1x&BJPXh|M++ZQ5j5LOkP5A{I5=&)OHAYImz*Vd=yt9bvsf+k-7<~tC6}9 zDUSbB*D{jh{}jjnsT)Mm&vdC_%pER_Tj^$`Zbj-A>LY~lc^pZFhdA42L8q#mX|N*G@ok5U;;a{Qlqob5S=97{ey za`oEOQ%sK|pC+Fn$CJ;J&ymlQFOV-HH65u5NWF&COGv$f)XPXslq~sza8I#?)T>BM zlF232yzyQ0I#N@SnvB#G>6g_blG4@J(^Au9Lv;u$IQ0h0pFz$PuF%)gY}jgFZ^G(? z)LTexL+Wj$Rv`5bQuC3TgVcve%|+@xq&WUh&65J-)_b3=!STOtC6$%>2&s>$bNnCQ z1q+Z`OmQJnpE9vX7`OQnq?RGIl=^4Y^yO4I{@346Ppw4iN2I<$Y8_HvBBfem6=PNl zV}IcIKedKB$Nwpg|5Iy4iLcdfky?)w$Nwpg|Fz$yIQ~yl^4~zb9)stLxJ;)~YN#3ox9jpeh z0IMPOM#5iLGEM)t8cSNwT3bzEwSmliA>lE;y)N&3HTTdOUs6DhWXMgO->kbm`@fOQhAQ(@8nty4sg zYjqkoq5oU-f2)Js)Ry}FU#^^{BCRuF4TRMhmIbQ|tO2mP!a4_5H&{Jj(f=*_zdj?@ z*(|fCP+$30FIatH(f_U9%sr2!|6BC`_#E}4PXD+1GkqaR|Nr;1Jj;M(Qm6l0^#6G8 zHmoA7G^{KvhcPah5$e0Z%2COa1)+YHw@R=ASY_%S=?j$`C|V&IkriRwhJ#?;3u`c} zVX!WSbtNqNzjY}iFC*#y7X9D4LX`L#y9(Czu!b_`YLfnM(f_UMM2Yu8|F>=wB|hWB zVciDnCRih2-OO$2|8Yy+N@ZlV_}gLK1?vv#cMA1fkVXHu=>Kua_rZD+*8Q*^hxGug zhhaU)tsWBU5s@{D$|K~X9ktjC1vFRu0&SYw&{gfPAyo`O9A);QSD!+M&z&ybw| zv7VL2v7RHJhpjH27i22KdXbz!zC^xEP9$F;UxhUf78n1wxCFHII;>f+Cc~NzYYNNc zPrz8yB&~{-eZ4`>AUXdZ>$73K1B>(j7U%yh&i}``a~RM0e~a_~vHl+HlVQCNOBvS( zu+)|FA*`jaK7#crtdC*MhxJLk>nWGQS^$fKf7L$fPuY>Rh{v)R))KjY)n%{RQx$G~ z2J1^$%V4d5wH(&xlBQC9GwG!4Bl2DPV5Q$#}>uXr6VSOd9uIYTLNvA7T9jYa=Ya{I9C5a^o!i zFpwO@FR=cA^((9`u=xIu`atkNwc+ouwyLI+AN|qYvGpgcZLt25Leym=XJk999rCX_ zv>A=qCV#_L*18LJeOUj%-WS$x*n7j;1A8yoO4U|xZr6gnPuvc=R(5UJbz#?m&BcFI z-BgpREV~};{UxFHs7g?}eE@90J`i?81~iblS$&<@oc~da=i3R`2Qjy?P;F>8f!$Qv zN;R(vo;DZuA+V2z-3)dM*oVSC9QI)ntp3#D*hj!_9&fASRn6@qVIKvXca5rs64h+K z3btFpZUg%m*sWn73;Q^^gOskkPK8N@j~7ZE+QL2oc01VZB|z6%ofrE=*eAs?TDMPO z$)}R1!R`V3bl9C?p8>lg><)3sviDA~&x~6}9i8l@3+(Q&yTa}!eUplr{Fm5>1fNw^ zle776Pm=F{s@_ck&Xro(y~*?B7p&|)OrKBog*^s#KiH~;FObHx`?F;(Brg(5Lk)m! zFkzBOp{kf9H)<-%5ls6W-bb{V!O zY1OdtwgK$RVTZ6I*<6~v!Xp|8Th((A?2BRZ_rKI(s$ALKC6Z9Jk~Dt;%pM|XX$SuP zm*`i*=K7!ZP}tYPR)?Tg_~&oms9dRudjFG$rfA;)`ytpj!oC&uFxVqxbuxQ6?3?5g zwbf66^Z3nu*6^U6rFQKRL{?uxbAKHB|da*iZ3%jU%5X zpCQMS&yvpxRS9xtUyy|TqHrZgboNWIUxEEH^@&0~gKfV`Ws*==z3v}9GqRg8dxYt|NM3U3T9VdhKh3KpU7NXegu30*b*a=N_a{02*W>W? zfk>y3Zh-W0NH;|KFr*tHeGt-MWP)rgjN_XieF)M`sUIwi_uh=kp+bEzrw>Q^Xrzxo z`beakGq;6M_3w&l&7-Qtx1!GRfBM*JdTXT5Mf!N8+aukEF>T3q)nZOSx+l_nC`g~g z+>^;u$WzJF$kWL)$PQ#jvJ-hG*_rG@b|t%!-O00ratJ-hvxVw*NT0)hdkNzf=#BIM zq|ZaTKhhlkr_X0h->OaeA$@^ttNxTPr8)jjUsSCG1L+jfCbvoo^%b7BsMysa9i*>7 z+C@4JTOysLY7LoRlE>SNF<1^?}393a#NMDL{1?j;^4`lA3YPlCv;rKs3 zUXK6ML#SUaj7z=}>6?+h3h8T+9?IOS$!mn_;Y%@n9n!;)zMg50|I-}*tK8|Tw!^94 zB-D3t`WB?`M0y0$w;|2(e|n_kYNtxy&UlXh^>bzVE~M{8`flp?2=#Xc)Av!iU#Q;+ zPd^CvE2JNSvli)x;UtkBh4d1nA3=IH(vKoN0qN05KZW#TNRLJOah5Pf7#}aYfb^5q zlyOLpNBU_-J|k2IrI>z}e2#pce1W9@$ECf5^i-r@Mq1hXMCQIizDiCK^HG0k&i_kd zGW99K-@ajb8qzb6p3d|e!g%j9smv0_`+5`U_mO@J>AB2$8|inLm?P9H9i`u;GLL*u zsNFC90n)Vk^oK})#9aEnej7PGAL&n#UO;_ewXGIWSuE7gyy>M#|A6#oNUuS98PY2m zupH^nnOGr=Yx@P#tC9Ya`YK_3TwhV4|7*uitET>z;x|aIWn!IB*IXsi-y!`y_4UH| zdfou%Sfqc1a}={SBE5-;pGf+DdNa~{kmgqa(tM6cbNrv?`~PXa|DWdj|7pJepXU4j zX};PCsu4oBk-zyB+RG=S4kwvu!s64Fn}zm4HE zW#S;RiBS2Kb1BBmLi@|2y=5=M?F(ol}L9I1LVe z|Ha|&zc?Kzb|gEIXOf-CE@W4-8`&KWNB&Y&4>-NxoK2nI{}S;W`B!Sf@xRj>4u|~? ze*#{$nEI2jzHkP>>BnQafaLs-L;rW^|N07d4Cd1RweLA8IOE}1aIS}A!wKP};S}IF zaI$b*#%F~3ZguGY4*g&4TAI2D$Ad%vcgmu~r@&_}{XdS3;0%FNfioBm{offRG5W4? zE@nLa-{Jg^L;u(BZaJ63xeCq|jJc9q@qTgW|BgQC^nd4C##|?i_j>~zWxO}SxfRYZ zI5)$g|2y=5?c2^R+-gL%twzGR7tU?e>HiM>-?>IL#RaXDpmY;5-KBQRa>o#_d4=cj*7|IeG%lI5_lw=c#Iu^nZu`uRdf{B{|7W5|!74@ij9U&P+H{;7o@z zmATV|>M>K%q5nHGB&|Qya%RDK3(jojzA4nBQ0Hwb^nZ0p%eHgjEQa$goR8tmgYyBL z_o%-wjL*x5ROtV4YkUG{A)NWt7YOx8()pCiB4J$fC2+omvlPxsIG-_h8M&OK|2y>m zxaGf~PXBl4|ITVE^#8cbHB@-I9rlLtw(H=Q;Cu^Lnap=^Ys2{-&R=lW!}%G`4{$cZ z*}!c%{@1IQIGd=@|MiTbvl-5BaDJiwt1vEq3zgr=t>ho%pF+KMin9&QZaCZF{0(OZ zb9V~k_Sr>+Eg#>Zd*IfByO-$h-a@@EcONSI3iY$0TL*3vxck9v0JkpO`f%$pW`E)L zydPbS8Ah?&n9ZdaVVO&Fci%b8HYj`=_YvEo2cPLzayFh#y=|5eVqFk+!=5mhxs$^z*x9X zF!7{Nx4%0M?s&NLfA<;D<2^ph$mfLdz5D{)SK+=0_hq;fn9EKfj-N<{{vXFrf;$=R zYt&yC#`o+LD)fJM8q?FsH-z!op9yz9+*xqngF74UT)1yC<}LDV@*Q%HP(Mkz?^2mZ zWpAe6hx-xS516L^$F(I=wEKCl4p=WrLoT@3eA#xD}a^;tq?Dft;m|96*5IzFxy zaKD7RlDYK%cweiitQN+leU0p3xNDGc;QkL8;r$#orJF3P14R<%(UDWCSamjl`$?PT6XFpR5nFh%0gUo)++83GHOwWram(C z{|x8GY3&=BGjKPW)4Q?P-N);nP#HvyDW1U zBM%qG+crn$Ok`Rh(-xT{k!i(%mdMcmGxUG$oS9>gX^jm1KXaUf#kD=2o3s(?8Kg`* zWKKnSqY!k~>oAB#gK1j7)E2x*&5Fv$`VF zjfw8nVtOER4l-v`r~k*L^`dgFP=AJ=IS&~FnLfz$L*{(u(*NUHT|lKjd7)6XL*^oK zfKbgOXG~-)WRi?Y3FCd)ROtV@hswCf+=omCnX8b=B2z&ohm4O*9+?s{^#4pzw$gr{ zDYFDmsPAr-$OOoQ)FWZMuYt%6L1qv#mmov`&(QzlqqvmumkITGlyWXd<_hZcfBngF zW+*blk+~WfT7BjkWUgh*bwYg|%CFev$k6{YBP2Jj1N}ck z|Nrk;?m&kApSg>r-A&#@(*NTt|9)g9A@cw-PayLkGPL^4L&!YL$Wg-hntv3T$B`LL z{V}25S7r>Au|oZhO6Eyqo0q zQ=drE|1+;jTEF|0c@0^0x?e|@mq%tYGE*2im8Ab?=>M5FsLUW|lC#L!B>g`_|Ig6> zGxYz=9Olj?>Hit}f95?Z@00ZZ%!f>WM1D-t|1I=CrGGCIbNVWctQq=lCieHm!NM1r2wf>LN*OKcJ%)cQY) zYW*KYwf>KyTK`8;t^cE_*8fpd>;EWjBDwxd=4YlilfRI^lE0B#$luAW*wq~0CpKZf*Te2P5o}~Y0>Hpc2sL=njr!ajgc^Y{- zN&nAwV7epOi9D0+Om-o=lJx&w`T)`(O)@ErPl1K3gRD(GE!19-b*W^kMdpz8kGDsM2dognRAbSb23y{4O*_V*L4A~oy9fIst489!ME10-a z7?(d3*=v!#n))@u_=v8fa(%VP8mr6^*^)s^Lpm`pV_Wi0swsg@^FB|JrrBcCRpA;*)?lFyOPlP{1j3f1R#*$F}^=VfGPAv+OS8hiE? zWa9>^}o_1VS9 z(*LvcfBiX5b{VoOkX_DlJ{QJ&SxMy!@=J0Rxmp<4P>uh;Lv{_aYmrr#pE|~Ggz*ur zqw=j#|6)=0dn)V6AB6F~enfT~vKx`z%&bkw{=~%3Lj44q{RP=Sko}eVZ{!y8cXF#R zZs$L#{3VR*xgFVE$nK!Nll)t#M+Mn`klPE{-PHF8^`hcAp0!*pQS>}XZeQfm$kj&f zXyoc3cMx*>A$OnzWzeYo+p=}(paeP-&_;q4o9vj za?OxCn7Q|BtU3<^NY8cL@V7B`+g~ke3VN zEAvV!>=g9fm%AFd5y)MG+zrgS7CHKVj{YC-{YK<<(rXh70xmn7f(EEkgaQk-HT+ zT77OLa_z?Q8nX3$UlJG!^qb|ZWMA$ zk$VKWDabvF+|$U7M(%Os9+PeL=hwM0$UTYNSeE&OFm9!%sEn(oJcHZ>B!Olb2H>$b@eLdW+C?$aZ^#$kG3E?}!qg$GOOTgxtHxy^q{H#=j?w&&vl? zJ{0P?yWGdfEkcg|pPSFz1>{2VQ(?UAVk%37ajiZ>ZWD6LkW)2Wj@)YGK1c2gD|Km3QiZNf4YlN}>4RSvqx0d=k@>}vdlK!7tFKONTs6=i9az8S6qcFa5 zenRda4wx_zA^Ir{%^hs|7}VhEL3%tfM$%R|HpMW9QhW=A3?pj zP+zzCBdN3$YUjxxjXbSB-wOF-n0sus+}2c%C))`16_Rg9{p6MgC^wFGK!nGYqCQR-@9`PrKSq8$@*g1oEOVbDpC?~Heh%_4$}lNEfqaR4nVd+zLcU5) zB3~n4Cnu9r$f@Ksays&FBL4>Rvyh*G{7ez`QE$G20kg#=)S_znxA^bd$iE{AB`&^3 zB`D4%-zDdf?~(5d<&ZxlKN9M>sr)C%FGPMm^##KC?x6qY7m1?#i~JJgKSzEkBR?aT zk;{c~>#ackYvflVzY6&;n9Kd@Ph<0|snGx9du) zNWJ&M{w$$Bc>sAJ*+8hzOQ8`8N1*@|4nrY5b_#{ovU+*pc(M)ImTX71Cr?mh z;zShq`;P_r{YNUNpupdMEb#Xq3;g}Z0)PLpz~6r?@b@1J{Qbw7|8SGetaBG(e01GV zI0uF9)XyS&ko5lo{a>H=0{y>mE^~X6=gDxQ(1$#q>`V3|FChDq7m^o|14x53$t0N~ zEz%~_q$5-{kR!-jQTPglktjTh!fi6BD5&@U74IPLB<~{C@4qNr&HpH>`5#3! z|HE~p3-_a-=6{r;=6|%JrhwGH52K*we^f%v|4>&~MPW1w3s6w=KT22gKZ4TW(iyoiFD|52iv|Iy`-M?ua1==5_asQDk2tLA@{qGoqhdII?p z`7$|?e1&|KoFtTCn2LWLg_$T!W_k)aRVZ20P?*ld8{`b?dM~r6%qHI?-y+{8-y!D+ z)t}tmsc__Tc#QQ?gKOjFu;Ug42j*mk0PpHpl*xo2C~5^^c|84AlJ zp@sxf!g3To=eb@%t|aOI1^Rzs6&3ows-*e~m~8bm3Tv3q)mHQWN?a>ce{vq_|Ap@) z9lO(d6n;eE2j*@N#*y^@0{uUZ{27H^C~QXI4-|euVG9cM{{qMV@pVi8FVO#ESNs!& z9VpQM3-td2{XgEzPVV<_VeBXWptvszyHQl_M*lDFCAr$Gi?t+Or2ofCZ4?hfu?}_m zf06!QtS8P;+@GvZ9zY&QHXs`cC9DyOU?M>_CJ!Q;kWI;h$wSCyGtFa z!Z`9I6g!}JGK#06cnWh*73$Gl@pLL@2=%^HqSz6|PSnp7>gTm$7Zm%V*cHWdQ0#_c z4;1PDMf$%UsTR-XR`mb4=Dkon4@LTavA5*Lk$o6>zEEEq#eOK7C|-c#MJV=X?uEj* zoB>n}p?=?>m_*S=F-6@H>MNv}rs4?ob7e7u^7$xcQ5ub64#js+%%k`eiUkx$qF6+6 z7>XqnuSc=WZ9UQ_12L0gNJeCZ97uBgpWy6|8;tQh0M>he*i739r$d`rj z9$%sIsxZE)Uqf*Qim#(M6~)QSog&n;)5U32rju_7)p%RoEXA29zKP;2>a$~A(hvEk)zQ@S-h5CuR$nk&iBT@7Sy!Z)<3sIcU$OS?@ z+AnhaU*z~-&vq7xC6y6P~3##m+}Bx zTt%)X`5nyS*G#V=`H)-uhG~8uwz!VzZ&CaK#qXH@o?I_f*M^k2f&7u&C{&dfo!>8( z#LxV9Gm5`3@hkZoxrO|l+)DmI{wb7g|3YzFReHN5)TJ)^P89#H(sxn$2gTh?>=Bms zB3Z*yEvEM&_a$o!C9Dog`&FguNEOOg9zEwg;nhNL9L-B=k{~4nyhiD*XsXHbFNz#RTa@~t)DERCjA@S&=l>;!9|4q3LW%SLCC>ksIR9Vb{C|n_|0T}< zmpK1l;{3mC+X*Gk|4W)50qE0R>WWggs`_;29?wFl2NV4MZ;9XkE%E!mrC!we`!A*5 zOrIx|GW(!Z_4_ZSzM{ynT!2!Jx&2YPuqu*20aF@)lEEyKOp+zi|Bcj3RQZMN(rSh6CUZ40U44JSs@1srJO-14X#RGED6<0rAx`ng!=iqbU8{_ zp>zfHD}~x`OGBw#T`lrjl3WoIMv4AkqW_nMF@88n|JMVI6371~`oDI$ z(nyrNLMEZu|B!zkU0(gP^b|4a1$IG+ArqW|krS!oo@r2m)b z|JvC~kD;_0rN>d4h0++5UPfswO3$M71WHe%ME@`8_8BK7=-#CC3`?W`$I5dky@(S1 zzeN96U7?CEO(5z2aor}OGzFzsPenvL+L}5=>Me;MAu`m z68*pQu_$pH&PQoEN()e0gwjHmL;sIkaxs-9FYhLVZ=24@dcEl#f99NR*p1w}nt&A?21-juPtgTW*E&aVQ@{{n%=e zt*IPeEwU}jol$Ow@@XiyNBLxwPhiZ6cPoZ+EP@muO=_q$Z`3&kE7|Hvz+=&Xu z|N3q!cR{%)%3V=D3*~Oi?JkV#--F88!uWX4LAf`|y{MlnjQ4mRl|I7wNc*C!F3Wx> zKZf!JC=W%sKgu4;7ozN-d=bhf$^*ESA=KZ7D<`R>NQ<<|v@kB&MLCCZhI&@0?}&1q zN`WkrC9*91ik@8dQN9%A0ObnGA#)>Pe7pmx3?c`U7n7F=^%F{&{$CzK{c@82U#9<; zuM#D0+pAH&4drW49**+0DBpncb&S7Ws6DEDBNh6;c8T&$D33t-X6m;H^|-Oj@qc-w zD5|qlEZ>gueJJ07^4%!Y|I76M_*gjpFW)PX+MUYxqx=xc4{+NDh1y%n4^yH4m+Ajy z`hR(}=-QLZkE1*tJtK^-nP*Xc0p;hYi~q;J zwOxLZ3jIGmqL)#gjPgX3C!x&of0_OtAJJ=!e_g0CbA^(47v*_OsQDlDubThihk%m)5aop^ zf5dI+|K(4Zo=rht4{w>PuQKtWwznA#;|4HR9a+^?pa#7v^uRh8< z;i)$Ko4LElf5_eB9-+6FP>+JVTJUPa+lTtTLftZ69V+{gb;)|<{z6?7?*Mp>;T;IC z5xfS>Z79@j=z&T?7?*hvyo2F2q25%eTgE$tN;8uF?;XbU;X*y5>oteh6xk;h^ zyvehu(EsB)JMgmbTbuyx1Kucjcfz|D-d)VS zo4iM;Kb`dMqjEp_07?J%9%A}oq3*N1N8mjH?@@S&*G_%0FRqp5TR#c@|!sGk@68R+~SHW8y=PEPtzJ~V=yfxgTx}2)6Om8ifb;9@>`wreF zc;Ca@0B=2We-OrP^&^#y!uT%!3EnU8ex^?US9MUi-mm0u)gpg~-x1zc_)Xyb0e>HO zf5KB%{}&^-k=up(8-?CZ_zj9`-kb>VvllAd*lFB!sj0ST9T`4f&A;& zhF^yX`oCY7>3Z-FfWJTd`tq;3Y*ZmCA@K(a)n)8Agr9)lh$8)8U&(%BDhCPUeKm!D z4E%%PH-}IE_nR^1Q1UR6{_h`AZL1dWkAiku9q<&I0o&N8iN}c|%j>tb9{u%H)$T!y2DON|MzGLNgLZv1A zGf`;*zcc*Z@Vmh84!TBAH%6xnieo~&(RaMmpO=@ew zFT%IsXW*x07TxFi&py|GR&O+^u2aM;{2c3@C>LXHrsyI57pA4%ml@^(D$1?o{ z{I{8S6298Y3-HIm9}oX&_+0#1-D~=6`p?2wi$6EwUikjMZf*ZXZaxA2Tkv0kKN(TIEkA{2B0P zN~B7wO(y>ZUw!_oboKdf)kt17g-on*ZquK``phNYCFhavk?)fq2&Gj&g#Qr}ACsSu z^Wm?AzX1MH_zU4LhW{!2Me22nM7t%4*-{{sFR_+P?T_sA;vt5s>TFLhjU2EUfV)t~xpbpL;n<$ohw7%;t#wfdI) zj{Kfn4_~#$4@_?$e-z4bZG^vxiJ!=y;cwwd*$n>|X((U$zoPR0p7JMk_+9Q|NysXo z@KqP^r%EKca(x(on^e``PVOLgl7ExCNS%*un)N}S(~gQ zH4OGcbRdGd2dt(-J{OR-gX8 z8G<$lIw5F_;1mSy5S)mhJ%SSw$6lJ)dyVqOM0a&)Cm}dlo^jS6jnC#M&U^>KsR+(M za2kTs6GzC;MkMw*Q2qEjf({5c`Ty3uM9W;F)@=yRM9>34X9V34bV1NHaml5LeHLQt z#>8oL5p+jzRwCU9d-hHA7?bGy9)hzG^g_@R!8wVJUnI~U%ST}TMF`GC&|A#phcY$= ziQG2``XHzvI3Iz7pf3V-)cp`#h~NSQ{Szm*Oju_m25y&Engg}@05vL0oEND6F40O= z#zbHtNFqoj>W)ZsD<}51WKt-w5u~wleB#pfiQ;PMDFPQk397k*Jc2BOTta<@{`sqk zMoSZA63{m1UJg(iR#t*zn+uc zCm4?4rbM5YZURjYlR#ktO1MqcawUn=KgM765WJ3Ha^lR6 z(z#5Vo9Ln{GZn!b2&N&Jp6IZ5qVo1Yt|Brd!cKdP{K2tGjY9)kDr=Jm4H@u!m#wUziG zf{zm61gxJfzhbW@=z>oWY(Ov{!IuaYAovWyLIjHue2QREB6AA1_Q#j~@aG@|OAsuT zfv8%D@59!K&SxT6hF}GPMh|U=@P3 z2v#FlgWxL!U#s^+65SUk)Gs^iIt#)75PXxUeL^DHHF1)YP;Z0=>kxd8;9CUWCEAWj z3}`Rk0^6-_b|elc;H|dUxDw%B2=_s_H^N$p z2!W91|8HLq9)yr9zp1`J^$5y6!h;bWitrGG&0QZz2+u{>yGBnD_CeSW;rR&r*61n13lR3N(NlyMA-oLX z0E9(^20{m+iO@orM3}14Q-n6cbd8=ObP?tdW)Nm;^b}zpVWCD(5ta~E5S9@J2t9;; zjh-S55k@t7if|ypixCb&IJibn5nh7u(i%NQI0WHM2rox?Ey61h4n=q+!mDcZ6yenf zuc^^fgx4Xw5#jX+Z_qtOV(?n&DZ*h0hu7#S!kZD^f$$cDBN2{3cx#QGBD@XZ?KOIe z@J@vHAiN8qn*6EOQ-t>-yst)25k7!$F~SECzK-xAgwG&+7~vR%qY#cp_z1#BYxET1 zV+bFw(NlzD5k7_R34~A9=qbW+2%oOeQ-tFYzJ%~ugfAd`4&n1PdW!HxgcEA?6yeJV zUqv_(;VU(Iif|Ib*J|_>;beq!5l%rk3*l6RZy=n8aC(iNBAkJ6W{sXAoQ?2pgl{5z zt42=|zJqX1jh-S@C*@;=^ALW3@I8d@*XSw24-tMO-v#)$rwBhmxDerdgbQl)6yc`` z7uDz~!X*fQLAVs*HwZsN_$9(+2v;Cnj_~suJw><@;TJV}if|ReuMw_B_*IRbB3y$| zW~Kh?DZ;e~Hy~Vx@Oy;cBK)pKPZ6$1_(P4JBK#4d^0bWzH`VAV!k-atuF+G3zard? z@Hd3p5N<*E2g2VGZmrQ%gnuIZt42=|Zb$ex!W{^A*61n1T?qftJ%yO6>M6oKi0UBP z3(-D^_C{2zMo$s#i>P*uo+47?|NRlwMO3dwPZ8BebU=-sB5ELG{)q4YM121z0+j^W z7}1l64npK0YJ#W>qNa%2BRUw-(TEN~bQq#$h&cK4Z+{VS{zvr`(GiH6%M(P@0#Qpu zoc~e1fG9@^)t~w|YK7=nipNwb$02I{-;+heDWIqgV>ksAaSBMbJps|_h)zUw3Zjz` zo&0YfiI;@}aTfv6Lr4v0F+uHR`bd`}(YnTR?|VxQfQPiZ9+EzVlMEww%h%P{M5u*Nx zWbuFfticTjATnz7AW;&LjVOi4Qay-NSU+n-X^Gd*8j*`=7@`cKL5Q-5JVZG}MMQZ- z1=V**q}otDWke-J<$wDQ?$JjSAqo(M>fisKGNKBifi?P$XfPsmS}#U)8KO%NU8?&I zRkA!~L_-i=E@}Og5nX|ZkHFDYGG>T|3RN8>eGQ`P5nT&4B2^Xp_vs_L0nv@RPm!9a zr;lhjqWcitgy?oeHzT?g(JhEZNS~qt^wUQ)647m{Pm!Y3-qq7bbO)ll5#5RCu796C zBsaPT(Y^7f3Hs?Hx*yS_h#o-nFro($JyfGliAEuMq(+|-jYc#E(PM}n*L{inxK1cKgq7{f%{@ag8R`eyJRdJYp;)uRNv;)!Ch<-w}2GRG3RMH`J+Vrlu@aJ%6@U*p+wbpRO+G95S9H=IS`fls2rgC4%xeU z%23T%X&}!RD!9@J6^{HXh@UJfjZr!1zy3mko1$_ADhH!-C@P0=bI$+knW75k|10!= zRiMPv|0^w+uIB%hqfqIG%F(EtjY=z2jzfj!Utvd}KXxx)3ID_sA%(h-%esBrz~3fF(GaQ){B*MC;i zzp6|rwi_zlnK-LT=^@j$lGPKHb5S{mHR&Z(ouC{wKmV<;BdGMD!Y-iFSJG;dQ(`Va zC5cLZR0g1OA(e}SaS8MR^_-{_{aH*Ug-RL~i;=caemyMW5|Oe+spO?snH{izQqE5oVZMBYr^ zLXHr|^&E-HXjE=PKHT`)iF9_pv zIsuiBP8QMn%4Ad~qB04UR~Y%KP=6*~d5y~J!gw!Js7xiN3Dt$FSa}1Lxv0!Q zN&T6Le=&k@Gw@m*BjM`a#$b^&q8A5i&F7`N@ms4Pe2 z6I7Ob(d`2!4>Nkoj%I>~GWd$lKVj@nYpJXg#@FF@_&-x;0(Zsq|MBc=@==OxS+bO+WGNDf ztPz!^RYKi+XYRc-_s+d{=FZHWMlFQ-6-jJGgIdCW~Az2&=w4ehgxm{81xtU zH~9~_O{nM6b}D@SNA)?i3sSoywX5hU?*FUjJyLs6*;A+^_eQD_Qu`ovAX57xRUfJS z7{mFX{$8ItfJ%czDNs3xY$#OYoH`h(!;xx?)S*ZhrL-jT|M3FRWBx*&Bi zQndP1XQb%=sY`dp#0{k`N9qce<^0#jeic$Zkh&VFYmw^8+-rpDI!bk;(mkepgpo?F zL+VDPu4noNp}ICxJ*o5(>iN(I>1UDZi_{jR`XMzQsrdPy+mY&zR353DkxC&o0IA!M zx`kzLWo^4KJ&+tE)ICWfWg?ZKZV2_+%u>k-^+;MsRgtoha*!%8m;SHjbE-t8Ojbyj z^n_yj@iF>H)sPC94u$IP?sx(}&4kQ#>6oh(KFPYq@IZjz&? z+%+|v%DqC}=MhMaLTV)S`-Qs22dL2h)tV$V8mUJqjzQ{SCLR&0H@>DGLuxEi^#2t7 zUmx{2Mm{N2ZyiZJh154lJ&n{GNKHU$5>n3~^*mC~GV(d0K94U@d6Aq*zC^w(jJMfi zrY0jb1*unV{e>~L5UG_&EkY_j>Ti)+g4AO6=R2WVpQM&jq5tb~SccScr0D;tA0;>bLrKik z3i2nRp3grc^*d6(AoVL!tC+i5sAuLHD!(P-*CMqMDf)kE9dp-{^#9bKiO5aVHw*Rb z-HP<3Nd1NMkx2cGbOWURK{__=ZAkBm)W3}1PW~rM*CTm_#vhSHq5r3MXPW+>rvIn+ z5=E_N()%F2Khpa$WHq155~J1?>4O>HSg6J-eF)Nr zA$=(Irb6XK>BFfUkx-68`c$NwA$(ju$G=NuP*xOQcVt z-Xfu&Oyv}zx=z!lA$=Cot&nbmbZh3)|J7MbpF!nJp?YUm`fQ{xM!GHacH}waxiW>) z?aA|m@@oh3eDVUaBY7d&iM&Xz*7y=jcV<18#Ef_3n7$0@K}cVY^o>Ygf%LUVUy1b9 zNOxiGRYLWQUz+}(zD5+al1X<%I_^MsM)nZuE2ZO z2-W;g_oH%?P>=1+NZ*R|0P6IAUGr^J1`73gNg@3p(rKiNNN13?kTw`&lJx&H{Xd-- zMY&emW^O^Kyd~`*T|t`upQiuo7F|YqWR>*EfDFl+Ou{su|4H-tpERHUNe`yZ=YP_C z{wIAW6+Zuy9?CSI|4H-tpY$-KM<6|%`n^csCx#OnT}-KeB+{dh=JP-Cud$eZKy;n^ z5Ymq$JsRmpkRHQc(L>_DO2@~Tew2JnsApYV;gd*@rB46X$2*?NQ{>a+1o9c79;@e& zIT`8akzR-N3rK&7^ovN(M0z69(~y1%=_yFR%u#n z-!4hNh4i~fzfGO~ulqTj$_$~t-e)2GG1BiL{UOrtGxr0bj-O5CqeT2CNPmX(r_|>p zB0r}xmz+m_LCzOyFZv4cUwG3Ckp2$ouaRDa^f!!IDAfJ=mdfIodUcduf^>W?=>O^O zC0F-t86)Zc>N7=pInt|DbseBE1FaO^nHit}zv_Qx zS7i1M7HMA7{@9+{JnIf0QUCUp9LhF+(}By$QfDP&GX<`QI1L*`s$S|LNL&$LE{ z{-0?hHK=o%ITM+-$ehKR&ra0bj>gj6|Vo)F~$Wm z7a?;ob^3qo7$RPZ%=O4zhD=vvE=Q&dGFMQ)QmDu6Dk@hC)y&UagG_g1uBF~hsK>kq zmFtB1EZ>04&B)w{OmAd*GPjpdpT|B_`jY)f`hTW>B4z+Gw;^*2b8i*uvqt~V3`#_% zk$D)I3^F5-F_0OGjEPJhnJmlZ5@jta^#4qOX+HlM&%=y^44?nZlx13G`21&v&wpn4 z{AY&Ge`fgnXC`1wNYei^^#2U~KSTeQN(Lh{1erULq5sE9JUv9eYsazNjm&Ul?qN@c z3HA8gOXa?VG7^~wDc+CFC?*~d>iP2!mC@uFq4Ji@Bgjld=22uOAoCb9x9fp$h?8f%g9VYW)kBk zll1>g?Ejtg1Du)HsEhw=hs;bx<}GC2q&`ikTcQ7F=>NKv>2Tt?F#}e7<<3MlKFnD# zMnv0Z!w<3MCSX8oU#^#9BpWWGn{Gh~(`L;ugr zl|OD~=8<2J^T{vCugC@D*W@?kLUIxLExDNdj$9HmeppD-@u5lm@xcCp%rd5bkcXNw zKa$JI735FkO7ds&7jhN3n*5bqL;gnoPOcTk4N1-GVAMlqJ<}V=Kgo^cCUP^mh1^R1 zMgC3xLvADgCAX9R2~{fwpR_S{m0ykB$lb|3$UVuu$i2yZ$bHHE$oJDO@%J|cSx|P;2+QK*;#+fkM zFqbz4wW2oY{|5bE*W3<9dl>Y8<6MbX{$QNPvK@r#-eg<=qY9%Vj0}tmVO$BL6O7I< zE@CA8UysZsR4yeiBQGcE|7yiH7LH{>~!x#&L@BfecY}^Nf z@BcSO%BeT*Cr6Qd|G&Za{~LV&zrpwa8)KLozyB?ce}s(R{}!kD{(pmiV>S3PnOIyn zo>}9_Ct;{xpMvovjHhADhcN-h=P;gu@g5Am|KEt;{}$KwJoy5QsW9UAzs1T#@+If7FXCwC|Udpu)(hY8y~`$P4Od=uYfZ?VLE>KTO2$`D2dPX zPL2`3|1JKN-~TfB<*)eH_~gd@kDE65_uu%Di8;H$_!`EyFuvijEF>2R^?6?mV=0X9 zs4q$A-&2W=;{Uzk2bjHK{0Q?r7|UU{gs}o97oWyYFjg}DXYvhYj6Yn+j$$X62f=J8>y5ac*Jesp z=E1C|u`o7)UvGtZ2+YG_9xB~7o5DOyc30wuKjTv-$`KM7C!}@$^Ix+W(?^rXkjDz+ zhj8Mj<;~_WPlQSTH|hWC?qHrI=fZ3uR4WtnWSDJWo&vKKO!~h`|5wgnwr2e4iTE>M zo(=O%>hym#bIi6>xc)ck|0ez4Y%h8|8>QV2FuTA!A7*Em7r=~1rXzK(|8)%g-=zO< z<7Zg&5}236r2m`rf88Se-{ksVm%R!mt=_yEW>?ls|5u+x%x*BRgV~*W523E-dMY=N zHqO~|C_gou3H%dGY2!p_%xXz z4U+pmCjDQxn1@+_N&h$L|GJ(c;~k;$e6tL5Fw6=}A13|Zr2m^$iBWd}Gk_Vv3|W@` zuWPHLLjTvw5SYVY-T`wcO!~h`|5qynlm2hg|8@Lum?L0v{cqlv=+#Kpe7{il;Q?fi zfcYTI_&RzB=JPN|!yE^549v$E{4mT%n0QpE>W>rV<1o3ZH^+*uXXcYICop(C%%_;( z`d{7mrPMPppQZksP>#IRoaq449tKXHuCZRQnI+`!M4Ue*p6fm>R-!T7!`47y0DQ*+SlhEY%f8#`Kq}h7N?v5;d zDZ4AOyGcNN>8YzPy9cs+A-ktU#$}ZW#{t=W_Nyjrq~eKMob(mRO6X#f^1V{521c&LO+bk;R)qPWV;}H6tb<6ZHDa0$R3UCiO3#< zY;$CfWjt@e%GwxshXA=`p_OJRIaF-1RxJQZ2`f3}tUs{SsYJssJO$hJZD z9AwWx_H1O&WN^a&vu&xg6YAqS7ugQTwx@nxLO-9%1wu8v*$a{FjBF?B^#3gVU!RLh zki8sP`hWH^iBWydUcvY)g}TM7kPVQ%8rfdRc15;3vez(%H-&7sL}U+SZ$S1s=F

    Mz(}(A7pPrwl8!03DrJBmj0im|7Qm<_ZB^ivbQ38o20V?$w6d_Op_VX zAWbq$=EyuLkANa;lLfLUlnLwzCAW;MhirwdyFz^|^#80cirOd1hREK7Yz^5v85|)? z|IgC@vx6xPA@2~zmB);KvUednlnMI3o?XL`9fj<0WJe%-FLUYty7iG%=>KZ%k&XR- zG_ns;e@Lh!$544Vp*)Iwe9|97E}pB8Bl``qPayjSvSX2bmciqYeG=KHksZ%p>HoSm z-W0OWBx-vO*-6MgkL*NbUts);LVbSe|Jj!l@sp9Ag6u1dr2p$k`hPaz|JkX?zJu(W zjGRWkMe?Sg-T;$*7uhe7olboQN&nB%|Kq!A_B~l5X5S}2K=wl>W|JS0vH!;b@l7G- zr{o;+GxBqxWX(l3_WwBX1vy{qap$x2|1AAK`?d5zAJIZ&|3P*Uva6B(7TM*ycf9>{?`h zqeA~z_qZ(mKf6wJeNHzZyA@gbe|96|>Hk^!f0q6qucG7l>|f;HiL%>}+Yi})k&E4a zJ96>$@}K19>Iv0fZF0L(*-fbWoZADry^-6K`d$frA1d^J)wkUK$TdW+K5_>lcK~zg z|2h{`4id^~ira03TodHz|2f_il#}ERVeX-1QNG^Y_TNI1sk9~Ak>`--lJx%^{Xf@%%K0SyKi84z3xzT`9HMy2Qyd=RCROtWu%yviadgOXgr~hmH1}Zm_J;`3k zy?|VAG2e}GzeUVEc*H0!%{FA$h>`(G75V--!-LfP1R_eEr14+IDI$pl!(mP@@ z)D7fJCbDFX%##*rlYIU^$LIg0bq6_qe^An835Y)}O4>!vlZ2$Jq>o&{L`c@ih^!-T zCkK;5gi`hneKXM|G!v&cQSBmKN2dHJm;KyTNHgP?;DlC#N=$d83m|0l?Ox+6VD5^^k`Be#^fbCH|3Blim`^O5_K ziLb~70`K?e|S&ZCwJJL%ep^xHw$nTCk{Xd`Z|NI_|q5sF88OKYJ zy^*K?=js2d=KTK1H%Goc@`odT0P+VT-vIf8kUx+`=>PGCj}&i6HWI2j^No=|6!|99 z>HqOjNF@C~Pyg4-5y&5n{E^H(ifks-^&CUxSn{}pemwH0BYy(&ry_qM@-2}+i7_pN z>a%D5WGY&#H8u<)$W2c_aB5za7A)jZ$O5_%hFCkx~ z?g(|?%2X;sJyss_qmZv6e-H9L@`I5NkdKfL8Cgq|t)p_gP#@6{2I4eI4`QgZqK%VRW{Czuf^CKC5zfjlk0P=4j{~+>{kbemIiO7#;%oy@v@)7b; z@-gyp`4F0af*ebZBcCM4lTVRPlM~2i$Y;st$mhuy$QOn4%1pn+Rub#~{AA>(ApZ*W zSB2_RYW_7UuM72+GL_1k)g!}^P zUz6XE3x&GoZ;@Y){9@#nBL5w8mk9N&;QBxRKkCcKAIKkt+DTR*|1SGx!K zUl_^tzaGh7VeNzb8sz^*{x{?|BmX<{ej-q-O4|(c13<0^8X=E|IcriTy?xwJxN=;2vt4SZm{-*wL5kCzj}tm+KbBGiO79n zHHNhxtb<_f532#J`iwb1sOvwF3U-!~<{H9kMEzi)nnhLnBg zmZkrz@Az2VVckHn2Q2!(b$z0q8)5Z^)sq4Ae>LV-A1Zx?TDb|9534_{Jgj)wQ?LfW zx((JXjJ#E-{(G!7kjfyTdaBJz!!lvf|E+}oTUkctg!;HFShRY}hE-s0F_Bw><-#gc zuL$)~dsM24$N<*eutHe0daDL2VoY5kW-zQfVGW^9|JUd4E-FKX`mEgp>pob+s1GOU z|LQZiH3HTsSR<+5pD6VJl?M~bXjq@X8UyPESP#Q`k^zsvdKA_ZupZ;Dj|=r^jHNP8 zs659S59=9NPf>rGoFLTwe3r^{HpTp zq9`Y~K83Xs)*M)iVSNVcD_Hb@Yc9*qBflW$%fEKAz7)#-TkHS}U@e68HFLias?W&Q zA}Zes_5Aq`R-F4kSW93nW#W6Go)61lEr<03^&f?5f6rP$eQ``;|S|IOn2-z>iW&Eost z;%nC8TOg#l|D;{Jo=_c;y({cJVedwLcar|EW`eyJmAy%>|JB*C_k+C}_WrQj!LASc zSl9=^ZVI~r?8dMUgxwG}{og)F%Eo`3m3AAE^nW!Q?Iu(XA?g3R{=;A&1)KhF)Bo)w zB}T2K?PiRp|J%n%TK6{g|5mV@!{$=oJ|6Z7j66}OkGBQvQ((8GPXAZu%RZF~{a^Q? zHS9BC)BkPyzkPT}xsJziW2ljQa&xL&n?DnuPfPEfgI*{~#-P?|^FM>_~ zw>wF$)-PscXQ8h1QrK6+z6|!2u<8Hy6_TsRunXg_66#~@3cDL@`oB&8*M08J$R0wi zTn~Ey>>FVBgMB0H-mvNaHvL~+cXl6^>btX4T-?41c7N(O3)Qt_-vWC%>|0?kgMAxw z2aw!<*)|JY?o zOQ{NMcSo9AK=CJQ+lM`zxdH5OM=rO3>$z zKynmMz@7nnENt%2*yCVx|3~7v1!O-3`)SrQf#m*={Vdbm|FOCGW4}PYcS zX>I}OW0?$_`#%!HEg*XeZ0`Tq-2bt;|6@;OC2x|`NbdjG-29QU@4$X{NB!Ial4F?( zoBK2NEZE%tkw|U<*&o2>;@{@}kInrboBKcZC#;|QKQ=di?9X=8{5kBoJJQ?&(nm2L zHury|er^HT3t)5q$L9Wzy^wV-BDw!#FJ_wiKQ=dir0i1I-|wiOSB)Hnax?mW93z** z3fQsX)Bo+2qUdXx{%@}mMMwUMLhP1nP}mptZ?OM?{X6XStYj_hKbTl2)YsGo*qdPg zNqwVG*Swj^7ILdldixjbza9sM;#*j>29j z(Ekg2imuu!(Ekhce;v6W3QbVhAB6*1NqrO!V4^{y6i{e{0{y?xP;@l{1^R!Xu_(H> zLr^#z1^R!XDeE~*sNAe@1PaYip#K++O4LLDFC_fGa2yJkqtG0Mjwl?DLJL-P0t)p1 z0&fcHejQg{Xo&*-ziG-!f1wqX*24IXQ#c)kHjJ z$u20+{|i_1*RCY}zd-+2wH3Of&bZn&QL%-3<`hw=P;^izF;N!kdR!EI6uAB`R1>8FMuudKjL15nKGMM`j6z`u3d5Ln z2MTvGaTht1yqmm7s9PM4!Uz=ZrGB4K_j4qb`xB85pztUP527#zg@>3sI+6P@l}8fF zVXU>&e$4bMr|mYnG2A7Jg)UIk|%TiCjtk zO#VWyB3F~@s$au27ykt={tI0E7r6M3n-*tS&vrKm)f%<15yfsOY(nvD6gHz6+vXM& zwxh5Wg?~`^i}8O8^%>trRCBC&D2mNcY>MI$DANCn zhbMCB|3&)0j;H?@>Ho!JS=(`BbJl-6$**JMmC7K;`^|(h@)uP2x^nW$f#UhGj6dmgHfAwrnu|ma7)L%vMb`*USYbXZHrT?qz zq8L%3|Lgt?M)6J*hfu#msQXX-7I3{a?5B5{mDl_%e!bpg0M|DJV{6ZS?=*tCH4d z`8DdVCt8_`;#(-bNqw47*ZDS;cZB*#r=$2D#Th8hWMY<3*Ze+;vr+tj`iDYY5BI0wZAD1L_G7bw#Ii}e5EyhNS!|KgXd^Q%OiU!(XfiuC{DLgp??}ye6kK!N9T_@CYdjpj}g?eN*p|};r&D6Ifbozgh{;zA^2In{w|AlifireATNAW*6 zd%~#)XE!+Xe~13B;+@^4HfN8Wbvk>&*%!{<)b|nU$o;77FH~2n6g&V<1L_BoAP*uN zl8uDwnIESyoWm$KArFCbC=*SEs!r!{IL+W3LH$VbD52_uw0JZe`oD9m=xW5A=5RW~ zIUdfLa87`8Dx4GHw1jgKYiO~v2Ipidysp(8b54VEI-FM2TMO0t)@eiK459K6=PWqq z!8sewIdIxCx1CU(Bj;Qy^nZ2lb~;cwpS&Ouc_Ezca5};13g;p?UEt9F9s0j>3F9w? za|N8s;L!Zz!;gC#zc|jhQksi5IpeK$hyL$eE%EvsUBj~1lHG*5Z$04jhI1X98{u5f z+#7_tR8K0sglcW<^no(~PG9Q%$eYOie_T7ICsIRgEIuq?Ti^L)FVLuckWEY4}~)f&fSc>N2o_~IF);ay6gxz zkHHxUXAGSC;XDXu6k{F`>bdj~mC-^qH{yizFq}uIKPuGqKMv<2Tg*?z@TH8B}KORN~G!@4V?Nzk*7=MI{a+vZJUCy%`GWdi;BOH9s0j&SB`fz9Qwb*nW=mDJDl}w zZY`WYm{^x+cLS9_$&CqpGfI2F*#c)foUL&Ff%6w*{uai6ESBcBk^c(yvHyqCt|-+L zr9}T%o>|(B3jJU8s>Ie;t1SN{vuzzPgCPDANjlv<&5HcG8gIs>KC8QDg-U=!14 zl4l8(pTvn$Ta@VkrE^4AbD-27r3+9xkMSKy`oHq4Qb#HmlAVP57%xWYbCf!xG!&&v zP%5BwDM|xTx(ubRC|!you~j-b@Z4Zy|3bZxgDaC=Ei%VAJs}Ak9QZsK?wyDUTA@|D~KR z66cmIM%qF>GDVaklpK^?W|dH)|CcI>QXWbHO7#DdpU^`VsR>oP(nK9fx1)3iN`sj@ zM5x=M|CjDcD0ibY7NvVo8jaF0lt!U6oTcdhrTds3L5?Kv7pikDZ9Ra}gVgE&>RurF z7?d7H=`oZZVJ`h&_u+9WPYBgaD~&_xJ(QkA={c0fqci~}`hV$ZiBa#vEYbf<^nYE? z^C-cH9^|&pi^1VZ9sd)Rl_dSYME@_X5=E^WOZ5NJ8pix4)DFBBrOg!oAlIR^o{0@4 z{lBzP7RIGb!uaQv_!h7QrGFT(6{WwJp#Q5n!Z9M_5Fp)QOgHVX&}^*K=}}q4?_81 zlp8X)kx-3!nf_mHB8s|Ol@Dc1Q}VDx6Ux;#hl+Q=`JeH;Z>tnxw3jJTV+X>~)C|^YV;zTQ# zP`NarT#oWJC|`l{RVZJ{+%CfSh5XXhtI4iHUGudl_dvNDb^5>7ucLB(BJxI*Z$-H$ z%6*yD3+3KS^hw0@L-}TuZ=&8mp%0*POG3E~WfSFrD5p^##N3on{h#-8hKiAh&!TLh zoTHu>ZXC@t{l8pDL^>$n&a4v3Wt3_45*+;pCazLH_uRhU~BPw-5I@axs?gBS(-U$@|Gsh$OZ0Y~yCGxADMcnrtwebl%F9vyfj#_D zs9e3gg33=qeMCQ_{2R)@P+vu^Ch7lW`oH>?T={qEYlXV(I+XuLc|FP-QKtWw|CC&{ zmMCvx{AO|sxs{~<>ofij%G*)iMxFkzkL5p6D)odava%~GO;Onm6i@REtuOEV@&neI$pLel>$moa@gc?C)Tuh9Q1 zS5dhdm1|Myipn)|-Nh?}c$+AG3reLMD&6HjJH$PIn+{pI4wV~Gq5oHI5M7U6Pu9~* zsK=)dDg#mJi^?si^keQ#WPkEzlK!vH=B-q26RK-JPE-b=lA@j_Go&HISlRLXPaIsy zp>hwi@~Bv-+=UALze4}76q)77bz0#Ps8VLSLb{|!R!N@>$dIg&5m`sxP7WrAkav)G z3gezjTSM9I-9mK-sSHD91S<6Z%Dv3JPpFQ!G7^<%QQ`W(GK#qmko5lw{l7y0uh9Q1 z^#2O|ze4}7(Els+{|f!TGL}6VM?Oi8C!ZppCMS^32zAeSQ>Z-8)?XlBBqs{hGpm)C zQCW@3Bvj_2G8vWEPEW8RSfI z7RmpeU3s7B56BP6+2ltg{l7y0uh9SXaec#?k`mPvF-tI4~E+S?m=)5 zWG;lt6WoSW8VOae;)L56ZWHSCe;wHr?n!VDgL@3z!{HtU_Xx(&|CK+xyeYUxi>^x@ z3-@@q$1#%ruRblhCr~+2s6P9+E#S6>+Y;`na8G9LDMEeJr%`DoRDS554);vBZK$6i zRByv}&!Td+P?v27_eQwqz`YFaxo|Ip+aB)uaOwXp{a>vXT>8ID|JSW_g4-D`{okek zt5I_4|1SMsw{kh$Yv5i1_bRwovJYJneYl!RSE2GE_gc8u!R+cEoHn_du-VC=l+K(3s9V2-%AE;iDBR(2>HjWoPwucp?!9nF!lnPaBNF=ktcU)u z&*p=0pN9Jo+{fXLhWiNIF^qXQX8d2Gn0}OeOsMp^vBXR6>~mS5@*1 z+-I3f|JNh%0^FD2(*IrhzpnpfMovo9^9tNg;l2v@ZMak5((2vU;J(gC`oAh0chY?m z?lkIe3Dv%q`wraq;l2xZCfw=FogvgcnMLJ2q3**6a6f|kA@$h_{bMSh2=$dR2kv6H zpTYeK?&om7fIF8l^Aa)hseCEaBfkLdLbzX3r~m7A7g70EsQxbLeg`)`s3p{wlHUt; z{4%)9;r>AVN1?tVR#5p#sQdXdyd&ZM0&h>atKe>dyBh8~xWB^v9qt;&|0dKuTuX)i zuWMKjcO%>l)an0P-$Z4zQ0<(!TjBl(_b<5H;L`uyg#Ww$GJd;IxusVR-fr-A5yhkb ztE2OFr?Q7o^~&1|USoKB!)pL*OFI#Z|r>&VOC zb%l31ye{yrU@rY%=UzpH{;$>y(yMFWT}z$*@6rFg9#pOqs;5)D8{o}`cO$&v@Or{4 z!RrNYAiUo2X!Twnczs!_pHN-JUVnJEz`L3H0HN*){olJy6g`Uu!OOu*!872c8J`g< zukcJN*+hIEUI8Bc-?K%Zdog2*q?3p&!y62*0?&u%GS?&N|GGZ`ya--Mo&K-&Ix4pd z)rfgR;0>jC2fRC(xJ#(x>Hpq6)Q1W6(cKI0C3yG2djj4Fc%$Ksg!ceE`oA|yBK7Qj zkYyhd>bW-t-lOou|KUB7(CPo)dz#7wq3+eQ@LquT z9Ch9l{03vUvOjGL~TE@)XIbs`~R=-R#9IqRQC&S4Hf#o?#Wts8z}w(Zygish5Bs% zNo6CsDWPvc^+0%AQQaNhU-15g_cvqyA-5$Wx1+iXy#GY0))T6BtGiO!EvEjTq18Q5 z-5=FGQQZgCy_mbVP+cR{eW~mx{Qompt&i#f)EfxZjI9FIW~d&7>Y=DMM71%hjTm#V zP`BQM${|8kTeT^wN1%Ebb^5>BC957u<)}pD(Wst?>M^J`NA+0d(*JeM^#AG!qHE|Es5pqWjPa{)4EthTj_1(@~v(Y8zA?RL?;5I#ka@wLPk5q1q1B zvsqi)L|OWO^;}W(IGl%SH&i`Y!lUP@j@UQS*?UP*Q# zuOhD|yOP`js$MH;b+Fa$Y`2F{-D|4XquLkM8&K_q>W$3pDb(k>HHk&!{kO`$|5o|;-zxw9TOG)r3?frxn#_;}X_8qoN9IY3w8;Wl6zXFsq52T2WmK!E zR@f8zf7O$;?yZmNC{zRHhGdP5SX&)=J2{vfLf%2%N!~>cCGRHhA%~H}$$QEB$Pwg7 z@_wQ2?E`H0L80#3XjGp-bquPHqWUm%6aHU)jLPFN_51d#V^JNC>Nx683UxhCQKA2< z=Bm%Yk1x7s;m6nSbEr;2^?6h$qWS_O>Hm73zeMHbL~WDd#}_{Rze@kFPGQVzsD6g( z>oRSsZ;(^TH_2(_Tjbm1JLJ3MbfFZSf$B_DXEQwu)%SMj?^F2z)ep52-yEwSQT&+v zg#478Ba8!dou5;ji|Ra7zekntf3D7#fGYnHaP=#u7m#0*-;fK161E7{Z<*k~0Iq(= z^pYL9OXaB#35#v>Hzt;$%6|bY;*V68lPk!d$d%;JUAgw($t)eSq+e^S{_+{{>ZNl;2%gGLbb;88^S*Zek1sY z!9N)OA@CbBhW@YaiTOPzf-+ zY+ow$f35U~KM4NK@Nb1bfVsB_^_X-0?++A3`I1zgf}dt&MyTsC;ol8E3*UpEgI{1k z9=^qdE!1@u;g{h%)JsBDvrqr`>HoUUD*W5w`|xY<>Hj|cU&lwRp)OJLVEA{!A42^O zp&r}2s00{$>j;vauF{Ck_{wwfE@1 z2>)gH6RFex^>Iz2GC2|XD*V;(r@(&;{%i23!hfAHZwPg%H>pe$>i)b9e>(hksK1+t zoIzzKIg8}?e|>)W*WdB}AD>?V_W2cHpI-s?`4wQFUjg>{6=0uV0rvS7VE=O&bDv)U z_UFO>0{#N{^C|NCzdpbGtIx~V@K?a+_kVqU|JUdDfBkP|o6%oPen&1Lmy+L;+=}#< zG5rJiBe`4{*Dp2v1pj9?P5+O_#Qz2UDtTry4v2rmV1I?b9{w8mYvKRKarj-R&(|MR z)(Q1^ZlJ>TzrRt^dgM1Fh>dg$f_>m`MX)RUzu?E-{x{?QA-9oSg!tPft@bN|dXf(4 zglc4h-4N`FV0Y?!2vsY=UR3rL>d1W&0Kt9;4nRQv59t4@|3L%B)Bm+{5S4~xBcZOj zF@hs0HbHO*g2NEd|AU182Zu9&{;$^3!BGfKM9>UDa|HDN;26em{U5g&9JiyN^#9-l z$zAjoV@^VFK7tlZwlI_TI z$aBf|jJjkQK)<-=!C#Wa1nw52rfp@9YJRVT@YM?;Bo}?|KKu-*Q0j@ zYq&C@T!r8o1oZ!)tLWGxzUv)3&$$0v|uAvWtn-KJ+ zPXE`D{i$&MuX}Y1f;@s-5u})P8-jsM3=-;?Gy)SrhPoltwPmT~gt}b|K?Q-0z(G)8 zZZQ#0{}0Nd=$h&Ofyc&LIn39s3Eu$L4;s1f;vXto~VKTAJG3*opB|> zT?mFU^6o_BFa)Cz3`Z~m0sTKn_435iFwqtxzAucT|=Lm$qU0 zdjvlth}&JxUzZ{Hfr%f5s0tU&M+^_42JNQ zdj3GLj{16`?$w_N4??gJ;cf^vA=rjsGlIVmY+>ZqMC9L8=>K}Q{EM(20{VaO-_FQz z7fFY^3e{1ByCd8W;T{P0Mz|+)>Hn&pa33oB3bnF7!UhQG|KS0mtKNnOG7>_ylMpsU zcsRmF2oGV_!3Y~O(L|_9#fk7xgiWa*CRBgz4Ua&0G{qwk9>qj6p_-pk>KKId|L{1L zQpa^XLKEQ$2roc*BEmBeo`kR!!WIZmLD-V@oGgt0e}PnTDtVevJ-;MkYlNp$=S)z$ z<>8qK+ao*+VLOCpGq&WZL8^{~Uo@6hw zH`#~mOZFpgBKwm!lLN?G5Z)?@*udi-HH_gvg!KO~#r~wpjQk6s&=AI>D(Ni3dlBXk zh6wWr%LpxmMT9ov3qn2Xxc(36|9W;+5LOY=|3gnAweGWQAXICBu!itXgb~8Q2MA9F^x2 zkuRbaUxpJAEJu9fba{1A0qsOS+fy-#033c_u*57pCg<@o&K*~ zYc7>}LLE6DA+0|A65&_OT_9Y1In&=D{1)LtrWXlysl`;j6YBG|6ya8c-y>X&Fz)$E zgv$^vM@atT#JzYAJYHh?W{N^{DY+b>-Y@_ zHzE9!`bMGpt82KK$`+xH{0p_%y8lMFomu}N+{VPe!vDX&g#V#dPn6m&B>lfe53KDj ziaPe%o~YGFZ7`;0hoeUSuhIY2an+7s4M&pn|5`Jd_O+wQW5{DkF8*uHnLeI8 zfjm(dA6GnKYAsMZ1+|u}?PQ^Dh5lco|7)c+YHd+F9knx2Ys2_6glZ&fXHlX5>-cu4 zwMUKqU!(tP{X9l?5NhQD)UHIWBWjnTb|GpPqt=Nr7YWrBUF%GR{;x}2Mul^@c7>$1 z-UYSps9lBHHK<+982Z0HkJnP^CREo;tp}Cs$m_`)$Q#L?LiHE(T5r@Qq1FdA1GT=W z-HKX2)NV%YCPwxb>fR2Za*I&+>NeC;s12k(D52B;Yng;%qV^nWS=1(=mScRLv`AY% zS=S0=k#xusSw?LP6BX24COp*cV4_O;s0B=fWKAd)MyS;>aXUE}wIPy-`yc;Ez@6k> zjS7g$izeBXsySmsrIl=*B(Lb zQRY5IK2APCjwQ#DPm<%wr^u&;@rJE5ME|cn%VSaV>Uq>AqV@vE^F^UPM=w!%S*Z4D zYm-rX2ensFdmT0Ue{Bk5UK8qT{|(fpp*EHJn?haNTU6doDDR^70cz7xn}ym8=FSxA zc}V}Sy`PBx5Vem{o6Si2zn)#ZDbzj{UC+$V5XIg298rAv%tf>hYV%P06}2x=TY}nr z)ad`UFHxia*A^sN`3ALbQCrAX774X4(f@1TB_fxiwgR>9QHw{F6Qj0Fa`jlz|7*(` zPbaVagxW8ttrVq3|JVJe|JPQFuAbPbtwHT?)P6(lPt<-#Z5?WBS?Ukgb|Ta3$qhn% zEpJ3^3u>FFZx-tMw^I2_sL#beh;~J78)~uJ)BkJRcg9Eb|A_vtJ|9K9A=(oW{Xg0x z5xJM7qrDT#zKBjjv>&3Ti1tU+5K(Ivkqr`&pmLB<{S7y2gs2IkgQ+(bs@_J2 zP&qWA9EPYlqQem#g^2zi9VxkLKc}V-0cHR)|_tKV7K4^&Fjn=v+i+B5I51EauYxb+6h{q5tc)+9Nt2 z5&b{vAi3&1Mi(%$qfqU2M4b@1h%Q2O6QYX|bw|`0Q5Qs)Ai5mUrHrTl>ze8R(Uqdd zmwe3VDn!>Hx|(VFzmB|?3jJSwVv2eox{=~_i0Jd{a{BM{w z=xapZFoyoGYx@>aeCiidr~gMwm|jYLFVvCr|A<$dx@$zs5z*?S6^MRf{K`c9FNl6c zw2Jy_p&t1)RCw1=S4y-Nb+M8DfoMCTb%?egT90TWq797vQ>c$|6BYWuc8{%y{z3E? z^}mIB47vV~{uM>{|3B32iMo2I+YNQQh+em=P}N+wJC!{W%3i437j=76-$$tGsoRgr z{t4v()E$Ys2B>R-x&u+y2z6l0L1aUrT0hhsOojfh`d>%?uRD}_Q}QtKaPkPD?%`3W zqt(|nL*3ELrT^<*9f!ITP}iLL@j|ViNaZAP|u3g{V6fb!}01 z8tP6*T`R`7PSntb${FOD!uZ;(JBvJ97=J0Ct{v*mN8LG$IhSlto=0{ND)+0S|JQXC zMfb21>Mlp!MX0+3br&|j^0H;P~fyJBzHupm}+ zca!XHlFe?CO?eSfl%gUa#ZFZO5wW0vDE<@y3nD03z=HogcZRR~Kj%H4GkfQmlF8&| zlFjBtZXj~~kQ;#9-N@aC+&zrEw;{4WmHUP2Oq6>7xrdQ^korSHb&ZyLgvz5rJ8zMdAo6{m;2q@Md-py-L0&9Cs(v8{hw&dy@qxA;%RIez(@n<>9u%*`U-C1;cGk#mF+@V>4v_W^QzXeaj}a{T^RYW^6xjo<&~vICay ze-?c{a{T^R(hHH>`2W9hi;&~{pEF&0xS0G>C?9#{lKTodzW+0~1iA0o|8K~p$Sq@H zxln56cfq;uq^x}Wfm}iUNUkJ*B3B8s;g!grkv|!^UyxfPAG4ou=GG#AB(r`+?ln=o0C{5Ht9Lq4lyd*rv%8<_2m{0_+Ph5U}l?}j{N2jyEL zzYFp^A-}VH%q~$?2lBhh$807@%ea;Sk#B{3Ybla%gZ#e8?~VLEQY2Hd zzpS==TjckX{wpQxaGv*n^1T0(iPBr%|H&W3`VS@#ArD3V2qrop-;t4rk%tSjU(2fE zS%0#>{87jsEeS~JL_S)UZ--rA?$lt5CB`YOUqQ87p8>sfXwDJJkdQb|=$A@L#7Wl6;PQo_v8EMZQRm zCdZItg{t!WIGB$hKOV+y$WK7wFytp9pIOt($bXFdE6Bft{Hw@wwV!_t`Pb$Al7EAI zGow7Ynx8~YZrSW6CZ;0)7V=#G=ch}gI)mrA{?E@4MV-;|Gm)Q*{4C_(L;hXXIa`>G zu(UFVd|#-}>>_@EJlFsEhV_4b9`Z|&{{;EZk^dC=g~-om*#*LEOQqmvcy^2->%ydnNOD&IFKE0F&Q`5&pTY|vLxS>2%g zg2L9wuR;DV9{~~1*vQxl%>VFE=z4!dzC~S`WKPYU1{08R!D^%N9 z*i_Pm&8V;^g=Q#hi9&PgTL{%w7q+6(La0Wpunh{WQP>uRT~XK$g&k4Yo-sQ##Blvz z;QGJ7^?zY!#_S?gqgU7sg*{Q=`oFM;=(=xQ{});{C~Z(^kHX$4v_)Yb*0Zm0KG(4Y zUKAACiK1pyVSf}3MS=H!3I{U&Ao5`H5TRPN7CKPrDAZ*ShtUazBVe>b;YbutL*XbC zjz{5W6plmT7{(tf)V=LQrL$0P*9j<`jKYc3PZDP4ld*6Ld8$xHo(=;joPk1D6wYLB z7oi^cZdAIHXOTTn$fM8`g=UD%T)@PI8?c^Qgo#b6)Kk{yp_x}sL|6kz!{{rv-7kK}_Fn}=+ki7q2c!+7<{4YGhH1Gcx zc>lk^`~QWXP9cBoWRhmjpA5sb}Ih*4OMLW06)D5NM1L!pTSJBWOO98B_Y zcNy~`C_F{wX>zDg^k+zZ1t1@Xqwo$2BT#sW`bZS`{7>O|etbbFVWUuZk%`gdn2q{a z>8g$yhr)OiCZjN6qcRbNmp7(gLE%*t-az3sQ3|gMRoTLuR3aWOr;*dix5&52 z8A4sdOe(X;cTxBVh1pEMN6sPNC+CtMkbM4M*TCoh3w-{+z~}!9eEz?{=l=_Q{=cwL zO8vLJi%{V6{{>!36c)42FG(K4g|C?A_!O2f&4>SG^OvH)hySy5W|D<(QTP)DKKx(! z9)-0i@ZtXgAO0`=$g(R*KL1}>#q?@1rNYnBrNS@d8lm1IKKx(c!~fFa?&R{}da_I1VbK4L9{-gx&W3Rw4Br1S z&J|tVEjM`o$GD&&vKNf2Vf2P^DQmk32G5%YZwl$QE`xC;4Br1Su8=T2K3B0wpN875 zfpG)HYhm#Ik8yoN?u{^RfpHT9ZWd-sec8ZU$-Y9};_WcLhj9mtu`uq0QGjt5i~$Vm z2jgxS_rc)(AA|RQ7Oh}bfAW5z?%@M49)s~9j7MPb{*UpnmZ7>_c3pitfY%M!-p zFmlv+|3}>|F$@?r7$yuCh6SSxqsW+&a60FkVN-F0*<(vmXI5JUhQ~xzsLt$$592wC z0gRA|IvJ6%+@diOG9{bHLF5zUVDd?F2>BHGG&z)fhJ2PBMh+)O2&IXU(wroohw&ne z7ufnJq3-8sDr1Ctzq|zFLm1;=OoK5V#_KR9z<345L`J^c5cw*V*M#ammGK6Q$uMO7 z4`Y&0@1rSHrV4c{(_y>|<1HBPz~K7dm?62Z&tv3Fa+Xl{b2g0kVZ29uj!@S#m&ykX z%11C3!T1=)d}hsq@d*>3{uh%KHx|HHNc}TmHbf$R4r2+7FJNS8uK$fMMc2LJ`rr6k zl$906e*E^<0L(DDtaVxR~xiz_sP$IX5xg8VRlRIqGcZ3NlEy?9y^nW!E&4Z~NB2-sNQf&vA9jVj*P5QsdlY)7q=<5Af=Fu=ufO!nePB7{J=5dm% zz6mn9{x^>oMeT9(M3|?;r2m^Ivwp7sP5Qst;Q!_s%%%UUy>E7fc_YkjFfWGL9p-s3 z&w_b2%pQ#FDb(XY|2NMSMP0v`=fms;lm2gBD7xPE-Yk2OQ1|c>n0;Vg3iAq>mob@M(*Mo-Bv&1YCjH+WAj6jFlqIs3zI%zdXlR~ zHA|Q^m_BO@SZXlSb(l}Xj9@nLV+=E4g69#vM+U)s66O=sSxWDVAyl3cDnB%b!h8Hj8A3VKu*vMl{y@7d2` zE`#|6%q1`vGnf8vW>sYa_?0waeytml^f%P$|GM?%Fu#XM|2G@_-~54*D}=gND`90d z`~<57%vCV|gt;2#?=XLcxfbRxj9(*E=M?i-D!&QUs7jaqfVqzPdZ9WN%)ekYhxs?G z&0zk++zsTvLTeLpQ=!^wYjY~igla1!YztUhQr}9b-i%>w4Qmfr+rVlGYg<@5z}k*6 z+Y8lpSvyjJP>r*-6Rcff?M!_ap_;?iZd7&`>YnTgYhPG>xotgM4zb%Av-tYcvv0_!kXhcc!E*-@y***YB7QLv7n zexy*X4XmT793xa`DC;;_C&TIl>jYSxnM?oITX!OrlZ0w@WSs)*bXccSr~m7k&!BRq zP?zlr>q1!FV4VxAJFK3t&SDJxUvJUbRL&8q(aRFnd9b+tw=NJ}?~z`x`oQW9>k?QO zvDC#vy>~99av4egx2}*I?ADdAuKMq0d!|VJSHrr73Hraq^}lt!D0=j6gtZLTO|Ztm zx*3)W>lRp<3Ev9qepr2B^@GKef^|FVxr4k@E)%S~gz9?1x|{kvB>msIkLmtGJzECA zdI;77)E^Y;Eu#NhkBFk?vo#Qw3F|Rfd03A#J}1<(r9j0H>Y6QBWmrY(^nYEmO~nza z_uE(%Sc74Cup(GhSOKgWV|<|=laNYXsOyPgHNm3)TdC;k$wq4sBkBJ-@<~|3U=4va z6c+v8dRk)ic0I%RXN5X`IIK~y=>OJ8<~~P0PtyN&*%zsd7V23y7S_A4UV=3V);L%% zGhjR{`oA?%KI&Fpf%Q79R~hhHgZ>5;`oG@x$*`tVoC1sfZ%vbrdYs>a^$x7J88Abr zOUkx;k(1r_?gZatg%OJIFP{cE8fL;An9l*&rxE=REgtZz}=4c2$Ceuwovtktl7 zfR!0O{ondgBGpRI`iZ4h3Dwh>*3Yok!uo}Jga2E|T zt^S(|{a^k5#rhY;%~0G#^x~#MwH3w9sWc;-lf3y;+)@TM`zvmRBJckcx8}!fNZ#iu z^8Qbe_kW7K|5N0bhD9)@CAky1Gr0@7t1!DKBbD!t;=U;Efg-KGxF?Exu@9|;YGz7@ z+n`AQFYY6{IwKU@qDZSR?uTMKmTE8j-X6RC**>$kWRPeJi4 z6i-F*3=~ge?&(6czlvv4=|XlTyOG_6*+6A1_CWC*6nip#wouL3;<;4L6MoGDq<8^} z*Q0nLidUl83&o33?9G^qgu2B`s9Z{3MqW-{A=E8ih2k|R_Mv{YP`7w375cx9yaB~q zP`r`)P2|l&-PWxr-i~5l>bD8?c+&ricT(s2zu1py`oG%y#e3n7M)5w_+3f9)@|Gyx zkJ3&k4nT1ViVvVzMe#ut^C&)q;y@H1W(|*!j|$cCk|m0dq4+rUoKW|nfTDw(i7_1YA6my(MK^wF+edwk^Wz-ON<_?n5F3dzdR-B?625_ z;vgoT5bD~VMDbM=hoCqVMMf5%mR!9T=>J9fe{mSg4wq9&aRfP%e2#pce1RNA^7)_Q zXr{-IW677uapZV%0y&X&-pAH@$*r2iK==kTRL_7uSlSo*pdzhEg*We@F2j6#qc+ zPZZa&)cS@}e^L2csOQ@TlrpFNSCrBw|3#KIqeB1xnyy%Cj?%U$ZGln?l(uB|DD6Xi--gKjsL=n_Y$@%JQU{a{KH}9zq;lvsV$}dtK+ED z5v3zgI*j!kE>z=IqW_oZ|5`Z)rSnia7NwI=Iu51dQR>7}orP+zl}?~?qEPL%(#a^D zhSDk2PZjDhIi1QGB>lhCMVc;kCA*Q`$+O5FWKZ&J@*MJ9VdhIx_I#9jqjUl5ypZfA z)P1`MrAtxb`oBc~*V}a&BQF=Kdz+;zQA$y|3Z;8d>VwklC|!-xttef?Ncw;2I;O7| zlP}#s-bmg=-b~&i%*I(_=>MhLq?GQ@9VqofiT+=r|7)H8U%ICu@;;P&l=`FeFiQ8c z-2vnSLfP;KQF=%cdW#-mF8#kWkm<+dbYFU$%=|w~=g9(T2t_ne%KSe|6v@p0vvlVF z88iRS=m;g@qLlf6mdN~HDOHqel9vBIndt#a5lSIjr~m8uM*lC-|J8+6sR^awC=Ehs zC`wPDGz6u=EcK*NkI7S1o)-S^?q%s2l%AzNOsLNOr4cB-Kyf5W&oS}5P_3Fuqfi=y z(u>qb3-wVmmdZ=yIIWlX2xw^nN_+&g^fF5Cqx1^*=BwmuB%dlQZG8T-^d?G^P?~|# zWadsGr;>ccv^1S*zW=Ah=RZ|9O7BpgNzNkQC1;a-`A>;2|H<~U%&562eZj;BD19gi z5%~yc>0^}m{AcNtjXECzE%6mVr3EPQ{XZo>|5;kZf*YUz%sNwAjMASdeYvqLN2&A` zN?)V&1A~{K#D_miOZjmbxt#o#{7xuUeZO%qSD>^8B|iUITFDqb|5@VmpQY7QekOkr zW^X5u%~?zSO8!RvPX0lzBi9Snm`IVoDE^HSk2_H|pu|T&vvheAlsS5m-V9~7Qf?+i z%FW3w{;RFL70NY~TcCUa%3Gt{8RczIJ{aXJcqf#%LwQG(>HlT=zxthZnf_m<|Nn3G zRo)rpU1TWAyOO(+yGysrdyspQdy%ck)?^!UZ*m`UU$U)GitmSVyN&7gDDO}40P;Zc zAYs`aP)lpWa|Cf)@!P48KP(BvrqZ!Hdzm7bP3jJT5J;BOH%MXg4Jw73&9!7Z}%Jly- z{a=r2=Koo4=KmX=u$)J^jB){G3+2rJvs|wKbZ&y-R_yp3`N<;?#x-4$jJOiDWQ z|BO|kdeWfmqdXJk0Oc_#hbTXTavkL-P>xVeQKtWw>Hq4CP;O!kgM{j8T`C-mGX1|i zgt_$pGX1|iR1|fkS$-Df7f>FC@<^12GjfDbZ^d&|=>KZZO3kBCevvx;Uyt@!l;1@8 zC6r%9c^t|UQ6A5j2@SQqOyw2ff3>}a^6S*!5b9YmiOOV@r=dKB>8V1!*QQf>i+r1$ zLB1o@`)d};OHqCoh6hfv+? zD6gmTr%?CsZVgzAoyy@{mlP5+CuH-~dM>}IgPfZZJSnXtEj-5&Oquy=*M z73>{gw}8DZ?5$aL8==}Fdpj!IH`KNx?44lK|84re+MD*yjHLgo9@@LXZUcLF*n7d= zgSmSO)%M!0sI(U9_`PAbg}o2;eTB+5?ER>;6RM-h-XC@+*ayJw2>U?Thrm9FF$W8E zZHH2!|Eu|L9|rpv*z|v!{%;@2n4?JgzdAPUW2qb`)MY!vJ{9)yuup3c+W7ub_vcZGcs>~65nh20%?PuTQ-y9aAn$=c2)&k^bo zI}i4Su<8Hy1){5SvE7T2y@h%XTnzgv*q6Z0_WPyGy-cY0=@nG26zcKp1N&OoS5v=6 zsQ2l0RIVp)5N7cB+lBog(+|Ps%bacg1i*d-HlP2u2Qv3DlJ9@E zb4>I7&)MinJ$(POB=`zwo3DVji?I3rXPfVTw)ybC&G$cN`(1+h{%6}`nm?_w`S8DF z@fFZ^z^o89pZ~Y{{J+iT|FhASuoU(PCYoUL`F|1l699WKY(D>Q4`BeG|F`-4zde-7 zGvu@6Fmkvs`=Lihsb?hl9Qi!?0yzryi?Aoc9xWdwatt{Z_Df8R+o+G{#|h%<6819r z%EsJRVe|k0O4jSJ`Tu_<{iXzD2a7!!_H5WwV7~)Ix;B zNcK$Fvl#iVo>wBi2m52#b6|e}oBnUlmE7!E6v?Ik+aF0<)nm_t{TXcfzx^p==93FZ z`oFp-U@xLV|JQSSF`UeozJ$FVc2@Zc*k8f^7WUV$m%^t1+w_0!C(BsFa-lvR>HjwU z-~K^#y}dueUITk2?A5S;Vk!E6He#|BKa=!-UGrMlzr+5O`foyAKmFfcCyMr^KjCC9 z{TH0f#{Y)>FKksO{a>~2Y$EXv{omP)>CMSzLbdJA7I0d?*^>HJLe)2i{_oKL)mh%z z4$jVSwub{aJ1~Anq3XFq|95s0MfKU)1Fb10lP zaN5J!8%|p|`>-tiUwsqm>_?@YQ1^3xI0wNwfck+#-8%i>IYboQ!wzt0^-f1PhcW(e zp|0mhILE-D|2y=5T@U@=q5n@flchSt=?>?3IH$om0nW*A=>N`1lB-M6|D97sQ8U&# z9ZnZGXRrp=^Z68}yOQ06YIWh91?PM?J>Z-Jrzdmi|9YREOXWPFS_3;5z_|p@h1BW) z4*lP`NH*NLSeTs)Bu)Q!8vNh60?rCJSHc+s=PEc4!s!F2FPy94T+a%xfpaYr^nX2) zH^8|W&W+T${#WN3=N2lr3ia%|4bDAqZijOhoI99%r%-Q8KPq<%)w$KV7tZ}~?xWsc zs9PLBV386j;o}@BFsK@7NI3wWw0=OW}M8=W94w@oYbSCDdE7gvvKU-TE>(-@&2(JKu_~R^|@<-=Y7j^{VqD z+;(tQ!rcbWPjLQ)vkJ~SIIH2TfkXdy=>NKJYuVPXB>ms{o#{V>|2tzk>*4%K{V(!w z@*i@8P#ur%CU9x>?xt`z6W!fhsGhrUo5S4-?iSSP|7v^P7F6i}YE|iO3wL+8+rb61 zwuejqcj^DSR7<$Kz}<-fI}6noxw}%?O{k6$cMrI&;qFO&FS3zHs-ZPXE{S zw576NLu7lnr@`GH?lEu=fZGx7fp8Cjdk`b(|GLgYsdNykYd!ZcxJSaJ|GP&t)Oi#m zj~1%Yc8`U7JjLVSc4DHlP|Y0o1h^-|rT@DpiLQG~|99#Cx(}zr9Rl|ZxIN&W3AY>E zF08GqP&vQboyu84Jyt#8o(q@$@17&NI$OE)fA@UGUqD_cO}o9w-gqaQau>m^!o3)7 z_ND42)GsA3BQGbfAg?5^f_p36K1^Q?_XfE93A0ptE!^uwm-O}G?ULaAf0y_FUEcq9 z8}9$Rec|2?_cn>ld?V|&dk0JL*SPLo@}m#8AKbh3uRq*-B#~`kHaVs8`^f%q*_J2+ z;66a{LGmHE{JF0CFh4#5_faMW!Y#mk3~r7eAD3#g;!;Cin04MY;968nJ)~|?KK>WU zp8&fyTt{>%>yrHaugl;6uFm>j+nDP!H-H;5Q70oZCKECxo5(>zsrd=GgEyw1lti}F zai4-qt9PG9mO>LU!8s2F{oYucPuJz z!hH#q?r_J!&1`Bs-1p&5fIAKDM7XcB;LC97|1SOCeN99?Gv9za87}?bog}()Ja-BU zP8F(^syiL-I~3o7OaFIg$Vat$ac9Dv4R;m;-WBTOh5ql(5hWXwjP6{xi{X9%cRt(? z;m(8m5%rH7V(9-aPYPm8fhF_b0gj!d(UTH@K_eu7UeABYzRHjYM-=+V%^naKBuXZUuh9Q>>$|WX z`oG#2mEBR<3za>n)BkmC^#4k0>TSrqQ8^x!eNZ_9m3_rMDs5%?RN0SgN46*TCl4SG zBo87FCJ!MGB|DHE$-~IQg<0i_l_OC(iu%#yG32r2abzd5vrv_)oFF?r`;#7?gvyzy zoQ%q8sL=l_^nbNyE2ne2&Je0|kPLnoROtT|uK(2;r*al5c~p9!auX^&QMnwIvr*}V z$~mZOLy{h1t6-GFAql@-Pz*pz@u*ZAB7IaMiUBGi6Kw0hy&R*GP)~*G zTwfW4%JZl^fyy(e3`XTCRGwta5TWkF(^TmH>gj^Yv#5+fWf*n(zm6P9Mf|^IM|Ir2 zfXYNvMxinW75aZ=w8ZF<8O!*W$Z_O&a)NO30;XR^Zzd${l7Ask@SDv z;`^x3>ML_m`GC0}3bm_zjLN5|%%lE^P?wrdh1;T@bEtfV$_i8#q4G5&}a`3@EOe`P6imyyfKZ-sh3e@}(}ulw*LDyu1Gr+}ZBSk(~!Gb(FQ zq5oIbh^|Y~|0}kzDocx<~)_wiiYDgSR8Ro#27>v~19K zrowrsBX@(hKfK-H?G0}ac&*^k|Gm8=QuW+x%~EZIYAxaI18+Zg`%-V)5ZR7Od!erX z0C*kY9SH9bcn2}}V4)g4?@%fogu1Q6;2jC?aOy`i=togGT9}!9M(yxZaRWt#r4xAzVz zcanFJ{m8q8YNh1ei)sgW_rZGv zv8(0lp6n$>*${a?ygIx9UMS};+39D9#d#4t{`hy+l$P6lFBa#e@ScL#1aC0BLGYfC z4rH6Nuw%;>ufuy1-ViJpDmO#25z9_D-qY}&g*O!5GxDfm_MlNVO4+b`!{7~bI? za`wum_coU+7jGo_9Qi!F7f{U(w^68Ohu(`6N29t0yfN_phBp@8kMLfC_aVG-@ZN_v z9^Mpq6X0b%naKE;g;Mh?@Lq-YnxwOiW#gRP7VzGXkJ-A>dlTNIjggaOK(a1*Q(15t zym#SEhxZOYz6I}Xcrzru>|XsQE2)1byjdb=jip7H+N(12ONql>?3$z z!uuHBLPpMm_X!i9%Kq}^lM95|IA@faKZCbO#@zdSV{KnhUo6aeB{A7-%=i_&ucaYx z3B2#%eFJY9^`)}wC15$cZ*^KJB7P6=2Y4$aARDXfFWV?@CA^Sll){tw-U*T~yJk{18@Yac*jV&h(ygwQCmr(bIFH-O}h$7YgE39rpZc1)Oa<){P zq1s$NW<8X!Em4JReswEUTgYUqZcT1OW-o}#lHo?Ns)taa|Eue%YS#Mks2+yuv8W!7>QSiD|Eotzq;iQW{l9vQC~8G2)gFgxC)UM+UcnFLiHn5d!srC)ogqoLiJ))Y4TN`0;-pydKufI z|EsO5UWsbf)>Wux6M+6-rT6^%#$y>-<$-X3C4OhLL z={rcix2<{?(|iS-RDL(A_lS~hj(oh2?e-Vy9@77-^#3YP3VN#_Mzx6QBd8WoeH7Kl zQ60##j|p`Q{lA(Q<$r7Ps(~u~ziNrD*7nsBsv)XnR9#eU*5e5ET&hs<$SPUG;QDv@LG>vnxc*mt%POxv zgX*)?hY8hvfa(ZTUqW>xs+r--`XANjg?hG+qVgg+njAxp73#4aM`b+8^}imsmrMN*nsb75+)z=uq-K0nCO;o3#I*IyZp{{c(m1#n?x~RT|>TFcsMs+5tGno61P>;+k zDqR1o_pwypLv=2ybEv;B)HQ!V<--Q$W7M`rbsnm}p!x}_%TfIl)h|$;kLqWra{XUj zDDis47O{rUg?dXDqxu!9UsBIH{6GC`Doe<3$fe{mp;{kSzeRNg#qUt%`oH>veAG4n zi0Ud-S2ExyVdl3PtECmC)U~anvRQ0pep_`>URs(8L)OQ75cxr zdaB)z+Cvlvp!NV04+_=MS9=(>fv7z~{ZXOr)nim17wVD8qc#M!0%}#%4Ae@f(f@1o z|5{NZm1owIJWCEEhm#|Odfz=q<$0m{MzuBywK1r@ zNPV8Q;>?JdT?E!2CK{$HCZiXO3dQJaI>Y(~B()Z_L(mANGSzxJW5Icp!m z&ulI8|0Sr+lLvHbpOBxD^T`F|Lh>_m5&1d!1-Y2~lH`NFwXc}Y*8g`(qf+xXsI5h9 zDcfB}E+@Ywzazg#Z4GMt$v|xdl^@BKsQrT4PqGHCt)jA;{8^Y)o-zAVi)59q{mOvf zNWMS0_6KU~_;Ee?r!f1g{YCzb8h?*g+rW?i3jIyUO@-NCwqW)*hra{-X4IRLTaa6l zTahi`Zwr5G_}Sv0FW}Agg4DJh{A}@0CEE~DSgj99E8X7-{+{r6hQAy9U1aEd`oG%0 z{_a%h|LWH({$B9gz;8vpwNM=q{@zsR|LVVU`fcGK0e?UE2g7d%{{Z;y8MD7o-S_b6 z|NcR&XC-qFf!`7Sp-guW>Yf}%h5oNwJQ99q_(#D%7C!yoKSpBI4D{*$ekW1XvF0Do z8crZj6zZB!hJOM4Q{Z=pe=7Vl8E_i>)0sFUqh9;@U8r;=y9sq$XTd**Vh{K|nK)ah z+dY@cc_jT`m%0%CweWkvzZ`yV_?N)Hh%pxn)%`vHQY!R+b$0NtfZqrHmDH~i>aC#v z`}BW3w%5VG75??`Z-P(%_ivQ=><&Oi|7P+Qp<2KBec|5$|2FEk3zcv9JfQr$GG*g9 z(Et5=5NFfoUWC~{lf4hYK=}RPuY!L+{PFMyz;A;80DK$%gYaqW{zLE|X8n(l^nZUK z)AWD!yq}+gUxc5hULXz9BrTyHpAwa_P>+KHKY;JTufne|*AuEUf?uQJ3)T6^58=n~ z>(rwLJ)x2cm0S9Q;E#a+1pH^<4~G8~eDQzyLmFb9rZQBhzWJ4aXW`TT{o$gk)uTTW z{uubr!5;;m{_npax#~{4|03%d-JsC_efqyYPIPtu&7S~&KKzOB--iD({A^#m0{?aR z^nd>~iPZCr{_i*Vzn}U4H2724)>NUon)attq5tc$GvI#!{~h>q;M4#8S&Vs?r2qTk z{~Kq>`_$(O^-=I4{CV&{qW-aPmTLDCDxV6~6`8*P{x|R!!q0~8Gx%S?U&NTth3ZV? zFQ)RPP|t*~sC-Q>5$cg#3V#LsW$?d)znr<>3U#l(r}BeP&z~QutR#OD>d4gyGHd!7 zLFTl-!2bvS8u-66Y%Tm>nfOhp-RTebf5Kl!eZ5fk{4Xkh3-xij0YP*4|0387!6u>y zn+nx&8f;FbnNS^%!4?QwAlQ=nRzfwmgRQA-LxnX2+aYL$V0#3+AlLyxO9VSI213=J zU?(a&3w4XTBG?1LZq#=d&Y^Dvds5j;sOEOi8bLb*Z4m5>U~lH`BUCGype>dCgz5+i z+9Nm+!T!__XwVO$aya5y86XefIWm7~dHgxR%B zHjRVh5S)ad6ZOs{{XaN?=@W%&PX#AaIYp@Zc^ZN%5S)(SQUv1v2+kzCkX_}_3%Zfr zh4S$%vIl~m8#>uQz; zS0cC?0sTMdBf4582G_8M*9!GsxE{e>2yQ@d3$t!Sa1#^sfA!|5;8p~;Bj`(={y(4R zpx_QF^ndjPV9*c200eg<$PE7;=H4sRGqXRH`!niQaqs|whY>tT{UM>Qnf@Qp|CPf8 zk0IP0!Q%+NL6Ac*6G0xqL<9u{qY)SgUO-^79*ZoJeEu`w^Pd5q{|xy2XTaw_13v#5 z@cGYxuS5v={Aa+2KZ8IH?SNka1a+n(GA0u;CHem6fbV|}o}j|_KL>pOb1;Mo-~Svu z&Gb<68S+_j7&)9AL5?J!BcB&$UkylqMsd67|9W4KK`;&h{Xd}p>sdOUkrRaasCgN| zBm}P@$mR_FKcN5Xdfs3>{a;-{1d|a=LokIp{a>vyg6UM~|H0c#&mi9s>e^-@_yobb z2x#@eYy{%}2<8aYci+KW1Ro*zfcl3*Jx}QW!8}p)-v1QA7YODf_zb}U#xE2q4-Xbm z`CO=v*~JLHLO}lyvTFZVGyOkUB8ncRr3f->U4|gD?&SzpBKQ`;4+y?vo%Da@@WBcy zKMJ)%{|{DCUoF)A{{_K11ZxodhF~po>Hm6Ucv1-d$aH-+4Avv~8^NE9r2p%B{-Lr# zsCpZ2g0Ka`O%XOnxS8l7{XeAtE1wr}3xr!Tm;SGg;&5w(K)4OU?GbLv-0g&FTf!Zv z(ErtWCv1su7lb=er~j+7f4D0Z`o9|Oa1VrcBHR<<4F3yI+L<6kq!PIo`$eH!qX9UK}i1(>Hq4e3A-}B zn^4W(@GOL9BkV!Fr%=s=@Ej`V3e^!2o{#W4gcl&Z0^x-SFGbjkF}=x)$cxEKgz6j} z(*MKDMNu;+yb|Hn2W$n$t8{;!`o33*ZoZ?7XaboOy|fvSs?i@07Ab1KeXg{k!ni_9fW1JWee5! z1))o&BGhA8MHnNjAq)}v%;o(becaWlL_)pq5`=>grqr8+dgPy=GFYhR!w`g{5k7@* z1j45gK8tWDW1bP})`w9UE>xqGCBl&ipQHXf`2tD*4_}n@M;)k)LHIJlu?WW_r2mKG zM4#J*xf95VLfykx5WbG^RqFJAy^Zw$kp7OUi#g8Fd?ry|^da2mp|5Kc$< z5yH0+&PMn)!kGx^|6zmwhqGA2yFz^wyoYcuLi&IBzUaDL`hQ6O*CX~Z!p{)SLpUGd zC#>gFq4uQ(R2B-A~Ap9QTHwc#_T*}&( zHI(|63jJUA@CSq|5z_xd`oGqHVkG@vA5GbC{ekcogufzO!`!t(o%U!CK^e^K8H^-WOU7WGY0Z;m?szfS+JHMc;G|JUjN zYBcIwOH6$mp}NMbZ-@HMsBe!tP^bUb>Hn&?^_Gm^NvN*7>${-7JLJ^D)z6_$|F56N^!ZXr{Q~krvKQH#NlW%GwSsJy7<37HtV;rSGSUV$=gW!zaGOosoX{O6Kee))FagIMcqUF zKGYr5`!nW#lKx+RKqgH6LGmH;Ve%33QF0*p82LDvBlBc|G)R-Q$Rb%H%c$FuP^T(s zk^Wz=NKf=QR8bF5ud#3Re|3!4Ln`!twfe2cs6UB%g8CrT>Hl^5zn*FI|2q9&D??Bp ziuzNm=V_tV>Hqa-8f=!#iTWrOc@A~@fBl7q$QMx`i~48=j1lTFr~lXK z|GJe4sK0^wMATnJ{bk0#(ohfmzy5lI@+Rt;;ZI`ZWTE=*uRfK^w1&vHP+x-j+o*qz z`V7<;qE7#>&t&8*lJEbi&qjS7>hGcc0qT7JPyKz)|G7eaEb#q5b-w(k{&9oO_y5%S z@}K&AmRit|`x#qV)X=LhP|sX$F?IUCI;YgXqVjb^k;jEuzdee?_!8>c64>H|oEmz8>{I zSZbY6`yu_m{#Qdi{~*c?e*+`gmfEM$rlLgjf7RQl8KUhGHAl1!qAi%aB}xB}S};xj zS8Ls9TPoWLv+?<-WtT_paGs9i(k{)i4obO53bhz?}#K_vY@yVn#QB6pmkL#2mV zB~eG_(*O0g9D(R)MD+jYD9P31M*olK|2nc0qTYx)BkF?acto`N=mbP3vd)u)>f4Iw z6hx;ZI+Z&8U)@oO=>HM@U)R|c(K(2^A?kssJLAt1>h0}G(`J(II zUdYH^LiMzBbP=K(5M7MuDnyqcx*XA^jJZsxR<_Xx{FFb@^11T@?MfZ{)+lD&EJ1T z0}%1YU#g$kw22;KD-UOExvARrM-e@aXdv~+gz79D<*4L^dSnbl?;|o1jYec4N)Z(i z`G`u097JWt+d@6I^#6$dA9>8JlJtKa6CjEZ(f=d*zw+29W@OS(TN9#Z5e-80G$Q(c zG?+0@l0(R+gz7F?G?WVcUtRY_!w`)`G@SYfp<4Mw&rx}vr2j`eDMT-dvT85tV-QV7 zG#1e-h+aZ80TKN_8ZWu(8X=mG#e59KYCYmUGsa4oFi2C9;3O4RwDWU(dURhM6>|W zM~FT_^f4pn3H2QQl*)XecCdw1=>HM@U$>G?q;C){M)Vb;FBy|{?0@xqO=U@gvJ}w| zh?Y^O|3}|4P5+O+m$a^V1$Fwr?$u9-{zkM4(KHo^L;;j$^aSQ5O zliQHnBHjVbq?*{XafVboI?<+!=9q z#K$8(4e<$xPex4tkLmx}P-KzuDded_JsPJY?t+;9AD=0@+P`sEMs^dbHDr7i;`0&r zKzt73p3J5H>-cl2(ErtSR(t{C-iR-x-b<)kyok!hLOptyBEAptWr%MXH8?o0hP@^+z` zz44uh??!wV^?pL-a`8P>?iK2B=#Myu_=J&hzBBmg!-dGy`_&) zd0eR6BhDkXC>9VKOqjy#3z3Z3UtC07VuJqv$!|;3g4;$et~ARdbNDds*c)LTmbkDnDq zoqyxuh@V3|f{`PI>YKHg{vW^4Q1(T{Zz3Lzcp~C4h{quw%Tg~1)n!gRp2`HF-m@MmM1D-pBR?TOCFhe1$c5x*ZEe}{Mp;$?`xVSkni^&VMHHqN>$<=N~|BpEX^)dbj;y)3uV?FeL9ZCO>{}x@XcH#|4wnqFfk}Z&If@E_f z^#6qZuSzA&BtB^_RCi$HIhBtL^2l1UPvxS(hA85NLnK~6iFK-?UC$_q%D$tSc?9y zTilOIJE1xXlKqh!goOT|(Ert}OAcn_AwqR+l5{|FG?I=;jzB{HPY#z{y`@Jo{wSeZ zt0c!D>4b#-pV0rc-kFid3-z{~h@>ZylaQQ=xUP#VCay}CJe?tG)V|xMPFBIzi+Z)LxNG_sI|5x6dTuS9K zp;}2MS0Je&xf02pNUlP11Cl;Su0?V+Bd-yvIh`ayR4e5$f^0k4parWdM>2k_V_iNb;nR@Z}H5BQj74 z-~W&dWco3Z|NlMViy#ud{2?h&=l_3COs4rFh=lKdNccjDgfD+cZ07R)4+&rXkTvnr z??|}*PpZ-fkwjC^0H9p(chUn2Ps$pR!FA^8N!$BdaL zRBMUkQ!4X?dQ27~`5eh-)E71AUr<>r)W=A+Mc*U&3dwRLUo&?J`31IfqBi&r|v>9`GUP!l~vZYXsdD;T$ zwn(?8zKu}L^OXLdZZC@Rv~)+L`yd68VIhW-F%%b-Slgq5rEnoSuoaC(MfCr)hbVds&qjJ4(sLMj zu29!}J{9`EnvH2Mq}L(sjr0nn7a_eADg8gaL?YGEm(u^!%SBOlYtt){UX7IN|Flm- z{q+CzT2b^|x*lm?q&FbF8R?Cpr#A`p2+;pi`oEqbw;{a~Dg8gaqoL-zShk-~_xv8D zKGJ)U=8@iq^kJm^kv@R*ent)usxy8{|4-@vy8n+LeGDnr|LH)9)Z_Cw%jSeSvVhb^ zY9K8lHJNJ(b^l9L$_?=jQV*$1y&}{#)Bn?&DC%lD4Ui5+8X_Hpw2m}EO8-w|iP58% zvYsX?>gam{=@6uYsXr;y_0#{;r$y1T`Wd7n81^jEVN47csO@IhRA71-$Obb=`5u5|MYE^nnBY4)0vXi#|8aAoh^#G4o&AE{QxQbKbjNLHUEO9osh0U z)22w*BK;HTuSowuO8-xPmq>L6PuEF0T`$xw^cT_%Na_FSKceea{*`poCPFnsnl?kz zwrJWMO)b#WjJeIpElB!*(^isJ$3heRzlr{@&I?W3p=n1n(f^xvkVw^56Ieq_q4KMy zozb)pnsz}`D>UtjrajQK8)J4C>e}|CLjTvLT2pC5?k&{y?~A7P6x*VS{@>J2KC0uc zX@4{wgeLlb(}4}8=>JXhf8|9@9nch`sUw>1K+|DpIu}iu|DS@UBhb_dO-G{X7&LMH z-*mLpqs|dc$Fk|;gvzO!I-}`CG#yW!{;&Ia5|xvMYL(k`Dw?{X=`=K*i6;7g(;1Sh zd)|fdU4?2UG<8Q)Pc)rHo&K+DKAQ^tU#&5k&O=k5|3}w(fJsrTUtdH~%xBGtx}p*c zm{2gFl5>z~0C9l@mavN?6%$E7f@ERxO!xG3PtWv_C4;)CU|dWj^GXJD2KB4=bgj<) zp67qB_jjvLy~d>>Q9kRlh2U!|G;xn_Ge9i z{vVjg+DSs)&hrRNr#JHj)r1_JXCm`R=fA9#^v`hS4_ADAnOKGuBJE+7{Q zbvug?*o44h1TqK&5HJu3A`nF&#KzYu5_(5!X}MKyDQ3 zy*4B89s;i*unmD%5qKQ|`hS4_AJ`(1>brJ|fj7uE$*sbF-$(@BLf~!c?~wF=Jp$iH zU?&0<2z-RVcGiACekjx<@M9{UkUNBW-(3iNhQMy>d&p0P{yie_Ih8L+`oHd$AU27;F&cqW49A$S(|J)1m- z1X)0yEA(>?o=@ch@_Xm8N+wnP(;dNw5$r*|C)ta9fP9dANXY(2us4-Hx#vEVK_Uj+LjI1<4D z2o6QCn94wM5ILAEA%_Tce-5KEoGc~F$PwgYiUoIgERRBP9D<`+9z%{LA19w6pA_nr zpQ7?K`3(6i`5ZZ3s3RvLxDLTd2pR}ZMsPlY&m%Y!!6}TKN=_qRAg7Zvgu4G{QF)P^ zP0k_blJkVRKNlbvLU1AVm&irrVlqGmg`B?#hN(ozC>bN;WJ0KOFcHj9Od@EpkRol; zA=9KQ)O%$ST!En9!#UP2A(xWN$mNO!CpTbuCAo@xnOse-A=e6ZudYXMH-Z}wd>g@y z2yQ`e6Js`$uaK{juaV_Koz?49-XPy3x02h)w}d+K9Rxo_@LlTfk?)fgtmcJywBEKdp$#2NLLVd*j2!4y; z0qO_IL*!wS{vSN5%IYs!sC-9$PyRsuNYej<^ncy*uLzYQ_!~mEBltT)7b5rvLdvNB zM5r2q$GF#V@-Oml@*iR71fkzf=tL^K&Y8P8R7o@5uux?+)Um=-bywkZxe3q#&RQs zIwRB=q5HUb2SW72&|TcTn`}bfL*6UY`8P$V4MNSRHz!+=Ey-47YoU&BOQjvzp6oz& zBs&TJ_S@-#P+x@ZN9X~By0X^KwmZu`$ev^`p>CfeKlBjwhsoY#AMz2!f|ko!eiWfW z2oV1M`A}5p2lT*m4LLK=6LW>caj?i3$X0Uc9 zIg5OeoK4PA)N6pyJSy|a1>{2VC32C_zdM8i2*nYi|A#`X4U-WvO2!lmuJz9)LB$|V zGD%uwN~kk;5K^-~jnEo|T!fY(lwnMk^vE2!gj_1r`}$XW1@)EWD)MD=wPMwou0`k- zgw|1CPi`PLlAFlQLf!JKR9+*?$t~pTSq6Bi|S5 z{-pnhKA`>~`4Ras`H5mdL;pJNMCc2I#Qzc6P3|E-B|jrSSFCbE`hVyv>R*$UTCqLO&sNlzV+ken-;(L-ha9k9n>A%-Ubb zU&-Id-^o7|{reX;k0ErNg}=zZ$$x}l`hU2Zl>KWFu8wd4!Y3hoI>IM2rUohgkMOBv zP4YBFy($ZzLFG*HEb?sf98&yW_e1zxgfBt(JnH9@7myc{7m*h$R>faRr51S^c{zCn zSt#_ca=13aO%c8d;ad>C8sX~@zJ@V%$hu@blKvmQR?2$c>#5&BHXv^#Zz9G2^&KR9 zE5dgo+>rWhykkyQthvHX-jJ?+2FObv88ESWgXOgqX7s=V=9C9wg^HibW?w~v+N&EtYLkKTq3ont2$i-xUr2p$t z6s8g(qhySXlj8qXSItEDHH4E0uRz#BIE!$KF*fOtY0@R>|GKX{Dmiiqxs+T+(*N~U zSc&j@gjZ32nOse-A=i@hf8Fv1DjUg7{a%XHp;DKuN7g5=C9hK~Xu>NSxq(Up@<#F|@@DcD z@>Zd4`8GsaAaXk*O%Q3s+Q#G^i0a6zEmD1i^zUte{ujx|JUa-2$8Xf3`V33krLJpA^nj<|Bno(QYzHf zeFT-q$dTkIlKvkVBW2zG7lLyFy?IwD6A zIgZG;i2Q=ccZ~U-{DJ(D{E7To=)Z%C{7U6F@^|tN@=x-ZQ0Ma(qRQCm|B-)0kDfqQ zBTpo&3;l5tJ()@k@)Yt^lGibMnkpCEb`zB|5WN)9GZ8%xQTl)MZ0hHbAPdNIg?>KK z^Ql}wUPxX4}`^o6lRIVZGkafv=WPQbg>N0W= zy$;bKh+dCqdqi(Q^ln5OAbK03H?r10yPH|Qg}jw)sHm@9^mZzZ$j0Oyr$IgNZlsC#|}qESR=BDx4s`hS%EADzv}Ipkb&9ywpQ ztqYHkBBnDMaHeCrE=d$s}nB^%?nl zIn>jnOJ>NdP)FtvQxjncqTeFA6w&t)U54l@h%QHTEut$JPydh7|D!KcSxv6VYiAvm z^`!Veq8rIgmMf5f5<>VIfb@C1JO`(q8M&&KipT+O6{4V*PP)AlE`URrf z5#5RC2dw>&r2j`hX899xhfwdei^^_t5BVwi8Tq+TM}CRuenh{b{xw-ienajh_bKXo zdh`I5gXAIdFnNSLs#xVJ-ywDuqTeI>528OH`a7aOGUg|e{vZ8?N_ z)#Npb1^4O9tWRD`UPoRp)GaqaY&c>!BGw79n-IGfv6~TVjMy!Vyp?Q7-bUU| zHWK=t5W9oQo#b8Q-DDH;9-%(geTcP2tSR+oWOK3w*^+D}^q=5jZK$**+mY?b4rE86 zZn-mJk090sv0jML|6^Sl(~ay-_8@x-^>eUn4+E|u~NilAy$UivxtpA>~X~C|FMyb97T>M$B<)% zdVD@X*e+fLtil?JuITm<*6XGDL=jdUQn*vk;3>r~k(iEE}Xr zCWX4?6cw9v$TaDa8KI8!5O)yEA$|j5OAz}Ov89N;kJvKAUO{X*Vrvmw!M#?JtH_th z)#MtXZfzZv_2dR}BT4^{iT~@>W9(JLwj%Z#Ys<+kCg$^Z(eFi0w!0E9zg9 zmEO4cGT6aF%U=pb@_I$Rs*E>4d^qAaBHjt{n-ISj@tYBEjQA~# zyp?Q7-bUU|HWKPyx`WD{SU%#=5--mc>#G6uYMm8r~kS)npLfvv3Ds9Pj zWP7p$N&ojpTD&vjk09O!@m`42|KnX5(~ay-_8@x-b^8xcd60aFe3x#9O6?Dr~k(%uy!IjiJVM6uc+r#d@7Y`;O2l)FUqUV=myyfK z6^d2utfKNVxtd%d@Xx04?Tbv_?a`I!8K+(GUncaggl_4h#HpCbM<;-4XY z1o6)i-;4McjQNuMiu{_aB)<{rW9_4|pFBVwBoC2?h5olaXv^&;v~d>Mf@+se`D?MBP@hX(ByLBd9uhYqQJ=NflGl;q|47_GHW2Eg z+(hMO@)q(|vLSh!(0}8RXhfwkd56%yrir_d=!V4INVG?y2@)-k5dTNwUh+P&DcOu{ zuBg9%n`lX;71^3>L$)Q`De9S+p#LZ6|A|hl?M!wd?ViXcRkQjzUPuBJ# zA0QtjA0i(ndy{?SHAUhPvM>24Sw!|D`;!C6Vsaokh#X9okVD9!it>I{S{}}$l#*rS z2=XydMmp6Jb&OZw4l!NO(xZkVqjBN5VuR!MzNjZjJt*u<{fe z2^R^6k!hjMDnlikr{s`Wg~SphmLsv0wabLMJAF(fxBY zs>5gn<0Ke$VVn%(A{aGb0LCdWPJ?l(v}4qic>f!f#_3efAkQSvQeO*^e~h!qbL3kh zx0k^vfN?&Ia~X4<(05LQ{%>3;ivRw~xEMwuj7wl#2IEr3*HWy?@Nz2jf4?`3D`8v> zqc(N=zt*pzQb(wjdN3Nns1M^N7}vtM0mgNVxjrw3{%_o<6#eeVxEV%681#SRR*BS^ z)BlazMe(0sjK(nTg>eUryJ6fZx^b8AIDOt|LPh*vzwa{cgP}UADfMQe`=3e}EvU2< z>dafi=nta}jP5Yn!srM?{2xYpvV&q(|8#e`c`&BJcoD`l7&Bmq|HGJ`x7SQ6|M@>RXTzZX z8*}p_=feoXSO8-Y4En$EQeG|n-=P2de>q}=U_@bv|HFvnMaHPa6|1hh0V4;)gki&= z{~H!#Qh6~Bj0_C=zu}7Rza2HQjP!)M50}7r8OBl=D_|^R?Q)6d-wnZ_{~N1B@!$6v zt6{8zA^s0ztG?=Httf{IBng-M6x3E_HUyph7HY)Ug-@(kr zFnhtg17;hTcfxE6^Ddb8z`UE0^nac0y;OK#&`L9yEnzmNPXE_>D=M=7*YDoVwlGzn zw1e3ZCjH;+ATc_=6XV7I^*l1~huIxwSL*bCf0UX%sPvRb-B%C590c=0n2*AI2xcFc z^nbIrMC$hG|7KrN{O^C7MKA}zr2m`!^CF9-Y!1v*2E#0aSpstyO!~j+`+tIw!^zUT z_z^Hi!F-JR$UJ>Cl`%s9&TBr7+%_Hntqe^q1%rU5eyGX|6XZ$|TK#s6VS@A=Oo+%#d*|4s4#s+Mh-FT+&H zEPKdwS<(N^T%NKN<_eh07`a@rpvdnx`oFnK6g{U_!`uXO4b1g0>Hp?B zsrCPo)TIBL8>Jn6tj#cAgZYXm=Bs(S_&>}oiuybG<{L2g!c^iXFt@^dALcfg@4%%0 zn{VgsEB+7jJ=xb^W0(~%KZLoR`Uj%>-{dhrqVlm&=d%Om=P-A|+yhhmALeeMo++PF z`7BTQ0_N8+zoh<^P`6V_Cn|6v}=+v^Aw@&Bs5zJvKA zO!~k1Ltf-hjHLhTBmN5WFPOi<{1c}5Kg>V!;*U`|o~QhcWHp%oh>|=(QD39viBzip z7nwX6$reb~K=K+SPeJkmBu_>1Y$R(Uc?OcFG5&O+-%H6eshp*#zlW1N2g!4h1oZ-; zpL6m&D(4IRx2DMpk-Qwqi;%n&$%|QgiJ~68$y!t{6Y3VOK(aQHh19Ri)32g(b)HfO z$=i^ui(~^N>mhj^lJyyLZC;G{Kaw}(DK{c{3z9cczd27A|3|W6o^m^qO^|Ga$)-r&OZ~n)y&09}LjP`(Y>DJxBwHcb1IgA%c0#fZlI@Xf%gANe^B$?kcPJ(28#WG^HiLh=E|KbRL!|4;T7#eX_WK7wR1 zl6@KZC|N}IQ;L2k(RsxgFcQg8ER6nFM{+EZ&mgJ%e;kreu=dHk+NY>Iou@pDNYek4 zoAUHm82PGV)v?Nv{1C}4NWPEc>qx$Xe|`uW(4=Cs+kY{tQc%e?js% zlD{JP2a;U>Cx4e5{I?CsKbh4rKP#61f^`Ctf3y70f4Wso%GQZ_%1N+JhjlWnQ(@I$ z?I}Y4otssY%4vD=XTUle)|u4l|Nb+Gbq*B>^}grAstxNrSeL>&AJ#>%E?~@sih2fF z7gM=J=wA`57OX2^(f_T>CDNZGRv{y=%!|AV*0r#%hE*5VHLR_ZS6h!teZ{I{T?eZH ztm~=YAoN|%x{=CF66ycVyLAh!7hv5At1GOAu$sfV4c6VTZijUTtVWD)Ec92T)}2)D zk`@~IJ=_G=eX#DKey>oUT~jK}@{|^^+QVuIs|~DHtZkiF+m=e6|63hkb%xcEdZ)a| zE>y(-^_vr`8?3&ty2E-HRu5PY!0O4EUU_>xNadk_6>j#1)rW;g6!p`q^(d@Cu!>*} zfYpz+{e}9xxc;{WO1%GkVGV{g6jli%hX}WCW10SM4QIKOER)f0jUXQ*N0Ot+(c~C% zEcrP31o1K*&zMS7&UW)xuqMHp0&6m? z=fzdFb`$TtSIvc~u%^k=tIA6K%!}kU9aaj~3|K)}Ghxk#H4D}pST8bv@qfLtvgT5m zCyIY}vlhTw1dHo`>m|{3|A_y?3J7%{hF}@6!mwhnBCL%{y#HB%MgO-FqVNp{158-- ze~bR_zpJ!tSTDnJU@d`_hLwdy|F`J>`dA)!&q-_k--B37VXc6*jJo)LRaPsh$ogNe zE3DP9Ho;m0Ydx&BtX-EEzk$j|p`IO^VZ8>6{%^gSrm68oV7&|LBUtaj+79b|wj=(p-yK=>f9pfheOI?WhP4wG z{omRly6%Tv+;_L^>%Zl;K7~~Y>oZti!up)GU*yGqMMe8R%iqA-4{I;W`|=_WP&uer z)x(Ej{R!&`te;>Vh4nqGZyEEQ(06j{2P!|xUi`2C*3YnhgY^sbUxhkz`oHyuD7v4I zA$20Ga;fS_)j;Yb>L&~RZyu)T|EW`{*CbC<2Sw_1 zlJ}<6nJk}0o{bb(I7fa}Nllqlfo%G7Cv_fD-HMrURN9jC|5SS^>oe+zR2QT=v9`0&{|q{HKb5YE`k6Y_9jSgu^+4)j zq<)DWZwATT$+AA=E95qw9u$J+6E@e`>`Qmh(3&m%PrsVUT_ithiNVCn@b z(?#*uA*q>2EkSsSHxeNV7T9GvMd}NrK4T31U+42Bm9G@#?YHz>B~ts4`iAAb zqWgD{)P5=lMDf=EsY6KpfYf26zD4Q?YmW+b%imG?K2P}(sb7%#iTclZI{iQOTb}X< z>|sd#3Hw&0j=??`spGIuLW=&M`WtpNr2dh3`vjrCLaHN`cTnJNrD?SHnIZb|LHwU|$UTLdMYl zb<8DH=>K*tmM>Gg!@iunLa6R6qFl+^+9dto{}k1}2KM!^>%guLyDn?%De5a?)BkPy zzdqs(uy2ChfRQ&!q`xY&>HjwUUq?2C-39h-u$#iZ9d;AgjbPsioBnT$|LZ%fP5-y= zmNxai^naWFZ{H`8{yRy#8SJ*Oo5OAeoBnUp|Mgz2r3Jf9UOVkzcZ5y#wNofz3U zPq`m58xlrf16837?tEj&$)IGU|%37fw59?v?hP?sy+pssn-U53Q>{nrL zX5=eE-KO|I>~h7bG5I>|t+46;_M3T;^nd%UJmnqOAHseYb_MMB*v|XXj-FZDseB-c zp3xt{-U0h#>Ys?NooXkQU3rmvU>}10DeOwvpTYhTHvQlJLLznM;{UL}&QrdDy&tyt zKkR*qdJSM7pmI>?udD6Duz!So1on5Z>Hqe(67N5M+4O(=2Z`6m`U&>0u<8HyFL}B@ zXMYz(kDNb|Rt9(sj+#El;oJiIFF49+|AuoK?0?|YfO7(z>Ts&bUe1aCwdR~e<>Y@` zT_>OrI}*YxwnAR9!^U*ZQ!(Gt@yuQt2k|`v=i!X@+fkNHRU@9ef%1}6^aJc?=hUe*Jj2w}tjD)iT&L}uJIHTcAf-?rr({RSZc@oa! zjDI38p8oGVm8U!dXFQx|8Tp)|{yf5&KxLxP|1`>(3}*(M=iy9)GljKNCEj-r=LIU$ zh5Ec^!pXpyMg2vR{_o6z6NWQaT-2FI&LN_N z*`&izUj>K$@2r+h|8ojwEu0EC>)>pJvz}oa6!p5o*+hl@@6i99SJjdd&TF!;ltMYV z1!9r%w zfB*iHJ`L%Mkv<*i0;JDC`fQ}nWDNb^pDAhje_H%se|IH)F47kuP5)2R|8@Hpa$owt ze=km7g7oD`UrN0eDgLkTr0FY=u8njd^(%$C9r}M-{9oVw({+%373sQ2_d&WI(k+m# zk91?CuSNQ1q_0D|0n*pAof~8?|JPU2H&UVh`+r-Mz6I&qkiM0AL!mz6?Nk~GeLqj% zf%JVy--&b+r0M_ZyQNn5+dYgI|M&kkjhju87XL@Ox#+t0S|Z&E=~hU$Lt6YF={BVJ zzrRA@W_zT${!e$5P5)^w-5KegNOwWH8`AXubXTeMT{_*JJN6Ljv*?BNLr6bBUHo5v zgChMfmENNGPgUthke-TkU!dk{(D7A_tQttq+dWf%&O@~&tPFDIg5Nzbu!Yk$vNa)avnLK zTtF@)Um_Qgi^%{PBtybCw?f6^AxDHd!}zLJD= znsmtwnI%1;1muuj!opH=nbwu1q*oxl4(XLhuSR+mk4692qi7A4wL-0|M|u;|8>ny0 z)9L@|SMrqCkp2hha-{bmy#?tVNWYHsJ4nBQ^fsj5WD8sK;<^4$zn!PNi}XiGzsE>f z|07+YsIDE-+sO~e57obcg$4S5n*OiHw(|ckkluy#r%3N+3wwn6T7S53fb`I}H5>kp)lBmF1!V~YBXN1Fbh{#z9P6G`_3xEI5%2KP+3C&H}> zw>sP!aOwYUp8vb_f0zExH*eCodm7x+SvW)JAKg6*ZUNl0)h1l}zf1r3Gk4F0djVYf zzk9yy<@cCN|98dztJ=8)Zhg3y!mSOr7Thb~ivPpCT)_J=UGaao4aggr|4ro0R9@a67Z9HgMa*?EshS zf49AAL60Ao{_l1Y#eeJQc7aQ)ckhQw|989P#rJ^wAl#mkgWHRw|EpBhqQZTM3jJSa z*avP2+(+Q{gWH$2kCNj5`WK3^5o9Rjx$?ojH($l+4U z@7!{;4DJXP9uxX^Pj?jDX>dow9S?U5+^6A=h5IC2@qf5aDC)bXEB+7nDN+1yce~F} zd6s-mbpDPIHz&ZI2={ro^nZ7<)cWuCU9SJ#sS>8oF}h?qU`KLOsGmaHDW}yKy73m!3y4M#e?) zKe=-axI5vRa5uwE!d(j2f}4e#f}4hGGv1MS|5u}3mr6$X-;DO)=BO_b`YRuI8Qe8+ zm&08JcLi%#D#|ijPKy5Tt`^1rcBs1+?gqH)Si4?y|Bbi1k;*1f{O@PFufTl=?yGRO z!hH?y>u}2%vqfU`IC+DLYNYC|h`Wsn{oj3CbpN;d-FM+`hx;CD>Hn_yf7N{d0Pe?d zKV|{j4%)BU6CPIn?R@{^ui^bE%xCs68rk0Wxu9 zE<|PsG8Z9pKQb31(-N6WkhvV0OBr8_yiDlNi_8_sG()D4y7)gbwaKf*yE0dk*N}C{ zx@0}FK6x#99eF)@1KEJQk-Uk#nY@L(m261fM&3>~BGq3msH5LO-bvm?-c2?k?;-Cc z?<1QE)!jk%ZO*f3A@tv%W?CWB5t-J=v_qy1YuhU7F`sEqrGqH!VQzLprZWp&MEBh< z(-oOVkm-iZL&$VTrWZ0j7(@TpSB?Ikk@bJxcz76@-i++?uZ~P#WCkMhC^G$#5&uV~ zpJLUq22i2@^LlY}5HjNb$dm~65r-o43^K!zc?y}~$c#p&6q(16DP!aa#i}+(QW+)6 zBVV#S2AL<28Ot*LU$@Eie@6UYyJhBSSswVGL1&&tW-c<%Au|P;@yJXASnMG9S|NfmW6GSG0Oo+Ppe^oz3snGxR`6iIrkBouLCS*)xmLroyCWDNHjDt*y z@$`RxJ()>Uq5ta^vdAn!#-mRE_uqqMmQqZ{0?g?g;6L1sNNT>oe2 z|9YE6Awv@G3G}km21VL;u%%z0SSF|MgRUW-Bs#kl99^{+|*5 zN9G-wJ2HLVMdm#g-X|-_?c@jKhvY}($K)sE4ss{Ci`*?#|ET3q=2IT!Gs#5HrZ14G zM8+S7U$ORUp}uzCP}xiFQ>@zS0J5hba}b%|kvW9S56B!w=38XM|B*Q=)aU*kmG6cA zdNuPSGQS{0|Idj3SM>?~KO_EM<;H&?djc}b|Nlbf7~456)GdquBlFLH@!4v~o`md) zqGzlB7nwboN)4f(L-thZjciS1&q4MyWY0wQbjHyC{r0nGQ8`=akGCw4JrCIe>f-7LWJ{2}1lfkjUW#n3s@lttt&i;G$Xh=EBk-Zk#n~=Q@*&C3(UUdJhOSS$hJVX5wcB?ZH(+)$lk%oJM$v%ma@+99%P#$doN?|Q>;2}Gb-Z$RZ2@_ z+frTnQmj0hDmRdb>1~HQU zuk#;*>{?`pB0C+~VaPs(>~Lg9BU_5>W5|{n2P8&(i<>-~Y^xLG}q`$1;-s zua8Cl&(i;Pyf$OR7zFPPeyhsvd=SeN?znND&qfD zku#9>ke!L_d}L=KI|tbp88cgA{8estE|qzr_^bEq0%Toe>Hpc6SWExUE>?pU*#H?N zLu8nYkWn&5#>oU}kS3WVEo5yLQsNcTvV*L={E_l2XHd!T=vkq@f;nVYA-e?G<;c?i zv-E#Gmsc>J{?B-BzKrZ@7S;&;Z{}pz!MhdN_3$o2b^|;k4XXNMP7vz`ZSLD}ZCHW1xm)uA0Cl8PZ$wTB}@(6j9{FeNV{GR-Q{E_^L{F(fP z{FVHT{GI%R{F6LJ9w+}I|0e$tdMA+8$P>xxB){|Qoy>9#@)Yt^vL<;Nc{+Ipd8Y8q zO)Q@+*Vj8o=+Aer0N(lV#Q)))C)eGd9UlGPyD(3=7+xW~OW<7wkL!Q0mh9z^Pw#TJ zaD~vHzuuMbu7+2eI{jbk*HEcL(*HfR{!hTG5AP;;*TTC2-gWS;J z@NQI3g8zx0TK}uP)cQXm0jkPt2(LN3+u+>|?{;{1z-z>#G#2Wk)BnA@MA4Zyfp;Ig zdl*Uo*LqVb^nb0ifJdwMTEc6^TJe81VOeequLHbxEYtt>ULC2>|FzNuIdzWr!EsM@COM0w|9j&9@aB;8e^2}$-h6TaN&olg|K1`hi^%{PRFr?z zZ>M-+DiNXXpBOv?UYt6wj?USnk`(H3n1biQv*Ee$csKOYs#f2>Jo>*U{$Hi!kUIh1 z61GGC_m;ui3vW3U`oBm2_f}DPnOse-A=i@Y$n~W1e>Jm||8Il030^t8&G5wh)#<={ z72azy0oAL&HpQHSTj0F`?{)t|sGAo&)pc9dru=J^)swQK_ZGYgcyGgd58gZQ-o=U* z^6%t*v#xwC(Bt}Fg{fV;geM>VDn&#&`aZV2pFBVwBoC2?$s;7!|K7JOe@A{#{y_c+ z?+yB-^Qg!~EbFL=k`9ryE*t`;Br8{R*%7dNGlt45xv zs69D%5^`4}cQSHkAXfvqn#i5Pm{WzS4`r{@$kP@5Cu?q=iQHK%(EoGv{~Z4iAjj|j z=gyUEbLWxglNXQ|k{6K|ll=XM+@&nbBLH&z{%4Ng|IA&1T%kC&(m#=}z#&%~xjM*Q z#iPsmA36HJzv|A_MebVU>QS#RT>Tfz*OAu?{eH_eK(0MoDvgBx9L(K;+}+6CNuB=hzgNsPp+f)H$GQ)>*2pzQt_5=R|6Fqw zqi15SCF8~a^}CB)8!Bzdc0zr`4#*8ft|M~2k?Vw959B%{*A=-gjJ!WDvKy7|id9GH ziQI$8^`g$3g3j$BDtZ2&>x0|?Za8wIkt;>+G33e^GeW4(k^Y|>m8XnB?g`}R|GCHWbozg8 zT%PhYa^qz)_Y89M{~Y~a=QDv-^#9x>Rj$f2f}FYqC{7`#lGDf+keh|vbmV5RpkikF zg%ke2|9suHe_841lG5VR(UmRwmklUx*0M*tLB(aIMZ=5xmJBHGJM#LLQXX}v*?{6! zEys*38&TA(xYREdH!B`hctf*+MePfB+B=u+nzn1xPP^H_k%f(#4JqnTImxMZF^*T@<@2HV&S;f-NuxA<#v%uxNC(|vAkkc z#oFytDwe9m*KD6%IIq?IxzW95=Ig?0m4#}<9 z>mz@&E~q-IFecq}(fD%6c#ljXHSS?*6uFXJAo>o$gM1 z&&*wucTL&3MCH*=MVBv;aLJ}s<;2aZH{`M%ofJN_$}1e#PWCQ0N(V5FP8CMQ(uy?| z>lHUvtW@2wZ^hERp^d5=uI%AwRI7N4&Zu1%-5u?UMifbR)E=wSX{ENxSCpz;+U#Du z)84gd*A$gUOQn{TN(%cHS^L6Sj-1Gb!z9Y6r zahrGYkK4WZ;F8j!>kE694I4UYWbueG{f3ncRcW-Ou2Q+GhRUMV?kTE2n1kr-hHut* z>ZF)MaxS|;g^nE4t|F)oJW-wd+QNBP)z#O&b8}w%8~uZ}={!!2RsZt0?%ZF>G6LGL zSnkO+=&H_oqKt!GQ`DGLBVyN7)dMP`JS}_rqr$D6xL(G_q#24Tlg>vLCyz{CqejKy z8Phm6u96<@%&$x4nrB**E=qtn+M zj!!$Hu3jq3O#LI4Cx&qhbyY)o`SuChC#tEmRE;F2-C^IR6)N++)6!~m=Uvrv`~Ira zZ>z6rtF~$^a(1gRNkR4d2E$FbjJtvwe46mtmsKj>C$WNRsGdk1ld*wv+H^3ubs>H z%#@2M6(vQkFfoT3^h=_8fN6%BqPjJCrBGOIkxZW=lF2@vXRAV(0A42y|7-l@(lxqiddiiST<(#;6ete6L_GxR20@5 zRwO%=uTwLme^KFp;`-{0y6sLYm!G<8LE+9UN2#24rPZz5rl&3kR9vf4v_E7!Z zK`bmbf8Wx%{^aR!c;@({3&V$(Y~U2?D90*Mt(O&c8#7Fe-99H)#4A>9pHQ)R`=p9x zG7{8KURtOo*(NnKR?%e-#?t?5FBgyApwGB_FaL~t{d=mM*M;?zV?AC}DreiuFRBym zEv52AX<@xCBg@8?l=hcIiVL}ioNSdZPE!|Ayx^hk$`(~C*B9z|IY)-enYP+Hd+ENl zn`Bt2b3AO%EF4$od(K9&$F=Hiq2}ZEnT7M}w#ge%wU(~esdsCw2UNF`(m_Qd#*9?C zw)M-Zk5syK=ct@Ise9Ix-AhzPo0Ly1Q(0BTs2zqBb*-GZT88&THMAnU_hwW=9gfUc zc4+DNqqDPzt(Ar2+BVlmkef)CiiGOpjTI|YdaBR2k1w3pcHc`&_fC)RjU;rUl{&>X z?fn${RO?ozrqjr=#Umdt8a8@N>7Y^L%1Vn1+mw|K8mj&$nM+v>DcKlR?}VNz^^R)X zsMHI0r{(`t=DoW%XxgA#gTnsGV#`WKu{ZzQZAej{GnMBan7!nib?apOJil!3yqW64 zA4~=Ity!}Fg|&O9SqBm`_bu4Gcjh|j_M?GWM>eJl$Mreu-&SPI4=O1)%LnRbGKK_=M7{Xx#If5il`can<|!VpP^h`S<}jj4eX>fRTiZT ze~r4L8~uPdFR;1=$vEZBz#pefRP~{(20At69pMJQ2itcl8#zENsz#O!Rc2M%QEjRj z*i?l6;$9Sri-wn{DGV%nNUg7wn=IQiQ_Vnivo74Z(l-~*zx$gqQf6I?F@@5$8Vf!4 z&RnFdrE*e&W}NwVG12+(%M;|DkzOEXyjG0}y}z2~Ey`r~(Z&8$OsKnvTIHyjw^6Nf zW=mIW;HEz-=e1Rb*uUw;e{U>(i@(xCrAN1_q0+Nh&G6EaL8FTcyNxa?8eLpkIJT_R zKUe?cdz6-pE*>DYql-tWlkZc#<*3m`1Ik7fsv7w}HOu@HR0-A_RyIl|XP=tV4XRTn zt6P&>s5-;l>Fr#i#+dS^yslE?tbO?ls_9WTsMbbFzx+?9%$ar|F-70l4=-6mSL*b? z$5(yPO3f0dVva2FHof@2=5y&!*Xna_uUA{`+7}J)S2kc&|G{!?+cf7EZ%VCMev*qW zxsEDpM@{3bN>Yan5-U*)zzlCvVSgFODZFm-;T09@Y|rwa+4aT zFDtWD6F8RL8(XkAU^X#JYY~N*Y$*__UBV_Hb63yF`tI)ZXRI0_&D7h7| z&pYj!Aj?GczfF31RPUsk%y-hl%88~7vq=k7;ws;^N7VpJWsfc#ul(lUmQ+u6tw^e= zBfh>_{Z~29_8BVS1GAU!-85rwZc|>u7w&vRC)`ut=3DnHDITq!MO3o&PRghp+lWxu zNh!*$cTH2{!BzKr)ve--Jxj`6zf#?XDklZFFqvLCDK6<9ULKbv$wWu3>e*_!sgmnd zF>m`!HNYpzc(2%?F86_#r|+G$NYCMJ{v2+g=dj#F^X70j-bMeL!|l6`QPuy>;0N<0wzK|c+BW?5knU;q zIL4=^w#`PWHH=;kwo)78N`|TamXeZHZ@1g&sKuaK*zB6D`nq*9b^DhJ_Vi1#{!`B{ zljPph_VAjSha($~*wYHf)vIy6>f|mJbGgb>k1ka!y;gfyuT<+8)y?%zuIoQC+<9z< z&Z()+seRLtgVaN+@)8c$wpE+rm-T9_QAu@C4^zwd05N5!t4HX+VKTAQ?NRw*rgEZs zC{=5~3I15^ES+hsJi5p^I%DbKiHjxCH5{sQRH7@C2X3U_tIkwI_2A;o`{HZ&u3xQ( zYSqoLi*~#&bh*MVYVDRBrLq+d=%KcXWuv61w6J^e$dM(Z%SJw_^6p+$p;l+U>BzE4 z2J-}EY%6xI)@RX`7A8hmwS%0FdcdA5t4LXNt8};vKqIEa*jHlP-s#v02W>jl+2QDgK zCKlL99xCL8!7lZ*#V24^4&w7x2cA{XU#`nIl9PFHF;9kJrOI7p#x9n{qRO-CSx1ed z{j6arv$;0v~v$ zs4V4atX|EN{Q)R-#TNue7fe1Jo$J3Kke&S(1f4399OWC;3xfaG*_%Meb)9#f zS}5C+W!aK*V#|)5@?MG!NwGS%yX`Clhyn^IEX2Z9Xr)M&NQfXHqX5a|Bn}CHB)EyI z#6{dmaT7&?Bq(urCzUzVnM`IV$1@={)9Fq`fTRFUx~J3Alg^pU{Qlp)_th(qNuSfl z7FhM(tM|Tl?{~lD|1H;s4X^lhr#ZraC4Xa&XYs0XuPvV}YRi10w(u@`(@0EIb$1o^ z%z*?yQYHl=*r7 z>L%8YGvj4Y2`Q1Y>}M-=Yt5(VF?#)x)fpL73026yEG^w*@F<-FqX;*Th)yJDXa<`%S6zieyTzw})5s z08Ld@u6t3oQ{tg|az~Dj&Y8TnAB08@rF@a}KI2EQzCDMl%##J{0FO-#MWx7Hwg9^BU@>WN4*si64hzBtP_j|K~t*l^2bfs_u4{SgzAEWU8t=mowq0Pk2w7cofs1*;?X8 zju(z_g;D5)0&eI5C`^C!-Z>4X!KYkxR6iHqyV({@kc}hf*4|paI!4x)|Me^{8=E{t z)!NjX&$mkwBvOTU8PaSI(63~-osc}3#iw>ODfa49iIj#tJGUKN(dpD0;nNYcHr;-O zEJziO&cjHvyXitcU4*Lb z-f0|={B$3q+X$;Jg;6DDJ(QKcIe2PhXiMqbCqITu;8xNU@7kxQ6b^PGSh@v@R!zxu zx{vwv6f7A&BmAVe1wgEjFv8xFY^|P>^}mw$(!bI;6od;v@T9n4Y~AqK;lVr0j$>PW z=9`dMb9GBh6x}#?{OE+q-s0{{Pp$@VCLD@jhl{)q<>< zz{w~6rN)N8z_QmaNOWja_->%AL81MtnVS?yl^Nkvs`N{RIW`-sV0@>5rEXq0!;B;! zKkuy0ul~}v{Ua;t+$dDxe&@P-B^u;Z=eoNjCi3oc;ew(J8Si{6U?utGuj4nt`35s# zmgFWFyPO{uT5Vnu?6rPR z@~p{@iyLi+(><7KaQ(GlxG3%Sg}K# zl(~BDDhJ*%caDR|7$GpYwYQdSxm{wbKKe{!B<{R9Q`y+n;Y2VWTs*akPhHMN&7ine z;n<`55PnxLzQ6YUL3!LbPWzqS3Jmw) zpZ?nYAGuKLR;_Qaux{C5K(Ft`_i!3cWeO-7+V80 zWVa>IX=I^QEeJ6jQ(QMM92(skcY=TIkIsi7EBCxtRi5jZ?|m2h*ema>y1a0d!zP#k zQ?3tuuua&mgppn32*ruf{eCUZ8*!2-5A6AaUnTQHbM zw`xTMefsD#t%0njFl0@=i_rC+u%<5OXFwRoabj(mW-O#{K8FioHFfEvk4Jh5iJJHE z$jsP*BdGZhjI8FSg=22;>aXraBwhk9_nuz{bBO@f$j~Jhy@~|-1OMS&Ke@Gj04r;A zx(PvAJ^-GgMn3k>`j~wWTDUwqWHL3ASOUL>dsH&;Gfeb}!wJMy^cB}8?-Oqn8 z{{{d2Rv(c`waz!I8U_F4SM_xM8hUYk&>}HJ&7D4Nzz&f4ZDuew2TIKw>gn+vLmv$h zrbU?P=VI~$rrBko30Asse(lKl)3>g~5zq(TUJ>M&*KO64yB9GS&JlK>Z9JYl4@C;n zp2F`1uZUKleo#0XX3U{q3JCZa^U#-+n~xyd528tv*Z}blBbH&V1c2W?Y1Pv_r7hlR zZ@aH0+nJZ|O0c~c0tj(ADQ7NNV$LmCg|4F9Z1c)(JN=}^bd^h-VolGOo+}U#U-v--DM)I5kipxmzYK5ZrN^R9WVpujKwrbdl2)Eu30s* z^PQN;dFJo-daCNZ#Hl8-^lA{>oAaYsBeQm{^H9UK*xG*B%==vMfGaKkTaUgjEEkM##5A zW-bpG0G0<5bTvQp!FC8q{h$h1!85YxLQW)Ve~3yy7bld3#Euf z*|#I5kn!GZI@9};+@d+X-NZ*bYuuME`)v5N*01H&{*_!}FcmWHD7 z!yCS3AxF;+tWX?UMNuV{<+S(dm;C4!&>!2m8!)nM8_gRD*UHB z(NK;R_KEq-v%|UcIysp*4>e@{AZLmF2{cQOU)aFlI9;457#;H46!LSrm`NL5^E1#r zNC`IQq@M@X{ z0gj*%nzOBnJaH3?YFvHKPZg$}B<#hvZml{!GN@2wMAE`-esHGx!Ktjx_GG&?O;g=Aic1{e(EyY@D9Y!CLs2W?Aro_6eHmN z{8VZyPDyuXg&gVMA8Sm$+REdrugMW2!A;Ej)jBsJ@GP8b=#aQ|*Cmru0AyL2 zzLKZ{v4*Z*(A!^HE&WpBoP6vbo(O9`GtE7{I+N?^aU!WRmC5$JBC9c9#Zm8{)Uf7{ z$>(?0tS;w_1QUif@(9;+GYU}CB7z7IpC7;p154-9qI>eDye71aTjfx8Yv9z)i^HX9 zSfBgs|KkUzHN-Jm^K)_w+sSRvN~&pHQv8;$4d2K|V#H+1oxXMiW-bb+OhfOIIfbMC z2A0QwKD_WDk?lV4N?umCnoK5;TJtueeOHL@>BH!B2N*Vcz_7ZxqwCeI^Y!)lmFz+r^_t4OzVJlp z1Q+T4nuvc-pjjNB3?b|svv_&tWIjFTe7WUaKUEQ|PaI6v*%IAJ`#!p3Un2OqLK09|on2Or$lI%kNEl>K!lI%;2 zlbZ>^GU?vF*i0n9@gPKlnX!m4EXjQ+4t@hm3G?#Kt_`eeOif0zR6G`Ow9L} z7stI}Wb@#y4M*-Z=npUYEl+*j6vyWc!HQ1Qb#=_k_QFk7`ows{@3Z_z!Qgji@YUlW z46+P_;F2&Q{cJaRB`gCAkP}bp-ym5zc5H|YNoIlZuS4$6Cn0ezB1ST5rzyN)HwPO1 zjYkDBAKY8}busI( z4VlfO^k@+{zHey!@KU!(t8&D*=fiM5z<|f;^P@APdoSHSy=-K|Dz`|3D*o7bE--Xu zaMy{$dl^EU*+~ur*|)w3Z6K(kE0Q4o0?)!IJh&Jc5;<2}jR{ul4bDb2Hwe}uu0v65GaXXXQT%)rA4nza+SNv zQ;OAq#9*e0d)i`?)v!1cGF$O*2#5*wX-h}_o( zCm%-NSQ!m+WNG~9??N!XZiZWBsk+=x+81`Qxa`whK9Ss8IQo-zK3a0G%yJLfRO#Xf zv)N~2j0lpU$74rdR|HA1?s`atk0XB`;V#k^ExKT?~kn>*7_OCa8(`;IYDBan*%h|N} zcy=dSKV(8dB59$)m?hP3khp_$Y=U6DfBpaFmo}+UmN-<`ob8?0US=4pv1i5(IM7u* zT5qSa2|L^)-7wRvgCk+VC-`t4&ULPGgS%5ApY7tlV6~?A&RR%EBEZzP*V(P(eaGdr zT8c;H8O!ow@P!=IY9_~o22Myg`*%iX=gu2VRzFOxYeD*CP| zUCYW`Di&~o$iPHL<6@s93Y5Z;LD4GOgB(z_Hu>%A&{M69RuY3T0W%}}c8{JtbnCs7 zF3cG*!9RpNy|fokGcn@Gl1}G4vWpzj9uyYCBhwHL&bK{~W?D$Tjs;ZsMPc6}Kv6Is z<#CW+pl~QdD8Hxees|w^lDT^Z3okM6TQ;=vh2&XkXk}OKW@ve&rS}Ds5<4d)lX9o5 z>90+7uEtkp2Lr!87zy>c-h9qSX%)GDH8Cqk4!>0q)z|mtUdeJm-_6EpxOSSEHm^6K z+;}LSTHn?CN{&p8vRRD2580eGic2MR|yA|5$H;;*8bhV1K1u5i*t@~|g0zDTr1-Qo<>4N-cZ=k40Y-duN2SE5N;0D7KzMvI-l z6i2w6eAx#H5d=IfCa6(_*#AI7$CAT07Vw9u0J2~v`<;#F6z2h}!CC-cFlF(KMy>Vg z9#EQfAa3O0m0jIyI^&AWEy5xPcig`C+Q^0hQ5)dEANP=9S#NAIFJ9t)`; zCc_t-?PvZybYm+3G661mEWO%ap_#@qXPS`{{0*+r_~o5r`;G_cn&#@lu-#BbIfWXa zH9-CN7T#3Y{ML<2hel6sai&7asFsJAZ8<;8bpM;mpR`1gzUUe}c zSJ9_A-s9Jk^Y6z_4~(5S==}R<-(Uzy)*?uPCc7kwZ_?gkU}X7Q#gQ#2gze4kS4Nk= z?)?5}IDd41wI9w#Zy`=;B)lw2fBm~qTFJM<1;|V(;%_saYAhV>?&>vp)W5@~TEUwX z`HLW`a2`LDXx$^C-tUL!ZXVu-c^X>;zf}Hr{;73gi0T$+m5pH!K4L@Et~@c5Jy`Xc zypWRt*Cl`bh#MZphRkfHPw5y?ktUcp{ssjqV3$>OB&6z|rg%^~LfOa>6GfMn-`t|y zhaew+^)H9RICxyBp^-9`Y#CB=elOsaCa=*BB_t}V{4wP?QALzZIDzR8znGn6nV+g+ zIh^v2i^}2dRY&67#=85A5KfuOo&7e^dUq*6jP}l=` zAutRVNmOkTOeI>C7=j4E(HdEO3;c9E}UISEn8#HjT%X# zkkll^%o$%!Xt~4;uJEhhJGaUVfwBfflX2z|_MsMJ{rE!B2~0FjG*Eu0NB#Tl^1Sm+7num7NsH}kNrkV@yI8c{}I@M7!fhqKzU?jR&y6NG2Rjgst zua~v#7$xZ9N#DHbUpnJceycL=bF!V5$Ocg5KZ02m-qB~h6Gp`m^e}A0J5}1{j$=@3 zFb$Cr=Vk026w@px^E3GyuQMYxSKowg!6V8<(fGr~Z!42BQ1glZ)ZwX_>`k7!$@yIO zoNW6%^6VT+HJQR`4!mSGTdn`L*kL1W50vEDUfX|d2xIMt8EtqWMsUXcq;PVcZt+sq z5+0O)kNyMg0S?6ml7ND@l<+XVcPCnqHxVwnTd+f*z~NTY$Ps^ufMB`YAN5-%z?uaHAgn65x-+tTG{8G}GRb?KSr#&Bq13J_=dQ7x!5!Rmq~PQN4$U z3*A|#7GWIpw;Yh*?JGlLP{pmm+tngGl_U#5biZIkbSu*iM&!A~f8K8RrXVP;+0%f&3Xd)nE+;=9H zL1{k_d6wiB0q|zNnm|(qB^dni5Q0j}4GGol%B5UZYGtQJRt$}t*3<<$ANkwA_jJ~I zShS`tyCjE^?FO-dU?%l_b=kRgOrzQMX!Om1y4+9VSl!It`CZVBs&bByP`f^7kbB|Q z_9=c(>S`C7_dAKqw{kxz!y=A~Z)bM-J4AtS*rSi+2rPEburo0Mlp=w}?qdHRojH4F z`xeXMhkQs4P*syTr79_xyBxA7l)bV1-P`+Awi5>8>4o4w)_Nf0;h(yUa)}8Zkw@+< z_E&H{@sHJdROh;vgtK6*{N&-k22xUP`@m;YVl_l zmmGgF`#d^?{PgfgXZEuEEf(2aUO2-GW$hWfi&2aT z_OK$SjEv(e2I#8QDv;r)D86iSAFos**zJoOnXbq<|7Sg4_M_Gq>hT-1-Pw@)@T31l z^TuByDl#{D>BI5d2hNxaK@}CTs95d;1|$Gd$bBFM-|ng8hejEUNUkAhlWtY|gFMEG z=?@R@{+%$NAt{5ruB<^boyp%MNdzxe2S_OwdGfv#>NnKZv6rQY*)NPppih7Tq$_;( z9!!=Y7fdMEfg^_3)RnjAI=Z@bztA$kGQ&hI4&*Y05i>WpUyf(02Sea<4FykZt+(xK zYuiE6$+!2xs@lcf^A|61-|}|SLP`7Nfj1$VPFeSg(=oM>(H$1FFLAdp>5Cirwo=(* z;gTjmCpbkpZKPy}h{@DmejATf?Rb9;V}6G8vG<&fDNWV{oUeexhE>9KLphoSvcp<# z3K0h|BQh?Xnbnl@AIWvoN7s3z-t0z;4GQ;=ZvCwh*aL?hLyPPfRsfRd%*dH{ZSX0t z+i8+>+j-)H?nV|_Bh`(y{u(l8t)!*2{p&*YM^7nhCk**#*N^)luk+E%Gyr05Ui&L% zm#FuHJ`2e6pQ!-B7xsXn942!ge)|n*%zW6-;$&ANMq4W|F^xON5Z9T4t z2*)T?%BT8AFnl*I9vC^Oo;8x;VcgQ*0;xq6<`P{mqPolw`JFF8j}A&P*+F0rBqA_4 zEMWedWeYNTwT0LCslO_Ko__SI#tt7zj1S=1)TTQYME8;x5%b9tS9iX@&IS-lN0%Kf z3d}%eRmf1N0+i|W!uogqSc{&&*v^V2MHp7vuFB~$liD5@awwdn_D81x-z2s9v81-E znYtXL_TKX)Qad6d1UjnP=g>mM1>lpD)1rdEFJ@aApd;4@Ov7Q!zb855V&R;&g`sKl zt6M=_mltq&sY++}9V7`FlDJd|+Gb`?Rdm!Lq0lTepSk&_yi?^?sy^O_@|7kf$!JJE@YlAJ9l7nKVTyQfC>`CMC zL`Y9y_4_}4*wZo7FUQK79BGVb*2a!OUR$*JT%X^$Lc7YOH+#Oy}j@xzGmIn)(5(F=chqja`FMg8?|Hv0md!fslCi1TYCHRwR_6 zoKp7$#+-y2UB3a@>EijO_M_2ExrkGXYHpVl-nH7WGF}~+3`?l9F4djuoV!3+j~&Q2 z`f~|a>zfx~Fx{Cz^6?TAs(q(c^>QbQ&A2@!z4Rv$OWe4)o+@ioVn|#iT}_MXf5-No zPe_sB0jh|+!9BV7I0GW1s$gIobXf>IIlKu6P1Dn$QsGm($)^N8xZS6YR?(vV>Xcyd zG>5JT&ACqUCoK`F@(;z){B>A}>lCB%qcpx3;F&H9ej30%640gp;HM27boEF4SX`~v zAA;%6NYpSDxYod4N@ueapopGt{>ghmk9oV521wmq3oUR;Rzi2zT#KA)uF3P9+a)cg z)h1Ky=rxs%5*Xtuqf2TGE1~~GA2~gCMBylb;V8jwuHxr@%^?J@FnaWCkwv}nD2X2~ zei|8vKm0#_>`5yR8K~u59qnW~Nc2>>&*qCw@}Cn)UxeS-(c6tdJr|2Xy<#jF1q{tv zRQC&vX2@=Pz~AjV30Ix(f26WR`;mL2opBMG8DpgurD!#GD7@obVv>D%p^MVa9yq`G z+C{`^Hbd)Ox3{HppgSY)b`B!gE;4xmgMvC`bD)(s&<)oAz_sYSd* zs4vxT-6hbAi;S&LJ}DXrV-wU^MTQNs&9>vwM1iS{yKm$rH^DEGGOnkCIEOxPO2;Ah z7AI>$is6G_c-Fr_g^x(JJ*HMcUEfJe$t~(47qX``Y)E1Hg508~6SK1I-ONRq91d`%WPl-h#d;R0pz6dThr*)Y2MK{h}jH=5MNejI?clN-CeP^GN z9HDm+-co|rSmOt9JtAMc-rl0Dw!JgIfJ`FzzwIkHlu~#s0NDa4o^$W7#ORE~$-NLs z3(cs}6APwwWN^pm?wu3pip!Y?Pmo^cn5@DH+M4FvVybV6W@`BqzsW>R)_k93O$jD; z;IONAHpD<~2o^l_nWU<${XMhGFbZc;}lR&|` zm^8c36I$z=f2C@BU(L3Yq}rLR`MDAIa}lR-oFF}xZdENQDTR|gjzZYoCzhk--Gf^-`Qj7tgD#ZK<8(_6iQsmy;YPdU(oA3y=3MgNUPF!hc*&ll~v^7 zTu#vD#*kc`4vbdj)~6k&NH({Gw^TX5HCL#{3K%ep40yb8ZXJcbF*?5ZuU`w}<#pLq z-lH?uo|q!HH&3ixy?*FAqk~2kpNRW1Y)E6QXdE@=*)nKNx`|uc^Q;zFx3f&tf5=4or*7!$A0@pAm4Ky z^1LSxf-L*PKGQ8u3MN@M1CsIaZ6p<=z~FFk7S0%%sEGkdUb87s6T{=@_9Ao5l1SEN zAk#9;u`-vLq%}h!GqP^St+hu81G%c$0K+|cf;weeyfeTf|4L(6+m-Knr3>=IHJ|)X ztNk^TeL^!0BZxV8?dU!m@%6uK<4yYs#yp_mRsLePgv|R?Gy*4C31w6cuT?Z6Dk|!j z6M%3vdAJDhD^@k1p+UesZamS6iFHMP^e0n2jm=(zS2a_prk;^3?)noNTKKDUpA}MM|v{jE7q#jqEF(l=7z-<5Bm_Q!pTv?TI0j}@jP#@T&r1+Tk?(G zJ)YT2Rzgo%W4l^p7*1CwbD45T=yN9%{-mI~;>mn#Grd?EbMv~p5{vzD2Sc>oCzMVd z&FHap?UaFa#C9!2?_h};@rRb>ddi~PqH`WWo0#6-Vm_1NELh(L-0e}Jh=uZ*Zc>Hn>Egw8Pg9vHZ@+e*2{THm=L3l<0EzLo5!s2uB!% z5EinQKgeF!)|6(0kHntqA7xeyg%{q$=t>y1iujW`F02!Aa%<_b(Y3o^EX9x`pTi}z-{elsgWq9&3s*;0_t#eaOFwM&9(Ag!Z=X-YMw3O&|3VYR zUqN)dr=kSBvBJ>RTt?uF>kLd>?Sr1`NZ~~i1^LoPU{66RC7VTly)|*60U1V~&!quI z-1=4&R*qbq@Be&@lfU8MOhjJUrLaq_yvN7x$HJ+!du$K)x{PaEn; z_BmqJWQcPC3?|6QVZLlR;3^KOs^n_jRm8o+fI4V_qC2^WuMOPXyp!?sE@DVX`u@~_ zLrwGePkI_I>ky3~N5>ktVDj-Ouh>ALgmTsfw^4z^%4QWok?bj#0;{fQBw)!9&`TcP zf*(w05D@>M7Swe62YsPdx6wyUzKZdLcyX#)B?Em^a3p2^gQr;-0anI_E+fN$xy>08r<-UlwTQ+|Bg6T*Hi;wnug zg>~(?7CJ3B`Eqx2PEFQ*0*3QEH^)Qt2wEAeiZ|#a=%iQ^cpvNIZNV-5!yoqX6)q<;1^`0j|dY)ifVt7(`Ems z-4SPI*NY|aIE!(0U1SWqQQl%KW|C2QQ?atArZHY!V(}>!W~`>i8usnE5JgCW^8NDP zZS*wOdGni65M1XDYuw>KOT6WiGd|C33--If;!|V7;17hWoTVlB29JfXpkxQB&6htq zL%v&Dw=JA;t-gixDTu7l9%hy+=-jk@Wc@*}47HlReE&R8T1zla8}dCp?TbvH)wbwE zB9kMg40Y~nnft1Egm6iv3!b7&uAp`^36nGah~aD+-9-@Gp_33R`$$r5Z2flOlE6)p za>*HI#3T110Bqj*yAo!wX2AR53mk8&iMw%b=g7HTqo>qqAxZ`N{P#TN%|62?-JB)i zl6+gOxrSzCU()~9r7UQ@HQ0Hqzv8-@9$QwJgTkCbSf$?I4bVx;NUvlDE~uFXKUy1& z<14nPe(Koqgi>nM<-Fdl2KPAg&q$1v#Vfl_V8UhoQ)nn2gmHM}s-+4qY&{b3d3fEg z90~?ps>ZN~--Oxoyc=vtgfVb&r*JKnPTF5vR=avDUF#*e*vBi_~H; z{6@&Wy2UET#|o?8*f4tbH9y!v+Es*%i;AwUg^_H_=v!=%r|P>IiutGPu*4T_0wd`q zt!V8xYMgk|^|t(EG=oQ;j7By+{U{td&I zcrKLgxA-U^{c>IbyJz&0v)60v_$#$dCX$(d!~>)-IBE(5pAoOia21k|#)fvf1XE5+ zVbChaG&BjhQW$SuQNrN5{V{g^&6Qsa3(XsYl`Sk*(^}7eM$hN3z+^q&;AB0WWA=0s zm|5<&F~gk|XDK6L?Ql->w%_>ajMyhNdg@?l?%!uOANNnK5BovX=U#RY_VX+3saT0{ z%nDPK07CY(I@vZ!6!2HF|C*0E;fB$QWO|G7HUPXm}R^oX!MqHlX%k^_vq2?o{O{j znS1tUm$ThREczJW*n}4C7CxgsavSv}ZI9?az3TVzU+>WVjL$&AdrBlFl;JMlon27Z zKh>R`p||)Po+$|EuB&^W5=UM+<70%O()|114O^7dhj?y10I}tLXfeKE;V=HGC4)IK zjM0R263&{!mg8dnqTDl6FXpmfTN0>a`xLuzVc+~-8Tn0SqW0~-^I zn&nz_-hO9`=iQo+7hZ#r>DtIw*+*sg=94e{DU>!M;9PeqKr+v}XZ@FoKsz z9aBb>)mi*BM>%Tgm&U@}NTTGVtWM&b#=U7O!ET(_CINBUzPECEkR={gY;GZnLJOC9 zhK;mz&B+Rw?<^h`DiRLor$$#V4hJzYAH>#>DqdB+%D}|YvsTyzA>l&IC9aIO!JCt7xZ4nN?q)1LK zkb_b1AVO97!15>632N975J@{hS_ZDqfbmK2WD3c97W{!n1h{3zeL)62zKUkahR{v+ zam?DuFU}|DHe}o+vx7{d4%#tiBsMXd%dDkfyvL6&wX!%20F)^~Js7Z9k*us*Vw5WK zgAGH9&Eyw}8R}`F9GtFxknd1AwSndn@>AH{$+e@WqIwuvXW#obpYX(2`H5D@xrerq z&Y_!ADGuZ>9OzIB=1T^QbJujnSkIvsB=!+zmnWt;_MPR1&Y2s=by^>ajVi{Wh=<{^ zS|969QGBYrkWx47d;1y!X&!>FqGze^7?GUw?;wl=IA+wESeRXFSXivDE%8@7b5_th zqlrgm%~sXQlqBoWI%3X$fVz6u$kg02YaXFWW6FoXV_h$&65Mc_M-FC`)5+OkEq8fk zWcuseg1a5F=Zk)sIzht{2q>U3nUdy>5yXn@nNn{IteoXzM!WnnmdvbDFD$f{Ml8st zlnaJDprk^O*FWikxyH}`s0%i;)CJSa2?>U9Mvwe@kawH_W4EHWbx#*;w=%!D+E?qe zs&(|eT(C%1es5iH$!ooT)7;$ibfUJsrzh_kXy;yGM+n-pJHXSOkVvX`C-Tkl6N~-f z7qhcHM5|T?4C)yJX({U9n}Ed@2hiH>B#_+Qq%T9CoND@rvE-_%SNv}+dapXY(4!F2u`tJ9~XVgX|d zS}@91YV-K(2XW_Qk17a34YfGEeC8G{hQS&gAKAg2JC>gsJLWGWAH{RlH8 zoa^TTT#l>4jX|mxvruOTydTz)BVc*b`~^OhJJk%vZ(~5-&2npNc#_J;24fxFNzQ1l zS1a+eao;5Y|D1k*J)?5PRGJ$Q`|5l}D~oCp2a)>9Zf|Qg2{W~X=Hl|(`WIdlPxF{0 z`vx&I)7WW=eH@I3*tLtc^pej2!SavW9(2PJE)qv6rXO7-kNJ58Po}l&E;+&{NI%X? zrenjJApCTQp|B)jHXl$Kq|VIJ0TK2(E~|c}0}vl@gX^Cvwi84ZdnnxZWO4N>>lw#~ zF(<%}HNmcIk*Zkvp)#M~$D%LZc7L>v$IcIq52&+DQJHKZ5I)mpB)pPq)$d=2x%o_S zIU^Yjma^4tOWGP~d;OzxWOiBrhIl0%y<~%LS{v!48|RkYwa9}(nenrf)+A+m)%!tv zCn~}fzUHas@1%^3v##I3)G)TnTvqU3s)dXAO|DG$kRk=3h(-#(fK&h(#ZARAA%ofP zZ5ZxfxZqk(G#B5TzGd(GZrd3#-n#u{W4h|9BFhbI^(~bPrme*@J^jS zpsWzv)JB2i!{P&3C{VA<%(-Pbt@l_gQsmC-9*gC)NmvEjWiMTVD&RKtRGk143ZbQ~ zi$iFwTXVg2Ykt-NC28aleYVl{5LaVg<|-!zBK3{NVm+A7SSbzBUNNrSBt+JR%bgjI zIka{3t+UY%PboV5e)JxB$;pL^2eklpO2kR1T`*B+VvVM6TSs>QQdsY@cdpeTzYuqb*L_Eq}RfQi}qltWv+PAWJLc;1xF) zYWuo;ZE$^y6#2DT(%;xr#c?o!K{_L;e+@3d#H_vNwa*Fn&$|5#`Sc=^!R7DCu$e6r z**omAYcy)>wno@a+x;ckd<-MW76{Pwi7=w{oa6}@G1^HbdJmpc+`{h3t9K{)8GqQ0 zJiv&s%6Hsh35otHTk?h8Z7r8xxIe{7H)|?-asQ5^BJai->*7EyTsm$F2Ona ztDF*as~br9eK1VgT^YQ-c!bS1wQMelt&MLT(t9t_-C*|nN_E48keaOVC}w6Yx=L)` zTAzEIsm->lTscG^>MOE~`5wdQS}M2#t9Bwxr~K&aCEvfLww5gbE9 zPnijYPf?V>4HP;NVI%E4Aa@y$+!;}BMekrWpEn;P0zxOO=*-BarPR(vFkTcK{Kk$y z^Hb9jp!61UR(yvA+E?Rg8IqoAp#ynt33F8KAT_fX{RPe=?_Xxs?D%k@$I+eD=DG#wj7{R>^WWz#H76s;9`sT4^0=r60xaWRvQV@t9jiz-1^_)aP#4=rfBbMQ>C8sze zjK4C>WXRHYLDzb+oO!|DRoJZvaPpA05IWPau6HJ>?&R`R%zR=vsTUJ*7J)z*9;AR; zCT8%0pLpZ-Fl?TqGin#E7Pr3eB>D1d657S1!4bCp;o^f>Fv4A?o_iP&R;E4P*phEXC+AaaNMHAcnHKPNI5tZ$)*h0#Q3E_+wXP@j;81~x2#WPR(L!anDsh)h2POJVs?4X^K9H*7&%UX2{LQC(%{Fy< zwxgrnIe@8NHm{VK6AsGU3sJS5M^|%3`RhXo;iKm50B(HjfWWzjqWEhApLEu z;+gb9FkSSCk{BH;8amg{WvuDtn=Q=6bg+Lt4ZenKk+4h zg}WPA3AI zRUsdNgRH7M?gi5*h0;CK_67Ncn(!(hBm)$QVS3pMfsVO(^hqC8`5 zNj`=80a6sr%pTPC$6-{TZvT=ebaH^WCezOc14~2NTQDLE5Sd}eDC^=Qj7#F&UFNYZ zH;61nA#dz2Zp+VLH*O)pg3W01TV@I@mc|Lby==1!r36~a-uZP;OPv=iDW)r{jQ`H$ zD-DoB$Fwtcz+ww-p(xg-!Quk5v>|16EaRVK7-jtP%VGPa;Aa;zR;Ndw?hnA`)BWR# zc~zdP(`+^LZfI1@mt5G)C|}D?YVHd<)bL618PN_}7HhPii|hR*ZZ2Ulf;{r*yya*~ z@fq9MXebnoXS74xvCsusj29d;C6HSGZiTwjYDBpGY-xw4C-(gFpay*qwXP*=LDVQ? zfGyWwY7gItcxM;ex1u&YtjH?zxfq(~B4VsjyHLC^%BC?XN^%JrR5N{eX)K*UkA8`a zzX%$hhKi9UCk87=r&xd4poXxNU`}Wh8eEB#4`WrQ3I~~uoKlhMQj~hI^PJV>%aw0R zu|Eq1?Be;J_Q9c^C_JnwoNk#bkQcP3QXotEHANRHzLrir& z8qNkCJ7}(uEbxEKccZ(~>x8@`9U8fq-+w%0CR7JYkN$e|dU0>W^NS~I`SBO+etl(e z`I$YX<0in~6fY^{O&2h9ymen2-*#kd;|6JW>%PXNGNm?~iW@fjW5`UY(cxpa`!54~ zds8n|`~Bq9$soVH?@P_krFnTEIsq%SZc`aHh0)i1z3nNZow1N{B!8(&QF+PcRz?1% zX@EL@$&V&(DFbxLk|3<&x{t7>%pg6L$@Zwzt-&KBhp5%q_b_5U+$K2zlxB&Bvk)*dPO-^~$w@E0W;njT3q>k8M}C~c^_ zH;+=Gd6C_sa1;Vnl?s9jIflWd}OEAg|zoyRz^@O6F-$8mpdrin*Zq zON0dR0h5Ax!QBxH)frUjN(B4KLasAN%-wE5m!{@Z@u|5BqQnkiJqyPzt)V-BSpw{( zDGI9o2R{!9iPb)SRas5Jh?zmZ{}7{)($~T}ylv(>$k6}37K0DOn%CqEbtB4LNednl zR=>>YPc;#7b)nos&e>+9rXm}bxpMZsiO&47&^oi+7jdO%2hhGmJf8ghRU$&)=UV^9 zYe&rHJPiRlXK6F=vT3D0?R~C&VU#<1h(=esLeF>A|L3m0Cr-U|67z6mxz(fwiSelg zArE3!s9$JqUo=T#9=JuCX0PyW>MzpQR-`88qFVD;BmiX6^_Ff!^9Q|FBj`;I_S zW}F;*?3{CJDWxF=On0LTCsAjKwXIB(I>fOh5!`$h4{>z(Er+b%-lOKhkvRD3xv*_@ z#<#Lk$E1*U`_ofePyE$P$t-t)E?GM?^PyX|OS{e3SlNh~+tDB~i{HxX_hkUdpI(Eo zdTW_PQ|w?TW@J>K+=5%-k;X7~k4+A+XzB!gpfzc zqr{Uu2Z*CaQfC}Gs>ChU0qz0aO(+L5b)Z}{Xj`skTgss0`ocT9m4;6?_i526g{&47 znbDJPLgeVFz6o04Q*Q@gVwU%?Q_We|{jW1M%YVuz|KPu91ckD&tdBsXM$n!2<{~u& z%P3Uvq{U5!2uMY*IY~XE0 z=#1OaK20cpr9Uk}R+H)ps&W@PiWHV5%Hb)>C@f2Ec<9&8m7zdgS=6G6!g{O{#=mL%r=%CYMAZ=LzrwnT?uTB^H1!n{|Rz!>dP#DVczc32^aT z+C^Z+=e|+psh;dDuGC~@ahf}@?9YwTKey?{9Z=9MgyA`7RCExNF0Ci)(9=`U@^??LUfiY<%Vfs`dh30_$SS0`>*iGniARWHiaN;f~kAsF6 z@2V5H4QGREc!v>!3VE?zzTh-#QP-EaIt)$pB0Y^MVxya(n2$gS+v?zK#f8s9+Yb1l zZT7BKr8l5Dll@Qg2HN8t8$4{B?E24{4W;$t3@10pCFW8p*h(p9D?wb%)tF_(w#XCB zqQ|}&HhZWGWsZ36*;h?z^`F-)^Vgg#^G!o{cO5l-0UruZB06RI0_ltl+{psg70$)7 z1Q& zxjQcvp+X>#n{z5A&L9i=p%ztbDG2U`lzkz zA~56c>D1a4D#*PCu?7&gUVEF(w~*90nQ>ab{^x5vtyMv-Re5FBnOyNdKw+)>F2_<< zYsLabG2LdTy>0`NG&;>TNPjf6A*hk6s+ew*Jy+CiBP#~)Rv?f4u*H*=3Gqj=(z|-F zU(szVZ3k5Tx=J*;TOfyGPmbBzKub`oX#3@;OYw@eK)y6Ov3p4KXRuFH*Ep_r3H~+ci;F@FoZ@oDo$FU)Nlmb!zW(t0p3rjdt7O>o&on z(Ny0yN+%drybGQL#t|N++-=)y%?v6z5QY&j(&%2A>yRje(I8Ax! z?2)HTv&A|oP9Wo7v%X3wSp2BLP8KXz>e+x2ZB0t*N^@5UkOLnA7{d;j`0IFw1_j6| z)TFcpqi`DrHTCx(etL{TLDSJ5R*xyHPKm~6ZOzNDww{=)WXEpnD6TsS6|1B}w<%6W6*n~Aatp<>$-Fs>L{~8B(*(UBK-kt*aFW;{wO# z`+aDlTqGUD>0UtBMKWFHy~@WZVBPj<2ch{5YpnUAQjEsL<$wkO=K8}ekLt$2!u z`qz?GjhQ)qep^(B)b>c&sK;Z3B;-Z`cH`V@9MKk^w5oY)WfAcWV(M!@ycGnc?~FCI zFrcE@F2IG3`2pLTs?u0@%=(K9@XOOgO3+_I#klSqJUufYf3!Q75|b6+KqdrRi-!Ue zg`?5^q=Or7ojpkSC5{f(jqhDX97#Q=5PBr6yPqbCglP3X8tQaqGcb1NqBU&GwFFJ{ z4~b)n@et}{zj&JBg{5WS3Fx3)XT2R&rMN$$$~I0V!f`3SnZ~p-8!dP&xB*N=UNi6B z|6qFlVK?^BDq0TW0bXRz*I97 z2Zat(m?wQji8taA)w*HcH@G5B!fdpUnrNG(f7efXUD)_R5KNBNC(e!n3lQAHS93cy zs{f6%hhv%6yi@TyXGs;o9@?gOm{)c&??NcX=8=uIbnDPC!$ATD_b`RxaMw1&K|Z!A z-^4wXAABk7Sun->Y3V7d$(z$_AZPWIm)hsh#s%LopWOH#p*&;KMh2FHIdxQ`R=ze? zm4i4bPp89+THjUa2Kv1qGc8IrB_teeo})rS=laQ)jawU!J)ZXCS?djUdhk%h>1@&p zeYA!Sb@q`|u_!%H!9s_fnXy-87Z_te9x@4?rvPvU5J1BicCXoFX#ON?dSvyQ#sc^3 zDunkB0}$L9)iT3XJI=k@e)no!ZXBW) z(=vVLuIzt_B-luiIV4q(Sd#Ro6MpxY(2AduRWdGF-e+x1VCwpcfRS}WBW%k)yr!5z z7ex6tzVSZ=o5SNdsTS5nmXw^%DHZl_KKc45SP-cX@G&fwRM}z|nBhUFg52I!GCanI zj;LN}30ngzL#n$sMW%tufz*I<9bqAuNm25^OwE2FPHU#Tb56F~l|=+NadOmhh(sNq_C3=Y4INi$dbCee zNH^s@M7VBij>i{q!j}v?qsEU&72=UltZv%eLI^6TBNA!bb1wO^>HLmo;{EERM1_8+~?jIH*Bw;)~1^HkAvR%nai5Yyd?N z%JP>qR1=evTkRG$YO%CrhN{)K746?;fvVzYJztWJd}sYIW(*4W3H8xyL;!z+Dq;b{;j`a@couV zbHstI91C#;2@}_=1GH#Bo!7LJsD33L-=KvBKp?19-@gwA`4`#Q0JQOhaXtr9H9JzMl+OYJeB?K{z zV)>7ihS7a^o1%1gzbyS>72&2Hhaetm6Cc%uw;2L$UEn*Gd~AHpUSbsq-wSv7hD1^| zUF&xGJR<7oo(kn4A@-d}R#1nm4Phu)V0LX&8u{a8b&{gemx#@z{9eltG$+W+9h-C1 zl2y*FrSMsm69`e_;jv?s}0r8C{sjOx^sawsBQZ^(Raxs63UTG zXTKxAgH@-3Jh$ts>)A5{qSMV~fh}7Qo<u% z3ZgBKLM_D71f!H!yDpeC(z?&4|G}%iX&ybyOoK;gHUzKCBe>Ve4p^#Y5sZi*sH&l6 zR%`&jXyU}As|rvl#ljSycTIHFaVVRp!2LNYa3b8q)CmR(Gs%KFGjgtP#OfB(2ozir zxq(Zn{l!AcZLcg=hHv`CTa4~Mduvl4u)R0T>@B8G@o&-WRcQ^RDq`5q-b)C%J&$Qb z`RiIi1gpvotob9ZKuT#Z7T}_VmV-)I{EYHz3~^?>Z%E6XQC<#}x|j~{HH zX1_c~R=;`cq)mKW5LSdFjS7;@2%Lz(Dt&fcAd-8O1<@#XNt)Xh73Pj+o-<0}C8OND z=bAgqgd`^n2-iss*AB|7q-B@Eibe@p?Zp3v_ZO|LASdd4&yME$!n@rLF0&z{5QEw7 zoMD^Ys0>JhBEYkl?$`E!KPDTYBcUtrO8yfr8r6GPbX^`bL+>DiVI7j1<;`ZeyP=51 zE8J~fF*UGtWbIay!N8&Th^r&SYTDSl%iMfOC6R9(@&um63DbyH_ z#KxjE9Gf@@@zzO>c~Bwn3*6FB{7tA9Qi}*v)6x&PcHZrYqvv(-%6R|r#7Ae<1uyEN z6z-+B|CqcN6!9RupcMUoq>B=aaP#6irF4h)FEO#|ybobH@@&IK6Bmh~0~;lR_=^aV z6CnkOg~|HXDpxmSowWEDY;Kl^lI#c{`8^9jmyTm{P;NQ4`)%Y8S1aS(GOC#_=WC;n z0K{(5hf7=+`P1ugI*Z^bMV8r3dS?k!Xy0b_b7ZRQM~;j?QVy zX_0rwQ|Y_cq3)pO-O(oKC{Z+NI(h^t<-uxa_@N9?HPjbj?xzFL#hq%82AS84l9g+56^tJP0ooC~dN8t|A`)&Rw@poN)cfX_bES3V`edVNS9BpKX&AVHnu!I;7Ji zeS8;fGtcogmh?d0Pj?QtjKm+)E?S>Iu*4tiu=p;H^6cd_4r8Vf&H8U>s7@Ops6JiN zpXYmRBYtKo!fL5?4%3th`!}CFya1N5ZscMYEfbCeR4TNSo?vF$6&Q#)+!Kl#i0R4C19Q+x1VxCawxrrU?Kq=oX z%8_`k+d#vm9;-r9{)J`7+-rY|um4FD5%;;ZGc1v}g*MAaEzZ_RB4g*=cH8`f&Kq4c z*IAUaXj&sSlsl292XQBxCc9rPP85G*sFxfD7Q3|pLME;h=!Fz;=B}KGD<*%!-CbXx z=Rd@-t2Vp(bb_%@n7xs@<=cY3uJQ6Ph=rKeQq#R3vSX{k)B> z-!EARMRzNldD##cdc4vV=p1hYeTq+iTEa&hCnj>({><(&(zZPN{Pty0Y?i8qS+;dHX&{^@kJwux%A1Z_3F# zWu$s0WRUB9%r4x+vN-&9#L9odCFnb(_i&LqWf%1wH$`MmVO{vAbob7Tr}vlPMXKHg zo7_q}qqrP{k0qh^k^l&HdCFIt)~B)^3vJJj$bt$-Vir`}gX9lt559b2b~xQO(VChW zH^s@gxjukV8S12Fg`atQGLZ~-bVvxf2r7G2@|W2o3MND*W%Hf&$JKCr_fEm+!L0Nx zD#LvwydMDs6s~cB|5Sw$+rRrR1M|>&mA)T!QTJ|BK0{GEPSn zpajcOmMl{(lQGF@6U}B?sUK3Pmiy@3Ir&gabcJ;H21ru_nRAe7oq|;_#|}O|Pd4tz zwRn4fx~iJrFGd1zy`?AQEkyG;o9)TS=2Q6JO6j$}-u5 zg|(AQ_`lA+#>TL&uv`}uduPRcCpf^GJzDrDx-z&7ttLKklVI%|bk98X`F>>;}3LbVl2F0@{m^!O0qa~$C`7&>E!cNd<8 zcasbM7|D}d_zPI|A87_cggmh+x$wVu+c$`lMqj>E-`L(W7dWukx}iE8kw_nUj;FJ` zrUbglVu$ z>iu`mAd>$6h+`05aJJSIujuSu8|hQmm!W16h>Ugdda((w-3s<&=wnd^2JdJ2xjXAF z+vbPXgFu&v?zYCtVs+YX^C5iv(dISL$;7Mu^J2dVfc8`L?gcq>QA> z2Q)_|5Dg3Bml8iBI?Xrp4oV_R%Q^Fo&M<6kpR!ezVD|w!(DO`kNW0qSs}xSppV%0@ z)n$T=96UC1{tN-$NC-_Y_5sID7p@h!s_j!A)bTGh#acsXXsj8yz)CO{291BTLVt;# z&nm4O?`V>>3C2vHKotQ*--wM3=y0!6%{o^ zH*uoeR-be)W)z?=0o?PB2b&Ps*i#DNf^8tJqn$YOiTZ3$R=WwcJy6Pwdtt+OEf%Nd zkc4rSN4fLBt&_WbBte#I5FO1P%c)T-scJf&S(61{YZ$)caXMVs9r#XSa-NP}d5q6a zbQ>K#=}oy$6{?BJb9)P?q@3$Qv}UD@5WTW*HB}Ac6pnPduw${taNCF0zYzgg>^600 z>v7k`F|ovVoALzl&L1y*=VB8yb_IIf*&ph!Mc0o5x6ZyTh<=UV#tzJw*NuVnd! zB!JK~=lb#wjtVlez8x~+OtZ~&x5fgX5wD}J!~~$cQQ?zS@Qis#@DIGS3MbK$1d68I ztUFr=WyFmgeoJi)1~$Yky4hNP@PGy)r1?eUGvrUihg^ohTPFF3&395Q)CHK%g;JDx zN`6J#{Tll#?`e%~T6_D#A=!LeHpJ1@lG!K^?HtOxdSA&=1j`JtOyj)7^>}VdDW=n;OV{b4Q}17Syrv_*QL=Q7NgZarb(Hi z^6?&PsWPmk>9o7g)6LBKJk;x(F!pADMEwMHjx?LO?ej=XW)&-FaTZ~VKvt)g3w*$F z;SIvI?9CXi#mdDCHMf{~mzA3tAJ~bXqQ+-3bXjWd_Td*y-hEc^r(WAaQ7qbs2mJnW zgI16by5;DmO*BEn41W91{-!Sb6ExDir|GYAd-fc(P50s#UhL{#l}*N*0yciwr$(C?S0m^ZSQ|=+k5w}e`~#!+0}E-jW^;%Mpahg zn_1Oa)z!0ip;Ny5Dmdl4qrvT8ItO^=yYGRow5znIwBNtvZwRy>YncuL1tI)Ty&l}@B|Vx^NPomA;$N+(x3h0-aNPNj5e zrPC;#R_Sy~r&l_I(ixS`q;zJbvnZWa>1;}8S2~B%IhD?(bZ({dD4kd7d`jn6x`5IJ zl`f=oVWo>GT~z5}N*7nUgwiFIE~Rv7rOPN?R_Ss|msh%i(iN4iq;zGat0-Nyf62G7 znzmP0x`xs4v|?5pzosm%V$IY8-wN)J+cu%YrNx`!&~Fx5I- z+eaupQt44jk2X{r$4Eo8jw?ShXpdJfC#dd;DsYn0la-#L^i-v%8QLN|11^Fy;VfZ( zoWj}V$G5^cYUf;)KTqlTA|N6E4=!li7aG^fyjbZaN-tGQY1*I<xuX_JaMiq%T?R4lks<xur$nHpp8&zq%=0P95to3Q##WN zo=zrH+{x(_bfz_%jCd4Z6`h*S#B_$}j7MiII^(GP*yX5q%h8Kzdt3oC`Ug7W)0vRY z1Wi|mCMv)Er5&9_o|n#~bf(au$>>ZjLsoZ6I@8dZiq6yxXPAC>DxK*BkNGoCac2ev zHlv{$@=SDQ*2XL%V5U!C&qnugIbQaUHz#&qVQGcTRFOR+hRp=P4BJ)g{Y zXMS9V&H^|K(lLLZ(lLO~rL!=d9qBAWXB|3=(piDdVsw_KvpAil=qy2JNy*0dQ}#HE+`(~9jzWswpXXK5}j4)tW0MW88wP#UVi+n{AqtW zt4a4~<9ZD`Yne8kHO08#Tw5B(lz3T}&gOL1qhq35pU#HL+@OtXBXRxn8>+PlolQk? zlu7kw()hn^mA?g@?dWVt$CUl8#Hq3T%Pn-ap|h=s{j|RrF^Lk_+bj4Tg#YVmbatY1 zIGvs8>_cZ4I(yLBmCo*Tc9Vn{tzSo*5ET5LboOe!?`;kKb|{^F=^Q|3KRWwc*CtUC z?16L+rgM;}7&|gwhtN5+&E8=G(&9XV&WUu6q;rfBrgN0iqa~A)#$)Lmubks#3M8%* ztj*sKqH_`*v!YI>bBb7#0F9&5q;32vrE>q;ncEI_J?by64lm zozDO0TubKyI+xM8kj^D^E~0a>B+%F#HhXFL$I2S%<#ev5a|N9%8w};2W)WUxsHh0Y zYa|xIb{(A?>0D3e1{rE*>QCePCOT%#-%RHgYr#yJNxLkb+hmp{4|mXcl+K-W?x%AX zoqLpdx3RC5@1=8}#bzc>d_6$tVLA`ec}Nz3GRwcFr}KzdR%~=0qw}QZ;c+@oh`K=~ zX?cpy)6z9rGKvzyGjv|3^DLcL=sZW~MKen0c{57q1Aa%`^%=CY_CB3Y=zKuuBOUrs>_}W6H}0CQ4t<7Ws>J7X z{-yH;o$u&;NoO>jujqVj7P-iq!**wss()ks3jS})zg}15-_!Yr&JT2crSl`5pN$Ni zp9Hov{*R6X%z&)tQFrn&;7(0%s1KDRE}RnF?n*oT(N0G&s`=Fp~`%`}CqH#%B;; zqZh-O31>E(nT>IrS#V~x!kTTI*~O`#6682@;>?9Jx2#@C-8?w+<-ZS< z|81pf+ej`TD&lA%oXc=bKKH{}1ZQKMMR8WaF|L=vSsZ5xc?`w)k{bI`I7Y znoUHecpaP#an{AzK*L{80jw{k%<;qI%_L1yw2^4Z%x;3S6V9eM+u>}6vlY(fYJUry zEd_&-H-AQ0jBkyzP2&q^TkBVhY;W?3vxCwdCAX6KopJWWF^g^2#tzPI>T!3RJtPXX zX(-NKIQy8X$JtvJfSDap-&Y%kY1Y!oI0xVyC@SXMH7p(Xc=SZC6agM?{Mjah30`j~Zi*uah)+EF%9y3{z4o~|i6!=~NN+Sxc}#?QeyS8y6I#*VDy^KmZ1`5(>&*0Mx*p}3HVxL93Z zf@7S%YZNQ9dzuEeCbV#$N2)sB;iY(uW`PTpbSoVx<}!BBQ?Q1 zeb(c*VpE2`6TZaq1CCj5KjQo(>5`$JB`6(j$|KINIKQj#Zz3a)(jPc~5NZfG`c z3B){rZiE|4+swXk=cc&k@@KRxNQ2W_xD(?}uI?tmofLO6S$Kc%BC!}@lTzc_ z!kY?rQCtITF5GEwXUClucX|zWI*Hn3)tv!%X51NZXBwnJCf%JyUCfF*n;E90(;yGjGt9N2JI zlhtK%B6!xoJrQ?J-0gAK!rdBoZQRXp*TG$1fvu}_J;5fSZGgKm?uNJQRYTjsU$odK(ld`vYBFqr(zPS5|W%Crf`{N#ndw{5$ zs_yM3$R(nKagW431ov>uf@Gi*09N>n7sk_HryL=O)_u7y;-d3a+T=B?5)x@>PAJnci;`--iiAu?p?UA z;NFe<816l|_v7A+d!Jn`W^Krte*pI(Z9FKe#X5Z$_YvGj#jMGU`ICuw9QP^QCvcw> zNdrSy9q!Y(FW?$e&nkdtG!G_k&*45Vy2hqL)zKGmU&4J^bWOVK`g|4lL)_PJ^##^_ zz4HI3!f)cfuZ_2G-^P_ACGI<7P>{dZG?e*)IBJTv41I+AG43bAG5k^QYVGSlDCX%9BctUeM~g7-ceuadevfPB^aq`$AC>-ut8a+z z&jzR9X)-2L|EokNjoLSZI>z zRd}_4w>HPZn-y`LBrc(dS5k2f>k40to)%_yj}P)Nhfj%k|>sL7i* z8{Rs2v*Rs}HwWH)cynrKbK%Lg58m81MzeCfd0Vad@${|PTL5oCyoH26oQg&87E`o~ z%K9--HAcK8@RrA05^q@(GTu^nOXDpgkQ&{e_OH4ooaN-WVyeBj0^TZkE2^oL@bvuO ztTFR6d8^{Bfwvmo>XJYcls?6HYvQeqx0YQ?W_IiZt*ge@!;`&00m$VK-iA`KW!^VZ zJ93i2+XQb@yv?Mf{QL&q=4Q3vZGmsnvL)VIcw6C}iMKW0et6s9?T)uC-Y$6C;q6#; zug2S6ZSEl6&0g&7BfYBUOYCMTN<@3$?Txo5-d+Yt)!W8CN8Ubo z`wGWcFuG#RfH@NH0K9|o4#bn~SmxB263d6+$+ZvOp%Rg--os@UB!nZxg1PYYj>0<; z?`XVZRpppwNtly1-f?)x%*D?>;diE9ZW^2et7)V;S!uc{?_L zqV)*gm)!Z*p0=$^xS8Si<#7uDbk zhE~Dynl!xvk|}-#?{&Oa@m`bI{|2P_Gw#d*)g)Hx!`D*( z&5rMVgZCqzd4zw^8UGgVJG}2D&n7w(g=wf3-cNWxOO-HuGuP2JcqSqL;{A$e3jS|+ zzgMv*dD9Am_b1+8A}ovT?*;(gKLS8v{14y3H{Wg2!<5b`gJN{8dCt=5bXiv%Xv(30jG94gAgV*Ti2Be=U5y{5MaczfP6u zHH*Kl=nB;J@i)fb0DmLxZrH>t2{H3%E^qx!@HfTZOiHd+HuY%g|MvJ>;%|q)75+A6 z>hZU3maYnH+aQsYnwJHC2mGD!_3}pm?<5ng>jYok>F{?IdCAZ2_{ZY!fqx+Wp7{IW z?}cyXcW>E!{CzA2vs?`rStrKt0b;F5j>LWt{!#b`;~%C555YflL}m_G<`MWu+AA+} zsu#aUdwSB2+zVlTh`=PAK;&(M$Q#6W5+zX{`r`RHeaBcuW$YZZ5}Sde-8g*{JZfl!M_gQ z2w#PN8U7Xcmx~3nV}5cu{+06Znm@A#`DPhht7fke0ke9|f|2xIkAD;X4fr>Tee+FL zODq1(__ylZ-D2*gtK7%G4gXI3+wt#^xJ)*Tyo7m|bZw;f;6IFiFa87g_u=0!70mcD zf3gf7#Mk?Oqi9kgnS2EQN&H9gpTK`iA~i=E|8aR2Guw)BAu>d-C=x5K3~Oep8eM}@YiJ{5d3fAzk~l4 z{@VgTKlPdh{<{*Ojq!c_Pw>q&eP{wPRYfODzXkYm1*CR9#s5;n{0#qd{4Z?vFqts` z%(E$L<7@n%@kil*hyM+}fUgRZnQ!d|VcsJB@9}@q67&Q9kH(;=8>%G~-vIs%--P_D z@Xb`3^&^&l$NxjbOjm;aQy+o9L`I&4f9N{+|Kk5=ESs`V7rGt!p!VZuW^#=pU6*bq z%eCvti+R_l+ZEW-?$PbH?SO8m%&6tWbQ9CA%8BTvh6>*R6H^7>YncuL1tIsx4YF^Ar+u|KioLGVvPcPhG*D)PycPOfx{ zR$xjaX4*|xRiF@}hLtq`Mg16?JHFrAyFVQX5Mds*RrqLs+KpSySZ|R`dcN@BU>(I7Jx1+l~-JR&}KzGNHUg+*jcb8Uc zR~42M5#8OD?xA!~rF$9LI@*WsVJf_@(*5Wfl|xnR0J;Y%^B|=MD?P-}fx2=IS9%29 z)9D^b_XN5}Dd%W4a*Wbrl^&<`ctaZ_bWc>tlazn5(o>Xb-Rqt6J>a!W@T; zy2xKc_gcEwYx_D=xLW=VBic97y;%irQF^P=+gi!nwR?x5Qun%d(Y=@M-E{Afr@pC~ zW^*xBsC%E{ykDwW_W`93Dt$=l!%82~Lh-25#|)Kf)_sDW3HeESXVHC%-r{thre~hP z|3}Z5dWN1W8(jBUy3f)5fv#Ku(Up(CbYGvZ3s z`=)8jfl4Xex9NUO_Z_+)(|woj2Xx<~`+imGCvv?Zr28S=kHn7IDU2yovAdtp{gUpd zbU#JeXri_Y0XXBPPJUYF+DfQ1=_U-_ji|!bZTHb-Ulu{a(7dp{UA_N`F%N zGu{8_N(gj+q5B8jU+MlPy2AP09t)-YCtXwU|DyYM6Pgh)4Z8n|@uuCAPr&p#N}a}t zwmrFr>G||>dR^tn`JbM=JkkrqS1+WOXd|K*H#T)NHB|Zf30UL{dK1$t>B*^{UPZ5_ zH#WT?dV2p~9VNfa5s%~08&_@;%!Y1`yCOWk(g_Te_om*2^d@TB%AbVZ%=9LuH!Z!% z=uJg$a(ep0+nYkfnsxZ`t@PwnLvI?H5i@0G+4QEPHxs?->CGUL=3w8OQ4(d4Xny23 zKfPJ#%|mZidUL3|+33wK#~34Eu1|Y&(wkdh&t<3_8_cd+&qZ%udJE7q2Im)HvtY~_ z!<;303(}LH!%2S3NxnJ2t1o(sDuBf#c8Pik&7=W*CcUK;$EL5EhPw+g+LTK>v{)0BvwUZ?a{ldk!bNY|jZ3%xbzZ9#7>dh63$+YHI_=&eI< zU3%*YJe61G2J|+gw;{bv=xs!A<7Tv>^fqmD4W+mF2(2yYZAWh_?MClFdb`uxhu$9a_R^s}M~Lm+wCU|jZ-09G8B?vb z1I$o6Y9{VbdIvWgdWST81#=j^!|5H-a9a7J=$%0CXw#*4487y%9Xk+E=JBoMiS$mR zcM`o*=$&ksEngN)i$tz@>76m)$oW<#@oakf%O4p%m!6r3^XQ%5Xvvy13(Tw>navBC z;17Bi(YszvU99vHdV1FCUDnRNS>acxt zf3pSj?x*(#y$9$$M(;uMj%ohrJ*4zurH?3m)KGoQAE);sy(j2BM^E2jd#3(BL(kNI z`>9Ken-?5;44;)pOfvI)+jzlrb?7B}uhDzCs-M#CEA(D%+J@45-MmCd*W5+)-lX?F zy|*+EZ!3LAsk|MizAzAu>-WT*fr1yz-Wf!3Lv7u(NbQOK7^fS!8UpwzA^QF?S z=zZNxE4@*T0KL)lP3`)YeopT@`h9xe)BBs=5A=Sc_ai;y;wLrxv*`YQkhWz{(Z;XB zwAJ8udS-e2+03bW{L4_y>Ob;Z(B8lFJ$nDq@6g9qGc#X(hrVmOI&t)U`aSyk`yVrp z&1@PA{Xoq2L;A58>_;*YX45wl-B0MJ;!fI`Fh#PUKOy~+{y6k2`nAQ=A8H$83B3N; z;=<^P%DD8$Yp%QLk57LBd-ZKrT7M$?lhU79zO(cvX+EPEs@=)xPcD0Ce+s4Y*;E9C zGd2DB=ue}@r=>p|{psk>q(kOguo0L+>5PWTDiRDcE1gB@tcFVE?9WbrE^W-AbWTIf zH%IyG*q>YJJoM)^!ltc?^V45c8w)7aCDdO?+Y2jQ#8BCr`X;ocwXwL;CFq+UW*h!e zhPE=x&|iiAvh-Kbq2-h=F9PO4=&wkBWsPDbiNX{O^JjLt{;KrXqQ4sbHR!M2Y=3q) z>8~l4P5tSwO@AF(GvaaG#+{+`*C%+5{sshN(ch5%J@hxCeF-5<6Z+fH-<1BA z^f#lw1^vzK!qbwXmbaq64gIZ!uT1)~$C*D_y8Z3x?@E6M`a9F#k-qE#0}J$bX}T)8 z8~r`#?>;Ob@TC5$m%Zs9L4P0m2h-n|{sHv&qrbm3Wn~VeFEcAli{udchqe|Dqc4{~ z(zWtO(m#&=QS^_Yf3zL4ipRDVj+cfcP`?5Qq?71hLEk(V=h8og{+aYor7xd->7UkW zonc|9FZyTEKb!tJmf1Yi{qyKwME`vH7pSg2;1<}0Ey9cGUrPTH>Dr;o=(oSrvYadF zn}_Qv`Zv(O8uN{ye+~U>tuK{P``5SFZlr%xYwc!X+K_Lhe<%Ih=-=LO45fd^zz%)6 z0-~?=Uxx0bKZ^c+^k1WYKmDiaKS2L+`VZ27g#JVHA0F6I#YgGO$zMvDMgD}kc#{58 zV@ew1FVKI6{&V!79Rc9^5$zZ0zf51w|BWvFSLo~EU&B$$uhajK{u}h)q5mfRx9Pt% zkZ-k2Wq4oVz1MQ|`>)N(NAy3Z|1tefRpygM#!&j7wenxk|4K){91+^r4OIHy5IFQr z{r`>rxAcFeZ|eUKYT^4<=12N+_;0#u%H;W%cJx(V0fA2-hkp?cdIas4Bg+X1{65g7FC^A(((*A|pwl7xjW?VzI19 z8cHx3!88Pu6HG}k#bAhFDuSsc39T@}v;@;DjOkikeFbPLQZN(2yaY27%tT3DE1Q35Ug*3M!Ci(5&{ zS(3mM-lYguAy}GVMS^7rmM2)2V7W1U$@#yiQRf4q%RwGzLhx9A3`rhz!5#z$5$s8@FTq{}`w;9s zK+-e__9HmJvKu`M-d!Ca5%xC1cwdqD8eHMjvR2*$k7DHDvVp8r+%R03Q1O;?SaL2zcHPH+~%*$uztoJ(*a!FdGc**t&X zMHMe-WiBGnAOFZaUP2&;|A8dI4ZxQ@R@HW901n&@hMDQ-b`vmV<7oz?F!H127*2~8P zpAmdQAiKa|{i|Pj1<=Nq1m6;TMKH>62)=Il-w=#80-|Llza#j5gge;_ROKgve+hmj z_?^I5_>JHff?us<6T6lCgWzw1KMC}gpJu2XCHSZDMerY?PY9t)*dZLg{IM`XuWfV* z_1Y)wwVXg2YLhS`oSZNw9G5U5tO!%WoG@zy3?(cG%aJ$VJJ zl?YdC@U#GA3ovcMRSEU-M-;XATg+<`ZbG;g;Rb|j6H3`9)VBZuupXhU{7ndi8xn4; zGV=SM#)|^mlyGap%?P(7+?;R=Gb&J<+=@-P0#e0o2)85LRs>oZ!tKqd;@pw&aKfDk z_a)q!a1X*=2zOJ(U0Vx!{qu zjqn`8(+STaJcH2I{}JBpE;q8QX zSTEMXU4)Mk-c9%*;XQ=+sU5oo5Z+JtfR(pM9wHn*{}b9RfbcQGrwJb?e3I}9QL*-Q z3$VHd%yWd#5VnVZ%O7$64__o4Mfeio2ZS#ZzD4*7p(*&U623Mjk~aw79Fy}l;k$%# z|I_B-J;L`*yLk{av=0eCC;W);6T*)hG39?sXixqPlkf||uL$Mxr!h$QwG3Iz-w^&v zIGXTB!fy%X%uo2;2uE%G4}T&wLq9i)jRivetRO1C5&o&VzndY#KU({L5&lc~H{m~x z_ZGu{L|9Wzh9ie)79y8uJR*-MCGv?vqArov|EOneMu9XM{82VTV+UNL~R{Wr%1TqOpj^Za9q?(YVsE_QxlhnrH%|$%rN-nuKT~q7lX4nwqqg zpPWd321C@o0+{4PQ?(waA<~n7G%e9|)~N{0KqQr)XvS7@W@%XCvl1;sG#k-EM6(mk zLo^4`Tq>_yfLPGOzm=btXaS=6h@}1tFpb5uiRApRjfIJpAXogBXnoUAYa3YO;(a4h18igB=ZQ8U9-C-WqDP1}BRZ96bE18TwjkPxXiLnm z)S|7_+SX#qTHBUr2cqqWwl|#NeI(k^cxk#sI}`1$in|c)O0=65vljLs+Dk|GY@^$o z$X5Q=!hS?Y675fPFwp@-2NB8ne-MbOA3}6E(V;|#*`eViAJJMqis%HQqlu0qI)>=j zk&;CA{>L~aI+5rUqLYa9@IUZnF`q_sHPPurri`CKbS}}EL}wc>L}#_W&KV#iI*-WK ze zIDnzTvIR7fM2`}UCVGtMEuzPX%<6iA=xL%S#i@ALEkGIuq*Q*QXJkk)Ki9};`vsy` zh+ZU;Ge6NwhS`W|_f?`dh+ZRlec-y$C9=B!(c46y5xqn70nxjv^&XMb{}FaRB>IHt zBchKjQv)HASAa&6=yRekiM|*p5`9H9is)lAN@u`<3XohHscee-Qmg^e55ZM1M7Sj3m)NME_cNZ7jrk7ZmFikkO4@ z;+WVY?i2gOa^@%QTCFDAaX=gn><~vyn>ZmZiBsZSwX&8!T>ptH;vwRCfYvmK?OOox zIK;aXk4wBb@p#0u5RXqhE%5}zlM_!!JPGkc#1jv^tD{MYCmWM91@TnGQ(C5kFg5Ws zgRVN2%OB$DiKXTf&mfSbF%$93O=25);#rC3C!URX9^%=F=OUhicup(RK3T-N1z02V z66<&5W>v%s5HC!;AhF#1iz6$x2=Ss#+fZWr3P8LB@rJ}p60btM6!G%JOA{}v@Rn(H zmlIQVMphtRiCDLQ#=Zn1=YLgMm3STE)ri+5UY&Ri>(T12MJ&6(2y5#Suh;6XPrQL0 zwbnKw-iFxJ|1F43{ojmuQxUMEn>UaeYs6a;Z$+%de;Dny#5)mhN4x{EYynn9G9X)k z;SldkysI`wTmi*)7a-n)_)_9MiH{}Ti}+yTy@?Mb-iLU9;(dwt8-^j)+QYx3rTqjT z?L&xUw_+sJ2oT#VAZ=euEH$6_x{=n1ZzR5r_$K08)Zopw$i%mbm|f4e z6W>W}w*aXv@m<9B=D$U9FY#lTAL+#p65rqG65F=`;)jSIC4QLrkw$(bC4QXPB;g6- zr-*I+S1?aEc3KzD5I;-Y-v8JbUm!7)@*>G}#4i#5LHsiDr^K%izf1fo@ms{N5x+tF z`oJl%7Jr+=x5bNO#=Zg&zeoHb@%zfu`+qC>k)ryT_!Dc&Dt<=%9r5SHUlV_!T3-@> zHD*;AMLb%Ez8UBef7@pJd*WY+e<1!zWqxdAh<_%wm0u(c48i#;@o&U(@^8eH`6o$9 z{1-_;{5Oe9{0|Al{}TT<5EJ}Khors#Y2r#ek{*dqV(|cAXVRk*iUjm%Q=YT;DMxCJCx)Il{rkib{8NylH?eYqezD9zsVKJu_VVe)>@k zVS`+zOoF;tx^~tsCApsDGLoxEE+>&Y9};;5Xao!;xtio!l4}gJwV=h{dbxq*7LprP z@+Oj-t**6yD@l9*liWVS=A9(ZlH5h|D9PO<_mSMwD3aXUh>_e+@({@bBo7W;YbGBi zdBl2Yc9!HZlBW!Z<{#cmyQCdbkJKS`N6MHssc%q;ue3)R zklNy}Lm{aY{|2_oB%~#2N}7{u@oz^-i-9C*MOsU@L6VL|Iy33mq?3}4LpmYpxTI3{ zNyoD}k@f_w{6wVo{7*WG2v~%ZkxolGIq6iSQ;-fH{*5B()THhC-};@7bVkzYNoN>% zX;6{Q)XX^PETr?3&PqBb>1?F4H4KyS zlgdUQe~O%R#3$f%G1A3J?ahB9L%I~%J)}#M{!O|J>4l`rlI~8r9I3gAS)Oz)(iKQo zBVCbn71EVRSGGvZueK!iRU2ROBdc_E(yvJ% z%nd}iMNYag>9(YskZwh~Dd`rZn~}=*-+@il+Op9i-CDc41vF23x*h3`q}w<0q&qaa zq&tzynV)p$ma{9Vt^6%#57MJa_ar@tbT88VNcSe)mvo=TnuQ^;?@!tu{-t}M2uR~# zQmON#hmamhDwSWfEVd&^k5aKCg*lw1V@S^+J(l!j(&I=^Bt4$=gn_Oa)K36*O`bw} z8mY`eBSWg^f9;ZBfUal*slPjS6X-y?A4^#l3p{gqmtLP*lr+|nooKo=}iL}QnPIA&5z38)?&DW z^byiKN$(@Qi`1-AeFbPTDemko5b6D-50O4Vs`oz{g*;*+W4{8BK1%wyavp2(Jc0R- z5N*6qkv`qDTh242pO8LF`X=dfq_2`bPx=z+3#2bL7Fx-dNu}}+)Jb0>mHQuc_r?hR zTcq!kzD@cb={uzF4u%Hmq#uxeO!^_I9R3IV*4n3}KahS#I*Rmj(l1GM3sCQ*Uy*)o zRjl`KNWUW;P5SLfYoy;x*UJ1z`Wxv_q`#27UB{V_=QcUICH* zL$)#LzhtJA{YN$q8Dt4rhpbEHkh#`Q=8^fr4nY;^VqZAcuttK0bY^dq#=-47=CC4S3nru9>Nyx@0n}}=zvI)n;qg#NrHYwQ@ zWRsCiKBml+WK$VVv(jXT%BCTkk!)JB>B*)W;oV;T7-6!R$Y#;T%q`kkrD1)|PPQc3 z9ApcU%}F*7*<5CbOfP?|%)DgttA+UtZFI>NXe}&6wiwyMWQ&q5A_9%fu;k)u(Cz|c zrv9%+wlvv_WXq5(N49KZO2w8ZTfuhK0@+Grw*Hf?LZ-#P^+L8f*}7zFkgY|w=D<7I z+GJAvM{w37+kkBS0X(t|$u=5OW)rd#$TlV0lWa4x9mqB(+m>t#vaQLsB-?5rula9Z z0Td6}c4SijZ7IlhB-@Q_C$gOzEwWw6b{%QKfFavm=^m}jUSx-m?M-$7**;|Zk?m_$ zWM1|k(LRvupjPYP5pf+#b`;rRWJj1$GT9fJQ8HWq$&MyFj_eq+W38f{>*Gh*Ig#u# zvXjWpBRiSwOtMqRPA5B+>@;h$nPrLMj26jRWap^gvj;L{?JGcbKADt#GO3o@xRC5( zvWu*+0KSCm(m_{cE+@N*>&fIRfYH@yYQO(xHAn7WTk*Lr!9>?w;@^6+$P{~5BE$ety8f$TZ5=NoxhOCt7S)7AFNWUrFF zGT^ipUMKsQ>VWEBOi87i6E3eKwFJ z`@Hq_CE3?xUkxm%yHV}vXmW?_Te4rsz9ak5@X5X>`(cEspU8f;T?ufoM1Ljwo9s8T zKgoV4`(q%ZM*b3yHk1F5{in=-EhmS(GlqQbl4s-|d5HPXz4JbKmt4LA4D6T&dC*#j z$P?wn4M*E)BTt@_50Mw-mH5reR;!jqgDM}3T#J8`#(bQXKOXrC$L0Fn?}|K*{} z7b9Pmd~x!n$d@43!})NQmL^}Ov12T#_vMr>FHCEHMe;4kS0Z1Rd}Z?0$yXt_^`Cq- zQM9^ikguicYqq*;laE>d^YzF#Azz8WFj6AvB1;}?N-(yVgdy(%;zBl4@utRn78!hsa$WLxYTbWbIPbZfxz%CxKa7HVC7WpOQXOo*Xa1Qx- zw%E zUr&BB`3>Z9`6B`%ude_y7q^h#PJSzSTmS8PyMz4BCg%+$znlDi@_WedGj_=D9az)u z1LO~>ICU=#jri{vG-IiW= zha-@GtVli~|8!tqIiHh%P5uS>SL9!g98&M2$VY4A8*wTLAASWO|DOC0@*l`eW^_Bq ze(ISA(-s%x*Xovo(B*Iiz6`&c)a!kh!T%PUfM!i(+01ll=K8 z&Z3x~VoQnzC|00YkYX8%g(w!MSeQbt{VDAI55-~wzZ6SQETyAMTAU)ebn9_hk(5Z6 zqgZ}~)`}GCQmjO=2F1!0t5K{%Ve5aZyLzLm#@D1+hhi;?wXKo%D6YoWqu7{YeToe! zZ1HczC^l*vn^0^{u_=WX|KXf$(YRADTTvWLu{Fi+6x&ejK(Q@_lzocr24d=QM~Yo2 zcB0t1v2UM?Vpj^;1qQ+tdtm;(lwwbceJJ*#7{2*ev-?s=N^vB`VH8JD3?KemnWHFNwWeFYE|v+VCtUHcY5aqkG-`zao!cz{Cde_?+GMDZ|%z5j3L`Z0iPdl;UfO&nUi7JD<04eMvFK_g@_y zMe&VT(6=kQfKz%1Yy8!gJ2DVL#~ zg>nJPSt;kHoQ-l$%GoLB7^tXUx&LYKP@4KbKjplX^I3##6h?(|LCVD_7owE603$%T z2<4&!Ysy)iQcnJqOEeZJm!e$S%Gg+zrCg12Im%Tjm#18bas|p28~IjiWy)2IRx@RT zA_+l-p76NVz@b4%Xwa`=<1C=a8QlRxF*t@k61 zdK=o&l*dvYV_`_J$59?{yLL8Dq`a8&B+9cWPo_Mb@)XL`)Mon$pvktVpFugi1yG(% zc|PSil;@6cabDA=G|T%!)27r<0MgJcz(#io<&Bh=QeH!O8ReCfms4J01GF+%QC>Z; ztdOpyyn*sMO4$*HhphZfl($jdOnIvc-!i7P+ZD_mly{EFznf|k%6q6xDY%#N3(ET_ zU!uI9@+ry(C?BPKkn&+wm%Tt6j|{w1K1TU?%YTA$%5wv~UL zQm%a{U$CP#mX|5tr+kI-P0Cj(UssveTCF$4yOn&4@*T>zN8ovvQg#FpwrD?~{FL%T z%8w~O8ln5ii1ufVJY{?TQ+`SL2jy3ka>%FrnsSsjzM&jFaHpK_D9!wSPx&LI-v3x^ zKT)>z-*SGT{8b#udiafU`0%fG{-o+q{zdr@<=-M^CI6*@^1lJ6@lNGX^{HH{E|o{s z*8j#=rB^_<9Z*H$q6)3eN-uvJ`&CLcH&sS8IaN+I0aZaY4pm7tL{(AMjh20WtFfrY zZrUwpT&nTa{&-_#rkapyGOCHFCZ(E~Y7#rDejA%Do++qipqi3u8mg(NrXDFtH7(V2 z19__H+YHP|H9OTzRI^geOf}0uMg&ZftM>d~%|SI6)ttiuHuia_mZzGRYH_Ohs1~N0 zpK3v>1sV%Ro@$}SU2Ag@szs^V!@te&5>(5m@RC$ZQ7t{JVjPK)WvP~H(q)FIR-js& zYDKEms8*s{g=*!-ew)%&8>m#PQ>{t0#=szzYzIx3Y8@)M@TXdrYCY3v)iCsS=swJ+5cR6A2`Nwpo-R#e+iZ7qs6OWTUBjdXje9jSB+7&g9B zJGu+i9#p$h4cC9F-P_SUsrIJYYlLN~|E-t(sE(%EpXyMm1E>zBI*>|s0i)i=b%^P< z?Zc>!q&l2Rb^&o=5z2?)hC_7>)$vrvnl6=||A#T3Ky@OOJ^8n~r%+u%bt=_)RHsp$ zMRhvW8SUtqBfOkVC0_v=UsQG%pgN!GA}ZZps|%>1TE~dJS>Jq9;Ex$o7@GfsS zR98~nN_7?0^;B0=U2FJM*9`1XUDsyd2CAE=*@+m3< z`)TRgd3k1Flj=FD7pR^e!FiGDWh%V_vhuHt7=4ZEJ*wBK4XQV(-fAqj_TOn6 z?>355?^AtD^#Rp~R#J3z3y{VqRQCRd%GQ4)M)d{NUsPXG{Y3Q@l^pn~zE(P_bupUi zd#Z1#z8hFp-5;oaY`nJ^ex{O|Ph~9sBEmMh->Cki`km^JX6~#VJNh?uK=lu`DeV7J zcc}iOHoKF3oW)@6P`lPwqgDIVJ?gFzvo=MnZ;{j?bw(Xg>-|q{?|+Oib=p{_&Z$c^ zKH?QXjMNOBNIgXT81-1xyHSr#y(slK)H70#OFcF9c+`_nk54_J+MK|y$$BDcc?%c; zX;SJbs3)VId`$dPQp@*W0b?VYhI)GHX{m?nzZ%z10L==oXQG~ydS>d`sAtj9S*;O4 zE*C+{oTFi4{=v6;erj|7Gmi|3%)Hd{<#zLsX`pJWg%RzQs8^?6nObT-wY&wWuhmA#tU4|)Y~+xs8tU8r{*Q*w9eGpYBWK8kuz>O-jaqTY{sZ)z?60&m|2 zgF#5WKlMS>2T->+Kbj3=lltHm+o9A)QXfWr1hpRi+vrB1I-2@a>SL%+P~BsxkE53J zzvMyXsm+o;Sx4JlK)jsNcrldvH0smErnJv!_|#`nUq^j5^~KcZP;23>&!s+(die5R zRW6{uh+19*8r{~^CDd1_z@^leQC~jh=#|u0Q(tA7;`$ouYsZwip87888>nxkzLEN7 zjpC+(4D~HdoBB5DJ9PB+b^)|ofCPIt^@G&+P~T5|FSUFH5Rk(;f1qhoKSV9Ze(Hxu zj6T|Wd7Po?sGp$zlln>Ok1+pSTm2gK)6_3g8%NJkKSM1i{|1I>P(M#?PyQ{om#AN* zewo@9e=Dr0s9&dkm--Frx2WG70po4zcLrSr`5yKAEw&G++xl`V;Ces6VCt ztdUg3_WWOeNj-}CE9$T9s9grK9kiCer8Wuqj`~OH@2TbRKO(xHsN3_u)%}H9@Biyx zTMNHa|1qZhzZfd1|7NI1{SQM9^}h^B<){8{AjwdB|1;z=Bqx7{yb+__1|&m$h7yJX zh9ZVSE6^liC~jp^hH{278Py@RX6rvg6+;s+5>V40yw7@CryNg0wazYI+_!p;@Opq3Ib~kD(bD zT7;n)8JdfsnHZW?t0@E$Ps0+wBTQ74nG#^9r2ms;F+w$jUXd#9c zU}!-ZY7$~Iwy<5LLyI!BB14NYv@Ao5Gqe;#OE9#gmAAr6Gqj9VZ|q3C{~uLn0sXe| zbnU0il+(E$tyvln0br+zq zA&ot0Y(!&Q8XMEtg2pB^HlwlWxKf(Gxv4;7OB!3#*lG}^v5gMZN3k7^ooQ@OV@E}x zvBO|q8qxyvLG40gcN)9W*iA*pUH=Wa1*q$cqA{ArUNjD*u{VwVXzW8{-$6Cy(Ab~G z0cIKYJRd~kP#Oo*829i;n1|JgI_q#6$Iv)}#!)nm)amuvJ9>z7EREx795+DZSae^I zYA4~WMdM@|-_tmS#=|sDrEwjN(`Z~o<8&J5(l~?0SwgNK0ns>{#<=~zS}=|CXk0+! zd>XnV3|1mp(gO4eyqLz7G%lfWnXIAy6%dWfY3Pn%mL#F8Xk1IMtP zp2qDoZlG~1jT>p)OhbPWU^p~t@t3J@(<%Byjj_=?XxvNVP8#z3zj2qTsiHLMuK;M= zN8>>n_tU6%{x)|={2PzZc$>zfG+v;g^#3UukJEUP#uIfxdpI;y5fl*YR>KBV!U)O?@D z`1;@Yh=x4;(TDtrUXrYe#%DCf()gUlms0bE z;Z!(%oEA<8M_NF=sxD4XrI^zq6=uSj*%ZN<1!vZJwKacsoOy8Oz?n;NaOSjY8~6MN zXI`B76^=8Xtz*9e&?yVyERVA=&XPEb;4Fr-sG&*0#c`IXhxJh}g|iHfZ2`LMvN-yQ z&`{P2IIH2Th@+qUpYn&Z$w!zs>=G|7G@Oll~ z+nPJ#?1Hls&d$S?RRx?~EoXO}{c-ld*$Zb+Qy*uPon>#FeR1|NxUIjR%{>6;Fq{K% z4ps=xK{o3UoI?%AGDqVaZY~L&BNWa0N8wz6b2QEwILF|eh;uB?@i?OYa)l@|j@5rh z>Hn!XC*zFU`3vDRoYT$hcE&St&citi=NuuNJ&59*YkZvZW!YA)^+XrqT#IuN&J{Qp z<7mytxx}1XoXc=7AJmbuSK?fabCm|`_vIS107<+K=SH0CO%&$_<)~6PH{slhb2E+= z|2p?JoH6Fim?AiL;Czj9C(esFci}vWb2rWdIQQV(had5!g(L(Wt=y0Ucq@y zn6KLC>o{*1-{j)Fh4T)M+yc~Vdl#qP|J(EY0nTSQAL4wB^HH6yC;bG+?*HrD&vCxQ z5%I6j!&f+C2kVr@e1r2R&bK(f;(UkmGtT!oKjP?H0K2N6hGtPm`pfW|m5=iq&hO&b z7NEhua3{z48+SsSe{l3;f1H2onl8Ay3z&n_A$KBN+5fu}n|B#^QryW5UlEjpI|c5v zxKrXzjXRYFYkZoTra9B$j=-HBcLo!+GmgZaaX?ccTnGOTTo>;UTo3m#TpxE2+yHke z+z@vb+z7YAjd8Wq<0iOG+*J8PE6;KDo*%auf5sMWAGeL$m1sv5Eom&3bTm!`*$bHd(-)xaZ-H!aW{$ zFWf_M_r^UCcOTsSaredDubxrP2JQiMx?Ycd1cZAq?jZwE7JL})k+`FAj}XG)<5xHe z_ZZxx2M2D{yJ3WK7{*-6nWTG6V9Wy&f|DF?i08_<35S|0q#?{ui&b)^aAeFxX7i z{Jx&9KEog4j>Y{5_jBBjaX+z~PjNpp{$OpmU*LX;`&EtC)xO644)+@c;_9!4ZRPKA zf5QC%_s0P^ROK-Pj`WFrM$`Tro@{ZZ;Bc;>-VO@n|gd?T09SLIy?t&dc2W%GvJLF zl#(fC#A_&LaIvWO^z4y%;YUUX^6&E`XQW+yZYcyb^Cgyb5o2 zycS*`uZ>qLKVBEFXKLE4neb*&KHkh0nH6ug@i}wgX~DU zt&X=6-YT-HmCc&*R>fP*_!iOnkGJLk#9JG0TfBAfHp5#NZ$msS{&?%-ZD446UX5&o zw+Y_HL%Ev{`J3a3@_Snd+3LTiAO7QwYXNxM;q8gHJ>IT(JK*h%w84AZc-R7RDox0B1c;{IDxp?Op-=6>f!@COa0=!G`F2u9??_I2E^}Ltj>775` zWfr*t?@CkO&T=*0jd<7KU5|Gy-gSmK;Nab0nK$9xigz>KEyEvD6~)snKqk5!Pfd3R z-o1Et;^{76L%Idv-D8LM;XR6XKi)%l58yp$aJ$Zj@$BZmuKXC@lX#EgJz+TZJUpd` z_3=K9_bT2qc+bgP&sxs&crW3-fcIj(^19~Bc&{j?p-IYXcyHmoj#ukHo_-Ky>%Wcn zE?)iR@6f#O<12~#08bs@hj?G%eT4Tp-p6>K;eCSl>F~UDLH)jbf%l~;t}NbIyzlV7 z#`_je>wg`pSNlEQPk2Azjj#Xutp03j;{Ad@0p728f8+gz_b1-(cz+BIL1y`DP#NzZ zy#G`b&vpUj`&R$`3Gt`Ep9p_a{E6`=sgJ^(ZGSTS$p^=xi}+LGPlG=dzSVzw>h!$+ zbog!j>G4DS8SoqUBk*U$A30c$c61%J|Mw)t>c8*f2PSGc5q^dr<2NNmcLB9L{B+#A z>F4+ret};O=PDn+Wmb;g!JiAii$5!V4}WI-KK@K5YUk38!1}Y{&mk3Nx5%7B(Yf&# z#GeOWKl8z_TLAw2_zM`m%~}Y55#cOsSF$MnVl~IS>jlVMf zGWaXtFDvQG;V*A0)K(weimDF&O1APU_-o;>iod$xbr-;21AomymU8gd7P}7qy7fxx zv${V1=J*@nZ;HPm{>JzlnM89*;BQjb(M2{hx%gY)Z;QVr{?_=q9Sm`XT7bWuOuD_z z+7bV7{GIUk#orl!PyAi*cgNoqf44yeMaJJlr_|TXDEz(g_fmxVD%C5|y+D}z;UA2@ zKmLI-tZxDE>xVxA9)dp_U+Mq2hySLyM32Bf1^-C=xJdc?SOi{9EuZ z#J>jrBK*tnFUG$V{}Nrtl&a6b<@i_OUx9z+FfKLqy?{(~ExuNJ{OiPCZ}A)PZx%%F z|LfDM&;PCX58~g3e>eUZ{5$Y(R|K1NC%)DHdJXsB--kc+{Kvl^U*81`Wj%!dIR3-< zde4uq?*%kLPxqMd@t?qd3jfKWEERpau2awTEdIy%&*8s;|2+Py_%GnUBz0aiO#GMe zU#YX~xx#-9|Mj8DZ{jO?e+&Oz{I~Jn8HA+NdxLcR5AZ+2|4o0%tKga)Ke9l++UrT7LKE3*2zrnYg|GLii_$v1Y{GaiE#Q$k9^`I2K(*NJ^f7Ky- zR`Gu~KK`GC>eKWW!M*r@6DU3Thd{~QzXVE+|09@+0D?&fCLoxYU_ye42E_+82__|& zf?zU&$p^C-8o`v-nVMjFf@uh*QyhY6>&wO*OE3e$NW~_ePDuRMQKLs);RyhPMg0`tv;~MNrVtp4tFcZNN z1TzyXNH7b*+yt`{%t0_4L9P5ImtanUxm2#IZ;p{*9)kG^<|UYKFpGBdd8qFK2o@q( zl)#FApnHMkEJiT&{3lqFU=@O;2$m;UnqXOiWi)vle>vk5tU$05ffj#@tgL*ys#OWr zB3O-J4FcT=hAOOSh6HO9tgCPW`xHoM1nUzVO|SvM?gSeWY)h~a!R7=T6KqN_B>ur> zby;0x3j(9s~yv z>`AaM!6<@#2=*e_d$523pFrON5bQsM97r&l;2?rS{Z3s>aLM>JFC(~-;Bta%2(BQwia=UG&A(cc>+^Xn z!Sw{!>3Pj%qYuRH|AU(d?jX3C;5LF=2yWFh+YSiE5R4OlS>c@ocN0hpsOOT+e?8ZI zgz5u+KfyNy4-mXX@F2mn1P>8BN$@biV+4;7)K7lw3LhtU!pv(d!BYg!5U6!NZLV{} zwEX7?ULkm%;6;THykPN{2<(@?_1az~c%9(2L2-gN2;QuR^_t%%_?X}wg7>7FJOa{X z-zWHx-~&@!TMd3>h6JAwd`0jn!50Ld5qv(VY2Hu*eG6dyu>`sim}4RMmT*FX?+AV) z_?|$O{eeI$Kf#Z69qrrwfAEWhel=6eGJYrci{KAKCiv5?>TiPo2>v1Xx2|K3F@$h} z@sWuLry-n}a57yylN-5G=>>rZt4&gx|DgB z!-}v+*dpvmZhJ5nVb}8e5}L`Rh(8PAe1x+S&P6yI;T(k00_vJ`szf{Q+=TO}6ge)v z`PaBU>iG#5Ce*h8gbNZbRL@(V^F;_3wX-iqxVWMX2!u-#ZbY~g;VOhn6RtqG4B>Kw zdjD^jgv)EcuC^lK%7n7{w*;AYRl;=$S0h}LaCO2p%$n^A*CN!Le_gOXu5}4FAY6}d zeS-`v;f8jujS06Q+=Oro!c7VF&R>pw^SYEi_ALpwGIJ@AP(K1vG{S8OcP8A9a7V)J z33sSd>e*}YmukBZ?oPNX;clkRP&K&)&}Byv%}%%%;Y);j6JAQV58+9K`x1^O+>h{J z!u<&kB$Um+Ju`#{+4bn301+NasP%tnio*$yBRqoeXu=~2YvorQIhyx05=xoAs3GL=zEx0~!=M!E;s6IGa z`3Wx=%%vQ{i}g@Dml&MzGQ#@_FDJZ-@Cw3f2(Kj6dw#r#gM_l@4<90Y zn9%P0>!W^5kqI9s9AE##rwE@TRH0`Gv zb3ZqZEapqXvEqC+1b%JL%(sMp5q?Mb3*q;KKN0>wXqCS{Gd~kr&8(4M34fQGzu7u} z5Z20XW+D8WXad522>%o2zx5RuVN&!7j3y+SSVyCY>N=5p1z_H_XfmRhXmX;FL{kt= zOEe|X)RH)r4QIjYql866Mrpfg>3!+MqiS%870*P8gcK=^JL?(*`!GNtOh5V z&45I65S>9ZC(#x}a}ljVG&j)_MDq|WL^Lna0z~r>&0nv)o@>FukZ56|MTundU$1R3 zBH8@Q`qi64v?S5;L`xAZBa2_!q!TSmv|L?E8W7P6L|XQVRvh3&`W8UIRf*OkT8(H; zqSX~hw1y7V(Y1)y5t{A-_F~ZY0>WIMXd|Kx#FyXy)L9!7ZAP>S(a?`S>y*uHR0 zAliy(H=?bHb|Bh@Xgi{94Z+g3w{z`Cv@_98dRUj*g{a>A+lB2;v^UWnM5BoI959tb zw3jWo57B-^`wnIylKp?Z@&k#EAv%a?G||CChZ2qZ2`JHFW@;&TIMIPJs=>`HM0FP+I+N%TqO*vuCpw$x5~6d6 z&L=uo@rlkeMZ{MZhWc;cMf~ekT|^|}FDFf|oJ)zWB)UvicsbD(W;#3RRYccFDcuW% zb1jjGzYHaG1JPYXHxk`SbQ6(&3MBX~CPn<)i1f~%XpD{CL3F3_4UOn-q6dlYA-bRF zUZVT-`zWPsO8pdw=pmh=5B6bYH8i4ch<+yemgonf?})x1 z%q7)+B+_>Q8mw!ov+*0zFGS-u|F+cc*7=kCQ=-45!r!DlqJK!#<@ztNI!j9{#BJC7#N>zr?lv6YHOV z5>IFG8HfYo5yUR>Na6WfkX#w?&p@|Yl#IpG}dZp_(iBsY(aYo!C&WTIn zLh8{1w^qXC+>dcsAlih-W9Bmv|21xrp`tf2i!- z$|s)3AjI<#FGxJUfD0&Va2e{m0OEyh{Y8nFC0>kpDdNS6mn7C-0h_4hEUgg9TE-ya zFDG_+u`4L6Lc}W(Z%Di{@mj>I5X%pK;#G-PGXx>8p{zJ-+WKn~uP2D~f_PnvuWy+f zSY#vOEr~ZK)?0nzO^7!o)(?La!E&}RLm_M>c5C8o#o5M$h_@r&-tcYKj>M-C??ik6 z@y^715bvVMlC`VY-H3M|nq^PoeFPsxyq9I}ZK?^rFY$ij?60hy$ND~s;(PEDwK92a<0Y|{&hh{%fkdwroOneIQse`E0 zJe~MD;xmXZBR-S(BI2`%&lCRH#ODy7J3jw>;tM3ICDeq7^}T>pyI4Y(C@apTgIwav ziLW5OTJS5yUNscGhWJ{OC3UVRet`G};yZ|MB)*OKCgNL&r3H+e_g0l+iV%+>){Vd* z#CHZYg4|1dAMyPracB(>5F<|lrV_+R3u zh~FpvAF-%?{50`1iX$|=|0jM>@$1Ad62Bt&OT_vSkeQwMRRLccLf#;LoA^zI zNa!sSB7R4P?-IW^Sh>{yfcRVD4~f4b{)qTfp?ysJiE?c2XT)C+>;3;Am-x%Uka(=} ziN7ZPW(fR__!r{uiGPyl55zwz#}J5rHa_v-Sbin`i}*LBvX=1p+Y8VIa4c#q}G4Q($9Yc zoL;Pc3MBYQk~YbVBq2$ILNmGW2vQjNIj(|ByMN*KI z1JI_oEWblC7fF|77Lp#xOj4w8Xi}u^0wlAN%uX_!0&VUbBwG9p*;W?)Pv#++mqh;O zUrQiafMh3<1xZ#RS%_pgl7&f@B3XoFahXg1`!ABkhGt)aWXZu4!qF{&WEm29{xhz) z=zp>T$%-T^3umSA7q%+N79^{YY)G;?$=W1Z|4G&)S!*z(EMOgy^-0zx(Y-(+gD8pB z|70VQO(lI}v6~pC_?wB{d?;&6lC4O#C)t`r^gpTfU#8p659Le3$B0G~DO0o;d zz9hSn>?zUR#O_YAhoQ-El(ORNMY1=E?g(Z9GR1xp+MnbgaSk9ka6k~`U=pqWCWYiM zlA{D4E%tDdBa|b4-2zBN|C3_`JeK6R!E}P0Kyy=)6G{FcIf>*El9NfUAvuNQB9c={ z&LKICLsf^%lIT`+x47FqAm>G6x564e8Uv~0+L$%ZS-Q2OGvIDxs>EG z!z8(UDCJ6$A>~hWN0521CApnM-vW?aPjV~C4J0?o@J73mn@MgNl#;C5)KEBM3{G+f z$%7~~`IU4SBx{79nGr5z+cE70PR?mMJA&;HOP1tY|JQy-Gaq7>G-sn( z(d-JdMYCyBuc;}C z^I3cW%UqD=LdKVBi_jGHZZ1l5F`7$BmUM*X5<*zgRHG^4-&}^~vKCp+6ql40Xs$(b zMVhP1a3!(Q3!3)-|7xx#;Ob)6pjq$y)zB7Po8~$+*QdFz0)@7o4Q)VkBSAK_$i_4` zF}_7MqxmY$&1qgla|@b>(%h2fUNpC&xf9K;X>Lz*8=BkE)Qv#BRHDh1$~(}k#b1Uy z)7*pRE;M(exvL=yzPqwR!#!z^8Xwu4<~}qJpt{Ut@WfWcB}9!T?G!F5Nli$BCV zhtWKp=4hHH(mb5zF*J{$c{I%}o})mTx&_cY+cM8pjv(im*~M2MlM5_fw*Z{1#qXf` z6wNznK1A~_n)lMY+cNL5ocm~M<)>NS1<-tOsPe-!ACsDo(0p_Vf1Ku%fXT-|yKkK7=p5_aKIug|_fac3$bqkQiyhaMm*J*x9^9`Dx(0r5T2Q=TJ z`K~bE7OPu;@ZXc+`(`NqhhjfcR-BKOwTt{z5NQF;&&B`3L}`9SQ;G9fnrca3)BKU< zH#EPasm0%NzNe`>f~sZmS~{_^;!Hw1siDbma#Gpqr&EwlDTo$-Lm-`obOr&ZC7q6RdNWJC z+H?fzjHDwCS!j(R-z7~+J<>=*K53vF@k3i7mZ8=Ew5f(FM4FLSq+0(;3uVPAZM0>P zHfe`ccZ9*hNc&`mlg>o?BrUx;p8sqzjPFCZ%R4oriP|@#hpf7pdO)t2%aV z^QxhQwEmOMZ=$3Nk}gZS5b2Vn3rlDb(#6El`+sp3C)LVtQj`^NDN@n@bQyyv0_k$3 zE0Zoyx}tDaP*!j){?=c`_@vSo($(xNYmn|nx+dv1q-&9GOu9Dd2BhndYRxCDpZ}lP zh}7RjLR$YVvODP!quwL5xxJn{v*aGeUwz%LHf8tNS`nS@t-17AI$%e{!RKc z>F1=+kiJLyEa~f{&yl`D`aJ1Nq%V+;`~AN?G_C*Ef0gvLq2U{(qW0;VGSOQmM5@JK zkaun3`=lR}>ixgq(gIT50u+Jt69KjOiz9#kSs%q0q(6{;N%{@xR}va)IbSQs7S}C+ z^gFTN8=Uk<(%(scBK?I_>p!V3ZliktPdZNjNwxTs{%JU*f7#;ykc}k$mrTn$>3`a0 zkWC=Ygk%#LX3ftgA)AhDQnD$?CabGuliTQ&WK)w(HAo?whHTs~KNU_ky;PQ_kc}`E z1fP*CCu@*}LU71jGM~&-QBzQG-2#Lkk!iIji^*#JH#D+T@XRs`vNo9(f59s;Y)-Oy$>x%D-2%j!$J8Oy;xCBS zf3gMaybF;nO|~%EVuCLsc2Q+zmc_}I6r}C~;x9E=37KvIWXqE2{l9ui)(T{z@Y#xF zwf>W>Os4hU&byiBvbD+9BwNc6EN30ETKO%qKG{BG8<6cmwjtTJWE+ufPPQ@G zrc!DXQ$hUAj8C=&+16xRl5J%WQ%za2ZEWT3$aW>$o@^(w9msYZ)DhawWV;NqR7kzZ zb`z_=0uX0Ui;t3_ZUJQV^M5j}|781-9YVIh_y>?3M5gs$y=)Py|Jk7iC(|u}Y_#E! z9YH=n*^y))kR3&KGuhE(XOU_BCp(txRI=m9P9QtpqzHZ@*~#LZWF`{-lp(@tWLp2p z&LBI};C4x8lU+r24%vl5IG5}^GIi?CAEXPeZvj*a*+pcRlU+=9so`t<~ z$?h5;QtciyB)d&Nkv&QF9NAMs`yZKp>_ay0 zSD<9is*r%s+X^p`y=XwmdYSAkvRBAnCwtX$UK=93L8isu%quBxlf6SG+y2bzfA+p1 z$Xp+iPeS$)*>_|gOUfr?W63@x)4P4L&&WPkj(Q3IO98e1TjXm&z7adL|IfZBGw0+7 z3H>PcC$YK(NVQ+cl$ifYCW4>o7C`p9SsvM+WPb}{^*{SZ4Q=j!2Td<6NleBA={n)8t|oRPd? z)@gBx15rEF7k?8bUxQDfV@rKQI6&G z$Y&+*lg}(s{at{GlFwo}vysn1KD!y(=$wNg`P}4M{MCzmUh-Q1RVnfX$d4gkkbHCU zg~-<+UzmIeauNSri$A%vgM4vQL9&)4Uy*z%@@0h}w*Yzl{V(})0xnO!f^y7)C2J*e z=>_@9LRiIw$XAo0)_;qvNxq(dYmu)l&N|A9Q+EOK^)0di`G(}1kZ(l3u>w^QTW3@9 z&5Unw@-4_mk#9-9EBRLB+mYA%fAVdl{SYMBw*N`=X|d0c*UE1=+vM+%e?DXza#%q za=$14VNi|yC-R@oT*{IU7WpgrALLs6CClo6ZukHBU#1B8KNJ&@|4T6e`F}OPsGtAq z++xD|Sc-`$CKF^5ib+kn18j9&DrWJok{EHa`8DUbypHW$H z8WfK8UFAqkpJEP*fTB$iQlu2M{!_#h3B|Z4|H98GN(wFh6on}wexSK(V65SEksDVik(@ zDOROei()k)tZw;h$gutvfI{@Yu=-!DD^cAY)Osj3pxBaPLyAo)HnJ5qrr5;z!r9E? zn=6N63uOi0iee{Q-Fl)O&QZA&pXi&%&nBgmCvbqk=d`d?ft!|TLePoc$M zCEDDZDAh;rW{M9fZlU-e#jO+%QQSsx55*XYJ1K6L+&fI7vNF7jLW{qxb1%jH6!#4w zBL0OIe*;oHO!2t#DITG)`~O0>09AzI2?;%^tT<0u{Ar3;1bK$yS&A1ao|ED86fYQ# zS%ZKtiGA7N6t7aeMe&+|uZw+yLW{pik$K;yc#q;81q$I^6QX!uh94MQm>*I6Me#9( z67x?ezM%M2IG>6Ae87~UY5`w~Gj@Ped_(aI#kUkcP<&@_itp`=KT`Zm@sq+WQlC1h z^DD(46k7i&ejjjT_^0LnO*sX{Ka`VD{7X3@#eb9&XpZ`yvZSnG3Nn${iHDF$1({5& zeg0EUNjW3sRFu;SE-j#(rk=5!j&cO$^prCU>e!IJ1yDX^gVLjPBwdTY!DZ-+wfp}v zqFk0Trksm1q3lsMDO;2&WkHzB|D7DU0E=;+IIExNAl#5d? zCEyZbmoy>DrIjOy-T#-%QEo-KJmm(ID^RXOxgzE2lq*rLLbk0fKpcLzm1CcmsHQa1wO)V~51e@Dul46YI>Mf^)G{u0$4LGV2&_ZDPNv7-ds%g(irfcq*d z&VI@Y;Q*>RDG#K4jq)JMTPP2vJeBeg$`gcnDCJ?4M^lcbJd*No$|Fp!sVtnMY_(%3 zwd_+KYv(;)4Q*8GzeG=>JXxGmOi29GC@-fxol+g+8I)&JYVoH$Ylw3W<#__uzXGK^ zUkwd`QuM#Pkn$4BizqKPYp^T1l=8AcDFsqqK`HuQUMV$2|I4c_|5{3|`IOQE%KG`g zAU9Gf{lD2TO-;&MDYcAK-bOh_oZBhy66X%FciPH#Q{F2`z5loP{gh8rK0x`1M0E?G ze2DU4<*1jUQ9eqkrJnLJ%Eu|67=H~~{3ZH7Tk{ziK1=x$<#Uu;`6-_tWKq`N0#Lq8 z`N|Ofs;%%k)g+W}Q2tE$Cgn$zZ&AKS`L>v=71yFvdtl%G0ena^Q z7XVNvSfb$*4T4$*HEJ znu1EyzM7J1DpRd4UQMHhRMXnw^i*2ysb&y6LRl4}nvu$(YM7z25_N6Vr;4cpi-%N^ z@g+AAa??grJ6BHCqbjJh)KiK6R~1#g`Ip>|&Fb2$KGm$kpNVQ_ab{80L}fS|mDT@h z4ilo9i|Q1rxv93Mnulr)s(GoFr<#vyQL6c=7LwcrsC0v{S@r&(O1A)6&tg&*0T88 zRO<*~U8?m4xyGT|fNDdk&8aq`+C*p@+t8*|n;G9CBL3BuR9l(3EWQoZ{#4si?M1a6 z)h<-qOQ{{GwCq#uXqe*fY;vh~rP@P~-Kcg~j==>H{jWw1W$i7vw18?~s#^R7RQi9U zI0sT4M0F_D!7@BVS@lvys1Bn#oNDv{5yBC6{YOzrr>KsmI)>^vs$)%}(2gJYGCWc2 zNn&*ikou=my-0N$)$LTLQ(aAU2Gs>rXHuOb%(JM@He?x|OLab#ZUlA>|2O1cNOc+2 zMO2qiU94~uqPld5b2*i0eszV7YVo)JHB>iK$^O5(j_L-5Q(bSPH&WeX<~3HLw@}?m zHAei~4Ab)Opn8nzPO1l}?xMPv>TVmV^;nbC-!+N-31iQGGC(ln(Ae$_o!Z>dW-5+s@H}5n&F85 zhS)cUkhiJcF{P;9wa)ugp9=E>st>6?7Qg-pDAgxwXqlf;eJRn;#eQM&uVgsZOr$K; zH&nk+eM|MDguWB2TL6{r2*T0gPxZ61;tXc_mFgd=->Ci+T!=Np!hf zY^1C>vDjo}LvN?WPsL_pb6SPPOInqHEsIEBXmwOBt*+RfsY7cfTB{0qW?Hk*(mGFT zR$8-(Q|teTk1v@RfvF_(b`;`EyQjq zR<{6JTdOrFM^>_}as=FtmezmqcM!WHE!_yj*ZNOu7qPpF-A$}+0a8cAzcot0y~Jwq z7iS+@`&xfLTKmh&53t8_AgzOpZ;?YJ>rh&U*{spD4ySb{ts^WVy`yy$t)pq3MC%xf zA4{wLCjhjLr*(p??ZlzuJ=ro(p;iAAFj}Y4I$fA&448^W>nyQn(~@@3I+xZZf}BU| zd|O9d02i1nS{F+6B3k2a0cc%HON%_M%V^bK0noaF)|KPWbv3PPWDVEaYS&4Y)_+>M z7fAFb+Pl!Ynf7e7ZlR?_<5pTf(7KJ*%e2M_`F2|O)4D_aJH_55R_i~ldz2ODUa|Kn zYiE3b)`J2*MC%z^57Tp!jk(HheK*0Z!;q9yv@(wl!; zFNm!-|H@Y{sh|Yvb6T&`dQXP0iG5wH=zr@?@!t~rw%B*XzN_qrvBrO2kPpOuDE1>- z(g<3gj2K(d`czrLKT}qaFJvg~pr!R+hGWHkE%qB)-;SKLP3t?c-z%$dV`=?JOZ2~` z^`DkW|Ap3HGW=ESZ(@I^rNy7tpXQM5f&VShf0UKzf3!>5Xs|s2ZIR;kgtR9TWMbM= z)1E~9NySbkcJlhO)1HF%l**?))!;Kldm7%V$Q{ZNp|AhcuJi6Bj}BK~bH{xZyIYyCHs1*vFT{cpEvcLeN;?I|lx zpY}}FpPBY7vd;PukodFHUWB$Zh4!45IT!7@C4C-?%u9PdLFTu}0<;&D3JZx{SXmV^ zmiD5wwf@sy-13*8y(I0`XfH*3ISDN-b{X2s8cuy(wU-xs1+gpAUP+vlM|`i2aTT$v zDyvg8vO4W;XsljgtpVTo^gBHI|#C)SgrrGwfNWndcD0X?Gpvu zjrQ)e52mdywtZ-8{TF-`?Y*o&^zVP$`$}{_+WXT!koEz(pgI-G{;f(Kq^uAQp?wtX zL&dlH-ySW)!^Iw)lk)u;`;dy?Hk12sH_SJ`DWU;h;yq&Zj<2{vA5H{ z!;op;sSruOoAwhDy@&R_;@l_pez6aT75#5NMEfxrJ}mYT+K-xQQs;36+Tu?tUpP;Qqm&CqoL$A_N@BV9a)~5YBooQ*mLC1*Uo3!7e z{i#$C{cpb`{<~t|6D#`P{($y}YADD@wDsSA5dRYm>Wlm{+CK{NIqfers4wy_X@6z? zv9!My@Eh9SYEV_siQkF+UhEGV)QLaQ{)_g{v_&Bs}Pv^zPSIq4L1x^zk*RAROM(`k$CD63v}q8^>TLFmjRgqg+8LT6TS zWdGlpU3`76Y~oykX#E#Qw*Wfx($V@a{`_a&LYZJh}B4yAJhox?_||8uZ2TI}Ju-*>D)-?ra?`qbBowp#ok6|jL8-99fnEgP8r^1LUit-^CX>n z={!V7|NS>Q_lwnk{D;niMw-Nbn9ieg9?^9~>tvS4=sYgbaeo4i&Qpd%M^(`JFN9~r zK0B2Ayi`!{>5JmLWSKA1c}0*{4I=*QV&4$^rpEP~^_JMT>4^Au-qpB1Gw;#S;xGOO z_DDa{h|c<0tk!=zpVIk^&R^nxF7^vLUyAb;o!{wFB0lv;GkNpUMt_f7AKLAawqvqxE0C=t5WYzdNBpbiwY# z^q-_F;@_Q={;I;9jPB(0bGlQ|o0#sDbRVKS72U1qs^>oo)18Ly%yg%v+oU@kU5D=U zc9t2W!U(Y=#m-2#VWRr&>uUX{>xmWp?*`(BbYr@aIo0~KcSZlr=2oYqbThgN&xK#m z)#5KTwf>9KGS>!Ot^ahpS`52Av3;>K88H-p7P_M6-C2b^o7mau&Y`R6^f~FyC64I- zxRuN+;CyuF7iR&Py8iobbQe;fAdApli|(SrS&Z&VbQhO&fAe6fyE0v^{3HI8>_%qSfiHE_MxN1=lUW`fJl& zhpq^FcU_6DCw6_hTL0;8sH`{}DO+zCx|`75bi}8V)7?yt$o}!S?iO_G|NKSpt?8aZ zcNE!gWUp zD7OImRP3WuY|V@4UMb9r>5BgA({-tww9Dvf@fZIJdrGgOdjs98CFL5i z*NVNa7P0R2I>lVf`Xt;$_kJPVO!pSLchc43FEwwYJI4CA(-r+6=yq4@Ki#|O-eU^V zy_fEN#@ANA;}3{^(13Iwru!bGixM_GLqmlvl;RMpx^<_;1kF`cL;Qi@Z%&>%V~Snq0bC z|LJ}}*We%0{fO>Zx*rR!#b2CH>3$~8=XAfM`-OQUwAJs_S7u1}Ys>$J?zeP*r2Cy5 z*Z1~~)-6E$`l9-Y?$7m5ui+QE|I+v0(6_&+7u|ofQ?F3B z0D5xQ)0=>v77alr(vJBg_9me>DZSI^O-64cdXv+epPthHF1;z~HR(-7uR%|41bWlZ z6P@o(OK-Y*{XJ;`YVkcS{`x3-BgM{W364za(hJ4$==o}PdVyJkwt5)Ri_OC5>AwXn zOi%v* z7wykVZ??f2=*>ZIK6-QNI_gaJ<`O%%*m=axtE`HSboN%3-U9Siptm4B(evIy^cEI; z5qgV>qgN|ST3m)pn4$PfiPcR(oMpr=OHagK7hhh7^l4d<-rDq5vdoo*xeC2i>8&CD zYGSqW>qi;tnMQ9-v1^Tcve8>dma#595&z!$lCptL(PwN!d&V}VcObn@=3rMI8t?nY1a zzqbdyz3AfzpE_Yu3V2Gw->EbUM40OODN;Zk}B(L0LX!4f)z-l6J; z*&}B-K;}J6)-zh{;q;CW&XGE|zS531b?6;KPxQZc9KDn19WN>RPk_=p(U8U0`cLl^ zQ-PlR2~drkPVZ}aXV80y-kJ1npm!F%i|L(B?*e*S{3ZQddeRhn=UYVoMmD80w(7Te1><1duEBT1t zXY@q>d!OhHL+?|wVG#dwy(CThg5HrX&`!g`a_ z*ZNOi-2zNPe=_=$4rbJo_9xdvb&UNf=?C=H_rDF{PfdRsai*oOrJnwD^rx@iwZ85P z+E;qgA4z}4dZ=ky|Ap_0^~Cxb)YFABjPy{GWBQ5qe?ORhlYVObOd*z2&@buFPrtHA zi@scG{SN)v>30=QzbCeDIWy6pdBi*FjhIDQ3CaGyKbt1h$Q**tNq;VJ=GOO0{dvUB zTi<;3=Tjj;77)&Y^p_Q9A+Zb7Uql=cf4z*w=adxM_2mJ%Z-&5=;v3t?i-FBq=F#Ub#?<=5g9D?jG z_5fuCKS)_|)Wvg%IERWojQ)}0jHa)i|12iHZUM^IzZ2*mMPKW`_{UhnarEz@e>{EJ zxA#wwtP{naL|^N__@~f6Rh-kro<7ohkNz2A&s0{xvy>I&9QrrVKbQW+^hN*sTL0um_TKolhmcEF;p6+@2F9`UejlM+xW$V8}|5b^; zCiZoUzahgnm6aoUo0*i7yhC6AF=zVk(pPWX$MoM9+6VMMqW_^0Lv7XT1M`vpL>JU4 zpV9w`{^#_+rT+!}vGl*B|CQdK{J-t>ORLS-^uN*a^8cwi3#dn`RlRKP3<%(y7!>I_S zCzzUGT7qeeV!r{ybOqvUGfae!Bv9}t80B!t;migH8D}M!O>@F=H_HRZ-AphC!Tbbs zj(Y!8g1O|Jf%bn0=IOg=Fs}=l&!E#6AXw0tHJsVc#-?Clg3Ag1MsOCvA_PkiSoXyU z7A06r!`y`S8k-P|CI|>>)_epdg0jR4uMkuVd_V~aH2)`v2-=P`2%1V2u|*IUxK)k7 zogqjGGEeOgbP0MBEaN;1HJ&_@N^!NvqjYeE|=R z0}uXzf`1{wrLF966@pa>)*x7o!2kc{zcyd@nckYe3(dK=I#x1U>|)75+(ZCc*wL;Q)sR68wwcAcA8F z4kkE);E+MCLkSKe@W}5ws{{Ix1d9IzM-v=lNKp}&cAV2a_y;EtoJ4S9k;_w0o(Mn1 zIZrJp1gH7q=?>2@X#5gu^ZDRxf(r@GAvoV3&n3|2kKu{{!3A=1dsOeZh~N@}iwXWM zqV=G0H!B(hml9m2fM5Z{el~&!R}j2Ma3#Tw1XmGUOK>&8HR?4Mc8cjua2>(*MZocH zc!PSS^s(Pv1lBR{B=GsaEvAB7wWJDeBe>m>I}GY)_W$(%T!*^}d~^%$aRA^1dkE?AHm}T&L^DnNm;3%_bCF!e}ZQSo}EB9gy4CC zmp$nPf)@w;8Uj4^6@oViJpKo-5xidHEg-?01m@mv6}g=Mog$+sML-V55`0SVK7m<# z9Ki?u_+t!;U>^~DqH8?C$At}*QSJ2^rD1~4Da}amMIn>mOM{wa=+1@KBo8@QEI$r!>QVDK-d}MpBwd15;@frGU~9 zrMW51OlfvXvlN_^W;KM;Y=s<3bNJ(&4(BpBpwB~TAt%mDX+BB|I6i-&Eu{quHYYAj zX)#KFqx5%5i%g(<(xL1Kc(74JatM9Cq@O4Qj=1D z@;{N?d~_%!lu~0GaCSXoub@!MDD~sNWu&wOr6n~s*&Lv>lyfevj#FBO(u$PEIAt*Z zFZmEqTAtDhMxUtMl_;%DX>CfYP+G&YtV(G$O8*=GOKVz^r>-?oULOKV>pFcsgRa#E zL=RKikovNeHlktCmA$4yCj?r7fJYC8b@4CjSSettf3x zX=m+^mA0X@Eu|eOZAWQ)?UnuTPm35s(_BnxM@l;>dK6n6Mz`O$R_?Bp_IH81QTm4? zyHnbi(jJEU&*>)W@0x3s4xn_1BWB@)hDK~_KS~E19QE5d zih&Yx7^PDw9X{%h5tNRgbTp+S3q2|Mzrd&>$7ps}I+oHYl#WwOE*jo=E8= zoh%4HnbN-sT+j-VgwsqWrPC!@$QcgLq;%GRayF%N3^yBk(s{1W`IM~_T|nt2N*7Xk zl+s0%?x17_ywchJP3aO!ms7fQAjg*gD&h)Bo8+H1^PyzTcMGMfDP2$L8qatwrR$`; z+25c=s?rUVZlZLfFCE3qTmn863hqpPrU2N(pcUmJ-x{J~Sl^sPbhur$Y(_^N}v1V7Y@Iq^wog= zwNYH=x0I)#^qn46^!E;bp!6f9-zg3DQcC~N=|4IAnbI!ZLEh<|G6UrqUFJxKGfgCI zi1G=PXQuoQ%Ck_Ohw`kH=ki?sUts0gDQo{slqSm;kCa!Wygp_9`4{DtDX%i1uS$7M%B#7+)g5Z{zmPzAtpTz&<#jyo zx&z930|^^Y-j(u(l((b25#`M&Z|rhx@^1=kI+3)^DQ`pB&wrJ)CFQML=GKKwL8-TG z|4}^KQ{I8{PLy~2U!I*Q?=q3(-Gui|x;y3lDJ%X{_CNo!sYQ7&%6n7Z*X8dcClPT! z%Kucn^>Q@_E+0VoNXiF#-h&h$$_G!N}v_=Y5 z;TX!t4$U>ikp0JE+2eot_@TMmHjtSR$|qW(lux33Ipvcn|C_QYbCwNBluz;O`U`l< zr#U>G@)??<;Yrs}zLxTJLo>`XH1iXbuc!Q+2IaEV?ncV@P`+ts z9_y7iQ@&-?kFR+tw^F`?@@-zk?fueaw>vfHm+zu{w+-JWd}un~MkwD)`60^pQGUQB z-!EI4+A`OJis8RaO8H^R`u8r%k5GP;vT5>|)+TDW$F-Ib@+9SFDF2_~T4I!+a`<$S zT0kiyvCr#Fzx)E_-zdLG*>rn}@@JG^ru-)5S17+u`BloV$wSOUecQfa=Rq=*B)sJw z@;2ph-k|SL*8e|Je$U}phwmFKd`v@R`2)(n2~+;aJ@8|PpE&%~poTVi=I4~Zq5K8q zuPA>hwM_?$ZzHFm{I#YoD&6A$50t;7{Qb~$_gF4jNe%j=R5e_3%z=NUtSunQKTB;J ze9OOB_M)vV>JCk9L2|se^6#>_6(r~Ulk#7-0YwFCP%4v989`-I$*)XCWeO^jtL@wr zRHjrNKVDJgTI-u`m8q%yi^?=q52P|Jm5r%PM`czj(~tUTbr(AWl^Nwrm6242sLVuV zlnwnl7_~v)Y*?9@$}A>uXv!;x=FzqfmD#AoR#PgoQ<;OxXc@mUCzZLVSnAwV=66-+ zp)xO(`J{-(xNg^Wicv?_j|X^ZOmgU0hN$S ziAqiWSt&cLc#`73OgA=BWT@1sL^6f!&={Kco}uaYrJ^k$DlNIRt(PlpDl1Y+sPts{ zN=l`piYrTZfMisbrjk=xg37RneTF3sp|X@gwY%_Ts4P!q%;0fZCobm`BGS-OKat-R~5Y zeW>g^!1q%wInw@A4yAH{OFPivK@JZd2t1^aPvtO|cDTbM3ZmmjQ8}K<(T*RZMMULT zEg4jWNV-Uzs^h=CluO(deH5!`@=xV*xur5*Ax=@QqH+tBtEpV? z^lPYG>wbHkwwR2^A(b1b+~|^Ta(Hu5qT{zxxy$q3M&)*el*%27Eh^wquF;(`mWqe^iiQ9x;~ah<$2JC8!2I@OD!)+qgvysxKBe-R=*~dpb1Itri=yaf z&hvxeRKBM2jrZkm)on%jj>`81KA`+a#YTKHmyHMpZSr4O<7byxf4GG4 zRDPde8S%)He^H%Wsa2>>qSmiY>Tt6E@qy|TRHsy3sv`;sRHvdkwNs{ddNjRYL&PSsl(cNS$3-M4yxDGF0cH8d05_>Y`NV zp}GLod0qH?YR9VI|2KZ&3l7R!i0Z=f((2zFF5w4;XRM(%VeK(|P;e8`zQCS;P-NYsP{m-i3|LoV!;{Wzk zw{*6x+)uW4xQ#>GX)#~g&Y(mI-@!R|bX@U&K;MPx?n5&?PSsj=H>%nOk^fr-RqH*d z?n8A?s(X9Jz0?K%yie6BdQEj-Z=n6C`h26hKh*=2*Ls|ddTND(s6IsXV5)~$E=|3v zhf=+Z>S0t*)fiemoazyd97**Asz+%ItsYJFII71`J+_#q^&3e1$4kRvzFIwz>Pb}1 zP$!FML-~B>ji(f;F7q_1=TSYK>RD9Jpn9f8YSYcb&ZrMpqIx#fbG)YKsz&y+xLrNp z^}K-UbyP2;dO6jLs9r+#Vygevy(u%PajNfJO7$`cG>X+%>RmzgYN}UKy-Gw&vJfqq z*HBgP9~w2UP9$a9>#5#M^#;#%Bh{MfKcD8THdwL-U_Z^lcqu{hsQh zRNtfe7}e*fnh$8_$6M`539*k+SFHt~qUw7-)u*Mobny6JEGw$dQ+=1}3shg!1Y7lb zNmaI?s`@h3R~&hDK+!6I>g!bBp!$~MZz@T--uB0Libp{+osIR?u~a{%`aabUsA_?r z-HD%8r}`n)k7QwY22BpDpHThGo##{YnW3q!@rr!zo%#!^UsC;sstNqsP8MuZsvST1 z=eJb9D{xJ8)lxrDo0{s6)F!8DkH1khr?TL$$VT;N&*gvqtL(qpqp3l4Jk`Ib{!Z22 z{Icq3|3^m^wiqcisi8rnHVL&!sZFL9F^0n5YEw{~O1WxNQX3(nRmvSq^{P!nZHU^m z)TSRb{#9zzSw@-Kl&Q^NIJFt6jnwvCZ6<08{#yQ6cH4oh%}lLKZ5C<^P@9$79Moo0 z3)W^=5f=1>&*^Y3YV%W@+wpl^?7R-=GbrW(q_!Zn#i=bs%@khPl7<$%+H);JO`QGt zb8S&-i>VzguS061sRh(Z6L{1#wFZ_<6UaGBfc)EWlEBHHUFo!L{V|AwQEaJ+nn0crXjUusI5(HjI`C`vJRJ{w)}vy zf>Tzcwi30~9ADYtDh^jQs32e)+O^dkuHkS^YHRhA`jXe7wyr2DWj$)^JF>xmvLUsN zJmba=H!yS~Y${?4YUUeT4svZpZEI?~P_y`NVtuDwhz$V-w|BS$wH>`pcXGJ1 z+SH^uq_!)y-JI$@Ahf+IifFEv2UZW$0i0vqcM^igyKsnYa$5A`pIZqhmJ(1c;PC2=tIDQJX z3)CfRr&2p@)b}4LNY+lLcE*tHir3DhW<{Lk#IxlXHkMguw7y(Bm)d#M&R3Ls`zyr+ zdCP@_=1vz;`<9x?xr5rjsa;R)5?fPKvo3ZGwachoE;$xmYgbrCYP$d9M$;7_YW@nC zRJxYhbz1LR;Ig=(E_{PC+(_*R3=+UQ+tuxTMD5yo&QqvbK%-6 zj{6aC?KQ_=cld_GHw_kVyLgkmL+xEPiVZGWgj!3DrS=WA_q~*H)IO#50X0QG)kxL+ zh}y?)pHB+Pfc}{iKd1IZ!A$K-YF~MluP0>JRH4|KsC`H6d%{_${Xl4O_(y8LQnOn8 z;ze6QKS?pg@SnBYW(wF(9`YNtzo?C;_9wO9HS&sR@&93C>j%RS!pTGrCviBbyvw{L zlpI2h_%^N?GvNrr=?JGP9Y~ePB@Py4B;Gvb2|TAgmV}5DzXsHOE|yt&u5)TUJ))J+bY6OPPhpL)_1~? zFea=MHnn63Bf^GxwRDgHb@^Y9vRm7&;qgCA2|Ik@83xE|rAgzFP-M7ROrhJ8bMIPwZ^>~Ir< zE^RZf@8){6pG0j*xP!W3xRuvpYlqu7+?LSinc?<@@eL~Ss5(0lT5Il1_!!|XgclQ< zo%i!1b|W;??M1jd;hv^5;T|SU%G++h*o1Iz!hH$%>DNe6&hHb3)-)#)?oW6m;Q@q4 z5FSW)kWy_HWK)swV8TO2y>}nsp$-poc(_6B5E?X2>2?(1(N?uWKH)L0!?6yJbLdxq zLf!w=xp{aJ;VFbC57f}ci>^zBrxIR3cp9Nkzr)iB&v1)r|A+7_hi9vxqTy82a|!)5 z&#?dfAD3_O{~{AUwD41=($L6139SR(L3jzFHh;WDE+f2_@N&Ydj6!&YTk=Zr|IHfc zYQk%V7O~E2JI{YQZfL8-TW8D=emRs5;3?|XeV!(KgYX$+CVZCgxuL%Y&i_2&tAsBQzD)Qc;Y;#N>sF@flo|vH zU$HU8IbTy{Z4eA!msaY(Z&Dv3e2efeLTj=g2;U+6jPPB;_sr`&M2sc;kkI3QIL;mW zgCfcCkDTXYho3n7)ZifR=Y(Gqe&O^lo&T$e@_ys=Z=L>~!|x}gdeV=C)|%Ghrs^+* zivNT^Pv9Z^)!BY?INss!2AxeOK86>MN~%MB5=SPbJ{9%J9QTdoy5c|eDT^%BM-;iJ zPfdM#>eG1Yv<{~$cpRU>CCun>q{EpUjxt!VQJ@vQlE|byqT@`8 z&Vrx%Tu%2TKz*Kpg!!Du2ZH(n&ftSceIdtv{$EtNz6kZQGiwz`B0 z`VcU%5A}-kSE<)LHFQ`v=yWXsoYHjIau`!@4;VcD*Hfo=9CjV{9A*Xw5{9*ZUSERx z($trvzLe1mU-g2Pp*}{N8|J;%BW%J`Uyk}=)R(8er8-D`1?nqOUq#MbU&-Oh2Ib`S zRjF@AeKqPEQ(xW7UBls;)Yo-nE$V9*nowV7pwD_n@znLHZ$Nz`SHngDDLmlW#8jfb zskAbpk0aDKr@lr1(PCzOD@&!mbx{}U+i3fuzAg3bsP9dEd+NJW-+}sW)OV!5EA^ec zIy)=g*8Tj~M(3}Vut8JPKU-YXea>LZL+hmVJ*e+VeJ>SlI@sJ;W$i=Vk9X_)Qr}PJ zk`c5>r0(~K>IaBu!LWW1^+UY4gC#)>hgv|>0@gx7{ctzq5!AnMu}4xrin^KlXzJ%t zKZg3Tk|TFIj`}IokEgBxNL@z&)O7`vx*Y*{kgxyC#18%aHY>>1q|{HPej4?2sGsh_ z&#?M>mCtl|mcz3}v~_6xTsy|H`LmaGKJ`1PUqJmDf4q?TMbxjPZtZ@lQ_KRFSi7jD z%weS7Wz;XHeubnJb9>qLD(Y8TYSGHhb}jW=s9#6@ChFH4#fiQJRKHP=eQ8<(xCh>9 zI{>cdZ4PgzeuvCxL#iC|F6s|Zzni*w$UW5WRW3`lpH#YEdChv_d{9XuKIHIW>W@%= zocg2GA2S9`3`|d(y40Vb{-kXn*glm7e=qbYtxD=oQ~!YaGt^&lV?ImWmH;N_c}>)9 z22y{);fq$HMveN*)Zd~0ij+}TdX@TX)Ggq@PW_FcMH@ql-Z^CNwyP1}qW-qwLyJ!- z;%KwmyVT#O{vP$QnxES!rh&}2=IY~ABQ?66Q=7n#sDDcRW9px1+%XOW9d{MT}${=Fs=^6($2|4!Ws8c*GN!7tSH z@gM3xtAhT?IO@L^ic$YfMli)}Y?UegkS68^a@4!la zSVR({S)4Mf!`VFJ?1Q8^i2Cv0>2s^GqIrnsCz_YY&wt(WI^;F8N4^9w%SQ_l?N78Y zk=4s|ONbUBst{R?MiVWn8F;i9(c+3KF2N8d21F&IvgkgAbFo#T$Wv=XAyM62sNk0` zMGc~sr|K0jM`EJ37;G1`Pf3Z!5Os)#iOgs@QI9C=%W)p_5YM{=(Nc~qsqE5oX(E65 z%NZ2(qGgFzBwEf>mnT|5TSos)U5RKFqLnSxeyW9ptXfouXmz5kiPj+6glJ8o^@-LZ zTE}_T9_X+x(R#}3GQEy=|8rxa4T(1D6HT~vKyx+;-;`(zM>Zqc+z{pMCvEBUtp<{} zA=-^-TcRDEz8%r_L_3JzI#J&OI}!P<(P(GUi}i1`Yr#Wg#qCYBJJFs*dze2+jef?x z2FN}{GM%^Geni?u(PN+O0HQO94kS8~=pdsL9ZYnXBZoLVv@n|EhdVsNpk*gIis)pb zqlu1ly3hZkV+WFtCpwYngo4>iKgsZ-m5KgEbQ;kqqNvbQ2PQhbpm--bljvHavxqJx zI-BTR=RC)tmu}8>A<_9nI{X!}Z=8!JlJIY$%ZV-_x{OHM$YS#tWeCv~L{}4CNpw|T zLfUbT|9Yog?-9mH&(M_IFN5GEUY*5Vo$6JYRBeKI^Z5rrjtMBMeq6diX zBD$C8ZX%mSOy19>{(B$M{T5Ozs_Q4M9yHjOU{S?xq(qOZewG$6|ij&dHM6VPp z7wM+xXF=mlqSuMuP{gzAH$J5ydW-076|IZG9($vAi9RBFk7yjxSfcmEY~kHv>`z}2 zeL(b~Drldfnc3kia$`F;u|cFU8x4~% zJB=M^%t2#W8gtU9(3p#c-RH?@%uQn+8Vk^vR||7dY!onP_kuDlFa%toahX)dtaGoV6lC!ikEaPy@fNeP%8`D^x#@f!m0*w`E zSgWn%c39crDh^jQC}{>|qSYO)L1WE=NMo%&gDSfYjde$TeiDuK9Io$h1BV+r+{mCZ zif0oVTe()7(%6i~7Bn_jlAFR18e8@sRn4twY(rx^8r%La&-TS5jU8zmL1QNx`_b5$ z#vU$t7aF_L_y>*M{x{d|6G`5a#$Gh`p|SV>^6Wd1Y%Y3;OWU8u0W=Pxq4%LC((~Yn zq#a7*FngqN_yisrN76Wh#!)m*a5+cQIEKb?G>)CX<5`aHKdQbb(l8VKi^j?S%X111 z&5)h{G>4}b3^dN9ajwfh%jsu3Jf}!4vgq8ialUYi35^SB+(P3b8rRdfn8xKa{!QaD z8kf+xRC{8^W4uyn@Cxp7BZ=S1AD6@~v_8(5UOY&}(U2XWdpY$^u&PQbywj z8aL{-j>b(iZnjyUrilGse=E&*Xxv8A9Pf6TQ_#4B#_Kfhr12DuyJ$Q_<8B)FD013d zx^b_=`#g-?@9+UlU6k~oL8m-S!%X*x6CX7-XgucdafeSh)a8HiyOPfNG>uniJVWDo z8qYfAIn~`mAB`8B@}lQ`smM#?Wu;2~t2ACKh!((Ihc{?^PUB4)@6&jT#@mG)7xIon z-T$HS9*wd6jFK~shVJ&z_`uLPv6`C8;T$Sb; zG*_d!x-=}?nZNau}Og)Xzpm!6`DIa+}YtS z#RP_?`i@inL31CPyL*;B2Bq&wQLA21)_bie=E^!uMp z-T$O{NZ&HT4|ATw9UkG5k92rcA;j@xXx>8eSeh5oJdWmRG>@lwDox+~X`bjlbJC#E zPj*qJ&nX2((5B_m@N}AI(LBTPGbeZ^&9j|yj(f$qg;&tjE5J0*r+L9desU4bD`;L! z^Aeis$ok37mpb!hgBH15bhXHpG_R$pD?l`_Hbc?8rZAV|8Ukou@0>R{ywTxJ20iKK zfgFqfPtv@N<^wb>{@+9M4rjR2?Q@sIyC<@k$N#4GFlpXj_?6=i(tJpM=y8drY5vFn zf7As&=J0WvPfS#6tH_HqpQ8Dkr#?+n`~Qw>2pHhc(|lo~vRKN(|m>It8S~; z3_9g?nzjTGKA^lsQzrtV$j9ELS-94FG{=f4Iq%aPNAqKvAJF`WrXK-YlE+oA<0mw~ zbk0v{e&%vMcj)K8E_q51M}ta18-EPj5{^YjRqX(weL<$BbZdT2s)P zvhS8&1g)uP%|dHxTBB%9Lu&?F(@Jb>x}o4dw5B&GnZjq3R<>$r`72;8e+5i3hiJ_# znT5_`n3dN2v}U6AyO5cFihQf>4T5BU(8@s4Y9B%5+r`4NIqs*TB3d;){(JU8mecz?8?7_k zXlK$o%Mh7DO?Hl58=!SAt&3@$N9%m;yUJV_c&hII)4Hf|IYBvw{Vs9jQd(Egx{TK4 z+HALD2-_x=%qwYKCAW94&`Q5`4Xqnp)oUGIN9%f8H@Jomt3-*tNh|%<&9rXwy5Bz?9J)gUc9OgH}fX+0oYnGPmFT0KO|YWgs( z$NcdTT90ZA#TaC|$7wxB>j_#<(R$J;qU&b|1h%WtdRphgt!HfGg_f>>YGZJyS8m)2NXIs#S@ zFsSOhZ>rK7N9zMxx@an`iW7>~$F#om8ht|RQ!VIPpQ%zZ>E|x+3q9KQbxU=j^))fH zzM=J_Kl=CoTUr9p`kt20|NGf3%XnIT`=aIh|1I7Bbk1LB{pyPS);F@0{N0oO81Ve* zkALaWl!+(l)8k2rCsR^9`G7J7vEKh89^sr*8T7}g9Zn-QNtlj!AL8kWmn5Encv0Kc zA)b+VB=N$;GZD|`Y@>*Wh-YzpW{EPJ#IqKN6K5x$M`1RegV^u?#B&kPEe7j)ilu)i zo|kw5VtxFFc>coR+SiH~lyAff^?kz~jQDTFixB_aF1u>q%;eY}W4su#-t#5aE5O8~ ziG#j7*-M3SnOJ-H#Qy$QTqUj%H;F@HKMRQKmMV{m8wKLbEvM-6XF+ty32{oigyS9J zE^$uWBlg21+lBCr2;yON1pAp&xmOb}rM0$o@OWwBWr(*V9z(nu@v_7#5-&%*yezLO ztRNva#8}m2oRx@ICSIjzdg4`Ow_<7(uTH$K^Q=Ln-P2Pw^Wm6&~!6qImTARTNCd_ybbXV#O4*- z6KfY#`@r+eu11mCI}-0qywild#JdphD#ff`_Oo-S*ji*SVr~8q??J3vKoj`AE_*NBtC}tAmYP`4<jK+ZM=&Q6K=1U+70LU z2;!sck@!f}*XR}m;-fX7h_>_V{ zqiU?pA6ZFq&LF;+_)OySh|eNE#~n%gKZZDi9RaI!;`50wB)-6K{rcH25+a*e#jhg1 zg!ppeONsUJS3gSIs1aX5e5J;MBCjfPwfoOC>On@7gzMaT_6Z;lVzZjHZzR5#*qHAk zzS&#h7UJ89Z*}~(zWwDqcR1xvgOaB9y4&GBQqO*(+^1Cgsnb0`{4()_#E+V-h#w+; zSoKx&Ju;zLi60|=ocKlJCy1ZypU%gc<+_lkh@URx6F)=ztT)he4xe}Uf*Q+8SAAbn zUoc!f_Z8x?#IF*+L;M=?o5ZgZzftVxYe!l>`4;ipGKJj=uyN2@Q^a>YyAJ^-N)>;f zcpULZ#2*m%`VJ-+WXNyl(xSv)ZU-=L9`E`Z68$pn|-T6dF8GL(>_GLWPV~l)$uT=A5Qy7e>_6| zZ*zwBQL3Z;gdbB}h^2ij?c->lMEiK!CrGA=l6Rdb#Adv0pK|nl^%UBt(>|5se!akHze#cr?YBs*@4rnllJ+~at-HNT`(xVg(H=*8EbaHDgSm%=BU?(eKk(Mk zvWWIa{QxK*`-JwFv_EzFXZk2y`*Ye~Oz>^HoJ0F7+TYRs+IhaA-GBL4`gr5g{+{*^ zw6!h}(S8b&|Bqxc+CS0$gSN&0-)R3L$5S1D9jbgTHrrrn>l4tlf7eN$Ec_?Qq_j2p zCxK)Vv3W;Rpf=oeP9`UrmShT&X-K9d@tB{C(0y{HPHl6T{w&urS`#GGk<3UkeSZR$ z%%G9fqN@#jR$?*}$)Y5qNaiLPBAJzBW|CPX!2+@k`r?_5WDZq7u|eu>N9I&zrQ}@t zu%QKnWFC_FN#-S)&$8GEtIA5B1xQT7f-Ywvl7-bhEycB+wMv?3R>tht1f0Mom&Bsgu+^S15gyWNcCYy0W!G(j@7Uv`7+?Sk7R3 z6iHjV6RKD0_UR~Z;buvX#HV)e-6v*A8zwn`WC@Z@NtPs8on$GJoM zk}XKKBH2>*|Li>pQK4ItY(t{WpZ>aDxwa?S*_GUZWJeN3euRePk-Vh}MEd(Q>L|Nsjl%)%|~^T5wBF(Cb&p ziMnJiOP)+}7Ku5@86>BWoJOL{KQfLrq8LusUV)G^rL)Nwem2SZBv!<^vdNGs;9tD7 zqLq4qCQiwPBo`SXX_is+f0JBKatX=RB$tw0?z&y3OC3tR!cAwoU1g6lMZc_TNUoKK zs7BYRb`~YXe*?*#BsY@WN^+CpTXHkWEqWoMaKiWQBhmbyX#c>-(1FSCacl-XVE_XDG-gF6iWlTxd^tOAZzVI%|CnWEYj3XIK^1iW2rWsAv`+($QH^_&c z{Uce})a%#lQ<5J@J|oc^d?cTfd_nT1Dr=4C^&0#{^mt*00mW zNp<+E!04Ttv_#q>Et7_xQAfa}{t3{uro75kCyl%;cf7QrMoF6*HN+f~_DI{LU9D=< zgfu194I(qU>T3m=Rc*vfGtyjDv)*Js)ouyWwMmyGU5Rul(&b1^^0K791B;UglB-bp%YhqCsthrYn=KDlbY`(HzoxZn_%jTBNHx^BSaUD!PtM`n52XBxD`Z zElAfT-H3EOQhWJVZYf_)H!y^BL+P(_HzwVjR7b$1o04u;=%cC?Z6{^6B;B5LE7I*q zw^mn8w;|QX(~71Mvng)_Wx50Dj?%;$T>^I^-I;WkK`^<`OWck01O>fRF9MM6PP&JA zJL#UJN09DCdJyT}r2CixTD+^7_9fkqbbrTvCs|cEfb>8W2EKA7x!^GMGZn=Sm! zZkB38e0rhwbJTVhlU_;cbD{JS(#uJ$yIm%k=2{ld#dC!+n!gFZiu4-Ns}0v6ZedEq zYlREBp7ajV8%S>^y-_@NqdV0RfH%-Bq_;WSt)lev-mYdf>*ERO>uU`Znn!q|cH*O8O+}W5(lbkCQ%OY>Mr&lC|$MPJfE@ zX+w%4ihGHq&yl|Dsn3(XK>FgK)-UOV$UMYu8lSJ36AJQ&p7cX#VeyAsxT} z*@+5@r#9)NbaVtvCswV6wCN-TKA?2yDDu$hIrKd@apulHY|!aT(piWH8Jc60H7RUYmPe=2A zI%g?+zt#M6YMpc4^5;1`-=SUspri9&F$=$#&J}cIMi+7kolBj5S;0fc@BfJNN@uvr zO*HuUL+2VNUQ6e?q8E7T4Rju$b0eL*>D)x;b~-n^wzqh#Z!Ii9=Qb7EZ^1k0+*z~; zox4O=yWB%ZmwyKI`{>+1k>(H5d792cbRKsdjNdo^Wr|0gqWeFCT0B9=KmOeDjrYz| z6Uljoj^FC(JWJ;}O}#qLJA7f#b}za#KLY5t<|}kw^}4*~@O6i8IP8D_&GEPCnoGPx zcQHEe(iu`|vk8*XPJBjq^>MaHl4O%d?Exzs)bf;0Jx>M2};mkf$ z?M^MW!u@=%LU%g4^U|H3?(B4DpgW50jLtvO;Y{K$yt+GNIy-S@y0b|CuHXOc>i(zL z`l)l!_4D8ETtz{2{am2yFEvP|`RFdLt-7?*ZSG?-5<}e&+QkR}Z+~_vwHoX=thl>An+eImK zlcGj+J9L+DZM$@PgS;8t+$9eels=S%rRa{KyEI(||9-nz+~_V#SFxS$a&(v1{JFb= z!xj6^(_KmYg(G!Wp}VU3V0X2C@9VBkcZ~vf`dV~N!rFAVq`MB?ja~A(bk~#5bk}#d zft*1lZb)~d0v}K|p}VQ`XbC`fbB9|Lsg7?&S5ckr)^xY=nr>Uvk?wYMw;$ks|EF)y zo#^_X1$1}mTSINV8{LEH{)6s8ba$t_FWo&{?4Azya;PgnbUpqTo~g(EocK?=`wx7; zuYh(BG%3lq^5 z{OS5I(S617S0%jfc(2p_nC=^N-=pi-M7wVdRMHh7y6@0^x1hMfW1aZEmp;zn2M+u9 zKj|v|JLMC)-_iZl`9GukCEd@R{)NGU#~*cZg04ORME4tq-x~B>--}H;{6JUtKOO&% zh+_VUp7wC){_OAMsFs1lhd14 z5_(h6(-ly9BOFfUaB72|>aPIw@#*MIua@e~;BZEVBPHDQEP{V;6ulwOsLdaGvpAe} zkZMbS*$dq1bJAOYp3VQ~?uW0QmT&atRj=vI=Wzc2_M_f{^d_48_ZFt-yS0UtdX{l1 z7rQ9E#png}7T1nnuh=tx*po{1LV9J_u;Q@lux79y)~q}9>iXVYFQV6=*P+*>=Wl-5 z$ZnS?da=W{!-QU{QtZ`A?Ch5)0lPH&BZ;;C!V+nwIp^tPn8 z4!w;nB+^^g;d&0&cesJW4e4!Ur5j#AdYfolueT|^&75I#C5f_yL8oj*ZwE)VcDRkh zZ5?h$Z+klnGh8QPy&dW4!au#8=;`|ph7U^F)#~y$nNy=!OezyPC^LbkD zlp*^RL+?~Y9YseO+cP+io>0L+fA$r$)y>6hVJ$!n4 z|CioP^lqkiyW<)H=-uk@Hv4dpA&%ccPxn6^ziVhAeGAL+d+6Oe!0)4{`9Hk}29yVf z>K@5^y8lD(5qeM2d(?aPWAwBxaQ-LgJ*j>n|M#OG-@~M5-+wkMJwxwpde72(P60t3 z=Xsa*0=-x0y{IX=-F4}`MDJz$X1n19r1vU4?d^N&>-63*I=wdssc#jW^xmQOp>3!MG zy|3w+v~R2_>3!?)J9()dzo++uBR>`tk4t`f*!zi0ukq6Rncgq-#yjpyfL?zIK<{^Y zf71J-pI7$z>%VxWBVe*g3kum}{x~_=6prZsf5}D|6oYU(|26(;$mS(e&mxEcMK%lB(11SkfIchP?9Mq`L2-PJiSW6|YzQz>ivRkVCG|KT z+5CvC(lGVs^ z1&Su^1X>l-XYk?G??bOA$kI_9tJK>;SS)$qppDp6np9v&jx7JDKbd zvct&^B|A*L*m4=PxSbtArmY^bBgu{;JGzL~R+e2bAUl@q1hV7E?9ad6mOk(Hv`d+t zNOqE5l(tP;I{{berumsKCva5&e zgB~)e#eYBl9k{5@hGfhe$etv-k?bzAo5*e@yP3@X|HWq}=IUNL*==OEyFPc2-B~!f ztYj0R>~6A0$nGI~nCxD%2gvRtyI(w}s!32?9wd86k47|swwYWU<7SV#1s?NG_c+-T zs=G1Rd6w*H8Q&v&itJ6Yr^((Rdxq>)PkPqjb7arE{1+U)=@GF(rG8>|JMg+fDb5+RLW_P8>`25!w4><78gh_5&R_%5?r_glhLO*(cU0 z>gFa~?eZD<>|~#lL-qyP4`g4GeM4qZQ5lrsif5`pJH`n(c$QN^{%l|HFwEBqXCGxV))GWy7 z72OSJTti;9!xyz(9+G#+>*Q_nh`b@om`RnfN!}ulb?RZOA@d)L9(h8Z%Fm6*&K#w) z5tk(IkuO1>>7q!UlMkB&nZz9RYN}S%{Olvw^OONt_b;vg&Uzgms zee(50S1mRm-%$7VhkOfibCn&)w<6z`d~5P;q`di_{Umcc z^6jOMRm#N5fIE`!Y^mh>1e_!K3t+p(;PQ7PKau<&@bll`&3fcsThHg=EQ;w4+?B zqX)$uL+&4c&W}^0NP*+Y?U34ot=jq|^0UcLCO^|N>O1`8r#L*7+`j+Zb^LUPXBhNy z&*~Q{o0yP`$j>D|pWN^N^euA%`Gw*yOxmyh#pHgu#fjvXl3%GHoL@$MIr$Z;wGV|V zw-^)itI2O6*ZqI{HXZr33bwg_4kEvv{04ICi8m^v`LI0X=E8=K-%9>G`E8!%cJe#q z_R{%I@@L5JBG=tE^1I3Jail;0*X}{?`~OPS5`bJsz~m2+KTQ4v`6F)3M;$)q@Nt92 zBPcsR>Cnp3s=@K6l_Vk0x^B-&PoqfZ7s$USf05h*?@Q$4$X_OZ%Y(x!r*};|BzfC{~S<0cFs>6ek!6VrqJ{` z`4^6SN$!9C*q87%`8WN^PyVel_$hEP9m;cQ&dIf;t5ex?m>)hENr)GE>N2YZ+ zox|xJ&cN_oj?BpLNJnO3cvgl-F+4NFLq?GiBy$$w_Omnn;n^7W`=7(J4=8gMNWsJK z+ziiSIK%TYyePx-F}xtd^E2!>f9yIzU(P}d|Bc~=C*);#5r#c{d7=I8KfD;j{{O$j zqbK4lx%{%jibKErGpx%$42KTu4kL#RhyLeZ!}{|thGT{khTDegXFX!rC;!%ol-gy? zl??Y7b0)(XWAXQ|s69`@8FSaJ%6mt^>1hL>X4Y_c@NJ2AWr!<#ZZ#(9=?xE#al zGrT;*Yx?5~46n%WstoI@6~iktyh>r=ft@u3FuXd$YZTQV7-21=d(zqr`=9>~ugmay znoHP3$Zz3#>IM!sWO$Ea?|L=T%h7TA=?I4ETnKOJa!-t3*Dm+YhxX`BnhL1E9Im&QoMH_y{ zFnk5W`uOwkaSWfu@bL`$>s<_=Ak_Cihffkenc-86_%Rp;{(v#Vr!joG$Qi;jUBQ-2 zgS^gWSl8BQi)QNQdz=^p-4cfDkA@1su%LcpxNC{NU24sM@jy_6csuhO5K9T zP6kbp7^jp{%0&9Y5m(61h0;2duBWsvrM)SwM`;^M>r>j8(gxDpP`Hunj~%+DO(gUw zfYN4^WJjT||0(TkIGB$-xT}P_ z33nInL1|Bsy$t=ZwRdSBN=H-Lm(n4M+K8&@)N{!^hbcCc^aiN zD7pV1rytMspsiX@?3($(@=yX4Nl;MYp?I+sXD=>|%_Q@WATvy}cv$=vcyll8|F3jJAJN^c9b9aMT({5?ZYGU(6`Wcfo%ABlV{{DjhHls+|HjIlA4zNhrL zV!x0beITNw-LTTvl6)i7#~(`H<@P0!|1bUMyAvgUF@cglnMUbn;V;5pg})hE7UJ&z zmEE7hzbO4p8S#Gxr7Dj%&?%2kc~rqC81!a&A}SkDo|y7olqaEFqdc1O^lqU%Ddov1 zPbEINa0<#(8YwJKE#Wl6X>&Q{AEV4Jz2^NQC^ht!WQe7qUA+$QUn*L zyb9$dC@-hvJ_S%-O1L!TWki%3D%yQg*LSIi%bYasMyk zQvl@-d(vkBo?=HTFtJz5KV(dlv1j>6;K8W%@lI-iT9&foVEZDZDzFQ@>WG@+Xwjjb_(tK8ik2)Q5%6N0ia8)X+xjbJg zRMv3r${KPN+X5O^up}%C-TxQHt5h;7HIpc+E^JU~Qjwppgp#y`Z9}zoN5L+Y9u=P^ z?C@*zN!e*+@|vQ#pvrCRDbe zvZ*AS<(gDBS8xj|TZ(KY+}dNU9c-0b*_O)Q5^hIjdyyTe>`rAzDsuRhog}o^sQnxi z-&MHVU}aK~|M!;MlgeJMV^^aC&3&j8{=c#xmHm~_{lCb8PGpwK!Bh^B@KE7lR8FLF zIF+LnJc5c(1mZ_I@saHQpUSaRj;C^5E|la1=L4OSsGLUSWGbgpIb|IAe{ydB7Nl}| z&Z(S1SV?rE(pWyr<5m@?RQJ}g>wFti^VSyUTT={BT>0blFNlx z2(J`gMdcbQdj8*(br*)pwH9T=p33#oxj}fN3q8C4QMpOvX5lTuTMY-ZUgdTwk5akA z|DIO4Q+SuZEbPI%h4%<8c%R7qh9VCLAEaWx0JGSKg^w6|FT3P1g1M+XPUR&kPblC2 z6T1JW@|5stLy>2M&r*@|cZKIAd4Y=ie?QD)S6(I zBD4MpAU|vsQ5i#E%AXUAN97ADe^U99%J(*IshD5=TI3tyx5DoXeJXc_AE^8y@}tm4 zJC&cP{A|PzxBshzzvU7tzf1Usx1=lohwEpmbh z2qyHXch(@7h(OQ(SjA0ZPxskgQ!pvP5W!>w(-KVX_Jb)r)>@PT!ubg17g>N{Q-TEvS_BIbtU$0Z!IA`v5G+n0{~s)7nz^f2k|pvW!BPav z5G?J%e7P0K`3K7pEI&w+--HTQBp4=GiNKm`Wr9^@$Nj$#j9@i_)pPFE^rE`+7g@`R z`NN<@P$wu8R0%2sK`u9apUXT+ZJZJ|2$}@$`F&^!3EBi1K}66aaR0AVU4nuCAGn1e zAxQILsBC?L4GBgF)+bn-U|j-z{4<~Ug7w_a*nR0>0}tAzQy~8zY^*H&{V$i>RZOrM z!BGU86YNc}1;I`PTM}$fuoc0!1X~kq2H@$(}n~)6h?M*VpkA>WwaZ?F0SuE zJ^$lPu{*(D1bYzplRy6&lx2c_2oAI&5$NBM!F~k$6C5zmG#!sRh~RL7g9+sJgG2KE zHB$tK<++O=L2#reR4xRX6oO+Ebu7V21jiA$+b1~QQ&~HBIraR%t+j%a2~PDzSD-1t ziTwYdZBM6q8NnG;Z2+H1pk-Td7QxvB4-=e2@IQic3I0oP9>GNfTKos{|AG7eqEznx zm9MqGKmYHC7s-rkksoLZ2(BQwlHjV`;rsIju5%569DZ=EStHOZU@mw6FPk?O*32i| zOK>y69R#-!xbwGlK7rQ%p7!>lJa-b@<;m^A2{&~&!952Sby+WYH|Gx=eCwP9OlHeZtj-}o{ku&)65%7@^4f}aU~ zATa*pST#lclm`iZQSes}$_~NrRHrBSgX%=G_9ww#R3{+#o9g%k|G2Ppl&*Y6TeOm%XRNvMvdI;rU>IGLdxvNi?PX{b&~b!w_p*(QJ) zADZbMS6KNss?$;(a%=W2lI_t8raB|lnZ}ku@>!_PPIXqQv;8X{^$*oK zsLtuRoAFimqdJ#o;Wp=?x&hUBsn)5^M|GI${8U$@x&YOssLJbB7xGrBE=+Y%s*4QT z%4V*r`+us73*GrsU2>dQ_y1Iv5iU#BJwMguT*1?>kP``45^C{ZUB#!-swRT!YE<3N zQ(c|v8m@1HwyNK<ws0N4(yy*7Tu->Zq5mty-IVH4&k@xVsh%$3Ny3wbr%*jr zg80wqIw0@=cryu^>M0KQN2aUucmqp)f>gHrFxxPbFV|El|cs?P|Y&12Op&r^L*!WXE% zNc9b>?*FO2O!XC4v&p*pD%IB|d@YxZQ|mV+e~aqdBJa3@Cx5qS?e`V@fa<3r?*FNN zMAiMjxL*Pk{4=U!By|5T@&(l|bM7yXRKKQXPV5`1e^LEb3f~F87ydx?XR7l5o{Jr7 z*nA$Z{zCP4sreK@)g1WzB7X?~G|Wpv^>1qCpZ}pYAvIiX`nB&2MKxs#cNvj}H(p`Guw*%h2aIHwC;b1vcBg@t*k^{CB9ZCT0Zr?vpK#i+^u*A^;L zElh0@YKwYM4K-+-+Tu#J1hplpElq7HR~S^#{l6b}&eoQrR-(2%wbiA+0<{&X$)VL& zl4Rw7`@Oa*wbeY~*pX24DS(=_?OHB(KAbC1D=S!`)~04vZc?jKt5d7x3W{xv!$aq8 zq2r-2s+Pc)%@g(_NQ(G@5 z(%e8cHyj(Q;KtN88AnIXzqUEGt*N>5r?zFTPi?D#nhUp4)V9Ly3WXi0?M`h+33n3i zEZl|KZq#=5smczki=i9YL%64KFX7&XJ}KAs8LYKx`%ycV+Wv|?K-+w8?KotS*HFKN+O^b=r*<9nrKnv`?N4eqPc-yVY#Uxcq03b5UJ|}+XmV<= zQu|7h*QmWt?LBI5DEOwK$XnFj7I{bbuFG@pT6^EQ+x&o7;BQ*-BU zbu6m?7j^Rwe^Z~F+CQ#SM=0lC_rfSRiuwcvpOE@Q5>70X^RJKgcB@Y+oGdpkJ_U96 z)zqh??*5kCs~L~@@3s4wP8oXG#zm!Q66E>WqLrhYK>WvFjN zeOc;V>dR3tQD0t3Rw&Z0sNhP%m4&NNUsYr^;p&DWYY5k*zE<9P)ZPCVysX#?^+2R* zC{m+dFSt(u)SJSPdQ0VO7ZxJwot#S^ORZO=O{k{@&lJ@cj!<8_kgp@jy42SzY_2cK z2Glnk$MVJ!ZbE$*kxhl0QQur-3*nZ+t%O@s-&RH1rZBr5^_{72Uj%oczGK0C3dngO z*_HZkva`FP$R5=96p{b0?=8L$^@BwArM{n~rM`b*;Q;Cfj%!n~^8enRhbon(fcoLo zk5KSPLy@C|ngZ%R1yDbh`f(mB-%kAm=Po}{coOxK3&|w(y(#zU+TY5zl{1#)GwF96~ZfB z%}aO{^{Yj$5ne02&QRof>NgbpMoIo>=#y9dX6pA-zePg#|I}|2-fk#z2lYD(ei!w- zCA^2a`+Vy64y~>hGixH$AE5pq^)IMDMBQC0^@piHQdoFYlE_@*Rp3EvjJW0+f( z!h6);7x}OKKU{xx;?|J1)NB$@*1-&1%0 zuP7VOW7Gab{pYczqW&w5MX3KqV>I>OrTmBR&m!$#3fdIl{@-~6;dnF(|KAwpm2FHw zV?squWGKnRG$zTpp`s=gPDW$$LNbLUQwpb|F*S{uX-s25S@0=<#t@C^M5dQ;215mB zq%l*@C7*@H!Zc>3u^^4vXv{-nc2kq)95m*X&Rj*>xlLa1d8OmC0FC)+ERf3$ecEj- zlxyY_u5=cqv6#r>G*+Oogt+^E8cPY6HWXP#xU6tFp-%yR-Zk9$OR|!1W#K9`-2aQO zM#KF-4LSeDnuUBV8pAXyiYn14k1Z{YK*FkFQMEda_h~d}Tu!4&V@D~3G+Hz^rqNa~ z5_Swly26-7kH)&<35}G-IyADus-q$Q-xyKs+J@d%>J&-Vqao+t*gy@qp>U%-ZDC;( z8t(k1zZnhp|KeNF*iyv(zsT0YZD?pBXlz$hZF|XgFf1fH(b$>BsWf(>aTJYRrLdcD zci|p}B74%(dcidXG|r@PRv|f?#yK=D zq9NzsI8S!Y7hWK|a2%T#OLB?uQsIB|SQ?j^K}oKlaXXDGElA@kq5FT4YiL|s@at$? zU+^1f$oV(i`O~;bcykeZ3yoW8xbrvrMRs@4c$`Mz{~LEH$=x*WDN@}_!zTjC?-xEG ze2~UNh5TU}j}!(URqSJis>Kruy8ox~B#l=@o)SJSl>cu$EB>7Dd7)1MG+q?GBz)OW zHeWR&$!j!T7m@#OyjjTKlJIRB?*D1LD}2w;2Ck;9O#@`l{#HRq7&>T;s@c+$GG$(Lt%?We+;u8;2H7AksXqs~V&B+v;TsVbr zO5s$7B2&|J|8Ixv4AFUu=5(|Yn$y$Vf#wV}SCZz8G-skYKh2pHoJBaR?`bq=qdBL7 zv(uczUr#fGhW5T&b1vcBH0LQK^Gf3WUt|HAODe5i32ZJzb79$BB)>+Wxu}AR3H=u^ zG?(zS`Q<}XQ$W+F0Gi7PmlZB2bpKCt1)2l@ujIb@Lvt0H9h$3(uST;;b9I_!n*RMy z3D=~#mWaOsOw+&rSCv_(q0)cynz+b2FNodcr~4 z&GV>Shvt?vw=zysA7^fEBd%9~J^6Mtw;!udb4OYc&7Gv9&rCIUA#BjxmFCAZccXbT z&E0AKhvptM52v{&&4X#~MRR|ed(+&P=05(Mm_62FXs?qu^$SSbZD<}q(|$v&r^sA> zkSnb#$7nw8mqO}I-?4Az4fSNv zV)Fk@_y6jbXK89)Xv+ULpQrf(&6jAp^B-JNHDAt&ti4L}J({o4e4FO$G~Mmf^eI3k zcjxcD?80{>c{dM=zfbccnjg^o&_}+hNi#>9pAgPL^HZAt(EN<%&osx-{FdhDG{2$w z1;Y=ffo=*C*h@rM!_%!8Mm5T$a#1zexy}ce!!fa1K`_ zT$6Am!Ziq2CR|Mls}Qd0I(E4I)xDbb>_OhYZecA#Yfu0FCt-=O?AE-6D>*SF^z}bs z&Ck2AJ~#`UH)%~w7}By%Y!Ti@*d{!ZFe2QZutT^BVV5u?j0t;QU-Mew;1yuP)U)tX z^$9m59I>(yuB{IBSAYrE6|Prw+4_VV~QPB^CzD5wyNxQ-XI>_fp9;<9SQd&+=*~E!kr0sRn#tq_RyC<_hpXV z?d(pthqs3OJmFr1dk;;wf|U31s=3a-9_vNjpYTw^0|*b6!hwWZ|62(?_7D?#61&?K z9_GY_hZFkx-^aWMk0QK)@Myx*36CK>mGD@?lL(I^JV6S_yRv2H&3K}Bv^`Sp22b_} z2*Xnh{i(UoM$u_r3mew-S?k)Tp;oF3- z6TXql34J2)Ew4~&J_g<){E+Zn!uJW^`?ox9`~xqE+KTWaBZMD&(9a`({*&-C!tV*k z5PnJcIibJ&h_>Gc(OZc5zFtf5u_ygf@gg+AcYM;;!eG@}%Limf< z#RrD_e--<8!oLXru*WtC|MZ79?72-tPwW1lP@jOaVp#E7;|cZYyw)gM6L|4lJ|V4% zoZG!n7u(H7l*jXxUF-pht|xrX7O=lI)k*c(VCam?6l^hHHVbv^r%7X+^*>f=W$}K z>U=(0^V3?8mVYMNh4RC+7P7O_pImA!;*HSKrG)D*Mr(0NwD>nW9=jB+GOeX)twPI^ z_prHp>q_vXDwz3z@gx&(H(ppnwHCn6NP^7hn56F+&h6=7l zYglGWZpuzE&!R%BK`Rii3TtYAt^ZBUdc@V56514??|-)1J|->7hC!=CtLOfw)uk1C zVQie}B^L=(TIbNpXzfR(SaklJ$LsV?({QA+1elZA44X zUv>8(>gCy#)@Gj3yMd3u))ut(ptU8f-Dqt^Yg^gbTDVQ#M6|Y}Wefi8Y3<;BXKC#) zn|58$+KJZAw06l0Pit3?vND*O7i0Ir!k)DD@e{4J7p=Vq$-U(JdZ`BexIe9uFlA(Rzl~ zOKPiUX=(A_(&kU=1sT-(f6#;G{H>i|k@Bm9YWe_poz|PQwD`Byuxc9GWYKz?)s408O8)_1hV(E5hf=d`|}^@TmbsDk+` z!2TR&%h&(8Q1Wk!nto5~M_NC)!9jo7F!(8tEhN9tUXj+Xv}d998|_iFey8;htv_h} zP3uqph?5VVzubrw$qpM`ZD`xWpY!{tP21!9#If@FuGXG__O!Goq&+F^iD-}Zg-YAE zfN1;vkLv5^5$(xnPa#v2yH|IcQ_`MVWGcgf*KJQ@#0pG%i1v)Mr=vZ+m)}m?_6+`_ zoXt%hI}`1h^AYGm>yh@XwCAEd8|^ui-Rz#bomp+)4zfcfpPTmLwCABcKka#G&*%AC ztho_$m0rjNXzNO|y^wNQSm+;rpuMPYF+;cJk|k&_PkTw)%h6uS9zCVKv@a&x%LteC zsnCpTrRT4Nv{&%p2RAA0O0-R~GVRrruX|nEtGa?Me%fXvpuGm|VcKibUd!b+z*Jh= zmQi`oP3_7c%9B@VhqP<78?sh6RIQsi@$uGfxxO7XINK5Jo^je8+FjbQS1tGd-r5Q6 zKJAot=1+szsIVw=HLgEGdu`eq&|XKub={@6*AuRvx1_j!6VTpBd}HAzw6*`^5?uml z)lJ*{zkk|=_ARvUrhO~zJ80iV`*us4pT#nAC+)kuUbeKhgno|PL;DfhgO5MZzK{0( zI=debJ}7)h_^_cD%+M^@Ow@ji_LsCDr~Mx7CuqMw+uXvF`C^9lQ?#E|BR@_18BeHF zUd4Eh_VfR)dD<`1ewFr1KIUy*)P7m`iYvHtdyTgB-Rnx|{-3t5|BLhSZU0Jn`yJuC zh889MKJ8Cwe?a>~SGG5jJfVH>-7@-E_{rcUi1uf+$9O99`Q9L()BeJfp@-v0@?>VRa zC+&Y||3&+6FONAZRe^}S%s%@>;}gwHG>T|)q6vs5CYq4Q?;Ye-a1RzuLNwY6<9%&4 zjV2|UZ0tZHnu2IrqA7`{8Vp+3nOd6DxE&j5(Gbyep2V(tqUnid^eG^k!3V81S~Qcl z&yTOFJhKojN;E6c0z|VB%}q2r(VU8!!`1Ba*|trhxeWapCz^+7K9PC-GROS0omSEO zPOQ751&J0RT1eHg;KJUpRwT6*(PBo37AIOFmlX1)h)P6D6RkwF4AF8#%X*jDMCmy$ zPqcy;!|Sr5CCP^_(aJGAL_Qr1MyB}$FOMDmF90bFd#oMiJ)$yEhp0l- zAPR_TM85x%cc_%>gU*ebL~Wvw$en*KG$e}L)SzBnqLe5mN{DI}`2V$!(I-6h^cg(V;}U6YWd12hm;pd&1y+AtWduyv0L>CfWB;m!Li(9a9 zc&R6`pqKeFA{(Wb6J1So1<_SzpXf@9%`;N)8lr3S9`saRuj`2nZy>tS+gz6+>N{(t zoAX|SMo*~k*KYBLLSDMcg zz2N@Jn^C`jiS!GY$Zr7i#y-JKpS8aeEQQoAEt5 zOB20MXJVoch`uBGkmw5{GctzgW1>%$`zMCd|12jGer{OEegB{6D#SM86RI>TOb7B@z8j^hd7a%C=)1{Y7Uy<3xWG{X++H zW&i4T#-}p@ol&lwTkcFqXQI43g=7*sbJ7`2$8O_JN@sGn)|sq`or2EPbf%;;RW8ZX z(wTFCT%XL>p_%EAm|W9iIPSeu2;>~vJ zoq*1AbXKFYJe`%KwgMgZ|3%uBC0vEhs=1_)uTIC;{B+h3u35;3>69fY85Y7yL8^3O zIyE|>N$Aw+H0U(**g~g8r$eVrC(0$`*wHUwJkuVXwdo{uGCJuv3Vk|*FaH$Q)}gZr zoptGKOlLh6Y<+(dzq5gGL*Yh-7L}tVq_ZiV&Bo20&K7j`qq8NQ9q4Q&J6qG)j?Ol8 zwjF5N31z2n$0r3lWM@Y@d(hd5&aQNJrX&Ba%PU#fjn3}5W^RGbo^>IFJ4(s@m3UlP7d=as^Uf8gD?wo87Svns}{z*})Pw9Ln$r$11Lfr!JBwy0e_uo4D{#(bt|0V@Z z0j}^ponPquK<7uFfV@0;0e-Sciq6kIDVyAuF`ZwDr=#;5@erNgiKnIW2i+6s{7Kgw z$X|5LN&ZcDDmwqroxqFQ#SM1HqdUHWqr6hOhN3$m-O)DA=}tsxZtdj`ASgsp-y4cN)6WD{5N0LteG+bY4eO%WK-5f$oe_m}ww%JG0Q8 zL&90<&L%Ru$J*ta?9-i-?p!L>++JoAdUfWdyAs{`=q^cje!7b)y9MYjNOxhn3wc9X zriONIb{BDCX`L@dcX3;L&|Sh;ASQRd6y4=SmZrOmFJQXMdTX14p$C_zyMkQ~&|T3l zbxr7eWx6H07Q2RmtJ3xLKV82Za5X~@u1QzV|8)KN9~TZeihPym&Dfq}=1{JhwdQ)sccS|+kR^DhP z^j6)5?hYc`(%sI-ZFhS=(M%y(M=yu0H}q*B=w|k1jetk?sR@PojGR-IM8_OZODIXV5*>Oi96XPLo-8{)3Ba z&&8(zx@XZn+ds_GJ;y(XVhYaf9K4F|`E)N;@B+FQ(!H4OMLy)DM%Qn9dC&*5jfX2V zJ};wtxf`*=hpR9Ciypk1uJ8X#eyumYcg=NlulM^?c12_Ns=7DQy_2pDfZOO=7u-Vk z=7BZu+*`dv?Xc_L?(HV0dxvp9lq21{B)psMJ%!|6y7$q&f1qQ{=xHCM`vu*H=)Ow# zVY)BSeT44+(S6j)pkh2m_i?&Uc)@I1%s*4meUk1oej~5@6y2xIzJGL-#|v)*bKr zws7~o{JR8nZU2Ap{RGKB5`LV=D&ePeKXV;7GKTKwK3Xj3qvcDwf7AVn?oV{Tru#kJ zZ#>qczNM@Ge_7C5+yDP1@*`dO3Jba~{h99Xbbl$l$FFpMa|`A%+{hn=HJbwd@-5%@ z|6@q^AL1#9A)bJEJd?OE9-nxWU3R&eT|dSX5>G-rkz4TK#C}C)-XI=L?0+!sJ zA!6J4d37*_*%vkAMTt#+G2&&37bjkdcnRVqyATUelF`eerK<{)~rfu1Y*iyc+SE#H$ng%3qD9C#mAKoSVdYDlQRQy~@ND z&&cGKqxE}SC9b)SZjmUL2JuG3zW+}g60b|#5^ocy#1U~!+#&7`j4KP`9&zG!Y*)b~ zcJUi$#A_4xiAM%P$t{*xvw-Vp{U6K!$L{}$H*_PiL%cEZX2hEiZ|V}YwsbZp-oho; zDPFZLiMJx&fp}};?TEJ_-qxcufK^95|7jAdxDDxeN1;CgDr>vYvk|f@@n6Kd5x+*f zyUz&m9)2Yf?`ioG?JEh+KF1*~fM~JT=zMl9>-?xmfBEE+BYR}X^!e%*MOY9%_kU#XxI^r9M zA0@t#_;z9&54ZWe6PvZ0iEkNNW3!<(TSN0bNqno}&|==vL-xy?_zvRxi0>r6hxjhy zyZuBM_9c^)_3)=lo+ZAY_+jD)h#wlVuQA6D8oF6KJoXW9e4E$2eI6rziTH8i7u9!9 z3@tr7u?>fJ*A9`XCc-xGg8Jcjr~;*W_x@@7=4s@Xr0^ZAtcGYRvy{hatK z;xCB5H2a=!K7+?!6MskijcF2p>vA`xF(x(QABgqwx7a%9H{zd&e;$0tDgK4{S9fdQ zKIAit4NLFD---Vq{?kW-o%MFQx$tj#J>q}tT%d>N)fxY-WZnzC$^Elz);@-I()FfP!l~#@t>85DruB-Lf*tvs z>-kPkuS{O-_4k;7B}rQt(d&qGi`dx6P<=9biTXWNFK6`jqt~amFTD}zudV)F zhu)6#)}^-(jo6_5i-j?(>SL_yEWj}6G z?X1VQmi=usJhr8`gP$Y4?daM1-#>C_Xzj1E+4|q2cJ>}I$I{zHxT|nC;qJmc=@><(r(^F3u1wCyF^^O}y?pr|gP86ObJei*F?JJe9|LJ+_(L2qBPEMzH zhRB)peCNlfynNQ{og?|V^sc6Np7{B~3xpRMid;nRVtSX+yChFb?^0!_?Q1XXq(?`28+H35-Vg|7`fWbX~qsp-8*ax=ZR=zUG^ZF=w1 zdxxIy`Ox#{e?0A=?jO+mNCp0|kbF$Z$uuNWk@%h8!4g!f5t3;KtKwujk{L**&&%VBXPY&W89h6zbuu%_oFuc5%tkV+ zPiF)9>?CvK+)r(LMk1MuWL}cFN#=1QCX}X(%;%ojma@qLB+HR3NU}J|LL`fjEbRH3 zrdwE)WHER0mW!=^&8HbbV&r zl6a5QNkWnaNz?m9QNCT7v`GBrFQ0n8U)?t}k`75m(j`eqVv?Sh#5|$tcwJHt<~t!t zpJZ*45sw{6)*)GUaEUbN`t?bytu`Rplw?Dajg^Id0ci%kV4Ju>yOvKjBiWKG>oVdke|^B)5{>Npc&BZ~KtkJ}BGZWWS5#UXr^>?#X+wsIvV3p!yGx z{7Ld4$qytCk$g|`Fv;U2K4mD!M@b%YKG1(cWwQc2NAe_zyM2@?St={`({!_)xTV%XiF@k4Qcx`IzLBflIMd()Kr!&q&6&->^=xjBIU_`2IhM z{{NDEMe;4l*CgL~kJ#$bA5yY{x&L?jY7OcC=-db`) zd2AtxNmEjv0!S0XLZ0QEv|mWpCf%BJ9n#H7*Co}4Pr4rI`s1Y9kaQE$jYxeK$P*fp zZc4gY9xTeXh2&cbw;HQVx((?rq}!5iuc+QBvELbPti;NOw0f zPLxjpq(O-~T5)M0lvs_y0u>7it!;nI%1n^cYEw z9(1%PJeKr0%artZ((6f2AU%`xL{cpn(vwI}Ce^Y()m4Bwjo-)j$N$pPNKenXc@k24 z{@*u{NzWp^ko0WQ^HunBNYB+7be>-!+N?L-V9qC1+myupfdMW88Cie?) zLm$t+d8GnhPI?{b6{J^_URemQay4(CYov2+9(0ri(i=!EFMkDq^navxk={gl2kFf! z@GYdbDdDZ|Z}TZ8z1?f!&2p#PvBNxYdN=67%3%lRh$NVe`f|t)!26(9UI>*HZca)Qa>X>64^SlluK%_nB`08PexSpY^P*R9=$j zRsI)T$MUi{G=0grDR{kJp}#okt7N)nNnewZ*Gc^qFw!^4>;!y^%)H{;q-O0M(l1Eg zCH;i-J<<IS50~SMEW=B&!oST%K4|ilK$oj%EgS3{-NytB>l^6 z+U2n9lm0_CAsJ-jlZ`j9X?rr+D6$E>L#^%zA7M_SQY}Z(PWdlgSCuoUa+>x zCMR2#Yzndk$fhKlg={La>B#&NfNUDFA>RkfwEj2a`GCo$C!3LM2A_PbRMx-QOg<&q zu*_!m-0i%}W+j`8Y&NnvWomY1H-}+9=UOqy<|dn;Y#y@te86P$8hUr<(?tGeLAD^- z5@ZXJElRd9*&<#BtAb_cC0vYbaj%XE)%avfk}YLXes*U|lP%*Vv`q66o-Ic2P}g=}RqACS3mGfTD_nbmG}vNgP3>H;6Mp7mOOBG^dCO5RhMZvJK! zFNW2^(^kn2C99EbN>(T9lQqaXWKFU*SxDA$Wvi^2bvuz0tBZ}stV@=V#bo|2n9DUM zlBHyF{`q+DMjIj9fNX8D^~lyCTi2T+FQ*rBeK%-9JEOA=$u=gl=YQ0~Ugk}_0E3p? zjBIzZ&B?YU+k$K>HHc3ED$mwr+xXBjeHkR%j%-)5?FSE9XFHH-^FPz~A2PoLAlt?D z^TK#=xBNUJ+kvOUT6A=`^=Z?~z}Y)zSLUov<8Ud};Y2ap}4D4zl}RQz>dizORe z1&|#^b|u;2WM`5cL3SLOjoYJ@>L~9!S3ZX9SRXugd(nE_^E#gFbg~o3PW0Nj$d%7}9f7Jgp7d{Jo^?HL?%LUMG8x>u^`z;WFK40c$5l5_9@wCxhB~dwT%0JGT#DHlCQ{q zBKw-`2eNO-z9aLOzdVUM!|w;&{o#)}C-Vzl<77V<5`P7lOm_jii+`s-G1(tv|B(Hu zsK11N8(P0O??ZnS{qe-dcX@8JKY=6@3jGmKKkOZW{v`CLpg&sjNrjWq_cyCRd@8hRG1O2%~W~A@;f5m4O>K8D5{Q{;x8~xd3XAa?< zhOR86KezPf5zb40K9Tu_3kVmazo^JU^cVKC#2JZN<_flCgDdE7#mFM`x2FFa{cY&KO@CYZPtxCx{=@XQr+)%{-vXk) zBmI3ucB1d=fBL()Stm9EcN5uNxCi~c==uVF1O@IBpoxAeB!u{wUO5fN23LZdT z>;Jwcg1*-OeP93k;X}gL|Ma!^?;k<`IQmD@m;dh{WeV0eF%divMUw>N*^ zqJOQS>G){3&Dj18^#4cyMjw#2xnXEq0sWhNO!{!TMNNGx{oB0j{p`No(t69=TB2{A zen0)Y=-=&~;^n`GzFz*aeUJWqu4%V>486f0p#NZ=Fa3u+cen5e{U_)@O8>EZ-9rCy z*B=Z;zZ~$>$NS-68G z|3-ew`yA&&Zx;3VJM=%J|1SNHB!7?o`}98)*HwV2Sp(WaxBsyx@wA@^KP^f=hW?L| zd`@5c|NSouO&d{P7u>G`=<60h|2z8MEBJ%Q4$5h$|4&B7r>{!@xBR#1(Eo=KoQ#a;NyZu<8O6v1KGaQOJ69tUF)}G56EiZJkx2%c z`H=9mlQA-R-cY`P8JWTq81em|T$7QhC7FhiX+?&F(=jp^Bh!n|Ae>P+lW=C?ER4*~ z$gIW{oNaJkkIbQ|OQS&k~A0z6}k@*?%&7VQLjVx4XF6_kC>LZJ? z{ymH=#@ZV&vN$8wXiG4%7b8nDvLho)$>7q$Wf+MWS(cHqg3Ae)XJiE<;wuVQVr1n) zvI--sGO{Kks}+S`T{>&Hf)(CQoRPH{8J4j0|G0V!DCmuwVfP6$GjkedY?zs0ZSStV zX4)__Gd5p14L6JpG|bpAQ^U;oHw;&jy>H&$bN1+HG#ZUYqtVD?*p{dUTvu^LG^?kx zzQGOXSn%&`WW|jQZX(c-P3dfAi01!vY*XlLskMz8cebXZv6{{{2DhbSmjFuHo=!(O z6?f>khIk`N*NQzleM9^aU0(qAY!GZ_)Xb&f9c8r1K7)_vyS#=e>q`#IM1>q0srr zT769ClmF%U%;=vR{6b(;OUHtL=WC;XWAIyp-_iMjPNUu^{&&7_uW&m*()mf)v?!U0 zY_FYPa3pU0iX(wq<3F9>l|hj|6guFHW5~D$$1^xS&LlV!NZ7=g&?plLG-P5$Btvi} zZ76y#&zT%&eyg3r;FLI1;mm@k}oLQ|n zivP~+Qq*e@XHKKfg)=YC+=kC1P;2F}RUOfMO(ugQimi^bAkIogm$58_vlPz4IE&*f z(zL=^6i2`RFzR=S5q(KPM#QCYmN6mA;;ewP+=!?B3t(ZxS#iX?@~HN&IIE2CRdF=< zH~uLI&Kfvt8nTu_jsH077#ziaXFVJZ{-Y6Xh~wf|{C76S*#c)1>raw8 zXG^1OWpHbp?Qyoj*|w=Q;&$zNaWwwpI9fGQ634^oHWZwmBHxP;pYGQ<0p40T1Kb&L zLYyn~V8n@VVw@vz5*+`QtcFwJ)EZ~x9NQTxQJrlEMZWki z&Q3VH;p~jFi&fo^qxX{Z@iuL{yM75!Zj(u#<7oWH*$d|ooV{`OQJG5L7w15n{csMz z*nLhPQ^Jzb4W*b%;vcQoYQbl*P^O%hDs1z z#-+nK3+HT{3vtfDxd2DJ>pWX%=PKLJQgwdI-?Y;4UW9Y0neJkoe;9I!jzt*Mo|oZV zuJT1&`KhU|#CZ?rDx3##uEx0?=Ng=waIVF%u9LQ-ztYuIJY&NICtROgQM{u=PrYHs~UEZi(~QMvH0)E6kG6@q@u|yoQH5; z#(5a$Ns)&02#%fqI~M#M3;xdII8SI__Gr3I;!`-!<2;RHAAiu1KC4Dh{ht$PI=rA4 zGOE&xIEplLhw}=~8#u4xypHpliq(Gqqo=0gJksP_ai=$N-ZuJM%@p9ggY&K)!3qD* zXX_v7I`8BBhVucAtdtLNH0I;j7T|oWt<)1f#rXo~Gn~&=xZLm+HPotK;(Vog3PtFu z|2H^4;CzcCLcUX?)GA%3_4~Hia{h?(3(ikCKWi^y6X8^uziP2<^*ipQIDg=dj|=X& zxZ^Zz3dKt9cx}J#1h^C7PS_Mxjyo~#B+AxkD>}H7;ZBV^IqsCkFh$#`R!yZ1Rp2zZ z)8kHyt0zBAFN!G73|f>O#GMH@#GM&;4cu99SHhhYcSW_EI~(roxWYUK?)xbs@`dGv0Y{5QQjpPJFs!(G657F3E1U-=ipT?Thy+@)|A!CeAZ*DUU0xQh$Y zK8-2-N?fwJ_B4EH)l;IMyDaVsxXa-#-^kQ8V*Ki~%{jBH@gLVN9^F-NSHoSkIic01 z;jZ5D%PMx)#9a?}Ep;bX&;PCAI=FWJFJhIxKCbk;0q&-_8{*nG-`tIqxe0*oCJmy? z+}+He9s%LnC4jpnuEu|z7u9MTTn~3!+z#$`xO(`b&E==H4z3>l=)mQtLb|vD>uL$h_|a``RQ09+`DmO++%PP+(U3v+&yqJ&CK20V1c`jktrs z9R(V3C)}NlvP(lTd^dx;Yo{&Sp123$>hqttdmGf}KXLa}9v#$vxceJo`M-PMn6}1t zut2Ll6!&P{!wk3JuR@N%J<`~Y8oQP89E*Di?s2%MSn+t=6L3#5Z#+@GQ8pC!WL#U? z`dH3OHv1y;9NbfJPaFB<>1O9M8r$NYiF=mzrK{uY5zpUoFUCC=_X1-+5BGfKvFX6Q z5ceX*#mUXjt*w3SNB!+m+*@%k!@UXja@^~1ufV+;_e$KWM93JQ$GrykS}E$Z+RWl! zk9&iS?w?ALWu;SpqxzDncQfuSRy*1P+BI?;?p?UII_aLh#VIM1L<5--Z!)~e^$B*lp&*_k`NC!%;^wv>Ix6GvUpQH=Ffhj{teIHgU<6nH_HqJWbm1>=MA63(xX@PxF7g zc@55oCrZxWZV;XYJ)$ufIQZ|9InRz#cqZq~lyB;wvBJ~%-|*n=fVUIgjxE2upW@lxs@;hlcEvjuZ#O)7 z$ya*c9naqX^5p$5Da!l5s+Dw&w-4T-c>CfVgts5w0eJhXN|JLbr@Z`SoYpVi!FY$X z6nQVeI}Gn=yuVpuTEkL+@m*LqZfI8$A#&9K`ZUJ~#H=KCav;yVmz`G9bdc5cG{)zWEp18+- zcsJtRiFXs8MSkyQYyPk1&IR7BR=iE6so2{M-Z83e#-;f`-aQ62|8HuoXz|~B0PjJ( zNAWcN<2`KfkujWjx+;yRmjLD)PgwCuyr&I$s+Fm3^9-KG|B(*Q<9&kn0^SFBFXFw9 z_mW9?*`UUMyjPW95#0jt{-Z?|^#8J@%?dF@M>zi6c?-ChA}yZ**Fzcu(Bp49$;XYt?D_}{i_C;BJ4v*G@P1VWJI}}a4exgo@(0~<=rX1)-ErwoNOwG~?T$}(g0`xW*_~)C&PnJ_Lw8c8 zDDz}=CpTmYgHw*^Q_-DT@y4IK)6$*A7^b5;y&*G`aJsA0U6<|}CTh)*sI`nowt#iohOKSaGq&~VZeYlUV`}McO!r#4o6tRsu5JNz zH>10g$=RIl7Igb`CI0JEI&`<9yEWY&-EHXVkq+H$>27Dp_69o!9fPhxPhhM67(_+M z`OlDUK)0kjFyW!WXw+9sSGEJ;Oh=TAu006U)%U+trq)(;o8UjTmGmpnbazxXGa%ia z>Fz>zPrAE~D7zWY?gn)WFm3lTxVOQ5lvBsJFWvnNvHZV#fZ>||(>=)G!3Ga8c&I@A zsWTi-_awSU&^?;2eygAEQ3ADA@nh&7Z^*F*kJBo-v)MhtB8GbU|^XdML?pbtC zp?d~hy=6@IRI5GB;OWXQKe?x-RdyFx_Tui@bpKBG9Hq<7B`2=kbLpNZJPoHlN7}uB z?qzf@r27xL7ty^~IH%k2vXQ7u=w7P0to`Q8>fOufUPbo`x>xFMt{dWdg3!I1u6-X~ z+6uGwejVNS=w46vNxJ`}dpq45Oxqjj-a_{#Ran_>ru(l3x7u3`-lme}r*^)B?)`M{ zq9_^38lYuNcu z_i-)CmeuftzC`zFx-ZauhVJuppQZbp*0zgL9mZz)MWwX<^D^Bx=)OYtKXhNE z``Z7HpYH3UR-)3|bY%+|Bj+8dqWkVx(lq$f{ebT0bUze2U48$T?#Bi{vD!~npt60Y zh-pGs;=i!TULa87f8*QV(EWq%waM`OK(zo7XN#i{~KL*0eTY}oQU4U^d?cCk%NwAL+MRMZ)_riZv}em(_4|=dh}MJXMw%9vhird zptlOWRoerW-fHw#Z!c=(xTd$JF{~v}k5GDR8(fFpx(!94{Jwdg-UjqGoNkjyFP)mR zuinP=Hlw!*Jq`Z)yxe4kAoMn;w02m^tPjCp}x1h zRoNEMlmGwHgomC-uSZWei-uyvzCoW}V93B=XfP5uvS&hXS9&SEl3qryQS8rG0F1w) zr(b@iSC3`Y9q4KPPj4rKn*Y<=MWFmf!gn*`?n>0=d(zw2D7FRk_NLdye+|yP{pcM^ zZ-06g@OuZ))A+9+b5O|#(>p|qW>UQ{>>Wn$D0+v}JJJ}AXbd>*FE3i{(e#d`cT8hU zy@r*m;BRcP_l`II6X=~t?_9%AGI%n*zZr6h!T+Nt6MZVZGpuM^K<{+H^>#_`Ohr_& zvlNj7sNOjv%HI`fC-FRb=hGAZ3+P=%??QT))4Pb?CG;*GiDGQ|MpaPwx(upiV1MLbQ6F-re+`qj!&qx>sve_Aj@2 zN_m;yDqv$R`PoDZ#nTEeX?@js>8U7Z%w+(rR-XHYdrS}oN_vn3K#P{{|Kx6EO zQf$u{dmq#L(rQ1U_bEN`H~R#HIFfXs)BS}q>l}SW?;GR%den9l|9jujQ)R4HV#xRO zelh$9gBJgLKhgWSX*g>BE4|{EIP}M*KLP#m=#Q_q603^;$ka=d z{)8Ivo5QaD#PlbjzX|90zEGHGrSCZ|6I{blG+Nq;V*Ohtcc`ZLm>hW>Q)r_~L4V2Ci~38^ zUs`pRyK=(QEQG!u0nuO1;PUiWpuaNx73r^}Ji=**JoH8RRkTUtc(S_tt67uP1sbvj z{Wa-tVE9_}*EVDw`uf5({dF7r&|hEqEtng_h6XpHzp>Iqf61Eqo6|OMid*`>Bac4*dh@ zAK1=_u&HkxO#dkQhtNNq{-N{_Q)!KEs>~7ek5o@+=2X4(X!^&~KZgFXI?Iycs_~Cg z4b{{q7(9`_Mt<$cJi&;z1@up$|9@6I)u09cz6O8#x*cc)>z}FJ39iJm4eAy^U*kW0 z+gbYO8GgRO3k+UJ{~|*){?l*txy0~G1&%bloai$8R}hG0uB89EFs@W*VDg?z8L=&`Zv(O$@p(n2JPi$gSsg+@~wEQ!P^YpPX7-2cQ*VZ9qy+8 zApLvj-)B7cj-*-q?`!;Tr&YUn$ao&6{|Nm@n^izxR>xzl%*Fwf^9lNTn^>FM4AOs^ z{xkH&GoPieH*@JfNB?<4UNHEgLAxK(f7$R?48AH*eU5q5lE>Pw9WCS2uF4)c?rf#|A$Us85RaKcoMZA)g!k zg1){2tWCs!)Un%F!03NV|7ZH&(f`4^mLdOF!?G&&y+Flvnfz$b-U8EA@C&|#^k4Cz z|C?3)PX7;OmPH}IrjI!% zPlZ1P{*+RbM{^s9KQ;a|V~WN(ok^P>ePJI3T1ODty z2*RI3XGAG;nF4bQ)GF0>UTZs_!TAj?pv*Rp_r@+f6Py%Vj7egXo2 z6Xg_&KrL=&aC7`E@HNikTm1Je{`(eK#2{*}Z4K%x0H$^a{}g-&zruI%b9_&BVf-$B zXbe64K7N4j>j34aIt*G|p2_he{M0yO{6y*Ul!zKc@BcPMe0%su#oAl&Dxt>T4}XZi zlL_1be@A_^Tiq-AA*0Nm<#_Pg9oeWq=`T!9%}F~gNG|o^*<8-MEs-hkF(;@_{ZQMtF1KqwN;~R z$K#(MYPWP9+DSH|lkqk9Yn4uijQs}uQ}HjuKMmg^xqmwT8TjYmpNVfV-`D)Vx!%#; z(6{7Yo1fcW1o`LVTd4Ohz}N4;;a{X7#okr1;y>^${`(gHo6{Koa{OydjVti4)Ci+8 zuQI5Y0By|iuf@Mkom1kEe?7kVyy61!Z^VBT|0eu8YCku)#+JYL!yNd!NOB z4BtNW=G!OWeES5Pub+U^9bYzg|7nBIXi@um4*w-Xo;Uac{);+U=A8I1(m`uT(3U4!Pm3a=yX;9{*c>nXK>HX)*?U{qqs& z8vh6UpYeahx5zI1njYde()<$QX zx&`PI1TzpUPB0_E+ypZb%x1MS6U;&|tMbSw#4OtH>;!WXSnxMZ)GUEsWf(FKf$+>r zU|~PdEx=kWK(L@rq6iUdsFDj2EK0C2!6F(kg>Dk8YB9yt0=6{-OA;(gu#{CTO|VQ; zt7B1pmLph^V0i-la*&d^$E6{D|ea5aLB305aqmtYM7J@z43vz_-~ zZGv^QtxdWvy+D-NkYIg+4O&$juaLAk*l5(_CInj%Y)Y^N!Da-Ti+U==R3gyeKf<>r z*p@&yg;9^&wY4Hv?b#u42nGcD2oQls&?o2;^ptI6D*~Tj^yQz1uFU!hFhOK6CP>{2z63)8d*L_OLDm<+j?L5)==;CcY8L`~kuBJ5MA@BSj}g8n z!CoVLZ-RXq+~n^!7JdL>MQ|X&cLWC!941u+2NN731|c|9%_2V~9!_v1!4cZl#z=6K z&HK>=$0$*K;8=ox5*$Y$ZI357jo<`=QwUC!snJjtoMiB1gMZW5B~Bs{Ca{-?gHyGr zaxDK3&LGfdI|qFRGK~!WQgVefo=*TPK*D+ zr38A^LvR_vSxWM1D&(D}jV(<*X2L#U&yiM>N!7BvM6TE0V zFDQ>J7Pa|H1orW_c1B($c*E$g5&VbXbv1}_HVDC+1orT!5OoUPF@f(Ie6JBp@cxMT zLxRt&>LY@WZC!t2@KYU>=%6e8a{|rt3BE9>mjDD`36$e*`4N0$@Z0wEJNSQuIl+G! zJVfw4gY5`@(9JIRk-t zbqlbn2^eVp-!>df%wS0dlQ5Xp*d}E#8G|VepPa!I>g2*~Z`3lFiow+S%-diZfm)^b zbPQ%^Fg=4Aq-YIiWH5^%GZ~y&pw8W3R)e!?EEW4JWex@lGnkXX{0!z|Fpm-E9@Wmv zV7>-#nlM;^fj#U!u)hG7nHnrKmb69Gc?OFzSlr|+Hfptmx|4LOwM#KrnZeQwmSdn> z0E1;!J@Yp!F3(^E%}E9;8eB=BGAQM*4Ax<=3Ioma8LVn>HG``QR3X~Mng;DJfCp=< z|0{7_2AeZjkHLnzItJ@A*g&h=+Km`&!eHa3XbhV&*sLvzSZ%TegKZgX$zW>+TWM9> zcAGJ{Dj@g%2HUIW3_1*sX5cW`gMrInCk7safTV-^ca3{GBYQG9l)+vM4q~u3gZ&xk^Pg6=ufhGaiCXo55prO|V6_J`IHWDMGjft0_?ZSZ{}*RwaE`&hGdNd$`3@RSE;~e2N_(W&+iSc)eJzRAwdW^FK-#C`sTzJ^{U+O}(t#w+wlm!5gZQI?|g0O&>e| zA87oy;=2qi{+s3uK49=2gAW;eYIFJ#1N#ur;1iY8Hu;RfR}4NkhA#|$*;EPCOTWR_ z2K5sV48GOtI~|(%%#RH0v287WZ^R#Typlc*B>w+m$j<`x`QB;vWAH13-=tr|f7fR< z#jqiS>k*DaI5*+Agp(0k{13+`oY)v9Ae@kJB0ZB7oedIBqI!mtwtC8;WjHyZ?Fiu% zgi{hu)l?BqO*oBqI__&4AGF8m2xldno^U3@83<=oP76&sgm7lUSwv@bBy&r`*$C$( zoSkqERX~{KC!1qv$$#^O@Ngc&6$s}gT$pe^!UYNEC$uXO$#$ANJZ!UK!i7|VxOcb+ z;ZlT)5-v`-m`@CYRt&9|i15$?W-Ux8@l;JO}HcBaKyQT znn;JX6XBzTI}=*)m+exCyBge$aCgGf2=^d7m~c-c?qzUq!u<`|$Dqak(Bi+G=Z6;m z6*-XbAYss}Ie{wq5W+(VPar&u@MxnPZtw^~G1pPbHfGI+$5_>|29F~=e(YK!o=A8S z;VFcp|9=nvraaP}_AWkV@!xtUJe}|#gl7<*Lumj19@_uEt5&)rj9Q7$oJ)8S;dz7? z5}t3OF3?)Bm`PTrRR_LU5nWA}5MEDsDdAOwml0lJ#LG2Gw47He(punZ)7(yn!fW-3 z{m|b3QZ;0;+(CE)p=JBwjmCMCHk6lNl=EMNw-DZD_^nFRm43T2n9&IDB)rdB-DU7@ z!g~nq1utX30WGx!haK;Z48eQK2CHN;S)r%Jf9@| zhVUuEHwd35e2MTG!so5YvxLt{*D9nP?+b+b=Z{*Hlp}oE6nlkGKift4D&cEwt@i$U z!)82h5`IMZ7NLfE!nX|5B~&6QGLdUSOJRO|+dM+YoKrYNeLkUWF^tG3e+V zY0)Fvo2W}v67`58Bld}Wq5)B$3bfYN!yo;rkR7o50Q?7=mw&j z47pLAP$@SP-9n^?KW!Ei>CIpL=_nU?4tqNj=OC3=+T zKB5PS?kCdBUz^*RD$zqk59`*Z(jHN|K=h-=7R7%u__G#Ot6z!5A%D~VtdD*t-jL`I;)RJJ zo`!fF;)#jJC7wW;hWo~YF-o`iTx;z@}oH~M5_aZWMf(Mtg0smH3C zmUv#`>4;|~o}PFn;u(l%lyq8e>o*%^JTvhu@}QBX+4A(ST+76>5zk3HJMkRyNWX?M zdDl#?N#nVQ=hhP>`4W^2DxOD1s)mZ^Bc6Yx!ve(SsPTehsiFD5aV|o4+nw0b{&r zA-1p|A3H`{VIV%i;E7}S6_J1w|Bd(z;!}uEC)VIkd@Av2O*Ctv#64NI@tMSDNw_nf zv#sqp#1h2BvF{{4m-r^)^N6n?KA-p>#1{}>II_}3#1~6LDUK+Y5MM@Y!Qbd6R<{6Q zAik3LpTt)YUrT&7@iqV3_B!J08#xWMwl^5OaV*Ns#Q!3`gZLKW+pPB1rk412K^lBS zxr_Kg)_R!2 zlJQ9Fv!97>0aDwrkxWD~iAqZ*9#JNhV#7mX8$mJ!$ z5=;JND-q&5H;~M45*E-8cZia5QJnmRWC@amNERhom}C*HlJrc@UbJ>GlEsy?Nhc&} zOqL{BhGZ#{r8OsM=#r`>%QgZ{{_-U2kgPzm8p(yvEI%CxI>l8s0Hw0+OvsT#{`_wkO$^WIMf*YPMS0XOj+zqiMD%V>uX!N75(h zlJr#b#*%UeC-If1$&``-Nlp@yBqR}u1%DZA6Ty;{#BTmt8Z0hBQjpXnBBavHM3k53 zQkvthWT?I9D0U>-pJXSJJxF#Y*^Oiu5A5G#J|ugQ?5z|Tkz@#R zi#*wvWIxqJG?(l`DF=`oPI4g0AtVQp94wiGij~{7au+N)l;kiiN)yR%)h0)f98Gd0 z$x%&4Dz!F>V@T}zPbo@HqBIF!2HIbZa@Vu6;-gp7&bR-v&JVr%<3Gt|1}~SWY!Nj3f(GKC_t)>6y=)2T_PCAIk9Sg#c#@joM#_%EC@k}ga-6Y1Qf zGn39iIt%HnB1cD;&PFhjc!p%sZmYPx=?q1xPjXZ!|Z~g|yhV zT7+~3(nU#^CS8nlNz%nhmuPAmXiY}ne@>SnT~;VkMYyfVC;3LY0q?;JqMg}(?P0FUE zo0D4nAB~q(uLx`|wj%A4ZcVzKwc3Vs+oqw_Zcplxc1WE@tC4P=Fpuya>43CP8khvX zp*IYqA!%&%Xhca!+suDN$w^NjElBqzElGDHtw?vURyFBR5dEp=>`1x`=}x3OYcJoe zF{Uq4-36pbx;yD!q7k?tkRC*OpztW0_H{7n zpUJ;b4kJB+^zcTkNjOsRR=1-`k0m{3tXjPgkRR#sqaIHry@d26(sM{pCbig}{*Ck$ z(_Hg^<3H8lX{4uHzh^Yf4L{4O&ThtHtz^g-lAcRy-~UW?3utOd^%J1Re-Y`$V>Qvu z)Y@K3dJXAiq*sz&Zj|=ppN3y0(2%Rgl6ftu27gjL{~5`-f%GoY8%b{?y~%2CCbi%% zaaBTDdJE~Te}=g9cG5eIeurMC+d+gC?%A1Ei0UK1liq z=|iLs>mIG!_e=V!Mfxb|zx8B5(vPn%(p@`!+!{VX`lQ}BlxIY3N7hrd^l8#(NM9m- zmh^dJdrmvjsuxIKR9q5HPxA-r)WvaoSRP%q*&qzNPL{qO; zlP^iXv8t~~?cskhueSP@^as-KNNwsRVNU-`YKQ-lL^YX1`XlL2np0`*∋}sBM2G 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�|XkA{w%7sSsHC){1Us7@; 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ξ=8EvN*{yBukJiMY3dWp}RU++UcR5Wl5Hop5=;iS0GvOe=S*=WKEJ)NLD9V zm1MQCQ;jC^BXiQc7KtzWN!A|9IK6I8ldMm&HOU4fn~`itvI)sXBpc_J6!vHe7}~Zu z$(AHrc+!wF-2YLb+mP%?vMq_?znif=$qqwp>JKD4<#|bVE^OG9q(rhC$$lielk6o` zdzcu>o`uZbB>NP!zO^+heSeZeNDd%5nB+i`gT^kakUx~<2$I7{6#U2Z-sDJ5Ng}@-)}=v`k;Eh^N#d%cr$}v*c>K@hN!kU!OL8SikL2GZ z3jWD}$lO43Gs%r4Hx14EAN{wI*dqTnk~>IlAFJGd z;y=mV#wWRFta9%od79*YlE+9MAbFVNK@vUI$(6eqkB~f?mst4caT0eX$rCxBI9{))`aWN-8^}4wH=Oo{gd_m%8en`F)4&y(` zH@f_mq!QZlv)?ZUO ze+trRNv97{K3(wRwTB%Nvawu`MXtb*w* zq_Ym!8&0EvzoX$Zyr*H4rxmMRUH|e~j^SFNd2c`UNqjbL91Elkl>aQ-` z!Ubj3LZl1l>qfWJP8X+(lCDR(80nIv{{JteOXSvyUP`#Ma2e;jz_LP*|D?;4t{_5F zfOA$NE#7%aS0P>1QYEk&>FNdT@t<@};abAAN!Jmf;BQ&XJeOIYbOTaF-E>3JjY#(t z-yZ>xZbG`LT5~hu=E5yVcOc!8bQ@i6MY^^5%AMxE-IjEF((NqCy`)kkwj=3oq&tx+ z^4onux(n&9xhEaH&+JaRhi6ocoUos__1>hflI}ygAL+iv@t@1@Pa2aRKzan}fs#B( zc(Cvg;i1CAgohjYlM&Z>B&q$emo?2%QdJ@?i>P>^t~?;EI&H@IrM~}@>iZ9FeBG)> z>RXp`RHDw4l0HJ3kzPaEBt4C^MS3i0n{*^;hqOo9^-VDQ?wRYf4mR-K^4Ys1CS1UK z*E_3|9_@e3lpfSt6IEVCn(sN1AbE|B`+0UzX0jZt0T*LQXbazI2 zG3gbgmgRENOG*71vENAA&obIDbW5%zy;`-n%9Q)R!wg&MTGG2nuOq#g^m>(hgT!tm zy(zDSSKl?FgVbOC9jn%Nlio{uj~67LDEob+_me(E`T*&JF0AVK z)@b^$+i4u{rH_)nNctG*3#5;e8s~|jW|w@D^cm8pNS}756`F6OrO%RT+dqBIYi&t3 zKU%k!0i-X_TiiujiF zI~U7^-5WoU{!IEK=})9)gUBb>>-@=Dco zxeVD1WQ&u{NH!nYOk{JC%}h2M*(_vQ{1??Eo1M&G{`HLV4B1>{^B9M0?xOU0^CUyE ze~~RhHb2=yWDAgK=cjNf*}`KdHLUQ@S z7@q>9XC<;V$W|s>jcgUNRddN<xWSch!5@-H~+lLcfOknKgb zA=x%$8rl}&^+AoK-+m>u+vhB!xf8&$wOSYd2mqV`}Pj({N31e}J z`0u5UB0HPxWHPP%vs1`U_2PzlPA5B4Ciyc0(?E7su2!^ll?%wuB|9%qmE`%}qr4Uu zlKIM??4n_op@vJj`8~4BIP)yB%W3|X>} z>;};{3VjM7yIFXP@K)h%!rKkUlumXh*;Qj$R9Qn+cy-xPlh_#j>dxPvvBWy0v z<=d8p>>baZ|9z*MI-2Y~%SiS4Lf|Nl#K9?8rroR8-GBL3x5fBrAAHm$po1!*osb19k&)6`PGxd_cgy$?4R z^B!xF#~x8Nm!P?%pY{5Ov$XdsPg=(NfX)8R3~Gjfzw&HhqZ6+Fe2C~*0oEH_W1dAbL#PQ@13H0}R? z*YhIWIcNJywRw)ORGm0i=yw4$&lg@GywK3SVUF^4vHoLS{Zg8j<<`=?oTmQgw|NE4 zD+|wGMe}M|evQh#)(iEvyN>4dUUBb-H+Wmy*zv})E_XA{7iiu>^M1MUR*lEogtybY z!-s~C&^v{93GWu(Bh1I|eXi3aU7<|@7XP25`H%!2rum59%M4rmQJRm@{6F>T$7w#{ z!`VJ6V%^(ZK_!P`L*yH;kSlz^7lrF^8?KvMd*%cnEDev^U}}sY^47}*8*iq_P2DLvEB^2lFYj>w-6DrtIJGZcJ}|E8AK z%(Ui|s#$2wN^5pnv$@Pr+Z;pMPDr-qlGxlr?fBiBs39#lM~VweNtn z)}gf#t#xUwuOy2Y{&8Ab8_?R&U(?P@w8!hMjcIL0YZF?VI@7e--L4JZ*5j+vkT6+H5I!f~X2$)t`SP}Z4f6=NM`ftp!rIvM}dTxO8-T$#96Iy=w z$C*|y&)cMRJgpWjf9y+3cLC1tx{MP&T73}%p}zt^>uBLI!efQU8QO2enkUjaftIzG z5hpp*{9r$~VHB;C{ft~5S6ioes<+o^wDaD6I;}Hk-9hV2T3XMy&Qj}~E!0xKb*||1 zXq`{%Lec&eAQ2ZC`p?2h>k?YN)lchET9=8qd_=mFuQ8l?C9T_NT}A8af}{0+%g_JN zx{lUOw5~T=mp2G+G*sT3b$N@>*Z(tR}opRM~$ zSn~JNdZ3^m6z3sBI~y$e5n7Lmc+615th<=sUYqZ`J{kqWig8WdW{apXswDj1t^$x9fX?;s;G_8-7^d7DE zUD(Awp!H!vf8>O>#V1PoRQQ?jb5C;lFKB%!!pAkOuM7S+MyM{|6`b#B{XpwiT0a&X zlmD;Lw0;u)Ed0f=aNuu7i}^dPKMML!Cv2AY-u^djkN>oxJtOULX-}@p@o4)LKzjn= zgu;moMR=^E?Xv*wNrjW;C5oPcw(p*ao{IL=w5Ovzjn}0;t#CvxY^clWg)`(#+L}t* zGb{TnLf-Ta#V;U$l>;JwNSjX)i!~S=tLK zbs<9$3)5bN_ENML9Ug9MFGhRug7!xMv_1YC$9}Z!7Qk?sLSQ-C8`EB%_Byn+_;0UB zdsW&isZ##`@3dFRt7fRn)r6}H*AT8LTuZpNp$c7Bs1;6oeeXr>4TKvCH!?JV9BFSt zdsE48=A*K``EVGvx1hbHI9nB*t!ZzQ)8cDVXm78)JJ8;n_KvRBYrPZgoeO#w+Pl); zUHsjgnXg9Ld(hr9zoflaVaz@f+n4r1wD(h`_Ae@RfRYY0G>(!E79JuzRCt*1aN!Y# z%5oI#YiXM^FQ8qf-KJd;KM+=F$Fyty?u=U=(vAwcPFwHPn9ce7=Iz8^glVV3jCRwq zh;F%nXYbHHnRZunkM?mQ`m_grinTpbc(kGT$Iw1DryX73c;N}c6NM)U|4n<8WieVA zPZ6F<`z+e0sj{aF&nT*VrU@7==Gnq?gy#y+qkVoZAU&E0+8+ODYvO2MLi-9`UP}8i zWx3oi&!WpKY5V?<=&Oa-qx~%H>uEnq`v%(g(ANG>`zG4A(^mX%EB?1{E&7!& zjf_^OxicOwP|y$3wogD<(>yGEBLS?dNH~N?XCd?SBDJ`z7Ja!dDDUUi53y|2pk=X}>XI+&5{z zDSXRNNpB0^F*J^nMho8)zAyYh_@VG4LuL7d_J3(B{y(x z-{gElU4AG0p7sx3v{&s%q0>_3@n6Kxw0|jF{i`^?34f>kN5TKoIBJx?>1;}896IaK z!I&=D8JEs@BF3jPC!GoCOhw1zznDG+(3zNyf`3QBzcX2pIyoJ!|2xC@?`xsX)O2Q` zGmSD%YeAciE&dIs6HY%2driL=B2X`o%!rf80q}WP@3l#E+F(N!2hDr1s0~Wh?tA!Ogf8+zj&TeNlVgMO2pE1 zR;06x&7O3Y6)xv9saw80ofUH0(FIl#u1seY6A-jfMQ2+&TN|y*ZJe~rqqCEkJJZ>RΜ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

    ui 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

    V`db;&jI<`rNeg+7v{#b4)#g5y)vF;LlD4Fs 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

    %c0vK*4GL8|qC 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㘴QcL3^Di_vp}CPFq3QqsvN%!QEVC8OO=)gHb2Ig_ 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 z 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

  1. Ye>HyCv4s0Szeeo5b%BzeQ|s{%Ve-dY1=#m*(We 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�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

    g?tXGTB7r7j7HYM5AWK&72@;sSMQ}djTY(cW= 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

    2-L-8Eb?cqF< zVOZ<`$_>X6rd#;}@Q5 zNFK*0a0bpa-I`A+_l$D0$e+g9I0xsN?y5dZG7q1_=W)L2&f*2-K2h#P<=$5ACFNdI z?qzCT!G-uLE;8Mfe4XSCd=nSrTc$huJIXCnZVCBPd>7xt_f2<3ACN4^5Ah@X*mO0Y zD)+r|pDDLOxzCyX0>8ws@N3hZ*Eb~J;!0eFwf^s(`PIs;Q*I6U5BMYgglkRjdvxw+ zl3(ywT#p+}?|Xf2lk(OHe^Y*U<$hPbk#c`1_m6U$soa8p;$Qf;={o9Gl5O}eZpZ&j z?;V%lLHQ=i?^w(8jd3U38Fw+gE1%z$MA#IY;cli|t-10CD8GmD`zXIBvwPv**aBOc zuD%t?zPKOmkF8BtbD;8vDBp(sAUqh`n%;fPA4<{=+hYej%yjDCQRM@WkFcs{2p0E6T<%cUj zS@{vl`;{N5{3X2P0_8_B7>yU=MR>94j(e%{6O;Z>%) zcULQakMh?jKVA82m7l8ob<|vsH{gvp#dLePiR5Oy1#iV^Wq^?$e80_E2!|AO+%lz&nA*C=~Q`Ii~If(!9gTx7b}zOMW`%D+MWCN9Re z@NLsoE+JWp@8Wy-zUgW{P=1B-%a#93`45@>2tUS8@Ke+KolpLAk}vQ}{0hG|-J0Jh zzgqck$yeek{0_f2UF8~*AMi)~3D=sgxBRTaF3SI+{NKv|s=T%L_0(*@jkpPaGu;#Q z2gzpKg7p9VUp98n^FJyyQhqD5+wfo9j{lk7J_|e4lERMI7M@AVS2w6DeR-d0V=d2r~eoBW4u4MHr>$=Bx!>O;lbF} z^sY(aP!*=C&`yO5RA{e4FBLkd&_#vAROqO};nW|2N8(Zc^V*|Hj=^KG6LvPe>sjck z!ig$$BR>wi2`Y(Ne?_3d*Ugk*GUS!RX9_HJ}R89LSJV4;i-5U_BY+x4InuK z2jUf_L)?nszRL# zc@71JHJUWIE_m_&XRPR6V88q*#9I+E-02D}lcm~OS3 zRCrs3n^ky9gW_AwF#b@wY)7|msNS?>}xBy=;-I_0{ z@R|xQlfQxs@l{-8x*fhw@&>+%i}5YfUC(z^_+Eu2DtxNKQWZW>;azIp!}oDnt-j&s zslsxS5Ah@X7(X%HaX(XGg$kdOe}P}(SNOH*D!(E57FXgb{LXYcT&=<;71pR=?fnO4 zf5e|~Ev_@&_4$S5S6q)9aHHw{4cNkOD*UCw@8o~rX54~*nr?@Gll+5QaU1??x|;t~ zd{@OrDvnce2Nh3LaYq%~sMuJ=JyqOE#ilCmTzge<7i@yNqD=4S%3?E;-Eenoj(eEi z)hOGPFJf2{>^F2w$vsLV&Vqd0C zRMqQ8?OcSd%X=Qt@I2m*Ay12FIFihvQY8rs8EPW>lP@Vt|6n zRlI`1l{gW7=r_IoTnwrhS209R|1U-uM=@5bYpA6s5nK%Yss&}>+uG>(R4?jN^%q4jJM#erdw^gigQ%F zO+|aJ-LB%jD&9fOop=}CjrW*t<@-qP#|M!9Uwp{M?w&rP;!G7EW%eUt)?uc_$T&UtRDlSm*S!UYH(mV;BroDi_%gm?x|&y2T&&_E^4IWn zr2iLd{om_X#ka`c#&>WDE;Zd*yr+_Nu=iE8=C(}5)hd3V;tCa)tN59UA5#AjevF^s zr>47NpObunU*cEzwb}5=jW54Z@mmHfaTR`t-( ztMMzzdfb2;ag*uR{9VPrRs4f|Gj72@@h{U={zI}Ax8c9I-Slcoja1rIr5$RCwffSI zDm7-X6Vm@nyD)BIx>rf1JymK--VArc-LX0DVS49P+DoNY-9wm5x#A5S0#B=};=$VSDU=hne1Q7fVNw9EnF^M?Bhe zdpK65<5cQI-Wj`KSL|kbKP{HJlN^sH;E8yW>2`avN@u9lQ>A_?ox*G{?2Ub}uj&11 za_Ll()386Djsr}0{RgTvM5RIGgYir}3(q#)(T9?pgXiLTIL!3kHKpMy`BWOA(#1@T zROtc+qi{4{h!>geDqW(|Whz}tJ_g6)I2>=f^(T;Aj#uE7IMH@hk_0A^{$EPj*!u~qlu@aqQkK~q=COda{@>#C>5R)*!7A3{B-5SmWL@7^ zrK@$-dX=tG^(mFERb_9Lu2cD3m9AH5vr0Fp^omM1s`P|PQ&hTJrKu`SSLr5JyBTl6 zTXCA{eb+19Mshpefp_9vraS9cOe=B;aG?(NVd=}^7b7sSud^umG1q@!m7x5*0 z*>u-)p-Nw>^r}klskBI?w^VwKn%D6Sd=nR&ZqIL%(Em$I7%#cDs3d+gumhM_=oA9^DQb{1N>9v-BkKZ<(*af zTc!V0`iIJ`xDEfs?WT8j54Uge`y?m*39csL$`wf^tji*iSjqwyF#7CV_Oy3aKEvWv=H8Fa(rusa@ax-&Xa z<^C$4q;hYSdoX)4_QX@Lm+9TRavzeu*bh&|(@d{3luuXrOqBX0zc=@#U>5Ph&70>HlT=fBBC8t5o?el^<96 zZj~QY`5r3oMf!jFe#Q^{PyItA4G--jj333v%!c#g%O_Nx!JzhptNbKBg|kfeM9o%t zmCAEeepltWDlb&|8I>2PO#d&>qy9O39_RnhYw7=G`hWQ)W?#lv{-@?ul^3hLh@Adk zex30f_-3uLPs5dbi{x#52bbVd)78AE^2dbltGtZC2e=$R#E(q(1b(9OS1Nx>{uzFb zwf?X2m!^C6z9w0L-yr?Jys}o)@Y87dJC&^of3Na73RbJUh5`M*{3GL^aINW9{#oTs zD*rD{}^(Im&*x;+mi zsr7$V&c*X^7@lvs)kdf?UX_umT&&6k%#Om*cp+Y7dQV#A5|T@C435QdraSs&s`yly zKz=!1fmh;0)2-$w31ARI7&hH%QB@vNC8o-as>D?(tCCP9t4fl}I!s|2Gp4)0Ig&gU zu!tqotzS{)YE`P_^*9Ny!pWxh_r5CEkX(z`;q`cf>3tTeOi^XJDpSen|CL(*SLGJG z6{neQhqtM6k1Ds5-+_1HU3j0esMOJG28WROJy>=Bo0jDo?8N7&VXM z6F38Bnr;tIk<7xUaW>8|-E;DcDhpJ3mV6#QhxGr-d>gy#`2zWi_!7R1ub6JNS52!c10IHl;}ND??I=}GP_?6~ zT~s}q*<zKn8v^H7SE_oEs^e6>nAuD4QXGS0O?Mr}lU#-q@N&GubZ0kF)v&5Qaz6$z zh#}MMFhUZ=7{)PSy7R45^=4I5s!mcht!h!#3^iHIVIB*n+e3+@j1{b6z3EoIO4aLC zolJf;UW3=-b*9_r4J0?>6r74TnQpaPRJ~u-TUEVN)oIL5$J_9Byu);B-bHdZ-h=nz zeWp8$2ULAb)d$HR!iVt@eAIMDf1KnAoPjg(Nz<)1OOx#3d0O>3RcEVye^uwG`kktC zReev@XHs?JvlFuyo4{~E4a|~J_A=5srr_xuaUowZ{VA_ z*mQe)o8%o_f=lsT)78AM>L-NDRQ-U#a{LfK!jDaN^iNf__Wl|9=lBJFiC>v+rA)uFC@R>dfb2;P1mJ=Q}r)Z ze<%L~H{%xk({$JTZ<2p-D{jMoO}EegRKJ_*8>xO5)$dT7t=|zF<4(A<>8)Acgk)C~ zHpOP9cNX=#tGd*WWWx9L`ENwN>N!hLZ+)7xQvYt^5l`U6ydyy_2B{gJ9~ zqxyELKZweMu`M2ghnn8sdaZ9y(g6>{!|@2yt$&p2JFC7U`O$a`9*dn!x7#ixU9lS; zhuuwg?kA}JG}WJ|`d+F(iP;`_GWNt%Os_-M_a^CseX$>&YP#e0SN&kspH4mi&%l8= z$aF_PljJNs8;9Uf)B8kPf3E5;SN(aaAH~!#)t}E`IF7)Pc!BAz(rDF>QT>JF7vaTt z30`Wt^~aKo!|`|-PB7hSSExRr`YTl*QvF0`edxyk22FPb!Xy!-|JT$1>*N1d!&FlB zbqrFN#tddnw_0BHzo@>T`gy7^s{T&ZmsEd)>dUI1tojP|RjkKJc$Mj{^VKBR;I()i zUT?aZ8&!X+>Zg!T#hdVEyv20;nMN`lZ^PU14%4l6m+Bu^{oSg6Q1$mPdoSLH_u~Vm zd-5M5c^DtTNAWS!t@(uNt-a46pNUW6Q#i|XJDg222j}85_^jzxdrtMsRsX!|-%$O0 z)xV!w@zP1P?|{bKUB@NIktmzdtqJN569 zyoc}OGW@`F=klTIzg7K5s{ca&kE#2Pzk2-tI9{YY3+WNx~gDR zJj&=)x~h>JgVnJH9&2>Yj;p3zjpeE(S6#V|WA=DF0c&F&qw_xNsz*{E8(>4M^nd57 za5a&urCd$Pn_+WofhQWB&qc12NLt~^*cwkUI>*y>nq1xFY9m)irrOHYjzN1o9nZiH z#v{+-VJErHWN;RC#xB^^XxHy9S3kLW$kj)#p3L^b-gq{iW3+pBE=gZJ56{O7jL!d% z;<`|-i{$E0J^%;eARKJ8t6fYo1c%}<9B#B*c&XgY<+@C+g>qdk*L1nAkZY`5SITv> zTvy3;om}*P*EKwM1dhaOjrLsA|6Mnb--x5|rb-PztK#7;a*bwiE8d2;;~1mesypPG zB-c2(?vZOevlH-6ybJF(+C9COWFp>&_u~UbyXJ#(O_A#%@`rIUK7x-LZRJ#w$MA8S zhEEuspC!3w$W@lhC0AT7w_HKFJk)rR{_pZL4jAoG3Xy~{f>Deaov-^`3Au7|CCO7r z|952=XN~qA%##$bh^5Nxk)PwZX38~(@JYF5F?b4}#%FN0(eCwJx#r9DEctUd51+>u zjLvt_T?OW^ zV-swO&5U-n7IFvVK2h!~3$K#< z9=WfUd$iow$bEy{Bd8gP*Wz_}z0p4FMv_r@6W)xs810d~Rqk7WXV5R=Z&wbnvlT5}VN8?e(Q;g1g ziu*CSU2;E8J`JD1={Un^E8Qd>^r8>_M!SVUxj&FQB=@s&hvhEF9g#aFca+K)#xa3O zqdit>k_=`shk0YY9m^RP<$g-;65}$?#3yl<(eC@xB+uY%oP%?X_7$I#`&GH;$^DYt z&olc1&c_A#qS5w;mr0IX`3o5@!o@~=1YVQ-ExDJFzm7}s4SdsRxA1L}cko?&58pT1 z)jpK_8@ZRs{TWjq$^9{dPw>bwS;6>IqkY!ra<7qlCHWV)3RmNoM!OAbN!H<4_%*IK z+L{e=?~r?=+~3K)iP_EgEpEZBMq9s)=e^ba6Uk28g+Jpj_^Z*b_PhMO zMt%%d#~OI7(YY!-HA!mWadgiNTpj|Mzre+{Jk0O5Lva`mH`?P#|My%*emP!&S5|6{ z{Itk(wLBqtu90V=JR{_}O`ehRjFRVCDzC%q@dmunXwUCWBsb$NI2vy?+O54^o(b}d zAs>r(;5Zy_v|D>8$z53K|MJ{}_Zsah-Y3uF^4u@aWO*K7b`m~_58=Z`=iSQl2+5;3 z1*hU;M!V)Tc|7twK|UR4pbOnbyMy(iBm zdES@j3wb_}XSqBdQojs8!jJJ2qdjXYNIu2S@N-;gv^A^b`AVMEj+k4~}@?Y^c z{2g~2ZNJ?k@A2~dDQ^{dO#eS9&pvAY!oP7p9x&Q%K1A{l{)_+NVWYF1-m3D}koTxc z?mZf-;W1d<=yXf(u_VHpSPPFcI@gK!1bLgwTU*|S^44LtF4n{P*udyqhu%gcjj;(f z#b!q5?08$q+gjce$y?${*a}ZJI^Tu%ozUPp30-hemaD5G;_dT*BZQF(8X_ilMd%X^2sw^DN(-i~8%tkG`gIFj)=0q?}S zjP^|3Bkv@6?8cfYEN}gCq~(!#EiqG1?$`?S0nc}wzU zc~%bdSiqvuu2UwNiBIAze9CCgh`EvH$vc~T4$j4A@j0VCZqJjvfb($yzG$>HFU$M3 zysyZ+MBatWF2cq5D!yiPK6iOvCs~Sb;G6iC(e8!m|I6fkm;A_`^*-Yd@WVJfBKaAA!C&z=qg~T{{{Ktf zKgjpspSTzI8J%|!@82Z*@cc3|0`cNdH<8Isl12fJ5IhT@>Q3wYNgV56dsM$ z@ED_WC;DoT9E-x5Sj*^at?zjG>dSWmd2OtNb+Mk&xnFz@NE%`zY>Z8e&ToqPn#tEz zzUK0sEME&|PsEmZ61Flr*NLw+$tid$o`!9V&Uy5;ldqF}?a5EaGq3}8G&=7}zB5VA z!p_(QyBh6k-Q~Mjz8>mibdaWX!Fj~eZ@H&woXe2>ZJlJ9Y5r{NPg9cLKr zb?7GXpcj4UH`+CW@|pG?A`fE(qZl*VtMtebPLiiEjhRZ#k)MtFa`G*bFE8I*`3myQ zlCMZj3F-en`oHhV%Co*Za>qTz?9=!R&c-=Ldqq7f-varbBcF%QBmLhu|9>i9B!3BC z##eBm(XO^wzBdV9mG3nMOYn7Eif1NY#c zM!SXkhx}js4-Z%LS1~%P`HzzSMEQ@FzmELXR#$B-+cE=vr)974X{@x1QC;!><|0e%A@(1MaBmWrr&z1jj`TNR0fTx@%|M?6q zzIK=2&GyY*D!|@Wl6fZN{vwVg8*AiYS|5XgG#%pi{ zjx^d=zfS&}<-eYs{_nq$@hH5>=zQnUe+$WIycKW5+l_X$vGPwMyhHwR^4}x>cplRK z{dY3H3-31CZN8UeBHoAh;{!(L=jQ$g<)2FUko*rbn2hv)|D%kj810&m$?uZ?aq?;S z1Wv~pMqBA7@t_xd=r`Ik9+dwr`9tzQC4X4{6a^9aqYPpg#{?#g_PJ^Ki}Gj4vzWs? z7L3kkJb#I#j5F~`oMp5}_-XlHlHc6g^W>k+>>Qkn&*F1N=j&zv^Ca|t|9r*^@I|A& zJ6@LmHThp5Ux$nu(z&DM~JD~q<`M;6>9r-_#|6Tb%lK(ww-p3E{ zLtJKbzNYYhO!5gX#})Xg(eC@_@~@G9CHWV)3RmNoM!TJBN!H<4_%*IK+P&T&|96BN z<=@0$Gk%Me{xAPlqg`{G{6ES6J^6P00e{3DMq9a)WEcL7^nd@aX6$_5#{atl-Q?e` zKtuWeP@uZ}d*nYr@t^YVWv~zb!oP99(H@P13RIE*5cxm&FaC#>{_kv0plT%v9EC?? zH9W@XT%~~;3Y?(8vE;&|;9#6+Ju!GUL(gK}G&cw5@Gj_qQ zM!Rx%1+G+}hXMl>=&3+o1$t4_8_&jbun(SVbk0uTJd*SA0_=wuVt=E3m4ONjQ(zGJ zV7v$~#vwS=XzPcQT!NS4Wq3JWVYJ(Dl>)aaaJ2$AC_w)YjG$&DUW?b^^~QSN4`X~I zj>4PpX1oPQ8=Za?xJ`ix3RL>P0%LG2-htzAywP4Wcaq$NcjG;HFHSVteY{_RZxwhz zfkg^TQXr+kg9^A6cu0ZA6nL2W$@mC9ic@f^(XR72$uxWdr{fHC8EvIUfv^Hzav%CJ zfI$oyZGD6!iZP610+U8tnO0!70vQF$3S^nhVIB)u#FEkJ4}qB^PvR_m3ZKSjjCTDw z3d~nvF8QxNZexkr~1}pGW{0u+Gl}6jORw?kc0;|ct z#5G9&577SumHuz{Xg#yv;0D}?n{czy9;Gb`)=^-q0{a#CPJx{iY*XNS2HTPTAE5sS zc98sJv@7gVz%=%s$$!CL@i+V(cN=Z}9+E$i{vV+K2k8HSO8>WeaX`VU3LK>J5dMSz zBK<#bxH1k_F*vB6tkLNn!I~ts@HjjkPr%wn=PT1-T?N}K zSWm%b3f5<~(*G4~h>fr@Ho>Mw``qRVwpOqO`H9#PPr_Dsve9nUDI}-jY1jtaVmqUA zl!B)#*jvFf6zrm42WC5BCp;6+!p=tLECjofbi?l01AAgGqh0@Ol5?;Ro{N3)JUriM z>-#D4je-{{e5``~73!nl00lo(aG-)N1qUg3yMluiyhg!`6ueZyi&O8aFT*! z6}(%)JD44Z<8cDsiFX;DyFPdi$-Ouc@5B4?0i!)H4=OlS!H38n#>w~yK8jO}c6%Np zc^s!9{XaOJ@eHH$E*5kvI9oyU_kYp~dKHW)=%dDu0SsaY!$!OPQIZ(OF@Z@;8SVCD z6f7&4CC_0V3s}UG(bmr-c@k$K{Xh6L<7bSva*l$F6`ZT!0tM;+!RM%%htJ~+IN#`W z&ftqAFX7Ah3NFM&M!Wv23cjV_YvfDtbzF*X;G0HU|2D}x_%6PO^#9-oW^5~$DO63t zj}-ht!H*UEO2JPQ{6fLy)UUu#@iY7!R~l_MSVgiLzr;1T7S|bV<<|;+tKfR_Z*T){ z#7(%_SpUZQjJM!c{0_I__qg5Yyi*5%RB)eyI~4p)!Ak#Ea3}7bN$R}59bs(2J0ZFH{Q&@l>~s8Dr< zPGG8rLY4lnkgz7!!sGCGqw^}E+6pyNs1A8utcM)EPy@ydjn26a(f>nD$eUs_Y>q9A z&Y23eRH&muCn?lMp;pYEjIHq$JQXYb-#MNk`hTd>{}pPFr{fve!RVZ?P$z}DD@6Yf zoyBZt?1Ejfo6&AL{Xazi5A|ZUH=d2>80|4RSD~CjeH9w3(0K}7s?hlg4W{e@h59kL z5c}f*9EgLAcAbkzF2*4^6o=t(tn`0-9xqeqCWS6nXrw|{Fnc9lg_ZuV&^0*1Xph*n zB-i2fNdFI2`oBV>j7QE04{uiJ76zm7R;=`Yg>J_&M(2ADp*s|srqDQr9#&|)LK795 zK+T@Ar}1j}PD^d=MWp+Ve7*=td8E(Py-;5+Dg;2*Vh`sPV}66L=U`D8V3!DNJJqvqpRT^9n6jsG!h7g^CJ2 zLqSQQGJ~1;B+kO8@M)vd8A7uadO@K%IXoEtZDYQnR˿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 q=sdXmsB%sm>&4<2l#`&&94r_sFNtBk7Lk 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

    8HazbQBn`Tn=yVCo?X&QfqF^)MW+ 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�$RewH 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

    W#cml%DA^bAJgApEy@bd@{M|cSPhmykz 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%0A6h5S%ESMw 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%0A%bJJcM{4 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%0ANf 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%0DSzqWqNdWy&`wUy&-WQoc?pOTbW9ly6eL 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%0D^A`z9;x@ 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 z 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%0DX*$o+d8SU0 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 z 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

    vL0KE(-Hec$(RHB>lf2{vRyubJU+F7pNV9 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 EA?F|AV|-$qAwLuQ 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%0AYGRjV?lTDWZ$1U!r<4OFz1d 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


    M9bSJ6Ls9 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.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
    o?joJ-H$hTL@I?nQ0}aEb4w;~0VqY{ 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
    F>UczYtX6W*>!{VTdh|BtsWZ#OEtlk|VD0po_k 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

    jnjV)A-|pS2Pwb3@_Q@4gYvs7-;X); ze|{&%JL4|4R`{v8{B9(>BmJMJ|MPpAvM=O6BOE1SO@JhVO3||Y%)Bkz;KYtBNuf^+3zlS%FjKy(yBi@8JoBq;oRsK=s z$16Wc`P-DgNBP^Ca|hmucj4WpU+Z3y`;h+6PhdRJ*}l~tAbAiULhFC!C*vbdd-2wi z$CQ6g`6$B2O#T(+ zKT-Zw<#WoL3^aSH>de-@p8kK}#)06#?fKmV~C zx0~Tp<$qWHGv$9&{&VHOQT_{Neu;CD{?C7HW4{mIl7ENa<2?Mq^mBe9`5Aw~UvWOt z|NgvPph7q0|4@FB@_({)A^wGb<3Fa~^1meXe_=5j7Z%4QoW8vaOOh;wOXD)QEG}n; zTPv)f;-M<6s6teQl~g!ag_Tv^gZ_Q2I~4byLJEs~zN zHm-x~ntsmuB=mn_1I8QTM!2!l{{&aqM1}2D*i?nBRM?EAeQWQegne z$#@E$il;gK&-jHiNCx7Wcov?G=a~M|&r{)U6$Ys=T7~mfxI~2uR2Zhhh0Gj`LvScw zDb>HoqVjPJy|ob4laj|$JKaIXrFsc@eP52|oKb0*+KoP-aU zVNVtwB6%1mqxHWEkD7izr;t33Q}GFW5}(3pI9-KjRCwCGtnGd;%wF7fgTjn(tip3D zyrIJLD!i=1OyLAQ3g4^nrwa2_ z_*I1;nDZn4gg@girr(G8B){SBxB&lf`gf)Z3rYUMzwsYjg#SAIrzVPvskn@ai(6h? z0=waoxD+mJhL>JkmSj0x9#_B>aV68wTt&scDz2(xFBMl)aV-_aobK2ISI0GQO{ag) zrPz~XZCnS}#r1G~GdzaH4OHAr#SO_f!i}*vZi1USePa~+kZg`y;Fh=*Zte8Pu(*wi zyQ#RXiaV>g9ZR>z9k3tnh&wsk+uwy`*N$X&757td5Ar>6FWejV!F`?X8|xVFj|bp^ zco16ut9XdBeOZU8*rnp(Dvnq22o;B@c%+J_sd$u%C#cw;`A6e1cq|@=$2;5GIg#Wf z9Dpa|DR`>sZ`0FNJXggt$Oqz?cov?G=Q#bd#Nv4*gYbO30O|kYU^i}`heK5yt>Q&0 zUZUbK<_yOXI1(?$QKrB3FD1DQFUKqJO1#SSdp<_Ru_|6oehprW*WvYegVTRHx;T#H zM!X4c##``K({K4U6=$e;yNVC1c!!Gjt9U1K?!vqA9=sRtGyS>~NG9SWd;lNBhn)Tq zzc^XNCscfd{84-ir{Lo_)%06_lH@6zhSTwBe8%)MpH=Zq6`xb_Wfh-i=}er3FW`&# zlGA_Uz4!{rt2i59!`JZ*({KMR72_(>|HXG$`YuK=iZL^M=3h*ZBr%0)%wX2^Th6Jp zl!|#3zf-ZG;s+`gRcxqOVrCgDSj8IFo&IsT*d%FTfOGIYeBbnE+J`EBq2fp6ALA$Z zDSn2Zn||NEB$)PFXov=}aqOJFx#(hRRlX=#-R0OY2$U z_o^35H^2>XBitB!o8hr4ZK~3NDs86HUMlrr>E=lPm+1cz{a>>FSE(;<9lt}Y|DFdDf{5QxF7D12blhv9;DKdDjiII2p)=u z;o*3Mvwb9wBI%Du<1u(F9%r&;{(AzRsM1NQeb0D+N++xGgi5EV{DMlSs`PQhS zrPEcqOr4JE$_ zhnar<2$e>uG?M&cXZt!{LUO4k;cq#WE?4O$m99|fT9w@49itNcUm9&Q{noB#E&AUl z*QqpCrR&LWF#TSQBe}67xml$0XuYCcnq&Kc!!y z|4a8<5`My=G*P8jRhp#IG?gAu=`ocaRB5tG*8eI!Z2G-=gv9#4z3vp1+%5Gu`BXD( z(bAJ7PnmuXr>itmrKeSTR;6cHI-_Ihb0p7qB(qd{Nu?LaUv#>!DrWpLzG8{r|Jf>) zReDXOtV*w|^p;BWf9Xw|=`WrBFTKOM^nWR$Qc9($N^zB9;lql(X;Mn4l(dcWt5qcQ zf64kk3{~nsOBDMgY}M^aHKP^qd?L!}x^>m5s*B-a1_^_&v@U!wm@?_2J# zNWS=z(tK6J`>4P4Wb@Rjp&PnFkId2Mp* zfB$}Tnf@=YZ@J&A4OG5ITDY zHn^|K`!U!b`3lG~Uwm0Uh~!{A1P{f-@Nhf=kHn*}KOT*I|6}=B#>e6Dcmnd}kL8mX z55SZ06g(AA!_)B$9EfKkUjbP@oAEiwmp_)zV>}4Y#|!X69E?M7C|-oaa5#>@k;qp- zmPawZ1o;Zc@@0%K$1Ctkyb4F-7?rPA`D**aFXe0STD;D5$KP_k0@4O!RUX$4Z&ca7 zV9rk~-@-XS|NArWHkI#G`F3*p-=9TykgDo;{*0&^xh?eo&^ z3@kr@51M{E53BsB%9F|If4{ZINTxX3_l~J5Kcn&!Do<1SNtSl>e|b8|)283T43(c( z`C0PkI`Ww$vpSL&RdIKpmsI{<<(E}1tNe<}QI%g+`E8YFtNez_ud&wa9c$75<+uKq zFyS4Q>Hl)%f4Ryrm9r|xRZgj#U|OHl)0V@^xu_f!tJTwn+Im8D6n|NV9<%c-)KD$A>~nkp-(va%}le`TePIrM*JRZGHaU6CrQt3v-* zde}C@>t3P%EA)T(`_z@5s%)Uj+N!LliuJ!L_WZwn>GXf4mnGq+b}JjI(p!~{m`VTp zEnEMqvZ>7s-*2t-QRQ4!Hdo~kRkmO${a@M2?Tjj0V_)0`x5e#nd)z^l{Z#3v%I>P{ zsLC#??4%0i@BS!|d-iofL6u!q+0EU5?avvxucdRpD^b})mAzHjQ;=x%rSz{>bw)AsXFRZdXlFjbD?DjcrL5e$wr{dMoJ z%CV{(O@55Cee{kaIo^`+H&QDns&cw2C#iCZDg#)0GD{1LPsP(L3I94!2D(9&(PL)BbT&l|Xsti-*0#$~nav?JZn|^PHl3di03|Hl1RYs7H z?8rxvT;lZagjOz7uw%uS~The8yFIQq?zAc}ms3 zs!UVmCsn4aQc>k;RWhnPqe@hj8LGUa3jJSsj%_}VGu@9=s?5R{@I`zHU&dGPRh*5l z;p_MYzKL()+on4Xwq^Ri66x6gm?}wC;#_*d**^X$68hgC!>lUq{?$cJ|5yIM{|Sq# zSpTb1cDA=uRpnDvYO1`aN?nzfDh=lF{NHbx{;$lj+$Zm=@{uYZF!Mv(+O0e?Rz4>A z#9T0s@n@=hqsr&1%vI$Jk}sY9XWsxGF=uc|CmWxgs4RQZjW_WZxSP5Qs`r>z@4m#F-u$|6<%X68SZho3I4{7dqm z8D7)s;;JsI>Jq9hrD`|JtMq?(zo^pxRr=p2%c;7es>?HTg^um4M6$BecT06uRePzr znyPE5DpglkmHw~x=va&XuhRcvBUO8Mx_(EpfvTISx}mDQRo#gB z8+RJF;z zq-sCr?`T`_$7E-cT`URz(oS_ZRrgeNck(?S?N;LVjvTemcn+9m$!hp0Dazs-COr*(^P$W9fM$gF2E6R2`x!{a+p2kq>3& zMP~TeQ5~-8y{e8-^;%U&s(OX07pr=ys`P*Ll8$vRW8KR;k}Fjmqv}=UqfNift4Xfu zn0cM5H>-NRs^e6>fu& z=>O_HwuSJ~r+S~NkEwdUst>C=LDdIToyZm@*_`l`=T)BnSLuIlaVAVwmFNG}NA17< zOqinTbX6Z$)fN6!rajTI^eK{Q9m&(GzNYFkJcUm$rAU&5F1 z6?_$EJKN{#>m+ZOehY7@c9N=ZtL7Tu9aZP4`mU-UsTxr=t!h-&gsL&tiraR410+dO zmiYTuM%DLK&60Ov4)a*RB9_qlU)2g$k>~%_I^zb?|J4@b0O|kgdv5IC!>WEjPXC9` z>Z@+Eb5;FB)z4M6=l`nm`j5Z9UyxY;w~xSAs(z~~{a^j2Bma(>-#gov^@FMlRsB)b z-&Ord)n8TpnK{4MobXkk>U@&lOn-?BNd7?jKYU%K`j={ptNOR9|Eg;Juj-TQQEhG2Hdk#O)izRXUDbN2wjTSizSF;URNH`L!*H({ zZ>-v;s`X~PNk_gJNuQ2n3)Qw$ZA;bqsz(3Uwzj3=E2yL`%ZQ ztl9w8W~p|vYFDUsifR|CcB*P;t9F`d164bn`Dd8n^UT_rBxl(chOWi<9MuM?b}r-d zOn>dpC%K>_8LZk!)rP1xOtqmbrT_i>;UptE=3lJZrK*i0zoa9-jO22seTUbi}`~9T< zYq#5cf3)vZ?H<+cV&>hJFLp9xp8wbGV|+hO;QXJ6lkfq25Ff&aaWX!FkK$uE1s_-K zY1O8x_LOQ*sP?3V?vE#r_`rU0tW8sGy4weP3Co2SyCd_AYR{=QL$zn!nP8#o*ip-= z_PlB{?RWNBoh`qhT0ylJRg0?jl4@_L_OfcTReOc~xBmCfplYv?SpWM+vD%xey`$P& z$n5)`1s(nTNbw~a!iS>W`n9NhKvuZ!6Db;>dV4L*o0N@$#y#r1}bsSL~R%GRZ1Ve}wC+slI{g zQoX0@-Bn*h^&ZSw-R6XkR`oSWtV8_$uD-VF>#4pD`MPGf=XL9U)q9!YajtKudLPv{ zQhgKEH)d&Xr+@vbzA4FOmV_-=-(2;rRNsPpOEdhGc%A;Q_a)y3dHtu(>pyi~|Ecr( zf4!gE8P#`GeHYbtQr%wv>E35Y3*AdJbzc7uU#qF_uKHD~@1gqPs_&`#0jlq%`o5~~ z&Gz>({q@?9WdDxjK-CXXo&K*M+>sy3%)^}i{HY(I`Y6?pRQ+hx>Hm8Fj`_zhpZ>2~ z|EqpH(*Jeqf7MUI0Z3ofdH!ENmE<&}|LgRBeIUu1X#KDH*?10~i}Zhe5aaWa{;yxi zcrXq@`oB*9*N2e|NBX}$lJUi+KUSBhe!1$Gl3V}#Pc_u9Ai2_#@F(c{Xw`33eT?ci zsD8ET*Q$Pv&GBc>bwnen zu=(L%)~(+~V*TIV^1Z50P@Vp--`|l>WacENeLTRn^PuW=)gMy*CDk8R{RzU!sz0Lo z6xAQ)zmJ)IpC2cgYWjV9QuSw5e@gYIRiDPv=^gW*A(`Q9pFhv3K1=oI$!A&~{^f`I z3nVXE5Phkxrk(zgy`ELQqIws34(b1TLG_Y*_N98!u916*wO+RWy8EMr^nbl(^Zoub z)Nn=DRNc*Nss4lNf$HC>K8J0-hxC8_1AD}*e~2HUJzZD*6Z{lE!_V;x{1WHlSNJu4 z<8*(^QT1=_FFM+GzUQ*$Iomz_qw22keVL5G z&yM+jk^J3}EK*}J)&C{`&*|?Yjm0f#Eb;#{8%wIuU5%yGSW%6o)mToAWth{^|BdBI zR&e^iB-vO=jaAiHnS2$?!*|0QtC7f(@F(0x4>i_NV|6vwQezF4u4#tXw9%7f?T%z! zHF~MB9{Ktm`358#b|f3CF;R`)YMiddCTi@d#-?iYRbw+|_EBR?H8y9wg&96`XlzA7 z|NDK|Mva}+*j9}l)Yy)t+dKVZQ==crj%L^-jh)rlO^sd1ceR<}-@R|_PO^vTx4f4c zN2#&58i%Q|j~e@{u`hGze?R8{k^_Ltj{aJCh8uzJj5Ba?vIsM<5 z(2-11qprpSYP_PxgK9jb#zSg6uExV^JgUZIw(yAQ_k{j$OmRurx=fg=1`igECp%_N zQ{#CxrmHbSji;GL|NA|BmgG5S`^=fC#*1pqBB%fTCB8)Rvgwmo)kvx_Ta9X2XH~zD&g^$-w`oFn^%?zIj zHqMECyxf1!x9r>yxtC`_#+U%~@j%xN$ z^KLa)SMwM(*HCkNHP=*gV>Q=OvzMAZ)m&Fi`oFnO$JXfoCjHOW*!Tu&(*Mnk+<*O% zZ1z@jOEou9vyYmaGR^wG`=E~))BnvaY#g2;&8^hjMos#^+1K*$m7M0b%-_!0UUvsI z4^*?Cn!Bs%uE;KG?!=s(O@B0YCE2Yb*@I+H+za7j@*rNk()e7pr-_nxoXbO3h2uyj)HCzuD3MP5QriWye~h)pQ4Q3|qU} z>F-m`Ye}v%{W*VwnzyPsR?VB#r2m`rzu(WBnSYDvlksZap{Dh}nzwi4caq%Ik=&!^ z*J|FY=DTX%r{+{O?^p9-H7BU~fSMDTKdEE>gCq}iB$L&AOwC8gA9eb76Pi;<9=9ZX zFRA&2nlsdVQqAdVKE={$wlr**=F=q4nEqNktL9s3TK}v0JkCVk|84UAZxAHPR$>g@V%Pz82n&zyYSzi)clzN{ol0yS989bpyqG*J1)RK@K0Qbf8pQw4=%!g z)mmE3|7_e^Os#HeEw0uQ?!WFNvCw_BdTU9w?EQNC=_!0CtF;XCm&N5w_pM&Gg%#A2 zS}Urxidrk#9=29?`tz-|Dhd71^-|0A{~BubAYa||`I;nanc*WvYi+eQS8E-$Hd1R{ zwR)+w9&@b!+uPrO#QNWV8l<(cTAQlXn|u?~Z{PY~tv)t0d{k|1p;lkDwj|#Qw`OU$ z&27}$Uaf7(t^eEG*@2{=%?zKrwsul0t=7(JU8L47Y8|iEu4)~k)^2L;tJdyn?WGp| z-`dmG3jY>di~euzV@ddz23z~7b)Z`Nv;6~1zvl;$(EnlUwhmS6XtfSg>qxZ@XXz29 zKW;~nSpSEg*x|p&sC6uZ<17!`pml;;XQ*|eTBoQ*|F;G($NE2ftmnU{s&yKJ)6MWF zrq)2U2B~$XTIZ-`{jb*9X4s{zb4kuK{k1q>t-)&1|1Il(|0#vm5M~awB>dKi)-bhh zR%^Igqt$Y!;w5U0WX{Dn%4UYI47V;->k75#|JLP}hu_B1qW@c0S>kV_F=}1M>Q}3E z4Fl_c|8sQfdbP%>bp!cWGwi6=jU+eO%>uVUai|0+>UqPo$es0 zbr;@^_u##FAKs4>a3W5^2h^IZ)`N^6!iP=%rV#&qM6E{|Jcd)ua6)UUT2HC<1pDx$ z>2IlNB-4@pZ$0B~6#Lhjq1Lkup2O#HCeFeakoU4%FWK1EdReVk7`%$JeeMdO^}1RS zwcb$cZMELy5_$gb&jI?s^{(YUiK>-QE5=Ov-{(n^RL9JW0#`~|wZ2!&UC@VW<$T6JbNu<5jCS*;cZIH&s>moa#sIrjX&eP({7)|YCz z+x;`OK4Iynrr$pO-?IL1&!4N7D}3vJwZ1m}dG##`&;R|p^VIrNtsm6-MJ*l_T0b$z z`rrRF-TGCn-_@E={+sD<-vuOp*v#-X&(=b<7OC|YInV!F|Jc}H*1rl|;s0kzu$ZkC zz9tYXLDJ2V@V&fXDFy2*SXzM;ETdp$13o@HN%#MpSTX5BYEDE@KcV#ECnwqc!B&y%fnZ0gO^EOu_XMQVK7@kT)}G! z-c|6rg0~dB!JId3jz3S{CV9t_@Lks+LJ~#mfB)DWBot&6(EkDbAEa%L?}4m>yn-&) z%9;MwERYnP{%3@stl%dF6$M`?s4DnSK~2GX3hKAw-oV9Ts zTo>2F^|2RjfE(gQxH0y|O>k4(4Ex~bxW)f*_9pOAUDy4%_r#84C)a7SCu2Ld$BD6> zII+|0lF*Ds8ZBr6gRM9N8p9Z&v1cS~)HFYk1c-e%n^*(_BsNJ%fY_5v(`JuIlXT`y z`)d-A5J+@M+AK|*{J!6F?|pj0ZvUUp--gSZ``)}c@7{CI@;&FCC+)|ieN5U((mpQj z6Vg5@?Z>74gtSjd`$=g(CGFGFKEoC!5Gnr)d6v(hHF#tCb1I#u(w|r9FRAnwd6k~3($iI%@?WKC|J&c1Aw44hWxnKNwMu_k4qjkueleob zNtK?d(yyrWER}vqrE64rwn|6k$`{evdy4&^j`IRQhXj@PDLT zDD5Je(CH>=o26}$cCoZe*kW3FO{+?;QR!tWy;7x@%Xh{8*H%P&mGp@G*P1T9R;4$n z^g8Jm`F~C1NqVF7i2OItyIH0GQKh%2biYb(Rq0NZ-lo#+D!pB$cdB%oTrcupTYc$W z(j)TU++mMO?^Ef$(ogws5TW#b={dmGT-l}4M^yTt^dFM;Fj~v2M^zd;+%5eg|IN3K zNlzcI)Y>Y2T%~`a(kE2C-AbAlHceH{UuVJ(T|jZBCz8>5D3TLHb4hrz!tc z`kNeNE}xW2|Fs-^OWMDY_HU*AwzPVceOHdZC++v8{eiSUl=er`4zk4`m_z9w%dh+$ zDKV?*rz)LM>7Pme-%FcjYv#_89z9?GfMfeDkow;${ZA_W&no?MmA<0VzfkGRDoy#X z(wEqpXCIQDVYXU-rAJhHRHa4!rz!vKn27vOQ~n#vC;cxf{Tr43SC#&?O8=YO=T~ga zohkoS`ae9^|5l~{Q>A|={lE8I`3LFwFSdq;KgwwQNoDR(nVVGRR+YJ#XEP%I_5Cxq zNzd(UHNR!vqB3`>%v+_O^55vb%-f{rZnoyT_b4YnWt3dah3VF$~+-g zKIysg6F9aMeo|$gQJGK4HBYnO{O+fvhw|U{d{$+?D4m~Ena|6?7uaeInE8^*5&55aj%PLJWUA%LFS9lDe??^ut4u^?7OKol zm3c*FW~t0eDpR8}vsET4*Ngnu`6L;U{~3}0`pxN?xhhkqGPQE0$ba)&BL6cY|25i^ zNvO;Ml}W11e3hw}>l@gb>qY)&UPF%^`9_ubE0y_6x$>)?D>WZd{@W`TsmyMbX;PVG zD$}eoOH`&szO|UwXe&3fRC-$3qkYxPa!i)Wi2Tp2l(QoLGpoV0Dziq~wbHJWcD=M4 zq}?d(CTU-ncC)lwq}?j*Hfgu3%nmtdqpaYacd87NKY5HA&g^MdnNF42qcZzcM&y5{ zgY=k{EAl@xF8_tpE|n4apP~FWI9TS0a(Wof0YsWpAq?= zyi;ZRRpvOeMl&a*Jt^&gw5Oy!E$ta;&q{kv+Vj$0koN1+enZ-CN}H1QuciH#w0|S* z-%9&!X}=@wccuNFwBMKZ2h#pf+8;?fDD6dQe=P0aN&6FNe=6DG`_5a)CweV7l>f@P%hPkWa_&>k+m-VU<=i7@?`5myi6i#Equ8TY ztMe}9yjwYcCRd95H~sIC9+CeJ<-c;?4>nfL2bA-maz3aWpK?B=oDXy9fxQv1_|uEZ zxnDUC!0#LHbUq^AdWbFVj8o1d%6VEje&sx&oJW=Om~uWU_x~7M^XrqO=W(`%@+Xz^ zlyW{U{gnT<|C7=q^50zfjB-9Jou5_?<-c-1gBHtEjz6cIFDggmza#SBeCtbcR^-3w z$y3=`%9*U3SCs>@BgzRVr(8Kfvz9^50}0I&tMBl|%WjoL8hx@T`k0IrYjB z`R~lgOBOwTINNzsRg&27;Mf}IS`${;w($@0L=)IUn6KJ`y>{Bvo4A?+`vy(H~rX@{g8 zmiCIYBhp?~&c7<>nsTlyXH+?3dfs`8zy8n4`4_`8hI9T+IsdMlUnz&dUtWeOpj7-1 z<^0C|D0lvyw7*AdW%VCa7AyU~R5n*R|E;o+LVuKN{=_zWle9PUZrNL;y;WuJQ`y_( z_;zXUV9N{MqOxz5gFB_Y%l5xbW$%`rx2x?HvBe*BX5XctxwwfrF}r!2c;GHpB4F^eV9EY1HbE+ zgGZ(PsO|rl%04DNlT`LeIe1)UpD@IeTK)A;@RWI?Ps(MVlJ;q7pON;{(*A|CpON;n z(tb|b&rACSw&p%xlJTef*T{x^gbJ7}2l>(lq?P>7tmJ=YCI2&9NN&kW{hw@Dj*F!& zk+xLYGHItsTP|&dw3X6Usq9qhP%zc)vR^Oztja#GvLgSpV*h8K!>=2!CtIzuUs2gF z3q3EeMRf~uQAFCAY&FMbYgBfd%0^Xok;=ZPvJEObTV?B1c8n`LBLRCbNZE|z1d|C3!R$F0&XlUD5i>o6#PSo>T16NL}`f%6?a6&#G)nWzVVX*H!ks zTyue~q5K=t^G#3BU#sljs_eI<|8G3~-5czV94vOki}@2l(&sloWc9&KH~ja@(5!e}eXK58SAS{ptawc{ zH@~WIb~IiWnHPN_R+D-m@mM~Olh<-<*Cf)Jlq;Cqmi1}kRGc{Lhq1gS+8ug2;dqlwx`T@C2X zuV{!hMnH36x-Zk3-k)8W?gPmIbSINh&>gzebm~%52U^e?8e85m*4Bd7*BGp5NF7NX zh=Abo!Op>BgU1I?U0gEQ1HuO`uJNr8Tv@ksXz!t4`fk4DyE`|h0wlkX_?V_AKPMTB z)`6PIIKTiV?|&I2gna2e={``vLE{rqc=NvDw!^|XJI;>w4fq=68++rzI^AHJ^Z03*g9r9{e)s*oKQh0Y zSE7HnGH*_-F7lXfYP@!CG7){bVP_yU*R&yhx^`Ph9##;Q&^bOkgQKcYBh}^`-xP3i>sUF>t(Tg+E;WN#(pW_rmv>xWJ}|nwbquq&|FBT1e=*fwD?C&V zRz7xd(Zwb#r5{%`h2I$RLuOV3A@HKCu6!N|*+1kwW|kVB zo{WCdiM8Evsk!e`^D@m%1EXuOqyni`hM5Zow~&c70fC`aJwvDWdw%+TuN*f&T|C{) zZE>VFvOtz}-9ul*cm>(P&k!(~#T>8nvFu7tCQrod5^vslsrj&s*hw>)qX*W?5cS)I z&M&0e^;$0*Y?FZjo7puVzS?zoc*nkxeHSJU&j)VJF*FvHYZ{*`iYKCA`f|hXK7U2( zY|UJDJ}UAt-cUcsCl}!Xp3UP4pT9Q3FQiUmh0KchYNC(gi7K2fNcp9ijlT3@;nYrf zw5j+?sw;|LNOj4QdZi(XZ(zK`6k)qI4EL<^+*i?1 z3*N21WpMZ4@r#QFFI;RM>?J3Fm3w?xWaq&e$3@Cs-PLu2cL_o#xJo2q2#yqV?5C9j7Ir4?*E-gseXK^yyCtr?Y z_-cJM5j}q7xu*v=hypn+ZQoU(a%_P2Ovs1 z!K{ZVNc3g1Ihn8(4v9Q#(-wm;>gkrzzW&jT8%5CS8@;62bQ>r=i*b9

    yB(aJMAKWx}AW zZ5?S}VhoVc?g5dWB@=%iV-bKL>Kt54Q}q05EhK$!(>9p@Q@hMF2XoCczjyqZlfI(V z2|PW1<(U?{?3 zjvp2Npiv$e+pL!F*Mk$Z(%|x?T~5=?*g=7j6}=NR$9prMHiJ@TR%B7x zoLFt_<(KIYf#W?NIpw7Ro`eONq<)kMF3BvS?To+Yjm_x4{X?=cn>Sr*+Dn?7H)4r` z?9g>^^ZvuvH!XzzaPI`V%Lh9kPe}I#{0~iXaRrv<$eLqA=T{6JJ?{}A?@s@XA$Y2> zeS%YC(Rw&&Al85T*Fj?eJA5VRfo90Ga%5oyfz`lbp{cRdL4A^=+Pqb)wdI$Zcayx) zW4mdmHFd((k-Mh$g1C~w^%qxSH8pW@4W0#Wjht9Mv}!Y`vb^=^Z@=X`dh=W0ag>Cu z;D|+`A+!?_tt+jZ6ZMru>*we$4rN7IBy}VS_c1r}64s7gF9lc`))6TvgJm@-H^S8b z7QjHlu7vHjkWy~6rDJqe+vv`PqZ`^lZ$X^DMJZP~xC2AjFYDjf8Vf{Zzwp9}(+b93|n&A(4*5U|>rY#^8x8nj^3qt!K9L|aA#$aNB zUEOkFc=xHHGbhagvvy9IQ3_?E2z+HQ!#k3omMX9cpQ8K_gLtcqCLko^i3Om$(w=~! zt>rRAoh-pcko|q>ljbSPMaok`+Ar{NfR(JHLqPut&$9gL?kz)YyD;db*H><&TL2fT zdEwX&xW3QoUrqHTVsV-=_BQ1G>U#!vVLr})`Qc27Bw0iQnmVxu9#)fBIOl23&_oGi zvW8ZyAAY@iXb0UKyPh8|?e!h?-x0!s&NpKbtbo66d@LNsARLoHSW}elc*+twhy;IJ z5iTcZi|>rJi^tlgT`w{cpJw$Ic^bK_4(1O9%@!K|Ak_M;V5BQ+j$B!`)kE9kckQ>d z1q?eC2B2%^it54)1^8(ejs2h;i7OV)EE4B+38dZTB;`J8=*2e+E5S6&fqS=U^Fo=Qb$%P$f=Fu zQ2U7KJ&4_gRcs*G6+#w;+pW-;7nU!(c5j93{AS6V%1$Hy!%bpGT- z(jNc!3zoFJ8Je`hO3)RB-7U*6nAgZ-F1{*{$CrmI#0{j9o&p)S7@`^O5(J*J#OVUH zRh6^mq&i{EO>q2Vae|4P4qR&LbFFqh!q~C?v2z=OG6@Abo~cjk#f=41JF4P+J-oT=*h9 zwxj=gbE`!yaAONugu$(}EugizltRNTYcyElA?>5dc1v20A+0F&da@p3gLW2}H7HPv zjJ^NuU&BBb(o7V4s2?L-kke2P%X*HHcwUIb;46XwX?(>XD+Q@V1aojtE~#-`MUy$S zZ{JW`4=@!EnYaJux0cMHSyJI(A_k_2)*0>%1QXGyEGizsgCePrXsu#ekaf|Y>ckZ? zhT2qv7rmFu{o2U^4xm7&xT=d^C+53Brr55jp@EeniH+_9&C3aL@C+QqAcA3@J?ab428qmy0bA68ZdxhSfSBfhb<@*EKi*V4f+9g1C>|=hSfuR`9jN;bDJSdJQNUv`uJ0IM>!2js4|N+0%p|QZSJqioN#(t?j+I9Ht3SM`%8nD1s{-hZie@)+-WmU=STg zL~+C70#Hg10S3&-qK#K4h{H*rUS&BhWCk*zeJ_feP$H^VbP|W!VkUk>7q!>5yUi&h zbP$UGWD1l)8{Y&@!+1zyxjWm$`1Zf^cX*OA2*iaDhg9DNKn-1K?H%gbsLgI`T=?&R z&!y${WCJLLCZ{^;p!X7l;)9c;b^0(Fnhc{0$50UDMIv@fs4HO_QvVc8j+k$e8D&je zBCZM;x|?zb%VP9E>-9y4!HKF3Bo+>C^k~Y<1E;PEx@#$WU{$fDtjvh(f-;~C4YMP% zFz)*h7Y157R_DPc2h*oP63u4z3K0MdF;uMr9?FW)fZ_Gl!`FIfH{&|GD7%PfViubP zGqgHnWL^8n+7@l^NC+t)V9ZCgRtx03XmA)g5&$NcT7*s+AIu_+9IVqO@u7pf9LgDV zX=53t4wS|?zQS3g!DGM`|9$5{S{Pi{f_XH^N#N>^oi1$h;QRjFEYYCxmh*#iB4QT% z-}QNp4O*b?>C@B-92I;P%w3S~=H-}_05DWB%qIu=O-8Xc$eh3+4*)Q|a=H&f!GGTt z?K|AFy4n2Xj2vUTh_7ZxB5YhWJqXccAsnt$yB!ibYVMHS=%|&L@$uC(z|o?cR%+ce zGg2VeIB1?>DlsEIj#*Ee;GazxJ=_oj=zX9E-t{r_KzYT+SOEqYO*BxA5!s6-;#6r# zeVjVYs94w_fDEuw*P83_9g)IdIACXJ=?jtZ0hSRp+Y82j)?;f?0O1!RiPUibSQN|} z4}=K`Mmz_BGW7aFEQzbzmVjitD(-%w%v}{mS>%_+YqkEufsU#MaTM1kZ5V=NDLftl zbU>|~(k3ldsYcYtWl8AznttoWW3|<$`gs>JBGw4?#l==SYcRR@XgT64j5T&7D~-_- ztW2Fv%#Fq{l7Y$w9Eq`wqgN2O6^n(YmD7bKLLVR~XC$}=b&seOyh#pU;Cf5X^(Mx9 z^#z)mJ;e2`Mh(F^8(9eJ_Jn7k?oyNNKm|g2ZVLjjI%`4&acl+);Ex=N83oq_QVsB+ z303hsyiPA%10uo2^$yvlg?7jad9@ph)j-lY4BMJ0-TFPN{tHVrp`k(o zy~e={=nrH<)6Kyvpxgy=DGX>Y2Ll2|qV@+YW4UkJM)=^PD*z+OZ9$#PC=`T5ar!+n z_{!=1!<)UX=SRPJ$_`?#QD4E_Xzgs{s>opj0mp*eR2RBM^Z~-iv^ZM`I&*c%MOyM{ zj0+PBi}Wm)#^|xmYXdz{&ydCM8IVP=j+h}Ju0CtYcW;D!JiOUEw|75LWyvbHLss4} z4{FO0Rvy|O)ImLX zC4;-MM$aPPV4UMHY)wP}hkDNH@SiI(Z~3)C9)PE*x#fKn15XSTY#yriG#{-jSy6H~#*u$@iJxuQJiNK-Fx)=3raC zZx(+Yt=N{CR*AwP?Lcd+QfOL&c;Z9A)`i+Ia9?O_ThFx~#JRC7`E|;Ny`np5Y!J-3 zd}`&;sbeGOy=dtzhn5&pa*VJo$Vtq@U}(QrAIo^W?>|8iqujl4a{&^#!i!%>b=euy zm=mR~nK1)6QQDdiynMl(G@5V-Mc5GwW3GtIzj4wErW#5sjgMY^Q)Q$sNt6KD3gfW} z8!x1`zy*y0BLIHq)$&2Yyf$h}yO)r=JemUaPRORq)&QBsreI6_Sl#8E?Zw#Y*82ncevP~4z|EPu`{B`3EihmiiKo#ZH{`$~QvlK&q7q?Fky7EI4f`&i-9OyD(FjV5 zOMmX>0z+q+5tNh5V2F|XK72RkJ0G7?r$JwU#(t(1a~&uHOb~AXU9cFo3G-2_1b}8j zbYph$MVhp`2+Lh;hS_rEz?Q4WytDeY#}`^nl56B+D7T?@b_9Tn*nsAP49|zx;^)h$ z-RNmR{dxqG{gMolnL`LngA0X6Pqfn1HlUFFM5P4J zJDH!27uw0R#vk$yYUzLbeIMr$aYrh(_JDe75<;Dr52otL7$vIP2fs%avF)3*f9+PXL~U(c#I10NN&g-(Jl( zScBaHPQZPo>ro0F0-h!~v7=vnkOJJtimnpqlhYUurn2eq05!_u720xgwd?KkUozC? z+gy`W%j^X&BVLRl$tG^jyR6r?DkfDEjK#!j!r;Al;I|1X6Ox(N*aX-x}08D4P# zU?)g%jq$l#3?)+xCHX~>`bdIfGDROG{SQ!d2H>8al=0wa84AcEC>b~}5@mw(f=~zK z4^kcTS%8;nYcJprC?UdtgHJ=lXhve6zWo}yw5|7@gf z&BDV|1GULg>qm>k8iZVi*L4vR>DYElEx9ZsggCk5QmO@Pp3AbU0+sTXS9QCPcg)CAjPFQG@0BzCTH#nn+VA_UonjMI1L$gq3x;M{ zV6H%SigeS+T%QM-lP|cKjtjt2JrbFtJxW=!{IGQpL%5ym9}=TmG!df<3@zyyI=0=4 z6*mTIL$zfM(L{aRS00-c2Osz!{xDe)Es_Cs`W(m4N8AZooI0|QkeT^{Of*8@+Cju% zLOapLF2BBRfDkE+j3v9NqZk(QKRgAzS~a)}=EW+gPXsF`4epjnKhK2&0H9;r)ibMy z*0y*g&&_|d84)2v@^tV$a^E%XmT*7S; zI-U*oqJ}{T2DXyPA`cJmJ_}=IXzj9zjQjWj7|0s2tuTmfK}Bu+)riJgcsxHcSC&>` zev%(vX%P0+QDIo3=>tSvFo+?!7N?DEhv)%pyS0~^j%Z3t$+_)q5T!t1gx(^#W2#+l zNdvDP{42r~aYAjoAmlRKzy0#rwOXoKo%HU{^_d|pvT@I%NHQ{O4ul$&HInZdBXiBC zq+V!PoTBSH)*}1?2g%nM z&cknkXxvfq)XN2IgJX1YvBc(~QGM%6hc>j1tnCEdZ-~L)F&4Fho^OE=tUl5p#!v`{a~h0;T7VDwnCgOoSJ29pWdyH2tGR+HQ$Wz6 zV=cK1q_i?|+>*~p-C&)(3L|gu5LXsbd(~^68hvn{<$Tzz(|RLqC^}z zO(+fK$uXCg9P0QcjU|}<99SXJTxB>HrX_h+l$a#r)3j{o77c1JIwl3UYpPubJIe<5 z8HZ2wm`=V}yaE^wqOry=u~yyZes44Nil5bLEKnSMEjE|(SB@x&k!POjdW}LEaw@Z! zuAYIvg1p#8zuIMKA&@D+@Mza21~Nt3eoUiZZE)%6*tw~adpePJ0iVe$W7qu5tR&=3 zNmfyDMWmr7Hc7&AGK692&~ZABV~L!CnZWDnY4}YS%cavUC?5_^VRW@eU#joqOGe_n zo@0#s$Kw+5q!1HjY&3DzSkqyc@;bp4TG^^(+#}Tvzta6pMAvSExafg|6Z;EKX>wt7 zWXM6pF#{u3cg!eo3?;88xO=T~SH&Ro{##_F>3Qu#%F7===ye_*oQIY5Evu zQIL2a_cvfVrC{K);V&ec8prk5VRrX#Lwx*-;ZVIuX1v&R-Q(4G<5)0vp zZ(*eA7z0?PLNFUp^jDbO$47u3Gdp1}HLr409ZHduMOUV!!zMh8e~T7Fx!E5>)o|R} z4YE(B=d4Fy+&1smhTdEgDGcUD=Fo}f!g&(t74Um>q`J^UL#q=>(F|QmaDiu{scs$J zqMv~A1;g6t7K{VgC<7;fw-T67)G88&uz!K(74q7KcY4jM+rDB6Dm6&(&ab z)vRH-QgscHdcm1KE{+{q<3q`w8hBE|d4BYZAA%8BDKe0WU|~LfE1@rFM2r9~;t0S& zLfSwx#sNWPtPpsYL(30>oT2SR#04_2wtcRRJmw-L4VkSRg^&M1=0tZSK~I?Lly0zr z3J_J{#RwcqoEtRlGAlsC2BXJXMvr!A*x(aH!I02}$O^>AS;}9Ly^_R$y%n<0%Q(cL zD_hSGFW#i#1Xo{o-(}@Wg#m|YIlgM4doek6P$L-<15rK**CTxf7N=_niN)zb@U_Lc zb=mp zX(4I4UyRI%R(88)>dh0+l z%qwojTDp5^$>JMKt!KhtHG`99%)-LFINSreyRs}kbuVVjj}|a2gYepV(cZ33alko) zQX6-GITo0&Qdn8y3kU|w-7CCJqM?Eawe|q4cZ+$0Bd`x#h42*}+~vDHvheq}tSp_sB+Bm1w)P>2u!dHJo*BE2ZhQEO zdFZg&tr85!W=85H+Yk7SIZOt_sUtk*GeL8ALfK(8(F&8xK|OFB=njZ01ZK1iyt|bm zbTM*i{ZBLHMcfDKV?mZU{$QI!OptU@-&>CYS`vV)B2OE@g%!~S$U}r(Ag-kQiRO;~ znS9WLJU*=Lew`kK9^n!MT#%gva~x@W8tq)RmUzuFX3OCsu=ZOql-yX}O3MIio5T60 zf)hs2Nb5=sgHDj|d1iBAL0&^5f)r*t4nZEz;vvY(g1j=qH3T=n(g)J}wZ_32+40>A zbpswQyuN5H3~b-n5~w?VjhbfL#nqVT9?;b@NL*&<^aj|?SNiv86p13-Dw-VQzZB(& zg;ke~)^fCp<)Z*Jbu}EY;?!bZpfMXNpDGx!aKDMZV28Xl$uO<%m8sQ8!w0eO5+p0u z8ek)b28Q}hfcCPnEfxbC+ubJHe2YT0bFgzqew`zI8?s~V4iR^hWo_aCEndrn*~L9q z&UcJI9yi&)@CR#=mAe`8(S!+c1uA&RHR%6~N<2;pBLHdF^}%!KE4aE~`+_NezgwIU zJGz03S*Ipgfrt}fONx3h1}JmmTJ1YA`EP(3@A~&Y7+x(lU`=6hq%jI>Q9HY(h*x40 zUvXrX^pVQyyWLNMheu!YLgLdKX2*f0LH=r3jNo{awk(YRseU`Yj~v=K)X8JM@FUUJ zCc(6GcLGn3n>)BcWhk{KBpLueH==(!^cvF*V0vmm;#%MF>svR-%=L!aaC`uweOF)PadJz+!73ZSmc6Z1Vs7a=-!wtq&!r+XSNDUAJ zLLBU*XGahMTig@43SZZu62>FXL*8L0E=gP01zb-<5q45PaqB~dvRp&iwA^@-tS!3~ z3!;g}=rXr znJRbn%sP(=@z(#SHG`I8{Nm!ABt%psR)b`E4Tk2RLJB%w;-_Sh`LsYgMb)=V*#42; zlkO3DMga}9K@@ISeIKUPF>oCf^Vf98LnP4!{fvsTRnFNQu0~V~F(tz)dgVmML z@++_w`;c#TQX8ur`f`K@7`$A&j2@8PH6~V)6|&OvMt7TbPVOAxnxTAzpM^S6n5*m4SzL*GcCb>zl@QC35+uB1wU z(|qiZ-?wJW40*AM4nlg>Mr&g8#e`$E4Ia}TF~`_=3P0FDdvtY(2l;c} z>IyZCEtvXsu!e+yH*UlZNyyopcR`$)iX9+{dHu(jug{7d7{1GA_6~KhN|4u73K@5? z2qC4YFa9F*v!D|>Yq%WIN$o402)xlcqHUx-FG(*1Wks}!>{S+iG@}{b->B7?*Mpr;uC~ zTa^d9RB3T%mHnX}J!jVjUP{JLq?H$PfB}r#MQaMN(ke%e%=|!wo z;KwW5=~prVbL&FPqw6Nz|HGdc77JT66mG}@;V(KQl6%Pmal#73;D8hYVRBYGTa11f zTQCHJ!Wx1BdOBhUT7O07V8V5BQ=2TS-+b=@L&tQp9Pj2+f{_Y< ztC8>s3IfwpUA#mrQb=orY?0 zK@v>25uxJ9f_S~`*zr#mn;5OO7HD0y3TVzVB6ERu;FnP@tW_`j5Dmj^%nHDi;38uu zKp~t5isXXl$Rh@XPZAhKvD{j0QYm0TCb(snQ4v^BlUV|bE#rJxJD89^(~ye+dmC{sK?~v-Bl^O^uAeieCD|Yt}+2=@{h% zGJ~clR$;IqQUjIJ@UoDZ&lJd_J3XE7Bxs9(;%>pX&Xc8anXq(^SROE`MPW5>roy_` zcXo6`2NV|2bY#l$R*_oXUUN2mUTltwxAiF zN>bREIw2bsCt=8e|AFo6iUWyg9gAxqHZC@3nK>tq#KFK=Ow+a|Z7SalTb8E;8*nG@ z0C2@zKC=dU#YM-%?qr(VR7Or@6Z7cqQ$Ff>;Az|nU#fq3{O2$NcZ_ds29^d@ZzE(H zNCPA?;n9x(rMcSVEwT3Q`+jFcO_dF~R3&Fd=el-GRpa=lWRd-3qU_-0W9d$K4C8r? z;nIf2nW-*w199+?$anfu^Hzyuj)&aK5d$3C-^!vDNENV#41d5Ab*~)U3oEi0JkDeR z?ui$ar(AOTP(kRBH}vkx@dqY<$UIbqt+G)OtwZXsYy%5DO!0vhLX4~{Iqcj77J{!1 zq?4CfzaEhlC_Rnzz^`xV(7V9!WePF^J&dFDfvPiDeK2c*Q8Euxa@$;b?#V+Yu!f(^ zAcrbmW%&j;HsGv+{N$?$WusII+1S`{I0%43l4ZKNCk#Q z9FJik4WnahE8Ipmj1|`Rb%R*tAfDnwmww=5pz>dsHeu%?c(ONSP2T#xC(Q%onfO)p zJuD6tf6O;IIxmj&&iaX&Iw%e^CpzzO-;78sfrTEetG<;NBJC4tXapx%xNjEiB-9k~ zb_Bp@b zi9ZeI=UK4oQWF4sAOrmB|(Dymh%@AIJ;+SuN+9>AkS zo?;S;>m-3!QKMAf53ijH7tS%va-Bo46h^PRUf&E_m0W06C4)0vHPpIocxT%UbXlEE zMC*}eY#bFPn{1d2r3PlB(v#Q?L48d99b~x<*6ovU3+yWwtHT=LcYs*MXv-kP2$>{C zGVx9qLEf~I&fk6*qu4Bgt91>)LP6tB5JrZurIQCwW6kn6Lc`BB89Iv$&KW3bcr_AZ znxa3P;@U(DaD)IStYpUIgGGoPrMl}WF(vUGA_Ww|J7xB5cK&inZJ+cy)YJ3Ugm5%mwT^m?P&vR7|;CC28_yRTfI!ZIlFF{NeylDlU zLq~Q=g6=ZRt)=t6585p`xyC39Ce!OqA~4T7 zMyO50P9Y0N2ohu1bUYG%VtT(=%;mfYr@UVkv|n~JFr>|zrD0n1*i_YoY9kE6lx)D) z0Q{nE4Q7|J7X{w1DcE@I#I!k>ta60#-pJ}+?+Ur+i$I$35hK^E*?_H5F!CMz8{#*0}hv za7zC`21Uz}2Ep3v)p<|)G6Pnh6D!NCT#uHHo-yf$7%> zL-kG8v_x$#gc6A8A>b<8O*G>0toKJJMPb$2--I~7iy24^!EO|Hh*%cve=#(7$=(9M zE5^T`3S0B~MpQjuPAeq(!1YD_qwO#{r)lfg5DpLC-e1^I41h_;%49+XtjxzZl@(>jeyO+Rb!6qg*Bw<(idnZ3&COB-M(dyg6k$Cb(9eZQ# z+sV8LvtNBT4ou|?Pv~%h_AHCP+yDp-T*7dh#Em4Er}}O3U9Xy)JV8zBFG87v`$H6P z2;1nIJCJL-Ml32f-sSmS^HX9VV4H@~-f^E$%bfP@;4J{6SgIon7Y(o60mfp`+qK6{ zzQtsi*-{;?9P1+KM@!uxZj{tSV~+$mwFAXUXnEKAiR0h|e`fgHEnVnl_r@xKhdHA6PN2#NTYWx7*O<_+iS~~j1K}x1rK{m??~JQJWPZd zd`!>%S$hMCzIdiUD;0Qz$Rz+S4WrDI(8ME7WvB%eDu6>HHtjJ!yd{9_jUm&(t_p%u zN=HF%O12;XxBu1tfI*9G4!wQ!dL^VSH4RFnroofimki}#FF|51tUruTp?sJ{GY#Xy zPuQ_kj~$E{hEli6n%**s=Pt6Bn`B39wjbVi+$|p&Ky9^aCjk}uD_P#O66OVqe=)>x z8vn9H9K1SgVcR^sbCJ|Iu$+@)U;}^U*C-k*Wh)|XLVM>h6CL2PNG%Ew;jiR|I)CMN zFsA;>%>Vpr$UO9|_gDVOBau@NF8i|Ko)Uwr1xsQyxkMyattP*sB?yV>hMi?2_64|% zRu(}Mz@^I#zV5NIP`H39kC>Jb&i<<77={w5j)zKU7zVRF4nXPVeXg11?)-Y@$J-2X z`6lKa%%24SAug#bQ$I%H&{AI@=0g<+b4H5krk1^e1SiyJ2X#9682$w;L1Gis$&iv` z=VZqWH~9qfaW(Hs;*LP}X;cE+Bk2*XZXqPmvCViycJJOZQ!LUp)gWA+GQr^X67ufS$Hw*d;O5K(5bAQAAg`6(V2sMF7F@RCH*+ zqKXxLr!tgL=Lzs*G?6NT4YjDn0~i~%QB93JTbgG)^k1#U{Rt>+>h1Jl$~%-x#fLW* zQsrdbBa+%e=)@5uhUn0?~xpIYh*yx&KlVKEj-Z=iBF|4OHI*sfe&M zu@j`UjU8z5F<3QT?50X55%3WaM@AJ8JW5p##c)CWj^SoLEi$F^ zhD?JhZVd0;iFiJE{qpI9lBU4(OaypA?>g{4L9ylK`4D z51AVbgGlCXSxIC*^n%G4!Si4ZPbc4yT{6r^qbrXOeOL{Bc(zjaCU`i6N$@D}PGNo1 z3ZX^YbV@_Jacq|UsON9|qn*N}sb)ro)AI)iW5SA9MET1FVvJmjgh(|# zxwq+CO8T#vVBAs{K0_zRP;`lF*+QTpPl;(j)5V@W%zZg-UhvrF9=N64?5fE;f$>psJP1H0GEpKIyOKOF$TdIL(#lK|$?R+Ua5f z1yLofKe3hI+_k<=;Q735s!ziwj5l&PnF@eK$Na~@$oj2AYdRpyNtzYqc}ANT6~*Vq z^(v!>g;M;;!|=%L=XJ*uz9Qt$qt3H<2FXX|3I;~KIa<{JVgqok;cWoCliz&rQN7}r ztW|wG0W$tMWe_p=R1hWvJs$PBGFVb4C416lZWU^w%NtYD-X_Qvl0;yCBJlx1YOvQ0 z;%ja=f!y4zjLaQh|_;V8kjo5>|sNsVN zl=3s<*Be2DY759c#FJvj7$Da1Fj5GmA+E1FCn6@yCuCu4{uG|^xrw0(DHn0EMdp^_ zq>=8^SN5-gBRDQ$Xfb@~<{HC#m1ehoL20tSJ~mH`wxUWN_`*@7KY{!7$4UAl!!Qhj zG2t6Icl`{Qis10SAiLg%cOYL&hr+;&bcJcjjjq|sAQ%#QXvz6s80GBT1S3Z#1MN~M zJSn2T2YLYTC5^h!<$<=LfgQuWEU?2lA?3dJJZ&hiFbSWbiU{gNKtz%|ODkA30`=In z3ZT1+eaPs7qd#stO!Jry5dBnbHaK2l?l#VhkpI9k;KFlpxx804wqzp(-NC~?%X}r8 z`Si~T%!RNC!410Tgk;a*F9ZDEDWei79bUGOLE_Dw6IhUsd;fmxs|O0TCxr4)OvVA~ zRW~^hdx_|mKe7SrR=@(|G=Z?R@^KMPi5>wzQgz|3yL#k267ch z*4p9YtIc4$V!$Q`=EdWh`#H{Ge)0_R6n?&O<)av^o1LjwK1eInCK#_5@k-^|3>E8+ zY-sF4yB$(@J>%j;!?YU)PLNmemzZ1%CV#{5`JS3?`P}4kpy1bhgf{UA{+WNvu|rGO z1Y0TSnlM}nBH1fOF`zeqtrC~PHj2@nHeJ30r)d@zKVb{+u zeZM8Zm}2>r5XNGe&qA6}(vOz$A^yHZi1_R1lV3-$5+YAtXmowaaqPar+QB)_+aBR3 z1cW$my&V%%!SCB}*!*gVeUDN}^kp5Dnsr`&6(M18%o1@17?TQ=AQ969q~N2l%CuR$ z0Vs16m*!9FEa)9j+^oKgNK}Z~Gkwdo(`EIVI#XeOJ#2Ueb2zv`=B*K=GDUa(C4O3t-z)77XK+ib_ zCUt}f7$U+;L#tSH#;e$h%}hM^=5HrK7O7-HBQa6uL05lNUJioVu<~*c7!iyvAQ^J8Hqdog3?>5oD3oZDLH+`>(SfL1(97K%a zhF6brQK29|mH|9-Q{6AWT=1~z?tYXUdA`qNdRPGLnNQePdzIL%oD$$SiOB2*Sqv{uAyc4bO(MapFh;Oa1%TV1 zSxT(Nv?YuKx=^YSpcr+ojj~E?YX@Q!UkG`P| z>>)riBb;)9EE#B*g$#t6yFO3+AMbew*OdeNXxN0JEshTnkH?UJI*rK&GrfJ-rUrslATf?mZhBacvwYCu+%o;c_bkKew;RjN(0cB~mbCKD!sf{v_MGcj8C&SiKDfCQCtjImsl^Wtoz3%l;t zOOJtmc1oXixXMBHBB_h(Eu-hhrIO1528H2*oCq+eHQQ7^1B5SKrCdUb)vkj9 z;5!@+!hdq4gh@ueCtXdUe&|(K?I942}lpJ7uyGk z;ry?Vo_<}>{|M<#p9tyk;V2|QI7Sa!+xU_b^CBS$c>K?h-cBMwxY}$Us^SZW-W1Yv z|_AxEO;>wiX?I4{xr$B%OiXjpHD#)HS~!OFTu}?O_N|=V07{SB9XT=Lx~t7uvY~X zZD`kNM7$|#d(Hwngg-xFnXk9ouyPFFRv;=AgNY!cmm5jU)Ek`LZjPPXot$E?Uf_0$ zUfP58#xx)a6N*-XMuOb}#FT=WddYl~qi64j@zXdnV#eYtV|5aC#+X4RLq;Pvfsz`- zRx!4z1Fkb|f9huxTx4le-ZXWD)JI)gRI=~&O%`{qu`o)>WT3i!4zh2e^O(h5ruj%Zqq;9S#nWdlM2e!}Eb3^C$U*I9 zi+(ECTxD;J05B83pR-|fJq)l64z+~sPV!Jm`A<;wZr*pSdmO}L{dfp9b zToKru>HSeGjQ5TUmS${*g5w8vz&e3!!AosjErzrw*}dk0WU6m=Ma<}_*0C0rVH?+T z8sN%$EQL5p;Rcrdp{XZQ+k8wSH=3pM@KIN5nPSJ5+mN_hn1V$o zP)8^6OD0a?juhNOgUOeVj|sLTnO8&G`=?IpszVjyPmcPn&|N0ti#4%ok4D%huw2V# z!*aQHPb*4s!0lmh-e3Pg@J_MmV2Y)@{*Gx`2gnCBo6O01_Zw;&_EbtHn-1SW+ z?1L#Z09-B$l*jS}Bk9OJy%v?6be5uVa zuF7t}t4g581dAuv`R6~+nL$hU8dWtJo$`VJI3or(_I-iNJ+hRgp7wUa>=s!X)VHK4 zMa5Rh;u{yF$m)iztp%xdub=$-ZH8frO{PF0!Y0@Q9G#t@!|I>^D;>$^8 zX913Mcm|s^hk7Su7(TS^2Zq>68#<~)Dx|6MgZB}@8xkxaP>DA~L>obK0sUo4X^?3y zpwvK8!Xl~90zb=E0ldCk+$+Mw1-KPnzleJY=m;xSd$sv6084e*@&aE+&pe<=U30eADLly*shA5W7Y?o1k?mxDhoViAujl7di ze-sl(WHXqMYYZX*e>zamgJz(MOuoL!4x14QVZQ%?mELV+@U@?T#NzQ@>#WKPA-I%0 z!8d&wYsSd8WiJra6xb4&HmqO_>A34!Mf_NbWt$@K#(OQnZ_R?`GVZ@V3wVKrvrl7r zQRR5{Bb4HO60D=Jodd7m#pexHRT{iCSQ(#-1Q$WM7aZo8qot$+3jl~W33-&l=oc=9 z6_2%GIq9=X?NSWsS1~JEfMC>d55T%Cb5ex3@H_F^6#_-~5Vb1R^<&1n;F}Oq1GSXTgnkgk2F}4saPrct3b%3$zQn2mx*+Sb z9C%Z63k(FO7xEiZL71x?6_KzxckI+zdcRUc04AhV-jW}-#RDM45lItY9ksV8>+q^X z7|@L2$eJu?r5L;f1rRfHj?B9iyiY#OU?EecMQUqf+DQvE;3e49_qLOEm+efJnkyIB zE^IT$%D@QF8575huaHH~wJc<6(K7uNT2kgVvY{GT>s{L26`umHsX-irdwwd$w#qx| z;B;Nzu#)RsHvE_$#-1TfAm5O?7Y};||8up|kLUnTqGS{X0LZ{|40K>aA()VvrYncq zUcb`6iX70#V4aI_J@ksLf?aGpipkhM%h;9wtJrm&WXm{&04m}dutzF_LnTQ?aGf>` z{=*4oSrVuQRREdYG+`^kACG;|Ebkl(nB<`PSt7w9_kZ=c{NQo?AhA)Yc}7E>@=#x9 zkPY@!g2x4iObmZe!otPyMfNqE& zE)7!tDhH&XFk_!|NK`;iDWhaumbgHSBanieJq_0(c#2d#Rztuy`{kPij&(Gj;Jqn@ z0Jz5Bj06vC7%ynXKZFWVA2N)BDBpKg2hKmp#b$5=z3PNoT zD8D0Kd0ooF90wM954iBjkTHw^3ht6N1&Qw70tT0~`O&OjVJI zIaa^3D4vKSS(%yP<6E~Tq?P;pNM)#*%j+J+DDXY_5UHJSlXMq-pP~^hf^VX6QR+!b zUTE8l$+|o%Yrazq9PD?n#+gLNOOd}i*2FR$)T)x?fiDp8MqO2wrxFlDgeJ^0mNG^~ zBIuBgZC=OnnRnW>lmctkq9$n#DpHC0*fgJHqGclP(s2nc#v}X1l-W)}#IPI6Zo;6E zI-z4*I!D*BM3umeyp(q12GQsJVr-#K6$l&dKX|qI9DD;~*V;NaPkrsE8NxhU6QU^c zGT*lYUO_^7USww6eoFeAKL84g<^5sjp|+u9C_D@DA}>$EH@LYBA_v0KhjtG#%5Y#)62$1`bK8f`Zyq_Y z-aD{QAGC#ebIqQ;07{(18fE`@^N%pB@_82XBMZ`Nzdw+by3}La|Hdq`_M({oszPtdwRwIw; zb7PKMz6?T;?}ouMZ>FILCqX!4+$z@AhQ`^zag=u&gppq~wv+X7b)LygYff4(Xg*+3iF3U^x0|l%3<-)C@`EhPffw00+ zVgYt_Mw0a)y2M=ah`9iJ5ukGpq>muc5+#kHhJ^kNfZe=!Ak71m>@ymVo-o!Tl$N!c^LAkB0!pagZ-ch)mD$eHiH`kCT2q0vQv0> z5f+&Dsop-v=4H&V+tMmx^JYe7zRIU5nBg8L{fmFj@t57ei_>(}fM;ixl75^K_Zwv6 z5#Xb}eyORGN`DO7yRiBPR$_-FQVw}HR9VJ!a_BchLvq-A@E2PpWu@(-hlbZI?V3R3 z0|R*Lr{FeWQ)!U}{p?nUC4dN$ezdfiXcp^W5N$XV4##$Iz11Ns+$uaPW`8MHKKw>3 zEW62J$!-udYU-}LZhH^0I zLhdxkLy;@4d|K`x4pp&uhI$3tFksbTvJs6!VKAg-iG*Tq9B5n2T9C}x#Pz8oyp`r$ zzLXts0L=_S!QtWV?I3cvx9J8!_4Y#+7?@!^+&~4_04?Ca40Dw9Fa0J*aC~iv6|B!2 zBiJr38NZNTR^Ub$pEFW>PzVJ;@K%;ca<0^2wV(Kk7E<|ZP+3V|g`pkp>`C|0L)9;-!C9GH z_$><=xTfn5xh_kZ#U)l?OaDSlF5kH+`Vn8CF-(7k(RIYDjUgc0no;K)i350p4qPlr z0~sIChk}Oc9AifYa+ozNPR_FJq!g`ja)_MSP&Ilf%Nb~bf<%(A@o%;wNf-+RvK&`% zR_Wj9^kC!Nz@IR&X}cb7-?G;bQDI!Ie3Pe8=U?sv4X7`GR|(Z&e|{}D&gep-lB$5^ z5YYJvnw$w)2?3jufHzt*B?0sl4tf$00&ez!J0ABuY+orVkYC8->5TlQEmsI9D9wC6@WEgj-AFlO8Qsm*FVswW0ru9PO?`90jvrg z1d%T9b^?cvZAA?&h$8IWqo5-PMiU+=Sk0B(_tfvy}reXz# zxiIOa^g(}f?RU4Ymg&ZT$gL2ZLk50 z?@>jE62YU4PWxjS`3CNa2EJK3N*p4`{0Ln-H*}fb;XdH+DYe7rxYX9n! z91*lwgSH|ybu+Kfb*Dp;CStI{fUPVow@7u#i0E=Rs0SblZ$hnTy9z#X=S4Fjxds9Z z<9(G#osRedk)+Jcn$MCFv@b@c(zG%!8>arFPmj6c=-@m(E^_oCf)mt$l3vlocVLw> z7XWxNs`NE&K^z(LheR&?5&#POQ%sqbH(QF`K;%vwd`u}BexMmS6VQ!x==+(p?26Qn z9KFLlLWO~i!WG@b*vlPw3Ry@$KQ1Bk*hP_Kw1m^I(NM3^O%+&?z{$`bGP(yCu$PI5w|HwNZHZxvnw9e$pxa64n*NgT?ORdY; z2dp8kEcA#3M6d?FBa=V_kbRQz$#aC68Rn2o&Hw>^owr$8>%miv$gO@SQ#NOtS8%!6 z7VJdfp*biwi&%cmt2lInxz+dT#7^_BE~z@p|R(}L+LGS_arwN?^%59}ml0>EP{5ra+8cl(heM2f~^}Y6eVJ4f@7p?a(Ya?}( zt$n!hRMYA|M~5RMJ_a1t@P`9Xd=6BAsg>%UWwFP zSY>0UwzwN^s_(MzC^MO>$cD0eaP*juXS7y7sZ&}tZ?Uv7(Ko?v$!rL497P{DAz_Oc zF)ISoOfN(Aq&MBPQ~ee^&*f7ahmW0suZVo1%LA*?!&exivemw&EFHLBVIM2i23edlEla)9 zs5M`z%e@~hkkXOk9f($VHC^%8?nQv@SOX4<7g^8xtG;nUxO(rlo9<~2VC)9mH7v_@ zf@U;7;?zE7!YQBar>dDQOiLeIqJm5-fwN6_ z3=16jWxO6fApn6{NUf1X&{8;oQUeb>h?2vM2Tmoxf_HL5``}%Y;5I@?^m6^Lf0fUC z$D3}|K5u!1o4Q~Pm+BqaKs8Z``Uc?OBcZRDNiQ~d2HyPHkcgsGl1|)*lSv!_AH_=F z{45?$BVPm$Oqwg6Y5Y3Qq8CNDK)*pAhX@#+1(6GxNBJe4qe}U!eNDj;FoooBagR$i zmLP9Rz40CKx4vXweLUH?HKEDed^WS8p6*q_Rm2&^(P9K;pc%=EUj6>iL*KX3-Z-9t zN>CJGeY?qd@-Il)3sM4(q@aO_{7Sh%L_U%okT=FKRbZ^Alj;7Acn>iOae;&Y@-LXp z&q}4M0HWI8wQ-vY^NylIrfwA=`B7rIrjVumjG%?i-qIa-`9=~MbjcVD4oGZlQjk{% za;H$vtcFxCdAZo8cP(Y44FrSVk;EIFRDfj4R3{8BF`(S+t}Qy18_zJF-F1EQVV%&8 zHwt=xpIrPFFMRCHheS=QO%mCbd^RK(>>W9N2nmpUZLcIia?#4J%cnAC)JqH(=a+zO zCBb0Zy_|itbg?<)u>4F|ioG)G%jsY1ZFCG`N~R7L8BWu?W!M7=5BfdW>$d9mV0-07 znK7iMO(>aJ7O!34=Dd`ds+qQvi>VwRxb_ix;TKKm%;)hsQb322xI?q(#`>96atqo2 zF6Bpc5m7uxm8qfGyhGqclposjOM8ixA|DYurv`1pgog%Gy#sX7-A=c^w3kbZoup%2@mdq>2 zC~L_iFujRDU^fTfL3)xfj19U!Ic>6G(+cCL7h)|CGmqibFQnlFM**$gdI+lrH4wnE zG8keT>P$=)trb`X8@RN^!gK`e&&IHX$C`Qw=wW0QBLSIrV|i?`872|VGXn%4D~uHd zxM*nkcI?Bp(uC{jcK-}RXud_c^PvO~>m-#sULcidDNlts?tjVq8rVJeb zJet%B*n(ga2!uCIVd7B-l_2UMq#ZOtrlo+YPCD-Quf6xV2g3kkpXWaNvG!X3TI*k> z%!v~;O~ssH3D6iq~E1OoiIBjUJM2l0b zvT2nnJuh=Xy5z8`Z5KLuR3pMq?Lvg$r-IxdL+TZCo$W;AHP3-RNW78METq?h+qhBh z7RwP)DYg?W-Z)BBTl%9%zx5xz$$JIssiZ))Dbs~A({HE+{8a3WvT3BhA>o21#2J%v z06DDKN$>X&euE^TyoCrmv#PJ)o+!VM5?-WeBk`P0)Bs{5c}u3klKhr<(YLK8Oo&ZR z?yj$~|7qC`T4rRYYL&)=BcVlBqSA`g*FkdXgf6Ew4McBhBDW5X5GQYw?75$R^;iGe zdY?U4TMxskLGLqf(I0jCbK$&=3c=s9O?-cF2BKAQ6l4_vt|(-u9a>>>(+)E{LZc$Q zMR`@mQE>G-$#RmV$;LOn+qYpuAk#MnY!jt3h5+!B$tdfe*CX`x@f@>{2aO^-j8&@m zxCZ%XU__MMZ6}3(WSz0s(ellofy7fQwz0QYagH z>M|qj$zqT^$lfH^U`e8$*nP3_h<{2q_=QYJF01w9zHwpSP*1Vk?@YYKL1G|2B^6`H}VJ>uZsGBCW2^#=MP75MH%711S% zt|P$3LXHzyf$w7T4#FU8iFG~-x~VST`x^^8Oq7;zB&D>(EAbYpcG6(f5l+WT6&T|T zllT%jED*gYe3Gch?cp{beHUfI6Xo9MFwmZzUr{Qi0to*~V6T=Z6X(PM`^l7S(GZxI z=rgWmnw~EM-ODVP=br+9Qk7DdBwjRo#-CI*x~FuSUxwWaxAAbX*Ex>Qe8pfB2dg8p zNm0?2*T7IqOUrQDq@`&y%BA(bgM8`0GVqUPbD-VxZODkD|O%x(IC|58H1HU~N_o;tgD^YVi$A0z|6wZb2W7Ax;f82tEE2V#bgT5stE z>KY>vBoIjd(`m}8U}n5Qx|-I>7(XrL_)pSeo=0|-xifud_Rb^>9qkgqf4ucz>YOqP zP90mkIDu}t_=W1?r3WeJ-Dpj@;t)Vuiovly9AQi{XTQ&sA@xzayD&H{6t~TC#?Y!G zGE$Unq#5LN&fJru6G}BY2J+?uQuQF2nI~+&C(VEj1TV{Gh>fNF9=JfUq30{=tvGnKhDxIYG4i4L|C21dF1SyxvP})c^|>=Qnri@O%eR`r;AS}g8#sUB@}2+35*s` zy11joRcs;I7QaRY0JFO=(3>vlk~*)Yy7K88TuGNwftzr0_^K}PO9A~dLmUhn55(-( zpMQOYs(Mbwg3)NG4iNk5oLUx7kG=@^YXsb3u(mYF$h`o8#5ynUP&ggpLOwz zk3Tqx=@lxz?4OJ>N<|-^@&W6l|GynlMcuo42ur9T-B%@KNoJ&{t&FWaSyhefNqf*u z5y>#;xTqN)*KS&bVdKDxY+rlt9%AKrOn?;8XN|c=A35F9v~X>}`Hu{|AZt%qyX_Vo z4UMWlm`_dMcm-{hvMM3e>*9=`nZ!5>E2Ih@_dv=4+9|W z3e8}jw=Et*V>Cd-^yWmQZFzKU)FC5Yfetfvs~2cV3sZs6KSU-ek>8fO6Iua7LD{xG zG@-Uc6H_Bx0tkS+0=%AUzE^ukOT4n09EhamaTIkA=;JaoT%du( zq-HjRs-bmyah1JTPGTg9JrlM4$L5oUnM-k^_xGR}CbJwB9&{DS;8UQF3x%U$f2tncwj48jkP)xW7vE!tVagMES?Y1S%vz&q74CNv znR4|V;mAsaCR_TvCbu(Dfd^f>kgNf-8aMxI{JLnkC{_coOsMT4L&DO&)K(Ag#;>ID zT^yn~QJo}*?!d8s?=Da}mk9boslx-l<~7xtXa$`q$~T6>&nT^GwTK1E_%hZw-}$Zp z0#_^se58VGF1hqypQ*03a1ISO*eZ&xqPV{EsXPIj`@hgc-_6dY#+Dt{`_50F;h53>qV4DD zft5@9Qbbg^rC0eB6YO%>Pca~_8jJz3=Xqxq$1g6N!ZoA4tk64Be!ne(`9r0UK^S9QPW=bW(!@5F}= z^-HEyA2KYCzyZTIF5J0gh(ExP_W#4=3_&AHS_>68u3vFml7Nnb=i~+W@|xT6GiljZ z9a3_t%fs&$P;4MbXU#RbKm7*J3TSW#977Vyw&nSon(Yj6wiA4=bXansI?IeUIbP|W zkDS)MQE_9JPNs`|x<@m=+R_Rn)G^p`7OkIkar(ab3UmsSqc*riw?Y;>2nmGcS~lq~ z$>bJ)L<})H$CU0Wb`$NC@8ug>D0hBdh`A*0Jiic{!WV>VsU01z#r6azvR!P#*`5uL z_f3Hwh%Z8+%Xm!P(fe;Y#`;UMsyU8O(bJ zQp+J!x4*aln>l$HEEn3AjdF^%xks}!AbWJJtLSN19HQ1>=npdVwjfvvU=Rn*#fMg0 zfg!d(IX)%;;?bGYO5oZznMNZzq`u+sR!4*go22=4^y}$qBfI0YX>)Fkpv)n1T`0}1H<3AynPJ9c8_4~%r~Di8GK zhdTT6zb+4SzDuQZ80V)~EIljyAe=q9X(xb2cW0r$+|{#cMPdHGHI3cSv!lotI)_I3 z3%^=loy}F%l!uAX8>wmlh}hIkQLcevzv%40V<~Q1UtN{WsU1;Ol+8szv;J}hpnb_n zH7d&GM+P?*`$HS1U(90fz;8jxftOeD#OiJom_hDldDiwr3$>ZGSNncXRZSDKfgNLG dsoY)Y>{6o^UjN(QHw_fJ(7-zfN!XfR`+w1RxmN%H literal 0 HcmV?d00001 diff --git a/app/init.php b/app/init.php index 72fe52e2b4..db4fe4d669 100644 --- a/app/init.php +++ b/app/init.php @@ -940,7 +940,7 @@ $register->set('smtp', function () { return $mail; }); $register->set('geodb', function () { - return new Reader(__DIR__ . '/assets/dbip/dbip-country-lite-2023-01.mmdb'); + return new Reader(__DIR__ . '/assets/dbip/dbip-country-lite-2024-02.mmdb'); }); $register->set('passwordsDictionary', function () { $content = \file_get_contents(__DIR__ . '/assets/security/10k-common-passwords'); From e2c6a2067a192095ef01bcffc65e63ab56c9a0a1 Mon Sep 17 00:00:00 2001 From: Bradley Schofield Date: Tue, 13 Feb 2024 09:39:09 +0000 Subject: [PATCH 61/87] Address comments --- src/Appwrite/Migration/Version/V20.php | 48 ++++++++++---------------- 1 file changed, 19 insertions(+), 29 deletions(-) diff --git a/src/Appwrite/Migration/Version/V20.php b/src/Appwrite/Migration/Version/V20.php index 6747c96f1e..caf3022804 100644 --- a/src/Appwrite/Migration/Version/V20.php +++ b/src/Appwrite/Migration/Version/V20.php @@ -27,7 +27,7 @@ class V20 extends Migration /** * Disable SubQueries for Performance. */ - foreach (['subQueryIndexes', 'subQueryPlatforms', 'subQueryDomains', 'subQueryKeys', 'subQueryWebhooks', 'subQuerySessions', 'subQueryTokens', 'subQueryMemberships', 'subQueryVariables'] as $name) { + foreach (['subQueryIndexes', 'subQueryPlatforms', 'subQueryDomains', 'subQueryKeys', 'subQueryWebhooks', 'subQuerySessions', 'subQueryTokens', 'subQueryMemberships', 'subQueryVariables', 'subQueryChallenges', 'subQueryProjectVariables', 'subQueryTargets', 'subQueryTopicTargets'] as $name) { Database::addFilter( $name, fn() => null, @@ -75,24 +75,25 @@ class V20 extends Migration }; // Support database array type migration (user collections) - $attributes = $this->projectDB->find('attributes', [ + foreach ( + $this->documentsIterator('attributes', [ Query::equal('array', [true]), - ]); - - foreach ($attributes as $attribute) { - $indexes = $this->projectDB->find('indexes', [ + ]) as $attribute + ) { + $foundIndex = false; + foreach ( + $this->documentsIterator('indexes', [ Query::equal('databaseInternalId', [$attribute['databaseInternalId']]), Query::equal('collectionInternalId', [$attribute['collectionInternalId']]), - ]); - $foundIndex = 0; - foreach ($indexes as $index) { + ]) as $index + ) { if (in_array($attribute['key'], $index['attributes'])) { $this->projectDB->deleteIndex($index['collectionId'], $index['_uid']); - $foundIndex = 1; + $foundIndex = true; } } - if ($foundIndex === 1) { - $this->projectDB->updateAttribute($attribute['collectionInternalId'], $attribute['key'], Database::VAR_STRING); + if ($foundIndex === true) { + $this->projectDB->updateAttribute($attribute['collectionInternalId'], $attribute['key'], $attribute['type']); } } @@ -105,17 +106,17 @@ class V20 extends Migration $this->projectDB->setNamespace("_$internalProjectId"); // Support database array type migration - $foundIndex = 0; + $foundIndex = false; foreach ($collection['attributes'] ?? [] as $attribute) { if ($attribute['array'] === true) { foreach ($collection['indexes'] ?? [] as $index) { if (in_array($attribute['$id'], $index['attributes'])) { $this->projectDB->deleteIndex($id, $index['$id']); - $foundIndex = 1; + $foundIndex = true; } } - if ($foundIndex === 1) { - $this->projectDB->updateAttribute($id, $attribute['$id'], Database::VAR_STRING); + if ($foundIndex === true) { + $this->projectDB->updateAttribute($id, $attribute['$id'], $attribute['type']); } } } @@ -157,7 +158,7 @@ class V20 extends Migration /** * Alter `signed` internal type on `value` attr */ - $this->projectDB->updateAttribute($id, 'value', null, null, null, null, true); + $this->projectDB->updateAttribute(collection: $id, id: 'value', signed: true); $this->projectDB->purgeCachedCollection($id); } catch (Throwable $th) { Console::warning("'type' from {$id}: {$th->getMessage()}"); @@ -256,14 +257,6 @@ class V20 extends Migration Console::warning("'oAuthProviders' from {$id}: {$th->getMessage()}"); } break; - case 'schedules': - try { - $this->createAttributeFromCollection($this->projectDB, $id, 'resourceCollection'); - $this->projectDB->purgeCachedCollection($id); - } catch (Throwable $th) { - Console::warning("'schedules' from {$id}: {$th->getMessage()}"); - } - break; case 'webhooks': try { $this->createAttributeFromCollection($this->projectDB, $id, 'enabled'); @@ -469,7 +462,7 @@ class V20 extends Migration Console::log("Migrating Collections of {$collectionTable} {$collection->getId()} ({$collection->getAttribute('name')})"); // Collection level - $collectionId = $collection->getId() ; + $collectionId = $collection->getId(); $collectionInternalId = $collection->getInternalId(); $this->migrateUsageMetrics("documents.$databaseId/$collectionId.count.total", "$databaseInternalId.$collectionInternalId.documents"); @@ -519,9 +512,6 @@ class V20 extends Migration */ $document->setAttribute('version', '1.5.0'); break; - case 'schedules': - $document->setAttribute('resourceCollection', 'functions'); - break; case 'users': if ($document->getAttribute('email', '') !== '') { $target = new Document([ From 1be56bf1183da944ee29bfeec060430d2e824917 Mon Sep 17 00:00:00 2001 From: Torsten Dittmann Date: Tue, 13 Feb 2024 12:09:52 +0000 Subject: [PATCH 62/87] feat: new console --- Dockerfile | 2 +- app/console | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index 968b0bb22a..2dcbbbb221 100755 --- a/Dockerfile +++ b/Dockerfile @@ -12,7 +12,7 @@ RUN composer install --ignore-platform-reqs --optimize-autoloader \ --no-plugins --no-scripts --prefer-dist \ `if [ "$TESTING" != "true" ]; then echo "--no-dev"; fi` -FROM --platform=$BUILDPLATFORM node:16.14.2-alpine3.15 as node +FROM --platform=$BUILDPLATFORM node:20.11.0-alpine3.19 as node COPY app/console /usr/local/src/console diff --git a/app/console b/app/console index 0a007a3b1b..01aa032dae 160000 --- a/app/console +++ b/app/console @@ -1 +1 @@ -Subproject commit 0a007a3b1b6eafc39dc19b7129f41643102f9676 +Subproject commit 01aa032daef600cc5e07f4be5019c2fbf8f3420b From e0fa3a41396a29d1f6603008ff58e81846d404f7 Mon Sep 17 00:00:00 2001 From: Jake Barnby Date: Wed, 14 Feb 2024 13:14:01 +1300 Subject: [PATCH 63/87] Revert console update --- app/console | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/console b/app/console index 8a267dc220..8c8f0b7ccb 160000 --- a/app/console +++ b/app/console @@ -1 +1 @@ -Subproject commit 8a267dc220417dc1778ec5b391f9feacb8e1fdc5 +Subproject commit 8c8f0b7ccb0d98e9561f03a6486de1e59f3b3b9d From 62fd796167fd97aee5422364f60d443ea6cde542 Mon Sep 17 00:00:00 2001 From: Torsten Dittmann Date: Wed, 14 Feb 2024 17:54:18 +0000 Subject: [PATCH 64/87] chore: update console --- app/console | 2 +- composer.json | 6 ------ composer.lock | 13 ++++++++++++- 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/app/console b/app/console index 74f09e341a..1d942975d1 160000 --- a/app/console +++ b/app/console @@ -1 +1 @@ -Subproject commit 74f09e341a9e8b10f66e1cfc5d990158b2f952b6 +Subproject commit 1d942975d16397a252a58ab730fb57819d679213 diff --git a/composer.json b/composer.json index 3e74c0ff56..a31599ce32 100644 --- a/composer.json +++ b/composer.json @@ -77,12 +77,6 @@ "webonyx/graphql-php": "14.11.*", "league/csv": "9.14.*" }, - "repositories": [ - { - "url": "https://github.com/appwrite/runtimes.git", - "type": "git" - } - ], "require-dev": { "ext-fileinfo": "*", "appwrite/sdk-generator": "0.36.*", diff --git a/composer.lock b/composer.lock index d67fc77aea..057d25becd 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "55d2ed1081591f2b3b3af9999236b109", + "content-hash": "609062319cc652e2760367f39604ac77", "packages": [ { "name": "adhocore/jwt", @@ -162,6 +162,12 @@ "url": "https://github.com/appwrite/runtimes.git", "reference": "214a37c2c66e0f2bc9c30fdfde66955d9fd084a1" }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/appwrite/runtimes/zipball/214a37c2c66e0f2bc9c30fdfde66955d9fd084a1", + "reference": "214a37c2c66e0f2bc9c30fdfde66955d9fd084a1", + "shasum": "" + }, "require": { "php": ">=8.0", "utopia-php/system": "0.7.*" @@ -176,6 +182,7 @@ "Appwrite\\Runtimes\\": "src/Runtimes" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], @@ -195,6 +202,10 @@ "php", "runtimes" ], + "support": { + "issues": "https://github.com/appwrite/runtimes/issues", + "source": "https://github.com/appwrite/runtimes/tree/0.13.2" + }, "time": "2023-11-22T15:36:00+00:00" }, { From e462e916f05596dcf3dfe586cd3e94199ec3b353 Mon Sep 17 00:00:00 2001 From: Jake Barnby Date: Thu, 15 Feb 2024 17:22:43 +1300 Subject: [PATCH 65/87] Add email, sms and push totals to topic --- app/config/collections.php | 24 +++++++++++++++++++- src/Appwrite/Utopia/Response/Model/Topic.php | 16 +++++++++++-- 2 files changed, 37 insertions(+), 3 deletions(-) diff --git a/app/config/collections.php b/app/config/collections.php index 54e72740de..9435387207 100644 --- a/app/config/collections.php +++ b/app/config/collections.php @@ -1903,7 +1903,29 @@ $commonCollections = [ 'filters' => [], ], [ - '$id' => ID::custom('total'), + '$id' => ID::custom('emailTotal'), + 'type' => Database::VAR_INTEGER, + 'format' => '', + 'size' => 0, + 'signed' => true, + 'required' => false, + 'default' => 0, + 'array' => false, + 'filters' => [], + ], + [ + '$id' => ID::custom('smsTotal'), + 'type' => Database::VAR_INTEGER, + 'format' => '', + 'size' => 0, + 'signed' => true, + 'required' => false, + 'default' => 0, + 'array' => false, + 'filters' => [], + ], + [ + '$id' => ID::custom('pushTotal'), 'type' => Database::VAR_INTEGER, 'format' => '', 'size' => 0, diff --git a/src/Appwrite/Utopia/Response/Model/Topic.php b/src/Appwrite/Utopia/Response/Model/Topic.php index 25889095fd..dd81430164 100644 --- a/src/Appwrite/Utopia/Response/Model/Topic.php +++ b/src/Appwrite/Utopia/Response/Model/Topic.php @@ -34,9 +34,21 @@ class Topic extends Model 'default' => '', 'example' => 'events', ]) - ->addRule('total', [ + ->addRule('emailTotal', [ 'type' => self::TYPE_INTEGER, - 'description' => 'Total count of subscribers subscribed to topic.', + 'description' => 'Total count of email subscribers subscribed to the topic.', + 'default' => 0, + 'example' => 100, + ]) + ->addRule('smsTotal', [ + 'type' => self::TYPE_INTEGER, + 'description' => 'Total count of SMS subscribers subscribed to the topic.', + 'default' => 0, + 'example' => 100, + ]) + ->addRule('pushTotal', [ + 'type' => self::TYPE_INTEGER, + 'description' => 'Total count of push subscribers subscribed to the topic.', 'default' => 0, 'example' => 100, ]) From afba7f75f08d2590fffeaf854d1c5b4efcaad7c4 Mon Sep 17 00:00:00 2001 From: Jake Barnby Date: Thu, 15 Feb 2024 17:23:30 +1300 Subject: [PATCH 66/87] Update appropriate total count when mutating topic --- app/config/errors.php | 9 +++++- app/controllers/api/messaging.php | 31 +++++++++++++++++++-- src/Appwrite/Extend/Exception.php | 4 +++ src/Appwrite/Platform/Workers/Deletes.php | 16 +++++++++-- src/Appwrite/Platform/Workers/Messaging.php | 2 +- 5 files changed, 56 insertions(+), 6 deletions(-) diff --git a/app/config/errors.php b/app/config/errors.php index 7932dcd3a9..f880ed9a02 100644 --- a/app/config/errors.php +++ b/app/config/errors.php @@ -872,7 +872,7 @@ return [ ], Exception::MESSAGE_MISSING_TARGET => [ 'name' => Exception::MESSAGE_MISSING_TARGET, - 'description' => 'Message with the requested ID is missing a target (Topics or Users or Targets).', + 'description' => 'Message with the requested ID has no recipients (topics or users or targets).', 'code' => 400, ], Exception::MESSAGE_ALREADY_SENT => [ @@ -920,4 +920,11 @@ return [ 'description' => 'Schedule with the requested ID could not be found.', 'code' => 404, ], + + /** Targets */ + Exception::TARGET_PROVIDER_INVALID_TYPE => [ + 'name' => Exception::PROVIDER_INVALID_TYPE, + 'description' => 'Target has an invalid provider type.', + 'code' => 400, + ], ]; diff --git a/app/controllers/api/messaging.php b/app/controllers/api/messaging.php index 0e865a7184..501c724127 100644 --- a/app/controllers/api/messaging.php +++ b/app/controllers/api/messaging.php @@ -2260,7 +2260,19 @@ App::post('/v1/messaging/topics/:topicId/subscribers') try { $subscriber = $dbForProject->createDocument('subscribers', $subscriber); - Authorization::skip(fn () => $dbForProject->increaseDocumentAttribute('topics', $topicId, 'total', 1)); + + $totalAttribute = match ($target->getAttribute('providerType')) { + MESSAGE_TYPE_EMAIL => 'emailTotal', + MESSAGE_TYPE_SMS => 'smsTotal', + MESSAGE_TYPE_PUSH => 'pushTotal', + default => throw new Exception(Exception::TARGET_PROVIDER_INVALID_TYPE), + }; + + Authorization::skip(fn () => $dbForProject->increaseDocumentAttribute( + 'topics', + $topicId, + $totalAttribute, + )); } catch (DuplicateException) { throw new Exception(Exception::SUBSCRIBER_ALREADY_EXISTS); } @@ -2512,8 +2524,23 @@ App::delete('/v1/messaging/topics/:topicId/subscribers/:subscriberId') throw new Exception(Exception::SUBSCRIBER_NOT_FOUND); } + $target = $dbForProject->getDocument('targets', $subscriber->getAttribute('targetId')); + $dbForProject->deleteDocument('subscribers', $subscriberId); - Authorization::skip(fn () => $dbForProject->decreaseDocumentAttribute('topics', $topicId, 'total', 1)); + + $totalAttribute = match ($target->getAttribute('providerType')) { + MESSAGE_TYPE_EMAIL => 'emailTotal', + MESSAGE_TYPE_SMS => 'smsTotal', + MESSAGE_TYPE_PUSH => 'pushTotal', + default => throw new Exception(Exception::TARGET_PROVIDER_INVALID_TYPE), + }; + + Authorization::skip(fn () => $dbForProject->decreaseDocumentAttribute( + 'topics', + $topicId, + $totalAttribute, + min: 0 + )); $queueForEvents ->setParam('topicId', $topic->getId()) diff --git a/src/Appwrite/Extend/Exception.php b/src/Appwrite/Extend/Exception.php index 98dee95c94..348fdacc0b 100644 --- a/src/Appwrite/Extend/Exception.php +++ b/src/Appwrite/Extend/Exception.php @@ -252,6 +252,7 @@ class Exception extends \Exception public const PROVIDER_NOT_FOUND = 'provider_not_found'; public const PROVIDER_ALREADY_EXISTS = 'provider_already_exists'; public const PROVIDER_INCORRECT_TYPE = 'provider_incorrect_type'; + public const PROVIDER_MISSING_CREDENTIALS = 'provider_missing_credentials'; /** Topic */ @@ -274,6 +275,9 @@ class Exception extends \Exception public const MESSAGE_TARGET_NOT_PUSH = 'message_target_not_push'; public const MESSAGE_MISSING_SCHEDULE = 'message_missing_schedule'; + /** Targets */ + public const TARGET_PROVIDER_INVALID_TYPE = 'target_provider_invalid_type'; + /** Schedules */ public const SCHEDULE_NOT_FOUND = 'schedule_not_found'; diff --git a/src/Appwrite/Platform/Workers/Deletes.php b/src/Appwrite/Platform/Workers/Deletes.php index 7a7070b9e4..ad804d6d05 100644 --- a/src/Appwrite/Platform/Workers/Deletes.php +++ b/src/Appwrite/Platform/Workers/Deletes.php @@ -3,6 +3,7 @@ namespace Appwrite\Platform\Workers; use Appwrite\Auth\Auth; +use Appwrite\Extend\Exception; use Executor\Executor; use Throwable; use Utopia\Abuse\Abuse; @@ -263,12 +264,23 @@ class Deletes extends Action Query::equal('targetInternalId', [$target->getInternalId()]) ], $dbForProject, - function (Document $subscriber) use ($dbForProject) { + function (Document $subscriber) use ($dbForProject, $target) { $topicId = $subscriber->getAttribute('topicId'); $topicInternalId = $subscriber->getAttribute('topicInternalId'); $topic = $dbForProject->getDocument('topics', $topicId); if (!$topic->isEmpty() && $topic->getInternalId() === $topicInternalId) { - $dbForProject->decreaseDocumentAttribute('topics', $topicId, 'total', min: 0); + $totalAttribute = match ($target->getAttribute('providerType')) { + MESSAGE_TYPE_EMAIL => 'emailTotal', + MESSAGE_TYPE_SMS => 'smsTotal', + MESSAGE_TYPE_PUSH => 'pushTotal', + default => throw new Exception('Invalid target provider type'), + }; + $dbForProject->decreaseDocumentAttribute( + 'topics', + $topicId, + $totalAttribute, + min: 0 + ); } } ); diff --git a/src/Appwrite/Platform/Workers/Messaging.php b/src/Appwrite/Platform/Workers/Messaging.php index 99730d475f..083eae4e0a 100644 --- a/src/Appwrite/Platform/Workers/Messaging.php +++ b/src/Appwrite/Platform/Workers/Messaging.php @@ -249,7 +249,7 @@ class Messaging extends Action } // Deleting push targets when token has expired. - if (($result['error'] ?? '') === 'Expired device token.') { + if (($result['error'] ?? '') === 'Expired device token') { $target = $dbForProject->findOne('targets', [ Query::equal('identifier', [$result['recipient']]) ]); From 142e92b4b84eceae51ba2aa5b7d1a778bbe021b4 Mon Sep 17 00:00:00 2001 From: Jake Barnby Date: Thu, 15 Feb 2024 17:30:09 +1300 Subject: [PATCH 67/87] Update tests --- tests/e2e/Services/GraphQL/Base.php | 12 +++++++++++ .../e2e/Services/Messaging/MessagingBase.php | 20 ++++++++++++++----- 2 files changed, 27 insertions(+), 5 deletions(-) diff --git a/tests/e2e/Services/GraphQL/Base.php b/tests/e2e/Services/GraphQL/Base.php index a0e720de88..d4f290c3db 100644 --- a/tests/e2e/Services/GraphQL/Base.php +++ b/tests/e2e/Services/GraphQL/Base.php @@ -2026,6 +2026,9 @@ trait Base messagingCreateTopic(topicId: $topicId, name: $name) { _id name + emailTotal + smsTotal + pushTotal } }'; case self::$LIST_TOPICS: @@ -2035,6 +2038,9 @@ trait Base topics { _id name + emailTotal + smsTotal + pushTotal } } }'; @@ -2043,6 +2049,9 @@ trait Base messagingGetTopic(topicId: $topicId) { _id name + emailTotal + smsTotal + pushTotal } }'; case self::$UPDATE_TOPIC: @@ -2050,6 +2059,9 @@ trait Base messagingUpdateTopic(topicId: $topicId, name: $name) { _id name + emailTotal + smsTotal + pushTotal } }'; case self::$DELETE_TOPIC: diff --git a/tests/e2e/Services/Messaging/MessagingBase.php b/tests/e2e/Services/Messaging/MessagingBase.php index d93506e146..956ac5f68a 100644 --- a/tests/e2e/Services/Messaging/MessagingBase.php +++ b/tests/e2e/Services/Messaging/MessagingBase.php @@ -355,7 +355,9 @@ trait MessagingBase 'x-appwrite-key' => $this->getProject()['apiKey'], ], [ 'queries' => [ - Query::equal('total', [0])->toString(), + Query::equal('emailTotal', [0])->toString(), + Query::equal('smsTotal', [0])->toString(), + Query::equal('pushTotal', [0])->toString(), ], ]); @@ -368,7 +370,9 @@ trait MessagingBase 'x-appwrite-key' => $this->getProject()['apiKey'], ], [ 'queries' => [ - Query::greaterThan('total', 0)->toString(), + Query::greaterThan('emailTotal', 0)->toString(), + Query::greaterThan('smsTotal', 0)->toString(), + Query::greaterThan('pushTotal', 0)->toString(), ], ]); @@ -390,7 +394,9 @@ trait MessagingBase ]); $this->assertEquals(200, $response['headers']['status-code']); $this->assertEquals('android-app', $response['body']['name']); - $this->assertEquals(0, $response['body']['total']); + $this->assertEquals(0, $response['body']['emailTotal']); + $this->assertEquals(0, $response['body']['smsTotal']); + $this->assertEquals(0, $response['body']['pushTotal']); } /** @@ -446,7 +452,9 @@ trait MessagingBase $this->assertEquals(200, $topic['headers']['status-code']); $this->assertEquals('android-app', $topic['body']['name']); - $this->assertEquals(1, $topic['body']['total']); + $this->assertEquals(1, $topic['body']['emailTotal']); + $this->assertEquals(0, $topic['body']['smsTotal']); + $this->assertEquals(0, $topic['body']['pushTotal']); $response2 = $this->client->call(Client::METHOD_POST, '/messaging/topics/' . $topics['private']['$id'] . '/subscribers', \array_merge([ 'content-type' => 'application/json', @@ -695,7 +703,9 @@ trait MessagingBase $this->assertEquals(200, $topic['headers']['status-code']); $this->assertEquals('android-app', $topic['body']['name']); - $this->assertEquals(0, $topic['body']['total']); + $this->assertEquals(0, $topic['body']['emailTotal']); + $this->assertEquals(0, $topic['body']['smsTotal']); + $this->assertEquals(0, $topic['body']['pushTotal']); } /** From 5f59f4c5c8bfcd74d9b30e73649c02916d5ce4f0 Mon Sep 17 00:00:00 2001 From: Jake Barnby Date: Thu, 15 Feb 2024 17:56:06 +1300 Subject: [PATCH 68/87] Fix syntax error --- app/config/errors.php | 2 +- app/controllers/api/messaging.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/config/errors.php b/app/config/errors.php index f880ed9a02..40f6ad018f 100644 --- a/app/config/errors.php +++ b/app/config/errors.php @@ -923,7 +923,7 @@ return [ /** Targets */ Exception::TARGET_PROVIDER_INVALID_TYPE => [ - 'name' => Exception::PROVIDER_INVALID_TYPE, + 'name' => Exception::TARGET_PROVIDER_INVALID_TYPE, 'description' => 'Target has an invalid provider type.', 'code' => 400, ], diff --git a/app/controllers/api/messaging.php b/app/controllers/api/messaging.php index 501c724127..8e6c73f3bc 100644 --- a/app/controllers/api/messaging.php +++ b/app/controllers/api/messaging.php @@ -2323,7 +2323,7 @@ App::get('/v1/messaging/topics/:topicId/subscribers') throw new Exception(Exception::TOPIC_NOT_FOUND); } - \array_push($queries, Query::equal('topicInternalId', [$topic->getInternalId()])); + $queries[] = Query::equal('topicInternalId', [$topic->getInternalId()]); /** * Get cursor document if there was a cursor query, we use array_filter and reset for reference $cursor to $queries From d82c7c24c4f506ada50068e509aa568b6f999c74 Mon Sep 17 00:00:00 2001 From: Jake Barnby Date: Thu, 15 Feb 2024 19:35:47 +1300 Subject: [PATCH 69/87] Fix allowed query attributes --- src/Appwrite/Utopia/Database/Validator/Queries/Topics.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/Appwrite/Utopia/Database/Validator/Queries/Topics.php b/src/Appwrite/Utopia/Database/Validator/Queries/Topics.php index 27c818d319..b73d93470f 100644 --- a/src/Appwrite/Utopia/Database/Validator/Queries/Topics.php +++ b/src/Appwrite/Utopia/Database/Validator/Queries/Topics.php @@ -7,7 +7,9 @@ class Topics extends Base public const ALLOWED_ATTRIBUTES = [ 'name', 'description', - 'total' + 'emailTotal', + 'smsTotal', + 'pushTotal', ]; /** From 0297a0754372473693de3ad79ab9ccf8a678eb4c Mon Sep 17 00:00:00 2001 From: Jake Barnby Date: Thu, 15 Feb 2024 20:27:40 +1300 Subject: [PATCH 70/87] Update messaging lib --- composer.lock | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/composer.lock b/composer.lock index 057d25becd..3956a87327 100644 --- a/composer.lock +++ b/composer.lock @@ -1911,16 +1911,16 @@ }, { "name": "utopia-php/messaging", - "version": "0.9.0", + "version": "0.9.1", "source": { "type": "git", "url": "https://github.com/utopia-php/messaging.git", - "reference": "df54ba51570e886724590edeb03dbd455bb0464d" + "reference": "7beec07684e9e1dfcf4ab5b1ba731fa396dccbdf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/utopia-php/messaging/zipball/df54ba51570e886724590edeb03dbd455bb0464d", - "reference": "df54ba51570e886724590edeb03dbd455bb0464d", + "url": "https://api.github.com/repos/utopia-php/messaging/zipball/7beec07684e9e1dfcf4ab5b1ba731fa396dccbdf", + "reference": "7beec07684e9e1dfcf4ab5b1ba731fa396dccbdf", "shasum": "" }, "require": { @@ -1955,9 +1955,9 @@ ], "support": { "issues": "https://github.com/utopia-php/messaging/issues", - "source": "https://github.com/utopia-php/messaging/tree/0.9.0" + "source": "https://github.com/utopia-php/messaging/tree/0.9.1" }, - "time": "2024-01-31T11:51:27+00:00" + "time": "2024-02-15T03:44:44+00:00" }, { "name": "utopia-php/migration", @@ -2779,16 +2779,16 @@ "packages-dev": [ { "name": "appwrite/sdk-generator", - "version": "0.36.2", + "version": "0.36.3", "source": { "type": "git", "url": "https://github.com/appwrite/sdk-generator.git", - "reference": "0aa67479d75f0e0cb7b60454031534d7f0abaece" + "reference": "8d308f7f492545da3e51ea5b91c0778392c40b93" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/appwrite/sdk-generator/zipball/0aa67479d75f0e0cb7b60454031534d7f0abaece", - "reference": "0aa67479d75f0e0cb7b60454031534d7f0abaece", + "url": "https://api.github.com/repos/appwrite/sdk-generator/zipball/8d308f7f492545da3e51ea5b91c0778392c40b93", + "reference": "8d308f7f492545da3e51ea5b91c0778392c40b93", "shasum": "" }, "require": { @@ -2824,9 +2824,9 @@ "description": "Appwrite PHP library for generating API SDKs for multiple programming languages and platforms", "support": { "issues": "https://github.com/appwrite/sdk-generator/issues", - "source": "https://github.com/appwrite/sdk-generator/tree/0.36.2" + "source": "https://github.com/appwrite/sdk-generator/tree/0.36.3" }, - "time": "2024-01-19T01:04:35+00:00" + "time": "2024-02-14T06:33:38+00:00" }, { "name": "doctrine/deprecations", From 14ecbd6658254527666f80b3644f3263c9b85c52 Mon Sep 17 00:00:00 2001 From: Torsten Dittmann Date: Thu, 15 Feb 2024 11:26:34 +0000 Subject: [PATCH 71/87] fix: 2fa endpoint params --- app/config/specs/open-api3-latest-client.json | 2 +- .../specs/open-api3-latest-console.json | 2 +- app/config/specs/open-api3-latest-server.json | 2 +- app/config/specs/swagger2-latest-client.json | 2 +- app/config/specs/swagger2-latest-console.json | 2 +- app/config/specs/swagger2-latest-server.json | 2 +- app/controllers/api/account.php | 66 +++++++++---------- app/controllers/api/users.php | 20 +++--- src/Appwrite/Utopia/Response.php | 12 ++-- .../{MFAProviders.php => MFAFactors.php} | 6 +- .../Model/{MFAProvider.php => MFAType.php} | 6 +- 11 files changed, 60 insertions(+), 62 deletions(-) rename src/Appwrite/Utopia/Response/Model/{MFAProviders.php => MFAFactors.php} (90%) rename src/Appwrite/Utopia/Response/Model/{MFAProvider.php => MFAType.php} (91%) diff --git a/app/config/specs/open-api3-latest-client.json b/app/config/specs/open-api3-latest-client.json index 02fe747b0e..2d06c0b92d 100644 --- a/app/config/specs/open-api3-latest-client.json +++ b/app/config/specs/open-api3-latest-client.json @@ -1 +1 @@ -{"openapi":"3.0.0","info":{"version":"1.4.13","title":"Appwrite","description":"Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https:\/\/appwrite.io\/docs](https:\/\/appwrite.io\/docs)","termsOfService":"https:\/\/appwrite.io\/policy\/terms","contact":{"name":"Appwrite Team","url":"https:\/\/appwrite.io\/support","email":"team@appwrite.io"},"license":{"name":"BSD-3-Clause","url":"https:\/\/raw.githubusercontent.com\/appwrite\/appwrite\/master\/LICENSE"}},"servers":[{"url":"https:\/\/HOSTNAME\/v1"}],"paths":{"\/account":{"get":{"summary":"Get account","operationId":"accountGet","tags":["account"],"description":"Get the currently logged in user.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"get","weight":22,"cookies":false,"type":"","demo":"account\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]},"post":{"summary":"Create account","operationId":"accountCreate","tags":["account"],"description":"Use this endpoint to allow a new user to register a new account in your project. After the user registration completes successfully, you can use the [\/account\/verfication](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createVerification) route to start verifying the user email address. To allow the new user to login to their new account, you need to create a new [account session](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createEmailSession).","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"create","weight":7,"cookies":false,"type":"","demo":"account\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"New user password. Must be between 8 and 256 chars.","x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/account\/email":{"patch":{"summary":"Update email","operationId":"accountUpdateEmail","tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateEmail","weight":29,"cookies":false,"type":"","demo":"account\/update-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","x-example":"password"}},"required":["email","password"]}}}}}},"\/account\/identities":{"get":{"summary":"List Identities","operationId":"accountListIdentities","tags":["account"],"description":"Get the list of identities for the currently logged in user.","responses":{"200":{"description":"Identities List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/identityList"}}}}},"x-appwrite":{"method":"listIdentities","weight":13,"cookies":false,"type":"","demo":"account\/list-identities.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-identities.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/identities","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, provider, providerUid, providerEmail, providerAccessTokenExpiry","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/identities\/{identityId}":{"delete":{"summary":"Delete identity","operationId":"accountDeleteIdentity","tags":["account"],"description":"Delete an identity by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIdentity","weight":14,"cookies":false,"type":"","demo":"account\/delete-identity.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-identity.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"identityId","description":"Identity ID.","required":true,"schema":{"type":"string","x-example":"[IDENTITY_ID]"},"in":"path"}]}},"\/account\/jwt":{"post":{"summary":"Create JWT","operationId":"accountCreateJWT","tags":["account"],"description":"Use this endpoint to create a JSON Web Token. You can use the resulting JWT to authenticate on behalf of the current user when working with the Appwrite server-side API and SDKs. The JWT secret is valid for 15 minutes from its creation and will be invalid if the user will logout in that time frame.","responses":{"201":{"description":"JWT","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/jwt"}}}}},"x-appwrite":{"method":"createJWT","weight":21,"cookies":false,"type":"","demo":"account\/create-j-w-t.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-jwt.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"accounts.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"List logs","operationId":"accountListLogs","tags":["account"],"description":"Get the list of latest security activity logs for the currently logged in user. Each log returns user IP address, location and date and time of log.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listLogs","weight":25,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/mfa":{"patch":{"summary":"Update MFA","operationId":"accountUpdateMFA","tags":["account"],"description":"","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateMFA","weight":42,"cookies":false,"type":"","demo":"account\/update-m-f-a.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-mfa.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"mfa":{"type":"boolean","description":"Enable or disable MFA.","x-example":false}},"required":["mfa"]}}}}}},"\/account\/mfa\/challenge":{"post":{"summary":"Create MFA Challenge","operationId":"accountCreateChallenge","tags":["account"],"description":"","responses":{"201":{"description":"MFA Challenge","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/mfaChallenge"}}}}},"x-appwrite":{"method":"createChallenge","weight":47,"cookies":false,"type":"","demo":"account\/create-challenge.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-challenge.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},token:{param-token}","scope":"accounts.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"provider":{"type":"string","description":"provider.","x-example":"totp","enum":["totp","phone","email"],"x-enum-name":"AuthenticatorProvider","x-enum-keys":[]}},"required":["provider"]}}}}},"put":{"summary":"Create MFA Challenge (confirmation)","operationId":"accountUpdateChallenge","tags":["account"],"description":"","responses":{"204":{"description":"No content","content":{"":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateChallenge","weight":48,"cookies":false,"type":"","demo":"account\/update-challenge.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-challenge.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"challengeId":{"type":"string","description":"Valid verification token.","x-example":"[CHALLENGE_ID]"},"otp":{"type":"string","description":"Valid verification token.","x-example":"[OTP]"}},"required":["challengeId","otp"]}}}}}},"\/account\/mfa\/factors":{"get":{"summary":"List Factors","operationId":"accountListFactors","tags":["account"],"description":"Get the currently logged in user.","responses":{"200":{"description":"MFAProviders","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/mfaProviders"}}}}},"x-appwrite":{"method":"listFactors","weight":43,"cookies":false,"type":"","demo":"account\/list-factors.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/account\/mfa\/{factor}":{"post":{"summary":"Add Authenticator","operationId":"accountAddAuthenticator","tags":["account"],"description":"","responses":{"200":{"description":"MFAProvider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/mfaProvider"}}}}},"x-appwrite":{"method":"addAuthenticator","weight":44,"cookies":false,"type":"","demo":"account\/add-authenticator.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-mfa.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"factor","description":"Factor.","required":true,"schema":{"type":"string","x-example":"totp","enum":["totp"],"x-enum-name":"AuthenticatorFactor","x-enum-keys":[]},"in":"path"}]},"put":{"summary":"Verify Authenticator","operationId":"accountVerifyAuthenticator","tags":["account"],"description":"","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"verifyAuthenticator","weight":45,"cookies":false,"type":"","demo":"account\/verify-authenticator.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-mfa.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"factor","description":"Factor.","required":true,"schema":{"type":"string","x-example":"totp","enum":["totp"],"x-enum-name":"AuthenticatorFactor","x-enum-keys":[]},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"otp":{"type":"string","description":"Valid verification token.","x-example":"[OTP]"}},"required":["otp"]}}}}}},"\/account\/mfa\/{provider}":{"delete":{"summary":"Delete Authenticator","operationId":"accountDeleteAuthenticator","tags":["account"],"description":"","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"deleteAuthenticator","weight":46,"cookies":false,"type":"","demo":"account\/delete-authenticator.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-mfa.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"provider","description":"Provider.","required":true,"schema":{"type":"string","x-example":"totp","enum":["totp"],"x-enum-name":"AuthenticatorProvider","x-enum-keys":[]},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"otp":{"type":"string","description":"Valid verification token.","x-example":"[OTP]"}},"required":["otp"]}}}}}},"\/account\/name":{"patch":{"summary":"Update name","operationId":"accountUpdateName","tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateName","weight":27,"cookies":false,"type":"","demo":"account\/update-name.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-name.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["name"]}}}}}},"\/account\/password":{"patch":{"summary":"Update password","operationId":"accountUpdatePassword","tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePassword","weight":28,"cookies":false,"type":"","demo":"account\/update-password.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-password.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"password":{"type":"string","description":"New user password. Must be at least 8 chars.","x-example":null},"oldPassword":{"type":"string","description":"Current user password. Must be at least 8 chars.","x-example":"password"}},"required":["password"]}}}}}},"\/account\/phone":{"patch":{"summary":"Update phone","operationId":"accountUpdatePhone","tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createPhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePhone","weight":30,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","x-example":"password"}},"required":["phone","password"]}}}}}},"\/account\/prefs":{"get":{"summary":"Get account preferences","operationId":"accountGetPrefs","tags":["account"],"description":"Get the preferences as a key-value object for the currently logged in user.","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"getPrefs","weight":23,"cookies":false,"type":"","demo":"account\/get-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/prefs","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]},"patch":{"summary":"Update preferences","operationId":"accountUpdatePrefs","tags":["account"],"description":"Update currently logged in user account preferences. The object you pass is stored as is, and replaces any previous value. The maximum allowed prefs size is 64kB and throws error if exceeded.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePrefs","weight":31,"cookies":false,"type":"","demo":"account\/update-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/prefs","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"prefs":{"type":"object","description":"Prefs key-value JSON object.","x-example":"{}"}},"required":["prefs"]}}}}}},"\/account\/recovery":{"post":{"summary":"Create password recovery","operationId":"accountCreateRecovery","tags":["account"],"description":"Sends the user an email with a temporary secret key for password reset. When the user clicks the confirmation link he is redirected back to your app password reset URL with the secret key and email address values attached to the URL query string. Use the query string params to submit a request to the [PUT \/account\/recovery](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateRecovery) endpoint to complete the process. The verification link sent to the user's email address is valid for 1 hour.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createRecovery","weight":36,"cookies":false,"type":"","demo":"account\/create-recovery.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-recovery.md","rate-limit":10,"rate-time":3600,"rate-key":["url:{url},email:{param-email}","ip:{ip}"],"scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"url":{"type":"string","description":"URL to redirect the user back to your app from the recovery email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"}},"required":["email","url"]}}}}},"put":{"summary":"Create password recovery (confirmation)","operationId":"accountUpdateRecovery","tags":["account"],"description":"Use this endpoint to complete the user account password reset. Both the **userId** and **secret** arguments will be passed as query parameters to the redirect URL you have provided when sending your request to the [POST \/account\/recovery](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createRecovery) endpoint.\n\nPlease note that in order to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) the only valid redirect URLs are the ones from domains you have set when adding your platforms in the console interface.","responses":{"200":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"updateRecovery","weight":37,"cookies":false,"type":"","demo":"account\/update-recovery.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-recovery.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid reset token.","x-example":"[SECRET]"},"password":{"type":"string","description":"New user password. Must be between 8 and 256 chars.","x-example":null}},"required":["userId","secret","password"]}}}}}},"\/account\/sessions":{"get":{"summary":"List sessions","operationId":"accountListSessions","tags":["account"],"description":"Get the list of active sessions across different devices for the currently logged in user.","responses":{"200":{"description":"Sessions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/sessionList"}}}}},"x-appwrite":{"method":"listSessions","weight":24,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/sessions","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]},"delete":{"summary":"Delete sessions","operationId":"accountDeleteSessions","tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":35,"cookies":false,"type":"","demo":"account\/delete-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-sessions.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/account\/sessions\/anonymous":{"post":{"summary":"Create anonymous session","operationId":"accountCreateAnonymousSession","tags":["account"],"description":"Use this endpoint to allow a new user to register an anonymous account in your project. This route will also create a new session for the user. To allow the new user to convert an anonymous account to a normal account, you need to update its [email and password](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateEmail) or create an [OAuth2 session](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#CreateOAuth2Session).","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"createAnonymousSession","weight":20,"cookies":false,"type":"","demo":"account\/create-anonymous-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-anonymous.md","rate-limit":50,"rate-time":3600,"rate-key":"ip:{ip}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/sessions\/email":{"post":{"summary":"Create email password session","operationId":"accountCreateEmailPasswordSession","tags":["account"],"description":"Allow the user to login into their account by providing a valid email and password combination. This route will create a new session for the user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"createEmailPasswordSession","weight":8,"cookies":false,"type":"","demo":"account\/create-email-password-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-email-password.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","x-example":"password"}},"required":["email","password"]}}}}}},"\/account\/sessions\/magic-url":{"put":{"summary":"Create session (deprecated)","operationId":"accountUpdateMagicURLSession","tags":["account"],"description":"Use this endpoint to create a session from token. Provide the **userId** and **secret** parameters from the successful response of authentication flows initiated by token creation. For example, magic URL and phone login.","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateMagicURLSession","weight":17,"cookies":false,"type":"","demo":"account\/update-magic-u-r-l-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session.md","rate-limit":10,"rate-time":3600,"rate-key":"ip:{ip},userId:{param-userId}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/account\/sessions\/oauth2\/{provider}":{"get":{"summary":"Create OAuth2 session","operationId":"accountCreateOAuth2Session","tags":["account"],"description":"Allow the user to login to their account using the OAuth2 provider of their choice. Each OAuth2 provider should be enabled from the Appwrite console first. Use the success and failure arguments to provide a redirect URL's back to your app when login is completed.\n\nIf there is already an active session, the new session will be attached to the logged-in account. If there are no active sessions, the server will attempt to look for a user with the same email address as the email received from the OAuth2 provider and attach the new session to the existing user. If no matching user is found - the server will create a new user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).\n","responses":{"301":{"description":"File"}},"x-appwrite":{"method":"createOAuth2Session","weight":9,"cookies":false,"type":"webAuth","demo":"account\/create-o-auth2session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-oauth2.md","rate-limit":50,"rate-time":3600,"rate-key":"ip:{ip}","scope":"sessions.write","platforms":["client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"provider","description":"OAuth2 Provider. Currently, supported providers are: amazon, apple, auth0, authentik, autodesk, bitbucket, bitly, box, dailymotion, discord, disqus, dropbox, etsy, facebook, github, gitlab, google, linkedin, microsoft, notion, oidc, okta, paypal, paypalSandbox, podio, salesforce, slack, spotify, stripe, tradeshift, tradeshiftBox, twitch, wordpress, yahoo, yammer, yandex, zoho, zoom.","required":true,"schema":{"type":"string","x-example":"amazon","enum":["amazon","apple","auth0","authentik","autodesk","bitbucket","bitly","box","dailymotion","discord","disqus","dropbox","etsy","facebook","github","gitlab","google","linkedin","microsoft","notion","oidc","okta","paypal","paypalSandbox","podio","salesforce","slack","spotify","stripe","tradeshift","tradeshiftBox","twitch","wordpress","yahoo","yammer","yandex","zoho","zoom","mock"],"x-enum-name":"OAuthProvider","x-enum-keys":[]},"in":"path"},{"name":"success","description":"URL to redirect back to your app after a successful login attempt. Only URLs from hostnames in your project's platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","required":false,"schema":{"type":"string","format":"url","x-example":"https:\/\/example.com","default":""},"in":"query"},{"name":"failure","description":"URL to redirect back to your app after a failed login attempt. Only URLs from hostnames in your project's platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","required":false,"schema":{"type":"string","format":"url","x-example":"https:\/\/example.com","default":""},"in":"query"},{"name":"token","description":"Include token credentials in the final redirect, useful for server-side integrations, or when cookies are not available.","required":false,"schema":{"type":"boolean","x-example":false,"default":false},"in":"query"},{"name":"scopes","description":"A list of custom OAuth2 scopes. Check each provider internal docs for a list of supported scopes. Maximum of 100 scopes are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/sessions\/token":{"post":{"summary":"Create session","operationId":"accountCreateSession","tags":["account"],"description":"Use this endpoint to create a session from token. Provide the **userId** and **secret** parameters from the successful response of authentication flows initiated by token creation. For example, magic URL and phone login.","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"createSession","weight":18,"cookies":false,"type":"","demo":"account\/create-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session.md","rate-limit":10,"rate-time":3600,"rate-key":"ip:{ip},userId:{param-userId}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Secret of a token generated by login methods. For example, the `createMagicURLToken` or `createPhoneToken` methods.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/account\/sessions\/{sessionId}":{"get":{"summary":"Get session","operationId":"accountGetSession","tags":["account"],"description":"Use this endpoint to get a logged in user's session using a Session ID. Inputting 'current' will return the current session being used.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"getSession","weight":26,"cookies":false,"type":"","demo":"account\/get-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-session.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/sessions","offline-key":"{sessionId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to get the current device session.","required":true,"schema":{"type":"string","x-example":"[SESSION_ID]"},"in":"path"}]},"patch":{"summary":"Update (or renew) a session","operationId":"accountUpdateSession","tags":["account"],"description":"Extend session's expiry to increase it's lifespan. Extending a session is useful when session length is short such as 5 minutes.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateSession","weight":34,"cookies":false,"type":"","demo":"account\/update-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-session.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to update the current device session.","required":true,"schema":{"type":"string","x-example":"[SESSION_ID]"},"in":"path"}]},"delete":{"summary":"Delete session","operationId":"accountDeleteSession","tags":["account"],"description":"Logout the user. Use 'current' as the session ID to logout on this device, use a session ID to logout on another device. If you're looking to logout the user on all devices, use [Delete Sessions](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#deleteSessions) instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSession","weight":33,"cookies":false,"type":"","demo":"account\/delete-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-session.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to delete the current device session.","required":true,"schema":{"type":"string","x-example":"[SESSION_ID]"},"in":"path"}]}},"\/account\/status":{"patch":{"summary":"Update status","operationId":"accountUpdateStatus","tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateStatus","weight":32,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/account\/targets\/push":{"post":{"summary":"Create a push target","operationId":"accountCreatePushTarget","tags":["account"],"description":"","responses":{"201":{"description":"Target","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/target"}}}}},"x-appwrite":{"method":"createPushTarget","weight":50,"cookies":false,"type":"","demo":"account\/create-push-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"targetId":{"type":"string","description":"Target ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[TARGET_ID]"},"identifier":{"type":"string","description":"The target identifier (token, email, phone etc.)","x-example":"[IDENTIFIER]"},"providerId":{"type":"string","description":"Provider ID. Message will be sent to this target from the specified provider ID. If no provider ID is set the first setup provider will be used.","x-example":"[PROVIDER_ID]"}},"required":["targetId","identifier"]}}}}}},"\/account\/targets\/{targetId}\/push":{"put":{"summary":"Update a push target","operationId":"accountUpdatePushTarget","tags":["account"],"description":"","responses":{"200":{"description":"Target","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/target"}}}}},"x-appwrite":{"method":"updatePushTarget","weight":51,"cookies":false,"type":"","demo":"account\/update-push-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[]}],"parameters":[{"name":"targetId","description":"Target ID.","required":true,"schema":{"type":"string","x-example":"[TARGET_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"identifier":{"type":"string","description":"The target identifier (token, email, phone etc.)","x-example":"[IDENTIFIER]"}},"required":["identifier"]}}}}},"delete":{"summary":"Delete a push target","operationId":"accountDeletePushTarget","tags":["account"],"description":"","responses":{"204":{"description":"No content","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/target"}}}}},"x-appwrite":{"method":"deletePushTarget","weight":52,"cookies":false,"type":"","demo":"account\/delete-push-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[]}],"parameters":[{"name":"targetId","description":"Target ID.","required":true,"schema":{"type":"string","x-example":"[TARGET_ID]"},"in":"path"}]}},"\/account\/tokens\/email":{"post":{"summary":"Create email token (OTP)","operationId":"accountCreateEmailToken","tags":["account"],"description":"Sends the user an email with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [POST \/v1\/account\/sessions\/token](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createSession) endpoint to complete the login process. The secret sent to the user's email is valid for 15 minutes.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createEmailToken","weight":16,"cookies":false,"type":"","demo":"account\/create-email-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-token-email.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"phrase":{"type":"boolean","description":"Toggle for security phrase. If enabled, email will be send with a randomly generated phrase and the phrase will also be included in the response. Confirming phrases match increases the security of your authentication flow.","x-example":false}},"required":["userId","email"]}}}}}},"\/account\/tokens\/magic-url":{"post":{"summary":"Create magic URL token","operationId":"accountCreateMagicURLToken","tags":["account"],"description":"Sends the user an email with a secret key for creating a session. If the provided user ID has not been registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [POST \/v1\/account\/sessions\/token](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createSession) endpoint to complete the login process. The link sent to the user's email address is valid for 1 hour. If you are on a mobile device you can leave the URL parameter empty, so that the login completion will be handled by your Appwrite instance by default.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).\n","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createMagicURLToken","weight":15,"cookies":false,"type":"","demo":"account\/create-magic-u-r-l-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-token-magic-url.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"url":{"type":"string","description":"URL to redirect the user back to your app from the magic URL login. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"},"phrase":{"type":"boolean","description":"Toggle for security phrase. If enabled, email will be send with a randomly generated phrase and the phrase will also be included in the response. Confirming phrases match increases the security of your authentication flow.","x-example":false}},"required":["userId","email"]}}}}}},"\/account\/tokens\/phone":{"post":{"summary":"Create phone token","operationId":"accountCreatePhoneToken","tags":["account"],"description":"Sends the user an SMS with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [POST \/v1\/account\/sessions\/token](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createSession) endpoint to complete the login process. The secret sent to the user's phone is valid for 15 minutes.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createPhoneToken","weight":19,"cookies":false,"type":"","demo":"account\/create-phone-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-token-phone.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},phone:{param-phone}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"}},"required":["userId","phone"]}}}}}},"\/account\/verification":{"post":{"summary":"Create email verification","operationId":"accountCreateVerification","tags":["account"],"description":"Use this endpoint to send a verification message to your user email address to confirm they are the valid owners of that address. Both the **userId** and **secret** arguments will be passed as query parameters to the URL you have provided to be attached to the verification email. The provided URL should redirect the user back to your app and allow you to complete the verification process by verifying both the **userId** and **secret** parameters. Learn more about how to [complete the verification process](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateVerification). The verification link sent to the user's email address is valid for 7 days.\n\nPlease note that in order to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md), the only valid redirect URLs are the ones from domains you have set when adding your platforms in the console interface.\n","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createVerification","weight":38,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"url":{"type":"string","description":"URL to redirect the user back to your app from the verification email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"}},"required":["url"]}}}}},"put":{"summary":"Create email verification (confirmation)","operationId":"accountUpdateVerification","tags":["account"],"description":"Use this endpoint to complete the user email verification process. Use both the **userId** and **secret** parameters that were attached to your app URL to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"updateVerification","weight":39,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/account\/verification\/phone":{"post":{"summary":"Create phone verification","operationId":"accountCreatePhoneVerification","tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updatePhone) endpoint. Learn more about how to [complete the verification process](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createPhoneVerification","weight":40,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{userId}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]},"put":{"summary":"Create phone verification (confirmation)","operationId":"accountUpdatePhoneVerification","tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"updatePhoneVerification","weight":41,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/avatars\/browsers\/{code}":{"get":{"summary":"Get browser icon","operationId":"avatarsGetBrowser","tags":["avatars"],"description":"You can use this endpoint to show different browser icons to your users. The code argument receives the browser code as it appears in your user [GET \/account\/sessions](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#getSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getBrowser","weight":54,"cookies":false,"type":"location","demo":"avatars\/get-browser.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-browser.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"code","description":"Browser Code.","required":true,"schema":{"type":"string","x-example":"aa","enum":["aa","an","ch","ci","cm","cr","ff","sf","mf","ps","oi","om","op","on"],"x-enum-name":"Browser","x-enum-keys":["Avant Browser","Android WebView Beta","Google Chrome","Google Chrome (iOS)","Google Chrome (Mobile)","Chromium","Mozilla Firefox","Safari","Mobile Safari","Microsoft Edge","Microsoft Edge (iOS)","Opera Mini","Opera","Opera (Next)"]},"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"}]}},"\/avatars\/credit-cards\/{code}":{"get":{"summary":"Get credit card icon","operationId":"avatarsGetCreditCard","tags":["avatars"],"description":"The credit card endpoint will return you the icon of the credit card provider you need. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getCreditCard","weight":53,"cookies":false,"type":"location","demo":"avatars\/get-credit-card.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-credit-card.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"code","description":"Credit Card Code. Possible values: amex, argencard, cabal, censosud, diners, discover, elo, hipercard, jcb, mastercard, naranja, targeta-shopping, union-china-pay, visa, mir, maestro.","required":true,"schema":{"type":"string","x-example":"amex","enum":["amex","argencard","cabal","censosud","diners","discover","elo","hipercard","jcb","mastercard","naranja","targeta-shopping","union-china-pay","visa","mir","maestro"],"x-enum-name":"CreditCard","x-enum-keys":["American Express","Argencard","Cabal","Consosud","Diners Club","Discover","Elo","Hipercard","JCB","Mastercard","Naranja","Tarjeta Shopping","Union China Pay","Visa","MIR","Maestro"]},"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"}]}},"\/avatars\/favicon":{"get":{"summary":"Get favicon","operationId":"avatarsGetFavicon","tags":["avatars"],"description":"Use this endpoint to fetch the favorite icon (AKA favicon) of any remote website URL.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFavicon","weight":57,"cookies":false,"type":"location","demo":"avatars\/get-favicon.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-favicon.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"url","description":"Website URL which you want to fetch the favicon from.","required":true,"schema":{"type":"string","format":"url","x-example":"https:\/\/example.com"},"in":"query"}]}},"\/avatars\/flags\/{code}":{"get":{"summary":"Get country flag","operationId":"avatarsGetFlag","tags":["avatars"],"description":"You can use this endpoint to show different country flags icons to your users. The code argument receives the 2 letter country code. Use width, height and quality arguments to change the output settings. Country codes follow the [ISO 3166-1](https:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFlag","weight":55,"cookies":false,"type":"location","demo":"avatars\/get-flag.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-flag.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"code","description":"Country Code. ISO Alpha-2 country code format.","required":true,"schema":{"type":"string","x-example":"af","enum":["af","ao","al","ad","ae","ar","am","ag","au","at","az","bi","be","bj","bf","bd","bg","bh","bs","ba","by","bz","bo","br","bb","bn","bt","bw","cf","ca","ch","cl","cn","ci","cm","cd","cg","co","km","cv","cr","cu","cy","cz","de","dj","dm","dk","do","dz","ec","eg","er","es","ee","et","fi","fj","fr","fm","ga","gb","ge","gh","gn","gm","gw","gq","gr","gd","gt","gy","hn","hr","ht","hu","id","in","ie","ir","iq","is","il","it","jm","jo","jp","kz","ke","kg","kh","ki","kn","kr","kw","la","lb","lr","ly","lc","li","lk","ls","lt","lu","lv","ma","mc","md","mg","mv","mx","mh","mk","ml","mt","mm","me","mn","mz","mr","mu","mw","my","na","ne","ng","ni","nl","no","np","nr","nz","om","pk","pa","pe","ph","pw","pg","pl","kp","pt","py","qa","ro","ru","rw","sa","sd","sn","sg","sb","sl","sv","sm","so","rs","ss","st","sr","sk","si","se","sz","sc","sy","td","tg","th","tj","tm","tl","to","tt","tn","tr","tv","tz","ug","ua","uy","us","uz","va","vc","ve","vn","vu","ws","ye","za","zm","zw"],"x-enum-name":"Flag","x-enum-keys":["Afghanistan","Angola","Albania","Andorra","United Arab Emirates","Argentina","Armenia","Antigua and Barbuda","Australia","Austria","Azerbaijan","Burundi","Belgium","Benin","Burkina Faso","Bangladesh","Bulgaria","Bahrain","Bahamas","Bosnia and Herzegovina","Belarus","Belize","Bolivia","Brazil","Barbados","Brunei Darussalam","Bhutan","Botswana","Central African Republic","Canada","Switzerland","Chile","China","C\u00f4te d'Ivoire","Cameroon","Democratic Republic of the Congo","Republic of the Congo","Colombia","Comoros","Cape Verde","Costa Rica","Cuba","Cyprus","Czech Republic","Germany","Djibouti","Dominica","Denmark","Dominican Republic","Algeria","Ecuador","Egypt","Eritrea","Spain","Estonia","Ethiopia","Finland","Fiji","France","Micronesia (Federated States of)","Gabon","United Kingdom","Georgia","Ghana","Guinea","Gambia","Guinea-Bissau","Equatorial Guinea","Greece","Grenada","Guatemala","Guyana","Honduras","Croatia","Haiti","Hungary","Indonesia","India","Ireland","Iran (Islamic Republic of)","Iraq","Iceland","Israel","Italy","Jamaica","Jordan","Japan","Kazakhstan","Kenya","Kyrgyzstan","Cambodia","Kiribati","Saint Kitts and Nevis","South Korea","Kuwait","Lao People's Democratic Republic","Lebanon","Liberia","Libya","Saint Lucia","Liechtenstein","Sri Lanka","Lesotho","Lithuania","Luxembourg","Latvia","Morocco","Monaco","Moldova","Madagascar","Maldives","Mexico","Marshall Islands","North Macedonia","Mali","Malta","Myanmar","Montenegro","Mongolia","Mozambique","Mauritania","Mauritius","Malawi","Malaysia","Namibia","Niger","Nigeria","Nicaragua","Netherlands","Norway","Nepal","Nauru","New Zealand","Oman","Pakistan","Panama","Peru","Philippines","Palau","Papua New Guinea","Poland","North Korea","Portugal","Paraguay","Qatar","Romania","Russia","Rwanda","Saudi Arabia","Sudan","Senegal","Singapore","Solomon Islands","Sierra Leone","El Salvador","San Marino","Somalia","Serbia","South Sudan","Sao Tome and Principe","Suriname","Slovakia","Slovenia","Sweden","Eswatini","Seychelles","Syria","Chad","Togo","Thailand","Tajikistan","Turkmenistan","Timor-Leste","Tonga","Trinidad and Tobago","Tunisia","Turkey","Tuvalu","Tanzania","Uganda","Ukraine","Uruguay","United States","Uzbekistan","Vatican City","Saint Vincent and the Grenadines","Venezuela","Vietnam","Vanuatu","Samoa","Yemen","South Africa","Zambia","Zimbabwe"]},"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"}]}},"\/avatars\/image":{"get":{"summary":"Get image from URL","operationId":"avatarsGetImage","tags":["avatars"],"description":"Use this endpoint to fetch a remote image URL and crop it to any image size you want. This endpoint is very useful if you need to crop and display remote images in your app or in case you want to make sure a 3rd party image is properly served using a TLS protocol.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getImage","weight":56,"cookies":false,"type":"location","demo":"avatars\/get-image.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-image.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"url","description":"Image URL which you want to crop.","required":true,"schema":{"type":"string","format":"url","x-example":"https:\/\/example.com"},"in":"query"},{"name":"width","description":"Resize preview image width, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get user initials","operationId":"avatarsGetInitials","tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getInitials","weight":59,"cookies":false,"type":"location","demo":"avatars\/get-initials.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-initials.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"name","description":"Full Name. When empty, current user name or email will be used. Max length: 128 chars.","required":false,"schema":{"type":"string","x-example":"[NAME]","default":""},"in":"query"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":500},"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":500},"in":"query"},{"name":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"schema":{"type":"string","default":""},"in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR code","operationId":"avatarsGetQR","tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getQR","weight":58,"cookies":false,"type":"location","demo":"avatars\/get-q-r.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-qr.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"text","description":"Plain text to be converted to QR code image.","required":true,"schema":{"type":"string","x-example":"[TEXT]"},"in":"query"},{"name":"size","description":"QR code size. Pass an integer between 1 to 1000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":1,"default":400},"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":1},"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"schema":{"type":"boolean","x-example":false,"default":false},"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List documents","operationId":"databasesListDocuments","tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/documentList"}}}}},"x-appwrite":{"method":"listDocuments","weight":103,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"post":{"summary":"Create document","operationId":"databasesCreateDocument","tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"createDocument","weight":102,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, only the current user is granted all permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get document","operationId":"databasesGetDocument","tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"getDocument","weight":104,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"patch":{"summary":"Update document","operationId":"databasesUpdateDocument","tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"updateDocument","weight":106,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete document","operationId":"databasesDeleteDocument","tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":107,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List executions","operationId":"functionsListExecutions","tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/executionList"}}}}},"x-appwrite":{"method":"listExecutions","weight":281,"cookies":false,"type":"","demo":"functions\/list-executions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-executions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, responseStatusCode, duration","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create execution","operationId":"functionsCreateExecution","tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/execution"}}}}},"x-appwrite":{"method":"createExecution","weight":280,"cookies":false,"type":"","demo":"functions\/create-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-execution.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"body":{"type":"string","description":"HTTP body of execution. Default value is empty string.","x-example":"[BODY]"},"async":{"type":"boolean","description":"Execute code in the background. Default value is false.","x-example":false},"path":{"type":"string","description":"HTTP path of execution. Path can include query params. Default value is \/","x-example":"[PATH]"},"method":{"type":"string","description":"HTTP method of execution. Default value is GET.","x-example":"GET","enum":["GET","POST","PUT","PATCH","DELETE","OPTIONS"],"x-enum-name":"ExecutionMethod","x-enum-keys":[]},"headers":{"type":"object","description":"HTTP headers of execution. Defaults to empty.","x-example":"{}"}}}}}}}},"\/functions\/{functionId}\/executions\/{executionId}":{"get":{"summary":"Get execution","operationId":"functionsGetExecution","tags":["functions"],"description":"Get a function execution log by its unique ID.","responses":{"200":{"description":"Execution","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/execution"}}}}},"x-appwrite":{"method":"getExecution","weight":282,"cookies":false,"type":"","demo":"functions\/get-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-execution.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"executionId","description":"Execution ID.","required":true,"schema":{"type":"string","x-example":"[EXECUTION_ID]"},"in":"path"}]}},"\/graphql":{"post":{"summary":"GraphQL endpoint","operationId":"graphqlQuery","tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/any"}}}}},"x-appwrite":{"method":"query","weight":302,"cookies":false,"type":"graphql","demo":"graphql\/query.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/graphql\/mutation":{"post":{"summary":"GraphQL endpoint","operationId":"graphqlMutation","tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/any"}}}}},"x-appwrite":{"method":"mutation","weight":301,"cookies":false,"type":"graphql","demo":"graphql\/mutation.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/locale":{"get":{"summary":"Get user locale","operationId":"localeGet","tags":["locale"],"description":"Get the current user location based on IP. Returns an object with user country code, country name, continent name, continent code, ip address and suggested currency. You can use the locale header to get the data in a supported language.\n\n([IP Geolocation by DB-IP](https:\/\/db-ip.com))","responses":{"200":{"description":"Locale","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/locale"}}}}},"x-appwrite":{"method":"get","weight":111,"cookies":false,"type":"","demo":"locale\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-locale.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/localed","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/locale\/codes":{"get":{"summary":"List Locale Codes","operationId":"localeListCodes","tags":["locale"],"description":"List of all locale codes in [ISO 639-1](https:\/\/en.wikipedia.org\/wiki\/List_of_ISO_639-1_codes).","responses":{"200":{"description":"Locale codes list","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/localeCodeList"}}}}},"x-appwrite":{"method":"listCodes","weight":112,"cookies":false,"type":"","demo":"locale\/list-codes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-locale-codes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/localeCode","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/locale\/continents":{"get":{"summary":"List continents","operationId":"localeListContinents","tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/continentList"}}}}},"x-appwrite":{"method":"listContinents","weight":116,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/continents","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List countries","operationId":"localeListCountries","tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountries","weight":113,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/countries","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU countries","operationId":"localeListCountriesEU","tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountriesEU","weight":114,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/countries\/eu","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List countries phone codes","operationId":"localeListCountriesPhones","tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/phoneList"}}}}},"x-appwrite":{"method":"listCountriesPhones","weight":115,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/countries\/phones","offline-key":"","offline-response-key":"countryCode","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List currencies","operationId":"localeListCurrencies","tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/currencyList"}}}}},"x-appwrite":{"method":"listCurrencies","weight":117,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/currencies","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List languages","operationId":"localeListLanguages","tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/languageList"}}}}},"x-appwrite":{"method":"listLanguages","weight":118,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/languages","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/messaging\/topics\/{topicId}\/subscribers":{"post":{"summary":"Create a subscriber.","operationId":"messagingCreateSubscriber","tags":["messaging"],"description":"","responses":{"201":{"description":"Subscriber","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/subscriber"}}}}},"x-appwrite":{"method":"createSubscriber","weight":353,"cookies":false,"type":"","demo":"messaging\/create-subscriber.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-subscriber.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.write","platforms":["server","client","console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[],"Session":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID to subscribe to.","required":true,"schema":{"type":"string","x-example":"[TOPIC_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"subscriberId":{"type":"string","description":"Subscriber ID. Choose a custom Subscriber ID or a new Subscriber ID.","x-example":"[SUBSCRIBER_ID]"},"targetId":{"type":"string","description":"Target ID. The target ID to link to the specified Topic ID.","x-example":"[TARGET_ID]"}},"required":["subscriberId","targetId"]}}}}}},"\/messaging\/topics\/{topicId}\/subscribers\/{subscriberId}":{"delete":{"summary":"Delete a subscriber.","operationId":"messagingDeleteSubscriber","tags":["messaging"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSubscriber","weight":357,"cookies":false,"type":"","demo":"messaging\/delete-subscriber.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-subscriber.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.write","platforms":["server","client","console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[],"Session":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID subscribed to.","required":true,"schema":{"type":"string","x-example":"[TOPIC_ID]"},"in":"path"},{"name":"subscriberId","description":"Subscriber ID.","required":true,"schema":{"type":"string","x-example":"[SUBSCRIBER_ID]"},"in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files":{"get":{"summary":"List files","operationId":"storageListFiles","tags":["storage"],"description":"Get a list of all the user files. You can use the query params to filter your results.","responses":{"200":{"description":"Files List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/fileList"}}}}},"x-appwrite":{"method":"listFiles","weight":191,"cookies":false,"type":"","demo":"storage\/list-files.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/list-files.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create file","operationId":"storageCreateFile","tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"createFile","weight":190,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"}],"requestBody":{"content":{"multipart\/form-data":{"schema":{"type":"object","properties":{"fileId":{"type":"string","description":"File ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[FILE_ID]","x-upload-id":true},"file":{"type":"string","description":"Binary file. Appwrite SDKs provide helpers to handle file input. [Learn about file input](https:\/\/appwrite.io\/docs\/storage#file-input).","x-example":null},"permissions":{"type":"array","description":"An array of permission strings. By default, only the current user is granted all permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["fileId","file"]}}}}}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get file","operationId":"storageGetFile","tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"getFile","weight":192,"cookies":false,"type":"","demo":"storage\/get-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File ID.","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"}]},"put":{"summary":"Update file","operationId":"storageUpdateFile","tags":["storage"],"description":"Update a file by its unique ID. Only users with write permissions have access to update this resource.","responses":{"200":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"updateFile","weight":196,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File unique ID.","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Name of the file","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission string. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":197,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File ID.","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/download":{"get":{"summary":"Get file for download","operationId":"storageGetFileDownload","tags":["storage"],"description":"Get a file content by its unique ID. The endpoint response return with a 'Content-Disposition: attachment' header that tells the browser to start downloading the file to user downloads directory.","responses":{"200":{"description":"File"}},"x-appwrite":{"method":"getFileDownload","weight":194,"cookies":false,"type":"location","demo":"storage\/get-file-download.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-download.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File ID.","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/preview":{"get":{"summary":"Get file preview","operationId":"storageGetFilePreview","tags":["storage"],"description":"Get a file preview image. Currently, this method supports preview for image files (jpg, png, and gif), other supported formats, like pdf, docs, slides, and spreadsheets, will return the file icon image. You can also pass query string arguments for cutting and resizing your preview image. Preview is supported only for image files smaller than 10MB.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFilePreview","weight":193,"cookies":false,"type":"location","demo":"storage\/get-file-preview.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-preview.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File ID","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"},{"name":"width","description":"Resize preview image width, Pass an integer between 0 to 4000.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 4000.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"gravity","description":"Image crop gravity. Can be one of center,top-left,top,top-right,left,right,bottom-left,bottom,bottom-right","required":false,"schema":{"type":"string","x-example":"center","enum":["center","top-left","top","top-right","left","right","bottom-left","bottom","bottom-right"],"x-enum-name":"ImageGravity","x-enum-keys":[],"default":"center"},"in":"query"},{"name":"quality","description":"Preview image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"borderWidth","description":"Preview image border in pixels. Pass an integer between 0 to 100. Defaults to 0.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"borderColor","description":"Preview image border color. Use a valid HEX color, no # is needed for prefix.","required":false,"schema":{"type":"string","default":""},"in":"query"},{"name":"borderRadius","description":"Preview image border radius in pixels. Pass an integer between 0 to 4000.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"opacity","description":"Preview image opacity. Only works with images having an alpha channel (like png). Pass a number between 0 to 1.","required":false,"schema":{"type":"number","format":"float","x-example":0,"default":1},"in":"query"},{"name":"rotation","description":"Preview image rotation in degrees. Pass an integer between -360 and 360.","required":false,"schema":{"type":"integer","format":"int32","x-example":-360,"default":0},"in":"query"},{"name":"background","description":"Preview image background color. Only works with transparent images (png). Use a valid HEX color, no # is needed for prefix.","required":false,"schema":{"type":"string","default":""},"in":"query"},{"name":"output","description":"Output format type (jpeg, jpg, png, gif and webp).","required":false,"schema":{"type":"string","x-example":"jpg","enum":["jpg","jpeg","gif","png","webp"],"x-enum-name":"ImageFormat","x-enum-keys":[],"default":""},"in":"query"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/view":{"get":{"summary":"Get file for view","operationId":"storageGetFileView","tags":["storage"],"description":"Get a file content by its unique ID. This endpoint is similar to the download method but returns with no 'Content-Disposition: attachment' header.","responses":{"200":{"description":"File"}},"x-appwrite":{"method":"getFileView","weight":195,"cookies":false,"type":"location","demo":"storage\/get-file-view.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-view.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File ID.","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"}]}},"\/teams":{"get":{"summary":"List teams","operationId":"teamsList","tags":["teams"],"description":"Get a list of all the teams in which the current user is a member. You can use the parameters to filter your results.","responses":{"200":{"description":"Teams List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/teamList"}}}}},"x-appwrite":{"method":"list","weight":201,"cookies":false,"type":"","demo":"teams\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-teams.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total, billingPlan","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create team","operationId":"teamsCreate","tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"create","weight":200,"cookies":false,"type":"","demo":"teams\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/create-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"teamId":{"type":"string","description":"Team ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[TEAM_ID]"},"name":{"type":"string","description":"Team name. Max length: 128 chars.","x-example":"[NAME]"},"roles":{"type":"array","description":"Array of strings. Use this param to set the roles in the team for the user who created it. The default role is **owner**. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}}}}},"\/teams\/{teamId}":{"get":{"summary":"Get team","operationId":"teamsGet","tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"get","weight":202,"cookies":false,"type":"","demo":"teams\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams","offline-key":"{teamId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}]},"put":{"summary":"Update name","operationId":"teamsUpdateName","tags":["teams"],"description":"Update the team's name by its unique ID.","responses":{"200":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"updateName","weight":204,"cookies":false,"type":"","demo":"teams\/update-name.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-name.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams","offline-key":"{teamId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"New team name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["name"]}}}}},"delete":{"summary":"Delete team","operationId":"teamsDelete","tags":["teams"],"description":"Delete a team using its ID. Only team members with the owner role can delete the team.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":206,"cookies":false,"type":"","demo":"teams\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/delete-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}]}},"\/teams\/{teamId}\/memberships":{"get":{"summary":"List team memberships","operationId":"teamsListMemberships","tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"listMemberships","weight":208,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/memberships","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create team membership","operationId":"teamsCreateMembership","tags":["teams"],"description":"Invite a new member to join your team. Provide an ID for existing users, or invite unregistered users using an email or phone number. If initiated from a Client SDK, Appwrite will send an email or sms with a link to join the team to the invited user, and an account will be created for them if one doesn't exist. If initiated from a Server SDK, the new member will be added automatically to the team.\n\nYou only need to provide one of a user ID, email, or phone number. Appwrite will prioritize accepting the user ID > email > phone number if you provide more than one of these parameters.\n\nUse the `url` parameter to redirect the user from the invitation email to your app. After the user is redirected, use the [Update Team Membership Status](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/teams#updateMembershipStatus) endpoint to allow the user to accept the invitation to the team. \n\nPlease note that to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) Appwrite will accept the only redirect URLs under the domains you have added as a platform on the Appwrite Console.\n","responses":{"201":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"createMembership","weight":207,"cookies":false,"type":"","demo":"teams\/create-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/create-team-membership.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"email":{"type":"string","description":"Email of the new team member.","x-example":"email@example.com"},"userId":{"type":"string","description":"ID of the user to be added to a team.","x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"roles":{"type":"array","description":"Array of strings. Use this param to set the user roles in the team. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"},"name":{"type":"string","description":"Name of the new team member. Max length: 128 chars.","x-example":"[NAME]"}},"required":["roles"]}}}}}},"\/teams\/{teamId}\/memberships\/{membershipId}":{"get":{"summary":"Get team membership","operationId":"teamsGetMembership","tags":["teams"],"description":"Get a team member by the membership unique id. All team members have read access for this resource.","responses":{"200":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"getMembership","weight":209,"cookies":false,"type":"","demo":"teams\/get-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-member.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/memberships","offline-key":"{membershipId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"schema":{"type":"string","x-example":"[MEMBERSHIP_ID]"},"in":"path"}]},"patch":{"summary":"Update membership","operationId":"teamsUpdateMembership","tags":["teams"],"description":"Modify the roles of a team member. Only team members with the owner role have access to this endpoint. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions).\n","responses":{"200":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"updateMembership","weight":210,"cookies":false,"type":"","demo":"teams\/update-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"schema":{"type":"string","x-example":"[MEMBERSHIP_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"roles":{"type":"array","description":"An array of strings. Use this param to set the user's roles in the team. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["roles"]}}}}},"delete":{"summary":"Delete team membership","operationId":"teamsDeleteMembership","tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":212,"cookies":false,"type":"","demo":"teams\/delete-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/delete-team-membership.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"schema":{"type":"string","x-example":"[MEMBERSHIP_ID]"},"in":"path"}]}},"\/teams\/{teamId}\/memberships\/{membershipId}\/status":{"patch":{"summary":"Update team membership status","operationId":"teamsUpdateMembershipStatus","tags":["teams"],"description":"Use this endpoint to allow a user to accept an invitation to join a team after being redirected back to your app from the invitation email received by the user.\n\nIf the request is successful, a session for the user is automatically created.\n","responses":{"200":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"updateMembershipStatus","weight":211,"cookies":false,"type":"","demo":"teams\/update-membership-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"public","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"schema":{"type":"string","x-example":"[MEMBERSHIP_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Secret key.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/teams\/{teamId}\/prefs":{"get":{"summary":"Get team preferences","operationId":"teamsGetPrefs","tags":["teams"],"description":"Get the team's shared preferences by its unique ID. If a preference doesn't need to be shared by all team members, prefer storing them in [user preferences](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#getPrefs).","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"getPrefs","weight":203,"cookies":false,"type":"","demo":"teams\/get-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/prefs","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}]},"put":{"summary":"Update preferences","operationId":"teamsUpdatePrefs","tags":["teams"],"description":"Update the team's preferences by its unique ID. The object you pass is stored as is and replaces any previous value. The maximum allowed prefs size is 64kB and throws an error if exceeded.","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"updatePrefs","weight":205,"cookies":false,"type":"","demo":"teams\/update-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/prefs","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"prefs":{"type":"object","description":"Prefs key-value JSON object.","x-example":"{}"}},"required":["prefs"]}}}}}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"project","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]},{"name":"proxy","description":"The Proxy Service allows you to configure actions for your domains beyond DNS configuration.","x-globalAttributes":[]},{"name":"graphql","description":"The GraphQL API allows you to query and mutate your Appwrite server using GraphQL.","x-globalAttributes":[]},{"name":"console","description":"The Console service allows you to interact with console relevant informations.","x-globalAttributes":[]},{"name":"migrations","description":"The Migrations service allows you to migrate third-party data to your Appwrite project.","x-globalAttributes":[]},{"name":"messaging","description":"The Messaging service allows you to send messages to any provider type (SMTP, push notification, SMS, etc.).","x-globalAttributes":[]}],"components":{"schemas":{"any":{"description":"Any","type":"object","additionalProperties":true},"error":{"description":"Error","type":"object","properties":{"message":{"type":"string","description":"Error message.","x-example":"Not found"},"code":{"type":"string","description":"Error code.","x-example":"404"},"type":{"type":"string","description":"Error type. You can learn more about all the error types at https:\/\/appwrite.io\/docs\/error-codes#errorTypes","x-example":"not_found"},"version":{"type":"string","description":"Server version number.","x-example":"1.0"}},"required":["message","code","type","version"]},"documentList":{"description":"Documents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of documents documents that matched your query.","x-example":5,"format":"int32"},"documents":{"type":"array","description":"List of documents.","items":{"$ref":"#\/components\/schemas\/document"},"x-example":""}},"required":["total","documents"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of sessions documents that matched your query.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"$ref":"#\/components\/schemas\/session"},"x-example":""}},"required":["total","sessions"]},"identityList":{"description":"Identities List","type":"object","properties":{"total":{"type":"integer","description":"Total number of identities documents that matched your query.","x-example":5,"format":"int32"},"identities":{"type":"array","description":"List of identities.","items":{"$ref":"#\/components\/schemas\/identity"},"x-example":""}},"required":["total","identities"]},"logList":{"description":"Logs List","type":"object","properties":{"total":{"type":"integer","description":"Total number of logs documents that matched your query.","x-example":5,"format":"int32"},"logs":{"type":"array","description":"List of logs.","items":{"$ref":"#\/components\/schemas\/log"},"x-example":""}},"required":["total","logs"]},"fileList":{"description":"Files List","type":"object","properties":{"total":{"type":"integer","description":"Total number of files documents that matched your query.","x-example":5,"format":"int32"},"files":{"type":"array","description":"List of files.","items":{"$ref":"#\/components\/schemas\/file"},"x-example":""}},"required":["total","files"]},"teamList":{"description":"Teams List","type":"object","properties":{"total":{"type":"integer","description":"Total number of teams documents that matched your query.","x-example":5,"format":"int32"},"teams":{"type":"array","description":"List of teams.","items":{"$ref":"#\/components\/schemas\/team"},"x-example":""}},"required":["total","teams"]},"membershipList":{"description":"Memberships List","type":"object","properties":{"total":{"type":"integer","description":"Total number of memberships documents that matched your query.","x-example":5,"format":"int32"},"memberships":{"type":"array","description":"List of memberships.","items":{"$ref":"#\/components\/schemas\/membership"},"x-example":""}},"required":["total","memberships"]},"executionList":{"description":"Executions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of executions documents that matched your query.","x-example":5,"format":"int32"},"executions":{"type":"array","description":"List of executions.","items":{"$ref":"#\/components\/schemas\/execution"},"x-example":""}},"required":["total","executions"]},"countryList":{"description":"Countries List","type":"object","properties":{"total":{"type":"integer","description":"Total number of countries documents that matched your query.","x-example":5,"format":"int32"},"countries":{"type":"array","description":"List of countries.","items":{"$ref":"#\/components\/schemas\/country"},"x-example":""}},"required":["total","countries"]},"continentList":{"description":"Continents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of continents documents that matched your query.","x-example":5,"format":"int32"},"continents":{"type":"array","description":"List of continents.","items":{"$ref":"#\/components\/schemas\/continent"},"x-example":""}},"required":["total","continents"]},"languageList":{"description":"Languages List","type":"object","properties":{"total":{"type":"integer","description":"Total number of languages documents that matched your query.","x-example":5,"format":"int32"},"languages":{"type":"array","description":"List of languages.","items":{"$ref":"#\/components\/schemas\/language"},"x-example":""}},"required":["total","languages"]},"currencyList":{"description":"Currencies List","type":"object","properties":{"total":{"type":"integer","description":"Total number of currencies documents that matched your query.","x-example":5,"format":"int32"},"currencies":{"type":"array","description":"List of currencies.","items":{"$ref":"#\/components\/schemas\/currency"},"x-example":""}},"required":["total","currencies"]},"phoneList":{"description":"Phones List","type":"object","properties":{"total":{"type":"integer","description":"Total number of phones documents that matched your query.","x-example":5,"format":"int32"},"phones":{"type":"array","description":"List of phones.","items":{"$ref":"#\/components\/schemas\/phone"},"x-example":""}},"required":["total","phones"]},"localeCodeList":{"description":"Locale codes list","type":"object","properties":{"total":{"type":"integer","description":"Total number of localeCodes documents that matched your query.","x-example":5,"format":"int32"},"localeCodes":{"type":"array","description":"List of localeCodes.","items":{"$ref":"#\/components\/schemas\/localeCode"},"x-example":""}},"required":["total","localeCodes"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"user":{"description":"User","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"password":{"type":"string","description":"Hashed user password.","x-example":"$argon2id$v=19$m=2048,t=4,p=3$aUZjLnliVWRINmFNTWMudg$5S+x+7uA31xFnrHFT47yFwcJeaP0w92L\/4LdgrVRXxE","nullable":true},"hash":{"type":"string","description":"Password hashing algorithm.","x-example":"argon2","nullable":true},"hashOptions":{"type":"object","description":"Password hashing algorithm configuration.","x-example":{},"items":{"oneOf":[{"$ref":"#\/components\/schemas\/algoArgon2"},{"$ref":"#\/components\/schemas\/algoScrypt"},{"$ref":"#\/components\/schemas\/algoScryptModified"},{"$ref":"#\/components\/schemas\/algoBcrypt"},{"$ref":"#\/components\/schemas\/algoPhpass"},{"$ref":"#\/components\/schemas\/algoSha"},{"$ref":"#\/components\/schemas\/algoMd5"}]},"nullable":true},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"labels":{"type":"array","description":"Labels for the user.","items":{"type":"string"},"x-example":["vip"]},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"mfa":{"type":"boolean","description":"Multi factor authentication status.","x-example":true},"totp":{"type":"boolean","description":"TOTP status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"$ref":"#\/components\/schemas\/preferences"}},"targets":{"type":"array","description":"A user-owned message receiver. A single user may have multiple e.g. emails, phones, and a browser. Each target is registered with a single provider.","items":{"$ref":"#\/components\/schemas\/target"},"x-example":[]},"accessedAt":{"type":"string","description":"Most recent access date in ISO 8601 format. This attribute is only updated again after 24 hours.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","$updatedAt","name","registration","status","labels","passwordUpdate","email","phone","emailVerification","phoneVerification","mfa","totp","prefs","targets","accessedAt"]},"algoMd5":{"description":"AlgoMD5","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"md5"}},"required":["type"]},"algoSha":{"description":"AlgoSHA","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"sha"}},"required":["type"]},"algoPhpass":{"description":"AlgoPHPass","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"phpass"}},"required":["type"]},"algoBcrypt":{"description":"AlgoBcrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"bcrypt"}},"required":["type"]},"algoScrypt":{"description":"AlgoScrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scrypt"},"costCpu":{"type":"integer","description":"CPU complexity of computed hash.","x-example":8,"format":"int32"},"costMemory":{"type":"integer","description":"Memory complexity of computed hash.","x-example":14,"format":"int32"},"costParallel":{"type":"integer","description":"Parallelization of computed hash.","x-example":1,"format":"int32"},"length":{"type":"integer","description":"Length used to compute hash.","x-example":64,"format":"int32"}},"required":["type","costCpu","costMemory","costParallel","length"]},"algoScryptModified":{"description":"AlgoScryptModified","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scryptMod"},"salt":{"type":"string","description":"Salt used to compute hash.","x-example":"UxLMreBr6tYyjQ=="},"saltSeparator":{"type":"string","description":"Separator used to compute hash.","x-example":"Bw=="},"signerKey":{"type":"string","description":"Key used to compute hash.","x-example":"XyEKE9RcTDeLEsL\/RjwPDBv\/RqDl8fb3gpYEOQaPihbxf1ZAtSOHCjuAAa7Q3oHpCYhXSN9tizHgVOwn6krflQ=="}},"required":["type","salt","saltSeparator","signerKey"]},"algoArgon2":{"description":"AlgoArgon2","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"argon2"},"memoryCost":{"type":"integer","description":"Memory used to compute hash.","x-example":65536,"format":"int32"},"timeCost":{"type":"integer","description":"Amount of time consumed to compute hash","x-example":4,"format":"int32"},"threads":{"type":"integer","description":"Number of threads used to compute hash.","x-example":3,"format":"int32"}},"required":["type","memoryCost","timeCost","threads"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true},"factors":{"type":"array","description":"Returns a list of active session factors.","items":{"type":"string"},"x-example":["email"]},"secret":{"type":"string","description":"Secret used to authenticate the user. Only included if the request was made with an API key","x-example":"5e5bb8c16897e"}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current","factors","secret"]},"identity":{"description":"Identity","type":"object","properties":{"$id":{"type":"string","description":"Identity ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Identity creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Identity update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"provider":{"type":"string","description":"Identity Provider.","x-example":"email"},"providerUid":{"type":"string","description":"ID of the User in the Identity Provider.","x-example":"5e5bb8c16897e"},"providerEmail":{"type":"string","description":"Email of the User in the Identity Provider.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Identity Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Identity Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"}},"required":["$id","$createdAt","$updatedAt","userId","provider","providerUid","providerEmail","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"phrase":{"type":"string","description":"Security phrase of a token. Empty if security phrase was not requested when creating a token. It includes randomly generated phrase which is also sent in the external resource such as email.","x-example":"Golden Fox"}},"required":["$id","$createdAt","userId","secret","expire","phrase"]},"jwt":{"description":"JWT","type":"object","properties":{"jwt":{"type":"string","description":"JWT encoded string.","x-example":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c"}},"required":["jwt"]},"locale":{"description":"Locale","type":"object","properties":{"ip":{"type":"string","description":"User IP address.","x-example":"127.0.0.1"},"countryCode":{"type":"string","description":"Country code in [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) two-character format","x-example":"US"},"country":{"type":"string","description":"Country name. This field support localization.","x-example":"United States"},"continentCode":{"type":"string","description":"Continent code. A two character continent code \"AF\" for Africa, \"AN\" for Antarctica, \"AS\" for Asia, \"EU\" for Europe, \"NA\" for North America, \"OC\" for Oceania, and \"SA\" for South America.","x-example":"NA"},"continent":{"type":"string","description":"Continent name. This field support localization.","x-example":"North America"},"eu":{"type":"boolean","description":"True if country is part of the European Union.","x-example":false},"currency":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format","x-example":"USD"}},"required":["ip","countryCode","country","continentCode","continent","eu","currency"]},"localeCode":{"description":"LocaleCode","type":"object","properties":{"code":{"type":"string","description":"Locale codes in [ISO 639-1](https:\/\/en.wikipedia.org\/wiki\/List_of_ISO_639-1_codes)","x-example":"en-us"},"name":{"type":"string","description":"Locale name","x-example":"US"}},"required":["code","name"]},"file":{"description":"File","type":"object","properties":{"$id":{"type":"string","description":"File ID.","x-example":"5e5ea5c16897e"},"bucketId":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"},"prefs":{"type":"object","description":"Team preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"$ref":"#\/components\/schemas\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","total","prefs"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"mfa":{"type":"boolean","description":"Multi factor authentication status, true if the user has MFA enabled or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":["owner"]}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","mfa","roles"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"requestMethod":{"type":"string","description":"HTTP request method type.","x-example":"GET"},"requestPath":{"type":"string","description":"HTTP request path and query.","x-example":"\/articles?id=5"},"requestHeaders":{"type":"array","description":"HTTP response headers as a key-value object. This will return only whitelisted headers. All headers are returned if execution is created as synchronous.","items":{"$ref":"#\/components\/schemas\/headers"},"x-example":[{"Content-Type":"application\/json"}]},"responseStatusCode":{"type":"integer","description":"HTTP response status code.","x-example":200,"format":"int32"},"responseBody":{"type":"string","description":"HTTP response body. This will return empty unless execution is created as synchronous.","x-example":"Developers are awesome."},"responseHeaders":{"type":"array","description":"HTTP response headers as a key-value object. This will return only whitelisted headers. All headers are returned if execution is created as synchronous.","items":{"$ref":"#\/components\/schemas\/headers"},"x-example":[{"Content-Type":"application\/json"}]},"logs":{"type":"string","description":"Function logs. Includes the last 4,000 characters. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"errors":{"type":"string","description":"Function errors. Includes the last 4,000 characters. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"Function execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","requestMethod","requestPath","requestHeaders","responseStatusCode","responseBody","responseHeaders","logs","errors","duration"]},"country":{"description":"Country","type":"object","properties":{"name":{"type":"string","description":"Country name.","x-example":"United States"},"code":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"}},"required":["name","code"]},"continent":{"description":"Continent","type":"object","properties":{"name":{"type":"string","description":"Continent name.","x-example":"Europe"},"code":{"type":"string","description":"Continent two letter code.","x-example":"EU"}},"required":["name","code"]},"language":{"description":"Language","type":"object","properties":{"name":{"type":"string","description":"Language name.","x-example":"Italian"},"code":{"type":"string","description":"Language two-character ISO 639-1 codes.","x-example":"it"},"nativeName":{"type":"string","description":"Language native name.","x-example":"Italiano"}},"required":["name","code","nativeName"]},"currency":{"description":"Currency","type":"object","properties":{"symbol":{"type":"string","description":"Currency symbol.","x-example":"$"},"name":{"type":"string","description":"Currency name.","x-example":"US dollar"},"symbolNative":{"type":"string","description":"Currency native symbol.","x-example":"$"},"decimalDigits":{"type":"integer","description":"Number of decimal digits.","x-example":2,"format":"int32"},"rounding":{"type":"number","description":"Currency digit rounding.","x-example":0,"format":"double"},"code":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format.","x-example":"USD"},"namePlural":{"type":"string","description":"Currency plural name","x-example":"US dollars"}},"required":["symbol","name","symbolNative","decimalDigits","rounding","code","namePlural"]},"phone":{"description":"Phone","type":"object","properties":{"code":{"type":"string","description":"Phone code.","x-example":"+1"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["code","countryCode","countryName"]},"headers":{"description":"Headers","type":"object","properties":{"name":{"type":"string","description":"Header name.","x-example":"Content-Type"},"value":{"type":"string","description":"Header value.","x-example":"application\/json"}},"required":["name","value"]},"mfaChallenge":{"description":"MFA Challenge","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","userId","expire"]},"mfaProvider":{"description":"MFAProvider","type":"object","properties":{"backups":{"type":"array","description":"Backup codes.","items":{"type":"string"},"x-example":true},"secret":{"type":"string","description":"Secret token used for TOTP factor.","x-example":true},"uri":{"type":"string","description":"URI for authenticator apps.","x-example":true}},"required":["backups","secret","uri"]},"mfaProviders":{"description":"MFAProviders","type":"object","properties":{"totp":{"type":"boolean","description":"TOTP","x-example":true},"phone":{"type":"boolean","description":"Phone","x-example":true},"email":{"type":"boolean","description":"Email","x-example":true}},"required":["totp","phone","email"]},"subscriber":{"description":"Subscriber","type":"object","properties":{"$id":{"type":"string","description":"Subscriber ID.","x-example":"259125845563242502"},"$createdAt":{"type":"string","description":"Subscriber creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Subscriber update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"targetId":{"type":"string","description":"Target ID.","x-example":"259125845563242502"},"target":{"type":"object","description":"Target.","x-example":{"$id":"259125845563242502","$createdAt":"2020-10-15T06:38:00.000+00:00","$updatedAt":"2020-10-15T06:38:00.000+00:00","providerType":"email","providerId":"259125845563242502","name":"ageon-app-email","identifier":"random-mail@email.org","userId":"5e5ea5c16897e"},"items":{"$ref":"#\/components\/schemas\/target"}},"userId":{"type":"string","description":"Topic ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User Name.","x-example":"Aegon Targaryen"},"topicId":{"type":"string","description":"Topic ID.","x-example":"259125845563242502"},"providerType":{"type":"string","description":"The target provider type. Can be one of the following: `email`, `sms` or `push`.","x-example":"email"}},"required":["$id","$createdAt","$updatedAt","targetId","target","userId","userName","topicId","providerType"]},"target":{"description":"Target","type":"object","properties":{"$id":{"type":"string","description":"Target ID.","x-example":"259125845563242502"},"$createdAt":{"type":"string","description":"Target creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Target update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Target Name.","x-example":"Aegon apple token"},"userId":{"type":"string","description":"User ID.","x-example":"259125845563242502"},"providerId":{"type":"string","description":"Provider ID.","x-example":"259125845563242502","nullable":true},"providerType":{"type":"string","description":"The target provider type. Can be one of the following: `email`, `sms` or `push`.","x-example":"email"},"identifier":{"type":"string","description":"The target identifier.","x-example":"token"}},"required":["$id","$createdAt","$updatedAt","name","userId","providerType","identifier"]}},"securitySchemes":{"Project":{"type":"apiKey","name":"X-Appwrite-Project","description":"Your project ID","in":"header","x-appwrite":{"demo":"5df5acd0d48c2"}},"JWT":{"type":"apiKey","name":"X-Appwrite-JWT","description":"Your secret JSON Web Token","in":"header"},"Locale":{"type":"apiKey","name":"X-Appwrite-Locale","description":"","in":"header","x-appwrite":{"demo":"en"}},"Session":{"type":"apiKey","name":"X-Appwrite-Session","description":"The user session to authenticate with","in":"header"}}},"externalDocs":{"description":"Full API docs, specs and tutorials","url":"https:\/\/appwrite.io\/docs"}} \ No newline at end of file +{"openapi":"3.0.0","info":{"version":"1.4.13","title":"Appwrite","description":"Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https:\/\/appwrite.io\/docs](https:\/\/appwrite.io\/docs)","termsOfService":"https:\/\/appwrite.io\/policy\/terms","contact":{"name":"Appwrite Team","url":"https:\/\/appwrite.io\/support","email":"team@appwrite.io"},"license":{"name":"BSD-3-Clause","url":"https:\/\/raw.githubusercontent.com\/appwrite\/appwrite\/master\/LICENSE"}},"servers":[{"url":"https:\/\/cloud.appwrite.io\/v1"}],"paths":{"\/account":{"get":{"summary":"Get account","operationId":"accountGet","tags":["account"],"description":"Get the currently logged in user.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"get","weight":22,"cookies":false,"type":"","demo":"account\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]},"post":{"summary":"Create account","operationId":"accountCreate","tags":["account"],"description":"Use this endpoint to allow a new user to register a new account in your project. After the user registration completes successfully, you can use the [\/account\/verfication](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createVerification) route to start verifying the user email address. To allow the new user to login to their new account, you need to create a new [account session](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createEmailSession).","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"create","weight":7,"cookies":false,"type":"","demo":"account\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"New user password. Must be between 8 and 256 chars.","x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/account\/email":{"patch":{"summary":"Update email","operationId":"accountUpdateEmail","tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateEmail","weight":29,"cookies":false,"type":"","demo":"account\/update-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","x-example":"password"}},"required":["email","password"]}}}}}},"\/account\/identities":{"get":{"summary":"List Identities","operationId":"accountListIdentities","tags":["account"],"description":"Get the list of identities for the currently logged in user.","responses":{"200":{"description":"Identities List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/identityList"}}}}},"x-appwrite":{"method":"listIdentities","weight":13,"cookies":false,"type":"","demo":"account\/list-identities.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-identities.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/identities","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, provider, providerUid, providerEmail, providerAccessTokenExpiry","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/identities\/{identityId}":{"delete":{"summary":"Delete identity","operationId":"accountDeleteIdentity","tags":["account"],"description":"Delete an identity by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIdentity","weight":14,"cookies":false,"type":"","demo":"account\/delete-identity.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-identity.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"identityId","description":"Identity ID.","required":true,"schema":{"type":"string","x-example":"[IDENTITY_ID]"},"in":"path"}]}},"\/account\/jwt":{"post":{"summary":"Create JWT","operationId":"accountCreateJWT","tags":["account"],"description":"Use this endpoint to create a JSON Web Token. You can use the resulting JWT to authenticate on behalf of the current user when working with the Appwrite server-side API and SDKs. The JWT secret is valid for 15 minutes from its creation and will be invalid if the user will logout in that time frame.","responses":{"201":{"description":"JWT","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/jwt"}}}}},"x-appwrite":{"method":"createJWT","weight":21,"cookies":false,"type":"","demo":"account\/create-j-w-t.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-jwt.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"accounts.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"List logs","operationId":"accountListLogs","tags":["account"],"description":"Get the list of latest security activity logs for the currently logged in user. Each log returns user IP address, location and date and time of log.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listLogs","weight":25,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/mfa":{"patch":{"summary":"Update MFA","operationId":"accountUpdateMFA","tags":["account"],"description":"","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateMFA","weight":42,"cookies":false,"type":"","demo":"account\/update-m-f-a.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-mfa.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"mfa":{"type":"boolean","description":"Enable or disable MFA.","x-example":false}},"required":["mfa"]}}}}}},"\/account\/mfa\/challenge":{"post":{"summary":"Create 2FA Challenge","operationId":"accountCreate2FAChallenge","tags":["account"],"description":"","responses":{"201":{"description":"MFA Challenge","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/mfaChallenge"}}}}},"x-appwrite":{"method":"create2FAChallenge","weight":47,"cookies":false,"type":"","demo":"account\/create2f-a-challenge.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-2fa-challenge.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},token:{param-token}","scope":"accounts.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"factor":{"type":"string","description":"Factor used for verification.","x-example":"totp","enum":["totp","phone","email"],"x-enum-name":null,"x-enum-keys":[]}},"required":["factor"]}}}}},"put":{"summary":"Create MFA Challenge (confirmation)","operationId":"accountUpdateChallenge","tags":["account"],"description":"","responses":{"204":{"description":"No content","content":{"":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateChallenge","weight":48,"cookies":false,"type":"","demo":"account\/update-challenge.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-challenge.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"challengeId":{"type":"string","description":"ID of the challenge.","x-example":"[CHALLENGE_ID]"},"otp":{"type":"string","description":"Valid verification token.","x-example":"[OTP]"}},"required":["challengeId","otp"]}}}}}},"\/account\/mfa\/factors":{"get":{"summary":"List Factors","operationId":"accountListFactors","tags":["account"],"description":"","responses":{"200":{"description":"MFAFactors","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/mfaFactors"}}}}},"x-appwrite":{"method":"listFactors","weight":43,"cookies":false,"type":"","demo":"account\/list-factors.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-factors.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/account\/mfa\/{type}":{"post":{"summary":"Add Authenticator","operationId":"accountAddAuthenticator","tags":["account"],"description":"","responses":{"200":{"description":"MFAType","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/mfaType"}}}}},"x-appwrite":{"method":"addAuthenticator","weight":44,"cookies":false,"type":"","demo":"account\/add-authenticator.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/add-authenticator.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"type","description":"Type of authenticator.","required":true,"schema":{"type":"string","x-example":"totp","enum":["totp"],"x-enum-name":null,"x-enum-keys":[]},"in":"path"}]},"put":{"summary":"Verify Authenticator","operationId":"accountVerifyAuthenticator","tags":["account"],"description":"","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"verifyAuthenticator","weight":45,"cookies":false,"type":"","demo":"account\/verify-authenticator.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/verify-authenticator.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"type","description":"Type of authenticator.","required":true,"schema":{"type":"string","x-example":"totp","enum":["totp"],"x-enum-name":null,"x-enum-keys":[]},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"otp":{"type":"string","description":"Valid verification token.","x-example":"[OTP]"}},"required":["otp"]}}}}},"delete":{"summary":"Delete Authenticator","operationId":"accountDeleteAuthenticator","tags":["account"],"description":"","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"deleteAuthenticator","weight":46,"cookies":false,"type":"","demo":"account\/delete-authenticator.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-mfa.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"type","description":"Type of authenticator.","required":true,"schema":{"type":"string","x-example":"totp","enum":["totp"],"x-enum-name":null,"x-enum-keys":[]},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"otp":{"type":"string","description":"Valid verification token.","x-example":"[OTP]"}},"required":["otp"]}}}}}},"\/account\/name":{"patch":{"summary":"Update name","operationId":"accountUpdateName","tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateName","weight":27,"cookies":false,"type":"","demo":"account\/update-name.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-name.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["name"]}}}}}},"\/account\/password":{"patch":{"summary":"Update password","operationId":"accountUpdatePassword","tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePassword","weight":28,"cookies":false,"type":"","demo":"account\/update-password.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-password.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"password":{"type":"string","description":"New user password. Must be at least 8 chars.","x-example":null},"oldPassword":{"type":"string","description":"Current user password. Must be at least 8 chars.","x-example":"password"}},"required":["password"]}}}}}},"\/account\/phone":{"patch":{"summary":"Update phone","operationId":"accountUpdatePhone","tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createPhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePhone","weight":30,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","x-example":"password"}},"required":["phone","password"]}}}}}},"\/account\/prefs":{"get":{"summary":"Get account preferences","operationId":"accountGetPrefs","tags":["account"],"description":"Get the preferences as a key-value object for the currently logged in user.","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"getPrefs","weight":23,"cookies":false,"type":"","demo":"account\/get-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/prefs","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]},"patch":{"summary":"Update preferences","operationId":"accountUpdatePrefs","tags":["account"],"description":"Update currently logged in user account preferences. The object you pass is stored as is, and replaces any previous value. The maximum allowed prefs size is 64kB and throws error if exceeded.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePrefs","weight":31,"cookies":false,"type":"","demo":"account\/update-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/prefs","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"prefs":{"type":"object","description":"Prefs key-value JSON object.","x-example":"{}"}},"required":["prefs"]}}}}}},"\/account\/recovery":{"post":{"summary":"Create password recovery","operationId":"accountCreateRecovery","tags":["account"],"description":"Sends the user an email with a temporary secret key for password reset. When the user clicks the confirmation link he is redirected back to your app password reset URL with the secret key and email address values attached to the URL query string. Use the query string params to submit a request to the [PUT \/account\/recovery](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateRecovery) endpoint to complete the process. The verification link sent to the user's email address is valid for 1 hour.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createRecovery","weight":36,"cookies":false,"type":"","demo":"account\/create-recovery.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-recovery.md","rate-limit":10,"rate-time":3600,"rate-key":["url:{url},email:{param-email}","url:{url},ip:{ip}"],"scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"url":{"type":"string","description":"URL to redirect the user back to your app from the recovery email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"}},"required":["email","url"]}}}}},"put":{"summary":"Create password recovery (confirmation)","operationId":"accountUpdateRecovery","tags":["account"],"description":"Use this endpoint to complete the user account password reset. Both the **userId** and **secret** arguments will be passed as query parameters to the redirect URL you have provided when sending your request to the [POST \/account\/recovery](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createRecovery) endpoint.\n\nPlease note that in order to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) the only valid redirect URLs are the ones from domains you have set when adding your platforms in the console interface.","responses":{"200":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"updateRecovery","weight":37,"cookies":false,"type":"","demo":"account\/update-recovery.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-recovery.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid reset token.","x-example":"[SECRET]"},"password":{"type":"string","description":"New user password. Must be between 8 and 256 chars.","x-example":null}},"required":["userId","secret","password"]}}}}}},"\/account\/sessions":{"get":{"summary":"List sessions","operationId":"accountListSessions","tags":["account"],"description":"Get the list of active sessions across different devices for the currently logged in user.","responses":{"200":{"description":"Sessions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/sessionList"}}}}},"x-appwrite":{"method":"listSessions","weight":24,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/sessions","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]},"delete":{"summary":"Delete sessions","operationId":"accountDeleteSessions","tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":35,"cookies":false,"type":"","demo":"account\/delete-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-sessions.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/account\/sessions\/anonymous":{"post":{"summary":"Create anonymous session","operationId":"accountCreateAnonymousSession","tags":["account"],"description":"Use this endpoint to allow a new user to register an anonymous account in your project. This route will also create a new session for the user. To allow the new user to convert an anonymous account to a normal account, you need to update its [email and password](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateEmail) or create an [OAuth2 session](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#CreateOAuth2Session).","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"createAnonymousSession","weight":20,"cookies":false,"type":"","demo":"account\/create-anonymous-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-anonymous.md","rate-limit":50,"rate-time":3600,"rate-key":"ip:{ip}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/sessions\/email":{"post":{"summary":"Create email password session","operationId":"accountCreateEmailPasswordSession","tags":["account"],"description":"Allow the user to login into their account by providing a valid email and password combination. This route will create a new session for the user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"createEmailPasswordSession","weight":8,"cookies":false,"type":"","demo":"account\/create-email-password-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-email-password.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","x-example":"password"}},"required":["email","password"]}}}}}},"\/account\/sessions\/magic-url":{"put":{"summary":"Create session (deprecated)","operationId":"accountUpdateMagicURLSession","tags":["account"],"description":"Use this endpoint to create a session from token. Provide the **userId** and **secret** parameters from the successful response of authentication flows initiated by token creation. For example, magic URL and phone login.","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateMagicURLSession","weight":17,"cookies":false,"type":"","demo":"account\/update-magic-u-r-l-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session.md","rate-limit":10,"rate-time":3600,"rate-key":"ip:{ip},userId:{param-userId}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/account\/sessions\/oauth2\/{provider}":{"get":{"summary":"Create OAuth2 session","operationId":"accountCreateOAuth2Session","tags":["account"],"description":"Allow the user to login to their account using the OAuth2 provider of their choice. Each OAuth2 provider should be enabled from the Appwrite console first. Use the success and failure arguments to provide a redirect URL's back to your app when login is completed.\n\nIf there is already an active session, the new session will be attached to the logged-in account. If there are no active sessions, the server will attempt to look for a user with the same email address as the email received from the OAuth2 provider and attach the new session to the existing user. If no matching user is found - the server will create a new user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).\n","responses":{"301":{"description":"File"}},"x-appwrite":{"method":"createOAuth2Session","weight":9,"cookies":false,"type":"webAuth","demo":"account\/create-o-auth2session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-oauth2.md","rate-limit":50,"rate-time":3600,"rate-key":"ip:{ip}","scope":"sessions.write","platforms":["client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"provider","description":"OAuth2 Provider. Currently, supported providers are: amazon, apple, auth0, authentik, autodesk, bitbucket, bitly, box, dailymotion, discord, disqus, dropbox, etsy, facebook, github, gitlab, google, linkedin, microsoft, notion, oidc, okta, paypal, paypalSandbox, podio, salesforce, slack, spotify, stripe, tradeshift, tradeshiftBox, twitch, wordpress, yahoo, yammer, yandex, zoho, zoom.","required":true,"schema":{"type":"string","x-example":"amazon","enum":["amazon","apple","auth0","authentik","autodesk","bitbucket","bitly","box","dailymotion","discord","disqus","dropbox","etsy","facebook","github","gitlab","google","linkedin","microsoft","notion","oidc","okta","paypal","paypalSandbox","podio","salesforce","slack","spotify","stripe","tradeshift","tradeshiftBox","twitch","wordpress","yahoo","yammer","yandex","zoho","zoom","mock"],"x-enum-name":"OAuthProvider","x-enum-keys":[]},"in":"path"},{"name":"success","description":"URL to redirect back to your app after a successful login attempt. Only URLs from hostnames in your project's platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","required":false,"schema":{"type":"string","format":"url","x-example":"https:\/\/example.com","default":""},"in":"query"},{"name":"failure","description":"URL to redirect back to your app after a failed login attempt. Only URLs from hostnames in your project's platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","required":false,"schema":{"type":"string","format":"url","x-example":"https:\/\/example.com","default":""},"in":"query"},{"name":"token","description":"Include token credentials in the final redirect, useful for server-side integrations, or when cookies are not available.","required":false,"schema":{"type":"boolean","x-example":false,"default":false},"in":"query"},{"name":"scopes","description":"A list of custom OAuth2 scopes. Check each provider internal docs for a list of supported scopes. Maximum of 100 scopes are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/sessions\/token":{"post":{"summary":"Create session","operationId":"accountCreateSession","tags":["account"],"description":"Use this endpoint to create a session from token. Provide the **userId** and **secret** parameters from the successful response of authentication flows initiated by token creation. For example, magic URL and phone login.","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"createSession","weight":18,"cookies":false,"type":"","demo":"account\/create-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session.md","rate-limit":10,"rate-time":3600,"rate-key":"ip:{ip},userId:{param-userId}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Secret of a token generated by login methods. For example, the `createMagicURLToken` or `createPhoneToken` methods.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/account\/sessions\/{sessionId}":{"get":{"summary":"Get session","operationId":"accountGetSession","tags":["account"],"description":"Use this endpoint to get a logged in user's session using a Session ID. Inputting 'current' will return the current session being used.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"getSession","weight":26,"cookies":false,"type":"","demo":"account\/get-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-session.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/sessions","offline-key":"{sessionId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to get the current device session.","required":true,"schema":{"type":"string","x-example":"[SESSION_ID]"},"in":"path"}]},"patch":{"summary":"Update (or renew) a session","operationId":"accountUpdateSession","tags":["account"],"description":"Extend session's expiry to increase it's lifespan. Extending a session is useful when session length is short such as 5 minutes.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateSession","weight":34,"cookies":false,"type":"","demo":"account\/update-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-session.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to update the current device session.","required":true,"schema":{"type":"string","x-example":"[SESSION_ID]"},"in":"path"}]},"delete":{"summary":"Delete session","operationId":"accountDeleteSession","tags":["account"],"description":"Logout the user. Use 'current' as the session ID to logout on this device, use a session ID to logout on another device. If you're looking to logout the user on all devices, use [Delete Sessions](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#deleteSessions) instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSession","weight":33,"cookies":false,"type":"","demo":"account\/delete-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-session.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to delete the current device session.","required":true,"schema":{"type":"string","x-example":"[SESSION_ID]"},"in":"path"}]}},"\/account\/status":{"patch":{"summary":"Update status","operationId":"accountUpdateStatus","tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateStatus","weight":32,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/account\/targets\/push":{"post":{"summary":"Create a push target","operationId":"accountCreatePushTarget","tags":["account"],"description":"","responses":{"201":{"description":"Target","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/target"}}}}},"x-appwrite":{"method":"createPushTarget","weight":50,"cookies":false,"type":"","demo":"account\/create-push-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"targetId":{"type":"string","description":"Target ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[TARGET_ID]"},"identifier":{"type":"string","description":"The target identifier (token, email, phone etc.)","x-example":"[IDENTIFIER]"},"providerId":{"type":"string","description":"Provider ID. Message will be sent to this target from the specified provider ID. If no provider ID is set the first setup provider will be used.","x-example":"[PROVIDER_ID]"}},"required":["targetId","identifier"]}}}}}},"\/account\/targets\/{targetId}\/push":{"put":{"summary":"Update a push target","operationId":"accountUpdatePushTarget","tags":["account"],"description":"","responses":{"200":{"description":"Target","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/target"}}}}},"x-appwrite":{"method":"updatePushTarget","weight":51,"cookies":false,"type":"","demo":"account\/update-push-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[]}],"parameters":[{"name":"targetId","description":"Target ID.","required":true,"schema":{"type":"string","x-example":"[TARGET_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"identifier":{"type":"string","description":"The target identifier (token, email, phone etc.)","x-example":"[IDENTIFIER]"}},"required":["identifier"]}}}}},"delete":{"summary":"Delete a push target","operationId":"accountDeletePushTarget","tags":["account"],"description":"","responses":{"204":{"description":"No content","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/target"}}}}},"x-appwrite":{"method":"deletePushTarget","weight":52,"cookies":false,"type":"","demo":"account\/delete-push-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[]}],"parameters":[{"name":"targetId","description":"Target ID.","required":true,"schema":{"type":"string","x-example":"[TARGET_ID]"},"in":"path"}]}},"\/account\/tokens\/email":{"post":{"summary":"Create email token (OTP)","operationId":"accountCreateEmailToken","tags":["account"],"description":"Sends the user an email with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [POST \/v1\/account\/sessions\/token](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createSession) endpoint to complete the login process. The secret sent to the user's email is valid for 15 minutes.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createEmailToken","weight":16,"cookies":false,"type":"","demo":"account\/create-email-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-token-email.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"phrase":{"type":"boolean","description":"Toggle for security phrase. If enabled, email will be send with a randomly generated phrase and the phrase will also be included in the response. Confirming phrases match increases the security of your authentication flow.","x-example":false}},"required":["userId","email"]}}}}}},"\/account\/tokens\/magic-url":{"post":{"summary":"Create magic URL token","operationId":"accountCreateMagicURLToken","tags":["account"],"description":"Sends the user an email with a secret key for creating a session. If the provided user ID has not been registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [POST \/v1\/account\/sessions\/token](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createSession) endpoint to complete the login process. The link sent to the user's email address is valid for 1 hour. If you are on a mobile device you can leave the URL parameter empty, so that the login completion will be handled by your Appwrite instance by default.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).\n","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createMagicURLToken","weight":15,"cookies":false,"type":"","demo":"account\/create-magic-u-r-l-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-token-magic-url.md","rate-limit":60,"rate-time":3600,"rate-key":["url:{url},email:{param-email}","url:{url},ip:{ip}"],"scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"url":{"type":"string","description":"URL to redirect the user back to your app from the magic URL login. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"},"phrase":{"type":"boolean","description":"Toggle for security phrase. If enabled, email will be send with a randomly generated phrase and the phrase will also be included in the response. Confirming phrases match increases the security of your authentication flow.","x-example":false}},"required":["userId","email"]}}}}}},"\/account\/tokens\/phone":{"post":{"summary":"Create phone token","operationId":"accountCreatePhoneToken","tags":["account"],"description":"Sends the user an SMS with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [POST \/v1\/account\/sessions\/token](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createSession) endpoint to complete the login process. The secret sent to the user's phone is valid for 15 minutes.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createPhoneToken","weight":19,"cookies":false,"type":"","demo":"account\/create-phone-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-token-phone.md","rate-limit":10,"rate-time":3600,"rate-key":["url:{url},phone:{param-phone}","url:{url},ip:{ip}"],"scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"}},"required":["userId","phone"]}}}}}},"\/account\/verification":{"post":{"summary":"Create email verification","operationId":"accountCreateVerification","tags":["account"],"description":"Use this endpoint to send a verification message to your user email address to confirm they are the valid owners of that address. Both the **userId** and **secret** arguments will be passed as query parameters to the URL you have provided to be attached to the verification email. The provided URL should redirect the user back to your app and allow you to complete the verification process by verifying both the **userId** and **secret** parameters. Learn more about how to [complete the verification process](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateVerification). The verification link sent to the user's email address is valid for 7 days.\n\nPlease note that in order to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md), the only valid redirect URLs are the ones from domains you have set when adding your platforms in the console interface.\n","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createVerification","weight":38,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"url":{"type":"string","description":"URL to redirect the user back to your app from the verification email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"}},"required":["url"]}}}}},"put":{"summary":"Create email verification (confirmation)","operationId":"accountUpdateVerification","tags":["account"],"description":"Use this endpoint to complete the user email verification process. Use both the **userId** and **secret** parameters that were attached to your app URL to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"updateVerification","weight":39,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/account\/verification\/phone":{"post":{"summary":"Create phone verification","operationId":"accountCreatePhoneVerification","tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updatePhone) endpoint. Learn more about how to [complete the verification process](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createPhoneVerification","weight":40,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":["url:{url},userId:{userId}","url:{url},ip:{ip}"],"scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]},"put":{"summary":"Create phone verification (confirmation)","operationId":"accountUpdatePhoneVerification","tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"updatePhoneVerification","weight":41,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/avatars\/browsers\/{code}":{"get":{"summary":"Get browser icon","operationId":"avatarsGetBrowser","tags":["avatars"],"description":"You can use this endpoint to show different browser icons to your users. The code argument receives the browser code as it appears in your user [GET \/account\/sessions](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#getSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getBrowser","weight":54,"cookies":false,"type":"location","demo":"avatars\/get-browser.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-browser.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"code","description":"Browser Code.","required":true,"schema":{"type":"string","x-example":"aa","enum":["aa","an","ch","ci","cm","cr","ff","sf","mf","ps","oi","om","op","on"],"x-enum-name":"Browser","x-enum-keys":["Avant Browser","Android WebView Beta","Google Chrome","Google Chrome (iOS)","Google Chrome (Mobile)","Chromium","Mozilla Firefox","Safari","Mobile Safari","Microsoft Edge","Microsoft Edge (iOS)","Opera Mini","Opera","Opera (Next)"]},"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"}]}},"\/avatars\/credit-cards\/{code}":{"get":{"summary":"Get credit card icon","operationId":"avatarsGetCreditCard","tags":["avatars"],"description":"The credit card endpoint will return you the icon of the credit card provider you need. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getCreditCard","weight":53,"cookies":false,"type":"location","demo":"avatars\/get-credit-card.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-credit-card.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"code","description":"Credit Card Code. Possible values: amex, argencard, cabal, censosud, diners, discover, elo, hipercard, jcb, mastercard, naranja, targeta-shopping, union-china-pay, visa, mir, maestro.","required":true,"schema":{"type":"string","x-example":"amex","enum":["amex","argencard","cabal","censosud","diners","discover","elo","hipercard","jcb","mastercard","naranja","targeta-shopping","union-china-pay","visa","mir","maestro"],"x-enum-name":"CreditCard","x-enum-keys":["American Express","Argencard","Cabal","Consosud","Diners Club","Discover","Elo","Hipercard","JCB","Mastercard","Naranja","Tarjeta Shopping","Union China Pay","Visa","MIR","Maestro"]},"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"}]}},"\/avatars\/favicon":{"get":{"summary":"Get favicon","operationId":"avatarsGetFavicon","tags":["avatars"],"description":"Use this endpoint to fetch the favorite icon (AKA favicon) of any remote website URL.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFavicon","weight":57,"cookies":false,"type":"location","demo":"avatars\/get-favicon.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-favicon.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"url","description":"Website URL which you want to fetch the favicon from.","required":true,"schema":{"type":"string","format":"url","x-example":"https:\/\/example.com"},"in":"query"}]}},"\/avatars\/flags\/{code}":{"get":{"summary":"Get country flag","operationId":"avatarsGetFlag","tags":["avatars"],"description":"You can use this endpoint to show different country flags icons to your users. The code argument receives the 2 letter country code. Use width, height and quality arguments to change the output settings. Country codes follow the [ISO 3166-1](https:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFlag","weight":55,"cookies":false,"type":"location","demo":"avatars\/get-flag.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-flag.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"code","description":"Country Code. ISO Alpha-2 country code format.","required":true,"schema":{"type":"string","x-example":"af","enum":["af","ao","al","ad","ae","ar","am","ag","au","at","az","bi","be","bj","bf","bd","bg","bh","bs","ba","by","bz","bo","br","bb","bn","bt","bw","cf","ca","ch","cl","cn","ci","cm","cd","cg","co","km","cv","cr","cu","cy","cz","de","dj","dm","dk","do","dz","ec","eg","er","es","ee","et","fi","fj","fr","fm","ga","gb","ge","gh","gn","gm","gw","gq","gr","gd","gt","gy","hn","hr","ht","hu","id","in","ie","ir","iq","is","il","it","jm","jo","jp","kz","ke","kg","kh","ki","kn","kr","kw","la","lb","lr","ly","lc","li","lk","ls","lt","lu","lv","ma","mc","md","mg","mv","mx","mh","mk","ml","mt","mm","me","mn","mz","mr","mu","mw","my","na","ne","ng","ni","nl","no","np","nr","nz","om","pk","pa","pe","ph","pw","pg","pl","kp","pt","py","qa","ro","ru","rw","sa","sd","sn","sg","sb","sl","sv","sm","so","rs","ss","st","sr","sk","si","se","sz","sc","sy","td","tg","th","tj","tm","tl","to","tt","tn","tr","tv","tz","ug","ua","uy","us","uz","va","vc","ve","vn","vu","ws","ye","za","zm","zw"],"x-enum-name":"Flag","x-enum-keys":["Afghanistan","Angola","Albania","Andorra","United Arab Emirates","Argentina","Armenia","Antigua and Barbuda","Australia","Austria","Azerbaijan","Burundi","Belgium","Benin","Burkina Faso","Bangladesh","Bulgaria","Bahrain","Bahamas","Bosnia and Herzegovina","Belarus","Belize","Bolivia","Brazil","Barbados","Brunei Darussalam","Bhutan","Botswana","Central African Republic","Canada","Switzerland","Chile","China","C\u00f4te d'Ivoire","Cameroon","Democratic Republic of the Congo","Republic of the Congo","Colombia","Comoros","Cape Verde","Costa Rica","Cuba","Cyprus","Czech Republic","Germany","Djibouti","Dominica","Denmark","Dominican Republic","Algeria","Ecuador","Egypt","Eritrea","Spain","Estonia","Ethiopia","Finland","Fiji","France","Micronesia (Federated States of)","Gabon","United Kingdom","Georgia","Ghana","Guinea","Gambia","Guinea-Bissau","Equatorial Guinea","Greece","Grenada","Guatemala","Guyana","Honduras","Croatia","Haiti","Hungary","Indonesia","India","Ireland","Iran (Islamic Republic of)","Iraq","Iceland","Israel","Italy","Jamaica","Jordan","Japan","Kazakhstan","Kenya","Kyrgyzstan","Cambodia","Kiribati","Saint Kitts and Nevis","South Korea","Kuwait","Lao People's Democratic Republic","Lebanon","Liberia","Libya","Saint Lucia","Liechtenstein","Sri Lanka","Lesotho","Lithuania","Luxembourg","Latvia","Morocco","Monaco","Moldova","Madagascar","Maldives","Mexico","Marshall Islands","North Macedonia","Mali","Malta","Myanmar","Montenegro","Mongolia","Mozambique","Mauritania","Mauritius","Malawi","Malaysia","Namibia","Niger","Nigeria","Nicaragua","Netherlands","Norway","Nepal","Nauru","New Zealand","Oman","Pakistan","Panama","Peru","Philippines","Palau","Papua New Guinea","Poland","North Korea","Portugal","Paraguay","Qatar","Romania","Russia","Rwanda","Saudi Arabia","Sudan","Senegal","Singapore","Solomon Islands","Sierra Leone","El Salvador","San Marino","Somalia","Serbia","South Sudan","Sao Tome and Principe","Suriname","Slovakia","Slovenia","Sweden","Eswatini","Seychelles","Syria","Chad","Togo","Thailand","Tajikistan","Turkmenistan","Timor-Leste","Tonga","Trinidad and Tobago","Tunisia","Turkey","Tuvalu","Tanzania","Uganda","Ukraine","Uruguay","United States","Uzbekistan","Vatican City","Saint Vincent and the Grenadines","Venezuela","Vietnam","Vanuatu","Samoa","Yemen","South Africa","Zambia","Zimbabwe"]},"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"}]}},"\/avatars\/image":{"get":{"summary":"Get image from URL","operationId":"avatarsGetImage","tags":["avatars"],"description":"Use this endpoint to fetch a remote image URL and crop it to any image size you want. This endpoint is very useful if you need to crop and display remote images in your app or in case you want to make sure a 3rd party image is properly served using a TLS protocol.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getImage","weight":56,"cookies":false,"type":"location","demo":"avatars\/get-image.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-image.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"url","description":"Image URL which you want to crop.","required":true,"schema":{"type":"string","format":"url","x-example":"https:\/\/example.com"},"in":"query"},{"name":"width","description":"Resize preview image width, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get user initials","operationId":"avatarsGetInitials","tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getInitials","weight":59,"cookies":false,"type":"location","demo":"avatars\/get-initials.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-initials.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"name","description":"Full Name. When empty, current user name or email will be used. Max length: 128 chars.","required":false,"schema":{"type":"string","x-example":"[NAME]","default":""},"in":"query"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":500},"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":500},"in":"query"},{"name":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"schema":{"type":"string","default":""},"in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR code","operationId":"avatarsGetQR","tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getQR","weight":58,"cookies":false,"type":"location","demo":"avatars\/get-q-r.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-qr.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"text","description":"Plain text to be converted to QR code image.","required":true,"schema":{"type":"string","x-example":"[TEXT]"},"in":"query"},{"name":"size","description":"QR code size. Pass an integer between 1 to 1000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":1,"default":400},"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":1},"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"schema":{"type":"boolean","x-example":false,"default":false},"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List documents","operationId":"databasesListDocuments","tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/documentList"}}}}},"x-appwrite":{"method":"listDocuments","weight":103,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"post":{"summary":"Create document","operationId":"databasesCreateDocument","tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"createDocument","weight":102,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, only the current user is granted all permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get document","operationId":"databasesGetDocument","tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"getDocument","weight":104,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"patch":{"summary":"Update document","operationId":"databasesUpdateDocument","tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"updateDocument","weight":106,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete document","operationId":"databasesDeleteDocument","tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":107,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List executions","operationId":"functionsListExecutions","tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/executionList"}}}}},"x-appwrite":{"method":"listExecutions","weight":283,"cookies":false,"type":"","demo":"functions\/list-executions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-executions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, responseStatusCode, duration","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create execution","operationId":"functionsCreateExecution","tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/execution"}}}}},"x-appwrite":{"method":"createExecution","weight":282,"cookies":false,"type":"","demo":"functions\/create-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-execution.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"body":{"type":"string","description":"HTTP body of execution. Default value is empty string.","x-example":"[BODY]"},"async":{"type":"boolean","description":"Execute code in the background. Default value is false.","x-example":false},"path":{"type":"string","description":"HTTP path of execution. Path can include query params. Default value is \/","x-example":"[PATH]"},"method":{"type":"string","description":"HTTP method of execution. Default value is GET.","x-example":"GET","enum":["GET","POST","PUT","PATCH","DELETE","OPTIONS"],"x-enum-name":"ExecutionMethod","x-enum-keys":[]},"headers":{"type":"object","description":"HTTP headers of execution. Defaults to empty.","x-example":"{}"}}}}}}}},"\/functions\/{functionId}\/executions\/{executionId}":{"get":{"summary":"Get execution","operationId":"functionsGetExecution","tags":["functions"],"description":"Get a function execution log by its unique ID.","responses":{"200":{"description":"Execution","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/execution"}}}}},"x-appwrite":{"method":"getExecution","weight":284,"cookies":false,"type":"","demo":"functions\/get-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-execution.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"executionId","description":"Execution ID.","required":true,"schema":{"type":"string","x-example":"[EXECUTION_ID]"},"in":"path"}]}},"\/graphql":{"post":{"summary":"GraphQL endpoint","operationId":"graphqlQuery","tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/any"}}}}},"x-appwrite":{"method":"query","weight":304,"cookies":false,"type":"graphql","demo":"graphql\/query.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/graphql\/mutation":{"post":{"summary":"GraphQL endpoint","operationId":"graphqlMutation","tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/any"}}}}},"x-appwrite":{"method":"mutation","weight":303,"cookies":false,"type":"graphql","demo":"graphql\/mutation.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/locale":{"get":{"summary":"Get user locale","operationId":"localeGet","tags":["locale"],"description":"Get the current user location based on IP. Returns an object with user country code, country name, continent name, continent code, ip address and suggested currency. You can use the locale header to get the data in a supported language.\n\n([IP Geolocation by DB-IP](https:\/\/db-ip.com))","responses":{"200":{"description":"Locale","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/locale"}}}}},"x-appwrite":{"method":"get","weight":111,"cookies":false,"type":"","demo":"locale\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-locale.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/localed","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/locale\/codes":{"get":{"summary":"List Locale Codes","operationId":"localeListCodes","tags":["locale"],"description":"List of all locale codes in [ISO 639-1](https:\/\/en.wikipedia.org\/wiki\/List_of_ISO_639-1_codes).","responses":{"200":{"description":"Locale codes list","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/localeCodeList"}}}}},"x-appwrite":{"method":"listCodes","weight":112,"cookies":false,"type":"","demo":"locale\/list-codes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-locale-codes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/localeCode","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/locale\/continents":{"get":{"summary":"List continents","operationId":"localeListContinents","tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/continentList"}}}}},"x-appwrite":{"method":"listContinents","weight":116,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/continents","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List countries","operationId":"localeListCountries","tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountries","weight":113,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/countries","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU countries","operationId":"localeListCountriesEU","tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountriesEU","weight":114,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/countries\/eu","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List countries phone codes","operationId":"localeListCountriesPhones","tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/phoneList"}}}}},"x-appwrite":{"method":"listCountriesPhones","weight":115,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/countries\/phones","offline-key":"","offline-response-key":"countryCode","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List currencies","operationId":"localeListCurrencies","tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/currencyList"}}}}},"x-appwrite":{"method":"listCurrencies","weight":117,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/currencies","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List languages","operationId":"localeListLanguages","tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/languageList"}}}}},"x-appwrite":{"method":"listLanguages","weight":118,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/languages","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/messaging\/topics\/{topicId}\/subscribers":{"post":{"summary":"Create a subscriber.","operationId":"messagingCreateSubscriber","tags":["messaging"],"description":"","responses":{"201":{"description":"Subscriber","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/subscriber"}}}}},"x-appwrite":{"method":"createSubscriber","weight":355,"cookies":false,"type":"","demo":"messaging\/create-subscriber.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-subscriber.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.write","platforms":["server","client","console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[],"Session":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID to subscribe to.","required":true,"schema":{"type":"string","x-example":"[TOPIC_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"subscriberId":{"type":"string","description":"Subscriber ID. Choose a custom Subscriber ID or a new Subscriber ID.","x-example":"[SUBSCRIBER_ID]"},"targetId":{"type":"string","description":"Target ID. The target ID to link to the specified Topic ID.","x-example":"[TARGET_ID]"}},"required":["subscriberId","targetId"]}}}}}},"\/messaging\/topics\/{topicId}\/subscribers\/{subscriberId}":{"delete":{"summary":"Delete a subscriber.","operationId":"messagingDeleteSubscriber","tags":["messaging"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSubscriber","weight":359,"cookies":false,"type":"","demo":"messaging\/delete-subscriber.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-subscriber.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.write","platforms":["server","client","console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[],"Session":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID subscribed to.","required":true,"schema":{"type":"string","x-example":"[TOPIC_ID]"},"in":"path"},{"name":"subscriberId","description":"Subscriber ID.","required":true,"schema":{"type":"string","x-example":"[SUBSCRIBER_ID]"},"in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files":{"get":{"summary":"List files","operationId":"storageListFiles","tags":["storage"],"description":"Get a list of all the user files. You can use the query params to filter your results.","responses":{"200":{"description":"Files List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/fileList"}}}}},"x-appwrite":{"method":"listFiles","weight":193,"cookies":false,"type":"","demo":"storage\/list-files.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/list-files.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create file","operationId":"storageCreateFile","tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"createFile","weight":192,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"}],"requestBody":{"content":{"multipart\/form-data":{"schema":{"type":"object","properties":{"fileId":{"type":"string","description":"File ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[FILE_ID]","x-upload-id":true},"file":{"type":"string","description":"Binary file. Appwrite SDKs provide helpers to handle file input. [Learn about file input](https:\/\/appwrite.io\/docs\/storage#file-input).","x-example":null},"permissions":{"type":"array","description":"An array of permission strings. By default, only the current user is granted all permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["fileId","file"]}}}}}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get file","operationId":"storageGetFile","tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"getFile","weight":194,"cookies":false,"type":"","demo":"storage\/get-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File ID.","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"}]},"put":{"summary":"Update file","operationId":"storageUpdateFile","tags":["storage"],"description":"Update a file by its unique ID. Only users with write permissions have access to update this resource.","responses":{"200":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"updateFile","weight":198,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File unique ID.","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Name of the file","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission string. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":199,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File ID.","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/download":{"get":{"summary":"Get file for download","operationId":"storageGetFileDownload","tags":["storage"],"description":"Get a file content by its unique ID. The endpoint response return with a 'Content-Disposition: attachment' header that tells the browser to start downloading the file to user downloads directory.","responses":{"200":{"description":"File"}},"x-appwrite":{"method":"getFileDownload","weight":196,"cookies":false,"type":"location","demo":"storage\/get-file-download.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-download.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File ID.","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/preview":{"get":{"summary":"Get file preview","operationId":"storageGetFilePreview","tags":["storage"],"description":"Get a file preview image. Currently, this method supports preview for image files (jpg, png, and gif), other supported formats, like pdf, docs, slides, and spreadsheets, will return the file icon image. You can also pass query string arguments for cutting and resizing your preview image. Preview is supported only for image files smaller than 10MB.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFilePreview","weight":195,"cookies":false,"type":"location","demo":"storage\/get-file-preview.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-preview.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File ID","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"},{"name":"width","description":"Resize preview image width, Pass an integer between 0 to 4000.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 4000.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"gravity","description":"Image crop gravity. Can be one of center,top-left,top,top-right,left,right,bottom-left,bottom,bottom-right","required":false,"schema":{"type":"string","x-example":"center","enum":["center","top-left","top","top-right","left","right","bottom-left","bottom","bottom-right"],"x-enum-name":"ImageGravity","x-enum-keys":[],"default":"center"},"in":"query"},{"name":"quality","description":"Preview image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"borderWidth","description":"Preview image border in pixels. Pass an integer between 0 to 100. Defaults to 0.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"borderColor","description":"Preview image border color. Use a valid HEX color, no # is needed for prefix.","required":false,"schema":{"type":"string","default":""},"in":"query"},{"name":"borderRadius","description":"Preview image border radius in pixels. Pass an integer between 0 to 4000.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"opacity","description":"Preview image opacity. Only works with images having an alpha channel (like png). Pass a number between 0 to 1.","required":false,"schema":{"type":"number","format":"float","x-example":0,"default":1},"in":"query"},{"name":"rotation","description":"Preview image rotation in degrees. Pass an integer between -360 and 360.","required":false,"schema":{"type":"integer","format":"int32","x-example":-360,"default":0},"in":"query"},{"name":"background","description":"Preview image background color. Only works with transparent images (png). Use a valid HEX color, no # is needed for prefix.","required":false,"schema":{"type":"string","default":""},"in":"query"},{"name":"output","description":"Output format type (jpeg, jpg, png, gif and webp).","required":false,"schema":{"type":"string","x-example":"jpg","enum":["jpg","jpeg","gif","png","webp"],"x-enum-name":"ImageFormat","x-enum-keys":[],"default":""},"in":"query"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/view":{"get":{"summary":"Get file for view","operationId":"storageGetFileView","tags":["storage"],"description":"Get a file content by its unique ID. This endpoint is similar to the download method but returns with no 'Content-Disposition: attachment' header.","responses":{"200":{"description":"File"}},"x-appwrite":{"method":"getFileView","weight":197,"cookies":false,"type":"location","demo":"storage\/get-file-view.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-view.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File ID.","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"}]}},"\/teams":{"get":{"summary":"List teams","operationId":"teamsList","tags":["teams"],"description":"Get a list of all the teams in which the current user is a member. You can use the parameters to filter your results.","responses":{"200":{"description":"Teams List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/teamList"}}}}},"x-appwrite":{"method":"list","weight":203,"cookies":false,"type":"","demo":"teams\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-teams.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total, billingPlan","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create team","operationId":"teamsCreate","tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"create","weight":202,"cookies":false,"type":"","demo":"teams\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/create-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"teamId":{"type":"string","description":"Team ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[TEAM_ID]"},"name":{"type":"string","description":"Team name. Max length: 128 chars.","x-example":"[NAME]"},"roles":{"type":"array","description":"Array of strings. Use this param to set the roles in the team for the user who created it. The default role is **owner**. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}}}}},"\/teams\/{teamId}":{"get":{"summary":"Get team","operationId":"teamsGet","tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"get","weight":204,"cookies":false,"type":"","demo":"teams\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams","offline-key":"{teamId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}]},"put":{"summary":"Update name","operationId":"teamsUpdateName","tags":["teams"],"description":"Update the team's name by its unique ID.","responses":{"200":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"updateName","weight":206,"cookies":false,"type":"","demo":"teams\/update-name.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-name.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams","offline-key":"{teamId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"New team name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["name"]}}}}},"delete":{"summary":"Delete team","operationId":"teamsDelete","tags":["teams"],"description":"Delete a team using its ID. Only team members with the owner role can delete the team.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":208,"cookies":false,"type":"","demo":"teams\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/delete-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}]}},"\/teams\/{teamId}\/memberships":{"get":{"summary":"List team memberships","operationId":"teamsListMemberships","tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"listMemberships","weight":210,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/memberships","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create team membership","operationId":"teamsCreateMembership","tags":["teams"],"description":"Invite a new member to join your team. Provide an ID for existing users, or invite unregistered users using an email or phone number. If initiated from a Client SDK, Appwrite will send an email or sms with a link to join the team to the invited user, and an account will be created for them if one doesn't exist. If initiated from a Server SDK, the new member will be added automatically to the team.\n\nYou only need to provide one of a user ID, email, or phone number. Appwrite will prioritize accepting the user ID > email > phone number if you provide more than one of these parameters.\n\nUse the `url` parameter to redirect the user from the invitation email to your app. After the user is redirected, use the [Update Team Membership Status](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/teams#updateMembershipStatus) endpoint to allow the user to accept the invitation to the team. \n\nPlease note that to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) Appwrite will accept the only redirect URLs under the domains you have added as a platform on the Appwrite Console.\n","responses":{"201":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"createMembership","weight":209,"cookies":false,"type":"","demo":"teams\/create-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/create-team-membership.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"email":{"type":"string","description":"Email of the new team member.","x-example":"email@example.com"},"userId":{"type":"string","description":"ID of the user to be added to a team.","x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"roles":{"type":"array","description":"Array of strings. Use this param to set the user roles in the team. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"},"name":{"type":"string","description":"Name of the new team member. Max length: 128 chars.","x-example":"[NAME]"}},"required":["roles"]}}}}}},"\/teams\/{teamId}\/memberships\/{membershipId}":{"get":{"summary":"Get team membership","operationId":"teamsGetMembership","tags":["teams"],"description":"Get a team member by the membership unique id. All team members have read access for this resource.","responses":{"200":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"getMembership","weight":211,"cookies":false,"type":"","demo":"teams\/get-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-member.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/memberships","offline-key":"{membershipId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"schema":{"type":"string","x-example":"[MEMBERSHIP_ID]"},"in":"path"}]},"patch":{"summary":"Update membership","operationId":"teamsUpdateMembership","tags":["teams"],"description":"Modify the roles of a team member. Only team members with the owner role have access to this endpoint. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions).\n","responses":{"200":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"updateMembership","weight":212,"cookies":false,"type":"","demo":"teams\/update-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"schema":{"type":"string","x-example":"[MEMBERSHIP_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"roles":{"type":"array","description":"An array of strings. Use this param to set the user's roles in the team. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["roles"]}}}}},"delete":{"summary":"Delete team membership","operationId":"teamsDeleteMembership","tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":214,"cookies":false,"type":"","demo":"teams\/delete-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/delete-team-membership.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"schema":{"type":"string","x-example":"[MEMBERSHIP_ID]"},"in":"path"}]}},"\/teams\/{teamId}\/memberships\/{membershipId}\/status":{"patch":{"summary":"Update team membership status","operationId":"teamsUpdateMembershipStatus","tags":["teams"],"description":"Use this endpoint to allow a user to accept an invitation to join a team after being redirected back to your app from the invitation email received by the user.\n\nIf the request is successful, a session for the user is automatically created.\n","responses":{"200":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"updateMembershipStatus","weight":213,"cookies":false,"type":"","demo":"teams\/update-membership-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"public","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"schema":{"type":"string","x-example":"[MEMBERSHIP_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Secret key.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/teams\/{teamId}\/prefs":{"get":{"summary":"Get team preferences","operationId":"teamsGetPrefs","tags":["teams"],"description":"Get the team's shared preferences by its unique ID. If a preference doesn't need to be shared by all team members, prefer storing them in [user preferences](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#getPrefs).","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"getPrefs","weight":205,"cookies":false,"type":"","demo":"teams\/get-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/prefs","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}]},"put":{"summary":"Update preferences","operationId":"teamsUpdatePrefs","tags":["teams"],"description":"Update the team's preferences by its unique ID. The object you pass is stored as is and replaces any previous value. The maximum allowed prefs size is 64kB and throws an error if exceeded.","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"updatePrefs","weight":207,"cookies":false,"type":"","demo":"teams\/update-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/prefs","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"prefs":{"type":"object","description":"Prefs key-value JSON object.","x-example":"{}"}},"required":["prefs"]}}}}}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"project","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]},{"name":"proxy","description":"The Proxy Service allows you to configure actions for your domains beyond DNS configuration.","x-globalAttributes":[]},{"name":"graphql","description":"The GraphQL API allows you to query and mutate your Appwrite server using GraphQL.","x-globalAttributes":[]},{"name":"console","description":"The Console service allows you to interact with console relevant informations.","x-globalAttributes":[]},{"name":"migrations","description":"The Migrations service allows you to migrate third-party data to your Appwrite project.","x-globalAttributes":[]},{"name":"messaging","description":"The Messaging service allows you to send messages to any provider type (SMTP, push notification, SMS, etc.).","x-globalAttributes":[]}],"components":{"schemas":{"any":{"description":"Any","type":"object","additionalProperties":true},"error":{"description":"Error","type":"object","properties":{"message":{"type":"string","description":"Error message.","x-example":"Not found"},"code":{"type":"string","description":"Error code.","x-example":"404"},"type":{"type":"string","description":"Error type. You can learn more about all the error types at https:\/\/appwrite.io\/docs\/error-codes#errorTypes","x-example":"not_found"},"version":{"type":"string","description":"Server version number.","x-example":"1.0"}},"required":["message","code","type","version"]},"documentList":{"description":"Documents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of documents documents that matched your query.","x-example":5,"format":"int32"},"documents":{"type":"array","description":"List of documents.","items":{"$ref":"#\/components\/schemas\/document"},"x-example":""}},"required":["total","documents"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of sessions documents that matched your query.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"$ref":"#\/components\/schemas\/session"},"x-example":""}},"required":["total","sessions"]},"identityList":{"description":"Identities List","type":"object","properties":{"total":{"type":"integer","description":"Total number of identities documents that matched your query.","x-example":5,"format":"int32"},"identities":{"type":"array","description":"List of identities.","items":{"$ref":"#\/components\/schemas\/identity"},"x-example":""}},"required":["total","identities"]},"logList":{"description":"Logs List","type":"object","properties":{"total":{"type":"integer","description":"Total number of logs documents that matched your query.","x-example":5,"format":"int32"},"logs":{"type":"array","description":"List of logs.","items":{"$ref":"#\/components\/schemas\/log"},"x-example":""}},"required":["total","logs"]},"fileList":{"description":"Files List","type":"object","properties":{"total":{"type":"integer","description":"Total number of files documents that matched your query.","x-example":5,"format":"int32"},"files":{"type":"array","description":"List of files.","items":{"$ref":"#\/components\/schemas\/file"},"x-example":""}},"required":["total","files"]},"teamList":{"description":"Teams List","type":"object","properties":{"total":{"type":"integer","description":"Total number of teams documents that matched your query.","x-example":5,"format":"int32"},"teams":{"type":"array","description":"List of teams.","items":{"$ref":"#\/components\/schemas\/team"},"x-example":""}},"required":["total","teams"]},"membershipList":{"description":"Memberships List","type":"object","properties":{"total":{"type":"integer","description":"Total number of memberships documents that matched your query.","x-example":5,"format":"int32"},"memberships":{"type":"array","description":"List of memberships.","items":{"$ref":"#\/components\/schemas\/membership"},"x-example":""}},"required":["total","memberships"]},"executionList":{"description":"Executions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of executions documents that matched your query.","x-example":5,"format":"int32"},"executions":{"type":"array","description":"List of executions.","items":{"$ref":"#\/components\/schemas\/execution"},"x-example":""}},"required":["total","executions"]},"countryList":{"description":"Countries List","type":"object","properties":{"total":{"type":"integer","description":"Total number of countries documents that matched your query.","x-example":5,"format":"int32"},"countries":{"type":"array","description":"List of countries.","items":{"$ref":"#\/components\/schemas\/country"},"x-example":""}},"required":["total","countries"]},"continentList":{"description":"Continents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of continents documents that matched your query.","x-example":5,"format":"int32"},"continents":{"type":"array","description":"List of continents.","items":{"$ref":"#\/components\/schemas\/continent"},"x-example":""}},"required":["total","continents"]},"languageList":{"description":"Languages List","type":"object","properties":{"total":{"type":"integer","description":"Total number of languages documents that matched your query.","x-example":5,"format":"int32"},"languages":{"type":"array","description":"List of languages.","items":{"$ref":"#\/components\/schemas\/language"},"x-example":""}},"required":["total","languages"]},"currencyList":{"description":"Currencies List","type":"object","properties":{"total":{"type":"integer","description":"Total number of currencies documents that matched your query.","x-example":5,"format":"int32"},"currencies":{"type":"array","description":"List of currencies.","items":{"$ref":"#\/components\/schemas\/currency"},"x-example":""}},"required":["total","currencies"]},"phoneList":{"description":"Phones List","type":"object","properties":{"total":{"type":"integer","description":"Total number of phones documents that matched your query.","x-example":5,"format":"int32"},"phones":{"type":"array","description":"List of phones.","items":{"$ref":"#\/components\/schemas\/phone"},"x-example":""}},"required":["total","phones"]},"localeCodeList":{"description":"Locale codes list","type":"object","properties":{"total":{"type":"integer","description":"Total number of localeCodes documents that matched your query.","x-example":5,"format":"int32"},"localeCodes":{"type":"array","description":"List of localeCodes.","items":{"$ref":"#\/components\/schemas\/localeCode"},"x-example":""}},"required":["total","localeCodes"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"user":{"description":"User","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"password":{"type":"string","description":"Hashed user password.","x-example":"$argon2id$v=19$m=2048,t=4,p=3$aUZjLnliVWRINmFNTWMudg$5S+x+7uA31xFnrHFT47yFwcJeaP0w92L\/4LdgrVRXxE","nullable":true},"hash":{"type":"string","description":"Password hashing algorithm.","x-example":"argon2","nullable":true},"hashOptions":{"type":"object","description":"Password hashing algorithm configuration.","x-example":{},"items":{"oneOf":[{"$ref":"#\/components\/schemas\/algoArgon2"},{"$ref":"#\/components\/schemas\/algoScrypt"},{"$ref":"#\/components\/schemas\/algoScryptModified"},{"$ref":"#\/components\/schemas\/algoBcrypt"},{"$ref":"#\/components\/schemas\/algoPhpass"},{"$ref":"#\/components\/schemas\/algoSha"},{"$ref":"#\/components\/schemas\/algoMd5"}]},"nullable":true},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"labels":{"type":"array","description":"Labels for the user.","items":{"type":"string"},"x-example":["vip"]},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"mfa":{"type":"boolean","description":"Multi factor authentication status.","x-example":true},"totp":{"type":"boolean","description":"TOTP status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"$ref":"#\/components\/schemas\/preferences"}},"targets":{"type":"array","description":"A user-owned message receiver. A single user may have multiple e.g. emails, phones, and a browser. Each target is registered with a single provider.","items":{"$ref":"#\/components\/schemas\/target"},"x-example":[]},"accessedAt":{"type":"string","description":"Most recent access date in ISO 8601 format. This attribute is only updated again after 24 hours.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","$updatedAt","name","registration","status","labels","passwordUpdate","email","phone","emailVerification","phoneVerification","mfa","totp","prefs","targets","accessedAt"]},"algoMd5":{"description":"AlgoMD5","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"md5"}},"required":["type"]},"algoSha":{"description":"AlgoSHA","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"sha"}},"required":["type"]},"algoPhpass":{"description":"AlgoPHPass","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"phpass"}},"required":["type"]},"algoBcrypt":{"description":"AlgoBcrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"bcrypt"}},"required":["type"]},"algoScrypt":{"description":"AlgoScrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scrypt"},"costCpu":{"type":"integer","description":"CPU complexity of computed hash.","x-example":8,"format":"int32"},"costMemory":{"type":"integer","description":"Memory complexity of computed hash.","x-example":14,"format":"int32"},"costParallel":{"type":"integer","description":"Parallelization of computed hash.","x-example":1,"format":"int32"},"length":{"type":"integer","description":"Length used to compute hash.","x-example":64,"format":"int32"}},"required":["type","costCpu","costMemory","costParallel","length"]},"algoScryptModified":{"description":"AlgoScryptModified","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scryptMod"},"salt":{"type":"string","description":"Salt used to compute hash.","x-example":"UxLMreBr6tYyjQ=="},"saltSeparator":{"type":"string","description":"Separator used to compute hash.","x-example":"Bw=="},"signerKey":{"type":"string","description":"Key used to compute hash.","x-example":"XyEKE9RcTDeLEsL\/RjwPDBv\/RqDl8fb3gpYEOQaPihbxf1ZAtSOHCjuAAa7Q3oHpCYhXSN9tizHgVOwn6krflQ=="}},"required":["type","salt","saltSeparator","signerKey"]},"algoArgon2":{"description":"AlgoArgon2","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"argon2"},"memoryCost":{"type":"integer","description":"Memory used to compute hash.","x-example":65536,"format":"int32"},"timeCost":{"type":"integer","description":"Amount of time consumed to compute hash","x-example":4,"format":"int32"},"threads":{"type":"integer","description":"Number of threads used to compute hash.","x-example":3,"format":"int32"}},"required":["type","memoryCost","timeCost","threads"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true},"factors":{"type":"array","description":"Returns a list of active session factors.","items":{"type":"string"},"x-example":["email"]},"secret":{"type":"string","description":"Secret used to authenticate the user. Only included if the request was made with an API key","x-example":"5e5bb8c16897e"}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current","factors","secret"]},"identity":{"description":"Identity","type":"object","properties":{"$id":{"type":"string","description":"Identity ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Identity creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Identity update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"provider":{"type":"string","description":"Identity Provider.","x-example":"email"},"providerUid":{"type":"string","description":"ID of the User in the Identity Provider.","x-example":"5e5bb8c16897e"},"providerEmail":{"type":"string","description":"Email of the User in the Identity Provider.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Identity Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Identity Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"}},"required":["$id","$createdAt","$updatedAt","userId","provider","providerUid","providerEmail","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"phrase":{"type":"string","description":"Security phrase of a token. Empty if security phrase was not requested when creating a token. It includes randomly generated phrase which is also sent in the external resource such as email.","x-example":"Golden Fox"}},"required":["$id","$createdAt","userId","secret","expire","phrase"]},"jwt":{"description":"JWT","type":"object","properties":{"jwt":{"type":"string","description":"JWT encoded string.","x-example":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c"}},"required":["jwt"]},"locale":{"description":"Locale","type":"object","properties":{"ip":{"type":"string","description":"User IP address.","x-example":"127.0.0.1"},"countryCode":{"type":"string","description":"Country code in [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) two-character format","x-example":"US"},"country":{"type":"string","description":"Country name. This field support localization.","x-example":"United States"},"continentCode":{"type":"string","description":"Continent code. A two character continent code \"AF\" for Africa, \"AN\" for Antarctica, \"AS\" for Asia, \"EU\" for Europe, \"NA\" for North America, \"OC\" for Oceania, and \"SA\" for South America.","x-example":"NA"},"continent":{"type":"string","description":"Continent name. This field support localization.","x-example":"North America"},"eu":{"type":"boolean","description":"True if country is part of the European Union.","x-example":false},"currency":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format","x-example":"USD"}},"required":["ip","countryCode","country","continentCode","continent","eu","currency"]},"localeCode":{"description":"LocaleCode","type":"object","properties":{"code":{"type":"string","description":"Locale codes in [ISO 639-1](https:\/\/en.wikipedia.org\/wiki\/List_of_ISO_639-1_codes)","x-example":"en-us"},"name":{"type":"string","description":"Locale name","x-example":"US"}},"required":["code","name"]},"file":{"description":"File","type":"object","properties":{"$id":{"type":"string","description":"File ID.","x-example":"5e5ea5c16897e"},"bucketId":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"},"prefs":{"type":"object","description":"Team preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"$ref":"#\/components\/schemas\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","total","prefs"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"mfa":{"type":"boolean","description":"Multi factor authentication status, true if the user has MFA enabled or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":["owner"]}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","mfa","roles"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"requestMethod":{"type":"string","description":"HTTP request method type.","x-example":"GET"},"requestPath":{"type":"string","description":"HTTP request path and query.","x-example":"\/articles?id=5"},"requestHeaders":{"type":"array","description":"HTTP response headers as a key-value object. This will return only whitelisted headers. All headers are returned if execution is created as synchronous.","items":{"$ref":"#\/components\/schemas\/headers"},"x-example":[{"Content-Type":"application\/json"}]},"responseStatusCode":{"type":"integer","description":"HTTP response status code.","x-example":200,"format":"int32"},"responseBody":{"type":"string","description":"HTTP response body. This will return empty unless execution is created as synchronous.","x-example":"Developers are awesome."},"responseHeaders":{"type":"array","description":"HTTP response headers as a key-value object. This will return only whitelisted headers. All headers are returned if execution is created as synchronous.","items":{"$ref":"#\/components\/schemas\/headers"},"x-example":[{"Content-Type":"application\/json"}]},"logs":{"type":"string","description":"Function logs. Includes the last 4,000 characters. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"errors":{"type":"string","description":"Function errors. Includes the last 4,000 characters. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"Function execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","requestMethod","requestPath","requestHeaders","responseStatusCode","responseBody","responseHeaders","logs","errors","duration"]},"country":{"description":"Country","type":"object","properties":{"name":{"type":"string","description":"Country name.","x-example":"United States"},"code":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"}},"required":["name","code"]},"continent":{"description":"Continent","type":"object","properties":{"name":{"type":"string","description":"Continent name.","x-example":"Europe"},"code":{"type":"string","description":"Continent two letter code.","x-example":"EU"}},"required":["name","code"]},"language":{"description":"Language","type":"object","properties":{"name":{"type":"string","description":"Language name.","x-example":"Italian"},"code":{"type":"string","description":"Language two-character ISO 639-1 codes.","x-example":"it"},"nativeName":{"type":"string","description":"Language native name.","x-example":"Italiano"}},"required":["name","code","nativeName"]},"currency":{"description":"Currency","type":"object","properties":{"symbol":{"type":"string","description":"Currency symbol.","x-example":"$"},"name":{"type":"string","description":"Currency name.","x-example":"US dollar"},"symbolNative":{"type":"string","description":"Currency native symbol.","x-example":"$"},"decimalDigits":{"type":"integer","description":"Number of decimal digits.","x-example":2,"format":"int32"},"rounding":{"type":"number","description":"Currency digit rounding.","x-example":0,"format":"double"},"code":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format.","x-example":"USD"},"namePlural":{"type":"string","description":"Currency plural name","x-example":"US dollars"}},"required":["symbol","name","symbolNative","decimalDigits","rounding","code","namePlural"]},"phone":{"description":"Phone","type":"object","properties":{"code":{"type":"string","description":"Phone code.","x-example":"+1"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["code","countryCode","countryName"]},"headers":{"description":"Headers","type":"object","properties":{"name":{"type":"string","description":"Header name.","x-example":"Content-Type"},"value":{"type":"string","description":"Header value.","x-example":"application\/json"}},"required":["name","value"]},"mfaChallenge":{"description":"MFA Challenge","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","userId","expire"]},"mfaType":{"description":"MFAType","type":"object","properties":{"backups":{"type":"array","description":"Backup codes.","items":{"type":"string"},"x-example":true},"secret":{"type":"string","description":"Secret token used for TOTP factor.","x-example":true},"uri":{"type":"string","description":"URI for authenticator apps.","x-example":true}},"required":["backups","secret","uri"]},"mfaFactors":{"description":"MFAFactors","type":"object","properties":{"totp":{"type":"boolean","description":"TOTP","x-example":true},"phone":{"type":"boolean","description":"Phone","x-example":true},"email":{"type":"boolean","description":"Email","x-example":true}},"required":["totp","phone","email"]},"subscriber":{"description":"Subscriber","type":"object","properties":{"$id":{"type":"string","description":"Subscriber ID.","x-example":"259125845563242502"},"$createdAt":{"type":"string","description":"Subscriber creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Subscriber update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"targetId":{"type":"string","description":"Target ID.","x-example":"259125845563242502"},"target":{"type":"object","description":"Target.","x-example":{"$id":"259125845563242502","$createdAt":"2020-10-15T06:38:00.000+00:00","$updatedAt":"2020-10-15T06:38:00.000+00:00","providerType":"email","providerId":"259125845563242502","name":"ageon-app-email","identifier":"random-mail@email.org","userId":"5e5ea5c16897e"},"items":{"$ref":"#\/components\/schemas\/target"}},"userId":{"type":"string","description":"Topic ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User Name.","x-example":"Aegon Targaryen"},"topicId":{"type":"string","description":"Topic ID.","x-example":"259125845563242502"},"providerType":{"type":"string","description":"The target provider type. Can be one of the following: `email`, `sms` or `push`.","x-example":"email"}},"required":["$id","$createdAt","$updatedAt","targetId","target","userId","userName","topicId","providerType"]},"target":{"description":"Target","type":"object","properties":{"$id":{"type":"string","description":"Target ID.","x-example":"259125845563242502"},"$createdAt":{"type":"string","description":"Target creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Target update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Target Name.","x-example":"Aegon apple token"},"userId":{"type":"string","description":"User ID.","x-example":"259125845563242502"},"providerId":{"type":"string","description":"Provider ID.","x-example":"259125845563242502","nullable":true},"providerType":{"type":"string","description":"The target provider type. Can be one of the following: `email`, `sms` or `push`.","x-example":"email"},"identifier":{"type":"string","description":"The target identifier.","x-example":"token"}},"required":["$id","$createdAt","$updatedAt","name","userId","providerType","identifier"]}},"securitySchemes":{"Project":{"type":"apiKey","name":"X-Appwrite-Project","description":"Your project ID","in":"header","x-appwrite":{"demo":"5df5acd0d48c2"}},"JWT":{"type":"apiKey","name":"X-Appwrite-JWT","description":"Your secret JSON Web Token","in":"header"},"Locale":{"type":"apiKey","name":"X-Appwrite-Locale","description":"","in":"header","x-appwrite":{"demo":"en"}},"Session":{"type":"apiKey","name":"X-Appwrite-Session","description":"The user session to authenticate with","in":"header"}}},"externalDocs":{"description":"Full API docs, specs and tutorials","url":"https:\/\/appwrite.io\/docs"}} \ No newline at end of file diff --git a/app/config/specs/open-api3-latest-console.json b/app/config/specs/open-api3-latest-console.json index 0132ffc03f..a6d5aa248c 100644 --- a/app/config/specs/open-api3-latest-console.json +++ b/app/config/specs/open-api3-latest-console.json @@ -1 +1 @@ -{"openapi":"3.0.0","info":{"version":"1.4.13","title":"Appwrite","description":"Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https:\/\/appwrite.io\/docs](https:\/\/appwrite.io\/docs)","termsOfService":"https:\/\/appwrite.io\/policy\/terms","contact":{"name":"Appwrite Team","url":"https:\/\/appwrite.io\/support","email":"team@appwrite.io"},"license":{"name":"BSD-3-Clause","url":"https:\/\/raw.githubusercontent.com\/appwrite\/appwrite\/master\/LICENSE"}},"servers":[{"url":"https:\/\/HOSTNAME\/v1"}],"paths":{"\/account":{"get":{"summary":"Get account","operationId":"accountGet","tags":["account"],"description":"Get the currently logged in user.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"get","weight":22,"cookies":false,"type":"","demo":"account\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"post":{"summary":"Create account","operationId":"accountCreate","tags":["account"],"description":"Use this endpoint to allow a new user to register a new account in your project. After the user registration completes successfully, you can use the [\/account\/verfication](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createVerification) route to start verifying the user email address. To allow the new user to login to their new account, you need to create a new [account session](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createEmailSession).","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"create","weight":7,"cookies":false,"type":"","demo":"account\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"New user password. Must be between 8 and 256 chars.","x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}},"delete":{"summary":"Delete account","operationId":"accountDelete","tags":["account"],"description":"Delete the currently logged in user.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":49,"cookies":false,"type":"","demo":"account\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/email":{"patch":{"summary":"Update email","operationId":"accountUpdateEmail","tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateEmail","weight":29,"cookies":false,"type":"","demo":"account\/update-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","x-example":"password"}},"required":["email","password"]}}}}}},"\/account\/identities":{"get":{"summary":"List Identities","operationId":"accountListIdentities","tags":["account"],"description":"Get the list of identities for the currently logged in user.","responses":{"200":{"description":"Identities List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/identityList"}}}}},"x-appwrite":{"method":"listIdentities","weight":13,"cookies":false,"type":"","demo":"account\/list-identities.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-identities.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/identities","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, provider, providerUid, providerEmail, providerAccessTokenExpiry","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/identities\/{identityId}":{"delete":{"summary":"Delete identity","operationId":"accountDeleteIdentity","tags":["account"],"description":"Delete an identity by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIdentity","weight":14,"cookies":false,"type":"","demo":"account\/delete-identity.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-identity.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"identityId","description":"Identity ID.","required":true,"schema":{"type":"string","x-example":"[IDENTITY_ID]"},"in":"path"}]}},"\/account\/jwt":{"post":{"summary":"Create JWT","operationId":"accountCreateJWT","tags":["account"],"description":"Use this endpoint to create a JSON Web Token. You can use the resulting JWT to authenticate on behalf of the current user when working with the Appwrite server-side API and SDKs. The JWT secret is valid for 15 minutes from its creation and will be invalid if the user will logout in that time frame.","responses":{"201":{"description":"JWT","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/jwt"}}}}},"x-appwrite":{"method":"createJWT","weight":21,"cookies":false,"type":"","demo":"account\/create-j-w-t.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-jwt.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"accounts.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"List logs","operationId":"accountListLogs","tags":["account"],"description":"Get the list of latest security activity logs for the currently logged in user. Each log returns user IP address, location and date and time of log.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listLogs","weight":25,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/mfa":{"patch":{"summary":"Update MFA","operationId":"accountUpdateMFA","tags":["account"],"description":"","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateMFA","weight":42,"cookies":false,"type":"","demo":"account\/update-m-f-a.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-mfa.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"mfa":{"type":"boolean","description":"Enable or disable MFA.","x-example":false}},"required":["mfa"]}}}}}},"\/account\/mfa\/challenge":{"post":{"summary":"Create MFA Challenge","operationId":"accountCreateChallenge","tags":["account"],"description":"","responses":{"201":{"description":"MFA Challenge","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/mfaChallenge"}}}}},"x-appwrite":{"method":"createChallenge","weight":47,"cookies":false,"type":"","demo":"account\/create-challenge.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-challenge.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},token:{param-token}","scope":"accounts.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"provider":{"type":"string","description":"provider.","x-example":"totp","enum":["totp","phone","email"],"x-enum-name":"AuthenticatorProvider","x-enum-keys":[]}},"required":["provider"]}}}}},"put":{"summary":"Create MFA Challenge (confirmation)","operationId":"accountUpdateChallenge","tags":["account"],"description":"","responses":{"204":{"description":"No content","content":{"":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateChallenge","weight":48,"cookies":false,"type":"","demo":"account\/update-challenge.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-challenge.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"challengeId":{"type":"string","description":"Valid verification token.","x-example":"[CHALLENGE_ID]"},"otp":{"type":"string","description":"Valid verification token.","x-example":"[OTP]"}},"required":["challengeId","otp"]}}}}}},"\/account\/mfa\/factors":{"get":{"summary":"List Factors","operationId":"accountListFactors","tags":["account"],"description":"Get the currently logged in user.","responses":{"200":{"description":"MFAProviders","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/mfaProviders"}}}}},"x-appwrite":{"method":"listFactors","weight":43,"cookies":false,"type":"","demo":"account\/list-factors.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/account\/mfa\/{factor}":{"post":{"summary":"Add Authenticator","operationId":"accountAddAuthenticator","tags":["account"],"description":"","responses":{"200":{"description":"MFAProvider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/mfaProvider"}}}}},"x-appwrite":{"method":"addAuthenticator","weight":44,"cookies":false,"type":"","demo":"account\/add-authenticator.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-mfa.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"factor","description":"Factor.","required":true,"schema":{"type":"string","x-example":"totp","enum":["totp"],"x-enum-name":"AuthenticatorFactor","x-enum-keys":[]},"in":"path"}]},"put":{"summary":"Verify Authenticator","operationId":"accountVerifyAuthenticator","tags":["account"],"description":"","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"verifyAuthenticator","weight":45,"cookies":false,"type":"","demo":"account\/verify-authenticator.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-mfa.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"factor","description":"Factor.","required":true,"schema":{"type":"string","x-example":"totp","enum":["totp"],"x-enum-name":"AuthenticatorFactor","x-enum-keys":[]},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"otp":{"type":"string","description":"Valid verification token.","x-example":"[OTP]"}},"required":["otp"]}}}}}},"\/account\/mfa\/{provider}":{"delete":{"summary":"Delete Authenticator","operationId":"accountDeleteAuthenticator","tags":["account"],"description":"","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"deleteAuthenticator","weight":46,"cookies":false,"type":"","demo":"account\/delete-authenticator.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-mfa.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"provider","description":"Provider.","required":true,"schema":{"type":"string","x-example":"totp","enum":["totp"],"x-enum-name":"AuthenticatorProvider","x-enum-keys":[]},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"otp":{"type":"string","description":"Valid verification token.","x-example":"[OTP]"}},"required":["otp"]}}}}}},"\/account\/name":{"patch":{"summary":"Update name","operationId":"accountUpdateName","tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateName","weight":27,"cookies":false,"type":"","demo":"account\/update-name.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-name.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["name"]}}}}}},"\/account\/password":{"patch":{"summary":"Update password","operationId":"accountUpdatePassword","tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePassword","weight":28,"cookies":false,"type":"","demo":"account\/update-password.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-password.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"password":{"type":"string","description":"New user password. Must be at least 8 chars.","x-example":null},"oldPassword":{"type":"string","description":"Current user password. Must be at least 8 chars.","x-example":"password"}},"required":["password"]}}}}}},"\/account\/phone":{"patch":{"summary":"Update phone","operationId":"accountUpdatePhone","tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createPhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePhone","weight":30,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","x-example":"password"}},"required":["phone","password"]}}}}}},"\/account\/prefs":{"get":{"summary":"Get account preferences","operationId":"accountGetPrefs","tags":["account"],"description":"Get the preferences as a key-value object for the currently logged in user.","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"getPrefs","weight":23,"cookies":false,"type":"","demo":"account\/get-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/prefs","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"patch":{"summary":"Update preferences","operationId":"accountUpdatePrefs","tags":["account"],"description":"Update currently logged in user account preferences. The object you pass is stored as is, and replaces any previous value. The maximum allowed prefs size is 64kB and throws error if exceeded.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePrefs","weight":31,"cookies":false,"type":"","demo":"account\/update-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/prefs","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"prefs":{"type":"object","description":"Prefs key-value JSON object.","x-example":"{}"}},"required":["prefs"]}}}}}},"\/account\/recovery":{"post":{"summary":"Create password recovery","operationId":"accountCreateRecovery","tags":["account"],"description":"Sends the user an email with a temporary secret key for password reset. When the user clicks the confirmation link he is redirected back to your app password reset URL with the secret key and email address values attached to the URL query string. Use the query string params to submit a request to the [PUT \/account\/recovery](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateRecovery) endpoint to complete the process. The verification link sent to the user's email address is valid for 1 hour.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createRecovery","weight":36,"cookies":false,"type":"","demo":"account\/create-recovery.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-recovery.md","rate-limit":10,"rate-time":3600,"rate-key":["url:{url},email:{param-email}","ip:{ip}"],"scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"url":{"type":"string","description":"URL to redirect the user back to your app from the recovery email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"}},"required":["email","url"]}}}}},"put":{"summary":"Create password recovery (confirmation)","operationId":"accountUpdateRecovery","tags":["account"],"description":"Use this endpoint to complete the user account password reset. Both the **userId** and **secret** arguments will be passed as query parameters to the redirect URL you have provided when sending your request to the [POST \/account\/recovery](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createRecovery) endpoint.\n\nPlease note that in order to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) the only valid redirect URLs are the ones from domains you have set when adding your platforms in the console interface.","responses":{"200":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"updateRecovery","weight":37,"cookies":false,"type":"","demo":"account\/update-recovery.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-recovery.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid reset token.","x-example":"[SECRET]"},"password":{"type":"string","description":"New user password. Must be between 8 and 256 chars.","x-example":null}},"required":["userId","secret","password"]}}}}}},"\/account\/sessions":{"get":{"summary":"List sessions","operationId":"accountListSessions","tags":["account"],"description":"Get the list of active sessions across different devices for the currently logged in user.","responses":{"200":{"description":"Sessions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/sessionList"}}}}},"x-appwrite":{"method":"listSessions","weight":24,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/sessions","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete sessions","operationId":"accountDeleteSessions","tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":35,"cookies":false,"type":"","demo":"account\/delete-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-sessions.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/account\/sessions\/anonymous":{"post":{"summary":"Create anonymous session","operationId":"accountCreateAnonymousSession","tags":["account"],"description":"Use this endpoint to allow a new user to register an anonymous account in your project. This route will also create a new session for the user. To allow the new user to convert an anonymous account to a normal account, you need to update its [email and password](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateEmail) or create an [OAuth2 session](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#CreateOAuth2Session).","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"createAnonymousSession","weight":20,"cookies":false,"type":"","demo":"account\/create-anonymous-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-anonymous.md","rate-limit":50,"rate-time":3600,"rate-key":"ip:{ip}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/sessions\/email":{"post":{"summary":"Create email password session","operationId":"accountCreateEmailPasswordSession","tags":["account"],"description":"Allow the user to login into their account by providing a valid email and password combination. This route will create a new session for the user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"createEmailPasswordSession","weight":8,"cookies":false,"type":"","demo":"account\/create-email-password-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-email-password.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","x-example":"password"}},"required":["email","password"]}}}}}},"\/account\/sessions\/magic-url":{"put":{"summary":"Create session (deprecated)","operationId":"accountUpdateMagicURLSession","tags":["account"],"description":"Use this endpoint to create a session from token. Provide the **userId** and **secret** parameters from the successful response of authentication flows initiated by token creation. For example, magic URL and phone login.","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateMagicURLSession","weight":17,"cookies":false,"type":"","demo":"account\/update-magic-u-r-l-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session.md","rate-limit":10,"rate-time":3600,"rate-key":"ip:{ip},userId:{param-userId}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/account\/sessions\/oauth2\/{provider}":{"get":{"summary":"Create OAuth2 session","operationId":"accountCreateOAuth2Session","tags":["account"],"description":"Allow the user to login to their account using the OAuth2 provider of their choice. Each OAuth2 provider should be enabled from the Appwrite console first. Use the success and failure arguments to provide a redirect URL's back to your app when login is completed.\n\nIf there is already an active session, the new session will be attached to the logged-in account. If there are no active sessions, the server will attempt to look for a user with the same email address as the email received from the OAuth2 provider and attach the new session to the existing user. If no matching user is found - the server will create a new user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).\n","responses":{"301":{"description":"File"}},"x-appwrite":{"method":"createOAuth2Session","weight":9,"cookies":false,"type":"webAuth","demo":"account\/create-o-auth2session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-oauth2.md","rate-limit":50,"rate-time":3600,"rate-key":"ip:{ip}","scope":"sessions.write","platforms":["client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"provider","description":"OAuth2 Provider. Currently, supported providers are: amazon, apple, auth0, authentik, autodesk, bitbucket, bitly, box, dailymotion, discord, disqus, dropbox, etsy, facebook, github, gitlab, google, linkedin, microsoft, notion, oidc, okta, paypal, paypalSandbox, podio, salesforce, slack, spotify, stripe, tradeshift, tradeshiftBox, twitch, wordpress, yahoo, yammer, yandex, zoho, zoom.","required":true,"schema":{"type":"string","x-example":"amazon","enum":["amazon","apple","auth0","authentik","autodesk","bitbucket","bitly","box","dailymotion","discord","disqus","dropbox","etsy","facebook","github","gitlab","google","linkedin","microsoft","notion","oidc","okta","paypal","paypalSandbox","podio","salesforce","slack","spotify","stripe","tradeshift","tradeshiftBox","twitch","wordpress","yahoo","yammer","yandex","zoho","zoom","mock"],"x-enum-name":"OAuthProvider","x-enum-keys":[]},"in":"path"},{"name":"success","description":"URL to redirect back to your app after a successful login attempt. Only URLs from hostnames in your project's platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","required":false,"schema":{"type":"string","format":"url","x-example":"https:\/\/example.com","default":""},"in":"query"},{"name":"failure","description":"URL to redirect back to your app after a failed login attempt. Only URLs from hostnames in your project's platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","required":false,"schema":{"type":"string","format":"url","x-example":"https:\/\/example.com","default":""},"in":"query"},{"name":"token","description":"Include token credentials in the final redirect, useful for server-side integrations, or when cookies are not available.","required":false,"schema":{"type":"boolean","x-example":false,"default":false},"in":"query"},{"name":"scopes","description":"A list of custom OAuth2 scopes. Check each provider internal docs for a list of supported scopes. Maximum of 100 scopes are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/sessions\/token":{"post":{"summary":"Create session","operationId":"accountCreateSession","tags":["account"],"description":"Use this endpoint to create a session from token. Provide the **userId** and **secret** parameters from the successful response of authentication flows initiated by token creation. For example, magic URL and phone login.","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"createSession","weight":18,"cookies":false,"type":"","demo":"account\/create-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session.md","rate-limit":10,"rate-time":3600,"rate-key":"ip:{ip},userId:{param-userId}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Secret of a token generated by login methods. For example, the `createMagicURLToken` or `createPhoneToken` methods.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/account\/sessions\/{sessionId}":{"get":{"summary":"Get session","operationId":"accountGetSession","tags":["account"],"description":"Use this endpoint to get a logged in user's session using a Session ID. Inputting 'current' will return the current session being used.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"getSession","weight":26,"cookies":false,"type":"","demo":"account\/get-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-session.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/sessions","offline-key":"{sessionId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to get the current device session.","required":true,"schema":{"type":"string","x-example":"[SESSION_ID]"},"in":"path"}]},"patch":{"summary":"Update (or renew) a session","operationId":"accountUpdateSession","tags":["account"],"description":"Extend session's expiry to increase it's lifespan. Extending a session is useful when session length is short such as 5 minutes.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateSession","weight":34,"cookies":false,"type":"","demo":"account\/update-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-session.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to update the current device session.","required":true,"schema":{"type":"string","x-example":"[SESSION_ID]"},"in":"path"}]},"delete":{"summary":"Delete session","operationId":"accountDeleteSession","tags":["account"],"description":"Logout the user. Use 'current' as the session ID to logout on this device, use a session ID to logout on another device. If you're looking to logout the user on all devices, use [Delete Sessions](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#deleteSessions) instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSession","weight":33,"cookies":false,"type":"","demo":"account\/delete-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-session.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to delete the current device session.","required":true,"schema":{"type":"string","x-example":"[SESSION_ID]"},"in":"path"}]}},"\/account\/status":{"patch":{"summary":"Update status","operationId":"accountUpdateStatus","tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateStatus","weight":32,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/account\/targets\/push":{"post":{"summary":"Create a push target","operationId":"accountCreatePushTarget","tags":["account"],"description":"","responses":{"201":{"description":"Target","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/target"}}}}},"x-appwrite":{"method":"createPushTarget","weight":50,"cookies":false,"type":"","demo":"account\/create-push-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"targetId":{"type":"string","description":"Target ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[TARGET_ID]"},"identifier":{"type":"string","description":"The target identifier (token, email, phone etc.)","x-example":"[IDENTIFIER]"},"providerId":{"type":"string","description":"Provider ID. Message will be sent to this target from the specified provider ID. If no provider ID is set the first setup provider will be used.","x-example":"[PROVIDER_ID]"}},"required":["targetId","identifier"]}}}}}},"\/account\/targets\/{targetId}\/push":{"put":{"summary":"Update a push target","operationId":"accountUpdatePushTarget","tags":["account"],"description":"","responses":{"200":{"description":"Target","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/target"}}}}},"x-appwrite":{"method":"updatePushTarget","weight":51,"cookies":false,"type":"","demo":"account\/update-push-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"targetId","description":"Target ID.","required":true,"schema":{"type":"string","x-example":"[TARGET_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"identifier":{"type":"string","description":"The target identifier (token, email, phone etc.)","x-example":"[IDENTIFIER]"}},"required":["identifier"]}}}}},"delete":{"summary":"Delete a push target","operationId":"accountDeletePushTarget","tags":["account"],"description":"","responses":{"204":{"description":"No content","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/target"}}}}},"x-appwrite":{"method":"deletePushTarget","weight":52,"cookies":false,"type":"","demo":"account\/delete-push-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"targetId","description":"Target ID.","required":true,"schema":{"type":"string","x-example":"[TARGET_ID]"},"in":"path"}]}},"\/account\/tokens\/email":{"post":{"summary":"Create email token (OTP)","operationId":"accountCreateEmailToken","tags":["account"],"description":"Sends the user an email with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [POST \/v1\/account\/sessions\/token](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createSession) endpoint to complete the login process. The secret sent to the user's email is valid for 15 minutes.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createEmailToken","weight":16,"cookies":false,"type":"","demo":"account\/create-email-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-token-email.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"phrase":{"type":"boolean","description":"Toggle for security phrase. If enabled, email will be send with a randomly generated phrase and the phrase will also be included in the response. Confirming phrases match increases the security of your authentication flow.","x-example":false}},"required":["userId","email"]}}}}}},"\/account\/tokens\/magic-url":{"post":{"summary":"Create magic URL token","operationId":"accountCreateMagicURLToken","tags":["account"],"description":"Sends the user an email with a secret key for creating a session. If the provided user ID has not been registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [POST \/v1\/account\/sessions\/token](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createSession) endpoint to complete the login process. The link sent to the user's email address is valid for 1 hour. If you are on a mobile device you can leave the URL parameter empty, so that the login completion will be handled by your Appwrite instance by default.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).\n","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createMagicURLToken","weight":15,"cookies":false,"type":"","demo":"account\/create-magic-u-r-l-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-token-magic-url.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"url":{"type":"string","description":"URL to redirect the user back to your app from the magic URL login. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"},"phrase":{"type":"boolean","description":"Toggle for security phrase. If enabled, email will be send with a randomly generated phrase and the phrase will also be included in the response. Confirming phrases match increases the security of your authentication flow.","x-example":false}},"required":["userId","email"]}}}}}},"\/account\/tokens\/phone":{"post":{"summary":"Create phone token","operationId":"accountCreatePhoneToken","tags":["account"],"description":"Sends the user an SMS with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [POST \/v1\/account\/sessions\/token](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createSession) endpoint to complete the login process. The secret sent to the user's phone is valid for 15 minutes.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createPhoneToken","weight":19,"cookies":false,"type":"","demo":"account\/create-phone-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-token-phone.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},phone:{param-phone}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"}},"required":["userId","phone"]}}}}}},"\/account\/verification":{"post":{"summary":"Create email verification","operationId":"accountCreateVerification","tags":["account"],"description":"Use this endpoint to send a verification message to your user email address to confirm they are the valid owners of that address. Both the **userId** and **secret** arguments will be passed as query parameters to the URL you have provided to be attached to the verification email. The provided URL should redirect the user back to your app and allow you to complete the verification process by verifying both the **userId** and **secret** parameters. Learn more about how to [complete the verification process](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateVerification). The verification link sent to the user's email address is valid for 7 days.\n\nPlease note that in order to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md), the only valid redirect URLs are the ones from domains you have set when adding your platforms in the console interface.\n","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createVerification","weight":38,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"url":{"type":"string","description":"URL to redirect the user back to your app from the verification email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"}},"required":["url"]}}}}},"put":{"summary":"Create email verification (confirmation)","operationId":"accountUpdateVerification","tags":["account"],"description":"Use this endpoint to complete the user email verification process. Use both the **userId** and **secret** parameters that were attached to your app URL to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"updateVerification","weight":39,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/account\/verification\/phone":{"post":{"summary":"Create phone verification","operationId":"accountCreatePhoneVerification","tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updatePhone) endpoint. Learn more about how to [complete the verification process](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createPhoneVerification","weight":40,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{userId}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"put":{"summary":"Create phone verification (confirmation)","operationId":"accountUpdatePhoneVerification","tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"updatePhoneVerification","weight":41,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/avatars\/browsers\/{code}":{"get":{"summary":"Get browser icon","operationId":"avatarsGetBrowser","tags":["avatars"],"description":"You can use this endpoint to show different browser icons to your users. The code argument receives the browser code as it appears in your user [GET \/account\/sessions](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#getSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getBrowser","weight":54,"cookies":false,"type":"location","demo":"avatars\/get-browser.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-browser.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Browser Code.","required":true,"schema":{"type":"string","x-example":"aa","enum":["aa","an","ch","ci","cm","cr","ff","sf","mf","ps","oi","om","op","on"],"x-enum-name":"Browser","x-enum-keys":["Avant Browser","Android WebView Beta","Google Chrome","Google Chrome (iOS)","Google Chrome (Mobile)","Chromium","Mozilla Firefox","Safari","Mobile Safari","Microsoft Edge","Microsoft Edge (iOS)","Opera Mini","Opera","Opera (Next)"]},"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"}]}},"\/avatars\/credit-cards\/{code}":{"get":{"summary":"Get credit card icon","operationId":"avatarsGetCreditCard","tags":["avatars"],"description":"The credit card endpoint will return you the icon of the credit card provider you need. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getCreditCard","weight":53,"cookies":false,"type":"location","demo":"avatars\/get-credit-card.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-credit-card.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Credit Card Code. Possible values: amex, argencard, cabal, censosud, diners, discover, elo, hipercard, jcb, mastercard, naranja, targeta-shopping, union-china-pay, visa, mir, maestro.","required":true,"schema":{"type":"string","x-example":"amex","enum":["amex","argencard","cabal","censosud","diners","discover","elo","hipercard","jcb","mastercard","naranja","targeta-shopping","union-china-pay","visa","mir","maestro"],"x-enum-name":"CreditCard","x-enum-keys":["American Express","Argencard","Cabal","Consosud","Diners Club","Discover","Elo","Hipercard","JCB","Mastercard","Naranja","Tarjeta Shopping","Union China Pay","Visa","MIR","Maestro"]},"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"}]}},"\/avatars\/favicon":{"get":{"summary":"Get favicon","operationId":"avatarsGetFavicon","tags":["avatars"],"description":"Use this endpoint to fetch the favorite icon (AKA favicon) of any remote website URL.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFavicon","weight":57,"cookies":false,"type":"location","demo":"avatars\/get-favicon.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-favicon.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"url","description":"Website URL which you want to fetch the favicon from.","required":true,"schema":{"type":"string","format":"url","x-example":"https:\/\/example.com"},"in":"query"}]}},"\/avatars\/flags\/{code}":{"get":{"summary":"Get country flag","operationId":"avatarsGetFlag","tags":["avatars"],"description":"You can use this endpoint to show different country flags icons to your users. The code argument receives the 2 letter country code. Use width, height and quality arguments to change the output settings. Country codes follow the [ISO 3166-1](https:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFlag","weight":55,"cookies":false,"type":"location","demo":"avatars\/get-flag.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-flag.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Country Code. ISO Alpha-2 country code format.","required":true,"schema":{"type":"string","x-example":"af","enum":["af","ao","al","ad","ae","ar","am","ag","au","at","az","bi","be","bj","bf","bd","bg","bh","bs","ba","by","bz","bo","br","bb","bn","bt","bw","cf","ca","ch","cl","cn","ci","cm","cd","cg","co","km","cv","cr","cu","cy","cz","de","dj","dm","dk","do","dz","ec","eg","er","es","ee","et","fi","fj","fr","fm","ga","gb","ge","gh","gn","gm","gw","gq","gr","gd","gt","gy","hn","hr","ht","hu","id","in","ie","ir","iq","is","il","it","jm","jo","jp","kz","ke","kg","kh","ki","kn","kr","kw","la","lb","lr","ly","lc","li","lk","ls","lt","lu","lv","ma","mc","md","mg","mv","mx","mh","mk","ml","mt","mm","me","mn","mz","mr","mu","mw","my","na","ne","ng","ni","nl","no","np","nr","nz","om","pk","pa","pe","ph","pw","pg","pl","kp","pt","py","qa","ro","ru","rw","sa","sd","sn","sg","sb","sl","sv","sm","so","rs","ss","st","sr","sk","si","se","sz","sc","sy","td","tg","th","tj","tm","tl","to","tt","tn","tr","tv","tz","ug","ua","uy","us","uz","va","vc","ve","vn","vu","ws","ye","za","zm","zw"],"x-enum-name":"Flag","x-enum-keys":["Afghanistan","Angola","Albania","Andorra","United Arab Emirates","Argentina","Armenia","Antigua and Barbuda","Australia","Austria","Azerbaijan","Burundi","Belgium","Benin","Burkina Faso","Bangladesh","Bulgaria","Bahrain","Bahamas","Bosnia and Herzegovina","Belarus","Belize","Bolivia","Brazil","Barbados","Brunei Darussalam","Bhutan","Botswana","Central African Republic","Canada","Switzerland","Chile","China","C\u00f4te d'Ivoire","Cameroon","Democratic Republic of the Congo","Republic of the Congo","Colombia","Comoros","Cape Verde","Costa Rica","Cuba","Cyprus","Czech Republic","Germany","Djibouti","Dominica","Denmark","Dominican Republic","Algeria","Ecuador","Egypt","Eritrea","Spain","Estonia","Ethiopia","Finland","Fiji","France","Micronesia (Federated States of)","Gabon","United Kingdom","Georgia","Ghana","Guinea","Gambia","Guinea-Bissau","Equatorial Guinea","Greece","Grenada","Guatemala","Guyana","Honduras","Croatia","Haiti","Hungary","Indonesia","India","Ireland","Iran (Islamic Republic of)","Iraq","Iceland","Israel","Italy","Jamaica","Jordan","Japan","Kazakhstan","Kenya","Kyrgyzstan","Cambodia","Kiribati","Saint Kitts and Nevis","South Korea","Kuwait","Lao People's Democratic Republic","Lebanon","Liberia","Libya","Saint Lucia","Liechtenstein","Sri Lanka","Lesotho","Lithuania","Luxembourg","Latvia","Morocco","Monaco","Moldova","Madagascar","Maldives","Mexico","Marshall Islands","North Macedonia","Mali","Malta","Myanmar","Montenegro","Mongolia","Mozambique","Mauritania","Mauritius","Malawi","Malaysia","Namibia","Niger","Nigeria","Nicaragua","Netherlands","Norway","Nepal","Nauru","New Zealand","Oman","Pakistan","Panama","Peru","Philippines","Palau","Papua New Guinea","Poland","North Korea","Portugal","Paraguay","Qatar","Romania","Russia","Rwanda","Saudi Arabia","Sudan","Senegal","Singapore","Solomon Islands","Sierra Leone","El Salvador","San Marino","Somalia","Serbia","South Sudan","Sao Tome and Principe","Suriname","Slovakia","Slovenia","Sweden","Eswatini","Seychelles","Syria","Chad","Togo","Thailand","Tajikistan","Turkmenistan","Timor-Leste","Tonga","Trinidad and Tobago","Tunisia","Turkey","Tuvalu","Tanzania","Uganda","Ukraine","Uruguay","United States","Uzbekistan","Vatican City","Saint Vincent and the Grenadines","Venezuela","Vietnam","Vanuatu","Samoa","Yemen","South Africa","Zambia","Zimbabwe"]},"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"}]}},"\/avatars\/image":{"get":{"summary":"Get image from URL","operationId":"avatarsGetImage","tags":["avatars"],"description":"Use this endpoint to fetch a remote image URL and crop it to any image size you want. This endpoint is very useful if you need to crop and display remote images in your app or in case you want to make sure a 3rd party image is properly served using a TLS protocol.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getImage","weight":56,"cookies":false,"type":"location","demo":"avatars\/get-image.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-image.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"url","description":"Image URL which you want to crop.","required":true,"schema":{"type":"string","format":"url","x-example":"https:\/\/example.com"},"in":"query"},{"name":"width","description":"Resize preview image width, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get user initials","operationId":"avatarsGetInitials","tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getInitials","weight":59,"cookies":false,"type":"location","demo":"avatars\/get-initials.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-initials.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"name","description":"Full Name. When empty, current user name or email will be used. Max length: 128 chars.","required":false,"schema":{"type":"string","x-example":"[NAME]","default":""},"in":"query"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":500},"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":500},"in":"query"},{"name":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"schema":{"type":"string","default":""},"in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR code","operationId":"avatarsGetQR","tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getQR","weight":58,"cookies":false,"type":"location","demo":"avatars\/get-q-r.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-qr.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"text","description":"Plain text to be converted to QR code image.","required":true,"schema":{"type":"string","x-example":"[TEXT]"},"in":"query"},{"name":"size","description":"QR code size. Pass an integer between 1 to 1000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":1,"default":400},"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":1},"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"schema":{"type":"boolean","x-example":false,"default":false},"in":"query"}]}},"\/console\/assistant":{"post":{"summary":"Ask Query","operationId":"assistantChat","tags":["assistant"],"description":"","responses":{"200":{"description":"File"}},"x-appwrite":{"method":"chat","weight":304,"cookies":false,"type":"","demo":"assistant\/chat.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/assistant\/chat.md","rate-limit":15,"rate-time":3600,"rate-key":"userId:{userId}","scope":"assistant.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"prompt":{"type":"string","description":"Prompt. A string containing questions asked to the AI assistant.","x-example":"[PROMPT]"}},"required":["prompt"]}}}}}},"\/console\/variables":{"get":{"summary":"Get variables","operationId":"consoleVariables","tags":["console"],"description":"Get all Environment Variables that are relevant for the console.","responses":{"200":{"description":"Console Variables","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/consoleVariables"}}}}},"x-appwrite":{"method":"variables","weight":303,"cookies":false,"type":"","demo":"console\/variables.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/console\/variables.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/databases":{"get":{"summary":"List databases","operationId":"databasesList","tags":["databases"],"description":"Get a list of all databases from the current Appwrite project. You can use the search parameter to filter your results.","responses":{"200":{"description":"Databases List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/databaseList"}}}}},"x-appwrite":{"method":"list","weight":64,"cookies":false,"type":"","demo":"databases\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create database","operationId":"databasesCreate","tags":["databases"],"description":"Create a new Database.\n","responses":{"201":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"create","weight":63,"cookies":false,"type":"","demo":"databases\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"databaseId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[DATABASE_ID]"},"name":{"type":"string","description":"Database name. Max length: 128 chars.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Is the database enabled? When set to 'disabled', users cannot access the database but Server SDKs with an API key can still read and write to the database. No data is lost when this is toggled.","x-example":false}},"required":["databaseId","name"]}}}}}},"\/databases\/usage":{"get":{"summary":"Get usage stats for the database","operationId":"databasesGetUsage","tags":["databases"],"description":"","responses":{"200":{"description":"UsageDatabases","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageDatabases"}}}}},"x-appwrite":{"method":"getUsage","weight":108,"cookies":false,"type":"","demo":"databases\/get-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"`Date range.","required":false,"schema":{"type":"string","x-example":"24h","enum":["24h","30d","90d"],"x-enum-name":"DatabaseUsageRange","x-enum-keys":["Twenty Four Hours","Thirty Days","Ninety Days"],"default":"30d"},"in":"query"}]}},"\/databases\/{databaseId}":{"get":{"summary":"Get database","operationId":"databasesGet","tags":["databases"],"description":"Get a database by its unique ID. This endpoint response returns a JSON object with the database metadata.","responses":{"200":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"get","weight":65,"cookies":false,"type":"","demo":"databases\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}]},"put":{"summary":"Update database","operationId":"databasesUpdate","tags":["databases"],"description":"Update a database by its unique ID.","responses":{"200":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"update","weight":67,"cookies":false,"type":"","demo":"databases\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Database name. Max length: 128 chars.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Is database enabled? When set to 'disabled', users cannot access the database but Server SDKs with an API key can still read and write to the database. No data is lost when this is toggled.","x-example":false}},"required":["name"]}}}}},"delete":{"summary":"Delete database","operationId":"databasesDelete","tags":["databases"],"description":"Delete a database by its unique ID. Only API keys with with databases.write scope can delete a database.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":68,"cookies":false,"type":"","demo":"databases\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections":{"get":{"summary":"List collections","operationId":"databasesListCollections","tags":["databases"],"description":"Get a list of all collections that belong to the provided databaseId. You can use the search parameter to filter your results.","responses":{"200":{"description":"Collections List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collectionList"}}}}},"x-appwrite":{"method":"listCollections","weight":70,"cookies":false,"type":"","demo":"databases\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, documentSecurity","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create collection","operationId":"databasesCreateCollection","tags":["databases"],"description":"Create a new Collection. Before using this route, you should create a new database resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"createCollection","weight":69,"cookies":false,"type":"","demo":"databases\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permissions strings. By default, no user is granted with any permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":false},"enabled":{"type":"boolean","description":"Is collection enabled? When set to 'disabled', users cannot access the collection but Server SDKs with and API key can still read and write to the collection. No data is lost when this is toggled.","x-example":false}},"required":["collectionId","name"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}":{"get":{"summary":"Get collection","operationId":"databasesGetCollection","tags":["databases"],"description":"Get a collection by its unique ID. This endpoint response returns a JSON object with the collection metadata.","responses":{"200":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"getCollection","weight":71,"cookies":false,"type":"","demo":"databases\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]},"put":{"summary":"Update collection","operationId":"databasesUpdateCollection","tags":["databases"],"description":"Update a collection by its unique ID.","responses":{"200":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"updateCollection","weight":73,"cookies":false,"type":"","demo":"databases\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":false},"enabled":{"type":"boolean","description":"Is collection enabled? When set to 'disabled', users cannot access the collection but Server SDKs with and API key can still read and write to the collection. No data is lost when this is toggled.","x-example":false}},"required":["name"]}}}}},"delete":{"summary":"Delete collection","operationId":"databasesDeleteCollection","tags":["databases"],"description":"Delete a collection by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteCollection","weight":74,"cookies":false,"type":"","demo":"databases\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes":{"get":{"summary":"List attributes","operationId":"databasesListAttributes","tags":["databases"],"description":"","responses":{"200":{"description":"Attributes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeList"}}}}},"x-appwrite":{"method":"listAttributes","weight":85,"cookies":false,"type":"","demo":"databases\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: key, type, size, required, array, status, error","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create boolean attribute","operationId":"databasesCreateBooleanAttribute","tags":["databases"],"description":"Create a boolean attribute.\n","responses":{"202":{"description":"AttributeBoolean","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeBoolean"}}}}},"x-appwrite":{"method":"createBooleanAttribute","weight":82,"cookies":false,"type":"","demo":"databases\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":false},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean\/{key}":{"patch":{"summary":"Update boolean attribute","operationId":"databasesUpdateBooleanAttribute","tags":["databases"],"description":"","responses":{"200":{"description":"AttributeBoolean","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeBoolean"}}}}},"x-appwrite":{"method":"updateBooleanAttribute","weight":94,"cookies":false,"type":"","demo":"databases\/update-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":false,"x-nullable":true}},"required":["required","default"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/datetime":{"post":{"summary":"Create datetime attribute","operationId":"databasesCreateDatetimeAttribute","tags":["databases"],"description":"","responses":{"202":{"description":"AttributeDatetime","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeDatetime"}}}}},"x-appwrite":{"method":"createDatetimeAttribute","weight":83,"cookies":false,"type":"","demo":"databases\/create-datetime-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-datetime-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for the attribute in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/datetime\/{key}":{"patch":{"summary":"Update dateTime attribute","operationId":"databasesUpdateDatetimeAttribute","tags":["databases"],"description":"","responses":{"200":{"description":"AttributeDatetime","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeDatetime"}}}}},"x-appwrite":{"method":"updateDatetimeAttribute","weight":95,"cookies":false,"type":"","demo":"databases\/update-datetime-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-datetime-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null,"x-nullable":true}},"required":["required","default"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create email attribute","operationId":"databasesCreateEmailAttribute","tags":["databases"],"description":"Create an email attribute.\n","responses":{"202":{"description":"AttributeEmail","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeEmail"}}}}},"x-appwrite":{"method":"createEmailAttribute","weight":76,"cookies":false,"type":"","demo":"databases\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"email@example.com"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/email\/{key}":{"patch":{"summary":"Update email attribute","operationId":"databasesUpdateEmailAttribute","tags":["databases"],"description":"Update an email attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeEmail","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeEmail"}}}}},"x-appwrite":{"method":"updateEmailAttribute","weight":88,"cookies":false,"type":"","demo":"databases\/update-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"email@example.com","x-nullable":true}},"required":["required","default"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create enum attribute","operationId":"databasesCreateEnumAttribute","tags":["databases"],"description":"","responses":{"202":{"description":"AttributeEnum","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeEnum"}}}}},"x-appwrite":{"method":"createEnumAttribute","weight":77,"cookies":false,"type":"","demo":"databases\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"elements":{"type":"array","description":"Array of elements in enumerated type. Uses length of longest element to determine size. Maximum of 100 elements are allowed, each 255 characters long.","x-example":null,"items":{"type":"string"}},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","elements","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/enum\/{key}":{"patch":{"summary":"Update enum attribute","operationId":"databasesUpdateEnumAttribute","tags":["databases"],"description":"Update an enum attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeEnum","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeEnum"}}}}},"x-appwrite":{"method":"updateEnumAttribute","weight":89,"cookies":false,"type":"","demo":"databases\/update-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-enum-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"elements":{"type":"array","description":"Array of elements in enumerated type. Uses length of longest element to determine size. Maximum of 100 elements are allowed, each 255 characters long.","x-example":null,"items":{"type":"string"}},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"[DEFAULT]","x-nullable":true}},"required":["elements","required","default"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create float attribute","operationId":"databasesCreateFloatAttribute","tags":["databases"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeFloat","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeFloat"}}}}},"x-appwrite":{"method":"createFloatAttribute","weight":81,"cookies":false,"type":"","demo":"databases\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"min":{"type":"number","description":"Minimum value to enforce on new documents","x-example":null},"max":{"type":"number","description":"Maximum value to enforce on new documents","x-example":null},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/float\/{key}":{"patch":{"summary":"Update float attribute","operationId":"databasesUpdateFloatAttribute","tags":["databases"],"description":"Update a float attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeFloat","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeFloat"}}}}},"x-appwrite":{"method":"updateFloatAttribute","weight":93,"cookies":false,"type":"","demo":"databases\/update-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"min":{"type":"number","description":"Minimum value to enforce on new documents","x-example":null},"max":{"type":"number","description":"Maximum value to enforce on new documents","x-example":null},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null,"x-nullable":true}},"required":["required","min","max","default"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create integer attribute","operationId":"databasesCreateIntegerAttribute","tags":["databases"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeInteger","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeInteger"}}}}},"x-appwrite":{"method":"createIntegerAttribute","weight":80,"cookies":false,"type":"","demo":"databases\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"min":{"type":"integer","description":"Minimum value to enforce on new documents","x-example":null},"max":{"type":"integer","description":"Maximum value to enforce on new documents","x-example":null},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/integer\/{key}":{"patch":{"summary":"Update integer attribute","operationId":"databasesUpdateIntegerAttribute","tags":["databases"],"description":"Update an integer attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeInteger","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeInteger"}}}}},"x-appwrite":{"method":"updateIntegerAttribute","weight":92,"cookies":false,"type":"","demo":"databases\/update-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"min":{"type":"integer","description":"Minimum value to enforce on new documents","x-example":null},"max":{"type":"integer","description":"Maximum value to enforce on new documents","x-example":null},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null,"x-nullable":true}},"required":["required","min","max","default"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP address attribute","operationId":"databasesCreateIpAttribute","tags":["databases"],"description":"Create IP address attribute.\n","responses":{"202":{"description":"AttributeIP","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeIp"}}}}},"x-appwrite":{"method":"createIpAttribute","weight":78,"cookies":false,"type":"","demo":"databases\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/ip\/{key}":{"patch":{"summary":"Update IP address attribute","operationId":"databasesUpdateIpAttribute","tags":["databases"],"description":"Update an ip attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeIP","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeIp"}}}}},"x-appwrite":{"method":"updateIpAttribute","weight":90,"cookies":false,"type":"","demo":"databases\/update-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null,"x-nullable":true}},"required":["required","default"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/relationship":{"post":{"summary":"Create relationship attribute","operationId":"databasesCreateRelationshipAttribute","tags":["databases"],"description":"Create relationship attribute. [Learn more about relationship attributes](https:\/\/appwrite.io\/docs\/databases-relationships#relationship-attributes).\n","responses":{"202":{"description":"AttributeRelationship","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeRelationship"}}}}},"x-appwrite":{"method":"createRelationshipAttribute","weight":84,"cookies":false,"type":"","demo":"databases\/create-relationship-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-relationship-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"relatedCollectionId":{"type":"string","description":"Related Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","x-example":"[RELATED_COLLECTION_ID]"},"type":{"type":"string","description":"Relation type","x-example":"oneToOne","enum":["oneToOne","manyToOne","manyToMany","oneToMany"],"x-enum-name":"RelationshipType","x-enum-keys":[]},"twoWay":{"type":"boolean","description":"Is Two Way?","x-example":false},"key":{"type":"string","description":"Attribute Key.","x-example":null},"twoWayKey":{"type":"string","description":"Two Way Attribute Key.","x-example":null},"onDelete":{"type":"string","description":"Constraints option","x-example":"cascade","enum":["cascade","restrict","setNull"],"x-enum-name":"RelationMutate","x-enum-keys":[]}},"required":["relatedCollectionId","type"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create string attribute","operationId":"databasesCreateStringAttribute","tags":["databases"],"description":"Create a string attribute.\n","responses":{"202":{"description":"AttributeString","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeString"}}}}},"x-appwrite":{"method":"createStringAttribute","weight":75,"cookies":false,"type":"","demo":"databases\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"size":{"type":"integer","description":"Attribute size for text attributes, in number of characters.","x-example":1},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false},"encrypt":{"type":"boolean","description":"Toggle encryption for the attribute. Encryption enhances security by not storing any plain text values in the database. However, encrypted attributes cannot be queried.","x-example":false}},"required":["key","size","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/string\/{key}":{"patch":{"summary":"Update string attribute","operationId":"databasesUpdateStringAttribute","tags":["databases"],"description":"Update a string attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeString","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeString"}}}}},"x-appwrite":{"method":"updateStringAttribute","weight":87,"cookies":false,"type":"","demo":"databases\/update-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"[DEFAULT]","x-nullable":true}},"required":["required","default"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL attribute","operationId":"databasesCreateUrlAttribute","tags":["databases"],"description":"Create a URL attribute.\n","responses":{"202":{"description":"AttributeURL","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeUrl"}}}}},"x-appwrite":{"method":"createUrlAttribute","weight":79,"cookies":false,"type":"","demo":"databases\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"https:\/\/example.com"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url\/{key}":{"patch":{"summary":"Update URL attribute","operationId":"databasesUpdateUrlAttribute","tags":["databases"],"description":"Update an url attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeURL","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeUrl"}}}}},"x-appwrite":{"method":"updateUrlAttribute","weight":91,"cookies":false,"type":"","demo":"databases\/update-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"https:\/\/example.com","x-nullable":true}},"required":["required","default"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get attribute","operationId":"databasesGetAttribute","tags":["databases"],"description":"","responses":{"200":{"description":"AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, or AttributeDatetime, or AttributeRelationship, or AttributeString","content":{"application\/json":{"schema":{"oneOf":[{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeRelationship"},{"$ref":"#\/components\/schemas\/attributeString"}]}}}}},"x-appwrite":{"method":"getAttribute","weight":86,"cookies":false,"type":"","demo":"databases\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}]},"delete":{"summary":"Delete attribute","operationId":"databasesDeleteAttribute","tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":97,"cookies":false,"type":"","demo":"databases\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/{key}\/relationship":{"patch":{"summary":"Update relationship attribute","operationId":"databasesUpdateRelationshipAttribute","tags":["databases"],"description":"Update relationship attribute. [Learn more about relationship attributes](https:\/\/appwrite.io\/docs\/databases-relationships#relationship-attributes).\n","responses":{"200":{"description":"AttributeRelationship","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeRelationship"}}}}},"x-appwrite":{"method":"updateRelationshipAttribute","weight":96,"cookies":false,"type":"","demo":"databases\/update-relationship-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-relationship-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"onDelete":{"type":"string","description":"Constraints option","x-example":"cascade","enum":["cascade","restrict","setNull"],"x-enum-name":"RelationMutate","x-enum-keys":[]}}}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List documents","operationId":"databasesListDocuments","tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/documentList"}}}}},"x-appwrite":{"method":"listDocuments","weight":103,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"post":{"summary":"Create document","operationId":"databasesCreateDocument","tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"createDocument","weight":102,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, only the current user is granted all permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get document","operationId":"databasesGetDocument","tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"getDocument","weight":104,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"patch":{"summary":"Update document","operationId":"databasesUpdateDocument","tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"updateDocument","weight":106,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete document","operationId":"databasesDeleteDocument","tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":107,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}\/logs":{"get":{"summary":"List document logs","operationId":"databasesListDocumentLogs","tags":["databases"],"description":"Get the document activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listDocumentLogs","weight":105,"cookies":false,"type":"","demo":"databases\/list-document-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes":{"get":{"summary":"List indexes","operationId":"databasesListIndexes","tags":["databases"],"description":"","responses":{"200":{"description":"Indexes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/indexList"}}}}},"x-appwrite":{"method":"listIndexes","weight":99,"cookies":false,"type":"","demo":"databases\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: key, type, status, attributes, error","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"post":{"summary":"Create index","operationId":"databasesCreateIndex","tags":["databases"],"description":"","responses":{"202":{"description":"Index","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/index"}}}}},"x-appwrite":{"method":"createIndex","weight":98,"cookies":false,"type":"","demo":"databases\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Index Key.","x-example":null},"type":{"type":"string","description":"Index type.","x-example":"key","enum":["key","fulltext","unique","spatial"],"x-enum-name":"IndexType","x-enum-keys":[]},"attributes":{"type":"array","description":"Array of attributes to index. Maximum of 100 attributes are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders. Maximum of 100 orders are allowed.","x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get index","operationId":"databasesGetIndex","tags":["databases"],"description":"","responses":{"200":{"description":"Index","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/index"}}}}},"x-appwrite":{"method":"getIndex","weight":100,"cookies":false,"type":"","demo":"databases\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Index Key.","required":true,"schema":{"type":"string"},"in":"path"}]},"delete":{"summary":"Delete index","operationId":"databasesDeleteIndex","tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":101,"cookies":false,"type":"","demo":"databases\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Index Key.","required":true,"schema":{"type":"string"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/logs":{"get":{"summary":"List collection logs","operationId":"databasesListCollectionLogs","tags":["databases"],"description":"Get the collection activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listCollectionLogs","weight":72,"cookies":false,"type":"","demo":"databases\/list-collection-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/usage":{"get":{"summary":"Get usage stats for a collection","operationId":"databasesGetCollectionUsage","tags":["databases"],"description":"","responses":{"200":{"description":"UsageCollection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageCollection"}}}}},"x-appwrite":{"method":"getCollectionUsage","weight":110,"cookies":false,"type":"","demo":"databases\/get-collection-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"range","description":"Date range.","required":false,"schema":{"type":"string","x-example":"24h","enum":["24h","30d","90d"],"x-enum-name":"DatabaseUsageRange","x-enum-keys":["Twenty Four Hours","Thirty Days","Ninety Days"],"default":"30d"},"in":"query"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/logs":{"get":{"summary":"List database logs","operationId":"databasesListLogs","tags":["databases"],"description":"Get the database activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listLogs","weight":66,"cookies":false,"type":"","demo":"databases\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/databases\/{databaseId}\/usage":{"get":{"summary":"Get usage stats for the database","operationId":"databasesGetDatabaseUsage","tags":["databases"],"description":"","responses":{"200":{"description":"UsageDatabase","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageDatabase"}}}}},"x-appwrite":{"method":"getDatabaseUsage","weight":109,"cookies":false,"type":"","demo":"databases\/get-database-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"range","description":"`Date range.","required":false,"schema":{"type":"string","x-example":"24h","enum":["24h","30d","90d"],"x-enum-name":"DatabaseUsageRange","x-enum-keys":["Twenty Four Hours","Thirty Days","Ninety Days"],"default":"30d"},"in":"query"}]}},"\/functions":{"get":{"summary":"List functions","operationId":"functionsList","tags":["functions"],"description":"Get a list of all the project's functions. You can use the query params to filter your results.","responses":{"200":{"description":"Functions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/functionList"}}}}},"x-appwrite":{"method":"list","weight":266,"cookies":false,"type":"","demo":"functions\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-functions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, runtime, deployment, schedule, scheduleNext, schedulePrevious, timeout, entrypoint, commands, installationId","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create function","operationId":"functionsCreate","tags":["functions"],"description":"Create a new function. You can pass a list of [permissions](https:\/\/appwrite.io\/docs\/permissions) to allow different project users or team with access to execute the function using the client API.","responses":{"201":{"description":"Function","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/function"}}}}},"x-appwrite":{"method":"create","weight":265,"cookies":false,"type":"","demo":"functions\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"functionId":{"type":"string","description":"Function ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[FUNCTION_ID]"},"name":{"type":"string","description":"Function name. Max length: 128 chars.","x-example":"[NAME]"},"runtime":{"type":"string","description":"Execution runtime.","x-example":"node-18.0","enum":["node-18.0","php-8.0","ruby-3.1","python-3.9"],"x-enum-name":null,"x-enum-keys":[]},"execute":{"type":"array","description":"An array of role strings with execution permissions. By default no user is granted with any execute permissions. [learn more about roles](https:\/\/appwrite.io\/docs\/permissions#permission-roles). Maximum of 100 roles are allowed, each 64 characters long.","x-example":"[\"any\"]","items":{"type":"string"}},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","x-example":null},"timeout":{"type":"integer","description":"Function maximum execution time in seconds.","x-example":1},"enabled":{"type":"boolean","description":"Is function enabled? When set to 'disabled', users cannot access the function but Server SDKs with and API key can still access the function. No data is lost when this is toggled.","x-example":false},"logging":{"type":"boolean","description":"Whether executions will be logged. When set to false, executions will not be logged, but will reduce resource used by your Appwrite project.","x-example":false},"entrypoint":{"type":"string","description":"Entrypoint File. This path is relative to the \"providerRootDirectory\".","x-example":"[ENTRYPOINT]"},"commands":{"type":"string","description":"Build Commands.","x-example":"[COMMANDS]"},"installationId":{"type":"string","description":"Appwrite Installation ID for VCS (Version Control System) deployment.","x-example":"[INSTALLATION_ID]"},"providerRepositoryId":{"type":"string","description":"Repository ID of the repo linked to the function.","x-example":"[PROVIDER_REPOSITORY_ID]"},"providerBranch":{"type":"string","description":"Production branch for the repo linked to the function.","x-example":"[PROVIDER_BRANCH]"},"providerSilentMode":{"type":"boolean","description":"Is the VCS (Version Control System) connection in silent mode for the repo linked to the function? In silent mode, comments will not be made on commits and pull requests.","x-example":false},"providerRootDirectory":{"type":"string","description":"Path to function code in the linked repo.","x-example":"[PROVIDER_ROOT_DIRECTORY]"},"templateRepository":{"type":"string","description":"Repository name of the template.","x-example":"[TEMPLATE_REPOSITORY]"},"templateOwner":{"type":"string","description":"The name of the owner of the template.","x-example":"[TEMPLATE_OWNER]"},"templateRootDirectory":{"type":"string","description":"Path to function code in the template repo.","x-example":"[TEMPLATE_ROOT_DIRECTORY]"},"templateBranch":{"type":"string","description":"Production branch for the repo linked to the function template.","x-example":"[TEMPLATE_BRANCH]"}},"required":["functionId","name","runtime"]}}}}}},"\/functions\/runtimes":{"get":{"summary":"List runtimes","operationId":"functionsListRuntimes","tags":["functions"],"description":"Get a list of all runtimes that are currently active on your instance.","responses":{"200":{"description":"Runtimes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/runtimeList"}}}}},"x-appwrite":{"method":"listRuntimes","weight":267,"cookies":false,"type":"","demo":"functions\/list-runtimes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-runtimes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/functions\/usage":{"get":{"summary":"Get functions usage","operationId":"functionsGetUsage","tags":["functions"],"description":"","responses":{"200":{"description":"UsageFunctions","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageFunctions"}}}}},"x-appwrite":{"method":"getUsage","weight":270,"cookies":false,"type":"","demo":"functions\/get-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"schema":{"type":"string","x-example":"24h","enum":["24h","30d","90d"],"x-enum-name":"FunctionUsageRange","x-enum-keys":["Twenty Four Hours","Thirty Days","Ninety Days"],"default":"30d"},"in":"query"}]}},"\/functions\/{functionId}":{"get":{"summary":"Get function","operationId":"functionsGet","tags":["functions"],"description":"Get a function by its unique ID.","responses":{"200":{"description":"Function","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/function"}}}}},"x-appwrite":{"method":"get","weight":268,"cookies":false,"type":"","demo":"functions\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}]},"put":{"summary":"Update function","operationId":"functionsUpdate","tags":["functions"],"description":"Update function by its unique ID.","responses":{"200":{"description":"Function","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/function"}}}}},"x-appwrite":{"method":"update","weight":271,"cookies":false,"type":"","demo":"functions\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Function name. Max length: 128 chars.","x-example":"[NAME]"},"runtime":{"type":"string","description":"Execution runtime.","x-example":"node-18.0","enum":["node-18.0","php-8.0","ruby-3.1","python-3.9"],"x-enum-name":null,"x-enum-keys":[]},"execute":{"type":"array","description":"An array of role strings with execution permissions. By default no user is granted with any execute permissions. [learn more about roles](https:\/\/appwrite.io\/docs\/permissions#permission-roles). Maximum of 100 roles are allowed, each 64 characters long.","x-example":"[\"any\"]","items":{"type":"string"}},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","x-example":null},"timeout":{"type":"integer","description":"Maximum execution time in seconds.","x-example":1},"enabled":{"type":"boolean","description":"Is function enabled? When set to 'disabled', users cannot access the function but Server SDKs with and API key can still access the function. No data is lost when this is toggled.","x-example":false},"logging":{"type":"boolean","description":"Whether executions will be logged. When set to false, executions will not be logged, but will reduce resource used by your Appwrite project.","x-example":false},"entrypoint":{"type":"string","description":"Entrypoint File. This path is relative to the \"providerRootDirectory\".","x-example":"[ENTRYPOINT]"},"commands":{"type":"string","description":"Build Commands.","x-example":"[COMMANDS]"},"installationId":{"type":"string","description":"Appwrite Installation ID for VCS (Version Controle System) deployment.","x-example":"[INSTALLATION_ID]"},"providerRepositoryId":{"type":"string","description":"Repository ID of the repo linked to the function","x-example":"[PROVIDER_REPOSITORY_ID]"},"providerBranch":{"type":"string","description":"Production branch for the repo linked to the function","x-example":"[PROVIDER_BRANCH]"},"providerSilentMode":{"type":"boolean","description":"Is the VCS (Version Control System) connection in silent mode for the repo linked to the function? In silent mode, comments will not be made on commits and pull requests.","x-example":false},"providerRootDirectory":{"type":"string","description":"Path to function code in the linked repo.","x-example":"[PROVIDER_ROOT_DIRECTORY]"}},"required":["name"]}}}}},"delete":{"summary":"Delete function","operationId":"functionsDelete","tags":["functions"],"description":"Delete a function by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":274,"cookies":false,"type":"","demo":"functions\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/deployments":{"get":{"summary":"List deployments","operationId":"functionsListDeployments","tags":["functions"],"description":"Get a list of all the project's code deployments. You can use the query params to filter your results.","responses":{"200":{"description":"Deployments List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deploymentList"}}}}},"x-appwrite":{"method":"listDeployments","weight":276,"cookies":false,"type":"","demo":"functions\/list-deployments.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-deployments.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: size, buildId, activate, entrypoint, commands","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create deployment","operationId":"functionsCreateDeployment","tags":["functions"],"description":"Create a new function code deployment. Use this endpoint to upload a new version of your code function. To execute your newly uploaded code, you'll need to update the function's deployment to use your new deployment UID.\n\nThis endpoint accepts a tar.gz file compressed with your code. Make sure to include any dependencies your code has within the compressed file. You can learn more about code packaging in the [Appwrite Cloud Functions tutorial](https:\/\/appwrite.io\/docs\/functions).\n\nUse the \"command\" param to set the entrypoint used to execute your code.","responses":{"202":{"description":"Deployment","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deployment"}}}}},"x-appwrite":{"method":"createDeployment","weight":275,"cookies":false,"type":"","demo":"functions\/create-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":true,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}],"requestBody":{"content":{"multipart\/form-data":{"schema":{"type":"object","properties":{"entrypoint":{"type":"string","description":"Entrypoint File.","x-example":"[ENTRYPOINT]"},"commands":{"type":"string","description":"Build Commands.","x-example":"[COMMANDS]"},"code":{"type":"string","description":"Gzip file with your code package. When used with the Appwrite CLI, pass the path to your code directory, and the CLI will automatically package your code. Use a path that is within the current directory.","x-example":null},"activate":{"type":"boolean","description":"Automatically activate the deployment when it is finished building.","x-example":false}},"required":["code","activate"]}}}}}},"\/functions\/{functionId}\/deployments\/{deploymentId}":{"get":{"summary":"Get deployment","operationId":"functionsGetDeployment","tags":["functions"],"description":"Get a code deployment by its unique ID.","responses":{"200":{"description":"Deployment","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deployment"}}}}},"x-appwrite":{"method":"getDeployment","weight":277,"cookies":false,"type":"","demo":"functions\/get-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"schema":{"type":"string","x-example":"[DEPLOYMENT_ID]"},"in":"path"}]},"patch":{"summary":"Update function deployment","operationId":"functionsUpdateDeployment","tags":["functions"],"description":"Update the function code deployment ID using the unique function ID. Use this endpoint to switch the code deployment that should be executed by the execution endpoint.","responses":{"200":{"description":"Function","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/function"}}}}},"x-appwrite":{"method":"updateDeployment","weight":273,"cookies":false,"type":"","demo":"functions\/update-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-function-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"schema":{"type":"string","x-example":"[DEPLOYMENT_ID]"},"in":"path"}]},"delete":{"summary":"Delete deployment","operationId":"functionsDeleteDeployment","tags":["functions"],"description":"Delete a code deployment by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDeployment","weight":278,"cookies":false,"type":"","demo":"functions\/delete-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"schema":{"type":"string","x-example":"[DEPLOYMENT_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/deployments\/{deploymentId}\/builds\/{buildId}":{"post":{"summary":"Create build","operationId":"functionsCreateBuild","tags":["functions"],"description":"Create a new build for an Appwrite Function deployment. This endpoint can be used to retry a failed build.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"createBuild","weight":279,"cookies":false,"type":"","demo":"functions\/create-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"schema":{"type":"string","x-example":"[DEPLOYMENT_ID]"},"in":"path"},{"name":"buildId","description":"Build unique ID.","required":true,"schema":{"type":"string","x-example":"[BUILD_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/deployments\/{deploymentId}\/download":{"get":{"summary":"Download Deployment","operationId":"functionsDownloadDeployment","tags":["functions"],"description":"Get a Deployment's contents by its unique ID. This endpoint supports range requests for partial or streaming file download.","responses":{"200":{"description":"File"}},"x-appwrite":{"method":"downloadDeployment","weight":272,"cookies":false,"type":"location","demo":"functions\/download-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/download-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"schema":{"type":"string","x-example":"[DEPLOYMENT_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List executions","operationId":"functionsListExecutions","tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/executionList"}}}}},"x-appwrite":{"method":"listExecutions","weight":281,"cookies":false,"type":"","demo":"functions\/list-executions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-executions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, responseStatusCode, duration","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create execution","operationId":"functionsCreateExecution","tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/execution"}}}}},"x-appwrite":{"method":"createExecution","weight":280,"cookies":false,"type":"","demo":"functions\/create-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-execution.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"body":{"type":"string","description":"HTTP body of execution. Default value is empty string.","x-example":"[BODY]"},"async":{"type":"boolean","description":"Execute code in the background. Default value is false.","x-example":false},"path":{"type":"string","description":"HTTP path of execution. Path can include query params. Default value is \/","x-example":"[PATH]"},"method":{"type":"string","description":"HTTP method of execution. Default value is GET.","x-example":"GET","enum":["GET","POST","PUT","PATCH","DELETE","OPTIONS"],"x-enum-name":"ExecutionMethod","x-enum-keys":[]},"headers":{"type":"object","description":"HTTP headers of execution. Defaults to empty.","x-example":"{}"}}}}}}}},"\/functions\/{functionId}\/executions\/{executionId}":{"get":{"summary":"Get execution","operationId":"functionsGetExecution","tags":["functions"],"description":"Get a function execution log by its unique ID.","responses":{"200":{"description":"Execution","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/execution"}}}}},"x-appwrite":{"method":"getExecution","weight":282,"cookies":false,"type":"","demo":"functions\/get-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-execution.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"executionId","description":"Execution ID.","required":true,"schema":{"type":"string","x-example":"[EXECUTION_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/usage":{"get":{"summary":"Get function usage","operationId":"functionsGetFunctionUsage","tags":["functions"],"description":"","responses":{"200":{"description":"UsageFunction","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageFunction"}}}}},"x-appwrite":{"method":"getFunctionUsage","weight":269,"cookies":false,"type":"","demo":"functions\/get-function-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"range","description":"Date range.","required":false,"schema":{"type":"string","x-example":"24h","enum":["24h","30d","90d"],"x-enum-name":"FunctionUsageRange","x-enum-keys":["Twenty Four Hours","Thirty Days","Ninety Days"],"default":"30d"},"in":"query"}]}},"\/functions\/{functionId}\/variables":{"get":{"summary":"List variables","operationId":"functionsListVariables","tags":["functions"],"description":"Get a list of all variables of a specific function.","responses":{"200":{"description":"Variables List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variableList"}}}}},"x-appwrite":{"method":"listVariables","weight":284,"cookies":false,"type":"","demo":"functions\/list-variables.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-variables.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}]},"post":{"summary":"Create variable","operationId":"functionsCreateVariable","tags":["functions"],"description":"Create a new function environment variable. These variables can be accessed in the function at runtime as environment variables.","responses":{"201":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"createVariable","weight":283,"cookies":false,"type":"","demo":"functions\/create-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","x-example":"[VALUE]"}},"required":["key","value"]}}}}}},"\/functions\/{functionId}\/variables\/{variableId}":{"get":{"summary":"Get variable","operationId":"functionsGetVariable","tags":["functions"],"description":"Get a variable by its unique ID.","responses":{"200":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"getVariable","weight":285,"cookies":false,"type":"","demo":"functions\/get-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}]},"put":{"summary":"Update variable","operationId":"functionsUpdateVariable","tags":["functions"],"description":"Update variable by its unique ID.","responses":{"200":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"updateVariable","weight":286,"cookies":false,"type":"","demo":"functions\/update-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","x-example":"[VALUE]"}},"required":["key"]}}}}},"delete":{"summary":"Delete variable","operationId":"functionsDeleteVariable","tags":["functions"],"description":"Delete a variable by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteVariable","weight":287,"cookies":false,"type":"","demo":"functions\/delete-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}]}},"\/graphql":{"post":{"summary":"GraphQL endpoint","operationId":"graphqlQuery","tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/any"}}}}},"x-appwrite":{"method":"query","weight":302,"cookies":false,"type":"graphql","demo":"graphql\/query.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/graphql\/mutation":{"post":{"summary":"GraphQL endpoint","operationId":"graphqlMutation","tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/any"}}}}},"x-appwrite":{"method":"mutation","weight":301,"cookies":false,"type":"graphql","demo":"graphql\/mutation.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/health":{"get":{"summary":"Get HTTP","operationId":"healthGet","tags":["health"],"description":"Check the Appwrite HTTP server is up and responsive.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"get","weight":119,"cookies":false,"type":"","demo":"health\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/anti-virus":{"get":{"summary":"Get antivirus","operationId":"healthGetAntivirus","tags":["health"],"description":"Check the Appwrite Antivirus server is up and connection is successful.","responses":{"200":{"description":"Health Antivirus","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthAntivirus"}}}}},"x-appwrite":{"method":"getAntivirus","weight":137,"cookies":false,"type":"","demo":"health\/get-antivirus.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-storage-anti-virus.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/cache":{"get":{"summary":"Get cache","operationId":"healthGetCache","tags":["health"],"description":"Check the Appwrite in-memory cache servers are up and connection is successful.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"getCache","weight":122,"cookies":false,"type":"","demo":"health\/get-cache.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-cache.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/db":{"get":{"summary":"Get DB","operationId":"healthGetDB","tags":["health"],"description":"Check the Appwrite database servers are up and connection is successful.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"getDB","weight":121,"cookies":false,"type":"","demo":"health\/get-d-b.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-db.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/pubsub":{"get":{"summary":"Get pubsub","operationId":"healthGetPubSub","tags":["health"],"description":"Check the Appwrite pub-sub servers are up and connection is successful.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"getPubSub","weight":124,"cookies":false,"type":"","demo":"health\/get-pub-sub.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-pubsub.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/queue":{"get":{"summary":"Get queue","operationId":"healthGetQueue","tags":["health"],"description":"Check the Appwrite queue messaging servers are up and connection is successful.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"getQueue","weight":123,"cookies":false,"type":"","demo":"health\/get-queue.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/queue\/builds":{"get":{"summary":"Get builds queue","operationId":"healthGetQueueBuilds","tags":["health"],"description":"Get the number of builds that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueBuilds","weight":129,"cookies":false,"type":"","demo":"health\/get-queue-builds.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-builds.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/certificates":{"get":{"summary":"Get certificates queue","operationId":"healthGetQueueCertificates","tags":["health"],"description":"Get the number of certificates that are waiting to be issued against [Letsencrypt](https:\/\/letsencrypt.org\/) in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueCertificates","weight":128,"cookies":false,"type":"","demo":"health\/get-queue-certificates.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-certificates.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/databases":{"get":{"summary":"Get databases queue","operationId":"healthGetQueueDatabases","tags":["health"],"description":"Get the number of database changes that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueDatabases","weight":130,"cookies":false,"type":"","demo":"health\/get-queue-databases.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-databases.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"name","description":"Queue name for which to check the queue size","required":false,"schema":{"type":"string","x-example":"[NAME]","default":"database_db_main"},"in":"query"},{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/deletes":{"get":{"summary":"Get deletes queue","operationId":"healthGetQueueDeletes","tags":["health"],"description":"Get the number of background destructive changes that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueDeletes","weight":131,"cookies":false,"type":"","demo":"health\/get-queue-deletes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-deletes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/functions":{"get":{"summary":"Get functions queue","operationId":"healthGetQueueFunctions","tags":["health"],"description":"","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueFunctions","weight":135,"cookies":false,"type":"","demo":"health\/get-queue-functions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-functions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/logs":{"get":{"summary":"Get logs queue","operationId":"healthGetQueueLogs","tags":["health"],"description":"Get the number of logs that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueLogs","weight":127,"cookies":false,"type":"","demo":"health\/get-queue-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/mails":{"get":{"summary":"Get mails queue","operationId":"healthGetQueueMails","tags":["health"],"description":"Get the number of mails that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueMails","weight":132,"cookies":false,"type":"","demo":"health\/get-queue-mails.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-mails.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/messaging":{"get":{"summary":"Get messaging queue","operationId":"healthGetQueueMessaging","tags":["health"],"description":"Get the number of messages that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueMessaging","weight":133,"cookies":false,"type":"","demo":"health\/get-queue-messaging.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-messaging.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/migrations":{"get":{"summary":"Get migrations queue","operationId":"healthGetQueueMigrations","tags":["health"],"description":"Get the number of migrations that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueMigrations","weight":134,"cookies":false,"type":"","demo":"health\/get-queue-migrations.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-migrations.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/webhooks":{"get":{"summary":"Get webhooks queue","operationId":"healthGetQueueWebhooks","tags":["health"],"description":"Get the number of webhooks that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueWebhooks","weight":126,"cookies":false,"type":"","demo":"health\/get-queue-webhooks.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-webhooks.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/storage\/local":{"get":{"summary":"Get local storage","operationId":"healthGetStorageLocal","tags":["health"],"description":"Check the Appwrite local storage device is up and connection is successful.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"getStorageLocal","weight":136,"cookies":false,"type":"","demo":"health\/get-storage-local.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-storage-local.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/time":{"get":{"summary":"Get time","operationId":"healthGetTime","tags":["health"],"description":"Check the Appwrite server time is synced with Google remote NTP server. We use this technology to smoothly handle leap seconds with no disruptive events. The [Network Time Protocol](https:\/\/en.wikipedia.org\/wiki\/Network_Time_Protocol) (NTP) is used by hundreds of millions of computers and devices to synchronize their clocks over the Internet. If your computer sets its own clock, it likely uses NTP.","responses":{"200":{"description":"Health Time","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthTime"}}}}},"x-appwrite":{"method":"getTime","weight":125,"cookies":false,"type":"","demo":"health\/get-time.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-time.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/locale":{"get":{"summary":"Get user locale","operationId":"localeGet","tags":["locale"],"description":"Get the current user location based on IP. Returns an object with user country code, country name, continent name, continent code, ip address and suggested currency. You can use the locale header to get the data in a supported language.\n\n([IP Geolocation by DB-IP](https:\/\/db-ip.com))","responses":{"200":{"description":"Locale","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/locale"}}}}},"x-appwrite":{"method":"get","weight":111,"cookies":false,"type":"","demo":"locale\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-locale.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/localed","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/codes":{"get":{"summary":"List Locale Codes","operationId":"localeListCodes","tags":["locale"],"description":"List of all locale codes in [ISO 639-1](https:\/\/en.wikipedia.org\/wiki\/List_of_ISO_639-1_codes).","responses":{"200":{"description":"Locale codes list","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/localeCodeList"}}}}},"x-appwrite":{"method":"listCodes","weight":112,"cookies":false,"type":"","demo":"locale\/list-codes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-locale-codes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/localeCode","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/continents":{"get":{"summary":"List continents","operationId":"localeListContinents","tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/continentList"}}}}},"x-appwrite":{"method":"listContinents","weight":116,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/continents","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List countries","operationId":"localeListCountries","tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountries","weight":113,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/countries","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU countries","operationId":"localeListCountriesEU","tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountriesEU","weight":114,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/countries\/eu","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List countries phone codes","operationId":"localeListCountriesPhones","tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/phoneList"}}}}},"x-appwrite":{"method":"listCountriesPhones","weight":115,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/countries\/phones","offline-key":"","offline-response-key":"countryCode","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List currencies","operationId":"localeListCurrencies","tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/currencyList"}}}}},"x-appwrite":{"method":"listCurrencies","weight":117,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/currencies","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List languages","operationId":"localeListLanguages","tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/languageList"}}}}},"x-appwrite":{"method":"listLanguages","weight":118,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/languages","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/messaging\/messages":{"get":{"summary":"List messages","operationId":"messagingListMessages","tags":["messaging"],"description":"","responses":{"200":{"description":"Message list","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/messageList"}}}}},"x-appwrite":{"method":"listMessages","weight":361,"cookies":false,"type":"","demo":"messaging\/list-messages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-messages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: scheduledAt, deliveredAt, deliveredTotal, status, description, providerType","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]}},"\/messaging\/messages\/email":{"post":{"summary":"Create an email.","operationId":"messagingCreateEmail","tags":["messaging"],"description":"","responses":{"201":{"description":"Message","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/message"}}}}},"x-appwrite":{"method":"createEmail","weight":358,"cookies":false,"type":"","demo":"messaging\/create-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"messageId":{"type":"string","description":"Message ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[MESSAGE_ID]"},"subject":{"type":"string","description":"Email Subject.","x-example":"[SUBJECT]"},"content":{"type":"string","description":"Email Content.","x-example":"[CONTENT]"},"topics":{"type":"array","description":"List of Topic IDs.","x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","x-example":null,"items":{"type":"string"}},"cc":{"type":"array","description":"Array of target IDs to be added as CC.","x-example":null,"items":{"type":"string"}},"bcc":{"type":"array","description":"Array of target IDs to be added as BCC.","x-example":null,"items":{"type":"string"}},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":"MessageStatus","x-enum-keys":[]},"html":{"type":"boolean","description":"Is content of type HTML","x-example":false},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","x-example":null}},"required":["messageId","subject","content"]}}}}}},"\/messaging\/messages\/email\/{messageId}":{"patch":{"summary":"Update an email.","operationId":"messagingUpdateEmail","tags":["messaging"],"description":"","responses":{"200":{"description":"Message","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/message"}}}}},"x-appwrite":{"method":"updateEmail","weight":365,"cookies":false,"type":"","demo":"messaging\/update-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"schema":{"type":"string","x-example":"[MESSAGE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"topics":{"type":"array","description":"List of Topic IDs.","x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","x-example":null,"items":{"type":"string"}},"subject":{"type":"string","description":"Email Subject.","x-example":"[SUBJECT]"},"content":{"type":"string","description":"Email Content.","x-example":"[CONTENT]"},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":"MessageStatus","x-enum-keys":[]},"html":{"type":"boolean","description":"Is content of type HTML","x-example":false},"cc":{"type":"array","description":"Array of target IDs to be added as CC.","x-example":null,"items":{"type":"string"}},"bcc":{"type":"array","description":"Array of target IDs to be added as BCC.","x-example":null,"items":{"type":"string"}},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","x-example":null}}}}}}}},"\/messaging\/messages\/push":{"post":{"summary":"Create a push notification.","operationId":"messagingCreatePush","tags":["messaging"],"description":"","responses":{"201":{"description":"Message","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/message"}}}}},"x-appwrite":{"method":"createPush","weight":360,"cookies":false,"type":"","demo":"messaging\/create-push.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-push-notification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"messageId":{"type":"string","description":"Message ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[MESSAGE_ID]"},"title":{"type":"string","description":"Title for push notification.","x-example":"[TITLE]"},"body":{"type":"string","description":"Body for push notification.","x-example":"[BODY]"},"topics":{"type":"array","description":"List of Topic IDs.","x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","x-example":null,"items":{"type":"string"}},"data":{"type":"object","description":"Additional Data for push notification.","x-example":"{}"},"action":{"type":"string","description":"Action for push notification.","x-example":"[ACTION]"},"icon":{"type":"string","description":"Icon for push notification. Available only for Android and Web Platform.","x-example":"[ICON]"},"sound":{"type":"string","description":"Sound for push notification. Available only for Android and IOS Platform.","x-example":"[SOUND]"},"color":{"type":"string","description":"Color for push notification. Available only for Android Platform.","x-example":"[COLOR]"},"tag":{"type":"string","description":"Tag for push notification. Available only for Android Platform.","x-example":"[TAG]"},"badge":{"type":"string","description":"Badge for push notification. Available only for IOS Platform.","x-example":"[BADGE]"},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":"MessageStatus","x-enum-keys":[]},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","x-example":null}},"required":["messageId","title","body"]}}}}}},"\/messaging\/messages\/push\/{messageId}":{"patch":{"summary":"Update a push notification.","operationId":"messagingUpdatePush","tags":["messaging"],"description":"","responses":{"200":{"description":"Message","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/message"}}}}},"x-appwrite":{"method":"updatePush","weight":367,"cookies":false,"type":"","demo":"messaging\/update-push.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-push-notification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"schema":{"type":"string","x-example":"[MESSAGE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"topics":{"type":"array","description":"List of Topic IDs.","x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","x-example":null,"items":{"type":"string"}},"title":{"type":"string","description":"Title for push notification.","x-example":"[TITLE]"},"body":{"type":"string","description":"Body for push notification.","x-example":"[BODY]"},"data":{"type":"object","description":"Additional Data for push notification.","x-example":"{}"},"action":{"type":"string","description":"Action for push notification.","x-example":"[ACTION]"},"icon":{"type":"string","description":"Icon for push notification. Available only for Android and Web platforms.","x-example":"[ICON]"},"sound":{"type":"string","description":"Sound for push notification. Available only for Android and iOS platforms.","x-example":"[SOUND]"},"color":{"type":"string","description":"Color for push notification. Available only for Android platforms.","x-example":"[COLOR]"},"tag":{"type":"string","description":"Tag for push notification. Available only for Android platforms.","x-example":"[TAG]"},"badge":{"type":"integer","description":"Badge for push notification. Available only for iOS platforms.","x-example":null},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":"MessageStatus","x-enum-keys":[]},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","x-example":null}}}}}}}},"\/messaging\/messages\/sms":{"post":{"summary":"Create an SMS.","operationId":"messagingCreateSMS","tags":["messaging"],"description":"","responses":{"201":{"description":"Message","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/message"}}}}},"x-appwrite":{"method":"createSMS","weight":359,"cookies":false,"type":"","demo":"messaging\/create-s-m-s.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-sms.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"messageId":{"type":"string","description":"Message ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[MESSAGE_ID]"},"content":{"type":"string","description":"SMS Content.","x-example":"[CONTENT]"},"topics":{"type":"array","description":"List of Topic IDs.","x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","x-example":null,"items":{"type":"string"}},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":"MessageStatus","x-enum-keys":[]},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","x-example":null}},"required":["messageId","content"]}}}}}},"\/messaging\/messages\/sms\/{messageId}":{"patch":{"summary":"Update an SMS.","operationId":"messagingUpdateSMS","tags":["messaging"],"description":"","responses":{"200":{"description":"Message","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/message"}}}}},"x-appwrite":{"method":"updateSMS","weight":366,"cookies":false,"type":"","demo":"messaging\/update-s-m-s.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"schema":{"type":"string","x-example":"[MESSAGE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"topics":{"type":"array","description":"List of Topic IDs.","x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","x-example":null,"items":{"type":"string"}},"content":{"type":"string","description":"Email Content.","x-example":"[CONTENT]"},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":"MessageStatus","x-enum-keys":[]},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","x-example":null}}}}}}}},"\/messaging\/messages\/{messageId}":{"get":{"summary":"Get a message","operationId":"messagingGetMessage","tags":["messaging"],"description":"","responses":{"200":{"description":"Message","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/message"}}}}},"x-appwrite":{"method":"getMessage","weight":364,"cookies":false,"type":"","demo":"messaging\/get-message.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/get-message.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"schema":{"type":"string","x-example":"[MESSAGE_ID]"},"in":"path"}]},"delete":{"summary":"Delete a message","operationId":"messagingDelete","tags":["messaging"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":368,"cookies":false,"type":"","demo":"messaging\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-message.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"schema":{"type":"string","x-example":"[MESSAGE_ID]"},"in":"path"}]}},"\/messaging\/messages\/{messageId}\/logs":{"get":{"summary":"List message logs","operationId":"messagingListMessageLogs","tags":["messaging"],"description":"","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listMessageLogs","weight":362,"cookies":false,"type":"","demo":"messaging\/list-message-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/messages\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"schema":{"type":"string","x-example":"[MESSAGE_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/messaging\/messages\/{messageId}\/targets":{"get":{"summary":"List message targets","operationId":"messagingListTargets","tags":["messaging"],"description":"List the targets associated with a message as set via the targets attribute.","responses":{"200":{"description":"Target list","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/targetList"}}}}},"x-appwrite":{"method":"listTargets","weight":363,"cookies":false,"type":"","demo":"messaging\/list-targets.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-message-targets.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"schema":{"type":"string","x-example":"[MESSAGE_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, providerId, identifier, providerType","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/messaging\/providers":{"get":{"summary":"List providers","operationId":"messagingListProviders","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider list","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/providerList"}}}}},"x-appwrite":{"method":"listProviders","weight":333,"cookies":false,"type":"","demo":"messaging\/list-providers.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-providers.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, provider, type, enabled","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]}},"\/messaging\/providers\/apns":{"post":{"summary":"Create APNS provider","operationId":"messagingCreateAPNSProvider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createAPNSProvider","weight":332,"cookies":false,"type":"","demo":"messaging\/create-a-p-n-s-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-apns-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"authKey":{"type":"string","description":"APNS authentication key.","x-example":"[AUTH_KEY]"},"authKeyId":{"type":"string","description":"APNS authentication key ID.","x-example":"[AUTH_KEY_ID]"},"teamId":{"type":"string","description":"APNS team ID.","x-example":"[TEAM_ID]"},"bundleId":{"type":"string","description":"APNS bundle ID.","x-example":"[BUNDLE_ID]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name"]}}}}}},"\/messaging\/providers\/apns\/{providerId}":{"patch":{"summary":"Update APNS provider","operationId":"messagingUpdateAPNSProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateAPNSProvider","weight":345,"cookies":false,"type":"","demo":"messaging\/update-a-p-n-s-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-apns-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"authKey":{"type":"string","description":"APNS authentication key.","x-example":"[AUTH_KEY]"},"authKeyId":{"type":"string","description":"APNS authentication key ID.","x-example":"[AUTH_KEY_ID]"},"teamId":{"type":"string","description":"APNS team ID.","x-example":"[TEAM_ID]"},"bundleId":{"type":"string","description":"APNS bundle ID.","x-example":"[BUNDLE_ID]"}}}}}}}},"\/messaging\/providers\/fcm":{"post":{"summary":"Create FCM provider","operationId":"messagingCreateFCMProvider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createFCMProvider","weight":331,"cookies":false,"type":"","demo":"messaging\/create-f-c-m-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-fcm-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"serviceAccountJSON":{"type":"object","description":"FCM service account JSON.","x-example":"{}"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name"]}}}}}},"\/messaging\/providers\/fcm\/{providerId}":{"patch":{"summary":"Update FCM provider","operationId":"messagingUpdateFCMProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateFCMProvider","weight":344,"cookies":false,"type":"","demo":"messaging\/update-f-c-m-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-fcm-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"serviceAccountJSON":{"type":"object","description":"FCM service account JSON.","x-example":"{}"}}}}}}}},"\/messaging\/providers\/mailgun":{"post":{"summary":"Create Mailgun provider","operationId":"messagingCreateMailgunProvider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createMailgunProvider","weight":323,"cookies":false,"type":"","demo":"messaging\/create-mailgun-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-mailgun-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"apiKey":{"type":"string","description":"Mailgun API Key.","x-example":"[API_KEY]"},"domain":{"type":"string","description":"Mailgun Domain.","x-example":"[DOMAIN]"},"isEuRegion":{"type":"boolean","description":"Set as EU region.","x-example":false},"fromName":{"type":"string","description":"Sender Name.","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the reply to field for the mail. Default value is sender name. Reply to name must have reply to email as well.","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the reply to field for the mail. Default value is sender email. Reply to email must have reply to name as well.","x-example":"email@example.com"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name"]}}}}}},"\/messaging\/providers\/mailgun\/{providerId}":{"patch":{"summary":"Update Mailgun provider","operationId":"messagingUpdateMailgunProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateMailgunProvider","weight":336,"cookies":false,"type":"","demo":"messaging\/update-mailgun-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-mailgun-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"apiKey":{"type":"string","description":"Mailgun API Key.","x-example":"[API_KEY]"},"domain":{"type":"string","description":"Mailgun Domain.","x-example":"[DOMAIN]"},"isEuRegion":{"type":"boolean","description":"Set as EU region.","x-example":false},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"fromName":{"type":"string","description":"Sender Name.","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the reply to field for the mail. Default value is sender name.","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the reply to field for the mail. Default value is sender email.","x-example":"[REPLY_TO_EMAIL]"}}}}}}}},"\/messaging\/providers\/msg91":{"post":{"summary":"Create Msg91 provider","operationId":"messagingCreateMsg91Provider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createMsg91Provider","weight":326,"cookies":false,"type":"","demo":"messaging\/create-msg91provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-msg91-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"senderId":{"type":"string","description":"Msg91 Sender ID.","x-example":"[SENDER_ID]"},"authKey":{"type":"string","description":"Msg91 Auth Key.","x-example":"[AUTH_KEY]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name"]}}}}}},"\/messaging\/providers\/msg91\/{providerId}":{"patch":{"summary":"Update Msg91 provider","operationId":"messagingUpdateMsg91Provider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateMsg91Provider","weight":339,"cookies":false,"type":"","demo":"messaging\/update-msg91provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-msg91-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"senderId":{"type":"string","description":"Msg91 Sender ID.","x-example":"[SENDER_ID]"},"authKey":{"type":"string","description":"Msg91 Auth Key.","x-example":"[AUTH_KEY]"},"from":{"type":"string","description":"Sender number.","x-example":"[FROM]"}}}}}}}},"\/messaging\/providers\/sendgrid":{"post":{"summary":"Create Sendgrid provider","operationId":"messagingCreateSendgridProvider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createSendgridProvider","weight":324,"cookies":false,"type":"","demo":"messaging\/create-sendgrid-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-sengrid-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"apiKey":{"type":"string","description":"Sendgrid API key.","x-example":"[API_KEY]"},"fromName":{"type":"string","description":"Sender Name.","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the reply to field for the mail. Default value is sender name.","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the reply to field for the mail. Default value is sender email.","x-example":"email@example.com"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name"]}}}}}},"\/messaging\/providers\/sendgrid\/{providerId}":{"patch":{"summary":"Update Sendgrid provider","operationId":"messagingUpdateSendgridProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateSendgridProvider","weight":337,"cookies":false,"type":"","demo":"messaging\/update-sendgrid-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-sendgrid-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"apiKey":{"type":"string","description":"Sendgrid API key.","x-example":"[API_KEY]"},"fromName":{"type":"string","description":"Sender Name.","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the Reply To field for the mail. Default value is Sender Name.","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the Reply To field for the mail. Default value is Sender Email.","x-example":"[REPLY_TO_EMAIL]"}}}}}}}},"\/messaging\/providers\/smtp":{"post":{"summary":"Create SMTP provider","operationId":"messagingCreateSMTPProvider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createSMTPProvider","weight":325,"cookies":false,"type":"","demo":"messaging\/create-s-m-t-p-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-smtp-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"host":{"type":"string","description":"SMTP hosts. Either a single hostname or multiple semicolon-delimited hostnames. You can also specify a different port for each host by using this format: [hostname:port] (e.g. \"smtp1.example.com:25;smtp2.example.com\"). You can also specify encryption type, for example: (e.g. \"tls:\/\/smtp1.example.com:587;ssl:\/\/smtp2.example.com:465\"). Hosts will be tried in order.","x-example":"[HOST]"},"port":{"type":"integer","description":"The default SMTP server port.","x-example":1},"username":{"type":"string","description":"Authentication username.","x-example":"[USERNAME]"},"password":{"type":"string","description":"Authentication password.","x-example":"[PASSWORD]"},"encryption":{"type":"string","description":"Encryption type. Can be omitted, 'ssl', or 'tls'","x-example":"none","enum":["none","ssl","tls"],"x-enum-name":"SMTPEncryption","x-enum-keys":[]},"autoTLS":{"type":"boolean","description":"Enable SMTP AutoTLS feature.","x-example":false},"mailer":{"type":"string","description":"The value to use for the X-Mailer header.","x-example":"[MAILER]"},"fromName":{"type":"string","description":"Sender Name.","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the reply to field for the mail. Default value is sender name.","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the reply to field for the mail. Default value is sender email.","x-example":"email@example.com"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name","host"]}}}}}},"\/messaging\/providers\/smtp\/{providerId}":{"patch":{"summary":"Update SMTP provider","operationId":"messagingUpdateSMTPProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateSMTPProvider","weight":338,"cookies":false,"type":"","demo":"messaging\/update-s-m-t-p-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-smtp-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"host":{"type":"string","description":"SMTP hosts. Either a single hostname or multiple semicolon-delimited hostnames. You can also specify a different port for each host by using this format: [hostname:port] (e.g. \"smtp1.example.com:25;smtp2.example.com\"). You can also specify encryption type, for example: (e.g. \"tls:\/\/smtp1.example.com:587;ssl:\/\/smtp2.example.com:465\"). Hosts will be tried in order.","x-example":"[HOST]"},"port":{"type":"integer","description":"SMTP port.","x-example":1},"username":{"type":"string","description":"Authentication username.","x-example":"[USERNAME]"},"password":{"type":"string","description":"Authentication password.","x-example":"[PASSWORD]"},"encryption":{"type":"string","description":"Encryption type. Can be 'ssl' or 'tls'","x-example":"none","enum":["none","ssl","tls"],"x-enum-name":"SMTPEncryption","x-enum-keys":[]},"autoTLS":{"type":"boolean","description":"Enable SMTP AutoTLS feature.","x-example":false},"fromName":{"type":"string","description":"Sender Name.","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the Reply To field for the mail. Default value is Sender Name.","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the Reply To field for the mail. Default value is Sender Email.","x-example":"[REPLY_TO_EMAIL]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}}}}}}}},"\/messaging\/providers\/telesign":{"post":{"summary":"Create Telesign provider","operationId":"messagingCreateTelesignProvider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createTelesignProvider","weight":327,"cookies":false,"type":"","demo":"messaging\/create-telesign-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-telesign-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"username":{"type":"string","description":"Telesign username.","x-example":"[USERNAME]"},"password":{"type":"string","description":"Telesign password.","x-example":"[PASSWORD]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name"]}}}}}},"\/messaging\/providers\/telesign\/{providerId}":{"patch":{"summary":"Update Telesign provider","operationId":"messagingUpdateTelesignProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateTelesignProvider","weight":340,"cookies":false,"type":"","demo":"messaging\/update-telesign-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-telesign-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"username":{"type":"string","description":"Telesign username.","x-example":"[USERNAME]"},"password":{"type":"string","description":"Telesign password.","x-example":"[PASSWORD]"},"from":{"type":"string","description":"Sender number.","x-example":"[FROM]"}}}}}}}},"\/messaging\/providers\/textmagic":{"post":{"summary":"Create Textmagic provider","operationId":"messagingCreateTextmagicProvider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createTextmagicProvider","weight":328,"cookies":false,"type":"","demo":"messaging\/create-textmagic-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-textmagic-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"username":{"type":"string","description":"Textmagic username.","x-example":"[USERNAME]"},"apiKey":{"type":"string","description":"Textmagic apiKey.","x-example":"[API_KEY]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name"]}}}}}},"\/messaging\/providers\/textmagic\/{providerId}":{"patch":{"summary":"Update Textmagic provider","operationId":"messagingUpdateTextmagicProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateTextmagicProvider","weight":341,"cookies":false,"type":"","demo":"messaging\/update-textmagic-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-textmagic-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"username":{"type":"string","description":"Textmagic username.","x-example":"[USERNAME]"},"apiKey":{"type":"string","description":"Textmagic apiKey.","x-example":"[API_KEY]"},"from":{"type":"string","description":"Sender number.","x-example":"[FROM]"}}}}}}}},"\/messaging\/providers\/twilio":{"post":{"summary":"Create Twilio provider","operationId":"messagingCreateTwilioProvider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createTwilioProvider","weight":329,"cookies":false,"type":"","demo":"messaging\/create-twilio-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-twilio-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"accountSid":{"type":"string","description":"Twilio account secret ID.","x-example":"[ACCOUNT_SID]"},"authToken":{"type":"string","description":"Twilio authentication token.","x-example":"[AUTH_TOKEN]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name"]}}}}}},"\/messaging\/providers\/twilio\/{providerId}":{"patch":{"summary":"Update Twilio provider","operationId":"messagingUpdateTwilioProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateTwilioProvider","weight":342,"cookies":false,"type":"","demo":"messaging\/update-twilio-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-twilio-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"accountSid":{"type":"string","description":"Twilio account secret ID.","x-example":"[ACCOUNT_SID]"},"authToken":{"type":"string","description":"Twilio authentication token.","x-example":"[AUTH_TOKEN]"},"from":{"type":"string","description":"Sender number.","x-example":"[FROM]"}}}}}}}},"\/messaging\/providers\/vonage":{"post":{"summary":"Create Vonage provider","operationId":"messagingCreateVonageProvider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createVonageProvider","weight":330,"cookies":false,"type":"","demo":"messaging\/create-vonage-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-vonage-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"apiKey":{"type":"string","description":"Vonage API key.","x-example":"[API_KEY]"},"apiSecret":{"type":"string","description":"Vonage API secret.","x-example":"[API_SECRET]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name"]}}}}}},"\/messaging\/providers\/vonage\/{providerId}":{"patch":{"summary":"Update Vonage provider","operationId":"messagingUpdateVonageProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateVonageProvider","weight":343,"cookies":false,"type":"","demo":"messaging\/update-vonage-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-vonage-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"apiKey":{"type":"string","description":"Vonage API key.","x-example":"[API_KEY]"},"apiSecret":{"type":"string","description":"Vonage API secret.","x-example":"[API_SECRET]"},"from":{"type":"string","description":"Sender number.","x-example":"[FROM]"}}}}}}}},"\/messaging\/providers\/{providerId}":{"get":{"summary":"Get provider","operationId":"messagingGetProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"getProvider","weight":335,"cookies":false,"type":"","demo":"messaging\/get-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/get-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}]},"delete":{"summary":"Delete provider","operationId":"messagingDeleteProvider","tags":["messaging"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteProvider","weight":346,"cookies":false,"type":"","demo":"messaging\/delete-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}]}},"\/messaging\/providers\/{providerId}\/logs":{"get":{"summary":"List provider logs","operationId":"messagingListProviderLogs","tags":["messaging"],"description":"","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listProviderLogs","weight":334,"cookies":false,"type":"","demo":"messaging\/list-provider-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/providers\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/messaging\/subscribers\/{subscriberId}\/logs":{"get":{"summary":"List subscriber logs","operationId":"messagingListSubscriberLogs","tags":["messaging"],"description":"","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listSubscriberLogs","weight":355,"cookies":false,"type":"","demo":"messaging\/list-subscriber-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/subscribers\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"subscriberId","description":"Subscriber ID.","required":true,"schema":{"type":"string","x-example":"[SUBSCRIBER_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/messaging\/topics":{"get":{"summary":"List topics.","operationId":"messagingListTopics","tags":["messaging"],"description":"","responses":{"200":{"description":"Topic list","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/topicList"}}}}},"x-appwrite":{"method":"listTopics","weight":348,"cookies":false,"type":"","demo":"messaging\/list-topics.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-topics.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, description, total","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create a topic.","operationId":"messagingCreateTopic","tags":["messaging"],"description":"","responses":{"201":{"description":"Topic","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/topic"}}}}},"x-appwrite":{"method":"createTopic","weight":347,"cookies":false,"type":"","demo":"messaging\/create-topic.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-topic.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"topicId":{"type":"string","description":"Topic ID. Choose a custom Topic ID or a new Topic ID.","x-example":"[TOPIC_ID]"},"name":{"type":"string","description":"Topic Name.","x-example":"[NAME]"}},"required":["topicId","name"]}}}}}},"\/messaging\/topics\/{topicId}":{"get":{"summary":"Get a topic.","operationId":"messagingGetTopic","tags":["messaging"],"description":"","responses":{"200":{"description":"Topic","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/topic"}}}}},"x-appwrite":{"method":"getTopic","weight":350,"cookies":false,"type":"","demo":"messaging\/get-topic.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/get-topic.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID.","required":true,"schema":{"type":"string","x-example":"[TOPIC_ID]"},"in":"path"}]},"patch":{"summary":"Update a topic.","operationId":"messagingUpdateTopic","tags":["messaging"],"description":"","responses":{"200":{"description":"Topic","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/topic"}}}}},"x-appwrite":{"method":"updateTopic","weight":351,"cookies":false,"type":"","demo":"messaging\/update-topic.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-topic.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID.","required":true,"schema":{"type":"string","x-example":"[TOPIC_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Topic Name.","x-example":"[NAME]"}}}}}}},"delete":{"summary":"Delete a topic.","operationId":"messagingDeleteTopic","tags":["messaging"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteTopic","weight":352,"cookies":false,"type":"","demo":"messaging\/delete-topic.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-topic.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID.","required":true,"schema":{"type":"string","x-example":"[TOPIC_ID]"},"in":"path"}]}},"\/messaging\/topics\/{topicId}\/logs":{"get":{"summary":"List topic logs","operationId":"messagingListTopicLogs","tags":["messaging"],"description":"","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listTopicLogs","weight":349,"cookies":false,"type":"","demo":"messaging\/list-topic-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/topics\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID.","required":true,"schema":{"type":"string","x-example":"[TOPIC_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/messaging\/topics\/{topicId}\/subscribers":{"get":{"summary":"List subscribers.","operationId":"messagingListSubscribers","tags":["messaging"],"description":"","responses":{"200":{"description":"Subscriber list","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/subscriberList"}}}}},"x-appwrite":{"method":"listSubscribers","weight":354,"cookies":false,"type":"","demo":"messaging\/list-subscribers.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-subscribers.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID subscribed to.","required":true,"schema":{"type":"string","x-example":"[TOPIC_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, provider, type, enabled","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create a subscriber.","operationId":"messagingCreateSubscriber","tags":["messaging"],"description":"","responses":{"201":{"description":"Subscriber","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/subscriber"}}}}},"x-appwrite":{"method":"createSubscriber","weight":353,"cookies":false,"type":"","demo":"messaging\/create-subscriber.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-subscriber.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.write","platforms":["server","client","console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID to subscribe to.","required":true,"schema":{"type":"string","x-example":"[TOPIC_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"subscriberId":{"type":"string","description":"Subscriber ID. Choose a custom Subscriber ID or a new Subscriber ID.","x-example":"[SUBSCRIBER_ID]"},"targetId":{"type":"string","description":"Target ID. The target ID to link to the specified Topic ID.","x-example":"[TARGET_ID]"}},"required":["subscriberId","targetId"]}}}}}},"\/messaging\/topics\/{topicId}\/subscribers\/{subscriberId}":{"get":{"summary":"Get a subscriber.","operationId":"messagingGetSubscriber","tags":["messaging"],"description":"","responses":{"200":{"description":"Subscriber","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/subscriber"}}}}},"x-appwrite":{"method":"getSubscriber","weight":356,"cookies":false,"type":"","demo":"messaging\/get-subscriber.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/get-subscriber.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID subscribed to.","required":true,"schema":{"type":"string","x-example":"[TOPIC_ID]"},"in":"path"},{"name":"subscriberId","description":"Subscriber ID.","required":true,"schema":{"type":"string","x-example":"[SUBSCRIBER_ID]"},"in":"path"}]},"delete":{"summary":"Delete a subscriber.","operationId":"messagingDeleteSubscriber","tags":["messaging"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSubscriber","weight":357,"cookies":false,"type":"","demo":"messaging\/delete-subscriber.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-subscriber.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.write","platforms":["server","client","console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID subscribed to.","required":true,"schema":{"type":"string","x-example":"[TOPIC_ID]"},"in":"path"},{"name":"subscriberId","description":"Subscriber ID.","required":true,"schema":{"type":"string","x-example":"[SUBSCRIBER_ID]"},"in":"path"}]}},"\/migrations":{"get":{"summary":"List Migrations","operationId":"migrationsList","tags":["migrations"],"description":"","responses":{"200":{"description":"Migrations List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/migrationList"}}}}},"x-appwrite":{"method":"list","weight":310,"cookies":false,"type":"","demo":"migrations\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/list-migrations.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: status, stage, source, resources, statusCounters, resourceData, errors","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]}},"\/migrations\/appwrite":{"post":{"summary":"Migrate Appwrite Data","operationId":"migrationsCreateAppwriteMigration","tags":["migrations"],"description":"","responses":{"202":{"description":"Migration","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/migration"}}}}},"x-appwrite":{"method":"createAppwriteMigration","weight":305,"cookies":false,"type":"","demo":"migrations\/create-appwrite-migration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-appwrite.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"resources":{"type":"array","description":"List of resources to migrate","x-example":null,"items":{"type":"string"}},"endpoint":{"type":"string","description":"Source's Appwrite Endpoint","x-example":"https:\/\/example.com"},"projectId":{"type":"string","description":"Source's Project ID","x-example":"[PROJECT_ID]"},"apiKey":{"type":"string","description":"Source's API Key","x-example":"[API_KEY]"}},"required":["resources","endpoint","projectId","apiKey"]}}}}}},"\/migrations\/appwrite\/report":{"get":{"summary":"Generate a report on Appwrite Data","operationId":"migrationsGetAppwriteReport","tags":["migrations"],"description":"","responses":{"200":{"description":"Migration Report","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/migrationReport"}}}}},"x-appwrite":{"method":"getAppwriteReport","weight":312,"cookies":false,"type":"","demo":"migrations\/get-appwrite-report.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-appwrite-report.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"resources","description":"List of resources to migrate","required":true,"schema":{"type":"array","items":{"type":"string"}},"in":"query"},{"name":"endpoint","description":"Source's Appwrite Endpoint","required":true,"schema":{"type":"string","format":"url","x-example":"https:\/\/example.com"},"in":"query"},{"name":"projectID","description":"Source's Project ID","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"query"},{"name":"key","description":"Source's API Key","required":true,"schema":{"type":"string","x-example":"[KEY]"},"in":"query"}]}},"\/migrations\/firebase":{"post":{"summary":"Migrate Firebase Data (Service Account)","operationId":"migrationsCreateFirebaseMigration","tags":["migrations"],"description":"","responses":{"202":{"description":"Migration","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/migration"}}}}},"x-appwrite":{"method":"createFirebaseMigration","weight":307,"cookies":false,"type":"","demo":"migrations\/create-firebase-migration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-firebase.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"resources":{"type":"array","description":"List of resources to migrate","x-example":null,"items":{"type":"string"}},"serviceAccount":{"type":"string","description":"JSON of the Firebase service account credentials","x-example":"[SERVICE_ACCOUNT]"}},"required":["resources","serviceAccount"]}}}}}},"\/migrations\/firebase\/deauthorize":{"get":{"summary":"Revoke Appwrite's authorization to access Firebase Projects","operationId":"migrationsDeleteFirebaseAuth","tags":["migrations"],"description":"","responses":{"200":{"description":"File"}},"x-appwrite":{"method":"deleteFirebaseAuth","weight":318,"cookies":false,"type":"","demo":"migrations\/delete-firebase-auth.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/migrations\/firebase\/oauth":{"post":{"summary":"Migrate Firebase Data (OAuth)","operationId":"migrationsCreateFirebaseOAuthMigration","tags":["migrations"],"description":"","responses":{"202":{"description":"Migration","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/migration"}}}}},"x-appwrite":{"method":"createFirebaseOAuthMigration","weight":306,"cookies":false,"type":"","demo":"migrations\/create-firebase-o-auth-migration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-firebase.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"resources":{"type":"array","description":"List of resources to migrate","x-example":null,"items":{"type":"string"}},"projectId":{"type":"string","description":"Project ID of the Firebase Project","x-example":"[PROJECT_ID]"}},"required":["resources","projectId"]}}}}}},"\/migrations\/firebase\/projects":{"get":{"summary":"List Firebase Projects","operationId":"migrationsListFirebaseProjects","tags":["migrations"],"description":"","responses":{"200":{"description":"Migrations Firebase Projects List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/firebaseProjectList"}}}}},"x-appwrite":{"method":"listFirebaseProjects","weight":317,"cookies":false,"type":"","demo":"migrations\/list-firebase-projects.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/migrations\/firebase\/report":{"get":{"summary":"Generate a report on Firebase Data","operationId":"migrationsGetFirebaseReport","tags":["migrations"],"description":"","responses":{"200":{"description":"Migration Report","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/migrationReport"}}}}},"x-appwrite":{"method":"getFirebaseReport","weight":313,"cookies":false,"type":"","demo":"migrations\/get-firebase-report.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-firebase-report.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"resources","description":"List of resources to migrate","required":true,"schema":{"type":"array","items":{"type":"string"}},"in":"query"},{"name":"serviceAccount","description":"JSON of the Firebase service account credentials","required":true,"schema":{"type":"string","x-example":"[SERVICE_ACCOUNT]"},"in":"query"}]}},"\/migrations\/firebase\/report\/oauth":{"get":{"summary":"Generate a report on Firebase Data using OAuth","operationId":"migrationsGetFirebaseReportOAuth","tags":["migrations"],"description":"","responses":{"200":{"description":"Migration Report","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/migrationReport"}}}}},"x-appwrite":{"method":"getFirebaseReportOAuth","weight":314,"cookies":false,"type":"","demo":"migrations\/get-firebase-report-o-auth.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-firebase-report.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"resources","description":"List of resources to migrate","required":true,"schema":{"type":"array","items":{"type":"string"}},"in":"query"},{"name":"projectId","description":"Project ID","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"query"}]}},"\/migrations\/nhost":{"post":{"summary":"Migrate NHost Data","operationId":"migrationsCreateNHostMigration","tags":["migrations"],"description":"","responses":{"202":{"description":"Migration","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/migration"}}}}},"x-appwrite":{"method":"createNHostMigration","weight":309,"cookies":false,"type":"","demo":"migrations\/create-n-host-migration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-nhost.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"resources":{"type":"array","description":"List of resources to migrate","x-example":null,"items":{"type":"string"}},"subdomain":{"type":"string","description":"Source's Subdomain","x-example":"[SUBDOMAIN]"},"region":{"type":"string","description":"Source's Region","x-example":"[REGION]"},"adminSecret":{"type":"string","description":"Source's Admin Secret","x-example":"[ADMIN_SECRET]"},"database":{"type":"string","description":"Source's Database Name","x-example":"[DATABASE]"},"username":{"type":"string","description":"Source's Database Username","x-example":"[USERNAME]"},"password":{"type":"string","description":"Source's Database Password","x-example":"[PASSWORD]"},"port":{"type":"integer","description":"Source's Database Port","x-example":null}},"required":["resources","subdomain","region","adminSecret","database","username","password"]}}}}}},"\/migrations\/nhost\/report":{"get":{"summary":"Generate a report on NHost Data","operationId":"migrationsGetNHostReport","tags":["migrations"],"description":"","responses":{"200":{"description":"Migration Report","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/migrationReport"}}}}},"x-appwrite":{"method":"getNHostReport","weight":320,"cookies":false,"type":"","demo":"migrations\/get-n-host-report.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-nhost-report.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"resources","description":"List of resources to migrate.","required":true,"schema":{"type":"array","items":{"type":"string"}},"in":"query"},{"name":"subdomain","description":"Source's Subdomain.","required":true,"schema":{"type":"string","x-example":"[SUBDOMAIN]"},"in":"query"},{"name":"region","description":"Source's Region.","required":true,"schema":{"type":"string","x-example":"[REGION]"},"in":"query"},{"name":"adminSecret","description":"Source's Admin Secret.","required":true,"schema":{"type":"string","x-example":"[ADMIN_SECRET]"},"in":"query"},{"name":"database","description":"Source's Database Name.","required":true,"schema":{"type":"string","x-example":"[DATABASE]"},"in":"query"},{"name":"username","description":"Source's Database Username.","required":true,"schema":{"type":"string","x-example":"[USERNAME]"},"in":"query"},{"name":"password","description":"Source's Database Password.","required":true,"schema":{"type":"string","x-example":"[PASSWORD]"},"in":"query"},{"name":"port","description":"Source's Database Port.","required":false,"schema":{"type":"integer","format":"int32","default":5432},"in":"query"}]}},"\/migrations\/supabase":{"post":{"summary":"Migrate Supabase Data","operationId":"migrationsCreateSupabaseMigration","tags":["migrations"],"description":"","responses":{"202":{"description":"Migration","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/migration"}}}}},"x-appwrite":{"method":"createSupabaseMigration","weight":308,"cookies":false,"type":"","demo":"migrations\/create-supabase-migration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-supabase.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"resources":{"type":"array","description":"List of resources to migrate","x-example":null,"items":{"type":"string"}},"endpoint":{"type":"string","description":"Source's Supabase Endpoint","x-example":"https:\/\/example.com"},"apiKey":{"type":"string","description":"Source's API Key","x-example":"[API_KEY]"},"databaseHost":{"type":"string","description":"Source's Database Host","x-example":"[DATABASE_HOST]"},"username":{"type":"string","description":"Source's Database Username","x-example":"[USERNAME]"},"password":{"type":"string","description":"Source's Database Password","x-example":"[PASSWORD]"},"port":{"type":"integer","description":"Source's Database Port","x-example":null}},"required":["resources","endpoint","apiKey","databaseHost","username","password"]}}}}}},"\/migrations\/supabase\/report":{"get":{"summary":"Generate a report on Supabase Data","operationId":"migrationsGetSupabaseReport","tags":["migrations"],"description":"","responses":{"200":{"description":"Migration Report","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/migrationReport"}}}}},"x-appwrite":{"method":"getSupabaseReport","weight":319,"cookies":false,"type":"","demo":"migrations\/get-supabase-report.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-supabase-report.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"resources","description":"List of resources to migrate","required":true,"schema":{"type":"array","items":{"type":"string"}},"in":"query"},{"name":"endpoint","description":"Source's Supabase Endpoint.","required":true,"schema":{"type":"string","format":"url","x-example":"https:\/\/example.com"},"in":"query"},{"name":"apiKey","description":"Source's API Key.","required":true,"schema":{"type":"string","x-example":"[API_KEY]"},"in":"query"},{"name":"databaseHost","description":"Source's Database Host.","required":true,"schema":{"type":"string","x-example":"[DATABASE_HOST]"},"in":"query"},{"name":"username","description":"Source's Database Username.","required":true,"schema":{"type":"string","x-example":"[USERNAME]"},"in":"query"},{"name":"password","description":"Source's Database Password.","required":true,"schema":{"type":"string","x-example":"[PASSWORD]"},"in":"query"},{"name":"port","description":"Source's Database Port.","required":false,"schema":{"type":"integer","format":"int32","default":5432},"in":"query"}]}},"\/migrations\/{migrationId}":{"get":{"summary":"Get Migration","operationId":"migrationsGet","tags":["migrations"],"description":"","responses":{"200":{"description":"Migration","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/migration"}}}}},"x-appwrite":{"method":"get","weight":311,"cookies":false,"type":"","demo":"migrations\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/get-migration.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"migrationId","description":"Migration unique ID.","required":true,"schema":{"type":"string","x-example":"[MIGRATION_ID]"},"in":"path"}]},"patch":{"summary":"Retry Migration","operationId":"migrationsRetry","tags":["migrations"],"description":"","responses":{"202":{"description":"Migration","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/migration"}}}}},"x-appwrite":{"method":"retry","weight":321,"cookies":false,"type":"","demo":"migrations\/retry.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/retry-migration.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"migrationId","description":"Migration unique ID.","required":true,"schema":{"type":"string","x-example":"[MIGRATION_ID]"},"in":"path"}]},"delete":{"summary":"Delete Migration","operationId":"migrationsDelete","tags":["migrations"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":322,"cookies":false,"type":"","demo":"migrations\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-migration.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"migrationId","description":"Migration ID.","required":true,"schema":{"type":"string","x-example":"[MIGRATION_ID]"},"in":"path"}]}},"\/project\/usage":{"get":{"summary":"Get usage stats for a project","operationId":"projectGetUsage","tags":["project"],"description":"","responses":{"200":{"description":"UsageProject","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageProject"}}}}},"x-appwrite":{"method":"getUsage","weight":179,"cookies":false,"type":"","demo":"project\/get-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"startDate","description":"Starting date for the usage","required":true,"schema":{"type":"string"},"in":"query"},{"name":"endDate","description":"End date for the usage","required":true,"schema":{"type":"string"},"in":"query"},{"name":"period","description":"Period used","required":false,"schema":{"type":"string","x-example":"1h","enum":["1h","1d"],"x-enum-name":"ProjectUsageRange","x-enum-keys":["One Hour","One Day"],"default":"1d"},"in":"query"}]}},"\/project\/variables":{"get":{"summary":"List Variables","operationId":"projectListVariables","tags":["project"],"description":"Get a list of all project variables. These variables will be accessible in all Appwrite Functions at runtime.","responses":{"200":{"description":"Variables List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variableList"}}}}},"x-appwrite":{"method":"listVariables","weight":181,"cookies":false,"type":"","demo":"project\/list-variables.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/project\/list-variables.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]},"post":{"summary":"Create Variable","operationId":"projectCreateVariable","tags":["project"],"description":"Create a new project variable. This variable will be accessible in all Appwrite Functions at runtime.","responses":{"201":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"createVariable","weight":180,"cookies":false,"type":"","demo":"project\/create-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/project\/create-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","x-example":"[VALUE]"}},"required":["key","value"]}}}}}},"\/project\/variables\/{variableId}":{"get":{"summary":"Get Variable","operationId":"projectGetVariable","tags":["project"],"description":"Get a project variable by its unique ID.","responses":{"200":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"getVariable","weight":182,"cookies":false,"type":"","demo":"project\/get-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/project\/get-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}]},"put":{"summary":"Update Variable","operationId":"projectUpdateVariable","tags":["project"],"description":"Update project variable by its unique ID. This variable will be accessible in all Appwrite Functions at runtime.","responses":{"200":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"updateVariable","weight":183,"cookies":false,"type":"","demo":"project\/update-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/project\/update-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","x-example":"[VALUE]"}},"required":["key"]}}}}},"delete":{"summary":"Delete Variable","operationId":"projectDeleteVariable","tags":["project"],"description":"Delete a project variable by its unique ID. ","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteVariable","weight":184,"cookies":false,"type":"","demo":"project\/delete-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/project\/delete-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}]}},"\/projects":{"get":{"summary":"List projects","operationId":"projectsList","tags":["projects"],"description":"","responses":{"200":{"description":"Projects List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/projectList"}}}}},"x-appwrite":{"method":"list","weight":140,"cookies":false,"type":"","demo":"projects\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, teamId","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create project","operationId":"projectsCreate","tags":["projects"],"description":"","responses":{"201":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"create","weight":139,"cookies":false,"type":"","demo":"projects\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"projectId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, and hyphen. Can't start with a special char. Max length is 36 chars.","x-example":null},"name":{"type":"string","description":"Project name. Max length: 128 chars.","x-example":"[NAME]"},"teamId":{"type":"string","description":"Team unique ID.","x-example":"[TEAM_ID]"},"region":{"type":"string","description":"Project Region.","x-example":"default","enum":["default"],"x-enum-name":null,"x-enum-keys":[]},"description":{"type":"string","description":"Project description. Max length: 256 chars.","x-example":"[DESCRIPTION]"},"logo":{"type":"string","description":"Project logo.","x-example":"[LOGO]"},"url":{"type":"string","description":"Project URL.","x-example":"https:\/\/example.com"},"legalName":{"type":"string","description":"Project legal Name. Max length: 256 chars.","x-example":"[LEGAL_NAME]"},"legalCountry":{"type":"string","description":"Project legal Country. Max length: 256 chars.","x-example":"[LEGAL_COUNTRY]"},"legalState":{"type":"string","description":"Project legal State. Max length: 256 chars.","x-example":"[LEGAL_STATE]"},"legalCity":{"type":"string","description":"Project legal City. Max length: 256 chars.","x-example":"[LEGAL_CITY]"},"legalAddress":{"type":"string","description":"Project legal Address. Max length: 256 chars.","x-example":"[LEGAL_ADDRESS]"},"legalTaxId":{"type":"string","description":"Project legal Tax ID. Max length: 256 chars.","x-example":"[LEGAL_TAX_ID]"}},"required":["projectId","name","teamId"]}}}}}},"\/projects\/{projectId}":{"get":{"summary":"Get project","operationId":"projectsGet","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"get","weight":141,"cookies":false,"type":"","demo":"projects\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}]},"patch":{"summary":"Update project","operationId":"projectsUpdate","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"update","weight":142,"cookies":false,"type":"","demo":"projects\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Project name. Max length: 128 chars.","x-example":"[NAME]"},"description":{"type":"string","description":"Project description. Max length: 256 chars.","x-example":"[DESCRIPTION]"},"logo":{"type":"string","description":"Project logo.","x-example":"[LOGO]"},"url":{"type":"string","description":"Project URL.","x-example":"https:\/\/example.com"},"legalName":{"type":"string","description":"Project legal name. Max length: 256 chars.","x-example":"[LEGAL_NAME]"},"legalCountry":{"type":"string","description":"Project legal country. Max length: 256 chars.","x-example":"[LEGAL_COUNTRY]"},"legalState":{"type":"string","description":"Project legal state. Max length: 256 chars.","x-example":"[LEGAL_STATE]"},"legalCity":{"type":"string","description":"Project legal city. Max length: 256 chars.","x-example":"[LEGAL_CITY]"},"legalAddress":{"type":"string","description":"Project legal address. Max length: 256 chars.","x-example":"[LEGAL_ADDRESS]"},"legalTaxId":{"type":"string","description":"Project legal tax ID. Max length: 256 chars.","x-example":"[LEGAL_TAX_ID]"}},"required":["name"]}}}}},"delete":{"summary":"Delete project","operationId":"projectsDelete","tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":154,"cookies":false,"type":"","demo":"projects\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}]}},"\/projects\/{projectId}\/auth\/duration":{"patch":{"summary":"Update project authentication duration","operationId":"projectsUpdateAuthDuration","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateAuthDuration","weight":148,"cookies":false,"type":"","demo":"projects\/update-auth-duration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"duration":{"type":"integer","description":"Project session length in seconds. Max length: 31536000 seconds.","x-example":0}},"required":["duration"]}}}}}},"\/projects\/{projectId}\/auth\/limit":{"patch":{"summary":"Update project users limit","operationId":"projectsUpdateAuthLimit","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateAuthLimit","weight":147,"cookies":false,"type":"","demo":"projects\/update-auth-limit.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"limit":{"type":"integer","description":"Set the max number of users allowed in this project. Use 0 for unlimited.","x-example":0}},"required":["limit"]}}}}}},"\/projects\/{projectId}\/auth\/max-sessions":{"patch":{"summary":"Update project user sessions limit","operationId":"projectsUpdateAuthSessionsLimit","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateAuthSessionsLimit","weight":153,"cookies":false,"type":"","demo":"projects\/update-auth-sessions-limit.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"limit":{"type":"integer","description":"Set the max number of users allowed in this project. Value allowed is between 1-100. Default is 10","x-example":1}},"required":["limit"]}}}}}},"\/projects\/{projectId}\/auth\/password-dictionary":{"patch":{"summary":"Update authentication password dictionary status. Use this endpoint to enable or disable the dicitonary check for user password","operationId":"projectsUpdateAuthPasswordDictionary","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateAuthPasswordDictionary","weight":151,"cookies":false,"type":"","demo":"projects\/update-auth-password-dictionary.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Set whether or not to enable checking user's password against most commonly used passwords. Default is false.","x-example":false}},"required":["enabled"]}}}}}},"\/projects\/{projectId}\/auth\/password-history":{"patch":{"summary":"Update authentication password history. Use this endpoint to set the number of password history to save and 0 to disable password history.","operationId":"projectsUpdateAuthPasswordHistory","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateAuthPasswordHistory","weight":150,"cookies":false,"type":"","demo":"projects\/update-auth-password-history.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"limit":{"type":"integer","description":"Set the max number of passwords to store in user history. User can't choose a new password that is already stored in the password history list. Max number of passwords allowed in history is20. Default value is 0","x-example":0}},"required":["limit"]}}}}}},"\/projects\/{projectId}\/auth\/personal-data":{"patch":{"summary":"Enable or disable checking user passwords for similarity with their personal data.","operationId":"projectsUpdatePersonalDataCheck","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updatePersonalDataCheck","weight":152,"cookies":false,"type":"","demo":"projects\/update-personal-data-check.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Set whether or not to check a password for similarity with personal data. Default is false.","x-example":false}},"required":["enabled"]}}}}}},"\/projects\/{projectId}\/auth\/{method}":{"patch":{"summary":"Update project auth method status. Use this endpoint to enable or disable a given auth method for this project.","operationId":"projectsUpdateAuthStatus","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateAuthStatus","weight":149,"cookies":false,"type":"","demo":"projects\/update-auth-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"method","description":"Auth Method. Possible values: email-password,magic-url,email-otp,anonymous,invites,jwt,phone","required":true,"schema":{"type":"string","x-example":"email-password","enum":["email-password","magic-url","email-otp","anonymous","invites","jwt","phone"],"x-enum-name":"AuthMethod","x-enum-keys":[]},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"status":{"type":"boolean","description":"Set the status of this auth method.","x-example":false}},"required":["status"]}}}}}},"\/projects\/{projectId}\/keys":{"get":{"summary":"List keys","operationId":"projectsListKeys","tags":["projects"],"description":"","responses":{"200":{"description":"API Keys List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/keyList"}}}}},"x-appwrite":{"method":"listKeys","weight":162,"cookies":false,"type":"","demo":"projects\/list-keys.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}]},"post":{"summary":"Create key","operationId":"projectsCreateKey","tags":["projects"],"description":"","responses":{"201":{"description":"Key","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/key"}}}}},"x-appwrite":{"method":"createKey","weight":161,"cookies":false,"type":"","demo":"projects\/create-key.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Key name. Max length: 128 chars.","x-example":"[NAME]"},"scopes":{"type":"array","description":"Key scopes list. Maximum of 100 scopes are allowed.","x-example":null,"items":{"type":"string"}},"expire":{"type":"string","description":"Expiration time in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. Use null for unlimited expiration.","x-example":null}},"required":["name","scopes"]}}}}}},"\/projects\/{projectId}\/keys\/{keyId}":{"get":{"summary":"Get key","operationId":"projectsGetKey","tags":["projects"],"description":"","responses":{"200":{"description":"Key","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/key"}}}}},"x-appwrite":{"method":"getKey","weight":163,"cookies":false,"type":"","demo":"projects\/get-key.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"keyId","description":"Key unique ID.","required":true,"schema":{"type":"string","x-example":"[KEY_ID]"},"in":"path"}]},"put":{"summary":"Update key","operationId":"projectsUpdateKey","tags":["projects"],"description":"","responses":{"200":{"description":"Key","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/key"}}}}},"x-appwrite":{"method":"updateKey","weight":164,"cookies":false,"type":"","demo":"projects\/update-key.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"keyId","description":"Key unique ID.","required":true,"schema":{"type":"string","x-example":"[KEY_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Key name. Max length: 128 chars.","x-example":"[NAME]"},"scopes":{"type":"array","description":"Key scopes list. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"expire":{"type":"string","description":"Expiration time in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. Use null for unlimited expiration.","x-example":null}},"required":["name","scopes"]}}}}},"delete":{"summary":"Delete key","operationId":"projectsDeleteKey","tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteKey","weight":165,"cookies":false,"type":"","demo":"projects\/delete-key.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"keyId","description":"Key unique ID.","required":true,"schema":{"type":"string","x-example":"[KEY_ID]"},"in":"path"}]}},"\/projects\/{projectId}\/oauth2":{"patch":{"summary":"Update project OAuth2","operationId":"projectsUpdateOAuth2","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateOAuth2","weight":146,"cookies":false,"type":"","demo":"projects\/update-o-auth2.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"provider":{"type":"string","description":"Provider Name","x-example":"amazon","enum":["amazon","apple","auth0","authentik","autodesk","bitbucket","bitly","box","dailymotion","discord","disqus","dropbox","etsy","facebook","github","gitlab","google","linkedin","microsoft","notion","oidc","okta","paypal","paypalSandbox","podio","salesforce","slack","spotify","stripe","tradeshift","tradeshiftBox","twitch","wordpress","yahoo","yammer","yandex","zoho","zoom","mock"],"x-enum-name":"OAuthProvider","x-enum-keys":[]},"appId":{"type":"string","description":"Provider app ID. Max length: 256 chars.","x-example":"[APP_ID]"},"secret":{"type":"string","description":"Provider secret key. Max length: 512 chars.","x-example":"[SECRET]"},"enabled":{"type":"boolean","description":"Provider status. Set to 'false' to disable new session creation.","x-example":false}},"required":["provider"]}}}}}},"\/projects\/{projectId}\/platforms":{"get":{"summary":"List platforms","operationId":"projectsListPlatforms","tags":["projects"],"description":"","responses":{"200":{"description":"Platforms List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/platformList"}}}}},"x-appwrite":{"method":"listPlatforms","weight":167,"cookies":false,"type":"","demo":"projects\/list-platforms.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}]},"post":{"summary":"Create platform","operationId":"projectsCreatePlatform","tags":["projects"],"description":"","responses":{"201":{"description":"Platform","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/platform"}}}}},"x-appwrite":{"method":"createPlatform","weight":166,"cookies":false,"type":"","demo":"projects\/create-platform.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"type":{"type":"string","description":"Platform type.","x-example":"web","enum":["web","flutter-web","flutter-ios","flutter-android","flutter-linux","flutter-macos","flutter-windows","apple-ios","apple-macos","apple-watchos","apple-tvos","android","unity"],"x-enum-name":"PlatformType","x-enum-keys":[]},"name":{"type":"string","description":"Platform name. Max length: 128 chars.","x-example":"[NAME]"},"key":{"type":"string","description":"Package name for Android or bundle ID for iOS or macOS. Max length: 256 chars.","x-example":"[KEY]"},"store":{"type":"string","description":"App store or Google Play store ID. Max length: 256 chars.","x-example":"[STORE]"},"hostname":{"type":"string","description":"Platform client hostname. Max length: 256 chars.","x-example":null}},"required":["type","name"]}}}}}},"\/projects\/{projectId}\/platforms\/{platformId}":{"get":{"summary":"Get platform","operationId":"projectsGetPlatform","tags":["projects"],"description":"","responses":{"200":{"description":"Platform","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/platform"}}}}},"x-appwrite":{"method":"getPlatform","weight":168,"cookies":false,"type":"","demo":"projects\/get-platform.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"platformId","description":"Platform unique ID.","required":true,"schema":{"type":"string","x-example":"[PLATFORM_ID]"},"in":"path"}]},"put":{"summary":"Update platform","operationId":"projectsUpdatePlatform","tags":["projects"],"description":"","responses":{"200":{"description":"Platform","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/platform"}}}}},"x-appwrite":{"method":"updatePlatform","weight":169,"cookies":false,"type":"","demo":"projects\/update-platform.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"platformId","description":"Platform unique ID.","required":true,"schema":{"type":"string","x-example":"[PLATFORM_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Platform name. Max length: 128 chars.","x-example":"[NAME]"},"key":{"type":"string","description":"Package name for android or bundle ID for iOS. Max length: 256 chars.","x-example":"[KEY]"},"store":{"type":"string","description":"App store or Google Play store ID. Max length: 256 chars.","x-example":"[STORE]"},"hostname":{"type":"string","description":"Platform client URL. Max length: 256 chars.","x-example":null}},"required":["name"]}}}}},"delete":{"summary":"Delete platform","operationId":"projectsDeletePlatform","tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deletePlatform","weight":170,"cookies":false,"type":"","demo":"projects\/delete-platform.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"platformId","description":"Platform unique ID.","required":true,"schema":{"type":"string","x-example":"[PLATFORM_ID]"},"in":"path"}]}},"\/projects\/{projectId}\/service":{"patch":{"summary":"Update service status","operationId":"projectsUpdateServiceStatus","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateServiceStatus","weight":144,"cookies":false,"type":"","demo":"projects\/update-service-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"service":{"type":"string","description":"Service name.","x-example":"account","enum":["account","avatars","databases","locale","health","storage","teams","users","functions","graphql","messaging"],"x-enum-name":"APIService","x-enum-keys":[]},"status":{"type":"boolean","description":"Service status.","x-example":false}},"required":["service","status"]}}}}}},"\/projects\/{projectId}\/service\/all":{"patch":{"summary":"Update all service status","operationId":"projectsUpdateServiceStatusAll","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateServiceStatusAll","weight":145,"cookies":false,"type":"","demo":"projects\/update-service-status-all.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"status":{"type":"boolean","description":"Service status.","x-example":false}},"required":["status"]}}}}}},"\/projects\/{projectId}\/smtp":{"patch":{"summary":"Update SMTP","operationId":"projectsUpdateSmtp","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateSmtp","weight":171,"cookies":false,"type":"","demo":"projects\/update-smtp.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enable custom SMTP service","x-example":false},"senderName":{"type":"string","description":"Name of the email sender","x-example":"[SENDER_NAME]"},"senderEmail":{"type":"string","description":"Email of the sender","x-example":"email@example.com"},"replyTo":{"type":"string","description":"Reply to email","x-example":"email@example.com"},"host":{"type":"string","description":"SMTP server host name","x-example":null},"port":{"type":"integer","description":"SMTP server port","x-example":null},"username":{"type":"string","description":"SMTP server username","x-example":"[USERNAME]"},"password":{"type":"string","description":"SMTP server password","x-example":"[PASSWORD]"},"secure":{"type":"string","description":"Does SMTP server use secure connection","x-example":"tls","enum":["tls"],"x-enum-name":"SMTPSecure","x-enum-keys":[]}},"required":["enabled"]}}}}}},"\/projects\/{projectId}\/smtp\/tests":{"post":{"summary":"Create SMTP test","operationId":"projectsCreateSmtpTest","tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"createSmtpTest","weight":172,"cookies":false,"type":"","demo":"projects\/create-smtp-test.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"emails":{"type":"array","description":"Array of emails to send test email to. Maximum of 10 emails are allowed.","x-example":null,"items":{"type":"string"}},"senderName":{"type":"string","description":"Name of the email sender","x-example":"[SENDER_NAME]"},"senderEmail":{"type":"string","description":"Email of the sender","x-example":"email@example.com"},"replyTo":{"type":"string","description":"Reply to email","x-example":"email@example.com"},"host":{"type":"string","description":"SMTP server host name","x-example":null},"port":{"type":"integer","description":"SMTP server port","x-example":null},"username":{"type":"string","description":"SMTP server username","x-example":"[USERNAME]"},"password":{"type":"string","description":"SMTP server password","x-example":"[PASSWORD]"},"secure":{"type":"string","description":"Does SMTP server use secure connection","x-example":"tls","enum":["tls"],"x-enum-name":"SMTPSecure","x-enum-keys":[]}},"required":["emails","senderName","senderEmail","host"]}}}}}},"\/projects\/{projectId}\/team":{"patch":{"summary":"Update Project Team","operationId":"projectsUpdateTeam","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateTeam","weight":143,"cookies":false,"type":"","demo":"projects\/update-team.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"teamId":{"type":"string","description":"Team ID of the team to transfer project to.","x-example":"[TEAM_ID]"}},"required":["teamId"]}}}}}},"\/projects\/{projectId}\/templates\/email\/{type}\/{locale}":{"get":{"summary":"Get custom email template","operationId":"projectsGetEmailTemplate","tags":["projects"],"description":"","responses":{"200":{"description":"EmailTemplate","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/emailTemplate"}}}}},"x-appwrite":{"method":"getEmailTemplate","weight":174,"cookies":false,"type":"","demo":"projects\/get-email-template.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"type","description":"Template type","required":true,"schema":{"type":"string","x-example":"verification","enum":["verification","magicsession","recovery","invitation"],"x-enum-name":"EmailTemplateType","x-enum-keys":[]},"in":"path"},{"name":"locale","description":"Template locale","required":true,"schema":{"type":"string","x-example":"af","enum":["af","ar-ae","ar-bh","ar-dz","ar-eg","ar-iq","ar-jo","ar-kw","ar-lb","ar-ly","ar-ma","ar-om","ar-qa","ar-sa","ar-sy","ar-tn","ar-ye","as","az","be","bg","bh","bn","bs","ca","cs","cy","da","de","de-at","de-ch","de-li","de-lu","el","en","en-au","en-bz","en-ca","en-gb","en-ie","en-jm","en-nz","en-tt","en-us","en-za","eo","es","es-ar","es-bo","es-cl","es-co","es-cr","es-do","es-ec","es-gt","es-hn","es-mx","es-ni","es-pa","es-pe","es-pr","es-py","es-sv","es-uy","es-ve","et","eu","fa","fi","fo","fr","fr-be","fr-ca","fr-ch","fr-lu","ga","gd","he","hi","hr","hu","id","is","it","it-ch","ja","ji","ko","ku","lt","lv","mk","ml","ms","mt","nb","ne","nl","nl-be","nn","no","pa","pl","pt","pt-br","rm","ro","ro-md","ru","ru-md","sb","sk","sl","sq","sr","sv","sv-fi","th","tn","tr","ts","ua","ur","ve","vi","xh","zh-cn","zh-hk","zh-sg","zh-tw","zu"],"x-enum-name":"EmailTemplateLocale","x-enum-keys":[]},"in":"path"}]},"patch":{"summary":"Update custom email templates","operationId":"projectsUpdateEmailTemplate","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateEmailTemplate","weight":176,"cookies":false,"type":"","demo":"projects\/update-email-template.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"type","description":"Template type","required":true,"schema":{"type":"string","x-example":"verification","enum":["verification","magicsession","recovery","invitation"],"x-enum-name":"EmailTemplateType","x-enum-keys":[]},"in":"path"},{"name":"locale","description":"Template locale","required":true,"schema":{"type":"string","x-example":"af","enum":["af","ar-ae","ar-bh","ar-dz","ar-eg","ar-iq","ar-jo","ar-kw","ar-lb","ar-ly","ar-ma","ar-om","ar-qa","ar-sa","ar-sy","ar-tn","ar-ye","as","az","be","bg","bh","bn","bs","ca","cs","cy","da","de","de-at","de-ch","de-li","de-lu","el","en","en-au","en-bz","en-ca","en-gb","en-ie","en-jm","en-nz","en-tt","en-us","en-za","eo","es","es-ar","es-bo","es-cl","es-co","es-cr","es-do","es-ec","es-gt","es-hn","es-mx","es-ni","es-pa","es-pe","es-pr","es-py","es-sv","es-uy","es-ve","et","eu","fa","fi","fo","fr","fr-be","fr-ca","fr-ch","fr-lu","ga","gd","he","hi","hr","hu","id","is","it","it-ch","ja","ji","ko","ku","lt","lv","mk","ml","ms","mt","nb","ne","nl","nl-be","nn","no","pa","pl","pt","pt-br","rm","ro","ro-md","ru","ru-md","sb","sk","sl","sq","sr","sv","sv-fi","th","tn","tr","ts","ua","ur","ve","vi","xh","zh-cn","zh-hk","zh-sg","zh-tw","zu"],"x-enum-name":"EmailTemplateLocale","x-enum-keys":[]},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"subject":{"type":"string","description":"Email Subject","x-example":"[SUBJECT]"},"message":{"type":"string","description":"Template message","x-example":"[MESSAGE]"},"senderName":{"type":"string","description":"Name of the email sender","x-example":"[SENDER_NAME]"},"senderEmail":{"type":"string","description":"Email of the sender","x-example":"email@example.com"},"replyTo":{"type":"string","description":"Reply to email","x-example":"email@example.com"}},"required":["subject","message"]}}}}},"delete":{"summary":"Reset custom email template","operationId":"projectsDeleteEmailTemplate","tags":["projects"],"description":"","responses":{"200":{"description":"EmailTemplate","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/emailTemplate"}}}}},"x-appwrite":{"method":"deleteEmailTemplate","weight":178,"cookies":false,"type":"","demo":"projects\/delete-email-template.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"type","description":"Template type","required":true,"schema":{"type":"string","x-example":"verification","enum":["verification","magicsession","recovery","invitation"],"x-enum-name":"EmailTemplateType","x-enum-keys":[]},"in":"path"},{"name":"locale","description":"Template locale","required":true,"schema":{"type":"string","x-example":"af","enum":["af","ar-ae","ar-bh","ar-dz","ar-eg","ar-iq","ar-jo","ar-kw","ar-lb","ar-ly","ar-ma","ar-om","ar-qa","ar-sa","ar-sy","ar-tn","ar-ye","as","az","be","bg","bh","bn","bs","ca","cs","cy","da","de","de-at","de-ch","de-li","de-lu","el","en","en-au","en-bz","en-ca","en-gb","en-ie","en-jm","en-nz","en-tt","en-us","en-za","eo","es","es-ar","es-bo","es-cl","es-co","es-cr","es-do","es-ec","es-gt","es-hn","es-mx","es-ni","es-pa","es-pe","es-pr","es-py","es-sv","es-uy","es-ve","et","eu","fa","fi","fo","fr","fr-be","fr-ca","fr-ch","fr-lu","ga","gd","he","hi","hr","hu","id","is","it","it-ch","ja","ji","ko","ku","lt","lv","mk","ml","ms","mt","nb","ne","nl","nl-be","nn","no","pa","pl","pt","pt-br","rm","ro","ro-md","ru","ru-md","sb","sk","sl","sq","sr","sv","sv-fi","th","tn","tr","ts","ua","ur","ve","vi","xh","zh-cn","zh-hk","zh-sg","zh-tw","zu"],"x-enum-name":"EmailTemplateLocale","x-enum-keys":[]},"in":"path"}]}},"\/projects\/{projectId}\/templates\/sms\/{type}\/{locale}":{"get":{"summary":"Get custom SMS template","operationId":"projectsGetSmsTemplate","tags":["projects"],"description":"","responses":{"200":{"description":"SmsTemplate","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/smsTemplate"}}}}},"x-appwrite":{"method":"getSmsTemplate","weight":173,"cookies":false,"type":"","demo":"projects\/get-sms-template.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"type","description":"Template type","required":true,"schema":{"type":"string","x-example":"verification","enum":["verification","login","invitation"],"x-enum-name":"SMSTemplateType","x-enum-keys":[]},"in":"path"},{"name":"locale","description":"Template locale","required":true,"schema":{"type":"string","x-example":"af","enum":["af","ar-ae","ar-bh","ar-dz","ar-eg","ar-iq","ar-jo","ar-kw","ar-lb","ar-ly","ar-ma","ar-om","ar-qa","ar-sa","ar-sy","ar-tn","ar-ye","as","az","be","bg","bh","bn","bs","ca","cs","cy","da","de","de-at","de-ch","de-li","de-lu","el","en","en-au","en-bz","en-ca","en-gb","en-ie","en-jm","en-nz","en-tt","en-us","en-za","eo","es","es-ar","es-bo","es-cl","es-co","es-cr","es-do","es-ec","es-gt","es-hn","es-mx","es-ni","es-pa","es-pe","es-pr","es-py","es-sv","es-uy","es-ve","et","eu","fa","fi","fo","fr","fr-be","fr-ca","fr-ch","fr-lu","ga","gd","he","hi","hr","hu","id","is","it","it-ch","ja","ji","ko","ku","lt","lv","mk","ml","ms","mt","nb","ne","nl","nl-be","nn","no","pa","pl","pt","pt-br","rm","ro","ro-md","ru","ru-md","sb","sk","sl","sq","sr","sv","sv-fi","th","tn","tr","ts","ua","ur","ve","vi","xh","zh-cn","zh-hk","zh-sg","zh-tw","zu"],"x-enum-name":"SMSTemplateLocale","x-enum-keys":[]},"in":"path"}]},"patch":{"summary":"Update custom SMS template","operationId":"projectsUpdateSmsTemplate","tags":["projects"],"description":"","responses":{"200":{"description":"SmsTemplate","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/smsTemplate"}}}}},"x-appwrite":{"method":"updateSmsTemplate","weight":175,"cookies":false,"type":"","demo":"projects\/update-sms-template.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"type","description":"Template type","required":true,"schema":{"type":"string","x-example":"verification","enum":["verification","login","invitation"],"x-enum-name":"SMSTemplateType","x-enum-keys":[]},"in":"path"},{"name":"locale","description":"Template locale","required":true,"schema":{"type":"string","x-example":"af","enum":["af","ar-ae","ar-bh","ar-dz","ar-eg","ar-iq","ar-jo","ar-kw","ar-lb","ar-ly","ar-ma","ar-om","ar-qa","ar-sa","ar-sy","ar-tn","ar-ye","as","az","be","bg","bh","bn","bs","ca","cs","cy","da","de","de-at","de-ch","de-li","de-lu","el","en","en-au","en-bz","en-ca","en-gb","en-ie","en-jm","en-nz","en-tt","en-us","en-za","eo","es","es-ar","es-bo","es-cl","es-co","es-cr","es-do","es-ec","es-gt","es-hn","es-mx","es-ni","es-pa","es-pe","es-pr","es-py","es-sv","es-uy","es-ve","et","eu","fa","fi","fo","fr","fr-be","fr-ca","fr-ch","fr-lu","ga","gd","he","hi","hr","hu","id","is","it","it-ch","ja","ji","ko","ku","lt","lv","mk","ml","ms","mt","nb","ne","nl","nl-be","nn","no","pa","pl","pt","pt-br","rm","ro","ro-md","ru","ru-md","sb","sk","sl","sq","sr","sv","sv-fi","th","tn","tr","ts","ua","ur","ve","vi","xh","zh-cn","zh-hk","zh-sg","zh-tw","zu"],"x-enum-name":"SMSTemplateLocale","x-enum-keys":[]},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Template message","x-example":"[MESSAGE]"}},"required":["message"]}}}}},"delete":{"summary":"Reset custom SMS template","operationId":"projectsDeleteSmsTemplate","tags":["projects"],"description":"","responses":{"200":{"description":"SmsTemplate","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/smsTemplate"}}}}},"x-appwrite":{"method":"deleteSmsTemplate","weight":177,"cookies":false,"type":"","demo":"projects\/delete-sms-template.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"type","description":"Template type","required":true,"schema":{"type":"string","x-example":"verification","enum":["verification","login","invitation"],"x-enum-name":"SMSTemplateType","x-enum-keys":[]},"in":"path"},{"name":"locale","description":"Template locale","required":true,"schema":{"type":"string","x-example":"af","enum":["af","ar-ae","ar-bh","ar-dz","ar-eg","ar-iq","ar-jo","ar-kw","ar-lb","ar-ly","ar-ma","ar-om","ar-qa","ar-sa","ar-sy","ar-tn","ar-ye","as","az","be","bg","bh","bn","bs","ca","cs","cy","da","de","de-at","de-ch","de-li","de-lu","el","en","en-au","en-bz","en-ca","en-gb","en-ie","en-jm","en-nz","en-tt","en-us","en-za","eo","es","es-ar","es-bo","es-cl","es-co","es-cr","es-do","es-ec","es-gt","es-hn","es-mx","es-ni","es-pa","es-pe","es-pr","es-py","es-sv","es-uy","es-ve","et","eu","fa","fi","fo","fr","fr-be","fr-ca","fr-ch","fr-lu","ga","gd","he","hi","hr","hu","id","is","it","it-ch","ja","ji","ko","ku","lt","lv","mk","ml","ms","mt","nb","ne","nl","nl-be","nn","no","pa","pl","pt","pt-br","rm","ro","ro-md","ru","ru-md","sb","sk","sl","sq","sr","sv","sv-fi","th","tn","tr","ts","ua","ur","ve","vi","xh","zh-cn","zh-hk","zh-sg","zh-tw","zu"],"x-enum-name":"SMSTemplateLocale","x-enum-keys":[]},"in":"path"}]}},"\/projects\/{projectId}\/webhooks":{"get":{"summary":"List webhooks","operationId":"projectsListWebhooks","tags":["projects"],"description":"","responses":{"200":{"description":"Webhooks List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/webhookList"}}}}},"x-appwrite":{"method":"listWebhooks","weight":156,"cookies":false,"type":"","demo":"projects\/list-webhooks.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}]},"post":{"summary":"Create webhook","operationId":"projectsCreateWebhook","tags":["projects"],"description":"","responses":{"201":{"description":"Webhook","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/webhook"}}}}},"x-appwrite":{"method":"createWebhook","weight":155,"cookies":false,"type":"","demo":"projects\/create-webhook.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Webhook name. Max length: 128 chars.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Enable or disable a webhook.","x-example":false},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"Webhook URL.","x-example":null},"security":{"type":"boolean","description":"Certificate verification, false for disabled or true for enabled.","x-example":false},"httpUser":{"type":"string","description":"Webhook HTTP user. Max length: 256 chars.","x-example":"[HTTP_USER]"},"httpPass":{"type":"string","description":"Webhook HTTP password. Max length: 256 chars.","x-example":"[HTTP_PASS]"}},"required":["name","events","url","security"]}}}}}},"\/projects\/{projectId}\/webhooks\/{webhookId}":{"get":{"summary":"Get webhook","operationId":"projectsGetWebhook","tags":["projects"],"description":"","responses":{"200":{"description":"Webhook","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/webhook"}}}}},"x-appwrite":{"method":"getWebhook","weight":157,"cookies":false,"type":"","demo":"projects\/get-webhook.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"webhookId","description":"Webhook unique ID.","required":true,"schema":{"type":"string","x-example":"[WEBHOOK_ID]"},"in":"path"}]},"put":{"summary":"Update webhook","operationId":"projectsUpdateWebhook","tags":["projects"],"description":"","responses":{"200":{"description":"Webhook","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/webhook"}}}}},"x-appwrite":{"method":"updateWebhook","weight":158,"cookies":false,"type":"","demo":"projects\/update-webhook.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"webhookId","description":"Webhook unique ID.","required":true,"schema":{"type":"string","x-example":"[WEBHOOK_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Webhook name. Max length: 128 chars.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Enable or disable a webhook.","x-example":false},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"Webhook URL.","x-example":null},"security":{"type":"boolean","description":"Certificate verification, false for disabled or true for enabled.","x-example":false},"httpUser":{"type":"string","description":"Webhook HTTP user. Max length: 256 chars.","x-example":"[HTTP_USER]"},"httpPass":{"type":"string","description":"Webhook HTTP password. Max length: 256 chars.","x-example":"[HTTP_PASS]"}},"required":["name","events","url","security"]}}}}},"delete":{"summary":"Delete webhook","operationId":"projectsDeleteWebhook","tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteWebhook","weight":160,"cookies":false,"type":"","demo":"projects\/delete-webhook.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"webhookId","description":"Webhook unique ID.","required":true,"schema":{"type":"string","x-example":"[WEBHOOK_ID]"},"in":"path"}]}},"\/projects\/{projectId}\/webhooks\/{webhookId}\/signature":{"patch":{"summary":"Update webhook signature key","operationId":"projectsUpdateWebhookSignature","tags":["projects"],"description":"","responses":{"200":{"description":"Webhook","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/webhook"}}}}},"x-appwrite":{"method":"updateWebhookSignature","weight":159,"cookies":false,"type":"","demo":"projects\/update-webhook-signature.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"webhookId","description":"Webhook unique ID.","required":true,"schema":{"type":"string","x-example":"[WEBHOOK_ID]"},"in":"path"}]}},"\/proxy\/rules":{"get":{"summary":"List Rules","operationId":"proxyListRules","tags":["proxy"],"description":"Get a list of all the proxy rules. You can use the query params to filter your results.","responses":{"200":{"description":"Rule List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/proxyRuleList"}}}}},"x-appwrite":{"method":"listRules","weight":289,"cookies":false,"type":"","demo":"proxy\/list-rules.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/proxy\/list-rules.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"rules.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: domain, resourceType, resourceId, url","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Rule","operationId":"proxyCreateRule","tags":["proxy"],"description":"Create a new proxy rule.","responses":{"201":{"description":"Rule","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/proxyRule"}}}}},"x-appwrite":{"method":"createRule","weight":288,"cookies":false,"type":"","demo":"proxy\/create-rule.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/proxy\/create-rule.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"rules.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"domain":{"type":"string","description":"Domain name.","x-example":null},"resourceType":{"type":"string","description":"Action definition for the rule. Possible values are \"api\", \"function\"","x-example":"api","enum":["api","function"],"x-enum-name":null,"x-enum-keys":[]},"resourceId":{"type":"string","description":"ID of resource for the action type. If resourceType is \"api\", leave empty. If resourceType is \"function\", provide ID of the function.","x-example":"[RESOURCE_ID]"}},"required":["domain","resourceType"]}}}}}},"\/proxy\/rules\/{ruleId}":{"get":{"summary":"Get Rule","operationId":"proxyGetRule","tags":["proxy"],"description":"Get a proxy rule by its unique ID.","responses":{"200":{"description":"Rule","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/proxyRule"}}}}},"x-appwrite":{"method":"getRule","weight":290,"cookies":false,"type":"","demo":"proxy\/get-rule.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/proxy\/get-rule.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"rules.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"ruleId","description":"Rule ID.","required":true,"schema":{"type":"string","x-example":"[RULE_ID]"},"in":"path"}]},"delete":{"summary":"Delete Rule","operationId":"proxyDeleteRule","tags":["proxy"],"description":"Delete a proxy rule by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteRule","weight":291,"cookies":false,"type":"","demo":"proxy\/delete-rule.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/proxy\/delete-rule.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"rules.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"ruleId","description":"Rule ID.","required":true,"schema":{"type":"string","x-example":"[RULE_ID]"},"in":"path"}]}},"\/proxy\/rules\/{ruleId}\/verification":{"patch":{"summary":"Update Rule Verification Status","operationId":"proxyUpdateRuleVerification","tags":["proxy"],"description":"","responses":{"200":{"description":"Rule","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/proxyRule"}}}}},"x-appwrite":{"method":"updateRuleVerification","weight":292,"cookies":false,"type":"","demo":"proxy\/update-rule-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"rules.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"ruleId","description":"Rule ID.","required":true,"schema":{"type":"string","x-example":"[RULE_ID]"},"in":"path"}]}},"\/storage\/buckets":{"get":{"summary":"List buckets","operationId":"storageListBuckets","tags":["storage"],"description":"Get a list of all the storage buckets. You can use the query params to filter your results.","responses":{"200":{"description":"Buckets List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/bucketList"}}}}},"x-appwrite":{"method":"listBuckets","weight":186,"cookies":false,"type":"","demo":"storage\/list-buckets.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/list-buckets.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: enabled, name, fileSecurity, maximumFileSize, encryption, antivirus","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create bucket","operationId":"storageCreateBucket","tags":["storage"],"description":"Create a new storage bucket.","responses":{"201":{"description":"Bucket","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/bucket"}}}}},"x-appwrite":{"method":"createBucket","weight":185,"cookies":false,"type":"","demo":"storage\/create-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"bucketId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, no user is granted with any permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":false},"enabled":{"type":"boolean","description":"Is bucket enabled? When set to 'disabled', users cannot access the files in this bucket but Server SDKs with and API key can still access the bucket. No files are lost when this is toggled.","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB.","x-example":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","x-example":"none","enum":["none","gzip","zstd"],"x-enum-name":null,"x-enum-keys":[]},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","x-example":false}},"required":["bucketId","name"]}}}}}},"\/storage\/buckets\/{bucketId}":{"get":{"summary":"Get bucket","operationId":"storageGetBucket","tags":["storage"],"description":"Get a storage bucket by its unique ID. This endpoint response returns a JSON object with the storage bucket metadata.","responses":{"200":{"description":"Bucket","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/bucket"}}}}},"x-appwrite":{"method":"getBucket","weight":187,"cookies":false,"type":"","demo":"storage\/get-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"bucketId","description":"Bucket unique ID.","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"}]},"put":{"summary":"Update bucket","operationId":"storageUpdateBucket","tags":["storage"],"description":"Update a storage bucket by its unique ID.","responses":{"200":{"description":"Bucket","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/bucket"}}}}},"x-appwrite":{"method":"updateBucket","weight":188,"cookies":false,"type":"","demo":"storage\/update-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"bucketId","description":"Bucket unique ID.","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Bucket name","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":false},"enabled":{"type":"boolean","description":"Is bucket enabled? When set to 'disabled', users cannot access the files in this bucket but Server SDKs with and API key can still access the bucket. No files are lost when this is toggled.","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB.","x-example":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","x-example":"none","enum":["none","gzip","zstd"],"x-enum-name":null,"x-enum-keys":[]},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","x-example":false}},"required":["name"]}}}}},"delete":{"summary":"Delete bucket","operationId":"storageDeleteBucket","tags":["storage"],"description":"Delete a storage bucket by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteBucket","weight":189,"cookies":false,"type":"","demo":"storage\/delete-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"bucketId","description":"Bucket unique ID.","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files":{"get":{"summary":"List files","operationId":"storageListFiles","tags":["storage"],"description":"Get a list of all the user files. You can use the query params to filter your results.","responses":{"200":{"description":"Files List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/fileList"}}}}},"x-appwrite":{"method":"listFiles","weight":191,"cookies":false,"type":"","demo":"storage\/list-files.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/list-files.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create file","operationId":"storageCreateFile","tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"createFile","weight":190,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"}],"requestBody":{"content":{"multipart\/form-data":{"schema":{"type":"object","properties":{"fileId":{"type":"string","description":"File ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[FILE_ID]","x-upload-id":true},"file":{"type":"string","description":"Binary file. Appwrite SDKs provide helpers to handle file input. [Learn about file input](https:\/\/appwrite.io\/docs\/storage#file-input).","x-example":null},"permissions":{"type":"array","description":"An array of permission strings. By default, only the current user is granted all permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["fileId","file"]}}}}}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get file","operationId":"storageGetFile","tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"getFile","weight":192,"cookies":false,"type":"","demo":"storage\/get-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File ID.","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"}]},"put":{"summary":"Update file","operationId":"storageUpdateFile","tags":["storage"],"description":"Update a file by its unique ID. Only users with write permissions have access to update this resource.","responses":{"200":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"updateFile","weight":196,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File unique ID.","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Name of the file","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission string. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":197,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File ID.","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/download":{"get":{"summary":"Get file for download","operationId":"storageGetFileDownload","tags":["storage"],"description":"Get a file content by its unique ID. The endpoint response return with a 'Content-Disposition: attachment' header that tells the browser to start downloading the file to user downloads directory.","responses":{"200":{"description":"File"}},"x-appwrite":{"method":"getFileDownload","weight":194,"cookies":false,"type":"location","demo":"storage\/get-file-download.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-download.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File ID.","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/preview":{"get":{"summary":"Get file preview","operationId":"storageGetFilePreview","tags":["storage"],"description":"Get a file preview image. Currently, this method supports preview for image files (jpg, png, and gif), other supported formats, like pdf, docs, slides, and spreadsheets, will return the file icon image. You can also pass query string arguments for cutting and resizing your preview image. Preview is supported only for image files smaller than 10MB.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFilePreview","weight":193,"cookies":false,"type":"location","demo":"storage\/get-file-preview.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-preview.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File ID","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"},{"name":"width","description":"Resize preview image width, Pass an integer between 0 to 4000.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 4000.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"gravity","description":"Image crop gravity. Can be one of center,top-left,top,top-right,left,right,bottom-left,bottom,bottom-right","required":false,"schema":{"type":"string","x-example":"center","enum":["center","top-left","top","top-right","left","right","bottom-left","bottom","bottom-right"],"x-enum-name":"ImageGravity","x-enum-keys":[],"default":"center"},"in":"query"},{"name":"quality","description":"Preview image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"borderWidth","description":"Preview image border in pixels. Pass an integer between 0 to 100. Defaults to 0.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"borderColor","description":"Preview image border color. Use a valid HEX color, no # is needed for prefix.","required":false,"schema":{"type":"string","default":""},"in":"query"},{"name":"borderRadius","description":"Preview image border radius in pixels. Pass an integer between 0 to 4000.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"opacity","description":"Preview image opacity. Only works with images having an alpha channel (like png). Pass a number between 0 to 1.","required":false,"schema":{"type":"number","format":"float","x-example":0,"default":1},"in":"query"},{"name":"rotation","description":"Preview image rotation in degrees. Pass an integer between -360 and 360.","required":false,"schema":{"type":"integer","format":"int32","x-example":-360,"default":0},"in":"query"},{"name":"background","description":"Preview image background color. Only works with transparent images (png). Use a valid HEX color, no # is needed for prefix.","required":false,"schema":{"type":"string","default":""},"in":"query"},{"name":"output","description":"Output format type (jpeg, jpg, png, gif and webp).","required":false,"schema":{"type":"string","x-example":"jpg","enum":["jpg","jpeg","gif","png","webp"],"x-enum-name":"ImageFormat","x-enum-keys":[],"default":""},"in":"query"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/view":{"get":{"summary":"Get file for view","operationId":"storageGetFileView","tags":["storage"],"description":"Get a file content by its unique ID. This endpoint is similar to the download method but returns with no 'Content-Disposition: attachment' header.","responses":{"200":{"description":"File"}},"x-appwrite":{"method":"getFileView","weight":195,"cookies":false,"type":"location","demo":"storage\/get-file-view.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-view.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File ID.","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"}]}},"\/storage\/usage":{"get":{"summary":"Get usage stats for storage","operationId":"storageGetUsage","tags":["storage"],"description":"","responses":{"200":{"description":"StorageUsage","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageStorage"}}}}},"x-appwrite":{"method":"getUsage","weight":198,"cookies":false,"type":"","demo":"storage\/get-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"schema":{"type":"string","x-example":"24h","enum":["24h","30d","90d"],"x-enum-name":"StorageUsageRange","x-enum-keys":["Twenty Four Hours","Thirty Days","Ninety Days"],"default":"30d"},"in":"query"}]}},"\/storage\/{bucketId}\/usage":{"get":{"summary":"Get usage stats for storage bucket","operationId":"storageGetBucketUsage","tags":["storage"],"description":"","responses":{"200":{"description":"UsageBuckets","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageBuckets"}}}}},"x-appwrite":{"method":"getBucketUsage","weight":199,"cookies":false,"type":"","demo":"storage\/get-bucket-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"bucketId","description":"Bucket ID.","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"range","description":"Date range.","required":false,"schema":{"type":"string","x-example":"24h","enum":["24h","30d","90d"],"x-enum-name":"StorageUsageRange","x-enum-keys":["Twenty Four Hours","Thirty Days","Ninety Days"],"default":"30d"},"in":"query"}]}},"\/teams":{"get":{"summary":"List teams","operationId":"teamsList","tags":["teams"],"description":"Get a list of all the teams in which the current user is a member. You can use the parameters to filter your results.","responses":{"200":{"description":"Teams List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/teamList"}}}}},"x-appwrite":{"method":"list","weight":201,"cookies":false,"type":"","demo":"teams\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-teams.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total, billingPlan","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create team","operationId":"teamsCreate","tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"create","weight":200,"cookies":false,"type":"","demo":"teams\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/create-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"teamId":{"type":"string","description":"Team ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[TEAM_ID]"},"name":{"type":"string","description":"Team name. Max length: 128 chars.","x-example":"[NAME]"},"roles":{"type":"array","description":"Array of strings. Use this param to set the roles in the team for the user who created it. The default role is **owner**. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}}}}},"\/teams\/{teamId}":{"get":{"summary":"Get team","operationId":"teamsGet","tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"get","weight":202,"cookies":false,"type":"","demo":"teams\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams","offline-key":"{teamId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}]},"put":{"summary":"Update name","operationId":"teamsUpdateName","tags":["teams"],"description":"Update the team's name by its unique ID.","responses":{"200":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"updateName","weight":204,"cookies":false,"type":"","demo":"teams\/update-name.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-name.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams","offline-key":"{teamId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"New team name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["name"]}}}}},"delete":{"summary":"Delete team","operationId":"teamsDelete","tags":["teams"],"description":"Delete a team using its ID. Only team members with the owner role can delete the team.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":206,"cookies":false,"type":"","demo":"teams\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/delete-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}]}},"\/teams\/{teamId}\/logs":{"get":{"summary":"List team logs","operationId":"teamsListLogs","tags":["teams"],"description":"Get the team activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listLogs","weight":213,"cookies":false,"type":"","demo":"teams\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/teams\/{teamId}\/memberships":{"get":{"summary":"List team memberships","operationId":"teamsListMemberships","tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"listMemberships","weight":208,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/memberships","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create team membership","operationId":"teamsCreateMembership","tags":["teams"],"description":"Invite a new member to join your team. Provide an ID for existing users, or invite unregistered users using an email or phone number. If initiated from a Client SDK, Appwrite will send an email or sms with a link to join the team to the invited user, and an account will be created for them if one doesn't exist. If initiated from a Server SDK, the new member will be added automatically to the team.\n\nYou only need to provide one of a user ID, email, or phone number. Appwrite will prioritize accepting the user ID > email > phone number if you provide more than one of these parameters.\n\nUse the `url` parameter to redirect the user from the invitation email to your app. After the user is redirected, use the [Update Team Membership Status](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/teams#updateMembershipStatus) endpoint to allow the user to accept the invitation to the team. \n\nPlease note that to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) Appwrite will accept the only redirect URLs under the domains you have added as a platform on the Appwrite Console.\n","responses":{"201":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"createMembership","weight":207,"cookies":false,"type":"","demo":"teams\/create-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/create-team-membership.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"email":{"type":"string","description":"Email of the new team member.","x-example":"email@example.com"},"userId":{"type":"string","description":"ID of the user to be added to a team.","x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"roles":{"type":"array","description":"Array of strings. Use this param to set the user roles in the team. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"},"name":{"type":"string","description":"Name of the new team member. Max length: 128 chars.","x-example":"[NAME]"}},"required":["roles"]}}}}}},"\/teams\/{teamId}\/memberships\/{membershipId}":{"get":{"summary":"Get team membership","operationId":"teamsGetMembership","tags":["teams"],"description":"Get a team member by the membership unique id. All team members have read access for this resource.","responses":{"200":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"getMembership","weight":209,"cookies":false,"type":"","demo":"teams\/get-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-member.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/memberships","offline-key":"{membershipId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"schema":{"type":"string","x-example":"[MEMBERSHIP_ID]"},"in":"path"}]},"patch":{"summary":"Update membership","operationId":"teamsUpdateMembership","tags":["teams"],"description":"Modify the roles of a team member. Only team members with the owner role have access to this endpoint. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions).\n","responses":{"200":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"updateMembership","weight":210,"cookies":false,"type":"","demo":"teams\/update-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"schema":{"type":"string","x-example":"[MEMBERSHIP_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"roles":{"type":"array","description":"An array of strings. Use this param to set the user's roles in the team. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["roles"]}}}}},"delete":{"summary":"Delete team membership","operationId":"teamsDeleteMembership","tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":212,"cookies":false,"type":"","demo":"teams\/delete-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/delete-team-membership.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"schema":{"type":"string","x-example":"[MEMBERSHIP_ID]"},"in":"path"}]}},"\/teams\/{teamId}\/memberships\/{membershipId}\/status":{"patch":{"summary":"Update team membership status","operationId":"teamsUpdateMembershipStatus","tags":["teams"],"description":"Use this endpoint to allow a user to accept an invitation to join a team after being redirected back to your app from the invitation email received by the user.\n\nIf the request is successful, a session for the user is automatically created.\n","responses":{"200":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"updateMembershipStatus","weight":211,"cookies":false,"type":"","demo":"teams\/update-membership-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"public","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"schema":{"type":"string","x-example":"[MEMBERSHIP_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Secret key.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/teams\/{teamId}\/prefs":{"get":{"summary":"Get team preferences","operationId":"teamsGetPrefs","tags":["teams"],"description":"Get the team's shared preferences by its unique ID. If a preference doesn't need to be shared by all team members, prefer storing them in [user preferences](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#getPrefs).","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"getPrefs","weight":203,"cookies":false,"type":"","demo":"teams\/get-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/prefs","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}]},"put":{"summary":"Update preferences","operationId":"teamsUpdatePrefs","tags":["teams"],"description":"Update the team's preferences by its unique ID. The object you pass is stored as is and replaces any previous value. The maximum allowed prefs size is 64kB and throws an error if exceeded.","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"updatePrefs","weight":205,"cookies":false,"type":"","demo":"teams\/update-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/prefs","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"prefs":{"type":"object","description":"Prefs key-value JSON object.","x-example":"{}"}},"required":["prefs"]}}}}}},"\/users":{"get":{"summary":"List users","operationId":"usersList","tags":["users"],"description":"Get a list of all the project's users. You can use the query params to filter your results.","responses":{"200":{"description":"Users List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/userList"}}}}},"x-appwrite":{"method":"list","weight":223,"cookies":false,"type":"","demo":"users\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-users.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, email, phone, status, passwordUpdate, registration, emailVerification, phoneVerification","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create user","operationId":"usersCreate","tags":["users"],"description":"Create a new user.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"create","weight":214,"cookies":false,"type":"","demo":"users\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"password":{"type":"string","description":"Plain text user password. Must be at least 8 chars.","x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId"]}}}}}},"\/users\/argon2":{"post":{"summary":"Create user with Argon2 password","operationId":"usersCreateArgon2User","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Argon2](https:\/\/en.wikipedia.org\/wiki\/Argon2) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createArgon2User","weight":217,"cookies":false,"type":"","demo":"users\/create-argon2user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-argon2-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Argon2.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/bcrypt":{"post":{"summary":"Create user with bcrypt password","operationId":"usersCreateBcryptUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Bcrypt](https:\/\/en.wikipedia.org\/wiki\/Bcrypt) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createBcryptUser","weight":215,"cookies":false,"type":"","demo":"users\/create-bcrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-bcrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Bcrypt.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/identities":{"get":{"summary":"List Identities","operationId":"usersListIdentities","tags":["users"],"description":"Get identities for all users.","responses":{"200":{"description":"Identities List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/identityList"}}}}},"x-appwrite":{"method":"listIdentities","weight":231,"cookies":false,"type":"","demo":"users\/list-identities.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-identities.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, provider, providerUid, providerEmail, providerAccessTokenExpiry","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]}},"\/users\/identities\/{identityId}":{"delete":{"summary":"Delete identity","operationId":"usersDeleteIdentity","tags":["users"],"description":"Delete an identity by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIdentity","weight":251,"cookies":false,"type":"","demo":"users\/delete-identity.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-identity.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"identityId","description":"Identity ID.","required":true,"schema":{"type":"string","x-example":"[IDENTITY_ID]"},"in":"path"}]}},"\/users\/md5":{"post":{"summary":"Create user with MD5 password","operationId":"usersCreateMD5User","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [MD5](https:\/\/en.wikipedia.org\/wiki\/MD5) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createMD5User","weight":216,"cookies":false,"type":"","demo":"users\/create-m-d5user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-md5-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using MD5.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/phpass":{"post":{"summary":"Create user with PHPass password","operationId":"usersCreatePHPassUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [PHPass](https:\/\/www.openwall.com\/phpass\/) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createPHPassUser","weight":219,"cookies":false,"type":"","demo":"users\/create-p-h-pass-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-phpass-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or pass the string `ID.unique()`to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using PHPass.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/scrypt":{"post":{"summary":"Create user with Scrypt password","operationId":"usersCreateScryptUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt](https:\/\/github.com\/Tarsnap\/scrypt) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createScryptUser","weight":220,"cookies":false,"type":"","demo":"users\/create-scrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt.","x-example":"password"},"passwordSalt":{"type":"string","description":"Optional salt used to hash password.","x-example":"[PASSWORD_SALT]"},"passwordCpu":{"type":"integer","description":"Optional CPU cost used to hash password.","x-example":null},"passwordMemory":{"type":"integer","description":"Optional memory cost used to hash password.","x-example":null},"passwordParallel":{"type":"integer","description":"Optional parallelization cost used to hash password.","x-example":null},"passwordLength":{"type":"integer","description":"Optional hash length used to hash password.","x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordCpu","passwordMemory","passwordParallel","passwordLength"]}}}}}},"\/users\/scrypt-modified":{"post":{"summary":"Create user with Scrypt modified password","operationId":"usersCreateScryptModifiedUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt Modified](https:\/\/gist.github.com\/Meldiron\/eecf84a0225eccb5a378d45bb27462cc) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createScryptModifiedUser","weight":221,"cookies":false,"type":"","demo":"users\/create-scrypt-modified-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-modified-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt Modified.","x-example":"password"},"passwordSalt":{"type":"string","description":"Salt used to hash password.","x-example":"[PASSWORD_SALT]"},"passwordSaltSeparator":{"type":"string","description":"Salt separator used to hash password.","x-example":"[PASSWORD_SALT_SEPARATOR]"},"passwordSignerKey":{"type":"string","description":"Signer key used to hash password.","x-example":"[PASSWORD_SIGNER_KEY]"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordSaltSeparator","passwordSignerKey"]}}}}}},"\/users\/sha":{"post":{"summary":"Create user with SHA password","operationId":"usersCreateSHAUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [SHA](https:\/\/en.wikipedia.org\/wiki\/Secure_Hash_Algorithm) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createSHAUser","weight":218,"cookies":false,"type":"","demo":"users\/create-s-h-a-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-sha-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using SHA.","x-example":"password"},"passwordVersion":{"type":"string","description":"Optional SHA version used to hash password. Allowed values are: 'sha1', 'sha224', 'sha256', 'sha384', 'sha512\/224', 'sha512\/256', 'sha512', 'sha3-224', 'sha3-256', 'sha3-384', 'sha3-512'","x-example":"sha1","enum":["sha1","sha224","sha256","sha384","sha512\/224","sha512\/256","sha512","sha3-224","sha3-256","sha3-384","sha3-512"],"x-enum-name":"PasswordHash","x-enum-keys":[]},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/usage":{"get":{"summary":"Get usage stats for the users API","operationId":"usersGetUsage","tags":["users"],"description":"","responses":{"200":{"description":"UsageUsers","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageUsers"}}}}},"x-appwrite":{"method":"getUsage","weight":252,"cookies":false,"type":"","demo":"users\/get-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"schema":{"type":"string","x-example":"24h","enum":["24h","30d","90d"],"x-enum-name":"UserUsageRange","x-enum-keys":["Twenty Four Hours","Thirty Days","Ninety Days"],"default":"30d"},"in":"query"}]}},"\/users\/{userId}":{"get":{"summary":"Get user","operationId":"usersGet","tags":["users"],"description":"Get a user by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"get","weight":224,"cookies":false,"type":"","demo":"users\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]},"delete":{"summary":"Delete user","operationId":"usersDelete","tags":["users"],"description":"Delete a user by its unique ID, thereby releasing it's ID. Since ID is released and can be reused, all user-related resources like documents or storage files should be deleted before user deletion. If you want to keep ID reserved, use the [updateStatus](https:\/\/appwrite.io\/docs\/server\/users#usersUpdateStatus) endpoint instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":249,"cookies":false,"type":"","demo":"users\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]}},"\/users\/{userId}\/email":{"patch":{"summary":"Update email","operationId":"usersUpdateEmail","tags":["users"],"description":"Update the user email by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateEmail","weight":237,"cookies":false,"type":"","demo":"users\/update-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","x-example":"email@example.com"}},"required":["email"]}}}}}},"\/users\/{userId}\/labels":{"put":{"summary":"Update user labels","operationId":"usersUpdateLabels","tags":["users"],"description":"Update the user labels by its unique ID. \n\nLabels can be used to grant access to resources. While teams are a way for user's to share access to a resource, labels can be defined by the developer to grant access without an invitation. See the [Permissions docs](https:\/\/appwrite.io\/docs\/permissions) for more info.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateLabels","weight":233,"cookies":false,"type":"","demo":"users\/update-labels.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-labels.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"labels":{"type":"array","description":"Array of user labels. Replaces the previous labels. Maximum of 1000 labels are allowed, each up to 36 alphanumeric characters long.","x-example":null,"items":{"type":"string"}}},"required":["labels"]}}}}}},"\/users\/{userId}\/logs":{"get":{"summary":"List user logs","operationId":"usersListLogs","tags":["users"],"description":"Get the user activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listLogs","weight":229,"cookies":false,"type":"","demo":"users\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/users\/{userId}\/memberships":{"get":{"summary":"List user memberships","operationId":"usersListMemberships","tags":["users"],"description":"Get the user membership list by its unique ID.","responses":{"200":{"description":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"listMemberships","weight":228,"cookies":false,"type":"","demo":"users\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-memberships.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]}},"\/users\/{userId}\/mfa":{"patch":{"summary":"Update MFA","operationId":"usersUpdateMfa","tags":["users"],"description":"","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateMfa","weight":242,"cookies":false,"type":"","demo":"users\/update-mfa.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-mfa.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"mfa":{"type":"boolean","description":"Enable or disable MFA.","x-example":false}},"required":["mfa"]}}}}}},"\/users\/{userId}\/mfa\/{provider}":{"delete":{"summary":"Delete Authenticator","operationId":"usersDeleteAuthenticator","tags":["users"],"description":"","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"deleteAuthenticator","weight":244,"cookies":false,"type":"","demo":"users\/delete-authenticator.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-mfa.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"provider","description":"Provider.","required":true,"schema":{"type":"string","x-example":"totp","enum":["totp"],"x-enum-name":"AuthenticatorProvider","x-enum-keys":[]},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"otp":{"type":"string","description":"Valid verification token.","x-example":"[OTP]"}},"required":["otp"]}}}}}},"\/users\/{userId}\/name":{"patch":{"summary":"Update name","operationId":"usersUpdateName","tags":["users"],"description":"Update the user name by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateName","weight":235,"cookies":false,"type":"","demo":"users\/update-name.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-name.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["name"]}}}}}},"\/users\/{userId}\/password":{"patch":{"summary":"Update password","operationId":"usersUpdatePassword","tags":["users"],"description":"Update the user password by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePassword","weight":236,"cookies":false,"type":"","demo":"users\/update-password.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-password.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"password":{"type":"string","description":"New user password. Must be at least 8 chars.","x-example":null}},"required":["password"]}}}}}},"\/users\/{userId}\/phone":{"patch":{"summary":"Update phone","operationId":"usersUpdatePhone","tags":["users"],"description":"Update the user phone by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePhone","weight":238,"cookies":false,"type":"","demo":"users\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"number":{"type":"string","description":"User phone number.","x-example":"+12065550100"}},"required":["number"]}}}}}},"\/users\/{userId}\/prefs":{"get":{"summary":"Get user preferences","operationId":"usersGetPrefs","tags":["users"],"description":"Get the user preferences by its unique ID.","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"getPrefs","weight":225,"cookies":false,"type":"","demo":"users\/get-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]},"patch":{"summary":"Update user preferences","operationId":"usersUpdatePrefs","tags":["users"],"description":"Update the user preferences by its unique ID. The object you pass is stored as is, and replaces any previous value. The maximum allowed prefs size is 64kB and throws error if exceeded.","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"updatePrefs","weight":240,"cookies":false,"type":"","demo":"users\/update-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"prefs":{"type":"object","description":"Prefs key-value JSON object.","x-example":"{}"}},"required":["prefs"]}}}}}},"\/users\/{userId}\/providers":{"get":{"summary":"List Providers","operationId":"usersListProviders","tags":["users"],"description":"","responses":{"200":{"description":"MFAProviders","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/mfaProviders"}}}}},"x-appwrite":{"method":"listProviders","weight":243,"cookies":false,"type":"","demo":"users\/list-providers.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-providers.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]}},"\/users\/{userId}\/sessions":{"get":{"summary":"List user sessions","operationId":"usersListSessions","tags":["users"],"description":"Get the user sessions list by its unique ID.","responses":{"200":{"description":"Sessions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/sessionList"}}}}},"x-appwrite":{"method":"listSessions","weight":227,"cookies":false,"type":"","demo":"users\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]},"post":{"summary":"Create session","operationId":"usersCreateSession","tags":["users"],"description":"Creates a session for a user. Returns an immediately usable session object.\n\nIf you want to generate a token for a custom authentication flow, use the [POST \/users\/{userId}\/tokens](https:\/\/appwrite.io\/docs\/server\/users#createToken) endpoint.","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"createSession","weight":245,"cookies":false,"type":"","demo":"users\/create-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-session.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]},"delete":{"summary":"Delete user sessions","operationId":"usersDeleteSessions","tags":["users"],"description":"Delete all user's sessions by using the user's unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":248,"cookies":false,"type":"","demo":"users\/delete-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]}},"\/users\/{userId}\/sessions\/{sessionId}":{"delete":{"summary":"Delete user session","operationId":"usersDeleteSession","tags":["users"],"description":"Delete a user sessions by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSession","weight":247,"cookies":false,"type":"","demo":"users\/delete-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-user-session.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"sessionId","description":"Session ID.","required":true,"schema":{"type":"string","x-example":"[SESSION_ID]"},"in":"path"}]}},"\/users\/{userId}\/status":{"patch":{"summary":"Update user status","operationId":"usersUpdateStatus","tags":["users"],"description":"Update the user status by its unique ID. Use this endpoint as an alternative to deleting a user if you want to keep user's ID reserved.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateStatus","weight":232,"cookies":false,"type":"","demo":"users\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"status":{"type":"boolean","description":"User Status. To activate the user pass `true` and to block the user pass `false`.","x-example":false}},"required":["status"]}}}}}},"\/users\/{userId}\/targets":{"get":{"summary":"List User Targets","operationId":"usersListTargets","tags":["users"],"description":"","responses":{"200":{"description":"Target list","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/targetList"}}}}},"x-appwrite":{"method":"listTargets","weight":230,"cookies":false,"type":"","demo":"users\/list-targets.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-targets.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.read","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, email, phone, status, passwordUpdate, registration, emailVerification, phoneVerification","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"post":{"summary":"Create User Target","operationId":"usersCreateTarget","tags":["users"],"description":"","responses":{"201":{"description":"Target","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/target"}}}}},"x-appwrite":{"method":"createTarget","weight":222,"cookies":false,"type":"","demo":"users\/create-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-target.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"targetId":{"type":"string","description":"Target ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[TARGET_ID]"},"providerType":{"type":"string","description":"The target provider type. Can be one of the following: `email`, `sms` or `push`.","x-example":"email","enum":["email","sms","push"],"x-enum-name":"MessagingProviderType","x-enum-keys":[]},"identifier":{"type":"string","description":"The target identifier (token, email, phone etc.)","x-example":"[IDENTIFIER]"},"providerId":{"type":"string","description":"Provider ID. Message will be sent to this target from the specified provider ID. If no provider ID is set the first setup provider will be used.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Target name. Max length: 128 chars. For example: My Awesome App Galaxy S23.","x-example":"[NAME]"}},"required":["targetId","providerType","identifier"]}}}}}},"\/users\/{userId}\/targets\/{targetId}":{"get":{"summary":"Get User Target","operationId":"usersGetTarget","tags":["users"],"description":"","responses":{"200":{"description":"Target","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/target"}}}}},"x-appwrite":{"method":"getTarget","weight":226,"cookies":false,"type":"","demo":"users\/get-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-target.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.read","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"targetId","description":"Target ID.","required":true,"schema":{"type":"string","x-example":"[TARGET_ID]"},"in":"path"}]},"patch":{"summary":"Update User target","operationId":"usersUpdateTarget","tags":["users"],"description":"","responses":{"200":{"description":"Target","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/target"}}}}},"x-appwrite":{"method":"updateTarget","weight":241,"cookies":false,"type":"","demo":"users\/update-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-target.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"targetId","description":"Target ID.","required":true,"schema":{"type":"string","x-example":"[TARGET_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"identifier":{"type":"string","description":"The target identifier (token, email, phone etc.)","x-example":"[IDENTIFIER]"},"providerId":{"type":"string","description":"Provider ID. Message will be sent to this target from the specified provider ID. If no provider ID is set the first setup provider will be used.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Target name. Max length: 128 chars. For example: My Awesome App Galaxy S23.","x-example":"[NAME]"}}}}}}},"delete":{"summary":"Delete user target","operationId":"usersDeleteTarget","tags":["users"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteTarget","weight":250,"cookies":false,"type":"","demo":"users\/delete-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-target.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"targetId","description":"Target ID.","required":true,"schema":{"type":"string","x-example":"[TARGET_ID]"},"in":"path"}]}},"\/users\/{userId}\/tokens":{"post":{"summary":"Create token","operationId":"usersCreateToken","tags":["users"],"description":"Returns a token with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [PUT \/account\/sessions\/custom](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateCustomSession) endpoint to complete the login process.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createToken","weight":246,"cookies":false,"type":"","demo":"users\/create-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-token.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"length":{"type":"integer","description":"Token length in characters. The default length is 6 characters","x-example":4},"expire":{"type":"integer","description":"Token expiration period in seconds. The default expiration is 15 minutes.","x-example":60}}}}}}}},"\/users\/{userId}\/verification":{"patch":{"summary":"Update email verification","operationId":"usersUpdateEmailVerification","tags":["users"],"description":"Update the user email verification status by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateEmailVerification","weight":239,"cookies":false,"type":"","demo":"users\/update-email-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-email-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"emailVerification":{"type":"boolean","description":"User email verification status.","x-example":false}},"required":["emailVerification"]}}}}}},"\/users\/{userId}\/verification\/phone":{"patch":{"summary":"Update phone verification","operationId":"usersUpdatePhoneVerification","tags":["users"],"description":"Update the user phone verification status by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePhoneVerification","weight":234,"cookies":false,"type":"","demo":"users\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"phoneVerification":{"type":"boolean","description":"User phone verification status.","x-example":false}},"required":["phoneVerification"]}}}}}},"\/vcs\/github\/installations\/{installationId}\/providerRepositories":{"get":{"summary":"List Repositories","operationId":"vcsListRepositories","tags":["vcs"],"description":"","responses":{"200":{"description":"Provider Repositories List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/providerRepositoryList"}}}}},"x-appwrite":{"method":"listRepositories","weight":256,"cookies":false,"type":"","demo":"vcs\/list-repositories.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"schema":{"type":"string","x-example":"[INSTALLATION_ID]"},"in":"path"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create repository","operationId":"vcsCreateRepository","tags":["vcs"],"description":"","responses":{"200":{"description":"ProviderRepository","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/providerRepository"}}}}},"x-appwrite":{"method":"createRepository","weight":257,"cookies":false,"type":"","demo":"vcs\/create-repository.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"schema":{"type":"string","x-example":"[INSTALLATION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Repository name (slug)","x-example":"[NAME]"},"private":{"type":"boolean","description":"Mark repository public or private","x-example":false}},"required":["name","private"]}}}}}},"\/vcs\/github\/installations\/{installationId}\/providerRepositories\/{providerRepositoryId}":{"get":{"summary":"Get repository","operationId":"vcsGetRepository","tags":["vcs"],"description":"","responses":{"200":{"description":"ProviderRepository","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/providerRepository"}}}}},"x-appwrite":{"method":"getRepository","weight":258,"cookies":false,"type":"","demo":"vcs\/get-repository.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"schema":{"type":"string","x-example":"[INSTALLATION_ID]"},"in":"path"},{"name":"providerRepositoryId","description":"Repository Id","required":true,"schema":{"type":"string","x-example":"[PROVIDER_REPOSITORY_ID]"},"in":"path"}]}},"\/vcs\/github\/installations\/{installationId}\/providerRepositories\/{providerRepositoryId}\/branches":{"get":{"summary":"List Repository Branches","operationId":"vcsListRepositoryBranches","tags":["vcs"],"description":"","responses":{"200":{"description":"Branches List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/branchList"}}}}},"x-appwrite":{"method":"listRepositoryBranches","weight":259,"cookies":false,"type":"","demo":"vcs\/list-repository-branches.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"schema":{"type":"string","x-example":"[INSTALLATION_ID]"},"in":"path"},{"name":"providerRepositoryId","description":"Repository Id","required":true,"schema":{"type":"string","x-example":"[PROVIDER_REPOSITORY_ID]"},"in":"path"}]}},"\/vcs\/github\/installations\/{installationId}\/providerRepositories\/{providerRepositoryId}\/detection":{"post":{"summary":"Detect runtime settings from source code","operationId":"vcsCreateRepositoryDetection","tags":["vcs"],"description":"","responses":{"200":{"description":"Detection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/detection"}}}}},"x-appwrite":{"method":"createRepositoryDetection","weight":255,"cookies":false,"type":"","demo":"vcs\/create-repository-detection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"schema":{"type":"string","x-example":"[INSTALLATION_ID]"},"in":"path"},{"name":"providerRepositoryId","description":"Repository Id","required":true,"schema":{"type":"string","x-example":"[PROVIDER_REPOSITORY_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerRootDirectory":{"type":"string","description":"Path to Root Directory","x-example":"[PROVIDER_ROOT_DIRECTORY]"}}}}}}}},"\/vcs\/github\/installations\/{installationId}\/repositories\/{repositoryId}":{"patch":{"summary":"Authorize external deployment","operationId":"vcsUpdateExternalDeployments","tags":["vcs"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"updateExternalDeployments","weight":264,"cookies":false,"type":"","demo":"vcs\/update-external-deployments.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"schema":{"type":"string","x-example":"[INSTALLATION_ID]"},"in":"path"},{"name":"repositoryId","description":"VCS Repository Id","required":true,"schema":{"type":"string","x-example":"[REPOSITORY_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerPullRequestId":{"type":"string","description":"GitHub Pull Request Id","x-example":"[PROVIDER_PULL_REQUEST_ID]"}},"required":["providerPullRequestId"]}}}}}},"\/vcs\/installations":{"get":{"summary":"List installations","operationId":"vcsListInstallations","tags":["vcs"],"description":"","responses":{"200":{"description":"Installations List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/installationList"}}}}},"x-appwrite":{"method":"listInstallations","weight":261,"cookies":false,"type":"","demo":"vcs\/list-installations.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/vcs\/list-installations.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: provider, organization","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]}},"\/vcs\/installations\/{installationId}":{"get":{"summary":"Get installation","operationId":"vcsGetInstallation","tags":["vcs"],"description":"","responses":{"200":{"description":"Installation","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/installation"}}}}},"x-appwrite":{"method":"getInstallation","weight":262,"cookies":false,"type":"","demo":"vcs\/get-installation.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/vcs\/get-installation.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"schema":{"type":"string","x-example":"[INSTALLATION_ID]"},"in":"path"}]},"delete":{"summary":"Delete Installation","operationId":"vcsDeleteInstallation","tags":["vcs"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteInstallation","weight":263,"cookies":false,"type":"","demo":"vcs\/delete-installation.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/vcs\/delete-installation.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"schema":{"type":"string","x-example":"[INSTALLATION_ID]"},"in":"path"}]}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"project","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]},{"name":"proxy","description":"The Proxy Service allows you to configure actions for your domains beyond DNS configuration.","x-globalAttributes":[]},{"name":"graphql","description":"The GraphQL API allows you to query and mutate your Appwrite server using GraphQL.","x-globalAttributes":[]},{"name":"console","description":"The Console service allows you to interact with console relevant informations.","x-globalAttributes":[]},{"name":"migrations","description":"The Migrations service allows you to migrate third-party data to your Appwrite project.","x-globalAttributes":[]},{"name":"messaging","description":"The Messaging service allows you to send messages to any provider type (SMTP, push notification, SMS, etc.).","x-globalAttributes":[]}],"components":{"schemas":{"any":{"description":"Any","type":"object","additionalProperties":true},"error":{"description":"Error","type":"object","properties":{"message":{"type":"string","description":"Error message.","x-example":"Not found"},"code":{"type":"string","description":"Error code.","x-example":"404"},"type":{"type":"string","description":"Error type. You can learn more about all the error types at https:\/\/appwrite.io\/docs\/error-codes#errorTypes","x-example":"not_found"},"version":{"type":"string","description":"Server version number.","x-example":"1.0"}},"required":["message","code","type","version"]},"documentList":{"description":"Documents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of documents documents that matched your query.","x-example":5,"format":"int32"},"documents":{"type":"array","description":"List of documents.","items":{"$ref":"#\/components\/schemas\/document"},"x-example":""}},"required":["total","documents"]},"collectionList":{"description":"Collections List","type":"object","properties":{"total":{"type":"integer","description":"Total number of collections documents that matched your query.","x-example":5,"format":"int32"},"collections":{"type":"array","description":"List of collections.","items":{"$ref":"#\/components\/schemas\/collection"},"x-example":""}},"required":["total","collections"]},"databaseList":{"description":"Databases List","type":"object","properties":{"total":{"type":"integer","description":"Total number of databases documents that matched your query.","x-example":5,"format":"int32"},"databases":{"type":"array","description":"List of databases.","items":{"$ref":"#\/components\/schemas\/database"},"x-example":""}},"required":["total","databases"]},"indexList":{"description":"Indexes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of indexes documents that matched your query.","x-example":5,"format":"int32"},"indexes":{"type":"array","description":"List of indexes.","items":{"$ref":"#\/components\/schemas\/index"},"x-example":""}},"required":["total","indexes"]},"userList":{"description":"Users List","type":"object","properties":{"total":{"type":"integer","description":"Total number of users documents that matched your query.","x-example":5,"format":"int32"},"users":{"type":"array","description":"List of users.","items":{"$ref":"#\/components\/schemas\/user"},"x-example":""}},"required":["total","users"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of sessions documents that matched your query.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"$ref":"#\/components\/schemas\/session"},"x-example":""}},"required":["total","sessions"]},"identityList":{"description":"Identities List","type":"object","properties":{"total":{"type":"integer","description":"Total number of identities documents that matched your query.","x-example":5,"format":"int32"},"identities":{"type":"array","description":"List of identities.","items":{"$ref":"#\/components\/schemas\/identity"},"x-example":""}},"required":["total","identities"]},"logList":{"description":"Logs List","type":"object","properties":{"total":{"type":"integer","description":"Total number of logs documents that matched your query.","x-example":5,"format":"int32"},"logs":{"type":"array","description":"List of logs.","items":{"$ref":"#\/components\/schemas\/log"},"x-example":""}},"required":["total","logs"]},"fileList":{"description":"Files List","type":"object","properties":{"total":{"type":"integer","description":"Total number of files documents that matched your query.","x-example":5,"format":"int32"},"files":{"type":"array","description":"List of files.","items":{"$ref":"#\/components\/schemas\/file"},"x-example":""}},"required":["total","files"]},"bucketList":{"description":"Buckets List","type":"object","properties":{"total":{"type":"integer","description":"Total number of buckets documents that matched your query.","x-example":5,"format":"int32"},"buckets":{"type":"array","description":"List of buckets.","items":{"$ref":"#\/components\/schemas\/bucket"},"x-example":""}},"required":["total","buckets"]},"teamList":{"description":"Teams List","type":"object","properties":{"total":{"type":"integer","description":"Total number of teams documents that matched your query.","x-example":5,"format":"int32"},"teams":{"type":"array","description":"List of teams.","items":{"$ref":"#\/components\/schemas\/team"},"x-example":""}},"required":["total","teams"]},"membershipList":{"description":"Memberships List","type":"object","properties":{"total":{"type":"integer","description":"Total number of memberships documents that matched your query.","x-example":5,"format":"int32"},"memberships":{"type":"array","description":"List of memberships.","items":{"$ref":"#\/components\/schemas\/membership"},"x-example":""}},"required":["total","memberships"]},"functionList":{"description":"Functions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of functions documents that matched your query.","x-example":5,"format":"int32"},"functions":{"type":"array","description":"List of functions.","items":{"$ref":"#\/components\/schemas\/function"},"x-example":""}},"required":["total","functions"]},"installationList":{"description":"Installations List","type":"object","properties":{"total":{"type":"integer","description":"Total number of installations documents that matched your query.","x-example":5,"format":"int32"},"installations":{"type":"array","description":"List of installations.","items":{"$ref":"#\/components\/schemas\/installation"},"x-example":""}},"required":["total","installations"]},"providerRepositoryList":{"description":"Provider Repositories List","type":"object","properties":{"total":{"type":"integer","description":"Total number of providerRepositories documents that matched your query.","x-example":5,"format":"int32"},"providerRepositories":{"type":"array","description":"List of providerRepositories.","items":{"$ref":"#\/components\/schemas\/providerRepository"},"x-example":""}},"required":["total","providerRepositories"]},"branchList":{"description":"Branches List","type":"object","properties":{"total":{"type":"integer","description":"Total number of branches documents that matched your query.","x-example":5,"format":"int32"},"branches":{"type":"array","description":"List of branches.","items":{"$ref":"#\/components\/schemas\/branch"},"x-example":""}},"required":["total","branches"]},"runtimeList":{"description":"Runtimes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of runtimes documents that matched your query.","x-example":5,"format":"int32"},"runtimes":{"type":"array","description":"List of runtimes.","items":{"$ref":"#\/components\/schemas\/runtime"},"x-example":""}},"required":["total","runtimes"]},"deploymentList":{"description":"Deployments List","type":"object","properties":{"total":{"type":"integer","description":"Total number of deployments documents that matched your query.","x-example":5,"format":"int32"},"deployments":{"type":"array","description":"List of deployments.","items":{"$ref":"#\/components\/schemas\/deployment"},"x-example":""}},"required":["total","deployments"]},"executionList":{"description":"Executions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of executions documents that matched your query.","x-example":5,"format":"int32"},"executions":{"type":"array","description":"List of executions.","items":{"$ref":"#\/components\/schemas\/execution"},"x-example":""}},"required":["total","executions"]},"projectList":{"description":"Projects List","type":"object","properties":{"total":{"type":"integer","description":"Total number of projects documents that matched your query.","x-example":5,"format":"int32"},"projects":{"type":"array","description":"List of projects.","items":{"$ref":"#\/components\/schemas\/project"},"x-example":""}},"required":["total","projects"]},"webhookList":{"description":"Webhooks List","type":"object","properties":{"total":{"type":"integer","description":"Total number of webhooks documents that matched your query.","x-example":5,"format":"int32"},"webhooks":{"type":"array","description":"List of webhooks.","items":{"$ref":"#\/components\/schemas\/webhook"},"x-example":""}},"required":["total","webhooks"]},"keyList":{"description":"API Keys List","type":"object","properties":{"total":{"type":"integer","description":"Total number of keys documents that matched your query.","x-example":5,"format":"int32"},"keys":{"type":"array","description":"List of keys.","items":{"$ref":"#\/components\/schemas\/key"},"x-example":""}},"required":["total","keys"]},"platformList":{"description":"Platforms List","type":"object","properties":{"total":{"type":"integer","description":"Total number of platforms documents that matched your query.","x-example":5,"format":"int32"},"platforms":{"type":"array","description":"List of platforms.","items":{"$ref":"#\/components\/schemas\/platform"},"x-example":""}},"required":["total","platforms"]},"countryList":{"description":"Countries List","type":"object","properties":{"total":{"type":"integer","description":"Total number of countries documents that matched your query.","x-example":5,"format":"int32"},"countries":{"type":"array","description":"List of countries.","items":{"$ref":"#\/components\/schemas\/country"},"x-example":""}},"required":["total","countries"]},"continentList":{"description":"Continents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of continents documents that matched your query.","x-example":5,"format":"int32"},"continents":{"type":"array","description":"List of continents.","items":{"$ref":"#\/components\/schemas\/continent"},"x-example":""}},"required":["total","continents"]},"languageList":{"description":"Languages List","type":"object","properties":{"total":{"type":"integer","description":"Total number of languages documents that matched your query.","x-example":5,"format":"int32"},"languages":{"type":"array","description":"List of languages.","items":{"$ref":"#\/components\/schemas\/language"},"x-example":""}},"required":["total","languages"]},"currencyList":{"description":"Currencies List","type":"object","properties":{"total":{"type":"integer","description":"Total number of currencies documents that matched your query.","x-example":5,"format":"int32"},"currencies":{"type":"array","description":"List of currencies.","items":{"$ref":"#\/components\/schemas\/currency"},"x-example":""}},"required":["total","currencies"]},"phoneList":{"description":"Phones List","type":"object","properties":{"total":{"type":"integer","description":"Total number of phones documents that matched your query.","x-example":5,"format":"int32"},"phones":{"type":"array","description":"List of phones.","items":{"$ref":"#\/components\/schemas\/phone"},"x-example":""}},"required":["total","phones"]},"variableList":{"description":"Variables List","type":"object","properties":{"total":{"type":"integer","description":"Total number of variables documents that matched your query.","x-example":5,"format":"int32"},"variables":{"type":"array","description":"List of variables.","items":{"$ref":"#\/components\/schemas\/variable"},"x-example":""}},"required":["total","variables"]},"proxyRuleList":{"description":"Rule List","type":"object","properties":{"total":{"type":"integer","description":"Total number of rules documents that matched your query.","x-example":5,"format":"int32"},"rules":{"type":"array","description":"List of rules.","items":{"$ref":"#\/components\/schemas\/proxyRule"},"x-example":""}},"required":["total","rules"]},"localeCodeList":{"description":"Locale codes list","type":"object","properties":{"total":{"type":"integer","description":"Total number of localeCodes documents that matched your query.","x-example":5,"format":"int32"},"localeCodes":{"type":"array","description":"List of localeCodes.","items":{"$ref":"#\/components\/schemas\/localeCode"},"x-example":""}},"required":["total","localeCodes"]},"providerList":{"description":"Provider list","type":"object","properties":{"total":{"type":"integer","description":"Total number of providers documents that matched your query.","x-example":5,"format":"int32"},"providers":{"type":"array","description":"List of providers.","items":{"$ref":"#\/components\/schemas\/provider"},"x-example":""}},"required":["total","providers"]},"messageList":{"description":"Message list","type":"object","properties":{"total":{"type":"integer","description":"Total number of messages documents that matched your query.","x-example":5,"format":"int32"},"messages":{"type":"array","description":"List of messages.","items":{"$ref":"#\/components\/schemas\/message"},"x-example":""}},"required":["total","messages"]},"topicList":{"description":"Topic list","type":"object","properties":{"total":{"type":"integer","description":"Total number of topics documents that matched your query.","x-example":5,"format":"int32"},"topics":{"type":"array","description":"List of topics.","items":{"$ref":"#\/components\/schemas\/topic"},"x-example":""}},"required":["total","topics"]},"subscriberList":{"description":"Subscriber list","type":"object","properties":{"total":{"type":"integer","description":"Total number of subscribers documents that matched your query.","x-example":5,"format":"int32"},"subscribers":{"type":"array","description":"List of subscribers.","items":{"$ref":"#\/components\/schemas\/subscriber"},"x-example":""}},"required":["total","subscribers"]},"targetList":{"description":"Target list","type":"object","properties":{"total":{"type":"integer","description":"Total number of targets documents that matched your query.","x-example":5,"format":"int32"},"targets":{"type":"array","description":"List of targets.","items":{"$ref":"#\/components\/schemas\/target"},"x-example":""}},"required":["total","targets"]},"migrationList":{"description":"Migrations List","type":"object","properties":{"total":{"type":"integer","description":"Total number of migrations documents that matched your query.","x-example":5,"format":"int32"},"migrations":{"type":"array","description":"List of migrations.","items":{"$ref":"#\/components\/schemas\/migration"},"x-example":""}},"required":["total","migrations"]},"firebaseProjectList":{"description":"Migrations Firebase Projects List","type":"object","properties":{"total":{"type":"integer","description":"Total number of projects documents that matched your query.","x-example":5,"format":"int32"},"projects":{"type":"array","description":"List of projects.","items":{"$ref":"#\/components\/schemas\/firebaseProject"},"x-example":""}},"required":["total","projects"]},"database":{"description":"Database","type":"object","properties":{"$id":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Database name.","x-example":"My Database"},"$createdAt":{"type":"string","description":"Database creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Database update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"enabled":{"type":"boolean","description":"If database is enabled. Can be 'enabled' or 'disabled'. When disabled, the database is inaccessible to users, but remains accessible to Server SDKs using API keys.","x-example":false}},"required":["$id","name","$createdAt","$updatedAt","enabled"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Collection creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Collection update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Collection permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled. Can be 'enabled' or 'disabled'. When disabled, the collection is inaccessible to users, but remains accessible to Server SDKs using API keys.","x-example":false},"documentSecurity":{"type":"boolean","description":"Whether document-level permissions are enabled. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":true},"attributes":{"type":"array","description":"Collection attributes.","items":{"anyOf":[{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeRelationship"},{"$ref":"#\/components\/schemas\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"$ref":"#\/components\/schemas\/index"},"x-example":{}}},"required":["$id","$createdAt","$updatedAt","$permissions","databaseId","name","enabled","documentSecurity","attributes","indexes"]},"attributeList":{"description":"Attributes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of attributes in the given collection.","x-example":5,"format":"int32"},"attributes":{"type":"array","description":"List of attributes.","items":{"anyOf":[{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeRelationship"},{"$ref":"#\/components\/schemas\/attributeString"}]},"x-example":""}},"required":["total","attributes"]},"attributeString":{"description":"AttributeString","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"fullName"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"size":{"type":"integer","description":"Attribute size.","x-example":128,"format":"int32"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"default","nullable":true}},"required":["key","type","status","error","required","size"]},"attributeInteger":{"description":"AttributeInteger","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"count"},"type":{"type":"string","description":"Attribute type.","x-example":"integer"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"min":{"type":"integer","description":"Minimum value to enforce for new documents.","x-example":1,"format":"int32","nullable":true},"max":{"type":"integer","description":"Maximum value to enforce for new documents.","x-example":10,"format":"int32","nullable":true},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":10,"format":"int32","nullable":true}},"required":["key","type","status","error","required"]},"attributeFloat":{"description":"AttributeFloat","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"percentageCompleted"},"type":{"type":"string","description":"Attribute type.","x-example":"double"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"min":{"type":"number","description":"Minimum value to enforce for new documents.","x-example":1.5,"format":"double","nullable":true},"max":{"type":"number","description":"Maximum value to enforce for new documents.","x-example":10.5,"format":"double","nullable":true},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":2.5,"format":"double","nullable":true}},"required":["key","type","status","error","required"]},"attributeBoolean":{"description":"AttributeBoolean","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"isEnabled"},"type":{"type":"string","description":"Attribute type.","x-example":"boolean"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":false,"nullable":true}},"required":["key","type","status","error","required"]},"attributeEmail":{"description":"AttributeEmail","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"userEmail"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"format":{"type":"string","description":"String format.","x-example":"email"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"default@example.com","nullable":true}},"required":["key","type","status","error","required","format"]},"attributeEnum":{"description":"AttributeEnum","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"status"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"elements":{"type":"array","description":"Array of elements in enumerated type.","items":{"type":"string"},"x-example":"element"},"format":{"type":"string","description":"String format.","x-example":"enum"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"element","nullable":true}},"required":["key","type","status","error","required","elements","format"]},"attributeIp":{"description":"AttributeIP","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"ipAddress"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"format":{"type":"string","description":"String format.","x-example":"ip"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"192.0.2.0","nullable":true}},"required":["key","type","status","error","required","format"]},"attributeUrl":{"description":"AttributeURL","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"githubUrl"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"format":{"type":"string","description":"String format.","x-example":"url"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"http:\/\/example.com","nullable":true}},"required":["key","type","status","error","required","format"]},"attributeDatetime":{"description":"AttributeDatetime","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"birthDay"},"type":{"type":"string","description":"Attribute type.","x-example":"datetime"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"format":{"type":"string","description":"ISO 8601 format.","x-example":"datetime"},"default":{"type":"string","description":"Default value for attribute when not provided. Only null is optional","x-example":"2020-10-15T06:38:00.000+00:00","nullable":true}},"required":["key","type","status","error","required","format"]},"attributeRelationship":{"description":"AttributeRelationship","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"fullName"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"relatedCollection":{"type":"string","description":"The ID of the related collection.","x-example":"collection"},"relationType":{"type":"string","description":"The type of the relationship.","x-example":"oneToOne|oneToMany|manyToOne|manyToMany"},"twoWay":{"type":"boolean","description":"Is the relationship two-way?","x-example":false},"twoWayKey":{"type":"string","description":"The key of the two-way relationship.","x-example":"string"},"onDelete":{"type":"string","description":"How deleting the parent document will propagate to child documents.","x-example":"restrict|cascade|setNull"},"side":{"type":"string","description":"Whether this is the parent or child side of the relationship","x-example":"parent|child"}},"required":["key","type","status","error","required","relatedCollection","relationType","twoWay","twoWayKey","onDelete","side"]},"index":{"description":"Index","type":"object","properties":{"key":{"type":"string","description":"Index Key.","x-example":"index1"},"type":{"type":"string","description":"Index type.","x-example":"primary"},"status":{"type":"string","description":"Index status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an index.","x-example":"string"},"attributes":{"type":"array","description":"Index attributes.","items":{"type":"string"},"x-example":[]},"orders":{"type":"array","description":"Index orders.","items":{"type":"string"},"x-example":[],"nullable":true}},"required":["key","type","status","error","attributes"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"user":{"description":"User","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"password":{"type":"string","description":"Hashed user password.","x-example":"$argon2id$v=19$m=2048,t=4,p=3$aUZjLnliVWRINmFNTWMudg$5S+x+7uA31xFnrHFT47yFwcJeaP0w92L\/4LdgrVRXxE","nullable":true},"hash":{"type":"string","description":"Password hashing algorithm.","x-example":"argon2","nullable":true},"hashOptions":{"type":"object","description":"Password hashing algorithm configuration.","x-example":{},"items":{"oneOf":[{"$ref":"#\/components\/schemas\/algoArgon2"},{"$ref":"#\/components\/schemas\/algoScrypt"},{"$ref":"#\/components\/schemas\/algoScryptModified"},{"$ref":"#\/components\/schemas\/algoBcrypt"},{"$ref":"#\/components\/schemas\/algoPhpass"},{"$ref":"#\/components\/schemas\/algoSha"},{"$ref":"#\/components\/schemas\/algoMd5"}]},"nullable":true},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"labels":{"type":"array","description":"Labels for the user.","items":{"type":"string"},"x-example":["vip"]},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"mfa":{"type":"boolean","description":"Multi factor authentication status.","x-example":true},"totp":{"type":"boolean","description":"TOTP status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"$ref":"#\/components\/schemas\/preferences"}},"targets":{"type":"array","description":"A user-owned message receiver. A single user may have multiple e.g. emails, phones, and a browser. Each target is registered with a single provider.","items":{"$ref":"#\/components\/schemas\/target"},"x-example":[]},"accessedAt":{"type":"string","description":"Most recent access date in ISO 8601 format. This attribute is only updated again after 24 hours.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","$updatedAt","name","registration","status","labels","passwordUpdate","email","phone","emailVerification","phoneVerification","mfa","totp","prefs","targets","accessedAt"]},"algoMd5":{"description":"AlgoMD5","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"md5"}},"required":["type"]},"algoSha":{"description":"AlgoSHA","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"sha"}},"required":["type"]},"algoPhpass":{"description":"AlgoPHPass","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"phpass"}},"required":["type"]},"algoBcrypt":{"description":"AlgoBcrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"bcrypt"}},"required":["type"]},"algoScrypt":{"description":"AlgoScrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scrypt"},"costCpu":{"type":"integer","description":"CPU complexity of computed hash.","x-example":8,"format":"int32"},"costMemory":{"type":"integer","description":"Memory complexity of computed hash.","x-example":14,"format":"int32"},"costParallel":{"type":"integer","description":"Parallelization of computed hash.","x-example":1,"format":"int32"},"length":{"type":"integer","description":"Length used to compute hash.","x-example":64,"format":"int32"}},"required":["type","costCpu","costMemory","costParallel","length"]},"algoScryptModified":{"description":"AlgoScryptModified","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scryptMod"},"salt":{"type":"string","description":"Salt used to compute hash.","x-example":"UxLMreBr6tYyjQ=="},"saltSeparator":{"type":"string","description":"Separator used to compute hash.","x-example":"Bw=="},"signerKey":{"type":"string","description":"Key used to compute hash.","x-example":"XyEKE9RcTDeLEsL\/RjwPDBv\/RqDl8fb3gpYEOQaPihbxf1ZAtSOHCjuAAa7Q3oHpCYhXSN9tizHgVOwn6krflQ=="}},"required":["type","salt","saltSeparator","signerKey"]},"algoArgon2":{"description":"AlgoArgon2","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"argon2"},"memoryCost":{"type":"integer","description":"Memory used to compute hash.","x-example":65536,"format":"int32"},"timeCost":{"type":"integer","description":"Amount of time consumed to compute hash","x-example":4,"format":"int32"},"threads":{"type":"integer","description":"Number of threads used to compute hash.","x-example":3,"format":"int32"}},"required":["type","memoryCost","timeCost","threads"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true},"factors":{"type":"array","description":"Returns a list of active session factors.","items":{"type":"string"},"x-example":["email"]},"secret":{"type":"string","description":"Secret used to authenticate the user. Only included if the request was made with an API key","x-example":"5e5bb8c16897e"}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current","factors","secret"]},"identity":{"description":"Identity","type":"object","properties":{"$id":{"type":"string","description":"Identity ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Identity creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Identity update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"provider":{"type":"string","description":"Identity Provider.","x-example":"email"},"providerUid":{"type":"string","description":"ID of the User in the Identity Provider.","x-example":"5e5bb8c16897e"},"providerEmail":{"type":"string","description":"Email of the User in the Identity Provider.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Identity Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Identity Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"}},"required":["$id","$createdAt","$updatedAt","userId","provider","providerUid","providerEmail","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"phrase":{"type":"string","description":"Security phrase of a token. Empty if security phrase was not requested when creating a token. It includes randomly generated phrase which is also sent in the external resource such as email.","x-example":"Golden Fox"}},"required":["$id","$createdAt","userId","secret","expire","phrase"]},"jwt":{"description":"JWT","type":"object","properties":{"jwt":{"type":"string","description":"JWT encoded string.","x-example":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c"}},"required":["jwt"]},"locale":{"description":"Locale","type":"object","properties":{"ip":{"type":"string","description":"User IP address.","x-example":"127.0.0.1"},"countryCode":{"type":"string","description":"Country code in [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) two-character format","x-example":"US"},"country":{"type":"string","description":"Country name. This field support localization.","x-example":"United States"},"continentCode":{"type":"string","description":"Continent code. A two character continent code \"AF\" for Africa, \"AN\" for Antarctica, \"AS\" for Asia, \"EU\" for Europe, \"NA\" for North America, \"OC\" for Oceania, and \"SA\" for South America.","x-example":"NA"},"continent":{"type":"string","description":"Continent name. This field support localization.","x-example":"North America"},"eu":{"type":"boolean","description":"True if country is part of the European Union.","x-example":false},"currency":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format","x-example":"USD"}},"required":["ip","countryCode","country","continentCode","continent","eu","currency"]},"localeCode":{"description":"LocaleCode","type":"object","properties":{"code":{"type":"string","description":"Locale codes in [ISO 639-1](https:\/\/en.wikipedia.org\/wiki\/List_of_ISO_639-1_codes)","x-example":"en-us"},"name":{"type":"string","description":"Locale name","x-example":"US"}},"required":["code","name"]},"file":{"description":"File","type":"object","properties":{"$id":{"type":"string","description":"File ID.","x-example":"5e5ea5c16897e"},"bucketId":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Bucket creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Bucket update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Bucket permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"fileSecurity":{"type":"boolean","description":"Whether file-level security is enabled. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":true},"name":{"type":"string","description":"Bucket name.","x-example":"Documents"},"enabled":{"type":"boolean","description":"Bucket enabled.","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size supported.","x-example":100,"format":"int32"},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions.","items":{"type":"string"},"x-example":["jpg","png"]},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Will be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd).","x-example":"gzip"},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$createdAt","$updatedAt","$permissions","fileSecurity","name","enabled","maximumFileSize","allowedFileExtensions","compression","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"},"prefs":{"type":"object","description":"Team preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"$ref":"#\/components\/schemas\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","total","prefs"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"mfa":{"type":"boolean","description":"Multi factor authentication status, true if the user has MFA enabled or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":["owner"]}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","mfa","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Function creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Function update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"users"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"enabled":{"type":"boolean","description":"Function enabled.","x-example":false},"live":{"type":"boolean","description":"Is the function deployed with the latest configuration? This is set to false if you've changed an environment variables, entrypoint, commands, or other settings that needs redeploy to be applied. When the value is false, redeploy the function to update it with the latest configuration.","x-example":false},"logging":{"type":"boolean","description":"Whether executions will be logged. When set to false, executions will not be logged, but will reduce resource used by your Appwrite project.","x-example":false},"runtime":{"type":"string","description":"Function execution runtime.","x-example":"python-3.8"},"deployment":{"type":"string","description":"Function's active deployment ID.","x-example":"5e5ea5c16897e"},"vars":{"type":"array","description":"Function variables.","items":{"$ref":"#\/components\/schemas\/variable"},"x-example":[]},"events":{"type":"array","description":"Function trigger events.","items":{"type":"string"},"x-example":"account.create"},"schedule":{"type":"string","description":"Function execution schedult in CRON format.","x-example":"5 4 * * *"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":300,"format":"int32"},"entrypoint":{"type":"string","description":"The entrypoint file used to execute the deployment.","x-example":"index.js"},"commands":{"type":"string","description":"The build command used to build the deployment.","x-example":"npm install"},"version":{"type":"string","description":"Version of Open Runtimes used for the function.","x-example":"v2"},"installationId":{"type":"string","description":"Function VCS (Version Control System) installation id.","x-example":"6m40at4ejk5h2u9s1hboo"},"providerRepositoryId":{"type":"string","description":"VCS (Version Control System) Repository ID","x-example":"appwrite"},"providerBranch":{"type":"string","description":"VCS (Version Control System) branch name","x-example":"main"},"providerRootDirectory":{"type":"string","description":"Path to function in VCS (Version Control System) repository","x-example":"functions\/helloWorld"},"providerSilentMode":{"type":"boolean","description":"Is VCS (Version Control System) connection is in silent mode? When in silence mode, no comments will be posted on the repository pull or merge requests","x-example":false}},"required":["$id","$createdAt","$updatedAt","execute","name","enabled","live","logging","runtime","deployment","vars","events","schedule","timeout","entrypoint","commands","version","installationId","providerRepositoryId","providerBranch","providerRootDirectory","providerSilentMode"]},"installation":{"description":"Installation","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Function creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Function update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"VCS (Version Control System) provider name.","x-example":"github"},"organization":{"type":"string","description":"VCS (Version Control System) organization name.","x-example":"appwrite"},"providerInstallationId":{"type":"string","description":"VCS (Version Control System) installation ID.","x-example":"5322"}},"required":["$id","$createdAt","$updatedAt","provider","organization","providerInstallationId"]},"providerRepository":{"description":"ProviderRepository","type":"object","properties":{"id":{"type":"string","description":"VCS (Version Control System) repository ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"VCS (Version Control System) repository name.","x-example":"appwrite"},"organization":{"type":"string","description":"VCS (Version Control System) organization name","x-example":"appwrite"},"provider":{"type":"string","description":"VCS (Version Control System) provider name.","x-example":"github"},"private":{"type":"boolean","description":"Is VCS (Version Control System) repository private?","x-example":true},"runtime":{"type":"string","description":"Auto-detected runtime suggestion. Empty if getting response of getRuntime().","x-example":"node"},"pushedAt":{"type":"string","description":"Last commit date in ISO 8601 format.","x-example":"datetime"}},"required":["id","name","organization","provider","private","runtime","pushedAt"]},"detection":{"description":"Detection","type":"object","properties":{"runtime":{"type":"string","description":"Runtime","x-example":"node"}},"required":["runtime"]},"branch":{"description":"Branch","type":"object","properties":{"name":{"type":"string","description":"Branch Name.","x-example":"main"}},"required":["name"]},"runtime":{"description":"Runtime","type":"object","properties":{"$id":{"type":"string","description":"Runtime ID.","x-example":"python-3.8"},"name":{"type":"string","description":"Runtime Name.","x-example":"Python"},"version":{"type":"string","description":"Runtime version.","x-example":"3.8"},"base":{"type":"string","description":"Base Docker image used to build the runtime.","x-example":"python:3.8-alpine"},"image":{"type":"string","description":"Image name of Docker Hub.","x-example":"appwrite\\\/runtime-for-python:3.8"},"logo":{"type":"string","description":"Name of the logo image.","x-example":"python.png"},"supports":{"type":"array","description":"List of supported architectures.","items":{"type":"string"},"x-example":"amd64"}},"required":["$id","name","version","base","image","logo","supports"]},"deployment":{"description":"Deployment","type":"object","properties":{"$id":{"type":"string","description":"Deployment ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Deployment creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Deployment update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"type":{"type":"string","description":"Type of deployment.","x-example":"vcs"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"index.js"},"size":{"type":"integer","description":"The code size in bytes.","x-example":128,"format":"int32"},"buildId":{"type":"string","description":"The current build ID.","x-example":"5e5ea5c16897e"},"activate":{"type":"boolean","description":"Whether the deployment should be automatically activated.","x-example":true},"status":{"type":"string","description":"The deployment status. Possible values are \"processing\", \"building\", \"waiting\", \"ready\", and \"failed\".","x-example":"ready"},"buildLogs":{"type":"string","description":"The build logs.","x-example":"Compiling source files..."},"buildTime":{"type":"integer","description":"The current build time in seconds.","x-example":128,"format":"int32"},"providerRepositoryName":{"type":"string","description":"The name of the vcs provider repository","x-example":"database"},"providerRepositoryOwner":{"type":"string","description":"The name of the vcs provider repository owner","x-example":"utopia"},"providerRepositoryUrl":{"type":"string","description":"The url of the vcs provider repository","x-example":"https:\/\/github.com\/vermakhushboo\/g4-node-function"},"providerBranch":{"type":"string","description":"The branch of the vcs repository","x-example":"0.7.x"},"providerCommitHash":{"type":"string","description":"The commit hash of the vcs commit","x-example":"7c3f25d"},"providerCommitAuthorUrl":{"type":"string","description":"The url of vcs commit author","x-example":"https:\/\/github.com\/vermakhushboo"},"providerCommitAuthor":{"type":"string","description":"The name of vcs commit author","x-example":"Khushboo Verma"},"providerCommitMessage":{"type":"string","description":"The commit message","x-example":"Update index.js"},"providerCommitUrl":{"type":"string","description":"The url of the vcs commit","x-example":"https:\/\/github.com\/vermakhushboo\/g4-node-function\/commit\/60c0416257a9cbcdd96b2d370c38d8f8d150ccfb"},"providerBranchUrl":{"type":"string","description":"The branch of the vcs repository","x-example":"https:\/\/github.com\/vermakhushboo\/appwrite\/tree\/0.7.x"}},"required":["$id","$createdAt","$updatedAt","type","resourceId","resourceType","entrypoint","size","buildId","activate","status","buildLogs","buildTime","providerRepositoryName","providerRepositoryOwner","providerRepositoryUrl","providerBranch","providerCommitHash","providerCommitAuthorUrl","providerCommitAuthor","providerCommitMessage","providerCommitUrl","providerBranchUrl"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"requestMethod":{"type":"string","description":"HTTP request method type.","x-example":"GET"},"requestPath":{"type":"string","description":"HTTP request path and query.","x-example":"\/articles?id=5"},"requestHeaders":{"type":"array","description":"HTTP response headers as a key-value object. This will return only whitelisted headers. All headers are returned if execution is created as synchronous.","items":{"$ref":"#\/components\/schemas\/headers"},"x-example":[{"Content-Type":"application\/json"}]},"responseStatusCode":{"type":"integer","description":"HTTP response status code.","x-example":200,"format":"int32"},"responseBody":{"type":"string","description":"HTTP response body. This will return empty unless execution is created as synchronous.","x-example":"Developers are awesome."},"responseHeaders":{"type":"array","description":"HTTP response headers as a key-value object. This will return only whitelisted headers. All headers are returned if execution is created as synchronous.","items":{"$ref":"#\/components\/schemas\/headers"},"x-example":[{"Content-Type":"application\/json"}]},"logs":{"type":"string","description":"Function logs. Includes the last 4,000 characters. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"errors":{"type":"string","description":"Function errors. Includes the last 4,000 characters. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"Function execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","requestMethod","requestPath","requestHeaders","responseStatusCode","responseBody","responseHeaders","logs","errors","duration"]},"project":{"description":"Project","type":"object","properties":{"$id":{"type":"string","description":"Project ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Project creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Project update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Project name.","x-example":"New Project"},"description":{"type":"string","description":"Project description.","x-example":"This is a new project."},"teamId":{"type":"string","description":"Project team ID.","x-example":"1592981250"},"logo":{"type":"string","description":"Project logo file ID.","x-example":"5f5c451b403cb"},"url":{"type":"string","description":"Project website URL.","x-example":"5f5c451b403cb"},"legalName":{"type":"string","description":"Company legal name.","x-example":"Company LTD."},"legalCountry":{"type":"string","description":"Country code in [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) two-character format.","x-example":"US"},"legalState":{"type":"string","description":"State name.","x-example":"New York"},"legalCity":{"type":"string","description":"City name.","x-example":"New York City."},"legalAddress":{"type":"string","description":"Company Address.","x-example":"620 Eighth Avenue, New York, NY 10018"},"legalTaxId":{"type":"string","description":"Company Tax ID.","x-example":"131102020"},"authDuration":{"type":"integer","description":"Session duration in seconds.","x-example":60,"format":"int32"},"authLimit":{"type":"integer","description":"Max users allowed. 0 is unlimited.","x-example":100,"format":"int32"},"authSessionsLimit":{"type":"integer","description":"Max sessions allowed per user. 100 maximum.","x-example":10,"format":"int32"},"authPasswordHistory":{"type":"integer","description":"Max allowed passwords in the history list per user. Max passwords limit allowed in history is 20. Use 0 for disabling password history.","x-example":5,"format":"int32"},"authPasswordDictionary":{"type":"boolean","description":"Whether or not to check user's password against most commonly used passwords.","x-example":true},"authPersonalDataCheck":{"type":"boolean","description":"Whether or not to check the user password for similarity with their personal data.","x-example":true},"oAuthProviders":{"type":"array","description":"List of Auth Providers.","items":{"$ref":"#\/components\/schemas\/authProvider"},"x-example":[{}]},"platforms":{"type":"array","description":"List of Platforms.","items":{"$ref":"#\/components\/schemas\/platform"},"x-example":{}},"webhooks":{"type":"array","description":"List of Webhooks.","items":{"$ref":"#\/components\/schemas\/webhook"},"x-example":{}},"keys":{"type":"array","description":"List of API Keys.","items":{"$ref":"#\/components\/schemas\/key"},"x-example":{}},"smtpEnabled":{"type":"boolean","description":"Status for custom SMTP","x-example":false},"smtpSenderName":{"type":"string","description":"SMTP sender name","x-example":"John Appwrite"},"smtpSenderEmail":{"type":"string","description":"SMTP sender email","x-example":"john@appwrite.io"},"smtpReplyTo":{"type":"string","description":"SMTP reply to email","x-example":"support@appwrite.io"},"smtpHost":{"type":"string","description":"SMTP server host name","x-example":"mail.appwrite.io"},"smtpPort":{"type":"integer","description":"SMTP server port","x-example":25,"format":"int32"},"smtpUsername":{"type":"string","description":"SMTP server username","x-example":"emailuser"},"smtpPassword":{"type":"string","description":"SMTP server password","x-example":"securepassword"},"smtpSecure":{"type":"string","description":"SMTP server secure protocol","x-example":"tls"},"authEmailPassword":{"type":"boolean","description":"Email\/Password auth method status","x-example":true},"authUsersAuthMagicURL":{"type":"boolean","description":"Magic URL auth method status","x-example":true},"authEmailOtp":{"type":"boolean","description":"Email (OTP) auth method status","x-example":true},"authAnonymous":{"type":"boolean","description":"Anonymous auth method status","x-example":true},"authInvites":{"type":"boolean","description":"Invites auth method status","x-example":true},"authJWT":{"type":"boolean","description":"JWT auth method status","x-example":true},"authPhone":{"type":"boolean","description":"Phone auth method status","x-example":true},"serviceStatusForAccount":{"type":"boolean","description":"Account service status","x-example":true},"serviceStatusForAvatars":{"type":"boolean","description":"Avatars service status","x-example":true},"serviceStatusForDatabases":{"type":"boolean","description":"Databases service status","x-example":true},"serviceStatusForLocale":{"type":"boolean","description":"Locale service status","x-example":true},"serviceStatusForHealth":{"type":"boolean","description":"Health service status","x-example":true},"serviceStatusForStorage":{"type":"boolean","description":"Storage service status","x-example":true},"serviceStatusForTeams":{"type":"boolean","description":"Teams service status","x-example":true},"serviceStatusForUsers":{"type":"boolean","description":"Users service status","x-example":true},"serviceStatusForFunctions":{"type":"boolean","description":"Functions service status","x-example":true},"serviceStatusForGraphql":{"type":"boolean","description":"GraphQL service status","x-example":true},"serviceStatusForMessaging":{"type":"boolean","description":"Messaging service status","x-example":true}},"required":["$id","$createdAt","$updatedAt","name","description","teamId","logo","url","legalName","legalCountry","legalState","legalCity","legalAddress","legalTaxId","authDuration","authLimit","authSessionsLimit","authPasswordHistory","authPasswordDictionary","authPersonalDataCheck","oAuthProviders","platforms","webhooks","keys","smtpEnabled","smtpSenderName","smtpSenderEmail","smtpReplyTo","smtpHost","smtpPort","smtpUsername","smtpPassword","smtpSecure","authEmailPassword","authUsersAuthMagicURL","authEmailOtp","authAnonymous","authInvites","authJWT","authPhone","serviceStatusForAccount","serviceStatusForAvatars","serviceStatusForDatabases","serviceStatusForLocale","serviceStatusForHealth","serviceStatusForStorage","serviceStatusForTeams","serviceStatusForUsers","serviceStatusForFunctions","serviceStatusForGraphql","serviceStatusForMessaging"]},"webhook":{"description":"Webhook","type":"object","properties":{"$id":{"type":"string","description":"Webhook ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Webhook creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Webhook update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Webhook name.","x-example":"My Webhook"},"url":{"type":"string","description":"Webhook URL endpoint.","x-example":"https:\/\/example.com\/webhook"},"events":{"type":"array","description":"Webhook trigger events.","items":{"type":"string"},"x-example":"database.collections.update"},"security":{"type":"boolean","description":"Indicated if SSL \/ TLS Certificate verification is enabled.","x-example":true},"httpUser":{"type":"string","description":"HTTP basic authentication username.","x-example":"username"},"httpPass":{"type":"string","description":"HTTP basic authentication password.","x-example":"password"},"signatureKey":{"type":"string","description":"Signature key which can be used to validated incoming","x-example":"ad3d581ca230e2b7059c545e5a"},"enabled":{"type":"boolean","description":"Indicates if this webhook is enabled.","x-example":true},"logs":{"type":"string","description":"Webhook error logs from the most recent failure.","x-example":"Failed to connect to remote server."},"attempts":{"type":"integer","description":"Number of consecutive failed webhook attempts.","x-example":10,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","name","url","events","security","httpUser","httpPass","signatureKey","enabled","logs","attempts"]},"key":{"description":"Key","type":"object","properties":{"$id":{"type":"string","description":"Key ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Key creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Key update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Key name.","x-example":"My API Key"},"expire":{"type":"string","description":"Key expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"scopes":{"type":"array","description":"Allowed permission scopes.","items":{"type":"string"},"x-example":"users.read"},"secret":{"type":"string","description":"Secret key.","x-example":"919c2d18fb5d4...a2ae413da83346ad2"},"accessedAt":{"type":"string","description":"Most recent access date in ISO 8601 format. This attribute is only updated again after 24 hours.","x-example":"2020-10-15T06:38:00.000+00:00"},"sdks":{"type":"array","description":"List of SDK user agents that used this key.","items":{"type":"string"},"x-example":"appwrite:flutter"}},"required":["$id","$createdAt","$updatedAt","name","expire","scopes","secret","accessedAt","sdks"]},"authProvider":{"description":"AuthProvider","type":"object","properties":{"key":{"type":"string","description":"Auth Provider.","x-example":"github"},"name":{"type":"string","description":"Auth Provider name.","x-example":"GitHub"},"appId":{"type":"string","description":"OAuth 2.0 application ID.","x-example":"259125845563242502"},"secret":{"type":"string","description":"OAuth 2.0 application secret. Might be JSON string if provider requires extra configuration.","x-example":"Bpw_g9c2TGXxfgLshDbSaL8tsCcqgczQ"},"enabled":{"type":"boolean","description":"Auth Provider is active and can be used to create session.","x-example":""}},"required":["key","name","appId","secret","enabled"]},"platform":{"description":"Platform","type":"object","properties":{"$id":{"type":"string","description":"Platform ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Platform creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Platform update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Platform name.","x-example":"My Web App"},"type":{"type":"string","description":"Platform type. Possible values are: web, flutter-web, flutter-ios, flutter-android, ios, android, and unity.","x-example":"web"},"key":{"type":"string","description":"Platform Key. iOS bundle ID or Android package name. Empty string for other platforms.","x-example":"com.company.appname"},"store":{"type":"string","description":"App store or Google Play store ID.","x-example":""},"hostname":{"type":"string","description":"Web app hostname. Empty string for other platforms.","x-example":true},"httpUser":{"type":"string","description":"HTTP basic authentication username.","x-example":"username"},"httpPass":{"type":"string","description":"HTTP basic authentication password.","x-example":"password"}},"required":["$id","$createdAt","$updatedAt","name","type","key","store","hostname","httpUser","httpPass"]},"variable":{"description":"Variable","type":"object","properties":{"$id":{"type":"string","description":"Variable ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"key":{"type":"string","description":"Variable key.","x-example":"API_KEY"},"value":{"type":"string","description":"Variable value.","x-example":"myPa$$word1"},"resourceType":{"type":"string","description":"Service to which the variable belongs. Possible values are \"project\", \"function\"","x-example":"function"},"resourceId":{"type":"string","description":"ID of resource to which the variable belongs. If resourceType is \"project\", it is empty. If resourceType is \"function\", it is ID of the function.","x-example":"myAwesomeFunction"}},"required":["$id","$createdAt","$updatedAt","key","value","resourceType","resourceId"]},"country":{"description":"Country","type":"object","properties":{"name":{"type":"string","description":"Country name.","x-example":"United States"},"code":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"}},"required":["name","code"]},"continent":{"description":"Continent","type":"object","properties":{"name":{"type":"string","description":"Continent name.","x-example":"Europe"},"code":{"type":"string","description":"Continent two letter code.","x-example":"EU"}},"required":["name","code"]},"language":{"description":"Language","type":"object","properties":{"name":{"type":"string","description":"Language name.","x-example":"Italian"},"code":{"type":"string","description":"Language two-character ISO 639-1 codes.","x-example":"it"},"nativeName":{"type":"string","description":"Language native name.","x-example":"Italiano"}},"required":["name","code","nativeName"]},"currency":{"description":"Currency","type":"object","properties":{"symbol":{"type":"string","description":"Currency symbol.","x-example":"$"},"name":{"type":"string","description":"Currency name.","x-example":"US dollar"},"symbolNative":{"type":"string","description":"Currency native symbol.","x-example":"$"},"decimalDigits":{"type":"integer","description":"Number of decimal digits.","x-example":2,"format":"int32"},"rounding":{"type":"number","description":"Currency digit rounding.","x-example":0,"format":"double"},"code":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format.","x-example":"USD"},"namePlural":{"type":"string","description":"Currency plural name","x-example":"US dollars"}},"required":["symbol","name","symbolNative","decimalDigits","rounding","code","namePlural"]},"phone":{"description":"Phone","type":"object","properties":{"code":{"type":"string","description":"Phone code.","x-example":"+1"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["code","countryCode","countryName"]},"healthAntivirus":{"description":"Health Antivirus","type":"object","properties":{"version":{"type":"string","description":"Antivirus version.","x-example":"1.0.0"},"status":{"type":"string","description":"Antivirus status. Possible values can are: `disabled`, `offline`, `online`","x-example":"online"}},"required":["version","status"]},"healthQueue":{"description":"Health Queue","type":"object","properties":{"size":{"type":"integer","description":"Amount of actions in the queue.","x-example":8,"format":"int32"}},"required":["size"]},"healthStatus":{"description":"Health Status","type":"object","properties":{"name":{"type":"string","description":"Name of the service.","x-example":"database"},"ping":{"type":"integer","description":"Duration in milliseconds how long the health check took.","x-example":128,"format":"int32"},"status":{"type":"string","description":"Service status. Possible values can are: `pass`, `fail`","x-example":"pass"}},"required":["name","ping","status"]},"healthTime":{"description":"Health Time","type":"object","properties":{"remoteTime":{"type":"integer","description":"Current unix timestamp on trustful remote server.","x-example":1639490751,"format":"int32"},"localTime":{"type":"integer","description":"Current unix timestamp of local server where Appwrite runs.","x-example":1639490844,"format":"int32"},"diff":{"type":"integer","description":"Difference of unix remote and local timestamps in milliseconds.","x-example":93,"format":"int32"}},"required":["remoteTime","localTime","diff"]},"metric":{"description":"Metric","type":"object","properties":{"value":{"type":"integer","description":"The value of this metric at the timestamp.","x-example":1,"format":"int32"},"date":{"type":"string","description":"The date at which this metric was aggregated in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["value","date"]},"metricBreakdown":{"description":"Metric Breakdown","type":"object","properties":{"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Resource name.","x-example":"Documents"},"value":{"type":"integer","description":"The value of this metric at the timestamp.","x-example":1,"format":"int32"}},"required":["resourceId","name","value"]},"usageDatabases":{"description":"UsageDatabases","type":"object","properties":{"range":{"type":"string","description":"Time range of the usage stats.","x-example":"30d"},"databasesTotal":{"type":"integer","description":"Total aggregated number of databases.","x-example":0,"format":"int32"},"collectionsTotal":{"type":"integer","description":"Total aggregated number of collections.","x-example":0,"format":"int32"},"documentsTotal":{"type":"integer","description":"Total aggregated number of documents.","x-example":0,"format":"int32"},"databases":{"type":"array","description":"Aggregated number of databases per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collections":{"type":"array","description":"Aggregated number of collections per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documents":{"type":"array","description":"Aggregated number of documents per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","databasesTotal","collectionsTotal","documentsTotal","databases","collections","documents"]},"usageDatabase":{"description":"UsageDatabase","type":"object","properties":{"range":{"type":"string","description":"Time range of the usage stats.","x-example":"30d"},"collectionsTotal":{"type":"integer","description":"Total aggregated number of collections.","x-example":0,"format":"int32"},"documentsTotal":{"type":"integer","description":"Total aggregated number of documents.","x-example":0,"format":"int32"},"collections":{"type":"array","description":"Aggregated number of collections per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documents":{"type":"array","description":"Aggregated number of documents per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","collectionsTotal","documentsTotal","collections","documents"]},"usageCollection":{"description":"UsageCollection","type":"object","properties":{"range":{"type":"string","description":"Time range of the usage stats.","x-example":"30d"},"documentsTotal":{"type":"integer","description":"Total aggregated number of of documents.","x-example":0,"format":"int32"},"documents":{"type":"array","description":"Aggregated number of documents per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","documentsTotal","documents"]},"usageUsers":{"description":"UsageUsers","type":"object","properties":{"range":{"type":"string","description":"Time range of the usage stats.","x-example":"30d"},"usersTotal":{"type":"integer","description":"Total aggregated number of statistics of users.","x-example":0,"format":"int32"},"sessionsTotal":{"type":"integer","description":"Total aggregated number of active sessions.","x-example":0,"format":"int32"},"users":{"type":"array","description":"Aggregated number of users per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"sessions":{"type":"array","description":"Aggregated number of active sessions per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","usersTotal","sessionsTotal","users","sessions"]},"usageStorage":{"description":"StorageUsage","type":"object","properties":{"range":{"type":"string","description":"Time range of the usage stats.","x-example":"30d"},"bucketsTotal":{"type":"integer","description":"Total aggregated number of buckets","x-example":0,"format":"int32"},"filesTotal":{"type":"integer","description":"Total aggregated number of files.","x-example":0,"format":"int32"},"filesStorageTotal":{"type":"integer","description":"Total aggregated number of files storage (in bytes).","x-example":0,"format":"int32"},"buckets":{"type":"array","description":"Aggregated number of buckets per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"files":{"type":"array","description":"Aggregated number of files per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"storage":{"type":"array","description":"Aggregated number of files storage (in bytes) per period .","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","bucketsTotal","filesTotal","filesStorageTotal","buckets","files","storage"]},"usageBuckets":{"description":"UsageBuckets","type":"object","properties":{"range":{"type":"string","description":"Time range of the usage stats.","x-example":"30d"},"filesTotal":{"type":"integer","description":"Total aggregated number of bucket files.","x-example":0,"format":"int32"},"filesStorageTotal":{"type":"integer","description":"Total aggregated number of bucket files storage (in bytes).","x-example":0,"format":"int32"},"files":{"type":"array","description":"Aggregated number of bucket files per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"storage":{"type":"array","description":"Aggregated number of bucket storage files (in bytes) per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","filesTotal","filesStorageTotal","files","storage"]},"usageFunctions":{"description":"UsageFunctions","type":"object","properties":{"range":{"type":"string","description":"Time range of the usage stats.","x-example":"30d"},"functionsTotal":{"type":"integer","description":"Total aggregated number of functions.","x-example":0,"format":"int32"},"deploymentsTotal":{"type":"integer","description":"Total aggregated number of functions deployments.","x-example":0,"format":"int32"},"deploymentsStorageTotal":{"type":"integer","description":"Total aggregated sum of functions deployment storage.","x-example":0,"format":"int32"},"buildsTotal":{"type":"integer","description":"Total aggregated number of functions build.","x-example":0,"format":"int32"},"buildsStorageTotal":{"type":"integer","description":"total aggregated sum of functions build storage.","x-example":0,"format":"int32"},"buildsTimeTotal":{"type":"integer","description":"Total aggregated sum of functions build compute time.","x-example":0,"format":"int32"},"executionsTotal":{"type":"integer","description":"Total aggregated number of functions execution.","x-example":0,"format":"int32"},"executionsTimeTotal":{"type":"integer","description":"Total aggregated sum of functions execution compute time.","x-example":0,"format":"int32"},"functions":{"type":"array","description":"Aggregated number of functions per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":0},"deployments":{"type":"array","description":"Aggregated number of functions deployment per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"deploymentsStorage":{"type":"array","description":"Aggregated number of functions deployment storage per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"builds":{"type":"array","description":"Aggregated number of functions build per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"buildsStorage":{"type":"array","description":"Aggregated sum of functions build storage per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"buildsTime":{"type":"array","description":"Aggregated sum of functions build compute time per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"executions":{"type":"array","description":"Aggregated number of functions execution per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"executionsTime":{"type":"array","description":"Aggregated number of functions execution compute time per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","functionsTotal","deploymentsTotal","deploymentsStorageTotal","buildsTotal","buildsStorageTotal","buildsTimeTotal","executionsTotal","executionsTimeTotal","functions","deployments","deploymentsStorage","builds","buildsStorage","buildsTime","executions","executionsTime"]},"usageFunction":{"description":"UsageFunction","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"deploymentsTotal":{"type":"integer","description":"Total aggregated number of function deployments.","x-example":0,"format":"int32"},"deploymentsStorageTotal":{"type":"integer","description":"Total aggregated sum of function deployments storage.","x-example":0,"format":"int32"},"buildsTotal":{"type":"integer","description":"Total aggregated number of function builds.","x-example":0,"format":"int32"},"buildsStorageTotal":{"type":"integer","description":"total aggregated sum of function builds storage.","x-example":0,"format":"int32"},"buildsTimeTotal":{"type":"integer","description":"Total aggregated sum of function builds compute time.","x-example":0,"format":"int32"},"executionsTotal":{"type":"integer","description":"Total aggregated number of function executions.","x-example":0,"format":"int32"},"executionsTimeTotal":{"type":"integer","description":"Total aggregated sum of function executions compute time.","x-example":0,"format":"int32"},"deployments":{"type":"array","description":"Aggregated number of function deployments per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"deploymentsStorage":{"type":"array","description":"Aggregated number of function deployments storage per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"builds":{"type":"array","description":"Aggregated number of function builds per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"buildsStorage":{"type":"array","description":"Aggregated sum of function builds storage per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"buildsTime":{"type":"array","description":"Aggregated sum of function builds compute time per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"executions":{"type":"array","description":"Aggregated number of function executions per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"executionsTime":{"type":"array","description":"Aggregated number of function executions compute time per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","deploymentsTotal","deploymentsStorageTotal","buildsTotal","buildsStorageTotal","buildsTimeTotal","executionsTotal","executionsTimeTotal","deployments","deploymentsStorage","builds","buildsStorage","buildsTime","executions","executionsTime"]},"usageProject":{"description":"UsageProject","type":"object","properties":{"executionsTotal":{"type":"integer","description":"Total aggregated number of function executions.","x-example":0,"format":"int32"},"documentsTotal":{"type":"integer","description":"Total aggregated number of documents.","x-example":0,"format":"int32"},"databasesTotal":{"type":"integer","description":"Total aggregated number of databases.","x-example":0,"format":"int32"},"usersTotal":{"type":"integer","description":"Total aggregated number of users.","x-example":0,"format":"int32"},"filesStorageTotal":{"type":"integer","description":"Total aggregated sum of files storage size (in bytes).","x-example":0,"format":"int32"},"bucketsTotal":{"type":"integer","description":"Total aggregated number of buckets.","x-example":0,"format":"int32"},"requests":{"type":"array","description":"Aggregated number of requests per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"network":{"type":"array","description":"Aggregated number of consumed bandwidth per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"users":{"type":"array","description":"Aggregated number of users per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"executions":{"type":"array","description":"Aggregated number of executions per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"executionsBreakdown":{"type":"array","description":"Aggregated breakdown in totals of executions by functions.","items":{"$ref":"#\/components\/schemas\/metricBreakdown"},"x-example":[]},"bucketsBreakdown":{"type":"array","description":"Aggregated breakdown in totals of usage by buckets.","items":{"$ref":"#\/components\/schemas\/metricBreakdown"},"x-example":[]}},"required":["executionsTotal","documentsTotal","databasesTotal","usersTotal","filesStorageTotal","bucketsTotal","requests","network","users","executions","executionsBreakdown","bucketsBreakdown"]},"headers":{"description":"Headers","type":"object","properties":{"name":{"type":"string","description":"Header name.","x-example":"Content-Type"},"value":{"type":"string","description":"Header value.","x-example":"application\/json"}},"required":["name","value"]},"proxyRule":{"description":"Rule","type":"object","properties":{"$id":{"type":"string","description":"Rule ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Rule creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Rule update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"domain":{"type":"string","description":"Domain name.","x-example":"appwrite.company.com"},"resourceType":{"type":"string","description":"Action definition for the rule. Possible values are \"api\", \"function\", or \"redirect\"","x-example":"function"},"resourceId":{"type":"string","description":"ID of resource for the action type. If resourceType is \"api\" or \"url\", it is empty. If resourceType is \"function\", it is ID of the function.","x-example":"myAwesomeFunction"},"status":{"type":"string","description":"Domain verification status. Possible values are \"created\", \"verifying\", \"verified\" and \"unverified\"","x-example":"verified"},"logs":{"type":"string","description":"Certificate generation logs. This will return an empty string if generation did not run, or succeeded.","x-example":"HTTP challegne failed."},"renewAt":{"type":"string","description":"Certificate auto-renewal date in ISO 8601 format.","x-example":"datetime"}},"required":["$id","$createdAt","$updatedAt","domain","resourceType","resourceId","status","logs","renewAt"]},"smsTemplate":{"description":"SmsTemplate","type":"object","properties":{"type":{"type":"string","description":"Template type","x-example":"verification"},"locale":{"type":"string","description":"Template locale","x-example":"en_us"},"message":{"type":"string","description":"Template message","x-example":"Click on the link to verify your account."}},"required":["type","locale","message"]},"emailTemplate":{"description":"EmailTemplate","type":"object","properties":{"type":{"type":"string","description":"Template type","x-example":"verification"},"locale":{"type":"string","description":"Template locale","x-example":"en_us"},"message":{"type":"string","description":"Template message","x-example":"Click on the link to verify your account."},"senderName":{"type":"string","description":"Name of the sender","x-example":"My User"},"senderEmail":{"type":"string","description":"Email of the sender","x-example":"mail@appwrite.io"},"replyTo":{"type":"string","description":"Reply to email address","x-example":"emails@appwrite.io"},"subject":{"type":"string","description":"Email subject","x-example":"Please verify your email address"}},"required":["type","locale","message","senderName","senderEmail","replyTo","subject"]},"consoleVariables":{"description":"Console Variables","type":"object","properties":{"_APP_DOMAIN_TARGET":{"type":"string","description":"CNAME target for your Appwrite custom domains.","x-example":"appwrite.io"},"_APP_STORAGE_LIMIT":{"type":"integer","description":"Maximum file size allowed for file upload in bytes.","x-example":"30000000","format":"int32"},"_APP_FUNCTIONS_SIZE_LIMIT":{"type":"integer","description":"Maximum file size allowed for deployment in bytes.","x-example":"30000000","format":"int32"},"_APP_USAGE_STATS":{"type":"string","description":"Defines if usage stats are enabled. This value is set to 'enabled' by default, to disable the usage stats set the value to 'disabled'.","x-example":"enabled"},"_APP_VCS_ENABLED":{"type":"boolean","description":"Defines if VCS (Version Control System) is enabled.","x-example":true},"_APP_DOMAIN_ENABLED":{"type":"boolean","description":"Defines if main domain is configured. If so, custom domains can be created.","x-example":true},"_APP_ASSISTANT_ENABLED":{"type":"boolean","description":"Defines if AI assistant is enabled.","x-example":true}},"required":["_APP_DOMAIN_TARGET","_APP_STORAGE_LIMIT","_APP_FUNCTIONS_SIZE_LIMIT","_APP_USAGE_STATS","_APP_VCS_ENABLED","_APP_DOMAIN_ENABLED","_APP_ASSISTANT_ENABLED"]},"mfaChallenge":{"description":"MFA Challenge","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","userId","expire"]},"mfaProvider":{"description":"MFAProvider","type":"object","properties":{"backups":{"type":"array","description":"Backup codes.","items":{"type":"string"},"x-example":true},"secret":{"type":"string","description":"Secret token used for TOTP factor.","x-example":true},"uri":{"type":"string","description":"URI for authenticator apps.","x-example":true}},"required":["backups","secret","uri"]},"mfaProviders":{"description":"MFAProviders","type":"object","properties":{"totp":{"type":"boolean","description":"TOTP","x-example":true},"phone":{"type":"boolean","description":"Phone","x-example":true},"email":{"type":"boolean","description":"Email","x-example":true}},"required":["totp","phone","email"]},"provider":{"description":"Provider","type":"object","properties":{"$id":{"type":"string","description":"Provider ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Provider creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Provider update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"The name for the provider instance.","x-example":"Mailgun"},"provider":{"type":"string","description":"The name of the provider service.","x-example":"mailgun"},"enabled":{"type":"boolean","description":"Is provider enabled?","x-example":true},"type":{"type":"string","description":"Type of provider.","x-example":"sms"},"credentials":{"type":"object","description":"Provider credentials.","x-example":{"key":"123456789"}},"options":{"type":"object","description":"Provider options.","x-example":{"from":"sender-email@mydomain"},"nullable":true}},"required":["$id","$createdAt","$updatedAt","name","provider","enabled","type","credentials"]},"message":{"description":"Message","type":"object","properties":{"$id":{"type":"string","description":"Message ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Message creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Message update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerType":{"type":"string","description":"Message provider type.","x-example":"email"},"topics":{"type":"array","description":"Topic IDs set as recipients.","items":{"type":"string"},"x-example":["5e5ea5c16897e"]},"users":{"type":"array","description":"User IDs set as recipients.","items":{"type":"string"},"x-example":["5e5ea5c16897e"]},"targets":{"type":"array","description":"Target IDs set as recipients.","items":{"type":"string"},"x-example":["5e5ea5c16897e"]},"scheduledAt":{"type":"string","description":"The scheduled time for message.","x-example":"2020-10-15T06:38:00.000+00:00","nullable":true},"deliveredAt":{"type":"string","description":"The time when the message was delivered.","x-example":"2020-10-15T06:38:00.000+00:00","nullable":true},"deliveryErrors":{"type":"array","description":"Delivery errors if any.","items":{"type":"string"},"x-example":["Failed to send message to target 5e5ea5c16897e: Credentials not valid."],"nullable":true},"deliveredTotal":{"type":"integer","description":"Number of recipients the message was delivered to.","x-example":1,"format":"int32"},"data":{"type":"object","description":"Data of the message.","x-example":{"subject":"Welcome to Appwrite","content":"Hi there, welcome to Appwrite family."}},"status":{"type":"string","description":"Status of delivery.","x-example":"Message status can be one of the following: processing, sent, cancelled, failed."}},"required":["$id","$createdAt","$updatedAt","providerType","topics","users","targets","deliveredTotal","data","status"]},"topic":{"description":"Topic","type":"object","properties":{"$id":{"type":"string","description":"Topic ID.","x-example":"259125845563242502"},"$createdAt":{"type":"string","description":"Topic creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Topic update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"The name of the topic.","x-example":"events"},"total":{"type":"integer","description":"Total count of subscribers subscribed to topic.","x-example":100,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","name","total"]},"subscriber":{"description":"Subscriber","type":"object","properties":{"$id":{"type":"string","description":"Subscriber ID.","x-example":"259125845563242502"},"$createdAt":{"type":"string","description":"Subscriber creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Subscriber update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"targetId":{"type":"string","description":"Target ID.","x-example":"259125845563242502"},"target":{"type":"object","description":"Target.","x-example":{"$id":"259125845563242502","$createdAt":"2020-10-15T06:38:00.000+00:00","$updatedAt":"2020-10-15T06:38:00.000+00:00","providerType":"email","providerId":"259125845563242502","name":"ageon-app-email","identifier":"random-mail@email.org","userId":"5e5ea5c16897e"},"items":{"$ref":"#\/components\/schemas\/target"}},"userId":{"type":"string","description":"Topic ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User Name.","x-example":"Aegon Targaryen"},"topicId":{"type":"string","description":"Topic ID.","x-example":"259125845563242502"},"providerType":{"type":"string","description":"The target provider type. Can be one of the following: `email`, `sms` or `push`.","x-example":"email"}},"required":["$id","$createdAt","$updatedAt","targetId","target","userId","userName","topicId","providerType"]},"target":{"description":"Target","type":"object","properties":{"$id":{"type":"string","description":"Target ID.","x-example":"259125845563242502"},"$createdAt":{"type":"string","description":"Target creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Target update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Target Name.","x-example":"Aegon apple token"},"userId":{"type":"string","description":"User ID.","x-example":"259125845563242502"},"providerId":{"type":"string","description":"Provider ID.","x-example":"259125845563242502","nullable":true},"providerType":{"type":"string","description":"The target provider type. Can be one of the following: `email`, `sms` or `push`.","x-example":"email"},"identifier":{"type":"string","description":"The target identifier.","x-example":"token"}},"required":["$id","$createdAt","$updatedAt","name","userId","providerType","identifier"]},"migration":{"description":"Migration","type":"object","properties":{"$id":{"type":"string","description":"Migration ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"string","description":"Migration status ( pending, processing, failed, completed ) ","x-example":"pending"},"stage":{"type":"string","description":"Migration stage ( init, processing, source-check, destination-check, migrating, finished )","x-example":"init"},"source":{"type":"string","description":"A string containing the type of source of the migration.","x-example":"Appwrite"},"resources":{"type":"array","description":"Resources to migration.","items":{"type":"string"},"x-example":["user"]},"statusCounters":{"type":"object","description":"A group of counters that represent the total progress of the migration.","x-example":"{\"Database\": {\"PENDING\": 0, \"SUCCESS\": 1, \"ERROR\": 0, \"SKIP\": 0, \"PROCESSING\": 0, \"WARNING\": 0}}"},"resourceData":{"type":"object","description":"An array of objects containing the report data of the resources that were migrated.","x-example":"[{\"resource\":\"Database\",\"id\":\"public\",\"status\":\"SUCCESS\",\"message\":\"\"}]"},"errors":{"type":"array","description":"All errors that occurred during the migration process.","items":{"type":"string"},"x-example":[]}},"required":["$id","$createdAt","$updatedAt","status","stage","source","resources","statusCounters","resourceData","errors"]},"migrationReport":{"description":"Migration Report","type":"object","properties":{"user":{"type":"integer","description":"Number of users to be migrated.","x-example":20,"format":"int32"},"team":{"type":"integer","description":"Number of teams to be migrated.","x-example":20,"format":"int32"},"database":{"type":"integer","description":"Number of databases to be migrated.","x-example":20,"format":"int32"},"document":{"type":"integer","description":"Number of documents to be migrated.","x-example":20,"format":"int32"},"file":{"type":"integer","description":"Number of files to be migrated.","x-example":20,"format":"int32"},"bucket":{"type":"integer","description":"Number of buckets to be migrated.","x-example":20,"format":"int32"},"function":{"type":"integer","description":"Number of functions to be migrated.","x-example":20,"format":"int32"},"size":{"type":"integer","description":"Size of files to be migrated in mb.","x-example":30000,"format":"int32"},"version":{"type":"string","description":"Version of the Appwrite instance to be migrated.","x-example":"1.4.0"}},"required":["user","team","database","document","file","bucket","function","size","version"]},"firebaseProject":{"description":"MigrationFirebaseProject","type":"object","properties":{"projectId":{"type":"string","description":"Project ID.","x-example":"my-project"},"displayName":{"type":"string","description":"Project display name.","x-example":"My Project"}},"required":["projectId","displayName"]}},"securitySchemes":{"Project":{"type":"apiKey","name":"X-Appwrite-Project","description":"Your project ID","in":"header","x-appwrite":{"demo":"5df5acd0d48c2"}},"Key":{"type":"apiKey","name":"X-Appwrite-Key","description":"Your secret API key","in":"header","x-appwrite":{"demo":"919c2d18fb5d4...a2ae413da83346ad2"}},"JWT":{"type":"apiKey","name":"X-Appwrite-JWT","description":"Your secret JSON Web Token","in":"header"},"Locale":{"type":"apiKey","name":"X-Appwrite-Locale","description":"","in":"header","x-appwrite":{"demo":"en"}},"Mode":{"type":"apiKey","name":"X-Appwrite-Mode","description":"","in":"header","x-appwrite":{"demo":""}}}},"externalDocs":{"description":"Full API docs, specs and tutorials","url":"https:\/\/appwrite.io\/docs"}} \ No newline at end of file +{"openapi":"3.0.0","info":{"version":"1.4.13","title":"Appwrite","description":"Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https:\/\/appwrite.io\/docs](https:\/\/appwrite.io\/docs)","termsOfService":"https:\/\/appwrite.io\/policy\/terms","contact":{"name":"Appwrite Team","url":"https:\/\/appwrite.io\/support","email":"team@appwrite.io"},"license":{"name":"BSD-3-Clause","url":"https:\/\/raw.githubusercontent.com\/appwrite\/appwrite\/master\/LICENSE"}},"servers":[{"url":"https:\/\/cloud.appwrite.io\/v1"}],"paths":{"\/account":{"get":{"summary":"Get account","operationId":"accountGet","tags":["account"],"description":"Get the currently logged in user.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"get","weight":22,"cookies":false,"type":"","demo":"account\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"post":{"summary":"Create account","operationId":"accountCreate","tags":["account"],"description":"Use this endpoint to allow a new user to register a new account in your project. After the user registration completes successfully, you can use the [\/account\/verfication](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createVerification) route to start verifying the user email address. To allow the new user to login to their new account, you need to create a new [account session](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createEmailSession).","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"create","weight":7,"cookies":false,"type":"","demo":"account\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"New user password. Must be between 8 and 256 chars.","x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}},"delete":{"summary":"Delete account","operationId":"accountDelete","tags":["account"],"description":"Delete the currently logged in user.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":49,"cookies":false,"type":"","demo":"account\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/email":{"patch":{"summary":"Update email","operationId":"accountUpdateEmail","tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateEmail","weight":29,"cookies":false,"type":"","demo":"account\/update-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","x-example":"password"}},"required":["email","password"]}}}}}},"\/account\/identities":{"get":{"summary":"List Identities","operationId":"accountListIdentities","tags":["account"],"description":"Get the list of identities for the currently logged in user.","responses":{"200":{"description":"Identities List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/identityList"}}}}},"x-appwrite":{"method":"listIdentities","weight":13,"cookies":false,"type":"","demo":"account\/list-identities.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-identities.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/identities","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, provider, providerUid, providerEmail, providerAccessTokenExpiry","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/identities\/{identityId}":{"delete":{"summary":"Delete identity","operationId":"accountDeleteIdentity","tags":["account"],"description":"Delete an identity by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIdentity","weight":14,"cookies":false,"type":"","demo":"account\/delete-identity.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-identity.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"identityId","description":"Identity ID.","required":true,"schema":{"type":"string","x-example":"[IDENTITY_ID]"},"in":"path"}]}},"\/account\/jwt":{"post":{"summary":"Create JWT","operationId":"accountCreateJWT","tags":["account"],"description":"Use this endpoint to create a JSON Web Token. You can use the resulting JWT to authenticate on behalf of the current user when working with the Appwrite server-side API and SDKs. The JWT secret is valid for 15 minutes from its creation and will be invalid if the user will logout in that time frame.","responses":{"201":{"description":"JWT","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/jwt"}}}}},"x-appwrite":{"method":"createJWT","weight":21,"cookies":false,"type":"","demo":"account\/create-j-w-t.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-jwt.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"accounts.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"List logs","operationId":"accountListLogs","tags":["account"],"description":"Get the list of latest security activity logs for the currently logged in user. Each log returns user IP address, location and date and time of log.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listLogs","weight":25,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/mfa":{"patch":{"summary":"Update MFA","operationId":"accountUpdateMFA","tags":["account"],"description":"","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateMFA","weight":42,"cookies":false,"type":"","demo":"account\/update-m-f-a.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-mfa.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"mfa":{"type":"boolean","description":"Enable or disable MFA.","x-example":false}},"required":["mfa"]}}}}}},"\/account\/mfa\/challenge":{"post":{"summary":"Create 2FA Challenge","operationId":"accountCreate2FAChallenge","tags":["account"],"description":"","responses":{"201":{"description":"MFA Challenge","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/mfaChallenge"}}}}},"x-appwrite":{"method":"create2FAChallenge","weight":47,"cookies":false,"type":"","demo":"account\/create2f-a-challenge.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-2fa-challenge.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},token:{param-token}","scope":"accounts.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"factor":{"type":"string","description":"Factor used for verification.","x-example":"totp","enum":["totp","phone","email"],"x-enum-name":null,"x-enum-keys":[]}},"required":["factor"]}}}}},"put":{"summary":"Create MFA Challenge (confirmation)","operationId":"accountUpdateChallenge","tags":["account"],"description":"","responses":{"204":{"description":"No content","content":{"":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateChallenge","weight":48,"cookies":false,"type":"","demo":"account\/update-challenge.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-challenge.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"challengeId":{"type":"string","description":"ID of the challenge.","x-example":"[CHALLENGE_ID]"},"otp":{"type":"string","description":"Valid verification token.","x-example":"[OTP]"}},"required":["challengeId","otp"]}}}}}},"\/account\/mfa\/factors":{"get":{"summary":"List Factors","operationId":"accountListFactors","tags":["account"],"description":"","responses":{"200":{"description":"MFAFactors","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/mfaFactors"}}}}},"x-appwrite":{"method":"listFactors","weight":43,"cookies":false,"type":"","demo":"account\/list-factors.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-factors.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/account\/mfa\/{type}":{"post":{"summary":"Add Authenticator","operationId":"accountAddAuthenticator","tags":["account"],"description":"","responses":{"200":{"description":"MFAType","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/mfaType"}}}}},"x-appwrite":{"method":"addAuthenticator","weight":44,"cookies":false,"type":"","demo":"account\/add-authenticator.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/add-authenticator.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"type","description":"Type of authenticator.","required":true,"schema":{"type":"string","x-example":"totp","enum":["totp"],"x-enum-name":null,"x-enum-keys":[]},"in":"path"}]},"put":{"summary":"Verify Authenticator","operationId":"accountVerifyAuthenticator","tags":["account"],"description":"","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"verifyAuthenticator","weight":45,"cookies":false,"type":"","demo":"account\/verify-authenticator.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/verify-authenticator.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"type","description":"Type of authenticator.","required":true,"schema":{"type":"string","x-example":"totp","enum":["totp"],"x-enum-name":null,"x-enum-keys":[]},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"otp":{"type":"string","description":"Valid verification token.","x-example":"[OTP]"}},"required":["otp"]}}}}},"delete":{"summary":"Delete Authenticator","operationId":"accountDeleteAuthenticator","tags":["account"],"description":"","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"deleteAuthenticator","weight":46,"cookies":false,"type":"","demo":"account\/delete-authenticator.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-mfa.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"type","description":"Type of authenticator.","required":true,"schema":{"type":"string","x-example":"totp","enum":["totp"],"x-enum-name":null,"x-enum-keys":[]},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"otp":{"type":"string","description":"Valid verification token.","x-example":"[OTP]"}},"required":["otp"]}}}}}},"\/account\/name":{"patch":{"summary":"Update name","operationId":"accountUpdateName","tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateName","weight":27,"cookies":false,"type":"","demo":"account\/update-name.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-name.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["name"]}}}}}},"\/account\/password":{"patch":{"summary":"Update password","operationId":"accountUpdatePassword","tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePassword","weight":28,"cookies":false,"type":"","demo":"account\/update-password.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-password.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"password":{"type":"string","description":"New user password. Must be at least 8 chars.","x-example":null},"oldPassword":{"type":"string","description":"Current user password. Must be at least 8 chars.","x-example":"password"}},"required":["password"]}}}}}},"\/account\/phone":{"patch":{"summary":"Update phone","operationId":"accountUpdatePhone","tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createPhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePhone","weight":30,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","x-example":"password"}},"required":["phone","password"]}}}}}},"\/account\/prefs":{"get":{"summary":"Get account preferences","operationId":"accountGetPrefs","tags":["account"],"description":"Get the preferences as a key-value object for the currently logged in user.","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"getPrefs","weight":23,"cookies":false,"type":"","demo":"account\/get-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/prefs","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"patch":{"summary":"Update preferences","operationId":"accountUpdatePrefs","tags":["account"],"description":"Update currently logged in user account preferences. The object you pass is stored as is, and replaces any previous value. The maximum allowed prefs size is 64kB and throws error if exceeded.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePrefs","weight":31,"cookies":false,"type":"","demo":"account\/update-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/prefs","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"prefs":{"type":"object","description":"Prefs key-value JSON object.","x-example":"{}"}},"required":["prefs"]}}}}}},"\/account\/recovery":{"post":{"summary":"Create password recovery","operationId":"accountCreateRecovery","tags":["account"],"description":"Sends the user an email with a temporary secret key for password reset. When the user clicks the confirmation link he is redirected back to your app password reset URL with the secret key and email address values attached to the URL query string. Use the query string params to submit a request to the [PUT \/account\/recovery](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateRecovery) endpoint to complete the process. The verification link sent to the user's email address is valid for 1 hour.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createRecovery","weight":36,"cookies":false,"type":"","demo":"account\/create-recovery.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-recovery.md","rate-limit":10,"rate-time":3600,"rate-key":["url:{url},email:{param-email}","url:{url},ip:{ip}"],"scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"url":{"type":"string","description":"URL to redirect the user back to your app from the recovery email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"}},"required":["email","url"]}}}}},"put":{"summary":"Create password recovery (confirmation)","operationId":"accountUpdateRecovery","tags":["account"],"description":"Use this endpoint to complete the user account password reset. Both the **userId** and **secret** arguments will be passed as query parameters to the redirect URL you have provided when sending your request to the [POST \/account\/recovery](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createRecovery) endpoint.\n\nPlease note that in order to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) the only valid redirect URLs are the ones from domains you have set when adding your platforms in the console interface.","responses":{"200":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"updateRecovery","weight":37,"cookies":false,"type":"","demo":"account\/update-recovery.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-recovery.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid reset token.","x-example":"[SECRET]"},"password":{"type":"string","description":"New user password. Must be between 8 and 256 chars.","x-example":null}},"required":["userId","secret","password"]}}}}}},"\/account\/sessions":{"get":{"summary":"List sessions","operationId":"accountListSessions","tags":["account"],"description":"Get the list of active sessions across different devices for the currently logged in user.","responses":{"200":{"description":"Sessions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/sessionList"}}}}},"x-appwrite":{"method":"listSessions","weight":24,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/sessions","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete sessions","operationId":"accountDeleteSessions","tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":35,"cookies":false,"type":"","demo":"account\/delete-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-sessions.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/account\/sessions\/anonymous":{"post":{"summary":"Create anonymous session","operationId":"accountCreateAnonymousSession","tags":["account"],"description":"Use this endpoint to allow a new user to register an anonymous account in your project. This route will also create a new session for the user. To allow the new user to convert an anonymous account to a normal account, you need to update its [email and password](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateEmail) or create an [OAuth2 session](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#CreateOAuth2Session).","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"createAnonymousSession","weight":20,"cookies":false,"type":"","demo":"account\/create-anonymous-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-anonymous.md","rate-limit":50,"rate-time":3600,"rate-key":"ip:{ip}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/sessions\/email":{"post":{"summary":"Create email password session","operationId":"accountCreateEmailPasswordSession","tags":["account"],"description":"Allow the user to login into their account by providing a valid email and password combination. This route will create a new session for the user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"createEmailPasswordSession","weight":8,"cookies":false,"type":"","demo":"account\/create-email-password-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-email-password.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","x-example":"password"}},"required":["email","password"]}}}}}},"\/account\/sessions\/magic-url":{"put":{"summary":"Create session (deprecated)","operationId":"accountUpdateMagicURLSession","tags":["account"],"description":"Use this endpoint to create a session from token. Provide the **userId** and **secret** parameters from the successful response of authentication flows initiated by token creation. For example, magic URL and phone login.","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateMagicURLSession","weight":17,"cookies":false,"type":"","demo":"account\/update-magic-u-r-l-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session.md","rate-limit":10,"rate-time":3600,"rate-key":"ip:{ip},userId:{param-userId}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/account\/sessions\/oauth2\/{provider}":{"get":{"summary":"Create OAuth2 session","operationId":"accountCreateOAuth2Session","tags":["account"],"description":"Allow the user to login to their account using the OAuth2 provider of their choice. Each OAuth2 provider should be enabled from the Appwrite console first. Use the success and failure arguments to provide a redirect URL's back to your app when login is completed.\n\nIf there is already an active session, the new session will be attached to the logged-in account. If there are no active sessions, the server will attempt to look for a user with the same email address as the email received from the OAuth2 provider and attach the new session to the existing user. If no matching user is found - the server will create a new user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).\n","responses":{"301":{"description":"File"}},"x-appwrite":{"method":"createOAuth2Session","weight":9,"cookies":false,"type":"webAuth","demo":"account\/create-o-auth2session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-oauth2.md","rate-limit":50,"rate-time":3600,"rate-key":"ip:{ip}","scope":"sessions.write","platforms":["client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"provider","description":"OAuth2 Provider. Currently, supported providers are: amazon, apple, auth0, authentik, autodesk, bitbucket, bitly, box, dailymotion, discord, disqus, dropbox, etsy, facebook, github, gitlab, google, linkedin, microsoft, notion, oidc, okta, paypal, paypalSandbox, podio, salesforce, slack, spotify, stripe, tradeshift, tradeshiftBox, twitch, wordpress, yahoo, yammer, yandex, zoho, zoom.","required":true,"schema":{"type":"string","x-example":"amazon","enum":["amazon","apple","auth0","authentik","autodesk","bitbucket","bitly","box","dailymotion","discord","disqus","dropbox","etsy","facebook","github","gitlab","google","linkedin","microsoft","notion","oidc","okta","paypal","paypalSandbox","podio","salesforce","slack","spotify","stripe","tradeshift","tradeshiftBox","twitch","wordpress","yahoo","yammer","yandex","zoho","zoom","mock"],"x-enum-name":"OAuthProvider","x-enum-keys":[]},"in":"path"},{"name":"success","description":"URL to redirect back to your app after a successful login attempt. Only URLs from hostnames in your project's platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","required":false,"schema":{"type":"string","format":"url","x-example":"https:\/\/example.com","default":""},"in":"query"},{"name":"failure","description":"URL to redirect back to your app after a failed login attempt. Only URLs from hostnames in your project's platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","required":false,"schema":{"type":"string","format":"url","x-example":"https:\/\/example.com","default":""},"in":"query"},{"name":"token","description":"Include token credentials in the final redirect, useful for server-side integrations, or when cookies are not available.","required":false,"schema":{"type":"boolean","x-example":false,"default":false},"in":"query"},{"name":"scopes","description":"A list of custom OAuth2 scopes. Check each provider internal docs for a list of supported scopes. Maximum of 100 scopes are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/sessions\/token":{"post":{"summary":"Create session","operationId":"accountCreateSession","tags":["account"],"description":"Use this endpoint to create a session from token. Provide the **userId** and **secret** parameters from the successful response of authentication flows initiated by token creation. For example, magic URL and phone login.","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"createSession","weight":18,"cookies":false,"type":"","demo":"account\/create-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session.md","rate-limit":10,"rate-time":3600,"rate-key":"ip:{ip},userId:{param-userId}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Secret of a token generated by login methods. For example, the `createMagicURLToken` or `createPhoneToken` methods.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/account\/sessions\/{sessionId}":{"get":{"summary":"Get session","operationId":"accountGetSession","tags":["account"],"description":"Use this endpoint to get a logged in user's session using a Session ID. Inputting 'current' will return the current session being used.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"getSession","weight":26,"cookies":false,"type":"","demo":"account\/get-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-session.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/sessions","offline-key":"{sessionId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to get the current device session.","required":true,"schema":{"type":"string","x-example":"[SESSION_ID]"},"in":"path"}]},"patch":{"summary":"Update (or renew) a session","operationId":"accountUpdateSession","tags":["account"],"description":"Extend session's expiry to increase it's lifespan. Extending a session is useful when session length is short such as 5 minutes.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateSession","weight":34,"cookies":false,"type":"","demo":"account\/update-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-session.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to update the current device session.","required":true,"schema":{"type":"string","x-example":"[SESSION_ID]"},"in":"path"}]},"delete":{"summary":"Delete session","operationId":"accountDeleteSession","tags":["account"],"description":"Logout the user. Use 'current' as the session ID to logout on this device, use a session ID to logout on another device. If you're looking to logout the user on all devices, use [Delete Sessions](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#deleteSessions) instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSession","weight":33,"cookies":false,"type":"","demo":"account\/delete-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-session.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to delete the current device session.","required":true,"schema":{"type":"string","x-example":"[SESSION_ID]"},"in":"path"}]}},"\/account\/status":{"patch":{"summary":"Update status","operationId":"accountUpdateStatus","tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateStatus","weight":32,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/account\/targets\/push":{"post":{"summary":"Create a push target","operationId":"accountCreatePushTarget","tags":["account"],"description":"","responses":{"201":{"description":"Target","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/target"}}}}},"x-appwrite":{"method":"createPushTarget","weight":50,"cookies":false,"type":"","demo":"account\/create-push-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"targetId":{"type":"string","description":"Target ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[TARGET_ID]"},"identifier":{"type":"string","description":"The target identifier (token, email, phone etc.)","x-example":"[IDENTIFIER]"},"providerId":{"type":"string","description":"Provider ID. Message will be sent to this target from the specified provider ID. If no provider ID is set the first setup provider will be used.","x-example":"[PROVIDER_ID]"}},"required":["targetId","identifier"]}}}}}},"\/account\/targets\/{targetId}\/push":{"put":{"summary":"Update a push target","operationId":"accountUpdatePushTarget","tags":["account"],"description":"","responses":{"200":{"description":"Target","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/target"}}}}},"x-appwrite":{"method":"updatePushTarget","weight":51,"cookies":false,"type":"","demo":"account\/update-push-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"targetId","description":"Target ID.","required":true,"schema":{"type":"string","x-example":"[TARGET_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"identifier":{"type":"string","description":"The target identifier (token, email, phone etc.)","x-example":"[IDENTIFIER]"}},"required":["identifier"]}}}}},"delete":{"summary":"Delete a push target","operationId":"accountDeletePushTarget","tags":["account"],"description":"","responses":{"204":{"description":"No content","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/target"}}}}},"x-appwrite":{"method":"deletePushTarget","weight":52,"cookies":false,"type":"","demo":"account\/delete-push-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"targetId","description":"Target ID.","required":true,"schema":{"type":"string","x-example":"[TARGET_ID]"},"in":"path"}]}},"\/account\/tokens\/email":{"post":{"summary":"Create email token (OTP)","operationId":"accountCreateEmailToken","tags":["account"],"description":"Sends the user an email with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [POST \/v1\/account\/sessions\/token](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createSession) endpoint to complete the login process. The secret sent to the user's email is valid for 15 minutes.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createEmailToken","weight":16,"cookies":false,"type":"","demo":"account\/create-email-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-token-email.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"phrase":{"type":"boolean","description":"Toggle for security phrase. If enabled, email will be send with a randomly generated phrase and the phrase will also be included in the response. Confirming phrases match increases the security of your authentication flow.","x-example":false}},"required":["userId","email"]}}}}}},"\/account\/tokens\/magic-url":{"post":{"summary":"Create magic URL token","operationId":"accountCreateMagicURLToken","tags":["account"],"description":"Sends the user an email with a secret key for creating a session. If the provided user ID has not been registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [POST \/v1\/account\/sessions\/token](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createSession) endpoint to complete the login process. The link sent to the user's email address is valid for 1 hour. If you are on a mobile device you can leave the URL parameter empty, so that the login completion will be handled by your Appwrite instance by default.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).\n","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createMagicURLToken","weight":15,"cookies":false,"type":"","demo":"account\/create-magic-u-r-l-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-token-magic-url.md","rate-limit":60,"rate-time":3600,"rate-key":["url:{url},email:{param-email}","url:{url},ip:{ip}"],"scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"url":{"type":"string","description":"URL to redirect the user back to your app from the magic URL login. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"},"phrase":{"type":"boolean","description":"Toggle for security phrase. If enabled, email will be send with a randomly generated phrase and the phrase will also be included in the response. Confirming phrases match increases the security of your authentication flow.","x-example":false}},"required":["userId","email"]}}}}}},"\/account\/tokens\/phone":{"post":{"summary":"Create phone token","operationId":"accountCreatePhoneToken","tags":["account"],"description":"Sends the user an SMS with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [POST \/v1\/account\/sessions\/token](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createSession) endpoint to complete the login process. The secret sent to the user's phone is valid for 15 minutes.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createPhoneToken","weight":19,"cookies":false,"type":"","demo":"account\/create-phone-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-token-phone.md","rate-limit":10,"rate-time":3600,"rate-key":["url:{url},phone:{param-phone}","url:{url},ip:{ip}"],"scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"}},"required":["userId","phone"]}}}}}},"\/account\/verification":{"post":{"summary":"Create email verification","operationId":"accountCreateVerification","tags":["account"],"description":"Use this endpoint to send a verification message to your user email address to confirm they are the valid owners of that address. Both the **userId** and **secret** arguments will be passed as query parameters to the URL you have provided to be attached to the verification email. The provided URL should redirect the user back to your app and allow you to complete the verification process by verifying both the **userId** and **secret** parameters. Learn more about how to [complete the verification process](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateVerification). The verification link sent to the user's email address is valid for 7 days.\n\nPlease note that in order to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md), the only valid redirect URLs are the ones from domains you have set when adding your platforms in the console interface.\n","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createVerification","weight":38,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"url":{"type":"string","description":"URL to redirect the user back to your app from the verification email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"}},"required":["url"]}}}}},"put":{"summary":"Create email verification (confirmation)","operationId":"accountUpdateVerification","tags":["account"],"description":"Use this endpoint to complete the user email verification process. Use both the **userId** and **secret** parameters that were attached to your app URL to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"updateVerification","weight":39,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/account\/verification\/phone":{"post":{"summary":"Create phone verification","operationId":"accountCreatePhoneVerification","tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updatePhone) endpoint. Learn more about how to [complete the verification process](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createPhoneVerification","weight":40,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":["url:{url},userId:{userId}","url:{url},ip:{ip}"],"scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"put":{"summary":"Create phone verification (confirmation)","operationId":"accountUpdatePhoneVerification","tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"updatePhoneVerification","weight":41,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/avatars\/browsers\/{code}":{"get":{"summary":"Get browser icon","operationId":"avatarsGetBrowser","tags":["avatars"],"description":"You can use this endpoint to show different browser icons to your users. The code argument receives the browser code as it appears in your user [GET \/account\/sessions](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#getSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getBrowser","weight":54,"cookies":false,"type":"location","demo":"avatars\/get-browser.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-browser.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Browser Code.","required":true,"schema":{"type":"string","x-example":"aa","enum":["aa","an","ch","ci","cm","cr","ff","sf","mf","ps","oi","om","op","on"],"x-enum-name":"Browser","x-enum-keys":["Avant Browser","Android WebView Beta","Google Chrome","Google Chrome (iOS)","Google Chrome (Mobile)","Chromium","Mozilla Firefox","Safari","Mobile Safari","Microsoft Edge","Microsoft Edge (iOS)","Opera Mini","Opera","Opera (Next)"]},"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"}]}},"\/avatars\/credit-cards\/{code}":{"get":{"summary":"Get credit card icon","operationId":"avatarsGetCreditCard","tags":["avatars"],"description":"The credit card endpoint will return you the icon of the credit card provider you need. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getCreditCard","weight":53,"cookies":false,"type":"location","demo":"avatars\/get-credit-card.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-credit-card.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Credit Card Code. Possible values: amex, argencard, cabal, censosud, diners, discover, elo, hipercard, jcb, mastercard, naranja, targeta-shopping, union-china-pay, visa, mir, maestro.","required":true,"schema":{"type":"string","x-example":"amex","enum":["amex","argencard","cabal","censosud","diners","discover","elo","hipercard","jcb","mastercard","naranja","targeta-shopping","union-china-pay","visa","mir","maestro"],"x-enum-name":"CreditCard","x-enum-keys":["American Express","Argencard","Cabal","Consosud","Diners Club","Discover","Elo","Hipercard","JCB","Mastercard","Naranja","Tarjeta Shopping","Union China Pay","Visa","MIR","Maestro"]},"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"}]}},"\/avatars\/favicon":{"get":{"summary":"Get favicon","operationId":"avatarsGetFavicon","tags":["avatars"],"description":"Use this endpoint to fetch the favorite icon (AKA favicon) of any remote website URL.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFavicon","weight":57,"cookies":false,"type":"location","demo":"avatars\/get-favicon.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-favicon.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"url","description":"Website URL which you want to fetch the favicon from.","required":true,"schema":{"type":"string","format":"url","x-example":"https:\/\/example.com"},"in":"query"}]}},"\/avatars\/flags\/{code}":{"get":{"summary":"Get country flag","operationId":"avatarsGetFlag","tags":["avatars"],"description":"You can use this endpoint to show different country flags icons to your users. The code argument receives the 2 letter country code. Use width, height and quality arguments to change the output settings. Country codes follow the [ISO 3166-1](https:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFlag","weight":55,"cookies":false,"type":"location","demo":"avatars\/get-flag.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-flag.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Country Code. ISO Alpha-2 country code format.","required":true,"schema":{"type":"string","x-example":"af","enum":["af","ao","al","ad","ae","ar","am","ag","au","at","az","bi","be","bj","bf","bd","bg","bh","bs","ba","by","bz","bo","br","bb","bn","bt","bw","cf","ca","ch","cl","cn","ci","cm","cd","cg","co","km","cv","cr","cu","cy","cz","de","dj","dm","dk","do","dz","ec","eg","er","es","ee","et","fi","fj","fr","fm","ga","gb","ge","gh","gn","gm","gw","gq","gr","gd","gt","gy","hn","hr","ht","hu","id","in","ie","ir","iq","is","il","it","jm","jo","jp","kz","ke","kg","kh","ki","kn","kr","kw","la","lb","lr","ly","lc","li","lk","ls","lt","lu","lv","ma","mc","md","mg","mv","mx","mh","mk","ml","mt","mm","me","mn","mz","mr","mu","mw","my","na","ne","ng","ni","nl","no","np","nr","nz","om","pk","pa","pe","ph","pw","pg","pl","kp","pt","py","qa","ro","ru","rw","sa","sd","sn","sg","sb","sl","sv","sm","so","rs","ss","st","sr","sk","si","se","sz","sc","sy","td","tg","th","tj","tm","tl","to","tt","tn","tr","tv","tz","ug","ua","uy","us","uz","va","vc","ve","vn","vu","ws","ye","za","zm","zw"],"x-enum-name":"Flag","x-enum-keys":["Afghanistan","Angola","Albania","Andorra","United Arab Emirates","Argentina","Armenia","Antigua and Barbuda","Australia","Austria","Azerbaijan","Burundi","Belgium","Benin","Burkina Faso","Bangladesh","Bulgaria","Bahrain","Bahamas","Bosnia and Herzegovina","Belarus","Belize","Bolivia","Brazil","Barbados","Brunei Darussalam","Bhutan","Botswana","Central African Republic","Canada","Switzerland","Chile","China","C\u00f4te d'Ivoire","Cameroon","Democratic Republic of the Congo","Republic of the Congo","Colombia","Comoros","Cape Verde","Costa Rica","Cuba","Cyprus","Czech Republic","Germany","Djibouti","Dominica","Denmark","Dominican Republic","Algeria","Ecuador","Egypt","Eritrea","Spain","Estonia","Ethiopia","Finland","Fiji","France","Micronesia (Federated States of)","Gabon","United Kingdom","Georgia","Ghana","Guinea","Gambia","Guinea-Bissau","Equatorial Guinea","Greece","Grenada","Guatemala","Guyana","Honduras","Croatia","Haiti","Hungary","Indonesia","India","Ireland","Iran (Islamic Republic of)","Iraq","Iceland","Israel","Italy","Jamaica","Jordan","Japan","Kazakhstan","Kenya","Kyrgyzstan","Cambodia","Kiribati","Saint Kitts and Nevis","South Korea","Kuwait","Lao People's Democratic Republic","Lebanon","Liberia","Libya","Saint Lucia","Liechtenstein","Sri Lanka","Lesotho","Lithuania","Luxembourg","Latvia","Morocco","Monaco","Moldova","Madagascar","Maldives","Mexico","Marshall Islands","North Macedonia","Mali","Malta","Myanmar","Montenegro","Mongolia","Mozambique","Mauritania","Mauritius","Malawi","Malaysia","Namibia","Niger","Nigeria","Nicaragua","Netherlands","Norway","Nepal","Nauru","New Zealand","Oman","Pakistan","Panama","Peru","Philippines","Palau","Papua New Guinea","Poland","North Korea","Portugal","Paraguay","Qatar","Romania","Russia","Rwanda","Saudi Arabia","Sudan","Senegal","Singapore","Solomon Islands","Sierra Leone","El Salvador","San Marino","Somalia","Serbia","South Sudan","Sao Tome and Principe","Suriname","Slovakia","Slovenia","Sweden","Eswatini","Seychelles","Syria","Chad","Togo","Thailand","Tajikistan","Turkmenistan","Timor-Leste","Tonga","Trinidad and Tobago","Tunisia","Turkey","Tuvalu","Tanzania","Uganda","Ukraine","Uruguay","United States","Uzbekistan","Vatican City","Saint Vincent and the Grenadines","Venezuela","Vietnam","Vanuatu","Samoa","Yemen","South Africa","Zambia","Zimbabwe"]},"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"}]}},"\/avatars\/image":{"get":{"summary":"Get image from URL","operationId":"avatarsGetImage","tags":["avatars"],"description":"Use this endpoint to fetch a remote image URL and crop it to any image size you want. This endpoint is very useful if you need to crop and display remote images in your app or in case you want to make sure a 3rd party image is properly served using a TLS protocol.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getImage","weight":56,"cookies":false,"type":"location","demo":"avatars\/get-image.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-image.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"url","description":"Image URL which you want to crop.","required":true,"schema":{"type":"string","format":"url","x-example":"https:\/\/example.com"},"in":"query"},{"name":"width","description":"Resize preview image width, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get user initials","operationId":"avatarsGetInitials","tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getInitials","weight":59,"cookies":false,"type":"location","demo":"avatars\/get-initials.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-initials.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"name","description":"Full Name. When empty, current user name or email will be used. Max length: 128 chars.","required":false,"schema":{"type":"string","x-example":"[NAME]","default":""},"in":"query"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":500},"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":500},"in":"query"},{"name":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"schema":{"type":"string","default":""},"in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR code","operationId":"avatarsGetQR","tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getQR","weight":58,"cookies":false,"type":"location","demo":"avatars\/get-q-r.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-qr.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"text","description":"Plain text to be converted to QR code image.","required":true,"schema":{"type":"string","x-example":"[TEXT]"},"in":"query"},{"name":"size","description":"QR code size. Pass an integer between 1 to 1000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":1,"default":400},"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":1},"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"schema":{"type":"boolean","x-example":false,"default":false},"in":"query"}]}},"\/console\/assistant":{"post":{"summary":"Ask Query","operationId":"assistantChat","tags":["assistant"],"description":"","responses":{"200":{"description":"File"}},"x-appwrite":{"method":"chat","weight":306,"cookies":false,"type":"","demo":"assistant\/chat.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/assistant\/chat.md","rate-limit":15,"rate-time":3600,"rate-key":"userId:{userId}","scope":"assistant.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"prompt":{"type":"string","description":"Prompt. A string containing questions asked to the AI assistant.","x-example":"[PROMPT]"}},"required":["prompt"]}}}}}},"\/console\/variables":{"get":{"summary":"Get variables","operationId":"consoleVariables","tags":["console"],"description":"Get all Environment Variables that are relevant for the console.","responses":{"200":{"description":"Console Variables","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/consoleVariables"}}}}},"x-appwrite":{"method":"variables","weight":305,"cookies":false,"type":"","demo":"console\/variables.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/console\/variables.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/databases":{"get":{"summary":"List databases","operationId":"databasesList","tags":["databases"],"description":"Get a list of all databases from the current Appwrite project. You can use the search parameter to filter your results.","responses":{"200":{"description":"Databases List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/databaseList"}}}}},"x-appwrite":{"method":"list","weight":64,"cookies":false,"type":"","demo":"databases\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create database","operationId":"databasesCreate","tags":["databases"],"description":"Create a new Database.\n","responses":{"201":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"create","weight":63,"cookies":false,"type":"","demo":"databases\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"databaseId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[DATABASE_ID]"},"name":{"type":"string","description":"Database name. Max length: 128 chars.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Is the database enabled? When set to 'disabled', users cannot access the database but Server SDKs with an API key can still read and write to the database. No data is lost when this is toggled.","x-example":false}},"required":["databaseId","name"]}}}}}},"\/databases\/usage":{"get":{"summary":"Get usage stats for the database","operationId":"databasesGetUsage","tags":["databases"],"description":"","responses":{"200":{"description":"UsageDatabases","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageDatabases"}}}}},"x-appwrite":{"method":"getUsage","weight":108,"cookies":false,"type":"","demo":"databases\/get-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"`Date range.","required":false,"schema":{"type":"string","x-example":"24h","enum":["24h","30d","90d"],"x-enum-name":"DatabaseUsageRange","x-enum-keys":["Twenty Four Hours","Thirty Days","Ninety Days"],"default":"30d"},"in":"query"}]}},"\/databases\/{databaseId}":{"get":{"summary":"Get database","operationId":"databasesGet","tags":["databases"],"description":"Get a database by its unique ID. This endpoint response returns a JSON object with the database metadata.","responses":{"200":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"get","weight":65,"cookies":false,"type":"","demo":"databases\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}]},"put":{"summary":"Update database","operationId":"databasesUpdate","tags":["databases"],"description":"Update a database by its unique ID.","responses":{"200":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"update","weight":67,"cookies":false,"type":"","demo":"databases\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Database name. Max length: 128 chars.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Is database enabled? When set to 'disabled', users cannot access the database but Server SDKs with an API key can still read and write to the database. No data is lost when this is toggled.","x-example":false}},"required":["name"]}}}}},"delete":{"summary":"Delete database","operationId":"databasesDelete","tags":["databases"],"description":"Delete a database by its unique ID. Only API keys with with databases.write scope can delete a database.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":68,"cookies":false,"type":"","demo":"databases\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections":{"get":{"summary":"List collections","operationId":"databasesListCollections","tags":["databases"],"description":"Get a list of all collections that belong to the provided databaseId. You can use the search parameter to filter your results.","responses":{"200":{"description":"Collections List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collectionList"}}}}},"x-appwrite":{"method":"listCollections","weight":70,"cookies":false,"type":"","demo":"databases\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, documentSecurity","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create collection","operationId":"databasesCreateCollection","tags":["databases"],"description":"Create a new Collection. Before using this route, you should create a new database resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"createCollection","weight":69,"cookies":false,"type":"","demo":"databases\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permissions strings. By default, no user is granted with any permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":false},"enabled":{"type":"boolean","description":"Is collection enabled? When set to 'disabled', users cannot access the collection but Server SDKs with and API key can still read and write to the collection. No data is lost when this is toggled.","x-example":false}},"required":["collectionId","name"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}":{"get":{"summary":"Get collection","operationId":"databasesGetCollection","tags":["databases"],"description":"Get a collection by its unique ID. This endpoint response returns a JSON object with the collection metadata.","responses":{"200":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"getCollection","weight":71,"cookies":false,"type":"","demo":"databases\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]},"put":{"summary":"Update collection","operationId":"databasesUpdateCollection","tags":["databases"],"description":"Update a collection by its unique ID.","responses":{"200":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"updateCollection","weight":73,"cookies":false,"type":"","demo":"databases\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":false},"enabled":{"type":"boolean","description":"Is collection enabled? When set to 'disabled', users cannot access the collection but Server SDKs with and API key can still read and write to the collection. No data is lost when this is toggled.","x-example":false}},"required":["name"]}}}}},"delete":{"summary":"Delete collection","operationId":"databasesDeleteCollection","tags":["databases"],"description":"Delete a collection by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteCollection","weight":74,"cookies":false,"type":"","demo":"databases\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes":{"get":{"summary":"List attributes","operationId":"databasesListAttributes","tags":["databases"],"description":"","responses":{"200":{"description":"Attributes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeList"}}}}},"x-appwrite":{"method":"listAttributes","weight":85,"cookies":false,"type":"","demo":"databases\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: key, type, size, required, array, status, error","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create boolean attribute","operationId":"databasesCreateBooleanAttribute","tags":["databases"],"description":"Create a boolean attribute.\n","responses":{"202":{"description":"AttributeBoolean","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeBoolean"}}}}},"x-appwrite":{"method":"createBooleanAttribute","weight":82,"cookies":false,"type":"","demo":"databases\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":false},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean\/{key}":{"patch":{"summary":"Update boolean attribute","operationId":"databasesUpdateBooleanAttribute","tags":["databases"],"description":"","responses":{"200":{"description":"AttributeBoolean","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeBoolean"}}}}},"x-appwrite":{"method":"updateBooleanAttribute","weight":94,"cookies":false,"type":"","demo":"databases\/update-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":false,"x-nullable":true}},"required":["required","default"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/datetime":{"post":{"summary":"Create datetime attribute","operationId":"databasesCreateDatetimeAttribute","tags":["databases"],"description":"","responses":{"202":{"description":"AttributeDatetime","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeDatetime"}}}}},"x-appwrite":{"method":"createDatetimeAttribute","weight":83,"cookies":false,"type":"","demo":"databases\/create-datetime-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-datetime-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for the attribute in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/datetime\/{key}":{"patch":{"summary":"Update dateTime attribute","operationId":"databasesUpdateDatetimeAttribute","tags":["databases"],"description":"","responses":{"200":{"description":"AttributeDatetime","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeDatetime"}}}}},"x-appwrite":{"method":"updateDatetimeAttribute","weight":95,"cookies":false,"type":"","demo":"databases\/update-datetime-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-datetime-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null,"x-nullable":true}},"required":["required","default"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create email attribute","operationId":"databasesCreateEmailAttribute","tags":["databases"],"description":"Create an email attribute.\n","responses":{"202":{"description":"AttributeEmail","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeEmail"}}}}},"x-appwrite":{"method":"createEmailAttribute","weight":76,"cookies":false,"type":"","demo":"databases\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"email@example.com"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/email\/{key}":{"patch":{"summary":"Update email attribute","operationId":"databasesUpdateEmailAttribute","tags":["databases"],"description":"Update an email attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeEmail","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeEmail"}}}}},"x-appwrite":{"method":"updateEmailAttribute","weight":88,"cookies":false,"type":"","demo":"databases\/update-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"email@example.com","x-nullable":true}},"required":["required","default"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create enum attribute","operationId":"databasesCreateEnumAttribute","tags":["databases"],"description":"","responses":{"202":{"description":"AttributeEnum","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeEnum"}}}}},"x-appwrite":{"method":"createEnumAttribute","weight":77,"cookies":false,"type":"","demo":"databases\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"elements":{"type":"array","description":"Array of elements in enumerated type. Uses length of longest element to determine size. Maximum of 100 elements are allowed, each 255 characters long.","x-example":null,"items":{"type":"string"}},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","elements","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/enum\/{key}":{"patch":{"summary":"Update enum attribute","operationId":"databasesUpdateEnumAttribute","tags":["databases"],"description":"Update an enum attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeEnum","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeEnum"}}}}},"x-appwrite":{"method":"updateEnumAttribute","weight":89,"cookies":false,"type":"","demo":"databases\/update-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-enum-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"elements":{"type":"array","description":"Array of elements in enumerated type. Uses length of longest element to determine size. Maximum of 100 elements are allowed, each 255 characters long.","x-example":null,"items":{"type":"string"}},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"[DEFAULT]","x-nullable":true}},"required":["elements","required","default"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create float attribute","operationId":"databasesCreateFloatAttribute","tags":["databases"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeFloat","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeFloat"}}}}},"x-appwrite":{"method":"createFloatAttribute","weight":81,"cookies":false,"type":"","demo":"databases\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"min":{"type":"number","description":"Minimum value to enforce on new documents","x-example":null},"max":{"type":"number","description":"Maximum value to enforce on new documents","x-example":null},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/float\/{key}":{"patch":{"summary":"Update float attribute","operationId":"databasesUpdateFloatAttribute","tags":["databases"],"description":"Update a float attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeFloat","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeFloat"}}}}},"x-appwrite":{"method":"updateFloatAttribute","weight":93,"cookies":false,"type":"","demo":"databases\/update-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"min":{"type":"number","description":"Minimum value to enforce on new documents","x-example":null},"max":{"type":"number","description":"Maximum value to enforce on new documents","x-example":null},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null,"x-nullable":true}},"required":["required","min","max","default"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create integer attribute","operationId":"databasesCreateIntegerAttribute","tags":["databases"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeInteger","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeInteger"}}}}},"x-appwrite":{"method":"createIntegerAttribute","weight":80,"cookies":false,"type":"","demo":"databases\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"min":{"type":"integer","description":"Minimum value to enforce on new documents","x-example":null},"max":{"type":"integer","description":"Maximum value to enforce on new documents","x-example":null},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/integer\/{key}":{"patch":{"summary":"Update integer attribute","operationId":"databasesUpdateIntegerAttribute","tags":["databases"],"description":"Update an integer attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeInteger","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeInteger"}}}}},"x-appwrite":{"method":"updateIntegerAttribute","weight":92,"cookies":false,"type":"","demo":"databases\/update-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"min":{"type":"integer","description":"Minimum value to enforce on new documents","x-example":null},"max":{"type":"integer","description":"Maximum value to enforce on new documents","x-example":null},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null,"x-nullable":true}},"required":["required","min","max","default"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP address attribute","operationId":"databasesCreateIpAttribute","tags":["databases"],"description":"Create IP address attribute.\n","responses":{"202":{"description":"AttributeIP","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeIp"}}}}},"x-appwrite":{"method":"createIpAttribute","weight":78,"cookies":false,"type":"","demo":"databases\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/ip\/{key}":{"patch":{"summary":"Update IP address attribute","operationId":"databasesUpdateIpAttribute","tags":["databases"],"description":"Update an ip attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeIP","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeIp"}}}}},"x-appwrite":{"method":"updateIpAttribute","weight":90,"cookies":false,"type":"","demo":"databases\/update-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null,"x-nullable":true}},"required":["required","default"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/relationship":{"post":{"summary":"Create relationship attribute","operationId":"databasesCreateRelationshipAttribute","tags":["databases"],"description":"Create relationship attribute. [Learn more about relationship attributes](https:\/\/appwrite.io\/docs\/databases-relationships#relationship-attributes).\n","responses":{"202":{"description":"AttributeRelationship","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeRelationship"}}}}},"x-appwrite":{"method":"createRelationshipAttribute","weight":84,"cookies":false,"type":"","demo":"databases\/create-relationship-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-relationship-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"relatedCollectionId":{"type":"string","description":"Related Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","x-example":"[RELATED_COLLECTION_ID]"},"type":{"type":"string","description":"Relation type","x-example":"oneToOne","enum":["oneToOne","manyToOne","manyToMany","oneToMany"],"x-enum-name":"RelationshipType","x-enum-keys":[]},"twoWay":{"type":"boolean","description":"Is Two Way?","x-example":false},"key":{"type":"string","description":"Attribute Key.","x-example":null},"twoWayKey":{"type":"string","description":"Two Way Attribute Key.","x-example":null},"onDelete":{"type":"string","description":"Constraints option","x-example":"cascade","enum":["cascade","restrict","setNull"],"x-enum-name":"RelationMutate","x-enum-keys":[]}},"required":["relatedCollectionId","type"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create string attribute","operationId":"databasesCreateStringAttribute","tags":["databases"],"description":"Create a string attribute.\n","responses":{"202":{"description":"AttributeString","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeString"}}}}},"x-appwrite":{"method":"createStringAttribute","weight":75,"cookies":false,"type":"","demo":"databases\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"size":{"type":"integer","description":"Attribute size for text attributes, in number of characters.","x-example":1},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false},"encrypt":{"type":"boolean","description":"Toggle encryption for the attribute. Encryption enhances security by not storing any plain text values in the database. However, encrypted attributes cannot be queried.","x-example":false}},"required":["key","size","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/string\/{key}":{"patch":{"summary":"Update string attribute","operationId":"databasesUpdateStringAttribute","tags":["databases"],"description":"Update a string attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeString","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeString"}}}}},"x-appwrite":{"method":"updateStringAttribute","weight":87,"cookies":false,"type":"","demo":"databases\/update-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"[DEFAULT]","x-nullable":true}},"required":["required","default"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL attribute","operationId":"databasesCreateUrlAttribute","tags":["databases"],"description":"Create a URL attribute.\n","responses":{"202":{"description":"AttributeURL","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeUrl"}}}}},"x-appwrite":{"method":"createUrlAttribute","weight":79,"cookies":false,"type":"","demo":"databases\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"https:\/\/example.com"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url\/{key}":{"patch":{"summary":"Update URL attribute","operationId":"databasesUpdateUrlAttribute","tags":["databases"],"description":"Update an url attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeURL","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeUrl"}}}}},"x-appwrite":{"method":"updateUrlAttribute","weight":91,"cookies":false,"type":"","demo":"databases\/update-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"https:\/\/example.com","x-nullable":true}},"required":["required","default"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get attribute","operationId":"databasesGetAttribute","tags":["databases"],"description":"","responses":{"200":{"description":"AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, or AttributeDatetime, or AttributeRelationship, or AttributeString","content":{"application\/json":{"schema":{"oneOf":[{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeRelationship"},{"$ref":"#\/components\/schemas\/attributeString"}]}}}}},"x-appwrite":{"method":"getAttribute","weight":86,"cookies":false,"type":"","demo":"databases\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}]},"delete":{"summary":"Delete attribute","operationId":"databasesDeleteAttribute","tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":97,"cookies":false,"type":"","demo":"databases\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/{key}\/relationship":{"patch":{"summary":"Update relationship attribute","operationId":"databasesUpdateRelationshipAttribute","tags":["databases"],"description":"Update relationship attribute. [Learn more about relationship attributes](https:\/\/appwrite.io\/docs\/databases-relationships#relationship-attributes).\n","responses":{"200":{"description":"AttributeRelationship","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeRelationship"}}}}},"x-appwrite":{"method":"updateRelationshipAttribute","weight":96,"cookies":false,"type":"","demo":"databases\/update-relationship-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-relationship-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"onDelete":{"type":"string","description":"Constraints option","x-example":"cascade","enum":["cascade","restrict","setNull"],"x-enum-name":"RelationMutate","x-enum-keys":[]}}}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List documents","operationId":"databasesListDocuments","tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/documentList"}}}}},"x-appwrite":{"method":"listDocuments","weight":103,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"post":{"summary":"Create document","operationId":"databasesCreateDocument","tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"createDocument","weight":102,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, only the current user is granted all permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get document","operationId":"databasesGetDocument","tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"getDocument","weight":104,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"patch":{"summary":"Update document","operationId":"databasesUpdateDocument","tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"updateDocument","weight":106,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete document","operationId":"databasesDeleteDocument","tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":107,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}\/logs":{"get":{"summary":"List document logs","operationId":"databasesListDocumentLogs","tags":["databases"],"description":"Get the document activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listDocumentLogs","weight":105,"cookies":false,"type":"","demo":"databases\/list-document-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes":{"get":{"summary":"List indexes","operationId":"databasesListIndexes","tags":["databases"],"description":"","responses":{"200":{"description":"Indexes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/indexList"}}}}},"x-appwrite":{"method":"listIndexes","weight":99,"cookies":false,"type":"","demo":"databases\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: key, type, status, attributes, error","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"post":{"summary":"Create index","operationId":"databasesCreateIndex","tags":["databases"],"description":"","responses":{"202":{"description":"Index","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/index"}}}}},"x-appwrite":{"method":"createIndex","weight":98,"cookies":false,"type":"","demo":"databases\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Index Key.","x-example":null},"type":{"type":"string","description":"Index type.","x-example":"key","enum":["key","fulltext","unique","spatial"],"x-enum-name":"IndexType","x-enum-keys":[]},"attributes":{"type":"array","description":"Array of attributes to index. Maximum of 100 attributes are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders. Maximum of 100 orders are allowed.","x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get index","operationId":"databasesGetIndex","tags":["databases"],"description":"","responses":{"200":{"description":"Index","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/index"}}}}},"x-appwrite":{"method":"getIndex","weight":100,"cookies":false,"type":"","demo":"databases\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Index Key.","required":true,"schema":{"type":"string"},"in":"path"}]},"delete":{"summary":"Delete index","operationId":"databasesDeleteIndex","tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":101,"cookies":false,"type":"","demo":"databases\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Index Key.","required":true,"schema":{"type":"string"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/logs":{"get":{"summary":"List collection logs","operationId":"databasesListCollectionLogs","tags":["databases"],"description":"Get the collection activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listCollectionLogs","weight":72,"cookies":false,"type":"","demo":"databases\/list-collection-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/usage":{"get":{"summary":"Get usage stats for a collection","operationId":"databasesGetCollectionUsage","tags":["databases"],"description":"","responses":{"200":{"description":"UsageCollection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageCollection"}}}}},"x-appwrite":{"method":"getCollectionUsage","weight":110,"cookies":false,"type":"","demo":"databases\/get-collection-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"range","description":"Date range.","required":false,"schema":{"type":"string","x-example":"24h","enum":["24h","30d","90d"],"x-enum-name":"DatabaseUsageRange","x-enum-keys":["Twenty Four Hours","Thirty Days","Ninety Days"],"default":"30d"},"in":"query"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/logs":{"get":{"summary":"List database logs","operationId":"databasesListLogs","tags":["databases"],"description":"Get the database activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listLogs","weight":66,"cookies":false,"type":"","demo":"databases\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/databases\/{databaseId}\/usage":{"get":{"summary":"Get usage stats for the database","operationId":"databasesGetDatabaseUsage","tags":["databases"],"description":"","responses":{"200":{"description":"UsageDatabase","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageDatabase"}}}}},"x-appwrite":{"method":"getDatabaseUsage","weight":109,"cookies":false,"type":"","demo":"databases\/get-database-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"range","description":"`Date range.","required":false,"schema":{"type":"string","x-example":"24h","enum":["24h","30d","90d"],"x-enum-name":"DatabaseUsageRange","x-enum-keys":["Twenty Four Hours","Thirty Days","Ninety Days"],"default":"30d"},"in":"query"}]}},"\/functions":{"get":{"summary":"List functions","operationId":"functionsList","tags":["functions"],"description":"Get a list of all the project's functions. You can use the query params to filter your results.","responses":{"200":{"description":"Functions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/functionList"}}}}},"x-appwrite":{"method":"list","weight":268,"cookies":false,"type":"","demo":"functions\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-functions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, runtime, deployment, schedule, scheduleNext, schedulePrevious, timeout, entrypoint, commands, installationId","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create function","operationId":"functionsCreate","tags":["functions"],"description":"Create a new function. You can pass a list of [permissions](https:\/\/appwrite.io\/docs\/permissions) to allow different project users or team with access to execute the function using the client API.","responses":{"201":{"description":"Function","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/function"}}}}},"x-appwrite":{"method":"create","weight":267,"cookies":false,"type":"","demo":"functions\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"functionId":{"type":"string","description":"Function ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[FUNCTION_ID]"},"name":{"type":"string","description":"Function name. Max length: 128 chars.","x-example":"[NAME]"},"runtime":{"type":"string","description":"Execution runtime.","x-example":"node-18.0","enum":["node-18.0","php-8.0","ruby-3.1","python-3.9"],"x-enum-name":null,"x-enum-keys":[]},"execute":{"type":"array","description":"An array of role strings with execution permissions. By default no user is granted with any execute permissions. [learn more about roles](https:\/\/appwrite.io\/docs\/permissions#permission-roles). Maximum of 100 roles are allowed, each 64 characters long.","x-example":"[\"any\"]","items":{"type":"string"}},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","x-example":null},"timeout":{"type":"integer","description":"Function maximum execution time in seconds.","x-example":1},"enabled":{"type":"boolean","description":"Is function enabled? When set to 'disabled', users cannot access the function but Server SDKs with and API key can still access the function. No data is lost when this is toggled.","x-example":false},"logging":{"type":"boolean","description":"Whether executions will be logged. When set to false, executions will not be logged, but will reduce resource used by your Appwrite project.","x-example":false},"entrypoint":{"type":"string","description":"Entrypoint File. This path is relative to the \"providerRootDirectory\".","x-example":"[ENTRYPOINT]"},"commands":{"type":"string","description":"Build Commands.","x-example":"[COMMANDS]"},"installationId":{"type":"string","description":"Appwrite Installation ID for VCS (Version Control System) deployment.","x-example":"[INSTALLATION_ID]"},"providerRepositoryId":{"type":"string","description":"Repository ID of the repo linked to the function.","x-example":"[PROVIDER_REPOSITORY_ID]"},"providerBranch":{"type":"string","description":"Production branch for the repo linked to the function.","x-example":"[PROVIDER_BRANCH]"},"providerSilentMode":{"type":"boolean","description":"Is the VCS (Version Control System) connection in silent mode for the repo linked to the function? In silent mode, comments will not be made on commits and pull requests.","x-example":false},"providerRootDirectory":{"type":"string","description":"Path to function code in the linked repo.","x-example":"[PROVIDER_ROOT_DIRECTORY]"},"templateRepository":{"type":"string","description":"Repository name of the template.","x-example":"[TEMPLATE_REPOSITORY]"},"templateOwner":{"type":"string","description":"The name of the owner of the template.","x-example":"[TEMPLATE_OWNER]"},"templateRootDirectory":{"type":"string","description":"Path to function code in the template repo.","x-example":"[TEMPLATE_ROOT_DIRECTORY]"},"templateBranch":{"type":"string","description":"Production branch for the repo linked to the function template.","x-example":"[TEMPLATE_BRANCH]"}},"required":["functionId","name","runtime"]}}}}}},"\/functions\/runtimes":{"get":{"summary":"List runtimes","operationId":"functionsListRuntimes","tags":["functions"],"description":"Get a list of all runtimes that are currently active on your instance.","responses":{"200":{"description":"Runtimes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/runtimeList"}}}}},"x-appwrite":{"method":"listRuntimes","weight":269,"cookies":false,"type":"","demo":"functions\/list-runtimes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-runtimes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/functions\/usage":{"get":{"summary":"Get functions usage","operationId":"functionsGetUsage","tags":["functions"],"description":"","responses":{"200":{"description":"UsageFunctions","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageFunctions"}}}}},"x-appwrite":{"method":"getUsage","weight":272,"cookies":false,"type":"","demo":"functions\/get-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"schema":{"type":"string","x-example":"24h","enum":["24h","30d","90d"],"x-enum-name":"FunctionUsageRange","x-enum-keys":["Twenty Four Hours","Thirty Days","Ninety Days"],"default":"30d"},"in":"query"}]}},"\/functions\/{functionId}":{"get":{"summary":"Get function","operationId":"functionsGet","tags":["functions"],"description":"Get a function by its unique ID.","responses":{"200":{"description":"Function","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/function"}}}}},"x-appwrite":{"method":"get","weight":270,"cookies":false,"type":"","demo":"functions\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}]},"put":{"summary":"Update function","operationId":"functionsUpdate","tags":["functions"],"description":"Update function by its unique ID.","responses":{"200":{"description":"Function","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/function"}}}}},"x-appwrite":{"method":"update","weight":273,"cookies":false,"type":"","demo":"functions\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Function name. Max length: 128 chars.","x-example":"[NAME]"},"runtime":{"type":"string","description":"Execution runtime.","x-example":"node-18.0","enum":["node-18.0","php-8.0","ruby-3.1","python-3.9"],"x-enum-name":null,"x-enum-keys":[]},"execute":{"type":"array","description":"An array of role strings with execution permissions. By default no user is granted with any execute permissions. [learn more about roles](https:\/\/appwrite.io\/docs\/permissions#permission-roles). Maximum of 100 roles are allowed, each 64 characters long.","x-example":"[\"any\"]","items":{"type":"string"}},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","x-example":null},"timeout":{"type":"integer","description":"Maximum execution time in seconds.","x-example":1},"enabled":{"type":"boolean","description":"Is function enabled? When set to 'disabled', users cannot access the function but Server SDKs with and API key can still access the function. No data is lost when this is toggled.","x-example":false},"logging":{"type":"boolean","description":"Whether executions will be logged. When set to false, executions will not be logged, but will reduce resource used by your Appwrite project.","x-example":false},"entrypoint":{"type":"string","description":"Entrypoint File. This path is relative to the \"providerRootDirectory\".","x-example":"[ENTRYPOINT]"},"commands":{"type":"string","description":"Build Commands.","x-example":"[COMMANDS]"},"installationId":{"type":"string","description":"Appwrite Installation ID for VCS (Version Controle System) deployment.","x-example":"[INSTALLATION_ID]"},"providerRepositoryId":{"type":"string","description":"Repository ID of the repo linked to the function","x-example":"[PROVIDER_REPOSITORY_ID]"},"providerBranch":{"type":"string","description":"Production branch for the repo linked to the function","x-example":"[PROVIDER_BRANCH]"},"providerSilentMode":{"type":"boolean","description":"Is the VCS (Version Control System) connection in silent mode for the repo linked to the function? In silent mode, comments will not be made on commits and pull requests.","x-example":false},"providerRootDirectory":{"type":"string","description":"Path to function code in the linked repo.","x-example":"[PROVIDER_ROOT_DIRECTORY]"}},"required":["name"]}}}}},"delete":{"summary":"Delete function","operationId":"functionsDelete","tags":["functions"],"description":"Delete a function by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":276,"cookies":false,"type":"","demo":"functions\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/deployments":{"get":{"summary":"List deployments","operationId":"functionsListDeployments","tags":["functions"],"description":"Get a list of all the project's code deployments. You can use the query params to filter your results.","responses":{"200":{"description":"Deployments List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deploymentList"}}}}},"x-appwrite":{"method":"listDeployments","weight":278,"cookies":false,"type":"","demo":"functions\/list-deployments.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-deployments.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: size, buildId, activate, entrypoint, commands","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create deployment","operationId":"functionsCreateDeployment","tags":["functions"],"description":"Create a new function code deployment. Use this endpoint to upload a new version of your code function. To execute your newly uploaded code, you'll need to update the function's deployment to use your new deployment UID.\n\nThis endpoint accepts a tar.gz file compressed with your code. Make sure to include any dependencies your code has within the compressed file. You can learn more about code packaging in the [Appwrite Cloud Functions tutorial](https:\/\/appwrite.io\/docs\/functions).\n\nUse the \"command\" param to set the entrypoint used to execute your code.","responses":{"202":{"description":"Deployment","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deployment"}}}}},"x-appwrite":{"method":"createDeployment","weight":277,"cookies":false,"type":"","demo":"functions\/create-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":true,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}],"requestBody":{"content":{"multipart\/form-data":{"schema":{"type":"object","properties":{"entrypoint":{"type":"string","description":"Entrypoint File.","x-example":"[ENTRYPOINT]"},"commands":{"type":"string","description":"Build Commands.","x-example":"[COMMANDS]"},"code":{"type":"string","description":"Gzip file with your code package. When used with the Appwrite CLI, pass the path to your code directory, and the CLI will automatically package your code. Use a path that is within the current directory.","x-example":null},"activate":{"type":"boolean","description":"Automatically activate the deployment when it is finished building.","x-example":false}},"required":["code","activate"]}}}}}},"\/functions\/{functionId}\/deployments\/{deploymentId}":{"get":{"summary":"Get deployment","operationId":"functionsGetDeployment","tags":["functions"],"description":"Get a code deployment by its unique ID.","responses":{"200":{"description":"Deployment","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deployment"}}}}},"x-appwrite":{"method":"getDeployment","weight":279,"cookies":false,"type":"","demo":"functions\/get-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"schema":{"type":"string","x-example":"[DEPLOYMENT_ID]"},"in":"path"}]},"patch":{"summary":"Update function deployment","operationId":"functionsUpdateDeployment","tags":["functions"],"description":"Update the function code deployment ID using the unique function ID. Use this endpoint to switch the code deployment that should be executed by the execution endpoint.","responses":{"200":{"description":"Function","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/function"}}}}},"x-appwrite":{"method":"updateDeployment","weight":275,"cookies":false,"type":"","demo":"functions\/update-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-function-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"schema":{"type":"string","x-example":"[DEPLOYMENT_ID]"},"in":"path"}]},"delete":{"summary":"Delete deployment","operationId":"functionsDeleteDeployment","tags":["functions"],"description":"Delete a code deployment by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDeployment","weight":280,"cookies":false,"type":"","demo":"functions\/delete-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"schema":{"type":"string","x-example":"[DEPLOYMENT_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/deployments\/{deploymentId}\/builds\/{buildId}":{"post":{"summary":"Create build","operationId":"functionsCreateBuild","tags":["functions"],"description":"Create a new build for an Appwrite Function deployment. This endpoint can be used to retry a failed build.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"createBuild","weight":281,"cookies":false,"type":"","demo":"functions\/create-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"schema":{"type":"string","x-example":"[DEPLOYMENT_ID]"},"in":"path"},{"name":"buildId","description":"Build unique ID.","required":true,"schema":{"type":"string","x-example":"[BUILD_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/deployments\/{deploymentId}\/download":{"get":{"summary":"Download Deployment","operationId":"functionsDownloadDeployment","tags":["functions"],"description":"Get a Deployment's contents by its unique ID. This endpoint supports range requests for partial or streaming file download.","responses":{"200":{"description":"File"}},"x-appwrite":{"method":"downloadDeployment","weight":274,"cookies":false,"type":"location","demo":"functions\/download-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/download-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"schema":{"type":"string","x-example":"[DEPLOYMENT_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List executions","operationId":"functionsListExecutions","tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/executionList"}}}}},"x-appwrite":{"method":"listExecutions","weight":283,"cookies":false,"type":"","demo":"functions\/list-executions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-executions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, responseStatusCode, duration","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create execution","operationId":"functionsCreateExecution","tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/execution"}}}}},"x-appwrite":{"method":"createExecution","weight":282,"cookies":false,"type":"","demo":"functions\/create-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-execution.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"body":{"type":"string","description":"HTTP body of execution. Default value is empty string.","x-example":"[BODY]"},"async":{"type":"boolean","description":"Execute code in the background. Default value is false.","x-example":false},"path":{"type":"string","description":"HTTP path of execution. Path can include query params. Default value is \/","x-example":"[PATH]"},"method":{"type":"string","description":"HTTP method of execution. Default value is GET.","x-example":"GET","enum":["GET","POST","PUT","PATCH","DELETE","OPTIONS"],"x-enum-name":"ExecutionMethod","x-enum-keys":[]},"headers":{"type":"object","description":"HTTP headers of execution. Defaults to empty.","x-example":"{}"}}}}}}}},"\/functions\/{functionId}\/executions\/{executionId}":{"get":{"summary":"Get execution","operationId":"functionsGetExecution","tags":["functions"],"description":"Get a function execution log by its unique ID.","responses":{"200":{"description":"Execution","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/execution"}}}}},"x-appwrite":{"method":"getExecution","weight":284,"cookies":false,"type":"","demo":"functions\/get-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-execution.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"executionId","description":"Execution ID.","required":true,"schema":{"type":"string","x-example":"[EXECUTION_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/usage":{"get":{"summary":"Get function usage","operationId":"functionsGetFunctionUsage","tags":["functions"],"description":"","responses":{"200":{"description":"UsageFunction","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageFunction"}}}}},"x-appwrite":{"method":"getFunctionUsage","weight":271,"cookies":false,"type":"","demo":"functions\/get-function-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"range","description":"Date range.","required":false,"schema":{"type":"string","x-example":"24h","enum":["24h","30d","90d"],"x-enum-name":"FunctionUsageRange","x-enum-keys":["Twenty Four Hours","Thirty Days","Ninety Days"],"default":"30d"},"in":"query"}]}},"\/functions\/{functionId}\/variables":{"get":{"summary":"List variables","operationId":"functionsListVariables","tags":["functions"],"description":"Get a list of all variables of a specific function.","responses":{"200":{"description":"Variables List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variableList"}}}}},"x-appwrite":{"method":"listVariables","weight":286,"cookies":false,"type":"","demo":"functions\/list-variables.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-variables.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}]},"post":{"summary":"Create variable","operationId":"functionsCreateVariable","tags":["functions"],"description":"Create a new function environment variable. These variables can be accessed in the function at runtime as environment variables.","responses":{"201":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"createVariable","weight":285,"cookies":false,"type":"","demo":"functions\/create-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","x-example":"[VALUE]"}},"required":["key","value"]}}}}}},"\/functions\/{functionId}\/variables\/{variableId}":{"get":{"summary":"Get variable","operationId":"functionsGetVariable","tags":["functions"],"description":"Get a variable by its unique ID.","responses":{"200":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"getVariable","weight":287,"cookies":false,"type":"","demo":"functions\/get-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}]},"put":{"summary":"Update variable","operationId":"functionsUpdateVariable","tags":["functions"],"description":"Update variable by its unique ID.","responses":{"200":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"updateVariable","weight":288,"cookies":false,"type":"","demo":"functions\/update-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","x-example":"[VALUE]"}},"required":["key"]}}}}},"delete":{"summary":"Delete variable","operationId":"functionsDeleteVariable","tags":["functions"],"description":"Delete a variable by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteVariable","weight":289,"cookies":false,"type":"","demo":"functions\/delete-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}]}},"\/graphql":{"post":{"summary":"GraphQL endpoint","operationId":"graphqlQuery","tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/any"}}}}},"x-appwrite":{"method":"query","weight":304,"cookies":false,"type":"graphql","demo":"graphql\/query.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/graphql\/mutation":{"post":{"summary":"GraphQL endpoint","operationId":"graphqlMutation","tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/any"}}}}},"x-appwrite":{"method":"mutation","weight":303,"cookies":false,"type":"graphql","demo":"graphql\/mutation.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/health":{"get":{"summary":"Get HTTP","operationId":"healthGet","tags":["health"],"description":"Check the Appwrite HTTP server is up and responsive.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"get","weight":119,"cookies":false,"type":"","demo":"health\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/anti-virus":{"get":{"summary":"Get antivirus","operationId":"healthGetAntivirus","tags":["health"],"description":"Check the Appwrite Antivirus server is up and connection is successful.","responses":{"200":{"description":"Health Antivirus","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthAntivirus"}}}}},"x-appwrite":{"method":"getAntivirus","weight":138,"cookies":false,"type":"","demo":"health\/get-antivirus.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-storage-anti-virus.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/cache":{"get":{"summary":"Get cache","operationId":"healthGetCache","tags":["health"],"description":"Check the Appwrite in-memory cache servers are up and connection is successful.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"getCache","weight":122,"cookies":false,"type":"","demo":"health\/get-cache.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-cache.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/certificate":{"get":{"summary":"Get the SSL certificate for a domain","operationId":"healthGetCertificate","tags":["health"],"description":"Get the SSL certificate for a domain","responses":{"200":{"description":"Health Certificate","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthCertificate"}}}}},"x-appwrite":{"method":"getCertificate","weight":128,"cookies":false,"type":"","demo":"health\/get-certificate.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-certificate.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"domain","description":"string","required":false,"schema":{"type":"string"},"in":"query"}]}},"\/health\/db":{"get":{"summary":"Get DB","operationId":"healthGetDB","tags":["health"],"description":"Check the Appwrite database servers are up and connection is successful.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"getDB","weight":121,"cookies":false,"type":"","demo":"health\/get-d-b.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-db.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/pubsub":{"get":{"summary":"Get pubsub","operationId":"healthGetPubSub","tags":["health"],"description":"Check the Appwrite pub-sub servers are up and connection is successful.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"getPubSub","weight":124,"cookies":false,"type":"","demo":"health\/get-pub-sub.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-pubsub.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/queue":{"get":{"summary":"Get queue","operationId":"healthGetQueue","tags":["health"],"description":"Check the Appwrite queue messaging servers are up and connection is successful.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"getQueue","weight":123,"cookies":false,"type":"","demo":"health\/get-queue.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/queue\/builds":{"get":{"summary":"Get builds queue","operationId":"healthGetQueueBuilds","tags":["health"],"description":"Get the number of builds that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueBuilds","weight":130,"cookies":false,"type":"","demo":"health\/get-queue-builds.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-builds.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/certificates":{"get":{"summary":"Get certificates queue","operationId":"healthGetQueueCertificates","tags":["health"],"description":"Get the number of certificates that are waiting to be issued against [Letsencrypt](https:\/\/letsencrypt.org\/) in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueCertificates","weight":129,"cookies":false,"type":"","demo":"health\/get-queue-certificates.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-certificates.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/databases":{"get":{"summary":"Get databases queue","operationId":"healthGetQueueDatabases","tags":["health"],"description":"Get the number of database changes that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueDatabases","weight":131,"cookies":false,"type":"","demo":"health\/get-queue-databases.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-databases.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"name","description":"Queue name for which to check the queue size","required":false,"schema":{"type":"string","x-example":"[NAME]","default":"database_db_main"},"in":"query"},{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/deletes":{"get":{"summary":"Get deletes queue","operationId":"healthGetQueueDeletes","tags":["health"],"description":"Get the number of background destructive changes that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueDeletes","weight":132,"cookies":false,"type":"","demo":"health\/get-queue-deletes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-deletes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/failed\/{name}":{"get":{"summary":"Get number of failed queue jobs","operationId":"healthGetFailedJobs","tags":["health"],"description":"Returns the amount of failed jobs in a given queue.\n","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getFailedJobs","weight":139,"cookies":false,"type":"","demo":"health\/get-failed-jobs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-failed-queue-jobs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"name","description":"The name of the queue","required":true,"schema":{"type":"string","x-example":"v1-database","enum":["v1-database","v1-deletes","v1-audits","v1-mails","v1-functions","v1-usage","webhooksv1","v1-certificates","v1-builds","v1-messaging","v1-migrations","hamsterv1"],"x-enum-name":null,"x-enum-keys":[]},"in":"path"},{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/functions":{"get":{"summary":"Get functions queue","operationId":"healthGetQueueFunctions","tags":["health"],"description":"","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueFunctions","weight":136,"cookies":false,"type":"","demo":"health\/get-queue-functions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-functions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/logs":{"get":{"summary":"Get logs queue","operationId":"healthGetQueueLogs","tags":["health"],"description":"Get the number of logs that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueLogs","weight":127,"cookies":false,"type":"","demo":"health\/get-queue-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/mails":{"get":{"summary":"Get mails queue","operationId":"healthGetQueueMails","tags":["health"],"description":"Get the number of mails that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueMails","weight":133,"cookies":false,"type":"","demo":"health\/get-queue-mails.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-mails.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/messaging":{"get":{"summary":"Get messaging queue","operationId":"healthGetQueueMessaging","tags":["health"],"description":"Get the number of messages that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueMessaging","weight":134,"cookies":false,"type":"","demo":"health\/get-queue-messaging.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-messaging.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/migrations":{"get":{"summary":"Get migrations queue","operationId":"healthGetQueueMigrations","tags":["health"],"description":"Get the number of migrations that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueMigrations","weight":135,"cookies":false,"type":"","demo":"health\/get-queue-migrations.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-migrations.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/webhooks":{"get":{"summary":"Get webhooks queue","operationId":"healthGetQueueWebhooks","tags":["health"],"description":"Get the number of webhooks that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueWebhooks","weight":126,"cookies":false,"type":"","demo":"health\/get-queue-webhooks.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-webhooks.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/storage\/local":{"get":{"summary":"Get local storage","operationId":"healthGetStorageLocal","tags":["health"],"description":"Check the Appwrite local storage device is up and connection is successful.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"getStorageLocal","weight":137,"cookies":false,"type":"","demo":"health\/get-storage-local.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-storage-local.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/time":{"get":{"summary":"Get time","operationId":"healthGetTime","tags":["health"],"description":"Check the Appwrite server time is synced with Google remote NTP server. We use this technology to smoothly handle leap seconds with no disruptive events. The [Network Time Protocol](https:\/\/en.wikipedia.org\/wiki\/Network_Time_Protocol) (NTP) is used by hundreds of millions of computers and devices to synchronize their clocks over the Internet. If your computer sets its own clock, it likely uses NTP.","responses":{"200":{"description":"Health Time","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthTime"}}}}},"x-appwrite":{"method":"getTime","weight":125,"cookies":false,"type":"","demo":"health\/get-time.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-time.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/locale":{"get":{"summary":"Get user locale","operationId":"localeGet","tags":["locale"],"description":"Get the current user location based on IP. Returns an object with user country code, country name, continent name, continent code, ip address and suggested currency. You can use the locale header to get the data in a supported language.\n\n([IP Geolocation by DB-IP](https:\/\/db-ip.com))","responses":{"200":{"description":"Locale","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/locale"}}}}},"x-appwrite":{"method":"get","weight":111,"cookies":false,"type":"","demo":"locale\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-locale.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/localed","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/codes":{"get":{"summary":"List Locale Codes","operationId":"localeListCodes","tags":["locale"],"description":"List of all locale codes in [ISO 639-1](https:\/\/en.wikipedia.org\/wiki\/List_of_ISO_639-1_codes).","responses":{"200":{"description":"Locale codes list","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/localeCodeList"}}}}},"x-appwrite":{"method":"listCodes","weight":112,"cookies":false,"type":"","demo":"locale\/list-codes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-locale-codes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/localeCode","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/continents":{"get":{"summary":"List continents","operationId":"localeListContinents","tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/continentList"}}}}},"x-appwrite":{"method":"listContinents","weight":116,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/continents","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List countries","operationId":"localeListCountries","tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountries","weight":113,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/countries","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU countries","operationId":"localeListCountriesEU","tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountriesEU","weight":114,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/countries\/eu","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List countries phone codes","operationId":"localeListCountriesPhones","tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/phoneList"}}}}},"x-appwrite":{"method":"listCountriesPhones","weight":115,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/countries\/phones","offline-key":"","offline-response-key":"countryCode","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List currencies","operationId":"localeListCurrencies","tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/currencyList"}}}}},"x-appwrite":{"method":"listCurrencies","weight":117,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/currencies","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List languages","operationId":"localeListLanguages","tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/languageList"}}}}},"x-appwrite":{"method":"listLanguages","weight":118,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/languages","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/messaging\/messages":{"get":{"summary":"List messages","operationId":"messagingListMessages","tags":["messaging"],"description":"","responses":{"200":{"description":"Message list","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/messageList"}}}}},"x-appwrite":{"method":"listMessages","weight":363,"cookies":false,"type":"","demo":"messaging\/list-messages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-messages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: scheduledAt, deliveredAt, deliveredTotal, status, description, providerType","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]}},"\/messaging\/messages\/email":{"post":{"summary":"Create an email.","operationId":"messagingCreateEmail","tags":["messaging"],"description":"","responses":{"201":{"description":"Message","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/message"}}}}},"x-appwrite":{"method":"createEmail","weight":360,"cookies":false,"type":"","demo":"messaging\/create-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"messageId":{"type":"string","description":"Message ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[MESSAGE_ID]"},"subject":{"type":"string","description":"Email Subject.","x-example":"[SUBJECT]"},"content":{"type":"string","description":"Email Content.","x-example":"[CONTENT]"},"topics":{"type":"array","description":"List of Topic IDs.","x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","x-example":null,"items":{"type":"string"}},"cc":{"type":"array","description":"Array of target IDs to be added as CC.","x-example":null,"items":{"type":"string"}},"bcc":{"type":"array","description":"Array of target IDs to be added as BCC.","x-example":null,"items":{"type":"string"}},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":"MessageStatus","x-enum-keys":[]},"html":{"type":"boolean","description":"Is content of type HTML","x-example":false},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","x-example":null}},"required":["messageId","subject","content"]}}}}}},"\/messaging\/messages\/email\/{messageId}":{"patch":{"summary":"Update an email.","operationId":"messagingUpdateEmail","tags":["messaging"],"description":"","responses":{"200":{"description":"Message","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/message"}}}}},"x-appwrite":{"method":"updateEmail","weight":367,"cookies":false,"type":"","demo":"messaging\/update-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"schema":{"type":"string","x-example":"[MESSAGE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"topics":{"type":"array","description":"List of Topic IDs.","x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","x-example":null,"items":{"type":"string"}},"subject":{"type":"string","description":"Email Subject.","x-example":"[SUBJECT]"},"content":{"type":"string","description":"Email Content.","x-example":"[CONTENT]"},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":"MessageStatus","x-enum-keys":[]},"html":{"type":"boolean","description":"Is content of type HTML","x-example":false},"cc":{"type":"array","description":"Array of target IDs to be added as CC.","x-example":null,"items":{"type":"string"}},"bcc":{"type":"array","description":"Array of target IDs to be added as BCC.","x-example":null,"items":{"type":"string"}},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","x-example":null}}}}}}}},"\/messaging\/messages\/push":{"post":{"summary":"Create a push notification.","operationId":"messagingCreatePush","tags":["messaging"],"description":"","responses":{"201":{"description":"Message","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/message"}}}}},"x-appwrite":{"method":"createPush","weight":362,"cookies":false,"type":"","demo":"messaging\/create-push.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-push-notification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"messageId":{"type":"string","description":"Message ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[MESSAGE_ID]"},"title":{"type":"string","description":"Title for push notification.","x-example":"[TITLE]"},"body":{"type":"string","description":"Body for push notification.","x-example":"[BODY]"},"topics":{"type":"array","description":"List of Topic IDs.","x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","x-example":null,"items":{"type":"string"}},"data":{"type":"object","description":"Additional Data for push notification.","x-example":"{}"},"action":{"type":"string","description":"Action for push notification.","x-example":"[ACTION]"},"icon":{"type":"string","description":"Icon for push notification. Available only for Android and Web Platform.","x-example":"[ICON]"},"sound":{"type":"string","description":"Sound for push notification. Available only for Android and IOS Platform.","x-example":"[SOUND]"},"color":{"type":"string","description":"Color for push notification. Available only for Android Platform.","x-example":"[COLOR]"},"tag":{"type":"string","description":"Tag for push notification. Available only for Android Platform.","x-example":"[TAG]"},"badge":{"type":"string","description":"Badge for push notification. Available only for IOS Platform.","x-example":"[BADGE]"},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":"MessageStatus","x-enum-keys":[]},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","x-example":null}},"required":["messageId","title","body"]}}}}}},"\/messaging\/messages\/push\/{messageId}":{"patch":{"summary":"Update a push notification.","operationId":"messagingUpdatePush","tags":["messaging"],"description":"","responses":{"200":{"description":"Message","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/message"}}}}},"x-appwrite":{"method":"updatePush","weight":369,"cookies":false,"type":"","demo":"messaging\/update-push.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-push-notification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"schema":{"type":"string","x-example":"[MESSAGE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"topics":{"type":"array","description":"List of Topic IDs.","x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","x-example":null,"items":{"type":"string"}},"title":{"type":"string","description":"Title for push notification.","x-example":"[TITLE]"},"body":{"type":"string","description":"Body for push notification.","x-example":"[BODY]"},"data":{"type":"object","description":"Additional Data for push notification.","x-example":"{}"},"action":{"type":"string","description":"Action for push notification.","x-example":"[ACTION]"},"icon":{"type":"string","description":"Icon for push notification. Available only for Android and Web platforms.","x-example":"[ICON]"},"sound":{"type":"string","description":"Sound for push notification. Available only for Android and iOS platforms.","x-example":"[SOUND]"},"color":{"type":"string","description":"Color for push notification. Available only for Android platforms.","x-example":"[COLOR]"},"tag":{"type":"string","description":"Tag for push notification. Available only for Android platforms.","x-example":"[TAG]"},"badge":{"type":"integer","description":"Badge for push notification. Available only for iOS platforms.","x-example":null},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":"MessageStatus","x-enum-keys":[]},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","x-example":null}}}}}}}},"\/messaging\/messages\/sms":{"post":{"summary":"Create an SMS.","operationId":"messagingCreateSMS","tags":["messaging"],"description":"","responses":{"201":{"description":"Message","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/message"}}}}},"x-appwrite":{"method":"createSMS","weight":361,"cookies":false,"type":"","demo":"messaging\/create-s-m-s.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-sms.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"messageId":{"type":"string","description":"Message ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[MESSAGE_ID]"},"content":{"type":"string","description":"SMS Content.","x-example":"[CONTENT]"},"topics":{"type":"array","description":"List of Topic IDs.","x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","x-example":null,"items":{"type":"string"}},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":"MessageStatus","x-enum-keys":[]},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","x-example":null}},"required":["messageId","content"]}}}}}},"\/messaging\/messages\/sms\/{messageId}":{"patch":{"summary":"Update an SMS.","operationId":"messagingUpdateSMS","tags":["messaging"],"description":"","responses":{"200":{"description":"Message","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/message"}}}}},"x-appwrite":{"method":"updateSMS","weight":368,"cookies":false,"type":"","demo":"messaging\/update-s-m-s.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"schema":{"type":"string","x-example":"[MESSAGE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"topics":{"type":"array","description":"List of Topic IDs.","x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","x-example":null,"items":{"type":"string"}},"content":{"type":"string","description":"Email Content.","x-example":"[CONTENT]"},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":"MessageStatus","x-enum-keys":[]},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","x-example":null}}}}}}}},"\/messaging\/messages\/{messageId}":{"get":{"summary":"Get a message","operationId":"messagingGetMessage","tags":["messaging"],"description":"","responses":{"200":{"description":"Message","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/message"}}}}},"x-appwrite":{"method":"getMessage","weight":366,"cookies":false,"type":"","demo":"messaging\/get-message.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/get-message.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"schema":{"type":"string","x-example":"[MESSAGE_ID]"},"in":"path"}]},"delete":{"summary":"Delete a message","operationId":"messagingDelete","tags":["messaging"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":370,"cookies":false,"type":"","demo":"messaging\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-message.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"schema":{"type":"string","x-example":"[MESSAGE_ID]"},"in":"path"}]}},"\/messaging\/messages\/{messageId}\/logs":{"get":{"summary":"List message logs","operationId":"messagingListMessageLogs","tags":["messaging"],"description":"","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listMessageLogs","weight":364,"cookies":false,"type":"","demo":"messaging\/list-message-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/messages\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"schema":{"type":"string","x-example":"[MESSAGE_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/messaging\/messages\/{messageId}\/targets":{"get":{"summary":"List message targets","operationId":"messagingListTargets","tags":["messaging"],"description":"List the targets associated with a message as set via the targets attribute.","responses":{"200":{"description":"Target list","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/targetList"}}}}},"x-appwrite":{"method":"listTargets","weight":365,"cookies":false,"type":"","demo":"messaging\/list-targets.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-message-targets.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"schema":{"type":"string","x-example":"[MESSAGE_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, providerId, identifier, providerType","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/messaging\/providers":{"get":{"summary":"List providers","operationId":"messagingListProviders","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider list","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/providerList"}}}}},"x-appwrite":{"method":"listProviders","weight":335,"cookies":false,"type":"","demo":"messaging\/list-providers.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-providers.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, provider, type, enabled","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]}},"\/messaging\/providers\/apns":{"post":{"summary":"Create APNS provider","operationId":"messagingCreateAPNSProvider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createAPNSProvider","weight":334,"cookies":false,"type":"","demo":"messaging\/create-a-p-n-s-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-apns-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"authKey":{"type":"string","description":"APNS authentication key.","x-example":"[AUTH_KEY]"},"authKeyId":{"type":"string","description":"APNS authentication key ID.","x-example":"[AUTH_KEY_ID]"},"teamId":{"type":"string","description":"APNS team ID.","x-example":"[TEAM_ID]"},"bundleId":{"type":"string","description":"APNS bundle ID.","x-example":"[BUNDLE_ID]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name"]}}}}}},"\/messaging\/providers\/apns\/{providerId}":{"patch":{"summary":"Update APNS provider","operationId":"messagingUpdateAPNSProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateAPNSProvider","weight":347,"cookies":false,"type":"","demo":"messaging\/update-a-p-n-s-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-apns-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"authKey":{"type":"string","description":"APNS authentication key.","x-example":"[AUTH_KEY]"},"authKeyId":{"type":"string","description":"APNS authentication key ID.","x-example":"[AUTH_KEY_ID]"},"teamId":{"type":"string","description":"APNS team ID.","x-example":"[TEAM_ID]"},"bundleId":{"type":"string","description":"APNS bundle ID.","x-example":"[BUNDLE_ID]"}}}}}}}},"\/messaging\/providers\/fcm":{"post":{"summary":"Create FCM provider","operationId":"messagingCreateFCMProvider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createFCMProvider","weight":333,"cookies":false,"type":"","demo":"messaging\/create-f-c-m-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-fcm-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"serviceAccountJSON":{"type":"object","description":"FCM service account JSON.","x-example":"{}"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name"]}}}}}},"\/messaging\/providers\/fcm\/{providerId}":{"patch":{"summary":"Update FCM provider","operationId":"messagingUpdateFCMProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateFCMProvider","weight":346,"cookies":false,"type":"","demo":"messaging\/update-f-c-m-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-fcm-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"serviceAccountJSON":{"type":"object","description":"FCM service account JSON.","x-example":"{}"}}}}}}}},"\/messaging\/providers\/mailgun":{"post":{"summary":"Create Mailgun provider","operationId":"messagingCreateMailgunProvider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createMailgunProvider","weight":325,"cookies":false,"type":"","demo":"messaging\/create-mailgun-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-mailgun-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"apiKey":{"type":"string","description":"Mailgun API Key.","x-example":"[API_KEY]"},"domain":{"type":"string","description":"Mailgun Domain.","x-example":"[DOMAIN]"},"isEuRegion":{"type":"boolean","description":"Set as EU region.","x-example":false},"fromName":{"type":"string","description":"Sender Name.","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the reply to field for the mail. Default value is sender name. Reply to name must have reply to email as well.","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the reply to field for the mail. Default value is sender email. Reply to email must have reply to name as well.","x-example":"email@example.com"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name"]}}}}}},"\/messaging\/providers\/mailgun\/{providerId}":{"patch":{"summary":"Update Mailgun provider","operationId":"messagingUpdateMailgunProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateMailgunProvider","weight":338,"cookies":false,"type":"","demo":"messaging\/update-mailgun-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-mailgun-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"apiKey":{"type":"string","description":"Mailgun API Key.","x-example":"[API_KEY]"},"domain":{"type":"string","description":"Mailgun Domain.","x-example":"[DOMAIN]"},"isEuRegion":{"type":"boolean","description":"Set as EU region.","x-example":false},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"fromName":{"type":"string","description":"Sender Name.","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the reply to field for the mail. Default value is sender name.","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the reply to field for the mail. Default value is sender email.","x-example":"[REPLY_TO_EMAIL]"}}}}}}}},"\/messaging\/providers\/msg91":{"post":{"summary":"Create Msg91 provider","operationId":"messagingCreateMsg91Provider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createMsg91Provider","weight":328,"cookies":false,"type":"","demo":"messaging\/create-msg91provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-msg91-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"senderId":{"type":"string","description":"Msg91 Sender ID.","x-example":"[SENDER_ID]"},"authKey":{"type":"string","description":"Msg91 Auth Key.","x-example":"[AUTH_KEY]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name"]}}}}}},"\/messaging\/providers\/msg91\/{providerId}":{"patch":{"summary":"Update Msg91 provider","operationId":"messagingUpdateMsg91Provider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateMsg91Provider","weight":341,"cookies":false,"type":"","demo":"messaging\/update-msg91provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-msg91-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"senderId":{"type":"string","description":"Msg91 Sender ID.","x-example":"[SENDER_ID]"},"authKey":{"type":"string","description":"Msg91 Auth Key.","x-example":"[AUTH_KEY]"},"from":{"type":"string","description":"Sender number.","x-example":"[FROM]"}}}}}}}},"\/messaging\/providers\/sendgrid":{"post":{"summary":"Create Sendgrid provider","operationId":"messagingCreateSendgridProvider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createSendgridProvider","weight":326,"cookies":false,"type":"","demo":"messaging\/create-sendgrid-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-sengrid-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"apiKey":{"type":"string","description":"Sendgrid API key.","x-example":"[API_KEY]"},"fromName":{"type":"string","description":"Sender Name.","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the reply to field for the mail. Default value is sender name.","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the reply to field for the mail. Default value is sender email.","x-example":"email@example.com"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name"]}}}}}},"\/messaging\/providers\/sendgrid\/{providerId}":{"patch":{"summary":"Update Sendgrid provider","operationId":"messagingUpdateSendgridProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateSendgridProvider","weight":339,"cookies":false,"type":"","demo":"messaging\/update-sendgrid-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-sendgrid-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"apiKey":{"type":"string","description":"Sendgrid API key.","x-example":"[API_KEY]"},"fromName":{"type":"string","description":"Sender Name.","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the Reply To field for the mail. Default value is Sender Name.","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the Reply To field for the mail. Default value is Sender Email.","x-example":"[REPLY_TO_EMAIL]"}}}}}}}},"\/messaging\/providers\/smtp":{"post":{"summary":"Create SMTP provider","operationId":"messagingCreateSMTPProvider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createSMTPProvider","weight":327,"cookies":false,"type":"","demo":"messaging\/create-s-m-t-p-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-smtp-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"host":{"type":"string","description":"SMTP hosts. Either a single hostname or multiple semicolon-delimited hostnames. You can also specify a different port for each host by using this format: [hostname:port] (e.g. \"smtp1.example.com:25;smtp2.example.com\"). You can also specify encryption type, for example: (e.g. \"tls:\/\/smtp1.example.com:587;ssl:\/\/smtp2.example.com:465\"). Hosts will be tried in order.","x-example":"[HOST]"},"port":{"type":"integer","description":"The default SMTP server port.","x-example":1},"username":{"type":"string","description":"Authentication username.","x-example":"[USERNAME]"},"password":{"type":"string","description":"Authentication password.","x-example":"[PASSWORD]"},"encryption":{"type":"string","description":"Encryption type. Can be omitted, 'ssl', or 'tls'","x-example":"none","enum":["none","ssl","tls"],"x-enum-name":"SMTPEncryption","x-enum-keys":[]},"autoTLS":{"type":"boolean","description":"Enable SMTP AutoTLS feature.","x-example":false},"mailer":{"type":"string","description":"The value to use for the X-Mailer header.","x-example":"[MAILER]"},"fromName":{"type":"string","description":"Sender Name.","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the reply to field for the mail. Default value is sender name.","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the reply to field for the mail. Default value is sender email.","x-example":"email@example.com"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name","host"]}}}}}},"\/messaging\/providers\/smtp\/{providerId}":{"patch":{"summary":"Update SMTP provider","operationId":"messagingUpdateSMTPProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateSMTPProvider","weight":340,"cookies":false,"type":"","demo":"messaging\/update-s-m-t-p-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-smtp-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"host":{"type":"string","description":"SMTP hosts. Either a single hostname or multiple semicolon-delimited hostnames. You can also specify a different port for each host by using this format: [hostname:port] (e.g. \"smtp1.example.com:25;smtp2.example.com\"). You can also specify encryption type, for example: (e.g. \"tls:\/\/smtp1.example.com:587;ssl:\/\/smtp2.example.com:465\"). Hosts will be tried in order.","x-example":"[HOST]"},"port":{"type":"integer","description":"SMTP port.","x-example":1},"username":{"type":"string","description":"Authentication username.","x-example":"[USERNAME]"},"password":{"type":"string","description":"Authentication password.","x-example":"[PASSWORD]"},"encryption":{"type":"string","description":"Encryption type. Can be 'ssl' or 'tls'","x-example":"none","enum":["none","ssl","tls"],"x-enum-name":"SMTPEncryption","x-enum-keys":[]},"autoTLS":{"type":"boolean","description":"Enable SMTP AutoTLS feature.","x-example":false},"mailer":{"type":"string","description":"The value to use for the X-Mailer header.","x-example":"[MAILER]"},"fromName":{"type":"string","description":"Sender Name.","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the Reply To field for the mail. Default value is Sender Name.","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the Reply To field for the mail. Default value is Sender Email.","x-example":"[REPLY_TO_EMAIL]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}}}}}}}},"\/messaging\/providers\/telesign":{"post":{"summary":"Create Telesign provider","operationId":"messagingCreateTelesignProvider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createTelesignProvider","weight":329,"cookies":false,"type":"","demo":"messaging\/create-telesign-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-telesign-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"customerId":{"type":"string","description":"Telesign customer ID.","x-example":"[CUSTOMER_ID]"},"apiKey":{"type":"string","description":"Telesign API key.","x-example":"[API_KEY]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name"]}}}}}},"\/messaging\/providers\/telesign\/{providerId}":{"patch":{"summary":"Update Telesign provider","operationId":"messagingUpdateTelesignProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateTelesignProvider","weight":342,"cookies":false,"type":"","demo":"messaging\/update-telesign-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-telesign-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"customerId":{"type":"string","description":"Telesign customer ID.","x-example":"[CUSTOMER_ID]"},"apiKey":{"type":"string","description":"Telesign API key.","x-example":"[API_KEY]"},"from":{"type":"string","description":"Sender number.","x-example":"[FROM]"}}}}}}}},"\/messaging\/providers\/textmagic":{"post":{"summary":"Create Textmagic provider","operationId":"messagingCreateTextmagicProvider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createTextmagicProvider","weight":330,"cookies":false,"type":"","demo":"messaging\/create-textmagic-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-textmagic-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"username":{"type":"string","description":"Textmagic username.","x-example":"[USERNAME]"},"apiKey":{"type":"string","description":"Textmagic apiKey.","x-example":"[API_KEY]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name"]}}}}}},"\/messaging\/providers\/textmagic\/{providerId}":{"patch":{"summary":"Update Textmagic provider","operationId":"messagingUpdateTextmagicProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateTextmagicProvider","weight":343,"cookies":false,"type":"","demo":"messaging\/update-textmagic-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-textmagic-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"username":{"type":"string","description":"Textmagic username.","x-example":"[USERNAME]"},"apiKey":{"type":"string","description":"Textmagic apiKey.","x-example":"[API_KEY]"},"from":{"type":"string","description":"Sender number.","x-example":"[FROM]"}}}}}}}},"\/messaging\/providers\/twilio":{"post":{"summary":"Create Twilio provider","operationId":"messagingCreateTwilioProvider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createTwilioProvider","weight":331,"cookies":false,"type":"","demo":"messaging\/create-twilio-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-twilio-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"accountSid":{"type":"string","description":"Twilio account secret ID.","x-example":"[ACCOUNT_SID]"},"authToken":{"type":"string","description":"Twilio authentication token.","x-example":"[AUTH_TOKEN]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name"]}}}}}},"\/messaging\/providers\/twilio\/{providerId}":{"patch":{"summary":"Update Twilio provider","operationId":"messagingUpdateTwilioProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateTwilioProvider","weight":344,"cookies":false,"type":"","demo":"messaging\/update-twilio-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-twilio-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"accountSid":{"type":"string","description":"Twilio account secret ID.","x-example":"[ACCOUNT_SID]"},"authToken":{"type":"string","description":"Twilio authentication token.","x-example":"[AUTH_TOKEN]"},"from":{"type":"string","description":"Sender number.","x-example":"[FROM]"}}}}}}}},"\/messaging\/providers\/vonage":{"post":{"summary":"Create Vonage provider","operationId":"messagingCreateVonageProvider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createVonageProvider","weight":332,"cookies":false,"type":"","demo":"messaging\/create-vonage-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-vonage-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"apiKey":{"type":"string","description":"Vonage API key.","x-example":"[API_KEY]"},"apiSecret":{"type":"string","description":"Vonage API secret.","x-example":"[API_SECRET]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name"]}}}}}},"\/messaging\/providers\/vonage\/{providerId}":{"patch":{"summary":"Update Vonage provider","operationId":"messagingUpdateVonageProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateVonageProvider","weight":345,"cookies":false,"type":"","demo":"messaging\/update-vonage-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-vonage-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"apiKey":{"type":"string","description":"Vonage API key.","x-example":"[API_KEY]"},"apiSecret":{"type":"string","description":"Vonage API secret.","x-example":"[API_SECRET]"},"from":{"type":"string","description":"Sender number.","x-example":"[FROM]"}}}}}}}},"\/messaging\/providers\/{providerId}":{"get":{"summary":"Get provider","operationId":"messagingGetProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"getProvider","weight":337,"cookies":false,"type":"","demo":"messaging\/get-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/get-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}]},"delete":{"summary":"Delete provider","operationId":"messagingDeleteProvider","tags":["messaging"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteProvider","weight":348,"cookies":false,"type":"","demo":"messaging\/delete-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}]}},"\/messaging\/providers\/{providerId}\/logs":{"get":{"summary":"List provider logs","operationId":"messagingListProviderLogs","tags":["messaging"],"description":"","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listProviderLogs","weight":336,"cookies":false,"type":"","demo":"messaging\/list-provider-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/providers\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/messaging\/subscribers\/{subscriberId}\/logs":{"get":{"summary":"List subscriber logs","operationId":"messagingListSubscriberLogs","tags":["messaging"],"description":"","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listSubscriberLogs","weight":357,"cookies":false,"type":"","demo":"messaging\/list-subscriber-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/subscribers\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"subscriberId","description":"Subscriber ID.","required":true,"schema":{"type":"string","x-example":"[SUBSCRIBER_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/messaging\/topics":{"get":{"summary":"List topics.","operationId":"messagingListTopics","tags":["messaging"],"description":"","responses":{"200":{"description":"Topic list","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/topicList"}}}}},"x-appwrite":{"method":"listTopics","weight":350,"cookies":false,"type":"","demo":"messaging\/list-topics.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-topics.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, description, total","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create a topic.","operationId":"messagingCreateTopic","tags":["messaging"],"description":"","responses":{"201":{"description":"Topic","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/topic"}}}}},"x-appwrite":{"method":"createTopic","weight":349,"cookies":false,"type":"","demo":"messaging\/create-topic.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-topic.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"topicId":{"type":"string","description":"Topic ID. Choose a custom Topic ID or a new Topic ID.","x-example":"[TOPIC_ID]"},"name":{"type":"string","description":"Topic Name.","x-example":"[NAME]"},"subscribe":{"type":"array","description":"An array of role strings with subscribe permission. By default all users are granted with any subscribe permission. [learn more about roles](https:\/\/appwrite.io\/docs\/permissions#permission-roles). Maximum of 100 roles are allowed, each 64 characters long.","x-example":"[\"any\"]","items":{"type":"string"}}},"required":["topicId","name"]}}}}}},"\/messaging\/topics\/{topicId}":{"get":{"summary":"Get a topic.","operationId":"messagingGetTopic","tags":["messaging"],"description":"","responses":{"200":{"description":"Topic","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/topic"}}}}},"x-appwrite":{"method":"getTopic","weight":352,"cookies":false,"type":"","demo":"messaging\/get-topic.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/get-topic.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID.","required":true,"schema":{"type":"string","x-example":"[TOPIC_ID]"},"in":"path"}]},"patch":{"summary":"Update a topic.","operationId":"messagingUpdateTopic","tags":["messaging"],"description":"","responses":{"200":{"description":"Topic","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/topic"}}}}},"x-appwrite":{"method":"updateTopic","weight":353,"cookies":false,"type":"","demo":"messaging\/update-topic.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-topic.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID.","required":true,"schema":{"type":"string","x-example":"[TOPIC_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Topic Name.","x-example":"[NAME]"}}}}}}},"delete":{"summary":"Delete a topic.","operationId":"messagingDeleteTopic","tags":["messaging"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteTopic","weight":354,"cookies":false,"type":"","demo":"messaging\/delete-topic.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-topic.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID.","required":true,"schema":{"type":"string","x-example":"[TOPIC_ID]"},"in":"path"}]}},"\/messaging\/topics\/{topicId}\/logs":{"get":{"summary":"List topic logs","operationId":"messagingListTopicLogs","tags":["messaging"],"description":"","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listTopicLogs","weight":351,"cookies":false,"type":"","demo":"messaging\/list-topic-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/topics\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID.","required":true,"schema":{"type":"string","x-example":"[TOPIC_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/messaging\/topics\/{topicId}\/subscribers":{"get":{"summary":"List subscribers.","operationId":"messagingListSubscribers","tags":["messaging"],"description":"","responses":{"200":{"description":"Subscriber list","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/subscriberList"}}}}},"x-appwrite":{"method":"listSubscribers","weight":356,"cookies":false,"type":"","demo":"messaging\/list-subscribers.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-subscribers.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID subscribed to.","required":true,"schema":{"type":"string","x-example":"[TOPIC_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, provider, type, enabled","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create a subscriber.","operationId":"messagingCreateSubscriber","tags":["messaging"],"description":"","responses":{"201":{"description":"Subscriber","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/subscriber"}}}}},"x-appwrite":{"method":"createSubscriber","weight":355,"cookies":false,"type":"","demo":"messaging\/create-subscriber.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-subscriber.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.write","platforms":["server","client","console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID to subscribe to.","required":true,"schema":{"type":"string","x-example":"[TOPIC_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"subscriberId":{"type":"string","description":"Subscriber ID. Choose a custom Subscriber ID or a new Subscriber ID.","x-example":"[SUBSCRIBER_ID]"},"targetId":{"type":"string","description":"Target ID. The target ID to link to the specified Topic ID.","x-example":"[TARGET_ID]"}},"required":["subscriberId","targetId"]}}}}}},"\/messaging\/topics\/{topicId}\/subscribers\/{subscriberId}":{"get":{"summary":"Get a subscriber.","operationId":"messagingGetSubscriber","tags":["messaging"],"description":"","responses":{"200":{"description":"Subscriber","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/subscriber"}}}}},"x-appwrite":{"method":"getSubscriber","weight":358,"cookies":false,"type":"","demo":"messaging\/get-subscriber.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/get-subscriber.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID subscribed to.","required":true,"schema":{"type":"string","x-example":"[TOPIC_ID]"},"in":"path"},{"name":"subscriberId","description":"Subscriber ID.","required":true,"schema":{"type":"string","x-example":"[SUBSCRIBER_ID]"},"in":"path"}]},"delete":{"summary":"Delete a subscriber.","operationId":"messagingDeleteSubscriber","tags":["messaging"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSubscriber","weight":359,"cookies":false,"type":"","demo":"messaging\/delete-subscriber.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-subscriber.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.write","platforms":["server","client","console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID subscribed to.","required":true,"schema":{"type":"string","x-example":"[TOPIC_ID]"},"in":"path"},{"name":"subscriberId","description":"Subscriber ID.","required":true,"schema":{"type":"string","x-example":"[SUBSCRIBER_ID]"},"in":"path"}]}},"\/migrations":{"get":{"summary":"List Migrations","operationId":"migrationsList","tags":["migrations"],"description":"","responses":{"200":{"description":"Migrations List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/migrationList"}}}}},"x-appwrite":{"method":"list","weight":312,"cookies":false,"type":"","demo":"migrations\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/list-migrations.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: status, stage, source, resources, statusCounters, resourceData, errors","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]}},"\/migrations\/appwrite":{"post":{"summary":"Migrate Appwrite Data","operationId":"migrationsCreateAppwriteMigration","tags":["migrations"],"description":"","responses":{"202":{"description":"Migration","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/migration"}}}}},"x-appwrite":{"method":"createAppwriteMigration","weight":307,"cookies":false,"type":"","demo":"migrations\/create-appwrite-migration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-appwrite.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"resources":{"type":"array","description":"List of resources to migrate","x-example":null,"items":{"type":"string"}},"endpoint":{"type":"string","description":"Source's Appwrite Endpoint","x-example":"https:\/\/example.com"},"projectId":{"type":"string","description":"Source's Project ID","x-example":"[PROJECT_ID]"},"apiKey":{"type":"string","description":"Source's API Key","x-example":"[API_KEY]"}},"required":["resources","endpoint","projectId","apiKey"]}}}}}},"\/migrations\/appwrite\/report":{"get":{"summary":"Generate a report on Appwrite Data","operationId":"migrationsGetAppwriteReport","tags":["migrations"],"description":"","responses":{"200":{"description":"Migration Report","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/migrationReport"}}}}},"x-appwrite":{"method":"getAppwriteReport","weight":314,"cookies":false,"type":"","demo":"migrations\/get-appwrite-report.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-appwrite-report.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"resources","description":"List of resources to migrate","required":true,"schema":{"type":"array","items":{"type":"string"}},"in":"query"},{"name":"endpoint","description":"Source's Appwrite Endpoint","required":true,"schema":{"type":"string","format":"url","x-example":"https:\/\/example.com"},"in":"query"},{"name":"projectID","description":"Source's Project ID","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"query"},{"name":"key","description":"Source's API Key","required":true,"schema":{"type":"string","x-example":"[KEY]"},"in":"query"}]}},"\/migrations\/firebase":{"post":{"summary":"Migrate Firebase Data (Service Account)","operationId":"migrationsCreateFirebaseMigration","tags":["migrations"],"description":"","responses":{"202":{"description":"Migration","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/migration"}}}}},"x-appwrite":{"method":"createFirebaseMigration","weight":309,"cookies":false,"type":"","demo":"migrations\/create-firebase-migration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-firebase.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"resources":{"type":"array","description":"List of resources to migrate","x-example":null,"items":{"type":"string"}},"serviceAccount":{"type":"string","description":"JSON of the Firebase service account credentials","x-example":"[SERVICE_ACCOUNT]"}},"required":["resources","serviceAccount"]}}}}}},"\/migrations\/firebase\/deauthorize":{"get":{"summary":"Revoke Appwrite's authorization to access Firebase Projects","operationId":"migrationsDeleteFirebaseAuth","tags":["migrations"],"description":"","responses":{"200":{"description":"File"}},"x-appwrite":{"method":"deleteFirebaseAuth","weight":320,"cookies":false,"type":"","demo":"migrations\/delete-firebase-auth.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/migrations\/firebase\/oauth":{"post":{"summary":"Migrate Firebase Data (OAuth)","operationId":"migrationsCreateFirebaseOAuthMigration","tags":["migrations"],"description":"","responses":{"202":{"description":"Migration","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/migration"}}}}},"x-appwrite":{"method":"createFirebaseOAuthMigration","weight":308,"cookies":false,"type":"","demo":"migrations\/create-firebase-o-auth-migration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-firebase.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"resources":{"type":"array","description":"List of resources to migrate","x-example":null,"items":{"type":"string"}},"projectId":{"type":"string","description":"Project ID of the Firebase Project","x-example":"[PROJECT_ID]"}},"required":["resources","projectId"]}}}}}},"\/migrations\/firebase\/projects":{"get":{"summary":"List Firebase Projects","operationId":"migrationsListFirebaseProjects","tags":["migrations"],"description":"","responses":{"200":{"description":"Migrations Firebase Projects List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/firebaseProjectList"}}}}},"x-appwrite":{"method":"listFirebaseProjects","weight":319,"cookies":false,"type":"","demo":"migrations\/list-firebase-projects.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/migrations\/firebase\/report":{"get":{"summary":"Generate a report on Firebase Data","operationId":"migrationsGetFirebaseReport","tags":["migrations"],"description":"","responses":{"200":{"description":"Migration Report","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/migrationReport"}}}}},"x-appwrite":{"method":"getFirebaseReport","weight":315,"cookies":false,"type":"","demo":"migrations\/get-firebase-report.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-firebase-report.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"resources","description":"List of resources to migrate","required":true,"schema":{"type":"array","items":{"type":"string"}},"in":"query"},{"name":"serviceAccount","description":"JSON of the Firebase service account credentials","required":true,"schema":{"type":"string","x-example":"[SERVICE_ACCOUNT]"},"in":"query"}]}},"\/migrations\/firebase\/report\/oauth":{"get":{"summary":"Generate a report on Firebase Data using OAuth","operationId":"migrationsGetFirebaseReportOAuth","tags":["migrations"],"description":"","responses":{"200":{"description":"Migration Report","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/migrationReport"}}}}},"x-appwrite":{"method":"getFirebaseReportOAuth","weight":316,"cookies":false,"type":"","demo":"migrations\/get-firebase-report-o-auth.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-firebase-report.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"resources","description":"List of resources to migrate","required":true,"schema":{"type":"array","items":{"type":"string"}},"in":"query"},{"name":"projectId","description":"Project ID","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"query"}]}},"\/migrations\/nhost":{"post":{"summary":"Migrate NHost Data","operationId":"migrationsCreateNHostMigration","tags":["migrations"],"description":"","responses":{"202":{"description":"Migration","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/migration"}}}}},"x-appwrite":{"method":"createNHostMigration","weight":311,"cookies":false,"type":"","demo":"migrations\/create-n-host-migration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-nhost.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"resources":{"type":"array","description":"List of resources to migrate","x-example":null,"items":{"type":"string"}},"subdomain":{"type":"string","description":"Source's Subdomain","x-example":"[SUBDOMAIN]"},"region":{"type":"string","description":"Source's Region","x-example":"[REGION]"},"adminSecret":{"type":"string","description":"Source's Admin Secret","x-example":"[ADMIN_SECRET]"},"database":{"type":"string","description":"Source's Database Name","x-example":"[DATABASE]"},"username":{"type":"string","description":"Source's Database Username","x-example":"[USERNAME]"},"password":{"type":"string","description":"Source's Database Password","x-example":"[PASSWORD]"},"port":{"type":"integer","description":"Source's Database Port","x-example":null}},"required":["resources","subdomain","region","adminSecret","database","username","password"]}}}}}},"\/migrations\/nhost\/report":{"get":{"summary":"Generate a report on NHost Data","operationId":"migrationsGetNHostReport","tags":["migrations"],"description":"","responses":{"200":{"description":"Migration Report","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/migrationReport"}}}}},"x-appwrite":{"method":"getNHostReport","weight":322,"cookies":false,"type":"","demo":"migrations\/get-n-host-report.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-nhost-report.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"resources","description":"List of resources to migrate.","required":true,"schema":{"type":"array","items":{"type":"string"}},"in":"query"},{"name":"subdomain","description":"Source's Subdomain.","required":true,"schema":{"type":"string","x-example":"[SUBDOMAIN]"},"in":"query"},{"name":"region","description":"Source's Region.","required":true,"schema":{"type":"string","x-example":"[REGION]"},"in":"query"},{"name":"adminSecret","description":"Source's Admin Secret.","required":true,"schema":{"type":"string","x-example":"[ADMIN_SECRET]"},"in":"query"},{"name":"database","description":"Source's Database Name.","required":true,"schema":{"type":"string","x-example":"[DATABASE]"},"in":"query"},{"name":"username","description":"Source's Database Username.","required":true,"schema":{"type":"string","x-example":"[USERNAME]"},"in":"query"},{"name":"password","description":"Source's Database Password.","required":true,"schema":{"type":"string","x-example":"[PASSWORD]"},"in":"query"},{"name":"port","description":"Source's Database Port.","required":false,"schema":{"type":"integer","format":"int32","default":5432},"in":"query"}]}},"\/migrations\/supabase":{"post":{"summary":"Migrate Supabase Data","operationId":"migrationsCreateSupabaseMigration","tags":["migrations"],"description":"","responses":{"202":{"description":"Migration","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/migration"}}}}},"x-appwrite":{"method":"createSupabaseMigration","weight":310,"cookies":false,"type":"","demo":"migrations\/create-supabase-migration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-supabase.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"resources":{"type":"array","description":"List of resources to migrate","x-example":null,"items":{"type":"string"}},"endpoint":{"type":"string","description":"Source's Supabase Endpoint","x-example":"https:\/\/example.com"},"apiKey":{"type":"string","description":"Source's API Key","x-example":"[API_KEY]"},"databaseHost":{"type":"string","description":"Source's Database Host","x-example":"[DATABASE_HOST]"},"username":{"type":"string","description":"Source's Database Username","x-example":"[USERNAME]"},"password":{"type":"string","description":"Source's Database Password","x-example":"[PASSWORD]"},"port":{"type":"integer","description":"Source's Database Port","x-example":null}},"required":["resources","endpoint","apiKey","databaseHost","username","password"]}}}}}},"\/migrations\/supabase\/report":{"get":{"summary":"Generate a report on Supabase Data","operationId":"migrationsGetSupabaseReport","tags":["migrations"],"description":"","responses":{"200":{"description":"Migration Report","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/migrationReport"}}}}},"x-appwrite":{"method":"getSupabaseReport","weight":321,"cookies":false,"type":"","demo":"migrations\/get-supabase-report.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-supabase-report.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"resources","description":"List of resources to migrate","required":true,"schema":{"type":"array","items":{"type":"string"}},"in":"query"},{"name":"endpoint","description":"Source's Supabase Endpoint.","required":true,"schema":{"type":"string","format":"url","x-example":"https:\/\/example.com"},"in":"query"},{"name":"apiKey","description":"Source's API Key.","required":true,"schema":{"type":"string","x-example":"[API_KEY]"},"in":"query"},{"name":"databaseHost","description":"Source's Database Host.","required":true,"schema":{"type":"string","x-example":"[DATABASE_HOST]"},"in":"query"},{"name":"username","description":"Source's Database Username.","required":true,"schema":{"type":"string","x-example":"[USERNAME]"},"in":"query"},{"name":"password","description":"Source's Database Password.","required":true,"schema":{"type":"string","x-example":"[PASSWORD]"},"in":"query"},{"name":"port","description":"Source's Database Port.","required":false,"schema":{"type":"integer","format":"int32","default":5432},"in":"query"}]}},"\/migrations\/{migrationId}":{"get":{"summary":"Get Migration","operationId":"migrationsGet","tags":["migrations"],"description":"","responses":{"200":{"description":"Migration","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/migration"}}}}},"x-appwrite":{"method":"get","weight":313,"cookies":false,"type":"","demo":"migrations\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/get-migration.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"migrationId","description":"Migration unique ID.","required":true,"schema":{"type":"string","x-example":"[MIGRATION_ID]"},"in":"path"}]},"patch":{"summary":"Retry Migration","operationId":"migrationsRetry","tags":["migrations"],"description":"","responses":{"202":{"description":"Migration","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/migration"}}}}},"x-appwrite":{"method":"retry","weight":323,"cookies":false,"type":"","demo":"migrations\/retry.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/retry-migration.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"migrationId","description":"Migration unique ID.","required":true,"schema":{"type":"string","x-example":"[MIGRATION_ID]"},"in":"path"}]},"delete":{"summary":"Delete Migration","operationId":"migrationsDelete","tags":["migrations"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":324,"cookies":false,"type":"","demo":"migrations\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-migration.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"migrationId","description":"Migration ID.","required":true,"schema":{"type":"string","x-example":"[MIGRATION_ID]"},"in":"path"}]}},"\/project\/usage":{"get":{"summary":"Get usage stats for a project","operationId":"projectGetUsage","tags":["project"],"description":"","responses":{"200":{"description":"UsageProject","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageProject"}}}}},"x-appwrite":{"method":"getUsage","weight":181,"cookies":false,"type":"","demo":"project\/get-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"startDate","description":"Starting date for the usage","required":true,"schema":{"type":"string"},"in":"query"},{"name":"endDate","description":"End date for the usage","required":true,"schema":{"type":"string"},"in":"query"},{"name":"period","description":"Period used","required":false,"schema":{"type":"string","x-example":"1h","enum":["1h","1d"],"x-enum-name":"ProjectUsageRange","x-enum-keys":["One Hour","One Day"],"default":"1d"},"in":"query"}]}},"\/project\/variables":{"get":{"summary":"List Variables","operationId":"projectListVariables","tags":["project"],"description":"Get a list of all project variables. These variables will be accessible in all Appwrite Functions at runtime.","responses":{"200":{"description":"Variables List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variableList"}}}}},"x-appwrite":{"method":"listVariables","weight":183,"cookies":false,"type":"","demo":"project\/list-variables.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/project\/list-variables.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]},"post":{"summary":"Create Variable","operationId":"projectCreateVariable","tags":["project"],"description":"Create a new project variable. This variable will be accessible in all Appwrite Functions at runtime.","responses":{"201":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"createVariable","weight":182,"cookies":false,"type":"","demo":"project\/create-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/project\/create-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","x-example":"[VALUE]"}},"required":["key","value"]}}}}}},"\/project\/variables\/{variableId}":{"get":{"summary":"Get Variable","operationId":"projectGetVariable","tags":["project"],"description":"Get a project variable by its unique ID.","responses":{"200":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"getVariable","weight":184,"cookies":false,"type":"","demo":"project\/get-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/project\/get-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}]},"put":{"summary":"Update Variable","operationId":"projectUpdateVariable","tags":["project"],"description":"Update project variable by its unique ID. This variable will be accessible in all Appwrite Functions at runtime.","responses":{"200":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"updateVariable","weight":185,"cookies":false,"type":"","demo":"project\/update-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/project\/update-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","x-example":"[VALUE]"}},"required":["key"]}}}}},"delete":{"summary":"Delete Variable","operationId":"projectDeleteVariable","tags":["project"],"description":"Delete a project variable by its unique ID. ","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteVariable","weight":186,"cookies":false,"type":"","demo":"project\/delete-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/project\/delete-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}]}},"\/projects":{"get":{"summary":"List projects","operationId":"projectsList","tags":["projects"],"description":"","responses":{"200":{"description":"Projects List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/projectList"}}}}},"x-appwrite":{"method":"list","weight":142,"cookies":false,"type":"","demo":"projects\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, teamId","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create project","operationId":"projectsCreate","tags":["projects"],"description":"","responses":{"201":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"create","weight":141,"cookies":false,"type":"","demo":"projects\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"projectId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, and hyphen. Can't start with a special char. Max length is 36 chars.","x-example":null},"name":{"type":"string","description":"Project name. Max length: 128 chars.","x-example":"[NAME]"},"teamId":{"type":"string","description":"Team unique ID.","x-example":"[TEAM_ID]"},"region":{"type":"string","description":"Project Region.","x-example":"default","enum":["default"],"x-enum-name":null,"x-enum-keys":[]},"description":{"type":"string","description":"Project description. Max length: 256 chars.","x-example":"[DESCRIPTION]"},"logo":{"type":"string","description":"Project logo.","x-example":"[LOGO]"},"url":{"type":"string","description":"Project URL.","x-example":"https:\/\/example.com"},"legalName":{"type":"string","description":"Project legal Name. Max length: 256 chars.","x-example":"[LEGAL_NAME]"},"legalCountry":{"type":"string","description":"Project legal Country. Max length: 256 chars.","x-example":"[LEGAL_COUNTRY]"},"legalState":{"type":"string","description":"Project legal State. Max length: 256 chars.","x-example":"[LEGAL_STATE]"},"legalCity":{"type":"string","description":"Project legal City. Max length: 256 chars.","x-example":"[LEGAL_CITY]"},"legalAddress":{"type":"string","description":"Project legal Address. Max length: 256 chars.","x-example":"[LEGAL_ADDRESS]"},"legalTaxId":{"type":"string","description":"Project legal Tax ID. Max length: 256 chars.","x-example":"[LEGAL_TAX_ID]"}},"required":["projectId","name","teamId"]}}}}}},"\/projects\/{projectId}":{"get":{"summary":"Get project","operationId":"projectsGet","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"get","weight":143,"cookies":false,"type":"","demo":"projects\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}]},"patch":{"summary":"Update project","operationId":"projectsUpdate","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"update","weight":144,"cookies":false,"type":"","demo":"projects\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Project name. Max length: 128 chars.","x-example":"[NAME]"},"description":{"type":"string","description":"Project description. Max length: 256 chars.","x-example":"[DESCRIPTION]"},"logo":{"type":"string","description":"Project logo.","x-example":"[LOGO]"},"url":{"type":"string","description":"Project URL.","x-example":"https:\/\/example.com"},"legalName":{"type":"string","description":"Project legal name. Max length: 256 chars.","x-example":"[LEGAL_NAME]"},"legalCountry":{"type":"string","description":"Project legal country. Max length: 256 chars.","x-example":"[LEGAL_COUNTRY]"},"legalState":{"type":"string","description":"Project legal state. Max length: 256 chars.","x-example":"[LEGAL_STATE]"},"legalCity":{"type":"string","description":"Project legal city. Max length: 256 chars.","x-example":"[LEGAL_CITY]"},"legalAddress":{"type":"string","description":"Project legal address. Max length: 256 chars.","x-example":"[LEGAL_ADDRESS]"},"legalTaxId":{"type":"string","description":"Project legal tax ID. Max length: 256 chars.","x-example":"[LEGAL_TAX_ID]"}},"required":["name"]}}}}},"delete":{"summary":"Delete project","operationId":"projectsDelete","tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":156,"cookies":false,"type":"","demo":"projects\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}]}},"\/projects\/{projectId}\/auth\/duration":{"patch":{"summary":"Update project authentication duration","operationId":"projectsUpdateAuthDuration","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateAuthDuration","weight":150,"cookies":false,"type":"","demo":"projects\/update-auth-duration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"duration":{"type":"integer","description":"Project session length in seconds. Max length: 31536000 seconds.","x-example":0}},"required":["duration"]}}}}}},"\/projects\/{projectId}\/auth\/limit":{"patch":{"summary":"Update project users limit","operationId":"projectsUpdateAuthLimit","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateAuthLimit","weight":149,"cookies":false,"type":"","demo":"projects\/update-auth-limit.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"limit":{"type":"integer","description":"Set the max number of users allowed in this project. Use 0 for unlimited.","x-example":0}},"required":["limit"]}}}}}},"\/projects\/{projectId}\/auth\/max-sessions":{"patch":{"summary":"Update project user sessions limit","operationId":"projectsUpdateAuthSessionsLimit","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateAuthSessionsLimit","weight":155,"cookies":false,"type":"","demo":"projects\/update-auth-sessions-limit.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"limit":{"type":"integer","description":"Set the max number of users allowed in this project. Value allowed is between 1-100. Default is 10","x-example":1}},"required":["limit"]}}}}}},"\/projects\/{projectId}\/auth\/password-dictionary":{"patch":{"summary":"Update authentication password dictionary status. Use this endpoint to enable or disable the dicitonary check for user password","operationId":"projectsUpdateAuthPasswordDictionary","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateAuthPasswordDictionary","weight":153,"cookies":false,"type":"","demo":"projects\/update-auth-password-dictionary.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Set whether or not to enable checking user's password against most commonly used passwords. Default is false.","x-example":false}},"required":["enabled"]}}}}}},"\/projects\/{projectId}\/auth\/password-history":{"patch":{"summary":"Update authentication password history. Use this endpoint to set the number of password history to save and 0 to disable password history.","operationId":"projectsUpdateAuthPasswordHistory","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateAuthPasswordHistory","weight":152,"cookies":false,"type":"","demo":"projects\/update-auth-password-history.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"limit":{"type":"integer","description":"Set the max number of passwords to store in user history. User can't choose a new password that is already stored in the password history list. Max number of passwords allowed in history is20. Default value is 0","x-example":0}},"required":["limit"]}}}}}},"\/projects\/{projectId}\/auth\/personal-data":{"patch":{"summary":"Enable or disable checking user passwords for similarity with their personal data.","operationId":"projectsUpdatePersonalDataCheck","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updatePersonalDataCheck","weight":154,"cookies":false,"type":"","demo":"projects\/update-personal-data-check.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Set whether or not to check a password for similarity with personal data. Default is false.","x-example":false}},"required":["enabled"]}}}}}},"\/projects\/{projectId}\/auth\/{method}":{"patch":{"summary":"Update project auth method status. Use this endpoint to enable or disable a given auth method for this project.","operationId":"projectsUpdateAuthStatus","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateAuthStatus","weight":151,"cookies":false,"type":"","demo":"projects\/update-auth-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"method","description":"Auth Method. Possible values: email-password,magic-url,email-otp,anonymous,invites,jwt,phone","required":true,"schema":{"type":"string","x-example":"email-password","enum":["email-password","magic-url","email-otp","anonymous","invites","jwt","phone"],"x-enum-name":"AuthMethod","x-enum-keys":[]},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"status":{"type":"boolean","description":"Set the status of this auth method.","x-example":false}},"required":["status"]}}}}}},"\/projects\/{projectId}\/keys":{"get":{"summary":"List keys","operationId":"projectsListKeys","tags":["projects"],"description":"","responses":{"200":{"description":"API Keys List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/keyList"}}}}},"x-appwrite":{"method":"listKeys","weight":164,"cookies":false,"type":"","demo":"projects\/list-keys.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}]},"post":{"summary":"Create key","operationId":"projectsCreateKey","tags":["projects"],"description":"","responses":{"201":{"description":"Key","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/key"}}}}},"x-appwrite":{"method":"createKey","weight":163,"cookies":false,"type":"","demo":"projects\/create-key.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Key name. Max length: 128 chars.","x-example":"[NAME]"},"scopes":{"type":"array","description":"Key scopes list. Maximum of 100 scopes are allowed.","x-example":null,"items":{"type":"string"}},"expire":{"type":"string","description":"Expiration time in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. Use null for unlimited expiration.","x-example":null}},"required":["name","scopes"]}}}}}},"\/projects\/{projectId}\/keys\/{keyId}":{"get":{"summary":"Get key","operationId":"projectsGetKey","tags":["projects"],"description":"","responses":{"200":{"description":"Key","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/key"}}}}},"x-appwrite":{"method":"getKey","weight":165,"cookies":false,"type":"","demo":"projects\/get-key.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"keyId","description":"Key unique ID.","required":true,"schema":{"type":"string","x-example":"[KEY_ID]"},"in":"path"}]},"put":{"summary":"Update key","operationId":"projectsUpdateKey","tags":["projects"],"description":"","responses":{"200":{"description":"Key","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/key"}}}}},"x-appwrite":{"method":"updateKey","weight":166,"cookies":false,"type":"","demo":"projects\/update-key.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"keyId","description":"Key unique ID.","required":true,"schema":{"type":"string","x-example":"[KEY_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Key name. Max length: 128 chars.","x-example":"[NAME]"},"scopes":{"type":"array","description":"Key scopes list. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"expire":{"type":"string","description":"Expiration time in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. Use null for unlimited expiration.","x-example":null}},"required":["name","scopes"]}}}}},"delete":{"summary":"Delete key","operationId":"projectsDeleteKey","tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteKey","weight":167,"cookies":false,"type":"","demo":"projects\/delete-key.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"keyId","description":"Key unique ID.","required":true,"schema":{"type":"string","x-example":"[KEY_ID]"},"in":"path"}]}},"\/projects\/{projectId}\/oauth2":{"patch":{"summary":"Update project OAuth2","operationId":"projectsUpdateOAuth2","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateOAuth2","weight":148,"cookies":false,"type":"","demo":"projects\/update-o-auth2.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"provider":{"type":"string","description":"Provider Name","x-example":"amazon","enum":["amazon","apple","auth0","authentik","autodesk","bitbucket","bitly","box","dailymotion","discord","disqus","dropbox","etsy","facebook","github","gitlab","google","linkedin","microsoft","notion","oidc","okta","paypal","paypalSandbox","podio","salesforce","slack","spotify","stripe","tradeshift","tradeshiftBox","twitch","wordpress","yahoo","yammer","yandex","zoho","zoom","mock"],"x-enum-name":"OAuthProvider","x-enum-keys":[]},"appId":{"type":"string","description":"Provider app ID. Max length: 256 chars.","x-example":"[APP_ID]"},"secret":{"type":"string","description":"Provider secret key. Max length: 512 chars.","x-example":"[SECRET]"},"enabled":{"type":"boolean","description":"Provider status. Set to 'false' to disable new session creation.","x-example":false}},"required":["provider"]}}}}}},"\/projects\/{projectId}\/platforms":{"get":{"summary":"List platforms","operationId":"projectsListPlatforms","tags":["projects"],"description":"","responses":{"200":{"description":"Platforms List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/platformList"}}}}},"x-appwrite":{"method":"listPlatforms","weight":169,"cookies":false,"type":"","demo":"projects\/list-platforms.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}]},"post":{"summary":"Create platform","operationId":"projectsCreatePlatform","tags":["projects"],"description":"","responses":{"201":{"description":"Platform","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/platform"}}}}},"x-appwrite":{"method":"createPlatform","weight":168,"cookies":false,"type":"","demo":"projects\/create-platform.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"type":{"type":"string","description":"Platform type.","x-example":"web","enum":["web","flutter-web","flutter-ios","flutter-android","flutter-linux","flutter-macos","flutter-windows","apple-ios","apple-macos","apple-watchos","apple-tvos","android","unity"],"x-enum-name":"PlatformType","x-enum-keys":[]},"name":{"type":"string","description":"Platform name. Max length: 128 chars.","x-example":"[NAME]"},"key":{"type":"string","description":"Package name for Android or bundle ID for iOS or macOS. Max length: 256 chars.","x-example":"[KEY]"},"store":{"type":"string","description":"App store or Google Play store ID. Max length: 256 chars.","x-example":"[STORE]"},"hostname":{"type":"string","description":"Platform client hostname. Max length: 256 chars.","x-example":null}},"required":["type","name"]}}}}}},"\/projects\/{projectId}\/platforms\/{platformId}":{"get":{"summary":"Get platform","operationId":"projectsGetPlatform","tags":["projects"],"description":"","responses":{"200":{"description":"Platform","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/platform"}}}}},"x-appwrite":{"method":"getPlatform","weight":170,"cookies":false,"type":"","demo":"projects\/get-platform.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"platformId","description":"Platform unique ID.","required":true,"schema":{"type":"string","x-example":"[PLATFORM_ID]"},"in":"path"}]},"put":{"summary":"Update platform","operationId":"projectsUpdatePlatform","tags":["projects"],"description":"","responses":{"200":{"description":"Platform","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/platform"}}}}},"x-appwrite":{"method":"updatePlatform","weight":171,"cookies":false,"type":"","demo":"projects\/update-platform.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"platformId","description":"Platform unique ID.","required":true,"schema":{"type":"string","x-example":"[PLATFORM_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Platform name. Max length: 128 chars.","x-example":"[NAME]"},"key":{"type":"string","description":"Package name for android or bundle ID for iOS. Max length: 256 chars.","x-example":"[KEY]"},"store":{"type":"string","description":"App store or Google Play store ID. Max length: 256 chars.","x-example":"[STORE]"},"hostname":{"type":"string","description":"Platform client URL. Max length: 256 chars.","x-example":null}},"required":["name"]}}}}},"delete":{"summary":"Delete platform","operationId":"projectsDeletePlatform","tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deletePlatform","weight":172,"cookies":false,"type":"","demo":"projects\/delete-platform.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"platformId","description":"Platform unique ID.","required":true,"schema":{"type":"string","x-example":"[PLATFORM_ID]"},"in":"path"}]}},"\/projects\/{projectId}\/service":{"patch":{"summary":"Update service status","operationId":"projectsUpdateServiceStatus","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateServiceStatus","weight":146,"cookies":false,"type":"","demo":"projects\/update-service-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"service":{"type":"string","description":"Service name.","x-example":"account","enum":["account","avatars","databases","locale","health","storage","teams","users","functions","graphql","messaging"],"x-enum-name":"APIService","x-enum-keys":[]},"status":{"type":"boolean","description":"Service status.","x-example":false}},"required":["service","status"]}}}}}},"\/projects\/{projectId}\/service\/all":{"patch":{"summary":"Update all service status","operationId":"projectsUpdateServiceStatusAll","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateServiceStatusAll","weight":147,"cookies":false,"type":"","demo":"projects\/update-service-status-all.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"status":{"type":"boolean","description":"Service status.","x-example":false}},"required":["status"]}}}}}},"\/projects\/{projectId}\/smtp":{"patch":{"summary":"Update SMTP","operationId":"projectsUpdateSmtp","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateSmtp","weight":173,"cookies":false,"type":"","demo":"projects\/update-smtp.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enable custom SMTP service","x-example":false},"senderName":{"type":"string","description":"Name of the email sender","x-example":"[SENDER_NAME]"},"senderEmail":{"type":"string","description":"Email of the sender","x-example":"email@example.com"},"replyTo":{"type":"string","description":"Reply to email","x-example":"email@example.com"},"host":{"type":"string","description":"SMTP server host name","x-example":null},"port":{"type":"integer","description":"SMTP server port","x-example":null},"username":{"type":"string","description":"SMTP server username","x-example":"[USERNAME]"},"password":{"type":"string","description":"SMTP server password","x-example":"[PASSWORD]"},"secure":{"type":"string","description":"Does SMTP server use secure connection","x-example":"tls","enum":["tls"],"x-enum-name":"SMTPSecure","x-enum-keys":[]}},"required":["enabled"]}}}}}},"\/projects\/{projectId}\/smtp\/tests":{"post":{"summary":"Create SMTP test","operationId":"projectsCreateSmtpTest","tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"createSmtpTest","weight":174,"cookies":false,"type":"","demo":"projects\/create-smtp-test.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"emails":{"type":"array","description":"Array of emails to send test email to. Maximum of 10 emails are allowed.","x-example":null,"items":{"type":"string"}},"senderName":{"type":"string","description":"Name of the email sender","x-example":"[SENDER_NAME]"},"senderEmail":{"type":"string","description":"Email of the sender","x-example":"email@example.com"},"replyTo":{"type":"string","description":"Reply to email","x-example":"email@example.com"},"host":{"type":"string","description":"SMTP server host name","x-example":null},"port":{"type":"integer","description":"SMTP server port","x-example":null},"username":{"type":"string","description":"SMTP server username","x-example":"[USERNAME]"},"password":{"type":"string","description":"SMTP server password","x-example":"[PASSWORD]"},"secure":{"type":"string","description":"Does SMTP server use secure connection","x-example":"tls","enum":["tls"],"x-enum-name":"SMTPSecure","x-enum-keys":[]}},"required":["emails","senderName","senderEmail","host"]}}}}}},"\/projects\/{projectId}\/team":{"patch":{"summary":"Update Project Team","operationId":"projectsUpdateTeam","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateTeam","weight":145,"cookies":false,"type":"","demo":"projects\/update-team.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"teamId":{"type":"string","description":"Team ID of the team to transfer project to.","x-example":"[TEAM_ID]"}},"required":["teamId"]}}}}}},"\/projects\/{projectId}\/templates\/email\/{type}\/{locale}":{"get":{"summary":"Get custom email template","operationId":"projectsGetEmailTemplate","tags":["projects"],"description":"","responses":{"200":{"description":"EmailTemplate","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/emailTemplate"}}}}},"x-appwrite":{"method":"getEmailTemplate","weight":176,"cookies":false,"type":"","demo":"projects\/get-email-template.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"type","description":"Template type","required":true,"schema":{"type":"string","x-example":"verification","enum":["verification","magicsession","recovery","invitation"],"x-enum-name":"EmailTemplateType","x-enum-keys":[]},"in":"path"},{"name":"locale","description":"Template locale","required":true,"schema":{"type":"string","x-example":"af","enum":["af","ar-ae","ar-bh","ar-dz","ar-eg","ar-iq","ar-jo","ar-kw","ar-lb","ar-ly","ar-ma","ar-om","ar-qa","ar-sa","ar-sy","ar-tn","ar-ye","as","az","be","bg","bh","bn","bs","ca","cs","cy","da","de","de-at","de-ch","de-li","de-lu","el","en","en-au","en-bz","en-ca","en-gb","en-ie","en-jm","en-nz","en-tt","en-us","en-za","eo","es","es-ar","es-bo","es-cl","es-co","es-cr","es-do","es-ec","es-gt","es-hn","es-mx","es-ni","es-pa","es-pe","es-pr","es-py","es-sv","es-uy","es-ve","et","eu","fa","fi","fo","fr","fr-be","fr-ca","fr-ch","fr-lu","ga","gd","he","hi","hr","hu","id","is","it","it-ch","ja","ji","ko","ku","lt","lv","mk","ml","ms","mt","nb","ne","nl","nl-be","nn","no","pa","pl","pt","pt-br","rm","ro","ro-md","ru","ru-md","sb","sk","sl","sq","sr","sv","sv-fi","th","tn","tr","ts","ua","ur","ve","vi","xh","zh-cn","zh-hk","zh-sg","zh-tw","zu"],"x-enum-name":"EmailTemplateLocale","x-enum-keys":[]},"in":"path"}]},"patch":{"summary":"Update custom email templates","operationId":"projectsUpdateEmailTemplate","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateEmailTemplate","weight":178,"cookies":false,"type":"","demo":"projects\/update-email-template.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"type","description":"Template type","required":true,"schema":{"type":"string","x-example":"verification","enum":["verification","magicsession","recovery","invitation"],"x-enum-name":"EmailTemplateType","x-enum-keys":[]},"in":"path"},{"name":"locale","description":"Template locale","required":true,"schema":{"type":"string","x-example":"af","enum":["af","ar-ae","ar-bh","ar-dz","ar-eg","ar-iq","ar-jo","ar-kw","ar-lb","ar-ly","ar-ma","ar-om","ar-qa","ar-sa","ar-sy","ar-tn","ar-ye","as","az","be","bg","bh","bn","bs","ca","cs","cy","da","de","de-at","de-ch","de-li","de-lu","el","en","en-au","en-bz","en-ca","en-gb","en-ie","en-jm","en-nz","en-tt","en-us","en-za","eo","es","es-ar","es-bo","es-cl","es-co","es-cr","es-do","es-ec","es-gt","es-hn","es-mx","es-ni","es-pa","es-pe","es-pr","es-py","es-sv","es-uy","es-ve","et","eu","fa","fi","fo","fr","fr-be","fr-ca","fr-ch","fr-lu","ga","gd","he","hi","hr","hu","id","is","it","it-ch","ja","ji","ko","ku","lt","lv","mk","ml","ms","mt","nb","ne","nl","nl-be","nn","no","pa","pl","pt","pt-br","rm","ro","ro-md","ru","ru-md","sb","sk","sl","sq","sr","sv","sv-fi","th","tn","tr","ts","ua","ur","ve","vi","xh","zh-cn","zh-hk","zh-sg","zh-tw","zu"],"x-enum-name":"EmailTemplateLocale","x-enum-keys":[]},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"subject":{"type":"string","description":"Email Subject","x-example":"[SUBJECT]"},"message":{"type":"string","description":"Template message","x-example":"[MESSAGE]"},"senderName":{"type":"string","description":"Name of the email sender","x-example":"[SENDER_NAME]"},"senderEmail":{"type":"string","description":"Email of the sender","x-example":"email@example.com"},"replyTo":{"type":"string","description":"Reply to email","x-example":"email@example.com"}},"required":["subject","message"]}}}}},"delete":{"summary":"Reset custom email template","operationId":"projectsDeleteEmailTemplate","tags":["projects"],"description":"","responses":{"200":{"description":"EmailTemplate","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/emailTemplate"}}}}},"x-appwrite":{"method":"deleteEmailTemplate","weight":180,"cookies":false,"type":"","demo":"projects\/delete-email-template.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"type","description":"Template type","required":true,"schema":{"type":"string","x-example":"verification","enum":["verification","magicsession","recovery","invitation"],"x-enum-name":"EmailTemplateType","x-enum-keys":[]},"in":"path"},{"name":"locale","description":"Template locale","required":true,"schema":{"type":"string","x-example":"af","enum":["af","ar-ae","ar-bh","ar-dz","ar-eg","ar-iq","ar-jo","ar-kw","ar-lb","ar-ly","ar-ma","ar-om","ar-qa","ar-sa","ar-sy","ar-tn","ar-ye","as","az","be","bg","bh","bn","bs","ca","cs","cy","da","de","de-at","de-ch","de-li","de-lu","el","en","en-au","en-bz","en-ca","en-gb","en-ie","en-jm","en-nz","en-tt","en-us","en-za","eo","es","es-ar","es-bo","es-cl","es-co","es-cr","es-do","es-ec","es-gt","es-hn","es-mx","es-ni","es-pa","es-pe","es-pr","es-py","es-sv","es-uy","es-ve","et","eu","fa","fi","fo","fr","fr-be","fr-ca","fr-ch","fr-lu","ga","gd","he","hi","hr","hu","id","is","it","it-ch","ja","ji","ko","ku","lt","lv","mk","ml","ms","mt","nb","ne","nl","nl-be","nn","no","pa","pl","pt","pt-br","rm","ro","ro-md","ru","ru-md","sb","sk","sl","sq","sr","sv","sv-fi","th","tn","tr","ts","ua","ur","ve","vi","xh","zh-cn","zh-hk","zh-sg","zh-tw","zu"],"x-enum-name":"EmailTemplateLocale","x-enum-keys":[]},"in":"path"}]}},"\/projects\/{projectId}\/templates\/sms\/{type}\/{locale}":{"get":{"summary":"Get custom SMS template","operationId":"projectsGetSmsTemplate","tags":["projects"],"description":"","responses":{"200":{"description":"SmsTemplate","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/smsTemplate"}}}}},"x-appwrite":{"method":"getSmsTemplate","weight":175,"cookies":false,"type":"","demo":"projects\/get-sms-template.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"type","description":"Template type","required":true,"schema":{"type":"string","x-example":"verification","enum":["verification","login","invitation"],"x-enum-name":"SMSTemplateType","x-enum-keys":[]},"in":"path"},{"name":"locale","description":"Template locale","required":true,"schema":{"type":"string","x-example":"af","enum":["af","ar-ae","ar-bh","ar-dz","ar-eg","ar-iq","ar-jo","ar-kw","ar-lb","ar-ly","ar-ma","ar-om","ar-qa","ar-sa","ar-sy","ar-tn","ar-ye","as","az","be","bg","bh","bn","bs","ca","cs","cy","da","de","de-at","de-ch","de-li","de-lu","el","en","en-au","en-bz","en-ca","en-gb","en-ie","en-jm","en-nz","en-tt","en-us","en-za","eo","es","es-ar","es-bo","es-cl","es-co","es-cr","es-do","es-ec","es-gt","es-hn","es-mx","es-ni","es-pa","es-pe","es-pr","es-py","es-sv","es-uy","es-ve","et","eu","fa","fi","fo","fr","fr-be","fr-ca","fr-ch","fr-lu","ga","gd","he","hi","hr","hu","id","is","it","it-ch","ja","ji","ko","ku","lt","lv","mk","ml","ms","mt","nb","ne","nl","nl-be","nn","no","pa","pl","pt","pt-br","rm","ro","ro-md","ru","ru-md","sb","sk","sl","sq","sr","sv","sv-fi","th","tn","tr","ts","ua","ur","ve","vi","xh","zh-cn","zh-hk","zh-sg","zh-tw","zu"],"x-enum-name":"SMSTemplateLocale","x-enum-keys":[]},"in":"path"}]},"patch":{"summary":"Update custom SMS template","operationId":"projectsUpdateSmsTemplate","tags":["projects"],"description":"","responses":{"200":{"description":"SmsTemplate","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/smsTemplate"}}}}},"x-appwrite":{"method":"updateSmsTemplate","weight":177,"cookies":false,"type":"","demo":"projects\/update-sms-template.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"type","description":"Template type","required":true,"schema":{"type":"string","x-example":"verification","enum":["verification","login","invitation"],"x-enum-name":"SMSTemplateType","x-enum-keys":[]},"in":"path"},{"name":"locale","description":"Template locale","required":true,"schema":{"type":"string","x-example":"af","enum":["af","ar-ae","ar-bh","ar-dz","ar-eg","ar-iq","ar-jo","ar-kw","ar-lb","ar-ly","ar-ma","ar-om","ar-qa","ar-sa","ar-sy","ar-tn","ar-ye","as","az","be","bg","bh","bn","bs","ca","cs","cy","da","de","de-at","de-ch","de-li","de-lu","el","en","en-au","en-bz","en-ca","en-gb","en-ie","en-jm","en-nz","en-tt","en-us","en-za","eo","es","es-ar","es-bo","es-cl","es-co","es-cr","es-do","es-ec","es-gt","es-hn","es-mx","es-ni","es-pa","es-pe","es-pr","es-py","es-sv","es-uy","es-ve","et","eu","fa","fi","fo","fr","fr-be","fr-ca","fr-ch","fr-lu","ga","gd","he","hi","hr","hu","id","is","it","it-ch","ja","ji","ko","ku","lt","lv","mk","ml","ms","mt","nb","ne","nl","nl-be","nn","no","pa","pl","pt","pt-br","rm","ro","ro-md","ru","ru-md","sb","sk","sl","sq","sr","sv","sv-fi","th","tn","tr","ts","ua","ur","ve","vi","xh","zh-cn","zh-hk","zh-sg","zh-tw","zu"],"x-enum-name":"SMSTemplateLocale","x-enum-keys":[]},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Template message","x-example":"[MESSAGE]"}},"required":["message"]}}}}},"delete":{"summary":"Reset custom SMS template","operationId":"projectsDeleteSmsTemplate","tags":["projects"],"description":"","responses":{"200":{"description":"SmsTemplate","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/smsTemplate"}}}}},"x-appwrite":{"method":"deleteSmsTemplate","weight":179,"cookies":false,"type":"","demo":"projects\/delete-sms-template.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"type","description":"Template type","required":true,"schema":{"type":"string","x-example":"verification","enum":["verification","login","invitation"],"x-enum-name":"SMSTemplateType","x-enum-keys":[]},"in":"path"},{"name":"locale","description":"Template locale","required":true,"schema":{"type":"string","x-example":"af","enum":["af","ar-ae","ar-bh","ar-dz","ar-eg","ar-iq","ar-jo","ar-kw","ar-lb","ar-ly","ar-ma","ar-om","ar-qa","ar-sa","ar-sy","ar-tn","ar-ye","as","az","be","bg","bh","bn","bs","ca","cs","cy","da","de","de-at","de-ch","de-li","de-lu","el","en","en-au","en-bz","en-ca","en-gb","en-ie","en-jm","en-nz","en-tt","en-us","en-za","eo","es","es-ar","es-bo","es-cl","es-co","es-cr","es-do","es-ec","es-gt","es-hn","es-mx","es-ni","es-pa","es-pe","es-pr","es-py","es-sv","es-uy","es-ve","et","eu","fa","fi","fo","fr","fr-be","fr-ca","fr-ch","fr-lu","ga","gd","he","hi","hr","hu","id","is","it","it-ch","ja","ji","ko","ku","lt","lv","mk","ml","ms","mt","nb","ne","nl","nl-be","nn","no","pa","pl","pt","pt-br","rm","ro","ro-md","ru","ru-md","sb","sk","sl","sq","sr","sv","sv-fi","th","tn","tr","ts","ua","ur","ve","vi","xh","zh-cn","zh-hk","zh-sg","zh-tw","zu"],"x-enum-name":"SMSTemplateLocale","x-enum-keys":[]},"in":"path"}]}},"\/projects\/{projectId}\/webhooks":{"get":{"summary":"List webhooks","operationId":"projectsListWebhooks","tags":["projects"],"description":"","responses":{"200":{"description":"Webhooks List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/webhookList"}}}}},"x-appwrite":{"method":"listWebhooks","weight":158,"cookies":false,"type":"","demo":"projects\/list-webhooks.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}]},"post":{"summary":"Create webhook","operationId":"projectsCreateWebhook","tags":["projects"],"description":"","responses":{"201":{"description":"Webhook","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/webhook"}}}}},"x-appwrite":{"method":"createWebhook","weight":157,"cookies":false,"type":"","demo":"projects\/create-webhook.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Webhook name. Max length: 128 chars.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Enable or disable a webhook.","x-example":false},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"Webhook URL.","x-example":null},"security":{"type":"boolean","description":"Certificate verification, false for disabled or true for enabled.","x-example":false},"httpUser":{"type":"string","description":"Webhook HTTP user. Max length: 256 chars.","x-example":"[HTTP_USER]"},"httpPass":{"type":"string","description":"Webhook HTTP password. Max length: 256 chars.","x-example":"[HTTP_PASS]"}},"required":["name","events","url","security"]}}}}}},"\/projects\/{projectId}\/webhooks\/{webhookId}":{"get":{"summary":"Get webhook","operationId":"projectsGetWebhook","tags":["projects"],"description":"","responses":{"200":{"description":"Webhook","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/webhook"}}}}},"x-appwrite":{"method":"getWebhook","weight":159,"cookies":false,"type":"","demo":"projects\/get-webhook.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"webhookId","description":"Webhook unique ID.","required":true,"schema":{"type":"string","x-example":"[WEBHOOK_ID]"},"in":"path"}]},"put":{"summary":"Update webhook","operationId":"projectsUpdateWebhook","tags":["projects"],"description":"","responses":{"200":{"description":"Webhook","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/webhook"}}}}},"x-appwrite":{"method":"updateWebhook","weight":160,"cookies":false,"type":"","demo":"projects\/update-webhook.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"webhookId","description":"Webhook unique ID.","required":true,"schema":{"type":"string","x-example":"[WEBHOOK_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Webhook name. Max length: 128 chars.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Enable or disable a webhook.","x-example":false},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"Webhook URL.","x-example":null},"security":{"type":"boolean","description":"Certificate verification, false for disabled or true for enabled.","x-example":false},"httpUser":{"type":"string","description":"Webhook HTTP user. Max length: 256 chars.","x-example":"[HTTP_USER]"},"httpPass":{"type":"string","description":"Webhook HTTP password. Max length: 256 chars.","x-example":"[HTTP_PASS]"}},"required":["name","events","url","security"]}}}}},"delete":{"summary":"Delete webhook","operationId":"projectsDeleteWebhook","tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteWebhook","weight":162,"cookies":false,"type":"","demo":"projects\/delete-webhook.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"webhookId","description":"Webhook unique ID.","required":true,"schema":{"type":"string","x-example":"[WEBHOOK_ID]"},"in":"path"}]}},"\/projects\/{projectId}\/webhooks\/{webhookId}\/signature":{"patch":{"summary":"Update webhook signature key","operationId":"projectsUpdateWebhookSignature","tags":["projects"],"description":"","responses":{"200":{"description":"Webhook","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/webhook"}}}}},"x-appwrite":{"method":"updateWebhookSignature","weight":161,"cookies":false,"type":"","demo":"projects\/update-webhook-signature.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"webhookId","description":"Webhook unique ID.","required":true,"schema":{"type":"string","x-example":"[WEBHOOK_ID]"},"in":"path"}]}},"\/proxy\/rules":{"get":{"summary":"List Rules","operationId":"proxyListRules","tags":["proxy"],"description":"Get a list of all the proxy rules. You can use the query params to filter your results.","responses":{"200":{"description":"Rule List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/proxyRuleList"}}}}},"x-appwrite":{"method":"listRules","weight":291,"cookies":false,"type":"","demo":"proxy\/list-rules.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/proxy\/list-rules.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"rules.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: domain, resourceType, resourceId, url","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Rule","operationId":"proxyCreateRule","tags":["proxy"],"description":"Create a new proxy rule.","responses":{"201":{"description":"Rule","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/proxyRule"}}}}},"x-appwrite":{"method":"createRule","weight":290,"cookies":false,"type":"","demo":"proxy\/create-rule.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/proxy\/create-rule.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"rules.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"domain":{"type":"string","description":"Domain name.","x-example":null},"resourceType":{"type":"string","description":"Action definition for the rule. Possible values are \"api\", \"function\"","x-example":"api","enum":["api","function"],"x-enum-name":null,"x-enum-keys":[]},"resourceId":{"type":"string","description":"ID of resource for the action type. If resourceType is \"api\", leave empty. If resourceType is \"function\", provide ID of the function.","x-example":"[RESOURCE_ID]"}},"required":["domain","resourceType"]}}}}}},"\/proxy\/rules\/{ruleId}":{"get":{"summary":"Get Rule","operationId":"proxyGetRule","tags":["proxy"],"description":"Get a proxy rule by its unique ID.","responses":{"200":{"description":"Rule","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/proxyRule"}}}}},"x-appwrite":{"method":"getRule","weight":292,"cookies":false,"type":"","demo":"proxy\/get-rule.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/proxy\/get-rule.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"rules.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"ruleId","description":"Rule ID.","required":true,"schema":{"type":"string","x-example":"[RULE_ID]"},"in":"path"}]},"delete":{"summary":"Delete Rule","operationId":"proxyDeleteRule","tags":["proxy"],"description":"Delete a proxy rule by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteRule","weight":293,"cookies":false,"type":"","demo":"proxy\/delete-rule.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/proxy\/delete-rule.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"rules.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"ruleId","description":"Rule ID.","required":true,"schema":{"type":"string","x-example":"[RULE_ID]"},"in":"path"}]}},"\/proxy\/rules\/{ruleId}\/verification":{"patch":{"summary":"Update Rule Verification Status","operationId":"proxyUpdateRuleVerification","tags":["proxy"],"description":"","responses":{"200":{"description":"Rule","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/proxyRule"}}}}},"x-appwrite":{"method":"updateRuleVerification","weight":294,"cookies":false,"type":"","demo":"proxy\/update-rule-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"rules.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"ruleId","description":"Rule ID.","required":true,"schema":{"type":"string","x-example":"[RULE_ID]"},"in":"path"}]}},"\/storage\/buckets":{"get":{"summary":"List buckets","operationId":"storageListBuckets","tags":["storage"],"description":"Get a list of all the storage buckets. You can use the query params to filter your results.","responses":{"200":{"description":"Buckets List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/bucketList"}}}}},"x-appwrite":{"method":"listBuckets","weight":188,"cookies":false,"type":"","demo":"storage\/list-buckets.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/list-buckets.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: enabled, name, fileSecurity, maximumFileSize, encryption, antivirus","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create bucket","operationId":"storageCreateBucket","tags":["storage"],"description":"Create a new storage bucket.","responses":{"201":{"description":"Bucket","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/bucket"}}}}},"x-appwrite":{"method":"createBucket","weight":187,"cookies":false,"type":"","demo":"storage\/create-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"bucketId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, no user is granted with any permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":false},"enabled":{"type":"boolean","description":"Is bucket enabled? When set to 'disabled', users cannot access the files in this bucket but Server SDKs with and API key can still access the bucket. No files are lost when this is toggled.","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB.","x-example":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","x-example":"none","enum":["none","gzip","zstd"],"x-enum-name":null,"x-enum-keys":[]},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","x-example":false}},"required":["bucketId","name"]}}}}}},"\/storage\/buckets\/{bucketId}":{"get":{"summary":"Get bucket","operationId":"storageGetBucket","tags":["storage"],"description":"Get a storage bucket by its unique ID. This endpoint response returns a JSON object with the storage bucket metadata.","responses":{"200":{"description":"Bucket","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/bucket"}}}}},"x-appwrite":{"method":"getBucket","weight":189,"cookies":false,"type":"","demo":"storage\/get-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"bucketId","description":"Bucket unique ID.","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"}]},"put":{"summary":"Update bucket","operationId":"storageUpdateBucket","tags":["storage"],"description":"Update a storage bucket by its unique ID.","responses":{"200":{"description":"Bucket","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/bucket"}}}}},"x-appwrite":{"method":"updateBucket","weight":190,"cookies":false,"type":"","demo":"storage\/update-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"bucketId","description":"Bucket unique ID.","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Bucket name","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":false},"enabled":{"type":"boolean","description":"Is bucket enabled? When set to 'disabled', users cannot access the files in this bucket but Server SDKs with and API key can still access the bucket. No files are lost when this is toggled.","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB.","x-example":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","x-example":"none","enum":["none","gzip","zstd"],"x-enum-name":null,"x-enum-keys":[]},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","x-example":false}},"required":["name"]}}}}},"delete":{"summary":"Delete bucket","operationId":"storageDeleteBucket","tags":["storage"],"description":"Delete a storage bucket by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteBucket","weight":191,"cookies":false,"type":"","demo":"storage\/delete-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"bucketId","description":"Bucket unique ID.","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files":{"get":{"summary":"List files","operationId":"storageListFiles","tags":["storage"],"description":"Get a list of all the user files. You can use the query params to filter your results.","responses":{"200":{"description":"Files List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/fileList"}}}}},"x-appwrite":{"method":"listFiles","weight":193,"cookies":false,"type":"","demo":"storage\/list-files.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/list-files.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create file","operationId":"storageCreateFile","tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"createFile","weight":192,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"}],"requestBody":{"content":{"multipart\/form-data":{"schema":{"type":"object","properties":{"fileId":{"type":"string","description":"File ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[FILE_ID]","x-upload-id":true},"file":{"type":"string","description":"Binary file. Appwrite SDKs provide helpers to handle file input. [Learn about file input](https:\/\/appwrite.io\/docs\/storage#file-input).","x-example":null},"permissions":{"type":"array","description":"An array of permission strings. By default, only the current user is granted all permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["fileId","file"]}}}}}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get file","operationId":"storageGetFile","tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"getFile","weight":194,"cookies":false,"type":"","demo":"storage\/get-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File ID.","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"}]},"put":{"summary":"Update file","operationId":"storageUpdateFile","tags":["storage"],"description":"Update a file by its unique ID. Only users with write permissions have access to update this resource.","responses":{"200":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"updateFile","weight":198,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File unique ID.","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Name of the file","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission string. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":199,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File ID.","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/download":{"get":{"summary":"Get file for download","operationId":"storageGetFileDownload","tags":["storage"],"description":"Get a file content by its unique ID. The endpoint response return with a 'Content-Disposition: attachment' header that tells the browser to start downloading the file to user downloads directory.","responses":{"200":{"description":"File"}},"x-appwrite":{"method":"getFileDownload","weight":196,"cookies":false,"type":"location","demo":"storage\/get-file-download.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-download.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File ID.","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/preview":{"get":{"summary":"Get file preview","operationId":"storageGetFilePreview","tags":["storage"],"description":"Get a file preview image. Currently, this method supports preview for image files (jpg, png, and gif), other supported formats, like pdf, docs, slides, and spreadsheets, will return the file icon image. You can also pass query string arguments for cutting and resizing your preview image. Preview is supported only for image files smaller than 10MB.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFilePreview","weight":195,"cookies":false,"type":"location","demo":"storage\/get-file-preview.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-preview.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File ID","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"},{"name":"width","description":"Resize preview image width, Pass an integer between 0 to 4000.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 4000.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"gravity","description":"Image crop gravity. Can be one of center,top-left,top,top-right,left,right,bottom-left,bottom,bottom-right","required":false,"schema":{"type":"string","x-example":"center","enum":["center","top-left","top","top-right","left","right","bottom-left","bottom","bottom-right"],"x-enum-name":"ImageGravity","x-enum-keys":[],"default":"center"},"in":"query"},{"name":"quality","description":"Preview image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"borderWidth","description":"Preview image border in pixels. Pass an integer between 0 to 100. Defaults to 0.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"borderColor","description":"Preview image border color. Use a valid HEX color, no # is needed for prefix.","required":false,"schema":{"type":"string","default":""},"in":"query"},{"name":"borderRadius","description":"Preview image border radius in pixels. Pass an integer between 0 to 4000.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"opacity","description":"Preview image opacity. Only works with images having an alpha channel (like png). Pass a number between 0 to 1.","required":false,"schema":{"type":"number","format":"float","x-example":0,"default":1},"in":"query"},{"name":"rotation","description":"Preview image rotation in degrees. Pass an integer between -360 and 360.","required":false,"schema":{"type":"integer","format":"int32","x-example":-360,"default":0},"in":"query"},{"name":"background","description":"Preview image background color. Only works with transparent images (png). Use a valid HEX color, no # is needed for prefix.","required":false,"schema":{"type":"string","default":""},"in":"query"},{"name":"output","description":"Output format type (jpeg, jpg, png, gif and webp).","required":false,"schema":{"type":"string","x-example":"jpg","enum":["jpg","jpeg","gif","png","webp"],"x-enum-name":"ImageFormat","x-enum-keys":[],"default":""},"in":"query"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/view":{"get":{"summary":"Get file for view","operationId":"storageGetFileView","tags":["storage"],"description":"Get a file content by its unique ID. This endpoint is similar to the download method but returns with no 'Content-Disposition: attachment' header.","responses":{"200":{"description":"File"}},"x-appwrite":{"method":"getFileView","weight":197,"cookies":false,"type":"location","demo":"storage\/get-file-view.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-view.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File ID.","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"}]}},"\/storage\/usage":{"get":{"summary":"Get usage stats for storage","operationId":"storageGetUsage","tags":["storage"],"description":"","responses":{"200":{"description":"StorageUsage","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageStorage"}}}}},"x-appwrite":{"method":"getUsage","weight":200,"cookies":false,"type":"","demo":"storage\/get-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"schema":{"type":"string","x-example":"24h","enum":["24h","30d","90d"],"x-enum-name":"StorageUsageRange","x-enum-keys":["Twenty Four Hours","Thirty Days","Ninety Days"],"default":"30d"},"in":"query"}]}},"\/storage\/{bucketId}\/usage":{"get":{"summary":"Get usage stats for storage bucket","operationId":"storageGetBucketUsage","tags":["storage"],"description":"","responses":{"200":{"description":"UsageBuckets","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageBuckets"}}}}},"x-appwrite":{"method":"getBucketUsage","weight":201,"cookies":false,"type":"","demo":"storage\/get-bucket-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"bucketId","description":"Bucket ID.","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"range","description":"Date range.","required":false,"schema":{"type":"string","x-example":"24h","enum":["24h","30d","90d"],"x-enum-name":"StorageUsageRange","x-enum-keys":["Twenty Four Hours","Thirty Days","Ninety Days"],"default":"30d"},"in":"query"}]}},"\/teams":{"get":{"summary":"List teams","operationId":"teamsList","tags":["teams"],"description":"Get a list of all the teams in which the current user is a member. You can use the parameters to filter your results.","responses":{"200":{"description":"Teams List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/teamList"}}}}},"x-appwrite":{"method":"list","weight":203,"cookies":false,"type":"","demo":"teams\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-teams.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total, billingPlan","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create team","operationId":"teamsCreate","tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"create","weight":202,"cookies":false,"type":"","demo":"teams\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/create-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"teamId":{"type":"string","description":"Team ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[TEAM_ID]"},"name":{"type":"string","description":"Team name. Max length: 128 chars.","x-example":"[NAME]"},"roles":{"type":"array","description":"Array of strings. Use this param to set the roles in the team for the user who created it. The default role is **owner**. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}}}}},"\/teams\/{teamId}":{"get":{"summary":"Get team","operationId":"teamsGet","tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"get","weight":204,"cookies":false,"type":"","demo":"teams\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams","offline-key":"{teamId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}]},"put":{"summary":"Update name","operationId":"teamsUpdateName","tags":["teams"],"description":"Update the team's name by its unique ID.","responses":{"200":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"updateName","weight":206,"cookies":false,"type":"","demo":"teams\/update-name.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-name.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams","offline-key":"{teamId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"New team name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["name"]}}}}},"delete":{"summary":"Delete team","operationId":"teamsDelete","tags":["teams"],"description":"Delete a team using its ID. Only team members with the owner role can delete the team.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":208,"cookies":false,"type":"","demo":"teams\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/delete-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}]}},"\/teams\/{teamId}\/logs":{"get":{"summary":"List team logs","operationId":"teamsListLogs","tags":["teams"],"description":"Get the team activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listLogs","weight":215,"cookies":false,"type":"","demo":"teams\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/teams\/{teamId}\/memberships":{"get":{"summary":"List team memberships","operationId":"teamsListMemberships","tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"listMemberships","weight":210,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/memberships","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create team membership","operationId":"teamsCreateMembership","tags":["teams"],"description":"Invite a new member to join your team. Provide an ID for existing users, or invite unregistered users using an email or phone number. If initiated from a Client SDK, Appwrite will send an email or sms with a link to join the team to the invited user, and an account will be created for them if one doesn't exist. If initiated from a Server SDK, the new member will be added automatically to the team.\n\nYou only need to provide one of a user ID, email, or phone number. Appwrite will prioritize accepting the user ID > email > phone number if you provide more than one of these parameters.\n\nUse the `url` parameter to redirect the user from the invitation email to your app. After the user is redirected, use the [Update Team Membership Status](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/teams#updateMembershipStatus) endpoint to allow the user to accept the invitation to the team. \n\nPlease note that to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) Appwrite will accept the only redirect URLs under the domains you have added as a platform on the Appwrite Console.\n","responses":{"201":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"createMembership","weight":209,"cookies":false,"type":"","demo":"teams\/create-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/create-team-membership.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"email":{"type":"string","description":"Email of the new team member.","x-example":"email@example.com"},"userId":{"type":"string","description":"ID of the user to be added to a team.","x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"roles":{"type":"array","description":"Array of strings. Use this param to set the user roles in the team. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"},"name":{"type":"string","description":"Name of the new team member. Max length: 128 chars.","x-example":"[NAME]"}},"required":["roles"]}}}}}},"\/teams\/{teamId}\/memberships\/{membershipId}":{"get":{"summary":"Get team membership","operationId":"teamsGetMembership","tags":["teams"],"description":"Get a team member by the membership unique id. All team members have read access for this resource.","responses":{"200":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"getMembership","weight":211,"cookies":false,"type":"","demo":"teams\/get-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-member.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/memberships","offline-key":"{membershipId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"schema":{"type":"string","x-example":"[MEMBERSHIP_ID]"},"in":"path"}]},"patch":{"summary":"Update membership","operationId":"teamsUpdateMembership","tags":["teams"],"description":"Modify the roles of a team member. Only team members with the owner role have access to this endpoint. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions).\n","responses":{"200":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"updateMembership","weight":212,"cookies":false,"type":"","demo":"teams\/update-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"schema":{"type":"string","x-example":"[MEMBERSHIP_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"roles":{"type":"array","description":"An array of strings. Use this param to set the user's roles in the team. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["roles"]}}}}},"delete":{"summary":"Delete team membership","operationId":"teamsDeleteMembership","tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":214,"cookies":false,"type":"","demo":"teams\/delete-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/delete-team-membership.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"schema":{"type":"string","x-example":"[MEMBERSHIP_ID]"},"in":"path"}]}},"\/teams\/{teamId}\/memberships\/{membershipId}\/status":{"patch":{"summary":"Update team membership status","operationId":"teamsUpdateMembershipStatus","tags":["teams"],"description":"Use this endpoint to allow a user to accept an invitation to join a team after being redirected back to your app from the invitation email received by the user.\n\nIf the request is successful, a session for the user is automatically created.\n","responses":{"200":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"updateMembershipStatus","weight":213,"cookies":false,"type":"","demo":"teams\/update-membership-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"public","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"schema":{"type":"string","x-example":"[MEMBERSHIP_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Secret key.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/teams\/{teamId}\/prefs":{"get":{"summary":"Get team preferences","operationId":"teamsGetPrefs","tags":["teams"],"description":"Get the team's shared preferences by its unique ID. If a preference doesn't need to be shared by all team members, prefer storing them in [user preferences](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#getPrefs).","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"getPrefs","weight":205,"cookies":false,"type":"","demo":"teams\/get-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/prefs","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}]},"put":{"summary":"Update preferences","operationId":"teamsUpdatePrefs","tags":["teams"],"description":"Update the team's preferences by its unique ID. The object you pass is stored as is and replaces any previous value. The maximum allowed prefs size is 64kB and throws an error if exceeded.","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"updatePrefs","weight":207,"cookies":false,"type":"","demo":"teams\/update-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/prefs","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"prefs":{"type":"object","description":"Prefs key-value JSON object.","x-example":"{}"}},"required":["prefs"]}}}}}},"\/users":{"get":{"summary":"List users","operationId":"usersList","tags":["users"],"description":"Get a list of all the project's users. You can use the query params to filter your results.","responses":{"200":{"description":"Users List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/userList"}}}}},"x-appwrite":{"method":"list","weight":225,"cookies":false,"type":"","demo":"users\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-users.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, email, phone, status, passwordUpdate, registration, emailVerification, phoneVerification, labels","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create user","operationId":"usersCreate","tags":["users"],"description":"Create a new user.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"create","weight":216,"cookies":false,"type":"","demo":"users\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"password":{"type":"string","description":"Plain text user password. Must be at least 8 chars.","x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId"]}}}}}},"\/users\/argon2":{"post":{"summary":"Create user with Argon2 password","operationId":"usersCreateArgon2User","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Argon2](https:\/\/en.wikipedia.org\/wiki\/Argon2) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createArgon2User","weight":219,"cookies":false,"type":"","demo":"users\/create-argon2user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-argon2-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Argon2.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/bcrypt":{"post":{"summary":"Create user with bcrypt password","operationId":"usersCreateBcryptUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Bcrypt](https:\/\/en.wikipedia.org\/wiki\/Bcrypt) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createBcryptUser","weight":217,"cookies":false,"type":"","demo":"users\/create-bcrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-bcrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Bcrypt.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/identities":{"get":{"summary":"List Identities","operationId":"usersListIdentities","tags":["users"],"description":"Get identities for all users.","responses":{"200":{"description":"Identities List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/identityList"}}}}},"x-appwrite":{"method":"listIdentities","weight":233,"cookies":false,"type":"","demo":"users\/list-identities.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-identities.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, provider, providerUid, providerEmail, providerAccessTokenExpiry","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]}},"\/users\/identities\/{identityId}":{"delete":{"summary":"Delete identity","operationId":"usersDeleteIdentity","tags":["users"],"description":"Delete an identity by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIdentity","weight":253,"cookies":false,"type":"","demo":"users\/delete-identity.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-identity.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"identityId","description":"Identity ID.","required":true,"schema":{"type":"string","x-example":"[IDENTITY_ID]"},"in":"path"}]}},"\/users\/md5":{"post":{"summary":"Create user with MD5 password","operationId":"usersCreateMD5User","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [MD5](https:\/\/en.wikipedia.org\/wiki\/MD5) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createMD5User","weight":218,"cookies":false,"type":"","demo":"users\/create-m-d5user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-md5-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using MD5.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/phpass":{"post":{"summary":"Create user with PHPass password","operationId":"usersCreatePHPassUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [PHPass](https:\/\/www.openwall.com\/phpass\/) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createPHPassUser","weight":221,"cookies":false,"type":"","demo":"users\/create-p-h-pass-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-phpass-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or pass the string `ID.unique()`to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using PHPass.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/scrypt":{"post":{"summary":"Create user with Scrypt password","operationId":"usersCreateScryptUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt](https:\/\/github.com\/Tarsnap\/scrypt) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createScryptUser","weight":222,"cookies":false,"type":"","demo":"users\/create-scrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt.","x-example":"password"},"passwordSalt":{"type":"string","description":"Optional salt used to hash password.","x-example":"[PASSWORD_SALT]"},"passwordCpu":{"type":"integer","description":"Optional CPU cost used to hash password.","x-example":null},"passwordMemory":{"type":"integer","description":"Optional memory cost used to hash password.","x-example":null},"passwordParallel":{"type":"integer","description":"Optional parallelization cost used to hash password.","x-example":null},"passwordLength":{"type":"integer","description":"Optional hash length used to hash password.","x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordCpu","passwordMemory","passwordParallel","passwordLength"]}}}}}},"\/users\/scrypt-modified":{"post":{"summary":"Create user with Scrypt modified password","operationId":"usersCreateScryptModifiedUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt Modified](https:\/\/gist.github.com\/Meldiron\/eecf84a0225eccb5a378d45bb27462cc) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createScryptModifiedUser","weight":223,"cookies":false,"type":"","demo":"users\/create-scrypt-modified-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-modified-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt Modified.","x-example":"password"},"passwordSalt":{"type":"string","description":"Salt used to hash password.","x-example":"[PASSWORD_SALT]"},"passwordSaltSeparator":{"type":"string","description":"Salt separator used to hash password.","x-example":"[PASSWORD_SALT_SEPARATOR]"},"passwordSignerKey":{"type":"string","description":"Signer key used to hash password.","x-example":"[PASSWORD_SIGNER_KEY]"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordSaltSeparator","passwordSignerKey"]}}}}}},"\/users\/sha":{"post":{"summary":"Create user with SHA password","operationId":"usersCreateSHAUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [SHA](https:\/\/en.wikipedia.org\/wiki\/Secure_Hash_Algorithm) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createSHAUser","weight":220,"cookies":false,"type":"","demo":"users\/create-s-h-a-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-sha-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using SHA.","x-example":"password"},"passwordVersion":{"type":"string","description":"Optional SHA version used to hash password. Allowed values are: 'sha1', 'sha224', 'sha256', 'sha384', 'sha512\/224', 'sha512\/256', 'sha512', 'sha3-224', 'sha3-256', 'sha3-384', 'sha3-512'","x-example":"sha1","enum":["sha1","sha224","sha256","sha384","sha512\/224","sha512\/256","sha512","sha3-224","sha3-256","sha3-384","sha3-512"],"x-enum-name":"PasswordHash","x-enum-keys":[]},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/usage":{"get":{"summary":"Get usage stats for the users API","operationId":"usersGetUsage","tags":["users"],"description":"","responses":{"200":{"description":"UsageUsers","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageUsers"}}}}},"x-appwrite":{"method":"getUsage","weight":254,"cookies":false,"type":"","demo":"users\/get-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"schema":{"type":"string","x-example":"24h","enum":["24h","30d","90d"],"x-enum-name":"UserUsageRange","x-enum-keys":["Twenty Four Hours","Thirty Days","Ninety Days"],"default":"30d"},"in":"query"}]}},"\/users\/{userId}":{"get":{"summary":"Get user","operationId":"usersGet","tags":["users"],"description":"Get a user by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"get","weight":226,"cookies":false,"type":"","demo":"users\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]},"delete":{"summary":"Delete user","operationId":"usersDelete","tags":["users"],"description":"Delete a user by its unique ID, thereby releasing it's ID. Since ID is released and can be reused, all user-related resources like documents or storage files should be deleted before user deletion. If you want to keep ID reserved, use the [updateStatus](https:\/\/appwrite.io\/docs\/server\/users#usersUpdateStatus) endpoint instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":251,"cookies":false,"type":"","demo":"users\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]}},"\/users\/{userId}\/email":{"patch":{"summary":"Update email","operationId":"usersUpdateEmail","tags":["users"],"description":"Update the user email by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateEmail","weight":239,"cookies":false,"type":"","demo":"users\/update-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","x-example":"email@example.com"}},"required":["email"]}}}}}},"\/users\/{userId}\/labels":{"put":{"summary":"Update user labels","operationId":"usersUpdateLabels","tags":["users"],"description":"Update the user labels by its unique ID. \n\nLabels can be used to grant access to resources. While teams are a way for user's to share access to a resource, labels can be defined by the developer to grant access without an invitation. See the [Permissions docs](https:\/\/appwrite.io\/docs\/permissions) for more info.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateLabels","weight":235,"cookies":false,"type":"","demo":"users\/update-labels.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-labels.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"labels":{"type":"array","description":"Array of user labels. Replaces the previous labels. Maximum of 1000 labels are allowed, each up to 36 alphanumeric characters long.","x-example":null,"items":{"type":"string"}}},"required":["labels"]}}}}}},"\/users\/{userId}\/logs":{"get":{"summary":"List user logs","operationId":"usersListLogs","tags":["users"],"description":"Get the user activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listLogs","weight":231,"cookies":false,"type":"","demo":"users\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/users\/{userId}\/memberships":{"get":{"summary":"List user memberships","operationId":"usersListMemberships","tags":["users"],"description":"Get the user membership list by its unique ID.","responses":{"200":{"description":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"listMemberships","weight":230,"cookies":false,"type":"","demo":"users\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-memberships.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]}},"\/users\/{userId}\/mfa":{"patch":{"summary":"Update MFA","operationId":"usersUpdateMfa","tags":["users"],"description":"","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateMfa","weight":244,"cookies":false,"type":"","demo":"users\/update-mfa.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-mfa.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"mfa":{"type":"boolean","description":"Enable or disable MFA.","x-example":false}},"required":["mfa"]}}}}}},"\/users\/{userId}\/mfa\/factors":{"get":{"summary":"List Factors","operationId":"usersListFactors","tags":["users"],"description":"","responses":{"200":{"description":"MFAFactors","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/mfaFactors"}}}}},"x-appwrite":{"method":"listFactors","weight":245,"cookies":false,"type":"","demo":"users\/list-factors.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-factors.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]}},"\/users\/{userId}\/mfa\/{type}":{"delete":{"summary":"Delete Authenticator","operationId":"usersDeleteAuthenticator","tags":["users"],"description":"","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"deleteAuthenticator","weight":246,"cookies":false,"type":"","demo":"users\/delete-authenticator.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-mfa.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"type","description":"Type of authenticator.","required":true,"schema":{"type":"string","x-example":"totp","enum":["totp"],"x-enum-name":null,"x-enum-keys":[]},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"otp":{"type":"string","description":"Valid verification token.","x-example":"[OTP]"}},"required":["otp"]}}}}}},"\/users\/{userId}\/name":{"patch":{"summary":"Update name","operationId":"usersUpdateName","tags":["users"],"description":"Update the user name by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateName","weight":237,"cookies":false,"type":"","demo":"users\/update-name.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-name.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["name"]}}}}}},"\/users\/{userId}\/password":{"patch":{"summary":"Update password","operationId":"usersUpdatePassword","tags":["users"],"description":"Update the user password by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePassword","weight":238,"cookies":false,"type":"","demo":"users\/update-password.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-password.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"password":{"type":"string","description":"New user password. Must be at least 8 chars.","x-example":null}},"required":["password"]}}}}}},"\/users\/{userId}\/phone":{"patch":{"summary":"Update phone","operationId":"usersUpdatePhone","tags":["users"],"description":"Update the user phone by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePhone","weight":240,"cookies":false,"type":"","demo":"users\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"number":{"type":"string","description":"User phone number.","x-example":"+12065550100"}},"required":["number"]}}}}}},"\/users\/{userId}\/prefs":{"get":{"summary":"Get user preferences","operationId":"usersGetPrefs","tags":["users"],"description":"Get the user preferences by its unique ID.","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"getPrefs","weight":227,"cookies":false,"type":"","demo":"users\/get-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]},"patch":{"summary":"Update user preferences","operationId":"usersUpdatePrefs","tags":["users"],"description":"Update the user preferences by its unique ID. The object you pass is stored as is, and replaces any previous value. The maximum allowed prefs size is 64kB and throws error if exceeded.","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"updatePrefs","weight":242,"cookies":false,"type":"","demo":"users\/update-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"prefs":{"type":"object","description":"Prefs key-value JSON object.","x-example":"{}"}},"required":["prefs"]}}}}}},"\/users\/{userId}\/sessions":{"get":{"summary":"List user sessions","operationId":"usersListSessions","tags":["users"],"description":"Get the user sessions list by its unique ID.","responses":{"200":{"description":"Sessions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/sessionList"}}}}},"x-appwrite":{"method":"listSessions","weight":229,"cookies":false,"type":"","demo":"users\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]},"post":{"summary":"Create session","operationId":"usersCreateSession","tags":["users"],"description":"Creates a session for a user. Returns an immediately usable session object.\n\nIf you want to generate a token for a custom authentication flow, use the [POST \/users\/{userId}\/tokens](https:\/\/appwrite.io\/docs\/server\/users#createToken) endpoint.","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"createSession","weight":247,"cookies":false,"type":"","demo":"users\/create-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-session.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]},"delete":{"summary":"Delete user sessions","operationId":"usersDeleteSessions","tags":["users"],"description":"Delete all user's sessions by using the user's unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":250,"cookies":false,"type":"","demo":"users\/delete-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]}},"\/users\/{userId}\/sessions\/{sessionId}":{"delete":{"summary":"Delete user session","operationId":"usersDeleteSession","tags":["users"],"description":"Delete a user sessions by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSession","weight":249,"cookies":false,"type":"","demo":"users\/delete-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-user-session.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"sessionId","description":"Session ID.","required":true,"schema":{"type":"string","x-example":"[SESSION_ID]"},"in":"path"}]}},"\/users\/{userId}\/status":{"patch":{"summary":"Update user status","operationId":"usersUpdateStatus","tags":["users"],"description":"Update the user status by its unique ID. Use this endpoint as an alternative to deleting a user if you want to keep user's ID reserved.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateStatus","weight":234,"cookies":false,"type":"","demo":"users\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"status":{"type":"boolean","description":"User Status. To activate the user pass `true` and to block the user pass `false`.","x-example":false}},"required":["status"]}}}}}},"\/users\/{userId}\/targets":{"get":{"summary":"List User Targets","operationId":"usersListTargets","tags":["users"],"description":"","responses":{"200":{"description":"Target list","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/targetList"}}}}},"x-appwrite":{"method":"listTargets","weight":232,"cookies":false,"type":"","demo":"users\/list-targets.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-targets.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.read","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, email, phone, status, passwordUpdate, registration, emailVerification, phoneVerification, labels","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"post":{"summary":"Create User Target","operationId":"usersCreateTarget","tags":["users"],"description":"","responses":{"201":{"description":"Target","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/target"}}}}},"x-appwrite":{"method":"createTarget","weight":224,"cookies":false,"type":"","demo":"users\/create-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-target.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"targetId":{"type":"string","description":"Target ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[TARGET_ID]"},"providerType":{"type":"string","description":"The target provider type. Can be one of the following: `email`, `sms` or `push`.","x-example":"email","enum":["email","sms","push"],"x-enum-name":"MessagingProviderType","x-enum-keys":[]},"identifier":{"type":"string","description":"The target identifier (token, email, phone etc.)","x-example":"[IDENTIFIER]"},"providerId":{"type":"string","description":"Provider ID. Message will be sent to this target from the specified provider ID. If no provider ID is set the first setup provider will be used.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Target name. Max length: 128 chars. For example: My Awesome App Galaxy S23.","x-example":"[NAME]"}},"required":["targetId","providerType","identifier"]}}}}}},"\/users\/{userId}\/targets\/{targetId}":{"get":{"summary":"Get User Target","operationId":"usersGetTarget","tags":["users"],"description":"","responses":{"200":{"description":"Target","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/target"}}}}},"x-appwrite":{"method":"getTarget","weight":228,"cookies":false,"type":"","demo":"users\/get-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-target.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.read","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"targetId","description":"Target ID.","required":true,"schema":{"type":"string","x-example":"[TARGET_ID]"},"in":"path"}]},"patch":{"summary":"Update User target","operationId":"usersUpdateTarget","tags":["users"],"description":"","responses":{"200":{"description":"Target","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/target"}}}}},"x-appwrite":{"method":"updateTarget","weight":243,"cookies":false,"type":"","demo":"users\/update-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-target.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"targetId","description":"Target ID.","required":true,"schema":{"type":"string","x-example":"[TARGET_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"identifier":{"type":"string","description":"The target identifier (token, email, phone etc.)","x-example":"[IDENTIFIER]"},"providerId":{"type":"string","description":"Provider ID. Message will be sent to this target from the specified provider ID. If no provider ID is set the first setup provider will be used.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Target name. Max length: 128 chars. For example: My Awesome App Galaxy S23.","x-example":"[NAME]"}}}}}}},"delete":{"summary":"Delete user target","operationId":"usersDeleteTarget","tags":["users"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteTarget","weight":252,"cookies":false,"type":"","demo":"users\/delete-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-target.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"targetId","description":"Target ID.","required":true,"schema":{"type":"string","x-example":"[TARGET_ID]"},"in":"path"}]}},"\/users\/{userId}\/tokens":{"post":{"summary":"Create token","operationId":"usersCreateToken","tags":["users"],"description":"Returns a token with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [PUT \/account\/sessions\/custom](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateCustomSession) endpoint to complete the login process.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createToken","weight":248,"cookies":false,"type":"","demo":"users\/create-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-token.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"length":{"type":"integer","description":"Token length in characters. The default length is 6 characters","x-example":4},"expire":{"type":"integer","description":"Token expiration period in seconds. The default expiration is 15 minutes.","x-example":60}}}}}}}},"\/users\/{userId}\/verification":{"patch":{"summary":"Update email verification","operationId":"usersUpdateEmailVerification","tags":["users"],"description":"Update the user email verification status by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateEmailVerification","weight":241,"cookies":false,"type":"","demo":"users\/update-email-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-email-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"emailVerification":{"type":"boolean","description":"User email verification status.","x-example":false}},"required":["emailVerification"]}}}}}},"\/users\/{userId}\/verification\/phone":{"patch":{"summary":"Update phone verification","operationId":"usersUpdatePhoneVerification","tags":["users"],"description":"Update the user phone verification status by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePhoneVerification","weight":236,"cookies":false,"type":"","demo":"users\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"phoneVerification":{"type":"boolean","description":"User phone verification status.","x-example":false}},"required":["phoneVerification"]}}}}}},"\/vcs\/github\/installations\/{installationId}\/providerRepositories":{"get":{"summary":"List Repositories","operationId":"vcsListRepositories","tags":["vcs"],"description":"","responses":{"200":{"description":"Provider Repositories List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/providerRepositoryList"}}}}},"x-appwrite":{"method":"listRepositories","weight":258,"cookies":false,"type":"","demo":"vcs\/list-repositories.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"schema":{"type":"string","x-example":"[INSTALLATION_ID]"},"in":"path"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create repository","operationId":"vcsCreateRepository","tags":["vcs"],"description":"","responses":{"200":{"description":"ProviderRepository","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/providerRepository"}}}}},"x-appwrite":{"method":"createRepository","weight":259,"cookies":false,"type":"","demo":"vcs\/create-repository.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"schema":{"type":"string","x-example":"[INSTALLATION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Repository name (slug)","x-example":"[NAME]"},"private":{"type":"boolean","description":"Mark repository public or private","x-example":false}},"required":["name","private"]}}}}}},"\/vcs\/github\/installations\/{installationId}\/providerRepositories\/{providerRepositoryId}":{"get":{"summary":"Get repository","operationId":"vcsGetRepository","tags":["vcs"],"description":"","responses":{"200":{"description":"ProviderRepository","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/providerRepository"}}}}},"x-appwrite":{"method":"getRepository","weight":260,"cookies":false,"type":"","demo":"vcs\/get-repository.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"schema":{"type":"string","x-example":"[INSTALLATION_ID]"},"in":"path"},{"name":"providerRepositoryId","description":"Repository Id","required":true,"schema":{"type":"string","x-example":"[PROVIDER_REPOSITORY_ID]"},"in":"path"}]}},"\/vcs\/github\/installations\/{installationId}\/providerRepositories\/{providerRepositoryId}\/branches":{"get":{"summary":"List Repository Branches","operationId":"vcsListRepositoryBranches","tags":["vcs"],"description":"","responses":{"200":{"description":"Branches List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/branchList"}}}}},"x-appwrite":{"method":"listRepositoryBranches","weight":261,"cookies":false,"type":"","demo":"vcs\/list-repository-branches.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"schema":{"type":"string","x-example":"[INSTALLATION_ID]"},"in":"path"},{"name":"providerRepositoryId","description":"Repository Id","required":true,"schema":{"type":"string","x-example":"[PROVIDER_REPOSITORY_ID]"},"in":"path"}]}},"\/vcs\/github\/installations\/{installationId}\/providerRepositories\/{providerRepositoryId}\/detection":{"post":{"summary":"Detect runtime settings from source code","operationId":"vcsCreateRepositoryDetection","tags":["vcs"],"description":"","responses":{"200":{"description":"Detection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/detection"}}}}},"x-appwrite":{"method":"createRepositoryDetection","weight":257,"cookies":false,"type":"","demo":"vcs\/create-repository-detection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"schema":{"type":"string","x-example":"[INSTALLATION_ID]"},"in":"path"},{"name":"providerRepositoryId","description":"Repository Id","required":true,"schema":{"type":"string","x-example":"[PROVIDER_REPOSITORY_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerRootDirectory":{"type":"string","description":"Path to Root Directory","x-example":"[PROVIDER_ROOT_DIRECTORY]"}}}}}}}},"\/vcs\/github\/installations\/{installationId}\/repositories\/{repositoryId}":{"patch":{"summary":"Authorize external deployment","operationId":"vcsUpdateExternalDeployments","tags":["vcs"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"updateExternalDeployments","weight":266,"cookies":false,"type":"","demo":"vcs\/update-external-deployments.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"schema":{"type":"string","x-example":"[INSTALLATION_ID]"},"in":"path"},{"name":"repositoryId","description":"VCS Repository Id","required":true,"schema":{"type":"string","x-example":"[REPOSITORY_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerPullRequestId":{"type":"string","description":"GitHub Pull Request Id","x-example":"[PROVIDER_PULL_REQUEST_ID]"}},"required":["providerPullRequestId"]}}}}}},"\/vcs\/installations":{"get":{"summary":"List installations","operationId":"vcsListInstallations","tags":["vcs"],"description":"","responses":{"200":{"description":"Installations List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/installationList"}}}}},"x-appwrite":{"method":"listInstallations","weight":263,"cookies":false,"type":"","demo":"vcs\/list-installations.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/vcs\/list-installations.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: provider, organization","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]}},"\/vcs\/installations\/{installationId}":{"get":{"summary":"Get installation","operationId":"vcsGetInstallation","tags":["vcs"],"description":"","responses":{"200":{"description":"Installation","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/installation"}}}}},"x-appwrite":{"method":"getInstallation","weight":264,"cookies":false,"type":"","demo":"vcs\/get-installation.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/vcs\/get-installation.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"schema":{"type":"string","x-example":"[INSTALLATION_ID]"},"in":"path"}]},"delete":{"summary":"Delete Installation","operationId":"vcsDeleteInstallation","tags":["vcs"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteInstallation","weight":265,"cookies":false,"type":"","demo":"vcs\/delete-installation.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/vcs\/delete-installation.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"schema":{"type":"string","x-example":"[INSTALLATION_ID]"},"in":"path"}]}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"project","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]},{"name":"proxy","description":"The Proxy Service allows you to configure actions for your domains beyond DNS configuration.","x-globalAttributes":[]},{"name":"graphql","description":"The GraphQL API allows you to query and mutate your Appwrite server using GraphQL.","x-globalAttributes":[]},{"name":"console","description":"The Console service allows you to interact with console relevant informations.","x-globalAttributes":[]},{"name":"migrations","description":"The Migrations service allows you to migrate third-party data to your Appwrite project.","x-globalAttributes":[]},{"name":"messaging","description":"The Messaging service allows you to send messages to any provider type (SMTP, push notification, SMS, etc.).","x-globalAttributes":[]}],"components":{"schemas":{"any":{"description":"Any","type":"object","additionalProperties":true},"error":{"description":"Error","type":"object","properties":{"message":{"type":"string","description":"Error message.","x-example":"Not found"},"code":{"type":"string","description":"Error code.","x-example":"404"},"type":{"type":"string","description":"Error type. You can learn more about all the error types at https:\/\/appwrite.io\/docs\/error-codes#errorTypes","x-example":"not_found"},"version":{"type":"string","description":"Server version number.","x-example":"1.0"}},"required":["message","code","type","version"]},"documentList":{"description":"Documents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of documents documents that matched your query.","x-example":5,"format":"int32"},"documents":{"type":"array","description":"List of documents.","items":{"$ref":"#\/components\/schemas\/document"},"x-example":""}},"required":["total","documents"]},"collectionList":{"description":"Collections List","type":"object","properties":{"total":{"type":"integer","description":"Total number of collections documents that matched your query.","x-example":5,"format":"int32"},"collections":{"type":"array","description":"List of collections.","items":{"$ref":"#\/components\/schemas\/collection"},"x-example":""}},"required":["total","collections"]},"databaseList":{"description":"Databases List","type":"object","properties":{"total":{"type":"integer","description":"Total number of databases documents that matched your query.","x-example":5,"format":"int32"},"databases":{"type":"array","description":"List of databases.","items":{"$ref":"#\/components\/schemas\/database"},"x-example":""}},"required":["total","databases"]},"indexList":{"description":"Indexes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of indexes documents that matched your query.","x-example":5,"format":"int32"},"indexes":{"type":"array","description":"List of indexes.","items":{"$ref":"#\/components\/schemas\/index"},"x-example":""}},"required":["total","indexes"]},"userList":{"description":"Users List","type":"object","properties":{"total":{"type":"integer","description":"Total number of users documents that matched your query.","x-example":5,"format":"int32"},"users":{"type":"array","description":"List of users.","items":{"$ref":"#\/components\/schemas\/user"},"x-example":""}},"required":["total","users"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of sessions documents that matched your query.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"$ref":"#\/components\/schemas\/session"},"x-example":""}},"required":["total","sessions"]},"identityList":{"description":"Identities List","type":"object","properties":{"total":{"type":"integer","description":"Total number of identities documents that matched your query.","x-example":5,"format":"int32"},"identities":{"type":"array","description":"List of identities.","items":{"$ref":"#\/components\/schemas\/identity"},"x-example":""}},"required":["total","identities"]},"logList":{"description":"Logs List","type":"object","properties":{"total":{"type":"integer","description":"Total number of logs documents that matched your query.","x-example":5,"format":"int32"},"logs":{"type":"array","description":"List of logs.","items":{"$ref":"#\/components\/schemas\/log"},"x-example":""}},"required":["total","logs"]},"fileList":{"description":"Files List","type":"object","properties":{"total":{"type":"integer","description":"Total number of files documents that matched your query.","x-example":5,"format":"int32"},"files":{"type":"array","description":"List of files.","items":{"$ref":"#\/components\/schemas\/file"},"x-example":""}},"required":["total","files"]},"bucketList":{"description":"Buckets List","type":"object","properties":{"total":{"type":"integer","description":"Total number of buckets documents that matched your query.","x-example":5,"format":"int32"},"buckets":{"type":"array","description":"List of buckets.","items":{"$ref":"#\/components\/schemas\/bucket"},"x-example":""}},"required":["total","buckets"]},"teamList":{"description":"Teams List","type":"object","properties":{"total":{"type":"integer","description":"Total number of teams documents that matched your query.","x-example":5,"format":"int32"},"teams":{"type":"array","description":"List of teams.","items":{"$ref":"#\/components\/schemas\/team"},"x-example":""}},"required":["total","teams"]},"membershipList":{"description":"Memberships List","type":"object","properties":{"total":{"type":"integer","description":"Total number of memberships documents that matched your query.","x-example":5,"format":"int32"},"memberships":{"type":"array","description":"List of memberships.","items":{"$ref":"#\/components\/schemas\/membership"},"x-example":""}},"required":["total","memberships"]},"functionList":{"description":"Functions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of functions documents that matched your query.","x-example":5,"format":"int32"},"functions":{"type":"array","description":"List of functions.","items":{"$ref":"#\/components\/schemas\/function"},"x-example":""}},"required":["total","functions"]},"installationList":{"description":"Installations List","type":"object","properties":{"total":{"type":"integer","description":"Total number of installations documents that matched your query.","x-example":5,"format":"int32"},"installations":{"type":"array","description":"List of installations.","items":{"$ref":"#\/components\/schemas\/installation"},"x-example":""}},"required":["total","installations"]},"providerRepositoryList":{"description":"Provider Repositories List","type":"object","properties":{"total":{"type":"integer","description":"Total number of providerRepositories documents that matched your query.","x-example":5,"format":"int32"},"providerRepositories":{"type":"array","description":"List of providerRepositories.","items":{"$ref":"#\/components\/schemas\/providerRepository"},"x-example":""}},"required":["total","providerRepositories"]},"branchList":{"description":"Branches List","type":"object","properties":{"total":{"type":"integer","description":"Total number of branches documents that matched your query.","x-example":5,"format":"int32"},"branches":{"type":"array","description":"List of branches.","items":{"$ref":"#\/components\/schemas\/branch"},"x-example":""}},"required":["total","branches"]},"runtimeList":{"description":"Runtimes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of runtimes documents that matched your query.","x-example":5,"format":"int32"},"runtimes":{"type":"array","description":"List of runtimes.","items":{"$ref":"#\/components\/schemas\/runtime"},"x-example":""}},"required":["total","runtimes"]},"deploymentList":{"description":"Deployments List","type":"object","properties":{"total":{"type":"integer","description":"Total number of deployments documents that matched your query.","x-example":5,"format":"int32"},"deployments":{"type":"array","description":"List of deployments.","items":{"$ref":"#\/components\/schemas\/deployment"},"x-example":""}},"required":["total","deployments"]},"executionList":{"description":"Executions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of executions documents that matched your query.","x-example":5,"format":"int32"},"executions":{"type":"array","description":"List of executions.","items":{"$ref":"#\/components\/schemas\/execution"},"x-example":""}},"required":["total","executions"]},"projectList":{"description":"Projects List","type":"object","properties":{"total":{"type":"integer","description":"Total number of projects documents that matched your query.","x-example":5,"format":"int32"},"projects":{"type":"array","description":"List of projects.","items":{"$ref":"#\/components\/schemas\/project"},"x-example":""}},"required":["total","projects"]},"webhookList":{"description":"Webhooks List","type":"object","properties":{"total":{"type":"integer","description":"Total number of webhooks documents that matched your query.","x-example":5,"format":"int32"},"webhooks":{"type":"array","description":"List of webhooks.","items":{"$ref":"#\/components\/schemas\/webhook"},"x-example":""}},"required":["total","webhooks"]},"keyList":{"description":"API Keys List","type":"object","properties":{"total":{"type":"integer","description":"Total number of keys documents that matched your query.","x-example":5,"format":"int32"},"keys":{"type":"array","description":"List of keys.","items":{"$ref":"#\/components\/schemas\/key"},"x-example":""}},"required":["total","keys"]},"platformList":{"description":"Platforms List","type":"object","properties":{"total":{"type":"integer","description":"Total number of platforms documents that matched your query.","x-example":5,"format":"int32"},"platforms":{"type":"array","description":"List of platforms.","items":{"$ref":"#\/components\/schemas\/platform"},"x-example":""}},"required":["total","platforms"]},"countryList":{"description":"Countries List","type":"object","properties":{"total":{"type":"integer","description":"Total number of countries documents that matched your query.","x-example":5,"format":"int32"},"countries":{"type":"array","description":"List of countries.","items":{"$ref":"#\/components\/schemas\/country"},"x-example":""}},"required":["total","countries"]},"continentList":{"description":"Continents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of continents documents that matched your query.","x-example":5,"format":"int32"},"continents":{"type":"array","description":"List of continents.","items":{"$ref":"#\/components\/schemas\/continent"},"x-example":""}},"required":["total","continents"]},"languageList":{"description":"Languages List","type":"object","properties":{"total":{"type":"integer","description":"Total number of languages documents that matched your query.","x-example":5,"format":"int32"},"languages":{"type":"array","description":"List of languages.","items":{"$ref":"#\/components\/schemas\/language"},"x-example":""}},"required":["total","languages"]},"currencyList":{"description":"Currencies List","type":"object","properties":{"total":{"type":"integer","description":"Total number of currencies documents that matched your query.","x-example":5,"format":"int32"},"currencies":{"type":"array","description":"List of currencies.","items":{"$ref":"#\/components\/schemas\/currency"},"x-example":""}},"required":["total","currencies"]},"phoneList":{"description":"Phones List","type":"object","properties":{"total":{"type":"integer","description":"Total number of phones documents that matched your query.","x-example":5,"format":"int32"},"phones":{"type":"array","description":"List of phones.","items":{"$ref":"#\/components\/schemas\/phone"},"x-example":""}},"required":["total","phones"]},"variableList":{"description":"Variables List","type":"object","properties":{"total":{"type":"integer","description":"Total number of variables documents that matched your query.","x-example":5,"format":"int32"},"variables":{"type":"array","description":"List of variables.","items":{"$ref":"#\/components\/schemas\/variable"},"x-example":""}},"required":["total","variables"]},"proxyRuleList":{"description":"Rule List","type":"object","properties":{"total":{"type":"integer","description":"Total number of rules documents that matched your query.","x-example":5,"format":"int32"},"rules":{"type":"array","description":"List of rules.","items":{"$ref":"#\/components\/schemas\/proxyRule"},"x-example":""}},"required":["total","rules"]},"localeCodeList":{"description":"Locale codes list","type":"object","properties":{"total":{"type":"integer","description":"Total number of localeCodes documents that matched your query.","x-example":5,"format":"int32"},"localeCodes":{"type":"array","description":"List of localeCodes.","items":{"$ref":"#\/components\/schemas\/localeCode"},"x-example":""}},"required":["total","localeCodes"]},"providerList":{"description":"Provider list","type":"object","properties":{"total":{"type":"integer","description":"Total number of providers documents that matched your query.","x-example":5,"format":"int32"},"providers":{"type":"array","description":"List of providers.","items":{"$ref":"#\/components\/schemas\/provider"},"x-example":""}},"required":["total","providers"]},"messageList":{"description":"Message list","type":"object","properties":{"total":{"type":"integer","description":"Total number of messages documents that matched your query.","x-example":5,"format":"int32"},"messages":{"type":"array","description":"List of messages.","items":{"$ref":"#\/components\/schemas\/message"},"x-example":""}},"required":["total","messages"]},"topicList":{"description":"Topic list","type":"object","properties":{"total":{"type":"integer","description":"Total number of topics documents that matched your query.","x-example":5,"format":"int32"},"topics":{"type":"array","description":"List of topics.","items":{"$ref":"#\/components\/schemas\/topic"},"x-example":""}},"required":["total","topics"]},"subscriberList":{"description":"Subscriber list","type":"object","properties":{"total":{"type":"integer","description":"Total number of subscribers documents that matched your query.","x-example":5,"format":"int32"},"subscribers":{"type":"array","description":"List of subscribers.","items":{"$ref":"#\/components\/schemas\/subscriber"},"x-example":""}},"required":["total","subscribers"]},"targetList":{"description":"Target list","type":"object","properties":{"total":{"type":"integer","description":"Total number of targets documents that matched your query.","x-example":5,"format":"int32"},"targets":{"type":"array","description":"List of targets.","items":{"$ref":"#\/components\/schemas\/target"},"x-example":""}},"required":["total","targets"]},"migrationList":{"description":"Migrations List","type":"object","properties":{"total":{"type":"integer","description":"Total number of migrations documents that matched your query.","x-example":5,"format":"int32"},"migrations":{"type":"array","description":"List of migrations.","items":{"$ref":"#\/components\/schemas\/migration"},"x-example":""}},"required":["total","migrations"]},"firebaseProjectList":{"description":"Migrations Firebase Projects List","type":"object","properties":{"total":{"type":"integer","description":"Total number of projects documents that matched your query.","x-example":5,"format":"int32"},"projects":{"type":"array","description":"List of projects.","items":{"$ref":"#\/components\/schemas\/firebaseProject"},"x-example":""}},"required":["total","projects"]},"database":{"description":"Database","type":"object","properties":{"$id":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Database name.","x-example":"My Database"},"$createdAt":{"type":"string","description":"Database creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Database update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"enabled":{"type":"boolean","description":"If database is enabled. Can be 'enabled' or 'disabled'. When disabled, the database is inaccessible to users, but remains accessible to Server SDKs using API keys.","x-example":false}},"required":["$id","name","$createdAt","$updatedAt","enabled"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Collection creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Collection update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Collection permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled. Can be 'enabled' or 'disabled'. When disabled, the collection is inaccessible to users, but remains accessible to Server SDKs using API keys.","x-example":false},"documentSecurity":{"type":"boolean","description":"Whether document-level permissions are enabled. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":true},"attributes":{"type":"array","description":"Collection attributes.","items":{"anyOf":[{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeRelationship"},{"$ref":"#\/components\/schemas\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"$ref":"#\/components\/schemas\/index"},"x-example":{}}},"required":["$id","$createdAt","$updatedAt","$permissions","databaseId","name","enabled","documentSecurity","attributes","indexes"]},"attributeList":{"description":"Attributes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of attributes in the given collection.","x-example":5,"format":"int32"},"attributes":{"type":"array","description":"List of attributes.","items":{"anyOf":[{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeRelationship"},{"$ref":"#\/components\/schemas\/attributeString"}]},"x-example":""}},"required":["total","attributes"]},"attributeString":{"description":"AttributeString","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"fullName"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"size":{"type":"integer","description":"Attribute size.","x-example":128,"format":"int32"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"default","nullable":true}},"required":["key","type","status","error","required","size"]},"attributeInteger":{"description":"AttributeInteger","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"count"},"type":{"type":"string","description":"Attribute type.","x-example":"integer"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"min":{"type":"integer","description":"Minimum value to enforce for new documents.","x-example":1,"format":"int32","nullable":true},"max":{"type":"integer","description":"Maximum value to enforce for new documents.","x-example":10,"format":"int32","nullable":true},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":10,"format":"int32","nullable":true}},"required":["key","type","status","error","required"]},"attributeFloat":{"description":"AttributeFloat","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"percentageCompleted"},"type":{"type":"string","description":"Attribute type.","x-example":"double"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"min":{"type":"number","description":"Minimum value to enforce for new documents.","x-example":1.5,"format":"double","nullable":true},"max":{"type":"number","description":"Maximum value to enforce for new documents.","x-example":10.5,"format":"double","nullable":true},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":2.5,"format":"double","nullable":true}},"required":["key","type","status","error","required"]},"attributeBoolean":{"description":"AttributeBoolean","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"isEnabled"},"type":{"type":"string","description":"Attribute type.","x-example":"boolean"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":false,"nullable":true}},"required":["key","type","status","error","required"]},"attributeEmail":{"description":"AttributeEmail","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"userEmail"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"format":{"type":"string","description":"String format.","x-example":"email"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"default@example.com","nullable":true}},"required":["key","type","status","error","required","format"]},"attributeEnum":{"description":"AttributeEnum","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"status"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"elements":{"type":"array","description":"Array of elements in enumerated type.","items":{"type":"string"},"x-example":"element"},"format":{"type":"string","description":"String format.","x-example":"enum"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"element","nullable":true}},"required":["key","type","status","error","required","elements","format"]},"attributeIp":{"description":"AttributeIP","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"ipAddress"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"format":{"type":"string","description":"String format.","x-example":"ip"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"192.0.2.0","nullable":true}},"required":["key","type","status","error","required","format"]},"attributeUrl":{"description":"AttributeURL","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"githubUrl"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"format":{"type":"string","description":"String format.","x-example":"url"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"http:\/\/example.com","nullable":true}},"required":["key","type","status","error","required","format"]},"attributeDatetime":{"description":"AttributeDatetime","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"birthDay"},"type":{"type":"string","description":"Attribute type.","x-example":"datetime"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"format":{"type":"string","description":"ISO 8601 format.","x-example":"datetime"},"default":{"type":"string","description":"Default value for attribute when not provided. Only null is optional","x-example":"2020-10-15T06:38:00.000+00:00","nullable":true}},"required":["key","type","status","error","required","format"]},"attributeRelationship":{"description":"AttributeRelationship","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"fullName"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"relatedCollection":{"type":"string","description":"The ID of the related collection.","x-example":"collection"},"relationType":{"type":"string","description":"The type of the relationship.","x-example":"oneToOne|oneToMany|manyToOne|manyToMany"},"twoWay":{"type":"boolean","description":"Is the relationship two-way?","x-example":false},"twoWayKey":{"type":"string","description":"The key of the two-way relationship.","x-example":"string"},"onDelete":{"type":"string","description":"How deleting the parent document will propagate to child documents.","x-example":"restrict|cascade|setNull"},"side":{"type":"string","description":"Whether this is the parent or child side of the relationship","x-example":"parent|child"}},"required":["key","type","status","error","required","relatedCollection","relationType","twoWay","twoWayKey","onDelete","side"]},"index":{"description":"Index","type":"object","properties":{"key":{"type":"string","description":"Index Key.","x-example":"index1"},"type":{"type":"string","description":"Index type.","x-example":"primary"},"status":{"type":"string","description":"Index status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an index.","x-example":"string"},"attributes":{"type":"array","description":"Index attributes.","items":{"type":"string"},"x-example":[]},"orders":{"type":"array","description":"Index orders.","items":{"type":"string"},"x-example":[],"nullable":true}},"required":["key","type","status","error","attributes"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"user":{"description":"User","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"password":{"type":"string","description":"Hashed user password.","x-example":"$argon2id$v=19$m=2048,t=4,p=3$aUZjLnliVWRINmFNTWMudg$5S+x+7uA31xFnrHFT47yFwcJeaP0w92L\/4LdgrVRXxE","nullable":true},"hash":{"type":"string","description":"Password hashing algorithm.","x-example":"argon2","nullable":true},"hashOptions":{"type":"object","description":"Password hashing algorithm configuration.","x-example":{},"items":{"oneOf":[{"$ref":"#\/components\/schemas\/algoArgon2"},{"$ref":"#\/components\/schemas\/algoScrypt"},{"$ref":"#\/components\/schemas\/algoScryptModified"},{"$ref":"#\/components\/schemas\/algoBcrypt"},{"$ref":"#\/components\/schemas\/algoPhpass"},{"$ref":"#\/components\/schemas\/algoSha"},{"$ref":"#\/components\/schemas\/algoMd5"}]},"nullable":true},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"labels":{"type":"array","description":"Labels for the user.","items":{"type":"string"},"x-example":["vip"]},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"mfa":{"type":"boolean","description":"Multi factor authentication status.","x-example":true},"totp":{"type":"boolean","description":"TOTP status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"$ref":"#\/components\/schemas\/preferences"}},"targets":{"type":"array","description":"A user-owned message receiver. A single user may have multiple e.g. emails, phones, and a browser. Each target is registered with a single provider.","items":{"$ref":"#\/components\/schemas\/target"},"x-example":[]},"accessedAt":{"type":"string","description":"Most recent access date in ISO 8601 format. This attribute is only updated again after 24 hours.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","$updatedAt","name","registration","status","labels","passwordUpdate","email","phone","emailVerification","phoneVerification","mfa","totp","prefs","targets","accessedAt"]},"algoMd5":{"description":"AlgoMD5","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"md5"}},"required":["type"]},"algoSha":{"description":"AlgoSHA","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"sha"}},"required":["type"]},"algoPhpass":{"description":"AlgoPHPass","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"phpass"}},"required":["type"]},"algoBcrypt":{"description":"AlgoBcrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"bcrypt"}},"required":["type"]},"algoScrypt":{"description":"AlgoScrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scrypt"},"costCpu":{"type":"integer","description":"CPU complexity of computed hash.","x-example":8,"format":"int32"},"costMemory":{"type":"integer","description":"Memory complexity of computed hash.","x-example":14,"format":"int32"},"costParallel":{"type":"integer","description":"Parallelization of computed hash.","x-example":1,"format":"int32"},"length":{"type":"integer","description":"Length used to compute hash.","x-example":64,"format":"int32"}},"required":["type","costCpu","costMemory","costParallel","length"]},"algoScryptModified":{"description":"AlgoScryptModified","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scryptMod"},"salt":{"type":"string","description":"Salt used to compute hash.","x-example":"UxLMreBr6tYyjQ=="},"saltSeparator":{"type":"string","description":"Separator used to compute hash.","x-example":"Bw=="},"signerKey":{"type":"string","description":"Key used to compute hash.","x-example":"XyEKE9RcTDeLEsL\/RjwPDBv\/RqDl8fb3gpYEOQaPihbxf1ZAtSOHCjuAAa7Q3oHpCYhXSN9tizHgVOwn6krflQ=="}},"required":["type","salt","saltSeparator","signerKey"]},"algoArgon2":{"description":"AlgoArgon2","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"argon2"},"memoryCost":{"type":"integer","description":"Memory used to compute hash.","x-example":65536,"format":"int32"},"timeCost":{"type":"integer","description":"Amount of time consumed to compute hash","x-example":4,"format":"int32"},"threads":{"type":"integer","description":"Number of threads used to compute hash.","x-example":3,"format":"int32"}},"required":["type","memoryCost","timeCost","threads"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true},"factors":{"type":"array","description":"Returns a list of active session factors.","items":{"type":"string"},"x-example":["email"]},"secret":{"type":"string","description":"Secret used to authenticate the user. Only included if the request was made with an API key","x-example":"5e5bb8c16897e"}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current","factors","secret"]},"identity":{"description":"Identity","type":"object","properties":{"$id":{"type":"string","description":"Identity ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Identity creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Identity update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"provider":{"type":"string","description":"Identity Provider.","x-example":"email"},"providerUid":{"type":"string","description":"ID of the User in the Identity Provider.","x-example":"5e5bb8c16897e"},"providerEmail":{"type":"string","description":"Email of the User in the Identity Provider.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Identity Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Identity Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"}},"required":["$id","$createdAt","$updatedAt","userId","provider","providerUid","providerEmail","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"phrase":{"type":"string","description":"Security phrase of a token. Empty if security phrase was not requested when creating a token. It includes randomly generated phrase which is also sent in the external resource such as email.","x-example":"Golden Fox"}},"required":["$id","$createdAt","userId","secret","expire","phrase"]},"jwt":{"description":"JWT","type":"object","properties":{"jwt":{"type":"string","description":"JWT encoded string.","x-example":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c"}},"required":["jwt"]},"locale":{"description":"Locale","type":"object","properties":{"ip":{"type":"string","description":"User IP address.","x-example":"127.0.0.1"},"countryCode":{"type":"string","description":"Country code in [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) two-character format","x-example":"US"},"country":{"type":"string","description":"Country name. This field support localization.","x-example":"United States"},"continentCode":{"type":"string","description":"Continent code. A two character continent code \"AF\" for Africa, \"AN\" for Antarctica, \"AS\" for Asia, \"EU\" for Europe, \"NA\" for North America, \"OC\" for Oceania, and \"SA\" for South America.","x-example":"NA"},"continent":{"type":"string","description":"Continent name. This field support localization.","x-example":"North America"},"eu":{"type":"boolean","description":"True if country is part of the European Union.","x-example":false},"currency":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format","x-example":"USD"}},"required":["ip","countryCode","country","continentCode","continent","eu","currency"]},"localeCode":{"description":"LocaleCode","type":"object","properties":{"code":{"type":"string","description":"Locale codes in [ISO 639-1](https:\/\/en.wikipedia.org\/wiki\/List_of_ISO_639-1_codes)","x-example":"en-us"},"name":{"type":"string","description":"Locale name","x-example":"US"}},"required":["code","name"]},"file":{"description":"File","type":"object","properties":{"$id":{"type":"string","description":"File ID.","x-example":"5e5ea5c16897e"},"bucketId":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Bucket creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Bucket update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Bucket permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"fileSecurity":{"type":"boolean","description":"Whether file-level security is enabled. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":true},"name":{"type":"string","description":"Bucket name.","x-example":"Documents"},"enabled":{"type":"boolean","description":"Bucket enabled.","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size supported.","x-example":100,"format":"int32"},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions.","items":{"type":"string"},"x-example":["jpg","png"]},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Will be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd).","x-example":"gzip"},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$createdAt","$updatedAt","$permissions","fileSecurity","name","enabled","maximumFileSize","allowedFileExtensions","compression","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"},"prefs":{"type":"object","description":"Team preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"$ref":"#\/components\/schemas\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","total","prefs"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"mfa":{"type":"boolean","description":"Multi factor authentication status, true if the user has MFA enabled or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":["owner"]}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","mfa","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Function creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Function update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"users"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"enabled":{"type":"boolean","description":"Function enabled.","x-example":false},"live":{"type":"boolean","description":"Is the function deployed with the latest configuration? This is set to false if you've changed an environment variables, entrypoint, commands, or other settings that needs redeploy to be applied. When the value is false, redeploy the function to update it with the latest configuration.","x-example":false},"logging":{"type":"boolean","description":"Whether executions will be logged. When set to false, executions will not be logged, but will reduce resource used by your Appwrite project.","x-example":false},"runtime":{"type":"string","description":"Function execution runtime.","x-example":"python-3.8"},"deployment":{"type":"string","description":"Function's active deployment ID.","x-example":"5e5ea5c16897e"},"vars":{"type":"array","description":"Function variables.","items":{"$ref":"#\/components\/schemas\/variable"},"x-example":[]},"events":{"type":"array","description":"Function trigger events.","items":{"type":"string"},"x-example":"account.create"},"schedule":{"type":"string","description":"Function execution schedult in CRON format.","x-example":"5 4 * * *"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":300,"format":"int32"},"entrypoint":{"type":"string","description":"The entrypoint file used to execute the deployment.","x-example":"index.js"},"commands":{"type":"string","description":"The build command used to build the deployment.","x-example":"npm install"},"version":{"type":"string","description":"Version of Open Runtimes used for the function.","x-example":"v2"},"installationId":{"type":"string","description":"Function VCS (Version Control System) installation id.","x-example":"6m40at4ejk5h2u9s1hboo"},"providerRepositoryId":{"type":"string","description":"VCS (Version Control System) Repository ID","x-example":"appwrite"},"providerBranch":{"type":"string","description":"VCS (Version Control System) branch name","x-example":"main"},"providerRootDirectory":{"type":"string","description":"Path to function in VCS (Version Control System) repository","x-example":"functions\/helloWorld"},"providerSilentMode":{"type":"boolean","description":"Is VCS (Version Control System) connection is in silent mode? When in silence mode, no comments will be posted on the repository pull or merge requests","x-example":false}},"required":["$id","$createdAt","$updatedAt","execute","name","enabled","live","logging","runtime","deployment","vars","events","schedule","timeout","entrypoint","commands","version","installationId","providerRepositoryId","providerBranch","providerRootDirectory","providerSilentMode"]},"installation":{"description":"Installation","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Function creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Function update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"VCS (Version Control System) provider name.","x-example":"github"},"organization":{"type":"string","description":"VCS (Version Control System) organization name.","x-example":"appwrite"},"providerInstallationId":{"type":"string","description":"VCS (Version Control System) installation ID.","x-example":"5322"}},"required":["$id","$createdAt","$updatedAt","provider","organization","providerInstallationId"]},"providerRepository":{"description":"ProviderRepository","type":"object","properties":{"id":{"type":"string","description":"VCS (Version Control System) repository ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"VCS (Version Control System) repository name.","x-example":"appwrite"},"organization":{"type":"string","description":"VCS (Version Control System) organization name","x-example":"appwrite"},"provider":{"type":"string","description":"VCS (Version Control System) provider name.","x-example":"github"},"private":{"type":"boolean","description":"Is VCS (Version Control System) repository private?","x-example":true},"runtime":{"type":"string","description":"Auto-detected runtime suggestion. Empty if getting response of getRuntime().","x-example":"node"},"pushedAt":{"type":"string","description":"Last commit date in ISO 8601 format.","x-example":"datetime"}},"required":["id","name","organization","provider","private","runtime","pushedAt"]},"detection":{"description":"Detection","type":"object","properties":{"runtime":{"type":"string","description":"Runtime","x-example":"node"}},"required":["runtime"]},"branch":{"description":"Branch","type":"object","properties":{"name":{"type":"string","description":"Branch Name.","x-example":"main"}},"required":["name"]},"runtime":{"description":"Runtime","type":"object","properties":{"$id":{"type":"string","description":"Runtime ID.","x-example":"python-3.8"},"name":{"type":"string","description":"Runtime Name.","x-example":"Python"},"version":{"type":"string","description":"Runtime version.","x-example":"3.8"},"base":{"type":"string","description":"Base Docker image used to build the runtime.","x-example":"python:3.8-alpine"},"image":{"type":"string","description":"Image name of Docker Hub.","x-example":"appwrite\\\/runtime-for-python:3.8"},"logo":{"type":"string","description":"Name of the logo image.","x-example":"python.png"},"supports":{"type":"array","description":"List of supported architectures.","items":{"type":"string"},"x-example":"amd64"}},"required":["$id","name","version","base","image","logo","supports"]},"deployment":{"description":"Deployment","type":"object","properties":{"$id":{"type":"string","description":"Deployment ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Deployment creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Deployment update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"type":{"type":"string","description":"Type of deployment.","x-example":"vcs"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"index.js"},"size":{"type":"integer","description":"The code size in bytes.","x-example":128,"format":"int32"},"buildId":{"type":"string","description":"The current build ID.","x-example":"5e5ea5c16897e"},"activate":{"type":"boolean","description":"Whether the deployment should be automatically activated.","x-example":true},"status":{"type":"string","description":"The deployment status. Possible values are \"processing\", \"building\", \"waiting\", \"ready\", and \"failed\".","x-example":"ready"},"buildLogs":{"type":"string","description":"The build logs.","x-example":"Compiling source files..."},"buildTime":{"type":"integer","description":"The current build time in seconds.","x-example":128,"format":"int32"},"providerRepositoryName":{"type":"string","description":"The name of the vcs provider repository","x-example":"database"},"providerRepositoryOwner":{"type":"string","description":"The name of the vcs provider repository owner","x-example":"utopia"},"providerRepositoryUrl":{"type":"string","description":"The url of the vcs provider repository","x-example":"https:\/\/github.com\/vermakhushboo\/g4-node-function"},"providerBranch":{"type":"string","description":"The branch of the vcs repository","x-example":"0.7.x"},"providerCommitHash":{"type":"string","description":"The commit hash of the vcs commit","x-example":"7c3f25d"},"providerCommitAuthorUrl":{"type":"string","description":"The url of vcs commit author","x-example":"https:\/\/github.com\/vermakhushboo"},"providerCommitAuthor":{"type":"string","description":"The name of vcs commit author","x-example":"Khushboo Verma"},"providerCommitMessage":{"type":"string","description":"The commit message","x-example":"Update index.js"},"providerCommitUrl":{"type":"string","description":"The url of the vcs commit","x-example":"https:\/\/github.com\/vermakhushboo\/g4-node-function\/commit\/60c0416257a9cbcdd96b2d370c38d8f8d150ccfb"},"providerBranchUrl":{"type":"string","description":"The branch of the vcs repository","x-example":"https:\/\/github.com\/vermakhushboo\/appwrite\/tree\/0.7.x"}},"required":["$id","$createdAt","$updatedAt","type","resourceId","resourceType","entrypoint","size","buildId","activate","status","buildLogs","buildTime","providerRepositoryName","providerRepositoryOwner","providerRepositoryUrl","providerBranch","providerCommitHash","providerCommitAuthorUrl","providerCommitAuthor","providerCommitMessage","providerCommitUrl","providerBranchUrl"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"requestMethod":{"type":"string","description":"HTTP request method type.","x-example":"GET"},"requestPath":{"type":"string","description":"HTTP request path and query.","x-example":"\/articles?id=5"},"requestHeaders":{"type":"array","description":"HTTP response headers as a key-value object. This will return only whitelisted headers. All headers are returned if execution is created as synchronous.","items":{"$ref":"#\/components\/schemas\/headers"},"x-example":[{"Content-Type":"application\/json"}]},"responseStatusCode":{"type":"integer","description":"HTTP response status code.","x-example":200,"format":"int32"},"responseBody":{"type":"string","description":"HTTP response body. This will return empty unless execution is created as synchronous.","x-example":"Developers are awesome."},"responseHeaders":{"type":"array","description":"HTTP response headers as a key-value object. This will return only whitelisted headers. All headers are returned if execution is created as synchronous.","items":{"$ref":"#\/components\/schemas\/headers"},"x-example":[{"Content-Type":"application\/json"}]},"logs":{"type":"string","description":"Function logs. Includes the last 4,000 characters. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"errors":{"type":"string","description":"Function errors. Includes the last 4,000 characters. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"Function execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","requestMethod","requestPath","requestHeaders","responseStatusCode","responseBody","responseHeaders","logs","errors","duration"]},"project":{"description":"Project","type":"object","properties":{"$id":{"type":"string","description":"Project ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Project creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Project update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Project name.","x-example":"New Project"},"description":{"type":"string","description":"Project description.","x-example":"This is a new project."},"teamId":{"type":"string","description":"Project team ID.","x-example":"1592981250"},"logo":{"type":"string","description":"Project logo file ID.","x-example":"5f5c451b403cb"},"url":{"type":"string","description":"Project website URL.","x-example":"5f5c451b403cb"},"legalName":{"type":"string","description":"Company legal name.","x-example":"Company LTD."},"legalCountry":{"type":"string","description":"Country code in [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) two-character format.","x-example":"US"},"legalState":{"type":"string","description":"State name.","x-example":"New York"},"legalCity":{"type":"string","description":"City name.","x-example":"New York City."},"legalAddress":{"type":"string","description":"Company Address.","x-example":"620 Eighth Avenue, New York, NY 10018"},"legalTaxId":{"type":"string","description":"Company Tax ID.","x-example":"131102020"},"authDuration":{"type":"integer","description":"Session duration in seconds.","x-example":60,"format":"int32"},"authLimit":{"type":"integer","description":"Max users allowed. 0 is unlimited.","x-example":100,"format":"int32"},"authSessionsLimit":{"type":"integer","description":"Max sessions allowed per user. 100 maximum.","x-example":10,"format":"int32"},"authPasswordHistory":{"type":"integer","description":"Max allowed passwords in the history list per user. Max passwords limit allowed in history is 20. Use 0 for disabling password history.","x-example":5,"format":"int32"},"authPasswordDictionary":{"type":"boolean","description":"Whether or not to check user's password against most commonly used passwords.","x-example":true},"authPersonalDataCheck":{"type":"boolean","description":"Whether or not to check the user password for similarity with their personal data.","x-example":true},"oAuthProviders":{"type":"array","description":"List of Auth Providers.","items":{"$ref":"#\/components\/schemas\/authProvider"},"x-example":[{}]},"platforms":{"type":"array","description":"List of Platforms.","items":{"$ref":"#\/components\/schemas\/platform"},"x-example":{}},"webhooks":{"type":"array","description":"List of Webhooks.","items":{"$ref":"#\/components\/schemas\/webhook"},"x-example":{}},"keys":{"type":"array","description":"List of API Keys.","items":{"$ref":"#\/components\/schemas\/key"},"x-example":{}},"smtpEnabled":{"type":"boolean","description":"Status for custom SMTP","x-example":false},"smtpSenderName":{"type":"string","description":"SMTP sender name","x-example":"John Appwrite"},"smtpSenderEmail":{"type":"string","description":"SMTP sender email","x-example":"john@appwrite.io"},"smtpReplyTo":{"type":"string","description":"SMTP reply to email","x-example":"support@appwrite.io"},"smtpHost":{"type":"string","description":"SMTP server host name","x-example":"mail.appwrite.io"},"smtpPort":{"type":"integer","description":"SMTP server port","x-example":25,"format":"int32"},"smtpUsername":{"type":"string","description":"SMTP server username","x-example":"emailuser"},"smtpPassword":{"type":"string","description":"SMTP server password","x-example":"securepassword"},"smtpSecure":{"type":"string","description":"SMTP server secure protocol","x-example":"tls"},"authEmailPassword":{"type":"boolean","description":"Email\/Password auth method status","x-example":true},"authUsersAuthMagicURL":{"type":"boolean","description":"Magic URL auth method status","x-example":true},"authEmailOtp":{"type":"boolean","description":"Email (OTP) auth method status","x-example":true},"authAnonymous":{"type":"boolean","description":"Anonymous auth method status","x-example":true},"authInvites":{"type":"boolean","description":"Invites auth method status","x-example":true},"authJWT":{"type":"boolean","description":"JWT auth method status","x-example":true},"authPhone":{"type":"boolean","description":"Phone auth method status","x-example":true},"serviceStatusForAccount":{"type":"boolean","description":"Account service status","x-example":true},"serviceStatusForAvatars":{"type":"boolean","description":"Avatars service status","x-example":true},"serviceStatusForDatabases":{"type":"boolean","description":"Databases service status","x-example":true},"serviceStatusForLocale":{"type":"boolean","description":"Locale service status","x-example":true},"serviceStatusForHealth":{"type":"boolean","description":"Health service status","x-example":true},"serviceStatusForStorage":{"type":"boolean","description":"Storage service status","x-example":true},"serviceStatusForTeams":{"type":"boolean","description":"Teams service status","x-example":true},"serviceStatusForUsers":{"type":"boolean","description":"Users service status","x-example":true},"serviceStatusForFunctions":{"type":"boolean","description":"Functions service status","x-example":true},"serviceStatusForGraphql":{"type":"boolean","description":"GraphQL service status","x-example":true},"serviceStatusForMessaging":{"type":"boolean","description":"Messaging service status","x-example":true}},"required":["$id","$createdAt","$updatedAt","name","description","teamId","logo","url","legalName","legalCountry","legalState","legalCity","legalAddress","legalTaxId","authDuration","authLimit","authSessionsLimit","authPasswordHistory","authPasswordDictionary","authPersonalDataCheck","oAuthProviders","platforms","webhooks","keys","smtpEnabled","smtpSenderName","smtpSenderEmail","smtpReplyTo","smtpHost","smtpPort","smtpUsername","smtpPassword","smtpSecure","authEmailPassword","authUsersAuthMagicURL","authEmailOtp","authAnonymous","authInvites","authJWT","authPhone","serviceStatusForAccount","serviceStatusForAvatars","serviceStatusForDatabases","serviceStatusForLocale","serviceStatusForHealth","serviceStatusForStorage","serviceStatusForTeams","serviceStatusForUsers","serviceStatusForFunctions","serviceStatusForGraphql","serviceStatusForMessaging"]},"webhook":{"description":"Webhook","type":"object","properties":{"$id":{"type":"string","description":"Webhook ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Webhook creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Webhook update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Webhook name.","x-example":"My Webhook"},"url":{"type":"string","description":"Webhook URL endpoint.","x-example":"https:\/\/example.com\/webhook"},"events":{"type":"array","description":"Webhook trigger events.","items":{"type":"string"},"x-example":"database.collections.update"},"security":{"type":"boolean","description":"Indicated if SSL \/ TLS Certificate verification is enabled.","x-example":true},"httpUser":{"type":"string","description":"HTTP basic authentication username.","x-example":"username"},"httpPass":{"type":"string","description":"HTTP basic authentication password.","x-example":"password"},"signatureKey":{"type":"string","description":"Signature key which can be used to validated incoming","x-example":"ad3d581ca230e2b7059c545e5a"},"enabled":{"type":"boolean","description":"Indicates if this webhook is enabled.","x-example":true},"logs":{"type":"string","description":"Webhook error logs from the most recent failure.","x-example":"Failed to connect to remote server."},"attempts":{"type":"integer","description":"Number of consecutive failed webhook attempts.","x-example":10,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","name","url","events","security","httpUser","httpPass","signatureKey","enabled","logs","attempts"]},"key":{"description":"Key","type":"object","properties":{"$id":{"type":"string","description":"Key ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Key creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Key update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Key name.","x-example":"My API Key"},"expire":{"type":"string","description":"Key expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"scopes":{"type":"array","description":"Allowed permission scopes.","items":{"type":"string"},"x-example":"users.read"},"secret":{"type":"string","description":"Secret key.","x-example":"919c2d18fb5d4...a2ae413da83346ad2"},"accessedAt":{"type":"string","description":"Most recent access date in ISO 8601 format. This attribute is only updated again after 24 hours.","x-example":"2020-10-15T06:38:00.000+00:00"},"sdks":{"type":"array","description":"List of SDK user agents that used this key.","items":{"type":"string"},"x-example":"appwrite:flutter"}},"required":["$id","$createdAt","$updatedAt","name","expire","scopes","secret","accessedAt","sdks"]},"authProvider":{"description":"AuthProvider","type":"object","properties":{"key":{"type":"string","description":"Auth Provider.","x-example":"github"},"name":{"type":"string","description":"Auth Provider name.","x-example":"GitHub"},"appId":{"type":"string","description":"OAuth 2.0 application ID.","x-example":"259125845563242502"},"secret":{"type":"string","description":"OAuth 2.0 application secret. Might be JSON string if provider requires extra configuration.","x-example":"Bpw_g9c2TGXxfgLshDbSaL8tsCcqgczQ"},"enabled":{"type":"boolean","description":"Auth Provider is active and can be used to create session.","x-example":""}},"required":["key","name","appId","secret","enabled"]},"platform":{"description":"Platform","type":"object","properties":{"$id":{"type":"string","description":"Platform ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Platform creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Platform update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Platform name.","x-example":"My Web App"},"type":{"type":"string","description":"Platform type. Possible values are: web, flutter-web, flutter-ios, flutter-android, ios, android, and unity.","x-example":"web"},"key":{"type":"string","description":"Platform Key. iOS bundle ID or Android package name. Empty string for other platforms.","x-example":"com.company.appname"},"store":{"type":"string","description":"App store or Google Play store ID.","x-example":""},"hostname":{"type":"string","description":"Web app hostname. Empty string for other platforms.","x-example":true},"httpUser":{"type":"string","description":"HTTP basic authentication username.","x-example":"username"},"httpPass":{"type":"string","description":"HTTP basic authentication password.","x-example":"password"}},"required":["$id","$createdAt","$updatedAt","name","type","key","store","hostname","httpUser","httpPass"]},"variable":{"description":"Variable","type":"object","properties":{"$id":{"type":"string","description":"Variable ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"key":{"type":"string","description":"Variable key.","x-example":"API_KEY"},"value":{"type":"string","description":"Variable value.","x-example":"myPa$$word1"},"resourceType":{"type":"string","description":"Service to which the variable belongs. Possible values are \"project\", \"function\"","x-example":"function"},"resourceId":{"type":"string","description":"ID of resource to which the variable belongs. If resourceType is \"project\", it is empty. If resourceType is \"function\", it is ID of the function.","x-example":"myAwesomeFunction"}},"required":["$id","$createdAt","$updatedAt","key","value","resourceType","resourceId"]},"country":{"description":"Country","type":"object","properties":{"name":{"type":"string","description":"Country name.","x-example":"United States"},"code":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"}},"required":["name","code"]},"continent":{"description":"Continent","type":"object","properties":{"name":{"type":"string","description":"Continent name.","x-example":"Europe"},"code":{"type":"string","description":"Continent two letter code.","x-example":"EU"}},"required":["name","code"]},"language":{"description":"Language","type":"object","properties":{"name":{"type":"string","description":"Language name.","x-example":"Italian"},"code":{"type":"string","description":"Language two-character ISO 639-1 codes.","x-example":"it"},"nativeName":{"type":"string","description":"Language native name.","x-example":"Italiano"}},"required":["name","code","nativeName"]},"currency":{"description":"Currency","type":"object","properties":{"symbol":{"type":"string","description":"Currency symbol.","x-example":"$"},"name":{"type":"string","description":"Currency name.","x-example":"US dollar"},"symbolNative":{"type":"string","description":"Currency native symbol.","x-example":"$"},"decimalDigits":{"type":"integer","description":"Number of decimal digits.","x-example":2,"format":"int32"},"rounding":{"type":"number","description":"Currency digit rounding.","x-example":0,"format":"double"},"code":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format.","x-example":"USD"},"namePlural":{"type":"string","description":"Currency plural name","x-example":"US dollars"}},"required":["symbol","name","symbolNative","decimalDigits","rounding","code","namePlural"]},"phone":{"description":"Phone","type":"object","properties":{"code":{"type":"string","description":"Phone code.","x-example":"+1"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["code","countryCode","countryName"]},"healthAntivirus":{"description":"Health Antivirus","type":"object","properties":{"version":{"type":"string","description":"Antivirus version.","x-example":"1.0.0"},"status":{"type":"string","description":"Antivirus status. Possible values can are: `disabled`, `offline`, `online`","x-example":"online"}},"required":["version","status"]},"healthQueue":{"description":"Health Queue","type":"object","properties":{"size":{"type":"integer","description":"Amount of actions in the queue.","x-example":8,"format":"int32"}},"required":["size"]},"healthStatus":{"description":"Health Status","type":"object","properties":{"name":{"type":"string","description":"Name of the service.","x-example":"database"},"ping":{"type":"integer","description":"Duration in milliseconds how long the health check took.","x-example":128,"format":"int32"},"status":{"type":"string","description":"Service status. Possible values can are: `pass`, `fail`","x-example":"pass"}},"required":["name","ping","status"]},"healthCertificate":{"description":"Health Certificate","type":"object","properties":{"name":{"type":"string","description":"Certificate name","x-example":"\/CN=www.google.com"},"subjectSN":{"type":"string","description":"Subject SN","x-example":""},"issuerOrganisation":{"type":"string","description":"Issuer organisation","x-example":""},"validFrom":{"type":"string","description":"Valid from","x-example":"1704200998"},"validTo":{"type":"string","description":"Valid to","x-example":"1711458597"},"signatureTypeSN":{"type":"string","description":"Signature type SN","x-example":"RSA-SHA256"}},"required":["name","subjectSN","issuerOrganisation","validFrom","validTo","signatureTypeSN"]},"healthTime":{"description":"Health Time","type":"object","properties":{"remoteTime":{"type":"integer","description":"Current unix timestamp on trustful remote server.","x-example":1639490751,"format":"int32"},"localTime":{"type":"integer","description":"Current unix timestamp of local server where Appwrite runs.","x-example":1639490844,"format":"int32"},"diff":{"type":"integer","description":"Difference of unix remote and local timestamps in milliseconds.","x-example":93,"format":"int32"}},"required":["remoteTime","localTime","diff"]},"metric":{"description":"Metric","type":"object","properties":{"value":{"type":"integer","description":"The value of this metric at the timestamp.","x-example":1,"format":"int32"},"date":{"type":"string","description":"The date at which this metric was aggregated in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["value","date"]},"metricBreakdown":{"description":"Metric Breakdown","type":"object","properties":{"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Resource name.","x-example":"Documents"},"value":{"type":"integer","description":"The value of this metric at the timestamp.","x-example":1,"format":"int32"}},"required":["resourceId","name","value"]},"usageDatabases":{"description":"UsageDatabases","type":"object","properties":{"range":{"type":"string","description":"Time range of the usage stats.","x-example":"30d"},"databasesTotal":{"type":"integer","description":"Total aggregated number of databases.","x-example":0,"format":"int32"},"collectionsTotal":{"type":"integer","description":"Total aggregated number of collections.","x-example":0,"format":"int32"},"documentsTotal":{"type":"integer","description":"Total aggregated number of documents.","x-example":0,"format":"int32"},"databases":{"type":"array","description":"Aggregated number of databases per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collections":{"type":"array","description":"Aggregated number of collections per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documents":{"type":"array","description":"Aggregated number of documents per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","databasesTotal","collectionsTotal","documentsTotal","databases","collections","documents"]},"usageDatabase":{"description":"UsageDatabase","type":"object","properties":{"range":{"type":"string","description":"Time range of the usage stats.","x-example":"30d"},"collectionsTotal":{"type":"integer","description":"Total aggregated number of collections.","x-example":0,"format":"int32"},"documentsTotal":{"type":"integer","description":"Total aggregated number of documents.","x-example":0,"format":"int32"},"collections":{"type":"array","description":"Aggregated number of collections per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documents":{"type":"array","description":"Aggregated number of documents per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","collectionsTotal","documentsTotal","collections","documents"]},"usageCollection":{"description":"UsageCollection","type":"object","properties":{"range":{"type":"string","description":"Time range of the usage stats.","x-example":"30d"},"documentsTotal":{"type":"integer","description":"Total aggregated number of of documents.","x-example":0,"format":"int32"},"documents":{"type":"array","description":"Aggregated number of documents per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","documentsTotal","documents"]},"usageUsers":{"description":"UsageUsers","type":"object","properties":{"range":{"type":"string","description":"Time range of the usage stats.","x-example":"30d"},"usersTotal":{"type":"integer","description":"Total aggregated number of statistics of users.","x-example":0,"format":"int32"},"sessionsTotal":{"type":"integer","description":"Total aggregated number of active sessions.","x-example":0,"format":"int32"},"users":{"type":"array","description":"Aggregated number of users per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"sessions":{"type":"array","description":"Aggregated number of active sessions per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","usersTotal","sessionsTotal","users","sessions"]},"usageStorage":{"description":"StorageUsage","type":"object","properties":{"range":{"type":"string","description":"Time range of the usage stats.","x-example":"30d"},"bucketsTotal":{"type":"integer","description":"Total aggregated number of buckets","x-example":0,"format":"int32"},"filesTotal":{"type":"integer","description":"Total aggregated number of files.","x-example":0,"format":"int32"},"filesStorageTotal":{"type":"integer","description":"Total aggregated number of files storage (in bytes).","x-example":0,"format":"int32"},"buckets":{"type":"array","description":"Aggregated number of buckets per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"files":{"type":"array","description":"Aggregated number of files per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"storage":{"type":"array","description":"Aggregated number of files storage (in bytes) per period .","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","bucketsTotal","filesTotal","filesStorageTotal","buckets","files","storage"]},"usageBuckets":{"description":"UsageBuckets","type":"object","properties":{"range":{"type":"string","description":"Time range of the usage stats.","x-example":"30d"},"filesTotal":{"type":"integer","description":"Total aggregated number of bucket files.","x-example":0,"format":"int32"},"filesStorageTotal":{"type":"integer","description":"Total aggregated number of bucket files storage (in bytes).","x-example":0,"format":"int32"},"files":{"type":"array","description":"Aggregated number of bucket files per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"storage":{"type":"array","description":"Aggregated number of bucket storage files (in bytes) per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","filesTotal","filesStorageTotal","files","storage"]},"usageFunctions":{"description":"UsageFunctions","type":"object","properties":{"range":{"type":"string","description":"Time range of the usage stats.","x-example":"30d"},"functionsTotal":{"type":"integer","description":"Total aggregated number of functions.","x-example":0,"format":"int32"},"deploymentsTotal":{"type":"integer","description":"Total aggregated number of functions deployments.","x-example":0,"format":"int32"},"deploymentsStorageTotal":{"type":"integer","description":"Total aggregated sum of functions deployment storage.","x-example":0,"format":"int32"},"buildsTotal":{"type":"integer","description":"Total aggregated number of functions build.","x-example":0,"format":"int32"},"buildsStorageTotal":{"type":"integer","description":"total aggregated sum of functions build storage.","x-example":0,"format":"int32"},"buildsTimeTotal":{"type":"integer","description":"Total aggregated sum of functions build compute time.","x-example":0,"format":"int32"},"executionsTotal":{"type":"integer","description":"Total aggregated number of functions execution.","x-example":0,"format":"int32"},"executionsTimeTotal":{"type":"integer","description":"Total aggregated sum of functions execution compute time.","x-example":0,"format":"int32"},"functions":{"type":"array","description":"Aggregated number of functions per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":0},"deployments":{"type":"array","description":"Aggregated number of functions deployment per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"deploymentsStorage":{"type":"array","description":"Aggregated number of functions deployment storage per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"builds":{"type":"array","description":"Aggregated number of functions build per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"buildsStorage":{"type":"array","description":"Aggregated sum of functions build storage per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"buildsTime":{"type":"array","description":"Aggregated sum of functions build compute time per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"executions":{"type":"array","description":"Aggregated number of functions execution per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"executionsTime":{"type":"array","description":"Aggregated number of functions execution compute time per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","functionsTotal","deploymentsTotal","deploymentsStorageTotal","buildsTotal","buildsStorageTotal","buildsTimeTotal","executionsTotal","executionsTimeTotal","functions","deployments","deploymentsStorage","builds","buildsStorage","buildsTime","executions","executionsTime"]},"usageFunction":{"description":"UsageFunction","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"deploymentsTotal":{"type":"integer","description":"Total aggregated number of function deployments.","x-example":0,"format":"int32"},"deploymentsStorageTotal":{"type":"integer","description":"Total aggregated sum of function deployments storage.","x-example":0,"format":"int32"},"buildsTotal":{"type":"integer","description":"Total aggregated number of function builds.","x-example":0,"format":"int32"},"buildsStorageTotal":{"type":"integer","description":"total aggregated sum of function builds storage.","x-example":0,"format":"int32"},"buildsTimeTotal":{"type":"integer","description":"Total aggregated sum of function builds compute time.","x-example":0,"format":"int32"},"executionsTotal":{"type":"integer","description":"Total aggregated number of function executions.","x-example":0,"format":"int32"},"executionsTimeTotal":{"type":"integer","description":"Total aggregated sum of function executions compute time.","x-example":0,"format":"int32"},"deployments":{"type":"array","description":"Aggregated number of function deployments per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"deploymentsStorage":{"type":"array","description":"Aggregated number of function deployments storage per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"builds":{"type":"array","description":"Aggregated number of function builds per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"buildsStorage":{"type":"array","description":"Aggregated sum of function builds storage per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"buildsTime":{"type":"array","description":"Aggregated sum of function builds compute time per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"executions":{"type":"array","description":"Aggregated number of function executions per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"executionsTime":{"type":"array","description":"Aggregated number of function executions compute time per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","deploymentsTotal","deploymentsStorageTotal","buildsTotal","buildsStorageTotal","buildsTimeTotal","executionsTotal","executionsTimeTotal","deployments","deploymentsStorage","builds","buildsStorage","buildsTime","executions","executionsTime"]},"usageProject":{"description":"UsageProject","type":"object","properties":{"executionsTotal":{"type":"integer","description":"Total aggregated number of function executions.","x-example":0,"format":"int32"},"documentsTotal":{"type":"integer","description":"Total aggregated number of documents.","x-example":0,"format":"int32"},"databasesTotal":{"type":"integer","description":"Total aggregated number of databases.","x-example":0,"format":"int32"},"usersTotal":{"type":"integer","description":"Total aggregated number of users.","x-example":0,"format":"int32"},"filesStorageTotal":{"type":"integer","description":"Total aggregated sum of files storage size (in bytes).","x-example":0,"format":"int32"},"bucketsTotal":{"type":"integer","description":"Total aggregated number of buckets.","x-example":0,"format":"int32"},"requests":{"type":"array","description":"Aggregated number of requests per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"network":{"type":"array","description":"Aggregated number of consumed bandwidth per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"users":{"type":"array","description":"Aggregated number of users per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"executions":{"type":"array","description":"Aggregated number of executions per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"executionsBreakdown":{"type":"array","description":"Aggregated breakdown in totals of executions by functions.","items":{"$ref":"#\/components\/schemas\/metricBreakdown"},"x-example":[]},"bucketsBreakdown":{"type":"array","description":"Aggregated breakdown in totals of usage by buckets.","items":{"$ref":"#\/components\/schemas\/metricBreakdown"},"x-example":[]}},"required":["executionsTotal","documentsTotal","databasesTotal","usersTotal","filesStorageTotal","bucketsTotal","requests","network","users","executions","executionsBreakdown","bucketsBreakdown"]},"headers":{"description":"Headers","type":"object","properties":{"name":{"type":"string","description":"Header name.","x-example":"Content-Type"},"value":{"type":"string","description":"Header value.","x-example":"application\/json"}},"required":["name","value"]},"proxyRule":{"description":"Rule","type":"object","properties":{"$id":{"type":"string","description":"Rule ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Rule creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Rule update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"domain":{"type":"string","description":"Domain name.","x-example":"appwrite.company.com"},"resourceType":{"type":"string","description":"Action definition for the rule. Possible values are \"api\", \"function\", or \"redirect\"","x-example":"function"},"resourceId":{"type":"string","description":"ID of resource for the action type. If resourceType is \"api\" or \"url\", it is empty. If resourceType is \"function\", it is ID of the function.","x-example":"myAwesomeFunction"},"status":{"type":"string","description":"Domain verification status. Possible values are \"created\", \"verifying\", \"verified\" and \"unverified\"","x-example":"verified"},"logs":{"type":"string","description":"Certificate generation logs. This will return an empty string if generation did not run, or succeeded.","x-example":"HTTP challegne failed."},"renewAt":{"type":"string","description":"Certificate auto-renewal date in ISO 8601 format.","x-example":"datetime"}},"required":["$id","$createdAt","$updatedAt","domain","resourceType","resourceId","status","logs","renewAt"]},"smsTemplate":{"description":"SmsTemplate","type":"object","properties":{"type":{"type":"string","description":"Template type","x-example":"verification"},"locale":{"type":"string","description":"Template locale","x-example":"en_us"},"message":{"type":"string","description":"Template message","x-example":"Click on the link to verify your account."}},"required":["type","locale","message"]},"emailTemplate":{"description":"EmailTemplate","type":"object","properties":{"type":{"type":"string","description":"Template type","x-example":"verification"},"locale":{"type":"string","description":"Template locale","x-example":"en_us"},"message":{"type":"string","description":"Template message","x-example":"Click on the link to verify your account."},"senderName":{"type":"string","description":"Name of the sender","x-example":"My User"},"senderEmail":{"type":"string","description":"Email of the sender","x-example":"mail@appwrite.io"},"replyTo":{"type":"string","description":"Reply to email address","x-example":"emails@appwrite.io"},"subject":{"type":"string","description":"Email subject","x-example":"Please verify your email address"}},"required":["type","locale","message","senderName","senderEmail","replyTo","subject"]},"consoleVariables":{"description":"Console Variables","type":"object","properties":{"_APP_DOMAIN_TARGET":{"type":"string","description":"CNAME target for your Appwrite custom domains.","x-example":"appwrite.io"},"_APP_STORAGE_LIMIT":{"type":"integer","description":"Maximum file size allowed for file upload in bytes.","x-example":"30000000","format":"int32"},"_APP_FUNCTIONS_SIZE_LIMIT":{"type":"integer","description":"Maximum file size allowed for deployment in bytes.","x-example":"30000000","format":"int32"},"_APP_USAGE_STATS":{"type":"string","description":"Defines if usage stats are enabled. This value is set to 'enabled' by default, to disable the usage stats set the value to 'disabled'.","x-example":"enabled"},"_APP_VCS_ENABLED":{"type":"boolean","description":"Defines if VCS (Version Control System) is enabled.","x-example":true},"_APP_DOMAIN_ENABLED":{"type":"boolean","description":"Defines if main domain is configured. If so, custom domains can be created.","x-example":true},"_APP_ASSISTANT_ENABLED":{"type":"boolean","description":"Defines if AI assistant is enabled.","x-example":true}},"required":["_APP_DOMAIN_TARGET","_APP_STORAGE_LIMIT","_APP_FUNCTIONS_SIZE_LIMIT","_APP_USAGE_STATS","_APP_VCS_ENABLED","_APP_DOMAIN_ENABLED","_APP_ASSISTANT_ENABLED"]},"mfaChallenge":{"description":"MFA Challenge","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","userId","expire"]},"mfaType":{"description":"MFAType","type":"object","properties":{"backups":{"type":"array","description":"Backup codes.","items":{"type":"string"},"x-example":true},"secret":{"type":"string","description":"Secret token used for TOTP factor.","x-example":true},"uri":{"type":"string","description":"URI for authenticator apps.","x-example":true}},"required":["backups","secret","uri"]},"mfaFactors":{"description":"MFAFactors","type":"object","properties":{"totp":{"type":"boolean","description":"TOTP","x-example":true},"phone":{"type":"boolean","description":"Phone","x-example":true},"email":{"type":"boolean","description":"Email","x-example":true}},"required":["totp","phone","email"]},"provider":{"description":"Provider","type":"object","properties":{"$id":{"type":"string","description":"Provider ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Provider creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Provider update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"The name for the provider instance.","x-example":"Mailgun"},"provider":{"type":"string","description":"The name of the provider service.","x-example":"mailgun"},"enabled":{"type":"boolean","description":"Is provider enabled?","x-example":true},"type":{"type":"string","description":"Type of provider.","x-example":"sms"},"credentials":{"type":"object","description":"Provider credentials.","x-example":{"key":"123456789"}},"options":{"type":"object","description":"Provider options.","x-example":{"from":"sender-email@mydomain"},"nullable":true}},"required":["$id","$createdAt","$updatedAt","name","provider","enabled","type","credentials"]},"message":{"description":"Message","type":"object","properties":{"$id":{"type":"string","description":"Message ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Message creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Message update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerType":{"type":"string","description":"Message provider type.","x-example":"email"},"topics":{"type":"array","description":"Topic IDs set as recipients.","items":{"type":"string"},"x-example":["5e5ea5c16897e"]},"users":{"type":"array","description":"User IDs set as recipients.","items":{"type":"string"},"x-example":["5e5ea5c16897e"]},"targets":{"type":"array","description":"Target IDs set as recipients.","items":{"type":"string"},"x-example":["5e5ea5c16897e"]},"scheduledAt":{"type":"string","description":"The scheduled time for message.","x-example":"2020-10-15T06:38:00.000+00:00","nullable":true},"deliveredAt":{"type":"string","description":"The time when the message was delivered.","x-example":"2020-10-15T06:38:00.000+00:00","nullable":true},"deliveryErrors":{"type":"array","description":"Delivery errors if any.","items":{"type":"string"},"x-example":["Failed to send message to target 5e5ea5c16897e: Credentials not valid."],"nullable":true},"deliveredTotal":{"type":"integer","description":"Number of recipients the message was delivered to.","x-example":1,"format":"int32"},"data":{"type":"object","description":"Data of the message.","x-example":{"subject":"Welcome to Appwrite","content":"Hi there, welcome to Appwrite family."}},"status":{"type":"string","description":"Status of delivery.","x-example":"Message status can be one of the following: processing, sent, cancelled, failed."}},"required":["$id","$createdAt","$updatedAt","providerType","topics","users","targets","deliveredTotal","data","status"]},"topic":{"description":"Topic","type":"object","properties":{"$id":{"type":"string","description":"Topic ID.","x-example":"259125845563242502"},"$createdAt":{"type":"string","description":"Topic creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Topic update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"The name of the topic.","x-example":"events"},"total":{"type":"integer","description":"Total count of subscribers subscribed to topic.","x-example":100,"format":"int32"},"subscribe":{"type":"array","description":"Subscribe permissions.","items":{"type":"string"},"x-example":"users"}},"required":["$id","$createdAt","$updatedAt","name","total","subscribe"]},"subscriber":{"description":"Subscriber","type":"object","properties":{"$id":{"type":"string","description":"Subscriber ID.","x-example":"259125845563242502"},"$createdAt":{"type":"string","description":"Subscriber creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Subscriber update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"targetId":{"type":"string","description":"Target ID.","x-example":"259125845563242502"},"target":{"type":"object","description":"Target.","x-example":{"$id":"259125845563242502","$createdAt":"2020-10-15T06:38:00.000+00:00","$updatedAt":"2020-10-15T06:38:00.000+00:00","providerType":"email","providerId":"259125845563242502","name":"ageon-app-email","identifier":"random-mail@email.org","userId":"5e5ea5c16897e"},"items":{"$ref":"#\/components\/schemas\/target"}},"userId":{"type":"string","description":"Topic ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User Name.","x-example":"Aegon Targaryen"},"topicId":{"type":"string","description":"Topic ID.","x-example":"259125845563242502"},"providerType":{"type":"string","description":"The target provider type. Can be one of the following: `email`, `sms` or `push`.","x-example":"email"}},"required":["$id","$createdAt","$updatedAt","targetId","target","userId","userName","topicId","providerType"]},"target":{"description":"Target","type":"object","properties":{"$id":{"type":"string","description":"Target ID.","x-example":"259125845563242502"},"$createdAt":{"type":"string","description":"Target creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Target update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Target Name.","x-example":"Aegon apple token"},"userId":{"type":"string","description":"User ID.","x-example":"259125845563242502"},"providerId":{"type":"string","description":"Provider ID.","x-example":"259125845563242502","nullable":true},"providerType":{"type":"string","description":"The target provider type. Can be one of the following: `email`, `sms` or `push`.","x-example":"email"},"identifier":{"type":"string","description":"The target identifier.","x-example":"token"}},"required":["$id","$createdAt","$updatedAt","name","userId","providerType","identifier"]},"migration":{"description":"Migration","type":"object","properties":{"$id":{"type":"string","description":"Migration ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"string","description":"Migration status ( pending, processing, failed, completed ) ","x-example":"pending"},"stage":{"type":"string","description":"Migration stage ( init, processing, source-check, destination-check, migrating, finished )","x-example":"init"},"source":{"type":"string","description":"A string containing the type of source of the migration.","x-example":"Appwrite"},"resources":{"type":"array","description":"Resources to migration.","items":{"type":"string"},"x-example":["user"]},"statusCounters":{"type":"object","description":"A group of counters that represent the total progress of the migration.","x-example":"{\"Database\": {\"PENDING\": 0, \"SUCCESS\": 1, \"ERROR\": 0, \"SKIP\": 0, \"PROCESSING\": 0, \"WARNING\": 0}}"},"resourceData":{"type":"object","description":"An array of objects containing the report data of the resources that were migrated.","x-example":"[{\"resource\":\"Database\",\"id\":\"public\",\"status\":\"SUCCESS\",\"message\":\"\"}]"},"errors":{"type":"array","description":"All errors that occurred during the migration process.","items":{"type":"string"},"x-example":[]}},"required":["$id","$createdAt","$updatedAt","status","stage","source","resources","statusCounters","resourceData","errors"]},"migrationReport":{"description":"Migration Report","type":"object","properties":{"user":{"type":"integer","description":"Number of users to be migrated.","x-example":20,"format":"int32"},"team":{"type":"integer","description":"Number of teams to be migrated.","x-example":20,"format":"int32"},"database":{"type":"integer","description":"Number of databases to be migrated.","x-example":20,"format":"int32"},"document":{"type":"integer","description":"Number of documents to be migrated.","x-example":20,"format":"int32"},"file":{"type":"integer","description":"Number of files to be migrated.","x-example":20,"format":"int32"},"bucket":{"type":"integer","description":"Number of buckets to be migrated.","x-example":20,"format":"int32"},"function":{"type":"integer","description":"Number of functions to be migrated.","x-example":20,"format":"int32"},"size":{"type":"integer","description":"Size of files to be migrated in mb.","x-example":30000,"format":"int32"},"version":{"type":"string","description":"Version of the Appwrite instance to be migrated.","x-example":"1.4.0"}},"required":["user","team","database","document","file","bucket","function","size","version"]},"firebaseProject":{"description":"MigrationFirebaseProject","type":"object","properties":{"projectId":{"type":"string","description":"Project ID.","x-example":"my-project"},"displayName":{"type":"string","description":"Project display name.","x-example":"My Project"}},"required":["projectId","displayName"]}},"securitySchemes":{"Project":{"type":"apiKey","name":"X-Appwrite-Project","description":"Your project ID","in":"header","x-appwrite":{"demo":"5df5acd0d48c2"}},"Key":{"type":"apiKey","name":"X-Appwrite-Key","description":"Your secret API key","in":"header","x-appwrite":{"demo":"919c2d18fb5d4...a2ae413da83346ad2"}},"JWT":{"type":"apiKey","name":"X-Appwrite-JWT","description":"Your secret JSON Web Token","in":"header"},"Locale":{"type":"apiKey","name":"X-Appwrite-Locale","description":"","in":"header","x-appwrite":{"demo":"en"}},"Mode":{"type":"apiKey","name":"X-Appwrite-Mode","description":"","in":"header","x-appwrite":{"demo":""}}}},"externalDocs":{"description":"Full API docs, specs and tutorials","url":"https:\/\/appwrite.io\/docs"}} \ No newline at end of file diff --git a/app/config/specs/open-api3-latest-server.json b/app/config/specs/open-api3-latest-server.json index 56cfb7ff3e..a43cf225a2 100644 --- a/app/config/specs/open-api3-latest-server.json +++ b/app/config/specs/open-api3-latest-server.json @@ -1 +1 @@ -{"openapi":"3.0.0","info":{"version":"1.4.13","title":"Appwrite","description":"Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https:\/\/appwrite.io\/docs](https:\/\/appwrite.io\/docs)","termsOfService":"https:\/\/appwrite.io\/policy\/terms","contact":{"name":"Appwrite Team","url":"https:\/\/appwrite.io\/support","email":"team@appwrite.io"},"license":{"name":"BSD-3-Clause","url":"https:\/\/raw.githubusercontent.com\/appwrite\/appwrite\/master\/LICENSE"}},"servers":[{"url":"https:\/\/HOSTNAME\/v1"}],"paths":{"\/account":{"get":{"summary":"Get account","operationId":"accountGet","tags":["account"],"description":"Get the currently logged in user.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"get","weight":22,"cookies":false,"type":"","demo":"account\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]},"post":{"summary":"Create account","operationId":"accountCreate","tags":["account"],"description":"Use this endpoint to allow a new user to register a new account in your project. After the user registration completes successfully, you can use the [\/account\/verfication](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createVerification) route to start verifying the user email address. To allow the new user to login to their new account, you need to create a new [account session](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createEmailSession).","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"create","weight":7,"cookies":false,"type":"","demo":"account\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"New user password. Must be between 8 and 256 chars.","x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/account\/email":{"patch":{"summary":"Update email","operationId":"accountUpdateEmail","tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateEmail","weight":29,"cookies":false,"type":"","demo":"account\/update-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","x-example":"password"}},"required":["email","password"]}}}}}},"\/account\/identities":{"get":{"summary":"List Identities","operationId":"accountListIdentities","tags":["account"],"description":"Get the list of identities for the currently logged in user.","responses":{"200":{"description":"Identities List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/identityList"}}}}},"x-appwrite":{"method":"listIdentities","weight":13,"cookies":false,"type":"","demo":"account\/list-identities.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-identities.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/identities","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, provider, providerUid, providerEmail, providerAccessTokenExpiry","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/identities\/{identityId}":{"delete":{"summary":"Delete identity","operationId":"accountDeleteIdentity","tags":["account"],"description":"Delete an identity by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIdentity","weight":14,"cookies":false,"type":"","demo":"account\/delete-identity.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-identity.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"identityId","description":"Identity ID.","required":true,"schema":{"type":"string","x-example":"[IDENTITY_ID]"},"in":"path"}]}},"\/account\/jwt":{"post":{"summary":"Create JWT","operationId":"accountCreateJWT","tags":["account"],"description":"Use this endpoint to create a JSON Web Token. You can use the resulting JWT to authenticate on behalf of the current user when working with the Appwrite server-side API and SDKs. The JWT secret is valid for 15 minutes from its creation and will be invalid if the user will logout in that time frame.","responses":{"201":{"description":"JWT","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/jwt"}}}}},"x-appwrite":{"method":"createJWT","weight":21,"cookies":false,"type":"","demo":"account\/create-j-w-t.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-jwt.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"accounts.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"List logs","operationId":"accountListLogs","tags":["account"],"description":"Get the list of latest security activity logs for the currently logged in user. Each log returns user IP address, location and date and time of log.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listLogs","weight":25,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/mfa":{"patch":{"summary":"Update MFA","operationId":"accountUpdateMFA","tags":["account"],"description":"","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateMFA","weight":42,"cookies":false,"type":"","demo":"account\/update-m-f-a.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-mfa.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"mfa":{"type":"boolean","description":"Enable or disable MFA.","x-example":false}},"required":["mfa"]}}}}}},"\/account\/mfa\/challenge":{"post":{"summary":"Create MFA Challenge","operationId":"accountCreateChallenge","tags":["account"],"description":"","responses":{"201":{"description":"MFA Challenge","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/mfaChallenge"}}}}},"x-appwrite":{"method":"createChallenge","weight":47,"cookies":false,"type":"","demo":"account\/create-challenge.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-challenge.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},token:{param-token}","scope":"accounts.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"provider":{"type":"string","description":"provider.","x-example":"totp","enum":["totp","phone","email"],"x-enum-name":"AuthenticatorProvider","x-enum-keys":[]}},"required":["provider"]}}}}},"put":{"summary":"Create MFA Challenge (confirmation)","operationId":"accountUpdateChallenge","tags":["account"],"description":"","responses":{"204":{"description":"No content","content":{"":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateChallenge","weight":48,"cookies":false,"type":"","demo":"account\/update-challenge.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-challenge.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"challengeId":{"type":"string","description":"Valid verification token.","x-example":"[CHALLENGE_ID]"},"otp":{"type":"string","description":"Valid verification token.","x-example":"[OTP]"}},"required":["challengeId","otp"]}}}}}},"\/account\/mfa\/factors":{"get":{"summary":"List Factors","operationId":"accountListFactors","tags":["account"],"description":"Get the currently logged in user.","responses":{"200":{"description":"MFAProviders","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/mfaProviders"}}}}},"x-appwrite":{"method":"listFactors","weight":43,"cookies":false,"type":"","demo":"account\/list-factors.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/account\/mfa\/{factor}":{"post":{"summary":"Add Authenticator","operationId":"accountAddAuthenticator","tags":["account"],"description":"","responses":{"200":{"description":"MFAProvider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/mfaProvider"}}}}},"x-appwrite":{"method":"addAuthenticator","weight":44,"cookies":false,"type":"","demo":"account\/add-authenticator.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-mfa.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"factor","description":"Factor.","required":true,"schema":{"type":"string","x-example":"totp","enum":["totp"],"x-enum-name":"AuthenticatorFactor","x-enum-keys":[]},"in":"path"}]},"put":{"summary":"Verify Authenticator","operationId":"accountVerifyAuthenticator","tags":["account"],"description":"","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"verifyAuthenticator","weight":45,"cookies":false,"type":"","demo":"account\/verify-authenticator.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-mfa.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"factor","description":"Factor.","required":true,"schema":{"type":"string","x-example":"totp","enum":["totp"],"x-enum-name":"AuthenticatorFactor","x-enum-keys":[]},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"otp":{"type":"string","description":"Valid verification token.","x-example":"[OTP]"}},"required":["otp"]}}}}}},"\/account\/mfa\/{provider}":{"delete":{"summary":"Delete Authenticator","operationId":"accountDeleteAuthenticator","tags":["account"],"description":"","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"deleteAuthenticator","weight":46,"cookies":false,"type":"","demo":"account\/delete-authenticator.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-mfa.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"provider","description":"Provider.","required":true,"schema":{"type":"string","x-example":"totp","enum":["totp"],"x-enum-name":"AuthenticatorProvider","x-enum-keys":[]},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"otp":{"type":"string","description":"Valid verification token.","x-example":"[OTP]"}},"required":["otp"]}}}}}},"\/account\/name":{"patch":{"summary":"Update name","operationId":"accountUpdateName","tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateName","weight":27,"cookies":false,"type":"","demo":"account\/update-name.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-name.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["name"]}}}}}},"\/account\/password":{"patch":{"summary":"Update password","operationId":"accountUpdatePassword","tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePassword","weight":28,"cookies":false,"type":"","demo":"account\/update-password.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-password.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"password":{"type":"string","description":"New user password. Must be at least 8 chars.","x-example":null},"oldPassword":{"type":"string","description":"Current user password. Must be at least 8 chars.","x-example":"password"}},"required":["password"]}}}}}},"\/account\/phone":{"patch":{"summary":"Update phone","operationId":"accountUpdatePhone","tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createPhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePhone","weight":30,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","x-example":"password"}},"required":["phone","password"]}}}}}},"\/account\/prefs":{"get":{"summary":"Get account preferences","operationId":"accountGetPrefs","tags":["account"],"description":"Get the preferences as a key-value object for the currently logged in user.","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"getPrefs","weight":23,"cookies":false,"type":"","demo":"account\/get-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/prefs","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]},"patch":{"summary":"Update preferences","operationId":"accountUpdatePrefs","tags":["account"],"description":"Update currently logged in user account preferences. The object you pass is stored as is, and replaces any previous value. The maximum allowed prefs size is 64kB and throws error if exceeded.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePrefs","weight":31,"cookies":false,"type":"","demo":"account\/update-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/prefs","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"prefs":{"type":"object","description":"Prefs key-value JSON object.","x-example":"{}"}},"required":["prefs"]}}}}}},"\/account\/recovery":{"post":{"summary":"Create password recovery","operationId":"accountCreateRecovery","tags":["account"],"description":"Sends the user an email with a temporary secret key for password reset. When the user clicks the confirmation link he is redirected back to your app password reset URL with the secret key and email address values attached to the URL query string. Use the query string params to submit a request to the [PUT \/account\/recovery](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateRecovery) endpoint to complete the process. The verification link sent to the user's email address is valid for 1 hour.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createRecovery","weight":36,"cookies":false,"type":"","demo":"account\/create-recovery.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-recovery.md","rate-limit":10,"rate-time":3600,"rate-key":["url:{url},email:{param-email}","ip:{ip}"],"scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"url":{"type":"string","description":"URL to redirect the user back to your app from the recovery email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"}},"required":["email","url"]}}}}},"put":{"summary":"Create password recovery (confirmation)","operationId":"accountUpdateRecovery","tags":["account"],"description":"Use this endpoint to complete the user account password reset. Both the **userId** and **secret** arguments will be passed as query parameters to the redirect URL you have provided when sending your request to the [POST \/account\/recovery](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createRecovery) endpoint.\n\nPlease note that in order to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) the only valid redirect URLs are the ones from domains you have set when adding your platforms in the console interface.","responses":{"200":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"updateRecovery","weight":37,"cookies":false,"type":"","demo":"account\/update-recovery.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-recovery.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid reset token.","x-example":"[SECRET]"},"password":{"type":"string","description":"New user password. Must be between 8 and 256 chars.","x-example":null}},"required":["userId","secret","password"]}}}}}},"\/account\/sessions":{"get":{"summary":"List sessions","operationId":"accountListSessions","tags":["account"],"description":"Get the list of active sessions across different devices for the currently logged in user.","responses":{"200":{"description":"Sessions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/sessionList"}}}}},"x-appwrite":{"method":"listSessions","weight":24,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/sessions","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]},"delete":{"summary":"Delete sessions","operationId":"accountDeleteSessions","tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":35,"cookies":false,"type":"","demo":"account\/delete-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-sessions.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/account\/sessions\/anonymous":{"post":{"summary":"Create anonymous session","operationId":"accountCreateAnonymousSession","tags":["account"],"description":"Use this endpoint to allow a new user to register an anonymous account in your project. This route will also create a new session for the user. To allow the new user to convert an anonymous account to a normal account, you need to update its [email and password](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateEmail) or create an [OAuth2 session](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#CreateOAuth2Session).","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"createAnonymousSession","weight":20,"cookies":false,"type":"","demo":"account\/create-anonymous-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-anonymous.md","rate-limit":50,"rate-time":3600,"rate-key":"ip:{ip}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/sessions\/email":{"post":{"summary":"Create email password session","operationId":"accountCreateEmailPasswordSession","tags":["account"],"description":"Allow the user to login into their account by providing a valid email and password combination. This route will create a new session for the user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"createEmailPasswordSession","weight":8,"cookies":false,"type":"","demo":"account\/create-email-password-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-email-password.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","x-example":"password"}},"required":["email","password"]}}}}}},"\/account\/sessions\/magic-url":{"put":{"summary":"Create session (deprecated)","operationId":"accountUpdateMagicURLSession","tags":["account"],"description":"Use this endpoint to create a session from token. Provide the **userId** and **secret** parameters from the successful response of authentication flows initiated by token creation. For example, magic URL and phone login.","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateMagicURLSession","weight":17,"cookies":false,"type":"","demo":"account\/update-magic-u-r-l-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session.md","rate-limit":10,"rate-time":3600,"rate-key":"ip:{ip},userId:{param-userId}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/account\/sessions\/oauth2\/{provider}":{"get":{"summary":"Create OAuth2 session","operationId":"accountCreateOAuth2Session","tags":["account"],"description":"Allow the user to login to their account using the OAuth2 provider of their choice. Each OAuth2 provider should be enabled from the Appwrite console first. Use the success and failure arguments to provide a redirect URL's back to your app when login is completed.\n\nIf there is already an active session, the new session will be attached to the logged-in account. If there are no active sessions, the server will attempt to look for a user with the same email address as the email received from the OAuth2 provider and attach the new session to the existing user. If no matching user is found - the server will create a new user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).\n","responses":{"301":{"description":"File"}},"x-appwrite":{"method":"createOAuth2Session","weight":9,"cookies":false,"type":"webAuth","demo":"account\/create-o-auth2session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-oauth2.md","rate-limit":50,"rate-time":3600,"rate-key":"ip:{ip}","scope":"sessions.write","platforms":["client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"provider","description":"OAuth2 Provider. Currently, supported providers are: amazon, apple, auth0, authentik, autodesk, bitbucket, bitly, box, dailymotion, discord, disqus, dropbox, etsy, facebook, github, gitlab, google, linkedin, microsoft, notion, oidc, okta, paypal, paypalSandbox, podio, salesforce, slack, spotify, stripe, tradeshift, tradeshiftBox, twitch, wordpress, yahoo, yammer, yandex, zoho, zoom.","required":true,"schema":{"type":"string","x-example":"amazon","enum":["amazon","apple","auth0","authentik","autodesk","bitbucket","bitly","box","dailymotion","discord","disqus","dropbox","etsy","facebook","github","gitlab","google","linkedin","microsoft","notion","oidc","okta","paypal","paypalSandbox","podio","salesforce","slack","spotify","stripe","tradeshift","tradeshiftBox","twitch","wordpress","yahoo","yammer","yandex","zoho","zoom","mock"],"x-enum-name":"OAuthProvider","x-enum-keys":[]},"in":"path"},{"name":"success","description":"URL to redirect back to your app after a successful login attempt. Only URLs from hostnames in your project's platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","required":false,"schema":{"type":"string","format":"url","x-example":"https:\/\/example.com","default":""},"in":"query"},{"name":"failure","description":"URL to redirect back to your app after a failed login attempt. Only URLs from hostnames in your project's platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","required":false,"schema":{"type":"string","format":"url","x-example":"https:\/\/example.com","default":""},"in":"query"},{"name":"token","description":"Include token credentials in the final redirect, useful for server-side integrations, or when cookies are not available.","required":false,"schema":{"type":"boolean","x-example":false,"default":false},"in":"query"},{"name":"scopes","description":"A list of custom OAuth2 scopes. Check each provider internal docs for a list of supported scopes. Maximum of 100 scopes are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/sessions\/token":{"post":{"summary":"Create session","operationId":"accountCreateSession","tags":["account"],"description":"Use this endpoint to create a session from token. Provide the **userId** and **secret** parameters from the successful response of authentication flows initiated by token creation. For example, magic URL and phone login.","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"createSession","weight":18,"cookies":false,"type":"","demo":"account\/create-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session.md","rate-limit":10,"rate-time":3600,"rate-key":"ip:{ip},userId:{param-userId}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Secret of a token generated by login methods. For example, the `createMagicURLToken` or `createPhoneToken` methods.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/account\/sessions\/{sessionId}":{"get":{"summary":"Get session","operationId":"accountGetSession","tags":["account"],"description":"Use this endpoint to get a logged in user's session using a Session ID. Inputting 'current' will return the current session being used.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"getSession","weight":26,"cookies":false,"type":"","demo":"account\/get-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-session.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/sessions","offline-key":"{sessionId}","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to get the current device session.","required":true,"schema":{"type":"string","x-example":"[SESSION_ID]"},"in":"path"}]},"patch":{"summary":"Update (or renew) a session","operationId":"accountUpdateSession","tags":["account"],"description":"Extend session's expiry to increase it's lifespan. Extending a session is useful when session length is short such as 5 minutes.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateSession","weight":34,"cookies":false,"type":"","demo":"account\/update-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-session.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to update the current device session.","required":true,"schema":{"type":"string","x-example":"[SESSION_ID]"},"in":"path"}]},"delete":{"summary":"Delete session","operationId":"accountDeleteSession","tags":["account"],"description":"Logout the user. Use 'current' as the session ID to logout on this device, use a session ID to logout on another device. If you're looking to logout the user on all devices, use [Delete Sessions](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#deleteSessions) instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSession","weight":33,"cookies":false,"type":"","demo":"account\/delete-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-session.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to delete the current device session.","required":true,"schema":{"type":"string","x-example":"[SESSION_ID]"},"in":"path"}]}},"\/account\/status":{"patch":{"summary":"Update status","operationId":"accountUpdateStatus","tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateStatus","weight":32,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/account\/tokens\/email":{"post":{"summary":"Create email token (OTP)","operationId":"accountCreateEmailToken","tags":["account"],"description":"Sends the user an email with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [POST \/v1\/account\/sessions\/token](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createSession) endpoint to complete the login process. The secret sent to the user's email is valid for 15 minutes.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createEmailToken","weight":16,"cookies":false,"type":"","demo":"account\/create-email-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-token-email.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"phrase":{"type":"boolean","description":"Toggle for security phrase. If enabled, email will be send with a randomly generated phrase and the phrase will also be included in the response. Confirming phrases match increases the security of your authentication flow.","x-example":false}},"required":["userId","email"]}}}}}},"\/account\/tokens\/magic-url":{"post":{"summary":"Create magic URL token","operationId":"accountCreateMagicURLToken","tags":["account"],"description":"Sends the user an email with a secret key for creating a session. If the provided user ID has not been registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [POST \/v1\/account\/sessions\/token](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createSession) endpoint to complete the login process. The link sent to the user's email address is valid for 1 hour. If you are on a mobile device you can leave the URL parameter empty, so that the login completion will be handled by your Appwrite instance by default.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).\n","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createMagicURLToken","weight":15,"cookies":false,"type":"","demo":"account\/create-magic-u-r-l-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-token-magic-url.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"url":{"type":"string","description":"URL to redirect the user back to your app from the magic URL login. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"},"phrase":{"type":"boolean","description":"Toggle for security phrase. If enabled, email will be send with a randomly generated phrase and the phrase will also be included in the response. Confirming phrases match increases the security of your authentication flow.","x-example":false}},"required":["userId","email"]}}}}}},"\/account\/tokens\/phone":{"post":{"summary":"Create phone token","operationId":"accountCreatePhoneToken","tags":["account"],"description":"Sends the user an SMS with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [POST \/v1\/account\/sessions\/token](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createSession) endpoint to complete the login process. The secret sent to the user's phone is valid for 15 minutes.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createPhoneToken","weight":19,"cookies":false,"type":"","demo":"account\/create-phone-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-token-phone.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},phone:{param-phone}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"}},"required":["userId","phone"]}}}}}},"\/account\/verification":{"post":{"summary":"Create email verification","operationId":"accountCreateVerification","tags":["account"],"description":"Use this endpoint to send a verification message to your user email address to confirm they are the valid owners of that address. Both the **userId** and **secret** arguments will be passed as query parameters to the URL you have provided to be attached to the verification email. The provided URL should redirect the user back to your app and allow you to complete the verification process by verifying both the **userId** and **secret** parameters. Learn more about how to [complete the verification process](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateVerification). The verification link sent to the user's email address is valid for 7 days.\n\nPlease note that in order to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md), the only valid redirect URLs are the ones from domains you have set when adding your platforms in the console interface.\n","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createVerification","weight":38,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"url":{"type":"string","description":"URL to redirect the user back to your app from the verification email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"}},"required":["url"]}}}}},"put":{"summary":"Create email verification (confirmation)","operationId":"accountUpdateVerification","tags":["account"],"description":"Use this endpoint to complete the user email verification process. Use both the **userId** and **secret** parameters that were attached to your app URL to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"updateVerification","weight":39,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/account\/verification\/phone":{"post":{"summary":"Create phone verification","operationId":"accountCreatePhoneVerification","tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updatePhone) endpoint. Learn more about how to [complete the verification process](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createPhoneVerification","weight":40,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{userId}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]},"put":{"summary":"Create phone verification (confirmation)","operationId":"accountUpdatePhoneVerification","tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"updatePhoneVerification","weight":41,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/avatars\/browsers\/{code}":{"get":{"summary":"Get browser icon","operationId":"avatarsGetBrowser","tags":["avatars"],"description":"You can use this endpoint to show different browser icons to your users. The code argument receives the browser code as it appears in your user [GET \/account\/sessions](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#getSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getBrowser","weight":54,"cookies":false,"type":"location","demo":"avatars\/get-browser.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-browser.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Browser Code.","required":true,"schema":{"type":"string","x-example":"aa","enum":["aa","an","ch","ci","cm","cr","ff","sf","mf","ps","oi","om","op","on"],"x-enum-name":"Browser","x-enum-keys":["Avant Browser","Android WebView Beta","Google Chrome","Google Chrome (iOS)","Google Chrome (Mobile)","Chromium","Mozilla Firefox","Safari","Mobile Safari","Microsoft Edge","Microsoft Edge (iOS)","Opera Mini","Opera","Opera (Next)"]},"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"}]}},"\/avatars\/credit-cards\/{code}":{"get":{"summary":"Get credit card icon","operationId":"avatarsGetCreditCard","tags":["avatars"],"description":"The credit card endpoint will return you the icon of the credit card provider you need. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getCreditCard","weight":53,"cookies":false,"type":"location","demo":"avatars\/get-credit-card.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-credit-card.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Credit Card Code. Possible values: amex, argencard, cabal, censosud, diners, discover, elo, hipercard, jcb, mastercard, naranja, targeta-shopping, union-china-pay, visa, mir, maestro.","required":true,"schema":{"type":"string","x-example":"amex","enum":["amex","argencard","cabal","censosud","diners","discover","elo","hipercard","jcb","mastercard","naranja","targeta-shopping","union-china-pay","visa","mir","maestro"],"x-enum-name":"CreditCard","x-enum-keys":["American Express","Argencard","Cabal","Consosud","Diners Club","Discover","Elo","Hipercard","JCB","Mastercard","Naranja","Tarjeta Shopping","Union China Pay","Visa","MIR","Maestro"]},"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"}]}},"\/avatars\/favicon":{"get":{"summary":"Get favicon","operationId":"avatarsGetFavicon","tags":["avatars"],"description":"Use this endpoint to fetch the favorite icon (AKA favicon) of any remote website URL.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFavicon","weight":57,"cookies":false,"type":"location","demo":"avatars\/get-favicon.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-favicon.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"url","description":"Website URL which you want to fetch the favicon from.","required":true,"schema":{"type":"string","format":"url","x-example":"https:\/\/example.com"},"in":"query"}]}},"\/avatars\/flags\/{code}":{"get":{"summary":"Get country flag","operationId":"avatarsGetFlag","tags":["avatars"],"description":"You can use this endpoint to show different country flags icons to your users. The code argument receives the 2 letter country code. Use width, height and quality arguments to change the output settings. Country codes follow the [ISO 3166-1](https:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFlag","weight":55,"cookies":false,"type":"location","demo":"avatars\/get-flag.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-flag.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Country Code. ISO Alpha-2 country code format.","required":true,"schema":{"type":"string","x-example":"af","enum":["af","ao","al","ad","ae","ar","am","ag","au","at","az","bi","be","bj","bf","bd","bg","bh","bs","ba","by","bz","bo","br","bb","bn","bt","bw","cf","ca","ch","cl","cn","ci","cm","cd","cg","co","km","cv","cr","cu","cy","cz","de","dj","dm","dk","do","dz","ec","eg","er","es","ee","et","fi","fj","fr","fm","ga","gb","ge","gh","gn","gm","gw","gq","gr","gd","gt","gy","hn","hr","ht","hu","id","in","ie","ir","iq","is","il","it","jm","jo","jp","kz","ke","kg","kh","ki","kn","kr","kw","la","lb","lr","ly","lc","li","lk","ls","lt","lu","lv","ma","mc","md","mg","mv","mx","mh","mk","ml","mt","mm","me","mn","mz","mr","mu","mw","my","na","ne","ng","ni","nl","no","np","nr","nz","om","pk","pa","pe","ph","pw","pg","pl","kp","pt","py","qa","ro","ru","rw","sa","sd","sn","sg","sb","sl","sv","sm","so","rs","ss","st","sr","sk","si","se","sz","sc","sy","td","tg","th","tj","tm","tl","to","tt","tn","tr","tv","tz","ug","ua","uy","us","uz","va","vc","ve","vn","vu","ws","ye","za","zm","zw"],"x-enum-name":"Flag","x-enum-keys":["Afghanistan","Angola","Albania","Andorra","United Arab Emirates","Argentina","Armenia","Antigua and Barbuda","Australia","Austria","Azerbaijan","Burundi","Belgium","Benin","Burkina Faso","Bangladesh","Bulgaria","Bahrain","Bahamas","Bosnia and Herzegovina","Belarus","Belize","Bolivia","Brazil","Barbados","Brunei Darussalam","Bhutan","Botswana","Central African Republic","Canada","Switzerland","Chile","China","C\u00f4te d'Ivoire","Cameroon","Democratic Republic of the Congo","Republic of the Congo","Colombia","Comoros","Cape Verde","Costa Rica","Cuba","Cyprus","Czech Republic","Germany","Djibouti","Dominica","Denmark","Dominican Republic","Algeria","Ecuador","Egypt","Eritrea","Spain","Estonia","Ethiopia","Finland","Fiji","France","Micronesia (Federated States of)","Gabon","United Kingdom","Georgia","Ghana","Guinea","Gambia","Guinea-Bissau","Equatorial Guinea","Greece","Grenada","Guatemala","Guyana","Honduras","Croatia","Haiti","Hungary","Indonesia","India","Ireland","Iran (Islamic Republic of)","Iraq","Iceland","Israel","Italy","Jamaica","Jordan","Japan","Kazakhstan","Kenya","Kyrgyzstan","Cambodia","Kiribati","Saint Kitts and Nevis","South Korea","Kuwait","Lao People's Democratic Republic","Lebanon","Liberia","Libya","Saint Lucia","Liechtenstein","Sri Lanka","Lesotho","Lithuania","Luxembourg","Latvia","Morocco","Monaco","Moldova","Madagascar","Maldives","Mexico","Marshall Islands","North Macedonia","Mali","Malta","Myanmar","Montenegro","Mongolia","Mozambique","Mauritania","Mauritius","Malawi","Malaysia","Namibia","Niger","Nigeria","Nicaragua","Netherlands","Norway","Nepal","Nauru","New Zealand","Oman","Pakistan","Panama","Peru","Philippines","Palau","Papua New Guinea","Poland","North Korea","Portugal","Paraguay","Qatar","Romania","Russia","Rwanda","Saudi Arabia","Sudan","Senegal","Singapore","Solomon Islands","Sierra Leone","El Salvador","San Marino","Somalia","Serbia","South Sudan","Sao Tome and Principe","Suriname","Slovakia","Slovenia","Sweden","Eswatini","Seychelles","Syria","Chad","Togo","Thailand","Tajikistan","Turkmenistan","Timor-Leste","Tonga","Trinidad and Tobago","Tunisia","Turkey","Tuvalu","Tanzania","Uganda","Ukraine","Uruguay","United States","Uzbekistan","Vatican City","Saint Vincent and the Grenadines","Venezuela","Vietnam","Vanuatu","Samoa","Yemen","South Africa","Zambia","Zimbabwe"]},"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"}]}},"\/avatars\/image":{"get":{"summary":"Get image from URL","operationId":"avatarsGetImage","tags":["avatars"],"description":"Use this endpoint to fetch a remote image URL and crop it to any image size you want. This endpoint is very useful if you need to crop and display remote images in your app or in case you want to make sure a 3rd party image is properly served using a TLS protocol.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getImage","weight":56,"cookies":false,"type":"location","demo":"avatars\/get-image.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-image.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"url","description":"Image URL which you want to crop.","required":true,"schema":{"type":"string","format":"url","x-example":"https:\/\/example.com"},"in":"query"},{"name":"width","description":"Resize preview image width, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get user initials","operationId":"avatarsGetInitials","tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getInitials","weight":59,"cookies":false,"type":"location","demo":"avatars\/get-initials.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-initials.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"name","description":"Full Name. When empty, current user name or email will be used. Max length: 128 chars.","required":false,"schema":{"type":"string","x-example":"[NAME]","default":""},"in":"query"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":500},"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":500},"in":"query"},{"name":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"schema":{"type":"string","default":""},"in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR code","operationId":"avatarsGetQR","tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getQR","weight":58,"cookies":false,"type":"location","demo":"avatars\/get-q-r.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-qr.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"text","description":"Plain text to be converted to QR code image.","required":true,"schema":{"type":"string","x-example":"[TEXT]"},"in":"query"},{"name":"size","description":"QR code size. Pass an integer between 1 to 1000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":1,"default":400},"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":1},"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"schema":{"type":"boolean","x-example":false,"default":false},"in":"query"}]}},"\/databases":{"get":{"summary":"List databases","operationId":"databasesList","tags":["databases"],"description":"Get a list of all databases from the current Appwrite project. You can use the search parameter to filter your results.","responses":{"200":{"description":"Databases List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/databaseList"}}}}},"x-appwrite":{"method":"list","weight":64,"cookies":false,"type":"","demo":"databases\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create database","operationId":"databasesCreate","tags":["databases"],"description":"Create a new Database.\n","responses":{"201":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"create","weight":63,"cookies":false,"type":"","demo":"databases\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"databaseId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[DATABASE_ID]"},"name":{"type":"string","description":"Database name. Max length: 128 chars.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Is the database enabled? When set to 'disabled', users cannot access the database but Server SDKs with an API key can still read and write to the database. No data is lost when this is toggled.","x-example":false}},"required":["databaseId","name"]}}}}}},"\/databases\/{databaseId}":{"get":{"summary":"Get database","operationId":"databasesGet","tags":["databases"],"description":"Get a database by its unique ID. This endpoint response returns a JSON object with the database metadata.","responses":{"200":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"get","weight":65,"cookies":false,"type":"","demo":"databases\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}]},"put":{"summary":"Update database","operationId":"databasesUpdate","tags":["databases"],"description":"Update a database by its unique ID.","responses":{"200":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"update","weight":67,"cookies":false,"type":"","demo":"databases\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Database name. Max length: 128 chars.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Is database enabled? When set to 'disabled', users cannot access the database but Server SDKs with an API key can still read and write to the database. No data is lost when this is toggled.","x-example":false}},"required":["name"]}}}}},"delete":{"summary":"Delete database","operationId":"databasesDelete","tags":["databases"],"description":"Delete a database by its unique ID. Only API keys with with databases.write scope can delete a database.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":68,"cookies":false,"type":"","demo":"databases\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections":{"get":{"summary":"List collections","operationId":"databasesListCollections","tags":["databases"],"description":"Get a list of all collections that belong to the provided databaseId. You can use the search parameter to filter your results.","responses":{"200":{"description":"Collections List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collectionList"}}}}},"x-appwrite":{"method":"listCollections","weight":70,"cookies":false,"type":"","demo":"databases\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, documentSecurity","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create collection","operationId":"databasesCreateCollection","tags":["databases"],"description":"Create a new Collection. Before using this route, you should create a new database resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"createCollection","weight":69,"cookies":false,"type":"","demo":"databases\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permissions strings. By default, no user is granted with any permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":false},"enabled":{"type":"boolean","description":"Is collection enabled? When set to 'disabled', users cannot access the collection but Server SDKs with and API key can still read and write to the collection. No data is lost when this is toggled.","x-example":false}},"required":["collectionId","name"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}":{"get":{"summary":"Get collection","operationId":"databasesGetCollection","tags":["databases"],"description":"Get a collection by its unique ID. This endpoint response returns a JSON object with the collection metadata.","responses":{"200":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"getCollection","weight":71,"cookies":false,"type":"","demo":"databases\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]},"put":{"summary":"Update collection","operationId":"databasesUpdateCollection","tags":["databases"],"description":"Update a collection by its unique ID.","responses":{"200":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"updateCollection","weight":73,"cookies":false,"type":"","demo":"databases\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":false},"enabled":{"type":"boolean","description":"Is collection enabled? When set to 'disabled', users cannot access the collection but Server SDKs with and API key can still read and write to the collection. No data is lost when this is toggled.","x-example":false}},"required":["name"]}}}}},"delete":{"summary":"Delete collection","operationId":"databasesDeleteCollection","tags":["databases"],"description":"Delete a collection by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteCollection","weight":74,"cookies":false,"type":"","demo":"databases\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes":{"get":{"summary":"List attributes","operationId":"databasesListAttributes","tags":["databases"],"description":"","responses":{"200":{"description":"Attributes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeList"}}}}},"x-appwrite":{"method":"listAttributes","weight":85,"cookies":false,"type":"","demo":"databases\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: key, type, size, required, array, status, error","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create boolean attribute","operationId":"databasesCreateBooleanAttribute","tags":["databases"],"description":"Create a boolean attribute.\n","responses":{"202":{"description":"AttributeBoolean","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeBoolean"}}}}},"x-appwrite":{"method":"createBooleanAttribute","weight":82,"cookies":false,"type":"","demo":"databases\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":false},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean\/{key}":{"patch":{"summary":"Update boolean attribute","operationId":"databasesUpdateBooleanAttribute","tags":["databases"],"description":"","responses":{"200":{"description":"AttributeBoolean","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeBoolean"}}}}},"x-appwrite":{"method":"updateBooleanAttribute","weight":94,"cookies":false,"type":"","demo":"databases\/update-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":false,"x-nullable":true}},"required":["required","default"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/datetime":{"post":{"summary":"Create datetime attribute","operationId":"databasesCreateDatetimeAttribute","tags":["databases"],"description":"","responses":{"202":{"description":"AttributeDatetime","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeDatetime"}}}}},"x-appwrite":{"method":"createDatetimeAttribute","weight":83,"cookies":false,"type":"","demo":"databases\/create-datetime-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-datetime-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for the attribute in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/datetime\/{key}":{"patch":{"summary":"Update dateTime attribute","operationId":"databasesUpdateDatetimeAttribute","tags":["databases"],"description":"","responses":{"200":{"description":"AttributeDatetime","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeDatetime"}}}}},"x-appwrite":{"method":"updateDatetimeAttribute","weight":95,"cookies":false,"type":"","demo":"databases\/update-datetime-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-datetime-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null,"x-nullable":true}},"required":["required","default"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create email attribute","operationId":"databasesCreateEmailAttribute","tags":["databases"],"description":"Create an email attribute.\n","responses":{"202":{"description":"AttributeEmail","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeEmail"}}}}},"x-appwrite":{"method":"createEmailAttribute","weight":76,"cookies":false,"type":"","demo":"databases\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"email@example.com"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/email\/{key}":{"patch":{"summary":"Update email attribute","operationId":"databasesUpdateEmailAttribute","tags":["databases"],"description":"Update an email attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeEmail","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeEmail"}}}}},"x-appwrite":{"method":"updateEmailAttribute","weight":88,"cookies":false,"type":"","demo":"databases\/update-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"email@example.com","x-nullable":true}},"required":["required","default"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create enum attribute","operationId":"databasesCreateEnumAttribute","tags":["databases"],"description":"","responses":{"202":{"description":"AttributeEnum","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeEnum"}}}}},"x-appwrite":{"method":"createEnumAttribute","weight":77,"cookies":false,"type":"","demo":"databases\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"elements":{"type":"array","description":"Array of elements in enumerated type. Uses length of longest element to determine size. Maximum of 100 elements are allowed, each 255 characters long.","x-example":null,"items":{"type":"string"}},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","elements","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/enum\/{key}":{"patch":{"summary":"Update enum attribute","operationId":"databasesUpdateEnumAttribute","tags":["databases"],"description":"Update an enum attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeEnum","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeEnum"}}}}},"x-appwrite":{"method":"updateEnumAttribute","weight":89,"cookies":false,"type":"","demo":"databases\/update-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-enum-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"elements":{"type":"array","description":"Array of elements in enumerated type. Uses length of longest element to determine size. Maximum of 100 elements are allowed, each 255 characters long.","x-example":null,"items":{"type":"string"}},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"[DEFAULT]","x-nullable":true}},"required":["elements","required","default"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create float attribute","operationId":"databasesCreateFloatAttribute","tags":["databases"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeFloat","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeFloat"}}}}},"x-appwrite":{"method":"createFloatAttribute","weight":81,"cookies":false,"type":"","demo":"databases\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"min":{"type":"number","description":"Minimum value to enforce on new documents","x-example":null},"max":{"type":"number","description":"Maximum value to enforce on new documents","x-example":null},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/float\/{key}":{"patch":{"summary":"Update float attribute","operationId":"databasesUpdateFloatAttribute","tags":["databases"],"description":"Update a float attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeFloat","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeFloat"}}}}},"x-appwrite":{"method":"updateFloatAttribute","weight":93,"cookies":false,"type":"","demo":"databases\/update-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"min":{"type":"number","description":"Minimum value to enforce on new documents","x-example":null},"max":{"type":"number","description":"Maximum value to enforce on new documents","x-example":null},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null,"x-nullable":true}},"required":["required","min","max","default"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create integer attribute","operationId":"databasesCreateIntegerAttribute","tags":["databases"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeInteger","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeInteger"}}}}},"x-appwrite":{"method":"createIntegerAttribute","weight":80,"cookies":false,"type":"","demo":"databases\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"min":{"type":"integer","description":"Minimum value to enforce on new documents","x-example":null},"max":{"type":"integer","description":"Maximum value to enforce on new documents","x-example":null},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/integer\/{key}":{"patch":{"summary":"Update integer attribute","operationId":"databasesUpdateIntegerAttribute","tags":["databases"],"description":"Update an integer attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeInteger","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeInteger"}}}}},"x-appwrite":{"method":"updateIntegerAttribute","weight":92,"cookies":false,"type":"","demo":"databases\/update-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"min":{"type":"integer","description":"Minimum value to enforce on new documents","x-example":null},"max":{"type":"integer","description":"Maximum value to enforce on new documents","x-example":null},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null,"x-nullable":true}},"required":["required","min","max","default"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP address attribute","operationId":"databasesCreateIpAttribute","tags":["databases"],"description":"Create IP address attribute.\n","responses":{"202":{"description":"AttributeIP","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeIp"}}}}},"x-appwrite":{"method":"createIpAttribute","weight":78,"cookies":false,"type":"","demo":"databases\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/ip\/{key}":{"patch":{"summary":"Update IP address attribute","operationId":"databasesUpdateIpAttribute","tags":["databases"],"description":"Update an ip attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeIP","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeIp"}}}}},"x-appwrite":{"method":"updateIpAttribute","weight":90,"cookies":false,"type":"","demo":"databases\/update-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null,"x-nullable":true}},"required":["required","default"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/relationship":{"post":{"summary":"Create relationship attribute","operationId":"databasesCreateRelationshipAttribute","tags":["databases"],"description":"Create relationship attribute. [Learn more about relationship attributes](https:\/\/appwrite.io\/docs\/databases-relationships#relationship-attributes).\n","responses":{"202":{"description":"AttributeRelationship","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeRelationship"}}}}},"x-appwrite":{"method":"createRelationshipAttribute","weight":84,"cookies":false,"type":"","demo":"databases\/create-relationship-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-relationship-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"relatedCollectionId":{"type":"string","description":"Related Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","x-example":"[RELATED_COLLECTION_ID]"},"type":{"type":"string","description":"Relation type","x-example":"oneToOne","enum":["oneToOne","manyToOne","manyToMany","oneToMany"],"x-enum-name":"RelationshipType","x-enum-keys":[]},"twoWay":{"type":"boolean","description":"Is Two Way?","x-example":false},"key":{"type":"string","description":"Attribute Key.","x-example":null},"twoWayKey":{"type":"string","description":"Two Way Attribute Key.","x-example":null},"onDelete":{"type":"string","description":"Constraints option","x-example":"cascade","enum":["cascade","restrict","setNull"],"x-enum-name":"RelationMutate","x-enum-keys":[]}},"required":["relatedCollectionId","type"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create string attribute","operationId":"databasesCreateStringAttribute","tags":["databases"],"description":"Create a string attribute.\n","responses":{"202":{"description":"AttributeString","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeString"}}}}},"x-appwrite":{"method":"createStringAttribute","weight":75,"cookies":false,"type":"","demo":"databases\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"size":{"type":"integer","description":"Attribute size for text attributes, in number of characters.","x-example":1},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false},"encrypt":{"type":"boolean","description":"Toggle encryption for the attribute. Encryption enhances security by not storing any plain text values in the database. However, encrypted attributes cannot be queried.","x-example":false}},"required":["key","size","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/string\/{key}":{"patch":{"summary":"Update string attribute","operationId":"databasesUpdateStringAttribute","tags":["databases"],"description":"Update a string attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeString","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeString"}}}}},"x-appwrite":{"method":"updateStringAttribute","weight":87,"cookies":false,"type":"","demo":"databases\/update-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"[DEFAULT]","x-nullable":true}},"required":["required","default"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL attribute","operationId":"databasesCreateUrlAttribute","tags":["databases"],"description":"Create a URL attribute.\n","responses":{"202":{"description":"AttributeURL","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeUrl"}}}}},"x-appwrite":{"method":"createUrlAttribute","weight":79,"cookies":false,"type":"","demo":"databases\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"https:\/\/example.com"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url\/{key}":{"patch":{"summary":"Update URL attribute","operationId":"databasesUpdateUrlAttribute","tags":["databases"],"description":"Update an url attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeURL","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeUrl"}}}}},"x-appwrite":{"method":"updateUrlAttribute","weight":91,"cookies":false,"type":"","demo":"databases\/update-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"https:\/\/example.com","x-nullable":true}},"required":["required","default"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get attribute","operationId":"databasesGetAttribute","tags":["databases"],"description":"","responses":{"200":{"description":"AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, or AttributeDatetime, or AttributeRelationship, or AttributeString","content":{"application\/json":{"schema":{"oneOf":[{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeRelationship"},{"$ref":"#\/components\/schemas\/attributeString"}]}}}}},"x-appwrite":{"method":"getAttribute","weight":86,"cookies":false,"type":"","demo":"databases\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}]},"delete":{"summary":"Delete attribute","operationId":"databasesDeleteAttribute","tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":97,"cookies":false,"type":"","demo":"databases\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/{key}\/relationship":{"patch":{"summary":"Update relationship attribute","operationId":"databasesUpdateRelationshipAttribute","tags":["databases"],"description":"Update relationship attribute. [Learn more about relationship attributes](https:\/\/appwrite.io\/docs\/databases-relationships#relationship-attributes).\n","responses":{"200":{"description":"AttributeRelationship","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeRelationship"}}}}},"x-appwrite":{"method":"updateRelationshipAttribute","weight":96,"cookies":false,"type":"","demo":"databases\/update-relationship-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-relationship-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"onDelete":{"type":"string","description":"Constraints option","x-example":"cascade","enum":["cascade","restrict","setNull"],"x-enum-name":"RelationMutate","x-enum-keys":[]}}}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List documents","operationId":"databasesListDocuments","tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/documentList"}}}}},"x-appwrite":{"method":"listDocuments","weight":103,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"post":{"summary":"Create document","operationId":"databasesCreateDocument","tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"createDocument","weight":102,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, only the current user is granted all permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get document","operationId":"databasesGetDocument","tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"getDocument","weight":104,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"patch":{"summary":"Update document","operationId":"databasesUpdateDocument","tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"updateDocument","weight":106,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete document","operationId":"databasesDeleteDocument","tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":107,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes":{"get":{"summary":"List indexes","operationId":"databasesListIndexes","tags":["databases"],"description":"","responses":{"200":{"description":"Indexes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/indexList"}}}}},"x-appwrite":{"method":"listIndexes","weight":99,"cookies":false,"type":"","demo":"databases\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: key, type, status, attributes, error","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"post":{"summary":"Create index","operationId":"databasesCreateIndex","tags":["databases"],"description":"","responses":{"202":{"description":"Index","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/index"}}}}},"x-appwrite":{"method":"createIndex","weight":98,"cookies":false,"type":"","demo":"databases\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Index Key.","x-example":null},"type":{"type":"string","description":"Index type.","x-example":"key","enum":["key","fulltext","unique","spatial"],"x-enum-name":"IndexType","x-enum-keys":[]},"attributes":{"type":"array","description":"Array of attributes to index. Maximum of 100 attributes are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders. Maximum of 100 orders are allowed.","x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get index","operationId":"databasesGetIndex","tags":["databases"],"description":"","responses":{"200":{"description":"Index","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/index"}}}}},"x-appwrite":{"method":"getIndex","weight":100,"cookies":false,"type":"","demo":"databases\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Index Key.","required":true,"schema":{"type":"string"},"in":"path"}]},"delete":{"summary":"Delete index","operationId":"databasesDeleteIndex","tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":101,"cookies":false,"type":"","demo":"databases\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Index Key.","required":true,"schema":{"type":"string"},"in":"path"}]}},"\/functions":{"get":{"summary":"List functions","operationId":"functionsList","tags":["functions"],"description":"Get a list of all the project's functions. You can use the query params to filter your results.","responses":{"200":{"description":"Functions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/functionList"}}}}},"x-appwrite":{"method":"list","weight":266,"cookies":false,"type":"","demo":"functions\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-functions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, runtime, deployment, schedule, scheduleNext, schedulePrevious, timeout, entrypoint, commands, installationId","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create function","operationId":"functionsCreate","tags":["functions"],"description":"Create a new function. You can pass a list of [permissions](https:\/\/appwrite.io\/docs\/permissions) to allow different project users or team with access to execute the function using the client API.","responses":{"201":{"description":"Function","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/function"}}}}},"x-appwrite":{"method":"create","weight":265,"cookies":false,"type":"","demo":"functions\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"functionId":{"type":"string","description":"Function ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[FUNCTION_ID]"},"name":{"type":"string","description":"Function name. Max length: 128 chars.","x-example":"[NAME]"},"runtime":{"type":"string","description":"Execution runtime.","x-example":"node-18.0","enum":["node-18.0","php-8.0","ruby-3.1","python-3.9"],"x-enum-name":null,"x-enum-keys":[]},"execute":{"type":"array","description":"An array of role strings with execution permissions. By default no user is granted with any execute permissions. [learn more about roles](https:\/\/appwrite.io\/docs\/permissions#permission-roles). Maximum of 100 roles are allowed, each 64 characters long.","x-example":"[\"any\"]","items":{"type":"string"}},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","x-example":null},"timeout":{"type":"integer","description":"Function maximum execution time in seconds.","x-example":1},"enabled":{"type":"boolean","description":"Is function enabled? When set to 'disabled', users cannot access the function but Server SDKs with and API key can still access the function. No data is lost when this is toggled.","x-example":false},"logging":{"type":"boolean","description":"Whether executions will be logged. When set to false, executions will not be logged, but will reduce resource used by your Appwrite project.","x-example":false},"entrypoint":{"type":"string","description":"Entrypoint File. This path is relative to the \"providerRootDirectory\".","x-example":"[ENTRYPOINT]"},"commands":{"type":"string","description":"Build Commands.","x-example":"[COMMANDS]"},"installationId":{"type":"string","description":"Appwrite Installation ID for VCS (Version Control System) deployment.","x-example":"[INSTALLATION_ID]"},"providerRepositoryId":{"type":"string","description":"Repository ID of the repo linked to the function.","x-example":"[PROVIDER_REPOSITORY_ID]"},"providerBranch":{"type":"string","description":"Production branch for the repo linked to the function.","x-example":"[PROVIDER_BRANCH]"},"providerSilentMode":{"type":"boolean","description":"Is the VCS (Version Control System) connection in silent mode for the repo linked to the function? In silent mode, comments will not be made on commits and pull requests.","x-example":false},"providerRootDirectory":{"type":"string","description":"Path to function code in the linked repo.","x-example":"[PROVIDER_ROOT_DIRECTORY]"},"templateRepository":{"type":"string","description":"Repository name of the template.","x-example":"[TEMPLATE_REPOSITORY]"},"templateOwner":{"type":"string","description":"The name of the owner of the template.","x-example":"[TEMPLATE_OWNER]"},"templateRootDirectory":{"type":"string","description":"Path to function code in the template repo.","x-example":"[TEMPLATE_ROOT_DIRECTORY]"},"templateBranch":{"type":"string","description":"Production branch for the repo linked to the function template.","x-example":"[TEMPLATE_BRANCH]"}},"required":["functionId","name","runtime"]}}}}}},"\/functions\/runtimes":{"get":{"summary":"List runtimes","operationId":"functionsListRuntimes","tags":["functions"],"description":"Get a list of all runtimes that are currently active on your instance.","responses":{"200":{"description":"Runtimes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/runtimeList"}}}}},"x-appwrite":{"method":"listRuntimes","weight":267,"cookies":false,"type":"","demo":"functions\/list-runtimes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-runtimes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/functions\/{functionId}":{"get":{"summary":"Get function","operationId":"functionsGet","tags":["functions"],"description":"Get a function by its unique ID.","responses":{"200":{"description":"Function","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/function"}}}}},"x-appwrite":{"method":"get","weight":268,"cookies":false,"type":"","demo":"functions\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}]},"put":{"summary":"Update function","operationId":"functionsUpdate","tags":["functions"],"description":"Update function by its unique ID.","responses":{"200":{"description":"Function","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/function"}}}}},"x-appwrite":{"method":"update","weight":271,"cookies":false,"type":"","demo":"functions\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Function name. Max length: 128 chars.","x-example":"[NAME]"},"runtime":{"type":"string","description":"Execution runtime.","x-example":"node-18.0","enum":["node-18.0","php-8.0","ruby-3.1","python-3.9"],"x-enum-name":null,"x-enum-keys":[]},"execute":{"type":"array","description":"An array of role strings with execution permissions. By default no user is granted with any execute permissions. [learn more about roles](https:\/\/appwrite.io\/docs\/permissions#permission-roles). Maximum of 100 roles are allowed, each 64 characters long.","x-example":"[\"any\"]","items":{"type":"string"}},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","x-example":null},"timeout":{"type":"integer","description":"Maximum execution time in seconds.","x-example":1},"enabled":{"type":"boolean","description":"Is function enabled? When set to 'disabled', users cannot access the function but Server SDKs with and API key can still access the function. No data is lost when this is toggled.","x-example":false},"logging":{"type":"boolean","description":"Whether executions will be logged. When set to false, executions will not be logged, but will reduce resource used by your Appwrite project.","x-example":false},"entrypoint":{"type":"string","description":"Entrypoint File. This path is relative to the \"providerRootDirectory\".","x-example":"[ENTRYPOINT]"},"commands":{"type":"string","description":"Build Commands.","x-example":"[COMMANDS]"},"installationId":{"type":"string","description":"Appwrite Installation ID for VCS (Version Controle System) deployment.","x-example":"[INSTALLATION_ID]"},"providerRepositoryId":{"type":"string","description":"Repository ID of the repo linked to the function","x-example":"[PROVIDER_REPOSITORY_ID]"},"providerBranch":{"type":"string","description":"Production branch for the repo linked to the function","x-example":"[PROVIDER_BRANCH]"},"providerSilentMode":{"type":"boolean","description":"Is the VCS (Version Control System) connection in silent mode for the repo linked to the function? In silent mode, comments will not be made on commits and pull requests.","x-example":false},"providerRootDirectory":{"type":"string","description":"Path to function code in the linked repo.","x-example":"[PROVIDER_ROOT_DIRECTORY]"}},"required":["name"]}}}}},"delete":{"summary":"Delete function","operationId":"functionsDelete","tags":["functions"],"description":"Delete a function by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":274,"cookies":false,"type":"","demo":"functions\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/deployments":{"get":{"summary":"List deployments","operationId":"functionsListDeployments","tags":["functions"],"description":"Get a list of all the project's code deployments. You can use the query params to filter your results.","responses":{"200":{"description":"Deployments List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deploymentList"}}}}},"x-appwrite":{"method":"listDeployments","weight":276,"cookies":false,"type":"","demo":"functions\/list-deployments.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-deployments.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: size, buildId, activate, entrypoint, commands","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create deployment","operationId":"functionsCreateDeployment","tags":["functions"],"description":"Create a new function code deployment. Use this endpoint to upload a new version of your code function. To execute your newly uploaded code, you'll need to update the function's deployment to use your new deployment UID.\n\nThis endpoint accepts a tar.gz file compressed with your code. Make sure to include any dependencies your code has within the compressed file. You can learn more about code packaging in the [Appwrite Cloud Functions tutorial](https:\/\/appwrite.io\/docs\/functions).\n\nUse the \"command\" param to set the entrypoint used to execute your code.","responses":{"202":{"description":"Deployment","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deployment"}}}}},"x-appwrite":{"method":"createDeployment","weight":275,"cookies":false,"type":"","demo":"functions\/create-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":true,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}],"requestBody":{"content":{"multipart\/form-data":{"schema":{"type":"object","properties":{"entrypoint":{"type":"string","description":"Entrypoint File.","x-example":"[ENTRYPOINT]"},"commands":{"type":"string","description":"Build Commands.","x-example":"[COMMANDS]"},"code":{"type":"string","description":"Gzip file with your code package. When used with the Appwrite CLI, pass the path to your code directory, and the CLI will automatically package your code. Use a path that is within the current directory.","x-example":null},"activate":{"type":"boolean","description":"Automatically activate the deployment when it is finished building.","x-example":false}},"required":["code","activate"]}}}}}},"\/functions\/{functionId}\/deployments\/{deploymentId}":{"get":{"summary":"Get deployment","operationId":"functionsGetDeployment","tags":["functions"],"description":"Get a code deployment by its unique ID.","responses":{"200":{"description":"Deployment","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deployment"}}}}},"x-appwrite":{"method":"getDeployment","weight":277,"cookies":false,"type":"","demo":"functions\/get-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"schema":{"type":"string","x-example":"[DEPLOYMENT_ID]"},"in":"path"}]},"patch":{"summary":"Update function deployment","operationId":"functionsUpdateDeployment","tags":["functions"],"description":"Update the function code deployment ID using the unique function ID. Use this endpoint to switch the code deployment that should be executed by the execution endpoint.","responses":{"200":{"description":"Function","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/function"}}}}},"x-appwrite":{"method":"updateDeployment","weight":273,"cookies":false,"type":"","demo":"functions\/update-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-function-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"schema":{"type":"string","x-example":"[DEPLOYMENT_ID]"},"in":"path"}]},"delete":{"summary":"Delete deployment","operationId":"functionsDeleteDeployment","tags":["functions"],"description":"Delete a code deployment by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDeployment","weight":278,"cookies":false,"type":"","demo":"functions\/delete-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"schema":{"type":"string","x-example":"[DEPLOYMENT_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/deployments\/{deploymentId}\/builds\/{buildId}":{"post":{"summary":"Create build","operationId":"functionsCreateBuild","tags":["functions"],"description":"Create a new build for an Appwrite Function deployment. This endpoint can be used to retry a failed build.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"createBuild","weight":279,"cookies":false,"type":"","demo":"functions\/create-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"schema":{"type":"string","x-example":"[DEPLOYMENT_ID]"},"in":"path"},{"name":"buildId","description":"Build unique ID.","required":true,"schema":{"type":"string","x-example":"[BUILD_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/deployments\/{deploymentId}\/download":{"get":{"summary":"Download Deployment","operationId":"functionsDownloadDeployment","tags":["functions"],"description":"Get a Deployment's contents by its unique ID. This endpoint supports range requests for partial or streaming file download.","responses":{"200":{"description":"File"}},"x-appwrite":{"method":"downloadDeployment","weight":272,"cookies":false,"type":"location","demo":"functions\/download-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/download-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"schema":{"type":"string","x-example":"[DEPLOYMENT_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List executions","operationId":"functionsListExecutions","tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/executionList"}}}}},"x-appwrite":{"method":"listExecutions","weight":281,"cookies":false,"type":"","demo":"functions\/list-executions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-executions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, responseStatusCode, duration","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create execution","operationId":"functionsCreateExecution","tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/execution"}}}}},"x-appwrite":{"method":"createExecution","weight":280,"cookies":false,"type":"","demo":"functions\/create-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-execution.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"body":{"type":"string","description":"HTTP body of execution. Default value is empty string.","x-example":"[BODY]"},"async":{"type":"boolean","description":"Execute code in the background. Default value is false.","x-example":false},"path":{"type":"string","description":"HTTP path of execution. Path can include query params. Default value is \/","x-example":"[PATH]"},"method":{"type":"string","description":"HTTP method of execution. Default value is GET.","x-example":"GET","enum":["GET","POST","PUT","PATCH","DELETE","OPTIONS"],"x-enum-name":"ExecutionMethod","x-enum-keys":[]},"headers":{"type":"object","description":"HTTP headers of execution. Defaults to empty.","x-example":"{}"}}}}}}}},"\/functions\/{functionId}\/executions\/{executionId}":{"get":{"summary":"Get execution","operationId":"functionsGetExecution","tags":["functions"],"description":"Get a function execution log by its unique ID.","responses":{"200":{"description":"Execution","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/execution"}}}}},"x-appwrite":{"method":"getExecution","weight":282,"cookies":false,"type":"","demo":"functions\/get-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-execution.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"executionId","description":"Execution ID.","required":true,"schema":{"type":"string","x-example":"[EXECUTION_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/variables":{"get":{"summary":"List variables","operationId":"functionsListVariables","tags":["functions"],"description":"Get a list of all variables of a specific function.","responses":{"200":{"description":"Variables List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variableList"}}}}},"x-appwrite":{"method":"listVariables","weight":284,"cookies":false,"type":"","demo":"functions\/list-variables.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-variables.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}]},"post":{"summary":"Create variable","operationId":"functionsCreateVariable","tags":["functions"],"description":"Create a new function environment variable. These variables can be accessed in the function at runtime as environment variables.","responses":{"201":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"createVariable","weight":283,"cookies":false,"type":"","demo":"functions\/create-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","x-example":"[VALUE]"}},"required":["key","value"]}}}}}},"\/functions\/{functionId}\/variables\/{variableId}":{"get":{"summary":"Get variable","operationId":"functionsGetVariable","tags":["functions"],"description":"Get a variable by its unique ID.","responses":{"200":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"getVariable","weight":285,"cookies":false,"type":"","demo":"functions\/get-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}]},"put":{"summary":"Update variable","operationId":"functionsUpdateVariable","tags":["functions"],"description":"Update variable by its unique ID.","responses":{"200":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"updateVariable","weight":286,"cookies":false,"type":"","demo":"functions\/update-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","x-example":"[VALUE]"}},"required":["key"]}}}}},"delete":{"summary":"Delete variable","operationId":"functionsDeleteVariable","tags":["functions"],"description":"Delete a variable by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteVariable","weight":287,"cookies":false,"type":"","demo":"functions\/delete-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}]}},"\/graphql":{"post":{"summary":"GraphQL endpoint","operationId":"graphqlQuery","tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/any"}}}}},"x-appwrite":{"method":"query","weight":302,"cookies":false,"type":"graphql","demo":"graphql\/query.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"Session":[],"JWT":[]}]}},"\/graphql\/mutation":{"post":{"summary":"GraphQL endpoint","operationId":"graphqlMutation","tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/any"}}}}},"x-appwrite":{"method":"mutation","weight":301,"cookies":false,"type":"graphql","demo":"graphql\/mutation.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"Session":[],"JWT":[]}]}},"\/health":{"get":{"summary":"Get HTTP","operationId":"healthGet","tags":["health"],"description":"Check the Appwrite HTTP server is up and responsive.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"get","weight":119,"cookies":false,"type":"","demo":"health\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/anti-virus":{"get":{"summary":"Get antivirus","operationId":"healthGetAntivirus","tags":["health"],"description":"Check the Appwrite Antivirus server is up and connection is successful.","responses":{"200":{"description":"Health Antivirus","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthAntivirus"}}}}},"x-appwrite":{"method":"getAntivirus","weight":137,"cookies":false,"type":"","demo":"health\/get-antivirus.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-storage-anti-virus.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/cache":{"get":{"summary":"Get cache","operationId":"healthGetCache","tags":["health"],"description":"Check the Appwrite in-memory cache servers are up and connection is successful.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"getCache","weight":122,"cookies":false,"type":"","demo":"health\/get-cache.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-cache.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/db":{"get":{"summary":"Get DB","operationId":"healthGetDB","tags":["health"],"description":"Check the Appwrite database servers are up and connection is successful.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"getDB","weight":121,"cookies":false,"type":"","demo":"health\/get-d-b.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-db.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/pubsub":{"get":{"summary":"Get pubsub","operationId":"healthGetPubSub","tags":["health"],"description":"Check the Appwrite pub-sub servers are up and connection is successful.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"getPubSub","weight":124,"cookies":false,"type":"","demo":"health\/get-pub-sub.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-pubsub.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/queue":{"get":{"summary":"Get queue","operationId":"healthGetQueue","tags":["health"],"description":"Check the Appwrite queue messaging servers are up and connection is successful.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"getQueue","weight":123,"cookies":false,"type":"","demo":"health\/get-queue.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/queue\/builds":{"get":{"summary":"Get builds queue","operationId":"healthGetQueueBuilds","tags":["health"],"description":"Get the number of builds that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueBuilds","weight":129,"cookies":false,"type":"","demo":"health\/get-queue-builds.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-builds.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/certificates":{"get":{"summary":"Get certificates queue","operationId":"healthGetQueueCertificates","tags":["health"],"description":"Get the number of certificates that are waiting to be issued against [Letsencrypt](https:\/\/letsencrypt.org\/) in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueCertificates","weight":128,"cookies":false,"type":"","demo":"health\/get-queue-certificates.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-certificates.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/databases":{"get":{"summary":"Get databases queue","operationId":"healthGetQueueDatabases","tags":["health"],"description":"Get the number of database changes that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueDatabases","weight":130,"cookies":false,"type":"","demo":"health\/get-queue-databases.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-databases.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"name","description":"Queue name for which to check the queue size","required":false,"schema":{"type":"string","x-example":"[NAME]","default":"database_db_main"},"in":"query"},{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/deletes":{"get":{"summary":"Get deletes queue","operationId":"healthGetQueueDeletes","tags":["health"],"description":"Get the number of background destructive changes that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueDeletes","weight":131,"cookies":false,"type":"","demo":"health\/get-queue-deletes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-deletes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/functions":{"get":{"summary":"Get functions queue","operationId":"healthGetQueueFunctions","tags":["health"],"description":"","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueFunctions","weight":135,"cookies":false,"type":"","demo":"health\/get-queue-functions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-functions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/logs":{"get":{"summary":"Get logs queue","operationId":"healthGetQueueLogs","tags":["health"],"description":"Get the number of logs that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueLogs","weight":127,"cookies":false,"type":"","demo":"health\/get-queue-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/mails":{"get":{"summary":"Get mails queue","operationId":"healthGetQueueMails","tags":["health"],"description":"Get the number of mails that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueMails","weight":132,"cookies":false,"type":"","demo":"health\/get-queue-mails.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-mails.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/messaging":{"get":{"summary":"Get messaging queue","operationId":"healthGetQueueMessaging","tags":["health"],"description":"Get the number of messages that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueMessaging","weight":133,"cookies":false,"type":"","demo":"health\/get-queue-messaging.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-messaging.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/migrations":{"get":{"summary":"Get migrations queue","operationId":"healthGetQueueMigrations","tags":["health"],"description":"Get the number of migrations that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueMigrations","weight":134,"cookies":false,"type":"","demo":"health\/get-queue-migrations.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-migrations.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/webhooks":{"get":{"summary":"Get webhooks queue","operationId":"healthGetQueueWebhooks","tags":["health"],"description":"Get the number of webhooks that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueWebhooks","weight":126,"cookies":false,"type":"","demo":"health\/get-queue-webhooks.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-webhooks.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/storage\/local":{"get":{"summary":"Get local storage","operationId":"healthGetStorageLocal","tags":["health"],"description":"Check the Appwrite local storage device is up and connection is successful.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"getStorageLocal","weight":136,"cookies":false,"type":"","demo":"health\/get-storage-local.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-storage-local.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/time":{"get":{"summary":"Get time","operationId":"healthGetTime","tags":["health"],"description":"Check the Appwrite server time is synced with Google remote NTP server. We use this technology to smoothly handle leap seconds with no disruptive events. The [Network Time Protocol](https:\/\/en.wikipedia.org\/wiki\/Network_Time_Protocol) (NTP) is used by hundreds of millions of computers and devices to synchronize their clocks over the Internet. If your computer sets its own clock, it likely uses NTP.","responses":{"200":{"description":"Health Time","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthTime"}}}}},"x-appwrite":{"method":"getTime","weight":125,"cookies":false,"type":"","demo":"health\/get-time.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-time.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/locale":{"get":{"summary":"Get user locale","operationId":"localeGet","tags":["locale"],"description":"Get the current user location based on IP. Returns an object with user country code, country name, continent name, continent code, ip address and suggested currency. You can use the locale header to get the data in a supported language.\n\n([IP Geolocation by DB-IP](https:\/\/db-ip.com))","responses":{"200":{"description":"Locale","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/locale"}}}}},"x-appwrite":{"method":"get","weight":111,"cookies":false,"type":"","demo":"locale\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-locale.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/localed","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}]}},"\/locale\/codes":{"get":{"summary":"List Locale Codes","operationId":"localeListCodes","tags":["locale"],"description":"List of all locale codes in [ISO 639-1](https:\/\/en.wikipedia.org\/wiki\/List_of_ISO_639-1_codes).","responses":{"200":{"description":"Locale codes list","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/localeCodeList"}}}}},"x-appwrite":{"method":"listCodes","weight":112,"cookies":false,"type":"","demo":"locale\/list-codes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-locale-codes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/localeCode","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}]}},"\/locale\/continents":{"get":{"summary":"List continents","operationId":"localeListContinents","tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/continentList"}}}}},"x-appwrite":{"method":"listContinents","weight":116,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/continents","offline-key":"","offline-response-key":"code","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List countries","operationId":"localeListCountries","tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountries","weight":113,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/countries","offline-key":"","offline-response-key":"code","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU countries","operationId":"localeListCountriesEU","tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountriesEU","weight":114,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/countries\/eu","offline-key":"","offline-response-key":"code","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List countries phone codes","operationId":"localeListCountriesPhones","tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/phoneList"}}}}},"x-appwrite":{"method":"listCountriesPhones","weight":115,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/countries\/phones","offline-key":"","offline-response-key":"countryCode","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List currencies","operationId":"localeListCurrencies","tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/currencyList"}}}}},"x-appwrite":{"method":"listCurrencies","weight":117,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/currencies","offline-key":"","offline-response-key":"code","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List languages","operationId":"localeListLanguages","tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/languageList"}}}}},"x-appwrite":{"method":"listLanguages","weight":118,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/languages","offline-key":"","offline-response-key":"code","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}]}},"\/messaging\/messages":{"get":{"summary":"List messages","operationId":"messagingListMessages","tags":["messaging"],"description":"","responses":{"200":{"description":"Message list","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/messageList"}}}}},"x-appwrite":{"method":"listMessages","weight":361,"cookies":false,"type":"","demo":"messaging\/list-messages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-messages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: scheduledAt, deliveredAt, deliveredTotal, status, description, providerType","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]}},"\/messaging\/messages\/email":{"post":{"summary":"Create an email.","operationId":"messagingCreateEmail","tags":["messaging"],"description":"","responses":{"201":{"description":"Message","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/message"}}}}},"x-appwrite":{"method":"createEmail","weight":358,"cookies":false,"type":"","demo":"messaging\/create-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"messageId":{"type":"string","description":"Message ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[MESSAGE_ID]"},"subject":{"type":"string","description":"Email Subject.","x-example":"[SUBJECT]"},"content":{"type":"string","description":"Email Content.","x-example":"[CONTENT]"},"topics":{"type":"array","description":"List of Topic IDs.","x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","x-example":null,"items":{"type":"string"}},"cc":{"type":"array","description":"Array of target IDs to be added as CC.","x-example":null,"items":{"type":"string"}},"bcc":{"type":"array","description":"Array of target IDs to be added as BCC.","x-example":null,"items":{"type":"string"}},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":"MessageStatus","x-enum-keys":[]},"html":{"type":"boolean","description":"Is content of type HTML","x-example":false},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","x-example":null}},"required":["messageId","subject","content"]}}}}}},"\/messaging\/messages\/email\/{messageId}":{"patch":{"summary":"Update an email.","operationId":"messagingUpdateEmail","tags":["messaging"],"description":"","responses":{"200":{"description":"Message","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/message"}}}}},"x-appwrite":{"method":"updateEmail","weight":365,"cookies":false,"type":"","demo":"messaging\/update-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"schema":{"type":"string","x-example":"[MESSAGE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"topics":{"type":"array","description":"List of Topic IDs.","x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","x-example":null,"items":{"type":"string"}},"subject":{"type":"string","description":"Email Subject.","x-example":"[SUBJECT]"},"content":{"type":"string","description":"Email Content.","x-example":"[CONTENT]"},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":"MessageStatus","x-enum-keys":[]},"html":{"type":"boolean","description":"Is content of type HTML","x-example":false},"cc":{"type":"array","description":"Array of target IDs to be added as CC.","x-example":null,"items":{"type":"string"}},"bcc":{"type":"array","description":"Array of target IDs to be added as BCC.","x-example":null,"items":{"type":"string"}},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","x-example":null}}}}}}}},"\/messaging\/messages\/push":{"post":{"summary":"Create a push notification.","operationId":"messagingCreatePush","tags":["messaging"],"description":"","responses":{"201":{"description":"Message","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/message"}}}}},"x-appwrite":{"method":"createPush","weight":360,"cookies":false,"type":"","demo":"messaging\/create-push.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-push-notification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"messageId":{"type":"string","description":"Message ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[MESSAGE_ID]"},"title":{"type":"string","description":"Title for push notification.","x-example":"[TITLE]"},"body":{"type":"string","description":"Body for push notification.","x-example":"[BODY]"},"topics":{"type":"array","description":"List of Topic IDs.","x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","x-example":null,"items":{"type":"string"}},"data":{"type":"object","description":"Additional Data for push notification.","x-example":"{}"},"action":{"type":"string","description":"Action for push notification.","x-example":"[ACTION]"},"icon":{"type":"string","description":"Icon for push notification. Available only for Android and Web Platform.","x-example":"[ICON]"},"sound":{"type":"string","description":"Sound for push notification. Available only for Android and IOS Platform.","x-example":"[SOUND]"},"color":{"type":"string","description":"Color for push notification. Available only for Android Platform.","x-example":"[COLOR]"},"tag":{"type":"string","description":"Tag for push notification. Available only for Android Platform.","x-example":"[TAG]"},"badge":{"type":"string","description":"Badge for push notification. Available only for IOS Platform.","x-example":"[BADGE]"},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":"MessageStatus","x-enum-keys":[]},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","x-example":null}},"required":["messageId","title","body"]}}}}}},"\/messaging\/messages\/push\/{messageId}":{"patch":{"summary":"Update a push notification.","operationId":"messagingUpdatePush","tags":["messaging"],"description":"","responses":{"200":{"description":"Message","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/message"}}}}},"x-appwrite":{"method":"updatePush","weight":367,"cookies":false,"type":"","demo":"messaging\/update-push.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-push-notification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"schema":{"type":"string","x-example":"[MESSAGE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"topics":{"type":"array","description":"List of Topic IDs.","x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","x-example":null,"items":{"type":"string"}},"title":{"type":"string","description":"Title for push notification.","x-example":"[TITLE]"},"body":{"type":"string","description":"Body for push notification.","x-example":"[BODY]"},"data":{"type":"object","description":"Additional Data for push notification.","x-example":"{}"},"action":{"type":"string","description":"Action for push notification.","x-example":"[ACTION]"},"icon":{"type":"string","description":"Icon for push notification. Available only for Android and Web platforms.","x-example":"[ICON]"},"sound":{"type":"string","description":"Sound for push notification. Available only for Android and iOS platforms.","x-example":"[SOUND]"},"color":{"type":"string","description":"Color for push notification. Available only for Android platforms.","x-example":"[COLOR]"},"tag":{"type":"string","description":"Tag for push notification. Available only for Android platforms.","x-example":"[TAG]"},"badge":{"type":"integer","description":"Badge for push notification. Available only for iOS platforms.","x-example":null},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":"MessageStatus","x-enum-keys":[]},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","x-example":null}}}}}}}},"\/messaging\/messages\/sms":{"post":{"summary":"Create an SMS.","operationId":"messagingCreateSMS","tags":["messaging"],"description":"","responses":{"201":{"description":"Message","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/message"}}}}},"x-appwrite":{"method":"createSMS","weight":359,"cookies":false,"type":"","demo":"messaging\/create-s-m-s.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-sms.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"messageId":{"type":"string","description":"Message ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[MESSAGE_ID]"},"content":{"type":"string","description":"SMS Content.","x-example":"[CONTENT]"},"topics":{"type":"array","description":"List of Topic IDs.","x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","x-example":null,"items":{"type":"string"}},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":"MessageStatus","x-enum-keys":[]},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","x-example":null}},"required":["messageId","content"]}}}}}},"\/messaging\/messages\/sms\/{messageId}":{"patch":{"summary":"Update an SMS.","operationId":"messagingUpdateSMS","tags":["messaging"],"description":"","responses":{"200":{"description":"Message","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/message"}}}}},"x-appwrite":{"method":"updateSMS","weight":366,"cookies":false,"type":"","demo":"messaging\/update-s-m-s.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"schema":{"type":"string","x-example":"[MESSAGE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"topics":{"type":"array","description":"List of Topic IDs.","x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","x-example":null,"items":{"type":"string"}},"content":{"type":"string","description":"Email Content.","x-example":"[CONTENT]"},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":"MessageStatus","x-enum-keys":[]},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","x-example":null}}}}}}}},"\/messaging\/messages\/{messageId}":{"get":{"summary":"Get a message","operationId":"messagingGetMessage","tags":["messaging"],"description":"","responses":{"200":{"description":"Message","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/message"}}}}},"x-appwrite":{"method":"getMessage","weight":364,"cookies":false,"type":"","demo":"messaging\/get-message.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/get-message.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"schema":{"type":"string","x-example":"[MESSAGE_ID]"},"in":"path"}]},"delete":{"summary":"Delete a message","operationId":"messagingDelete","tags":["messaging"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":368,"cookies":false,"type":"","demo":"messaging\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-message.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"schema":{"type":"string","x-example":"[MESSAGE_ID]"},"in":"path"}]}},"\/messaging\/messages\/{messageId}\/logs":{"get":{"summary":"List message logs","operationId":"messagingListMessageLogs","tags":["messaging"],"description":"","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listMessageLogs","weight":362,"cookies":false,"type":"","demo":"messaging\/list-message-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/messages\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"schema":{"type":"string","x-example":"[MESSAGE_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/messaging\/messages\/{messageId}\/targets":{"get":{"summary":"List message targets","operationId":"messagingListTargets","tags":["messaging"],"description":"List the targets associated with a message as set via the targets attribute.","responses":{"200":{"description":"Target list","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/targetList"}}}}},"x-appwrite":{"method":"listTargets","weight":363,"cookies":false,"type":"","demo":"messaging\/list-targets.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-message-targets.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"schema":{"type":"string","x-example":"[MESSAGE_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, providerId, identifier, providerType","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/messaging\/providers":{"get":{"summary":"List providers","operationId":"messagingListProviders","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider list","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/providerList"}}}}},"x-appwrite":{"method":"listProviders","weight":333,"cookies":false,"type":"","demo":"messaging\/list-providers.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-providers.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, provider, type, enabled","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]}},"\/messaging\/providers\/apns":{"post":{"summary":"Create APNS provider","operationId":"messagingCreateAPNSProvider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createAPNSProvider","weight":332,"cookies":false,"type":"","demo":"messaging\/create-a-p-n-s-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-apns-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"authKey":{"type":"string","description":"APNS authentication key.","x-example":"[AUTH_KEY]"},"authKeyId":{"type":"string","description":"APNS authentication key ID.","x-example":"[AUTH_KEY_ID]"},"teamId":{"type":"string","description":"APNS team ID.","x-example":"[TEAM_ID]"},"bundleId":{"type":"string","description":"APNS bundle ID.","x-example":"[BUNDLE_ID]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name"]}}}}}},"\/messaging\/providers\/apns\/{providerId}":{"patch":{"summary":"Update APNS provider","operationId":"messagingUpdateAPNSProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateAPNSProvider","weight":345,"cookies":false,"type":"","demo":"messaging\/update-a-p-n-s-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-apns-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"authKey":{"type":"string","description":"APNS authentication key.","x-example":"[AUTH_KEY]"},"authKeyId":{"type":"string","description":"APNS authentication key ID.","x-example":"[AUTH_KEY_ID]"},"teamId":{"type":"string","description":"APNS team ID.","x-example":"[TEAM_ID]"},"bundleId":{"type":"string","description":"APNS bundle ID.","x-example":"[BUNDLE_ID]"}}}}}}}},"\/messaging\/providers\/fcm":{"post":{"summary":"Create FCM provider","operationId":"messagingCreateFCMProvider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createFCMProvider","weight":331,"cookies":false,"type":"","demo":"messaging\/create-f-c-m-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-fcm-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"serviceAccountJSON":{"type":"object","description":"FCM service account JSON.","x-example":"{}"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name"]}}}}}},"\/messaging\/providers\/fcm\/{providerId}":{"patch":{"summary":"Update FCM provider","operationId":"messagingUpdateFCMProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateFCMProvider","weight":344,"cookies":false,"type":"","demo":"messaging\/update-f-c-m-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-fcm-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"serviceAccountJSON":{"type":"object","description":"FCM service account JSON.","x-example":"{}"}}}}}}}},"\/messaging\/providers\/mailgun":{"post":{"summary":"Create Mailgun provider","operationId":"messagingCreateMailgunProvider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createMailgunProvider","weight":323,"cookies":false,"type":"","demo":"messaging\/create-mailgun-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-mailgun-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"apiKey":{"type":"string","description":"Mailgun API Key.","x-example":"[API_KEY]"},"domain":{"type":"string","description":"Mailgun Domain.","x-example":"[DOMAIN]"},"isEuRegion":{"type":"boolean","description":"Set as EU region.","x-example":false},"fromName":{"type":"string","description":"Sender Name.","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the reply to field for the mail. Default value is sender name. Reply to name must have reply to email as well.","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the reply to field for the mail. Default value is sender email. Reply to email must have reply to name as well.","x-example":"email@example.com"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name"]}}}}}},"\/messaging\/providers\/mailgun\/{providerId}":{"patch":{"summary":"Update Mailgun provider","operationId":"messagingUpdateMailgunProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateMailgunProvider","weight":336,"cookies":false,"type":"","demo":"messaging\/update-mailgun-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-mailgun-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"apiKey":{"type":"string","description":"Mailgun API Key.","x-example":"[API_KEY]"},"domain":{"type":"string","description":"Mailgun Domain.","x-example":"[DOMAIN]"},"isEuRegion":{"type":"boolean","description":"Set as EU region.","x-example":false},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"fromName":{"type":"string","description":"Sender Name.","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the reply to field for the mail. Default value is sender name.","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the reply to field for the mail. Default value is sender email.","x-example":"[REPLY_TO_EMAIL]"}}}}}}}},"\/messaging\/providers\/msg91":{"post":{"summary":"Create Msg91 provider","operationId":"messagingCreateMsg91Provider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createMsg91Provider","weight":326,"cookies":false,"type":"","demo":"messaging\/create-msg91provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-msg91-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"senderId":{"type":"string","description":"Msg91 Sender ID.","x-example":"[SENDER_ID]"},"authKey":{"type":"string","description":"Msg91 Auth Key.","x-example":"[AUTH_KEY]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name"]}}}}}},"\/messaging\/providers\/msg91\/{providerId}":{"patch":{"summary":"Update Msg91 provider","operationId":"messagingUpdateMsg91Provider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateMsg91Provider","weight":339,"cookies":false,"type":"","demo":"messaging\/update-msg91provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-msg91-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"senderId":{"type":"string","description":"Msg91 Sender ID.","x-example":"[SENDER_ID]"},"authKey":{"type":"string","description":"Msg91 Auth Key.","x-example":"[AUTH_KEY]"},"from":{"type":"string","description":"Sender number.","x-example":"[FROM]"}}}}}}}},"\/messaging\/providers\/sendgrid":{"post":{"summary":"Create Sendgrid provider","operationId":"messagingCreateSendgridProvider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createSendgridProvider","weight":324,"cookies":false,"type":"","demo":"messaging\/create-sendgrid-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-sengrid-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"apiKey":{"type":"string","description":"Sendgrid API key.","x-example":"[API_KEY]"},"fromName":{"type":"string","description":"Sender Name.","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the reply to field for the mail. Default value is sender name.","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the reply to field for the mail. Default value is sender email.","x-example":"email@example.com"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name"]}}}}}},"\/messaging\/providers\/sendgrid\/{providerId}":{"patch":{"summary":"Update Sendgrid provider","operationId":"messagingUpdateSendgridProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateSendgridProvider","weight":337,"cookies":false,"type":"","demo":"messaging\/update-sendgrid-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-sendgrid-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"apiKey":{"type":"string","description":"Sendgrid API key.","x-example":"[API_KEY]"},"fromName":{"type":"string","description":"Sender Name.","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the Reply To field for the mail. Default value is Sender Name.","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the Reply To field for the mail. Default value is Sender Email.","x-example":"[REPLY_TO_EMAIL]"}}}}}}}},"\/messaging\/providers\/smtp":{"post":{"summary":"Create SMTP provider","operationId":"messagingCreateSMTPProvider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createSMTPProvider","weight":325,"cookies":false,"type":"","demo":"messaging\/create-s-m-t-p-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-smtp-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"host":{"type":"string","description":"SMTP hosts. Either a single hostname or multiple semicolon-delimited hostnames. You can also specify a different port for each host by using this format: [hostname:port] (e.g. \"smtp1.example.com:25;smtp2.example.com\"). You can also specify encryption type, for example: (e.g. \"tls:\/\/smtp1.example.com:587;ssl:\/\/smtp2.example.com:465\"). Hosts will be tried in order.","x-example":"[HOST]"},"port":{"type":"integer","description":"The default SMTP server port.","x-example":1},"username":{"type":"string","description":"Authentication username.","x-example":"[USERNAME]"},"password":{"type":"string","description":"Authentication password.","x-example":"[PASSWORD]"},"encryption":{"type":"string","description":"Encryption type. Can be omitted, 'ssl', or 'tls'","x-example":"none","enum":["none","ssl","tls"],"x-enum-name":"SMTPEncryption","x-enum-keys":[]},"autoTLS":{"type":"boolean","description":"Enable SMTP AutoTLS feature.","x-example":false},"mailer":{"type":"string","description":"The value to use for the X-Mailer header.","x-example":"[MAILER]"},"fromName":{"type":"string","description":"Sender Name.","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the reply to field for the mail. Default value is sender name.","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the reply to field for the mail. Default value is sender email.","x-example":"email@example.com"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name","host"]}}}}}},"\/messaging\/providers\/smtp\/{providerId}":{"patch":{"summary":"Update SMTP provider","operationId":"messagingUpdateSMTPProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateSMTPProvider","weight":338,"cookies":false,"type":"","demo":"messaging\/update-s-m-t-p-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-smtp-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"host":{"type":"string","description":"SMTP hosts. Either a single hostname or multiple semicolon-delimited hostnames. You can also specify a different port for each host by using this format: [hostname:port] (e.g. \"smtp1.example.com:25;smtp2.example.com\"). You can also specify encryption type, for example: (e.g. \"tls:\/\/smtp1.example.com:587;ssl:\/\/smtp2.example.com:465\"). Hosts will be tried in order.","x-example":"[HOST]"},"port":{"type":"integer","description":"SMTP port.","x-example":1},"username":{"type":"string","description":"Authentication username.","x-example":"[USERNAME]"},"password":{"type":"string","description":"Authentication password.","x-example":"[PASSWORD]"},"encryption":{"type":"string","description":"Encryption type. Can be 'ssl' or 'tls'","x-example":"none","enum":["none","ssl","tls"],"x-enum-name":"SMTPEncryption","x-enum-keys":[]},"autoTLS":{"type":"boolean","description":"Enable SMTP AutoTLS feature.","x-example":false},"fromName":{"type":"string","description":"Sender Name.","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the Reply To field for the mail. Default value is Sender Name.","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the Reply To field for the mail. Default value is Sender Email.","x-example":"[REPLY_TO_EMAIL]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}}}}}}}},"\/messaging\/providers\/telesign":{"post":{"summary":"Create Telesign provider","operationId":"messagingCreateTelesignProvider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createTelesignProvider","weight":327,"cookies":false,"type":"","demo":"messaging\/create-telesign-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-telesign-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"username":{"type":"string","description":"Telesign username.","x-example":"[USERNAME]"},"password":{"type":"string","description":"Telesign password.","x-example":"[PASSWORD]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name"]}}}}}},"\/messaging\/providers\/telesign\/{providerId}":{"patch":{"summary":"Update Telesign provider","operationId":"messagingUpdateTelesignProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateTelesignProvider","weight":340,"cookies":false,"type":"","demo":"messaging\/update-telesign-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-telesign-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"username":{"type":"string","description":"Telesign username.","x-example":"[USERNAME]"},"password":{"type":"string","description":"Telesign password.","x-example":"[PASSWORD]"},"from":{"type":"string","description":"Sender number.","x-example":"[FROM]"}}}}}}}},"\/messaging\/providers\/textmagic":{"post":{"summary":"Create Textmagic provider","operationId":"messagingCreateTextmagicProvider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createTextmagicProvider","weight":328,"cookies":false,"type":"","demo":"messaging\/create-textmagic-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-textmagic-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"username":{"type":"string","description":"Textmagic username.","x-example":"[USERNAME]"},"apiKey":{"type":"string","description":"Textmagic apiKey.","x-example":"[API_KEY]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name"]}}}}}},"\/messaging\/providers\/textmagic\/{providerId}":{"patch":{"summary":"Update Textmagic provider","operationId":"messagingUpdateTextmagicProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateTextmagicProvider","weight":341,"cookies":false,"type":"","demo":"messaging\/update-textmagic-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-textmagic-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"username":{"type":"string","description":"Textmagic username.","x-example":"[USERNAME]"},"apiKey":{"type":"string","description":"Textmagic apiKey.","x-example":"[API_KEY]"},"from":{"type":"string","description":"Sender number.","x-example":"[FROM]"}}}}}}}},"\/messaging\/providers\/twilio":{"post":{"summary":"Create Twilio provider","operationId":"messagingCreateTwilioProvider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createTwilioProvider","weight":329,"cookies":false,"type":"","demo":"messaging\/create-twilio-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-twilio-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"accountSid":{"type":"string","description":"Twilio account secret ID.","x-example":"[ACCOUNT_SID]"},"authToken":{"type":"string","description":"Twilio authentication token.","x-example":"[AUTH_TOKEN]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name"]}}}}}},"\/messaging\/providers\/twilio\/{providerId}":{"patch":{"summary":"Update Twilio provider","operationId":"messagingUpdateTwilioProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateTwilioProvider","weight":342,"cookies":false,"type":"","demo":"messaging\/update-twilio-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-twilio-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"accountSid":{"type":"string","description":"Twilio account secret ID.","x-example":"[ACCOUNT_SID]"},"authToken":{"type":"string","description":"Twilio authentication token.","x-example":"[AUTH_TOKEN]"},"from":{"type":"string","description":"Sender number.","x-example":"[FROM]"}}}}}}}},"\/messaging\/providers\/vonage":{"post":{"summary":"Create Vonage provider","operationId":"messagingCreateVonageProvider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createVonageProvider","weight":330,"cookies":false,"type":"","demo":"messaging\/create-vonage-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-vonage-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"apiKey":{"type":"string","description":"Vonage API key.","x-example":"[API_KEY]"},"apiSecret":{"type":"string","description":"Vonage API secret.","x-example":"[API_SECRET]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name"]}}}}}},"\/messaging\/providers\/vonage\/{providerId}":{"patch":{"summary":"Update Vonage provider","operationId":"messagingUpdateVonageProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateVonageProvider","weight":343,"cookies":false,"type":"","demo":"messaging\/update-vonage-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-vonage-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"apiKey":{"type":"string","description":"Vonage API key.","x-example":"[API_KEY]"},"apiSecret":{"type":"string","description":"Vonage API secret.","x-example":"[API_SECRET]"},"from":{"type":"string","description":"Sender number.","x-example":"[FROM]"}}}}}}}},"\/messaging\/providers\/{providerId}":{"get":{"summary":"Get provider","operationId":"messagingGetProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"getProvider","weight":335,"cookies":false,"type":"","demo":"messaging\/get-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/get-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}]},"delete":{"summary":"Delete provider","operationId":"messagingDeleteProvider","tags":["messaging"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteProvider","weight":346,"cookies":false,"type":"","demo":"messaging\/delete-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}]}},"\/messaging\/providers\/{providerId}\/logs":{"get":{"summary":"List provider logs","operationId":"messagingListProviderLogs","tags":["messaging"],"description":"","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listProviderLogs","weight":334,"cookies":false,"type":"","demo":"messaging\/list-provider-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/providers\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/messaging\/subscribers\/{subscriberId}\/logs":{"get":{"summary":"List subscriber logs","operationId":"messagingListSubscriberLogs","tags":["messaging"],"description":"","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listSubscriberLogs","weight":355,"cookies":false,"type":"","demo":"messaging\/list-subscriber-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/subscribers\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"subscriberId","description":"Subscriber ID.","required":true,"schema":{"type":"string","x-example":"[SUBSCRIBER_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/messaging\/topics":{"get":{"summary":"List topics.","operationId":"messagingListTopics","tags":["messaging"],"description":"","responses":{"200":{"description":"Topic list","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/topicList"}}}}},"x-appwrite":{"method":"listTopics","weight":348,"cookies":false,"type":"","demo":"messaging\/list-topics.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-topics.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, description, total","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create a topic.","operationId":"messagingCreateTopic","tags":["messaging"],"description":"","responses":{"201":{"description":"Topic","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/topic"}}}}},"x-appwrite":{"method":"createTopic","weight":347,"cookies":false,"type":"","demo":"messaging\/create-topic.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-topic.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"topicId":{"type":"string","description":"Topic ID. Choose a custom Topic ID or a new Topic ID.","x-example":"[TOPIC_ID]"},"name":{"type":"string","description":"Topic Name.","x-example":"[NAME]"}},"required":["topicId","name"]}}}}}},"\/messaging\/topics\/{topicId}":{"get":{"summary":"Get a topic.","operationId":"messagingGetTopic","tags":["messaging"],"description":"","responses":{"200":{"description":"Topic","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/topic"}}}}},"x-appwrite":{"method":"getTopic","weight":350,"cookies":false,"type":"","demo":"messaging\/get-topic.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/get-topic.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID.","required":true,"schema":{"type":"string","x-example":"[TOPIC_ID]"},"in":"path"}]},"patch":{"summary":"Update a topic.","operationId":"messagingUpdateTopic","tags":["messaging"],"description":"","responses":{"200":{"description":"Topic","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/topic"}}}}},"x-appwrite":{"method":"updateTopic","weight":351,"cookies":false,"type":"","demo":"messaging\/update-topic.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-topic.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID.","required":true,"schema":{"type":"string","x-example":"[TOPIC_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Topic Name.","x-example":"[NAME]"}}}}}}},"delete":{"summary":"Delete a topic.","operationId":"messagingDeleteTopic","tags":["messaging"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteTopic","weight":352,"cookies":false,"type":"","demo":"messaging\/delete-topic.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-topic.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID.","required":true,"schema":{"type":"string","x-example":"[TOPIC_ID]"},"in":"path"}]}},"\/messaging\/topics\/{topicId}\/logs":{"get":{"summary":"List topic logs","operationId":"messagingListTopicLogs","tags":["messaging"],"description":"","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listTopicLogs","weight":349,"cookies":false,"type":"","demo":"messaging\/list-topic-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/topics\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID.","required":true,"schema":{"type":"string","x-example":"[TOPIC_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/messaging\/topics\/{topicId}\/subscribers":{"get":{"summary":"List subscribers.","operationId":"messagingListSubscribers","tags":["messaging"],"description":"","responses":{"200":{"description":"Subscriber list","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/subscriberList"}}}}},"x-appwrite":{"method":"listSubscribers","weight":354,"cookies":false,"type":"","demo":"messaging\/list-subscribers.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-subscribers.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID subscribed to.","required":true,"schema":{"type":"string","x-example":"[TOPIC_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, provider, type, enabled","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create a subscriber.","operationId":"messagingCreateSubscriber","tags":["messaging"],"description":"","responses":{"201":{"description":"Subscriber","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/subscriber"}}}}},"x-appwrite":{"method":"createSubscriber","weight":353,"cookies":false,"type":"","demo":"messaging\/create-subscriber.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-subscriber.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.write","platforms":["server","client","console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[],"Session":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID to subscribe to.","required":true,"schema":{"type":"string","x-example":"[TOPIC_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"subscriberId":{"type":"string","description":"Subscriber ID. Choose a custom Subscriber ID or a new Subscriber ID.","x-example":"[SUBSCRIBER_ID]"},"targetId":{"type":"string","description":"Target ID. The target ID to link to the specified Topic ID.","x-example":"[TARGET_ID]"}},"required":["subscriberId","targetId"]}}}}}},"\/messaging\/topics\/{topicId}\/subscribers\/{subscriberId}":{"get":{"summary":"Get a subscriber.","operationId":"messagingGetSubscriber","tags":["messaging"],"description":"","responses":{"200":{"description":"Subscriber","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/subscriber"}}}}},"x-appwrite":{"method":"getSubscriber","weight":356,"cookies":false,"type":"","demo":"messaging\/get-subscriber.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/get-subscriber.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID subscribed to.","required":true,"schema":{"type":"string","x-example":"[TOPIC_ID]"},"in":"path"},{"name":"subscriberId","description":"Subscriber ID.","required":true,"schema":{"type":"string","x-example":"[SUBSCRIBER_ID]"},"in":"path"}]},"delete":{"summary":"Delete a subscriber.","operationId":"messagingDeleteSubscriber","tags":["messaging"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSubscriber","weight":357,"cookies":false,"type":"","demo":"messaging\/delete-subscriber.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-subscriber.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.write","platforms":["server","client","console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[],"Session":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID subscribed to.","required":true,"schema":{"type":"string","x-example":"[TOPIC_ID]"},"in":"path"},{"name":"subscriberId","description":"Subscriber ID.","required":true,"schema":{"type":"string","x-example":"[SUBSCRIBER_ID]"},"in":"path"}]}},"\/storage\/buckets":{"get":{"summary":"List buckets","operationId":"storageListBuckets","tags":["storage"],"description":"Get a list of all the storage buckets. You can use the query params to filter your results.","responses":{"200":{"description":"Buckets List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/bucketList"}}}}},"x-appwrite":{"method":"listBuckets","weight":186,"cookies":false,"type":"","demo":"storage\/list-buckets.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/list-buckets.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: enabled, name, fileSecurity, maximumFileSize, encryption, antivirus","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create bucket","operationId":"storageCreateBucket","tags":["storage"],"description":"Create a new storage bucket.","responses":{"201":{"description":"Bucket","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/bucket"}}}}},"x-appwrite":{"method":"createBucket","weight":185,"cookies":false,"type":"","demo":"storage\/create-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"bucketId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, no user is granted with any permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":false},"enabled":{"type":"boolean","description":"Is bucket enabled? When set to 'disabled', users cannot access the files in this bucket but Server SDKs with and API key can still access the bucket. No files are lost when this is toggled.","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB.","x-example":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","x-example":"none","enum":["none","gzip","zstd"],"x-enum-name":null,"x-enum-keys":[]},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","x-example":false}},"required":["bucketId","name"]}}}}}},"\/storage\/buckets\/{bucketId}":{"get":{"summary":"Get bucket","operationId":"storageGetBucket","tags":["storage"],"description":"Get a storage bucket by its unique ID. This endpoint response returns a JSON object with the storage bucket metadata.","responses":{"200":{"description":"Bucket","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/bucket"}}}}},"x-appwrite":{"method":"getBucket","weight":187,"cookies":false,"type":"","demo":"storage\/get-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"bucketId","description":"Bucket unique ID.","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"}]},"put":{"summary":"Update bucket","operationId":"storageUpdateBucket","tags":["storage"],"description":"Update a storage bucket by its unique ID.","responses":{"200":{"description":"Bucket","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/bucket"}}}}},"x-appwrite":{"method":"updateBucket","weight":188,"cookies":false,"type":"","demo":"storage\/update-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"bucketId","description":"Bucket unique ID.","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Bucket name","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":false},"enabled":{"type":"boolean","description":"Is bucket enabled? When set to 'disabled', users cannot access the files in this bucket but Server SDKs with and API key can still access the bucket. No files are lost when this is toggled.","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB.","x-example":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","x-example":"none","enum":["none","gzip","zstd"],"x-enum-name":null,"x-enum-keys":[]},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","x-example":false}},"required":["name"]}}}}},"delete":{"summary":"Delete bucket","operationId":"storageDeleteBucket","tags":["storage"],"description":"Delete a storage bucket by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteBucket","weight":189,"cookies":false,"type":"","demo":"storage\/delete-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"bucketId","description":"Bucket unique ID.","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files":{"get":{"summary":"List files","operationId":"storageListFiles","tags":["storage"],"description":"Get a list of all the user files. You can use the query params to filter your results.","responses":{"200":{"description":"Files List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/fileList"}}}}},"x-appwrite":{"method":"listFiles","weight":191,"cookies":false,"type":"","demo":"storage\/list-files.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/list-files.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create file","operationId":"storageCreateFile","tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"createFile","weight":190,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"}],"requestBody":{"content":{"multipart\/form-data":{"schema":{"type":"object","properties":{"fileId":{"type":"string","description":"File ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[FILE_ID]","x-upload-id":true},"file":{"type":"string","description":"Binary file. Appwrite SDKs provide helpers to handle file input. [Learn about file input](https:\/\/appwrite.io\/docs\/storage#file-input).","x-example":null},"permissions":{"type":"array","description":"An array of permission strings. By default, only the current user is granted all permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["fileId","file"]}}}}}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get file","operationId":"storageGetFile","tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"getFile","weight":192,"cookies":false,"type":"","demo":"storage\/get-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File ID.","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"}]},"put":{"summary":"Update file","operationId":"storageUpdateFile","tags":["storage"],"description":"Update a file by its unique ID. Only users with write permissions have access to update this resource.","responses":{"200":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"updateFile","weight":196,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File unique ID.","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Name of the file","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission string. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":197,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File ID.","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/download":{"get":{"summary":"Get file for download","operationId":"storageGetFileDownload","tags":["storage"],"description":"Get a file content by its unique ID. The endpoint response return with a 'Content-Disposition: attachment' header that tells the browser to start downloading the file to user downloads directory.","responses":{"200":{"description":"File"}},"x-appwrite":{"method":"getFileDownload","weight":194,"cookies":false,"type":"location","demo":"storage\/get-file-download.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-download.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File ID.","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/preview":{"get":{"summary":"Get file preview","operationId":"storageGetFilePreview","tags":["storage"],"description":"Get a file preview image. Currently, this method supports preview for image files (jpg, png, and gif), other supported formats, like pdf, docs, slides, and spreadsheets, will return the file icon image. You can also pass query string arguments for cutting and resizing your preview image. Preview is supported only for image files smaller than 10MB.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFilePreview","weight":193,"cookies":false,"type":"location","demo":"storage\/get-file-preview.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-preview.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File ID","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"},{"name":"width","description":"Resize preview image width, Pass an integer between 0 to 4000.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 4000.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"gravity","description":"Image crop gravity. Can be one of center,top-left,top,top-right,left,right,bottom-left,bottom,bottom-right","required":false,"schema":{"type":"string","x-example":"center","enum":["center","top-left","top","top-right","left","right","bottom-left","bottom","bottom-right"],"x-enum-name":"ImageGravity","x-enum-keys":[],"default":"center"},"in":"query"},{"name":"quality","description":"Preview image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"borderWidth","description":"Preview image border in pixels. Pass an integer between 0 to 100. Defaults to 0.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"borderColor","description":"Preview image border color. Use a valid HEX color, no # is needed for prefix.","required":false,"schema":{"type":"string","default":""},"in":"query"},{"name":"borderRadius","description":"Preview image border radius in pixels. Pass an integer between 0 to 4000.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"opacity","description":"Preview image opacity. Only works with images having an alpha channel (like png). Pass a number between 0 to 1.","required":false,"schema":{"type":"number","format":"float","x-example":0,"default":1},"in":"query"},{"name":"rotation","description":"Preview image rotation in degrees. Pass an integer between -360 and 360.","required":false,"schema":{"type":"integer","format":"int32","x-example":-360,"default":0},"in":"query"},{"name":"background","description":"Preview image background color. Only works with transparent images (png). Use a valid HEX color, no # is needed for prefix.","required":false,"schema":{"type":"string","default":""},"in":"query"},{"name":"output","description":"Output format type (jpeg, jpg, png, gif and webp).","required":false,"schema":{"type":"string","x-example":"jpg","enum":["jpg","jpeg","gif","png","webp"],"x-enum-name":"ImageFormat","x-enum-keys":[],"default":""},"in":"query"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/view":{"get":{"summary":"Get file for view","operationId":"storageGetFileView","tags":["storage"],"description":"Get a file content by its unique ID. This endpoint is similar to the download method but returns with no 'Content-Disposition: attachment' header.","responses":{"200":{"description":"File"}},"x-appwrite":{"method":"getFileView","weight":195,"cookies":false,"type":"location","demo":"storage\/get-file-view.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-view.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File ID.","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"}]}},"\/teams":{"get":{"summary":"List teams","operationId":"teamsList","tags":["teams"],"description":"Get a list of all the teams in which the current user is a member. You can use the parameters to filter your results.","responses":{"200":{"description":"Teams List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/teamList"}}}}},"x-appwrite":{"method":"list","weight":201,"cookies":false,"type":"","demo":"teams\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-teams.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total, billingPlan","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create team","operationId":"teamsCreate","tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"create","weight":200,"cookies":false,"type":"","demo":"teams\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/create-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"teamId":{"type":"string","description":"Team ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[TEAM_ID]"},"name":{"type":"string","description":"Team name. Max length: 128 chars.","x-example":"[NAME]"},"roles":{"type":"array","description":"Array of strings. Use this param to set the roles in the team for the user who created it. The default role is **owner**. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}}}}},"\/teams\/{teamId}":{"get":{"summary":"Get team","operationId":"teamsGet","tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"get","weight":202,"cookies":false,"type":"","demo":"teams\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams","offline-key":"{teamId}","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}]},"put":{"summary":"Update name","operationId":"teamsUpdateName","tags":["teams"],"description":"Update the team's name by its unique ID.","responses":{"200":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"updateName","weight":204,"cookies":false,"type":"","demo":"teams\/update-name.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-name.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams","offline-key":"{teamId}","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"New team name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["name"]}}}}},"delete":{"summary":"Delete team","operationId":"teamsDelete","tags":["teams"],"description":"Delete a team using its ID. Only team members with the owner role can delete the team.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":206,"cookies":false,"type":"","demo":"teams\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/delete-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}]}},"\/teams\/{teamId}\/memberships":{"get":{"summary":"List team memberships","operationId":"teamsListMemberships","tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"listMemberships","weight":208,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/memberships","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create team membership","operationId":"teamsCreateMembership","tags":["teams"],"description":"Invite a new member to join your team. Provide an ID for existing users, or invite unregistered users using an email or phone number. If initiated from a Client SDK, Appwrite will send an email or sms with a link to join the team to the invited user, and an account will be created for them if one doesn't exist. If initiated from a Server SDK, the new member will be added automatically to the team.\n\nYou only need to provide one of a user ID, email, or phone number. Appwrite will prioritize accepting the user ID > email > phone number if you provide more than one of these parameters.\n\nUse the `url` parameter to redirect the user from the invitation email to your app. After the user is redirected, use the [Update Team Membership Status](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/teams#updateMembershipStatus) endpoint to allow the user to accept the invitation to the team. \n\nPlease note that to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) Appwrite will accept the only redirect URLs under the domains you have added as a platform on the Appwrite Console.\n","responses":{"201":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"createMembership","weight":207,"cookies":false,"type":"","demo":"teams\/create-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/create-team-membership.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"email":{"type":"string","description":"Email of the new team member.","x-example":"email@example.com"},"userId":{"type":"string","description":"ID of the user to be added to a team.","x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"roles":{"type":"array","description":"Array of strings. Use this param to set the user roles in the team. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"},"name":{"type":"string","description":"Name of the new team member. Max length: 128 chars.","x-example":"[NAME]"}},"required":["roles"]}}}}}},"\/teams\/{teamId}\/memberships\/{membershipId}":{"get":{"summary":"Get team membership","operationId":"teamsGetMembership","tags":["teams"],"description":"Get a team member by the membership unique id. All team members have read access for this resource.","responses":{"200":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"getMembership","weight":209,"cookies":false,"type":"","demo":"teams\/get-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-member.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/memberships","offline-key":"{membershipId}","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"schema":{"type":"string","x-example":"[MEMBERSHIP_ID]"},"in":"path"}]},"patch":{"summary":"Update membership","operationId":"teamsUpdateMembership","tags":["teams"],"description":"Modify the roles of a team member. Only team members with the owner role have access to this endpoint. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions).\n","responses":{"200":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"updateMembership","weight":210,"cookies":false,"type":"","demo":"teams\/update-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"schema":{"type":"string","x-example":"[MEMBERSHIP_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"roles":{"type":"array","description":"An array of strings. Use this param to set the user's roles in the team. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["roles"]}}}}},"delete":{"summary":"Delete team membership","operationId":"teamsDeleteMembership","tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":212,"cookies":false,"type":"","demo":"teams\/delete-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/delete-team-membership.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"schema":{"type":"string","x-example":"[MEMBERSHIP_ID]"},"in":"path"}]}},"\/teams\/{teamId}\/memberships\/{membershipId}\/status":{"patch":{"summary":"Update team membership status","operationId":"teamsUpdateMembershipStatus","tags":["teams"],"description":"Use this endpoint to allow a user to accept an invitation to join a team after being redirected back to your app from the invitation email received by the user.\n\nIf the request is successful, a session for the user is automatically created.\n","responses":{"200":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"updateMembershipStatus","weight":211,"cookies":false,"type":"","demo":"teams\/update-membership-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"public","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"schema":{"type":"string","x-example":"[MEMBERSHIP_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Secret key.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/teams\/{teamId}\/prefs":{"get":{"summary":"Get team preferences","operationId":"teamsGetPrefs","tags":["teams"],"description":"Get the team's shared preferences by its unique ID. If a preference doesn't need to be shared by all team members, prefer storing them in [user preferences](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#getPrefs).","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"getPrefs","weight":203,"cookies":false,"type":"","demo":"teams\/get-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/prefs","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}]},"put":{"summary":"Update preferences","operationId":"teamsUpdatePrefs","tags":["teams"],"description":"Update the team's preferences by its unique ID. The object you pass is stored as is and replaces any previous value. The maximum allowed prefs size is 64kB and throws an error if exceeded.","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"updatePrefs","weight":205,"cookies":false,"type":"","demo":"teams\/update-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/prefs","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"prefs":{"type":"object","description":"Prefs key-value JSON object.","x-example":"{}"}},"required":["prefs"]}}}}}},"\/users":{"get":{"summary":"List users","operationId":"usersList","tags":["users"],"description":"Get a list of all the project's users. You can use the query params to filter your results.","responses":{"200":{"description":"Users List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/userList"}}}}},"x-appwrite":{"method":"list","weight":223,"cookies":false,"type":"","demo":"users\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-users.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, email, phone, status, passwordUpdate, registration, emailVerification, phoneVerification","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create user","operationId":"usersCreate","tags":["users"],"description":"Create a new user.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"create","weight":214,"cookies":false,"type":"","demo":"users\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"password":{"type":"string","description":"Plain text user password. Must be at least 8 chars.","x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId"]}}}}}},"\/users\/argon2":{"post":{"summary":"Create user with Argon2 password","operationId":"usersCreateArgon2User","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Argon2](https:\/\/en.wikipedia.org\/wiki\/Argon2) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createArgon2User","weight":217,"cookies":false,"type":"","demo":"users\/create-argon2user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-argon2-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Argon2.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/bcrypt":{"post":{"summary":"Create user with bcrypt password","operationId":"usersCreateBcryptUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Bcrypt](https:\/\/en.wikipedia.org\/wiki\/Bcrypt) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createBcryptUser","weight":215,"cookies":false,"type":"","demo":"users\/create-bcrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-bcrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Bcrypt.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/identities":{"get":{"summary":"List Identities","operationId":"usersListIdentities","tags":["users"],"description":"Get identities for all users.","responses":{"200":{"description":"Identities List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/identityList"}}}}},"x-appwrite":{"method":"listIdentities","weight":231,"cookies":false,"type":"","demo":"users\/list-identities.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-identities.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, provider, providerUid, providerEmail, providerAccessTokenExpiry","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]}},"\/users\/identities\/{identityId}":{"delete":{"summary":"Delete identity","operationId":"usersDeleteIdentity","tags":["users"],"description":"Delete an identity by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIdentity","weight":251,"cookies":false,"type":"","demo":"users\/delete-identity.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-identity.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"identityId","description":"Identity ID.","required":true,"schema":{"type":"string","x-example":"[IDENTITY_ID]"},"in":"path"}]}},"\/users\/md5":{"post":{"summary":"Create user with MD5 password","operationId":"usersCreateMD5User","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [MD5](https:\/\/en.wikipedia.org\/wiki\/MD5) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createMD5User","weight":216,"cookies":false,"type":"","demo":"users\/create-m-d5user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-md5-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using MD5.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/phpass":{"post":{"summary":"Create user with PHPass password","operationId":"usersCreatePHPassUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [PHPass](https:\/\/www.openwall.com\/phpass\/) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createPHPassUser","weight":219,"cookies":false,"type":"","demo":"users\/create-p-h-pass-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-phpass-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or pass the string `ID.unique()`to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using PHPass.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/scrypt":{"post":{"summary":"Create user with Scrypt password","operationId":"usersCreateScryptUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt](https:\/\/github.com\/Tarsnap\/scrypt) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createScryptUser","weight":220,"cookies":false,"type":"","demo":"users\/create-scrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt.","x-example":"password"},"passwordSalt":{"type":"string","description":"Optional salt used to hash password.","x-example":"[PASSWORD_SALT]"},"passwordCpu":{"type":"integer","description":"Optional CPU cost used to hash password.","x-example":null},"passwordMemory":{"type":"integer","description":"Optional memory cost used to hash password.","x-example":null},"passwordParallel":{"type":"integer","description":"Optional parallelization cost used to hash password.","x-example":null},"passwordLength":{"type":"integer","description":"Optional hash length used to hash password.","x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordCpu","passwordMemory","passwordParallel","passwordLength"]}}}}}},"\/users\/scrypt-modified":{"post":{"summary":"Create user with Scrypt modified password","operationId":"usersCreateScryptModifiedUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt Modified](https:\/\/gist.github.com\/Meldiron\/eecf84a0225eccb5a378d45bb27462cc) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createScryptModifiedUser","weight":221,"cookies":false,"type":"","demo":"users\/create-scrypt-modified-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-modified-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt Modified.","x-example":"password"},"passwordSalt":{"type":"string","description":"Salt used to hash password.","x-example":"[PASSWORD_SALT]"},"passwordSaltSeparator":{"type":"string","description":"Salt separator used to hash password.","x-example":"[PASSWORD_SALT_SEPARATOR]"},"passwordSignerKey":{"type":"string","description":"Signer key used to hash password.","x-example":"[PASSWORD_SIGNER_KEY]"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordSaltSeparator","passwordSignerKey"]}}}}}},"\/users\/sha":{"post":{"summary":"Create user with SHA password","operationId":"usersCreateSHAUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [SHA](https:\/\/en.wikipedia.org\/wiki\/Secure_Hash_Algorithm) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createSHAUser","weight":218,"cookies":false,"type":"","demo":"users\/create-s-h-a-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-sha-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using SHA.","x-example":"password"},"passwordVersion":{"type":"string","description":"Optional SHA version used to hash password. Allowed values are: 'sha1', 'sha224', 'sha256', 'sha384', 'sha512\/224', 'sha512\/256', 'sha512', 'sha3-224', 'sha3-256', 'sha3-384', 'sha3-512'","x-example":"sha1","enum":["sha1","sha224","sha256","sha384","sha512\/224","sha512\/256","sha512","sha3-224","sha3-256","sha3-384","sha3-512"],"x-enum-name":"PasswordHash","x-enum-keys":[]},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/{userId}":{"get":{"summary":"Get user","operationId":"usersGet","tags":["users"],"description":"Get a user by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"get","weight":224,"cookies":false,"type":"","demo":"users\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]},"delete":{"summary":"Delete user","operationId":"usersDelete","tags":["users"],"description":"Delete a user by its unique ID, thereby releasing it's ID. Since ID is released and can be reused, all user-related resources like documents or storage files should be deleted before user deletion. If you want to keep ID reserved, use the [updateStatus](https:\/\/appwrite.io\/docs\/server\/users#usersUpdateStatus) endpoint instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":249,"cookies":false,"type":"","demo":"users\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]}},"\/users\/{userId}\/email":{"patch":{"summary":"Update email","operationId":"usersUpdateEmail","tags":["users"],"description":"Update the user email by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateEmail","weight":237,"cookies":false,"type":"","demo":"users\/update-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","x-example":"email@example.com"}},"required":["email"]}}}}}},"\/users\/{userId}\/labels":{"put":{"summary":"Update user labels","operationId":"usersUpdateLabels","tags":["users"],"description":"Update the user labels by its unique ID. \n\nLabels can be used to grant access to resources. While teams are a way for user's to share access to a resource, labels can be defined by the developer to grant access without an invitation. See the [Permissions docs](https:\/\/appwrite.io\/docs\/permissions) for more info.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateLabels","weight":233,"cookies":false,"type":"","demo":"users\/update-labels.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-labels.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"labels":{"type":"array","description":"Array of user labels. Replaces the previous labels. Maximum of 1000 labels are allowed, each up to 36 alphanumeric characters long.","x-example":null,"items":{"type":"string"}}},"required":["labels"]}}}}}},"\/users\/{userId}\/logs":{"get":{"summary":"List user logs","operationId":"usersListLogs","tags":["users"],"description":"Get the user activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listLogs","weight":229,"cookies":false,"type":"","demo":"users\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/users\/{userId}\/memberships":{"get":{"summary":"List user memberships","operationId":"usersListMemberships","tags":["users"],"description":"Get the user membership list by its unique ID.","responses":{"200":{"description":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"listMemberships","weight":228,"cookies":false,"type":"","demo":"users\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-memberships.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]}},"\/users\/{userId}\/mfa":{"patch":{"summary":"Update MFA","operationId":"usersUpdateMfa","tags":["users"],"description":"","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateMfa","weight":242,"cookies":false,"type":"","demo":"users\/update-mfa.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-mfa.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"mfa":{"type":"boolean","description":"Enable or disable MFA.","x-example":false}},"required":["mfa"]}}}}}},"\/users\/{userId}\/mfa\/{provider}":{"delete":{"summary":"Delete Authenticator","operationId":"usersDeleteAuthenticator","tags":["users"],"description":"","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"deleteAuthenticator","weight":244,"cookies":false,"type":"","demo":"users\/delete-authenticator.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-mfa.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"provider","description":"Provider.","required":true,"schema":{"type":"string","x-example":"totp","enum":["totp"],"x-enum-name":"AuthenticatorProvider","x-enum-keys":[]},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"otp":{"type":"string","description":"Valid verification token.","x-example":"[OTP]"}},"required":["otp"]}}}}}},"\/users\/{userId}\/name":{"patch":{"summary":"Update name","operationId":"usersUpdateName","tags":["users"],"description":"Update the user name by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateName","weight":235,"cookies":false,"type":"","demo":"users\/update-name.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-name.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["name"]}}}}}},"\/users\/{userId}\/password":{"patch":{"summary":"Update password","operationId":"usersUpdatePassword","tags":["users"],"description":"Update the user password by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePassword","weight":236,"cookies":false,"type":"","demo":"users\/update-password.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-password.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"password":{"type":"string","description":"New user password. Must be at least 8 chars.","x-example":null}},"required":["password"]}}}}}},"\/users\/{userId}\/phone":{"patch":{"summary":"Update phone","operationId":"usersUpdatePhone","tags":["users"],"description":"Update the user phone by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePhone","weight":238,"cookies":false,"type":"","demo":"users\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"number":{"type":"string","description":"User phone number.","x-example":"+12065550100"}},"required":["number"]}}}}}},"\/users\/{userId}\/prefs":{"get":{"summary":"Get user preferences","operationId":"usersGetPrefs","tags":["users"],"description":"Get the user preferences by its unique ID.","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"getPrefs","weight":225,"cookies":false,"type":"","demo":"users\/get-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]},"patch":{"summary":"Update user preferences","operationId":"usersUpdatePrefs","tags":["users"],"description":"Update the user preferences by its unique ID. The object you pass is stored as is, and replaces any previous value. The maximum allowed prefs size is 64kB and throws error if exceeded.","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"updatePrefs","weight":240,"cookies":false,"type":"","demo":"users\/update-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"prefs":{"type":"object","description":"Prefs key-value JSON object.","x-example":"{}"}},"required":["prefs"]}}}}}},"\/users\/{userId}\/providers":{"get":{"summary":"List Providers","operationId":"usersListProviders","tags":["users"],"description":"","responses":{"200":{"description":"MFAProviders","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/mfaProviders"}}}}},"x-appwrite":{"method":"listProviders","weight":243,"cookies":false,"type":"","demo":"users\/list-providers.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-providers.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]}},"\/users\/{userId}\/sessions":{"get":{"summary":"List user sessions","operationId":"usersListSessions","tags":["users"],"description":"Get the user sessions list by its unique ID.","responses":{"200":{"description":"Sessions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/sessionList"}}}}},"x-appwrite":{"method":"listSessions","weight":227,"cookies":false,"type":"","demo":"users\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]},"post":{"summary":"Create session","operationId":"usersCreateSession","tags":["users"],"description":"Creates a session for a user. Returns an immediately usable session object.\n\nIf you want to generate a token for a custom authentication flow, use the [POST \/users\/{userId}\/tokens](https:\/\/appwrite.io\/docs\/server\/users#createToken) endpoint.","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"createSession","weight":245,"cookies":false,"type":"","demo":"users\/create-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-session.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]},"delete":{"summary":"Delete user sessions","operationId":"usersDeleteSessions","tags":["users"],"description":"Delete all user's sessions by using the user's unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":248,"cookies":false,"type":"","demo":"users\/delete-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]}},"\/users\/{userId}\/sessions\/{sessionId}":{"delete":{"summary":"Delete user session","operationId":"usersDeleteSession","tags":["users"],"description":"Delete a user sessions by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSession","weight":247,"cookies":false,"type":"","demo":"users\/delete-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-user-session.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"sessionId","description":"Session ID.","required":true,"schema":{"type":"string","x-example":"[SESSION_ID]"},"in":"path"}]}},"\/users\/{userId}\/status":{"patch":{"summary":"Update user status","operationId":"usersUpdateStatus","tags":["users"],"description":"Update the user status by its unique ID. Use this endpoint as an alternative to deleting a user if you want to keep user's ID reserved.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateStatus","weight":232,"cookies":false,"type":"","demo":"users\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"status":{"type":"boolean","description":"User Status. To activate the user pass `true` and to block the user pass `false`.","x-example":false}},"required":["status"]}}}}}},"\/users\/{userId}\/targets":{"get":{"summary":"List User Targets","operationId":"usersListTargets","tags":["users"],"description":"","responses":{"200":{"description":"Target list","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/targetList"}}}}},"x-appwrite":{"method":"listTargets","weight":230,"cookies":false,"type":"","demo":"users\/list-targets.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-targets.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.read","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, email, phone, status, passwordUpdate, registration, emailVerification, phoneVerification","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"post":{"summary":"Create User Target","operationId":"usersCreateTarget","tags":["users"],"description":"","responses":{"201":{"description":"Target","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/target"}}}}},"x-appwrite":{"method":"createTarget","weight":222,"cookies":false,"type":"","demo":"users\/create-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-target.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"targetId":{"type":"string","description":"Target ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[TARGET_ID]"},"providerType":{"type":"string","description":"The target provider type. Can be one of the following: `email`, `sms` or `push`.","x-example":"email","enum":["email","sms","push"],"x-enum-name":"MessagingProviderType","x-enum-keys":[]},"identifier":{"type":"string","description":"The target identifier (token, email, phone etc.)","x-example":"[IDENTIFIER]"},"providerId":{"type":"string","description":"Provider ID. Message will be sent to this target from the specified provider ID. If no provider ID is set the first setup provider will be used.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Target name. Max length: 128 chars. For example: My Awesome App Galaxy S23.","x-example":"[NAME]"}},"required":["targetId","providerType","identifier"]}}}}}},"\/users\/{userId}\/targets\/{targetId}":{"get":{"summary":"Get User Target","operationId":"usersGetTarget","tags":["users"],"description":"","responses":{"200":{"description":"Target","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/target"}}}}},"x-appwrite":{"method":"getTarget","weight":226,"cookies":false,"type":"","demo":"users\/get-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-target.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.read","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"targetId","description":"Target ID.","required":true,"schema":{"type":"string","x-example":"[TARGET_ID]"},"in":"path"}]},"patch":{"summary":"Update User target","operationId":"usersUpdateTarget","tags":["users"],"description":"","responses":{"200":{"description":"Target","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/target"}}}}},"x-appwrite":{"method":"updateTarget","weight":241,"cookies":false,"type":"","demo":"users\/update-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-target.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"targetId","description":"Target ID.","required":true,"schema":{"type":"string","x-example":"[TARGET_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"identifier":{"type":"string","description":"The target identifier (token, email, phone etc.)","x-example":"[IDENTIFIER]"},"providerId":{"type":"string","description":"Provider ID. Message will be sent to this target from the specified provider ID. If no provider ID is set the first setup provider will be used.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Target name. Max length: 128 chars. For example: My Awesome App Galaxy S23.","x-example":"[NAME]"}}}}}}},"delete":{"summary":"Delete user target","operationId":"usersDeleteTarget","tags":["users"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteTarget","weight":250,"cookies":false,"type":"","demo":"users\/delete-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-target.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"targetId","description":"Target ID.","required":true,"schema":{"type":"string","x-example":"[TARGET_ID]"},"in":"path"}]}},"\/users\/{userId}\/tokens":{"post":{"summary":"Create token","operationId":"usersCreateToken","tags":["users"],"description":"Returns a token with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [PUT \/account\/sessions\/custom](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateCustomSession) endpoint to complete the login process.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createToken","weight":246,"cookies":false,"type":"","demo":"users\/create-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-token.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"length":{"type":"integer","description":"Token length in characters. The default length is 6 characters","x-example":4},"expire":{"type":"integer","description":"Token expiration period in seconds. The default expiration is 15 minutes.","x-example":60}}}}}}}},"\/users\/{userId}\/verification":{"patch":{"summary":"Update email verification","operationId":"usersUpdateEmailVerification","tags":["users"],"description":"Update the user email verification status by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateEmailVerification","weight":239,"cookies":false,"type":"","demo":"users\/update-email-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-email-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"emailVerification":{"type":"boolean","description":"User email verification status.","x-example":false}},"required":["emailVerification"]}}}}}},"\/users\/{userId}\/verification\/phone":{"patch":{"summary":"Update phone verification","operationId":"usersUpdatePhoneVerification","tags":["users"],"description":"Update the user phone verification status by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePhoneVerification","weight":234,"cookies":false,"type":"","demo":"users\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"phoneVerification":{"type":"boolean","description":"User phone verification status.","x-example":false}},"required":["phoneVerification"]}}}}}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"project","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]},{"name":"proxy","description":"The Proxy Service allows you to configure actions for your domains beyond DNS configuration.","x-globalAttributes":[]},{"name":"graphql","description":"The GraphQL API allows you to query and mutate your Appwrite server using GraphQL.","x-globalAttributes":[]},{"name":"console","description":"The Console service allows you to interact with console relevant informations.","x-globalAttributes":[]},{"name":"migrations","description":"The Migrations service allows you to migrate third-party data to your Appwrite project.","x-globalAttributes":[]},{"name":"messaging","description":"The Messaging service allows you to send messages to any provider type (SMTP, push notification, SMS, etc.).","x-globalAttributes":[]}],"components":{"schemas":{"any":{"description":"Any","type":"object","additionalProperties":true},"error":{"description":"Error","type":"object","properties":{"message":{"type":"string","description":"Error message.","x-example":"Not found"},"code":{"type":"string","description":"Error code.","x-example":"404"},"type":{"type":"string","description":"Error type. You can learn more about all the error types at https:\/\/appwrite.io\/docs\/error-codes#errorTypes","x-example":"not_found"},"version":{"type":"string","description":"Server version number.","x-example":"1.0"}},"required":["message","code","type","version"]},"documentList":{"description":"Documents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of documents documents that matched your query.","x-example":5,"format":"int32"},"documents":{"type":"array","description":"List of documents.","items":{"$ref":"#\/components\/schemas\/document"},"x-example":""}},"required":["total","documents"]},"collectionList":{"description":"Collections List","type":"object","properties":{"total":{"type":"integer","description":"Total number of collections documents that matched your query.","x-example":5,"format":"int32"},"collections":{"type":"array","description":"List of collections.","items":{"$ref":"#\/components\/schemas\/collection"},"x-example":""}},"required":["total","collections"]},"databaseList":{"description":"Databases List","type":"object","properties":{"total":{"type":"integer","description":"Total number of databases documents that matched your query.","x-example":5,"format":"int32"},"databases":{"type":"array","description":"List of databases.","items":{"$ref":"#\/components\/schemas\/database"},"x-example":""}},"required":["total","databases"]},"indexList":{"description":"Indexes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of indexes documents that matched your query.","x-example":5,"format":"int32"},"indexes":{"type":"array","description":"List of indexes.","items":{"$ref":"#\/components\/schemas\/index"},"x-example":""}},"required":["total","indexes"]},"userList":{"description":"Users List","type":"object","properties":{"total":{"type":"integer","description":"Total number of users documents that matched your query.","x-example":5,"format":"int32"},"users":{"type":"array","description":"List of users.","items":{"$ref":"#\/components\/schemas\/user"},"x-example":""}},"required":["total","users"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of sessions documents that matched your query.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"$ref":"#\/components\/schemas\/session"},"x-example":""}},"required":["total","sessions"]},"identityList":{"description":"Identities List","type":"object","properties":{"total":{"type":"integer","description":"Total number of identities documents that matched your query.","x-example":5,"format":"int32"},"identities":{"type":"array","description":"List of identities.","items":{"$ref":"#\/components\/schemas\/identity"},"x-example":""}},"required":["total","identities"]},"logList":{"description":"Logs List","type":"object","properties":{"total":{"type":"integer","description":"Total number of logs documents that matched your query.","x-example":5,"format":"int32"},"logs":{"type":"array","description":"List of logs.","items":{"$ref":"#\/components\/schemas\/log"},"x-example":""}},"required":["total","logs"]},"fileList":{"description":"Files List","type":"object","properties":{"total":{"type":"integer","description":"Total number of files documents that matched your query.","x-example":5,"format":"int32"},"files":{"type":"array","description":"List of files.","items":{"$ref":"#\/components\/schemas\/file"},"x-example":""}},"required":["total","files"]},"bucketList":{"description":"Buckets List","type":"object","properties":{"total":{"type":"integer","description":"Total number of buckets documents that matched your query.","x-example":5,"format":"int32"},"buckets":{"type":"array","description":"List of buckets.","items":{"$ref":"#\/components\/schemas\/bucket"},"x-example":""}},"required":["total","buckets"]},"teamList":{"description":"Teams List","type":"object","properties":{"total":{"type":"integer","description":"Total number of teams documents that matched your query.","x-example":5,"format":"int32"},"teams":{"type":"array","description":"List of teams.","items":{"$ref":"#\/components\/schemas\/team"},"x-example":""}},"required":["total","teams"]},"membershipList":{"description":"Memberships List","type":"object","properties":{"total":{"type":"integer","description":"Total number of memberships documents that matched your query.","x-example":5,"format":"int32"},"memberships":{"type":"array","description":"List of memberships.","items":{"$ref":"#\/components\/schemas\/membership"},"x-example":""}},"required":["total","memberships"]},"functionList":{"description":"Functions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of functions documents that matched your query.","x-example":5,"format":"int32"},"functions":{"type":"array","description":"List of functions.","items":{"$ref":"#\/components\/schemas\/function"},"x-example":""}},"required":["total","functions"]},"runtimeList":{"description":"Runtimes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of runtimes documents that matched your query.","x-example":5,"format":"int32"},"runtimes":{"type":"array","description":"List of runtimes.","items":{"$ref":"#\/components\/schemas\/runtime"},"x-example":""}},"required":["total","runtimes"]},"deploymentList":{"description":"Deployments List","type":"object","properties":{"total":{"type":"integer","description":"Total number of deployments documents that matched your query.","x-example":5,"format":"int32"},"deployments":{"type":"array","description":"List of deployments.","items":{"$ref":"#\/components\/schemas\/deployment"},"x-example":""}},"required":["total","deployments"]},"executionList":{"description":"Executions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of executions documents that matched your query.","x-example":5,"format":"int32"},"executions":{"type":"array","description":"List of executions.","items":{"$ref":"#\/components\/schemas\/execution"},"x-example":""}},"required":["total","executions"]},"countryList":{"description":"Countries List","type":"object","properties":{"total":{"type":"integer","description":"Total number of countries documents that matched your query.","x-example":5,"format":"int32"},"countries":{"type":"array","description":"List of countries.","items":{"$ref":"#\/components\/schemas\/country"},"x-example":""}},"required":["total","countries"]},"continentList":{"description":"Continents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of continents documents that matched your query.","x-example":5,"format":"int32"},"continents":{"type":"array","description":"List of continents.","items":{"$ref":"#\/components\/schemas\/continent"},"x-example":""}},"required":["total","continents"]},"languageList":{"description":"Languages List","type":"object","properties":{"total":{"type":"integer","description":"Total number of languages documents that matched your query.","x-example":5,"format":"int32"},"languages":{"type":"array","description":"List of languages.","items":{"$ref":"#\/components\/schemas\/language"},"x-example":""}},"required":["total","languages"]},"currencyList":{"description":"Currencies List","type":"object","properties":{"total":{"type":"integer","description":"Total number of currencies documents that matched your query.","x-example":5,"format":"int32"},"currencies":{"type":"array","description":"List of currencies.","items":{"$ref":"#\/components\/schemas\/currency"},"x-example":""}},"required":["total","currencies"]},"phoneList":{"description":"Phones List","type":"object","properties":{"total":{"type":"integer","description":"Total number of phones documents that matched your query.","x-example":5,"format":"int32"},"phones":{"type":"array","description":"List of phones.","items":{"$ref":"#\/components\/schemas\/phone"},"x-example":""}},"required":["total","phones"]},"variableList":{"description":"Variables List","type":"object","properties":{"total":{"type":"integer","description":"Total number of variables documents that matched your query.","x-example":5,"format":"int32"},"variables":{"type":"array","description":"List of variables.","items":{"$ref":"#\/components\/schemas\/variable"},"x-example":""}},"required":["total","variables"]},"localeCodeList":{"description":"Locale codes list","type":"object","properties":{"total":{"type":"integer","description":"Total number of localeCodes documents that matched your query.","x-example":5,"format":"int32"},"localeCodes":{"type":"array","description":"List of localeCodes.","items":{"$ref":"#\/components\/schemas\/localeCode"},"x-example":""}},"required":["total","localeCodes"]},"providerList":{"description":"Provider list","type":"object","properties":{"total":{"type":"integer","description":"Total number of providers documents that matched your query.","x-example":5,"format":"int32"},"providers":{"type":"array","description":"List of providers.","items":{"$ref":"#\/components\/schemas\/provider"},"x-example":""}},"required":["total","providers"]},"messageList":{"description":"Message list","type":"object","properties":{"total":{"type":"integer","description":"Total number of messages documents that matched your query.","x-example":5,"format":"int32"},"messages":{"type":"array","description":"List of messages.","items":{"$ref":"#\/components\/schemas\/message"},"x-example":""}},"required":["total","messages"]},"topicList":{"description":"Topic list","type":"object","properties":{"total":{"type":"integer","description":"Total number of topics documents that matched your query.","x-example":5,"format":"int32"},"topics":{"type":"array","description":"List of topics.","items":{"$ref":"#\/components\/schemas\/topic"},"x-example":""}},"required":["total","topics"]},"subscriberList":{"description":"Subscriber list","type":"object","properties":{"total":{"type":"integer","description":"Total number of subscribers documents that matched your query.","x-example":5,"format":"int32"},"subscribers":{"type":"array","description":"List of subscribers.","items":{"$ref":"#\/components\/schemas\/subscriber"},"x-example":""}},"required":["total","subscribers"]},"targetList":{"description":"Target list","type":"object","properties":{"total":{"type":"integer","description":"Total number of targets documents that matched your query.","x-example":5,"format":"int32"},"targets":{"type":"array","description":"List of targets.","items":{"$ref":"#\/components\/schemas\/target"},"x-example":""}},"required":["total","targets"]},"database":{"description":"Database","type":"object","properties":{"$id":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Database name.","x-example":"My Database"},"$createdAt":{"type":"string","description":"Database creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Database update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"enabled":{"type":"boolean","description":"If database is enabled. Can be 'enabled' or 'disabled'. When disabled, the database is inaccessible to users, but remains accessible to Server SDKs using API keys.","x-example":false}},"required":["$id","name","$createdAt","$updatedAt","enabled"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Collection creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Collection update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Collection permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled. Can be 'enabled' or 'disabled'. When disabled, the collection is inaccessible to users, but remains accessible to Server SDKs using API keys.","x-example":false},"documentSecurity":{"type":"boolean","description":"Whether document-level permissions are enabled. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":true},"attributes":{"type":"array","description":"Collection attributes.","items":{"anyOf":[{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeRelationship"},{"$ref":"#\/components\/schemas\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"$ref":"#\/components\/schemas\/index"},"x-example":{}}},"required":["$id","$createdAt","$updatedAt","$permissions","databaseId","name","enabled","documentSecurity","attributes","indexes"]},"attributeList":{"description":"Attributes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of attributes in the given collection.","x-example":5,"format":"int32"},"attributes":{"type":"array","description":"List of attributes.","items":{"anyOf":[{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeRelationship"},{"$ref":"#\/components\/schemas\/attributeString"}]},"x-example":""}},"required":["total","attributes"]},"attributeString":{"description":"AttributeString","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"fullName"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"size":{"type":"integer","description":"Attribute size.","x-example":128,"format":"int32"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"default","nullable":true}},"required":["key","type","status","error","required","size"]},"attributeInteger":{"description":"AttributeInteger","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"count"},"type":{"type":"string","description":"Attribute type.","x-example":"integer"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"min":{"type":"integer","description":"Minimum value to enforce for new documents.","x-example":1,"format":"int32","nullable":true},"max":{"type":"integer","description":"Maximum value to enforce for new documents.","x-example":10,"format":"int32","nullable":true},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":10,"format":"int32","nullable":true}},"required":["key","type","status","error","required"]},"attributeFloat":{"description":"AttributeFloat","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"percentageCompleted"},"type":{"type":"string","description":"Attribute type.","x-example":"double"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"min":{"type":"number","description":"Minimum value to enforce for new documents.","x-example":1.5,"format":"double","nullable":true},"max":{"type":"number","description":"Maximum value to enforce for new documents.","x-example":10.5,"format":"double","nullable":true},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":2.5,"format":"double","nullable":true}},"required":["key","type","status","error","required"]},"attributeBoolean":{"description":"AttributeBoolean","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"isEnabled"},"type":{"type":"string","description":"Attribute type.","x-example":"boolean"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":false,"nullable":true}},"required":["key","type","status","error","required"]},"attributeEmail":{"description":"AttributeEmail","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"userEmail"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"format":{"type":"string","description":"String format.","x-example":"email"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"default@example.com","nullable":true}},"required":["key","type","status","error","required","format"]},"attributeEnum":{"description":"AttributeEnum","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"status"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"elements":{"type":"array","description":"Array of elements in enumerated type.","items":{"type":"string"},"x-example":"element"},"format":{"type":"string","description":"String format.","x-example":"enum"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"element","nullable":true}},"required":["key","type","status","error","required","elements","format"]},"attributeIp":{"description":"AttributeIP","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"ipAddress"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"format":{"type":"string","description":"String format.","x-example":"ip"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"192.0.2.0","nullable":true}},"required":["key","type","status","error","required","format"]},"attributeUrl":{"description":"AttributeURL","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"githubUrl"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"format":{"type":"string","description":"String format.","x-example":"url"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"http:\/\/example.com","nullable":true}},"required":["key","type","status","error","required","format"]},"attributeDatetime":{"description":"AttributeDatetime","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"birthDay"},"type":{"type":"string","description":"Attribute type.","x-example":"datetime"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"format":{"type":"string","description":"ISO 8601 format.","x-example":"datetime"},"default":{"type":"string","description":"Default value for attribute when not provided. Only null is optional","x-example":"2020-10-15T06:38:00.000+00:00","nullable":true}},"required":["key","type","status","error","required","format"]},"attributeRelationship":{"description":"AttributeRelationship","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"fullName"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"relatedCollection":{"type":"string","description":"The ID of the related collection.","x-example":"collection"},"relationType":{"type":"string","description":"The type of the relationship.","x-example":"oneToOne|oneToMany|manyToOne|manyToMany"},"twoWay":{"type":"boolean","description":"Is the relationship two-way?","x-example":false},"twoWayKey":{"type":"string","description":"The key of the two-way relationship.","x-example":"string"},"onDelete":{"type":"string","description":"How deleting the parent document will propagate to child documents.","x-example":"restrict|cascade|setNull"},"side":{"type":"string","description":"Whether this is the parent or child side of the relationship","x-example":"parent|child"}},"required":["key","type","status","error","required","relatedCollection","relationType","twoWay","twoWayKey","onDelete","side"]},"index":{"description":"Index","type":"object","properties":{"key":{"type":"string","description":"Index Key.","x-example":"index1"},"type":{"type":"string","description":"Index type.","x-example":"primary"},"status":{"type":"string","description":"Index status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an index.","x-example":"string"},"attributes":{"type":"array","description":"Index attributes.","items":{"type":"string"},"x-example":[]},"orders":{"type":"array","description":"Index orders.","items":{"type":"string"},"x-example":[],"nullable":true}},"required":["key","type","status","error","attributes"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"user":{"description":"User","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"password":{"type":"string","description":"Hashed user password.","x-example":"$argon2id$v=19$m=2048,t=4,p=3$aUZjLnliVWRINmFNTWMudg$5S+x+7uA31xFnrHFT47yFwcJeaP0w92L\/4LdgrVRXxE","nullable":true},"hash":{"type":"string","description":"Password hashing algorithm.","x-example":"argon2","nullable":true},"hashOptions":{"type":"object","description":"Password hashing algorithm configuration.","x-example":{},"items":{"oneOf":[{"$ref":"#\/components\/schemas\/algoArgon2"},{"$ref":"#\/components\/schemas\/algoScrypt"},{"$ref":"#\/components\/schemas\/algoScryptModified"},{"$ref":"#\/components\/schemas\/algoBcrypt"},{"$ref":"#\/components\/schemas\/algoPhpass"},{"$ref":"#\/components\/schemas\/algoSha"},{"$ref":"#\/components\/schemas\/algoMd5"}]},"nullable":true},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"labels":{"type":"array","description":"Labels for the user.","items":{"type":"string"},"x-example":["vip"]},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"mfa":{"type":"boolean","description":"Multi factor authentication status.","x-example":true},"totp":{"type":"boolean","description":"TOTP status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"$ref":"#\/components\/schemas\/preferences"}},"targets":{"type":"array","description":"A user-owned message receiver. A single user may have multiple e.g. emails, phones, and a browser. Each target is registered with a single provider.","items":{"$ref":"#\/components\/schemas\/target"},"x-example":[]},"accessedAt":{"type":"string","description":"Most recent access date in ISO 8601 format. This attribute is only updated again after 24 hours.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","$updatedAt","name","registration","status","labels","passwordUpdate","email","phone","emailVerification","phoneVerification","mfa","totp","prefs","targets","accessedAt"]},"algoMd5":{"description":"AlgoMD5","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"md5"}},"required":["type"]},"algoSha":{"description":"AlgoSHA","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"sha"}},"required":["type"]},"algoPhpass":{"description":"AlgoPHPass","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"phpass"}},"required":["type"]},"algoBcrypt":{"description":"AlgoBcrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"bcrypt"}},"required":["type"]},"algoScrypt":{"description":"AlgoScrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scrypt"},"costCpu":{"type":"integer","description":"CPU complexity of computed hash.","x-example":8,"format":"int32"},"costMemory":{"type":"integer","description":"Memory complexity of computed hash.","x-example":14,"format":"int32"},"costParallel":{"type":"integer","description":"Parallelization of computed hash.","x-example":1,"format":"int32"},"length":{"type":"integer","description":"Length used to compute hash.","x-example":64,"format":"int32"}},"required":["type","costCpu","costMemory","costParallel","length"]},"algoScryptModified":{"description":"AlgoScryptModified","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scryptMod"},"salt":{"type":"string","description":"Salt used to compute hash.","x-example":"UxLMreBr6tYyjQ=="},"saltSeparator":{"type":"string","description":"Separator used to compute hash.","x-example":"Bw=="},"signerKey":{"type":"string","description":"Key used to compute hash.","x-example":"XyEKE9RcTDeLEsL\/RjwPDBv\/RqDl8fb3gpYEOQaPihbxf1ZAtSOHCjuAAa7Q3oHpCYhXSN9tizHgVOwn6krflQ=="}},"required":["type","salt","saltSeparator","signerKey"]},"algoArgon2":{"description":"AlgoArgon2","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"argon2"},"memoryCost":{"type":"integer","description":"Memory used to compute hash.","x-example":65536,"format":"int32"},"timeCost":{"type":"integer","description":"Amount of time consumed to compute hash","x-example":4,"format":"int32"},"threads":{"type":"integer","description":"Number of threads used to compute hash.","x-example":3,"format":"int32"}},"required":["type","memoryCost","timeCost","threads"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true},"factors":{"type":"array","description":"Returns a list of active session factors.","items":{"type":"string"},"x-example":["email"]},"secret":{"type":"string","description":"Secret used to authenticate the user. Only included if the request was made with an API key","x-example":"5e5bb8c16897e"}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current","factors","secret"]},"identity":{"description":"Identity","type":"object","properties":{"$id":{"type":"string","description":"Identity ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Identity creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Identity update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"provider":{"type":"string","description":"Identity Provider.","x-example":"email"},"providerUid":{"type":"string","description":"ID of the User in the Identity Provider.","x-example":"5e5bb8c16897e"},"providerEmail":{"type":"string","description":"Email of the User in the Identity Provider.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Identity Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Identity Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"}},"required":["$id","$createdAt","$updatedAt","userId","provider","providerUid","providerEmail","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"phrase":{"type":"string","description":"Security phrase of a token. Empty if security phrase was not requested when creating a token. It includes randomly generated phrase which is also sent in the external resource such as email.","x-example":"Golden Fox"}},"required":["$id","$createdAt","userId","secret","expire","phrase"]},"jwt":{"description":"JWT","type":"object","properties":{"jwt":{"type":"string","description":"JWT encoded string.","x-example":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c"}},"required":["jwt"]},"locale":{"description":"Locale","type":"object","properties":{"ip":{"type":"string","description":"User IP address.","x-example":"127.0.0.1"},"countryCode":{"type":"string","description":"Country code in [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) two-character format","x-example":"US"},"country":{"type":"string","description":"Country name. This field support localization.","x-example":"United States"},"continentCode":{"type":"string","description":"Continent code. A two character continent code \"AF\" for Africa, \"AN\" for Antarctica, \"AS\" for Asia, \"EU\" for Europe, \"NA\" for North America, \"OC\" for Oceania, and \"SA\" for South America.","x-example":"NA"},"continent":{"type":"string","description":"Continent name. This field support localization.","x-example":"North America"},"eu":{"type":"boolean","description":"True if country is part of the European Union.","x-example":false},"currency":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format","x-example":"USD"}},"required":["ip","countryCode","country","continentCode","continent","eu","currency"]},"localeCode":{"description":"LocaleCode","type":"object","properties":{"code":{"type":"string","description":"Locale codes in [ISO 639-1](https:\/\/en.wikipedia.org\/wiki\/List_of_ISO_639-1_codes)","x-example":"en-us"},"name":{"type":"string","description":"Locale name","x-example":"US"}},"required":["code","name"]},"file":{"description":"File","type":"object","properties":{"$id":{"type":"string","description":"File ID.","x-example":"5e5ea5c16897e"},"bucketId":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Bucket creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Bucket update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Bucket permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"fileSecurity":{"type":"boolean","description":"Whether file-level security is enabled. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":true},"name":{"type":"string","description":"Bucket name.","x-example":"Documents"},"enabled":{"type":"boolean","description":"Bucket enabled.","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size supported.","x-example":100,"format":"int32"},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions.","items":{"type":"string"},"x-example":["jpg","png"]},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Will be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd).","x-example":"gzip"},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$createdAt","$updatedAt","$permissions","fileSecurity","name","enabled","maximumFileSize","allowedFileExtensions","compression","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"},"prefs":{"type":"object","description":"Team preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"$ref":"#\/components\/schemas\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","total","prefs"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"mfa":{"type":"boolean","description":"Multi factor authentication status, true if the user has MFA enabled or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":["owner"]}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","mfa","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Function creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Function update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"users"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"enabled":{"type":"boolean","description":"Function enabled.","x-example":false},"live":{"type":"boolean","description":"Is the function deployed with the latest configuration? This is set to false if you've changed an environment variables, entrypoint, commands, or other settings that needs redeploy to be applied. When the value is false, redeploy the function to update it with the latest configuration.","x-example":false},"logging":{"type":"boolean","description":"Whether executions will be logged. When set to false, executions will not be logged, but will reduce resource used by your Appwrite project.","x-example":false},"runtime":{"type":"string","description":"Function execution runtime.","x-example":"python-3.8"},"deployment":{"type":"string","description":"Function's active deployment ID.","x-example":"5e5ea5c16897e"},"vars":{"type":"array","description":"Function variables.","items":{"$ref":"#\/components\/schemas\/variable"},"x-example":[]},"events":{"type":"array","description":"Function trigger events.","items":{"type":"string"},"x-example":"account.create"},"schedule":{"type":"string","description":"Function execution schedult in CRON format.","x-example":"5 4 * * *"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":300,"format":"int32"},"entrypoint":{"type":"string","description":"The entrypoint file used to execute the deployment.","x-example":"index.js"},"commands":{"type":"string","description":"The build command used to build the deployment.","x-example":"npm install"},"version":{"type":"string","description":"Version of Open Runtimes used for the function.","x-example":"v2"},"installationId":{"type":"string","description":"Function VCS (Version Control System) installation id.","x-example":"6m40at4ejk5h2u9s1hboo"},"providerRepositoryId":{"type":"string","description":"VCS (Version Control System) Repository ID","x-example":"appwrite"},"providerBranch":{"type":"string","description":"VCS (Version Control System) branch name","x-example":"main"},"providerRootDirectory":{"type":"string","description":"Path to function in VCS (Version Control System) repository","x-example":"functions\/helloWorld"},"providerSilentMode":{"type":"boolean","description":"Is VCS (Version Control System) connection is in silent mode? When in silence mode, no comments will be posted on the repository pull or merge requests","x-example":false}},"required":["$id","$createdAt","$updatedAt","execute","name","enabled","live","logging","runtime","deployment","vars","events","schedule","timeout","entrypoint","commands","version","installationId","providerRepositoryId","providerBranch","providerRootDirectory","providerSilentMode"]},"runtime":{"description":"Runtime","type":"object","properties":{"$id":{"type":"string","description":"Runtime ID.","x-example":"python-3.8"},"name":{"type":"string","description":"Runtime Name.","x-example":"Python"},"version":{"type":"string","description":"Runtime version.","x-example":"3.8"},"base":{"type":"string","description":"Base Docker image used to build the runtime.","x-example":"python:3.8-alpine"},"image":{"type":"string","description":"Image name of Docker Hub.","x-example":"appwrite\\\/runtime-for-python:3.8"},"logo":{"type":"string","description":"Name of the logo image.","x-example":"python.png"},"supports":{"type":"array","description":"List of supported architectures.","items":{"type":"string"},"x-example":"amd64"}},"required":["$id","name","version","base","image","logo","supports"]},"deployment":{"description":"Deployment","type":"object","properties":{"$id":{"type":"string","description":"Deployment ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Deployment creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Deployment update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"type":{"type":"string","description":"Type of deployment.","x-example":"vcs"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"index.js"},"size":{"type":"integer","description":"The code size in bytes.","x-example":128,"format":"int32"},"buildId":{"type":"string","description":"The current build ID.","x-example":"5e5ea5c16897e"},"activate":{"type":"boolean","description":"Whether the deployment should be automatically activated.","x-example":true},"status":{"type":"string","description":"The deployment status. Possible values are \"processing\", \"building\", \"waiting\", \"ready\", and \"failed\".","x-example":"ready"},"buildLogs":{"type":"string","description":"The build logs.","x-example":"Compiling source files..."},"buildTime":{"type":"integer","description":"The current build time in seconds.","x-example":128,"format":"int32"},"providerRepositoryName":{"type":"string","description":"The name of the vcs provider repository","x-example":"database"},"providerRepositoryOwner":{"type":"string","description":"The name of the vcs provider repository owner","x-example":"utopia"},"providerRepositoryUrl":{"type":"string","description":"The url of the vcs provider repository","x-example":"https:\/\/github.com\/vermakhushboo\/g4-node-function"},"providerBranch":{"type":"string","description":"The branch of the vcs repository","x-example":"0.7.x"},"providerCommitHash":{"type":"string","description":"The commit hash of the vcs commit","x-example":"7c3f25d"},"providerCommitAuthorUrl":{"type":"string","description":"The url of vcs commit author","x-example":"https:\/\/github.com\/vermakhushboo"},"providerCommitAuthor":{"type":"string","description":"The name of vcs commit author","x-example":"Khushboo Verma"},"providerCommitMessage":{"type":"string","description":"The commit message","x-example":"Update index.js"},"providerCommitUrl":{"type":"string","description":"The url of the vcs commit","x-example":"https:\/\/github.com\/vermakhushboo\/g4-node-function\/commit\/60c0416257a9cbcdd96b2d370c38d8f8d150ccfb"},"providerBranchUrl":{"type":"string","description":"The branch of the vcs repository","x-example":"https:\/\/github.com\/vermakhushboo\/appwrite\/tree\/0.7.x"}},"required":["$id","$createdAt","$updatedAt","type","resourceId","resourceType","entrypoint","size","buildId","activate","status","buildLogs","buildTime","providerRepositoryName","providerRepositoryOwner","providerRepositoryUrl","providerBranch","providerCommitHash","providerCommitAuthorUrl","providerCommitAuthor","providerCommitMessage","providerCommitUrl","providerBranchUrl"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"requestMethod":{"type":"string","description":"HTTP request method type.","x-example":"GET"},"requestPath":{"type":"string","description":"HTTP request path and query.","x-example":"\/articles?id=5"},"requestHeaders":{"type":"array","description":"HTTP response headers as a key-value object. This will return only whitelisted headers. All headers are returned if execution is created as synchronous.","items":{"$ref":"#\/components\/schemas\/headers"},"x-example":[{"Content-Type":"application\/json"}]},"responseStatusCode":{"type":"integer","description":"HTTP response status code.","x-example":200,"format":"int32"},"responseBody":{"type":"string","description":"HTTP response body. This will return empty unless execution is created as synchronous.","x-example":"Developers are awesome."},"responseHeaders":{"type":"array","description":"HTTP response headers as a key-value object. This will return only whitelisted headers. All headers are returned if execution is created as synchronous.","items":{"$ref":"#\/components\/schemas\/headers"},"x-example":[{"Content-Type":"application\/json"}]},"logs":{"type":"string","description":"Function logs. Includes the last 4,000 characters. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"errors":{"type":"string","description":"Function errors. Includes the last 4,000 characters. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"Function execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","requestMethod","requestPath","requestHeaders","responseStatusCode","responseBody","responseHeaders","logs","errors","duration"]},"variable":{"description":"Variable","type":"object","properties":{"$id":{"type":"string","description":"Variable ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"key":{"type":"string","description":"Variable key.","x-example":"API_KEY"},"value":{"type":"string","description":"Variable value.","x-example":"myPa$$word1"},"resourceType":{"type":"string","description":"Service to which the variable belongs. Possible values are \"project\", \"function\"","x-example":"function"},"resourceId":{"type":"string","description":"ID of resource to which the variable belongs. If resourceType is \"project\", it is empty. If resourceType is \"function\", it is ID of the function.","x-example":"myAwesomeFunction"}},"required":["$id","$createdAt","$updatedAt","key","value","resourceType","resourceId"]},"country":{"description":"Country","type":"object","properties":{"name":{"type":"string","description":"Country name.","x-example":"United States"},"code":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"}},"required":["name","code"]},"continent":{"description":"Continent","type":"object","properties":{"name":{"type":"string","description":"Continent name.","x-example":"Europe"},"code":{"type":"string","description":"Continent two letter code.","x-example":"EU"}},"required":["name","code"]},"language":{"description":"Language","type":"object","properties":{"name":{"type":"string","description":"Language name.","x-example":"Italian"},"code":{"type":"string","description":"Language two-character ISO 639-1 codes.","x-example":"it"},"nativeName":{"type":"string","description":"Language native name.","x-example":"Italiano"}},"required":["name","code","nativeName"]},"currency":{"description":"Currency","type":"object","properties":{"symbol":{"type":"string","description":"Currency symbol.","x-example":"$"},"name":{"type":"string","description":"Currency name.","x-example":"US dollar"},"symbolNative":{"type":"string","description":"Currency native symbol.","x-example":"$"},"decimalDigits":{"type":"integer","description":"Number of decimal digits.","x-example":2,"format":"int32"},"rounding":{"type":"number","description":"Currency digit rounding.","x-example":0,"format":"double"},"code":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format.","x-example":"USD"},"namePlural":{"type":"string","description":"Currency plural name","x-example":"US dollars"}},"required":["symbol","name","symbolNative","decimalDigits","rounding","code","namePlural"]},"phone":{"description":"Phone","type":"object","properties":{"code":{"type":"string","description":"Phone code.","x-example":"+1"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["code","countryCode","countryName"]},"healthAntivirus":{"description":"Health Antivirus","type":"object","properties":{"version":{"type":"string","description":"Antivirus version.","x-example":"1.0.0"},"status":{"type":"string","description":"Antivirus status. Possible values can are: `disabled`, `offline`, `online`","x-example":"online"}},"required":["version","status"]},"healthQueue":{"description":"Health Queue","type":"object","properties":{"size":{"type":"integer","description":"Amount of actions in the queue.","x-example":8,"format":"int32"}},"required":["size"]},"healthStatus":{"description":"Health Status","type":"object","properties":{"name":{"type":"string","description":"Name of the service.","x-example":"database"},"ping":{"type":"integer","description":"Duration in milliseconds how long the health check took.","x-example":128,"format":"int32"},"status":{"type":"string","description":"Service status. Possible values can are: `pass`, `fail`","x-example":"pass"}},"required":["name","ping","status"]},"healthTime":{"description":"Health Time","type":"object","properties":{"remoteTime":{"type":"integer","description":"Current unix timestamp on trustful remote server.","x-example":1639490751,"format":"int32"},"localTime":{"type":"integer","description":"Current unix timestamp of local server where Appwrite runs.","x-example":1639490844,"format":"int32"},"diff":{"type":"integer","description":"Difference of unix remote and local timestamps in milliseconds.","x-example":93,"format":"int32"}},"required":["remoteTime","localTime","diff"]},"headers":{"description":"Headers","type":"object","properties":{"name":{"type":"string","description":"Header name.","x-example":"Content-Type"},"value":{"type":"string","description":"Header value.","x-example":"application\/json"}},"required":["name","value"]},"mfaChallenge":{"description":"MFA Challenge","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","userId","expire"]},"mfaProvider":{"description":"MFAProvider","type":"object","properties":{"backups":{"type":"array","description":"Backup codes.","items":{"type":"string"},"x-example":true},"secret":{"type":"string","description":"Secret token used for TOTP factor.","x-example":true},"uri":{"type":"string","description":"URI for authenticator apps.","x-example":true}},"required":["backups","secret","uri"]},"mfaProviders":{"description":"MFAProviders","type":"object","properties":{"totp":{"type":"boolean","description":"TOTP","x-example":true},"phone":{"type":"boolean","description":"Phone","x-example":true},"email":{"type":"boolean","description":"Email","x-example":true}},"required":["totp","phone","email"]},"provider":{"description":"Provider","type":"object","properties":{"$id":{"type":"string","description":"Provider ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Provider creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Provider update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"The name for the provider instance.","x-example":"Mailgun"},"provider":{"type":"string","description":"The name of the provider service.","x-example":"mailgun"},"enabled":{"type":"boolean","description":"Is provider enabled?","x-example":true},"type":{"type":"string","description":"Type of provider.","x-example":"sms"},"credentials":{"type":"object","description":"Provider credentials.","x-example":{"key":"123456789"}},"options":{"type":"object","description":"Provider options.","x-example":{"from":"sender-email@mydomain"},"nullable":true}},"required":["$id","$createdAt","$updatedAt","name","provider","enabled","type","credentials"]},"message":{"description":"Message","type":"object","properties":{"$id":{"type":"string","description":"Message ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Message creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Message update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerType":{"type":"string","description":"Message provider type.","x-example":"email"},"topics":{"type":"array","description":"Topic IDs set as recipients.","items":{"type":"string"},"x-example":["5e5ea5c16897e"]},"users":{"type":"array","description":"User IDs set as recipients.","items":{"type":"string"},"x-example":["5e5ea5c16897e"]},"targets":{"type":"array","description":"Target IDs set as recipients.","items":{"type":"string"},"x-example":["5e5ea5c16897e"]},"scheduledAt":{"type":"string","description":"The scheduled time for message.","x-example":"2020-10-15T06:38:00.000+00:00","nullable":true},"deliveredAt":{"type":"string","description":"The time when the message was delivered.","x-example":"2020-10-15T06:38:00.000+00:00","nullable":true},"deliveryErrors":{"type":"array","description":"Delivery errors if any.","items":{"type":"string"},"x-example":["Failed to send message to target 5e5ea5c16897e: Credentials not valid."],"nullable":true},"deliveredTotal":{"type":"integer","description":"Number of recipients the message was delivered to.","x-example":1,"format":"int32"},"data":{"type":"object","description":"Data of the message.","x-example":{"subject":"Welcome to Appwrite","content":"Hi there, welcome to Appwrite family."}},"status":{"type":"string","description":"Status of delivery.","x-example":"Message status can be one of the following: processing, sent, cancelled, failed."}},"required":["$id","$createdAt","$updatedAt","providerType","topics","users","targets","deliveredTotal","data","status"]},"topic":{"description":"Topic","type":"object","properties":{"$id":{"type":"string","description":"Topic ID.","x-example":"259125845563242502"},"$createdAt":{"type":"string","description":"Topic creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Topic update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"The name of the topic.","x-example":"events"},"total":{"type":"integer","description":"Total count of subscribers subscribed to topic.","x-example":100,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","name","total"]},"subscriber":{"description":"Subscriber","type":"object","properties":{"$id":{"type":"string","description":"Subscriber ID.","x-example":"259125845563242502"},"$createdAt":{"type":"string","description":"Subscriber creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Subscriber update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"targetId":{"type":"string","description":"Target ID.","x-example":"259125845563242502"},"target":{"type":"object","description":"Target.","x-example":{"$id":"259125845563242502","$createdAt":"2020-10-15T06:38:00.000+00:00","$updatedAt":"2020-10-15T06:38:00.000+00:00","providerType":"email","providerId":"259125845563242502","name":"ageon-app-email","identifier":"random-mail@email.org","userId":"5e5ea5c16897e"},"items":{"$ref":"#\/components\/schemas\/target"}},"userId":{"type":"string","description":"Topic ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User Name.","x-example":"Aegon Targaryen"},"topicId":{"type":"string","description":"Topic ID.","x-example":"259125845563242502"},"providerType":{"type":"string","description":"The target provider type. Can be one of the following: `email`, `sms` or `push`.","x-example":"email"}},"required":["$id","$createdAt","$updatedAt","targetId","target","userId","userName","topicId","providerType"]},"target":{"description":"Target","type":"object","properties":{"$id":{"type":"string","description":"Target ID.","x-example":"259125845563242502"},"$createdAt":{"type":"string","description":"Target creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Target update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Target Name.","x-example":"Aegon apple token"},"userId":{"type":"string","description":"User ID.","x-example":"259125845563242502"},"providerId":{"type":"string","description":"Provider ID.","x-example":"259125845563242502","nullable":true},"providerType":{"type":"string","description":"The target provider type. Can be one of the following: `email`, `sms` or `push`.","x-example":"email"},"identifier":{"type":"string","description":"The target identifier.","x-example":"token"}},"required":["$id","$createdAt","$updatedAt","name","userId","providerType","identifier"]}},"securitySchemes":{"Project":{"type":"apiKey","name":"X-Appwrite-Project","description":"Your project ID","in":"header","x-appwrite":{"demo":"5df5acd0d48c2"}},"Key":{"type":"apiKey","name":"X-Appwrite-Key","description":"Your secret API key","in":"header","x-appwrite":{"demo":"919c2d18fb5d4...a2ae413da83346ad2"}},"JWT":{"type":"apiKey","name":"X-Appwrite-JWT","description":"Your secret JSON Web Token","in":"header"},"Locale":{"type":"apiKey","name":"X-Appwrite-Locale","description":"","in":"header","x-appwrite":{"demo":"en"}},"Session":{"type":"apiKey","name":"X-Appwrite-Session","description":"The user session to authenticate with","in":"header"},"ForwardedFor":{"type":"apiKey","name":"X-Forwarded-For","description":"The IP address of the client that made the request","in":"header"},"ForwardedUserAgent":{"type":"apiKey","name":"X-Forwarded-User-Agent","description":"The user agent string of the client that made the request","in":"header"}}},"externalDocs":{"description":"Full API docs, specs and tutorials","url":"https:\/\/appwrite.io\/docs"}} \ No newline at end of file +{"openapi":"3.0.0","info":{"version":"1.4.13","title":"Appwrite","description":"Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https:\/\/appwrite.io\/docs](https:\/\/appwrite.io\/docs)","termsOfService":"https:\/\/appwrite.io\/policy\/terms","contact":{"name":"Appwrite Team","url":"https:\/\/appwrite.io\/support","email":"team@appwrite.io"},"license":{"name":"BSD-3-Clause","url":"https:\/\/raw.githubusercontent.com\/appwrite\/appwrite\/master\/LICENSE"}},"servers":[{"url":"https:\/\/cloud.appwrite.io\/v1"}],"paths":{"\/account":{"get":{"summary":"Get account","operationId":"accountGet","tags":["account"],"description":"Get the currently logged in user.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"get","weight":22,"cookies":false,"type":"","demo":"account\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]},"post":{"summary":"Create account","operationId":"accountCreate","tags":["account"],"description":"Use this endpoint to allow a new user to register a new account in your project. After the user registration completes successfully, you can use the [\/account\/verfication](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createVerification) route to start verifying the user email address. To allow the new user to login to their new account, you need to create a new [account session](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createEmailSession).","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"create","weight":7,"cookies":false,"type":"","demo":"account\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"New user password. Must be between 8 and 256 chars.","x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/account\/email":{"patch":{"summary":"Update email","operationId":"accountUpdateEmail","tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateEmail","weight":29,"cookies":false,"type":"","demo":"account\/update-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","x-example":"password"}},"required":["email","password"]}}}}}},"\/account\/identities":{"get":{"summary":"List Identities","operationId":"accountListIdentities","tags":["account"],"description":"Get the list of identities for the currently logged in user.","responses":{"200":{"description":"Identities List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/identityList"}}}}},"x-appwrite":{"method":"listIdentities","weight":13,"cookies":false,"type":"","demo":"account\/list-identities.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-identities.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/identities","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, provider, providerUid, providerEmail, providerAccessTokenExpiry","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/identities\/{identityId}":{"delete":{"summary":"Delete identity","operationId":"accountDeleteIdentity","tags":["account"],"description":"Delete an identity by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIdentity","weight":14,"cookies":false,"type":"","demo":"account\/delete-identity.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-identity.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"identityId","description":"Identity ID.","required":true,"schema":{"type":"string","x-example":"[IDENTITY_ID]"},"in":"path"}]}},"\/account\/jwt":{"post":{"summary":"Create JWT","operationId":"accountCreateJWT","tags":["account"],"description":"Use this endpoint to create a JSON Web Token. You can use the resulting JWT to authenticate on behalf of the current user when working with the Appwrite server-side API and SDKs. The JWT secret is valid for 15 minutes from its creation and will be invalid if the user will logout in that time frame.","responses":{"201":{"description":"JWT","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/jwt"}}}}},"x-appwrite":{"method":"createJWT","weight":21,"cookies":false,"type":"","demo":"account\/create-j-w-t.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-jwt.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"accounts.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"List logs","operationId":"accountListLogs","tags":["account"],"description":"Get the list of latest security activity logs for the currently logged in user. Each log returns user IP address, location and date and time of log.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listLogs","weight":25,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/mfa":{"patch":{"summary":"Update MFA","operationId":"accountUpdateMFA","tags":["account"],"description":"","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateMFA","weight":42,"cookies":false,"type":"","demo":"account\/update-m-f-a.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-mfa.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"mfa":{"type":"boolean","description":"Enable or disable MFA.","x-example":false}},"required":["mfa"]}}}}}},"\/account\/mfa\/challenge":{"post":{"summary":"Create 2FA Challenge","operationId":"accountCreate2FAChallenge","tags":["account"],"description":"","responses":{"201":{"description":"MFA Challenge","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/mfaChallenge"}}}}},"x-appwrite":{"method":"create2FAChallenge","weight":47,"cookies":false,"type":"","demo":"account\/create2f-a-challenge.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-2fa-challenge.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},token:{param-token}","scope":"accounts.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"factor":{"type":"string","description":"Factor used for verification.","x-example":"totp","enum":["totp","phone","email"],"x-enum-name":null,"x-enum-keys":[]}},"required":["factor"]}}}}},"put":{"summary":"Create MFA Challenge (confirmation)","operationId":"accountUpdateChallenge","tags":["account"],"description":"","responses":{"204":{"description":"No content","content":{"":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateChallenge","weight":48,"cookies":false,"type":"","demo":"account\/update-challenge.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-challenge.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"challengeId":{"type":"string","description":"ID of the challenge.","x-example":"[CHALLENGE_ID]"},"otp":{"type":"string","description":"Valid verification token.","x-example":"[OTP]"}},"required":["challengeId","otp"]}}}}}},"\/account\/mfa\/factors":{"get":{"summary":"List Factors","operationId":"accountListFactors","tags":["account"],"description":"","responses":{"200":{"description":"MFAFactors","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/mfaFactors"}}}}},"x-appwrite":{"method":"listFactors","weight":43,"cookies":false,"type":"","demo":"account\/list-factors.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-factors.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/account\/mfa\/{type}":{"post":{"summary":"Add Authenticator","operationId":"accountAddAuthenticator","tags":["account"],"description":"","responses":{"200":{"description":"MFAType","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/mfaType"}}}}},"x-appwrite":{"method":"addAuthenticator","weight":44,"cookies":false,"type":"","demo":"account\/add-authenticator.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/add-authenticator.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"type","description":"Type of authenticator.","required":true,"schema":{"type":"string","x-example":"totp","enum":["totp"],"x-enum-name":null,"x-enum-keys":[]},"in":"path"}]},"put":{"summary":"Verify Authenticator","operationId":"accountVerifyAuthenticator","tags":["account"],"description":"","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"verifyAuthenticator","weight":45,"cookies":false,"type":"","demo":"account\/verify-authenticator.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/verify-authenticator.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"type","description":"Type of authenticator.","required":true,"schema":{"type":"string","x-example":"totp","enum":["totp"],"x-enum-name":null,"x-enum-keys":[]},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"otp":{"type":"string","description":"Valid verification token.","x-example":"[OTP]"}},"required":["otp"]}}}}},"delete":{"summary":"Delete Authenticator","operationId":"accountDeleteAuthenticator","tags":["account"],"description":"","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"deleteAuthenticator","weight":46,"cookies":false,"type":"","demo":"account\/delete-authenticator.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-mfa.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"type","description":"Type of authenticator.","required":true,"schema":{"type":"string","x-example":"totp","enum":["totp"],"x-enum-name":null,"x-enum-keys":[]},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"otp":{"type":"string","description":"Valid verification token.","x-example":"[OTP]"}},"required":["otp"]}}}}}},"\/account\/name":{"patch":{"summary":"Update name","operationId":"accountUpdateName","tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateName","weight":27,"cookies":false,"type":"","demo":"account\/update-name.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-name.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["name"]}}}}}},"\/account\/password":{"patch":{"summary":"Update password","operationId":"accountUpdatePassword","tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePassword","weight":28,"cookies":false,"type":"","demo":"account\/update-password.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-password.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"password":{"type":"string","description":"New user password. Must be at least 8 chars.","x-example":null},"oldPassword":{"type":"string","description":"Current user password. Must be at least 8 chars.","x-example":"password"}},"required":["password"]}}}}}},"\/account\/phone":{"patch":{"summary":"Update phone","operationId":"accountUpdatePhone","tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createPhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePhone","weight":30,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","x-example":"password"}},"required":["phone","password"]}}}}}},"\/account\/prefs":{"get":{"summary":"Get account preferences","operationId":"accountGetPrefs","tags":["account"],"description":"Get the preferences as a key-value object for the currently logged in user.","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"getPrefs","weight":23,"cookies":false,"type":"","demo":"account\/get-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/prefs","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]},"patch":{"summary":"Update preferences","operationId":"accountUpdatePrefs","tags":["account"],"description":"Update currently logged in user account preferences. The object you pass is stored as is, and replaces any previous value. The maximum allowed prefs size is 64kB and throws error if exceeded.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePrefs","weight":31,"cookies":false,"type":"","demo":"account\/update-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/prefs","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"prefs":{"type":"object","description":"Prefs key-value JSON object.","x-example":"{}"}},"required":["prefs"]}}}}}},"\/account\/recovery":{"post":{"summary":"Create password recovery","operationId":"accountCreateRecovery","tags":["account"],"description":"Sends the user an email with a temporary secret key for password reset. When the user clicks the confirmation link he is redirected back to your app password reset URL with the secret key and email address values attached to the URL query string. Use the query string params to submit a request to the [PUT \/account\/recovery](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateRecovery) endpoint to complete the process. The verification link sent to the user's email address is valid for 1 hour.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createRecovery","weight":36,"cookies":false,"type":"","demo":"account\/create-recovery.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-recovery.md","rate-limit":10,"rate-time":3600,"rate-key":["url:{url},email:{param-email}","url:{url},ip:{ip}"],"scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"url":{"type":"string","description":"URL to redirect the user back to your app from the recovery email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"}},"required":["email","url"]}}}}},"put":{"summary":"Create password recovery (confirmation)","operationId":"accountUpdateRecovery","tags":["account"],"description":"Use this endpoint to complete the user account password reset. Both the **userId** and **secret** arguments will be passed as query parameters to the redirect URL you have provided when sending your request to the [POST \/account\/recovery](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createRecovery) endpoint.\n\nPlease note that in order to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) the only valid redirect URLs are the ones from domains you have set when adding your platforms in the console interface.","responses":{"200":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"updateRecovery","weight":37,"cookies":false,"type":"","demo":"account\/update-recovery.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-recovery.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid reset token.","x-example":"[SECRET]"},"password":{"type":"string","description":"New user password. Must be between 8 and 256 chars.","x-example":null}},"required":["userId","secret","password"]}}}}}},"\/account\/sessions":{"get":{"summary":"List sessions","operationId":"accountListSessions","tags":["account"],"description":"Get the list of active sessions across different devices for the currently logged in user.","responses":{"200":{"description":"Sessions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/sessionList"}}}}},"x-appwrite":{"method":"listSessions","weight":24,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/sessions","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]},"delete":{"summary":"Delete sessions","operationId":"accountDeleteSessions","tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":35,"cookies":false,"type":"","demo":"account\/delete-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-sessions.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/account\/sessions\/anonymous":{"post":{"summary":"Create anonymous session","operationId":"accountCreateAnonymousSession","tags":["account"],"description":"Use this endpoint to allow a new user to register an anonymous account in your project. This route will also create a new session for the user. To allow the new user to convert an anonymous account to a normal account, you need to update its [email and password](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateEmail) or create an [OAuth2 session](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#CreateOAuth2Session).","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"createAnonymousSession","weight":20,"cookies":false,"type":"","demo":"account\/create-anonymous-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-anonymous.md","rate-limit":50,"rate-time":3600,"rate-key":"ip:{ip}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/sessions\/email":{"post":{"summary":"Create email password session","operationId":"accountCreateEmailPasswordSession","tags":["account"],"description":"Allow the user to login into their account by providing a valid email and password combination. This route will create a new session for the user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"createEmailPasswordSession","weight":8,"cookies":false,"type":"","demo":"account\/create-email-password-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-email-password.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","x-example":"password"}},"required":["email","password"]}}}}}},"\/account\/sessions\/magic-url":{"put":{"summary":"Create session (deprecated)","operationId":"accountUpdateMagicURLSession","tags":["account"],"description":"Use this endpoint to create a session from token. Provide the **userId** and **secret** parameters from the successful response of authentication flows initiated by token creation. For example, magic URL and phone login.","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateMagicURLSession","weight":17,"cookies":false,"type":"","demo":"account\/update-magic-u-r-l-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session.md","rate-limit":10,"rate-time":3600,"rate-key":"ip:{ip},userId:{param-userId}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/account\/sessions\/oauth2\/{provider}":{"get":{"summary":"Create OAuth2 session","operationId":"accountCreateOAuth2Session","tags":["account"],"description":"Allow the user to login to their account using the OAuth2 provider of their choice. Each OAuth2 provider should be enabled from the Appwrite console first. Use the success and failure arguments to provide a redirect URL's back to your app when login is completed.\n\nIf there is already an active session, the new session will be attached to the logged-in account. If there are no active sessions, the server will attempt to look for a user with the same email address as the email received from the OAuth2 provider and attach the new session to the existing user. If no matching user is found - the server will create a new user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).\n","responses":{"301":{"description":"File"}},"x-appwrite":{"method":"createOAuth2Session","weight":9,"cookies":false,"type":"webAuth","demo":"account\/create-o-auth2session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-oauth2.md","rate-limit":50,"rate-time":3600,"rate-key":"ip:{ip}","scope":"sessions.write","platforms":["client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"provider","description":"OAuth2 Provider. Currently, supported providers are: amazon, apple, auth0, authentik, autodesk, bitbucket, bitly, box, dailymotion, discord, disqus, dropbox, etsy, facebook, github, gitlab, google, linkedin, microsoft, notion, oidc, okta, paypal, paypalSandbox, podio, salesforce, slack, spotify, stripe, tradeshift, tradeshiftBox, twitch, wordpress, yahoo, yammer, yandex, zoho, zoom.","required":true,"schema":{"type":"string","x-example":"amazon","enum":["amazon","apple","auth0","authentik","autodesk","bitbucket","bitly","box","dailymotion","discord","disqus","dropbox","etsy","facebook","github","gitlab","google","linkedin","microsoft","notion","oidc","okta","paypal","paypalSandbox","podio","salesforce","slack","spotify","stripe","tradeshift","tradeshiftBox","twitch","wordpress","yahoo","yammer","yandex","zoho","zoom","mock"],"x-enum-name":"OAuthProvider","x-enum-keys":[]},"in":"path"},{"name":"success","description":"URL to redirect back to your app after a successful login attempt. Only URLs from hostnames in your project's platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","required":false,"schema":{"type":"string","format":"url","x-example":"https:\/\/example.com","default":""},"in":"query"},{"name":"failure","description":"URL to redirect back to your app after a failed login attempt. Only URLs from hostnames in your project's platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","required":false,"schema":{"type":"string","format":"url","x-example":"https:\/\/example.com","default":""},"in":"query"},{"name":"token","description":"Include token credentials in the final redirect, useful for server-side integrations, or when cookies are not available.","required":false,"schema":{"type":"boolean","x-example":false,"default":false},"in":"query"},{"name":"scopes","description":"A list of custom OAuth2 scopes. Check each provider internal docs for a list of supported scopes. Maximum of 100 scopes are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/sessions\/token":{"post":{"summary":"Create session","operationId":"accountCreateSession","tags":["account"],"description":"Use this endpoint to create a session from token. Provide the **userId** and **secret** parameters from the successful response of authentication flows initiated by token creation. For example, magic URL and phone login.","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"createSession","weight":18,"cookies":false,"type":"","demo":"account\/create-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session.md","rate-limit":10,"rate-time":3600,"rate-key":"ip:{ip},userId:{param-userId}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Secret of a token generated by login methods. For example, the `createMagicURLToken` or `createPhoneToken` methods.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/account\/sessions\/{sessionId}":{"get":{"summary":"Get session","operationId":"accountGetSession","tags":["account"],"description":"Use this endpoint to get a logged in user's session using a Session ID. Inputting 'current' will return the current session being used.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"getSession","weight":26,"cookies":false,"type":"","demo":"account\/get-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-session.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/sessions","offline-key":"{sessionId}","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to get the current device session.","required":true,"schema":{"type":"string","x-example":"[SESSION_ID]"},"in":"path"}]},"patch":{"summary":"Update (or renew) a session","operationId":"accountUpdateSession","tags":["account"],"description":"Extend session's expiry to increase it's lifespan. Extending a session is useful when session length is short such as 5 minutes.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateSession","weight":34,"cookies":false,"type":"","demo":"account\/update-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-session.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to update the current device session.","required":true,"schema":{"type":"string","x-example":"[SESSION_ID]"},"in":"path"}]},"delete":{"summary":"Delete session","operationId":"accountDeleteSession","tags":["account"],"description":"Logout the user. Use 'current' as the session ID to logout on this device, use a session ID to logout on another device. If you're looking to logout the user on all devices, use [Delete Sessions](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#deleteSessions) instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSession","weight":33,"cookies":false,"type":"","demo":"account\/delete-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-session.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to delete the current device session.","required":true,"schema":{"type":"string","x-example":"[SESSION_ID]"},"in":"path"}]}},"\/account\/status":{"patch":{"summary":"Update status","operationId":"accountUpdateStatus","tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateStatus","weight":32,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/account\/tokens\/email":{"post":{"summary":"Create email token (OTP)","operationId":"accountCreateEmailToken","tags":["account"],"description":"Sends the user an email with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [POST \/v1\/account\/sessions\/token](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createSession) endpoint to complete the login process. The secret sent to the user's email is valid for 15 minutes.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createEmailToken","weight":16,"cookies":false,"type":"","demo":"account\/create-email-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-token-email.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"phrase":{"type":"boolean","description":"Toggle for security phrase. If enabled, email will be send with a randomly generated phrase and the phrase will also be included in the response. Confirming phrases match increases the security of your authentication flow.","x-example":false}},"required":["userId","email"]}}}}}},"\/account\/tokens\/magic-url":{"post":{"summary":"Create magic URL token","operationId":"accountCreateMagicURLToken","tags":["account"],"description":"Sends the user an email with a secret key for creating a session. If the provided user ID has not been registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [POST \/v1\/account\/sessions\/token](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createSession) endpoint to complete the login process. The link sent to the user's email address is valid for 1 hour. If you are on a mobile device you can leave the URL parameter empty, so that the login completion will be handled by your Appwrite instance by default.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).\n","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createMagicURLToken","weight":15,"cookies":false,"type":"","demo":"account\/create-magic-u-r-l-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-token-magic-url.md","rate-limit":60,"rate-time":3600,"rate-key":["url:{url},email:{param-email}","url:{url},ip:{ip}"],"scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"url":{"type":"string","description":"URL to redirect the user back to your app from the magic URL login. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"},"phrase":{"type":"boolean","description":"Toggle for security phrase. If enabled, email will be send with a randomly generated phrase and the phrase will also be included in the response. Confirming phrases match increases the security of your authentication flow.","x-example":false}},"required":["userId","email"]}}}}}},"\/account\/tokens\/phone":{"post":{"summary":"Create phone token","operationId":"accountCreatePhoneToken","tags":["account"],"description":"Sends the user an SMS with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [POST \/v1\/account\/sessions\/token](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createSession) endpoint to complete the login process. The secret sent to the user's phone is valid for 15 minutes.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createPhoneToken","weight":19,"cookies":false,"type":"","demo":"account\/create-phone-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-token-phone.md","rate-limit":10,"rate-time":3600,"rate-key":["url:{url},phone:{param-phone}","url:{url},ip:{ip}"],"scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"}},"required":["userId","phone"]}}}}}},"\/account\/verification":{"post":{"summary":"Create email verification","operationId":"accountCreateVerification","tags":["account"],"description":"Use this endpoint to send a verification message to your user email address to confirm they are the valid owners of that address. Both the **userId** and **secret** arguments will be passed as query parameters to the URL you have provided to be attached to the verification email. The provided URL should redirect the user back to your app and allow you to complete the verification process by verifying both the **userId** and **secret** parameters. Learn more about how to [complete the verification process](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateVerification). The verification link sent to the user's email address is valid for 7 days.\n\nPlease note that in order to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md), the only valid redirect URLs are the ones from domains you have set when adding your platforms in the console interface.\n","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createVerification","weight":38,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"url":{"type":"string","description":"URL to redirect the user back to your app from the verification email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"}},"required":["url"]}}}}},"put":{"summary":"Create email verification (confirmation)","operationId":"accountUpdateVerification","tags":["account"],"description":"Use this endpoint to complete the user email verification process. Use both the **userId** and **secret** parameters that were attached to your app URL to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"updateVerification","weight":39,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/account\/verification\/phone":{"post":{"summary":"Create phone verification","operationId":"accountCreatePhoneVerification","tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updatePhone) endpoint. Learn more about how to [complete the verification process](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createPhoneVerification","weight":40,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":["url:{url},userId:{userId}","url:{url},ip:{ip}"],"scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]},"put":{"summary":"Create phone verification (confirmation)","operationId":"accountUpdatePhoneVerification","tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"updatePhoneVerification","weight":41,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/avatars\/browsers\/{code}":{"get":{"summary":"Get browser icon","operationId":"avatarsGetBrowser","tags":["avatars"],"description":"You can use this endpoint to show different browser icons to your users. The code argument receives the browser code as it appears in your user [GET \/account\/sessions](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#getSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getBrowser","weight":54,"cookies":false,"type":"location","demo":"avatars\/get-browser.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-browser.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Browser Code.","required":true,"schema":{"type":"string","x-example":"aa","enum":["aa","an","ch","ci","cm","cr","ff","sf","mf","ps","oi","om","op","on"],"x-enum-name":"Browser","x-enum-keys":["Avant Browser","Android WebView Beta","Google Chrome","Google Chrome (iOS)","Google Chrome (Mobile)","Chromium","Mozilla Firefox","Safari","Mobile Safari","Microsoft Edge","Microsoft Edge (iOS)","Opera Mini","Opera","Opera (Next)"]},"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"}]}},"\/avatars\/credit-cards\/{code}":{"get":{"summary":"Get credit card icon","operationId":"avatarsGetCreditCard","tags":["avatars"],"description":"The credit card endpoint will return you the icon of the credit card provider you need. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getCreditCard","weight":53,"cookies":false,"type":"location","demo":"avatars\/get-credit-card.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-credit-card.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Credit Card Code. Possible values: amex, argencard, cabal, censosud, diners, discover, elo, hipercard, jcb, mastercard, naranja, targeta-shopping, union-china-pay, visa, mir, maestro.","required":true,"schema":{"type":"string","x-example":"amex","enum":["amex","argencard","cabal","censosud","diners","discover","elo","hipercard","jcb","mastercard","naranja","targeta-shopping","union-china-pay","visa","mir","maestro"],"x-enum-name":"CreditCard","x-enum-keys":["American Express","Argencard","Cabal","Consosud","Diners Club","Discover","Elo","Hipercard","JCB","Mastercard","Naranja","Tarjeta Shopping","Union China Pay","Visa","MIR","Maestro"]},"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"}]}},"\/avatars\/favicon":{"get":{"summary":"Get favicon","operationId":"avatarsGetFavicon","tags":["avatars"],"description":"Use this endpoint to fetch the favorite icon (AKA favicon) of any remote website URL.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFavicon","weight":57,"cookies":false,"type":"location","demo":"avatars\/get-favicon.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-favicon.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"url","description":"Website URL which you want to fetch the favicon from.","required":true,"schema":{"type":"string","format":"url","x-example":"https:\/\/example.com"},"in":"query"}]}},"\/avatars\/flags\/{code}":{"get":{"summary":"Get country flag","operationId":"avatarsGetFlag","tags":["avatars"],"description":"You can use this endpoint to show different country flags icons to your users. The code argument receives the 2 letter country code. Use width, height and quality arguments to change the output settings. Country codes follow the [ISO 3166-1](https:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFlag","weight":55,"cookies":false,"type":"location","demo":"avatars\/get-flag.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-flag.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Country Code. ISO Alpha-2 country code format.","required":true,"schema":{"type":"string","x-example":"af","enum":["af","ao","al","ad","ae","ar","am","ag","au","at","az","bi","be","bj","bf","bd","bg","bh","bs","ba","by","bz","bo","br","bb","bn","bt","bw","cf","ca","ch","cl","cn","ci","cm","cd","cg","co","km","cv","cr","cu","cy","cz","de","dj","dm","dk","do","dz","ec","eg","er","es","ee","et","fi","fj","fr","fm","ga","gb","ge","gh","gn","gm","gw","gq","gr","gd","gt","gy","hn","hr","ht","hu","id","in","ie","ir","iq","is","il","it","jm","jo","jp","kz","ke","kg","kh","ki","kn","kr","kw","la","lb","lr","ly","lc","li","lk","ls","lt","lu","lv","ma","mc","md","mg","mv","mx","mh","mk","ml","mt","mm","me","mn","mz","mr","mu","mw","my","na","ne","ng","ni","nl","no","np","nr","nz","om","pk","pa","pe","ph","pw","pg","pl","kp","pt","py","qa","ro","ru","rw","sa","sd","sn","sg","sb","sl","sv","sm","so","rs","ss","st","sr","sk","si","se","sz","sc","sy","td","tg","th","tj","tm","tl","to","tt","tn","tr","tv","tz","ug","ua","uy","us","uz","va","vc","ve","vn","vu","ws","ye","za","zm","zw"],"x-enum-name":"Flag","x-enum-keys":["Afghanistan","Angola","Albania","Andorra","United Arab Emirates","Argentina","Armenia","Antigua and Barbuda","Australia","Austria","Azerbaijan","Burundi","Belgium","Benin","Burkina Faso","Bangladesh","Bulgaria","Bahrain","Bahamas","Bosnia and Herzegovina","Belarus","Belize","Bolivia","Brazil","Barbados","Brunei Darussalam","Bhutan","Botswana","Central African Republic","Canada","Switzerland","Chile","China","C\u00f4te d'Ivoire","Cameroon","Democratic Republic of the Congo","Republic of the Congo","Colombia","Comoros","Cape Verde","Costa Rica","Cuba","Cyprus","Czech Republic","Germany","Djibouti","Dominica","Denmark","Dominican Republic","Algeria","Ecuador","Egypt","Eritrea","Spain","Estonia","Ethiopia","Finland","Fiji","France","Micronesia (Federated States of)","Gabon","United Kingdom","Georgia","Ghana","Guinea","Gambia","Guinea-Bissau","Equatorial Guinea","Greece","Grenada","Guatemala","Guyana","Honduras","Croatia","Haiti","Hungary","Indonesia","India","Ireland","Iran (Islamic Republic of)","Iraq","Iceland","Israel","Italy","Jamaica","Jordan","Japan","Kazakhstan","Kenya","Kyrgyzstan","Cambodia","Kiribati","Saint Kitts and Nevis","South Korea","Kuwait","Lao People's Democratic Republic","Lebanon","Liberia","Libya","Saint Lucia","Liechtenstein","Sri Lanka","Lesotho","Lithuania","Luxembourg","Latvia","Morocco","Monaco","Moldova","Madagascar","Maldives","Mexico","Marshall Islands","North Macedonia","Mali","Malta","Myanmar","Montenegro","Mongolia","Mozambique","Mauritania","Mauritius","Malawi","Malaysia","Namibia","Niger","Nigeria","Nicaragua","Netherlands","Norway","Nepal","Nauru","New Zealand","Oman","Pakistan","Panama","Peru","Philippines","Palau","Papua New Guinea","Poland","North Korea","Portugal","Paraguay","Qatar","Romania","Russia","Rwanda","Saudi Arabia","Sudan","Senegal","Singapore","Solomon Islands","Sierra Leone","El Salvador","San Marino","Somalia","Serbia","South Sudan","Sao Tome and Principe","Suriname","Slovakia","Slovenia","Sweden","Eswatini","Seychelles","Syria","Chad","Togo","Thailand","Tajikistan","Turkmenistan","Timor-Leste","Tonga","Trinidad and Tobago","Tunisia","Turkey","Tuvalu","Tanzania","Uganda","Ukraine","Uruguay","United States","Uzbekistan","Vatican City","Saint Vincent and the Grenadines","Venezuela","Vietnam","Vanuatu","Samoa","Yemen","South Africa","Zambia","Zimbabwe"]},"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"}]}},"\/avatars\/image":{"get":{"summary":"Get image from URL","operationId":"avatarsGetImage","tags":["avatars"],"description":"Use this endpoint to fetch a remote image URL and crop it to any image size you want. This endpoint is very useful if you need to crop and display remote images in your app or in case you want to make sure a 3rd party image is properly served using a TLS protocol.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getImage","weight":56,"cookies":false,"type":"location","demo":"avatars\/get-image.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-image.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"url","description":"Image URL which you want to crop.","required":true,"schema":{"type":"string","format":"url","x-example":"https:\/\/example.com"},"in":"query"},{"name":"width","description":"Resize preview image width, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get user initials","operationId":"avatarsGetInitials","tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getInitials","weight":59,"cookies":false,"type":"location","demo":"avatars\/get-initials.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-initials.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"name","description":"Full Name. When empty, current user name or email will be used. Max length: 128 chars.","required":false,"schema":{"type":"string","x-example":"[NAME]","default":""},"in":"query"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":500},"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":500},"in":"query"},{"name":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"schema":{"type":"string","default":""},"in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR code","operationId":"avatarsGetQR","tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getQR","weight":58,"cookies":false,"type":"location","demo":"avatars\/get-q-r.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-qr.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"text","description":"Plain text to be converted to QR code image.","required":true,"schema":{"type":"string","x-example":"[TEXT]"},"in":"query"},{"name":"size","description":"QR code size. Pass an integer between 1 to 1000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":1,"default":400},"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":1},"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"schema":{"type":"boolean","x-example":false,"default":false},"in":"query"}]}},"\/databases":{"get":{"summary":"List databases","operationId":"databasesList","tags":["databases"],"description":"Get a list of all databases from the current Appwrite project. You can use the search parameter to filter your results.","responses":{"200":{"description":"Databases List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/databaseList"}}}}},"x-appwrite":{"method":"list","weight":64,"cookies":false,"type":"","demo":"databases\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create database","operationId":"databasesCreate","tags":["databases"],"description":"Create a new Database.\n","responses":{"201":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"create","weight":63,"cookies":false,"type":"","demo":"databases\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"databaseId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[DATABASE_ID]"},"name":{"type":"string","description":"Database name. Max length: 128 chars.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Is the database enabled? When set to 'disabled', users cannot access the database but Server SDKs with an API key can still read and write to the database. No data is lost when this is toggled.","x-example":false}},"required":["databaseId","name"]}}}}}},"\/databases\/{databaseId}":{"get":{"summary":"Get database","operationId":"databasesGet","tags":["databases"],"description":"Get a database by its unique ID. This endpoint response returns a JSON object with the database metadata.","responses":{"200":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"get","weight":65,"cookies":false,"type":"","demo":"databases\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}]},"put":{"summary":"Update database","operationId":"databasesUpdate","tags":["databases"],"description":"Update a database by its unique ID.","responses":{"200":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"update","weight":67,"cookies":false,"type":"","demo":"databases\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Database name. Max length: 128 chars.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Is database enabled? When set to 'disabled', users cannot access the database but Server SDKs with an API key can still read and write to the database. No data is lost when this is toggled.","x-example":false}},"required":["name"]}}}}},"delete":{"summary":"Delete database","operationId":"databasesDelete","tags":["databases"],"description":"Delete a database by its unique ID. Only API keys with with databases.write scope can delete a database.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":68,"cookies":false,"type":"","demo":"databases\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections":{"get":{"summary":"List collections","operationId":"databasesListCollections","tags":["databases"],"description":"Get a list of all collections that belong to the provided databaseId. You can use the search parameter to filter your results.","responses":{"200":{"description":"Collections List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collectionList"}}}}},"x-appwrite":{"method":"listCollections","weight":70,"cookies":false,"type":"","demo":"databases\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, documentSecurity","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create collection","operationId":"databasesCreateCollection","tags":["databases"],"description":"Create a new Collection. Before using this route, you should create a new database resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"createCollection","weight":69,"cookies":false,"type":"","demo":"databases\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permissions strings. By default, no user is granted with any permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":false},"enabled":{"type":"boolean","description":"Is collection enabled? When set to 'disabled', users cannot access the collection but Server SDKs with and API key can still read and write to the collection. No data is lost when this is toggled.","x-example":false}},"required":["collectionId","name"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}":{"get":{"summary":"Get collection","operationId":"databasesGetCollection","tags":["databases"],"description":"Get a collection by its unique ID. This endpoint response returns a JSON object with the collection metadata.","responses":{"200":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"getCollection","weight":71,"cookies":false,"type":"","demo":"databases\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]},"put":{"summary":"Update collection","operationId":"databasesUpdateCollection","tags":["databases"],"description":"Update a collection by its unique ID.","responses":{"200":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"updateCollection","weight":73,"cookies":false,"type":"","demo":"databases\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":false},"enabled":{"type":"boolean","description":"Is collection enabled? When set to 'disabled', users cannot access the collection but Server SDKs with and API key can still read and write to the collection. No data is lost when this is toggled.","x-example":false}},"required":["name"]}}}}},"delete":{"summary":"Delete collection","operationId":"databasesDeleteCollection","tags":["databases"],"description":"Delete a collection by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteCollection","weight":74,"cookies":false,"type":"","demo":"databases\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes":{"get":{"summary":"List attributes","operationId":"databasesListAttributes","tags":["databases"],"description":"","responses":{"200":{"description":"Attributes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeList"}}}}},"x-appwrite":{"method":"listAttributes","weight":85,"cookies":false,"type":"","demo":"databases\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: key, type, size, required, array, status, error","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create boolean attribute","operationId":"databasesCreateBooleanAttribute","tags":["databases"],"description":"Create a boolean attribute.\n","responses":{"202":{"description":"AttributeBoolean","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeBoolean"}}}}},"x-appwrite":{"method":"createBooleanAttribute","weight":82,"cookies":false,"type":"","demo":"databases\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":false},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean\/{key}":{"patch":{"summary":"Update boolean attribute","operationId":"databasesUpdateBooleanAttribute","tags":["databases"],"description":"","responses":{"200":{"description":"AttributeBoolean","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeBoolean"}}}}},"x-appwrite":{"method":"updateBooleanAttribute","weight":94,"cookies":false,"type":"","demo":"databases\/update-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":false,"x-nullable":true}},"required":["required","default"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/datetime":{"post":{"summary":"Create datetime attribute","operationId":"databasesCreateDatetimeAttribute","tags":["databases"],"description":"","responses":{"202":{"description":"AttributeDatetime","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeDatetime"}}}}},"x-appwrite":{"method":"createDatetimeAttribute","weight":83,"cookies":false,"type":"","demo":"databases\/create-datetime-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-datetime-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for the attribute in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/datetime\/{key}":{"patch":{"summary":"Update dateTime attribute","operationId":"databasesUpdateDatetimeAttribute","tags":["databases"],"description":"","responses":{"200":{"description":"AttributeDatetime","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeDatetime"}}}}},"x-appwrite":{"method":"updateDatetimeAttribute","weight":95,"cookies":false,"type":"","demo":"databases\/update-datetime-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-datetime-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null,"x-nullable":true}},"required":["required","default"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create email attribute","operationId":"databasesCreateEmailAttribute","tags":["databases"],"description":"Create an email attribute.\n","responses":{"202":{"description":"AttributeEmail","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeEmail"}}}}},"x-appwrite":{"method":"createEmailAttribute","weight":76,"cookies":false,"type":"","demo":"databases\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"email@example.com"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/email\/{key}":{"patch":{"summary":"Update email attribute","operationId":"databasesUpdateEmailAttribute","tags":["databases"],"description":"Update an email attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeEmail","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeEmail"}}}}},"x-appwrite":{"method":"updateEmailAttribute","weight":88,"cookies":false,"type":"","demo":"databases\/update-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"email@example.com","x-nullable":true}},"required":["required","default"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create enum attribute","operationId":"databasesCreateEnumAttribute","tags":["databases"],"description":"","responses":{"202":{"description":"AttributeEnum","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeEnum"}}}}},"x-appwrite":{"method":"createEnumAttribute","weight":77,"cookies":false,"type":"","demo":"databases\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"elements":{"type":"array","description":"Array of elements in enumerated type. Uses length of longest element to determine size. Maximum of 100 elements are allowed, each 255 characters long.","x-example":null,"items":{"type":"string"}},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","elements","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/enum\/{key}":{"patch":{"summary":"Update enum attribute","operationId":"databasesUpdateEnumAttribute","tags":["databases"],"description":"Update an enum attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeEnum","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeEnum"}}}}},"x-appwrite":{"method":"updateEnumAttribute","weight":89,"cookies":false,"type":"","demo":"databases\/update-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-enum-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"elements":{"type":"array","description":"Array of elements in enumerated type. Uses length of longest element to determine size. Maximum of 100 elements are allowed, each 255 characters long.","x-example":null,"items":{"type":"string"}},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"[DEFAULT]","x-nullable":true}},"required":["elements","required","default"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create float attribute","operationId":"databasesCreateFloatAttribute","tags":["databases"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeFloat","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeFloat"}}}}},"x-appwrite":{"method":"createFloatAttribute","weight":81,"cookies":false,"type":"","demo":"databases\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"min":{"type":"number","description":"Minimum value to enforce on new documents","x-example":null},"max":{"type":"number","description":"Maximum value to enforce on new documents","x-example":null},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/float\/{key}":{"patch":{"summary":"Update float attribute","operationId":"databasesUpdateFloatAttribute","tags":["databases"],"description":"Update a float attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeFloat","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeFloat"}}}}},"x-appwrite":{"method":"updateFloatAttribute","weight":93,"cookies":false,"type":"","demo":"databases\/update-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"min":{"type":"number","description":"Minimum value to enforce on new documents","x-example":null},"max":{"type":"number","description":"Maximum value to enforce on new documents","x-example":null},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null,"x-nullable":true}},"required":["required","min","max","default"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create integer attribute","operationId":"databasesCreateIntegerAttribute","tags":["databases"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeInteger","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeInteger"}}}}},"x-appwrite":{"method":"createIntegerAttribute","weight":80,"cookies":false,"type":"","demo":"databases\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"min":{"type":"integer","description":"Minimum value to enforce on new documents","x-example":null},"max":{"type":"integer","description":"Maximum value to enforce on new documents","x-example":null},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/integer\/{key}":{"patch":{"summary":"Update integer attribute","operationId":"databasesUpdateIntegerAttribute","tags":["databases"],"description":"Update an integer attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeInteger","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeInteger"}}}}},"x-appwrite":{"method":"updateIntegerAttribute","weight":92,"cookies":false,"type":"","demo":"databases\/update-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"min":{"type":"integer","description":"Minimum value to enforce on new documents","x-example":null},"max":{"type":"integer","description":"Maximum value to enforce on new documents","x-example":null},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null,"x-nullable":true}},"required":["required","min","max","default"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP address attribute","operationId":"databasesCreateIpAttribute","tags":["databases"],"description":"Create IP address attribute.\n","responses":{"202":{"description":"AttributeIP","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeIp"}}}}},"x-appwrite":{"method":"createIpAttribute","weight":78,"cookies":false,"type":"","demo":"databases\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/ip\/{key}":{"patch":{"summary":"Update IP address attribute","operationId":"databasesUpdateIpAttribute","tags":["databases"],"description":"Update an ip attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeIP","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeIp"}}}}},"x-appwrite":{"method":"updateIpAttribute","weight":90,"cookies":false,"type":"","demo":"databases\/update-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null,"x-nullable":true}},"required":["required","default"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/relationship":{"post":{"summary":"Create relationship attribute","operationId":"databasesCreateRelationshipAttribute","tags":["databases"],"description":"Create relationship attribute. [Learn more about relationship attributes](https:\/\/appwrite.io\/docs\/databases-relationships#relationship-attributes).\n","responses":{"202":{"description":"AttributeRelationship","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeRelationship"}}}}},"x-appwrite":{"method":"createRelationshipAttribute","weight":84,"cookies":false,"type":"","demo":"databases\/create-relationship-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-relationship-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"relatedCollectionId":{"type":"string","description":"Related Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","x-example":"[RELATED_COLLECTION_ID]"},"type":{"type":"string","description":"Relation type","x-example":"oneToOne","enum":["oneToOne","manyToOne","manyToMany","oneToMany"],"x-enum-name":"RelationshipType","x-enum-keys":[]},"twoWay":{"type":"boolean","description":"Is Two Way?","x-example":false},"key":{"type":"string","description":"Attribute Key.","x-example":null},"twoWayKey":{"type":"string","description":"Two Way Attribute Key.","x-example":null},"onDelete":{"type":"string","description":"Constraints option","x-example":"cascade","enum":["cascade","restrict","setNull"],"x-enum-name":"RelationMutate","x-enum-keys":[]}},"required":["relatedCollectionId","type"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create string attribute","operationId":"databasesCreateStringAttribute","tags":["databases"],"description":"Create a string attribute.\n","responses":{"202":{"description":"AttributeString","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeString"}}}}},"x-appwrite":{"method":"createStringAttribute","weight":75,"cookies":false,"type":"","demo":"databases\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"size":{"type":"integer","description":"Attribute size for text attributes, in number of characters.","x-example":1},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false},"encrypt":{"type":"boolean","description":"Toggle encryption for the attribute. Encryption enhances security by not storing any plain text values in the database. However, encrypted attributes cannot be queried.","x-example":false}},"required":["key","size","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/string\/{key}":{"patch":{"summary":"Update string attribute","operationId":"databasesUpdateStringAttribute","tags":["databases"],"description":"Update a string attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeString","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeString"}}}}},"x-appwrite":{"method":"updateStringAttribute","weight":87,"cookies":false,"type":"","demo":"databases\/update-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"[DEFAULT]","x-nullable":true}},"required":["required","default"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL attribute","operationId":"databasesCreateUrlAttribute","tags":["databases"],"description":"Create a URL attribute.\n","responses":{"202":{"description":"AttributeURL","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeUrl"}}}}},"x-appwrite":{"method":"createUrlAttribute","weight":79,"cookies":false,"type":"","demo":"databases\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"https:\/\/example.com"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url\/{key}":{"patch":{"summary":"Update URL attribute","operationId":"databasesUpdateUrlAttribute","tags":["databases"],"description":"Update an url attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeURL","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeUrl"}}}}},"x-appwrite":{"method":"updateUrlAttribute","weight":91,"cookies":false,"type":"","demo":"databases\/update-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"https:\/\/example.com","x-nullable":true}},"required":["required","default"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get attribute","operationId":"databasesGetAttribute","tags":["databases"],"description":"","responses":{"200":{"description":"AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, or AttributeDatetime, or AttributeRelationship, or AttributeString","content":{"application\/json":{"schema":{"oneOf":[{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeRelationship"},{"$ref":"#\/components\/schemas\/attributeString"}]}}}}},"x-appwrite":{"method":"getAttribute","weight":86,"cookies":false,"type":"","demo":"databases\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}]},"delete":{"summary":"Delete attribute","operationId":"databasesDeleteAttribute","tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":97,"cookies":false,"type":"","demo":"databases\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/{key}\/relationship":{"patch":{"summary":"Update relationship attribute","operationId":"databasesUpdateRelationshipAttribute","tags":["databases"],"description":"Update relationship attribute. [Learn more about relationship attributes](https:\/\/appwrite.io\/docs\/databases-relationships#relationship-attributes).\n","responses":{"200":{"description":"AttributeRelationship","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeRelationship"}}}}},"x-appwrite":{"method":"updateRelationshipAttribute","weight":96,"cookies":false,"type":"","demo":"databases\/update-relationship-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-relationship-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"onDelete":{"type":"string","description":"Constraints option","x-example":"cascade","enum":["cascade","restrict","setNull"],"x-enum-name":"RelationMutate","x-enum-keys":[]}}}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List documents","operationId":"databasesListDocuments","tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/documentList"}}}}},"x-appwrite":{"method":"listDocuments","weight":103,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"post":{"summary":"Create document","operationId":"databasesCreateDocument","tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"createDocument","weight":102,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, only the current user is granted all permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get document","operationId":"databasesGetDocument","tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"getDocument","weight":104,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"patch":{"summary":"Update document","operationId":"databasesUpdateDocument","tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"updateDocument","weight":106,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete document","operationId":"databasesDeleteDocument","tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":107,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes":{"get":{"summary":"List indexes","operationId":"databasesListIndexes","tags":["databases"],"description":"","responses":{"200":{"description":"Indexes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/indexList"}}}}},"x-appwrite":{"method":"listIndexes","weight":99,"cookies":false,"type":"","demo":"databases\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: key, type, status, attributes, error","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"post":{"summary":"Create index","operationId":"databasesCreateIndex","tags":["databases"],"description":"","responses":{"202":{"description":"Index","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/index"}}}}},"x-appwrite":{"method":"createIndex","weight":98,"cookies":false,"type":"","demo":"databases\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Index Key.","x-example":null},"type":{"type":"string","description":"Index type.","x-example":"key","enum":["key","fulltext","unique","spatial"],"x-enum-name":"IndexType","x-enum-keys":[]},"attributes":{"type":"array","description":"Array of attributes to index. Maximum of 100 attributes are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders. Maximum of 100 orders are allowed.","x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get index","operationId":"databasesGetIndex","tags":["databases"],"description":"","responses":{"200":{"description":"Index","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/index"}}}}},"x-appwrite":{"method":"getIndex","weight":100,"cookies":false,"type":"","demo":"databases\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Index Key.","required":true,"schema":{"type":"string"},"in":"path"}]},"delete":{"summary":"Delete index","operationId":"databasesDeleteIndex","tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":101,"cookies":false,"type":"","demo":"databases\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Index Key.","required":true,"schema":{"type":"string"},"in":"path"}]}},"\/functions":{"get":{"summary":"List functions","operationId":"functionsList","tags":["functions"],"description":"Get a list of all the project's functions. You can use the query params to filter your results.","responses":{"200":{"description":"Functions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/functionList"}}}}},"x-appwrite":{"method":"list","weight":268,"cookies":false,"type":"","demo":"functions\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-functions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, runtime, deployment, schedule, scheduleNext, schedulePrevious, timeout, entrypoint, commands, installationId","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create function","operationId":"functionsCreate","tags":["functions"],"description":"Create a new function. You can pass a list of [permissions](https:\/\/appwrite.io\/docs\/permissions) to allow different project users or team with access to execute the function using the client API.","responses":{"201":{"description":"Function","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/function"}}}}},"x-appwrite":{"method":"create","weight":267,"cookies":false,"type":"","demo":"functions\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"functionId":{"type":"string","description":"Function ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[FUNCTION_ID]"},"name":{"type":"string","description":"Function name. Max length: 128 chars.","x-example":"[NAME]"},"runtime":{"type":"string","description":"Execution runtime.","x-example":"node-18.0","enum":["node-18.0","php-8.0","ruby-3.1","python-3.9"],"x-enum-name":null,"x-enum-keys":[]},"execute":{"type":"array","description":"An array of role strings with execution permissions. By default no user is granted with any execute permissions. [learn more about roles](https:\/\/appwrite.io\/docs\/permissions#permission-roles). Maximum of 100 roles are allowed, each 64 characters long.","x-example":"[\"any\"]","items":{"type":"string"}},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","x-example":null},"timeout":{"type":"integer","description":"Function maximum execution time in seconds.","x-example":1},"enabled":{"type":"boolean","description":"Is function enabled? When set to 'disabled', users cannot access the function but Server SDKs with and API key can still access the function. No data is lost when this is toggled.","x-example":false},"logging":{"type":"boolean","description":"Whether executions will be logged. When set to false, executions will not be logged, but will reduce resource used by your Appwrite project.","x-example":false},"entrypoint":{"type":"string","description":"Entrypoint File. This path is relative to the \"providerRootDirectory\".","x-example":"[ENTRYPOINT]"},"commands":{"type":"string","description":"Build Commands.","x-example":"[COMMANDS]"},"installationId":{"type":"string","description":"Appwrite Installation ID for VCS (Version Control System) deployment.","x-example":"[INSTALLATION_ID]"},"providerRepositoryId":{"type":"string","description":"Repository ID of the repo linked to the function.","x-example":"[PROVIDER_REPOSITORY_ID]"},"providerBranch":{"type":"string","description":"Production branch for the repo linked to the function.","x-example":"[PROVIDER_BRANCH]"},"providerSilentMode":{"type":"boolean","description":"Is the VCS (Version Control System) connection in silent mode for the repo linked to the function? In silent mode, comments will not be made on commits and pull requests.","x-example":false},"providerRootDirectory":{"type":"string","description":"Path to function code in the linked repo.","x-example":"[PROVIDER_ROOT_DIRECTORY]"},"templateRepository":{"type":"string","description":"Repository name of the template.","x-example":"[TEMPLATE_REPOSITORY]"},"templateOwner":{"type":"string","description":"The name of the owner of the template.","x-example":"[TEMPLATE_OWNER]"},"templateRootDirectory":{"type":"string","description":"Path to function code in the template repo.","x-example":"[TEMPLATE_ROOT_DIRECTORY]"},"templateBranch":{"type":"string","description":"Production branch for the repo linked to the function template.","x-example":"[TEMPLATE_BRANCH]"}},"required":["functionId","name","runtime"]}}}}}},"\/functions\/runtimes":{"get":{"summary":"List runtimes","operationId":"functionsListRuntimes","tags":["functions"],"description":"Get a list of all runtimes that are currently active on your instance.","responses":{"200":{"description":"Runtimes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/runtimeList"}}}}},"x-appwrite":{"method":"listRuntimes","weight":269,"cookies":false,"type":"","demo":"functions\/list-runtimes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-runtimes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/functions\/{functionId}":{"get":{"summary":"Get function","operationId":"functionsGet","tags":["functions"],"description":"Get a function by its unique ID.","responses":{"200":{"description":"Function","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/function"}}}}},"x-appwrite":{"method":"get","weight":270,"cookies":false,"type":"","demo":"functions\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}]},"put":{"summary":"Update function","operationId":"functionsUpdate","tags":["functions"],"description":"Update function by its unique ID.","responses":{"200":{"description":"Function","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/function"}}}}},"x-appwrite":{"method":"update","weight":273,"cookies":false,"type":"","demo":"functions\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Function name. Max length: 128 chars.","x-example":"[NAME]"},"runtime":{"type":"string","description":"Execution runtime.","x-example":"node-18.0","enum":["node-18.0","php-8.0","ruby-3.1","python-3.9"],"x-enum-name":null,"x-enum-keys":[]},"execute":{"type":"array","description":"An array of role strings with execution permissions. By default no user is granted with any execute permissions. [learn more about roles](https:\/\/appwrite.io\/docs\/permissions#permission-roles). Maximum of 100 roles are allowed, each 64 characters long.","x-example":"[\"any\"]","items":{"type":"string"}},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","x-example":null},"timeout":{"type":"integer","description":"Maximum execution time in seconds.","x-example":1},"enabled":{"type":"boolean","description":"Is function enabled? When set to 'disabled', users cannot access the function but Server SDKs with and API key can still access the function. No data is lost when this is toggled.","x-example":false},"logging":{"type":"boolean","description":"Whether executions will be logged. When set to false, executions will not be logged, but will reduce resource used by your Appwrite project.","x-example":false},"entrypoint":{"type":"string","description":"Entrypoint File. This path is relative to the \"providerRootDirectory\".","x-example":"[ENTRYPOINT]"},"commands":{"type":"string","description":"Build Commands.","x-example":"[COMMANDS]"},"installationId":{"type":"string","description":"Appwrite Installation ID for VCS (Version Controle System) deployment.","x-example":"[INSTALLATION_ID]"},"providerRepositoryId":{"type":"string","description":"Repository ID of the repo linked to the function","x-example":"[PROVIDER_REPOSITORY_ID]"},"providerBranch":{"type":"string","description":"Production branch for the repo linked to the function","x-example":"[PROVIDER_BRANCH]"},"providerSilentMode":{"type":"boolean","description":"Is the VCS (Version Control System) connection in silent mode for the repo linked to the function? In silent mode, comments will not be made on commits and pull requests.","x-example":false},"providerRootDirectory":{"type":"string","description":"Path to function code in the linked repo.","x-example":"[PROVIDER_ROOT_DIRECTORY]"}},"required":["name"]}}}}},"delete":{"summary":"Delete function","operationId":"functionsDelete","tags":["functions"],"description":"Delete a function by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":276,"cookies":false,"type":"","demo":"functions\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/deployments":{"get":{"summary":"List deployments","operationId":"functionsListDeployments","tags":["functions"],"description":"Get a list of all the project's code deployments. You can use the query params to filter your results.","responses":{"200":{"description":"Deployments List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deploymentList"}}}}},"x-appwrite":{"method":"listDeployments","weight":278,"cookies":false,"type":"","demo":"functions\/list-deployments.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-deployments.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: size, buildId, activate, entrypoint, commands","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create deployment","operationId":"functionsCreateDeployment","tags":["functions"],"description":"Create a new function code deployment. Use this endpoint to upload a new version of your code function. To execute your newly uploaded code, you'll need to update the function's deployment to use your new deployment UID.\n\nThis endpoint accepts a tar.gz file compressed with your code. Make sure to include any dependencies your code has within the compressed file. You can learn more about code packaging in the [Appwrite Cloud Functions tutorial](https:\/\/appwrite.io\/docs\/functions).\n\nUse the \"command\" param to set the entrypoint used to execute your code.","responses":{"202":{"description":"Deployment","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deployment"}}}}},"x-appwrite":{"method":"createDeployment","weight":277,"cookies":false,"type":"","demo":"functions\/create-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":true,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}],"requestBody":{"content":{"multipart\/form-data":{"schema":{"type":"object","properties":{"entrypoint":{"type":"string","description":"Entrypoint File.","x-example":"[ENTRYPOINT]"},"commands":{"type":"string","description":"Build Commands.","x-example":"[COMMANDS]"},"code":{"type":"string","description":"Gzip file with your code package. When used with the Appwrite CLI, pass the path to your code directory, and the CLI will automatically package your code. Use a path that is within the current directory.","x-example":null},"activate":{"type":"boolean","description":"Automatically activate the deployment when it is finished building.","x-example":false}},"required":["code","activate"]}}}}}},"\/functions\/{functionId}\/deployments\/{deploymentId}":{"get":{"summary":"Get deployment","operationId":"functionsGetDeployment","tags":["functions"],"description":"Get a code deployment by its unique ID.","responses":{"200":{"description":"Deployment","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deployment"}}}}},"x-appwrite":{"method":"getDeployment","weight":279,"cookies":false,"type":"","demo":"functions\/get-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"schema":{"type":"string","x-example":"[DEPLOYMENT_ID]"},"in":"path"}]},"patch":{"summary":"Update function deployment","operationId":"functionsUpdateDeployment","tags":["functions"],"description":"Update the function code deployment ID using the unique function ID. Use this endpoint to switch the code deployment that should be executed by the execution endpoint.","responses":{"200":{"description":"Function","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/function"}}}}},"x-appwrite":{"method":"updateDeployment","weight":275,"cookies":false,"type":"","demo":"functions\/update-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-function-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"schema":{"type":"string","x-example":"[DEPLOYMENT_ID]"},"in":"path"}]},"delete":{"summary":"Delete deployment","operationId":"functionsDeleteDeployment","tags":["functions"],"description":"Delete a code deployment by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDeployment","weight":280,"cookies":false,"type":"","demo":"functions\/delete-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"schema":{"type":"string","x-example":"[DEPLOYMENT_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/deployments\/{deploymentId}\/builds\/{buildId}":{"post":{"summary":"Create build","operationId":"functionsCreateBuild","tags":["functions"],"description":"Create a new build for an Appwrite Function deployment. This endpoint can be used to retry a failed build.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"createBuild","weight":281,"cookies":false,"type":"","demo":"functions\/create-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"schema":{"type":"string","x-example":"[DEPLOYMENT_ID]"},"in":"path"},{"name":"buildId","description":"Build unique ID.","required":true,"schema":{"type":"string","x-example":"[BUILD_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/deployments\/{deploymentId}\/download":{"get":{"summary":"Download Deployment","operationId":"functionsDownloadDeployment","tags":["functions"],"description":"Get a Deployment's contents by its unique ID. This endpoint supports range requests for partial or streaming file download.","responses":{"200":{"description":"File"}},"x-appwrite":{"method":"downloadDeployment","weight":274,"cookies":false,"type":"location","demo":"functions\/download-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/download-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"schema":{"type":"string","x-example":"[DEPLOYMENT_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List executions","operationId":"functionsListExecutions","tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/executionList"}}}}},"x-appwrite":{"method":"listExecutions","weight":283,"cookies":false,"type":"","demo":"functions\/list-executions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-executions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, responseStatusCode, duration","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create execution","operationId":"functionsCreateExecution","tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/execution"}}}}},"x-appwrite":{"method":"createExecution","weight":282,"cookies":false,"type":"","demo":"functions\/create-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-execution.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"body":{"type":"string","description":"HTTP body of execution. Default value is empty string.","x-example":"[BODY]"},"async":{"type":"boolean","description":"Execute code in the background. Default value is false.","x-example":false},"path":{"type":"string","description":"HTTP path of execution. Path can include query params. Default value is \/","x-example":"[PATH]"},"method":{"type":"string","description":"HTTP method of execution. Default value is GET.","x-example":"GET","enum":["GET","POST","PUT","PATCH","DELETE","OPTIONS"],"x-enum-name":"ExecutionMethod","x-enum-keys":[]},"headers":{"type":"object","description":"HTTP headers of execution. Defaults to empty.","x-example":"{}"}}}}}}}},"\/functions\/{functionId}\/executions\/{executionId}":{"get":{"summary":"Get execution","operationId":"functionsGetExecution","tags":["functions"],"description":"Get a function execution log by its unique ID.","responses":{"200":{"description":"Execution","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/execution"}}}}},"x-appwrite":{"method":"getExecution","weight":284,"cookies":false,"type":"","demo":"functions\/get-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-execution.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"executionId","description":"Execution ID.","required":true,"schema":{"type":"string","x-example":"[EXECUTION_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/variables":{"get":{"summary":"List variables","operationId":"functionsListVariables","tags":["functions"],"description":"Get a list of all variables of a specific function.","responses":{"200":{"description":"Variables List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variableList"}}}}},"x-appwrite":{"method":"listVariables","weight":286,"cookies":false,"type":"","demo":"functions\/list-variables.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-variables.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}]},"post":{"summary":"Create variable","operationId":"functionsCreateVariable","tags":["functions"],"description":"Create a new function environment variable. These variables can be accessed in the function at runtime as environment variables.","responses":{"201":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"createVariable","weight":285,"cookies":false,"type":"","demo":"functions\/create-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","x-example":"[VALUE]"}},"required":["key","value"]}}}}}},"\/functions\/{functionId}\/variables\/{variableId}":{"get":{"summary":"Get variable","operationId":"functionsGetVariable","tags":["functions"],"description":"Get a variable by its unique ID.","responses":{"200":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"getVariable","weight":287,"cookies":false,"type":"","demo":"functions\/get-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}]},"put":{"summary":"Update variable","operationId":"functionsUpdateVariable","tags":["functions"],"description":"Update variable by its unique ID.","responses":{"200":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"updateVariable","weight":288,"cookies":false,"type":"","demo":"functions\/update-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","x-example":"[VALUE]"}},"required":["key"]}}}}},"delete":{"summary":"Delete variable","operationId":"functionsDeleteVariable","tags":["functions"],"description":"Delete a variable by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteVariable","weight":289,"cookies":false,"type":"","demo":"functions\/delete-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}]}},"\/graphql":{"post":{"summary":"GraphQL endpoint","operationId":"graphqlQuery","tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/any"}}}}},"x-appwrite":{"method":"query","weight":304,"cookies":false,"type":"graphql","demo":"graphql\/query.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"Session":[],"JWT":[]}]}},"\/graphql\/mutation":{"post":{"summary":"GraphQL endpoint","operationId":"graphqlMutation","tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/any"}}}}},"x-appwrite":{"method":"mutation","weight":303,"cookies":false,"type":"graphql","demo":"graphql\/mutation.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"Session":[],"JWT":[]}]}},"\/health":{"get":{"summary":"Get HTTP","operationId":"healthGet","tags":["health"],"description":"Check the Appwrite HTTP server is up and responsive.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"get","weight":119,"cookies":false,"type":"","demo":"health\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/anti-virus":{"get":{"summary":"Get antivirus","operationId":"healthGetAntivirus","tags":["health"],"description":"Check the Appwrite Antivirus server is up and connection is successful.","responses":{"200":{"description":"Health Antivirus","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthAntivirus"}}}}},"x-appwrite":{"method":"getAntivirus","weight":138,"cookies":false,"type":"","demo":"health\/get-antivirus.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-storage-anti-virus.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/cache":{"get":{"summary":"Get cache","operationId":"healthGetCache","tags":["health"],"description":"Check the Appwrite in-memory cache servers are up and connection is successful.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"getCache","weight":122,"cookies":false,"type":"","demo":"health\/get-cache.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-cache.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/certificate":{"get":{"summary":"Get the SSL certificate for a domain","operationId":"healthGetCertificate","tags":["health"],"description":"Get the SSL certificate for a domain","responses":{"200":{"description":"Health Certificate","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthCertificate"}}}}},"x-appwrite":{"method":"getCertificate","weight":128,"cookies":false,"type":"","demo":"health\/get-certificate.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-certificate.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"domain","description":"string","required":false,"schema":{"type":"string"},"in":"query"}]}},"\/health\/db":{"get":{"summary":"Get DB","operationId":"healthGetDB","tags":["health"],"description":"Check the Appwrite database servers are up and connection is successful.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"getDB","weight":121,"cookies":false,"type":"","demo":"health\/get-d-b.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-db.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/pubsub":{"get":{"summary":"Get pubsub","operationId":"healthGetPubSub","tags":["health"],"description":"Check the Appwrite pub-sub servers are up and connection is successful.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"getPubSub","weight":124,"cookies":false,"type":"","demo":"health\/get-pub-sub.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-pubsub.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/queue":{"get":{"summary":"Get queue","operationId":"healthGetQueue","tags":["health"],"description":"Check the Appwrite queue messaging servers are up and connection is successful.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"getQueue","weight":123,"cookies":false,"type":"","demo":"health\/get-queue.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/queue\/builds":{"get":{"summary":"Get builds queue","operationId":"healthGetQueueBuilds","tags":["health"],"description":"Get the number of builds that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueBuilds","weight":130,"cookies":false,"type":"","demo":"health\/get-queue-builds.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-builds.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/certificates":{"get":{"summary":"Get certificates queue","operationId":"healthGetQueueCertificates","tags":["health"],"description":"Get the number of certificates that are waiting to be issued against [Letsencrypt](https:\/\/letsencrypt.org\/) in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueCertificates","weight":129,"cookies":false,"type":"","demo":"health\/get-queue-certificates.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-certificates.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/databases":{"get":{"summary":"Get databases queue","operationId":"healthGetQueueDatabases","tags":["health"],"description":"Get the number of database changes that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueDatabases","weight":131,"cookies":false,"type":"","demo":"health\/get-queue-databases.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-databases.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"name","description":"Queue name for which to check the queue size","required":false,"schema":{"type":"string","x-example":"[NAME]","default":"database_db_main"},"in":"query"},{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/deletes":{"get":{"summary":"Get deletes queue","operationId":"healthGetQueueDeletes","tags":["health"],"description":"Get the number of background destructive changes that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueDeletes","weight":132,"cookies":false,"type":"","demo":"health\/get-queue-deletes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-deletes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/failed\/{name}":{"get":{"summary":"Get number of failed queue jobs","operationId":"healthGetFailedJobs","tags":["health"],"description":"Returns the amount of failed jobs in a given queue.\n","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getFailedJobs","weight":139,"cookies":false,"type":"","demo":"health\/get-failed-jobs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-failed-queue-jobs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"name","description":"The name of the queue","required":true,"schema":{"type":"string","x-example":"v1-database","enum":["v1-database","v1-deletes","v1-audits","v1-mails","v1-functions","v1-usage","webhooksv1","v1-certificates","v1-builds","v1-messaging","v1-migrations","hamsterv1"],"x-enum-name":null,"x-enum-keys":[]},"in":"path"},{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/functions":{"get":{"summary":"Get functions queue","operationId":"healthGetQueueFunctions","tags":["health"],"description":"","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueFunctions","weight":136,"cookies":false,"type":"","demo":"health\/get-queue-functions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-functions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/logs":{"get":{"summary":"Get logs queue","operationId":"healthGetQueueLogs","tags":["health"],"description":"Get the number of logs that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueLogs","weight":127,"cookies":false,"type":"","demo":"health\/get-queue-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/mails":{"get":{"summary":"Get mails queue","operationId":"healthGetQueueMails","tags":["health"],"description":"Get the number of mails that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueMails","weight":133,"cookies":false,"type":"","demo":"health\/get-queue-mails.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-mails.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/messaging":{"get":{"summary":"Get messaging queue","operationId":"healthGetQueueMessaging","tags":["health"],"description":"Get the number of messages that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueMessaging","weight":134,"cookies":false,"type":"","demo":"health\/get-queue-messaging.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-messaging.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/migrations":{"get":{"summary":"Get migrations queue","operationId":"healthGetQueueMigrations","tags":["health"],"description":"Get the number of migrations that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueMigrations","weight":135,"cookies":false,"type":"","demo":"health\/get-queue-migrations.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-migrations.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/webhooks":{"get":{"summary":"Get webhooks queue","operationId":"healthGetQueueWebhooks","tags":["health"],"description":"Get the number of webhooks that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueWebhooks","weight":126,"cookies":false,"type":"","demo":"health\/get-queue-webhooks.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-webhooks.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/storage\/local":{"get":{"summary":"Get local storage","operationId":"healthGetStorageLocal","tags":["health"],"description":"Check the Appwrite local storage device is up and connection is successful.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"getStorageLocal","weight":137,"cookies":false,"type":"","demo":"health\/get-storage-local.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-storage-local.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/time":{"get":{"summary":"Get time","operationId":"healthGetTime","tags":["health"],"description":"Check the Appwrite server time is synced with Google remote NTP server. We use this technology to smoothly handle leap seconds with no disruptive events. The [Network Time Protocol](https:\/\/en.wikipedia.org\/wiki\/Network_Time_Protocol) (NTP) is used by hundreds of millions of computers and devices to synchronize their clocks over the Internet. If your computer sets its own clock, it likely uses NTP.","responses":{"200":{"description":"Health Time","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthTime"}}}}},"x-appwrite":{"method":"getTime","weight":125,"cookies":false,"type":"","demo":"health\/get-time.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-time.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/locale":{"get":{"summary":"Get user locale","operationId":"localeGet","tags":["locale"],"description":"Get the current user location based on IP. Returns an object with user country code, country name, continent name, continent code, ip address and suggested currency. You can use the locale header to get the data in a supported language.\n\n([IP Geolocation by DB-IP](https:\/\/db-ip.com))","responses":{"200":{"description":"Locale","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/locale"}}}}},"x-appwrite":{"method":"get","weight":111,"cookies":false,"type":"","demo":"locale\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-locale.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/localed","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}]}},"\/locale\/codes":{"get":{"summary":"List Locale Codes","operationId":"localeListCodes","tags":["locale"],"description":"List of all locale codes in [ISO 639-1](https:\/\/en.wikipedia.org\/wiki\/List_of_ISO_639-1_codes).","responses":{"200":{"description":"Locale codes list","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/localeCodeList"}}}}},"x-appwrite":{"method":"listCodes","weight":112,"cookies":false,"type":"","demo":"locale\/list-codes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-locale-codes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/localeCode","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}]}},"\/locale\/continents":{"get":{"summary":"List continents","operationId":"localeListContinents","tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/continentList"}}}}},"x-appwrite":{"method":"listContinents","weight":116,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/continents","offline-key":"","offline-response-key":"code","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List countries","operationId":"localeListCountries","tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountries","weight":113,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/countries","offline-key":"","offline-response-key":"code","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU countries","operationId":"localeListCountriesEU","tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountriesEU","weight":114,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/countries\/eu","offline-key":"","offline-response-key":"code","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List countries phone codes","operationId":"localeListCountriesPhones","tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/phoneList"}}}}},"x-appwrite":{"method":"listCountriesPhones","weight":115,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/countries\/phones","offline-key":"","offline-response-key":"countryCode","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List currencies","operationId":"localeListCurrencies","tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/currencyList"}}}}},"x-appwrite":{"method":"listCurrencies","weight":117,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/currencies","offline-key":"","offline-response-key":"code","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List languages","operationId":"localeListLanguages","tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/languageList"}}}}},"x-appwrite":{"method":"listLanguages","weight":118,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/languages","offline-key":"","offline-response-key":"code","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}]}},"\/messaging\/messages":{"get":{"summary":"List messages","operationId":"messagingListMessages","tags":["messaging"],"description":"","responses":{"200":{"description":"Message list","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/messageList"}}}}},"x-appwrite":{"method":"listMessages","weight":363,"cookies":false,"type":"","demo":"messaging\/list-messages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-messages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: scheduledAt, deliveredAt, deliveredTotal, status, description, providerType","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]}},"\/messaging\/messages\/email":{"post":{"summary":"Create an email.","operationId":"messagingCreateEmail","tags":["messaging"],"description":"","responses":{"201":{"description":"Message","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/message"}}}}},"x-appwrite":{"method":"createEmail","weight":360,"cookies":false,"type":"","demo":"messaging\/create-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"messageId":{"type":"string","description":"Message ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[MESSAGE_ID]"},"subject":{"type":"string","description":"Email Subject.","x-example":"[SUBJECT]"},"content":{"type":"string","description":"Email Content.","x-example":"[CONTENT]"},"topics":{"type":"array","description":"List of Topic IDs.","x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","x-example":null,"items":{"type":"string"}},"cc":{"type":"array","description":"Array of target IDs to be added as CC.","x-example":null,"items":{"type":"string"}},"bcc":{"type":"array","description":"Array of target IDs to be added as BCC.","x-example":null,"items":{"type":"string"}},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":"MessageStatus","x-enum-keys":[]},"html":{"type":"boolean","description":"Is content of type HTML","x-example":false},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","x-example":null}},"required":["messageId","subject","content"]}}}}}},"\/messaging\/messages\/email\/{messageId}":{"patch":{"summary":"Update an email.","operationId":"messagingUpdateEmail","tags":["messaging"],"description":"","responses":{"200":{"description":"Message","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/message"}}}}},"x-appwrite":{"method":"updateEmail","weight":367,"cookies":false,"type":"","demo":"messaging\/update-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"schema":{"type":"string","x-example":"[MESSAGE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"topics":{"type":"array","description":"List of Topic IDs.","x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","x-example":null,"items":{"type":"string"}},"subject":{"type":"string","description":"Email Subject.","x-example":"[SUBJECT]"},"content":{"type":"string","description":"Email Content.","x-example":"[CONTENT]"},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":"MessageStatus","x-enum-keys":[]},"html":{"type":"boolean","description":"Is content of type HTML","x-example":false},"cc":{"type":"array","description":"Array of target IDs to be added as CC.","x-example":null,"items":{"type":"string"}},"bcc":{"type":"array","description":"Array of target IDs to be added as BCC.","x-example":null,"items":{"type":"string"}},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","x-example":null}}}}}}}},"\/messaging\/messages\/push":{"post":{"summary":"Create a push notification.","operationId":"messagingCreatePush","tags":["messaging"],"description":"","responses":{"201":{"description":"Message","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/message"}}}}},"x-appwrite":{"method":"createPush","weight":362,"cookies":false,"type":"","demo":"messaging\/create-push.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-push-notification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"messageId":{"type":"string","description":"Message ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[MESSAGE_ID]"},"title":{"type":"string","description":"Title for push notification.","x-example":"[TITLE]"},"body":{"type":"string","description":"Body for push notification.","x-example":"[BODY]"},"topics":{"type":"array","description":"List of Topic IDs.","x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","x-example":null,"items":{"type":"string"}},"data":{"type":"object","description":"Additional Data for push notification.","x-example":"{}"},"action":{"type":"string","description":"Action for push notification.","x-example":"[ACTION]"},"icon":{"type":"string","description":"Icon for push notification. Available only for Android and Web Platform.","x-example":"[ICON]"},"sound":{"type":"string","description":"Sound for push notification. Available only for Android and IOS Platform.","x-example":"[SOUND]"},"color":{"type":"string","description":"Color for push notification. Available only for Android Platform.","x-example":"[COLOR]"},"tag":{"type":"string","description":"Tag for push notification. Available only for Android Platform.","x-example":"[TAG]"},"badge":{"type":"string","description":"Badge for push notification. Available only for IOS Platform.","x-example":"[BADGE]"},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":"MessageStatus","x-enum-keys":[]},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","x-example":null}},"required":["messageId","title","body"]}}}}}},"\/messaging\/messages\/push\/{messageId}":{"patch":{"summary":"Update a push notification.","operationId":"messagingUpdatePush","tags":["messaging"],"description":"","responses":{"200":{"description":"Message","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/message"}}}}},"x-appwrite":{"method":"updatePush","weight":369,"cookies":false,"type":"","demo":"messaging\/update-push.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-push-notification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"schema":{"type":"string","x-example":"[MESSAGE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"topics":{"type":"array","description":"List of Topic IDs.","x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","x-example":null,"items":{"type":"string"}},"title":{"type":"string","description":"Title for push notification.","x-example":"[TITLE]"},"body":{"type":"string","description":"Body for push notification.","x-example":"[BODY]"},"data":{"type":"object","description":"Additional Data for push notification.","x-example":"{}"},"action":{"type":"string","description":"Action for push notification.","x-example":"[ACTION]"},"icon":{"type":"string","description":"Icon for push notification. Available only for Android and Web platforms.","x-example":"[ICON]"},"sound":{"type":"string","description":"Sound for push notification. Available only for Android and iOS platforms.","x-example":"[SOUND]"},"color":{"type":"string","description":"Color for push notification. Available only for Android platforms.","x-example":"[COLOR]"},"tag":{"type":"string","description":"Tag for push notification. Available only for Android platforms.","x-example":"[TAG]"},"badge":{"type":"integer","description":"Badge for push notification. Available only for iOS platforms.","x-example":null},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":"MessageStatus","x-enum-keys":[]},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","x-example":null}}}}}}}},"\/messaging\/messages\/sms":{"post":{"summary":"Create an SMS.","operationId":"messagingCreateSMS","tags":["messaging"],"description":"","responses":{"201":{"description":"Message","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/message"}}}}},"x-appwrite":{"method":"createSMS","weight":361,"cookies":false,"type":"","demo":"messaging\/create-s-m-s.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-sms.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"messageId":{"type":"string","description":"Message ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[MESSAGE_ID]"},"content":{"type":"string","description":"SMS Content.","x-example":"[CONTENT]"},"topics":{"type":"array","description":"List of Topic IDs.","x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","x-example":null,"items":{"type":"string"}},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":"MessageStatus","x-enum-keys":[]},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","x-example":null}},"required":["messageId","content"]}}}}}},"\/messaging\/messages\/sms\/{messageId}":{"patch":{"summary":"Update an SMS.","operationId":"messagingUpdateSMS","tags":["messaging"],"description":"","responses":{"200":{"description":"Message","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/message"}}}}},"x-appwrite":{"method":"updateSMS","weight":368,"cookies":false,"type":"","demo":"messaging\/update-s-m-s.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"schema":{"type":"string","x-example":"[MESSAGE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"topics":{"type":"array","description":"List of Topic IDs.","x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","x-example":null,"items":{"type":"string"}},"content":{"type":"string","description":"Email Content.","x-example":"[CONTENT]"},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":"MessageStatus","x-enum-keys":[]},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","x-example":null}}}}}}}},"\/messaging\/messages\/{messageId}":{"get":{"summary":"Get a message","operationId":"messagingGetMessage","tags":["messaging"],"description":"","responses":{"200":{"description":"Message","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/message"}}}}},"x-appwrite":{"method":"getMessage","weight":366,"cookies":false,"type":"","demo":"messaging\/get-message.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/get-message.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"schema":{"type":"string","x-example":"[MESSAGE_ID]"},"in":"path"}]},"delete":{"summary":"Delete a message","operationId":"messagingDelete","tags":["messaging"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":370,"cookies":false,"type":"","demo":"messaging\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-message.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"schema":{"type":"string","x-example":"[MESSAGE_ID]"},"in":"path"}]}},"\/messaging\/messages\/{messageId}\/logs":{"get":{"summary":"List message logs","operationId":"messagingListMessageLogs","tags":["messaging"],"description":"","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listMessageLogs","weight":364,"cookies":false,"type":"","demo":"messaging\/list-message-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/messages\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"schema":{"type":"string","x-example":"[MESSAGE_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/messaging\/messages\/{messageId}\/targets":{"get":{"summary":"List message targets","operationId":"messagingListTargets","tags":["messaging"],"description":"List the targets associated with a message as set via the targets attribute.","responses":{"200":{"description":"Target list","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/targetList"}}}}},"x-appwrite":{"method":"listTargets","weight":365,"cookies":false,"type":"","demo":"messaging\/list-targets.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-message-targets.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"schema":{"type":"string","x-example":"[MESSAGE_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, providerId, identifier, providerType","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/messaging\/providers":{"get":{"summary":"List providers","operationId":"messagingListProviders","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider list","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/providerList"}}}}},"x-appwrite":{"method":"listProviders","weight":335,"cookies":false,"type":"","demo":"messaging\/list-providers.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-providers.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, provider, type, enabled","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]}},"\/messaging\/providers\/apns":{"post":{"summary":"Create APNS provider","operationId":"messagingCreateAPNSProvider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createAPNSProvider","weight":334,"cookies":false,"type":"","demo":"messaging\/create-a-p-n-s-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-apns-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"authKey":{"type":"string","description":"APNS authentication key.","x-example":"[AUTH_KEY]"},"authKeyId":{"type":"string","description":"APNS authentication key ID.","x-example":"[AUTH_KEY_ID]"},"teamId":{"type":"string","description":"APNS team ID.","x-example":"[TEAM_ID]"},"bundleId":{"type":"string","description":"APNS bundle ID.","x-example":"[BUNDLE_ID]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name"]}}}}}},"\/messaging\/providers\/apns\/{providerId}":{"patch":{"summary":"Update APNS provider","operationId":"messagingUpdateAPNSProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateAPNSProvider","weight":347,"cookies":false,"type":"","demo":"messaging\/update-a-p-n-s-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-apns-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"authKey":{"type":"string","description":"APNS authentication key.","x-example":"[AUTH_KEY]"},"authKeyId":{"type":"string","description":"APNS authentication key ID.","x-example":"[AUTH_KEY_ID]"},"teamId":{"type":"string","description":"APNS team ID.","x-example":"[TEAM_ID]"},"bundleId":{"type":"string","description":"APNS bundle ID.","x-example":"[BUNDLE_ID]"}}}}}}}},"\/messaging\/providers\/fcm":{"post":{"summary":"Create FCM provider","operationId":"messagingCreateFCMProvider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createFCMProvider","weight":333,"cookies":false,"type":"","demo":"messaging\/create-f-c-m-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-fcm-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"serviceAccountJSON":{"type":"object","description":"FCM service account JSON.","x-example":"{}"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name"]}}}}}},"\/messaging\/providers\/fcm\/{providerId}":{"patch":{"summary":"Update FCM provider","operationId":"messagingUpdateFCMProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateFCMProvider","weight":346,"cookies":false,"type":"","demo":"messaging\/update-f-c-m-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-fcm-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"serviceAccountJSON":{"type":"object","description":"FCM service account JSON.","x-example":"{}"}}}}}}}},"\/messaging\/providers\/mailgun":{"post":{"summary":"Create Mailgun provider","operationId":"messagingCreateMailgunProvider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createMailgunProvider","weight":325,"cookies":false,"type":"","demo":"messaging\/create-mailgun-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-mailgun-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"apiKey":{"type":"string","description":"Mailgun API Key.","x-example":"[API_KEY]"},"domain":{"type":"string","description":"Mailgun Domain.","x-example":"[DOMAIN]"},"isEuRegion":{"type":"boolean","description":"Set as EU region.","x-example":false},"fromName":{"type":"string","description":"Sender Name.","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the reply to field for the mail. Default value is sender name. Reply to name must have reply to email as well.","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the reply to field for the mail. Default value is sender email. Reply to email must have reply to name as well.","x-example":"email@example.com"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name"]}}}}}},"\/messaging\/providers\/mailgun\/{providerId}":{"patch":{"summary":"Update Mailgun provider","operationId":"messagingUpdateMailgunProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateMailgunProvider","weight":338,"cookies":false,"type":"","demo":"messaging\/update-mailgun-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-mailgun-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"apiKey":{"type":"string","description":"Mailgun API Key.","x-example":"[API_KEY]"},"domain":{"type":"string","description":"Mailgun Domain.","x-example":"[DOMAIN]"},"isEuRegion":{"type":"boolean","description":"Set as EU region.","x-example":false},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"fromName":{"type":"string","description":"Sender Name.","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the reply to field for the mail. Default value is sender name.","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the reply to field for the mail. Default value is sender email.","x-example":"[REPLY_TO_EMAIL]"}}}}}}}},"\/messaging\/providers\/msg91":{"post":{"summary":"Create Msg91 provider","operationId":"messagingCreateMsg91Provider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createMsg91Provider","weight":328,"cookies":false,"type":"","demo":"messaging\/create-msg91provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-msg91-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"senderId":{"type":"string","description":"Msg91 Sender ID.","x-example":"[SENDER_ID]"},"authKey":{"type":"string","description":"Msg91 Auth Key.","x-example":"[AUTH_KEY]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name"]}}}}}},"\/messaging\/providers\/msg91\/{providerId}":{"patch":{"summary":"Update Msg91 provider","operationId":"messagingUpdateMsg91Provider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateMsg91Provider","weight":341,"cookies":false,"type":"","demo":"messaging\/update-msg91provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-msg91-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"senderId":{"type":"string","description":"Msg91 Sender ID.","x-example":"[SENDER_ID]"},"authKey":{"type":"string","description":"Msg91 Auth Key.","x-example":"[AUTH_KEY]"},"from":{"type":"string","description":"Sender number.","x-example":"[FROM]"}}}}}}}},"\/messaging\/providers\/sendgrid":{"post":{"summary":"Create Sendgrid provider","operationId":"messagingCreateSendgridProvider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createSendgridProvider","weight":326,"cookies":false,"type":"","demo":"messaging\/create-sendgrid-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-sengrid-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"apiKey":{"type":"string","description":"Sendgrid API key.","x-example":"[API_KEY]"},"fromName":{"type":"string","description":"Sender Name.","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the reply to field for the mail. Default value is sender name.","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the reply to field for the mail. Default value is sender email.","x-example":"email@example.com"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name"]}}}}}},"\/messaging\/providers\/sendgrid\/{providerId}":{"patch":{"summary":"Update Sendgrid provider","operationId":"messagingUpdateSendgridProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateSendgridProvider","weight":339,"cookies":false,"type":"","demo":"messaging\/update-sendgrid-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-sendgrid-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"apiKey":{"type":"string","description":"Sendgrid API key.","x-example":"[API_KEY]"},"fromName":{"type":"string","description":"Sender Name.","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the Reply To field for the mail. Default value is Sender Name.","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the Reply To field for the mail. Default value is Sender Email.","x-example":"[REPLY_TO_EMAIL]"}}}}}}}},"\/messaging\/providers\/smtp":{"post":{"summary":"Create SMTP provider","operationId":"messagingCreateSMTPProvider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createSMTPProvider","weight":327,"cookies":false,"type":"","demo":"messaging\/create-s-m-t-p-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-smtp-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"host":{"type":"string","description":"SMTP hosts. Either a single hostname or multiple semicolon-delimited hostnames. You can also specify a different port for each host by using this format: [hostname:port] (e.g. \"smtp1.example.com:25;smtp2.example.com\"). You can also specify encryption type, for example: (e.g. \"tls:\/\/smtp1.example.com:587;ssl:\/\/smtp2.example.com:465\"). Hosts will be tried in order.","x-example":"[HOST]"},"port":{"type":"integer","description":"The default SMTP server port.","x-example":1},"username":{"type":"string","description":"Authentication username.","x-example":"[USERNAME]"},"password":{"type":"string","description":"Authentication password.","x-example":"[PASSWORD]"},"encryption":{"type":"string","description":"Encryption type. Can be omitted, 'ssl', or 'tls'","x-example":"none","enum":["none","ssl","tls"],"x-enum-name":"SMTPEncryption","x-enum-keys":[]},"autoTLS":{"type":"boolean","description":"Enable SMTP AutoTLS feature.","x-example":false},"mailer":{"type":"string","description":"The value to use for the X-Mailer header.","x-example":"[MAILER]"},"fromName":{"type":"string","description":"Sender Name.","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the reply to field for the mail. Default value is sender name.","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the reply to field for the mail. Default value is sender email.","x-example":"email@example.com"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name","host"]}}}}}},"\/messaging\/providers\/smtp\/{providerId}":{"patch":{"summary":"Update SMTP provider","operationId":"messagingUpdateSMTPProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateSMTPProvider","weight":340,"cookies":false,"type":"","demo":"messaging\/update-s-m-t-p-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-smtp-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"host":{"type":"string","description":"SMTP hosts. Either a single hostname or multiple semicolon-delimited hostnames. You can also specify a different port for each host by using this format: [hostname:port] (e.g. \"smtp1.example.com:25;smtp2.example.com\"). You can also specify encryption type, for example: (e.g. \"tls:\/\/smtp1.example.com:587;ssl:\/\/smtp2.example.com:465\"). Hosts will be tried in order.","x-example":"[HOST]"},"port":{"type":"integer","description":"SMTP port.","x-example":1},"username":{"type":"string","description":"Authentication username.","x-example":"[USERNAME]"},"password":{"type":"string","description":"Authentication password.","x-example":"[PASSWORD]"},"encryption":{"type":"string","description":"Encryption type. Can be 'ssl' or 'tls'","x-example":"none","enum":["none","ssl","tls"],"x-enum-name":"SMTPEncryption","x-enum-keys":[]},"autoTLS":{"type":"boolean","description":"Enable SMTP AutoTLS feature.","x-example":false},"mailer":{"type":"string","description":"The value to use for the X-Mailer header.","x-example":"[MAILER]"},"fromName":{"type":"string","description":"Sender Name.","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the Reply To field for the mail. Default value is Sender Name.","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the Reply To field for the mail. Default value is Sender Email.","x-example":"[REPLY_TO_EMAIL]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}}}}}}}},"\/messaging\/providers\/telesign":{"post":{"summary":"Create Telesign provider","operationId":"messagingCreateTelesignProvider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createTelesignProvider","weight":329,"cookies":false,"type":"","demo":"messaging\/create-telesign-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-telesign-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"customerId":{"type":"string","description":"Telesign customer ID.","x-example":"[CUSTOMER_ID]"},"apiKey":{"type":"string","description":"Telesign API key.","x-example":"[API_KEY]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name"]}}}}}},"\/messaging\/providers\/telesign\/{providerId}":{"patch":{"summary":"Update Telesign provider","operationId":"messagingUpdateTelesignProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateTelesignProvider","weight":342,"cookies":false,"type":"","demo":"messaging\/update-telesign-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-telesign-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"customerId":{"type":"string","description":"Telesign customer ID.","x-example":"[CUSTOMER_ID]"},"apiKey":{"type":"string","description":"Telesign API key.","x-example":"[API_KEY]"},"from":{"type":"string","description":"Sender number.","x-example":"[FROM]"}}}}}}}},"\/messaging\/providers\/textmagic":{"post":{"summary":"Create Textmagic provider","operationId":"messagingCreateTextmagicProvider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createTextmagicProvider","weight":330,"cookies":false,"type":"","demo":"messaging\/create-textmagic-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-textmagic-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"username":{"type":"string","description":"Textmagic username.","x-example":"[USERNAME]"},"apiKey":{"type":"string","description":"Textmagic apiKey.","x-example":"[API_KEY]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name"]}}}}}},"\/messaging\/providers\/textmagic\/{providerId}":{"patch":{"summary":"Update Textmagic provider","operationId":"messagingUpdateTextmagicProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateTextmagicProvider","weight":343,"cookies":false,"type":"","demo":"messaging\/update-textmagic-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-textmagic-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"username":{"type":"string","description":"Textmagic username.","x-example":"[USERNAME]"},"apiKey":{"type":"string","description":"Textmagic apiKey.","x-example":"[API_KEY]"},"from":{"type":"string","description":"Sender number.","x-example":"[FROM]"}}}}}}}},"\/messaging\/providers\/twilio":{"post":{"summary":"Create Twilio provider","operationId":"messagingCreateTwilioProvider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createTwilioProvider","weight":331,"cookies":false,"type":"","demo":"messaging\/create-twilio-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-twilio-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"accountSid":{"type":"string","description":"Twilio account secret ID.","x-example":"[ACCOUNT_SID]"},"authToken":{"type":"string","description":"Twilio authentication token.","x-example":"[AUTH_TOKEN]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name"]}}}}}},"\/messaging\/providers\/twilio\/{providerId}":{"patch":{"summary":"Update Twilio provider","operationId":"messagingUpdateTwilioProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateTwilioProvider","weight":344,"cookies":false,"type":"","demo":"messaging\/update-twilio-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-twilio-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"accountSid":{"type":"string","description":"Twilio account secret ID.","x-example":"[ACCOUNT_SID]"},"authToken":{"type":"string","description":"Twilio authentication token.","x-example":"[AUTH_TOKEN]"},"from":{"type":"string","description":"Sender number.","x-example":"[FROM]"}}}}}}}},"\/messaging\/providers\/vonage":{"post":{"summary":"Create Vonage provider","operationId":"messagingCreateVonageProvider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createVonageProvider","weight":332,"cookies":false,"type":"","demo":"messaging\/create-vonage-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-vonage-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"apiKey":{"type":"string","description":"Vonage API key.","x-example":"[API_KEY]"},"apiSecret":{"type":"string","description":"Vonage API secret.","x-example":"[API_SECRET]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name"]}}}}}},"\/messaging\/providers\/vonage\/{providerId}":{"patch":{"summary":"Update Vonage provider","operationId":"messagingUpdateVonageProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateVonageProvider","weight":345,"cookies":false,"type":"","demo":"messaging\/update-vonage-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-vonage-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"apiKey":{"type":"string","description":"Vonage API key.","x-example":"[API_KEY]"},"apiSecret":{"type":"string","description":"Vonage API secret.","x-example":"[API_SECRET]"},"from":{"type":"string","description":"Sender number.","x-example":"[FROM]"}}}}}}}},"\/messaging\/providers\/{providerId}":{"get":{"summary":"Get provider","operationId":"messagingGetProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"getProvider","weight":337,"cookies":false,"type":"","demo":"messaging\/get-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/get-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}]},"delete":{"summary":"Delete provider","operationId":"messagingDeleteProvider","tags":["messaging"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteProvider","weight":348,"cookies":false,"type":"","demo":"messaging\/delete-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}]}},"\/messaging\/providers\/{providerId}\/logs":{"get":{"summary":"List provider logs","operationId":"messagingListProviderLogs","tags":["messaging"],"description":"","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listProviderLogs","weight":336,"cookies":false,"type":"","demo":"messaging\/list-provider-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/providers\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/messaging\/subscribers\/{subscriberId}\/logs":{"get":{"summary":"List subscriber logs","operationId":"messagingListSubscriberLogs","tags":["messaging"],"description":"","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listSubscriberLogs","weight":357,"cookies":false,"type":"","demo":"messaging\/list-subscriber-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/subscribers\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"subscriberId","description":"Subscriber ID.","required":true,"schema":{"type":"string","x-example":"[SUBSCRIBER_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/messaging\/topics":{"get":{"summary":"List topics.","operationId":"messagingListTopics","tags":["messaging"],"description":"","responses":{"200":{"description":"Topic list","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/topicList"}}}}},"x-appwrite":{"method":"listTopics","weight":350,"cookies":false,"type":"","demo":"messaging\/list-topics.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-topics.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, description, total","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create a topic.","operationId":"messagingCreateTopic","tags":["messaging"],"description":"","responses":{"201":{"description":"Topic","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/topic"}}}}},"x-appwrite":{"method":"createTopic","weight":349,"cookies":false,"type":"","demo":"messaging\/create-topic.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-topic.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"topicId":{"type":"string","description":"Topic ID. Choose a custom Topic ID or a new Topic ID.","x-example":"[TOPIC_ID]"},"name":{"type":"string","description":"Topic Name.","x-example":"[NAME]"},"subscribe":{"type":"array","description":"An array of role strings with subscribe permission. By default all users are granted with any subscribe permission. [learn more about roles](https:\/\/appwrite.io\/docs\/permissions#permission-roles). Maximum of 100 roles are allowed, each 64 characters long.","x-example":"[\"any\"]","items":{"type":"string"}}},"required":["topicId","name"]}}}}}},"\/messaging\/topics\/{topicId}":{"get":{"summary":"Get a topic.","operationId":"messagingGetTopic","tags":["messaging"],"description":"","responses":{"200":{"description":"Topic","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/topic"}}}}},"x-appwrite":{"method":"getTopic","weight":352,"cookies":false,"type":"","demo":"messaging\/get-topic.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/get-topic.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID.","required":true,"schema":{"type":"string","x-example":"[TOPIC_ID]"},"in":"path"}]},"patch":{"summary":"Update a topic.","operationId":"messagingUpdateTopic","tags":["messaging"],"description":"","responses":{"200":{"description":"Topic","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/topic"}}}}},"x-appwrite":{"method":"updateTopic","weight":353,"cookies":false,"type":"","demo":"messaging\/update-topic.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-topic.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID.","required":true,"schema":{"type":"string","x-example":"[TOPIC_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Topic Name.","x-example":"[NAME]"}}}}}}},"delete":{"summary":"Delete a topic.","operationId":"messagingDeleteTopic","tags":["messaging"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteTopic","weight":354,"cookies":false,"type":"","demo":"messaging\/delete-topic.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-topic.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID.","required":true,"schema":{"type":"string","x-example":"[TOPIC_ID]"},"in":"path"}]}},"\/messaging\/topics\/{topicId}\/logs":{"get":{"summary":"List topic logs","operationId":"messagingListTopicLogs","tags":["messaging"],"description":"","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listTopicLogs","weight":351,"cookies":false,"type":"","demo":"messaging\/list-topic-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/topics\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID.","required":true,"schema":{"type":"string","x-example":"[TOPIC_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/messaging\/topics\/{topicId}\/subscribers":{"get":{"summary":"List subscribers.","operationId":"messagingListSubscribers","tags":["messaging"],"description":"","responses":{"200":{"description":"Subscriber list","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/subscriberList"}}}}},"x-appwrite":{"method":"listSubscribers","weight":356,"cookies":false,"type":"","demo":"messaging\/list-subscribers.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-subscribers.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID subscribed to.","required":true,"schema":{"type":"string","x-example":"[TOPIC_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, provider, type, enabled","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create a subscriber.","operationId":"messagingCreateSubscriber","tags":["messaging"],"description":"","responses":{"201":{"description":"Subscriber","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/subscriber"}}}}},"x-appwrite":{"method":"createSubscriber","weight":355,"cookies":false,"type":"","demo":"messaging\/create-subscriber.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-subscriber.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.write","platforms":["server","client","console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[],"Session":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID to subscribe to.","required":true,"schema":{"type":"string","x-example":"[TOPIC_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"subscriberId":{"type":"string","description":"Subscriber ID. Choose a custom Subscriber ID or a new Subscriber ID.","x-example":"[SUBSCRIBER_ID]"},"targetId":{"type":"string","description":"Target ID. The target ID to link to the specified Topic ID.","x-example":"[TARGET_ID]"}},"required":["subscriberId","targetId"]}}}}}},"\/messaging\/topics\/{topicId}\/subscribers\/{subscriberId}":{"get":{"summary":"Get a subscriber.","operationId":"messagingGetSubscriber","tags":["messaging"],"description":"","responses":{"200":{"description":"Subscriber","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/subscriber"}}}}},"x-appwrite":{"method":"getSubscriber","weight":358,"cookies":false,"type":"","demo":"messaging\/get-subscriber.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/get-subscriber.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID subscribed to.","required":true,"schema":{"type":"string","x-example":"[TOPIC_ID]"},"in":"path"},{"name":"subscriberId","description":"Subscriber ID.","required":true,"schema":{"type":"string","x-example":"[SUBSCRIBER_ID]"},"in":"path"}]},"delete":{"summary":"Delete a subscriber.","operationId":"messagingDeleteSubscriber","tags":["messaging"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSubscriber","weight":359,"cookies":false,"type":"","demo":"messaging\/delete-subscriber.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-subscriber.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.write","platforms":["server","client","console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[],"Session":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID subscribed to.","required":true,"schema":{"type":"string","x-example":"[TOPIC_ID]"},"in":"path"},{"name":"subscriberId","description":"Subscriber ID.","required":true,"schema":{"type":"string","x-example":"[SUBSCRIBER_ID]"},"in":"path"}]}},"\/storage\/buckets":{"get":{"summary":"List buckets","operationId":"storageListBuckets","tags":["storage"],"description":"Get a list of all the storage buckets. You can use the query params to filter your results.","responses":{"200":{"description":"Buckets List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/bucketList"}}}}},"x-appwrite":{"method":"listBuckets","weight":188,"cookies":false,"type":"","demo":"storage\/list-buckets.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/list-buckets.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: enabled, name, fileSecurity, maximumFileSize, encryption, antivirus","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create bucket","operationId":"storageCreateBucket","tags":["storage"],"description":"Create a new storage bucket.","responses":{"201":{"description":"Bucket","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/bucket"}}}}},"x-appwrite":{"method":"createBucket","weight":187,"cookies":false,"type":"","demo":"storage\/create-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"bucketId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, no user is granted with any permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":false},"enabled":{"type":"boolean","description":"Is bucket enabled? When set to 'disabled', users cannot access the files in this bucket but Server SDKs with and API key can still access the bucket. No files are lost when this is toggled.","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB.","x-example":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","x-example":"none","enum":["none","gzip","zstd"],"x-enum-name":null,"x-enum-keys":[]},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","x-example":false}},"required":["bucketId","name"]}}}}}},"\/storage\/buckets\/{bucketId}":{"get":{"summary":"Get bucket","operationId":"storageGetBucket","tags":["storage"],"description":"Get a storage bucket by its unique ID. This endpoint response returns a JSON object with the storage bucket metadata.","responses":{"200":{"description":"Bucket","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/bucket"}}}}},"x-appwrite":{"method":"getBucket","weight":189,"cookies":false,"type":"","demo":"storage\/get-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"bucketId","description":"Bucket unique ID.","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"}]},"put":{"summary":"Update bucket","operationId":"storageUpdateBucket","tags":["storage"],"description":"Update a storage bucket by its unique ID.","responses":{"200":{"description":"Bucket","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/bucket"}}}}},"x-appwrite":{"method":"updateBucket","weight":190,"cookies":false,"type":"","demo":"storage\/update-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"bucketId","description":"Bucket unique ID.","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Bucket name","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":false},"enabled":{"type":"boolean","description":"Is bucket enabled? When set to 'disabled', users cannot access the files in this bucket but Server SDKs with and API key can still access the bucket. No files are lost when this is toggled.","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB.","x-example":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","x-example":"none","enum":["none","gzip","zstd"],"x-enum-name":null,"x-enum-keys":[]},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","x-example":false}},"required":["name"]}}}}},"delete":{"summary":"Delete bucket","operationId":"storageDeleteBucket","tags":["storage"],"description":"Delete a storage bucket by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteBucket","weight":191,"cookies":false,"type":"","demo":"storage\/delete-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"bucketId","description":"Bucket unique ID.","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files":{"get":{"summary":"List files","operationId":"storageListFiles","tags":["storage"],"description":"Get a list of all the user files. You can use the query params to filter your results.","responses":{"200":{"description":"Files List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/fileList"}}}}},"x-appwrite":{"method":"listFiles","weight":193,"cookies":false,"type":"","demo":"storage\/list-files.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/list-files.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create file","operationId":"storageCreateFile","tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"createFile","weight":192,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"}],"requestBody":{"content":{"multipart\/form-data":{"schema":{"type":"object","properties":{"fileId":{"type":"string","description":"File ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[FILE_ID]","x-upload-id":true},"file":{"type":"string","description":"Binary file. Appwrite SDKs provide helpers to handle file input. [Learn about file input](https:\/\/appwrite.io\/docs\/storage#file-input).","x-example":null},"permissions":{"type":"array","description":"An array of permission strings. By default, only the current user is granted all permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["fileId","file"]}}}}}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get file","operationId":"storageGetFile","tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"getFile","weight":194,"cookies":false,"type":"","demo":"storage\/get-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File ID.","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"}]},"put":{"summary":"Update file","operationId":"storageUpdateFile","tags":["storage"],"description":"Update a file by its unique ID. Only users with write permissions have access to update this resource.","responses":{"200":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"updateFile","weight":198,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File unique ID.","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Name of the file","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission string. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":199,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File ID.","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/download":{"get":{"summary":"Get file for download","operationId":"storageGetFileDownload","tags":["storage"],"description":"Get a file content by its unique ID. The endpoint response return with a 'Content-Disposition: attachment' header that tells the browser to start downloading the file to user downloads directory.","responses":{"200":{"description":"File"}},"x-appwrite":{"method":"getFileDownload","weight":196,"cookies":false,"type":"location","demo":"storage\/get-file-download.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-download.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File ID.","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/preview":{"get":{"summary":"Get file preview","operationId":"storageGetFilePreview","tags":["storage"],"description":"Get a file preview image. Currently, this method supports preview for image files (jpg, png, and gif), other supported formats, like pdf, docs, slides, and spreadsheets, will return the file icon image. You can also pass query string arguments for cutting and resizing your preview image. Preview is supported only for image files smaller than 10MB.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFilePreview","weight":195,"cookies":false,"type":"location","demo":"storage\/get-file-preview.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-preview.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File ID","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"},{"name":"width","description":"Resize preview image width, Pass an integer between 0 to 4000.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 4000.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"gravity","description":"Image crop gravity. Can be one of center,top-left,top,top-right,left,right,bottom-left,bottom,bottom-right","required":false,"schema":{"type":"string","x-example":"center","enum":["center","top-left","top","top-right","left","right","bottom-left","bottom","bottom-right"],"x-enum-name":"ImageGravity","x-enum-keys":[],"default":"center"},"in":"query"},{"name":"quality","description":"Preview image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"borderWidth","description":"Preview image border in pixels. Pass an integer between 0 to 100. Defaults to 0.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"borderColor","description":"Preview image border color. Use a valid HEX color, no # is needed for prefix.","required":false,"schema":{"type":"string","default":""},"in":"query"},{"name":"borderRadius","description":"Preview image border radius in pixels. Pass an integer between 0 to 4000.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"opacity","description":"Preview image opacity. Only works with images having an alpha channel (like png). Pass a number between 0 to 1.","required":false,"schema":{"type":"number","format":"float","x-example":0,"default":1},"in":"query"},{"name":"rotation","description":"Preview image rotation in degrees. Pass an integer between -360 and 360.","required":false,"schema":{"type":"integer","format":"int32","x-example":-360,"default":0},"in":"query"},{"name":"background","description":"Preview image background color. Only works with transparent images (png). Use a valid HEX color, no # is needed for prefix.","required":false,"schema":{"type":"string","default":""},"in":"query"},{"name":"output","description":"Output format type (jpeg, jpg, png, gif and webp).","required":false,"schema":{"type":"string","x-example":"jpg","enum":["jpg","jpeg","gif","png","webp"],"x-enum-name":"ImageFormat","x-enum-keys":[],"default":""},"in":"query"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/view":{"get":{"summary":"Get file for view","operationId":"storageGetFileView","tags":["storage"],"description":"Get a file content by its unique ID. This endpoint is similar to the download method but returns with no 'Content-Disposition: attachment' header.","responses":{"200":{"description":"File"}},"x-appwrite":{"method":"getFileView","weight":197,"cookies":false,"type":"location","demo":"storage\/get-file-view.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-view.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File ID.","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"}]}},"\/teams":{"get":{"summary":"List teams","operationId":"teamsList","tags":["teams"],"description":"Get a list of all the teams in which the current user is a member. You can use the parameters to filter your results.","responses":{"200":{"description":"Teams List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/teamList"}}}}},"x-appwrite":{"method":"list","weight":203,"cookies":false,"type":"","demo":"teams\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-teams.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total, billingPlan","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create team","operationId":"teamsCreate","tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"create","weight":202,"cookies":false,"type":"","demo":"teams\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/create-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"teamId":{"type":"string","description":"Team ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[TEAM_ID]"},"name":{"type":"string","description":"Team name. Max length: 128 chars.","x-example":"[NAME]"},"roles":{"type":"array","description":"Array of strings. Use this param to set the roles in the team for the user who created it. The default role is **owner**. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}}}}},"\/teams\/{teamId}":{"get":{"summary":"Get team","operationId":"teamsGet","tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"get","weight":204,"cookies":false,"type":"","demo":"teams\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams","offline-key":"{teamId}","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}]},"put":{"summary":"Update name","operationId":"teamsUpdateName","tags":["teams"],"description":"Update the team's name by its unique ID.","responses":{"200":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"updateName","weight":206,"cookies":false,"type":"","demo":"teams\/update-name.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-name.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams","offline-key":"{teamId}","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"New team name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["name"]}}}}},"delete":{"summary":"Delete team","operationId":"teamsDelete","tags":["teams"],"description":"Delete a team using its ID. Only team members with the owner role can delete the team.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":208,"cookies":false,"type":"","demo":"teams\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/delete-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}]}},"\/teams\/{teamId}\/memberships":{"get":{"summary":"List team memberships","operationId":"teamsListMemberships","tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"listMemberships","weight":210,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/memberships","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create team membership","operationId":"teamsCreateMembership","tags":["teams"],"description":"Invite a new member to join your team. Provide an ID for existing users, or invite unregistered users using an email or phone number. If initiated from a Client SDK, Appwrite will send an email or sms with a link to join the team to the invited user, and an account will be created for them if one doesn't exist. If initiated from a Server SDK, the new member will be added automatically to the team.\n\nYou only need to provide one of a user ID, email, or phone number. Appwrite will prioritize accepting the user ID > email > phone number if you provide more than one of these parameters.\n\nUse the `url` parameter to redirect the user from the invitation email to your app. After the user is redirected, use the [Update Team Membership Status](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/teams#updateMembershipStatus) endpoint to allow the user to accept the invitation to the team. \n\nPlease note that to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) Appwrite will accept the only redirect URLs under the domains you have added as a platform on the Appwrite Console.\n","responses":{"201":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"createMembership","weight":209,"cookies":false,"type":"","demo":"teams\/create-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/create-team-membership.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"email":{"type":"string","description":"Email of the new team member.","x-example":"email@example.com"},"userId":{"type":"string","description":"ID of the user to be added to a team.","x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"roles":{"type":"array","description":"Array of strings. Use this param to set the user roles in the team. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"},"name":{"type":"string","description":"Name of the new team member. Max length: 128 chars.","x-example":"[NAME]"}},"required":["roles"]}}}}}},"\/teams\/{teamId}\/memberships\/{membershipId}":{"get":{"summary":"Get team membership","operationId":"teamsGetMembership","tags":["teams"],"description":"Get a team member by the membership unique id. All team members have read access for this resource.","responses":{"200":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"getMembership","weight":211,"cookies":false,"type":"","demo":"teams\/get-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-member.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/memberships","offline-key":"{membershipId}","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"schema":{"type":"string","x-example":"[MEMBERSHIP_ID]"},"in":"path"}]},"patch":{"summary":"Update membership","operationId":"teamsUpdateMembership","tags":["teams"],"description":"Modify the roles of a team member. Only team members with the owner role have access to this endpoint. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions).\n","responses":{"200":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"updateMembership","weight":212,"cookies":false,"type":"","demo":"teams\/update-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"schema":{"type":"string","x-example":"[MEMBERSHIP_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"roles":{"type":"array","description":"An array of strings. Use this param to set the user's roles in the team. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["roles"]}}}}},"delete":{"summary":"Delete team membership","operationId":"teamsDeleteMembership","tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":214,"cookies":false,"type":"","demo":"teams\/delete-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/delete-team-membership.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"schema":{"type":"string","x-example":"[MEMBERSHIP_ID]"},"in":"path"}]}},"\/teams\/{teamId}\/memberships\/{membershipId}\/status":{"patch":{"summary":"Update team membership status","operationId":"teamsUpdateMembershipStatus","tags":["teams"],"description":"Use this endpoint to allow a user to accept an invitation to join a team after being redirected back to your app from the invitation email received by the user.\n\nIf the request is successful, a session for the user is automatically created.\n","responses":{"200":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"updateMembershipStatus","weight":213,"cookies":false,"type":"","demo":"teams\/update-membership-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"public","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"schema":{"type":"string","x-example":"[MEMBERSHIP_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Secret key.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/teams\/{teamId}\/prefs":{"get":{"summary":"Get team preferences","operationId":"teamsGetPrefs","tags":["teams"],"description":"Get the team's shared preferences by its unique ID. If a preference doesn't need to be shared by all team members, prefer storing them in [user preferences](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#getPrefs).","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"getPrefs","weight":205,"cookies":false,"type":"","demo":"teams\/get-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/prefs","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}]},"put":{"summary":"Update preferences","operationId":"teamsUpdatePrefs","tags":["teams"],"description":"Update the team's preferences by its unique ID. The object you pass is stored as is and replaces any previous value. The maximum allowed prefs size is 64kB and throws an error if exceeded.","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"updatePrefs","weight":207,"cookies":false,"type":"","demo":"teams\/update-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/prefs","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"prefs":{"type":"object","description":"Prefs key-value JSON object.","x-example":"{}"}},"required":["prefs"]}}}}}},"\/users":{"get":{"summary":"List users","operationId":"usersList","tags":["users"],"description":"Get a list of all the project's users. You can use the query params to filter your results.","responses":{"200":{"description":"Users List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/userList"}}}}},"x-appwrite":{"method":"list","weight":225,"cookies":false,"type":"","demo":"users\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-users.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, email, phone, status, passwordUpdate, registration, emailVerification, phoneVerification, labels","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create user","operationId":"usersCreate","tags":["users"],"description":"Create a new user.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"create","weight":216,"cookies":false,"type":"","demo":"users\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"password":{"type":"string","description":"Plain text user password. Must be at least 8 chars.","x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId"]}}}}}},"\/users\/argon2":{"post":{"summary":"Create user with Argon2 password","operationId":"usersCreateArgon2User","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Argon2](https:\/\/en.wikipedia.org\/wiki\/Argon2) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createArgon2User","weight":219,"cookies":false,"type":"","demo":"users\/create-argon2user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-argon2-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Argon2.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/bcrypt":{"post":{"summary":"Create user with bcrypt password","operationId":"usersCreateBcryptUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Bcrypt](https:\/\/en.wikipedia.org\/wiki\/Bcrypt) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createBcryptUser","weight":217,"cookies":false,"type":"","demo":"users\/create-bcrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-bcrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Bcrypt.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/identities":{"get":{"summary":"List Identities","operationId":"usersListIdentities","tags":["users"],"description":"Get identities for all users.","responses":{"200":{"description":"Identities List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/identityList"}}}}},"x-appwrite":{"method":"listIdentities","weight":233,"cookies":false,"type":"","demo":"users\/list-identities.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-identities.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, provider, providerUid, providerEmail, providerAccessTokenExpiry","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]}},"\/users\/identities\/{identityId}":{"delete":{"summary":"Delete identity","operationId":"usersDeleteIdentity","tags":["users"],"description":"Delete an identity by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIdentity","weight":253,"cookies":false,"type":"","demo":"users\/delete-identity.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-identity.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"identityId","description":"Identity ID.","required":true,"schema":{"type":"string","x-example":"[IDENTITY_ID]"},"in":"path"}]}},"\/users\/md5":{"post":{"summary":"Create user with MD5 password","operationId":"usersCreateMD5User","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [MD5](https:\/\/en.wikipedia.org\/wiki\/MD5) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createMD5User","weight":218,"cookies":false,"type":"","demo":"users\/create-m-d5user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-md5-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using MD5.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/phpass":{"post":{"summary":"Create user with PHPass password","operationId":"usersCreatePHPassUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [PHPass](https:\/\/www.openwall.com\/phpass\/) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createPHPassUser","weight":221,"cookies":false,"type":"","demo":"users\/create-p-h-pass-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-phpass-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or pass the string `ID.unique()`to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using PHPass.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/scrypt":{"post":{"summary":"Create user with Scrypt password","operationId":"usersCreateScryptUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt](https:\/\/github.com\/Tarsnap\/scrypt) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createScryptUser","weight":222,"cookies":false,"type":"","demo":"users\/create-scrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt.","x-example":"password"},"passwordSalt":{"type":"string","description":"Optional salt used to hash password.","x-example":"[PASSWORD_SALT]"},"passwordCpu":{"type":"integer","description":"Optional CPU cost used to hash password.","x-example":null},"passwordMemory":{"type":"integer","description":"Optional memory cost used to hash password.","x-example":null},"passwordParallel":{"type":"integer","description":"Optional parallelization cost used to hash password.","x-example":null},"passwordLength":{"type":"integer","description":"Optional hash length used to hash password.","x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordCpu","passwordMemory","passwordParallel","passwordLength"]}}}}}},"\/users\/scrypt-modified":{"post":{"summary":"Create user with Scrypt modified password","operationId":"usersCreateScryptModifiedUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt Modified](https:\/\/gist.github.com\/Meldiron\/eecf84a0225eccb5a378d45bb27462cc) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createScryptModifiedUser","weight":223,"cookies":false,"type":"","demo":"users\/create-scrypt-modified-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-modified-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt Modified.","x-example":"password"},"passwordSalt":{"type":"string","description":"Salt used to hash password.","x-example":"[PASSWORD_SALT]"},"passwordSaltSeparator":{"type":"string","description":"Salt separator used to hash password.","x-example":"[PASSWORD_SALT_SEPARATOR]"},"passwordSignerKey":{"type":"string","description":"Signer key used to hash password.","x-example":"[PASSWORD_SIGNER_KEY]"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordSaltSeparator","passwordSignerKey"]}}}}}},"\/users\/sha":{"post":{"summary":"Create user with SHA password","operationId":"usersCreateSHAUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [SHA](https:\/\/en.wikipedia.org\/wiki\/Secure_Hash_Algorithm) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createSHAUser","weight":220,"cookies":false,"type":"","demo":"users\/create-s-h-a-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-sha-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using SHA.","x-example":"password"},"passwordVersion":{"type":"string","description":"Optional SHA version used to hash password. Allowed values are: 'sha1', 'sha224', 'sha256', 'sha384', 'sha512\/224', 'sha512\/256', 'sha512', 'sha3-224', 'sha3-256', 'sha3-384', 'sha3-512'","x-example":"sha1","enum":["sha1","sha224","sha256","sha384","sha512\/224","sha512\/256","sha512","sha3-224","sha3-256","sha3-384","sha3-512"],"x-enum-name":"PasswordHash","x-enum-keys":[]},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/{userId}":{"get":{"summary":"Get user","operationId":"usersGet","tags":["users"],"description":"Get a user by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"get","weight":226,"cookies":false,"type":"","demo":"users\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]},"delete":{"summary":"Delete user","operationId":"usersDelete","tags":["users"],"description":"Delete a user by its unique ID, thereby releasing it's ID. Since ID is released and can be reused, all user-related resources like documents or storage files should be deleted before user deletion. If you want to keep ID reserved, use the [updateStatus](https:\/\/appwrite.io\/docs\/server\/users#usersUpdateStatus) endpoint instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":251,"cookies":false,"type":"","demo":"users\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]}},"\/users\/{userId}\/email":{"patch":{"summary":"Update email","operationId":"usersUpdateEmail","tags":["users"],"description":"Update the user email by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateEmail","weight":239,"cookies":false,"type":"","demo":"users\/update-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","x-example":"email@example.com"}},"required":["email"]}}}}}},"\/users\/{userId}\/labels":{"put":{"summary":"Update user labels","operationId":"usersUpdateLabels","tags":["users"],"description":"Update the user labels by its unique ID. \n\nLabels can be used to grant access to resources. While teams are a way for user's to share access to a resource, labels can be defined by the developer to grant access without an invitation. See the [Permissions docs](https:\/\/appwrite.io\/docs\/permissions) for more info.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateLabels","weight":235,"cookies":false,"type":"","demo":"users\/update-labels.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-labels.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"labels":{"type":"array","description":"Array of user labels. Replaces the previous labels. Maximum of 1000 labels are allowed, each up to 36 alphanumeric characters long.","x-example":null,"items":{"type":"string"}}},"required":["labels"]}}}}}},"\/users\/{userId}\/logs":{"get":{"summary":"List user logs","operationId":"usersListLogs","tags":["users"],"description":"Get the user activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listLogs","weight":231,"cookies":false,"type":"","demo":"users\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/users\/{userId}\/memberships":{"get":{"summary":"List user memberships","operationId":"usersListMemberships","tags":["users"],"description":"Get the user membership list by its unique ID.","responses":{"200":{"description":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"listMemberships","weight":230,"cookies":false,"type":"","demo":"users\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-memberships.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]}},"\/users\/{userId}\/mfa":{"patch":{"summary":"Update MFA","operationId":"usersUpdateMfa","tags":["users"],"description":"","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateMfa","weight":244,"cookies":false,"type":"","demo":"users\/update-mfa.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-mfa.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"mfa":{"type":"boolean","description":"Enable or disable MFA.","x-example":false}},"required":["mfa"]}}}}}},"\/users\/{userId}\/mfa\/factors":{"get":{"summary":"List Factors","operationId":"usersListFactors","tags":["users"],"description":"","responses":{"200":{"description":"MFAFactors","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/mfaFactors"}}}}},"x-appwrite":{"method":"listFactors","weight":245,"cookies":false,"type":"","demo":"users\/list-factors.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-factors.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]}},"\/users\/{userId}\/mfa\/{type}":{"delete":{"summary":"Delete Authenticator","operationId":"usersDeleteAuthenticator","tags":["users"],"description":"","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"deleteAuthenticator","weight":246,"cookies":false,"type":"","demo":"users\/delete-authenticator.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-mfa.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"type","description":"Type of authenticator.","required":true,"schema":{"type":"string","x-example":"totp","enum":["totp"],"x-enum-name":null,"x-enum-keys":[]},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"otp":{"type":"string","description":"Valid verification token.","x-example":"[OTP]"}},"required":["otp"]}}}}}},"\/users\/{userId}\/name":{"patch":{"summary":"Update name","operationId":"usersUpdateName","tags":["users"],"description":"Update the user name by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateName","weight":237,"cookies":false,"type":"","demo":"users\/update-name.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-name.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["name"]}}}}}},"\/users\/{userId}\/password":{"patch":{"summary":"Update password","operationId":"usersUpdatePassword","tags":["users"],"description":"Update the user password by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePassword","weight":238,"cookies":false,"type":"","demo":"users\/update-password.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-password.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"password":{"type":"string","description":"New user password. Must be at least 8 chars.","x-example":null}},"required":["password"]}}}}}},"\/users\/{userId}\/phone":{"patch":{"summary":"Update phone","operationId":"usersUpdatePhone","tags":["users"],"description":"Update the user phone by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePhone","weight":240,"cookies":false,"type":"","demo":"users\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"number":{"type":"string","description":"User phone number.","x-example":"+12065550100"}},"required":["number"]}}}}}},"\/users\/{userId}\/prefs":{"get":{"summary":"Get user preferences","operationId":"usersGetPrefs","tags":["users"],"description":"Get the user preferences by its unique ID.","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"getPrefs","weight":227,"cookies":false,"type":"","demo":"users\/get-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]},"patch":{"summary":"Update user preferences","operationId":"usersUpdatePrefs","tags":["users"],"description":"Update the user preferences by its unique ID. The object you pass is stored as is, and replaces any previous value. The maximum allowed prefs size is 64kB and throws error if exceeded.","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"updatePrefs","weight":242,"cookies":false,"type":"","demo":"users\/update-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"prefs":{"type":"object","description":"Prefs key-value JSON object.","x-example":"{}"}},"required":["prefs"]}}}}}},"\/users\/{userId}\/sessions":{"get":{"summary":"List user sessions","operationId":"usersListSessions","tags":["users"],"description":"Get the user sessions list by its unique ID.","responses":{"200":{"description":"Sessions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/sessionList"}}}}},"x-appwrite":{"method":"listSessions","weight":229,"cookies":false,"type":"","demo":"users\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]},"post":{"summary":"Create session","operationId":"usersCreateSession","tags":["users"],"description":"Creates a session for a user. Returns an immediately usable session object.\n\nIf you want to generate a token for a custom authentication flow, use the [POST \/users\/{userId}\/tokens](https:\/\/appwrite.io\/docs\/server\/users#createToken) endpoint.","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"createSession","weight":247,"cookies":false,"type":"","demo":"users\/create-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-session.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]},"delete":{"summary":"Delete user sessions","operationId":"usersDeleteSessions","tags":["users"],"description":"Delete all user's sessions by using the user's unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":250,"cookies":false,"type":"","demo":"users\/delete-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]}},"\/users\/{userId}\/sessions\/{sessionId}":{"delete":{"summary":"Delete user session","operationId":"usersDeleteSession","tags":["users"],"description":"Delete a user sessions by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSession","weight":249,"cookies":false,"type":"","demo":"users\/delete-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-user-session.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"sessionId","description":"Session ID.","required":true,"schema":{"type":"string","x-example":"[SESSION_ID]"},"in":"path"}]}},"\/users\/{userId}\/status":{"patch":{"summary":"Update user status","operationId":"usersUpdateStatus","tags":["users"],"description":"Update the user status by its unique ID. Use this endpoint as an alternative to deleting a user if you want to keep user's ID reserved.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateStatus","weight":234,"cookies":false,"type":"","demo":"users\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"status":{"type":"boolean","description":"User Status. To activate the user pass `true` and to block the user pass `false`.","x-example":false}},"required":["status"]}}}}}},"\/users\/{userId}\/targets":{"get":{"summary":"List User Targets","operationId":"usersListTargets","tags":["users"],"description":"","responses":{"200":{"description":"Target list","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/targetList"}}}}},"x-appwrite":{"method":"listTargets","weight":232,"cookies":false,"type":"","demo":"users\/list-targets.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-targets.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.read","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, email, phone, status, passwordUpdate, registration, emailVerification, phoneVerification, labels","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"post":{"summary":"Create User Target","operationId":"usersCreateTarget","tags":["users"],"description":"","responses":{"201":{"description":"Target","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/target"}}}}},"x-appwrite":{"method":"createTarget","weight":224,"cookies":false,"type":"","demo":"users\/create-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-target.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"targetId":{"type":"string","description":"Target ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[TARGET_ID]"},"providerType":{"type":"string","description":"The target provider type. Can be one of the following: `email`, `sms` or `push`.","x-example":"email","enum":["email","sms","push"],"x-enum-name":"MessagingProviderType","x-enum-keys":[]},"identifier":{"type":"string","description":"The target identifier (token, email, phone etc.)","x-example":"[IDENTIFIER]"},"providerId":{"type":"string","description":"Provider ID. Message will be sent to this target from the specified provider ID. If no provider ID is set the first setup provider will be used.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Target name. Max length: 128 chars. For example: My Awesome App Galaxy S23.","x-example":"[NAME]"}},"required":["targetId","providerType","identifier"]}}}}}},"\/users\/{userId}\/targets\/{targetId}":{"get":{"summary":"Get User Target","operationId":"usersGetTarget","tags":["users"],"description":"","responses":{"200":{"description":"Target","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/target"}}}}},"x-appwrite":{"method":"getTarget","weight":228,"cookies":false,"type":"","demo":"users\/get-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-target.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.read","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"targetId","description":"Target ID.","required":true,"schema":{"type":"string","x-example":"[TARGET_ID]"},"in":"path"}]},"patch":{"summary":"Update User target","operationId":"usersUpdateTarget","tags":["users"],"description":"","responses":{"200":{"description":"Target","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/target"}}}}},"x-appwrite":{"method":"updateTarget","weight":243,"cookies":false,"type":"","demo":"users\/update-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-target.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"targetId","description":"Target ID.","required":true,"schema":{"type":"string","x-example":"[TARGET_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"identifier":{"type":"string","description":"The target identifier (token, email, phone etc.)","x-example":"[IDENTIFIER]"},"providerId":{"type":"string","description":"Provider ID. Message will be sent to this target from the specified provider ID. If no provider ID is set the first setup provider will be used.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Target name. Max length: 128 chars. For example: My Awesome App Galaxy S23.","x-example":"[NAME]"}}}}}}},"delete":{"summary":"Delete user target","operationId":"usersDeleteTarget","tags":["users"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteTarget","weight":252,"cookies":false,"type":"","demo":"users\/delete-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-target.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"targetId","description":"Target ID.","required":true,"schema":{"type":"string","x-example":"[TARGET_ID]"},"in":"path"}]}},"\/users\/{userId}\/tokens":{"post":{"summary":"Create token","operationId":"usersCreateToken","tags":["users"],"description":"Returns a token with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [PUT \/account\/sessions\/custom](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateCustomSession) endpoint to complete the login process.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createToken","weight":248,"cookies":false,"type":"","demo":"users\/create-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-token.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"length":{"type":"integer","description":"Token length in characters. The default length is 6 characters","x-example":4},"expire":{"type":"integer","description":"Token expiration period in seconds. The default expiration is 15 minutes.","x-example":60}}}}}}}},"\/users\/{userId}\/verification":{"patch":{"summary":"Update email verification","operationId":"usersUpdateEmailVerification","tags":["users"],"description":"Update the user email verification status by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateEmailVerification","weight":241,"cookies":false,"type":"","demo":"users\/update-email-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-email-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"emailVerification":{"type":"boolean","description":"User email verification status.","x-example":false}},"required":["emailVerification"]}}}}}},"\/users\/{userId}\/verification\/phone":{"patch":{"summary":"Update phone verification","operationId":"usersUpdatePhoneVerification","tags":["users"],"description":"Update the user phone verification status by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePhoneVerification","weight":236,"cookies":false,"type":"","demo":"users\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"phoneVerification":{"type":"boolean","description":"User phone verification status.","x-example":false}},"required":["phoneVerification"]}}}}}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"project","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]},{"name":"proxy","description":"The Proxy Service allows you to configure actions for your domains beyond DNS configuration.","x-globalAttributes":[]},{"name":"graphql","description":"The GraphQL API allows you to query and mutate your Appwrite server using GraphQL.","x-globalAttributes":[]},{"name":"console","description":"The Console service allows you to interact with console relevant informations.","x-globalAttributes":[]},{"name":"migrations","description":"The Migrations service allows you to migrate third-party data to your Appwrite project.","x-globalAttributes":[]},{"name":"messaging","description":"The Messaging service allows you to send messages to any provider type (SMTP, push notification, SMS, etc.).","x-globalAttributes":[]}],"components":{"schemas":{"any":{"description":"Any","type":"object","additionalProperties":true},"error":{"description":"Error","type":"object","properties":{"message":{"type":"string","description":"Error message.","x-example":"Not found"},"code":{"type":"string","description":"Error code.","x-example":"404"},"type":{"type":"string","description":"Error type. You can learn more about all the error types at https:\/\/appwrite.io\/docs\/error-codes#errorTypes","x-example":"not_found"},"version":{"type":"string","description":"Server version number.","x-example":"1.0"}},"required":["message","code","type","version"]},"documentList":{"description":"Documents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of documents documents that matched your query.","x-example":5,"format":"int32"},"documents":{"type":"array","description":"List of documents.","items":{"$ref":"#\/components\/schemas\/document"},"x-example":""}},"required":["total","documents"]},"collectionList":{"description":"Collections List","type":"object","properties":{"total":{"type":"integer","description":"Total number of collections documents that matched your query.","x-example":5,"format":"int32"},"collections":{"type":"array","description":"List of collections.","items":{"$ref":"#\/components\/schemas\/collection"},"x-example":""}},"required":["total","collections"]},"databaseList":{"description":"Databases List","type":"object","properties":{"total":{"type":"integer","description":"Total number of databases documents that matched your query.","x-example":5,"format":"int32"},"databases":{"type":"array","description":"List of databases.","items":{"$ref":"#\/components\/schemas\/database"},"x-example":""}},"required":["total","databases"]},"indexList":{"description":"Indexes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of indexes documents that matched your query.","x-example":5,"format":"int32"},"indexes":{"type":"array","description":"List of indexes.","items":{"$ref":"#\/components\/schemas\/index"},"x-example":""}},"required":["total","indexes"]},"userList":{"description":"Users List","type":"object","properties":{"total":{"type":"integer","description":"Total number of users documents that matched your query.","x-example":5,"format":"int32"},"users":{"type":"array","description":"List of users.","items":{"$ref":"#\/components\/schemas\/user"},"x-example":""}},"required":["total","users"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of sessions documents that matched your query.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"$ref":"#\/components\/schemas\/session"},"x-example":""}},"required":["total","sessions"]},"identityList":{"description":"Identities List","type":"object","properties":{"total":{"type":"integer","description":"Total number of identities documents that matched your query.","x-example":5,"format":"int32"},"identities":{"type":"array","description":"List of identities.","items":{"$ref":"#\/components\/schemas\/identity"},"x-example":""}},"required":["total","identities"]},"logList":{"description":"Logs List","type":"object","properties":{"total":{"type":"integer","description":"Total number of logs documents that matched your query.","x-example":5,"format":"int32"},"logs":{"type":"array","description":"List of logs.","items":{"$ref":"#\/components\/schemas\/log"},"x-example":""}},"required":["total","logs"]},"fileList":{"description":"Files List","type":"object","properties":{"total":{"type":"integer","description":"Total number of files documents that matched your query.","x-example":5,"format":"int32"},"files":{"type":"array","description":"List of files.","items":{"$ref":"#\/components\/schemas\/file"},"x-example":""}},"required":["total","files"]},"bucketList":{"description":"Buckets List","type":"object","properties":{"total":{"type":"integer","description":"Total number of buckets documents that matched your query.","x-example":5,"format":"int32"},"buckets":{"type":"array","description":"List of buckets.","items":{"$ref":"#\/components\/schemas\/bucket"},"x-example":""}},"required":["total","buckets"]},"teamList":{"description":"Teams List","type":"object","properties":{"total":{"type":"integer","description":"Total number of teams documents that matched your query.","x-example":5,"format":"int32"},"teams":{"type":"array","description":"List of teams.","items":{"$ref":"#\/components\/schemas\/team"},"x-example":""}},"required":["total","teams"]},"membershipList":{"description":"Memberships List","type":"object","properties":{"total":{"type":"integer","description":"Total number of memberships documents that matched your query.","x-example":5,"format":"int32"},"memberships":{"type":"array","description":"List of memberships.","items":{"$ref":"#\/components\/schemas\/membership"},"x-example":""}},"required":["total","memberships"]},"functionList":{"description":"Functions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of functions documents that matched your query.","x-example":5,"format":"int32"},"functions":{"type":"array","description":"List of functions.","items":{"$ref":"#\/components\/schemas\/function"},"x-example":""}},"required":["total","functions"]},"runtimeList":{"description":"Runtimes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of runtimes documents that matched your query.","x-example":5,"format":"int32"},"runtimes":{"type":"array","description":"List of runtimes.","items":{"$ref":"#\/components\/schemas\/runtime"},"x-example":""}},"required":["total","runtimes"]},"deploymentList":{"description":"Deployments List","type":"object","properties":{"total":{"type":"integer","description":"Total number of deployments documents that matched your query.","x-example":5,"format":"int32"},"deployments":{"type":"array","description":"List of deployments.","items":{"$ref":"#\/components\/schemas\/deployment"},"x-example":""}},"required":["total","deployments"]},"executionList":{"description":"Executions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of executions documents that matched your query.","x-example":5,"format":"int32"},"executions":{"type":"array","description":"List of executions.","items":{"$ref":"#\/components\/schemas\/execution"},"x-example":""}},"required":["total","executions"]},"countryList":{"description":"Countries List","type":"object","properties":{"total":{"type":"integer","description":"Total number of countries documents that matched your query.","x-example":5,"format":"int32"},"countries":{"type":"array","description":"List of countries.","items":{"$ref":"#\/components\/schemas\/country"},"x-example":""}},"required":["total","countries"]},"continentList":{"description":"Continents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of continents documents that matched your query.","x-example":5,"format":"int32"},"continents":{"type":"array","description":"List of continents.","items":{"$ref":"#\/components\/schemas\/continent"},"x-example":""}},"required":["total","continents"]},"languageList":{"description":"Languages List","type":"object","properties":{"total":{"type":"integer","description":"Total number of languages documents that matched your query.","x-example":5,"format":"int32"},"languages":{"type":"array","description":"List of languages.","items":{"$ref":"#\/components\/schemas\/language"},"x-example":""}},"required":["total","languages"]},"currencyList":{"description":"Currencies List","type":"object","properties":{"total":{"type":"integer","description":"Total number of currencies documents that matched your query.","x-example":5,"format":"int32"},"currencies":{"type":"array","description":"List of currencies.","items":{"$ref":"#\/components\/schemas\/currency"},"x-example":""}},"required":["total","currencies"]},"phoneList":{"description":"Phones List","type":"object","properties":{"total":{"type":"integer","description":"Total number of phones documents that matched your query.","x-example":5,"format":"int32"},"phones":{"type":"array","description":"List of phones.","items":{"$ref":"#\/components\/schemas\/phone"},"x-example":""}},"required":["total","phones"]},"variableList":{"description":"Variables List","type":"object","properties":{"total":{"type":"integer","description":"Total number of variables documents that matched your query.","x-example":5,"format":"int32"},"variables":{"type":"array","description":"List of variables.","items":{"$ref":"#\/components\/schemas\/variable"},"x-example":""}},"required":["total","variables"]},"localeCodeList":{"description":"Locale codes list","type":"object","properties":{"total":{"type":"integer","description":"Total number of localeCodes documents that matched your query.","x-example":5,"format":"int32"},"localeCodes":{"type":"array","description":"List of localeCodes.","items":{"$ref":"#\/components\/schemas\/localeCode"},"x-example":""}},"required":["total","localeCodes"]},"providerList":{"description":"Provider list","type":"object","properties":{"total":{"type":"integer","description":"Total number of providers documents that matched your query.","x-example":5,"format":"int32"},"providers":{"type":"array","description":"List of providers.","items":{"$ref":"#\/components\/schemas\/provider"},"x-example":""}},"required":["total","providers"]},"messageList":{"description":"Message list","type":"object","properties":{"total":{"type":"integer","description":"Total number of messages documents that matched your query.","x-example":5,"format":"int32"},"messages":{"type":"array","description":"List of messages.","items":{"$ref":"#\/components\/schemas\/message"},"x-example":""}},"required":["total","messages"]},"topicList":{"description":"Topic list","type":"object","properties":{"total":{"type":"integer","description":"Total number of topics documents that matched your query.","x-example":5,"format":"int32"},"topics":{"type":"array","description":"List of topics.","items":{"$ref":"#\/components\/schemas\/topic"},"x-example":""}},"required":["total","topics"]},"subscriberList":{"description":"Subscriber list","type":"object","properties":{"total":{"type":"integer","description":"Total number of subscribers documents that matched your query.","x-example":5,"format":"int32"},"subscribers":{"type":"array","description":"List of subscribers.","items":{"$ref":"#\/components\/schemas\/subscriber"},"x-example":""}},"required":["total","subscribers"]},"targetList":{"description":"Target list","type":"object","properties":{"total":{"type":"integer","description":"Total number of targets documents that matched your query.","x-example":5,"format":"int32"},"targets":{"type":"array","description":"List of targets.","items":{"$ref":"#\/components\/schemas\/target"},"x-example":""}},"required":["total","targets"]},"database":{"description":"Database","type":"object","properties":{"$id":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Database name.","x-example":"My Database"},"$createdAt":{"type":"string","description":"Database creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Database update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"enabled":{"type":"boolean","description":"If database is enabled. Can be 'enabled' or 'disabled'. When disabled, the database is inaccessible to users, but remains accessible to Server SDKs using API keys.","x-example":false}},"required":["$id","name","$createdAt","$updatedAt","enabled"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Collection creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Collection update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Collection permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled. Can be 'enabled' or 'disabled'. When disabled, the collection is inaccessible to users, but remains accessible to Server SDKs using API keys.","x-example":false},"documentSecurity":{"type":"boolean","description":"Whether document-level permissions are enabled. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":true},"attributes":{"type":"array","description":"Collection attributes.","items":{"anyOf":[{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeRelationship"},{"$ref":"#\/components\/schemas\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"$ref":"#\/components\/schemas\/index"},"x-example":{}}},"required":["$id","$createdAt","$updatedAt","$permissions","databaseId","name","enabled","documentSecurity","attributes","indexes"]},"attributeList":{"description":"Attributes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of attributes in the given collection.","x-example":5,"format":"int32"},"attributes":{"type":"array","description":"List of attributes.","items":{"anyOf":[{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeRelationship"},{"$ref":"#\/components\/schemas\/attributeString"}]},"x-example":""}},"required":["total","attributes"]},"attributeString":{"description":"AttributeString","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"fullName"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"size":{"type":"integer","description":"Attribute size.","x-example":128,"format":"int32"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"default","nullable":true}},"required":["key","type","status","error","required","size"]},"attributeInteger":{"description":"AttributeInteger","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"count"},"type":{"type":"string","description":"Attribute type.","x-example":"integer"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"min":{"type":"integer","description":"Minimum value to enforce for new documents.","x-example":1,"format":"int32","nullable":true},"max":{"type":"integer","description":"Maximum value to enforce for new documents.","x-example":10,"format":"int32","nullable":true},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":10,"format":"int32","nullable":true}},"required":["key","type","status","error","required"]},"attributeFloat":{"description":"AttributeFloat","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"percentageCompleted"},"type":{"type":"string","description":"Attribute type.","x-example":"double"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"min":{"type":"number","description":"Minimum value to enforce for new documents.","x-example":1.5,"format":"double","nullable":true},"max":{"type":"number","description":"Maximum value to enforce for new documents.","x-example":10.5,"format":"double","nullable":true},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":2.5,"format":"double","nullable":true}},"required":["key","type","status","error","required"]},"attributeBoolean":{"description":"AttributeBoolean","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"isEnabled"},"type":{"type":"string","description":"Attribute type.","x-example":"boolean"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":false,"nullable":true}},"required":["key","type","status","error","required"]},"attributeEmail":{"description":"AttributeEmail","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"userEmail"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"format":{"type":"string","description":"String format.","x-example":"email"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"default@example.com","nullable":true}},"required":["key","type","status","error","required","format"]},"attributeEnum":{"description":"AttributeEnum","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"status"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"elements":{"type":"array","description":"Array of elements in enumerated type.","items":{"type":"string"},"x-example":"element"},"format":{"type":"string","description":"String format.","x-example":"enum"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"element","nullable":true}},"required":["key","type","status","error","required","elements","format"]},"attributeIp":{"description":"AttributeIP","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"ipAddress"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"format":{"type":"string","description":"String format.","x-example":"ip"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"192.0.2.0","nullable":true}},"required":["key","type","status","error","required","format"]},"attributeUrl":{"description":"AttributeURL","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"githubUrl"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"format":{"type":"string","description":"String format.","x-example":"url"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"http:\/\/example.com","nullable":true}},"required":["key","type","status","error","required","format"]},"attributeDatetime":{"description":"AttributeDatetime","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"birthDay"},"type":{"type":"string","description":"Attribute type.","x-example":"datetime"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"format":{"type":"string","description":"ISO 8601 format.","x-example":"datetime"},"default":{"type":"string","description":"Default value for attribute when not provided. Only null is optional","x-example":"2020-10-15T06:38:00.000+00:00","nullable":true}},"required":["key","type","status","error","required","format"]},"attributeRelationship":{"description":"AttributeRelationship","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"fullName"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"relatedCollection":{"type":"string","description":"The ID of the related collection.","x-example":"collection"},"relationType":{"type":"string","description":"The type of the relationship.","x-example":"oneToOne|oneToMany|manyToOne|manyToMany"},"twoWay":{"type":"boolean","description":"Is the relationship two-way?","x-example":false},"twoWayKey":{"type":"string","description":"The key of the two-way relationship.","x-example":"string"},"onDelete":{"type":"string","description":"How deleting the parent document will propagate to child documents.","x-example":"restrict|cascade|setNull"},"side":{"type":"string","description":"Whether this is the parent or child side of the relationship","x-example":"parent|child"}},"required":["key","type","status","error","required","relatedCollection","relationType","twoWay","twoWayKey","onDelete","side"]},"index":{"description":"Index","type":"object","properties":{"key":{"type":"string","description":"Index Key.","x-example":"index1"},"type":{"type":"string","description":"Index type.","x-example":"primary"},"status":{"type":"string","description":"Index status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an index.","x-example":"string"},"attributes":{"type":"array","description":"Index attributes.","items":{"type":"string"},"x-example":[]},"orders":{"type":"array","description":"Index orders.","items":{"type":"string"},"x-example":[],"nullable":true}},"required":["key","type","status","error","attributes"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"user":{"description":"User","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"password":{"type":"string","description":"Hashed user password.","x-example":"$argon2id$v=19$m=2048,t=4,p=3$aUZjLnliVWRINmFNTWMudg$5S+x+7uA31xFnrHFT47yFwcJeaP0w92L\/4LdgrVRXxE","nullable":true},"hash":{"type":"string","description":"Password hashing algorithm.","x-example":"argon2","nullable":true},"hashOptions":{"type":"object","description":"Password hashing algorithm configuration.","x-example":{},"items":{"oneOf":[{"$ref":"#\/components\/schemas\/algoArgon2"},{"$ref":"#\/components\/schemas\/algoScrypt"},{"$ref":"#\/components\/schemas\/algoScryptModified"},{"$ref":"#\/components\/schemas\/algoBcrypt"},{"$ref":"#\/components\/schemas\/algoPhpass"},{"$ref":"#\/components\/schemas\/algoSha"},{"$ref":"#\/components\/schemas\/algoMd5"}]},"nullable":true},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"labels":{"type":"array","description":"Labels for the user.","items":{"type":"string"},"x-example":["vip"]},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"mfa":{"type":"boolean","description":"Multi factor authentication status.","x-example":true},"totp":{"type":"boolean","description":"TOTP status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"$ref":"#\/components\/schemas\/preferences"}},"targets":{"type":"array","description":"A user-owned message receiver. A single user may have multiple e.g. emails, phones, and a browser. Each target is registered with a single provider.","items":{"$ref":"#\/components\/schemas\/target"},"x-example":[]},"accessedAt":{"type":"string","description":"Most recent access date in ISO 8601 format. This attribute is only updated again after 24 hours.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","$updatedAt","name","registration","status","labels","passwordUpdate","email","phone","emailVerification","phoneVerification","mfa","totp","prefs","targets","accessedAt"]},"algoMd5":{"description":"AlgoMD5","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"md5"}},"required":["type"]},"algoSha":{"description":"AlgoSHA","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"sha"}},"required":["type"]},"algoPhpass":{"description":"AlgoPHPass","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"phpass"}},"required":["type"]},"algoBcrypt":{"description":"AlgoBcrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"bcrypt"}},"required":["type"]},"algoScrypt":{"description":"AlgoScrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scrypt"},"costCpu":{"type":"integer","description":"CPU complexity of computed hash.","x-example":8,"format":"int32"},"costMemory":{"type":"integer","description":"Memory complexity of computed hash.","x-example":14,"format":"int32"},"costParallel":{"type":"integer","description":"Parallelization of computed hash.","x-example":1,"format":"int32"},"length":{"type":"integer","description":"Length used to compute hash.","x-example":64,"format":"int32"}},"required":["type","costCpu","costMemory","costParallel","length"]},"algoScryptModified":{"description":"AlgoScryptModified","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scryptMod"},"salt":{"type":"string","description":"Salt used to compute hash.","x-example":"UxLMreBr6tYyjQ=="},"saltSeparator":{"type":"string","description":"Separator used to compute hash.","x-example":"Bw=="},"signerKey":{"type":"string","description":"Key used to compute hash.","x-example":"XyEKE9RcTDeLEsL\/RjwPDBv\/RqDl8fb3gpYEOQaPihbxf1ZAtSOHCjuAAa7Q3oHpCYhXSN9tizHgVOwn6krflQ=="}},"required":["type","salt","saltSeparator","signerKey"]},"algoArgon2":{"description":"AlgoArgon2","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"argon2"},"memoryCost":{"type":"integer","description":"Memory used to compute hash.","x-example":65536,"format":"int32"},"timeCost":{"type":"integer","description":"Amount of time consumed to compute hash","x-example":4,"format":"int32"},"threads":{"type":"integer","description":"Number of threads used to compute hash.","x-example":3,"format":"int32"}},"required":["type","memoryCost","timeCost","threads"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true},"factors":{"type":"array","description":"Returns a list of active session factors.","items":{"type":"string"},"x-example":["email"]},"secret":{"type":"string","description":"Secret used to authenticate the user. Only included if the request was made with an API key","x-example":"5e5bb8c16897e"}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current","factors","secret"]},"identity":{"description":"Identity","type":"object","properties":{"$id":{"type":"string","description":"Identity ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Identity creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Identity update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"provider":{"type":"string","description":"Identity Provider.","x-example":"email"},"providerUid":{"type":"string","description":"ID of the User in the Identity Provider.","x-example":"5e5bb8c16897e"},"providerEmail":{"type":"string","description":"Email of the User in the Identity Provider.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Identity Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Identity Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"}},"required":["$id","$createdAt","$updatedAt","userId","provider","providerUid","providerEmail","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"phrase":{"type":"string","description":"Security phrase of a token. Empty if security phrase was not requested when creating a token. It includes randomly generated phrase which is also sent in the external resource such as email.","x-example":"Golden Fox"}},"required":["$id","$createdAt","userId","secret","expire","phrase"]},"jwt":{"description":"JWT","type":"object","properties":{"jwt":{"type":"string","description":"JWT encoded string.","x-example":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c"}},"required":["jwt"]},"locale":{"description":"Locale","type":"object","properties":{"ip":{"type":"string","description":"User IP address.","x-example":"127.0.0.1"},"countryCode":{"type":"string","description":"Country code in [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) two-character format","x-example":"US"},"country":{"type":"string","description":"Country name. This field support localization.","x-example":"United States"},"continentCode":{"type":"string","description":"Continent code. A two character continent code \"AF\" for Africa, \"AN\" for Antarctica, \"AS\" for Asia, \"EU\" for Europe, \"NA\" for North America, \"OC\" for Oceania, and \"SA\" for South America.","x-example":"NA"},"continent":{"type":"string","description":"Continent name. This field support localization.","x-example":"North America"},"eu":{"type":"boolean","description":"True if country is part of the European Union.","x-example":false},"currency":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format","x-example":"USD"}},"required":["ip","countryCode","country","continentCode","continent","eu","currency"]},"localeCode":{"description":"LocaleCode","type":"object","properties":{"code":{"type":"string","description":"Locale codes in [ISO 639-1](https:\/\/en.wikipedia.org\/wiki\/List_of_ISO_639-1_codes)","x-example":"en-us"},"name":{"type":"string","description":"Locale name","x-example":"US"}},"required":["code","name"]},"file":{"description":"File","type":"object","properties":{"$id":{"type":"string","description":"File ID.","x-example":"5e5ea5c16897e"},"bucketId":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Bucket creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Bucket update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Bucket permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"fileSecurity":{"type":"boolean","description":"Whether file-level security is enabled. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":true},"name":{"type":"string","description":"Bucket name.","x-example":"Documents"},"enabled":{"type":"boolean","description":"Bucket enabled.","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size supported.","x-example":100,"format":"int32"},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions.","items":{"type":"string"},"x-example":["jpg","png"]},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Will be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd).","x-example":"gzip"},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$createdAt","$updatedAt","$permissions","fileSecurity","name","enabled","maximumFileSize","allowedFileExtensions","compression","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"},"prefs":{"type":"object","description":"Team preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"$ref":"#\/components\/schemas\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","total","prefs"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"mfa":{"type":"boolean","description":"Multi factor authentication status, true if the user has MFA enabled or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":["owner"]}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","mfa","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Function creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Function update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"users"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"enabled":{"type":"boolean","description":"Function enabled.","x-example":false},"live":{"type":"boolean","description":"Is the function deployed with the latest configuration? This is set to false if you've changed an environment variables, entrypoint, commands, or other settings that needs redeploy to be applied. When the value is false, redeploy the function to update it with the latest configuration.","x-example":false},"logging":{"type":"boolean","description":"Whether executions will be logged. When set to false, executions will not be logged, but will reduce resource used by your Appwrite project.","x-example":false},"runtime":{"type":"string","description":"Function execution runtime.","x-example":"python-3.8"},"deployment":{"type":"string","description":"Function's active deployment ID.","x-example":"5e5ea5c16897e"},"vars":{"type":"array","description":"Function variables.","items":{"$ref":"#\/components\/schemas\/variable"},"x-example":[]},"events":{"type":"array","description":"Function trigger events.","items":{"type":"string"},"x-example":"account.create"},"schedule":{"type":"string","description":"Function execution schedult in CRON format.","x-example":"5 4 * * *"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":300,"format":"int32"},"entrypoint":{"type":"string","description":"The entrypoint file used to execute the deployment.","x-example":"index.js"},"commands":{"type":"string","description":"The build command used to build the deployment.","x-example":"npm install"},"version":{"type":"string","description":"Version of Open Runtimes used for the function.","x-example":"v2"},"installationId":{"type":"string","description":"Function VCS (Version Control System) installation id.","x-example":"6m40at4ejk5h2u9s1hboo"},"providerRepositoryId":{"type":"string","description":"VCS (Version Control System) Repository ID","x-example":"appwrite"},"providerBranch":{"type":"string","description":"VCS (Version Control System) branch name","x-example":"main"},"providerRootDirectory":{"type":"string","description":"Path to function in VCS (Version Control System) repository","x-example":"functions\/helloWorld"},"providerSilentMode":{"type":"boolean","description":"Is VCS (Version Control System) connection is in silent mode? When in silence mode, no comments will be posted on the repository pull or merge requests","x-example":false}},"required":["$id","$createdAt","$updatedAt","execute","name","enabled","live","logging","runtime","deployment","vars","events","schedule","timeout","entrypoint","commands","version","installationId","providerRepositoryId","providerBranch","providerRootDirectory","providerSilentMode"]},"runtime":{"description":"Runtime","type":"object","properties":{"$id":{"type":"string","description":"Runtime ID.","x-example":"python-3.8"},"name":{"type":"string","description":"Runtime Name.","x-example":"Python"},"version":{"type":"string","description":"Runtime version.","x-example":"3.8"},"base":{"type":"string","description":"Base Docker image used to build the runtime.","x-example":"python:3.8-alpine"},"image":{"type":"string","description":"Image name of Docker Hub.","x-example":"appwrite\\\/runtime-for-python:3.8"},"logo":{"type":"string","description":"Name of the logo image.","x-example":"python.png"},"supports":{"type":"array","description":"List of supported architectures.","items":{"type":"string"},"x-example":"amd64"}},"required":["$id","name","version","base","image","logo","supports"]},"deployment":{"description":"Deployment","type":"object","properties":{"$id":{"type":"string","description":"Deployment ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Deployment creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Deployment update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"type":{"type":"string","description":"Type of deployment.","x-example":"vcs"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"index.js"},"size":{"type":"integer","description":"The code size in bytes.","x-example":128,"format":"int32"},"buildId":{"type":"string","description":"The current build ID.","x-example":"5e5ea5c16897e"},"activate":{"type":"boolean","description":"Whether the deployment should be automatically activated.","x-example":true},"status":{"type":"string","description":"The deployment status. Possible values are \"processing\", \"building\", \"waiting\", \"ready\", and \"failed\".","x-example":"ready"},"buildLogs":{"type":"string","description":"The build logs.","x-example":"Compiling source files..."},"buildTime":{"type":"integer","description":"The current build time in seconds.","x-example":128,"format":"int32"},"providerRepositoryName":{"type":"string","description":"The name of the vcs provider repository","x-example":"database"},"providerRepositoryOwner":{"type":"string","description":"The name of the vcs provider repository owner","x-example":"utopia"},"providerRepositoryUrl":{"type":"string","description":"The url of the vcs provider repository","x-example":"https:\/\/github.com\/vermakhushboo\/g4-node-function"},"providerBranch":{"type":"string","description":"The branch of the vcs repository","x-example":"0.7.x"},"providerCommitHash":{"type":"string","description":"The commit hash of the vcs commit","x-example":"7c3f25d"},"providerCommitAuthorUrl":{"type":"string","description":"The url of vcs commit author","x-example":"https:\/\/github.com\/vermakhushboo"},"providerCommitAuthor":{"type":"string","description":"The name of vcs commit author","x-example":"Khushboo Verma"},"providerCommitMessage":{"type":"string","description":"The commit message","x-example":"Update index.js"},"providerCommitUrl":{"type":"string","description":"The url of the vcs commit","x-example":"https:\/\/github.com\/vermakhushboo\/g4-node-function\/commit\/60c0416257a9cbcdd96b2d370c38d8f8d150ccfb"},"providerBranchUrl":{"type":"string","description":"The branch of the vcs repository","x-example":"https:\/\/github.com\/vermakhushboo\/appwrite\/tree\/0.7.x"}},"required":["$id","$createdAt","$updatedAt","type","resourceId","resourceType","entrypoint","size","buildId","activate","status","buildLogs","buildTime","providerRepositoryName","providerRepositoryOwner","providerRepositoryUrl","providerBranch","providerCommitHash","providerCommitAuthorUrl","providerCommitAuthor","providerCommitMessage","providerCommitUrl","providerBranchUrl"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"requestMethod":{"type":"string","description":"HTTP request method type.","x-example":"GET"},"requestPath":{"type":"string","description":"HTTP request path and query.","x-example":"\/articles?id=5"},"requestHeaders":{"type":"array","description":"HTTP response headers as a key-value object. This will return only whitelisted headers. All headers are returned if execution is created as synchronous.","items":{"$ref":"#\/components\/schemas\/headers"},"x-example":[{"Content-Type":"application\/json"}]},"responseStatusCode":{"type":"integer","description":"HTTP response status code.","x-example":200,"format":"int32"},"responseBody":{"type":"string","description":"HTTP response body. This will return empty unless execution is created as synchronous.","x-example":"Developers are awesome."},"responseHeaders":{"type":"array","description":"HTTP response headers as a key-value object. This will return only whitelisted headers. All headers are returned if execution is created as synchronous.","items":{"$ref":"#\/components\/schemas\/headers"},"x-example":[{"Content-Type":"application\/json"}]},"logs":{"type":"string","description":"Function logs. Includes the last 4,000 characters. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"errors":{"type":"string","description":"Function errors. Includes the last 4,000 characters. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"Function execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","requestMethod","requestPath","requestHeaders","responseStatusCode","responseBody","responseHeaders","logs","errors","duration"]},"variable":{"description":"Variable","type":"object","properties":{"$id":{"type":"string","description":"Variable ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"key":{"type":"string","description":"Variable key.","x-example":"API_KEY"},"value":{"type":"string","description":"Variable value.","x-example":"myPa$$word1"},"resourceType":{"type":"string","description":"Service to which the variable belongs. Possible values are \"project\", \"function\"","x-example":"function"},"resourceId":{"type":"string","description":"ID of resource to which the variable belongs. If resourceType is \"project\", it is empty. If resourceType is \"function\", it is ID of the function.","x-example":"myAwesomeFunction"}},"required":["$id","$createdAt","$updatedAt","key","value","resourceType","resourceId"]},"country":{"description":"Country","type":"object","properties":{"name":{"type":"string","description":"Country name.","x-example":"United States"},"code":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"}},"required":["name","code"]},"continent":{"description":"Continent","type":"object","properties":{"name":{"type":"string","description":"Continent name.","x-example":"Europe"},"code":{"type":"string","description":"Continent two letter code.","x-example":"EU"}},"required":["name","code"]},"language":{"description":"Language","type":"object","properties":{"name":{"type":"string","description":"Language name.","x-example":"Italian"},"code":{"type":"string","description":"Language two-character ISO 639-1 codes.","x-example":"it"},"nativeName":{"type":"string","description":"Language native name.","x-example":"Italiano"}},"required":["name","code","nativeName"]},"currency":{"description":"Currency","type":"object","properties":{"symbol":{"type":"string","description":"Currency symbol.","x-example":"$"},"name":{"type":"string","description":"Currency name.","x-example":"US dollar"},"symbolNative":{"type":"string","description":"Currency native symbol.","x-example":"$"},"decimalDigits":{"type":"integer","description":"Number of decimal digits.","x-example":2,"format":"int32"},"rounding":{"type":"number","description":"Currency digit rounding.","x-example":0,"format":"double"},"code":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format.","x-example":"USD"},"namePlural":{"type":"string","description":"Currency plural name","x-example":"US dollars"}},"required":["symbol","name","symbolNative","decimalDigits","rounding","code","namePlural"]},"phone":{"description":"Phone","type":"object","properties":{"code":{"type":"string","description":"Phone code.","x-example":"+1"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["code","countryCode","countryName"]},"healthAntivirus":{"description":"Health Antivirus","type":"object","properties":{"version":{"type":"string","description":"Antivirus version.","x-example":"1.0.0"},"status":{"type":"string","description":"Antivirus status. Possible values can are: `disabled`, `offline`, `online`","x-example":"online"}},"required":["version","status"]},"healthQueue":{"description":"Health Queue","type":"object","properties":{"size":{"type":"integer","description":"Amount of actions in the queue.","x-example":8,"format":"int32"}},"required":["size"]},"healthStatus":{"description":"Health Status","type":"object","properties":{"name":{"type":"string","description":"Name of the service.","x-example":"database"},"ping":{"type":"integer","description":"Duration in milliseconds how long the health check took.","x-example":128,"format":"int32"},"status":{"type":"string","description":"Service status. Possible values can are: `pass`, `fail`","x-example":"pass"}},"required":["name","ping","status"]},"healthCertificate":{"description":"Health Certificate","type":"object","properties":{"name":{"type":"string","description":"Certificate name","x-example":"\/CN=www.google.com"},"subjectSN":{"type":"string","description":"Subject SN","x-example":""},"issuerOrganisation":{"type":"string","description":"Issuer organisation","x-example":""},"validFrom":{"type":"string","description":"Valid from","x-example":"1704200998"},"validTo":{"type":"string","description":"Valid to","x-example":"1711458597"},"signatureTypeSN":{"type":"string","description":"Signature type SN","x-example":"RSA-SHA256"}},"required":["name","subjectSN","issuerOrganisation","validFrom","validTo","signatureTypeSN"]},"healthTime":{"description":"Health Time","type":"object","properties":{"remoteTime":{"type":"integer","description":"Current unix timestamp on trustful remote server.","x-example":1639490751,"format":"int32"},"localTime":{"type":"integer","description":"Current unix timestamp of local server where Appwrite runs.","x-example":1639490844,"format":"int32"},"diff":{"type":"integer","description":"Difference of unix remote and local timestamps in milliseconds.","x-example":93,"format":"int32"}},"required":["remoteTime","localTime","diff"]},"headers":{"description":"Headers","type":"object","properties":{"name":{"type":"string","description":"Header name.","x-example":"Content-Type"},"value":{"type":"string","description":"Header value.","x-example":"application\/json"}},"required":["name","value"]},"mfaChallenge":{"description":"MFA Challenge","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","userId","expire"]},"mfaType":{"description":"MFAType","type":"object","properties":{"backups":{"type":"array","description":"Backup codes.","items":{"type":"string"},"x-example":true},"secret":{"type":"string","description":"Secret token used for TOTP factor.","x-example":true},"uri":{"type":"string","description":"URI for authenticator apps.","x-example":true}},"required":["backups","secret","uri"]},"mfaFactors":{"description":"MFAFactors","type":"object","properties":{"totp":{"type":"boolean","description":"TOTP","x-example":true},"phone":{"type":"boolean","description":"Phone","x-example":true},"email":{"type":"boolean","description":"Email","x-example":true}},"required":["totp","phone","email"]},"provider":{"description":"Provider","type":"object","properties":{"$id":{"type":"string","description":"Provider ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Provider creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Provider update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"The name for the provider instance.","x-example":"Mailgun"},"provider":{"type":"string","description":"The name of the provider service.","x-example":"mailgun"},"enabled":{"type":"boolean","description":"Is provider enabled?","x-example":true},"type":{"type":"string","description":"Type of provider.","x-example":"sms"},"credentials":{"type":"object","description":"Provider credentials.","x-example":{"key":"123456789"}},"options":{"type":"object","description":"Provider options.","x-example":{"from":"sender-email@mydomain"},"nullable":true}},"required":["$id","$createdAt","$updatedAt","name","provider","enabled","type","credentials"]},"message":{"description":"Message","type":"object","properties":{"$id":{"type":"string","description":"Message ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Message creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Message update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerType":{"type":"string","description":"Message provider type.","x-example":"email"},"topics":{"type":"array","description":"Topic IDs set as recipients.","items":{"type":"string"},"x-example":["5e5ea5c16897e"]},"users":{"type":"array","description":"User IDs set as recipients.","items":{"type":"string"},"x-example":["5e5ea5c16897e"]},"targets":{"type":"array","description":"Target IDs set as recipients.","items":{"type":"string"},"x-example":["5e5ea5c16897e"]},"scheduledAt":{"type":"string","description":"The scheduled time for message.","x-example":"2020-10-15T06:38:00.000+00:00","nullable":true},"deliveredAt":{"type":"string","description":"The time when the message was delivered.","x-example":"2020-10-15T06:38:00.000+00:00","nullable":true},"deliveryErrors":{"type":"array","description":"Delivery errors if any.","items":{"type":"string"},"x-example":["Failed to send message to target 5e5ea5c16897e: Credentials not valid."],"nullable":true},"deliveredTotal":{"type":"integer","description":"Number of recipients the message was delivered to.","x-example":1,"format":"int32"},"data":{"type":"object","description":"Data of the message.","x-example":{"subject":"Welcome to Appwrite","content":"Hi there, welcome to Appwrite family."}},"status":{"type":"string","description":"Status of delivery.","x-example":"Message status can be one of the following: processing, sent, cancelled, failed."}},"required":["$id","$createdAt","$updatedAt","providerType","topics","users","targets","deliveredTotal","data","status"]},"topic":{"description":"Topic","type":"object","properties":{"$id":{"type":"string","description":"Topic ID.","x-example":"259125845563242502"},"$createdAt":{"type":"string","description":"Topic creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Topic update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"The name of the topic.","x-example":"events"},"total":{"type":"integer","description":"Total count of subscribers subscribed to topic.","x-example":100,"format":"int32"},"subscribe":{"type":"array","description":"Subscribe permissions.","items":{"type":"string"},"x-example":"users"}},"required":["$id","$createdAt","$updatedAt","name","total","subscribe"]},"subscriber":{"description":"Subscriber","type":"object","properties":{"$id":{"type":"string","description":"Subscriber ID.","x-example":"259125845563242502"},"$createdAt":{"type":"string","description":"Subscriber creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Subscriber update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"targetId":{"type":"string","description":"Target ID.","x-example":"259125845563242502"},"target":{"type":"object","description":"Target.","x-example":{"$id":"259125845563242502","$createdAt":"2020-10-15T06:38:00.000+00:00","$updatedAt":"2020-10-15T06:38:00.000+00:00","providerType":"email","providerId":"259125845563242502","name":"ageon-app-email","identifier":"random-mail@email.org","userId":"5e5ea5c16897e"},"items":{"$ref":"#\/components\/schemas\/target"}},"userId":{"type":"string","description":"Topic ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User Name.","x-example":"Aegon Targaryen"},"topicId":{"type":"string","description":"Topic ID.","x-example":"259125845563242502"},"providerType":{"type":"string","description":"The target provider type. Can be one of the following: `email`, `sms` or `push`.","x-example":"email"}},"required":["$id","$createdAt","$updatedAt","targetId","target","userId","userName","topicId","providerType"]},"target":{"description":"Target","type":"object","properties":{"$id":{"type":"string","description":"Target ID.","x-example":"259125845563242502"},"$createdAt":{"type":"string","description":"Target creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Target update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Target Name.","x-example":"Aegon apple token"},"userId":{"type":"string","description":"User ID.","x-example":"259125845563242502"},"providerId":{"type":"string","description":"Provider ID.","x-example":"259125845563242502","nullable":true},"providerType":{"type":"string","description":"The target provider type. Can be one of the following: `email`, `sms` or `push`.","x-example":"email"},"identifier":{"type":"string","description":"The target identifier.","x-example":"token"}},"required":["$id","$createdAt","$updatedAt","name","userId","providerType","identifier"]}},"securitySchemes":{"Project":{"type":"apiKey","name":"X-Appwrite-Project","description":"Your project ID","in":"header","x-appwrite":{"demo":"5df5acd0d48c2"}},"Key":{"type":"apiKey","name":"X-Appwrite-Key","description":"Your secret API key","in":"header","x-appwrite":{"demo":"919c2d18fb5d4...a2ae413da83346ad2"}},"JWT":{"type":"apiKey","name":"X-Appwrite-JWT","description":"Your secret JSON Web Token","in":"header"},"Locale":{"type":"apiKey","name":"X-Appwrite-Locale","description":"","in":"header","x-appwrite":{"demo":"en"}},"Session":{"type":"apiKey","name":"X-Appwrite-Session","description":"The user session to authenticate with","in":"header"},"ForwardedFor":{"type":"apiKey","name":"X-Forwarded-For","description":"The IP address of the client that made the request","in":"header"},"ForwardedUserAgent":{"type":"apiKey","name":"X-Forwarded-User-Agent","description":"The user agent string of the client that made the request","in":"header"}}},"externalDocs":{"description":"Full API docs, specs and tutorials","url":"https:\/\/appwrite.io\/docs"}} \ No newline at end of file diff --git a/app/config/specs/swagger2-latest-client.json b/app/config/specs/swagger2-latest-client.json index 26b6e02dfd..9b7656f890 100644 --- a/app/config/specs/swagger2-latest-client.json +++ b/app/config/specs/swagger2-latest-client.json @@ -1 +1 @@ -{"swagger":"2.0","info":{"version":"1.4.13","title":"Appwrite","description":"Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https:\/\/appwrite.io\/docs](https:\/\/appwrite.io\/docs)","termsOfService":"https:\/\/appwrite.io\/policy\/terms","contact":{"name":"Appwrite Team","url":"https:\/\/appwrite.io\/support","email":"team@appwrite.io"},"license":{"name":"BSD-3-Clause","url":"https:\/\/raw.githubusercontent.com\/appwrite\/appwrite\/master\/LICENSE"}},"host":"HOSTNAME","basePath":"\/v1","schemes":["https"],"consumes":["application\/json","multipart\/form-data"],"produces":["application\/json"],"securityDefinitions":{"Project":{"type":"apiKey","name":"X-Appwrite-Project","description":"Your project ID","in":"header","x-appwrite":{"demo":"5df5acd0d48c2"}},"JWT":{"type":"apiKey","name":"X-Appwrite-JWT","description":"Your secret JSON Web Token","in":"header","x-appwrite":{"demo":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ..."}},"Locale":{"type":"apiKey","name":"X-Appwrite-Locale","description":"","in":"header","x-appwrite":{"demo":"en"}},"Session":{"type":"apiKey","name":"X-Appwrite-Session","description":"The user session to authenticate with","in":"header"}},"paths":{"\/account":{"get":{"summary":"Get account","operationId":"accountGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get the currently logged in user.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"get","weight":22,"cookies":false,"type":"","demo":"account\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]},"post":{"summary":"Create account","operationId":"accountCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to allow a new user to register a new account in your project. After the user registration completes successfully, you can use the [\/account\/verfication](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createVerification) route to start verifying the user email address. To allow the new user to login to their new account, you need to create a new [account session](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createEmailSession).","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"create","weight":7,"cookies":false,"type":"","demo":"account\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"New user password. Must be between 8 and 256 chars.","default":null,"x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/account\/email":{"patch":{"summary":"Update email","operationId":"accountUpdateEmail","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateEmail","weight":29,"cookies":false,"type":"","demo":"account\/update-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["email","password"]}}]}},"\/account\/identities":{"get":{"summary":"List Identities","operationId":"accountListIdentities","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get the list of identities for the currently logged in user.","responses":{"200":{"description":"Identities List","schema":{"$ref":"#\/definitions\/identityList"}}},"x-appwrite":{"method":"listIdentities","weight":13,"cookies":false,"type":"","demo":"account\/list-identities.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-identities.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/identities","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, provider, providerUid, providerEmail, providerAccessTokenExpiry","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/identities\/{identityId}":{"delete":{"summary":"Delete identity","operationId":"accountDeleteIdentity","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Delete an identity by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIdentity","weight":14,"cookies":false,"type":"","demo":"account\/delete-identity.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-identity.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"identityId","description":"Identity ID.","required":true,"type":"string","x-example":"[IDENTITY_ID]","in":"path"}]}},"\/account\/jwt":{"post":{"summary":"Create JWT","operationId":"accountCreateJWT","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to create a JSON Web Token. You can use the resulting JWT to authenticate on behalf of the current user when working with the Appwrite server-side API and SDKs. The JWT secret is valid for 15 minutes from its creation and will be invalid if the user will logout in that time frame.","responses":{"201":{"description":"JWT","schema":{"$ref":"#\/definitions\/jwt"}}},"x-appwrite":{"method":"createJWT","weight":21,"cookies":false,"type":"","demo":"account\/create-j-w-t.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-jwt.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"List logs","operationId":"accountListLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get the list of latest security activity logs for the currently logged in user. Each log returns user IP address, location and date and time of log.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listLogs","weight":25,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/mfa":{"patch":{"summary":"Update MFA","operationId":"accountUpdateMFA","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateMFA","weight":42,"cookies":false,"type":"","demo":"account\/update-m-f-a.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-mfa.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"mfa":{"type":"boolean","description":"Enable or disable MFA.","default":null,"x-example":false}},"required":["mfa"]}}]}},"\/account\/mfa\/challenge":{"post":{"summary":"Create MFA Challenge","operationId":"accountCreateChallenge","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"201":{"description":"MFA Challenge","schema":{"$ref":"#\/definitions\/mfaChallenge"}}},"x-appwrite":{"method":"createChallenge","weight":47,"cookies":false,"type":"","demo":"account\/create-challenge.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-challenge.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},token:{param-token}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"provider":{"type":"string","description":"provider.","default":null,"x-example":"totp","enum":["totp","phone","email"],"x-enum-name":"AuthenticatorProvider","x-enum-keys":[]}},"required":["provider"]}}]},"put":{"summary":"Create MFA Challenge (confirmation)","operationId":"accountUpdateChallenge","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"updateChallenge","weight":48,"cookies":false,"type":"","demo":"account\/update-challenge.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-challenge.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"challengeId":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[CHALLENGE_ID]"},"otp":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[OTP]"}},"required":["challengeId","otp"]}}]}},"\/account\/mfa\/factors":{"get":{"summary":"List Factors","operationId":"accountListFactors","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get the currently logged in user.","responses":{"200":{"description":"MFAProviders","schema":{"$ref":"#\/definitions\/mfaProviders"}}},"x-appwrite":{"method":"listFactors","weight":43,"cookies":false,"type":"","demo":"account\/list-factors.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/account\/mfa\/{factor}":{"post":{"summary":"Add Authenticator","operationId":"accountAddAuthenticator","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"200":{"description":"MFAProvider","schema":{"$ref":"#\/definitions\/mfaProvider"}}},"x-appwrite":{"method":"addAuthenticator","weight":44,"cookies":false,"type":"","demo":"account\/add-authenticator.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-mfa.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"factor","description":"Factor.","required":true,"type":"string","x-example":"totp","enum":["totp"],"x-enum-name":"AuthenticatorFactor","x-enum-keys":[],"in":"path"}]},"put":{"summary":"Verify Authenticator","operationId":"accountVerifyAuthenticator","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"verifyAuthenticator","weight":45,"cookies":false,"type":"","demo":"account\/verify-authenticator.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-mfa.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"factor","description":"Factor.","required":true,"type":"string","x-example":"totp","enum":["totp"],"x-enum-name":"AuthenticatorFactor","x-enum-keys":[],"in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"otp":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[OTP]"}},"required":["otp"]}}]}},"\/account\/mfa\/{provider}":{"delete":{"summary":"Delete Authenticator","operationId":"accountDeleteAuthenticator","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"deleteAuthenticator","weight":46,"cookies":false,"type":"","demo":"account\/delete-authenticator.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-mfa.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"provider","description":"Provider.","required":true,"type":"string","x-example":"totp","enum":["totp"],"x-enum-name":"AuthenticatorProvider","x-enum-keys":[],"in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"otp":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[OTP]"}},"required":["otp"]}}]}},"\/account\/name":{"patch":{"summary":"Update name","operationId":"accountUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateName","weight":27,"cookies":false,"type":"","demo":"account\/update-name.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-name.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"User name. Max length: 128 chars.","default":null,"x-example":"[NAME]"}},"required":["name"]}}]}},"\/account\/password":{"patch":{"summary":"Update password","operationId":"accountUpdatePassword","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePassword","weight":28,"cookies":false,"type":"","demo":"account\/update-password.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-password.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"password":{"type":"string","description":"New user password. Must be at least 8 chars.","default":null,"x-example":null},"oldPassword":{"type":"string","description":"Current user password. Must be at least 8 chars.","default":"","x-example":"password"}},"required":["password"]}}]}},"\/account\/phone":{"patch":{"summary":"Update phone","operationId":"accountUpdatePhone","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createPhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePhone","weight":30,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["phone","password"]}}]}},"\/account\/prefs":{"get":{"summary":"Get account preferences","operationId":"accountGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get the preferences as a key-value object for the currently logged in user.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":23,"cookies":false,"type":"","demo":"account\/get-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/prefs","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]},"patch":{"summary":"Update preferences","operationId":"accountUpdatePrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account preferences. The object you pass is stored as is, and replaces any previous value. The maximum allowed prefs size is 64kB and throws error if exceeded.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePrefs","weight":31,"cookies":false,"type":"","demo":"account\/update-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/prefs","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"prefs":{"type":"object","description":"Prefs key-value JSON object.","default":{},"x-example":"{}"}},"required":["prefs"]}}]}},"\/account\/recovery":{"post":{"summary":"Create password recovery","operationId":"accountCreateRecovery","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Sends the user an email with a temporary secret key for password reset. When the user clicks the confirmation link he is redirected back to your app password reset URL with the secret key and email address values attached to the URL query string. Use the query string params to submit a request to the [PUT \/account\/recovery](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateRecovery) endpoint to complete the process. The verification link sent to the user's email address is valid for 1 hour.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createRecovery","weight":36,"cookies":false,"type":"","demo":"account\/create-recovery.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-recovery.md","rate-limit":10,"rate-time":3600,"rate-key":["url:{url},email:{param-email}","ip:{ip}"],"scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"url":{"type":"string","description":"URL to redirect the user back to your app from the recovery email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":null,"x-example":"https:\/\/example.com"}},"required":["email","url"]}}]},"put":{"summary":"Create password recovery (confirmation)","operationId":"accountUpdateRecovery","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete the user account password reset. Both the **userId** and **secret** arguments will be passed as query parameters to the redirect URL you have provided when sending your request to the [POST \/account\/recovery](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createRecovery) endpoint.\n\nPlease note that in order to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) the only valid redirect URLs are the ones from domains you have set when adding your platforms in the console interface.","responses":{"200":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"updateRecovery","weight":37,"cookies":false,"type":"","demo":"account\/update-recovery.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-recovery.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid reset token.","default":null,"x-example":"[SECRET]"},"password":{"type":"string","description":"New user password. Must be between 8 and 256 chars.","default":null,"x-example":null}},"required":["userId","secret","password"]}}]}},"\/account\/sessions":{"get":{"summary":"List sessions","operationId":"accountListSessions","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get the list of active sessions across different devices for the currently logged in user.","responses":{"200":{"description":"Sessions List","schema":{"$ref":"#\/definitions\/sessionList"}}},"x-appwrite":{"method":"listSessions","weight":24,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/sessions","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]},"delete":{"summary":"Delete sessions","operationId":"accountDeleteSessions","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":35,"cookies":false,"type":"","demo":"account\/delete-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-sessions.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/account\/sessions\/anonymous":{"post":{"summary":"Create anonymous session","operationId":"accountCreateAnonymousSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to allow a new user to register an anonymous account in your project. This route will also create a new session for the user. To allow the new user to convert an anonymous account to a normal account, you need to update its [email and password](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateEmail) or create an [OAuth2 session](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#CreateOAuth2Session).","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"createAnonymousSession","weight":20,"cookies":false,"type":"","demo":"account\/create-anonymous-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-anonymous.md","rate-limit":50,"rate-time":3600,"rate-key":"ip:{ip}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/sessions\/email":{"post":{"summary":"Create email password session","operationId":"accountCreateEmailPasswordSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Allow the user to login into their account by providing a valid email and password combination. This route will create a new session for the user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"createEmailPasswordSession","weight":8,"cookies":false,"type":"","demo":"account\/create-email-password-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-email-password.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["email","password"]}}]}},"\/account\/sessions\/magic-url":{"put":{"summary":"Create session (deprecated)","operationId":"accountUpdateMagicURLSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to create a session from token. Provide the **userId** and **secret** parameters from the successful response of authentication flows initiated by token creation. For example, magic URL and phone login.","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateMagicURLSession","weight":17,"cookies":false,"type":"","demo":"account\/update-magic-u-r-l-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session.md","rate-limit":10,"rate-time":3600,"rate-key":"ip:{ip},userId:{param-userId}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/account\/sessions\/oauth2\/{provider}":{"get":{"summary":"Create OAuth2 session","operationId":"accountCreateOAuth2Session","consumes":["application\/json"],"produces":["text\/html"],"tags":["account"],"description":"Allow the user to login to their account using the OAuth2 provider of their choice. Each OAuth2 provider should be enabled from the Appwrite console first. Use the success and failure arguments to provide a redirect URL's back to your app when login is completed.\n\nIf there is already an active session, the new session will be attached to the logged-in account. If there are no active sessions, the server will attempt to look for a user with the same email address as the email received from the OAuth2 provider and attach the new session to the existing user. If no matching user is found - the server will create a new user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).\n","responses":{"301":{"description":"No content"}},"x-appwrite":{"method":"createOAuth2Session","weight":9,"cookies":false,"type":"webAuth","demo":"account\/create-o-auth2session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-oauth2.md","rate-limit":50,"rate-time":3600,"rate-key":"ip:{ip}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"provider","description":"OAuth2 Provider. Currently, supported providers are: amazon, apple, auth0, authentik, autodesk, bitbucket, bitly, box, dailymotion, discord, disqus, dropbox, etsy, facebook, github, gitlab, google, linkedin, microsoft, notion, oidc, okta, paypal, paypalSandbox, podio, salesforce, slack, spotify, stripe, tradeshift, tradeshiftBox, twitch, wordpress, yahoo, yammer, yandex, zoho, zoom.","required":true,"type":"string","x-example":"amazon","enum":["amazon","apple","auth0","authentik","autodesk","bitbucket","bitly","box","dailymotion","discord","disqus","dropbox","etsy","facebook","github","gitlab","google","linkedin","microsoft","notion","oidc","okta","paypal","paypalSandbox","podio","salesforce","slack","spotify","stripe","tradeshift","tradeshiftBox","twitch","wordpress","yahoo","yammer","yandex","zoho","zoom","mock"],"x-enum-name":"OAuthProvider","x-enum-keys":[],"in":"path"},{"name":"success","description":"URL to redirect back to your app after a successful login attempt. Only URLs from hostnames in your project's platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","required":false,"type":"string","format":"url","x-example":"https:\/\/example.com","default":"","in":"query"},{"name":"failure","description":"URL to redirect back to your app after a failed login attempt. Only URLs from hostnames in your project's platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","required":false,"type":"string","format":"url","x-example":"https:\/\/example.com","default":"","in":"query"},{"name":"token","description":"Include token credentials in the final redirect, useful for server-side integrations, or when cookies are not available.","required":false,"type":"boolean","x-example":false,"default":false,"in":"query"},{"name":"scopes","description":"A list of custom OAuth2 scopes. Check each provider internal docs for a list of supported scopes. Maximum of 100 scopes are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/sessions\/token":{"post":{"summary":"Create session","operationId":"accountCreateSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to create a session from token. Provide the **userId** and **secret** parameters from the successful response of authentication flows initiated by token creation. For example, magic URL and phone login.","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"createSession","weight":18,"cookies":false,"type":"","demo":"account\/create-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session.md","rate-limit":10,"rate-time":3600,"rate-key":"ip:{ip},userId:{param-userId}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Secret of a token generated by login methods. For example, the `createMagicURLToken` or `createPhoneToken` methods.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/account\/sessions\/{sessionId}":{"get":{"summary":"Get session","operationId":"accountGetSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to get a logged in user's session using a Session ID. Inputting 'current' will return the current session being used.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"getSession","weight":26,"cookies":false,"type":"","demo":"account\/get-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-session.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/sessions","offline-key":"{sessionId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to get the current device session.","required":true,"type":"string","x-example":"[SESSION_ID]","in":"path"}]},"patch":{"summary":"Update (or renew) a session","operationId":"accountUpdateSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Extend session's expiry to increase it's lifespan. Extending a session is useful when session length is short such as 5 minutes.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateSession","weight":34,"cookies":false,"type":"","demo":"account\/update-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-session.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to update the current device session.","required":true,"type":"string","x-example":"[SESSION_ID]","in":"path"}]},"delete":{"summary":"Delete session","operationId":"accountDeleteSession","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Logout the user. Use 'current' as the session ID to logout on this device, use a session ID to logout on another device. If you're looking to logout the user on all devices, use [Delete Sessions](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#deleteSessions) instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSession","weight":33,"cookies":false,"type":"","demo":"account\/delete-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-session.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to delete the current device session.","required":true,"type":"string","x-example":"[SESSION_ID]","in":"path"}]}},"\/account\/status":{"patch":{"summary":"Update status","operationId":"accountUpdateStatus","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateStatus","weight":32,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/account\/targets\/push":{"post":{"summary":"Create a push target","operationId":"accountCreatePushTarget","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"201":{"description":"Target","schema":{"$ref":"#\/definitions\/target"}}},"x-appwrite":{"method":"createPushTarget","weight":50,"cookies":false,"type":"","demo":"account\/create-push-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"targetId":{"type":"string","description":"Target ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[TARGET_ID]"},"identifier":{"type":"string","description":"The target identifier (token, email, phone etc.)","default":null,"x-example":"[IDENTIFIER]"},"providerId":{"type":"string","description":"Provider ID. Message will be sent to this target from the specified provider ID. If no provider ID is set the first setup provider will be used.","default":"","x-example":"[PROVIDER_ID]"}},"required":["targetId","identifier"]}}]}},"\/account\/targets\/{targetId}\/push":{"put":{"summary":"Update a push target","operationId":"accountUpdatePushTarget","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"200":{"description":"Target","schema":{"$ref":"#\/definitions\/target"}}},"x-appwrite":{"method":"updatePushTarget","weight":51,"cookies":false,"type":"","demo":"account\/update-push-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[]}],"parameters":[{"name":"targetId","description":"Target ID.","required":true,"type":"string","x-example":"[TARGET_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"identifier":{"type":"string","description":"The target identifier (token, email, phone etc.)","default":null,"x-example":"[IDENTIFIER]"}},"required":["identifier"]}}]},"delete":{"summary":"Delete a push target","operationId":"accountDeletePushTarget","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deletePushTarget","weight":52,"cookies":false,"type":"","demo":"account\/delete-push-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[]}],"parameters":[{"name":"targetId","description":"Target ID.","required":true,"type":"string","x-example":"[TARGET_ID]","in":"path"}]}},"\/account\/tokens\/email":{"post":{"summary":"Create email token (OTP)","operationId":"accountCreateEmailToken","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Sends the user an email with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [POST \/v1\/account\/sessions\/token](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createSession) endpoint to complete the login process. The secret sent to the user's email is valid for 15 minutes.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createEmailToken","weight":16,"cookies":false,"type":"","demo":"account\/create-email-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-token-email.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"phrase":{"type":"boolean","description":"Toggle for security phrase. If enabled, email will be send with a randomly generated phrase and the phrase will also be included in the response. Confirming phrases match increases the security of your authentication flow.","default":false,"x-example":false}},"required":["userId","email"]}}]}},"\/account\/tokens\/magic-url":{"post":{"summary":"Create magic URL token","operationId":"accountCreateMagicURLToken","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Sends the user an email with a secret key for creating a session. If the provided user ID has not been registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [POST \/v1\/account\/sessions\/token](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createSession) endpoint to complete the login process. The link sent to the user's email address is valid for 1 hour. If you are on a mobile device you can leave the URL parameter empty, so that the login completion will be handled by your Appwrite instance by default.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).\n","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createMagicURLToken","weight":15,"cookies":false,"type":"","demo":"account\/create-magic-u-r-l-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-token-magic-url.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"url":{"type":"string","description":"URL to redirect the user back to your app from the magic URL login. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":"","x-example":"https:\/\/example.com"},"phrase":{"type":"boolean","description":"Toggle for security phrase. If enabled, email will be send with a randomly generated phrase and the phrase will also be included in the response. Confirming phrases match increases the security of your authentication flow.","default":false,"x-example":false}},"required":["userId","email"]}}]}},"\/account\/tokens\/phone":{"post":{"summary":"Create phone token","operationId":"accountCreatePhoneToken","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Sends the user an SMS with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [POST \/v1\/account\/sessions\/token](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createSession) endpoint to complete the login process. The secret sent to the user's phone is valid for 15 minutes.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createPhoneToken","weight":19,"cookies":false,"type":"","demo":"account\/create-phone-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-token-phone.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},phone:{param-phone}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"}},"required":["userId","phone"]}}]}},"\/account\/verification":{"post":{"summary":"Create email verification","operationId":"accountCreateVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to send a verification message to your user email address to confirm they are the valid owners of that address. Both the **userId** and **secret** arguments will be passed as query parameters to the URL you have provided to be attached to the verification email. The provided URL should redirect the user back to your app and allow you to complete the verification process by verifying both the **userId** and **secret** parameters. Learn more about how to [complete the verification process](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateVerification). The verification link sent to the user's email address is valid for 7 days.\n\nPlease note that in order to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md), the only valid redirect URLs are the ones from domains you have set when adding your platforms in the console interface.\n","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createVerification","weight":38,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"url":{"type":"string","description":"URL to redirect the user back to your app from the verification email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":null,"x-example":"https:\/\/example.com"}},"required":["url"]}}]},"put":{"summary":"Create email verification (confirmation)","operationId":"accountUpdateVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete the user email verification process. Use both the **userId** and **secret** parameters that were attached to your app URL to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"updateVerification","weight":39,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/account\/verification\/phone":{"post":{"summary":"Create phone verification","operationId":"accountCreatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updatePhone) endpoint. Learn more about how to [complete the verification process](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createPhoneVerification","weight":40,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{userId}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]},"put":{"summary":"Create phone verification (confirmation)","operationId":"accountUpdatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"updatePhoneVerification","weight":41,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/avatars\/browsers\/{code}":{"get":{"summary":"Get browser icon","operationId":"avatarsGetBrowser","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"You can use this endpoint to show different browser icons to your users. The code argument receives the browser code as it appears in your user [GET \/account\/sessions](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#getSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getBrowser","weight":54,"cookies":false,"type":"location","demo":"avatars\/get-browser.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-browser.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"code","description":"Browser Code.","required":true,"type":"string","x-example":"aa","enum":["aa","an","ch","ci","cm","cr","ff","sf","mf","ps","oi","om","op","on"],"x-enum-name":"Browser","x-enum-keys":["Avant Browser","Android WebView Beta","Google Chrome","Google Chrome (iOS)","Google Chrome (Mobile)","Chromium","Mozilla Firefox","Safari","Mobile Safari","Microsoft Edge","Microsoft Edge (iOS)","Opera Mini","Opera","Opera (Next)"],"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"}]}},"\/avatars\/credit-cards\/{code}":{"get":{"summary":"Get credit card icon","operationId":"avatarsGetCreditCard","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"The credit card endpoint will return you the icon of the credit card provider you need. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getCreditCard","weight":53,"cookies":false,"type":"location","demo":"avatars\/get-credit-card.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-credit-card.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"code","description":"Credit Card Code. Possible values: amex, argencard, cabal, censosud, diners, discover, elo, hipercard, jcb, mastercard, naranja, targeta-shopping, union-china-pay, visa, mir, maestro.","required":true,"type":"string","x-example":"amex","enum":["amex","argencard","cabal","censosud","diners","discover","elo","hipercard","jcb","mastercard","naranja","targeta-shopping","union-china-pay","visa","mir","maestro"],"x-enum-name":"CreditCard","x-enum-keys":["American Express","Argencard","Cabal","Consosud","Diners Club","Discover","Elo","Hipercard","JCB","Mastercard","Naranja","Tarjeta Shopping","Union China Pay","Visa","MIR","Maestro"],"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"}]}},"\/avatars\/favicon":{"get":{"summary":"Get favicon","operationId":"avatarsGetFavicon","consumes":["application\/json"],"produces":["image\/*"],"tags":["avatars"],"description":"Use this endpoint to fetch the favorite icon (AKA favicon) of any remote website URL.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFavicon","weight":57,"cookies":false,"type":"location","demo":"avatars\/get-favicon.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-favicon.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"url","description":"Website URL which you want to fetch the favicon from.","required":true,"type":"string","format":"url","x-example":"https:\/\/example.com","in":"query"}]}},"\/avatars\/flags\/{code}":{"get":{"summary":"Get country flag","operationId":"avatarsGetFlag","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"You can use this endpoint to show different country flags icons to your users. The code argument receives the 2 letter country code. Use width, height and quality arguments to change the output settings. Country codes follow the [ISO 3166-1](https:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFlag","weight":55,"cookies":false,"type":"location","demo":"avatars\/get-flag.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-flag.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"code","description":"Country Code. ISO Alpha-2 country code format.","required":true,"type":"string","x-example":"af","enum":["af","ao","al","ad","ae","ar","am","ag","au","at","az","bi","be","bj","bf","bd","bg","bh","bs","ba","by","bz","bo","br","bb","bn","bt","bw","cf","ca","ch","cl","cn","ci","cm","cd","cg","co","km","cv","cr","cu","cy","cz","de","dj","dm","dk","do","dz","ec","eg","er","es","ee","et","fi","fj","fr","fm","ga","gb","ge","gh","gn","gm","gw","gq","gr","gd","gt","gy","hn","hr","ht","hu","id","in","ie","ir","iq","is","il","it","jm","jo","jp","kz","ke","kg","kh","ki","kn","kr","kw","la","lb","lr","ly","lc","li","lk","ls","lt","lu","lv","ma","mc","md","mg","mv","mx","mh","mk","ml","mt","mm","me","mn","mz","mr","mu","mw","my","na","ne","ng","ni","nl","no","np","nr","nz","om","pk","pa","pe","ph","pw","pg","pl","kp","pt","py","qa","ro","ru","rw","sa","sd","sn","sg","sb","sl","sv","sm","so","rs","ss","st","sr","sk","si","se","sz","sc","sy","td","tg","th","tj","tm","tl","to","tt","tn","tr","tv","tz","ug","ua","uy","us","uz","va","vc","ve","vn","vu","ws","ye","za","zm","zw"],"x-enum-name":"Flag","x-enum-keys":["Afghanistan","Angola","Albania","Andorra","United Arab Emirates","Argentina","Armenia","Antigua and Barbuda","Australia","Austria","Azerbaijan","Burundi","Belgium","Benin","Burkina Faso","Bangladesh","Bulgaria","Bahrain","Bahamas","Bosnia and Herzegovina","Belarus","Belize","Bolivia","Brazil","Barbados","Brunei Darussalam","Bhutan","Botswana","Central African Republic","Canada","Switzerland","Chile","China","C\u00f4te d'Ivoire","Cameroon","Democratic Republic of the Congo","Republic of the Congo","Colombia","Comoros","Cape Verde","Costa Rica","Cuba","Cyprus","Czech Republic","Germany","Djibouti","Dominica","Denmark","Dominican Republic","Algeria","Ecuador","Egypt","Eritrea","Spain","Estonia","Ethiopia","Finland","Fiji","France","Micronesia (Federated States of)","Gabon","United Kingdom","Georgia","Ghana","Guinea","Gambia","Guinea-Bissau","Equatorial Guinea","Greece","Grenada","Guatemala","Guyana","Honduras","Croatia","Haiti","Hungary","Indonesia","India","Ireland","Iran (Islamic Republic of)","Iraq","Iceland","Israel","Italy","Jamaica","Jordan","Japan","Kazakhstan","Kenya","Kyrgyzstan","Cambodia","Kiribati","Saint Kitts and Nevis","South Korea","Kuwait","Lao People's Democratic Republic","Lebanon","Liberia","Libya","Saint Lucia","Liechtenstein","Sri Lanka","Lesotho","Lithuania","Luxembourg","Latvia","Morocco","Monaco","Moldova","Madagascar","Maldives","Mexico","Marshall Islands","North Macedonia","Mali","Malta","Myanmar","Montenegro","Mongolia","Mozambique","Mauritania","Mauritius","Malawi","Malaysia","Namibia","Niger","Nigeria","Nicaragua","Netherlands","Norway","Nepal","Nauru","New Zealand","Oman","Pakistan","Panama","Peru","Philippines","Palau","Papua New Guinea","Poland","North Korea","Portugal","Paraguay","Qatar","Romania","Russia","Rwanda","Saudi Arabia","Sudan","Senegal","Singapore","Solomon Islands","Sierra Leone","El Salvador","San Marino","Somalia","Serbia","South Sudan","Sao Tome and Principe","Suriname","Slovakia","Slovenia","Sweden","Eswatini","Seychelles","Syria","Chad","Togo","Thailand","Tajikistan","Turkmenistan","Timor-Leste","Tonga","Trinidad and Tobago","Tunisia","Turkey","Tuvalu","Tanzania","Uganda","Ukraine","Uruguay","United States","Uzbekistan","Vatican City","Saint Vincent and the Grenadines","Venezuela","Vietnam","Vanuatu","Samoa","Yemen","South Africa","Zambia","Zimbabwe"],"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"}]}},"\/avatars\/image":{"get":{"summary":"Get image from URL","operationId":"avatarsGetImage","consumes":["application\/json"],"produces":["image\/*"],"tags":["avatars"],"description":"Use this endpoint to fetch a remote image URL and crop it to any image size you want. This endpoint is very useful if you need to crop and display remote images in your app or in case you want to make sure a 3rd party image is properly served using a TLS protocol.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getImage","weight":56,"cookies":false,"type":"location","demo":"avatars\/get-image.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-image.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"url","description":"Image URL which you want to crop.","required":true,"type":"string","format":"url","x-example":"https:\/\/example.com","in":"query"},{"name":"width","description":"Resize preview image width, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get user initials","operationId":"avatarsGetInitials","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getInitials","weight":59,"cookies":false,"type":"location","demo":"avatars\/get-initials.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-initials.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"name","description":"Full Name. When empty, current user name or email will be used. Max length: 128 chars.","required":false,"type":"string","x-example":"[NAME]","default":"","in":"query"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":500,"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":500,"in":"query"},{"name":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"type":"string","default":"","in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR code","operationId":"avatarsGetQR","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getQR","weight":58,"cookies":false,"type":"location","demo":"avatars\/get-q-r.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-qr.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"text","description":"Plain text to be converted to QR code image.","required":true,"type":"string","x-example":"[TEXT]","in":"query"},{"name":"size","description":"QR code size. Pass an integer between 1 to 1000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":1,"default":400,"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"type":"integer","format":"int32","x-example":0,"default":1,"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"type":"boolean","x-example":false,"default":false,"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List documents","operationId":"databasesListDocuments","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","schema":{"$ref":"#\/definitions\/documentList"}}},"x-appwrite":{"method":"listDocuments","weight":103,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"post":{"summary":"Create document","operationId":"databasesCreateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"createDocument","weight":102,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","default":{},"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, only the current user is granted all permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get document","operationId":"databasesGetDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"getDocument","weight":104,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"patch":{"summary":"Update document","operationId":"databasesUpdateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"updateDocument","weight":106,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","default":[],"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete document","operationId":"databasesDeleteDocument","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":107,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List executions","operationId":"functionsListExecutions","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","schema":{"$ref":"#\/definitions\/executionList"}}},"x-appwrite":{"method":"listExecutions","weight":281,"cookies":false,"type":"","demo":"functions\/list-executions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-executions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, responseStatusCode, duration","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create execution","operationId":"functionsCreateExecution","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","schema":{"$ref":"#\/definitions\/execution"}}},"x-appwrite":{"method":"createExecution","weight":280,"cookies":false,"type":"","demo":"functions\/create-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-execution.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"body":{"type":"string","description":"HTTP body of execution. Default value is empty string.","default":"","x-example":"[BODY]"},"async":{"type":"boolean","description":"Execute code in the background. Default value is false.","default":false,"x-example":false},"path":{"type":"string","description":"HTTP path of execution. Path can include query params. Default value is \/","default":"\/","x-example":"[PATH]"},"method":{"type":"string","description":"HTTP method of execution. Default value is GET.","default":"POST","x-example":"GET","enum":["GET","POST","PUT","PATCH","DELETE","OPTIONS"],"x-enum-name":"ExecutionMethod","x-enum-keys":[]},"headers":{"type":"object","description":"HTTP headers of execution. Defaults to empty.","default":[],"x-example":"{}"}}}}]}},"\/functions\/{functionId}\/executions\/{executionId}":{"get":{"summary":"Get execution","operationId":"functionsGetExecution","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a function execution log by its unique ID.","responses":{"200":{"description":"Execution","schema":{"$ref":"#\/definitions\/execution"}}},"x-appwrite":{"method":"getExecution","weight":282,"cookies":false,"type":"","demo":"functions\/get-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-execution.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"executionId","description":"Execution ID.","required":true,"type":"string","x-example":"[EXECUTION_ID]","in":"path"}]}},"\/graphql":{"post":{"summary":"GraphQL endpoint","operationId":"graphqlQuery","consumes":["application\/json"],"produces":["application\/json"],"tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","schema":{"$ref":"#\/definitions\/any"}}},"x-appwrite":{"method":"query","weight":302,"cookies":false,"type":"graphql","demo":"graphql\/query.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"query":{"type":"object","description":"The query or queries to execute.","default":{},"x-example":"{}"}},"required":["query"]}}]}},"\/graphql\/mutation":{"post":{"summary":"GraphQL endpoint","operationId":"graphqlMutation","consumes":["application\/json"],"produces":["application\/json"],"tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","schema":{"$ref":"#\/definitions\/any"}}},"x-appwrite":{"method":"mutation","weight":301,"cookies":false,"type":"graphql","demo":"graphql\/mutation.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"query":{"type":"object","description":"The query or queries to execute.","default":{},"x-example":"{}"}},"required":["query"]}}]}},"\/locale":{"get":{"summary":"Get user locale","operationId":"localeGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"Get the current user location based on IP. Returns an object with user country code, country name, continent name, continent code, ip address and suggested currency. You can use the locale header to get the data in a supported language.\n\n([IP Geolocation by DB-IP](https:\/\/db-ip.com))","responses":{"200":{"description":"Locale","schema":{"$ref":"#\/definitions\/locale"}}},"x-appwrite":{"method":"get","weight":111,"cookies":false,"type":"","demo":"locale\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-locale.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/localed","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/locale\/codes":{"get":{"summary":"List Locale Codes","operationId":"localeListCodes","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all locale codes in [ISO 639-1](https:\/\/en.wikipedia.org\/wiki\/List_of_ISO_639-1_codes).","responses":{"200":{"description":"Locale codes list","schema":{"$ref":"#\/definitions\/localeCodeList"}}},"x-appwrite":{"method":"listCodes","weight":112,"cookies":false,"type":"","demo":"locale\/list-codes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-locale-codes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/localeCode","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/locale\/continents":{"get":{"summary":"List continents","operationId":"localeListContinents","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","schema":{"$ref":"#\/definitions\/continentList"}}},"x-appwrite":{"method":"listContinents","weight":116,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/continents","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List countries","operationId":"localeListCountries","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountries","weight":113,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/countries","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU countries","operationId":"localeListCountriesEU","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountriesEU","weight":114,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/countries\/eu","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List countries phone codes","operationId":"localeListCountriesPhones","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","schema":{"$ref":"#\/definitions\/phoneList"}}},"x-appwrite":{"method":"listCountriesPhones","weight":115,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/countries\/phones","offline-key":"","offline-response-key":"countryCode","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List currencies","operationId":"localeListCurrencies","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","schema":{"$ref":"#\/definitions\/currencyList"}}},"x-appwrite":{"method":"listCurrencies","weight":117,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/currencies","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List languages","operationId":"localeListLanguages","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","schema":{"$ref":"#\/definitions\/languageList"}}},"x-appwrite":{"method":"listLanguages","weight":118,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/languages","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/messaging\/topics\/{topicId}\/subscribers":{"post":{"summary":"Create a subscriber.","operationId":"messagingCreateSubscriber","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Subscriber","schema":{"$ref":"#\/definitions\/subscriber"}}},"x-appwrite":{"method":"createSubscriber","weight":353,"cookies":false,"type":"","demo":"messaging\/create-subscriber.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-subscriber.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.write","platforms":["server","client","console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[],"Session":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID to subscribe to.","required":true,"type":"string","x-example":"[TOPIC_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"subscriberId":{"type":"string","description":"Subscriber ID. Choose a custom Subscriber ID or a new Subscriber ID.","default":null,"x-example":"[SUBSCRIBER_ID]"},"targetId":{"type":"string","description":"Target ID. The target ID to link to the specified Topic ID.","default":null,"x-example":"[TARGET_ID]"}},"required":["subscriberId","targetId"]}}]}},"\/messaging\/topics\/{topicId}\/subscribers\/{subscriberId}":{"delete":{"summary":"Delete a subscriber.","operationId":"messagingDeleteSubscriber","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSubscriber","weight":357,"cookies":false,"type":"","demo":"messaging\/delete-subscriber.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-subscriber.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.write","platforms":["server","client","console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[],"Session":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID subscribed to.","required":true,"type":"string","x-example":"[TOPIC_ID]","in":"path"},{"name":"subscriberId","description":"Subscriber ID.","required":true,"type":"string","x-example":"[SUBSCRIBER_ID]","in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files":{"get":{"summary":"List files","operationId":"storageListFiles","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a list of all the user files. You can use the query params to filter your results.","responses":{"200":{"description":"Files List","schema":{"$ref":"#\/definitions\/fileList"}}},"x-appwrite":{"method":"listFiles","weight":191,"cookies":false,"type":"","demo":"storage\/list-files.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/list-files.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create file","operationId":"storageCreateFile","consumes":["multipart\/form-data"],"produces":["application\/json"],"tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"createFile","weight":190,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","required":true,"x-upload-id":true,"type":"string","x-example":"[FILE_ID]","in":"formData"},{"name":"file","description":"Binary file. Appwrite SDKs provide helpers to handle file input. [Learn about file input](https:\/\/appwrite.io\/docs\/storage#file-input).","required":true,"type":"file","in":"formData"},{"name":"permissions","description":"An array of permission strings. By default, only the current user is granted all permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"x-example":"[\"read(\"any\")\"]","in":"formData"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get file","operationId":"storageGetFile","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"getFile","weight":192,"cookies":false,"type":"","demo":"storage\/get-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID.","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"}]},"put":{"summary":"Update file","operationId":"storageUpdateFile","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Update a file by its unique ID. Only users with write permissions have access to update this resource.","responses":{"200":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"updateFile","weight":196,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File unique ID.","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Name of the file","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission string. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","consumes":["application\/json"],"produces":[],"tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":197,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID.","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/download":{"get":{"summary":"Get file for download","operationId":"storageGetFileDownload","consumes":["application\/json"],"produces":["*\/*"],"tags":["storage"],"description":"Get a file content by its unique ID. The endpoint response return with a 'Content-Disposition: attachment' header that tells the browser to start downloading the file to user downloads directory.","responses":{"200":{"description":"File","schema":{"type":"file"}}},"x-appwrite":{"method":"getFileDownload","weight":194,"cookies":false,"type":"location","demo":"storage\/get-file-download.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-download.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID.","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/preview":{"get":{"summary":"Get file preview","operationId":"storageGetFilePreview","consumes":["application\/json"],"produces":["image\/*"],"tags":["storage"],"description":"Get a file preview image. Currently, this method supports preview for image files (jpg, png, and gif), other supported formats, like pdf, docs, slides, and spreadsheets, will return the file icon image. You can also pass query string arguments for cutting and resizing your preview image. Preview is supported only for image files smaller than 10MB.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFilePreview","weight":193,"cookies":false,"type":"location","demo":"storage\/get-file-preview.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-preview.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"},{"name":"width","description":"Resize preview image width, Pass an integer between 0 to 4000.","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 4000.","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"gravity","description":"Image crop gravity. Can be one of center,top-left,top,top-right,left,right,bottom-left,bottom,bottom-right","required":false,"type":"string","x-example":"center","enum":["center","top-left","top","top-right","left","right","bottom-left","bottom","bottom-right"],"x-enum-name":"ImageGravity","x-enum-keys":[],"default":"center","in":"query"},{"name":"quality","description":"Preview image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"borderWidth","description":"Preview image border in pixels. Pass an integer between 0 to 100. Defaults to 0.","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"borderColor","description":"Preview image border color. Use a valid HEX color, no # is needed for prefix.","required":false,"type":"string","default":"","in":"query"},{"name":"borderRadius","description":"Preview image border radius in pixels. Pass an integer between 0 to 4000.","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"opacity","description":"Preview image opacity. Only works with images having an alpha channel (like png). Pass a number between 0 to 1.","required":false,"type":"number","format":"float","x-example":0,"default":1,"in":"query"},{"name":"rotation","description":"Preview image rotation in degrees. Pass an integer between -360 and 360.","required":false,"type":"integer","format":"int32","x-example":-360,"default":0,"in":"query"},{"name":"background","description":"Preview image background color. Only works with transparent images (png). Use a valid HEX color, no # is needed for prefix.","required":false,"type":"string","default":"","in":"query"},{"name":"output","description":"Output format type (jpeg, jpg, png, gif and webp).","required":false,"type":"string","x-example":"jpg","enum":["jpg","jpeg","gif","png","webp"],"x-enum-name":"ImageFormat","x-enum-keys":[],"default":"","in":"query"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/view":{"get":{"summary":"Get file for view","operationId":"storageGetFileView","consumes":["application\/json"],"produces":["*\/*"],"tags":["storage"],"description":"Get a file content by its unique ID. This endpoint is similar to the download method but returns with no 'Content-Disposition: attachment' header.","responses":{"200":{"description":"File","schema":{"type":"file"}}},"x-appwrite":{"method":"getFileView","weight":195,"cookies":false,"type":"location","demo":"storage\/get-file-view.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-view.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID.","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"}]}},"\/teams":{"get":{"summary":"List teams","operationId":"teamsList","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get a list of all the teams in which the current user is a member. You can use the parameters to filter your results.","responses":{"200":{"description":"Teams List","schema":{"$ref":"#\/definitions\/teamList"}}},"x-appwrite":{"method":"list","weight":201,"cookies":false,"type":"","demo":"teams\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-teams.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total, billingPlan","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create team","operationId":"teamsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"create","weight":200,"cookies":false,"type":"","demo":"teams\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/create-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"teamId":{"type":"string","description":"Team ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[TEAM_ID]"},"name":{"type":"string","description":"Team name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"roles":{"type":"array","description":"Array of strings. Use this param to set the roles in the team for the user who created it. The default role is **owner**. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","default":["owner"],"x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}]}},"\/teams\/{teamId}":{"get":{"summary":"Get team","operationId":"teamsGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"get","weight":202,"cookies":false,"type":"","demo":"teams\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams","offline-key":"{teamId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"}]},"put":{"summary":"Update name","operationId":"teamsUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Update the team's name by its unique ID.","responses":{"200":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"updateName","weight":204,"cookies":false,"type":"","demo":"teams\/update-name.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-name.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams","offline-key":"{teamId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"New team name. Max length: 128 chars.","default":null,"x-example":"[NAME]"}},"required":["name"]}}]},"delete":{"summary":"Delete team","operationId":"teamsDelete","consumes":["application\/json"],"produces":[],"tags":["teams"],"description":"Delete a team using its ID. Only team members with the owner role can delete the team.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":206,"cookies":false,"type":"","demo":"teams\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/delete-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"}]}},"\/teams\/{teamId}\/memberships":{"get":{"summary":"List team memberships","operationId":"teamsListMemberships","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"listMemberships","weight":208,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/memberships","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create team membership","operationId":"teamsCreateMembership","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Invite a new member to join your team. Provide an ID for existing users, or invite unregistered users using an email or phone number. If initiated from a Client SDK, Appwrite will send an email or sms with a link to join the team to the invited user, and an account will be created for them if one doesn't exist. If initiated from a Server SDK, the new member will be added automatically to the team.\n\nYou only need to provide one of a user ID, email, or phone number. Appwrite will prioritize accepting the user ID > email > phone number if you provide more than one of these parameters.\n\nUse the `url` parameter to redirect the user from the invitation email to your app. After the user is redirected, use the [Update Team Membership Status](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/teams#updateMembershipStatus) endpoint to allow the user to accept the invitation to the team. \n\nPlease note that to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) Appwrite will accept the only redirect URLs under the domains you have added as a platform on the Appwrite Console.\n","responses":{"201":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"createMembership","weight":207,"cookies":false,"type":"","demo":"teams\/create-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/create-team-membership.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"email":{"type":"string","description":"Email of the new team member.","default":"","x-example":"email@example.com"},"userId":{"type":"string","description":"ID of the user to be added to a team.","default":"","x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":"","x-example":"+12065550100"},"roles":{"type":"array","description":"Array of strings. Use this param to set the user roles in the team. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":"","x-example":"https:\/\/example.com"},"name":{"type":"string","description":"Name of the new team member. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["roles"]}}]}},"\/teams\/{teamId}\/memberships\/{membershipId}":{"get":{"summary":"Get team membership","operationId":"teamsGetMembership","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get a team member by the membership unique id. All team members have read access for this resource.","responses":{"200":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"getMembership","weight":209,"cookies":false,"type":"","demo":"teams\/get-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-member.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/memberships","offline-key":"{membershipId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"type":"string","x-example":"[MEMBERSHIP_ID]","in":"path"}]},"patch":{"summary":"Update membership","operationId":"teamsUpdateMembership","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Modify the roles of a team member. Only team members with the owner role have access to this endpoint. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions).\n","responses":{"200":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"updateMembership","weight":210,"cookies":false,"type":"","demo":"teams\/update-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"type":"string","x-example":"[MEMBERSHIP_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"roles":{"type":"array","description":"An array of strings. Use this param to set the user's roles in the team. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}}},"required":["roles"]}}]},"delete":{"summary":"Delete team membership","operationId":"teamsDeleteMembership","consumes":["application\/json"],"produces":[],"tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":212,"cookies":false,"type":"","demo":"teams\/delete-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/delete-team-membership.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"type":"string","x-example":"[MEMBERSHIP_ID]","in":"path"}]}},"\/teams\/{teamId}\/memberships\/{membershipId}\/status":{"patch":{"summary":"Update team membership status","operationId":"teamsUpdateMembershipStatus","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Use this endpoint to allow a user to accept an invitation to join a team after being redirected back to your app from the invitation email received by the user.\n\nIf the request is successful, a session for the user is automatically created.\n","responses":{"200":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"updateMembershipStatus","weight":211,"cookies":false,"type":"","demo":"teams\/update-membership-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"public","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"type":"string","x-example":"[MEMBERSHIP_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Secret key.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/teams\/{teamId}\/prefs":{"get":{"summary":"Get team preferences","operationId":"teamsGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get the team's shared preferences by its unique ID. If a preference doesn't need to be shared by all team members, prefer storing them in [user preferences](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#getPrefs).","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":203,"cookies":false,"type":"","demo":"teams\/get-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/prefs","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"}]},"put":{"summary":"Update preferences","operationId":"teamsUpdatePrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Update the team's preferences by its unique ID. The object you pass is stored as is and replaces any previous value. The maximum allowed prefs size is 64kB and throws an error if exceeded.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"updatePrefs","weight":205,"cookies":false,"type":"","demo":"teams\/update-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/prefs","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"prefs":{"type":"object","description":"Prefs key-value JSON object.","default":{},"x-example":"{}"}},"required":["prefs"]}}]}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"project","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]},{"name":"proxy","description":"The Proxy Service allows you to configure actions for your domains beyond DNS configuration.","x-globalAttributes":[]},{"name":"graphql","description":"The GraphQL API allows you to query and mutate your Appwrite server using GraphQL.","x-globalAttributes":[]},{"name":"console","description":"The Console service allows you to interact with console relevant informations.","x-globalAttributes":[]},{"name":"migrations","description":"The Migrations service allows you to migrate third-party data to your Appwrite project.","x-globalAttributes":[]},{"name":"messaging","description":"The Messaging service allows you to send messages to any provider type (SMTP, push notification, SMS, etc.).","x-globalAttributes":[]}],"definitions":{"any":{"description":"Any","type":"object","additionalProperties":true},"documentList":{"description":"Documents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of documents documents that matched your query.","x-example":5,"format":"int32"},"documents":{"type":"array","description":"List of documents.","items":{"type":"object","$ref":"#\/definitions\/document"},"x-example":""}},"required":["total","documents"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of sessions documents that matched your query.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"type":"object","$ref":"#\/definitions\/session"},"x-example":""}},"required":["total","sessions"]},"identityList":{"description":"Identities List","type":"object","properties":{"total":{"type":"integer","description":"Total number of identities documents that matched your query.","x-example":5,"format":"int32"},"identities":{"type":"array","description":"List of identities.","items":{"type":"object","$ref":"#\/definitions\/identity"},"x-example":""}},"required":["total","identities"]},"logList":{"description":"Logs List","type":"object","properties":{"total":{"type":"integer","description":"Total number of logs documents that matched your query.","x-example":5,"format":"int32"},"logs":{"type":"array","description":"List of logs.","items":{"type":"object","$ref":"#\/definitions\/log"},"x-example":""}},"required":["total","logs"]},"fileList":{"description":"Files List","type":"object","properties":{"total":{"type":"integer","description":"Total number of files documents that matched your query.","x-example":5,"format":"int32"},"files":{"type":"array","description":"List of files.","items":{"type":"object","$ref":"#\/definitions\/file"},"x-example":""}},"required":["total","files"]},"teamList":{"description":"Teams List","type":"object","properties":{"total":{"type":"integer","description":"Total number of teams documents that matched your query.","x-example":5,"format":"int32"},"teams":{"type":"array","description":"List of teams.","items":{"type":"object","$ref":"#\/definitions\/team"},"x-example":""}},"required":["total","teams"]},"membershipList":{"description":"Memberships List","type":"object","properties":{"total":{"type":"integer","description":"Total number of memberships documents that matched your query.","x-example":5,"format":"int32"},"memberships":{"type":"array","description":"List of memberships.","items":{"type":"object","$ref":"#\/definitions\/membership"},"x-example":""}},"required":["total","memberships"]},"executionList":{"description":"Executions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of executions documents that matched your query.","x-example":5,"format":"int32"},"executions":{"type":"array","description":"List of executions.","items":{"type":"object","$ref":"#\/definitions\/execution"},"x-example":""}},"required":["total","executions"]},"countryList":{"description":"Countries List","type":"object","properties":{"total":{"type":"integer","description":"Total number of countries documents that matched your query.","x-example":5,"format":"int32"},"countries":{"type":"array","description":"List of countries.","items":{"type":"object","$ref":"#\/definitions\/country"},"x-example":""}},"required":["total","countries"]},"continentList":{"description":"Continents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of continents documents that matched your query.","x-example":5,"format":"int32"},"continents":{"type":"array","description":"List of continents.","items":{"type":"object","$ref":"#\/definitions\/continent"},"x-example":""}},"required":["total","continents"]},"languageList":{"description":"Languages List","type":"object","properties":{"total":{"type":"integer","description":"Total number of languages documents that matched your query.","x-example":5,"format":"int32"},"languages":{"type":"array","description":"List of languages.","items":{"type":"object","$ref":"#\/definitions\/language"},"x-example":""}},"required":["total","languages"]},"currencyList":{"description":"Currencies List","type":"object","properties":{"total":{"type":"integer","description":"Total number of currencies documents that matched your query.","x-example":5,"format":"int32"},"currencies":{"type":"array","description":"List of currencies.","items":{"type":"object","$ref":"#\/definitions\/currency"},"x-example":""}},"required":["total","currencies"]},"phoneList":{"description":"Phones List","type":"object","properties":{"total":{"type":"integer","description":"Total number of phones documents that matched your query.","x-example":5,"format":"int32"},"phones":{"type":"array","description":"List of phones.","items":{"type":"object","$ref":"#\/definitions\/phone"},"x-example":""}},"required":["total","phones"]},"localeCodeList":{"description":"Locale codes list","type":"object","properties":{"total":{"type":"integer","description":"Total number of localeCodes documents that matched your query.","x-example":5,"format":"int32"},"localeCodes":{"type":"array","description":"List of localeCodes.","items":{"type":"object","$ref":"#\/definitions\/localeCode"},"x-example":""}},"required":["total","localeCodes"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"user":{"description":"User","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"password":{"type":"string","description":"Hashed user password.","x-example":"$argon2id$v=19$m=2048,t=4,p=3$aUZjLnliVWRINmFNTWMudg$5S+x+7uA31xFnrHFT47yFwcJeaP0w92L\/4LdgrVRXxE","x-nullable":true},"hash":{"type":"string","description":"Password hashing algorithm.","x-example":"argon2","x-nullable":true},"hashOptions":{"type":"object","description":"Password hashing algorithm configuration.","x-example":{},"items":{"x-oneOf":[{"$ref":"#\/definitions\/algoArgon2"},{"$ref":"#\/definitions\/algoScrypt"},{"$ref":"#\/definitions\/algoScryptModified"},{"$ref":"#\/definitions\/algoBcrypt"},{"$ref":"#\/definitions\/algoPhpass"},{"$ref":"#\/definitions\/algoSha"},{"$ref":"#\/definitions\/algoMd5"}]},"x-nullable":true},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"labels":{"type":"array","description":"Labels for the user.","items":{"type":"string"},"x-example":["vip"]},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"mfa":{"type":"boolean","description":"Multi factor authentication status.","x-example":true},"totp":{"type":"boolean","description":"TOTP status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"type":"object","$ref":"#\/definitions\/preferences"}},"targets":{"type":"array","description":"A user-owned message receiver. A single user may have multiple e.g. emails, phones, and a browser. Each target is registered with a single provider.","items":{"type":"object","$ref":"#\/definitions\/target"},"x-example":[]},"accessedAt":{"type":"string","description":"Most recent access date in ISO 8601 format. This attribute is only updated again after 24 hours.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","$updatedAt","name","registration","status","labels","passwordUpdate","email","phone","emailVerification","phoneVerification","mfa","totp","prefs","targets","accessedAt"]},"algoMd5":{"description":"AlgoMD5","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"md5"}},"required":["type"]},"algoSha":{"description":"AlgoSHA","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"sha"}},"required":["type"]},"algoPhpass":{"description":"AlgoPHPass","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"phpass"}},"required":["type"]},"algoBcrypt":{"description":"AlgoBcrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"bcrypt"}},"required":["type"]},"algoScrypt":{"description":"AlgoScrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scrypt"},"costCpu":{"type":"integer","description":"CPU complexity of computed hash.","x-example":8,"format":"int32"},"costMemory":{"type":"integer","description":"Memory complexity of computed hash.","x-example":14,"format":"int32"},"costParallel":{"type":"integer","description":"Parallelization of computed hash.","x-example":1,"format":"int32"},"length":{"type":"integer","description":"Length used to compute hash.","x-example":64,"format":"int32"}},"required":["type","costCpu","costMemory","costParallel","length"]},"algoScryptModified":{"description":"AlgoScryptModified","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scryptMod"},"salt":{"type":"string","description":"Salt used to compute hash.","x-example":"UxLMreBr6tYyjQ=="},"saltSeparator":{"type":"string","description":"Separator used to compute hash.","x-example":"Bw=="},"signerKey":{"type":"string","description":"Key used to compute hash.","x-example":"XyEKE9RcTDeLEsL\/RjwPDBv\/RqDl8fb3gpYEOQaPihbxf1ZAtSOHCjuAAa7Q3oHpCYhXSN9tizHgVOwn6krflQ=="}},"required":["type","salt","saltSeparator","signerKey"]},"algoArgon2":{"description":"AlgoArgon2","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"argon2"},"memoryCost":{"type":"integer","description":"Memory used to compute hash.","x-example":65536,"format":"int32"},"timeCost":{"type":"integer","description":"Amount of time consumed to compute hash","x-example":4,"format":"int32"},"threads":{"type":"integer","description":"Number of threads used to compute hash.","x-example":3,"format":"int32"}},"required":["type","memoryCost","timeCost","threads"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true},"factors":{"type":"array","description":"Returns a list of active session factors.","items":{"type":"string"},"x-example":["email"]},"secret":{"type":"string","description":"Secret used to authenticate the user. Only included if the request was made with an API key","x-example":"5e5bb8c16897e"}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current","factors","secret"]},"identity":{"description":"Identity","type":"object","properties":{"$id":{"type":"string","description":"Identity ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Identity creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Identity update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"provider":{"type":"string","description":"Identity Provider.","x-example":"email"},"providerUid":{"type":"string","description":"ID of the User in the Identity Provider.","x-example":"5e5bb8c16897e"},"providerEmail":{"type":"string","description":"Email of the User in the Identity Provider.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Identity Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Identity Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"}},"required":["$id","$createdAt","$updatedAt","userId","provider","providerUid","providerEmail","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"phrase":{"type":"string","description":"Security phrase of a token. Empty if security phrase was not requested when creating a token. It includes randomly generated phrase which is also sent in the external resource such as email.","x-example":"Golden Fox"}},"required":["$id","$createdAt","userId","secret","expire","phrase"]},"jwt":{"description":"JWT","type":"object","properties":{"jwt":{"type":"string","description":"JWT encoded string.","x-example":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c"}},"required":["jwt"]},"locale":{"description":"Locale","type":"object","properties":{"ip":{"type":"string","description":"User IP address.","x-example":"127.0.0.1"},"countryCode":{"type":"string","description":"Country code in [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) two-character format","x-example":"US"},"country":{"type":"string","description":"Country name. This field support localization.","x-example":"United States"},"continentCode":{"type":"string","description":"Continent code. A two character continent code \"AF\" for Africa, \"AN\" for Antarctica, \"AS\" for Asia, \"EU\" for Europe, \"NA\" for North America, \"OC\" for Oceania, and \"SA\" for South America.","x-example":"NA"},"continent":{"type":"string","description":"Continent name. This field support localization.","x-example":"North America"},"eu":{"type":"boolean","description":"True if country is part of the European Union.","x-example":false},"currency":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format","x-example":"USD"}},"required":["ip","countryCode","country","continentCode","continent","eu","currency"]},"localeCode":{"description":"LocaleCode","type":"object","properties":{"code":{"type":"string","description":"Locale codes in [ISO 639-1](https:\/\/en.wikipedia.org\/wiki\/List_of_ISO_639-1_codes)","x-example":"en-us"},"name":{"type":"string","description":"Locale name","x-example":"US"}},"required":["code","name"]},"file":{"description":"File","type":"object","properties":{"$id":{"type":"string","description":"File ID.","x-example":"5e5ea5c16897e"},"bucketId":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"},"prefs":{"type":"object","description":"Team preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"type":"object","$ref":"#\/definitions\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","total","prefs"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"mfa":{"type":"boolean","description":"Multi factor authentication status, true if the user has MFA enabled or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":["owner"]}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","mfa","roles"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"requestMethod":{"type":"string","description":"HTTP request method type.","x-example":"GET"},"requestPath":{"type":"string","description":"HTTP request path and query.","x-example":"\/articles?id=5"},"requestHeaders":{"type":"array","description":"HTTP response headers as a key-value object. This will return only whitelisted headers. All headers are returned if execution is created as synchronous.","items":{"type":"object","$ref":"#\/definitions\/headers"},"x-example":[{"Content-Type":"application\/json"}]},"responseStatusCode":{"type":"integer","description":"HTTP response status code.","x-example":200,"format":"int32"},"responseBody":{"type":"string","description":"HTTP response body. This will return empty unless execution is created as synchronous.","x-example":"Developers are awesome."},"responseHeaders":{"type":"array","description":"HTTP response headers as a key-value object. This will return only whitelisted headers. All headers are returned if execution is created as synchronous.","items":{"type":"object","$ref":"#\/definitions\/headers"},"x-example":[{"Content-Type":"application\/json"}]},"logs":{"type":"string","description":"Function logs. Includes the last 4,000 characters. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"errors":{"type":"string","description":"Function errors. Includes the last 4,000 characters. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"Function execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","requestMethod","requestPath","requestHeaders","responseStatusCode","responseBody","responseHeaders","logs","errors","duration"]},"country":{"description":"Country","type":"object","properties":{"name":{"type":"string","description":"Country name.","x-example":"United States"},"code":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"}},"required":["name","code"]},"continent":{"description":"Continent","type":"object","properties":{"name":{"type":"string","description":"Continent name.","x-example":"Europe"},"code":{"type":"string","description":"Continent two letter code.","x-example":"EU"}},"required":["name","code"]},"language":{"description":"Language","type":"object","properties":{"name":{"type":"string","description":"Language name.","x-example":"Italian"},"code":{"type":"string","description":"Language two-character ISO 639-1 codes.","x-example":"it"},"nativeName":{"type":"string","description":"Language native name.","x-example":"Italiano"}},"required":["name","code","nativeName"]},"currency":{"description":"Currency","type":"object","properties":{"symbol":{"type":"string","description":"Currency symbol.","x-example":"$"},"name":{"type":"string","description":"Currency name.","x-example":"US dollar"},"symbolNative":{"type":"string","description":"Currency native symbol.","x-example":"$"},"decimalDigits":{"type":"integer","description":"Number of decimal digits.","x-example":2,"format":"int32"},"rounding":{"type":"number","description":"Currency digit rounding.","x-example":0,"format":"double"},"code":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format.","x-example":"USD"},"namePlural":{"type":"string","description":"Currency plural name","x-example":"US dollars"}},"required":["symbol","name","symbolNative","decimalDigits","rounding","code","namePlural"]},"phone":{"description":"Phone","type":"object","properties":{"code":{"type":"string","description":"Phone code.","x-example":"+1"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["code","countryCode","countryName"]},"headers":{"description":"Headers","type":"object","properties":{"name":{"type":"string","description":"Header name.","x-example":"Content-Type"},"value":{"type":"string","description":"Header value.","x-example":"application\/json"}},"required":["name","value"]},"mfaChallenge":{"description":"MFA Challenge","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","userId","expire"]},"mfaProvider":{"description":"MFAProvider","type":"object","properties":{"backups":{"type":"array","description":"Backup codes.","items":{"type":"string"},"x-example":true},"secret":{"type":"string","description":"Secret token used for TOTP factor.","x-example":true},"uri":{"type":"string","description":"URI for authenticator apps.","x-example":true}},"required":["backups","secret","uri"]},"mfaProviders":{"description":"MFAProviders","type":"object","properties":{"totp":{"type":"boolean","description":"TOTP","x-example":true},"phone":{"type":"boolean","description":"Phone","x-example":true},"email":{"type":"boolean","description":"Email","x-example":true}},"required":["totp","phone","email"]},"subscriber":{"description":"Subscriber","type":"object","properties":{"$id":{"type":"string","description":"Subscriber ID.","x-example":"259125845563242502"},"$createdAt":{"type":"string","description":"Subscriber creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Subscriber update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"targetId":{"type":"string","description":"Target ID.","x-example":"259125845563242502"},"target":{"type":"object","description":"Target.","x-example":{"$id":"259125845563242502","$createdAt":"2020-10-15T06:38:00.000+00:00","$updatedAt":"2020-10-15T06:38:00.000+00:00","providerType":"email","providerId":"259125845563242502","name":"ageon-app-email","identifier":"random-mail@email.org","userId":"5e5ea5c16897e"},"items":{"type":"object","$ref":"#\/definitions\/target"}},"userId":{"type":"string","description":"Topic ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User Name.","x-example":"Aegon Targaryen"},"topicId":{"type":"string","description":"Topic ID.","x-example":"259125845563242502"},"providerType":{"type":"string","description":"The target provider type. Can be one of the following: `email`, `sms` or `push`.","x-example":"email"}},"required":["$id","$createdAt","$updatedAt","targetId","target","userId","userName","topicId","providerType"]},"target":{"description":"Target","type":"object","properties":{"$id":{"type":"string","description":"Target ID.","x-example":"259125845563242502"},"$createdAt":{"type":"string","description":"Target creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Target update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Target Name.","x-example":"Aegon apple token"},"userId":{"type":"string","description":"User ID.","x-example":"259125845563242502"},"providerId":{"type":"string","description":"Provider ID.","x-example":"259125845563242502","x-nullable":true},"providerType":{"type":"string","description":"The target provider type. Can be one of the following: `email`, `sms` or `push`.","x-example":"email"},"identifier":{"type":"string","description":"The target identifier.","x-example":"token"}},"required":["$id","$createdAt","$updatedAt","name","userId","providerType","identifier"]}},"externalDocs":{"description":"Full API docs, specs and tutorials","url":"https:\/\/appwrite.io\/docs"}} \ No newline at end of file +{"swagger":"2.0","info":{"version":"1.4.13","title":"Appwrite","description":"Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https:\/\/appwrite.io\/docs](https:\/\/appwrite.io\/docs)","termsOfService":"https:\/\/appwrite.io\/policy\/terms","contact":{"name":"Appwrite Team","url":"https:\/\/appwrite.io\/support","email":"team@appwrite.io"},"license":{"name":"BSD-3-Clause","url":"https:\/\/raw.githubusercontent.com\/appwrite\/appwrite\/master\/LICENSE"}},"host":"cloud.appwrite.io","basePath":"\/v1","schemes":["https"],"consumes":["application\/json","multipart\/form-data"],"produces":["application\/json"],"securityDefinitions":{"Project":{"type":"apiKey","name":"X-Appwrite-Project","description":"Your project ID","in":"header","x-appwrite":{"demo":"5df5acd0d48c2"}},"JWT":{"type":"apiKey","name":"X-Appwrite-JWT","description":"Your secret JSON Web Token","in":"header","x-appwrite":{"demo":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ..."}},"Locale":{"type":"apiKey","name":"X-Appwrite-Locale","description":"","in":"header","x-appwrite":{"demo":"en"}},"Session":{"type":"apiKey","name":"X-Appwrite-Session","description":"The user session to authenticate with","in":"header"}},"paths":{"\/account":{"get":{"summary":"Get account","operationId":"accountGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get the currently logged in user.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"get","weight":22,"cookies":false,"type":"","demo":"account\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]},"post":{"summary":"Create account","operationId":"accountCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to allow a new user to register a new account in your project. After the user registration completes successfully, you can use the [\/account\/verfication](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createVerification) route to start verifying the user email address. To allow the new user to login to their new account, you need to create a new [account session](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createEmailSession).","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"create","weight":7,"cookies":false,"type":"","demo":"account\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"New user password. Must be between 8 and 256 chars.","default":null,"x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/account\/email":{"patch":{"summary":"Update email","operationId":"accountUpdateEmail","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateEmail","weight":29,"cookies":false,"type":"","demo":"account\/update-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["email","password"]}}]}},"\/account\/identities":{"get":{"summary":"List Identities","operationId":"accountListIdentities","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get the list of identities for the currently logged in user.","responses":{"200":{"description":"Identities List","schema":{"$ref":"#\/definitions\/identityList"}}},"x-appwrite":{"method":"listIdentities","weight":13,"cookies":false,"type":"","demo":"account\/list-identities.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-identities.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/identities","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, provider, providerUid, providerEmail, providerAccessTokenExpiry","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/identities\/{identityId}":{"delete":{"summary":"Delete identity","operationId":"accountDeleteIdentity","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Delete an identity by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIdentity","weight":14,"cookies":false,"type":"","demo":"account\/delete-identity.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-identity.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"identityId","description":"Identity ID.","required":true,"type":"string","x-example":"[IDENTITY_ID]","in":"path"}]}},"\/account\/jwt":{"post":{"summary":"Create JWT","operationId":"accountCreateJWT","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to create a JSON Web Token. You can use the resulting JWT to authenticate on behalf of the current user when working with the Appwrite server-side API and SDKs. The JWT secret is valid for 15 minutes from its creation and will be invalid if the user will logout in that time frame.","responses":{"201":{"description":"JWT","schema":{"$ref":"#\/definitions\/jwt"}}},"x-appwrite":{"method":"createJWT","weight":21,"cookies":false,"type":"","demo":"account\/create-j-w-t.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-jwt.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"List logs","operationId":"accountListLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get the list of latest security activity logs for the currently logged in user. Each log returns user IP address, location and date and time of log.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listLogs","weight":25,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/mfa":{"patch":{"summary":"Update MFA","operationId":"accountUpdateMFA","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateMFA","weight":42,"cookies":false,"type":"","demo":"account\/update-m-f-a.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-mfa.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"mfa":{"type":"boolean","description":"Enable or disable MFA.","default":null,"x-example":false}},"required":["mfa"]}}]}},"\/account\/mfa\/challenge":{"post":{"summary":"Create 2FA Challenge","operationId":"accountCreate2FAChallenge","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"201":{"description":"MFA Challenge","schema":{"$ref":"#\/definitions\/mfaChallenge"}}},"x-appwrite":{"method":"create2FAChallenge","weight":47,"cookies":false,"type":"","demo":"account\/create2f-a-challenge.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-2fa-challenge.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},token:{param-token}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"factor":{"type":"string","description":"Factor used for verification.","default":null,"x-example":"totp","enum":["totp","phone","email"],"x-enum-name":null,"x-enum-keys":[]}},"required":["factor"]}}]},"put":{"summary":"Create MFA Challenge (confirmation)","operationId":"accountUpdateChallenge","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"updateChallenge","weight":48,"cookies":false,"type":"","demo":"account\/update-challenge.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-challenge.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"challengeId":{"type":"string","description":"ID of the challenge.","default":null,"x-example":"[CHALLENGE_ID]"},"otp":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[OTP]"}},"required":["challengeId","otp"]}}]}},"\/account\/mfa\/factors":{"get":{"summary":"List Factors","operationId":"accountListFactors","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"200":{"description":"MFAFactors","schema":{"$ref":"#\/definitions\/mfaFactors"}}},"x-appwrite":{"method":"listFactors","weight":43,"cookies":false,"type":"","demo":"account\/list-factors.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-factors.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/account\/mfa\/{type}":{"post":{"summary":"Add Authenticator","operationId":"accountAddAuthenticator","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"200":{"description":"MFAType","schema":{"$ref":"#\/definitions\/mfaType"}}},"x-appwrite":{"method":"addAuthenticator","weight":44,"cookies":false,"type":"","demo":"account\/add-authenticator.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/add-authenticator.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"type","description":"Type of authenticator.","required":true,"type":"string","x-example":"totp","enum":["totp"],"x-enum-name":null,"x-enum-keys":[],"in":"path"}]},"put":{"summary":"Verify Authenticator","operationId":"accountVerifyAuthenticator","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"verifyAuthenticator","weight":45,"cookies":false,"type":"","demo":"account\/verify-authenticator.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/verify-authenticator.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"type","description":"Type of authenticator.","required":true,"type":"string","x-example":"totp","enum":["totp"],"x-enum-name":null,"x-enum-keys":[],"in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"otp":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[OTP]"}},"required":["otp"]}}]},"delete":{"summary":"Delete Authenticator","operationId":"accountDeleteAuthenticator","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"deleteAuthenticator","weight":46,"cookies":false,"type":"","demo":"account\/delete-authenticator.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-mfa.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"type","description":"Type of authenticator.","required":true,"type":"string","x-example":"totp","enum":["totp"],"x-enum-name":null,"x-enum-keys":[],"in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"otp":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[OTP]"}},"required":["otp"]}}]}},"\/account\/name":{"patch":{"summary":"Update name","operationId":"accountUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateName","weight":27,"cookies":false,"type":"","demo":"account\/update-name.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-name.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"User name. Max length: 128 chars.","default":null,"x-example":"[NAME]"}},"required":["name"]}}]}},"\/account\/password":{"patch":{"summary":"Update password","operationId":"accountUpdatePassword","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePassword","weight":28,"cookies":false,"type":"","demo":"account\/update-password.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-password.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"password":{"type":"string","description":"New user password. Must be at least 8 chars.","default":null,"x-example":null},"oldPassword":{"type":"string","description":"Current user password. Must be at least 8 chars.","default":"","x-example":"password"}},"required":["password"]}}]}},"\/account\/phone":{"patch":{"summary":"Update phone","operationId":"accountUpdatePhone","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createPhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePhone","weight":30,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["phone","password"]}}]}},"\/account\/prefs":{"get":{"summary":"Get account preferences","operationId":"accountGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get the preferences as a key-value object for the currently logged in user.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":23,"cookies":false,"type":"","demo":"account\/get-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/prefs","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]},"patch":{"summary":"Update preferences","operationId":"accountUpdatePrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account preferences. The object you pass is stored as is, and replaces any previous value. The maximum allowed prefs size is 64kB and throws error if exceeded.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePrefs","weight":31,"cookies":false,"type":"","demo":"account\/update-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/prefs","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"prefs":{"type":"object","description":"Prefs key-value JSON object.","default":{},"x-example":"{}"}},"required":["prefs"]}}]}},"\/account\/recovery":{"post":{"summary":"Create password recovery","operationId":"accountCreateRecovery","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Sends the user an email with a temporary secret key for password reset. When the user clicks the confirmation link he is redirected back to your app password reset URL with the secret key and email address values attached to the URL query string. Use the query string params to submit a request to the [PUT \/account\/recovery](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateRecovery) endpoint to complete the process. The verification link sent to the user's email address is valid for 1 hour.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createRecovery","weight":36,"cookies":false,"type":"","demo":"account\/create-recovery.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-recovery.md","rate-limit":10,"rate-time":3600,"rate-key":["url:{url},email:{param-email}","url:{url},ip:{ip}"],"scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"url":{"type":"string","description":"URL to redirect the user back to your app from the recovery email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":null,"x-example":"https:\/\/example.com"}},"required":["email","url"]}}]},"put":{"summary":"Create password recovery (confirmation)","operationId":"accountUpdateRecovery","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete the user account password reset. Both the **userId** and **secret** arguments will be passed as query parameters to the redirect URL you have provided when sending your request to the [POST \/account\/recovery](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createRecovery) endpoint.\n\nPlease note that in order to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) the only valid redirect URLs are the ones from domains you have set when adding your platforms in the console interface.","responses":{"200":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"updateRecovery","weight":37,"cookies":false,"type":"","demo":"account\/update-recovery.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-recovery.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid reset token.","default":null,"x-example":"[SECRET]"},"password":{"type":"string","description":"New user password. Must be between 8 and 256 chars.","default":null,"x-example":null}},"required":["userId","secret","password"]}}]}},"\/account\/sessions":{"get":{"summary":"List sessions","operationId":"accountListSessions","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get the list of active sessions across different devices for the currently logged in user.","responses":{"200":{"description":"Sessions List","schema":{"$ref":"#\/definitions\/sessionList"}}},"x-appwrite":{"method":"listSessions","weight":24,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/sessions","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]},"delete":{"summary":"Delete sessions","operationId":"accountDeleteSessions","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":35,"cookies":false,"type":"","demo":"account\/delete-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-sessions.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/account\/sessions\/anonymous":{"post":{"summary":"Create anonymous session","operationId":"accountCreateAnonymousSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to allow a new user to register an anonymous account in your project. This route will also create a new session for the user. To allow the new user to convert an anonymous account to a normal account, you need to update its [email and password](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateEmail) or create an [OAuth2 session](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#CreateOAuth2Session).","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"createAnonymousSession","weight":20,"cookies":false,"type":"","demo":"account\/create-anonymous-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-anonymous.md","rate-limit":50,"rate-time":3600,"rate-key":"ip:{ip}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/sessions\/email":{"post":{"summary":"Create email password session","operationId":"accountCreateEmailPasswordSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Allow the user to login into their account by providing a valid email and password combination. This route will create a new session for the user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"createEmailPasswordSession","weight":8,"cookies":false,"type":"","demo":"account\/create-email-password-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-email-password.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["email","password"]}}]}},"\/account\/sessions\/magic-url":{"put":{"summary":"Create session (deprecated)","operationId":"accountUpdateMagicURLSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to create a session from token. Provide the **userId** and **secret** parameters from the successful response of authentication flows initiated by token creation. For example, magic URL and phone login.","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateMagicURLSession","weight":17,"cookies":false,"type":"","demo":"account\/update-magic-u-r-l-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session.md","rate-limit":10,"rate-time":3600,"rate-key":"ip:{ip},userId:{param-userId}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/account\/sessions\/oauth2\/{provider}":{"get":{"summary":"Create OAuth2 session","operationId":"accountCreateOAuth2Session","consumes":["application\/json"],"produces":["text\/html"],"tags":["account"],"description":"Allow the user to login to their account using the OAuth2 provider of their choice. Each OAuth2 provider should be enabled from the Appwrite console first. Use the success and failure arguments to provide a redirect URL's back to your app when login is completed.\n\nIf there is already an active session, the new session will be attached to the logged-in account. If there are no active sessions, the server will attempt to look for a user with the same email address as the email received from the OAuth2 provider and attach the new session to the existing user. If no matching user is found - the server will create a new user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).\n","responses":{"301":{"description":"No content"}},"x-appwrite":{"method":"createOAuth2Session","weight":9,"cookies":false,"type":"webAuth","demo":"account\/create-o-auth2session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-oauth2.md","rate-limit":50,"rate-time":3600,"rate-key":"ip:{ip}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"provider","description":"OAuth2 Provider. Currently, supported providers are: amazon, apple, auth0, authentik, autodesk, bitbucket, bitly, box, dailymotion, discord, disqus, dropbox, etsy, facebook, github, gitlab, google, linkedin, microsoft, notion, oidc, okta, paypal, paypalSandbox, podio, salesforce, slack, spotify, stripe, tradeshift, tradeshiftBox, twitch, wordpress, yahoo, yammer, yandex, zoho, zoom.","required":true,"type":"string","x-example":"amazon","enum":["amazon","apple","auth0","authentik","autodesk","bitbucket","bitly","box","dailymotion","discord","disqus","dropbox","etsy","facebook","github","gitlab","google","linkedin","microsoft","notion","oidc","okta","paypal","paypalSandbox","podio","salesforce","slack","spotify","stripe","tradeshift","tradeshiftBox","twitch","wordpress","yahoo","yammer","yandex","zoho","zoom","mock"],"x-enum-name":"OAuthProvider","x-enum-keys":[],"in":"path"},{"name":"success","description":"URL to redirect back to your app after a successful login attempt. Only URLs from hostnames in your project's platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","required":false,"type":"string","format":"url","x-example":"https:\/\/example.com","default":"","in":"query"},{"name":"failure","description":"URL to redirect back to your app after a failed login attempt. Only URLs from hostnames in your project's platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","required":false,"type":"string","format":"url","x-example":"https:\/\/example.com","default":"","in":"query"},{"name":"token","description":"Include token credentials in the final redirect, useful for server-side integrations, or when cookies are not available.","required":false,"type":"boolean","x-example":false,"default":false,"in":"query"},{"name":"scopes","description":"A list of custom OAuth2 scopes. Check each provider internal docs for a list of supported scopes. Maximum of 100 scopes are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/sessions\/token":{"post":{"summary":"Create session","operationId":"accountCreateSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to create a session from token. Provide the **userId** and **secret** parameters from the successful response of authentication flows initiated by token creation. For example, magic URL and phone login.","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"createSession","weight":18,"cookies":false,"type":"","demo":"account\/create-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session.md","rate-limit":10,"rate-time":3600,"rate-key":"ip:{ip},userId:{param-userId}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Secret of a token generated by login methods. For example, the `createMagicURLToken` or `createPhoneToken` methods.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/account\/sessions\/{sessionId}":{"get":{"summary":"Get session","operationId":"accountGetSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to get a logged in user's session using a Session ID. Inputting 'current' will return the current session being used.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"getSession","weight":26,"cookies":false,"type":"","demo":"account\/get-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-session.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/sessions","offline-key":"{sessionId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to get the current device session.","required":true,"type":"string","x-example":"[SESSION_ID]","in":"path"}]},"patch":{"summary":"Update (or renew) a session","operationId":"accountUpdateSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Extend session's expiry to increase it's lifespan. Extending a session is useful when session length is short such as 5 minutes.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateSession","weight":34,"cookies":false,"type":"","demo":"account\/update-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-session.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to update the current device session.","required":true,"type":"string","x-example":"[SESSION_ID]","in":"path"}]},"delete":{"summary":"Delete session","operationId":"accountDeleteSession","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Logout the user. Use 'current' as the session ID to logout on this device, use a session ID to logout on another device. If you're looking to logout the user on all devices, use [Delete Sessions](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#deleteSessions) instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSession","weight":33,"cookies":false,"type":"","demo":"account\/delete-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-session.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to delete the current device session.","required":true,"type":"string","x-example":"[SESSION_ID]","in":"path"}]}},"\/account\/status":{"patch":{"summary":"Update status","operationId":"accountUpdateStatus","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateStatus","weight":32,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/account\/targets\/push":{"post":{"summary":"Create a push target","operationId":"accountCreatePushTarget","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"201":{"description":"Target","schema":{"$ref":"#\/definitions\/target"}}},"x-appwrite":{"method":"createPushTarget","weight":50,"cookies":false,"type":"","demo":"account\/create-push-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"targetId":{"type":"string","description":"Target ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[TARGET_ID]"},"identifier":{"type":"string","description":"The target identifier (token, email, phone etc.)","default":null,"x-example":"[IDENTIFIER]"},"providerId":{"type":"string","description":"Provider ID. Message will be sent to this target from the specified provider ID. If no provider ID is set the first setup provider will be used.","default":"","x-example":"[PROVIDER_ID]"}},"required":["targetId","identifier"]}}]}},"\/account\/targets\/{targetId}\/push":{"put":{"summary":"Update a push target","operationId":"accountUpdatePushTarget","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"200":{"description":"Target","schema":{"$ref":"#\/definitions\/target"}}},"x-appwrite":{"method":"updatePushTarget","weight":51,"cookies":false,"type":"","demo":"account\/update-push-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[]}],"parameters":[{"name":"targetId","description":"Target ID.","required":true,"type":"string","x-example":"[TARGET_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"identifier":{"type":"string","description":"The target identifier (token, email, phone etc.)","default":null,"x-example":"[IDENTIFIER]"}},"required":["identifier"]}}]},"delete":{"summary":"Delete a push target","operationId":"accountDeletePushTarget","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deletePushTarget","weight":52,"cookies":false,"type":"","demo":"account\/delete-push-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[]}],"parameters":[{"name":"targetId","description":"Target ID.","required":true,"type":"string","x-example":"[TARGET_ID]","in":"path"}]}},"\/account\/tokens\/email":{"post":{"summary":"Create email token (OTP)","operationId":"accountCreateEmailToken","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Sends the user an email with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [POST \/v1\/account\/sessions\/token](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createSession) endpoint to complete the login process. The secret sent to the user's email is valid for 15 minutes.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createEmailToken","weight":16,"cookies":false,"type":"","demo":"account\/create-email-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-token-email.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"phrase":{"type":"boolean","description":"Toggle for security phrase. If enabled, email will be send with a randomly generated phrase and the phrase will also be included in the response. Confirming phrases match increases the security of your authentication flow.","default":false,"x-example":false}},"required":["userId","email"]}}]}},"\/account\/tokens\/magic-url":{"post":{"summary":"Create magic URL token","operationId":"accountCreateMagicURLToken","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Sends the user an email with a secret key for creating a session. If the provided user ID has not been registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [POST \/v1\/account\/sessions\/token](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createSession) endpoint to complete the login process. The link sent to the user's email address is valid for 1 hour. If you are on a mobile device you can leave the URL parameter empty, so that the login completion will be handled by your Appwrite instance by default.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).\n","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createMagicURLToken","weight":15,"cookies":false,"type":"","demo":"account\/create-magic-u-r-l-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-token-magic-url.md","rate-limit":60,"rate-time":3600,"rate-key":["url:{url},email:{param-email}","url:{url},ip:{ip}"],"scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"url":{"type":"string","description":"URL to redirect the user back to your app from the magic URL login. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":"","x-example":"https:\/\/example.com"},"phrase":{"type":"boolean","description":"Toggle for security phrase. If enabled, email will be send with a randomly generated phrase and the phrase will also be included in the response. Confirming phrases match increases the security of your authentication flow.","default":false,"x-example":false}},"required":["userId","email"]}}]}},"\/account\/tokens\/phone":{"post":{"summary":"Create phone token","operationId":"accountCreatePhoneToken","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Sends the user an SMS with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [POST \/v1\/account\/sessions\/token](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createSession) endpoint to complete the login process. The secret sent to the user's phone is valid for 15 minutes.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createPhoneToken","weight":19,"cookies":false,"type":"","demo":"account\/create-phone-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-token-phone.md","rate-limit":10,"rate-time":3600,"rate-key":["url:{url},phone:{param-phone}","url:{url},ip:{ip}"],"scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"}},"required":["userId","phone"]}}]}},"\/account\/verification":{"post":{"summary":"Create email verification","operationId":"accountCreateVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to send a verification message to your user email address to confirm they are the valid owners of that address. Both the **userId** and **secret** arguments will be passed as query parameters to the URL you have provided to be attached to the verification email. The provided URL should redirect the user back to your app and allow you to complete the verification process by verifying both the **userId** and **secret** parameters. Learn more about how to [complete the verification process](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateVerification). The verification link sent to the user's email address is valid for 7 days.\n\nPlease note that in order to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md), the only valid redirect URLs are the ones from domains you have set when adding your platforms in the console interface.\n","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createVerification","weight":38,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"url":{"type":"string","description":"URL to redirect the user back to your app from the verification email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":null,"x-example":"https:\/\/example.com"}},"required":["url"]}}]},"put":{"summary":"Create email verification (confirmation)","operationId":"accountUpdateVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete the user email verification process. Use both the **userId** and **secret** parameters that were attached to your app URL to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"updateVerification","weight":39,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/account\/verification\/phone":{"post":{"summary":"Create phone verification","operationId":"accountCreatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updatePhone) endpoint. Learn more about how to [complete the verification process](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createPhoneVerification","weight":40,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":["url:{url},userId:{userId}","url:{url},ip:{ip}"],"scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]},"put":{"summary":"Create phone verification (confirmation)","operationId":"accountUpdatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"updatePhoneVerification","weight":41,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/avatars\/browsers\/{code}":{"get":{"summary":"Get browser icon","operationId":"avatarsGetBrowser","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"You can use this endpoint to show different browser icons to your users. The code argument receives the browser code as it appears in your user [GET \/account\/sessions](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#getSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getBrowser","weight":54,"cookies":false,"type":"location","demo":"avatars\/get-browser.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-browser.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"code","description":"Browser Code.","required":true,"type":"string","x-example":"aa","enum":["aa","an","ch","ci","cm","cr","ff","sf","mf","ps","oi","om","op","on"],"x-enum-name":"Browser","x-enum-keys":["Avant Browser","Android WebView Beta","Google Chrome","Google Chrome (iOS)","Google Chrome (Mobile)","Chromium","Mozilla Firefox","Safari","Mobile Safari","Microsoft Edge","Microsoft Edge (iOS)","Opera Mini","Opera","Opera (Next)"],"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"}]}},"\/avatars\/credit-cards\/{code}":{"get":{"summary":"Get credit card icon","operationId":"avatarsGetCreditCard","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"The credit card endpoint will return you the icon of the credit card provider you need. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getCreditCard","weight":53,"cookies":false,"type":"location","demo":"avatars\/get-credit-card.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-credit-card.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"code","description":"Credit Card Code. Possible values: amex, argencard, cabal, censosud, diners, discover, elo, hipercard, jcb, mastercard, naranja, targeta-shopping, union-china-pay, visa, mir, maestro.","required":true,"type":"string","x-example":"amex","enum":["amex","argencard","cabal","censosud","diners","discover","elo","hipercard","jcb","mastercard","naranja","targeta-shopping","union-china-pay","visa","mir","maestro"],"x-enum-name":"CreditCard","x-enum-keys":["American Express","Argencard","Cabal","Consosud","Diners Club","Discover","Elo","Hipercard","JCB","Mastercard","Naranja","Tarjeta Shopping","Union China Pay","Visa","MIR","Maestro"],"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"}]}},"\/avatars\/favicon":{"get":{"summary":"Get favicon","operationId":"avatarsGetFavicon","consumes":["application\/json"],"produces":["image\/*"],"tags":["avatars"],"description":"Use this endpoint to fetch the favorite icon (AKA favicon) of any remote website URL.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFavicon","weight":57,"cookies":false,"type":"location","demo":"avatars\/get-favicon.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-favicon.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"url","description":"Website URL which you want to fetch the favicon from.","required":true,"type":"string","format":"url","x-example":"https:\/\/example.com","in":"query"}]}},"\/avatars\/flags\/{code}":{"get":{"summary":"Get country flag","operationId":"avatarsGetFlag","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"You can use this endpoint to show different country flags icons to your users. The code argument receives the 2 letter country code. Use width, height and quality arguments to change the output settings. Country codes follow the [ISO 3166-1](https:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFlag","weight":55,"cookies":false,"type":"location","demo":"avatars\/get-flag.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-flag.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"code","description":"Country Code. ISO Alpha-2 country code format.","required":true,"type":"string","x-example":"af","enum":["af","ao","al","ad","ae","ar","am","ag","au","at","az","bi","be","bj","bf","bd","bg","bh","bs","ba","by","bz","bo","br","bb","bn","bt","bw","cf","ca","ch","cl","cn","ci","cm","cd","cg","co","km","cv","cr","cu","cy","cz","de","dj","dm","dk","do","dz","ec","eg","er","es","ee","et","fi","fj","fr","fm","ga","gb","ge","gh","gn","gm","gw","gq","gr","gd","gt","gy","hn","hr","ht","hu","id","in","ie","ir","iq","is","il","it","jm","jo","jp","kz","ke","kg","kh","ki","kn","kr","kw","la","lb","lr","ly","lc","li","lk","ls","lt","lu","lv","ma","mc","md","mg","mv","mx","mh","mk","ml","mt","mm","me","mn","mz","mr","mu","mw","my","na","ne","ng","ni","nl","no","np","nr","nz","om","pk","pa","pe","ph","pw","pg","pl","kp","pt","py","qa","ro","ru","rw","sa","sd","sn","sg","sb","sl","sv","sm","so","rs","ss","st","sr","sk","si","se","sz","sc","sy","td","tg","th","tj","tm","tl","to","tt","tn","tr","tv","tz","ug","ua","uy","us","uz","va","vc","ve","vn","vu","ws","ye","za","zm","zw"],"x-enum-name":"Flag","x-enum-keys":["Afghanistan","Angola","Albania","Andorra","United Arab Emirates","Argentina","Armenia","Antigua and Barbuda","Australia","Austria","Azerbaijan","Burundi","Belgium","Benin","Burkina Faso","Bangladesh","Bulgaria","Bahrain","Bahamas","Bosnia and Herzegovina","Belarus","Belize","Bolivia","Brazil","Barbados","Brunei Darussalam","Bhutan","Botswana","Central African Republic","Canada","Switzerland","Chile","China","C\u00f4te d'Ivoire","Cameroon","Democratic Republic of the Congo","Republic of the Congo","Colombia","Comoros","Cape Verde","Costa Rica","Cuba","Cyprus","Czech Republic","Germany","Djibouti","Dominica","Denmark","Dominican Republic","Algeria","Ecuador","Egypt","Eritrea","Spain","Estonia","Ethiopia","Finland","Fiji","France","Micronesia (Federated States of)","Gabon","United Kingdom","Georgia","Ghana","Guinea","Gambia","Guinea-Bissau","Equatorial Guinea","Greece","Grenada","Guatemala","Guyana","Honduras","Croatia","Haiti","Hungary","Indonesia","India","Ireland","Iran (Islamic Republic of)","Iraq","Iceland","Israel","Italy","Jamaica","Jordan","Japan","Kazakhstan","Kenya","Kyrgyzstan","Cambodia","Kiribati","Saint Kitts and Nevis","South Korea","Kuwait","Lao People's Democratic Republic","Lebanon","Liberia","Libya","Saint Lucia","Liechtenstein","Sri Lanka","Lesotho","Lithuania","Luxembourg","Latvia","Morocco","Monaco","Moldova","Madagascar","Maldives","Mexico","Marshall Islands","North Macedonia","Mali","Malta","Myanmar","Montenegro","Mongolia","Mozambique","Mauritania","Mauritius","Malawi","Malaysia","Namibia","Niger","Nigeria","Nicaragua","Netherlands","Norway","Nepal","Nauru","New Zealand","Oman","Pakistan","Panama","Peru","Philippines","Palau","Papua New Guinea","Poland","North Korea","Portugal","Paraguay","Qatar","Romania","Russia","Rwanda","Saudi Arabia","Sudan","Senegal","Singapore","Solomon Islands","Sierra Leone","El Salvador","San Marino","Somalia","Serbia","South Sudan","Sao Tome and Principe","Suriname","Slovakia","Slovenia","Sweden","Eswatini","Seychelles","Syria","Chad","Togo","Thailand","Tajikistan","Turkmenistan","Timor-Leste","Tonga","Trinidad and Tobago","Tunisia","Turkey","Tuvalu","Tanzania","Uganda","Ukraine","Uruguay","United States","Uzbekistan","Vatican City","Saint Vincent and the Grenadines","Venezuela","Vietnam","Vanuatu","Samoa","Yemen","South Africa","Zambia","Zimbabwe"],"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"}]}},"\/avatars\/image":{"get":{"summary":"Get image from URL","operationId":"avatarsGetImage","consumes":["application\/json"],"produces":["image\/*"],"tags":["avatars"],"description":"Use this endpoint to fetch a remote image URL and crop it to any image size you want. This endpoint is very useful if you need to crop and display remote images in your app or in case you want to make sure a 3rd party image is properly served using a TLS protocol.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getImage","weight":56,"cookies":false,"type":"location","demo":"avatars\/get-image.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-image.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"url","description":"Image URL which you want to crop.","required":true,"type":"string","format":"url","x-example":"https:\/\/example.com","in":"query"},{"name":"width","description":"Resize preview image width, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get user initials","operationId":"avatarsGetInitials","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getInitials","weight":59,"cookies":false,"type":"location","demo":"avatars\/get-initials.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-initials.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"name","description":"Full Name. When empty, current user name or email will be used. Max length: 128 chars.","required":false,"type":"string","x-example":"[NAME]","default":"","in":"query"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":500,"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":500,"in":"query"},{"name":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"type":"string","default":"","in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR code","operationId":"avatarsGetQR","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getQR","weight":58,"cookies":false,"type":"location","demo":"avatars\/get-q-r.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-qr.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"text","description":"Plain text to be converted to QR code image.","required":true,"type":"string","x-example":"[TEXT]","in":"query"},{"name":"size","description":"QR code size. Pass an integer between 1 to 1000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":1,"default":400,"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"type":"integer","format":"int32","x-example":0,"default":1,"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"type":"boolean","x-example":false,"default":false,"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List documents","operationId":"databasesListDocuments","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","schema":{"$ref":"#\/definitions\/documentList"}}},"x-appwrite":{"method":"listDocuments","weight":103,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"post":{"summary":"Create document","operationId":"databasesCreateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"createDocument","weight":102,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","default":{},"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, only the current user is granted all permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get document","operationId":"databasesGetDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"getDocument","weight":104,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"patch":{"summary":"Update document","operationId":"databasesUpdateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"updateDocument","weight":106,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","default":[],"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete document","operationId":"databasesDeleteDocument","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":107,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List executions","operationId":"functionsListExecutions","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","schema":{"$ref":"#\/definitions\/executionList"}}},"x-appwrite":{"method":"listExecutions","weight":283,"cookies":false,"type":"","demo":"functions\/list-executions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-executions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, responseStatusCode, duration","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create execution","operationId":"functionsCreateExecution","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","schema":{"$ref":"#\/definitions\/execution"}}},"x-appwrite":{"method":"createExecution","weight":282,"cookies":false,"type":"","demo":"functions\/create-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-execution.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"body":{"type":"string","description":"HTTP body of execution. Default value is empty string.","default":"","x-example":"[BODY]"},"async":{"type":"boolean","description":"Execute code in the background. Default value is false.","default":false,"x-example":false},"path":{"type":"string","description":"HTTP path of execution. Path can include query params. Default value is \/","default":"\/","x-example":"[PATH]"},"method":{"type":"string","description":"HTTP method of execution. Default value is GET.","default":"POST","x-example":"GET","enum":["GET","POST","PUT","PATCH","DELETE","OPTIONS"],"x-enum-name":"ExecutionMethod","x-enum-keys":[]},"headers":{"type":"object","description":"HTTP headers of execution. Defaults to empty.","default":[],"x-example":"{}"}}}}]}},"\/functions\/{functionId}\/executions\/{executionId}":{"get":{"summary":"Get execution","operationId":"functionsGetExecution","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a function execution log by its unique ID.","responses":{"200":{"description":"Execution","schema":{"$ref":"#\/definitions\/execution"}}},"x-appwrite":{"method":"getExecution","weight":284,"cookies":false,"type":"","demo":"functions\/get-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-execution.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"executionId","description":"Execution ID.","required":true,"type":"string","x-example":"[EXECUTION_ID]","in":"path"}]}},"\/graphql":{"post":{"summary":"GraphQL endpoint","operationId":"graphqlQuery","consumes":["application\/json"],"produces":["application\/json"],"tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","schema":{"$ref":"#\/definitions\/any"}}},"x-appwrite":{"method":"query","weight":304,"cookies":false,"type":"graphql","demo":"graphql\/query.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"query":{"type":"object","description":"The query or queries to execute.","default":{},"x-example":"{}"}},"required":["query"]}}]}},"\/graphql\/mutation":{"post":{"summary":"GraphQL endpoint","operationId":"graphqlMutation","consumes":["application\/json"],"produces":["application\/json"],"tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","schema":{"$ref":"#\/definitions\/any"}}},"x-appwrite":{"method":"mutation","weight":303,"cookies":false,"type":"graphql","demo":"graphql\/mutation.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"query":{"type":"object","description":"The query or queries to execute.","default":{},"x-example":"{}"}},"required":["query"]}}]}},"\/locale":{"get":{"summary":"Get user locale","operationId":"localeGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"Get the current user location based on IP. Returns an object with user country code, country name, continent name, continent code, ip address and suggested currency. You can use the locale header to get the data in a supported language.\n\n([IP Geolocation by DB-IP](https:\/\/db-ip.com))","responses":{"200":{"description":"Locale","schema":{"$ref":"#\/definitions\/locale"}}},"x-appwrite":{"method":"get","weight":111,"cookies":false,"type":"","demo":"locale\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-locale.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/localed","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/locale\/codes":{"get":{"summary":"List Locale Codes","operationId":"localeListCodes","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all locale codes in [ISO 639-1](https:\/\/en.wikipedia.org\/wiki\/List_of_ISO_639-1_codes).","responses":{"200":{"description":"Locale codes list","schema":{"$ref":"#\/definitions\/localeCodeList"}}},"x-appwrite":{"method":"listCodes","weight":112,"cookies":false,"type":"","demo":"locale\/list-codes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-locale-codes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/localeCode","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/locale\/continents":{"get":{"summary":"List continents","operationId":"localeListContinents","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","schema":{"$ref":"#\/definitions\/continentList"}}},"x-appwrite":{"method":"listContinents","weight":116,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/continents","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List countries","operationId":"localeListCountries","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountries","weight":113,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/countries","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU countries","operationId":"localeListCountriesEU","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountriesEU","weight":114,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/countries\/eu","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List countries phone codes","operationId":"localeListCountriesPhones","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","schema":{"$ref":"#\/definitions\/phoneList"}}},"x-appwrite":{"method":"listCountriesPhones","weight":115,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/countries\/phones","offline-key":"","offline-response-key":"countryCode","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List currencies","operationId":"localeListCurrencies","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","schema":{"$ref":"#\/definitions\/currencyList"}}},"x-appwrite":{"method":"listCurrencies","weight":117,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/currencies","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List languages","operationId":"localeListLanguages","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","schema":{"$ref":"#\/definitions\/languageList"}}},"x-appwrite":{"method":"listLanguages","weight":118,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/languages","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/messaging\/topics\/{topicId}\/subscribers":{"post":{"summary":"Create a subscriber.","operationId":"messagingCreateSubscriber","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Subscriber","schema":{"$ref":"#\/definitions\/subscriber"}}},"x-appwrite":{"method":"createSubscriber","weight":355,"cookies":false,"type":"","demo":"messaging\/create-subscriber.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-subscriber.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.write","platforms":["server","client","console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[],"Session":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID to subscribe to.","required":true,"type":"string","x-example":"[TOPIC_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"subscriberId":{"type":"string","description":"Subscriber ID. Choose a custom Subscriber ID or a new Subscriber ID.","default":null,"x-example":"[SUBSCRIBER_ID]"},"targetId":{"type":"string","description":"Target ID. The target ID to link to the specified Topic ID.","default":null,"x-example":"[TARGET_ID]"}},"required":["subscriberId","targetId"]}}]}},"\/messaging\/topics\/{topicId}\/subscribers\/{subscriberId}":{"delete":{"summary":"Delete a subscriber.","operationId":"messagingDeleteSubscriber","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSubscriber","weight":359,"cookies":false,"type":"","demo":"messaging\/delete-subscriber.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-subscriber.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.write","platforms":["server","client","console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[],"Session":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID subscribed to.","required":true,"type":"string","x-example":"[TOPIC_ID]","in":"path"},{"name":"subscriberId","description":"Subscriber ID.","required":true,"type":"string","x-example":"[SUBSCRIBER_ID]","in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files":{"get":{"summary":"List files","operationId":"storageListFiles","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a list of all the user files. You can use the query params to filter your results.","responses":{"200":{"description":"Files List","schema":{"$ref":"#\/definitions\/fileList"}}},"x-appwrite":{"method":"listFiles","weight":193,"cookies":false,"type":"","demo":"storage\/list-files.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/list-files.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create file","operationId":"storageCreateFile","consumes":["multipart\/form-data"],"produces":["application\/json"],"tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"createFile","weight":192,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","required":true,"x-upload-id":true,"type":"string","x-example":"[FILE_ID]","in":"formData"},{"name":"file","description":"Binary file. Appwrite SDKs provide helpers to handle file input. [Learn about file input](https:\/\/appwrite.io\/docs\/storage#file-input).","required":true,"type":"file","in":"formData"},{"name":"permissions","description":"An array of permission strings. By default, only the current user is granted all permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"x-example":"[\"read(\"any\")\"]","in":"formData"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get file","operationId":"storageGetFile","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"getFile","weight":194,"cookies":false,"type":"","demo":"storage\/get-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID.","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"}]},"put":{"summary":"Update file","operationId":"storageUpdateFile","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Update a file by its unique ID. Only users with write permissions have access to update this resource.","responses":{"200":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"updateFile","weight":198,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File unique ID.","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Name of the file","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission string. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","consumes":["application\/json"],"produces":[],"tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":199,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID.","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/download":{"get":{"summary":"Get file for download","operationId":"storageGetFileDownload","consumes":["application\/json"],"produces":["*\/*"],"tags":["storage"],"description":"Get a file content by its unique ID. The endpoint response return with a 'Content-Disposition: attachment' header that tells the browser to start downloading the file to user downloads directory.","responses":{"200":{"description":"File","schema":{"type":"file"}}},"x-appwrite":{"method":"getFileDownload","weight":196,"cookies":false,"type":"location","demo":"storage\/get-file-download.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-download.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID.","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/preview":{"get":{"summary":"Get file preview","operationId":"storageGetFilePreview","consumes":["application\/json"],"produces":["image\/*"],"tags":["storage"],"description":"Get a file preview image. Currently, this method supports preview for image files (jpg, png, and gif), other supported formats, like pdf, docs, slides, and spreadsheets, will return the file icon image. You can also pass query string arguments for cutting and resizing your preview image. Preview is supported only for image files smaller than 10MB.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFilePreview","weight":195,"cookies":false,"type":"location","demo":"storage\/get-file-preview.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-preview.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"},{"name":"width","description":"Resize preview image width, Pass an integer between 0 to 4000.","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 4000.","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"gravity","description":"Image crop gravity. Can be one of center,top-left,top,top-right,left,right,bottom-left,bottom,bottom-right","required":false,"type":"string","x-example":"center","enum":["center","top-left","top","top-right","left","right","bottom-left","bottom","bottom-right"],"x-enum-name":"ImageGravity","x-enum-keys":[],"default":"center","in":"query"},{"name":"quality","description":"Preview image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"borderWidth","description":"Preview image border in pixels. Pass an integer between 0 to 100. Defaults to 0.","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"borderColor","description":"Preview image border color. Use a valid HEX color, no # is needed for prefix.","required":false,"type":"string","default":"","in":"query"},{"name":"borderRadius","description":"Preview image border radius in pixels. Pass an integer between 0 to 4000.","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"opacity","description":"Preview image opacity. Only works with images having an alpha channel (like png). Pass a number between 0 to 1.","required":false,"type":"number","format":"float","x-example":0,"default":1,"in":"query"},{"name":"rotation","description":"Preview image rotation in degrees. Pass an integer between -360 and 360.","required":false,"type":"integer","format":"int32","x-example":-360,"default":0,"in":"query"},{"name":"background","description":"Preview image background color. Only works with transparent images (png). Use a valid HEX color, no # is needed for prefix.","required":false,"type":"string","default":"","in":"query"},{"name":"output","description":"Output format type (jpeg, jpg, png, gif and webp).","required":false,"type":"string","x-example":"jpg","enum":["jpg","jpeg","gif","png","webp"],"x-enum-name":"ImageFormat","x-enum-keys":[],"default":"","in":"query"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/view":{"get":{"summary":"Get file for view","operationId":"storageGetFileView","consumes":["application\/json"],"produces":["*\/*"],"tags":["storage"],"description":"Get a file content by its unique ID. This endpoint is similar to the download method but returns with no 'Content-Disposition: attachment' header.","responses":{"200":{"description":"File","schema":{"type":"file"}}},"x-appwrite":{"method":"getFileView","weight":197,"cookies":false,"type":"location","demo":"storage\/get-file-view.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-view.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID.","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"}]}},"\/teams":{"get":{"summary":"List teams","operationId":"teamsList","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get a list of all the teams in which the current user is a member. You can use the parameters to filter your results.","responses":{"200":{"description":"Teams List","schema":{"$ref":"#\/definitions\/teamList"}}},"x-appwrite":{"method":"list","weight":203,"cookies":false,"type":"","demo":"teams\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-teams.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total, billingPlan","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create team","operationId":"teamsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"create","weight":202,"cookies":false,"type":"","demo":"teams\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/create-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"teamId":{"type":"string","description":"Team ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[TEAM_ID]"},"name":{"type":"string","description":"Team name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"roles":{"type":"array","description":"Array of strings. Use this param to set the roles in the team for the user who created it. The default role is **owner**. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","default":["owner"],"x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}]}},"\/teams\/{teamId}":{"get":{"summary":"Get team","operationId":"teamsGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"get","weight":204,"cookies":false,"type":"","demo":"teams\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams","offline-key":"{teamId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"}]},"put":{"summary":"Update name","operationId":"teamsUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Update the team's name by its unique ID.","responses":{"200":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"updateName","weight":206,"cookies":false,"type":"","demo":"teams\/update-name.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-name.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams","offline-key":"{teamId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"New team name. Max length: 128 chars.","default":null,"x-example":"[NAME]"}},"required":["name"]}}]},"delete":{"summary":"Delete team","operationId":"teamsDelete","consumes":["application\/json"],"produces":[],"tags":["teams"],"description":"Delete a team using its ID. Only team members with the owner role can delete the team.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":208,"cookies":false,"type":"","demo":"teams\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/delete-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"}]}},"\/teams\/{teamId}\/memberships":{"get":{"summary":"List team memberships","operationId":"teamsListMemberships","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"listMemberships","weight":210,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/memberships","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create team membership","operationId":"teamsCreateMembership","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Invite a new member to join your team. Provide an ID for existing users, or invite unregistered users using an email or phone number. If initiated from a Client SDK, Appwrite will send an email or sms with a link to join the team to the invited user, and an account will be created for them if one doesn't exist. If initiated from a Server SDK, the new member will be added automatically to the team.\n\nYou only need to provide one of a user ID, email, or phone number. Appwrite will prioritize accepting the user ID > email > phone number if you provide more than one of these parameters.\n\nUse the `url` parameter to redirect the user from the invitation email to your app. After the user is redirected, use the [Update Team Membership Status](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/teams#updateMembershipStatus) endpoint to allow the user to accept the invitation to the team. \n\nPlease note that to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) Appwrite will accept the only redirect URLs under the domains you have added as a platform on the Appwrite Console.\n","responses":{"201":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"createMembership","weight":209,"cookies":false,"type":"","demo":"teams\/create-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/create-team-membership.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"email":{"type":"string","description":"Email of the new team member.","default":"","x-example":"email@example.com"},"userId":{"type":"string","description":"ID of the user to be added to a team.","default":"","x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":"","x-example":"+12065550100"},"roles":{"type":"array","description":"Array of strings. Use this param to set the user roles in the team. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":"","x-example":"https:\/\/example.com"},"name":{"type":"string","description":"Name of the new team member. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["roles"]}}]}},"\/teams\/{teamId}\/memberships\/{membershipId}":{"get":{"summary":"Get team membership","operationId":"teamsGetMembership","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get a team member by the membership unique id. All team members have read access for this resource.","responses":{"200":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"getMembership","weight":211,"cookies":false,"type":"","demo":"teams\/get-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-member.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/memberships","offline-key":"{membershipId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"type":"string","x-example":"[MEMBERSHIP_ID]","in":"path"}]},"patch":{"summary":"Update membership","operationId":"teamsUpdateMembership","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Modify the roles of a team member. Only team members with the owner role have access to this endpoint. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions).\n","responses":{"200":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"updateMembership","weight":212,"cookies":false,"type":"","demo":"teams\/update-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"type":"string","x-example":"[MEMBERSHIP_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"roles":{"type":"array","description":"An array of strings. Use this param to set the user's roles in the team. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}}},"required":["roles"]}}]},"delete":{"summary":"Delete team membership","operationId":"teamsDeleteMembership","consumes":["application\/json"],"produces":[],"tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":214,"cookies":false,"type":"","demo":"teams\/delete-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/delete-team-membership.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"type":"string","x-example":"[MEMBERSHIP_ID]","in":"path"}]}},"\/teams\/{teamId}\/memberships\/{membershipId}\/status":{"patch":{"summary":"Update team membership status","operationId":"teamsUpdateMembershipStatus","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Use this endpoint to allow a user to accept an invitation to join a team after being redirected back to your app from the invitation email received by the user.\n\nIf the request is successful, a session for the user is automatically created.\n","responses":{"200":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"updateMembershipStatus","weight":213,"cookies":false,"type":"","demo":"teams\/update-membership-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"public","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"type":"string","x-example":"[MEMBERSHIP_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Secret key.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/teams\/{teamId}\/prefs":{"get":{"summary":"Get team preferences","operationId":"teamsGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get the team's shared preferences by its unique ID. If a preference doesn't need to be shared by all team members, prefer storing them in [user preferences](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#getPrefs).","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":205,"cookies":false,"type":"","demo":"teams\/get-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/prefs","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"}]},"put":{"summary":"Update preferences","operationId":"teamsUpdatePrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Update the team's preferences by its unique ID. The object you pass is stored as is and replaces any previous value. The maximum allowed prefs size is 64kB and throws an error if exceeded.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"updatePrefs","weight":207,"cookies":false,"type":"","demo":"teams\/update-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/prefs","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"prefs":{"type":"object","description":"Prefs key-value JSON object.","default":{},"x-example":"{}"}},"required":["prefs"]}}]}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"project","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]},{"name":"proxy","description":"The Proxy Service allows you to configure actions for your domains beyond DNS configuration.","x-globalAttributes":[]},{"name":"graphql","description":"The GraphQL API allows you to query and mutate your Appwrite server using GraphQL.","x-globalAttributes":[]},{"name":"console","description":"The Console service allows you to interact with console relevant informations.","x-globalAttributes":[]},{"name":"migrations","description":"The Migrations service allows you to migrate third-party data to your Appwrite project.","x-globalAttributes":[]},{"name":"messaging","description":"The Messaging service allows you to send messages to any provider type (SMTP, push notification, SMS, etc.).","x-globalAttributes":[]}],"definitions":{"any":{"description":"Any","type":"object","additionalProperties":true},"documentList":{"description":"Documents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of documents documents that matched your query.","x-example":5,"format":"int32"},"documents":{"type":"array","description":"List of documents.","items":{"type":"object","$ref":"#\/definitions\/document"},"x-example":""}},"required":["total","documents"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of sessions documents that matched your query.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"type":"object","$ref":"#\/definitions\/session"},"x-example":""}},"required":["total","sessions"]},"identityList":{"description":"Identities List","type":"object","properties":{"total":{"type":"integer","description":"Total number of identities documents that matched your query.","x-example":5,"format":"int32"},"identities":{"type":"array","description":"List of identities.","items":{"type":"object","$ref":"#\/definitions\/identity"},"x-example":""}},"required":["total","identities"]},"logList":{"description":"Logs List","type":"object","properties":{"total":{"type":"integer","description":"Total number of logs documents that matched your query.","x-example":5,"format":"int32"},"logs":{"type":"array","description":"List of logs.","items":{"type":"object","$ref":"#\/definitions\/log"},"x-example":""}},"required":["total","logs"]},"fileList":{"description":"Files List","type":"object","properties":{"total":{"type":"integer","description":"Total number of files documents that matched your query.","x-example":5,"format":"int32"},"files":{"type":"array","description":"List of files.","items":{"type":"object","$ref":"#\/definitions\/file"},"x-example":""}},"required":["total","files"]},"teamList":{"description":"Teams List","type":"object","properties":{"total":{"type":"integer","description":"Total number of teams documents that matched your query.","x-example":5,"format":"int32"},"teams":{"type":"array","description":"List of teams.","items":{"type":"object","$ref":"#\/definitions\/team"},"x-example":""}},"required":["total","teams"]},"membershipList":{"description":"Memberships List","type":"object","properties":{"total":{"type":"integer","description":"Total number of memberships documents that matched your query.","x-example":5,"format":"int32"},"memberships":{"type":"array","description":"List of memberships.","items":{"type":"object","$ref":"#\/definitions\/membership"},"x-example":""}},"required":["total","memberships"]},"executionList":{"description":"Executions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of executions documents that matched your query.","x-example":5,"format":"int32"},"executions":{"type":"array","description":"List of executions.","items":{"type":"object","$ref":"#\/definitions\/execution"},"x-example":""}},"required":["total","executions"]},"countryList":{"description":"Countries List","type":"object","properties":{"total":{"type":"integer","description":"Total number of countries documents that matched your query.","x-example":5,"format":"int32"},"countries":{"type":"array","description":"List of countries.","items":{"type":"object","$ref":"#\/definitions\/country"},"x-example":""}},"required":["total","countries"]},"continentList":{"description":"Continents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of continents documents that matched your query.","x-example":5,"format":"int32"},"continents":{"type":"array","description":"List of continents.","items":{"type":"object","$ref":"#\/definitions\/continent"},"x-example":""}},"required":["total","continents"]},"languageList":{"description":"Languages List","type":"object","properties":{"total":{"type":"integer","description":"Total number of languages documents that matched your query.","x-example":5,"format":"int32"},"languages":{"type":"array","description":"List of languages.","items":{"type":"object","$ref":"#\/definitions\/language"},"x-example":""}},"required":["total","languages"]},"currencyList":{"description":"Currencies List","type":"object","properties":{"total":{"type":"integer","description":"Total number of currencies documents that matched your query.","x-example":5,"format":"int32"},"currencies":{"type":"array","description":"List of currencies.","items":{"type":"object","$ref":"#\/definitions\/currency"},"x-example":""}},"required":["total","currencies"]},"phoneList":{"description":"Phones List","type":"object","properties":{"total":{"type":"integer","description":"Total number of phones documents that matched your query.","x-example":5,"format":"int32"},"phones":{"type":"array","description":"List of phones.","items":{"type":"object","$ref":"#\/definitions\/phone"},"x-example":""}},"required":["total","phones"]},"localeCodeList":{"description":"Locale codes list","type":"object","properties":{"total":{"type":"integer","description":"Total number of localeCodes documents that matched your query.","x-example":5,"format":"int32"},"localeCodes":{"type":"array","description":"List of localeCodes.","items":{"type":"object","$ref":"#\/definitions\/localeCode"},"x-example":""}},"required":["total","localeCodes"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"user":{"description":"User","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"password":{"type":"string","description":"Hashed user password.","x-example":"$argon2id$v=19$m=2048,t=4,p=3$aUZjLnliVWRINmFNTWMudg$5S+x+7uA31xFnrHFT47yFwcJeaP0w92L\/4LdgrVRXxE","x-nullable":true},"hash":{"type":"string","description":"Password hashing algorithm.","x-example":"argon2","x-nullable":true},"hashOptions":{"type":"object","description":"Password hashing algorithm configuration.","x-example":{},"items":{"x-oneOf":[{"$ref":"#\/definitions\/algoArgon2"},{"$ref":"#\/definitions\/algoScrypt"},{"$ref":"#\/definitions\/algoScryptModified"},{"$ref":"#\/definitions\/algoBcrypt"},{"$ref":"#\/definitions\/algoPhpass"},{"$ref":"#\/definitions\/algoSha"},{"$ref":"#\/definitions\/algoMd5"}]},"x-nullable":true},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"labels":{"type":"array","description":"Labels for the user.","items":{"type":"string"},"x-example":["vip"]},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"mfa":{"type":"boolean","description":"Multi factor authentication status.","x-example":true},"totp":{"type":"boolean","description":"TOTP status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"type":"object","$ref":"#\/definitions\/preferences"}},"targets":{"type":"array","description":"A user-owned message receiver. A single user may have multiple e.g. emails, phones, and a browser. Each target is registered with a single provider.","items":{"type":"object","$ref":"#\/definitions\/target"},"x-example":[]},"accessedAt":{"type":"string","description":"Most recent access date in ISO 8601 format. This attribute is only updated again after 24 hours.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","$updatedAt","name","registration","status","labels","passwordUpdate","email","phone","emailVerification","phoneVerification","mfa","totp","prefs","targets","accessedAt"]},"algoMd5":{"description":"AlgoMD5","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"md5"}},"required":["type"]},"algoSha":{"description":"AlgoSHA","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"sha"}},"required":["type"]},"algoPhpass":{"description":"AlgoPHPass","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"phpass"}},"required":["type"]},"algoBcrypt":{"description":"AlgoBcrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"bcrypt"}},"required":["type"]},"algoScrypt":{"description":"AlgoScrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scrypt"},"costCpu":{"type":"integer","description":"CPU complexity of computed hash.","x-example":8,"format":"int32"},"costMemory":{"type":"integer","description":"Memory complexity of computed hash.","x-example":14,"format":"int32"},"costParallel":{"type":"integer","description":"Parallelization of computed hash.","x-example":1,"format":"int32"},"length":{"type":"integer","description":"Length used to compute hash.","x-example":64,"format":"int32"}},"required":["type","costCpu","costMemory","costParallel","length"]},"algoScryptModified":{"description":"AlgoScryptModified","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scryptMod"},"salt":{"type":"string","description":"Salt used to compute hash.","x-example":"UxLMreBr6tYyjQ=="},"saltSeparator":{"type":"string","description":"Separator used to compute hash.","x-example":"Bw=="},"signerKey":{"type":"string","description":"Key used to compute hash.","x-example":"XyEKE9RcTDeLEsL\/RjwPDBv\/RqDl8fb3gpYEOQaPihbxf1ZAtSOHCjuAAa7Q3oHpCYhXSN9tizHgVOwn6krflQ=="}},"required":["type","salt","saltSeparator","signerKey"]},"algoArgon2":{"description":"AlgoArgon2","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"argon2"},"memoryCost":{"type":"integer","description":"Memory used to compute hash.","x-example":65536,"format":"int32"},"timeCost":{"type":"integer","description":"Amount of time consumed to compute hash","x-example":4,"format":"int32"},"threads":{"type":"integer","description":"Number of threads used to compute hash.","x-example":3,"format":"int32"}},"required":["type","memoryCost","timeCost","threads"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true},"factors":{"type":"array","description":"Returns a list of active session factors.","items":{"type":"string"},"x-example":["email"]},"secret":{"type":"string","description":"Secret used to authenticate the user. Only included if the request was made with an API key","x-example":"5e5bb8c16897e"}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current","factors","secret"]},"identity":{"description":"Identity","type":"object","properties":{"$id":{"type":"string","description":"Identity ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Identity creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Identity update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"provider":{"type":"string","description":"Identity Provider.","x-example":"email"},"providerUid":{"type":"string","description":"ID of the User in the Identity Provider.","x-example":"5e5bb8c16897e"},"providerEmail":{"type":"string","description":"Email of the User in the Identity Provider.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Identity Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Identity Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"}},"required":["$id","$createdAt","$updatedAt","userId","provider","providerUid","providerEmail","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"phrase":{"type":"string","description":"Security phrase of a token. Empty if security phrase was not requested when creating a token. It includes randomly generated phrase which is also sent in the external resource such as email.","x-example":"Golden Fox"}},"required":["$id","$createdAt","userId","secret","expire","phrase"]},"jwt":{"description":"JWT","type":"object","properties":{"jwt":{"type":"string","description":"JWT encoded string.","x-example":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c"}},"required":["jwt"]},"locale":{"description":"Locale","type":"object","properties":{"ip":{"type":"string","description":"User IP address.","x-example":"127.0.0.1"},"countryCode":{"type":"string","description":"Country code in [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) two-character format","x-example":"US"},"country":{"type":"string","description":"Country name. This field support localization.","x-example":"United States"},"continentCode":{"type":"string","description":"Continent code. A two character continent code \"AF\" for Africa, \"AN\" for Antarctica, \"AS\" for Asia, \"EU\" for Europe, \"NA\" for North America, \"OC\" for Oceania, and \"SA\" for South America.","x-example":"NA"},"continent":{"type":"string","description":"Continent name. This field support localization.","x-example":"North America"},"eu":{"type":"boolean","description":"True if country is part of the European Union.","x-example":false},"currency":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format","x-example":"USD"}},"required":["ip","countryCode","country","continentCode","continent","eu","currency"]},"localeCode":{"description":"LocaleCode","type":"object","properties":{"code":{"type":"string","description":"Locale codes in [ISO 639-1](https:\/\/en.wikipedia.org\/wiki\/List_of_ISO_639-1_codes)","x-example":"en-us"},"name":{"type":"string","description":"Locale name","x-example":"US"}},"required":["code","name"]},"file":{"description":"File","type":"object","properties":{"$id":{"type":"string","description":"File ID.","x-example":"5e5ea5c16897e"},"bucketId":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"},"prefs":{"type":"object","description":"Team preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"type":"object","$ref":"#\/definitions\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","total","prefs"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"mfa":{"type":"boolean","description":"Multi factor authentication status, true if the user has MFA enabled or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":["owner"]}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","mfa","roles"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"requestMethod":{"type":"string","description":"HTTP request method type.","x-example":"GET"},"requestPath":{"type":"string","description":"HTTP request path and query.","x-example":"\/articles?id=5"},"requestHeaders":{"type":"array","description":"HTTP response headers as a key-value object. This will return only whitelisted headers. All headers are returned if execution is created as synchronous.","items":{"type":"object","$ref":"#\/definitions\/headers"},"x-example":[{"Content-Type":"application\/json"}]},"responseStatusCode":{"type":"integer","description":"HTTP response status code.","x-example":200,"format":"int32"},"responseBody":{"type":"string","description":"HTTP response body. This will return empty unless execution is created as synchronous.","x-example":"Developers are awesome."},"responseHeaders":{"type":"array","description":"HTTP response headers as a key-value object. This will return only whitelisted headers. All headers are returned if execution is created as synchronous.","items":{"type":"object","$ref":"#\/definitions\/headers"},"x-example":[{"Content-Type":"application\/json"}]},"logs":{"type":"string","description":"Function logs. Includes the last 4,000 characters. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"errors":{"type":"string","description":"Function errors. Includes the last 4,000 characters. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"Function execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","requestMethod","requestPath","requestHeaders","responseStatusCode","responseBody","responseHeaders","logs","errors","duration"]},"country":{"description":"Country","type":"object","properties":{"name":{"type":"string","description":"Country name.","x-example":"United States"},"code":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"}},"required":["name","code"]},"continent":{"description":"Continent","type":"object","properties":{"name":{"type":"string","description":"Continent name.","x-example":"Europe"},"code":{"type":"string","description":"Continent two letter code.","x-example":"EU"}},"required":["name","code"]},"language":{"description":"Language","type":"object","properties":{"name":{"type":"string","description":"Language name.","x-example":"Italian"},"code":{"type":"string","description":"Language two-character ISO 639-1 codes.","x-example":"it"},"nativeName":{"type":"string","description":"Language native name.","x-example":"Italiano"}},"required":["name","code","nativeName"]},"currency":{"description":"Currency","type":"object","properties":{"symbol":{"type":"string","description":"Currency symbol.","x-example":"$"},"name":{"type":"string","description":"Currency name.","x-example":"US dollar"},"symbolNative":{"type":"string","description":"Currency native symbol.","x-example":"$"},"decimalDigits":{"type":"integer","description":"Number of decimal digits.","x-example":2,"format":"int32"},"rounding":{"type":"number","description":"Currency digit rounding.","x-example":0,"format":"double"},"code":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format.","x-example":"USD"},"namePlural":{"type":"string","description":"Currency plural name","x-example":"US dollars"}},"required":["symbol","name","symbolNative","decimalDigits","rounding","code","namePlural"]},"phone":{"description":"Phone","type":"object","properties":{"code":{"type":"string","description":"Phone code.","x-example":"+1"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["code","countryCode","countryName"]},"headers":{"description":"Headers","type":"object","properties":{"name":{"type":"string","description":"Header name.","x-example":"Content-Type"},"value":{"type":"string","description":"Header value.","x-example":"application\/json"}},"required":["name","value"]},"mfaChallenge":{"description":"MFA Challenge","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","userId","expire"]},"mfaType":{"description":"MFAType","type":"object","properties":{"backups":{"type":"array","description":"Backup codes.","items":{"type":"string"},"x-example":true},"secret":{"type":"string","description":"Secret token used for TOTP factor.","x-example":true},"uri":{"type":"string","description":"URI for authenticator apps.","x-example":true}},"required":["backups","secret","uri"]},"mfaFactors":{"description":"MFAFactors","type":"object","properties":{"totp":{"type":"boolean","description":"TOTP","x-example":true},"phone":{"type":"boolean","description":"Phone","x-example":true},"email":{"type":"boolean","description":"Email","x-example":true}},"required":["totp","phone","email"]},"subscriber":{"description":"Subscriber","type":"object","properties":{"$id":{"type":"string","description":"Subscriber ID.","x-example":"259125845563242502"},"$createdAt":{"type":"string","description":"Subscriber creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Subscriber update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"targetId":{"type":"string","description":"Target ID.","x-example":"259125845563242502"},"target":{"type":"object","description":"Target.","x-example":{"$id":"259125845563242502","$createdAt":"2020-10-15T06:38:00.000+00:00","$updatedAt":"2020-10-15T06:38:00.000+00:00","providerType":"email","providerId":"259125845563242502","name":"ageon-app-email","identifier":"random-mail@email.org","userId":"5e5ea5c16897e"},"items":{"type":"object","$ref":"#\/definitions\/target"}},"userId":{"type":"string","description":"Topic ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User Name.","x-example":"Aegon Targaryen"},"topicId":{"type":"string","description":"Topic ID.","x-example":"259125845563242502"},"providerType":{"type":"string","description":"The target provider type. Can be one of the following: `email`, `sms` or `push`.","x-example":"email"}},"required":["$id","$createdAt","$updatedAt","targetId","target","userId","userName","topicId","providerType"]},"target":{"description":"Target","type":"object","properties":{"$id":{"type":"string","description":"Target ID.","x-example":"259125845563242502"},"$createdAt":{"type":"string","description":"Target creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Target update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Target Name.","x-example":"Aegon apple token"},"userId":{"type":"string","description":"User ID.","x-example":"259125845563242502"},"providerId":{"type":"string","description":"Provider ID.","x-example":"259125845563242502","x-nullable":true},"providerType":{"type":"string","description":"The target provider type. Can be one of the following: `email`, `sms` or `push`.","x-example":"email"},"identifier":{"type":"string","description":"The target identifier.","x-example":"token"}},"required":["$id","$createdAt","$updatedAt","name","userId","providerType","identifier"]}},"externalDocs":{"description":"Full API docs, specs and tutorials","url":"https:\/\/appwrite.io\/docs"}} \ No newline at end of file diff --git a/app/config/specs/swagger2-latest-console.json b/app/config/specs/swagger2-latest-console.json index 6c73980a8f..594fae1411 100644 --- a/app/config/specs/swagger2-latest-console.json +++ b/app/config/specs/swagger2-latest-console.json @@ -1 +1 @@ -{"swagger":"2.0","info":{"version":"1.4.13","title":"Appwrite","description":"Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https:\/\/appwrite.io\/docs](https:\/\/appwrite.io\/docs)","termsOfService":"https:\/\/appwrite.io\/policy\/terms","contact":{"name":"Appwrite Team","url":"https:\/\/appwrite.io\/support","email":"team@appwrite.io"},"license":{"name":"BSD-3-Clause","url":"https:\/\/raw.githubusercontent.com\/appwrite\/appwrite\/master\/LICENSE"}},"host":"HOSTNAME","basePath":"\/v1","schemes":["https"],"consumes":["application\/json","multipart\/form-data"],"produces":["application\/json"],"securityDefinitions":{"Project":{"type":"apiKey","name":"X-Appwrite-Project","description":"Your project ID","in":"header","x-appwrite":{"demo":"5df5acd0d48c2"}},"Key":{"type":"apiKey","name":"X-Appwrite-Key","description":"Your secret API key","in":"header","x-appwrite":{"demo":"919c2d18fb5d4...a2ae413da83346ad2"}},"JWT":{"type":"apiKey","name":"X-Appwrite-JWT","description":"Your secret JSON Web Token","in":"header","x-appwrite":{"demo":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ..."}},"Locale":{"type":"apiKey","name":"X-Appwrite-Locale","description":"","in":"header","x-appwrite":{"demo":"en"}},"Mode":{"type":"apiKey","name":"X-Appwrite-Mode","description":"","in":"header","x-appwrite":{"demo":""}}},"paths":{"\/account":{"get":{"summary":"Get account","operationId":"accountGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get the currently logged in user.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"get","weight":22,"cookies":false,"type":"","demo":"account\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"post":{"summary":"Create account","operationId":"accountCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to allow a new user to register a new account in your project. After the user registration completes successfully, you can use the [\/account\/verfication](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createVerification) route to start verifying the user email address. To allow the new user to login to their new account, you need to create a new [account session](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createEmailSession).","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"create","weight":7,"cookies":false,"type":"","demo":"account\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"New user password. Must be between 8 and 256 chars.","default":null,"x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]},"delete":{"summary":"Delete account","operationId":"accountDelete","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Delete the currently logged in user.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":49,"cookies":false,"type":"","demo":"account\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/email":{"patch":{"summary":"Update email","operationId":"accountUpdateEmail","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateEmail","weight":29,"cookies":false,"type":"","demo":"account\/update-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["email","password"]}}]}},"\/account\/identities":{"get":{"summary":"List Identities","operationId":"accountListIdentities","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get the list of identities for the currently logged in user.","responses":{"200":{"description":"Identities List","schema":{"$ref":"#\/definitions\/identityList"}}},"x-appwrite":{"method":"listIdentities","weight":13,"cookies":false,"type":"","demo":"account\/list-identities.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-identities.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/identities","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, provider, providerUid, providerEmail, providerAccessTokenExpiry","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/identities\/{identityId}":{"delete":{"summary":"Delete identity","operationId":"accountDeleteIdentity","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Delete an identity by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIdentity","weight":14,"cookies":false,"type":"","demo":"account\/delete-identity.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-identity.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"identityId","description":"Identity ID.","required":true,"type":"string","x-example":"[IDENTITY_ID]","in":"path"}]}},"\/account\/jwt":{"post":{"summary":"Create JWT","operationId":"accountCreateJWT","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to create a JSON Web Token. You can use the resulting JWT to authenticate on behalf of the current user when working with the Appwrite server-side API and SDKs. The JWT secret is valid for 15 minutes from its creation and will be invalid if the user will logout in that time frame.","responses":{"201":{"description":"JWT","schema":{"$ref":"#\/definitions\/jwt"}}},"x-appwrite":{"method":"createJWT","weight":21,"cookies":false,"type":"","demo":"account\/create-j-w-t.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-jwt.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"List logs","operationId":"accountListLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get the list of latest security activity logs for the currently logged in user. Each log returns user IP address, location and date and time of log.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listLogs","weight":25,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/mfa":{"patch":{"summary":"Update MFA","operationId":"accountUpdateMFA","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateMFA","weight":42,"cookies":false,"type":"","demo":"account\/update-m-f-a.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-mfa.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"mfa":{"type":"boolean","description":"Enable or disable MFA.","default":null,"x-example":false}},"required":["mfa"]}}]}},"\/account\/mfa\/challenge":{"post":{"summary":"Create MFA Challenge","operationId":"accountCreateChallenge","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"201":{"description":"MFA Challenge","schema":{"$ref":"#\/definitions\/mfaChallenge"}}},"x-appwrite":{"method":"createChallenge","weight":47,"cookies":false,"type":"","demo":"account\/create-challenge.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-challenge.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},token:{param-token}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"provider":{"type":"string","description":"provider.","default":null,"x-example":"totp","enum":["totp","phone","email"],"x-enum-name":"AuthenticatorProvider","x-enum-keys":[]}},"required":["provider"]}}]},"put":{"summary":"Create MFA Challenge (confirmation)","operationId":"accountUpdateChallenge","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"updateChallenge","weight":48,"cookies":false,"type":"","demo":"account\/update-challenge.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-challenge.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"challengeId":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[CHALLENGE_ID]"},"otp":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[OTP]"}},"required":["challengeId","otp"]}}]}},"\/account\/mfa\/factors":{"get":{"summary":"List Factors","operationId":"accountListFactors","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get the currently logged in user.","responses":{"200":{"description":"MFAProviders","schema":{"$ref":"#\/definitions\/mfaProviders"}}},"x-appwrite":{"method":"listFactors","weight":43,"cookies":false,"type":"","demo":"account\/list-factors.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/account\/mfa\/{factor}":{"post":{"summary":"Add Authenticator","operationId":"accountAddAuthenticator","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"200":{"description":"MFAProvider","schema":{"$ref":"#\/definitions\/mfaProvider"}}},"x-appwrite":{"method":"addAuthenticator","weight":44,"cookies":false,"type":"","demo":"account\/add-authenticator.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-mfa.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"factor","description":"Factor.","required":true,"type":"string","x-example":"totp","enum":["totp"],"x-enum-name":"AuthenticatorFactor","x-enum-keys":[],"in":"path"}]},"put":{"summary":"Verify Authenticator","operationId":"accountVerifyAuthenticator","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"verifyAuthenticator","weight":45,"cookies":false,"type":"","demo":"account\/verify-authenticator.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-mfa.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"factor","description":"Factor.","required":true,"type":"string","x-example":"totp","enum":["totp"],"x-enum-name":"AuthenticatorFactor","x-enum-keys":[],"in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"otp":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[OTP]"}},"required":["otp"]}}]}},"\/account\/mfa\/{provider}":{"delete":{"summary":"Delete Authenticator","operationId":"accountDeleteAuthenticator","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"deleteAuthenticator","weight":46,"cookies":false,"type":"","demo":"account\/delete-authenticator.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-mfa.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"provider","description":"Provider.","required":true,"type":"string","x-example":"totp","enum":["totp"],"x-enum-name":"AuthenticatorProvider","x-enum-keys":[],"in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"otp":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[OTP]"}},"required":["otp"]}}]}},"\/account\/name":{"patch":{"summary":"Update name","operationId":"accountUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateName","weight":27,"cookies":false,"type":"","demo":"account\/update-name.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-name.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"User name. Max length: 128 chars.","default":null,"x-example":"[NAME]"}},"required":["name"]}}]}},"\/account\/password":{"patch":{"summary":"Update password","operationId":"accountUpdatePassword","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePassword","weight":28,"cookies":false,"type":"","demo":"account\/update-password.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-password.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"password":{"type":"string","description":"New user password. Must be at least 8 chars.","default":null,"x-example":null},"oldPassword":{"type":"string","description":"Current user password. Must be at least 8 chars.","default":"","x-example":"password"}},"required":["password"]}}]}},"\/account\/phone":{"patch":{"summary":"Update phone","operationId":"accountUpdatePhone","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createPhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePhone","weight":30,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["phone","password"]}}]}},"\/account\/prefs":{"get":{"summary":"Get account preferences","operationId":"accountGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get the preferences as a key-value object for the currently logged in user.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":23,"cookies":false,"type":"","demo":"account\/get-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/prefs","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"patch":{"summary":"Update preferences","operationId":"accountUpdatePrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account preferences. The object you pass is stored as is, and replaces any previous value. The maximum allowed prefs size is 64kB and throws error if exceeded.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePrefs","weight":31,"cookies":false,"type":"","demo":"account\/update-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/prefs","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"prefs":{"type":"object","description":"Prefs key-value JSON object.","default":{},"x-example":"{}"}},"required":["prefs"]}}]}},"\/account\/recovery":{"post":{"summary":"Create password recovery","operationId":"accountCreateRecovery","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Sends the user an email with a temporary secret key for password reset. When the user clicks the confirmation link he is redirected back to your app password reset URL with the secret key and email address values attached to the URL query string. Use the query string params to submit a request to the [PUT \/account\/recovery](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateRecovery) endpoint to complete the process. The verification link sent to the user's email address is valid for 1 hour.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createRecovery","weight":36,"cookies":false,"type":"","demo":"account\/create-recovery.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-recovery.md","rate-limit":10,"rate-time":3600,"rate-key":["url:{url},email:{param-email}","ip:{ip}"],"scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"url":{"type":"string","description":"URL to redirect the user back to your app from the recovery email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":null,"x-example":"https:\/\/example.com"}},"required":["email","url"]}}]},"put":{"summary":"Create password recovery (confirmation)","operationId":"accountUpdateRecovery","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete the user account password reset. Both the **userId** and **secret** arguments will be passed as query parameters to the redirect URL you have provided when sending your request to the [POST \/account\/recovery](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createRecovery) endpoint.\n\nPlease note that in order to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) the only valid redirect URLs are the ones from domains you have set when adding your platforms in the console interface.","responses":{"200":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"updateRecovery","weight":37,"cookies":false,"type":"","demo":"account\/update-recovery.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-recovery.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid reset token.","default":null,"x-example":"[SECRET]"},"password":{"type":"string","description":"New user password. Must be between 8 and 256 chars.","default":null,"x-example":null}},"required":["userId","secret","password"]}}]}},"\/account\/sessions":{"get":{"summary":"List sessions","operationId":"accountListSessions","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get the list of active sessions across different devices for the currently logged in user.","responses":{"200":{"description":"Sessions List","schema":{"$ref":"#\/definitions\/sessionList"}}},"x-appwrite":{"method":"listSessions","weight":24,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/sessions","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete sessions","operationId":"accountDeleteSessions","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":35,"cookies":false,"type":"","demo":"account\/delete-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-sessions.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/account\/sessions\/anonymous":{"post":{"summary":"Create anonymous session","operationId":"accountCreateAnonymousSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to allow a new user to register an anonymous account in your project. This route will also create a new session for the user. To allow the new user to convert an anonymous account to a normal account, you need to update its [email and password](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateEmail) or create an [OAuth2 session](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#CreateOAuth2Session).","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"createAnonymousSession","weight":20,"cookies":false,"type":"","demo":"account\/create-anonymous-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-anonymous.md","rate-limit":50,"rate-time":3600,"rate-key":"ip:{ip}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/sessions\/email":{"post":{"summary":"Create email password session","operationId":"accountCreateEmailPasswordSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Allow the user to login into their account by providing a valid email and password combination. This route will create a new session for the user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"createEmailPasswordSession","weight":8,"cookies":false,"type":"","demo":"account\/create-email-password-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-email-password.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["email","password"]}}]}},"\/account\/sessions\/magic-url":{"put":{"summary":"Create session (deprecated)","operationId":"accountUpdateMagicURLSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to create a session from token. Provide the **userId** and **secret** parameters from the successful response of authentication flows initiated by token creation. For example, magic URL and phone login.","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateMagicURLSession","weight":17,"cookies":false,"type":"","demo":"account\/update-magic-u-r-l-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session.md","rate-limit":10,"rate-time":3600,"rate-key":"ip:{ip},userId:{param-userId}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/account\/sessions\/oauth2\/{provider}":{"get":{"summary":"Create OAuth2 session","operationId":"accountCreateOAuth2Session","consumes":["application\/json"],"produces":["text\/html"],"tags":["account"],"description":"Allow the user to login to their account using the OAuth2 provider of their choice. Each OAuth2 provider should be enabled from the Appwrite console first. Use the success and failure arguments to provide a redirect URL's back to your app when login is completed.\n\nIf there is already an active session, the new session will be attached to the logged-in account. If there are no active sessions, the server will attempt to look for a user with the same email address as the email received from the OAuth2 provider and attach the new session to the existing user. If no matching user is found - the server will create a new user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).\n","responses":{"301":{"description":"No content"}},"x-appwrite":{"method":"createOAuth2Session","weight":9,"cookies":false,"type":"webAuth","demo":"account\/create-o-auth2session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-oauth2.md","rate-limit":50,"rate-time":3600,"rate-key":"ip:{ip}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"provider","description":"OAuth2 Provider. Currently, supported providers are: amazon, apple, auth0, authentik, autodesk, bitbucket, bitly, box, dailymotion, discord, disqus, dropbox, etsy, facebook, github, gitlab, google, linkedin, microsoft, notion, oidc, okta, paypal, paypalSandbox, podio, salesforce, slack, spotify, stripe, tradeshift, tradeshiftBox, twitch, wordpress, yahoo, yammer, yandex, zoho, zoom.","required":true,"type":"string","x-example":"amazon","enum":["amazon","apple","auth0","authentik","autodesk","bitbucket","bitly","box","dailymotion","discord","disqus","dropbox","etsy","facebook","github","gitlab","google","linkedin","microsoft","notion","oidc","okta","paypal","paypalSandbox","podio","salesforce","slack","spotify","stripe","tradeshift","tradeshiftBox","twitch","wordpress","yahoo","yammer","yandex","zoho","zoom","mock"],"x-enum-name":"OAuthProvider","x-enum-keys":[],"in":"path"},{"name":"success","description":"URL to redirect back to your app after a successful login attempt. Only URLs from hostnames in your project's platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","required":false,"type":"string","format":"url","x-example":"https:\/\/example.com","default":"","in":"query"},{"name":"failure","description":"URL to redirect back to your app after a failed login attempt. Only URLs from hostnames in your project's platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","required":false,"type":"string","format":"url","x-example":"https:\/\/example.com","default":"","in":"query"},{"name":"token","description":"Include token credentials in the final redirect, useful for server-side integrations, or when cookies are not available.","required":false,"type":"boolean","x-example":false,"default":false,"in":"query"},{"name":"scopes","description":"A list of custom OAuth2 scopes. Check each provider internal docs for a list of supported scopes. Maximum of 100 scopes are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/sessions\/token":{"post":{"summary":"Create session","operationId":"accountCreateSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to create a session from token. Provide the **userId** and **secret** parameters from the successful response of authentication flows initiated by token creation. For example, magic URL and phone login.","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"createSession","weight":18,"cookies":false,"type":"","demo":"account\/create-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session.md","rate-limit":10,"rate-time":3600,"rate-key":"ip:{ip},userId:{param-userId}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Secret of a token generated by login methods. For example, the `createMagicURLToken` or `createPhoneToken` methods.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/account\/sessions\/{sessionId}":{"get":{"summary":"Get session","operationId":"accountGetSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to get a logged in user's session using a Session ID. Inputting 'current' will return the current session being used.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"getSession","weight":26,"cookies":false,"type":"","demo":"account\/get-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-session.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/sessions","offline-key":"{sessionId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to get the current device session.","required":true,"type":"string","x-example":"[SESSION_ID]","in":"path"}]},"patch":{"summary":"Update (or renew) a session","operationId":"accountUpdateSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Extend session's expiry to increase it's lifespan. Extending a session is useful when session length is short such as 5 minutes.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateSession","weight":34,"cookies":false,"type":"","demo":"account\/update-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-session.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to update the current device session.","required":true,"type":"string","x-example":"[SESSION_ID]","in":"path"}]},"delete":{"summary":"Delete session","operationId":"accountDeleteSession","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Logout the user. Use 'current' as the session ID to logout on this device, use a session ID to logout on another device. If you're looking to logout the user on all devices, use [Delete Sessions](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#deleteSessions) instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSession","weight":33,"cookies":false,"type":"","demo":"account\/delete-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-session.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to delete the current device session.","required":true,"type":"string","x-example":"[SESSION_ID]","in":"path"}]}},"\/account\/status":{"patch":{"summary":"Update status","operationId":"accountUpdateStatus","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateStatus","weight":32,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/account\/targets\/push":{"post":{"summary":"Create a push target","operationId":"accountCreatePushTarget","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"201":{"description":"Target","schema":{"$ref":"#\/definitions\/target"}}},"x-appwrite":{"method":"createPushTarget","weight":50,"cookies":false,"type":"","demo":"account\/create-push-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"targetId":{"type":"string","description":"Target ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[TARGET_ID]"},"identifier":{"type":"string","description":"The target identifier (token, email, phone etc.)","default":null,"x-example":"[IDENTIFIER]"},"providerId":{"type":"string","description":"Provider ID. Message will be sent to this target from the specified provider ID. If no provider ID is set the first setup provider will be used.","default":"","x-example":"[PROVIDER_ID]"}},"required":["targetId","identifier"]}}]}},"\/account\/targets\/{targetId}\/push":{"put":{"summary":"Update a push target","operationId":"accountUpdatePushTarget","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"200":{"description":"Target","schema":{"$ref":"#\/definitions\/target"}}},"x-appwrite":{"method":"updatePushTarget","weight":51,"cookies":false,"type":"","demo":"account\/update-push-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"targetId","description":"Target ID.","required":true,"type":"string","x-example":"[TARGET_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"identifier":{"type":"string","description":"The target identifier (token, email, phone etc.)","default":null,"x-example":"[IDENTIFIER]"}},"required":["identifier"]}}]},"delete":{"summary":"Delete a push target","operationId":"accountDeletePushTarget","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deletePushTarget","weight":52,"cookies":false,"type":"","demo":"account\/delete-push-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"targetId","description":"Target ID.","required":true,"type":"string","x-example":"[TARGET_ID]","in":"path"}]}},"\/account\/tokens\/email":{"post":{"summary":"Create email token (OTP)","operationId":"accountCreateEmailToken","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Sends the user an email with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [POST \/v1\/account\/sessions\/token](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createSession) endpoint to complete the login process. The secret sent to the user's email is valid for 15 minutes.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createEmailToken","weight":16,"cookies":false,"type":"","demo":"account\/create-email-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-token-email.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"phrase":{"type":"boolean","description":"Toggle for security phrase. If enabled, email will be send with a randomly generated phrase and the phrase will also be included in the response. Confirming phrases match increases the security of your authentication flow.","default":false,"x-example":false}},"required":["userId","email"]}}]}},"\/account\/tokens\/magic-url":{"post":{"summary":"Create magic URL token","operationId":"accountCreateMagicURLToken","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Sends the user an email with a secret key for creating a session. If the provided user ID has not been registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [POST \/v1\/account\/sessions\/token](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createSession) endpoint to complete the login process. The link sent to the user's email address is valid for 1 hour. If you are on a mobile device you can leave the URL parameter empty, so that the login completion will be handled by your Appwrite instance by default.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).\n","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createMagicURLToken","weight":15,"cookies":false,"type":"","demo":"account\/create-magic-u-r-l-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-token-magic-url.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"url":{"type":"string","description":"URL to redirect the user back to your app from the magic URL login. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":"","x-example":"https:\/\/example.com"},"phrase":{"type":"boolean","description":"Toggle for security phrase. If enabled, email will be send with a randomly generated phrase and the phrase will also be included in the response. Confirming phrases match increases the security of your authentication flow.","default":false,"x-example":false}},"required":["userId","email"]}}]}},"\/account\/tokens\/phone":{"post":{"summary":"Create phone token","operationId":"accountCreatePhoneToken","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Sends the user an SMS with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [POST \/v1\/account\/sessions\/token](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createSession) endpoint to complete the login process. The secret sent to the user's phone is valid for 15 minutes.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createPhoneToken","weight":19,"cookies":false,"type":"","demo":"account\/create-phone-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-token-phone.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},phone:{param-phone}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"}},"required":["userId","phone"]}}]}},"\/account\/verification":{"post":{"summary":"Create email verification","operationId":"accountCreateVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to send a verification message to your user email address to confirm they are the valid owners of that address. Both the **userId** and **secret** arguments will be passed as query parameters to the URL you have provided to be attached to the verification email. The provided URL should redirect the user back to your app and allow you to complete the verification process by verifying both the **userId** and **secret** parameters. Learn more about how to [complete the verification process](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateVerification). The verification link sent to the user's email address is valid for 7 days.\n\nPlease note that in order to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md), the only valid redirect URLs are the ones from domains you have set when adding your platforms in the console interface.\n","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createVerification","weight":38,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"url":{"type":"string","description":"URL to redirect the user back to your app from the verification email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":null,"x-example":"https:\/\/example.com"}},"required":["url"]}}]},"put":{"summary":"Create email verification (confirmation)","operationId":"accountUpdateVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete the user email verification process. Use both the **userId** and **secret** parameters that were attached to your app URL to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"updateVerification","weight":39,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/account\/verification\/phone":{"post":{"summary":"Create phone verification","operationId":"accountCreatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updatePhone) endpoint. Learn more about how to [complete the verification process](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createPhoneVerification","weight":40,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{userId}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"put":{"summary":"Create phone verification (confirmation)","operationId":"accountUpdatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"updatePhoneVerification","weight":41,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/avatars\/browsers\/{code}":{"get":{"summary":"Get browser icon","operationId":"avatarsGetBrowser","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"You can use this endpoint to show different browser icons to your users. The code argument receives the browser code as it appears in your user [GET \/account\/sessions](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#getSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getBrowser","weight":54,"cookies":false,"type":"location","demo":"avatars\/get-browser.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-browser.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Browser Code.","required":true,"type":"string","x-example":"aa","enum":["aa","an","ch","ci","cm","cr","ff","sf","mf","ps","oi","om","op","on"],"x-enum-name":"Browser","x-enum-keys":["Avant Browser","Android WebView Beta","Google Chrome","Google Chrome (iOS)","Google Chrome (Mobile)","Chromium","Mozilla Firefox","Safari","Mobile Safari","Microsoft Edge","Microsoft Edge (iOS)","Opera Mini","Opera","Opera (Next)"],"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"}]}},"\/avatars\/credit-cards\/{code}":{"get":{"summary":"Get credit card icon","operationId":"avatarsGetCreditCard","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"The credit card endpoint will return you the icon of the credit card provider you need. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getCreditCard","weight":53,"cookies":false,"type":"location","demo":"avatars\/get-credit-card.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-credit-card.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Credit Card Code. Possible values: amex, argencard, cabal, censosud, diners, discover, elo, hipercard, jcb, mastercard, naranja, targeta-shopping, union-china-pay, visa, mir, maestro.","required":true,"type":"string","x-example":"amex","enum":["amex","argencard","cabal","censosud","diners","discover","elo","hipercard","jcb","mastercard","naranja","targeta-shopping","union-china-pay","visa","mir","maestro"],"x-enum-name":"CreditCard","x-enum-keys":["American Express","Argencard","Cabal","Consosud","Diners Club","Discover","Elo","Hipercard","JCB","Mastercard","Naranja","Tarjeta Shopping","Union China Pay","Visa","MIR","Maestro"],"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"}]}},"\/avatars\/favicon":{"get":{"summary":"Get favicon","operationId":"avatarsGetFavicon","consumes":["application\/json"],"produces":["image\/*"],"tags":["avatars"],"description":"Use this endpoint to fetch the favorite icon (AKA favicon) of any remote website URL.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFavicon","weight":57,"cookies":false,"type":"location","demo":"avatars\/get-favicon.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-favicon.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"url","description":"Website URL which you want to fetch the favicon from.","required":true,"type":"string","format":"url","x-example":"https:\/\/example.com","in":"query"}]}},"\/avatars\/flags\/{code}":{"get":{"summary":"Get country flag","operationId":"avatarsGetFlag","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"You can use this endpoint to show different country flags icons to your users. The code argument receives the 2 letter country code. Use width, height and quality arguments to change the output settings. Country codes follow the [ISO 3166-1](https:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFlag","weight":55,"cookies":false,"type":"location","demo":"avatars\/get-flag.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-flag.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Country Code. ISO Alpha-2 country code format.","required":true,"type":"string","x-example":"af","enum":["af","ao","al","ad","ae","ar","am","ag","au","at","az","bi","be","bj","bf","bd","bg","bh","bs","ba","by","bz","bo","br","bb","bn","bt","bw","cf","ca","ch","cl","cn","ci","cm","cd","cg","co","km","cv","cr","cu","cy","cz","de","dj","dm","dk","do","dz","ec","eg","er","es","ee","et","fi","fj","fr","fm","ga","gb","ge","gh","gn","gm","gw","gq","gr","gd","gt","gy","hn","hr","ht","hu","id","in","ie","ir","iq","is","il","it","jm","jo","jp","kz","ke","kg","kh","ki","kn","kr","kw","la","lb","lr","ly","lc","li","lk","ls","lt","lu","lv","ma","mc","md","mg","mv","mx","mh","mk","ml","mt","mm","me","mn","mz","mr","mu","mw","my","na","ne","ng","ni","nl","no","np","nr","nz","om","pk","pa","pe","ph","pw","pg","pl","kp","pt","py","qa","ro","ru","rw","sa","sd","sn","sg","sb","sl","sv","sm","so","rs","ss","st","sr","sk","si","se","sz","sc","sy","td","tg","th","tj","tm","tl","to","tt","tn","tr","tv","tz","ug","ua","uy","us","uz","va","vc","ve","vn","vu","ws","ye","za","zm","zw"],"x-enum-name":"Flag","x-enum-keys":["Afghanistan","Angola","Albania","Andorra","United Arab Emirates","Argentina","Armenia","Antigua and Barbuda","Australia","Austria","Azerbaijan","Burundi","Belgium","Benin","Burkina Faso","Bangladesh","Bulgaria","Bahrain","Bahamas","Bosnia and Herzegovina","Belarus","Belize","Bolivia","Brazil","Barbados","Brunei Darussalam","Bhutan","Botswana","Central African Republic","Canada","Switzerland","Chile","China","C\u00f4te d'Ivoire","Cameroon","Democratic Republic of the Congo","Republic of the Congo","Colombia","Comoros","Cape Verde","Costa Rica","Cuba","Cyprus","Czech Republic","Germany","Djibouti","Dominica","Denmark","Dominican Republic","Algeria","Ecuador","Egypt","Eritrea","Spain","Estonia","Ethiopia","Finland","Fiji","France","Micronesia (Federated States of)","Gabon","United Kingdom","Georgia","Ghana","Guinea","Gambia","Guinea-Bissau","Equatorial Guinea","Greece","Grenada","Guatemala","Guyana","Honduras","Croatia","Haiti","Hungary","Indonesia","India","Ireland","Iran (Islamic Republic of)","Iraq","Iceland","Israel","Italy","Jamaica","Jordan","Japan","Kazakhstan","Kenya","Kyrgyzstan","Cambodia","Kiribati","Saint Kitts and Nevis","South Korea","Kuwait","Lao People's Democratic Republic","Lebanon","Liberia","Libya","Saint Lucia","Liechtenstein","Sri Lanka","Lesotho","Lithuania","Luxembourg","Latvia","Morocco","Monaco","Moldova","Madagascar","Maldives","Mexico","Marshall Islands","North Macedonia","Mali","Malta","Myanmar","Montenegro","Mongolia","Mozambique","Mauritania","Mauritius","Malawi","Malaysia","Namibia","Niger","Nigeria","Nicaragua","Netherlands","Norway","Nepal","Nauru","New Zealand","Oman","Pakistan","Panama","Peru","Philippines","Palau","Papua New Guinea","Poland","North Korea","Portugal","Paraguay","Qatar","Romania","Russia","Rwanda","Saudi Arabia","Sudan","Senegal","Singapore","Solomon Islands","Sierra Leone","El Salvador","San Marino","Somalia","Serbia","South Sudan","Sao Tome and Principe","Suriname","Slovakia","Slovenia","Sweden","Eswatini","Seychelles","Syria","Chad","Togo","Thailand","Tajikistan","Turkmenistan","Timor-Leste","Tonga","Trinidad and Tobago","Tunisia","Turkey","Tuvalu","Tanzania","Uganda","Ukraine","Uruguay","United States","Uzbekistan","Vatican City","Saint Vincent and the Grenadines","Venezuela","Vietnam","Vanuatu","Samoa","Yemen","South Africa","Zambia","Zimbabwe"],"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"}]}},"\/avatars\/image":{"get":{"summary":"Get image from URL","operationId":"avatarsGetImage","consumes":["application\/json"],"produces":["image\/*"],"tags":["avatars"],"description":"Use this endpoint to fetch a remote image URL and crop it to any image size you want. This endpoint is very useful if you need to crop and display remote images in your app or in case you want to make sure a 3rd party image is properly served using a TLS protocol.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getImage","weight":56,"cookies":false,"type":"location","demo":"avatars\/get-image.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-image.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"url","description":"Image URL which you want to crop.","required":true,"type":"string","format":"url","x-example":"https:\/\/example.com","in":"query"},{"name":"width","description":"Resize preview image width, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get user initials","operationId":"avatarsGetInitials","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getInitials","weight":59,"cookies":false,"type":"location","demo":"avatars\/get-initials.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-initials.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"name","description":"Full Name. When empty, current user name or email will be used. Max length: 128 chars.","required":false,"type":"string","x-example":"[NAME]","default":"","in":"query"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":500,"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":500,"in":"query"},{"name":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"type":"string","default":"","in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR code","operationId":"avatarsGetQR","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getQR","weight":58,"cookies":false,"type":"location","demo":"avatars\/get-q-r.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-qr.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"text","description":"Plain text to be converted to QR code image.","required":true,"type":"string","x-example":"[TEXT]","in":"query"},{"name":"size","description":"QR code size. Pass an integer between 1 to 1000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":1,"default":400,"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"type":"integer","format":"int32","x-example":0,"default":1,"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"type":"boolean","x-example":false,"default":false,"in":"query"}]}},"\/console\/assistant":{"post":{"summary":"Ask Query","operationId":"assistantChat","consumes":["application\/json"],"produces":["text\/plain"],"tags":["assistant"],"description":"","responses":{"200":{"description":"File","schema":{"type":"file"}}},"x-appwrite":{"method":"chat","weight":304,"cookies":false,"type":"","demo":"assistant\/chat.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/assistant\/chat.md","rate-limit":15,"rate-time":3600,"rate-key":"userId:{userId}","scope":"assistant.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"prompt":{"type":"string","description":"Prompt. A string containing questions asked to the AI assistant.","default":null,"x-example":"[PROMPT]"}},"required":["prompt"]}}]}},"\/console\/variables":{"get":{"summary":"Get variables","operationId":"consoleVariables","consumes":["application\/json"],"produces":["application\/json"],"tags":["console"],"description":"Get all Environment Variables that are relevant for the console.","responses":{"200":{"description":"Console Variables","schema":{"$ref":"#\/definitions\/consoleVariables"}}},"x-appwrite":{"method":"variables","weight":303,"cookies":false,"type":"","demo":"console\/variables.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/console\/variables.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/databases":{"get":{"summary":"List databases","operationId":"databasesList","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all databases from the current Appwrite project. You can use the search parameter to filter your results.","responses":{"200":{"description":"Databases List","schema":{"$ref":"#\/definitions\/databaseList"}}},"x-appwrite":{"method":"list","weight":64,"cookies":false,"type":"","demo":"databases\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create database","operationId":"databasesCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Database.\n","responses":{"201":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"create","weight":63,"cookies":false,"type":"","demo":"databases\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"databaseId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[DATABASE_ID]"},"name":{"type":"string","description":"Database name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Is the database enabled? When set to 'disabled', users cannot access the database but Server SDKs with an API key can still read and write to the database. No data is lost when this is toggled.","default":true,"x-example":false}},"required":["databaseId","name"]}}]}},"\/databases\/usage":{"get":{"summary":"Get usage stats for the database","operationId":"databasesGetUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"UsageDatabases","schema":{"$ref":"#\/definitions\/usageDatabases"}}},"x-appwrite":{"method":"getUsage","weight":108,"cookies":false,"type":"","demo":"databases\/get-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"`Date range.","required":false,"type":"string","x-example":"24h","enum":["24h","30d","90d"],"x-enum-name":"DatabaseUsageRange","x-enum-keys":["Twenty Four Hours","Thirty Days","Ninety Days"],"default":"30d","in":"query"}]}},"\/databases\/{databaseId}":{"get":{"summary":"Get database","operationId":"databasesGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a database by its unique ID. This endpoint response returns a JSON object with the database metadata.","responses":{"200":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"get","weight":65,"cookies":false,"type":"","demo":"databases\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"}]},"put":{"summary":"Update database","operationId":"databasesUpdate","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a database by its unique ID.","responses":{"200":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"update","weight":67,"cookies":false,"type":"","demo":"databases\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Database name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Is database enabled? When set to 'disabled', users cannot access the database but Server SDKs with an API key can still read and write to the database. No data is lost when this is toggled.","default":true,"x-example":false}},"required":["name"]}}]},"delete":{"summary":"Delete database","operationId":"databasesDelete","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a database by its unique ID. Only API keys with with databases.write scope can delete a database.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":68,"cookies":false,"type":"","demo":"databases\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections":{"get":{"summary":"List collections","operationId":"databasesListCollections","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all collections that belong to the provided databaseId. You can use the search parameter to filter your results.","responses":{"200":{"description":"Collections List","schema":{"$ref":"#\/definitions\/collectionList"}}},"x-appwrite":{"method":"listCollections","weight":70,"cookies":false,"type":"","demo":"databases\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, documentSecurity","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create collection","operationId":"databasesCreateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Collection. Before using this route, you should create a new database resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"createCollection","weight":69,"cookies":false,"type":"","demo":"databases\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permissions strings. By default, no user is granted with any permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":false,"x-example":false},"enabled":{"type":"boolean","description":"Is collection enabled? When set to 'disabled', users cannot access the collection but Server SDKs with and API key can still read and write to the collection. No data is lost when this is toggled.","default":true,"x-example":false}},"required":["collectionId","name"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}":{"get":{"summary":"Get collection","operationId":"databasesGetCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a collection by its unique ID. This endpoint response returns a JSON object with the collection metadata.","responses":{"200":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"getCollection","weight":71,"cookies":false,"type":"","demo":"databases\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]},"put":{"summary":"Update collection","operationId":"databasesUpdateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a collection by its unique ID.","responses":{"200":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"updateCollection","weight":73,"cookies":false,"type":"","demo":"databases\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":false,"x-example":false},"enabled":{"type":"boolean","description":"Is collection enabled? When set to 'disabled', users cannot access the collection but Server SDKs with and API key can still read and write to the collection. No data is lost when this is toggled.","default":true,"x-example":false}},"required":["name"]}}]},"delete":{"summary":"Delete collection","operationId":"databasesDeleteCollection","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a collection by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteCollection","weight":74,"cookies":false,"type":"","demo":"databases\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes":{"get":{"summary":"List attributes","operationId":"databasesListAttributes","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Attributes List","schema":{"$ref":"#\/definitions\/attributeList"}}},"x-appwrite":{"method":"listAttributes","weight":85,"cookies":false,"type":"","demo":"databases\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: key, type, size, required, array, status, error","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create boolean attribute","operationId":"databasesCreateBooleanAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a boolean attribute.\n","responses":{"202":{"description":"AttributeBoolean","schema":{"$ref":"#\/definitions\/attributeBoolean"}}},"x-appwrite":{"method":"createBooleanAttribute","weight":82,"cookies":false,"type":"","demo":"databases\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":false},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean\/{key}":{"patch":{"summary":"Update boolean attribute","operationId":"databasesUpdateBooleanAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"","responses":{"200":{"description":"AttributeBoolean","schema":{"$ref":"#\/definitions\/attributeBoolean"}}},"x-appwrite":{"method":"updateBooleanAttribute","weight":94,"cookies":false,"type":"","demo":"databases\/update-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":false,"x-nullable":true}},"required":["required","default"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/datetime":{"post":{"summary":"Create datetime attribute","operationId":"databasesCreateDatetimeAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"AttributeDatetime","schema":{"$ref":"#\/definitions\/attributeDatetime"}}},"x-appwrite":{"method":"createDatetimeAttribute","weight":83,"cookies":false,"type":"","demo":"databases\/create-datetime-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-datetime-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for the attribute in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/datetime\/{key}":{"patch":{"summary":"Update dateTime attribute","operationId":"databasesUpdateDatetimeAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"","responses":{"200":{"description":"AttributeDatetime","schema":{"$ref":"#\/definitions\/attributeDatetime"}}},"x-appwrite":{"method":"updateDatetimeAttribute","weight":95,"cookies":false,"type":"","demo":"databases\/update-datetime-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-datetime-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null,"x-nullable":true}},"required":["required","default"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create email attribute","operationId":"databasesCreateEmailAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create an email attribute.\n","responses":{"202":{"description":"AttributeEmail","schema":{"$ref":"#\/definitions\/attributeEmail"}}},"x-appwrite":{"method":"createEmailAttribute","weight":76,"cookies":false,"type":"","demo":"databases\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"email@example.com"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/email\/{key}":{"patch":{"summary":"Update email attribute","operationId":"databasesUpdateEmailAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Update an email attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeEmail","schema":{"$ref":"#\/definitions\/attributeEmail"}}},"x-appwrite":{"method":"updateEmailAttribute","weight":88,"cookies":false,"type":"","demo":"databases\/update-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"email@example.com","x-nullable":true}},"required":["required","default"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create enum attribute","operationId":"databasesCreateEnumAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"AttributeEnum","schema":{"$ref":"#\/definitions\/attributeEnum"}}},"x-appwrite":{"method":"createEnumAttribute","weight":77,"cookies":false,"type":"","demo":"databases\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"elements":{"type":"array","description":"Array of elements in enumerated type. Uses length of longest element to determine size. Maximum of 100 elements are allowed, each 255 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","elements","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/enum\/{key}":{"patch":{"summary":"Update enum attribute","operationId":"databasesUpdateEnumAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Update an enum attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeEnum","schema":{"$ref":"#\/definitions\/attributeEnum"}}},"x-appwrite":{"method":"updateEnumAttribute","weight":89,"cookies":false,"type":"","demo":"databases\/update-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-enum-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"elements":{"type":"array","description":"Array of elements in enumerated type. Uses length of longest element to determine size. Maximum of 100 elements are allowed, each 255 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"[DEFAULT]","x-nullable":true}},"required":["elements","required","default"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create float attribute","operationId":"databasesCreateFloatAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeFloat","schema":{"$ref":"#\/definitions\/attributeFloat"}}},"x-appwrite":{"method":"createFloatAttribute","weight":81,"cookies":false,"type":"","demo":"databases\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"min":{"type":"number","description":"Minimum value to enforce on new documents","default":null,"x-example":null},"max":{"type":"number","description":"Maximum value to enforce on new documents","default":null,"x-example":null},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/float\/{key}":{"patch":{"summary":"Update float attribute","operationId":"databasesUpdateFloatAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Update a float attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeFloat","schema":{"$ref":"#\/definitions\/attributeFloat"}}},"x-appwrite":{"method":"updateFloatAttribute","weight":93,"cookies":false,"type":"","demo":"databases\/update-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"min":{"type":"number","description":"Minimum value to enforce on new documents","default":null,"x-example":null},"max":{"type":"number","description":"Maximum value to enforce on new documents","default":null,"x-example":null},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null,"x-nullable":true}},"required":["required","min","max","default"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create integer attribute","operationId":"databasesCreateIntegerAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeInteger","schema":{"$ref":"#\/definitions\/attributeInteger"}}},"x-appwrite":{"method":"createIntegerAttribute","weight":80,"cookies":false,"type":"","demo":"databases\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"min":{"type":"integer","description":"Minimum value to enforce on new documents","default":null,"x-example":null},"max":{"type":"integer","description":"Maximum value to enforce on new documents","default":null,"x-example":null},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/integer\/{key}":{"patch":{"summary":"Update integer attribute","operationId":"databasesUpdateIntegerAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Update an integer attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeInteger","schema":{"$ref":"#\/definitions\/attributeInteger"}}},"x-appwrite":{"method":"updateIntegerAttribute","weight":92,"cookies":false,"type":"","demo":"databases\/update-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"min":{"type":"integer","description":"Minimum value to enforce on new documents","default":null,"x-example":null},"max":{"type":"integer","description":"Maximum value to enforce on new documents","default":null,"x-example":null},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null,"x-nullable":true}},"required":["required","min","max","default"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP address attribute","operationId":"databasesCreateIpAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create IP address attribute.\n","responses":{"202":{"description":"AttributeIP","schema":{"$ref":"#\/definitions\/attributeIp"}}},"x-appwrite":{"method":"createIpAttribute","weight":78,"cookies":false,"type":"","demo":"databases\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/ip\/{key}":{"patch":{"summary":"Update IP address attribute","operationId":"databasesUpdateIpAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Update an ip attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeIP","schema":{"$ref":"#\/definitions\/attributeIp"}}},"x-appwrite":{"method":"updateIpAttribute","weight":90,"cookies":false,"type":"","demo":"databases\/update-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null,"x-nullable":true}},"required":["required","default"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/relationship":{"post":{"summary":"Create relationship attribute","operationId":"databasesCreateRelationshipAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create relationship attribute. [Learn more about relationship attributes](https:\/\/appwrite.io\/docs\/databases-relationships#relationship-attributes).\n","responses":{"202":{"description":"AttributeRelationship","schema":{"$ref":"#\/definitions\/attributeRelationship"}}},"x-appwrite":{"method":"createRelationshipAttribute","weight":84,"cookies":false,"type":"","demo":"databases\/create-relationship-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-relationship-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"relatedCollectionId":{"type":"string","description":"Related Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","default":null,"x-example":"[RELATED_COLLECTION_ID]"},"type":{"type":"string","description":"Relation type","default":null,"x-example":"oneToOne","enum":["oneToOne","manyToOne","manyToMany","oneToMany"],"x-enum-name":"RelationshipType","x-enum-keys":[]},"twoWay":{"type":"boolean","description":"Is Two Way?","default":false,"x-example":false},"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"twoWayKey":{"type":"string","description":"Two Way Attribute Key.","default":null,"x-example":null},"onDelete":{"type":"string","description":"Constraints option","default":"restrict","x-example":"cascade","enum":["cascade","restrict","setNull"],"x-enum-name":"RelationMutate","x-enum-keys":[]}},"required":["relatedCollectionId","type"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create string attribute","operationId":"databasesCreateStringAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a string attribute.\n","responses":{"202":{"description":"AttributeString","schema":{"$ref":"#\/definitions\/attributeString"}}},"x-appwrite":{"method":"createStringAttribute","weight":75,"cookies":false,"type":"","demo":"databases\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"size":{"type":"integer","description":"Attribute size for text attributes, in number of characters.","default":null,"x-example":1},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false},"encrypt":{"type":"boolean","description":"Toggle encryption for the attribute. Encryption enhances security by not storing any plain text values in the database. However, encrypted attributes cannot be queried.","default":false,"x-example":false}},"required":["key","size","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/string\/{key}":{"patch":{"summary":"Update string attribute","operationId":"databasesUpdateStringAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Update a string attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeString","schema":{"$ref":"#\/definitions\/attributeString"}}},"x-appwrite":{"method":"updateStringAttribute","weight":87,"cookies":false,"type":"","demo":"databases\/update-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"[DEFAULT]","x-nullable":true}},"required":["required","default"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL attribute","operationId":"databasesCreateUrlAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a URL attribute.\n","responses":{"202":{"description":"AttributeURL","schema":{"$ref":"#\/definitions\/attributeUrl"}}},"x-appwrite":{"method":"createUrlAttribute","weight":79,"cookies":false,"type":"","demo":"databases\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"https:\/\/example.com"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url\/{key}":{"patch":{"summary":"Update URL attribute","operationId":"databasesUpdateUrlAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Update an url attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeURL","schema":{"$ref":"#\/definitions\/attributeUrl"}}},"x-appwrite":{"method":"updateUrlAttribute","weight":91,"cookies":false,"type":"","demo":"databases\/update-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"https:\/\/example.com","x-nullable":true}},"required":["required","default"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get attribute","operationId":"databasesGetAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, or AttributeDatetime, or AttributeRelationship, or AttributeString","schema":{"x-oneOf":[{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeRelationship"},{"$ref":"#\/definitions\/attributeString"}]}}},"x-appwrite":{"method":"getAttribute","weight":86,"cookies":false,"type":"","demo":"databases\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"}]},"delete":{"summary":"Delete attribute","operationId":"databasesDeleteAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":97,"cookies":false,"type":"","demo":"databases\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/{key}\/relationship":{"patch":{"summary":"Update relationship attribute","operationId":"databasesUpdateRelationshipAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Update relationship attribute. [Learn more about relationship attributes](https:\/\/appwrite.io\/docs\/databases-relationships#relationship-attributes).\n","responses":{"200":{"description":"AttributeRelationship","schema":{"$ref":"#\/definitions\/attributeRelationship"}}},"x-appwrite":{"method":"updateRelationshipAttribute","weight":96,"cookies":false,"type":"","demo":"databases\/update-relationship-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-relationship-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"onDelete":{"type":"string","description":"Constraints option","default":null,"x-example":"cascade","enum":["cascade","restrict","setNull"],"x-enum-name":"RelationMutate","x-enum-keys":[]}}}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List documents","operationId":"databasesListDocuments","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","schema":{"$ref":"#\/definitions\/documentList"}}},"x-appwrite":{"method":"listDocuments","weight":103,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"post":{"summary":"Create document","operationId":"databasesCreateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"createDocument","weight":102,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","default":{},"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, only the current user is granted all permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get document","operationId":"databasesGetDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"getDocument","weight":104,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"patch":{"summary":"Update document","operationId":"databasesUpdateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"updateDocument","weight":106,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","default":[],"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete document","operationId":"databasesDeleteDocument","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":107,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}\/logs":{"get":{"summary":"List document logs","operationId":"databasesListDocumentLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get the document activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listDocumentLogs","weight":105,"cookies":false,"type":"","demo":"databases\/list-document-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes":{"get":{"summary":"List indexes","operationId":"databasesListIndexes","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Indexes List","schema":{"$ref":"#\/definitions\/indexList"}}},"x-appwrite":{"method":"listIndexes","weight":99,"cookies":false,"type":"","demo":"databases\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: key, type, status, attributes, error","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"post":{"summary":"Create index","operationId":"databasesCreateIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"createIndex","weight":98,"cookies":false,"type":"","demo":"databases\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Index Key.","default":null,"x-example":null},"type":{"type":"string","description":"Index type.","default":null,"x-example":"key","enum":["key","fulltext","unique","spatial"],"x-enum-name":"IndexType","x-enum-keys":[]},"attributes":{"type":"array","description":"Array of attributes to index. Maximum of 100 attributes are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders. Maximum of 100 orders are allowed.","default":[],"x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get index","operationId":"databasesGetIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"getIndex","weight":100,"cookies":false,"type":"","demo":"databases\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Index Key.","required":true,"type":"string","in":"path"}]},"delete":{"summary":"Delete index","operationId":"databasesDeleteIndex","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":101,"cookies":false,"type":"","demo":"databases\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Index Key.","required":true,"type":"string","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/logs":{"get":{"summary":"List collection logs","operationId":"databasesListCollectionLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get the collection activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listCollectionLogs","weight":72,"cookies":false,"type":"","demo":"databases\/list-collection-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/usage":{"get":{"summary":"Get usage stats for a collection","operationId":"databasesGetCollectionUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"UsageCollection","schema":{"$ref":"#\/definitions\/usageCollection"}}},"x-appwrite":{"method":"getCollectionUsage","weight":110,"cookies":false,"type":"","demo":"databases\/get-collection-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","enum":["24h","30d","90d"],"x-enum-name":"DatabaseUsageRange","x-enum-keys":["Twenty Four Hours","Thirty Days","Ninety Days"],"default":"30d","in":"query"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/databases\/{databaseId}\/logs":{"get":{"summary":"List database logs","operationId":"databasesListLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get the database activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listLogs","weight":66,"cookies":false,"type":"","demo":"databases\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/databases\/{databaseId}\/usage":{"get":{"summary":"Get usage stats for the database","operationId":"databasesGetDatabaseUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"UsageDatabase","schema":{"$ref":"#\/definitions\/usageDatabase"}}},"x-appwrite":{"method":"getDatabaseUsage","weight":109,"cookies":false,"type":"","demo":"databases\/get-database-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"range","description":"`Date range.","required":false,"type":"string","x-example":"24h","enum":["24h","30d","90d"],"x-enum-name":"DatabaseUsageRange","x-enum-keys":["Twenty Four Hours","Thirty Days","Ninety Days"],"default":"30d","in":"query"}]}},"\/functions":{"get":{"summary":"List functions","operationId":"functionsList","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the project's functions. You can use the query params to filter your results.","responses":{"200":{"description":"Functions List","schema":{"$ref":"#\/definitions\/functionList"}}},"x-appwrite":{"method":"list","weight":266,"cookies":false,"type":"","demo":"functions\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-functions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, runtime, deployment, schedule, scheduleNext, schedulePrevious, timeout, entrypoint, commands, installationId","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create function","operationId":"functionsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function. You can pass a list of [permissions](https:\/\/appwrite.io\/docs\/permissions) to allow different project users or team with access to execute the function using the client API.","responses":{"201":{"description":"Function","schema":{"$ref":"#\/definitions\/function"}}},"x-appwrite":{"method":"create","weight":265,"cookies":false,"type":"","demo":"functions\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"functionId":{"type":"string","description":"Function ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[FUNCTION_ID]"},"name":{"type":"string","description":"Function name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"runtime":{"type":"string","description":"Execution runtime.","default":null,"x-example":"node-18.0","enum":["node-18.0","php-8.0","ruby-3.1","python-3.9"],"x-enum-name":null,"x-enum-keys":[]},"execute":{"type":"array","description":"An array of role strings with execution permissions. By default no user is granted with any execute permissions. [learn more about roles](https:\/\/appwrite.io\/docs\/permissions#permission-roles). Maximum of 100 roles are allowed, each 64 characters long.","default":[],"x-example":"[\"any\"]","items":{"type":"string"}},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","default":[],"x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","default":"","x-example":null},"timeout":{"type":"integer","description":"Function maximum execution time in seconds.","default":15,"x-example":1},"enabled":{"type":"boolean","description":"Is function enabled? When set to 'disabled', users cannot access the function but Server SDKs with and API key can still access the function. No data is lost when this is toggled.","default":true,"x-example":false},"logging":{"type":"boolean","description":"Whether executions will be logged. When set to false, executions will not be logged, but will reduce resource used by your Appwrite project.","default":true,"x-example":false},"entrypoint":{"type":"string","description":"Entrypoint File. This path is relative to the \"providerRootDirectory\".","default":"","x-example":"[ENTRYPOINT]"},"commands":{"type":"string","description":"Build Commands.","default":"","x-example":"[COMMANDS]"},"installationId":{"type":"string","description":"Appwrite Installation ID for VCS (Version Control System) deployment.","default":"","x-example":"[INSTALLATION_ID]"},"providerRepositoryId":{"type":"string","description":"Repository ID of the repo linked to the function.","default":"","x-example":"[PROVIDER_REPOSITORY_ID]"},"providerBranch":{"type":"string","description":"Production branch for the repo linked to the function.","default":"","x-example":"[PROVIDER_BRANCH]"},"providerSilentMode":{"type":"boolean","description":"Is the VCS (Version Control System) connection in silent mode for the repo linked to the function? In silent mode, comments will not be made on commits and pull requests.","default":false,"x-example":false},"providerRootDirectory":{"type":"string","description":"Path to function code in the linked repo.","default":"","x-example":"[PROVIDER_ROOT_DIRECTORY]"},"templateRepository":{"type":"string","description":"Repository name of the template.","default":"","x-example":"[TEMPLATE_REPOSITORY]"},"templateOwner":{"type":"string","description":"The name of the owner of the template.","default":"","x-example":"[TEMPLATE_OWNER]"},"templateRootDirectory":{"type":"string","description":"Path to function code in the template repo.","default":"","x-example":"[TEMPLATE_ROOT_DIRECTORY]"},"templateBranch":{"type":"string","description":"Production branch for the repo linked to the function template.","default":"","x-example":"[TEMPLATE_BRANCH]"}},"required":["functionId","name","runtime"]}}]}},"\/functions\/runtimes":{"get":{"summary":"List runtimes","operationId":"functionsListRuntimes","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all runtimes that are currently active on your instance.","responses":{"200":{"description":"Runtimes List","schema":{"$ref":"#\/definitions\/runtimeList"}}},"x-appwrite":{"method":"listRuntimes","weight":267,"cookies":false,"type":"","demo":"functions\/list-runtimes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-runtimes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/functions\/usage":{"get":{"summary":"Get functions usage","operationId":"functionsGetUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"","responses":{"200":{"description":"UsageFunctions","schema":{"$ref":"#\/definitions\/usageFunctions"}}},"x-appwrite":{"method":"getUsage","weight":270,"cookies":false,"type":"","demo":"functions\/get-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","enum":["24h","30d","90d"],"x-enum-name":"FunctionUsageRange","x-enum-keys":["Twenty Four Hours","Thirty Days","Ninety Days"],"default":"30d","in":"query"}]}},"\/functions\/{functionId}":{"get":{"summary":"Get function","operationId":"functionsGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a function by its unique ID.","responses":{"200":{"description":"Function","schema":{"$ref":"#\/definitions\/function"}}},"x-appwrite":{"method":"get","weight":268,"cookies":false,"type":"","demo":"functions\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"}]},"put":{"summary":"Update function","operationId":"functionsUpdate","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Update function by its unique ID.","responses":{"200":{"description":"Function","schema":{"$ref":"#\/definitions\/function"}}},"x-appwrite":{"method":"update","weight":271,"cookies":false,"type":"","demo":"functions\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Function name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"runtime":{"type":"string","description":"Execution runtime.","default":"","x-example":"node-18.0","enum":["node-18.0","php-8.0","ruby-3.1","python-3.9"],"x-enum-name":null,"x-enum-keys":[]},"execute":{"type":"array","description":"An array of role strings with execution permissions. By default no user is granted with any execute permissions. [learn more about roles](https:\/\/appwrite.io\/docs\/permissions#permission-roles). Maximum of 100 roles are allowed, each 64 characters long.","default":[],"x-example":"[\"any\"]","items":{"type":"string"}},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","default":[],"x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","default":"","x-example":null},"timeout":{"type":"integer","description":"Maximum execution time in seconds.","default":15,"x-example":1},"enabled":{"type":"boolean","description":"Is function enabled? When set to 'disabled', users cannot access the function but Server SDKs with and API key can still access the function. No data is lost when this is toggled.","default":true,"x-example":false},"logging":{"type":"boolean","description":"Whether executions will be logged. When set to false, executions will not be logged, but will reduce resource used by your Appwrite project.","default":true,"x-example":false},"entrypoint":{"type":"string","description":"Entrypoint File. This path is relative to the \"providerRootDirectory\".","default":"","x-example":"[ENTRYPOINT]"},"commands":{"type":"string","description":"Build Commands.","default":"","x-example":"[COMMANDS]"},"installationId":{"type":"string","description":"Appwrite Installation ID for VCS (Version Controle System) deployment.","default":"","x-example":"[INSTALLATION_ID]"},"providerRepositoryId":{"type":"string","description":"Repository ID of the repo linked to the function","default":"","x-example":"[PROVIDER_REPOSITORY_ID]"},"providerBranch":{"type":"string","description":"Production branch for the repo linked to the function","default":"","x-example":"[PROVIDER_BRANCH]"},"providerSilentMode":{"type":"boolean","description":"Is the VCS (Version Control System) connection in silent mode for the repo linked to the function? In silent mode, comments will not be made on commits and pull requests.","default":false,"x-example":false},"providerRootDirectory":{"type":"string","description":"Path to function code in the linked repo.","default":"","x-example":"[PROVIDER_ROOT_DIRECTORY]"}},"required":["name"]}}]},"delete":{"summary":"Delete function","operationId":"functionsDelete","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"Delete a function by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":274,"cookies":false,"type":"","demo":"functions\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"}]}},"\/functions\/{functionId}\/deployments":{"get":{"summary":"List deployments","operationId":"functionsListDeployments","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the project's code deployments. You can use the query params to filter your results.","responses":{"200":{"description":"Deployments List","schema":{"$ref":"#\/definitions\/deploymentList"}}},"x-appwrite":{"method":"listDeployments","weight":276,"cookies":false,"type":"","demo":"functions\/list-deployments.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-deployments.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: size, buildId, activate, entrypoint, commands","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create deployment","operationId":"functionsCreateDeployment","consumes":["multipart\/form-data"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function code deployment. Use this endpoint to upload a new version of your code function. To execute your newly uploaded code, you'll need to update the function's deployment to use your new deployment UID.\n\nThis endpoint accepts a tar.gz file compressed with your code. Make sure to include any dependencies your code has within the compressed file. You can learn more about code packaging in the [Appwrite Cloud Functions tutorial](https:\/\/appwrite.io\/docs\/functions).\n\nUse the \"command\" param to set the entrypoint used to execute your code.","responses":{"202":{"description":"Deployment","schema":{"$ref":"#\/definitions\/deployment"}}},"x-appwrite":{"method":"createDeployment","weight":275,"cookies":false,"type":"","demo":"functions\/create-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":true,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"entrypoint","description":"Entrypoint File.","required":false,"type":"string","x-example":"[ENTRYPOINT]","in":"formData"},{"name":"commands","description":"Build Commands.","required":false,"type":"string","x-example":"[COMMANDS]","in":"formData"},{"name":"code","description":"Gzip file with your code package. When used with the Appwrite CLI, pass the path to your code directory, and the CLI will automatically package your code. Use a path that is within the current directory.","required":true,"type":"file","in":"formData"},{"name":"activate","description":"Automatically activate the deployment when it is finished building.","required":true,"type":"boolean","x-example":false,"in":"formData"}]}},"\/functions\/{functionId}\/deployments\/{deploymentId}":{"get":{"summary":"Get deployment","operationId":"functionsGetDeployment","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a code deployment by its unique ID.","responses":{"200":{"description":"Deployment","schema":{"$ref":"#\/definitions\/deployment"}}},"x-appwrite":{"method":"getDeployment","weight":277,"cookies":false,"type":"","demo":"functions\/get-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"type":"string","x-example":"[DEPLOYMENT_ID]","in":"path"}]},"patch":{"summary":"Update function deployment","operationId":"functionsUpdateDeployment","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Update the function code deployment ID using the unique function ID. Use this endpoint to switch the code deployment that should be executed by the execution endpoint.","responses":{"200":{"description":"Function","schema":{"$ref":"#\/definitions\/function"}}},"x-appwrite":{"method":"updateDeployment","weight":273,"cookies":false,"type":"","demo":"functions\/update-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-function-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"type":"string","x-example":"[DEPLOYMENT_ID]","in":"path"}]},"delete":{"summary":"Delete deployment","operationId":"functionsDeleteDeployment","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"Delete a code deployment by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDeployment","weight":278,"cookies":false,"type":"","demo":"functions\/delete-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"type":"string","x-example":"[DEPLOYMENT_ID]","in":"path"}]}},"\/functions\/{functionId}\/deployments\/{deploymentId}\/builds\/{buildId}":{"post":{"summary":"Create build","operationId":"functionsCreateBuild","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"Create a new build for an Appwrite Function deployment. This endpoint can be used to retry a failed build.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"createBuild","weight":279,"cookies":false,"type":"","demo":"functions\/create-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"type":"string","x-example":"[DEPLOYMENT_ID]","in":"path"},{"name":"buildId","description":"Build unique ID.","required":true,"type":"string","x-example":"[BUILD_ID]","in":"path"}]}},"\/functions\/{functionId}\/deployments\/{deploymentId}\/download":{"get":{"summary":"Download Deployment","operationId":"functionsDownloadDeployment","consumes":["application\/json"],"produces":["*\/*"],"tags":["functions"],"description":"Get a Deployment's contents by its unique ID. This endpoint supports range requests for partial or streaming file download.","responses":{"200":{"description":"File","schema":{"type":"file"}}},"x-appwrite":{"method":"downloadDeployment","weight":272,"cookies":false,"type":"location","demo":"functions\/download-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/download-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"type":"string","x-example":"[DEPLOYMENT_ID]","in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List executions","operationId":"functionsListExecutions","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","schema":{"$ref":"#\/definitions\/executionList"}}},"x-appwrite":{"method":"listExecutions","weight":281,"cookies":false,"type":"","demo":"functions\/list-executions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-executions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, responseStatusCode, duration","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create execution","operationId":"functionsCreateExecution","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","schema":{"$ref":"#\/definitions\/execution"}}},"x-appwrite":{"method":"createExecution","weight":280,"cookies":false,"type":"","demo":"functions\/create-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-execution.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"body":{"type":"string","description":"HTTP body of execution. Default value is empty string.","default":"","x-example":"[BODY]"},"async":{"type":"boolean","description":"Execute code in the background. Default value is false.","default":false,"x-example":false},"path":{"type":"string","description":"HTTP path of execution. Path can include query params. Default value is \/","default":"\/","x-example":"[PATH]"},"method":{"type":"string","description":"HTTP method of execution. Default value is GET.","default":"POST","x-example":"GET","enum":["GET","POST","PUT","PATCH","DELETE","OPTIONS"],"x-enum-name":"ExecutionMethod","x-enum-keys":[]},"headers":{"type":"object","description":"HTTP headers of execution. Defaults to empty.","default":[],"x-example":"{}"}}}}]}},"\/functions\/{functionId}\/executions\/{executionId}":{"get":{"summary":"Get execution","operationId":"functionsGetExecution","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a function execution log by its unique ID.","responses":{"200":{"description":"Execution","schema":{"$ref":"#\/definitions\/execution"}}},"x-appwrite":{"method":"getExecution","weight":282,"cookies":false,"type":"","demo":"functions\/get-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-execution.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"executionId","description":"Execution ID.","required":true,"type":"string","x-example":"[EXECUTION_ID]","in":"path"}]}},"\/functions\/{functionId}\/usage":{"get":{"summary":"Get function usage","operationId":"functionsGetFunctionUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"","responses":{"200":{"description":"UsageFunction","schema":{"$ref":"#\/definitions\/usageFunction"}}},"x-appwrite":{"method":"getFunctionUsage","weight":269,"cookies":false,"type":"","demo":"functions\/get-function-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","enum":["24h","30d","90d"],"x-enum-name":"FunctionUsageRange","x-enum-keys":["Twenty Four Hours","Thirty Days","Ninety Days"],"default":"30d","in":"query"}]}},"\/functions\/{functionId}\/variables":{"get":{"summary":"List variables","operationId":"functionsListVariables","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all variables of a specific function.","responses":{"200":{"description":"Variables List","schema":{"$ref":"#\/definitions\/variableList"}}},"x-appwrite":{"method":"listVariables","weight":284,"cookies":false,"type":"","demo":"functions\/list-variables.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-variables.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"}]},"post":{"summary":"Create variable","operationId":"functionsCreateVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function environment variable. These variables can be accessed in the function at runtime as environment variables.","responses":{"201":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"createVariable","weight":283,"cookies":false,"type":"","demo":"functions\/create-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","default":null,"x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","default":null,"x-example":"[VALUE]"}},"required":["key","value"]}}]}},"\/functions\/{functionId}\/variables\/{variableId}":{"get":{"summary":"Get variable","operationId":"functionsGetVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a variable by its unique ID.","responses":{"200":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"getVariable","weight":285,"cookies":false,"type":"","demo":"functions\/get-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"}]},"put":{"summary":"Update variable","operationId":"functionsUpdateVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Update variable by its unique ID.","responses":{"200":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"updateVariable","weight":286,"cookies":false,"type":"","demo":"functions\/update-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","default":null,"x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","default":null,"x-example":"[VALUE]"}},"required":["key"]}}]},"delete":{"summary":"Delete variable","operationId":"functionsDeleteVariable","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"Delete a variable by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteVariable","weight":287,"cookies":false,"type":"","demo":"functions\/delete-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"}]}},"\/graphql":{"post":{"summary":"GraphQL endpoint","operationId":"graphqlQuery","consumes":["application\/json"],"produces":["application\/json"],"tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","schema":{"$ref":"#\/definitions\/any"}}},"x-appwrite":{"method":"query","weight":302,"cookies":false,"type":"graphql","demo":"graphql\/query.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"query":{"type":"object","description":"The query or queries to execute.","default":{},"x-example":"{}"}},"required":["query"]}}]}},"\/graphql\/mutation":{"post":{"summary":"GraphQL endpoint","operationId":"graphqlMutation","consumes":["application\/json"],"produces":["application\/json"],"tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","schema":{"$ref":"#\/definitions\/any"}}},"x-appwrite":{"method":"mutation","weight":301,"cookies":false,"type":"graphql","demo":"graphql\/mutation.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"query":{"type":"object","description":"The query or queries to execute.","default":{},"x-example":"{}"}},"required":["query"]}}]}},"\/health":{"get":{"summary":"Get HTTP","operationId":"healthGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite HTTP server is up and responsive.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"get","weight":119,"cookies":false,"type":"","demo":"health\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/anti-virus":{"get":{"summary":"Get antivirus","operationId":"healthGetAntivirus","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite Antivirus server is up and connection is successful.","responses":{"200":{"description":"Health Antivirus","schema":{"$ref":"#\/definitions\/healthAntivirus"}}},"x-appwrite":{"method":"getAntivirus","weight":137,"cookies":false,"type":"","demo":"health\/get-antivirus.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-storage-anti-virus.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/cache":{"get":{"summary":"Get cache","operationId":"healthGetCache","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite in-memory cache servers are up and connection is successful.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"getCache","weight":122,"cookies":false,"type":"","demo":"health\/get-cache.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-cache.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/db":{"get":{"summary":"Get DB","operationId":"healthGetDB","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite database servers are up and connection is successful.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"getDB","weight":121,"cookies":false,"type":"","demo":"health\/get-d-b.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-db.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/pubsub":{"get":{"summary":"Get pubsub","operationId":"healthGetPubSub","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite pub-sub servers are up and connection is successful.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"getPubSub","weight":124,"cookies":false,"type":"","demo":"health\/get-pub-sub.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-pubsub.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/queue":{"get":{"summary":"Get queue","operationId":"healthGetQueue","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite queue messaging servers are up and connection is successful.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"getQueue","weight":123,"cookies":false,"type":"","demo":"health\/get-queue.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/queue\/builds":{"get":{"summary":"Get builds queue","operationId":"healthGetQueueBuilds","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of builds that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueBuilds","weight":129,"cookies":false,"type":"","demo":"health\/get-queue-builds.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-builds.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/certificates":{"get":{"summary":"Get certificates queue","operationId":"healthGetQueueCertificates","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of certificates that are waiting to be issued against [Letsencrypt](https:\/\/letsencrypt.org\/) in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueCertificates","weight":128,"cookies":false,"type":"","demo":"health\/get-queue-certificates.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-certificates.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/databases":{"get":{"summary":"Get databases queue","operationId":"healthGetQueueDatabases","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of database changes that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueDatabases","weight":130,"cookies":false,"type":"","demo":"health\/get-queue-databases.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-databases.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"name","description":"Queue name for which to check the queue size","required":false,"type":"string","x-example":"[NAME]","default":"database_db_main","in":"query"},{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/deletes":{"get":{"summary":"Get deletes queue","operationId":"healthGetQueueDeletes","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of background destructive changes that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueDeletes","weight":131,"cookies":false,"type":"","demo":"health\/get-queue-deletes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-deletes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/functions":{"get":{"summary":"Get functions queue","operationId":"healthGetQueueFunctions","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueFunctions","weight":135,"cookies":false,"type":"","demo":"health\/get-queue-functions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-functions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/logs":{"get":{"summary":"Get logs queue","operationId":"healthGetQueueLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of logs that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueLogs","weight":127,"cookies":false,"type":"","demo":"health\/get-queue-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/mails":{"get":{"summary":"Get mails queue","operationId":"healthGetQueueMails","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of mails that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueMails","weight":132,"cookies":false,"type":"","demo":"health\/get-queue-mails.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-mails.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/messaging":{"get":{"summary":"Get messaging queue","operationId":"healthGetQueueMessaging","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of messages that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueMessaging","weight":133,"cookies":false,"type":"","demo":"health\/get-queue-messaging.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-messaging.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/migrations":{"get":{"summary":"Get migrations queue","operationId":"healthGetQueueMigrations","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of migrations that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueMigrations","weight":134,"cookies":false,"type":"","demo":"health\/get-queue-migrations.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-migrations.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/webhooks":{"get":{"summary":"Get webhooks queue","operationId":"healthGetQueueWebhooks","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of webhooks that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueWebhooks","weight":126,"cookies":false,"type":"","demo":"health\/get-queue-webhooks.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-webhooks.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/storage\/local":{"get":{"summary":"Get local storage","operationId":"healthGetStorageLocal","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite local storage device is up and connection is successful.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"getStorageLocal","weight":136,"cookies":false,"type":"","demo":"health\/get-storage-local.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-storage-local.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/time":{"get":{"summary":"Get time","operationId":"healthGetTime","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite server time is synced with Google remote NTP server. We use this technology to smoothly handle leap seconds with no disruptive events. The [Network Time Protocol](https:\/\/en.wikipedia.org\/wiki\/Network_Time_Protocol) (NTP) is used by hundreds of millions of computers and devices to synchronize their clocks over the Internet. If your computer sets its own clock, it likely uses NTP.","responses":{"200":{"description":"Health Time","schema":{"$ref":"#\/definitions\/healthTime"}}},"x-appwrite":{"method":"getTime","weight":125,"cookies":false,"type":"","demo":"health\/get-time.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-time.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/locale":{"get":{"summary":"Get user locale","operationId":"localeGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"Get the current user location based on IP. Returns an object with user country code, country name, continent name, continent code, ip address and suggested currency. You can use the locale header to get the data in a supported language.\n\n([IP Geolocation by DB-IP](https:\/\/db-ip.com))","responses":{"200":{"description":"Locale","schema":{"$ref":"#\/definitions\/locale"}}},"x-appwrite":{"method":"get","weight":111,"cookies":false,"type":"","demo":"locale\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-locale.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/localed","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/codes":{"get":{"summary":"List Locale Codes","operationId":"localeListCodes","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all locale codes in [ISO 639-1](https:\/\/en.wikipedia.org\/wiki\/List_of_ISO_639-1_codes).","responses":{"200":{"description":"Locale codes list","schema":{"$ref":"#\/definitions\/localeCodeList"}}},"x-appwrite":{"method":"listCodes","weight":112,"cookies":false,"type":"","demo":"locale\/list-codes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-locale-codes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/localeCode","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/continents":{"get":{"summary":"List continents","operationId":"localeListContinents","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","schema":{"$ref":"#\/definitions\/continentList"}}},"x-appwrite":{"method":"listContinents","weight":116,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/continents","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List countries","operationId":"localeListCountries","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountries","weight":113,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/countries","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU countries","operationId":"localeListCountriesEU","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountriesEU","weight":114,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/countries\/eu","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List countries phone codes","operationId":"localeListCountriesPhones","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","schema":{"$ref":"#\/definitions\/phoneList"}}},"x-appwrite":{"method":"listCountriesPhones","weight":115,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/countries\/phones","offline-key":"","offline-response-key":"countryCode","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List currencies","operationId":"localeListCurrencies","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","schema":{"$ref":"#\/definitions\/currencyList"}}},"x-appwrite":{"method":"listCurrencies","weight":117,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/currencies","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List languages","operationId":"localeListLanguages","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","schema":{"$ref":"#\/definitions\/languageList"}}},"x-appwrite":{"method":"listLanguages","weight":118,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/languages","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/messaging\/messages":{"get":{"summary":"List messages","operationId":"messagingListMessages","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Message list","schema":{"$ref":"#\/definitions\/messageList"}}},"x-appwrite":{"method":"listMessages","weight":361,"cookies":false,"type":"","demo":"messaging\/list-messages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-messages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: scheduledAt, deliveredAt, deliveredTotal, status, description, providerType","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]}},"\/messaging\/messages\/email":{"post":{"summary":"Create an email.","operationId":"messagingCreateEmail","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Message","schema":{"$ref":"#\/definitions\/message"}}},"x-appwrite":{"method":"createEmail","weight":358,"cookies":false,"type":"","demo":"messaging\/create-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"messageId":{"type":"string","description":"Message ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[MESSAGE_ID]"},"subject":{"type":"string","description":"Email Subject.","default":null,"x-example":"[SUBJECT]"},"content":{"type":"string","description":"Email Content.","default":null,"x-example":"[CONTENT]"},"topics":{"type":"array","description":"List of Topic IDs.","default":[],"x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","default":[],"x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","default":[],"x-example":null,"items":{"type":"string"}},"cc":{"type":"array","description":"Array of target IDs to be added as CC.","default":[],"x-example":null,"items":{"type":"string"}},"bcc":{"type":"array","description":"Array of target IDs to be added as BCC.","default":[],"x-example":null,"items":{"type":"string"}},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","default":"draft","x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":"MessageStatus","x-enum-keys":[]},"html":{"type":"boolean","description":"Is content of type HTML","default":false,"x-example":false},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","default":null,"x-example":null}},"required":["messageId","subject","content"]}}]}},"\/messaging\/messages\/email\/{messageId}":{"patch":{"summary":"Update an email.","operationId":"messagingUpdateEmail","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Message","schema":{"$ref":"#\/definitions\/message"}}},"x-appwrite":{"method":"updateEmail","weight":365,"cookies":false,"type":"","demo":"messaging\/update-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"type":"string","x-example":"[MESSAGE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"topics":{"type":"array","description":"List of Topic IDs.","default":null,"x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","default":null,"x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","default":null,"x-example":null,"items":{"type":"string"}},"subject":{"type":"string","description":"Email Subject.","default":null,"x-example":"[SUBJECT]"},"content":{"type":"string","description":"Email Content.","default":null,"x-example":"[CONTENT]"},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","default":null,"x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":"MessageStatus","x-enum-keys":[]},"html":{"type":"boolean","description":"Is content of type HTML","default":null,"x-example":false},"cc":{"type":"array","description":"Array of target IDs to be added as CC.","default":null,"x-example":null,"items":{"type":"string"}},"bcc":{"type":"array","description":"Array of target IDs to be added as BCC.","default":null,"x-example":null,"items":{"type":"string"}},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","default":null,"x-example":null}}}}]}},"\/messaging\/messages\/push":{"post":{"summary":"Create a push notification.","operationId":"messagingCreatePush","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Message","schema":{"$ref":"#\/definitions\/message"}}},"x-appwrite":{"method":"createPush","weight":360,"cookies":false,"type":"","demo":"messaging\/create-push.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-push-notification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"messageId":{"type":"string","description":"Message ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[MESSAGE_ID]"},"title":{"type":"string","description":"Title for push notification.","default":null,"x-example":"[TITLE]"},"body":{"type":"string","description":"Body for push notification.","default":null,"x-example":"[BODY]"},"topics":{"type":"array","description":"List of Topic IDs.","default":[],"x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","default":[],"x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","default":[],"x-example":null,"items":{"type":"string"}},"data":{"type":"object","description":"Additional Data for push notification.","default":{},"x-example":"{}"},"action":{"type":"string","description":"Action for push notification.","default":"","x-example":"[ACTION]"},"icon":{"type":"string","description":"Icon for push notification. Available only for Android and Web Platform.","default":"","x-example":"[ICON]"},"sound":{"type":"string","description":"Sound for push notification. Available only for Android and IOS Platform.","default":"","x-example":"[SOUND]"},"color":{"type":"string","description":"Color for push notification. Available only for Android Platform.","default":"","x-example":"[COLOR]"},"tag":{"type":"string","description":"Tag for push notification. Available only for Android Platform.","default":"","x-example":"[TAG]"},"badge":{"type":"string","description":"Badge for push notification. Available only for IOS Platform.","default":"","x-example":"[BADGE]"},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","default":"draft","x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":"MessageStatus","x-enum-keys":[]},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","default":null,"x-example":null}},"required":["messageId","title","body"]}}]}},"\/messaging\/messages\/push\/{messageId}":{"patch":{"summary":"Update a push notification.","operationId":"messagingUpdatePush","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Message","schema":{"$ref":"#\/definitions\/message"}}},"x-appwrite":{"method":"updatePush","weight":367,"cookies":false,"type":"","demo":"messaging\/update-push.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-push-notification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"type":"string","x-example":"[MESSAGE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"topics":{"type":"array","description":"List of Topic IDs.","default":null,"x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","default":null,"x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","default":null,"x-example":null,"items":{"type":"string"}},"title":{"type":"string","description":"Title for push notification.","default":null,"x-example":"[TITLE]"},"body":{"type":"string","description":"Body for push notification.","default":null,"x-example":"[BODY]"},"data":{"type":"object","description":"Additional Data for push notification.","default":{},"x-example":"{}"},"action":{"type":"string","description":"Action for push notification.","default":null,"x-example":"[ACTION]"},"icon":{"type":"string","description":"Icon for push notification. Available only for Android and Web platforms.","default":null,"x-example":"[ICON]"},"sound":{"type":"string","description":"Sound for push notification. Available only for Android and iOS platforms.","default":null,"x-example":"[SOUND]"},"color":{"type":"string","description":"Color for push notification. Available only for Android platforms.","default":null,"x-example":"[COLOR]"},"tag":{"type":"string","description":"Tag for push notification. Available only for Android platforms.","default":null,"x-example":"[TAG]"},"badge":{"type":"integer","description":"Badge for push notification. Available only for iOS platforms.","default":null,"x-example":null},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","default":null,"x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":"MessageStatus","x-enum-keys":[]},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","default":null,"x-example":null}}}}]}},"\/messaging\/messages\/sms":{"post":{"summary":"Create an SMS.","operationId":"messagingCreateSMS","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Message","schema":{"$ref":"#\/definitions\/message"}}},"x-appwrite":{"method":"createSMS","weight":359,"cookies":false,"type":"","demo":"messaging\/create-s-m-s.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-sms.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"messageId":{"type":"string","description":"Message ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[MESSAGE_ID]"},"content":{"type":"string","description":"SMS Content.","default":null,"x-example":"[CONTENT]"},"topics":{"type":"array","description":"List of Topic IDs.","default":[],"x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","default":[],"x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","default":[],"x-example":null,"items":{"type":"string"}},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","default":"draft","x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":"MessageStatus","x-enum-keys":[]},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","default":null,"x-example":null}},"required":["messageId","content"]}}]}},"\/messaging\/messages\/sms\/{messageId}":{"patch":{"summary":"Update an SMS.","operationId":"messagingUpdateSMS","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Message","schema":{"$ref":"#\/definitions\/message"}}},"x-appwrite":{"method":"updateSMS","weight":366,"cookies":false,"type":"","demo":"messaging\/update-s-m-s.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"type":"string","x-example":"[MESSAGE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"topics":{"type":"array","description":"List of Topic IDs.","default":null,"x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","default":null,"x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","default":null,"x-example":null,"items":{"type":"string"}},"content":{"type":"string","description":"Email Content.","default":null,"x-example":"[CONTENT]"},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","default":null,"x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":"MessageStatus","x-enum-keys":[]},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","default":null,"x-example":null}}}}]}},"\/messaging\/messages\/{messageId}":{"get":{"summary":"Get a message","operationId":"messagingGetMessage","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Message","schema":{"$ref":"#\/definitions\/message"}}},"x-appwrite":{"method":"getMessage","weight":364,"cookies":false,"type":"","demo":"messaging\/get-message.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/get-message.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"type":"string","x-example":"[MESSAGE_ID]","in":"path"}]},"delete":{"summary":"Delete a message","operationId":"messagingDelete","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":368,"cookies":false,"type":"","demo":"messaging\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-message.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"type":"string","x-example":"[MESSAGE_ID]","in":"path"}]}},"\/messaging\/messages\/{messageId}\/logs":{"get":{"summary":"List message logs","operationId":"messagingListMessageLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listMessageLogs","weight":362,"cookies":false,"type":"","demo":"messaging\/list-message-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/messages\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"type":"string","x-example":"[MESSAGE_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/messaging\/messages\/{messageId}\/targets":{"get":{"summary":"List message targets","operationId":"messagingListTargets","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"List the targets associated with a message as set via the targets attribute.","responses":{"200":{"description":"Target list","schema":{"$ref":"#\/definitions\/targetList"}}},"x-appwrite":{"method":"listTargets","weight":363,"cookies":false,"type":"","demo":"messaging\/list-targets.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-message-targets.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"type":"string","x-example":"[MESSAGE_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, providerId, identifier, providerType","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/messaging\/providers":{"get":{"summary":"List providers","operationId":"messagingListProviders","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider list","schema":{"$ref":"#\/definitions\/providerList"}}},"x-appwrite":{"method":"listProviders","weight":333,"cookies":false,"type":"","demo":"messaging\/list-providers.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-providers.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, provider, type, enabled","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]}},"\/messaging\/providers\/apns":{"post":{"summary":"Create APNS provider","operationId":"messagingCreateAPNSProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createAPNSProvider","weight":332,"cookies":false,"type":"","demo":"messaging\/create-a-p-n-s-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-apns-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"authKey":{"type":"string","description":"APNS authentication key.","default":"","x-example":"[AUTH_KEY]"},"authKeyId":{"type":"string","description":"APNS authentication key ID.","default":"","x-example":"[AUTH_KEY_ID]"},"teamId":{"type":"string","description":"APNS team ID.","default":"","x-example":"[TEAM_ID]"},"bundleId":{"type":"string","description":"APNS bundle ID.","default":"","x-example":"[BUNDLE_ID]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name"]}}]}},"\/messaging\/providers\/apns\/{providerId}":{"patch":{"summary":"Update APNS provider","operationId":"messagingUpdateAPNSProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateAPNSProvider","weight":345,"cookies":false,"type":"","demo":"messaging\/update-a-p-n-s-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-apns-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"authKey":{"type":"string","description":"APNS authentication key.","default":"","x-example":"[AUTH_KEY]"},"authKeyId":{"type":"string","description":"APNS authentication key ID.","default":"","x-example":"[AUTH_KEY_ID]"},"teamId":{"type":"string","description":"APNS team ID.","default":"","x-example":"[TEAM_ID]"},"bundleId":{"type":"string","description":"APNS bundle ID.","default":"","x-example":"[BUNDLE_ID]"}}}}]}},"\/messaging\/providers\/fcm":{"post":{"summary":"Create FCM provider","operationId":"messagingCreateFCMProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createFCMProvider","weight":331,"cookies":false,"type":"","demo":"messaging\/create-f-c-m-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-fcm-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"serviceAccountJSON":{"type":"object","description":"FCM service account JSON.","default":{},"x-example":"{}"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name"]}}]}},"\/messaging\/providers\/fcm\/{providerId}":{"patch":{"summary":"Update FCM provider","operationId":"messagingUpdateFCMProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateFCMProvider","weight":344,"cookies":false,"type":"","demo":"messaging\/update-f-c-m-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-fcm-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"serviceAccountJSON":{"type":"object","description":"FCM service account JSON.","default":{},"x-example":"{}"}}}}]}},"\/messaging\/providers\/mailgun":{"post":{"summary":"Create Mailgun provider","operationId":"messagingCreateMailgunProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createMailgunProvider","weight":323,"cookies":false,"type":"","demo":"messaging\/create-mailgun-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-mailgun-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"apiKey":{"type":"string","description":"Mailgun API Key.","default":"","x-example":"[API_KEY]"},"domain":{"type":"string","description":"Mailgun Domain.","default":"","x-example":"[DOMAIN]"},"isEuRegion":{"type":"boolean","description":"Set as EU region.","default":null,"x-example":false},"fromName":{"type":"string","description":"Sender Name.","default":"","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","default":"","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the reply to field for the mail. Default value is sender name. Reply to name must have reply to email as well.","default":"","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the reply to field for the mail. Default value is sender email. Reply to email must have reply to name as well.","default":"","x-example":"email@example.com"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name"]}}]}},"\/messaging\/providers\/mailgun\/{providerId}":{"patch":{"summary":"Update Mailgun provider","operationId":"messagingUpdateMailgunProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateMailgunProvider","weight":336,"cookies":false,"type":"","demo":"messaging\/update-mailgun-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-mailgun-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"apiKey":{"type":"string","description":"Mailgun API Key.","default":"","x-example":"[API_KEY]"},"domain":{"type":"string","description":"Mailgun Domain.","default":"","x-example":"[DOMAIN]"},"isEuRegion":{"type":"boolean","description":"Set as EU region.","default":null,"x-example":false},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"fromName":{"type":"string","description":"Sender Name.","default":"","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","default":"","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the reply to field for the mail. Default value is sender name.","default":"","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the reply to field for the mail. Default value is sender email.","default":"","x-example":"[REPLY_TO_EMAIL]"}}}}]}},"\/messaging\/providers\/msg91":{"post":{"summary":"Create Msg91 provider","operationId":"messagingCreateMsg91Provider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createMsg91Provider","weight":326,"cookies":false,"type":"","demo":"messaging\/create-msg91provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-msg91-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":"","x-example":"+12065550100"},"senderId":{"type":"string","description":"Msg91 Sender ID.","default":"","x-example":"[SENDER_ID]"},"authKey":{"type":"string","description":"Msg91 Auth Key.","default":"","x-example":"[AUTH_KEY]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name"]}}]}},"\/messaging\/providers\/msg91\/{providerId}":{"patch":{"summary":"Update Msg91 provider","operationId":"messagingUpdateMsg91Provider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateMsg91Provider","weight":339,"cookies":false,"type":"","demo":"messaging\/update-msg91provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-msg91-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"senderId":{"type":"string","description":"Msg91 Sender ID.","default":"","x-example":"[SENDER_ID]"},"authKey":{"type":"string","description":"Msg91 Auth Key.","default":"","x-example":"[AUTH_KEY]"},"from":{"type":"string","description":"Sender number.","default":"","x-example":"[FROM]"}}}}]}},"\/messaging\/providers\/sendgrid":{"post":{"summary":"Create Sendgrid provider","operationId":"messagingCreateSendgridProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createSendgridProvider","weight":324,"cookies":false,"type":"","demo":"messaging\/create-sendgrid-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-sengrid-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"apiKey":{"type":"string","description":"Sendgrid API key.","default":"","x-example":"[API_KEY]"},"fromName":{"type":"string","description":"Sender Name.","default":"","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","default":"","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the reply to field for the mail. Default value is sender name.","default":"","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the reply to field for the mail. Default value is sender email.","default":"","x-example":"email@example.com"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name"]}}]}},"\/messaging\/providers\/sendgrid\/{providerId}":{"patch":{"summary":"Update Sendgrid provider","operationId":"messagingUpdateSendgridProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateSendgridProvider","weight":337,"cookies":false,"type":"","demo":"messaging\/update-sendgrid-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-sendgrid-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"apiKey":{"type":"string","description":"Sendgrid API key.","default":"","x-example":"[API_KEY]"},"fromName":{"type":"string","description":"Sender Name.","default":"","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","default":"","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the Reply To field for the mail. Default value is Sender Name.","default":"","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the Reply To field for the mail. Default value is Sender Email.","default":"","x-example":"[REPLY_TO_EMAIL]"}}}}]}},"\/messaging\/providers\/smtp":{"post":{"summary":"Create SMTP provider","operationId":"messagingCreateSMTPProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createSMTPProvider","weight":325,"cookies":false,"type":"","demo":"messaging\/create-s-m-t-p-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-smtp-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"host":{"type":"string","description":"SMTP hosts. Either a single hostname or multiple semicolon-delimited hostnames. You can also specify a different port for each host by using this format: [hostname:port] (e.g. \"smtp1.example.com:25;smtp2.example.com\"). You can also specify encryption type, for example: (e.g. \"tls:\/\/smtp1.example.com:587;ssl:\/\/smtp2.example.com:465\"). Hosts will be tried in order.","default":null,"x-example":"[HOST]"},"port":{"type":"integer","description":"The default SMTP server port.","default":587,"x-example":1},"username":{"type":"string","description":"Authentication username.","default":"","x-example":"[USERNAME]"},"password":{"type":"string","description":"Authentication password.","default":"","x-example":"[PASSWORD]"},"encryption":{"type":"string","description":"Encryption type. Can be omitted, 'ssl', or 'tls'","default":"","x-example":"none","enum":["none","ssl","tls"],"x-enum-name":"SMTPEncryption","x-enum-keys":[]},"autoTLS":{"type":"boolean","description":"Enable SMTP AutoTLS feature.","default":true,"x-example":false},"mailer":{"type":"string","description":"The value to use for the X-Mailer header.","default":"","x-example":"[MAILER]"},"fromName":{"type":"string","description":"Sender Name.","default":"","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","default":"","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the reply to field for the mail. Default value is sender name.","default":"","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the reply to field for the mail. Default value is sender email.","default":"","x-example":"email@example.com"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name","host"]}}]}},"\/messaging\/providers\/smtp\/{providerId}":{"patch":{"summary":"Update SMTP provider","operationId":"messagingUpdateSMTPProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateSMTPProvider","weight":338,"cookies":false,"type":"","demo":"messaging\/update-s-m-t-p-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-smtp-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"host":{"type":"string","description":"SMTP hosts. Either a single hostname or multiple semicolon-delimited hostnames. You can also specify a different port for each host by using this format: [hostname:port] (e.g. \"smtp1.example.com:25;smtp2.example.com\"). You can also specify encryption type, for example: (e.g. \"tls:\/\/smtp1.example.com:587;ssl:\/\/smtp2.example.com:465\"). Hosts will be tried in order.","default":"","x-example":"[HOST]"},"port":{"type":"integer","description":"SMTP port.","default":null,"x-example":1},"username":{"type":"string","description":"Authentication username.","default":"","x-example":"[USERNAME]"},"password":{"type":"string","description":"Authentication password.","default":"","x-example":"[PASSWORD]"},"encryption":{"type":"string","description":"Encryption type. Can be 'ssl' or 'tls'","default":"","x-example":"none","enum":["none","ssl","tls"],"x-enum-name":"SMTPEncryption","x-enum-keys":[]},"autoTLS":{"type":"boolean","description":"Enable SMTP AutoTLS feature.","default":null,"x-example":false},"fromName":{"type":"string","description":"Sender Name.","default":"","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","default":"","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the Reply To field for the mail. Default value is Sender Name.","default":"","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the Reply To field for the mail. Default value is Sender Email.","default":"","x-example":"[REPLY_TO_EMAIL]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}}}}]}},"\/messaging\/providers\/telesign":{"post":{"summary":"Create Telesign provider","operationId":"messagingCreateTelesignProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createTelesignProvider","weight":327,"cookies":false,"type":"","demo":"messaging\/create-telesign-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-telesign-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":"","x-example":"+12065550100"},"username":{"type":"string","description":"Telesign username.","default":"","x-example":"[USERNAME]"},"password":{"type":"string","description":"Telesign password.","default":"","x-example":"[PASSWORD]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name"]}}]}},"\/messaging\/providers\/telesign\/{providerId}":{"patch":{"summary":"Update Telesign provider","operationId":"messagingUpdateTelesignProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateTelesignProvider","weight":340,"cookies":false,"type":"","demo":"messaging\/update-telesign-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-telesign-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"username":{"type":"string","description":"Telesign username.","default":"","x-example":"[USERNAME]"},"password":{"type":"string","description":"Telesign password.","default":"","x-example":"[PASSWORD]"},"from":{"type":"string","description":"Sender number.","default":"","x-example":"[FROM]"}}}}]}},"\/messaging\/providers\/textmagic":{"post":{"summary":"Create Textmagic provider","operationId":"messagingCreateTextmagicProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createTextmagicProvider","weight":328,"cookies":false,"type":"","demo":"messaging\/create-textmagic-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-textmagic-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":"","x-example":"+12065550100"},"username":{"type":"string","description":"Textmagic username.","default":"","x-example":"[USERNAME]"},"apiKey":{"type":"string","description":"Textmagic apiKey.","default":"","x-example":"[API_KEY]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name"]}}]}},"\/messaging\/providers\/textmagic\/{providerId}":{"patch":{"summary":"Update Textmagic provider","operationId":"messagingUpdateTextmagicProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateTextmagicProvider","weight":341,"cookies":false,"type":"","demo":"messaging\/update-textmagic-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-textmagic-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"username":{"type":"string","description":"Textmagic username.","default":"","x-example":"[USERNAME]"},"apiKey":{"type":"string","description":"Textmagic apiKey.","default":"","x-example":"[API_KEY]"},"from":{"type":"string","description":"Sender number.","default":"","x-example":"[FROM]"}}}}]}},"\/messaging\/providers\/twilio":{"post":{"summary":"Create Twilio provider","operationId":"messagingCreateTwilioProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createTwilioProvider","weight":329,"cookies":false,"type":"","demo":"messaging\/create-twilio-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-twilio-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":"","x-example":"+12065550100"},"accountSid":{"type":"string","description":"Twilio account secret ID.","default":"","x-example":"[ACCOUNT_SID]"},"authToken":{"type":"string","description":"Twilio authentication token.","default":"","x-example":"[AUTH_TOKEN]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name"]}}]}},"\/messaging\/providers\/twilio\/{providerId}":{"patch":{"summary":"Update Twilio provider","operationId":"messagingUpdateTwilioProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateTwilioProvider","weight":342,"cookies":false,"type":"","demo":"messaging\/update-twilio-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-twilio-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"accountSid":{"type":"string","description":"Twilio account secret ID.","default":"","x-example":"[ACCOUNT_SID]"},"authToken":{"type":"string","description":"Twilio authentication token.","default":"","x-example":"[AUTH_TOKEN]"},"from":{"type":"string","description":"Sender number.","default":"","x-example":"[FROM]"}}}}]}},"\/messaging\/providers\/vonage":{"post":{"summary":"Create Vonage provider","operationId":"messagingCreateVonageProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createVonageProvider","weight":330,"cookies":false,"type":"","demo":"messaging\/create-vonage-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-vonage-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":"","x-example":"+12065550100"},"apiKey":{"type":"string","description":"Vonage API key.","default":"","x-example":"[API_KEY]"},"apiSecret":{"type":"string","description":"Vonage API secret.","default":"","x-example":"[API_SECRET]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name"]}}]}},"\/messaging\/providers\/vonage\/{providerId}":{"patch":{"summary":"Update Vonage provider","operationId":"messagingUpdateVonageProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateVonageProvider","weight":343,"cookies":false,"type":"","demo":"messaging\/update-vonage-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-vonage-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"apiKey":{"type":"string","description":"Vonage API key.","default":"","x-example":"[API_KEY]"},"apiSecret":{"type":"string","description":"Vonage API secret.","default":"","x-example":"[API_SECRET]"},"from":{"type":"string","description":"Sender number.","default":"","x-example":"[FROM]"}}}}]}},"\/messaging\/providers\/{providerId}":{"get":{"summary":"Get provider","operationId":"messagingGetProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"getProvider","weight":335,"cookies":false,"type":"","demo":"messaging\/get-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/get-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"}]},"delete":{"summary":"Delete provider","operationId":"messagingDeleteProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteProvider","weight":346,"cookies":false,"type":"","demo":"messaging\/delete-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"}]}},"\/messaging\/providers\/{providerId}\/logs":{"get":{"summary":"List provider logs","operationId":"messagingListProviderLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listProviderLogs","weight":334,"cookies":false,"type":"","demo":"messaging\/list-provider-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/providers\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/messaging\/subscribers\/{subscriberId}\/logs":{"get":{"summary":"List subscriber logs","operationId":"messagingListSubscriberLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listSubscriberLogs","weight":355,"cookies":false,"type":"","demo":"messaging\/list-subscriber-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/subscribers\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"subscriberId","description":"Subscriber ID.","required":true,"type":"string","x-example":"[SUBSCRIBER_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/messaging\/topics":{"get":{"summary":"List topics.","operationId":"messagingListTopics","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Topic list","schema":{"$ref":"#\/definitions\/topicList"}}},"x-appwrite":{"method":"listTopics","weight":348,"cookies":false,"type":"","demo":"messaging\/list-topics.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-topics.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, description, total","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create a topic.","operationId":"messagingCreateTopic","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Topic","schema":{"$ref":"#\/definitions\/topic"}}},"x-appwrite":{"method":"createTopic","weight":347,"cookies":false,"type":"","demo":"messaging\/create-topic.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-topic.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"topicId":{"type":"string","description":"Topic ID. Choose a custom Topic ID or a new Topic ID.","default":null,"x-example":"[TOPIC_ID]"},"name":{"type":"string","description":"Topic Name.","default":null,"x-example":"[NAME]"}},"required":["topicId","name"]}}]}},"\/messaging\/topics\/{topicId}":{"get":{"summary":"Get a topic.","operationId":"messagingGetTopic","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Topic","schema":{"$ref":"#\/definitions\/topic"}}},"x-appwrite":{"method":"getTopic","weight":350,"cookies":false,"type":"","demo":"messaging\/get-topic.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/get-topic.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID.","required":true,"type":"string","x-example":"[TOPIC_ID]","in":"path"}]},"patch":{"summary":"Update a topic.","operationId":"messagingUpdateTopic","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Topic","schema":{"$ref":"#\/definitions\/topic"}}},"x-appwrite":{"method":"updateTopic","weight":351,"cookies":false,"type":"","demo":"messaging\/update-topic.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-topic.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID.","required":true,"type":"string","x-example":"[TOPIC_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Topic Name.","default":"","x-example":"[NAME]"}}}}]},"delete":{"summary":"Delete a topic.","operationId":"messagingDeleteTopic","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteTopic","weight":352,"cookies":false,"type":"","demo":"messaging\/delete-topic.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-topic.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID.","required":true,"type":"string","x-example":"[TOPIC_ID]","in":"path"}]}},"\/messaging\/topics\/{topicId}\/logs":{"get":{"summary":"List topic logs","operationId":"messagingListTopicLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listTopicLogs","weight":349,"cookies":false,"type":"","demo":"messaging\/list-topic-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/topics\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID.","required":true,"type":"string","x-example":"[TOPIC_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/messaging\/topics\/{topicId}\/subscribers":{"get":{"summary":"List subscribers.","operationId":"messagingListSubscribers","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Subscriber list","schema":{"$ref":"#\/definitions\/subscriberList"}}},"x-appwrite":{"method":"listSubscribers","weight":354,"cookies":false,"type":"","demo":"messaging\/list-subscribers.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-subscribers.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID subscribed to.","required":true,"type":"string","x-example":"[TOPIC_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, provider, type, enabled","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create a subscriber.","operationId":"messagingCreateSubscriber","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Subscriber","schema":{"$ref":"#\/definitions\/subscriber"}}},"x-appwrite":{"method":"createSubscriber","weight":353,"cookies":false,"type":"","demo":"messaging\/create-subscriber.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-subscriber.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.write","platforms":["server","client","console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID to subscribe to.","required":true,"type":"string","x-example":"[TOPIC_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"subscriberId":{"type":"string","description":"Subscriber ID. Choose a custom Subscriber ID or a new Subscriber ID.","default":null,"x-example":"[SUBSCRIBER_ID]"},"targetId":{"type":"string","description":"Target ID. The target ID to link to the specified Topic ID.","default":null,"x-example":"[TARGET_ID]"}},"required":["subscriberId","targetId"]}}]}},"\/messaging\/topics\/{topicId}\/subscribers\/{subscriberId}":{"get":{"summary":"Get a subscriber.","operationId":"messagingGetSubscriber","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Subscriber","schema":{"$ref":"#\/definitions\/subscriber"}}},"x-appwrite":{"method":"getSubscriber","weight":356,"cookies":false,"type":"","demo":"messaging\/get-subscriber.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/get-subscriber.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID subscribed to.","required":true,"type":"string","x-example":"[TOPIC_ID]","in":"path"},{"name":"subscriberId","description":"Subscriber ID.","required":true,"type":"string","x-example":"[SUBSCRIBER_ID]","in":"path"}]},"delete":{"summary":"Delete a subscriber.","operationId":"messagingDeleteSubscriber","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSubscriber","weight":357,"cookies":false,"type":"","demo":"messaging\/delete-subscriber.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-subscriber.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.write","platforms":["server","client","console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID subscribed to.","required":true,"type":"string","x-example":"[TOPIC_ID]","in":"path"},{"name":"subscriberId","description":"Subscriber ID.","required":true,"type":"string","x-example":"[SUBSCRIBER_ID]","in":"path"}]}},"\/migrations":{"get":{"summary":"List Migrations","operationId":"migrationsList","consumes":["application\/json"],"produces":["application\/json"],"tags":["migrations"],"description":"","responses":{"200":{"description":"Migrations List","schema":{"$ref":"#\/definitions\/migrationList"}}},"x-appwrite":{"method":"list","weight":310,"cookies":false,"type":"","demo":"migrations\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/list-migrations.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: status, stage, source, resources, statusCounters, resourceData, errors","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]}},"\/migrations\/appwrite":{"post":{"summary":"Migrate Appwrite Data","operationId":"migrationsCreateAppwriteMigration","consumes":["application\/json"],"produces":["application\/json"],"tags":["migrations"],"description":"","responses":{"202":{"description":"Migration","schema":{"$ref":"#\/definitions\/migration"}}},"x-appwrite":{"method":"createAppwriteMigration","weight":305,"cookies":false,"type":"","demo":"migrations\/create-appwrite-migration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-appwrite.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"resources":{"type":"array","description":"List of resources to migrate","default":null,"x-example":null,"items":{"type":"string"}},"endpoint":{"type":"string","description":"Source's Appwrite Endpoint","default":null,"x-example":"https:\/\/example.com"},"projectId":{"type":"string","description":"Source's Project ID","default":null,"x-example":"[PROJECT_ID]"},"apiKey":{"type":"string","description":"Source's API Key","default":null,"x-example":"[API_KEY]"}},"required":["resources","endpoint","projectId","apiKey"]}}]}},"\/migrations\/appwrite\/report":{"get":{"summary":"Generate a report on Appwrite Data","operationId":"migrationsGetAppwriteReport","consumes":["application\/json"],"produces":["application\/json"],"tags":["migrations"],"description":"","responses":{"200":{"description":"Migration Report","schema":{"$ref":"#\/definitions\/migrationReport"}}},"x-appwrite":{"method":"getAppwriteReport","weight":312,"cookies":false,"type":"","demo":"migrations\/get-appwrite-report.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-appwrite-report.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"resources","description":"List of resources to migrate","required":true,"type":"array","collectionFormat":"multi","items":{"type":"string"},"in":"query"},{"name":"endpoint","description":"Source's Appwrite Endpoint","required":true,"type":"string","format":"url","x-example":"https:\/\/example.com","in":"query"},{"name":"projectID","description":"Source's Project ID","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"query"},{"name":"key","description":"Source's API Key","required":true,"type":"string","x-example":"[KEY]","in":"query"}]}},"\/migrations\/firebase":{"post":{"summary":"Migrate Firebase Data (Service Account)","operationId":"migrationsCreateFirebaseMigration","consumes":["application\/json"],"produces":["application\/json"],"tags":["migrations"],"description":"","responses":{"202":{"description":"Migration","schema":{"$ref":"#\/definitions\/migration"}}},"x-appwrite":{"method":"createFirebaseMigration","weight":307,"cookies":false,"type":"","demo":"migrations\/create-firebase-migration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-firebase.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"resources":{"type":"array","description":"List of resources to migrate","default":null,"x-example":null,"items":{"type":"string"}},"serviceAccount":{"type":"string","description":"JSON of the Firebase service account credentials","default":null,"x-example":"[SERVICE_ACCOUNT]"}},"required":["resources","serviceAccount"]}}]}},"\/migrations\/firebase\/deauthorize":{"get":{"summary":"Revoke Appwrite's authorization to access Firebase Projects","operationId":"migrationsDeleteFirebaseAuth","consumes":["application\/json"],"produces":["application\/json"],"tags":["migrations"],"description":"","responses":{"200":{"description":"File","schema":{"type":"file"}}},"x-appwrite":{"method":"deleteFirebaseAuth","weight":318,"cookies":false,"type":"","demo":"migrations\/delete-firebase-auth.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/migrations\/firebase\/oauth":{"post":{"summary":"Migrate Firebase Data (OAuth)","operationId":"migrationsCreateFirebaseOAuthMigration","consumes":["application\/json"],"produces":["application\/json"],"tags":["migrations"],"description":"","responses":{"202":{"description":"Migration","schema":{"$ref":"#\/definitions\/migration"}}},"x-appwrite":{"method":"createFirebaseOAuthMigration","weight":306,"cookies":false,"type":"","demo":"migrations\/create-firebase-o-auth-migration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-firebase.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"resources":{"type":"array","description":"List of resources to migrate","default":null,"x-example":null,"items":{"type":"string"}},"projectId":{"type":"string","description":"Project ID of the Firebase Project","default":null,"x-example":"[PROJECT_ID]"}},"required":["resources","projectId"]}}]}},"\/migrations\/firebase\/projects":{"get":{"summary":"List Firebase Projects","operationId":"migrationsListFirebaseProjects","consumes":["application\/json"],"produces":["application\/json"],"tags":["migrations"],"description":"","responses":{"200":{"description":"Migrations Firebase Projects List","schema":{"$ref":"#\/definitions\/firebaseProjectList"}}},"x-appwrite":{"method":"listFirebaseProjects","weight":317,"cookies":false,"type":"","demo":"migrations\/list-firebase-projects.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/migrations\/firebase\/report":{"get":{"summary":"Generate a report on Firebase Data","operationId":"migrationsGetFirebaseReport","consumes":["application\/json"],"produces":["application\/json"],"tags":["migrations"],"description":"","responses":{"200":{"description":"Migration Report","schema":{"$ref":"#\/definitions\/migrationReport"}}},"x-appwrite":{"method":"getFirebaseReport","weight":313,"cookies":false,"type":"","demo":"migrations\/get-firebase-report.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-firebase-report.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"resources","description":"List of resources to migrate","required":true,"type":"array","collectionFormat":"multi","items":{"type":"string"},"in":"query"},{"name":"serviceAccount","description":"JSON of the Firebase service account credentials","required":true,"type":"string","x-example":"[SERVICE_ACCOUNT]","in":"query"}]}},"\/migrations\/firebase\/report\/oauth":{"get":{"summary":"Generate a report on Firebase Data using OAuth","operationId":"migrationsGetFirebaseReportOAuth","consumes":["application\/json"],"produces":["application\/json"],"tags":["migrations"],"description":"","responses":{"200":{"description":"Migration Report","schema":{"$ref":"#\/definitions\/migrationReport"}}},"x-appwrite":{"method":"getFirebaseReportOAuth","weight":314,"cookies":false,"type":"","demo":"migrations\/get-firebase-report-o-auth.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-firebase-report.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"resources","description":"List of resources to migrate","required":true,"type":"array","collectionFormat":"multi","items":{"type":"string"},"in":"query"},{"name":"projectId","description":"Project ID","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"query"}]}},"\/migrations\/nhost":{"post":{"summary":"Migrate NHost Data","operationId":"migrationsCreateNHostMigration","consumes":["application\/json"],"produces":["application\/json"],"tags":["migrations"],"description":"","responses":{"202":{"description":"Migration","schema":{"$ref":"#\/definitions\/migration"}}},"x-appwrite":{"method":"createNHostMigration","weight":309,"cookies":false,"type":"","demo":"migrations\/create-n-host-migration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-nhost.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"resources":{"type":"array","description":"List of resources to migrate","default":null,"x-example":null,"items":{"type":"string"}},"subdomain":{"type":"string","description":"Source's Subdomain","default":null,"x-example":"[SUBDOMAIN]"},"region":{"type":"string","description":"Source's Region","default":null,"x-example":"[REGION]"},"adminSecret":{"type":"string","description":"Source's Admin Secret","default":null,"x-example":"[ADMIN_SECRET]"},"database":{"type":"string","description":"Source's Database Name","default":null,"x-example":"[DATABASE]"},"username":{"type":"string","description":"Source's Database Username","default":null,"x-example":"[USERNAME]"},"password":{"type":"string","description":"Source's Database Password","default":null,"x-example":"[PASSWORD]"},"port":{"type":"integer","description":"Source's Database Port","default":5432,"x-example":null}},"required":["resources","subdomain","region","adminSecret","database","username","password"]}}]}},"\/migrations\/nhost\/report":{"get":{"summary":"Generate a report on NHost Data","operationId":"migrationsGetNHostReport","consumes":["application\/json"],"produces":["application\/json"],"tags":["migrations"],"description":"","responses":{"200":{"description":"Migration Report","schema":{"$ref":"#\/definitions\/migrationReport"}}},"x-appwrite":{"method":"getNHostReport","weight":320,"cookies":false,"type":"","demo":"migrations\/get-n-host-report.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-nhost-report.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"resources","description":"List of resources to migrate.","required":true,"type":"array","collectionFormat":"multi","items":{"type":"string"},"in":"query"},{"name":"subdomain","description":"Source's Subdomain.","required":true,"type":"string","x-example":"[SUBDOMAIN]","in":"query"},{"name":"region","description":"Source's Region.","required":true,"type":"string","x-example":"[REGION]","in":"query"},{"name":"adminSecret","description":"Source's Admin Secret.","required":true,"type":"string","x-example":"[ADMIN_SECRET]","in":"query"},{"name":"database","description":"Source's Database Name.","required":true,"type":"string","x-example":"[DATABASE]","in":"query"},{"name":"username","description":"Source's Database Username.","required":true,"type":"string","x-example":"[USERNAME]","in":"query"},{"name":"password","description":"Source's Database Password.","required":true,"type":"string","x-example":"[PASSWORD]","in":"query"},{"name":"port","description":"Source's Database Port.","required":false,"type":"integer","format":"int32","default":5432,"in":"query"}]}},"\/migrations\/supabase":{"post":{"summary":"Migrate Supabase Data","operationId":"migrationsCreateSupabaseMigration","consumes":["application\/json"],"produces":["application\/json"],"tags":["migrations"],"description":"","responses":{"202":{"description":"Migration","schema":{"$ref":"#\/definitions\/migration"}}},"x-appwrite":{"method":"createSupabaseMigration","weight":308,"cookies":false,"type":"","demo":"migrations\/create-supabase-migration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-supabase.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"resources":{"type":"array","description":"List of resources to migrate","default":null,"x-example":null,"items":{"type":"string"}},"endpoint":{"type":"string","description":"Source's Supabase Endpoint","default":null,"x-example":"https:\/\/example.com"},"apiKey":{"type":"string","description":"Source's API Key","default":null,"x-example":"[API_KEY]"},"databaseHost":{"type":"string","description":"Source's Database Host","default":null,"x-example":"[DATABASE_HOST]"},"username":{"type":"string","description":"Source's Database Username","default":null,"x-example":"[USERNAME]"},"password":{"type":"string","description":"Source's Database Password","default":null,"x-example":"[PASSWORD]"},"port":{"type":"integer","description":"Source's Database Port","default":5432,"x-example":null}},"required":["resources","endpoint","apiKey","databaseHost","username","password"]}}]}},"\/migrations\/supabase\/report":{"get":{"summary":"Generate a report on Supabase Data","operationId":"migrationsGetSupabaseReport","consumes":["application\/json"],"produces":["application\/json"],"tags":["migrations"],"description":"","responses":{"200":{"description":"Migration Report","schema":{"$ref":"#\/definitions\/migrationReport"}}},"x-appwrite":{"method":"getSupabaseReport","weight":319,"cookies":false,"type":"","demo":"migrations\/get-supabase-report.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-supabase-report.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"resources","description":"List of resources to migrate","required":true,"type":"array","collectionFormat":"multi","items":{"type":"string"},"in":"query"},{"name":"endpoint","description":"Source's Supabase Endpoint.","required":true,"type":"string","format":"url","x-example":"https:\/\/example.com","in":"query"},{"name":"apiKey","description":"Source's API Key.","required":true,"type":"string","x-example":"[API_KEY]","in":"query"},{"name":"databaseHost","description":"Source's Database Host.","required":true,"type":"string","x-example":"[DATABASE_HOST]","in":"query"},{"name":"username","description":"Source's Database Username.","required":true,"type":"string","x-example":"[USERNAME]","in":"query"},{"name":"password","description":"Source's Database Password.","required":true,"type":"string","x-example":"[PASSWORD]","in":"query"},{"name":"port","description":"Source's Database Port.","required":false,"type":"integer","format":"int32","default":5432,"in":"query"}]}},"\/migrations\/{migrationId}":{"get":{"summary":"Get Migration","operationId":"migrationsGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["migrations"],"description":"","responses":{"200":{"description":"Migration","schema":{"$ref":"#\/definitions\/migration"}}},"x-appwrite":{"method":"get","weight":311,"cookies":false,"type":"","demo":"migrations\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/get-migration.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"migrationId","description":"Migration unique ID.","required":true,"type":"string","x-example":"[MIGRATION_ID]","in":"path"}]},"patch":{"summary":"Retry Migration","operationId":"migrationsRetry","consumes":["application\/json"],"produces":["application\/json"],"tags":["migrations"],"description":"","responses":{"202":{"description":"Migration","schema":{"$ref":"#\/definitions\/migration"}}},"x-appwrite":{"method":"retry","weight":321,"cookies":false,"type":"","demo":"migrations\/retry.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/retry-migration.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"migrationId","description":"Migration unique ID.","required":true,"type":"string","x-example":"[MIGRATION_ID]","in":"path"}]},"delete":{"summary":"Delete Migration","operationId":"migrationsDelete","consumes":["application\/json"],"produces":[],"tags":["migrations"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":322,"cookies":false,"type":"","demo":"migrations\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-migration.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"migrationId","description":"Migration ID.","required":true,"type":"string","x-example":"[MIGRATION_ID]","in":"path"}]}},"\/project\/usage":{"get":{"summary":"Get usage stats for a project","operationId":"projectGetUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["project"],"description":"","responses":{"200":{"description":"UsageProject","schema":{"$ref":"#\/definitions\/usageProject"}}},"x-appwrite":{"method":"getUsage","weight":179,"cookies":false,"type":"","demo":"project\/get-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"startDate","description":"Starting date for the usage","required":true,"type":"string","in":"query"},{"name":"endDate","description":"End date for the usage","required":true,"type":"string","in":"query"},{"name":"period","description":"Period used","required":false,"type":"string","x-example":"1h","enum":["1h","1d"],"x-enum-name":"ProjectUsageRange","x-enum-keys":["One Hour","One Day"],"default":"1d","in":"query"}]}},"\/project\/variables":{"get":{"summary":"List Variables","operationId":"projectListVariables","consumes":["application\/json"],"produces":["application\/json"],"tags":["project"],"description":"Get a list of all project variables. These variables will be accessible in all Appwrite Functions at runtime.","responses":{"200":{"description":"Variables List","schema":{"$ref":"#\/definitions\/variableList"}}},"x-appwrite":{"method":"listVariables","weight":181,"cookies":false,"type":"","demo":"project\/list-variables.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/project\/list-variables.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]},"post":{"summary":"Create Variable","operationId":"projectCreateVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["project"],"description":"Create a new project variable. This variable will be accessible in all Appwrite Functions at runtime.","responses":{"201":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"createVariable","weight":180,"cookies":false,"type":"","demo":"project\/create-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/project\/create-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","default":null,"x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","default":null,"x-example":"[VALUE]"}},"required":["key","value"]}}]}},"\/project\/variables\/{variableId}":{"get":{"summary":"Get Variable","operationId":"projectGetVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["project"],"description":"Get a project variable by its unique ID.","responses":{"200":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"getVariable","weight":182,"cookies":false,"type":"","demo":"project\/get-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/project\/get-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"}]},"put":{"summary":"Update Variable","operationId":"projectUpdateVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["project"],"description":"Update project variable by its unique ID. This variable will be accessible in all Appwrite Functions at runtime.","responses":{"200":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"updateVariable","weight":183,"cookies":false,"type":"","demo":"project\/update-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/project\/update-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","default":null,"x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","default":null,"x-example":"[VALUE]"}},"required":["key"]}}]},"delete":{"summary":"Delete Variable","operationId":"projectDeleteVariable","consumes":["application\/json"],"produces":[],"tags":["project"],"description":"Delete a project variable by its unique ID. ","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteVariable","weight":184,"cookies":false,"type":"","demo":"project\/delete-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/project\/delete-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"}]}},"\/projects":{"get":{"summary":"List projects","operationId":"projectsList","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Projects List","schema":{"$ref":"#\/definitions\/projectList"}}},"x-appwrite":{"method":"list","weight":140,"cookies":false,"type":"","demo":"projects\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, teamId","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create project","operationId":"projectsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"201":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"create","weight":139,"cookies":false,"type":"","demo":"projects\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"projectId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, and hyphen. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":null},"name":{"type":"string","description":"Project name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"teamId":{"type":"string","description":"Team unique ID.","default":null,"x-example":"[TEAM_ID]"},"region":{"type":"string","description":"Project Region.","default":"default","x-example":"default","enum":["default"],"x-enum-name":null,"x-enum-keys":[]},"description":{"type":"string","description":"Project description. Max length: 256 chars.","default":"","x-example":"[DESCRIPTION]"},"logo":{"type":"string","description":"Project logo.","default":"","x-example":"[LOGO]"},"url":{"type":"string","description":"Project URL.","default":"","x-example":"https:\/\/example.com"},"legalName":{"type":"string","description":"Project legal Name. Max length: 256 chars.","default":"","x-example":"[LEGAL_NAME]"},"legalCountry":{"type":"string","description":"Project legal Country. Max length: 256 chars.","default":"","x-example":"[LEGAL_COUNTRY]"},"legalState":{"type":"string","description":"Project legal State. Max length: 256 chars.","default":"","x-example":"[LEGAL_STATE]"},"legalCity":{"type":"string","description":"Project legal City. Max length: 256 chars.","default":"","x-example":"[LEGAL_CITY]"},"legalAddress":{"type":"string","description":"Project legal Address. Max length: 256 chars.","default":"","x-example":"[LEGAL_ADDRESS]"},"legalTaxId":{"type":"string","description":"Project legal Tax ID. Max length: 256 chars.","default":"","x-example":"[LEGAL_TAX_ID]"}},"required":["projectId","name","teamId"]}}]}},"\/projects\/{projectId}":{"get":{"summary":"Get project","operationId":"projectsGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"get","weight":141,"cookies":false,"type":"","demo":"projects\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"}]},"patch":{"summary":"Update project","operationId":"projectsUpdate","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"update","weight":142,"cookies":false,"type":"","demo":"projects\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Project name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"description":{"type":"string","description":"Project description. Max length: 256 chars.","default":"","x-example":"[DESCRIPTION]"},"logo":{"type":"string","description":"Project logo.","default":"","x-example":"[LOGO]"},"url":{"type":"string","description":"Project URL.","default":"","x-example":"https:\/\/example.com"},"legalName":{"type":"string","description":"Project legal name. Max length: 256 chars.","default":"","x-example":"[LEGAL_NAME]"},"legalCountry":{"type":"string","description":"Project legal country. Max length: 256 chars.","default":"","x-example":"[LEGAL_COUNTRY]"},"legalState":{"type":"string","description":"Project legal state. Max length: 256 chars.","default":"","x-example":"[LEGAL_STATE]"},"legalCity":{"type":"string","description":"Project legal city. Max length: 256 chars.","default":"","x-example":"[LEGAL_CITY]"},"legalAddress":{"type":"string","description":"Project legal address. Max length: 256 chars.","default":"","x-example":"[LEGAL_ADDRESS]"},"legalTaxId":{"type":"string","description":"Project legal tax ID. Max length: 256 chars.","default":"","x-example":"[LEGAL_TAX_ID]"}},"required":["name"]}}]},"delete":{"summary":"Delete project","operationId":"projectsDelete","consumes":["application\/json"],"produces":[],"tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":154,"cookies":false,"type":"","demo":"projects\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"}]}},"\/projects\/{projectId}\/auth\/duration":{"patch":{"summary":"Update project authentication duration","operationId":"projectsUpdateAuthDuration","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateAuthDuration","weight":148,"cookies":false,"type":"","demo":"projects\/update-auth-duration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"duration":{"type":"integer","description":"Project session length in seconds. Max length: 31536000 seconds.","default":null,"x-example":0}},"required":["duration"]}}]}},"\/projects\/{projectId}\/auth\/limit":{"patch":{"summary":"Update project users limit","operationId":"projectsUpdateAuthLimit","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateAuthLimit","weight":147,"cookies":false,"type":"","demo":"projects\/update-auth-limit.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"limit":{"type":"integer","description":"Set the max number of users allowed in this project. Use 0 for unlimited.","default":null,"x-example":0}},"required":["limit"]}}]}},"\/projects\/{projectId}\/auth\/max-sessions":{"patch":{"summary":"Update project user sessions limit","operationId":"projectsUpdateAuthSessionsLimit","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateAuthSessionsLimit","weight":153,"cookies":false,"type":"","demo":"projects\/update-auth-sessions-limit.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"limit":{"type":"integer","description":"Set the max number of users allowed in this project. Value allowed is between 1-100. Default is 10","default":null,"x-example":1}},"required":["limit"]}}]}},"\/projects\/{projectId}\/auth\/password-dictionary":{"patch":{"summary":"Update authentication password dictionary status. Use this endpoint to enable or disable the dicitonary check for user password","operationId":"projectsUpdateAuthPasswordDictionary","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateAuthPasswordDictionary","weight":151,"cookies":false,"type":"","demo":"projects\/update-auth-password-dictionary.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Set whether or not to enable checking user's password against most commonly used passwords. Default is false.","default":null,"x-example":false}},"required":["enabled"]}}]}},"\/projects\/{projectId}\/auth\/password-history":{"patch":{"summary":"Update authentication password history. Use this endpoint to set the number of password history to save and 0 to disable password history.","operationId":"projectsUpdateAuthPasswordHistory","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateAuthPasswordHistory","weight":150,"cookies":false,"type":"","demo":"projects\/update-auth-password-history.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"limit":{"type":"integer","description":"Set the max number of passwords to store in user history. User can't choose a new password that is already stored in the password history list. Max number of passwords allowed in history is20. Default value is 0","default":null,"x-example":0}},"required":["limit"]}}]}},"\/projects\/{projectId}\/auth\/personal-data":{"patch":{"summary":"Enable or disable checking user passwords for similarity with their personal data.","operationId":"projectsUpdatePersonalDataCheck","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updatePersonalDataCheck","weight":152,"cookies":false,"type":"","demo":"projects\/update-personal-data-check.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Set whether or not to check a password for similarity with personal data. Default is false.","default":null,"x-example":false}},"required":["enabled"]}}]}},"\/projects\/{projectId}\/auth\/{method}":{"patch":{"summary":"Update project auth method status. Use this endpoint to enable or disable a given auth method for this project.","operationId":"projectsUpdateAuthStatus","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateAuthStatus","weight":149,"cookies":false,"type":"","demo":"projects\/update-auth-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"method","description":"Auth Method. Possible values: email-password,magic-url,email-otp,anonymous,invites,jwt,phone","required":true,"type":"string","x-example":"email-password","enum":["email-password","magic-url","email-otp","anonymous","invites","jwt","phone"],"x-enum-name":"AuthMethod","x-enum-keys":[],"in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"status":{"type":"boolean","description":"Set the status of this auth method.","default":null,"x-example":false}},"required":["status"]}}]}},"\/projects\/{projectId}\/keys":{"get":{"summary":"List keys","operationId":"projectsListKeys","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"API Keys List","schema":{"$ref":"#\/definitions\/keyList"}}},"x-appwrite":{"method":"listKeys","weight":162,"cookies":false,"type":"","demo":"projects\/list-keys.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"}]},"post":{"summary":"Create key","operationId":"projectsCreateKey","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"201":{"description":"Key","schema":{"$ref":"#\/definitions\/key"}}},"x-appwrite":{"method":"createKey","weight":161,"cookies":false,"type":"","demo":"projects\/create-key.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Key name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"scopes":{"type":"array","description":"Key scopes list. Maximum of 100 scopes are allowed.","default":null,"x-example":null,"items":{"type":"string"}},"expire":{"type":"string","description":"Expiration time in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. Use null for unlimited expiration.","default":null,"x-example":null}},"required":["name","scopes"]}}]}},"\/projects\/{projectId}\/keys\/{keyId}":{"get":{"summary":"Get key","operationId":"projectsGetKey","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Key","schema":{"$ref":"#\/definitions\/key"}}},"x-appwrite":{"method":"getKey","weight":163,"cookies":false,"type":"","demo":"projects\/get-key.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"keyId","description":"Key unique ID.","required":true,"type":"string","x-example":"[KEY_ID]","in":"path"}]},"put":{"summary":"Update key","operationId":"projectsUpdateKey","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Key","schema":{"$ref":"#\/definitions\/key"}}},"x-appwrite":{"method":"updateKey","weight":164,"cookies":false,"type":"","demo":"projects\/update-key.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"keyId","description":"Key unique ID.","required":true,"type":"string","x-example":"[KEY_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Key name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"scopes":{"type":"array","description":"Key scopes list. Maximum of 100 events are allowed.","default":null,"x-example":null,"items":{"type":"string"}},"expire":{"type":"string","description":"Expiration time in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. Use null for unlimited expiration.","default":null,"x-example":null}},"required":["name","scopes"]}}]},"delete":{"summary":"Delete key","operationId":"projectsDeleteKey","consumes":["application\/json"],"produces":[],"tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteKey","weight":165,"cookies":false,"type":"","demo":"projects\/delete-key.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"keyId","description":"Key unique ID.","required":true,"type":"string","x-example":"[KEY_ID]","in":"path"}]}},"\/projects\/{projectId}\/oauth2":{"patch":{"summary":"Update project OAuth2","operationId":"projectsUpdateOAuth2","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateOAuth2","weight":146,"cookies":false,"type":"","demo":"projects\/update-o-auth2.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"provider":{"type":"string","description":"Provider Name","default":null,"x-example":"amazon","enum":["amazon","apple","auth0","authentik","autodesk","bitbucket","bitly","box","dailymotion","discord","disqus","dropbox","etsy","facebook","github","gitlab","google","linkedin","microsoft","notion","oidc","okta","paypal","paypalSandbox","podio","salesforce","slack","spotify","stripe","tradeshift","tradeshiftBox","twitch","wordpress","yahoo","yammer","yandex","zoho","zoom","mock"],"x-enum-name":"OAuthProvider","x-enum-keys":[]},"appId":{"type":"string","description":"Provider app ID. Max length: 256 chars.","default":null,"x-example":"[APP_ID]"},"secret":{"type":"string","description":"Provider secret key. Max length: 512 chars.","default":null,"x-example":"[SECRET]"},"enabled":{"type":"boolean","description":"Provider status. Set to 'false' to disable new session creation.","default":null,"x-example":false}},"required":["provider"]}}]}},"\/projects\/{projectId}\/platforms":{"get":{"summary":"List platforms","operationId":"projectsListPlatforms","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Platforms List","schema":{"$ref":"#\/definitions\/platformList"}}},"x-appwrite":{"method":"listPlatforms","weight":167,"cookies":false,"type":"","demo":"projects\/list-platforms.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"}]},"post":{"summary":"Create platform","operationId":"projectsCreatePlatform","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"201":{"description":"Platform","schema":{"$ref":"#\/definitions\/platform"}}},"x-appwrite":{"method":"createPlatform","weight":166,"cookies":false,"type":"","demo":"projects\/create-platform.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"type":{"type":"string","description":"Platform type.","default":null,"x-example":"web","enum":["web","flutter-web","flutter-ios","flutter-android","flutter-linux","flutter-macos","flutter-windows","apple-ios","apple-macos","apple-watchos","apple-tvos","android","unity"],"x-enum-name":"PlatformType","x-enum-keys":[]},"name":{"type":"string","description":"Platform name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"key":{"type":"string","description":"Package name for Android or bundle ID for iOS or macOS. Max length: 256 chars.","default":"","x-example":"[KEY]"},"store":{"type":"string","description":"App store or Google Play store ID. Max length: 256 chars.","default":"","x-example":"[STORE]"},"hostname":{"type":"string","description":"Platform client hostname. Max length: 256 chars.","default":"","x-example":null}},"required":["type","name"]}}]}},"\/projects\/{projectId}\/platforms\/{platformId}":{"get":{"summary":"Get platform","operationId":"projectsGetPlatform","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Platform","schema":{"$ref":"#\/definitions\/platform"}}},"x-appwrite":{"method":"getPlatform","weight":168,"cookies":false,"type":"","demo":"projects\/get-platform.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"platformId","description":"Platform unique ID.","required":true,"type":"string","x-example":"[PLATFORM_ID]","in":"path"}]},"put":{"summary":"Update platform","operationId":"projectsUpdatePlatform","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Platform","schema":{"$ref":"#\/definitions\/platform"}}},"x-appwrite":{"method":"updatePlatform","weight":169,"cookies":false,"type":"","demo":"projects\/update-platform.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"platformId","description":"Platform unique ID.","required":true,"type":"string","x-example":"[PLATFORM_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Platform name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"key":{"type":"string","description":"Package name for android or bundle ID for iOS. Max length: 256 chars.","default":"","x-example":"[KEY]"},"store":{"type":"string","description":"App store or Google Play store ID. Max length: 256 chars.","default":"","x-example":"[STORE]"},"hostname":{"type":"string","description":"Platform client URL. Max length: 256 chars.","default":"","x-example":null}},"required":["name"]}}]},"delete":{"summary":"Delete platform","operationId":"projectsDeletePlatform","consumes":["application\/json"],"produces":[],"tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deletePlatform","weight":170,"cookies":false,"type":"","demo":"projects\/delete-platform.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"platformId","description":"Platform unique ID.","required":true,"type":"string","x-example":"[PLATFORM_ID]","in":"path"}]}},"\/projects\/{projectId}\/service":{"patch":{"summary":"Update service status","operationId":"projectsUpdateServiceStatus","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateServiceStatus","weight":144,"cookies":false,"type":"","demo":"projects\/update-service-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"service":{"type":"string","description":"Service name.","default":null,"x-example":"account","enum":["account","avatars","databases","locale","health","storage","teams","users","functions","graphql","messaging"],"x-enum-name":"APIService","x-enum-keys":[]},"status":{"type":"boolean","description":"Service status.","default":null,"x-example":false}},"required":["service","status"]}}]}},"\/projects\/{projectId}\/service\/all":{"patch":{"summary":"Update all service status","operationId":"projectsUpdateServiceStatusAll","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateServiceStatusAll","weight":145,"cookies":false,"type":"","demo":"projects\/update-service-status-all.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"status":{"type":"boolean","description":"Service status.","default":null,"x-example":false}},"required":["status"]}}]}},"\/projects\/{projectId}\/smtp":{"patch":{"summary":"Update SMTP","operationId":"projectsUpdateSmtp","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateSmtp","weight":171,"cookies":false,"type":"","demo":"projects\/update-smtp.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enable custom SMTP service","default":null,"x-example":false},"senderName":{"type":"string","description":"Name of the email sender","default":"","x-example":"[SENDER_NAME]"},"senderEmail":{"type":"string","description":"Email of the sender","default":"","x-example":"email@example.com"},"replyTo":{"type":"string","description":"Reply to email","default":"","x-example":"email@example.com"},"host":{"type":"string","description":"SMTP server host name","default":"","x-example":null},"port":{"type":"integer","description":"SMTP server port","default":587,"x-example":null},"username":{"type":"string","description":"SMTP server username","default":"","x-example":"[USERNAME]"},"password":{"type":"string","description":"SMTP server password","default":"","x-example":"[PASSWORD]"},"secure":{"type":"string","description":"Does SMTP server use secure connection","default":"","x-example":"tls","enum":["tls"],"x-enum-name":"SMTPSecure","x-enum-keys":[]}},"required":["enabled"]}}]}},"\/projects\/{projectId}\/smtp\/tests":{"post":{"summary":"Create SMTP test","operationId":"projectsCreateSmtpTest","consumes":["application\/json"],"produces":[],"tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"createSmtpTest","weight":172,"cookies":false,"type":"","demo":"projects\/create-smtp-test.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"emails":{"type":"array","description":"Array of emails to send test email to. Maximum of 10 emails are allowed.","default":null,"x-example":null,"items":{"type":"string"}},"senderName":{"type":"string","description":"Name of the email sender","default":null,"x-example":"[SENDER_NAME]"},"senderEmail":{"type":"string","description":"Email of the sender","default":null,"x-example":"email@example.com"},"replyTo":{"type":"string","description":"Reply to email","default":"","x-example":"email@example.com"},"host":{"type":"string","description":"SMTP server host name","default":null,"x-example":null},"port":{"type":"integer","description":"SMTP server port","default":587,"x-example":null},"username":{"type":"string","description":"SMTP server username","default":"","x-example":"[USERNAME]"},"password":{"type":"string","description":"SMTP server password","default":"","x-example":"[PASSWORD]"},"secure":{"type":"string","description":"Does SMTP server use secure connection","default":"","x-example":"tls","enum":["tls"],"x-enum-name":"SMTPSecure","x-enum-keys":[]}},"required":["emails","senderName","senderEmail","host"]}}]}},"\/projects\/{projectId}\/team":{"patch":{"summary":"Update Project Team","operationId":"projectsUpdateTeam","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateTeam","weight":143,"cookies":false,"type":"","demo":"projects\/update-team.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"teamId":{"type":"string","description":"Team ID of the team to transfer project to.","default":null,"x-example":"[TEAM_ID]"}},"required":["teamId"]}}]}},"\/projects\/{projectId}\/templates\/email\/{type}\/{locale}":{"get":{"summary":"Get custom email template","operationId":"projectsGetEmailTemplate","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"EmailTemplate","schema":{"$ref":"#\/definitions\/emailTemplate"}}},"x-appwrite":{"method":"getEmailTemplate","weight":174,"cookies":false,"type":"","demo":"projects\/get-email-template.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"type","description":"Template type","required":true,"type":"string","x-example":"verification","enum":["verification","magicsession","recovery","invitation"],"x-enum-name":"EmailTemplateType","x-enum-keys":[],"in":"path"},{"name":"locale","description":"Template locale","required":true,"type":"string","x-example":"af","enum":["af","ar-ae","ar-bh","ar-dz","ar-eg","ar-iq","ar-jo","ar-kw","ar-lb","ar-ly","ar-ma","ar-om","ar-qa","ar-sa","ar-sy","ar-tn","ar-ye","as","az","be","bg","bh","bn","bs","ca","cs","cy","da","de","de-at","de-ch","de-li","de-lu","el","en","en-au","en-bz","en-ca","en-gb","en-ie","en-jm","en-nz","en-tt","en-us","en-za","eo","es","es-ar","es-bo","es-cl","es-co","es-cr","es-do","es-ec","es-gt","es-hn","es-mx","es-ni","es-pa","es-pe","es-pr","es-py","es-sv","es-uy","es-ve","et","eu","fa","fi","fo","fr","fr-be","fr-ca","fr-ch","fr-lu","ga","gd","he","hi","hr","hu","id","is","it","it-ch","ja","ji","ko","ku","lt","lv","mk","ml","ms","mt","nb","ne","nl","nl-be","nn","no","pa","pl","pt","pt-br","rm","ro","ro-md","ru","ru-md","sb","sk","sl","sq","sr","sv","sv-fi","th","tn","tr","ts","ua","ur","ve","vi","xh","zh-cn","zh-hk","zh-sg","zh-tw","zu"],"x-enum-name":"EmailTemplateLocale","x-enum-keys":[],"in":"path"}]},"patch":{"summary":"Update custom email templates","operationId":"projectsUpdateEmailTemplate","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateEmailTemplate","weight":176,"cookies":false,"type":"","demo":"projects\/update-email-template.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"type","description":"Template type","required":true,"type":"string","x-example":"verification","enum":["verification","magicsession","recovery","invitation"],"x-enum-name":"EmailTemplateType","x-enum-keys":[],"in":"path"},{"name":"locale","description":"Template locale","required":true,"type":"string","x-example":"af","enum":["af","ar-ae","ar-bh","ar-dz","ar-eg","ar-iq","ar-jo","ar-kw","ar-lb","ar-ly","ar-ma","ar-om","ar-qa","ar-sa","ar-sy","ar-tn","ar-ye","as","az","be","bg","bh","bn","bs","ca","cs","cy","da","de","de-at","de-ch","de-li","de-lu","el","en","en-au","en-bz","en-ca","en-gb","en-ie","en-jm","en-nz","en-tt","en-us","en-za","eo","es","es-ar","es-bo","es-cl","es-co","es-cr","es-do","es-ec","es-gt","es-hn","es-mx","es-ni","es-pa","es-pe","es-pr","es-py","es-sv","es-uy","es-ve","et","eu","fa","fi","fo","fr","fr-be","fr-ca","fr-ch","fr-lu","ga","gd","he","hi","hr","hu","id","is","it","it-ch","ja","ji","ko","ku","lt","lv","mk","ml","ms","mt","nb","ne","nl","nl-be","nn","no","pa","pl","pt","pt-br","rm","ro","ro-md","ru","ru-md","sb","sk","sl","sq","sr","sv","sv-fi","th","tn","tr","ts","ua","ur","ve","vi","xh","zh-cn","zh-hk","zh-sg","zh-tw","zu"],"x-enum-name":"EmailTemplateLocale","x-enum-keys":[],"in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"subject":{"type":"string","description":"Email Subject","default":null,"x-example":"[SUBJECT]"},"message":{"type":"string","description":"Template message","default":null,"x-example":"[MESSAGE]"},"senderName":{"type":"string","description":"Name of the email sender","default":"","x-example":"[SENDER_NAME]"},"senderEmail":{"type":"string","description":"Email of the sender","default":"","x-example":"email@example.com"},"replyTo":{"type":"string","description":"Reply to email","default":"","x-example":"email@example.com"}},"required":["subject","message"]}}]},"delete":{"summary":"Reset custom email template","operationId":"projectsDeleteEmailTemplate","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"EmailTemplate","schema":{"$ref":"#\/definitions\/emailTemplate"}}},"x-appwrite":{"method":"deleteEmailTemplate","weight":178,"cookies":false,"type":"","demo":"projects\/delete-email-template.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"type","description":"Template type","required":true,"type":"string","x-example":"verification","enum":["verification","magicsession","recovery","invitation"],"x-enum-name":"EmailTemplateType","x-enum-keys":[],"in":"path"},{"name":"locale","description":"Template locale","required":true,"type":"string","x-example":"af","enum":["af","ar-ae","ar-bh","ar-dz","ar-eg","ar-iq","ar-jo","ar-kw","ar-lb","ar-ly","ar-ma","ar-om","ar-qa","ar-sa","ar-sy","ar-tn","ar-ye","as","az","be","bg","bh","bn","bs","ca","cs","cy","da","de","de-at","de-ch","de-li","de-lu","el","en","en-au","en-bz","en-ca","en-gb","en-ie","en-jm","en-nz","en-tt","en-us","en-za","eo","es","es-ar","es-bo","es-cl","es-co","es-cr","es-do","es-ec","es-gt","es-hn","es-mx","es-ni","es-pa","es-pe","es-pr","es-py","es-sv","es-uy","es-ve","et","eu","fa","fi","fo","fr","fr-be","fr-ca","fr-ch","fr-lu","ga","gd","he","hi","hr","hu","id","is","it","it-ch","ja","ji","ko","ku","lt","lv","mk","ml","ms","mt","nb","ne","nl","nl-be","nn","no","pa","pl","pt","pt-br","rm","ro","ro-md","ru","ru-md","sb","sk","sl","sq","sr","sv","sv-fi","th","tn","tr","ts","ua","ur","ve","vi","xh","zh-cn","zh-hk","zh-sg","zh-tw","zu"],"x-enum-name":"EmailTemplateLocale","x-enum-keys":[],"in":"path"}]}},"\/projects\/{projectId}\/templates\/sms\/{type}\/{locale}":{"get":{"summary":"Get custom SMS template","operationId":"projectsGetSmsTemplate","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"SmsTemplate","schema":{"$ref":"#\/definitions\/smsTemplate"}}},"x-appwrite":{"method":"getSmsTemplate","weight":173,"cookies":false,"type":"","demo":"projects\/get-sms-template.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"type","description":"Template type","required":true,"type":"string","x-example":"verification","enum":["verification","login","invitation"],"x-enum-name":"SMSTemplateType","x-enum-keys":[],"in":"path"},{"name":"locale","description":"Template locale","required":true,"type":"string","x-example":"af","enum":["af","ar-ae","ar-bh","ar-dz","ar-eg","ar-iq","ar-jo","ar-kw","ar-lb","ar-ly","ar-ma","ar-om","ar-qa","ar-sa","ar-sy","ar-tn","ar-ye","as","az","be","bg","bh","bn","bs","ca","cs","cy","da","de","de-at","de-ch","de-li","de-lu","el","en","en-au","en-bz","en-ca","en-gb","en-ie","en-jm","en-nz","en-tt","en-us","en-za","eo","es","es-ar","es-bo","es-cl","es-co","es-cr","es-do","es-ec","es-gt","es-hn","es-mx","es-ni","es-pa","es-pe","es-pr","es-py","es-sv","es-uy","es-ve","et","eu","fa","fi","fo","fr","fr-be","fr-ca","fr-ch","fr-lu","ga","gd","he","hi","hr","hu","id","is","it","it-ch","ja","ji","ko","ku","lt","lv","mk","ml","ms","mt","nb","ne","nl","nl-be","nn","no","pa","pl","pt","pt-br","rm","ro","ro-md","ru","ru-md","sb","sk","sl","sq","sr","sv","sv-fi","th","tn","tr","ts","ua","ur","ve","vi","xh","zh-cn","zh-hk","zh-sg","zh-tw","zu"],"x-enum-name":"SMSTemplateLocale","x-enum-keys":[],"in":"path"}]},"patch":{"summary":"Update custom SMS template","operationId":"projectsUpdateSmsTemplate","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"SmsTemplate","schema":{"$ref":"#\/definitions\/smsTemplate"}}},"x-appwrite":{"method":"updateSmsTemplate","weight":175,"cookies":false,"type":"","demo":"projects\/update-sms-template.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"type","description":"Template type","required":true,"type":"string","x-example":"verification","enum":["verification","login","invitation"],"x-enum-name":"SMSTemplateType","x-enum-keys":[],"in":"path"},{"name":"locale","description":"Template locale","required":true,"type":"string","x-example":"af","enum":["af","ar-ae","ar-bh","ar-dz","ar-eg","ar-iq","ar-jo","ar-kw","ar-lb","ar-ly","ar-ma","ar-om","ar-qa","ar-sa","ar-sy","ar-tn","ar-ye","as","az","be","bg","bh","bn","bs","ca","cs","cy","da","de","de-at","de-ch","de-li","de-lu","el","en","en-au","en-bz","en-ca","en-gb","en-ie","en-jm","en-nz","en-tt","en-us","en-za","eo","es","es-ar","es-bo","es-cl","es-co","es-cr","es-do","es-ec","es-gt","es-hn","es-mx","es-ni","es-pa","es-pe","es-pr","es-py","es-sv","es-uy","es-ve","et","eu","fa","fi","fo","fr","fr-be","fr-ca","fr-ch","fr-lu","ga","gd","he","hi","hr","hu","id","is","it","it-ch","ja","ji","ko","ku","lt","lv","mk","ml","ms","mt","nb","ne","nl","nl-be","nn","no","pa","pl","pt","pt-br","rm","ro","ro-md","ru","ru-md","sb","sk","sl","sq","sr","sv","sv-fi","th","tn","tr","ts","ua","ur","ve","vi","xh","zh-cn","zh-hk","zh-sg","zh-tw","zu"],"x-enum-name":"SMSTemplateLocale","x-enum-keys":[],"in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"message":{"type":"string","description":"Template message","default":null,"x-example":"[MESSAGE]"}},"required":["message"]}}]},"delete":{"summary":"Reset custom SMS template","operationId":"projectsDeleteSmsTemplate","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"SmsTemplate","schema":{"$ref":"#\/definitions\/smsTemplate"}}},"x-appwrite":{"method":"deleteSmsTemplate","weight":177,"cookies":false,"type":"","demo":"projects\/delete-sms-template.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"type","description":"Template type","required":true,"type":"string","x-example":"verification","enum":["verification","login","invitation"],"x-enum-name":"SMSTemplateType","x-enum-keys":[],"in":"path"},{"name":"locale","description":"Template locale","required":true,"type":"string","x-example":"af","enum":["af","ar-ae","ar-bh","ar-dz","ar-eg","ar-iq","ar-jo","ar-kw","ar-lb","ar-ly","ar-ma","ar-om","ar-qa","ar-sa","ar-sy","ar-tn","ar-ye","as","az","be","bg","bh","bn","bs","ca","cs","cy","da","de","de-at","de-ch","de-li","de-lu","el","en","en-au","en-bz","en-ca","en-gb","en-ie","en-jm","en-nz","en-tt","en-us","en-za","eo","es","es-ar","es-bo","es-cl","es-co","es-cr","es-do","es-ec","es-gt","es-hn","es-mx","es-ni","es-pa","es-pe","es-pr","es-py","es-sv","es-uy","es-ve","et","eu","fa","fi","fo","fr","fr-be","fr-ca","fr-ch","fr-lu","ga","gd","he","hi","hr","hu","id","is","it","it-ch","ja","ji","ko","ku","lt","lv","mk","ml","ms","mt","nb","ne","nl","nl-be","nn","no","pa","pl","pt","pt-br","rm","ro","ro-md","ru","ru-md","sb","sk","sl","sq","sr","sv","sv-fi","th","tn","tr","ts","ua","ur","ve","vi","xh","zh-cn","zh-hk","zh-sg","zh-tw","zu"],"x-enum-name":"SMSTemplateLocale","x-enum-keys":[],"in":"path"}]}},"\/projects\/{projectId}\/webhooks":{"get":{"summary":"List webhooks","operationId":"projectsListWebhooks","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Webhooks List","schema":{"$ref":"#\/definitions\/webhookList"}}},"x-appwrite":{"method":"listWebhooks","weight":156,"cookies":false,"type":"","demo":"projects\/list-webhooks.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"}]},"post":{"summary":"Create webhook","operationId":"projectsCreateWebhook","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"201":{"description":"Webhook","schema":{"$ref":"#\/definitions\/webhook"}}},"x-appwrite":{"method":"createWebhook","weight":155,"cookies":false,"type":"","demo":"projects\/create-webhook.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Webhook name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Enable or disable a webhook.","default":true,"x-example":false},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","default":null,"x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"Webhook URL.","default":null,"x-example":null},"security":{"type":"boolean","description":"Certificate verification, false for disabled or true for enabled.","default":null,"x-example":false},"httpUser":{"type":"string","description":"Webhook HTTP user. Max length: 256 chars.","default":"","x-example":"[HTTP_USER]"},"httpPass":{"type":"string","description":"Webhook HTTP password. Max length: 256 chars.","default":"","x-example":"[HTTP_PASS]"}},"required":["name","events","url","security"]}}]}},"\/projects\/{projectId}\/webhooks\/{webhookId}":{"get":{"summary":"Get webhook","operationId":"projectsGetWebhook","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Webhook","schema":{"$ref":"#\/definitions\/webhook"}}},"x-appwrite":{"method":"getWebhook","weight":157,"cookies":false,"type":"","demo":"projects\/get-webhook.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"webhookId","description":"Webhook unique ID.","required":true,"type":"string","x-example":"[WEBHOOK_ID]","in":"path"}]},"put":{"summary":"Update webhook","operationId":"projectsUpdateWebhook","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Webhook","schema":{"$ref":"#\/definitions\/webhook"}}},"x-appwrite":{"method":"updateWebhook","weight":158,"cookies":false,"type":"","demo":"projects\/update-webhook.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"webhookId","description":"Webhook unique ID.","required":true,"type":"string","x-example":"[WEBHOOK_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Webhook name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Enable or disable a webhook.","default":true,"x-example":false},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","default":null,"x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"Webhook URL.","default":null,"x-example":null},"security":{"type":"boolean","description":"Certificate verification, false for disabled or true for enabled.","default":null,"x-example":false},"httpUser":{"type":"string","description":"Webhook HTTP user. Max length: 256 chars.","default":"","x-example":"[HTTP_USER]"},"httpPass":{"type":"string","description":"Webhook HTTP password. Max length: 256 chars.","default":"","x-example":"[HTTP_PASS]"}},"required":["name","events","url","security"]}}]},"delete":{"summary":"Delete webhook","operationId":"projectsDeleteWebhook","consumes":["application\/json"],"produces":[],"tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteWebhook","weight":160,"cookies":false,"type":"","demo":"projects\/delete-webhook.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"webhookId","description":"Webhook unique ID.","required":true,"type":"string","x-example":"[WEBHOOK_ID]","in":"path"}]}},"\/projects\/{projectId}\/webhooks\/{webhookId}\/signature":{"patch":{"summary":"Update webhook signature key","operationId":"projectsUpdateWebhookSignature","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Webhook","schema":{"$ref":"#\/definitions\/webhook"}}},"x-appwrite":{"method":"updateWebhookSignature","weight":159,"cookies":false,"type":"","demo":"projects\/update-webhook-signature.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"webhookId","description":"Webhook unique ID.","required":true,"type":"string","x-example":"[WEBHOOK_ID]","in":"path"}]}},"\/proxy\/rules":{"get":{"summary":"List Rules","operationId":"proxyListRules","consumes":["application\/json"],"produces":["application\/json"],"tags":["proxy"],"description":"Get a list of all the proxy rules. You can use the query params to filter your results.","responses":{"200":{"description":"Rule List","schema":{"$ref":"#\/definitions\/proxyRuleList"}}},"x-appwrite":{"method":"listRules","weight":289,"cookies":false,"type":"","demo":"proxy\/list-rules.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/proxy\/list-rules.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"rules.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: domain, resourceType, resourceId, url","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Rule","operationId":"proxyCreateRule","consumes":["application\/json"],"produces":["application\/json"],"tags":["proxy"],"description":"Create a new proxy rule.","responses":{"201":{"description":"Rule","schema":{"$ref":"#\/definitions\/proxyRule"}}},"x-appwrite":{"method":"createRule","weight":288,"cookies":false,"type":"","demo":"proxy\/create-rule.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/proxy\/create-rule.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"rules.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"domain":{"type":"string","description":"Domain name.","default":null,"x-example":null},"resourceType":{"type":"string","description":"Action definition for the rule. Possible values are \"api\", \"function\"","default":null,"x-example":"api","enum":["api","function"],"x-enum-name":null,"x-enum-keys":[]},"resourceId":{"type":"string","description":"ID of resource for the action type. If resourceType is \"api\", leave empty. If resourceType is \"function\", provide ID of the function.","default":"","x-example":"[RESOURCE_ID]"}},"required":["domain","resourceType"]}}]}},"\/proxy\/rules\/{ruleId}":{"get":{"summary":"Get Rule","operationId":"proxyGetRule","consumes":["application\/json"],"produces":["application\/json"],"tags":["proxy"],"description":"Get a proxy rule by its unique ID.","responses":{"200":{"description":"Rule","schema":{"$ref":"#\/definitions\/proxyRule"}}},"x-appwrite":{"method":"getRule","weight":290,"cookies":false,"type":"","demo":"proxy\/get-rule.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/proxy\/get-rule.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"rules.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"ruleId","description":"Rule ID.","required":true,"type":"string","x-example":"[RULE_ID]","in":"path"}]},"delete":{"summary":"Delete Rule","operationId":"proxyDeleteRule","consumes":["application\/json"],"produces":[],"tags":["proxy"],"description":"Delete a proxy rule by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteRule","weight":291,"cookies":false,"type":"","demo":"proxy\/delete-rule.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/proxy\/delete-rule.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"rules.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"ruleId","description":"Rule ID.","required":true,"type":"string","x-example":"[RULE_ID]","in":"path"}]}},"\/proxy\/rules\/{ruleId}\/verification":{"patch":{"summary":"Update Rule Verification Status","operationId":"proxyUpdateRuleVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["proxy"],"description":"","responses":{"200":{"description":"Rule","schema":{"$ref":"#\/definitions\/proxyRule"}}},"x-appwrite":{"method":"updateRuleVerification","weight":292,"cookies":false,"type":"","demo":"proxy\/update-rule-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"rules.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"ruleId","description":"Rule ID.","required":true,"type":"string","x-example":"[RULE_ID]","in":"path"}]}},"\/storage\/buckets":{"get":{"summary":"List buckets","operationId":"storageListBuckets","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a list of all the storage buckets. You can use the query params to filter your results.","responses":{"200":{"description":"Buckets List","schema":{"$ref":"#\/definitions\/bucketList"}}},"x-appwrite":{"method":"listBuckets","weight":186,"cookies":false,"type":"","demo":"storage\/list-buckets.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/list-buckets.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: enabled, name, fileSecurity, maximumFileSize, encryption, antivirus","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create bucket","operationId":"storageCreateBucket","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Create a new storage bucket.","responses":{"201":{"description":"Bucket","schema":{"$ref":"#\/definitions\/bucket"}}},"x-appwrite":{"method":"createBucket","weight":185,"cookies":false,"type":"","demo":"storage\/create-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"bucketId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, no user is granted with any permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":false,"x-example":false},"enabled":{"type":"boolean","description":"Is bucket enabled? When set to 'disabled', users cannot access the files in this bucket but Server SDKs with and API key can still access the bucket. No files are lost when this is toggled.","default":true,"x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB.","default":30000000,"x-example":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","default":[],"x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","default":"none","x-example":"none","enum":["none","gzip","zstd"],"x-enum-name":null,"x-enum-keys":[]},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","default":true,"x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","default":true,"x-example":false}},"required":["bucketId","name"]}}]}},"\/storage\/buckets\/{bucketId}":{"get":{"summary":"Get bucket","operationId":"storageGetBucket","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a storage bucket by its unique ID. This endpoint response returns a JSON object with the storage bucket metadata.","responses":{"200":{"description":"Bucket","schema":{"$ref":"#\/definitions\/bucket"}}},"x-appwrite":{"method":"getBucket","weight":187,"cookies":false,"type":"","demo":"storage\/get-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"bucketId","description":"Bucket unique ID.","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"}]},"put":{"summary":"Update bucket","operationId":"storageUpdateBucket","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Update a storage bucket by its unique ID.","responses":{"200":{"description":"Bucket","schema":{"$ref":"#\/definitions\/bucket"}}},"x-appwrite":{"method":"updateBucket","weight":188,"cookies":false,"type":"","demo":"storage\/update-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"bucketId","description":"Bucket unique ID.","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Bucket name","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":false,"x-example":false},"enabled":{"type":"boolean","description":"Is bucket enabled? When set to 'disabled', users cannot access the files in this bucket but Server SDKs with and API key can still access the bucket. No files are lost when this is toggled.","default":true,"x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB.","default":null,"x-example":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","default":[],"x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","default":"none","x-example":"none","enum":["none","gzip","zstd"],"x-enum-name":null,"x-enum-keys":[]},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","default":true,"x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","default":true,"x-example":false}},"required":["name"]}}]},"delete":{"summary":"Delete bucket","operationId":"storageDeleteBucket","consumes":["application\/json"],"produces":[],"tags":["storage"],"description":"Delete a storage bucket by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteBucket","weight":189,"cookies":false,"type":"","demo":"storage\/delete-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"bucketId","description":"Bucket unique ID.","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files":{"get":{"summary":"List files","operationId":"storageListFiles","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a list of all the user files. You can use the query params to filter your results.","responses":{"200":{"description":"Files List","schema":{"$ref":"#\/definitions\/fileList"}}},"x-appwrite":{"method":"listFiles","weight":191,"cookies":false,"type":"","demo":"storage\/list-files.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/list-files.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create file","operationId":"storageCreateFile","consumes":["multipart\/form-data"],"produces":["application\/json"],"tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"createFile","weight":190,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","required":true,"x-upload-id":true,"type":"string","x-example":"[FILE_ID]","in":"formData"},{"name":"file","description":"Binary file. Appwrite SDKs provide helpers to handle file input. [Learn about file input](https:\/\/appwrite.io\/docs\/storage#file-input).","required":true,"type":"file","in":"formData"},{"name":"permissions","description":"An array of permission strings. By default, only the current user is granted all permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"x-example":"[\"read(\"any\")\"]","in":"formData"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get file","operationId":"storageGetFile","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"getFile","weight":192,"cookies":false,"type":"","demo":"storage\/get-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID.","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"}]},"put":{"summary":"Update file","operationId":"storageUpdateFile","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Update a file by its unique ID. Only users with write permissions have access to update this resource.","responses":{"200":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"updateFile","weight":196,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File unique ID.","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Name of the file","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission string. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","consumes":["application\/json"],"produces":[],"tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":197,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID.","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/download":{"get":{"summary":"Get file for download","operationId":"storageGetFileDownload","consumes":["application\/json"],"produces":["*\/*"],"tags":["storage"],"description":"Get a file content by its unique ID. The endpoint response return with a 'Content-Disposition: attachment' header that tells the browser to start downloading the file to user downloads directory.","responses":{"200":{"description":"File","schema":{"type":"file"}}},"x-appwrite":{"method":"getFileDownload","weight":194,"cookies":false,"type":"location","demo":"storage\/get-file-download.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-download.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID.","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/preview":{"get":{"summary":"Get file preview","operationId":"storageGetFilePreview","consumes":["application\/json"],"produces":["image\/*"],"tags":["storage"],"description":"Get a file preview image. Currently, this method supports preview for image files (jpg, png, and gif), other supported formats, like pdf, docs, slides, and spreadsheets, will return the file icon image. You can also pass query string arguments for cutting and resizing your preview image. Preview is supported only for image files smaller than 10MB.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFilePreview","weight":193,"cookies":false,"type":"location","demo":"storage\/get-file-preview.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-preview.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"},{"name":"width","description":"Resize preview image width, Pass an integer between 0 to 4000.","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 4000.","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"gravity","description":"Image crop gravity. Can be one of center,top-left,top,top-right,left,right,bottom-left,bottom,bottom-right","required":false,"type":"string","x-example":"center","enum":["center","top-left","top","top-right","left","right","bottom-left","bottom","bottom-right"],"x-enum-name":"ImageGravity","x-enum-keys":[],"default":"center","in":"query"},{"name":"quality","description":"Preview image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"borderWidth","description":"Preview image border in pixels. Pass an integer between 0 to 100. Defaults to 0.","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"borderColor","description":"Preview image border color. Use a valid HEX color, no # is needed for prefix.","required":false,"type":"string","default":"","in":"query"},{"name":"borderRadius","description":"Preview image border radius in pixels. Pass an integer between 0 to 4000.","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"opacity","description":"Preview image opacity. Only works with images having an alpha channel (like png). Pass a number between 0 to 1.","required":false,"type":"number","format":"float","x-example":0,"default":1,"in":"query"},{"name":"rotation","description":"Preview image rotation in degrees. Pass an integer between -360 and 360.","required":false,"type":"integer","format":"int32","x-example":-360,"default":0,"in":"query"},{"name":"background","description":"Preview image background color. Only works with transparent images (png). Use a valid HEX color, no # is needed for prefix.","required":false,"type":"string","default":"","in":"query"},{"name":"output","description":"Output format type (jpeg, jpg, png, gif and webp).","required":false,"type":"string","x-example":"jpg","enum":["jpg","jpeg","gif","png","webp"],"x-enum-name":"ImageFormat","x-enum-keys":[],"default":"","in":"query"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/view":{"get":{"summary":"Get file for view","operationId":"storageGetFileView","consumes":["application\/json"],"produces":["*\/*"],"tags":["storage"],"description":"Get a file content by its unique ID. This endpoint is similar to the download method but returns with no 'Content-Disposition: attachment' header.","responses":{"200":{"description":"File","schema":{"type":"file"}}},"x-appwrite":{"method":"getFileView","weight":195,"cookies":false,"type":"location","demo":"storage\/get-file-view.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-view.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID.","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"}]}},"\/storage\/usage":{"get":{"summary":"Get usage stats for storage","operationId":"storageGetUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"","responses":{"200":{"description":"StorageUsage","schema":{"$ref":"#\/definitions\/usageStorage"}}},"x-appwrite":{"method":"getUsage","weight":198,"cookies":false,"type":"","demo":"storage\/get-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","enum":["24h","30d","90d"],"x-enum-name":"StorageUsageRange","x-enum-keys":["Twenty Four Hours","Thirty Days","Ninety Days"],"default":"30d","in":"query"}]}},"\/storage\/{bucketId}\/usage":{"get":{"summary":"Get usage stats for storage bucket","operationId":"storageGetBucketUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"","responses":{"200":{"description":"UsageBuckets","schema":{"$ref":"#\/definitions\/usageBuckets"}}},"x-appwrite":{"method":"getBucketUsage","weight":199,"cookies":false,"type":"","demo":"storage\/get-bucket-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"bucketId","description":"Bucket ID.","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","enum":["24h","30d","90d"],"x-enum-name":"StorageUsageRange","x-enum-keys":["Twenty Four Hours","Thirty Days","Ninety Days"],"default":"30d","in":"query"}]}},"\/teams":{"get":{"summary":"List teams","operationId":"teamsList","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get a list of all the teams in which the current user is a member. You can use the parameters to filter your results.","responses":{"200":{"description":"Teams List","schema":{"$ref":"#\/definitions\/teamList"}}},"x-appwrite":{"method":"list","weight":201,"cookies":false,"type":"","demo":"teams\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-teams.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total, billingPlan","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create team","operationId":"teamsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"create","weight":200,"cookies":false,"type":"","demo":"teams\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/create-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"teamId":{"type":"string","description":"Team ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[TEAM_ID]"},"name":{"type":"string","description":"Team name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"roles":{"type":"array","description":"Array of strings. Use this param to set the roles in the team for the user who created it. The default role is **owner**. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","default":["owner"],"x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}]}},"\/teams\/{teamId}":{"get":{"summary":"Get team","operationId":"teamsGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"get","weight":202,"cookies":false,"type":"","demo":"teams\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams","offline-key":"{teamId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"}]},"put":{"summary":"Update name","operationId":"teamsUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Update the team's name by its unique ID.","responses":{"200":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"updateName","weight":204,"cookies":false,"type":"","demo":"teams\/update-name.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-name.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams","offline-key":"{teamId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"New team name. Max length: 128 chars.","default":null,"x-example":"[NAME]"}},"required":["name"]}}]},"delete":{"summary":"Delete team","operationId":"teamsDelete","consumes":["application\/json"],"produces":[],"tags":["teams"],"description":"Delete a team using its ID. Only team members with the owner role can delete the team.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":206,"cookies":false,"type":"","demo":"teams\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/delete-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"}]}},"\/teams\/{teamId}\/logs":{"get":{"summary":"List team logs","operationId":"teamsListLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get the team activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listLogs","weight":213,"cookies":false,"type":"","demo":"teams\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/teams\/{teamId}\/memberships":{"get":{"summary":"List team memberships","operationId":"teamsListMemberships","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"listMemberships","weight":208,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/memberships","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create team membership","operationId":"teamsCreateMembership","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Invite a new member to join your team. Provide an ID for existing users, or invite unregistered users using an email or phone number. If initiated from a Client SDK, Appwrite will send an email or sms with a link to join the team to the invited user, and an account will be created for them if one doesn't exist. If initiated from a Server SDK, the new member will be added automatically to the team.\n\nYou only need to provide one of a user ID, email, or phone number. Appwrite will prioritize accepting the user ID > email > phone number if you provide more than one of these parameters.\n\nUse the `url` parameter to redirect the user from the invitation email to your app. After the user is redirected, use the [Update Team Membership Status](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/teams#updateMembershipStatus) endpoint to allow the user to accept the invitation to the team. \n\nPlease note that to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) Appwrite will accept the only redirect URLs under the domains you have added as a platform on the Appwrite Console.\n","responses":{"201":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"createMembership","weight":207,"cookies":false,"type":"","demo":"teams\/create-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/create-team-membership.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"email":{"type":"string","description":"Email of the new team member.","default":"","x-example":"email@example.com"},"userId":{"type":"string","description":"ID of the user to be added to a team.","default":"","x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":"","x-example":"+12065550100"},"roles":{"type":"array","description":"Array of strings. Use this param to set the user roles in the team. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":"","x-example":"https:\/\/example.com"},"name":{"type":"string","description":"Name of the new team member. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["roles"]}}]}},"\/teams\/{teamId}\/memberships\/{membershipId}":{"get":{"summary":"Get team membership","operationId":"teamsGetMembership","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get a team member by the membership unique id. All team members have read access for this resource.","responses":{"200":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"getMembership","weight":209,"cookies":false,"type":"","demo":"teams\/get-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-member.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/memberships","offline-key":"{membershipId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"type":"string","x-example":"[MEMBERSHIP_ID]","in":"path"}]},"patch":{"summary":"Update membership","operationId":"teamsUpdateMembership","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Modify the roles of a team member. Only team members with the owner role have access to this endpoint. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions).\n","responses":{"200":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"updateMembership","weight":210,"cookies":false,"type":"","demo":"teams\/update-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"type":"string","x-example":"[MEMBERSHIP_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"roles":{"type":"array","description":"An array of strings. Use this param to set the user's roles in the team. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}}},"required":["roles"]}}]},"delete":{"summary":"Delete team membership","operationId":"teamsDeleteMembership","consumes":["application\/json"],"produces":[],"tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":212,"cookies":false,"type":"","demo":"teams\/delete-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/delete-team-membership.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"type":"string","x-example":"[MEMBERSHIP_ID]","in":"path"}]}},"\/teams\/{teamId}\/memberships\/{membershipId}\/status":{"patch":{"summary":"Update team membership status","operationId":"teamsUpdateMembershipStatus","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Use this endpoint to allow a user to accept an invitation to join a team after being redirected back to your app from the invitation email received by the user.\n\nIf the request is successful, a session for the user is automatically created.\n","responses":{"200":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"updateMembershipStatus","weight":211,"cookies":false,"type":"","demo":"teams\/update-membership-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"public","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"type":"string","x-example":"[MEMBERSHIP_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Secret key.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/teams\/{teamId}\/prefs":{"get":{"summary":"Get team preferences","operationId":"teamsGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get the team's shared preferences by its unique ID. If a preference doesn't need to be shared by all team members, prefer storing them in [user preferences](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#getPrefs).","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":203,"cookies":false,"type":"","demo":"teams\/get-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/prefs","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"}]},"put":{"summary":"Update preferences","operationId":"teamsUpdatePrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Update the team's preferences by its unique ID. The object you pass is stored as is and replaces any previous value. The maximum allowed prefs size is 64kB and throws an error if exceeded.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"updatePrefs","weight":205,"cookies":false,"type":"","demo":"teams\/update-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/prefs","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"prefs":{"type":"object","description":"Prefs key-value JSON object.","default":{},"x-example":"{}"}},"required":["prefs"]}}]}},"\/users":{"get":{"summary":"List users","operationId":"usersList","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get a list of all the project's users. You can use the query params to filter your results.","responses":{"200":{"description":"Users List","schema":{"$ref":"#\/definitions\/userList"}}},"x-appwrite":{"method":"list","weight":223,"cookies":false,"type":"","demo":"users\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-users.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, email, phone, status, passwordUpdate, registration, emailVerification, phoneVerification","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create user","operationId":"usersCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"create","weight":214,"cookies":false,"type":"","demo":"users\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"},"password":{"type":"string","description":"Plain text user password. Must be at least 8 chars.","default":"","x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId"]}}]}},"\/users\/argon2":{"post":{"summary":"Create user with Argon2 password","operationId":"usersCreateArgon2User","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Argon2](https:\/\/en.wikipedia.org\/wiki\/Argon2) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createArgon2User","weight":217,"cookies":false,"type":"","demo":"users\/create-argon2user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-argon2-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Argon2.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/bcrypt":{"post":{"summary":"Create user with bcrypt password","operationId":"usersCreateBcryptUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Bcrypt](https:\/\/en.wikipedia.org\/wiki\/Bcrypt) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createBcryptUser","weight":215,"cookies":false,"type":"","demo":"users\/create-bcrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-bcrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Bcrypt.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/identities":{"get":{"summary":"List Identities","operationId":"usersListIdentities","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get identities for all users.","responses":{"200":{"description":"Identities List","schema":{"$ref":"#\/definitions\/identityList"}}},"x-appwrite":{"method":"listIdentities","weight":231,"cookies":false,"type":"","demo":"users\/list-identities.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-identities.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, provider, providerUid, providerEmail, providerAccessTokenExpiry","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]}},"\/users\/identities\/{identityId}":{"delete":{"summary":"Delete identity","operationId":"usersDeleteIdentity","consumes":["application\/json"],"produces":[],"tags":["users"],"description":"Delete an identity by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIdentity","weight":251,"cookies":false,"type":"","demo":"users\/delete-identity.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-identity.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"identityId","description":"Identity ID.","required":true,"type":"string","x-example":"[IDENTITY_ID]","in":"path"}]}},"\/users\/md5":{"post":{"summary":"Create user with MD5 password","operationId":"usersCreateMD5User","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [MD5](https:\/\/en.wikipedia.org\/wiki\/MD5) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createMD5User","weight":216,"cookies":false,"type":"","demo":"users\/create-m-d5user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-md5-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using MD5.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/phpass":{"post":{"summary":"Create user with PHPass password","operationId":"usersCreatePHPassUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [PHPass](https:\/\/www.openwall.com\/phpass\/) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createPHPassUser","weight":219,"cookies":false,"type":"","demo":"users\/create-p-h-pass-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-phpass-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or pass the string `ID.unique()`to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using PHPass.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/scrypt":{"post":{"summary":"Create user with Scrypt password","operationId":"usersCreateScryptUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt](https:\/\/github.com\/Tarsnap\/scrypt) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createScryptUser","weight":220,"cookies":false,"type":"","demo":"users\/create-scrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt.","default":null,"x-example":"password"},"passwordSalt":{"type":"string","description":"Optional salt used to hash password.","default":null,"x-example":"[PASSWORD_SALT]"},"passwordCpu":{"type":"integer","description":"Optional CPU cost used to hash password.","default":null,"x-example":null},"passwordMemory":{"type":"integer","description":"Optional memory cost used to hash password.","default":null,"x-example":null},"passwordParallel":{"type":"integer","description":"Optional parallelization cost used to hash password.","default":null,"x-example":null},"passwordLength":{"type":"integer","description":"Optional hash length used to hash password.","default":null,"x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordCpu","passwordMemory","passwordParallel","passwordLength"]}}]}},"\/users\/scrypt-modified":{"post":{"summary":"Create user with Scrypt modified password","operationId":"usersCreateScryptModifiedUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt Modified](https:\/\/gist.github.com\/Meldiron\/eecf84a0225eccb5a378d45bb27462cc) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createScryptModifiedUser","weight":221,"cookies":false,"type":"","demo":"users\/create-scrypt-modified-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-modified-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt Modified.","default":null,"x-example":"password"},"passwordSalt":{"type":"string","description":"Salt used to hash password.","default":null,"x-example":"[PASSWORD_SALT]"},"passwordSaltSeparator":{"type":"string","description":"Salt separator used to hash password.","default":null,"x-example":"[PASSWORD_SALT_SEPARATOR]"},"passwordSignerKey":{"type":"string","description":"Signer key used to hash password.","default":null,"x-example":"[PASSWORD_SIGNER_KEY]"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordSaltSeparator","passwordSignerKey"]}}]}},"\/users\/sha":{"post":{"summary":"Create user with SHA password","operationId":"usersCreateSHAUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [SHA](https:\/\/en.wikipedia.org\/wiki\/Secure_Hash_Algorithm) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createSHAUser","weight":218,"cookies":false,"type":"","demo":"users\/create-s-h-a-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-sha-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using SHA.","default":null,"x-example":"password"},"passwordVersion":{"type":"string","description":"Optional SHA version used to hash password. Allowed values are: 'sha1', 'sha224', 'sha256', 'sha384', 'sha512\/224', 'sha512\/256', 'sha512', 'sha3-224', 'sha3-256', 'sha3-384', 'sha3-512'","default":"","x-example":"sha1","enum":["sha1","sha224","sha256","sha384","sha512\/224","sha512\/256","sha512","sha3-224","sha3-256","sha3-384","sha3-512"],"x-enum-name":"PasswordHash","x-enum-keys":[]},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/usage":{"get":{"summary":"Get usage stats for the users API","operationId":"usersGetUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"","responses":{"200":{"description":"UsageUsers","schema":{"$ref":"#\/definitions\/usageUsers"}}},"x-appwrite":{"method":"getUsage","weight":252,"cookies":false,"type":"","demo":"users\/get-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","enum":["24h","30d","90d"],"x-enum-name":"UserUsageRange","x-enum-keys":["Twenty Four Hours","Thirty Days","Ninety Days"],"default":"30d","in":"query"}]}},"\/users\/{userId}":{"get":{"summary":"Get user","operationId":"usersGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get a user by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"get","weight":224,"cookies":false,"type":"","demo":"users\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]},"delete":{"summary":"Delete user","operationId":"usersDelete","consumes":["application\/json"],"produces":[],"tags":["users"],"description":"Delete a user by its unique ID, thereby releasing it's ID. Since ID is released and can be reused, all user-related resources like documents or storage files should be deleted before user deletion. If you want to keep ID reserved, use the [updateStatus](https:\/\/appwrite.io\/docs\/server\/users#usersUpdateStatus) endpoint instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":249,"cookies":false,"type":"","demo":"users\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]}},"\/users\/{userId}\/email":{"patch":{"summary":"Update email","operationId":"usersUpdateEmail","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user email by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateEmail","weight":237,"cookies":false,"type":"","demo":"users\/update-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"}},"required":["email"]}}]}},"\/users\/{userId}\/labels":{"put":{"summary":"Update user labels","operationId":"usersUpdateLabels","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user labels by its unique ID. \n\nLabels can be used to grant access to resources. While teams are a way for user's to share access to a resource, labels can be defined by the developer to grant access without an invitation. See the [Permissions docs](https:\/\/appwrite.io\/docs\/permissions) for more info.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateLabels","weight":233,"cookies":false,"type":"","demo":"users\/update-labels.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-labels.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"labels":{"type":"array","description":"Array of user labels. Replaces the previous labels. Maximum of 1000 labels are allowed, each up to 36 alphanumeric characters long.","default":null,"x-example":null,"items":{"type":"string"}}},"required":["labels"]}}]}},"\/users\/{userId}\/logs":{"get":{"summary":"List user logs","operationId":"usersListLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listLogs","weight":229,"cookies":false,"type":"","demo":"users\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/users\/{userId}\/memberships":{"get":{"summary":"List user memberships","operationId":"usersListMemberships","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user membership list by its unique ID.","responses":{"200":{"description":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"listMemberships","weight":228,"cookies":false,"type":"","demo":"users\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-memberships.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]}},"\/users\/{userId}\/mfa":{"patch":{"summary":"Update MFA","operationId":"usersUpdateMfa","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateMfa","weight":242,"cookies":false,"type":"","demo":"users\/update-mfa.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-mfa.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"mfa":{"type":"boolean","description":"Enable or disable MFA.","default":null,"x-example":false}},"required":["mfa"]}}]}},"\/users\/{userId}\/mfa\/{provider}":{"delete":{"summary":"Delete Authenticator","operationId":"usersDeleteAuthenticator","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"deleteAuthenticator","weight":244,"cookies":false,"type":"","demo":"users\/delete-authenticator.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-mfa.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"provider","description":"Provider.","required":true,"type":"string","x-example":"totp","enum":["totp"],"x-enum-name":"AuthenticatorProvider","x-enum-keys":[],"in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"otp":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[OTP]"}},"required":["otp"]}}]}},"\/users\/{userId}\/name":{"patch":{"summary":"Update name","operationId":"usersUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user name by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateName","weight":235,"cookies":false,"type":"","demo":"users\/update-name.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-name.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"User name. Max length: 128 chars.","default":null,"x-example":"[NAME]"}},"required":["name"]}}]}},"\/users\/{userId}\/password":{"patch":{"summary":"Update password","operationId":"usersUpdatePassword","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user password by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePassword","weight":236,"cookies":false,"type":"","demo":"users\/update-password.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-password.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"password":{"type":"string","description":"New user password. Must be at least 8 chars.","default":null,"x-example":null}},"required":["password"]}}]}},"\/users\/{userId}\/phone":{"patch":{"summary":"Update phone","operationId":"usersUpdatePhone","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user phone by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePhone","weight":238,"cookies":false,"type":"","demo":"users\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"number":{"type":"string","description":"User phone number.","default":null,"x-example":"+12065550100"}},"required":["number"]}}]}},"\/users\/{userId}\/prefs":{"get":{"summary":"Get user preferences","operationId":"usersGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user preferences by its unique ID.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":225,"cookies":false,"type":"","demo":"users\/get-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]},"patch":{"summary":"Update user preferences","operationId":"usersUpdatePrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user preferences by its unique ID. The object you pass is stored as is, and replaces any previous value. The maximum allowed prefs size is 64kB and throws error if exceeded.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"updatePrefs","weight":240,"cookies":false,"type":"","demo":"users\/update-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"prefs":{"type":"object","description":"Prefs key-value JSON object.","default":{},"x-example":"{}"}},"required":["prefs"]}}]}},"\/users\/{userId}\/providers":{"get":{"summary":"List Providers","operationId":"usersListProviders","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"","responses":{"200":{"description":"MFAProviders","schema":{"$ref":"#\/definitions\/mfaProviders"}}},"x-appwrite":{"method":"listProviders","weight":243,"cookies":false,"type":"","demo":"users\/list-providers.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-providers.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]}},"\/users\/{userId}\/sessions":{"get":{"summary":"List user sessions","operationId":"usersListSessions","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user sessions list by its unique ID.","responses":{"200":{"description":"Sessions List","schema":{"$ref":"#\/definitions\/sessionList"}}},"x-appwrite":{"method":"listSessions","weight":227,"cookies":false,"type":"","demo":"users\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]},"post":{"summary":"Create session","operationId":"usersCreateSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Creates a session for a user. Returns an immediately usable session object.\n\nIf you want to generate a token for a custom authentication flow, use the [POST \/users\/{userId}\/tokens](https:\/\/appwrite.io\/docs\/server\/users#createToken) endpoint.","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"createSession","weight":245,"cookies":false,"type":"","demo":"users\/create-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-session.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]},"delete":{"summary":"Delete user sessions","operationId":"usersDeleteSessions","consumes":["application\/json"],"produces":[],"tags":["users"],"description":"Delete all user's sessions by using the user's unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":248,"cookies":false,"type":"","demo":"users\/delete-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]}},"\/users\/{userId}\/sessions\/{sessionId}":{"delete":{"summary":"Delete user session","operationId":"usersDeleteSession","consumes":["application\/json"],"produces":[],"tags":["users"],"description":"Delete a user sessions by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSession","weight":247,"cookies":false,"type":"","demo":"users\/delete-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-user-session.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"sessionId","description":"Session ID.","required":true,"type":"string","x-example":"[SESSION_ID]","in":"path"}]}},"\/users\/{userId}\/status":{"patch":{"summary":"Update user status","operationId":"usersUpdateStatus","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user status by its unique ID. Use this endpoint as an alternative to deleting a user if you want to keep user's ID reserved.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateStatus","weight":232,"cookies":false,"type":"","demo":"users\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"status":{"type":"boolean","description":"User Status. To activate the user pass `true` and to block the user pass `false`.","default":null,"x-example":false}},"required":["status"]}}]}},"\/users\/{userId}\/targets":{"get":{"summary":"List User Targets","operationId":"usersListTargets","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"","responses":{"200":{"description":"Target list","schema":{"$ref":"#\/definitions\/targetList"}}},"x-appwrite":{"method":"listTargets","weight":230,"cookies":false,"type":"","demo":"users\/list-targets.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-targets.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.read","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, email, phone, status, passwordUpdate, registration, emailVerification, phoneVerification","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"post":{"summary":"Create User Target","operationId":"usersCreateTarget","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"","responses":{"201":{"description":"Target","schema":{"$ref":"#\/definitions\/target"}}},"x-appwrite":{"method":"createTarget","weight":222,"cookies":false,"type":"","demo":"users\/create-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-target.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"targetId":{"type":"string","description":"Target ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[TARGET_ID]"},"providerType":{"type":"string","description":"The target provider type. Can be one of the following: `email`, `sms` or `push`.","default":null,"x-example":"email","enum":["email","sms","push"],"x-enum-name":"MessagingProviderType","x-enum-keys":[]},"identifier":{"type":"string","description":"The target identifier (token, email, phone etc.)","default":null,"x-example":"[IDENTIFIER]"},"providerId":{"type":"string","description":"Provider ID. Message will be sent to this target from the specified provider ID. If no provider ID is set the first setup provider will be used.","default":"","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Target name. Max length: 128 chars. For example: My Awesome App Galaxy S23.","default":"","x-example":"[NAME]"}},"required":["targetId","providerType","identifier"]}}]}},"\/users\/{userId}\/targets\/{targetId}":{"get":{"summary":"Get User Target","operationId":"usersGetTarget","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"","responses":{"200":{"description":"Target","schema":{"$ref":"#\/definitions\/target"}}},"x-appwrite":{"method":"getTarget","weight":226,"cookies":false,"type":"","demo":"users\/get-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-target.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.read","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"targetId","description":"Target ID.","required":true,"type":"string","x-example":"[TARGET_ID]","in":"path"}]},"patch":{"summary":"Update User target","operationId":"usersUpdateTarget","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"","responses":{"200":{"description":"Target","schema":{"$ref":"#\/definitions\/target"}}},"x-appwrite":{"method":"updateTarget","weight":241,"cookies":false,"type":"","demo":"users\/update-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-target.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"targetId","description":"Target ID.","required":true,"type":"string","x-example":"[TARGET_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"identifier":{"type":"string","description":"The target identifier (token, email, phone etc.)","default":"","x-example":"[IDENTIFIER]"},"providerId":{"type":"string","description":"Provider ID. Message will be sent to this target from the specified provider ID. If no provider ID is set the first setup provider will be used.","default":"","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Target name. Max length: 128 chars. For example: My Awesome App Galaxy S23.","default":"","x-example":"[NAME]"}}}}]},"delete":{"summary":"Delete user target","operationId":"usersDeleteTarget","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteTarget","weight":250,"cookies":false,"type":"","demo":"users\/delete-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-target.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"targetId","description":"Target ID.","required":true,"type":"string","x-example":"[TARGET_ID]","in":"path"}]}},"\/users\/{userId}\/tokens":{"post":{"summary":"Create token","operationId":"usersCreateToken","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Returns a token with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [PUT \/account\/sessions\/custom](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateCustomSession) endpoint to complete the login process.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createToken","weight":246,"cookies":false,"type":"","demo":"users\/create-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-token.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"length":{"type":"integer","description":"Token length in characters. The default length is 6 characters","default":6,"x-example":4},"expire":{"type":"integer","description":"Token expiration period in seconds. The default expiration is 15 minutes.","default":900,"x-example":60}}}}]}},"\/users\/{userId}\/verification":{"patch":{"summary":"Update email verification","operationId":"usersUpdateEmailVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user email verification status by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateEmailVerification","weight":239,"cookies":false,"type":"","demo":"users\/update-email-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-email-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"emailVerification":{"type":"boolean","description":"User email verification status.","default":null,"x-example":false}},"required":["emailVerification"]}}]}},"\/users\/{userId}\/verification\/phone":{"patch":{"summary":"Update phone verification","operationId":"usersUpdatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user phone verification status by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePhoneVerification","weight":234,"cookies":false,"type":"","demo":"users\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"phoneVerification":{"type":"boolean","description":"User phone verification status.","default":null,"x-example":false}},"required":["phoneVerification"]}}]}},"\/vcs\/github\/installations\/{installationId}\/providerRepositories":{"get":{"summary":"List Repositories","operationId":"vcsListRepositories","consumes":["application\/json"],"produces":["application\/json"],"tags":["vcs"],"description":"","responses":{"200":{"description":"Provider Repositories List","schema":{"$ref":"#\/definitions\/providerRepositoryList"}}},"x-appwrite":{"method":"listRepositories","weight":256,"cookies":false,"type":"","demo":"vcs\/list-repositories.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"type":"string","x-example":"[INSTALLATION_ID]","in":"path"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create repository","operationId":"vcsCreateRepository","consumes":["application\/json"],"produces":["application\/json"],"tags":["vcs"],"description":"","responses":{"200":{"description":"ProviderRepository","schema":{"$ref":"#\/definitions\/providerRepository"}}},"x-appwrite":{"method":"createRepository","weight":257,"cookies":false,"type":"","demo":"vcs\/create-repository.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"type":"string","x-example":"[INSTALLATION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Repository name (slug)","default":null,"x-example":"[NAME]"},"private":{"type":"boolean","description":"Mark repository public or private","default":null,"x-example":false}},"required":["name","private"]}}]}},"\/vcs\/github\/installations\/{installationId}\/providerRepositories\/{providerRepositoryId}":{"get":{"summary":"Get repository","operationId":"vcsGetRepository","consumes":["application\/json"],"produces":["application\/json"],"tags":["vcs"],"description":"","responses":{"200":{"description":"ProviderRepository","schema":{"$ref":"#\/definitions\/providerRepository"}}},"x-appwrite":{"method":"getRepository","weight":258,"cookies":false,"type":"","demo":"vcs\/get-repository.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"type":"string","x-example":"[INSTALLATION_ID]","in":"path"},{"name":"providerRepositoryId","description":"Repository Id","required":true,"type":"string","x-example":"[PROVIDER_REPOSITORY_ID]","in":"path"}]}},"\/vcs\/github\/installations\/{installationId}\/providerRepositories\/{providerRepositoryId}\/branches":{"get":{"summary":"List Repository Branches","operationId":"vcsListRepositoryBranches","consumes":["application\/json"],"produces":["application\/json"],"tags":["vcs"],"description":"","responses":{"200":{"description":"Branches List","schema":{"$ref":"#\/definitions\/branchList"}}},"x-appwrite":{"method":"listRepositoryBranches","weight":259,"cookies":false,"type":"","demo":"vcs\/list-repository-branches.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"type":"string","x-example":"[INSTALLATION_ID]","in":"path"},{"name":"providerRepositoryId","description":"Repository Id","required":true,"type":"string","x-example":"[PROVIDER_REPOSITORY_ID]","in":"path"}]}},"\/vcs\/github\/installations\/{installationId}\/providerRepositories\/{providerRepositoryId}\/detection":{"post":{"summary":"Detect runtime settings from source code","operationId":"vcsCreateRepositoryDetection","consumes":["application\/json"],"produces":["application\/json"],"tags":["vcs"],"description":"","responses":{"200":{"description":"Detection","schema":{"$ref":"#\/definitions\/detection"}}},"x-appwrite":{"method":"createRepositoryDetection","weight":255,"cookies":false,"type":"","demo":"vcs\/create-repository-detection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"type":"string","x-example":"[INSTALLATION_ID]","in":"path"},{"name":"providerRepositoryId","description":"Repository Id","required":true,"type":"string","x-example":"[PROVIDER_REPOSITORY_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerRootDirectory":{"type":"string","description":"Path to Root Directory","default":"","x-example":"[PROVIDER_ROOT_DIRECTORY]"}}}}]}},"\/vcs\/github\/installations\/{installationId}\/repositories\/{repositoryId}":{"patch":{"summary":"Authorize external deployment","operationId":"vcsUpdateExternalDeployments","consumes":["application\/json"],"produces":[],"tags":["vcs"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"updateExternalDeployments","weight":264,"cookies":false,"type":"","demo":"vcs\/update-external-deployments.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"type":"string","x-example":"[INSTALLATION_ID]","in":"path"},{"name":"repositoryId","description":"VCS Repository Id","required":true,"type":"string","x-example":"[REPOSITORY_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerPullRequestId":{"type":"string","description":"GitHub Pull Request Id","default":null,"x-example":"[PROVIDER_PULL_REQUEST_ID]"}},"required":["providerPullRequestId"]}}]}},"\/vcs\/installations":{"get":{"summary":"List installations","operationId":"vcsListInstallations","consumes":["application\/json"],"produces":["application\/json"],"tags":["vcs"],"description":"","responses":{"200":{"description":"Installations List","schema":{"$ref":"#\/definitions\/installationList"}}},"x-appwrite":{"method":"listInstallations","weight":261,"cookies":false,"type":"","demo":"vcs\/list-installations.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/vcs\/list-installations.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: provider, organization","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]}},"\/vcs\/installations\/{installationId}":{"get":{"summary":"Get installation","operationId":"vcsGetInstallation","consumes":["application\/json"],"produces":["application\/json"],"tags":["vcs"],"description":"","responses":{"200":{"description":"Installation","schema":{"$ref":"#\/definitions\/installation"}}},"x-appwrite":{"method":"getInstallation","weight":262,"cookies":false,"type":"","demo":"vcs\/get-installation.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/vcs\/get-installation.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"type":"string","x-example":"[INSTALLATION_ID]","in":"path"}]},"delete":{"summary":"Delete Installation","operationId":"vcsDeleteInstallation","consumes":["application\/json"],"produces":[],"tags":["vcs"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteInstallation","weight":263,"cookies":false,"type":"","demo":"vcs\/delete-installation.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/vcs\/delete-installation.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"type":"string","x-example":"[INSTALLATION_ID]","in":"path"}]}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"project","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]},{"name":"proxy","description":"The Proxy Service allows you to configure actions for your domains beyond DNS configuration.","x-globalAttributes":[]},{"name":"graphql","description":"The GraphQL API allows you to query and mutate your Appwrite server using GraphQL.","x-globalAttributes":[]},{"name":"console","description":"The Console service allows you to interact with console relevant informations.","x-globalAttributes":[]},{"name":"migrations","description":"The Migrations service allows you to migrate third-party data to your Appwrite project.","x-globalAttributes":[]},{"name":"messaging","description":"The Messaging service allows you to send messages to any provider type (SMTP, push notification, SMS, etc.).","x-globalAttributes":[]}],"definitions":{"any":{"description":"Any","type":"object","additionalProperties":true},"documentList":{"description":"Documents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of documents documents that matched your query.","x-example":5,"format":"int32"},"documents":{"type":"array","description":"List of documents.","items":{"type":"object","$ref":"#\/definitions\/document"},"x-example":""}},"required":["total","documents"]},"collectionList":{"description":"Collections List","type":"object","properties":{"total":{"type":"integer","description":"Total number of collections documents that matched your query.","x-example":5,"format":"int32"},"collections":{"type":"array","description":"List of collections.","items":{"type":"object","$ref":"#\/definitions\/collection"},"x-example":""}},"required":["total","collections"]},"databaseList":{"description":"Databases List","type":"object","properties":{"total":{"type":"integer","description":"Total number of databases documents that matched your query.","x-example":5,"format":"int32"},"databases":{"type":"array","description":"List of databases.","items":{"type":"object","$ref":"#\/definitions\/database"},"x-example":""}},"required":["total","databases"]},"indexList":{"description":"Indexes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of indexes documents that matched your query.","x-example":5,"format":"int32"},"indexes":{"type":"array","description":"List of indexes.","items":{"type":"object","$ref":"#\/definitions\/index"},"x-example":""}},"required":["total","indexes"]},"userList":{"description":"Users List","type":"object","properties":{"total":{"type":"integer","description":"Total number of users documents that matched your query.","x-example":5,"format":"int32"},"users":{"type":"array","description":"List of users.","items":{"type":"object","$ref":"#\/definitions\/user"},"x-example":""}},"required":["total","users"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of sessions documents that matched your query.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"type":"object","$ref":"#\/definitions\/session"},"x-example":""}},"required":["total","sessions"]},"identityList":{"description":"Identities List","type":"object","properties":{"total":{"type":"integer","description":"Total number of identities documents that matched your query.","x-example":5,"format":"int32"},"identities":{"type":"array","description":"List of identities.","items":{"type":"object","$ref":"#\/definitions\/identity"},"x-example":""}},"required":["total","identities"]},"logList":{"description":"Logs List","type":"object","properties":{"total":{"type":"integer","description":"Total number of logs documents that matched your query.","x-example":5,"format":"int32"},"logs":{"type":"array","description":"List of logs.","items":{"type":"object","$ref":"#\/definitions\/log"},"x-example":""}},"required":["total","logs"]},"fileList":{"description":"Files List","type":"object","properties":{"total":{"type":"integer","description":"Total number of files documents that matched your query.","x-example":5,"format":"int32"},"files":{"type":"array","description":"List of files.","items":{"type":"object","$ref":"#\/definitions\/file"},"x-example":""}},"required":["total","files"]},"bucketList":{"description":"Buckets List","type":"object","properties":{"total":{"type":"integer","description":"Total number of buckets documents that matched your query.","x-example":5,"format":"int32"},"buckets":{"type":"array","description":"List of buckets.","items":{"type":"object","$ref":"#\/definitions\/bucket"},"x-example":""}},"required":["total","buckets"]},"teamList":{"description":"Teams List","type":"object","properties":{"total":{"type":"integer","description":"Total number of teams documents that matched your query.","x-example":5,"format":"int32"},"teams":{"type":"array","description":"List of teams.","items":{"type":"object","$ref":"#\/definitions\/team"},"x-example":""}},"required":["total","teams"]},"membershipList":{"description":"Memberships List","type":"object","properties":{"total":{"type":"integer","description":"Total number of memberships documents that matched your query.","x-example":5,"format":"int32"},"memberships":{"type":"array","description":"List of memberships.","items":{"type":"object","$ref":"#\/definitions\/membership"},"x-example":""}},"required":["total","memberships"]},"functionList":{"description":"Functions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of functions documents that matched your query.","x-example":5,"format":"int32"},"functions":{"type":"array","description":"List of functions.","items":{"type":"object","$ref":"#\/definitions\/function"},"x-example":""}},"required":["total","functions"]},"installationList":{"description":"Installations List","type":"object","properties":{"total":{"type":"integer","description":"Total number of installations documents that matched your query.","x-example":5,"format":"int32"},"installations":{"type":"array","description":"List of installations.","items":{"type":"object","$ref":"#\/definitions\/installation"},"x-example":""}},"required":["total","installations"]},"providerRepositoryList":{"description":"Provider Repositories List","type":"object","properties":{"total":{"type":"integer","description":"Total number of providerRepositories documents that matched your query.","x-example":5,"format":"int32"},"providerRepositories":{"type":"array","description":"List of providerRepositories.","items":{"type":"object","$ref":"#\/definitions\/providerRepository"},"x-example":""}},"required":["total","providerRepositories"]},"branchList":{"description":"Branches List","type":"object","properties":{"total":{"type":"integer","description":"Total number of branches documents that matched your query.","x-example":5,"format":"int32"},"branches":{"type":"array","description":"List of branches.","items":{"type":"object","$ref":"#\/definitions\/branch"},"x-example":""}},"required":["total","branches"]},"runtimeList":{"description":"Runtimes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of runtimes documents that matched your query.","x-example":5,"format":"int32"},"runtimes":{"type":"array","description":"List of runtimes.","items":{"type":"object","$ref":"#\/definitions\/runtime"},"x-example":""}},"required":["total","runtimes"]},"deploymentList":{"description":"Deployments List","type":"object","properties":{"total":{"type":"integer","description":"Total number of deployments documents that matched your query.","x-example":5,"format":"int32"},"deployments":{"type":"array","description":"List of deployments.","items":{"type":"object","$ref":"#\/definitions\/deployment"},"x-example":""}},"required":["total","deployments"]},"executionList":{"description":"Executions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of executions documents that matched your query.","x-example":5,"format":"int32"},"executions":{"type":"array","description":"List of executions.","items":{"type":"object","$ref":"#\/definitions\/execution"},"x-example":""}},"required":["total","executions"]},"projectList":{"description":"Projects List","type":"object","properties":{"total":{"type":"integer","description":"Total number of projects documents that matched your query.","x-example":5,"format":"int32"},"projects":{"type":"array","description":"List of projects.","items":{"type":"object","$ref":"#\/definitions\/project"},"x-example":""}},"required":["total","projects"]},"webhookList":{"description":"Webhooks List","type":"object","properties":{"total":{"type":"integer","description":"Total number of webhooks documents that matched your query.","x-example":5,"format":"int32"},"webhooks":{"type":"array","description":"List of webhooks.","items":{"type":"object","$ref":"#\/definitions\/webhook"},"x-example":""}},"required":["total","webhooks"]},"keyList":{"description":"API Keys List","type":"object","properties":{"total":{"type":"integer","description":"Total number of keys documents that matched your query.","x-example":5,"format":"int32"},"keys":{"type":"array","description":"List of keys.","items":{"type":"object","$ref":"#\/definitions\/key"},"x-example":""}},"required":["total","keys"]},"platformList":{"description":"Platforms List","type":"object","properties":{"total":{"type":"integer","description":"Total number of platforms documents that matched your query.","x-example":5,"format":"int32"},"platforms":{"type":"array","description":"List of platforms.","items":{"type":"object","$ref":"#\/definitions\/platform"},"x-example":""}},"required":["total","platforms"]},"countryList":{"description":"Countries List","type":"object","properties":{"total":{"type":"integer","description":"Total number of countries documents that matched your query.","x-example":5,"format":"int32"},"countries":{"type":"array","description":"List of countries.","items":{"type":"object","$ref":"#\/definitions\/country"},"x-example":""}},"required":["total","countries"]},"continentList":{"description":"Continents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of continents documents that matched your query.","x-example":5,"format":"int32"},"continents":{"type":"array","description":"List of continents.","items":{"type":"object","$ref":"#\/definitions\/continent"},"x-example":""}},"required":["total","continents"]},"languageList":{"description":"Languages List","type":"object","properties":{"total":{"type":"integer","description":"Total number of languages documents that matched your query.","x-example":5,"format":"int32"},"languages":{"type":"array","description":"List of languages.","items":{"type":"object","$ref":"#\/definitions\/language"},"x-example":""}},"required":["total","languages"]},"currencyList":{"description":"Currencies List","type":"object","properties":{"total":{"type":"integer","description":"Total number of currencies documents that matched your query.","x-example":5,"format":"int32"},"currencies":{"type":"array","description":"List of currencies.","items":{"type":"object","$ref":"#\/definitions\/currency"},"x-example":""}},"required":["total","currencies"]},"phoneList":{"description":"Phones List","type":"object","properties":{"total":{"type":"integer","description":"Total number of phones documents that matched your query.","x-example":5,"format":"int32"},"phones":{"type":"array","description":"List of phones.","items":{"type":"object","$ref":"#\/definitions\/phone"},"x-example":""}},"required":["total","phones"]},"variableList":{"description":"Variables List","type":"object","properties":{"total":{"type":"integer","description":"Total number of variables documents that matched your query.","x-example":5,"format":"int32"},"variables":{"type":"array","description":"List of variables.","items":{"type":"object","$ref":"#\/definitions\/variable"},"x-example":""}},"required":["total","variables"]},"proxyRuleList":{"description":"Rule List","type":"object","properties":{"total":{"type":"integer","description":"Total number of rules documents that matched your query.","x-example":5,"format":"int32"},"rules":{"type":"array","description":"List of rules.","items":{"type":"object","$ref":"#\/definitions\/proxyRule"},"x-example":""}},"required":["total","rules"]},"localeCodeList":{"description":"Locale codes list","type":"object","properties":{"total":{"type":"integer","description":"Total number of localeCodes documents that matched your query.","x-example":5,"format":"int32"},"localeCodes":{"type":"array","description":"List of localeCodes.","items":{"type":"object","$ref":"#\/definitions\/localeCode"},"x-example":""}},"required":["total","localeCodes"]},"providerList":{"description":"Provider list","type":"object","properties":{"total":{"type":"integer","description":"Total number of providers documents that matched your query.","x-example":5,"format":"int32"},"providers":{"type":"array","description":"List of providers.","items":{"type":"object","$ref":"#\/definitions\/provider"},"x-example":""}},"required":["total","providers"]},"messageList":{"description":"Message list","type":"object","properties":{"total":{"type":"integer","description":"Total number of messages documents that matched your query.","x-example":5,"format":"int32"},"messages":{"type":"array","description":"List of messages.","items":{"type":"object","$ref":"#\/definitions\/message"},"x-example":""}},"required":["total","messages"]},"topicList":{"description":"Topic list","type":"object","properties":{"total":{"type":"integer","description":"Total number of topics documents that matched your query.","x-example":5,"format":"int32"},"topics":{"type":"array","description":"List of topics.","items":{"type":"object","$ref":"#\/definitions\/topic"},"x-example":""}},"required":["total","topics"]},"subscriberList":{"description":"Subscriber list","type":"object","properties":{"total":{"type":"integer","description":"Total number of subscribers documents that matched your query.","x-example":5,"format":"int32"},"subscribers":{"type":"array","description":"List of subscribers.","items":{"type":"object","$ref":"#\/definitions\/subscriber"},"x-example":""}},"required":["total","subscribers"]},"targetList":{"description":"Target list","type":"object","properties":{"total":{"type":"integer","description":"Total number of targets documents that matched your query.","x-example":5,"format":"int32"},"targets":{"type":"array","description":"List of targets.","items":{"type":"object","$ref":"#\/definitions\/target"},"x-example":""}},"required":["total","targets"]},"migrationList":{"description":"Migrations List","type":"object","properties":{"total":{"type":"integer","description":"Total number of migrations documents that matched your query.","x-example":5,"format":"int32"},"migrations":{"type":"array","description":"List of migrations.","items":{"type":"object","$ref":"#\/definitions\/migration"},"x-example":""}},"required":["total","migrations"]},"firebaseProjectList":{"description":"Migrations Firebase Projects List","type":"object","properties":{"total":{"type":"integer","description":"Total number of projects documents that matched your query.","x-example":5,"format":"int32"},"projects":{"type":"array","description":"List of projects.","items":{"type":"object","$ref":"#\/definitions\/firebaseProject"},"x-example":""}},"required":["total","projects"]},"database":{"description":"Database","type":"object","properties":{"$id":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Database name.","x-example":"My Database"},"$createdAt":{"type":"string","description":"Database creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Database update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"enabled":{"type":"boolean","description":"If database is enabled. Can be 'enabled' or 'disabled'. When disabled, the database is inaccessible to users, but remains accessible to Server SDKs using API keys.","x-example":false}},"required":["$id","name","$createdAt","$updatedAt","enabled"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Collection creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Collection update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Collection permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled. Can be 'enabled' or 'disabled'. When disabled, the collection is inaccessible to users, but remains accessible to Server SDKs using API keys.","x-example":false},"documentSecurity":{"type":"boolean","description":"Whether document-level permissions are enabled. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":true},"attributes":{"type":"array","description":"Collection attributes.","items":{"x-anyOf":[{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeRelationship"},{"$ref":"#\/definitions\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"type":"object","$ref":"#\/definitions\/index"},"x-example":{}}},"required":["$id","$createdAt","$updatedAt","$permissions","databaseId","name","enabled","documentSecurity","attributes","indexes"]},"attributeList":{"description":"Attributes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of attributes in the given collection.","x-example":5,"format":"int32"},"attributes":{"type":"array","description":"List of attributes.","items":{"x-anyOf":[{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeRelationship"},{"$ref":"#\/definitions\/attributeString"}]},"x-example":""}},"required":["total","attributes"]},"attributeString":{"description":"AttributeString","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"fullName"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"size":{"type":"integer","description":"Attribute size.","x-example":128,"format":"int32"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"default","x-nullable":true}},"required":["key","type","status","error","required","size"]},"attributeInteger":{"description":"AttributeInteger","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"count"},"type":{"type":"string","description":"Attribute type.","x-example":"integer"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"min":{"type":"integer","description":"Minimum value to enforce for new documents.","x-example":1,"format":"int32","x-nullable":true},"max":{"type":"integer","description":"Maximum value to enforce for new documents.","x-example":10,"format":"int32","x-nullable":true},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":10,"format":"int32","x-nullable":true}},"required":["key","type","status","error","required"]},"attributeFloat":{"description":"AttributeFloat","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"percentageCompleted"},"type":{"type":"string","description":"Attribute type.","x-example":"double"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"min":{"type":"number","description":"Minimum value to enforce for new documents.","x-example":1.5,"format":"double","x-nullable":true},"max":{"type":"number","description":"Maximum value to enforce for new documents.","x-example":10.5,"format":"double","x-nullable":true},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":2.5,"format":"double","x-nullable":true}},"required":["key","type","status","error","required"]},"attributeBoolean":{"description":"AttributeBoolean","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"isEnabled"},"type":{"type":"string","description":"Attribute type.","x-example":"boolean"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":false,"x-nullable":true}},"required":["key","type","status","error","required"]},"attributeEmail":{"description":"AttributeEmail","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"userEmail"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"format":{"type":"string","description":"String format.","x-example":"email"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"default@example.com","x-nullable":true}},"required":["key","type","status","error","required","format"]},"attributeEnum":{"description":"AttributeEnum","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"status"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"elements":{"type":"array","description":"Array of elements in enumerated type.","items":{"type":"string"},"x-example":"element"},"format":{"type":"string","description":"String format.","x-example":"enum"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"element","x-nullable":true}},"required":["key","type","status","error","required","elements","format"]},"attributeIp":{"description":"AttributeIP","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"ipAddress"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"format":{"type":"string","description":"String format.","x-example":"ip"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"192.0.2.0","x-nullable":true}},"required":["key","type","status","error","required","format"]},"attributeUrl":{"description":"AttributeURL","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"githubUrl"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"format":{"type":"string","description":"String format.","x-example":"url"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"http:\/\/example.com","x-nullable":true}},"required":["key","type","status","error","required","format"]},"attributeDatetime":{"description":"AttributeDatetime","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"birthDay"},"type":{"type":"string","description":"Attribute type.","x-example":"datetime"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"format":{"type":"string","description":"ISO 8601 format.","x-example":"datetime"},"default":{"type":"string","description":"Default value for attribute when not provided. Only null is optional","x-example":"2020-10-15T06:38:00.000+00:00","x-nullable":true}},"required":["key","type","status","error","required","format"]},"attributeRelationship":{"description":"AttributeRelationship","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"fullName"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"relatedCollection":{"type":"string","description":"The ID of the related collection.","x-example":"collection"},"relationType":{"type":"string","description":"The type of the relationship.","x-example":"oneToOne|oneToMany|manyToOne|manyToMany"},"twoWay":{"type":"boolean","description":"Is the relationship two-way?","x-example":false},"twoWayKey":{"type":"string","description":"The key of the two-way relationship.","x-example":"string"},"onDelete":{"type":"string","description":"How deleting the parent document will propagate to child documents.","x-example":"restrict|cascade|setNull"},"side":{"type":"string","description":"Whether this is the parent or child side of the relationship","x-example":"parent|child"}},"required":["key","type","status","error","required","relatedCollection","relationType","twoWay","twoWayKey","onDelete","side"]},"index":{"description":"Index","type":"object","properties":{"key":{"type":"string","description":"Index Key.","x-example":"index1"},"type":{"type":"string","description":"Index type.","x-example":"primary"},"status":{"type":"string","description":"Index status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an index.","x-example":"string"},"attributes":{"type":"array","description":"Index attributes.","items":{"type":"string"},"x-example":[]},"orders":{"type":"array","description":"Index orders.","items":{"type":"string"},"x-example":[],"x-nullable":true}},"required":["key","type","status","error","attributes"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"user":{"description":"User","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"password":{"type":"string","description":"Hashed user password.","x-example":"$argon2id$v=19$m=2048,t=4,p=3$aUZjLnliVWRINmFNTWMudg$5S+x+7uA31xFnrHFT47yFwcJeaP0w92L\/4LdgrVRXxE","x-nullable":true},"hash":{"type":"string","description":"Password hashing algorithm.","x-example":"argon2","x-nullable":true},"hashOptions":{"type":"object","description":"Password hashing algorithm configuration.","x-example":{},"items":{"x-oneOf":[{"$ref":"#\/definitions\/algoArgon2"},{"$ref":"#\/definitions\/algoScrypt"},{"$ref":"#\/definitions\/algoScryptModified"},{"$ref":"#\/definitions\/algoBcrypt"},{"$ref":"#\/definitions\/algoPhpass"},{"$ref":"#\/definitions\/algoSha"},{"$ref":"#\/definitions\/algoMd5"}]},"x-nullable":true},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"labels":{"type":"array","description":"Labels for the user.","items":{"type":"string"},"x-example":["vip"]},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"mfa":{"type":"boolean","description":"Multi factor authentication status.","x-example":true},"totp":{"type":"boolean","description":"TOTP status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"type":"object","$ref":"#\/definitions\/preferences"}},"targets":{"type":"array","description":"A user-owned message receiver. A single user may have multiple e.g. emails, phones, and a browser. Each target is registered with a single provider.","items":{"type":"object","$ref":"#\/definitions\/target"},"x-example":[]},"accessedAt":{"type":"string","description":"Most recent access date in ISO 8601 format. This attribute is only updated again after 24 hours.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","$updatedAt","name","registration","status","labels","passwordUpdate","email","phone","emailVerification","phoneVerification","mfa","totp","prefs","targets","accessedAt"]},"algoMd5":{"description":"AlgoMD5","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"md5"}},"required":["type"]},"algoSha":{"description":"AlgoSHA","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"sha"}},"required":["type"]},"algoPhpass":{"description":"AlgoPHPass","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"phpass"}},"required":["type"]},"algoBcrypt":{"description":"AlgoBcrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"bcrypt"}},"required":["type"]},"algoScrypt":{"description":"AlgoScrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scrypt"},"costCpu":{"type":"integer","description":"CPU complexity of computed hash.","x-example":8,"format":"int32"},"costMemory":{"type":"integer","description":"Memory complexity of computed hash.","x-example":14,"format":"int32"},"costParallel":{"type":"integer","description":"Parallelization of computed hash.","x-example":1,"format":"int32"},"length":{"type":"integer","description":"Length used to compute hash.","x-example":64,"format":"int32"}},"required":["type","costCpu","costMemory","costParallel","length"]},"algoScryptModified":{"description":"AlgoScryptModified","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scryptMod"},"salt":{"type":"string","description":"Salt used to compute hash.","x-example":"UxLMreBr6tYyjQ=="},"saltSeparator":{"type":"string","description":"Separator used to compute hash.","x-example":"Bw=="},"signerKey":{"type":"string","description":"Key used to compute hash.","x-example":"XyEKE9RcTDeLEsL\/RjwPDBv\/RqDl8fb3gpYEOQaPihbxf1ZAtSOHCjuAAa7Q3oHpCYhXSN9tizHgVOwn6krflQ=="}},"required":["type","salt","saltSeparator","signerKey"]},"algoArgon2":{"description":"AlgoArgon2","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"argon2"},"memoryCost":{"type":"integer","description":"Memory used to compute hash.","x-example":65536,"format":"int32"},"timeCost":{"type":"integer","description":"Amount of time consumed to compute hash","x-example":4,"format":"int32"},"threads":{"type":"integer","description":"Number of threads used to compute hash.","x-example":3,"format":"int32"}},"required":["type","memoryCost","timeCost","threads"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true},"factors":{"type":"array","description":"Returns a list of active session factors.","items":{"type":"string"},"x-example":["email"]},"secret":{"type":"string","description":"Secret used to authenticate the user. Only included if the request was made with an API key","x-example":"5e5bb8c16897e"}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current","factors","secret"]},"identity":{"description":"Identity","type":"object","properties":{"$id":{"type":"string","description":"Identity ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Identity creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Identity update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"provider":{"type":"string","description":"Identity Provider.","x-example":"email"},"providerUid":{"type":"string","description":"ID of the User in the Identity Provider.","x-example":"5e5bb8c16897e"},"providerEmail":{"type":"string","description":"Email of the User in the Identity Provider.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Identity Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Identity Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"}},"required":["$id","$createdAt","$updatedAt","userId","provider","providerUid","providerEmail","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"phrase":{"type":"string","description":"Security phrase of a token. Empty if security phrase was not requested when creating a token. It includes randomly generated phrase which is also sent in the external resource such as email.","x-example":"Golden Fox"}},"required":["$id","$createdAt","userId","secret","expire","phrase"]},"jwt":{"description":"JWT","type":"object","properties":{"jwt":{"type":"string","description":"JWT encoded string.","x-example":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c"}},"required":["jwt"]},"locale":{"description":"Locale","type":"object","properties":{"ip":{"type":"string","description":"User IP address.","x-example":"127.0.0.1"},"countryCode":{"type":"string","description":"Country code in [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) two-character format","x-example":"US"},"country":{"type":"string","description":"Country name. This field support localization.","x-example":"United States"},"continentCode":{"type":"string","description":"Continent code. A two character continent code \"AF\" for Africa, \"AN\" for Antarctica, \"AS\" for Asia, \"EU\" for Europe, \"NA\" for North America, \"OC\" for Oceania, and \"SA\" for South America.","x-example":"NA"},"continent":{"type":"string","description":"Continent name. This field support localization.","x-example":"North America"},"eu":{"type":"boolean","description":"True if country is part of the European Union.","x-example":false},"currency":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format","x-example":"USD"}},"required":["ip","countryCode","country","continentCode","continent","eu","currency"]},"localeCode":{"description":"LocaleCode","type":"object","properties":{"code":{"type":"string","description":"Locale codes in [ISO 639-1](https:\/\/en.wikipedia.org\/wiki\/List_of_ISO_639-1_codes)","x-example":"en-us"},"name":{"type":"string","description":"Locale name","x-example":"US"}},"required":["code","name"]},"file":{"description":"File","type":"object","properties":{"$id":{"type":"string","description":"File ID.","x-example":"5e5ea5c16897e"},"bucketId":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Bucket creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Bucket update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Bucket permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"fileSecurity":{"type":"boolean","description":"Whether file-level security is enabled. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":true},"name":{"type":"string","description":"Bucket name.","x-example":"Documents"},"enabled":{"type":"boolean","description":"Bucket enabled.","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size supported.","x-example":100,"format":"int32"},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions.","items":{"type":"string"},"x-example":["jpg","png"]},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Will be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd).","x-example":"gzip"},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$createdAt","$updatedAt","$permissions","fileSecurity","name","enabled","maximumFileSize","allowedFileExtensions","compression","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"},"prefs":{"type":"object","description":"Team preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"type":"object","$ref":"#\/definitions\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","total","prefs"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"mfa":{"type":"boolean","description":"Multi factor authentication status, true if the user has MFA enabled or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":["owner"]}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","mfa","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Function creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Function update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"users"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"enabled":{"type":"boolean","description":"Function enabled.","x-example":false},"live":{"type":"boolean","description":"Is the function deployed with the latest configuration? This is set to false if you've changed an environment variables, entrypoint, commands, or other settings that needs redeploy to be applied. When the value is false, redeploy the function to update it with the latest configuration.","x-example":false},"logging":{"type":"boolean","description":"Whether executions will be logged. When set to false, executions will not be logged, but will reduce resource used by your Appwrite project.","x-example":false},"runtime":{"type":"string","description":"Function execution runtime.","x-example":"python-3.8"},"deployment":{"type":"string","description":"Function's active deployment ID.","x-example":"5e5ea5c16897e"},"vars":{"type":"array","description":"Function variables.","items":{"type":"object","$ref":"#\/definitions\/variable"},"x-example":[]},"events":{"type":"array","description":"Function trigger events.","items":{"type":"string"},"x-example":"account.create"},"schedule":{"type":"string","description":"Function execution schedult in CRON format.","x-example":"5 4 * * *"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":300,"format":"int32"},"entrypoint":{"type":"string","description":"The entrypoint file used to execute the deployment.","x-example":"index.js"},"commands":{"type":"string","description":"The build command used to build the deployment.","x-example":"npm install"},"version":{"type":"string","description":"Version of Open Runtimes used for the function.","x-example":"v2"},"installationId":{"type":"string","description":"Function VCS (Version Control System) installation id.","x-example":"6m40at4ejk5h2u9s1hboo"},"providerRepositoryId":{"type":"string","description":"VCS (Version Control System) Repository ID","x-example":"appwrite"},"providerBranch":{"type":"string","description":"VCS (Version Control System) branch name","x-example":"main"},"providerRootDirectory":{"type":"string","description":"Path to function in VCS (Version Control System) repository","x-example":"functions\/helloWorld"},"providerSilentMode":{"type":"boolean","description":"Is VCS (Version Control System) connection is in silent mode? When in silence mode, no comments will be posted on the repository pull or merge requests","x-example":false}},"required":["$id","$createdAt","$updatedAt","execute","name","enabled","live","logging","runtime","deployment","vars","events","schedule","timeout","entrypoint","commands","version","installationId","providerRepositoryId","providerBranch","providerRootDirectory","providerSilentMode"]},"installation":{"description":"Installation","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Function creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Function update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"VCS (Version Control System) provider name.","x-example":"github"},"organization":{"type":"string","description":"VCS (Version Control System) organization name.","x-example":"appwrite"},"providerInstallationId":{"type":"string","description":"VCS (Version Control System) installation ID.","x-example":"5322"}},"required":["$id","$createdAt","$updatedAt","provider","organization","providerInstallationId"]},"providerRepository":{"description":"ProviderRepository","type":"object","properties":{"id":{"type":"string","description":"VCS (Version Control System) repository ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"VCS (Version Control System) repository name.","x-example":"appwrite"},"organization":{"type":"string","description":"VCS (Version Control System) organization name","x-example":"appwrite"},"provider":{"type":"string","description":"VCS (Version Control System) provider name.","x-example":"github"},"private":{"type":"boolean","description":"Is VCS (Version Control System) repository private?","x-example":true},"runtime":{"type":"string","description":"Auto-detected runtime suggestion. Empty if getting response of getRuntime().","x-example":"node"},"pushedAt":{"type":"string","description":"Last commit date in ISO 8601 format.","x-example":"datetime"}},"required":["id","name","organization","provider","private","runtime","pushedAt"]},"detection":{"description":"Detection","type":"object","properties":{"runtime":{"type":"string","description":"Runtime","x-example":"node"}},"required":["runtime"]},"branch":{"description":"Branch","type":"object","properties":{"name":{"type":"string","description":"Branch Name.","x-example":"main"}},"required":["name"]},"runtime":{"description":"Runtime","type":"object","properties":{"$id":{"type":"string","description":"Runtime ID.","x-example":"python-3.8"},"name":{"type":"string","description":"Runtime Name.","x-example":"Python"},"version":{"type":"string","description":"Runtime version.","x-example":"3.8"},"base":{"type":"string","description":"Base Docker image used to build the runtime.","x-example":"python:3.8-alpine"},"image":{"type":"string","description":"Image name of Docker Hub.","x-example":"appwrite\\\/runtime-for-python:3.8"},"logo":{"type":"string","description":"Name of the logo image.","x-example":"python.png"},"supports":{"type":"array","description":"List of supported architectures.","items":{"type":"string"},"x-example":"amd64"}},"required":["$id","name","version","base","image","logo","supports"]},"deployment":{"description":"Deployment","type":"object","properties":{"$id":{"type":"string","description":"Deployment ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Deployment creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Deployment update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"type":{"type":"string","description":"Type of deployment.","x-example":"vcs"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"index.js"},"size":{"type":"integer","description":"The code size in bytes.","x-example":128,"format":"int32"},"buildId":{"type":"string","description":"The current build ID.","x-example":"5e5ea5c16897e"},"activate":{"type":"boolean","description":"Whether the deployment should be automatically activated.","x-example":true},"status":{"type":"string","description":"The deployment status. Possible values are \"processing\", \"building\", \"waiting\", \"ready\", and \"failed\".","x-example":"ready"},"buildLogs":{"type":"string","description":"The build logs.","x-example":"Compiling source files..."},"buildTime":{"type":"integer","description":"The current build time in seconds.","x-example":128,"format":"int32"},"providerRepositoryName":{"type":"string","description":"The name of the vcs provider repository","x-example":"database"},"providerRepositoryOwner":{"type":"string","description":"The name of the vcs provider repository owner","x-example":"utopia"},"providerRepositoryUrl":{"type":"string","description":"The url of the vcs provider repository","x-example":"https:\/\/github.com\/vermakhushboo\/g4-node-function"},"providerBranch":{"type":"string","description":"The branch of the vcs repository","x-example":"0.7.x"},"providerCommitHash":{"type":"string","description":"The commit hash of the vcs commit","x-example":"7c3f25d"},"providerCommitAuthorUrl":{"type":"string","description":"The url of vcs commit author","x-example":"https:\/\/github.com\/vermakhushboo"},"providerCommitAuthor":{"type":"string","description":"The name of vcs commit author","x-example":"Khushboo Verma"},"providerCommitMessage":{"type":"string","description":"The commit message","x-example":"Update index.js"},"providerCommitUrl":{"type":"string","description":"The url of the vcs commit","x-example":"https:\/\/github.com\/vermakhushboo\/g4-node-function\/commit\/60c0416257a9cbcdd96b2d370c38d8f8d150ccfb"},"providerBranchUrl":{"type":"string","description":"The branch of the vcs repository","x-example":"https:\/\/github.com\/vermakhushboo\/appwrite\/tree\/0.7.x"}},"required":["$id","$createdAt","$updatedAt","type","resourceId","resourceType","entrypoint","size","buildId","activate","status","buildLogs","buildTime","providerRepositoryName","providerRepositoryOwner","providerRepositoryUrl","providerBranch","providerCommitHash","providerCommitAuthorUrl","providerCommitAuthor","providerCommitMessage","providerCommitUrl","providerBranchUrl"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"requestMethod":{"type":"string","description":"HTTP request method type.","x-example":"GET"},"requestPath":{"type":"string","description":"HTTP request path and query.","x-example":"\/articles?id=5"},"requestHeaders":{"type":"array","description":"HTTP response headers as a key-value object. This will return only whitelisted headers. All headers are returned if execution is created as synchronous.","items":{"type":"object","$ref":"#\/definitions\/headers"},"x-example":[{"Content-Type":"application\/json"}]},"responseStatusCode":{"type":"integer","description":"HTTP response status code.","x-example":200,"format":"int32"},"responseBody":{"type":"string","description":"HTTP response body. This will return empty unless execution is created as synchronous.","x-example":"Developers are awesome."},"responseHeaders":{"type":"array","description":"HTTP response headers as a key-value object. This will return only whitelisted headers. All headers are returned if execution is created as synchronous.","items":{"type":"object","$ref":"#\/definitions\/headers"},"x-example":[{"Content-Type":"application\/json"}]},"logs":{"type":"string","description":"Function logs. Includes the last 4,000 characters. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"errors":{"type":"string","description":"Function errors. Includes the last 4,000 characters. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"Function execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","requestMethod","requestPath","requestHeaders","responseStatusCode","responseBody","responseHeaders","logs","errors","duration"]},"project":{"description":"Project","type":"object","properties":{"$id":{"type":"string","description":"Project ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Project creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Project update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Project name.","x-example":"New Project"},"description":{"type":"string","description":"Project description.","x-example":"This is a new project."},"teamId":{"type":"string","description":"Project team ID.","x-example":"1592981250"},"logo":{"type":"string","description":"Project logo file ID.","x-example":"5f5c451b403cb"},"url":{"type":"string","description":"Project website URL.","x-example":"5f5c451b403cb"},"legalName":{"type":"string","description":"Company legal name.","x-example":"Company LTD."},"legalCountry":{"type":"string","description":"Country code in [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) two-character format.","x-example":"US"},"legalState":{"type":"string","description":"State name.","x-example":"New York"},"legalCity":{"type":"string","description":"City name.","x-example":"New York City."},"legalAddress":{"type":"string","description":"Company Address.","x-example":"620 Eighth Avenue, New York, NY 10018"},"legalTaxId":{"type":"string","description":"Company Tax ID.","x-example":"131102020"},"authDuration":{"type":"integer","description":"Session duration in seconds.","x-example":60,"format":"int32"},"authLimit":{"type":"integer","description":"Max users allowed. 0 is unlimited.","x-example":100,"format":"int32"},"authSessionsLimit":{"type":"integer","description":"Max sessions allowed per user. 100 maximum.","x-example":10,"format":"int32"},"authPasswordHistory":{"type":"integer","description":"Max allowed passwords in the history list per user. Max passwords limit allowed in history is 20. Use 0 for disabling password history.","x-example":5,"format":"int32"},"authPasswordDictionary":{"type":"boolean","description":"Whether or not to check user's password against most commonly used passwords.","x-example":true},"authPersonalDataCheck":{"type":"boolean","description":"Whether or not to check the user password for similarity with their personal data.","x-example":true},"oAuthProviders":{"type":"array","description":"List of Auth Providers.","items":{"type":"object","$ref":"#\/definitions\/authProvider"},"x-example":[{}]},"platforms":{"type":"array","description":"List of Platforms.","items":{"type":"object","$ref":"#\/definitions\/platform"},"x-example":{}},"webhooks":{"type":"array","description":"List of Webhooks.","items":{"type":"object","$ref":"#\/definitions\/webhook"},"x-example":{}},"keys":{"type":"array","description":"List of API Keys.","items":{"type":"object","$ref":"#\/definitions\/key"},"x-example":{}},"smtpEnabled":{"type":"boolean","description":"Status for custom SMTP","x-example":false},"smtpSenderName":{"type":"string","description":"SMTP sender name","x-example":"John Appwrite"},"smtpSenderEmail":{"type":"string","description":"SMTP sender email","x-example":"john@appwrite.io"},"smtpReplyTo":{"type":"string","description":"SMTP reply to email","x-example":"support@appwrite.io"},"smtpHost":{"type":"string","description":"SMTP server host name","x-example":"mail.appwrite.io"},"smtpPort":{"type":"integer","description":"SMTP server port","x-example":25,"format":"int32"},"smtpUsername":{"type":"string","description":"SMTP server username","x-example":"emailuser"},"smtpPassword":{"type":"string","description":"SMTP server password","x-example":"securepassword"},"smtpSecure":{"type":"string","description":"SMTP server secure protocol","x-example":"tls"},"authEmailPassword":{"type":"boolean","description":"Email\/Password auth method status","x-example":true},"authUsersAuthMagicURL":{"type":"boolean","description":"Magic URL auth method status","x-example":true},"authEmailOtp":{"type":"boolean","description":"Email (OTP) auth method status","x-example":true},"authAnonymous":{"type":"boolean","description":"Anonymous auth method status","x-example":true},"authInvites":{"type":"boolean","description":"Invites auth method status","x-example":true},"authJWT":{"type":"boolean","description":"JWT auth method status","x-example":true},"authPhone":{"type":"boolean","description":"Phone auth method status","x-example":true},"serviceStatusForAccount":{"type":"boolean","description":"Account service status","x-example":true},"serviceStatusForAvatars":{"type":"boolean","description":"Avatars service status","x-example":true},"serviceStatusForDatabases":{"type":"boolean","description":"Databases service status","x-example":true},"serviceStatusForLocale":{"type":"boolean","description":"Locale service status","x-example":true},"serviceStatusForHealth":{"type":"boolean","description":"Health service status","x-example":true},"serviceStatusForStorage":{"type":"boolean","description":"Storage service status","x-example":true},"serviceStatusForTeams":{"type":"boolean","description":"Teams service status","x-example":true},"serviceStatusForUsers":{"type":"boolean","description":"Users service status","x-example":true},"serviceStatusForFunctions":{"type":"boolean","description":"Functions service status","x-example":true},"serviceStatusForGraphql":{"type":"boolean","description":"GraphQL service status","x-example":true},"serviceStatusForMessaging":{"type":"boolean","description":"Messaging service status","x-example":true}},"required":["$id","$createdAt","$updatedAt","name","description","teamId","logo","url","legalName","legalCountry","legalState","legalCity","legalAddress","legalTaxId","authDuration","authLimit","authSessionsLimit","authPasswordHistory","authPasswordDictionary","authPersonalDataCheck","oAuthProviders","platforms","webhooks","keys","smtpEnabled","smtpSenderName","smtpSenderEmail","smtpReplyTo","smtpHost","smtpPort","smtpUsername","smtpPassword","smtpSecure","authEmailPassword","authUsersAuthMagicURL","authEmailOtp","authAnonymous","authInvites","authJWT","authPhone","serviceStatusForAccount","serviceStatusForAvatars","serviceStatusForDatabases","serviceStatusForLocale","serviceStatusForHealth","serviceStatusForStorage","serviceStatusForTeams","serviceStatusForUsers","serviceStatusForFunctions","serviceStatusForGraphql","serviceStatusForMessaging"]},"webhook":{"description":"Webhook","type":"object","properties":{"$id":{"type":"string","description":"Webhook ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Webhook creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Webhook update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Webhook name.","x-example":"My Webhook"},"url":{"type":"string","description":"Webhook URL endpoint.","x-example":"https:\/\/example.com\/webhook"},"events":{"type":"array","description":"Webhook trigger events.","items":{"type":"string"},"x-example":"database.collections.update"},"security":{"type":"boolean","description":"Indicated if SSL \/ TLS Certificate verification is enabled.","x-example":true},"httpUser":{"type":"string","description":"HTTP basic authentication username.","x-example":"username"},"httpPass":{"type":"string","description":"HTTP basic authentication password.","x-example":"password"},"signatureKey":{"type":"string","description":"Signature key which can be used to validated incoming","x-example":"ad3d581ca230e2b7059c545e5a"},"enabled":{"type":"boolean","description":"Indicates if this webhook is enabled.","x-example":true},"logs":{"type":"string","description":"Webhook error logs from the most recent failure.","x-example":"Failed to connect to remote server."},"attempts":{"type":"integer","description":"Number of consecutive failed webhook attempts.","x-example":10,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","name","url","events","security","httpUser","httpPass","signatureKey","enabled","logs","attempts"]},"key":{"description":"Key","type":"object","properties":{"$id":{"type":"string","description":"Key ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Key creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Key update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Key name.","x-example":"My API Key"},"expire":{"type":"string","description":"Key expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"scopes":{"type":"array","description":"Allowed permission scopes.","items":{"type":"string"},"x-example":"users.read"},"secret":{"type":"string","description":"Secret key.","x-example":"919c2d18fb5d4...a2ae413da83346ad2"},"accessedAt":{"type":"string","description":"Most recent access date in ISO 8601 format. This attribute is only updated again after 24 hours.","x-example":"2020-10-15T06:38:00.000+00:00"},"sdks":{"type":"array","description":"List of SDK user agents that used this key.","items":{"type":"string"},"x-example":"appwrite:flutter"}},"required":["$id","$createdAt","$updatedAt","name","expire","scopes","secret","accessedAt","sdks"]},"authProvider":{"description":"AuthProvider","type":"object","properties":{"key":{"type":"string","description":"Auth Provider.","x-example":"github"},"name":{"type":"string","description":"Auth Provider name.","x-example":"GitHub"},"appId":{"type":"string","description":"OAuth 2.0 application ID.","x-example":"259125845563242502"},"secret":{"type":"string","description":"OAuth 2.0 application secret. Might be JSON string if provider requires extra configuration.","x-example":"Bpw_g9c2TGXxfgLshDbSaL8tsCcqgczQ"},"enabled":{"type":"boolean","description":"Auth Provider is active and can be used to create session.","x-example":""}},"required":["key","name","appId","secret","enabled"]},"platform":{"description":"Platform","type":"object","properties":{"$id":{"type":"string","description":"Platform ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Platform creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Platform update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Platform name.","x-example":"My Web App"},"type":{"type":"string","description":"Platform type. Possible values are: web, flutter-web, flutter-ios, flutter-android, ios, android, and unity.","x-example":"web"},"key":{"type":"string","description":"Platform Key. iOS bundle ID or Android package name. Empty string for other platforms.","x-example":"com.company.appname"},"store":{"type":"string","description":"App store or Google Play store ID.","x-example":""},"hostname":{"type":"string","description":"Web app hostname. Empty string for other platforms.","x-example":true},"httpUser":{"type":"string","description":"HTTP basic authentication username.","x-example":"username"},"httpPass":{"type":"string","description":"HTTP basic authentication password.","x-example":"password"}},"required":["$id","$createdAt","$updatedAt","name","type","key","store","hostname","httpUser","httpPass"]},"variable":{"description":"Variable","type":"object","properties":{"$id":{"type":"string","description":"Variable ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"key":{"type":"string","description":"Variable key.","x-example":"API_KEY"},"value":{"type":"string","description":"Variable value.","x-example":"myPa$$word1"},"resourceType":{"type":"string","description":"Service to which the variable belongs. Possible values are \"project\", \"function\"","x-example":"function"},"resourceId":{"type":"string","description":"ID of resource to which the variable belongs. If resourceType is \"project\", it is empty. If resourceType is \"function\", it is ID of the function.","x-example":"myAwesomeFunction"}},"required":["$id","$createdAt","$updatedAt","key","value","resourceType","resourceId"]},"country":{"description":"Country","type":"object","properties":{"name":{"type":"string","description":"Country name.","x-example":"United States"},"code":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"}},"required":["name","code"]},"continent":{"description":"Continent","type":"object","properties":{"name":{"type":"string","description":"Continent name.","x-example":"Europe"},"code":{"type":"string","description":"Continent two letter code.","x-example":"EU"}},"required":["name","code"]},"language":{"description":"Language","type":"object","properties":{"name":{"type":"string","description":"Language name.","x-example":"Italian"},"code":{"type":"string","description":"Language two-character ISO 639-1 codes.","x-example":"it"},"nativeName":{"type":"string","description":"Language native name.","x-example":"Italiano"}},"required":["name","code","nativeName"]},"currency":{"description":"Currency","type":"object","properties":{"symbol":{"type":"string","description":"Currency symbol.","x-example":"$"},"name":{"type":"string","description":"Currency name.","x-example":"US dollar"},"symbolNative":{"type":"string","description":"Currency native symbol.","x-example":"$"},"decimalDigits":{"type":"integer","description":"Number of decimal digits.","x-example":2,"format":"int32"},"rounding":{"type":"number","description":"Currency digit rounding.","x-example":0,"format":"double"},"code":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format.","x-example":"USD"},"namePlural":{"type":"string","description":"Currency plural name","x-example":"US dollars"}},"required":["symbol","name","symbolNative","decimalDigits","rounding","code","namePlural"]},"phone":{"description":"Phone","type":"object","properties":{"code":{"type":"string","description":"Phone code.","x-example":"+1"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["code","countryCode","countryName"]},"healthAntivirus":{"description":"Health Antivirus","type":"object","properties":{"version":{"type":"string","description":"Antivirus version.","x-example":"1.0.0"},"status":{"type":"string","description":"Antivirus status. Possible values can are: `disabled`, `offline`, `online`","x-example":"online"}},"required":["version","status"]},"healthQueue":{"description":"Health Queue","type":"object","properties":{"size":{"type":"integer","description":"Amount of actions in the queue.","x-example":8,"format":"int32"}},"required":["size"]},"healthStatus":{"description":"Health Status","type":"object","properties":{"name":{"type":"string","description":"Name of the service.","x-example":"database"},"ping":{"type":"integer","description":"Duration in milliseconds how long the health check took.","x-example":128,"format":"int32"},"status":{"type":"string","description":"Service status. Possible values can are: `pass`, `fail`","x-example":"pass"}},"required":["name","ping","status"]},"healthTime":{"description":"Health Time","type":"object","properties":{"remoteTime":{"type":"integer","description":"Current unix timestamp on trustful remote server.","x-example":1639490751,"format":"int32"},"localTime":{"type":"integer","description":"Current unix timestamp of local server where Appwrite runs.","x-example":1639490844,"format":"int32"},"diff":{"type":"integer","description":"Difference of unix remote and local timestamps in milliseconds.","x-example":93,"format":"int32"}},"required":["remoteTime","localTime","diff"]},"metric":{"description":"Metric","type":"object","properties":{"value":{"type":"integer","description":"The value of this metric at the timestamp.","x-example":1,"format":"int32"},"date":{"type":"string","description":"The date at which this metric was aggregated in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["value","date"]},"metricBreakdown":{"description":"Metric Breakdown","type":"object","properties":{"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Resource name.","x-example":"Documents"},"value":{"type":"integer","description":"The value of this metric at the timestamp.","x-example":1,"format":"int32"}},"required":["resourceId","name","value"]},"usageDatabases":{"description":"UsageDatabases","type":"object","properties":{"range":{"type":"string","description":"Time range of the usage stats.","x-example":"30d"},"databasesTotal":{"type":"integer","description":"Total aggregated number of databases.","x-example":0,"format":"int32"},"collectionsTotal":{"type":"integer","description":"Total aggregated number of collections.","x-example":0,"format":"int32"},"documentsTotal":{"type":"integer","description":"Total aggregated number of documents.","x-example":0,"format":"int32"},"databases":{"type":"array","description":"Aggregated number of databases per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collections":{"type":"array","description":"Aggregated number of collections per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documents":{"type":"array","description":"Aggregated number of documents per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","databasesTotal","collectionsTotal","documentsTotal","databases","collections","documents"]},"usageDatabase":{"description":"UsageDatabase","type":"object","properties":{"range":{"type":"string","description":"Time range of the usage stats.","x-example":"30d"},"collectionsTotal":{"type":"integer","description":"Total aggregated number of collections.","x-example":0,"format":"int32"},"documentsTotal":{"type":"integer","description":"Total aggregated number of documents.","x-example":0,"format":"int32"},"collections":{"type":"array","description":"Aggregated number of collections per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documents":{"type":"array","description":"Aggregated number of documents per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","collectionsTotal","documentsTotal","collections","documents"]},"usageCollection":{"description":"UsageCollection","type":"object","properties":{"range":{"type":"string","description":"Time range of the usage stats.","x-example":"30d"},"documentsTotal":{"type":"integer","description":"Total aggregated number of of documents.","x-example":0,"format":"int32"},"documents":{"type":"array","description":"Aggregated number of documents per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","documentsTotal","documents"]},"usageUsers":{"description":"UsageUsers","type":"object","properties":{"range":{"type":"string","description":"Time range of the usage stats.","x-example":"30d"},"usersTotal":{"type":"integer","description":"Total aggregated number of statistics of users.","x-example":0,"format":"int32"},"sessionsTotal":{"type":"integer","description":"Total aggregated number of active sessions.","x-example":0,"format":"int32"},"users":{"type":"array","description":"Aggregated number of users per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"sessions":{"type":"array","description":"Aggregated number of active sessions per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","usersTotal","sessionsTotal","users","sessions"]},"usageStorage":{"description":"StorageUsage","type":"object","properties":{"range":{"type":"string","description":"Time range of the usage stats.","x-example":"30d"},"bucketsTotal":{"type":"integer","description":"Total aggregated number of buckets","x-example":0,"format":"int32"},"filesTotal":{"type":"integer","description":"Total aggregated number of files.","x-example":0,"format":"int32"},"filesStorageTotal":{"type":"integer","description":"Total aggregated number of files storage (in bytes).","x-example":0,"format":"int32"},"buckets":{"type":"array","description":"Aggregated number of buckets per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"files":{"type":"array","description":"Aggregated number of files per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"storage":{"type":"array","description":"Aggregated number of files storage (in bytes) per period .","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","bucketsTotal","filesTotal","filesStorageTotal","buckets","files","storage"]},"usageBuckets":{"description":"UsageBuckets","type":"object","properties":{"range":{"type":"string","description":"Time range of the usage stats.","x-example":"30d"},"filesTotal":{"type":"integer","description":"Total aggregated number of bucket files.","x-example":0,"format":"int32"},"filesStorageTotal":{"type":"integer","description":"Total aggregated number of bucket files storage (in bytes).","x-example":0,"format":"int32"},"files":{"type":"array","description":"Aggregated number of bucket files per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"storage":{"type":"array","description":"Aggregated number of bucket storage files (in bytes) per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","filesTotal","filesStorageTotal","files","storage"]},"usageFunctions":{"description":"UsageFunctions","type":"object","properties":{"range":{"type":"string","description":"Time range of the usage stats.","x-example":"30d"},"functionsTotal":{"type":"integer","description":"Total aggregated number of functions.","x-example":0,"format":"int32"},"deploymentsTotal":{"type":"integer","description":"Total aggregated number of functions deployments.","x-example":0,"format":"int32"},"deploymentsStorageTotal":{"type":"integer","description":"Total aggregated sum of functions deployment storage.","x-example":0,"format":"int32"},"buildsTotal":{"type":"integer","description":"Total aggregated number of functions build.","x-example":0,"format":"int32"},"buildsStorageTotal":{"type":"integer","description":"total aggregated sum of functions build storage.","x-example":0,"format":"int32"},"buildsTimeTotal":{"type":"integer","description":"Total aggregated sum of functions build compute time.","x-example":0,"format":"int32"},"executionsTotal":{"type":"integer","description":"Total aggregated number of functions execution.","x-example":0,"format":"int32"},"executionsTimeTotal":{"type":"integer","description":"Total aggregated sum of functions execution compute time.","x-example":0,"format":"int32"},"functions":{"type":"array","description":"Aggregated number of functions per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":0},"deployments":{"type":"array","description":"Aggregated number of functions deployment per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"deploymentsStorage":{"type":"array","description":"Aggregated number of functions deployment storage per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"builds":{"type":"array","description":"Aggregated number of functions build per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"buildsStorage":{"type":"array","description":"Aggregated sum of functions build storage per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"buildsTime":{"type":"array","description":"Aggregated sum of functions build compute time per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"executions":{"type":"array","description":"Aggregated number of functions execution per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"executionsTime":{"type":"array","description":"Aggregated number of functions execution compute time per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","functionsTotal","deploymentsTotal","deploymentsStorageTotal","buildsTotal","buildsStorageTotal","buildsTimeTotal","executionsTotal","executionsTimeTotal","functions","deployments","deploymentsStorage","builds","buildsStorage","buildsTime","executions","executionsTime"]},"usageFunction":{"description":"UsageFunction","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"deploymentsTotal":{"type":"integer","description":"Total aggregated number of function deployments.","x-example":0,"format":"int32"},"deploymentsStorageTotal":{"type":"integer","description":"Total aggregated sum of function deployments storage.","x-example":0,"format":"int32"},"buildsTotal":{"type":"integer","description":"Total aggregated number of function builds.","x-example":0,"format":"int32"},"buildsStorageTotal":{"type":"integer","description":"total aggregated sum of function builds storage.","x-example":0,"format":"int32"},"buildsTimeTotal":{"type":"integer","description":"Total aggregated sum of function builds compute time.","x-example":0,"format":"int32"},"executionsTotal":{"type":"integer","description":"Total aggregated number of function executions.","x-example":0,"format":"int32"},"executionsTimeTotal":{"type":"integer","description":"Total aggregated sum of function executions compute time.","x-example":0,"format":"int32"},"deployments":{"type":"array","description":"Aggregated number of function deployments per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"deploymentsStorage":{"type":"array","description":"Aggregated number of function deployments storage per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"builds":{"type":"array","description":"Aggregated number of function builds per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"buildsStorage":{"type":"array","description":"Aggregated sum of function builds storage per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"buildsTime":{"type":"array","description":"Aggregated sum of function builds compute time per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"executions":{"type":"array","description":"Aggregated number of function executions per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"executionsTime":{"type":"array","description":"Aggregated number of function executions compute time per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","deploymentsTotal","deploymentsStorageTotal","buildsTotal","buildsStorageTotal","buildsTimeTotal","executionsTotal","executionsTimeTotal","deployments","deploymentsStorage","builds","buildsStorage","buildsTime","executions","executionsTime"]},"usageProject":{"description":"UsageProject","type":"object","properties":{"executionsTotal":{"type":"integer","description":"Total aggregated number of function executions.","x-example":0,"format":"int32"},"documentsTotal":{"type":"integer","description":"Total aggregated number of documents.","x-example":0,"format":"int32"},"databasesTotal":{"type":"integer","description":"Total aggregated number of databases.","x-example":0,"format":"int32"},"usersTotal":{"type":"integer","description":"Total aggregated number of users.","x-example":0,"format":"int32"},"filesStorageTotal":{"type":"integer","description":"Total aggregated sum of files storage size (in bytes).","x-example":0,"format":"int32"},"bucketsTotal":{"type":"integer","description":"Total aggregated number of buckets.","x-example":0,"format":"int32"},"requests":{"type":"array","description":"Aggregated number of requests per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"network":{"type":"array","description":"Aggregated number of consumed bandwidth per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"users":{"type":"array","description":"Aggregated number of users per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"executions":{"type":"array","description":"Aggregated number of executions per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"executionsBreakdown":{"type":"array","description":"Aggregated breakdown in totals of executions by functions.","items":{"type":"object","$ref":"#\/definitions\/metricBreakdown"},"x-example":[]},"bucketsBreakdown":{"type":"array","description":"Aggregated breakdown in totals of usage by buckets.","items":{"type":"object","$ref":"#\/definitions\/metricBreakdown"},"x-example":[]}},"required":["executionsTotal","documentsTotal","databasesTotal","usersTotal","filesStorageTotal","bucketsTotal","requests","network","users","executions","executionsBreakdown","bucketsBreakdown"]},"headers":{"description":"Headers","type":"object","properties":{"name":{"type":"string","description":"Header name.","x-example":"Content-Type"},"value":{"type":"string","description":"Header value.","x-example":"application\/json"}},"required":["name","value"]},"proxyRule":{"description":"Rule","type":"object","properties":{"$id":{"type":"string","description":"Rule ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Rule creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Rule update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"domain":{"type":"string","description":"Domain name.","x-example":"appwrite.company.com"},"resourceType":{"type":"string","description":"Action definition for the rule. Possible values are \"api\", \"function\", or \"redirect\"","x-example":"function"},"resourceId":{"type":"string","description":"ID of resource for the action type. If resourceType is \"api\" or \"url\", it is empty. If resourceType is \"function\", it is ID of the function.","x-example":"myAwesomeFunction"},"status":{"type":"string","description":"Domain verification status. Possible values are \"created\", \"verifying\", \"verified\" and \"unverified\"","x-example":"verified"},"logs":{"type":"string","description":"Certificate generation logs. This will return an empty string if generation did not run, or succeeded.","x-example":"HTTP challegne failed."},"renewAt":{"type":"string","description":"Certificate auto-renewal date in ISO 8601 format.","x-example":"datetime"}},"required":["$id","$createdAt","$updatedAt","domain","resourceType","resourceId","status","logs","renewAt"]},"smsTemplate":{"description":"SmsTemplate","type":"object","properties":{"type":{"type":"string","description":"Template type","x-example":"verification"},"locale":{"type":"string","description":"Template locale","x-example":"en_us"},"message":{"type":"string","description":"Template message","x-example":"Click on the link to verify your account."}},"required":["type","locale","message"]},"emailTemplate":{"description":"EmailTemplate","type":"object","properties":{"type":{"type":"string","description":"Template type","x-example":"verification"},"locale":{"type":"string","description":"Template locale","x-example":"en_us"},"message":{"type":"string","description":"Template message","x-example":"Click on the link to verify your account."},"senderName":{"type":"string","description":"Name of the sender","x-example":"My User"},"senderEmail":{"type":"string","description":"Email of the sender","x-example":"mail@appwrite.io"},"replyTo":{"type":"string","description":"Reply to email address","x-example":"emails@appwrite.io"},"subject":{"type":"string","description":"Email subject","x-example":"Please verify your email address"}},"required":["type","locale","message","senderName","senderEmail","replyTo","subject"]},"consoleVariables":{"description":"Console Variables","type":"object","properties":{"_APP_DOMAIN_TARGET":{"type":"string","description":"CNAME target for your Appwrite custom domains.","x-example":"appwrite.io"},"_APP_STORAGE_LIMIT":{"type":"integer","description":"Maximum file size allowed for file upload in bytes.","x-example":"30000000","format":"int32"},"_APP_FUNCTIONS_SIZE_LIMIT":{"type":"integer","description":"Maximum file size allowed for deployment in bytes.","x-example":"30000000","format":"int32"},"_APP_USAGE_STATS":{"type":"string","description":"Defines if usage stats are enabled. This value is set to 'enabled' by default, to disable the usage stats set the value to 'disabled'.","x-example":"enabled"},"_APP_VCS_ENABLED":{"type":"boolean","description":"Defines if VCS (Version Control System) is enabled.","x-example":true},"_APP_DOMAIN_ENABLED":{"type":"boolean","description":"Defines if main domain is configured. If so, custom domains can be created.","x-example":true},"_APP_ASSISTANT_ENABLED":{"type":"boolean","description":"Defines if AI assistant is enabled.","x-example":true}},"required":["_APP_DOMAIN_TARGET","_APP_STORAGE_LIMIT","_APP_FUNCTIONS_SIZE_LIMIT","_APP_USAGE_STATS","_APP_VCS_ENABLED","_APP_DOMAIN_ENABLED","_APP_ASSISTANT_ENABLED"]},"mfaChallenge":{"description":"MFA Challenge","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","userId","expire"]},"mfaProvider":{"description":"MFAProvider","type":"object","properties":{"backups":{"type":"array","description":"Backup codes.","items":{"type":"string"},"x-example":true},"secret":{"type":"string","description":"Secret token used for TOTP factor.","x-example":true},"uri":{"type":"string","description":"URI for authenticator apps.","x-example":true}},"required":["backups","secret","uri"]},"mfaProviders":{"description":"MFAProviders","type":"object","properties":{"totp":{"type":"boolean","description":"TOTP","x-example":true},"phone":{"type":"boolean","description":"Phone","x-example":true},"email":{"type":"boolean","description":"Email","x-example":true}},"required":["totp","phone","email"]},"provider":{"description":"Provider","type":"object","properties":{"$id":{"type":"string","description":"Provider ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Provider creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Provider update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"The name for the provider instance.","x-example":"Mailgun"},"provider":{"type":"string","description":"The name of the provider service.","x-example":"mailgun"},"enabled":{"type":"boolean","description":"Is provider enabled?","x-example":true},"type":{"type":"string","description":"Type of provider.","x-example":"sms"},"credentials":{"type":"object","additionalProperties":true,"description":"Provider credentials.","x-example":{"key":"123456789"}},"options":{"type":"object","additionalProperties":true,"description":"Provider options.","x-example":{"from":"sender-email@mydomain"}}},"required":["$id","$createdAt","$updatedAt","name","provider","enabled","type","credentials"]},"message":{"description":"Message","type":"object","properties":{"$id":{"type":"string","description":"Message ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Message creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Message update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerType":{"type":"string","description":"Message provider type.","x-example":"email"},"topics":{"type":"array","description":"Topic IDs set as recipients.","items":{"type":"string"},"x-example":["5e5ea5c16897e"]},"users":{"type":"array","description":"User IDs set as recipients.","items":{"type":"string"},"x-example":["5e5ea5c16897e"]},"targets":{"type":"array","description":"Target IDs set as recipients.","items":{"type":"string"},"x-example":["5e5ea5c16897e"]},"scheduledAt":{"type":"string","description":"The scheduled time for message.","x-example":"2020-10-15T06:38:00.000+00:00","x-nullable":true},"deliveredAt":{"type":"string","description":"The time when the message was delivered.","x-example":"2020-10-15T06:38:00.000+00:00","x-nullable":true},"deliveryErrors":{"type":"array","description":"Delivery errors if any.","items":{"type":"string"},"x-example":["Failed to send message to target 5e5ea5c16897e: Credentials not valid."],"x-nullable":true},"deliveredTotal":{"type":"integer","description":"Number of recipients the message was delivered to.","x-example":1,"format":"int32"},"data":{"type":"object","additionalProperties":true,"description":"Data of the message.","x-example":{"subject":"Welcome to Appwrite","content":"Hi there, welcome to Appwrite family."}},"status":{"type":"string","description":"Status of delivery.","x-example":"Message status can be one of the following: processing, sent, cancelled, failed."}},"required":["$id","$createdAt","$updatedAt","providerType","topics","users","targets","deliveredTotal","data","status"]},"topic":{"description":"Topic","type":"object","properties":{"$id":{"type":"string","description":"Topic ID.","x-example":"259125845563242502"},"$createdAt":{"type":"string","description":"Topic creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Topic update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"The name of the topic.","x-example":"events"},"total":{"type":"integer","description":"Total count of subscribers subscribed to topic.","x-example":100,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","name","total"]},"subscriber":{"description":"Subscriber","type":"object","properties":{"$id":{"type":"string","description":"Subscriber ID.","x-example":"259125845563242502"},"$createdAt":{"type":"string","description":"Subscriber creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Subscriber update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"targetId":{"type":"string","description":"Target ID.","x-example":"259125845563242502"},"target":{"type":"object","description":"Target.","x-example":{"$id":"259125845563242502","$createdAt":"2020-10-15T06:38:00.000+00:00","$updatedAt":"2020-10-15T06:38:00.000+00:00","providerType":"email","providerId":"259125845563242502","name":"ageon-app-email","identifier":"random-mail@email.org","userId":"5e5ea5c16897e"},"items":{"type":"object","$ref":"#\/definitions\/target"}},"userId":{"type":"string","description":"Topic ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User Name.","x-example":"Aegon Targaryen"},"topicId":{"type":"string","description":"Topic ID.","x-example":"259125845563242502"},"providerType":{"type":"string","description":"The target provider type. Can be one of the following: `email`, `sms` or `push`.","x-example":"email"}},"required":["$id","$createdAt","$updatedAt","targetId","target","userId","userName","topicId","providerType"]},"target":{"description":"Target","type":"object","properties":{"$id":{"type":"string","description":"Target ID.","x-example":"259125845563242502"},"$createdAt":{"type":"string","description":"Target creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Target update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Target Name.","x-example":"Aegon apple token"},"userId":{"type":"string","description":"User ID.","x-example":"259125845563242502"},"providerId":{"type":"string","description":"Provider ID.","x-example":"259125845563242502","x-nullable":true},"providerType":{"type":"string","description":"The target provider type. Can be one of the following: `email`, `sms` or `push`.","x-example":"email"},"identifier":{"type":"string","description":"The target identifier.","x-example":"token"}},"required":["$id","$createdAt","$updatedAt","name","userId","providerType","identifier"]},"migration":{"description":"Migration","type":"object","properties":{"$id":{"type":"string","description":"Migration ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"string","description":"Migration status ( pending, processing, failed, completed ) ","x-example":"pending"},"stage":{"type":"string","description":"Migration stage ( init, processing, source-check, destination-check, migrating, finished )","x-example":"init"},"source":{"type":"string","description":"A string containing the type of source of the migration.","x-example":"Appwrite"},"resources":{"type":"array","description":"Resources to migration.","items":{"type":"string"},"x-example":["user"]},"statusCounters":{"type":"object","additionalProperties":true,"description":"A group of counters that represent the total progress of the migration.","x-example":"{\"Database\": {\"PENDING\": 0, \"SUCCESS\": 1, \"ERROR\": 0, \"SKIP\": 0, \"PROCESSING\": 0, \"WARNING\": 0}}"},"resourceData":{"type":"object","additionalProperties":true,"description":"An array of objects containing the report data of the resources that were migrated.","x-example":"[{\"resource\":\"Database\",\"id\":\"public\",\"status\":\"SUCCESS\",\"message\":\"\"}]"},"errors":{"type":"array","description":"All errors that occurred during the migration process.","items":{"type":"string"},"x-example":[]}},"required":["$id","$createdAt","$updatedAt","status","stage","source","resources","statusCounters","resourceData","errors"]},"migrationReport":{"description":"Migration Report","type":"object","properties":{"user":{"type":"integer","description":"Number of users to be migrated.","x-example":20,"format":"int32"},"team":{"type":"integer","description":"Number of teams to be migrated.","x-example":20,"format":"int32"},"database":{"type":"integer","description":"Number of databases to be migrated.","x-example":20,"format":"int32"},"document":{"type":"integer","description":"Number of documents to be migrated.","x-example":20,"format":"int32"},"file":{"type":"integer","description":"Number of files to be migrated.","x-example":20,"format":"int32"},"bucket":{"type":"integer","description":"Number of buckets to be migrated.","x-example":20,"format":"int32"},"function":{"type":"integer","description":"Number of functions to be migrated.","x-example":20,"format":"int32"},"size":{"type":"integer","description":"Size of files to be migrated in mb.","x-example":30000,"format":"int32"},"version":{"type":"string","description":"Version of the Appwrite instance to be migrated.","x-example":"1.4.0"}},"required":["user","team","database","document","file","bucket","function","size","version"]},"firebaseProject":{"description":"MigrationFirebaseProject","type":"object","properties":{"projectId":{"type":"string","description":"Project ID.","x-example":"my-project"},"displayName":{"type":"string","description":"Project display name.","x-example":"My Project"}},"required":["projectId","displayName"]}},"externalDocs":{"description":"Full API docs, specs and tutorials","url":"https:\/\/appwrite.io\/docs"}} \ No newline at end of file +{"swagger":"2.0","info":{"version":"1.4.13","title":"Appwrite","description":"Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https:\/\/appwrite.io\/docs](https:\/\/appwrite.io\/docs)","termsOfService":"https:\/\/appwrite.io\/policy\/terms","contact":{"name":"Appwrite Team","url":"https:\/\/appwrite.io\/support","email":"team@appwrite.io"},"license":{"name":"BSD-3-Clause","url":"https:\/\/raw.githubusercontent.com\/appwrite\/appwrite\/master\/LICENSE"}},"host":"cloud.appwrite.io","basePath":"\/v1","schemes":["https"],"consumes":["application\/json","multipart\/form-data"],"produces":["application\/json"],"securityDefinitions":{"Project":{"type":"apiKey","name":"X-Appwrite-Project","description":"Your project ID","in":"header","x-appwrite":{"demo":"5df5acd0d48c2"}},"Key":{"type":"apiKey","name":"X-Appwrite-Key","description":"Your secret API key","in":"header","x-appwrite":{"demo":"919c2d18fb5d4...a2ae413da83346ad2"}},"JWT":{"type":"apiKey","name":"X-Appwrite-JWT","description":"Your secret JSON Web Token","in":"header","x-appwrite":{"demo":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ..."}},"Locale":{"type":"apiKey","name":"X-Appwrite-Locale","description":"","in":"header","x-appwrite":{"demo":"en"}},"Mode":{"type":"apiKey","name":"X-Appwrite-Mode","description":"","in":"header","x-appwrite":{"demo":""}}},"paths":{"\/account":{"get":{"summary":"Get account","operationId":"accountGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get the currently logged in user.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"get","weight":22,"cookies":false,"type":"","demo":"account\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"post":{"summary":"Create account","operationId":"accountCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to allow a new user to register a new account in your project. After the user registration completes successfully, you can use the [\/account\/verfication](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createVerification) route to start verifying the user email address. To allow the new user to login to their new account, you need to create a new [account session](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createEmailSession).","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"create","weight":7,"cookies":false,"type":"","demo":"account\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"New user password. Must be between 8 and 256 chars.","default":null,"x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]},"delete":{"summary":"Delete account","operationId":"accountDelete","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Delete the currently logged in user.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":49,"cookies":false,"type":"","demo":"account\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/email":{"patch":{"summary":"Update email","operationId":"accountUpdateEmail","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateEmail","weight":29,"cookies":false,"type":"","demo":"account\/update-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["email","password"]}}]}},"\/account\/identities":{"get":{"summary":"List Identities","operationId":"accountListIdentities","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get the list of identities for the currently logged in user.","responses":{"200":{"description":"Identities List","schema":{"$ref":"#\/definitions\/identityList"}}},"x-appwrite":{"method":"listIdentities","weight":13,"cookies":false,"type":"","demo":"account\/list-identities.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-identities.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/identities","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, provider, providerUid, providerEmail, providerAccessTokenExpiry","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/identities\/{identityId}":{"delete":{"summary":"Delete identity","operationId":"accountDeleteIdentity","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Delete an identity by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIdentity","weight":14,"cookies":false,"type":"","demo":"account\/delete-identity.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-identity.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"identityId","description":"Identity ID.","required":true,"type":"string","x-example":"[IDENTITY_ID]","in":"path"}]}},"\/account\/jwt":{"post":{"summary":"Create JWT","operationId":"accountCreateJWT","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to create a JSON Web Token. You can use the resulting JWT to authenticate on behalf of the current user when working with the Appwrite server-side API and SDKs. The JWT secret is valid for 15 minutes from its creation and will be invalid if the user will logout in that time frame.","responses":{"201":{"description":"JWT","schema":{"$ref":"#\/definitions\/jwt"}}},"x-appwrite":{"method":"createJWT","weight":21,"cookies":false,"type":"","demo":"account\/create-j-w-t.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-jwt.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"List logs","operationId":"accountListLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get the list of latest security activity logs for the currently logged in user. Each log returns user IP address, location and date and time of log.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listLogs","weight":25,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/mfa":{"patch":{"summary":"Update MFA","operationId":"accountUpdateMFA","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateMFA","weight":42,"cookies":false,"type":"","demo":"account\/update-m-f-a.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-mfa.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"mfa":{"type":"boolean","description":"Enable or disable MFA.","default":null,"x-example":false}},"required":["mfa"]}}]}},"\/account\/mfa\/challenge":{"post":{"summary":"Create 2FA Challenge","operationId":"accountCreate2FAChallenge","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"201":{"description":"MFA Challenge","schema":{"$ref":"#\/definitions\/mfaChallenge"}}},"x-appwrite":{"method":"create2FAChallenge","weight":47,"cookies":false,"type":"","demo":"account\/create2f-a-challenge.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-2fa-challenge.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},token:{param-token}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"factor":{"type":"string","description":"Factor used for verification.","default":null,"x-example":"totp","enum":["totp","phone","email"],"x-enum-name":null,"x-enum-keys":[]}},"required":["factor"]}}]},"put":{"summary":"Create MFA Challenge (confirmation)","operationId":"accountUpdateChallenge","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"updateChallenge","weight":48,"cookies":false,"type":"","demo":"account\/update-challenge.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-challenge.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"challengeId":{"type":"string","description":"ID of the challenge.","default":null,"x-example":"[CHALLENGE_ID]"},"otp":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[OTP]"}},"required":["challengeId","otp"]}}]}},"\/account\/mfa\/factors":{"get":{"summary":"List Factors","operationId":"accountListFactors","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"200":{"description":"MFAFactors","schema":{"$ref":"#\/definitions\/mfaFactors"}}},"x-appwrite":{"method":"listFactors","weight":43,"cookies":false,"type":"","demo":"account\/list-factors.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-factors.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/account\/mfa\/{type}":{"post":{"summary":"Add Authenticator","operationId":"accountAddAuthenticator","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"200":{"description":"MFAType","schema":{"$ref":"#\/definitions\/mfaType"}}},"x-appwrite":{"method":"addAuthenticator","weight":44,"cookies":false,"type":"","demo":"account\/add-authenticator.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/add-authenticator.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"type","description":"Type of authenticator.","required":true,"type":"string","x-example":"totp","enum":["totp"],"x-enum-name":null,"x-enum-keys":[],"in":"path"}]},"put":{"summary":"Verify Authenticator","operationId":"accountVerifyAuthenticator","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"verifyAuthenticator","weight":45,"cookies":false,"type":"","demo":"account\/verify-authenticator.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/verify-authenticator.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"type","description":"Type of authenticator.","required":true,"type":"string","x-example":"totp","enum":["totp"],"x-enum-name":null,"x-enum-keys":[],"in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"otp":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[OTP]"}},"required":["otp"]}}]},"delete":{"summary":"Delete Authenticator","operationId":"accountDeleteAuthenticator","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"deleteAuthenticator","weight":46,"cookies":false,"type":"","demo":"account\/delete-authenticator.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-mfa.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"type","description":"Type of authenticator.","required":true,"type":"string","x-example":"totp","enum":["totp"],"x-enum-name":null,"x-enum-keys":[],"in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"otp":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[OTP]"}},"required":["otp"]}}]}},"\/account\/name":{"patch":{"summary":"Update name","operationId":"accountUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateName","weight":27,"cookies":false,"type":"","demo":"account\/update-name.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-name.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"User name. Max length: 128 chars.","default":null,"x-example":"[NAME]"}},"required":["name"]}}]}},"\/account\/password":{"patch":{"summary":"Update password","operationId":"accountUpdatePassword","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePassword","weight":28,"cookies":false,"type":"","demo":"account\/update-password.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-password.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"password":{"type":"string","description":"New user password. Must be at least 8 chars.","default":null,"x-example":null},"oldPassword":{"type":"string","description":"Current user password. Must be at least 8 chars.","default":"","x-example":"password"}},"required":["password"]}}]}},"\/account\/phone":{"patch":{"summary":"Update phone","operationId":"accountUpdatePhone","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createPhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePhone","weight":30,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["phone","password"]}}]}},"\/account\/prefs":{"get":{"summary":"Get account preferences","operationId":"accountGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get the preferences as a key-value object for the currently logged in user.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":23,"cookies":false,"type":"","demo":"account\/get-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/prefs","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"patch":{"summary":"Update preferences","operationId":"accountUpdatePrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account preferences. The object you pass is stored as is, and replaces any previous value. The maximum allowed prefs size is 64kB and throws error if exceeded.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePrefs","weight":31,"cookies":false,"type":"","demo":"account\/update-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/prefs","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"prefs":{"type":"object","description":"Prefs key-value JSON object.","default":{},"x-example":"{}"}},"required":["prefs"]}}]}},"\/account\/recovery":{"post":{"summary":"Create password recovery","operationId":"accountCreateRecovery","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Sends the user an email with a temporary secret key for password reset. When the user clicks the confirmation link he is redirected back to your app password reset URL with the secret key and email address values attached to the URL query string. Use the query string params to submit a request to the [PUT \/account\/recovery](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateRecovery) endpoint to complete the process. The verification link sent to the user's email address is valid for 1 hour.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createRecovery","weight":36,"cookies":false,"type":"","demo":"account\/create-recovery.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-recovery.md","rate-limit":10,"rate-time":3600,"rate-key":["url:{url},email:{param-email}","url:{url},ip:{ip}"],"scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"url":{"type":"string","description":"URL to redirect the user back to your app from the recovery email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":null,"x-example":"https:\/\/example.com"}},"required":["email","url"]}}]},"put":{"summary":"Create password recovery (confirmation)","operationId":"accountUpdateRecovery","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete the user account password reset. Both the **userId** and **secret** arguments will be passed as query parameters to the redirect URL you have provided when sending your request to the [POST \/account\/recovery](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createRecovery) endpoint.\n\nPlease note that in order to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) the only valid redirect URLs are the ones from domains you have set when adding your platforms in the console interface.","responses":{"200":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"updateRecovery","weight":37,"cookies":false,"type":"","demo":"account\/update-recovery.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-recovery.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid reset token.","default":null,"x-example":"[SECRET]"},"password":{"type":"string","description":"New user password. Must be between 8 and 256 chars.","default":null,"x-example":null}},"required":["userId","secret","password"]}}]}},"\/account\/sessions":{"get":{"summary":"List sessions","operationId":"accountListSessions","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get the list of active sessions across different devices for the currently logged in user.","responses":{"200":{"description":"Sessions List","schema":{"$ref":"#\/definitions\/sessionList"}}},"x-appwrite":{"method":"listSessions","weight":24,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/sessions","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete sessions","operationId":"accountDeleteSessions","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":35,"cookies":false,"type":"","demo":"account\/delete-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-sessions.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/account\/sessions\/anonymous":{"post":{"summary":"Create anonymous session","operationId":"accountCreateAnonymousSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to allow a new user to register an anonymous account in your project. This route will also create a new session for the user. To allow the new user to convert an anonymous account to a normal account, you need to update its [email and password](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateEmail) or create an [OAuth2 session](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#CreateOAuth2Session).","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"createAnonymousSession","weight":20,"cookies":false,"type":"","demo":"account\/create-anonymous-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-anonymous.md","rate-limit":50,"rate-time":3600,"rate-key":"ip:{ip}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/sessions\/email":{"post":{"summary":"Create email password session","operationId":"accountCreateEmailPasswordSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Allow the user to login into their account by providing a valid email and password combination. This route will create a new session for the user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"createEmailPasswordSession","weight":8,"cookies":false,"type":"","demo":"account\/create-email-password-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-email-password.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["email","password"]}}]}},"\/account\/sessions\/magic-url":{"put":{"summary":"Create session (deprecated)","operationId":"accountUpdateMagicURLSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to create a session from token. Provide the **userId** and **secret** parameters from the successful response of authentication flows initiated by token creation. For example, magic URL and phone login.","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateMagicURLSession","weight":17,"cookies":false,"type":"","demo":"account\/update-magic-u-r-l-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session.md","rate-limit":10,"rate-time":3600,"rate-key":"ip:{ip},userId:{param-userId}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/account\/sessions\/oauth2\/{provider}":{"get":{"summary":"Create OAuth2 session","operationId":"accountCreateOAuth2Session","consumes":["application\/json"],"produces":["text\/html"],"tags":["account"],"description":"Allow the user to login to their account using the OAuth2 provider of their choice. Each OAuth2 provider should be enabled from the Appwrite console first. Use the success and failure arguments to provide a redirect URL's back to your app when login is completed.\n\nIf there is already an active session, the new session will be attached to the logged-in account. If there are no active sessions, the server will attempt to look for a user with the same email address as the email received from the OAuth2 provider and attach the new session to the existing user. If no matching user is found - the server will create a new user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).\n","responses":{"301":{"description":"No content"}},"x-appwrite":{"method":"createOAuth2Session","weight":9,"cookies":false,"type":"webAuth","demo":"account\/create-o-auth2session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-oauth2.md","rate-limit":50,"rate-time":3600,"rate-key":"ip:{ip}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"provider","description":"OAuth2 Provider. Currently, supported providers are: amazon, apple, auth0, authentik, autodesk, bitbucket, bitly, box, dailymotion, discord, disqus, dropbox, etsy, facebook, github, gitlab, google, linkedin, microsoft, notion, oidc, okta, paypal, paypalSandbox, podio, salesforce, slack, spotify, stripe, tradeshift, tradeshiftBox, twitch, wordpress, yahoo, yammer, yandex, zoho, zoom.","required":true,"type":"string","x-example":"amazon","enum":["amazon","apple","auth0","authentik","autodesk","bitbucket","bitly","box","dailymotion","discord","disqus","dropbox","etsy","facebook","github","gitlab","google","linkedin","microsoft","notion","oidc","okta","paypal","paypalSandbox","podio","salesforce","slack","spotify","stripe","tradeshift","tradeshiftBox","twitch","wordpress","yahoo","yammer","yandex","zoho","zoom","mock"],"x-enum-name":"OAuthProvider","x-enum-keys":[],"in":"path"},{"name":"success","description":"URL to redirect back to your app after a successful login attempt. Only URLs from hostnames in your project's platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","required":false,"type":"string","format":"url","x-example":"https:\/\/example.com","default":"","in":"query"},{"name":"failure","description":"URL to redirect back to your app after a failed login attempt. Only URLs from hostnames in your project's platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","required":false,"type":"string","format":"url","x-example":"https:\/\/example.com","default":"","in":"query"},{"name":"token","description":"Include token credentials in the final redirect, useful for server-side integrations, or when cookies are not available.","required":false,"type":"boolean","x-example":false,"default":false,"in":"query"},{"name":"scopes","description":"A list of custom OAuth2 scopes. Check each provider internal docs for a list of supported scopes. Maximum of 100 scopes are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/sessions\/token":{"post":{"summary":"Create session","operationId":"accountCreateSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to create a session from token. Provide the **userId** and **secret** parameters from the successful response of authentication flows initiated by token creation. For example, magic URL and phone login.","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"createSession","weight":18,"cookies":false,"type":"","demo":"account\/create-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session.md","rate-limit":10,"rate-time":3600,"rate-key":"ip:{ip},userId:{param-userId}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Secret of a token generated by login methods. For example, the `createMagicURLToken` or `createPhoneToken` methods.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/account\/sessions\/{sessionId}":{"get":{"summary":"Get session","operationId":"accountGetSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to get a logged in user's session using a Session ID. Inputting 'current' will return the current session being used.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"getSession","weight":26,"cookies":false,"type":"","demo":"account\/get-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-session.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/sessions","offline-key":"{sessionId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to get the current device session.","required":true,"type":"string","x-example":"[SESSION_ID]","in":"path"}]},"patch":{"summary":"Update (or renew) a session","operationId":"accountUpdateSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Extend session's expiry to increase it's lifespan. Extending a session is useful when session length is short such as 5 minutes.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateSession","weight":34,"cookies":false,"type":"","demo":"account\/update-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-session.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to update the current device session.","required":true,"type":"string","x-example":"[SESSION_ID]","in":"path"}]},"delete":{"summary":"Delete session","operationId":"accountDeleteSession","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Logout the user. Use 'current' as the session ID to logout on this device, use a session ID to logout on another device. If you're looking to logout the user on all devices, use [Delete Sessions](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#deleteSessions) instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSession","weight":33,"cookies":false,"type":"","demo":"account\/delete-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-session.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to delete the current device session.","required":true,"type":"string","x-example":"[SESSION_ID]","in":"path"}]}},"\/account\/status":{"patch":{"summary":"Update status","operationId":"accountUpdateStatus","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateStatus","weight":32,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/account\/targets\/push":{"post":{"summary":"Create a push target","operationId":"accountCreatePushTarget","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"201":{"description":"Target","schema":{"$ref":"#\/definitions\/target"}}},"x-appwrite":{"method":"createPushTarget","weight":50,"cookies":false,"type":"","demo":"account\/create-push-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"targetId":{"type":"string","description":"Target ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[TARGET_ID]"},"identifier":{"type":"string","description":"The target identifier (token, email, phone etc.)","default":null,"x-example":"[IDENTIFIER]"},"providerId":{"type":"string","description":"Provider ID. Message will be sent to this target from the specified provider ID. If no provider ID is set the first setup provider will be used.","default":"","x-example":"[PROVIDER_ID]"}},"required":["targetId","identifier"]}}]}},"\/account\/targets\/{targetId}\/push":{"put":{"summary":"Update a push target","operationId":"accountUpdatePushTarget","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"200":{"description":"Target","schema":{"$ref":"#\/definitions\/target"}}},"x-appwrite":{"method":"updatePushTarget","weight":51,"cookies":false,"type":"","demo":"account\/update-push-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"targetId","description":"Target ID.","required":true,"type":"string","x-example":"[TARGET_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"identifier":{"type":"string","description":"The target identifier (token, email, phone etc.)","default":null,"x-example":"[IDENTIFIER]"}},"required":["identifier"]}}]},"delete":{"summary":"Delete a push target","operationId":"accountDeletePushTarget","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deletePushTarget","weight":52,"cookies":false,"type":"","demo":"account\/delete-push-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"targetId","description":"Target ID.","required":true,"type":"string","x-example":"[TARGET_ID]","in":"path"}]}},"\/account\/tokens\/email":{"post":{"summary":"Create email token (OTP)","operationId":"accountCreateEmailToken","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Sends the user an email with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [POST \/v1\/account\/sessions\/token](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createSession) endpoint to complete the login process. The secret sent to the user's email is valid for 15 minutes.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createEmailToken","weight":16,"cookies":false,"type":"","demo":"account\/create-email-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-token-email.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"phrase":{"type":"boolean","description":"Toggle for security phrase. If enabled, email will be send with a randomly generated phrase and the phrase will also be included in the response. Confirming phrases match increases the security of your authentication flow.","default":false,"x-example":false}},"required":["userId","email"]}}]}},"\/account\/tokens\/magic-url":{"post":{"summary":"Create magic URL token","operationId":"accountCreateMagicURLToken","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Sends the user an email with a secret key for creating a session. If the provided user ID has not been registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [POST \/v1\/account\/sessions\/token](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createSession) endpoint to complete the login process. The link sent to the user's email address is valid for 1 hour. If you are on a mobile device you can leave the URL parameter empty, so that the login completion will be handled by your Appwrite instance by default.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).\n","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createMagicURLToken","weight":15,"cookies":false,"type":"","demo":"account\/create-magic-u-r-l-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-token-magic-url.md","rate-limit":60,"rate-time":3600,"rate-key":["url:{url},email:{param-email}","url:{url},ip:{ip}"],"scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"url":{"type":"string","description":"URL to redirect the user back to your app from the magic URL login. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":"","x-example":"https:\/\/example.com"},"phrase":{"type":"boolean","description":"Toggle for security phrase. If enabled, email will be send with a randomly generated phrase and the phrase will also be included in the response. Confirming phrases match increases the security of your authentication flow.","default":false,"x-example":false}},"required":["userId","email"]}}]}},"\/account\/tokens\/phone":{"post":{"summary":"Create phone token","operationId":"accountCreatePhoneToken","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Sends the user an SMS with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [POST \/v1\/account\/sessions\/token](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createSession) endpoint to complete the login process. The secret sent to the user's phone is valid for 15 minutes.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createPhoneToken","weight":19,"cookies":false,"type":"","demo":"account\/create-phone-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-token-phone.md","rate-limit":10,"rate-time":3600,"rate-key":["url:{url},phone:{param-phone}","url:{url},ip:{ip}"],"scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"}},"required":["userId","phone"]}}]}},"\/account\/verification":{"post":{"summary":"Create email verification","operationId":"accountCreateVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to send a verification message to your user email address to confirm they are the valid owners of that address. Both the **userId** and **secret** arguments will be passed as query parameters to the URL you have provided to be attached to the verification email. The provided URL should redirect the user back to your app and allow you to complete the verification process by verifying both the **userId** and **secret** parameters. Learn more about how to [complete the verification process](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateVerification). The verification link sent to the user's email address is valid for 7 days.\n\nPlease note that in order to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md), the only valid redirect URLs are the ones from domains you have set when adding your platforms in the console interface.\n","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createVerification","weight":38,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"url":{"type":"string","description":"URL to redirect the user back to your app from the verification email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":null,"x-example":"https:\/\/example.com"}},"required":["url"]}}]},"put":{"summary":"Create email verification (confirmation)","operationId":"accountUpdateVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete the user email verification process. Use both the **userId** and **secret** parameters that were attached to your app URL to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"updateVerification","weight":39,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/account\/verification\/phone":{"post":{"summary":"Create phone verification","operationId":"accountCreatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updatePhone) endpoint. Learn more about how to [complete the verification process](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createPhoneVerification","weight":40,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":["url:{url},userId:{userId}","url:{url},ip:{ip}"],"scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"put":{"summary":"Create phone verification (confirmation)","operationId":"accountUpdatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"updatePhoneVerification","weight":41,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/avatars\/browsers\/{code}":{"get":{"summary":"Get browser icon","operationId":"avatarsGetBrowser","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"You can use this endpoint to show different browser icons to your users. The code argument receives the browser code as it appears in your user [GET \/account\/sessions](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#getSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getBrowser","weight":54,"cookies":false,"type":"location","demo":"avatars\/get-browser.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-browser.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Browser Code.","required":true,"type":"string","x-example":"aa","enum":["aa","an","ch","ci","cm","cr","ff","sf","mf","ps","oi","om","op","on"],"x-enum-name":"Browser","x-enum-keys":["Avant Browser","Android WebView Beta","Google Chrome","Google Chrome (iOS)","Google Chrome (Mobile)","Chromium","Mozilla Firefox","Safari","Mobile Safari","Microsoft Edge","Microsoft Edge (iOS)","Opera Mini","Opera","Opera (Next)"],"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"}]}},"\/avatars\/credit-cards\/{code}":{"get":{"summary":"Get credit card icon","operationId":"avatarsGetCreditCard","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"The credit card endpoint will return you the icon of the credit card provider you need. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getCreditCard","weight":53,"cookies":false,"type":"location","demo":"avatars\/get-credit-card.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-credit-card.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Credit Card Code. Possible values: amex, argencard, cabal, censosud, diners, discover, elo, hipercard, jcb, mastercard, naranja, targeta-shopping, union-china-pay, visa, mir, maestro.","required":true,"type":"string","x-example":"amex","enum":["amex","argencard","cabal","censosud","diners","discover","elo","hipercard","jcb","mastercard","naranja","targeta-shopping","union-china-pay","visa","mir","maestro"],"x-enum-name":"CreditCard","x-enum-keys":["American Express","Argencard","Cabal","Consosud","Diners Club","Discover","Elo","Hipercard","JCB","Mastercard","Naranja","Tarjeta Shopping","Union China Pay","Visa","MIR","Maestro"],"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"}]}},"\/avatars\/favicon":{"get":{"summary":"Get favicon","operationId":"avatarsGetFavicon","consumes":["application\/json"],"produces":["image\/*"],"tags":["avatars"],"description":"Use this endpoint to fetch the favorite icon (AKA favicon) of any remote website URL.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFavicon","weight":57,"cookies":false,"type":"location","demo":"avatars\/get-favicon.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-favicon.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"url","description":"Website URL which you want to fetch the favicon from.","required":true,"type":"string","format":"url","x-example":"https:\/\/example.com","in":"query"}]}},"\/avatars\/flags\/{code}":{"get":{"summary":"Get country flag","operationId":"avatarsGetFlag","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"You can use this endpoint to show different country flags icons to your users. The code argument receives the 2 letter country code. Use width, height and quality arguments to change the output settings. Country codes follow the [ISO 3166-1](https:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFlag","weight":55,"cookies":false,"type":"location","demo":"avatars\/get-flag.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-flag.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Country Code. ISO Alpha-2 country code format.","required":true,"type":"string","x-example":"af","enum":["af","ao","al","ad","ae","ar","am","ag","au","at","az","bi","be","bj","bf","bd","bg","bh","bs","ba","by","bz","bo","br","bb","bn","bt","bw","cf","ca","ch","cl","cn","ci","cm","cd","cg","co","km","cv","cr","cu","cy","cz","de","dj","dm","dk","do","dz","ec","eg","er","es","ee","et","fi","fj","fr","fm","ga","gb","ge","gh","gn","gm","gw","gq","gr","gd","gt","gy","hn","hr","ht","hu","id","in","ie","ir","iq","is","il","it","jm","jo","jp","kz","ke","kg","kh","ki","kn","kr","kw","la","lb","lr","ly","lc","li","lk","ls","lt","lu","lv","ma","mc","md","mg","mv","mx","mh","mk","ml","mt","mm","me","mn","mz","mr","mu","mw","my","na","ne","ng","ni","nl","no","np","nr","nz","om","pk","pa","pe","ph","pw","pg","pl","kp","pt","py","qa","ro","ru","rw","sa","sd","sn","sg","sb","sl","sv","sm","so","rs","ss","st","sr","sk","si","se","sz","sc","sy","td","tg","th","tj","tm","tl","to","tt","tn","tr","tv","tz","ug","ua","uy","us","uz","va","vc","ve","vn","vu","ws","ye","za","zm","zw"],"x-enum-name":"Flag","x-enum-keys":["Afghanistan","Angola","Albania","Andorra","United Arab Emirates","Argentina","Armenia","Antigua and Barbuda","Australia","Austria","Azerbaijan","Burundi","Belgium","Benin","Burkina Faso","Bangladesh","Bulgaria","Bahrain","Bahamas","Bosnia and Herzegovina","Belarus","Belize","Bolivia","Brazil","Barbados","Brunei Darussalam","Bhutan","Botswana","Central African Republic","Canada","Switzerland","Chile","China","C\u00f4te d'Ivoire","Cameroon","Democratic Republic of the Congo","Republic of the Congo","Colombia","Comoros","Cape Verde","Costa Rica","Cuba","Cyprus","Czech Republic","Germany","Djibouti","Dominica","Denmark","Dominican Republic","Algeria","Ecuador","Egypt","Eritrea","Spain","Estonia","Ethiopia","Finland","Fiji","France","Micronesia (Federated States of)","Gabon","United Kingdom","Georgia","Ghana","Guinea","Gambia","Guinea-Bissau","Equatorial Guinea","Greece","Grenada","Guatemala","Guyana","Honduras","Croatia","Haiti","Hungary","Indonesia","India","Ireland","Iran (Islamic Republic of)","Iraq","Iceland","Israel","Italy","Jamaica","Jordan","Japan","Kazakhstan","Kenya","Kyrgyzstan","Cambodia","Kiribati","Saint Kitts and Nevis","South Korea","Kuwait","Lao People's Democratic Republic","Lebanon","Liberia","Libya","Saint Lucia","Liechtenstein","Sri Lanka","Lesotho","Lithuania","Luxembourg","Latvia","Morocco","Monaco","Moldova","Madagascar","Maldives","Mexico","Marshall Islands","North Macedonia","Mali","Malta","Myanmar","Montenegro","Mongolia","Mozambique","Mauritania","Mauritius","Malawi","Malaysia","Namibia","Niger","Nigeria","Nicaragua","Netherlands","Norway","Nepal","Nauru","New Zealand","Oman","Pakistan","Panama","Peru","Philippines","Palau","Papua New Guinea","Poland","North Korea","Portugal","Paraguay","Qatar","Romania","Russia","Rwanda","Saudi Arabia","Sudan","Senegal","Singapore","Solomon Islands","Sierra Leone","El Salvador","San Marino","Somalia","Serbia","South Sudan","Sao Tome and Principe","Suriname","Slovakia","Slovenia","Sweden","Eswatini","Seychelles","Syria","Chad","Togo","Thailand","Tajikistan","Turkmenistan","Timor-Leste","Tonga","Trinidad and Tobago","Tunisia","Turkey","Tuvalu","Tanzania","Uganda","Ukraine","Uruguay","United States","Uzbekistan","Vatican City","Saint Vincent and the Grenadines","Venezuela","Vietnam","Vanuatu","Samoa","Yemen","South Africa","Zambia","Zimbabwe"],"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"}]}},"\/avatars\/image":{"get":{"summary":"Get image from URL","operationId":"avatarsGetImage","consumes":["application\/json"],"produces":["image\/*"],"tags":["avatars"],"description":"Use this endpoint to fetch a remote image URL and crop it to any image size you want. This endpoint is very useful if you need to crop and display remote images in your app or in case you want to make sure a 3rd party image is properly served using a TLS protocol.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getImage","weight":56,"cookies":false,"type":"location","demo":"avatars\/get-image.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-image.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"url","description":"Image URL which you want to crop.","required":true,"type":"string","format":"url","x-example":"https:\/\/example.com","in":"query"},{"name":"width","description":"Resize preview image width, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get user initials","operationId":"avatarsGetInitials","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getInitials","weight":59,"cookies":false,"type":"location","demo":"avatars\/get-initials.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-initials.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"name","description":"Full Name. When empty, current user name or email will be used. Max length: 128 chars.","required":false,"type":"string","x-example":"[NAME]","default":"","in":"query"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":500,"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":500,"in":"query"},{"name":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"type":"string","default":"","in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR code","operationId":"avatarsGetQR","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getQR","weight":58,"cookies":false,"type":"location","demo":"avatars\/get-q-r.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-qr.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"text","description":"Plain text to be converted to QR code image.","required":true,"type":"string","x-example":"[TEXT]","in":"query"},{"name":"size","description":"QR code size. Pass an integer between 1 to 1000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":1,"default":400,"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"type":"integer","format":"int32","x-example":0,"default":1,"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"type":"boolean","x-example":false,"default":false,"in":"query"}]}},"\/console\/assistant":{"post":{"summary":"Ask Query","operationId":"assistantChat","consumes":["application\/json"],"produces":["text\/plain"],"tags":["assistant"],"description":"","responses":{"200":{"description":"File","schema":{"type":"file"}}},"x-appwrite":{"method":"chat","weight":306,"cookies":false,"type":"","demo":"assistant\/chat.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/assistant\/chat.md","rate-limit":15,"rate-time":3600,"rate-key":"userId:{userId}","scope":"assistant.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"prompt":{"type":"string","description":"Prompt. A string containing questions asked to the AI assistant.","default":null,"x-example":"[PROMPT]"}},"required":["prompt"]}}]}},"\/console\/variables":{"get":{"summary":"Get variables","operationId":"consoleVariables","consumes":["application\/json"],"produces":["application\/json"],"tags":["console"],"description":"Get all Environment Variables that are relevant for the console.","responses":{"200":{"description":"Console Variables","schema":{"$ref":"#\/definitions\/consoleVariables"}}},"x-appwrite":{"method":"variables","weight":305,"cookies":false,"type":"","demo":"console\/variables.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/console\/variables.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/databases":{"get":{"summary":"List databases","operationId":"databasesList","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all databases from the current Appwrite project. You can use the search parameter to filter your results.","responses":{"200":{"description":"Databases List","schema":{"$ref":"#\/definitions\/databaseList"}}},"x-appwrite":{"method":"list","weight":64,"cookies":false,"type":"","demo":"databases\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create database","operationId":"databasesCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Database.\n","responses":{"201":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"create","weight":63,"cookies":false,"type":"","demo":"databases\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"databaseId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[DATABASE_ID]"},"name":{"type":"string","description":"Database name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Is the database enabled? When set to 'disabled', users cannot access the database but Server SDKs with an API key can still read and write to the database. No data is lost when this is toggled.","default":true,"x-example":false}},"required":["databaseId","name"]}}]}},"\/databases\/usage":{"get":{"summary":"Get usage stats for the database","operationId":"databasesGetUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"UsageDatabases","schema":{"$ref":"#\/definitions\/usageDatabases"}}},"x-appwrite":{"method":"getUsage","weight":108,"cookies":false,"type":"","demo":"databases\/get-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"`Date range.","required":false,"type":"string","x-example":"24h","enum":["24h","30d","90d"],"x-enum-name":"DatabaseUsageRange","x-enum-keys":["Twenty Four Hours","Thirty Days","Ninety Days"],"default":"30d","in":"query"}]}},"\/databases\/{databaseId}":{"get":{"summary":"Get database","operationId":"databasesGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a database by its unique ID. This endpoint response returns a JSON object with the database metadata.","responses":{"200":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"get","weight":65,"cookies":false,"type":"","demo":"databases\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"}]},"put":{"summary":"Update database","operationId":"databasesUpdate","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a database by its unique ID.","responses":{"200":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"update","weight":67,"cookies":false,"type":"","demo":"databases\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Database name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Is database enabled? When set to 'disabled', users cannot access the database but Server SDKs with an API key can still read and write to the database. No data is lost when this is toggled.","default":true,"x-example":false}},"required":["name"]}}]},"delete":{"summary":"Delete database","operationId":"databasesDelete","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a database by its unique ID. Only API keys with with databases.write scope can delete a database.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":68,"cookies":false,"type":"","demo":"databases\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections":{"get":{"summary":"List collections","operationId":"databasesListCollections","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all collections that belong to the provided databaseId. You can use the search parameter to filter your results.","responses":{"200":{"description":"Collections List","schema":{"$ref":"#\/definitions\/collectionList"}}},"x-appwrite":{"method":"listCollections","weight":70,"cookies":false,"type":"","demo":"databases\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, documentSecurity","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create collection","operationId":"databasesCreateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Collection. Before using this route, you should create a new database resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"createCollection","weight":69,"cookies":false,"type":"","demo":"databases\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permissions strings. By default, no user is granted with any permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":false,"x-example":false},"enabled":{"type":"boolean","description":"Is collection enabled? When set to 'disabled', users cannot access the collection but Server SDKs with and API key can still read and write to the collection. No data is lost when this is toggled.","default":true,"x-example":false}},"required":["collectionId","name"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}":{"get":{"summary":"Get collection","operationId":"databasesGetCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a collection by its unique ID. This endpoint response returns a JSON object with the collection metadata.","responses":{"200":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"getCollection","weight":71,"cookies":false,"type":"","demo":"databases\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]},"put":{"summary":"Update collection","operationId":"databasesUpdateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a collection by its unique ID.","responses":{"200":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"updateCollection","weight":73,"cookies":false,"type":"","demo":"databases\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":false,"x-example":false},"enabled":{"type":"boolean","description":"Is collection enabled? When set to 'disabled', users cannot access the collection but Server SDKs with and API key can still read and write to the collection. No data is lost when this is toggled.","default":true,"x-example":false}},"required":["name"]}}]},"delete":{"summary":"Delete collection","operationId":"databasesDeleteCollection","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a collection by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteCollection","weight":74,"cookies":false,"type":"","demo":"databases\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes":{"get":{"summary":"List attributes","operationId":"databasesListAttributes","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Attributes List","schema":{"$ref":"#\/definitions\/attributeList"}}},"x-appwrite":{"method":"listAttributes","weight":85,"cookies":false,"type":"","demo":"databases\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: key, type, size, required, array, status, error","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create boolean attribute","operationId":"databasesCreateBooleanAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a boolean attribute.\n","responses":{"202":{"description":"AttributeBoolean","schema":{"$ref":"#\/definitions\/attributeBoolean"}}},"x-appwrite":{"method":"createBooleanAttribute","weight":82,"cookies":false,"type":"","demo":"databases\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":false},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean\/{key}":{"patch":{"summary":"Update boolean attribute","operationId":"databasesUpdateBooleanAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"","responses":{"200":{"description":"AttributeBoolean","schema":{"$ref":"#\/definitions\/attributeBoolean"}}},"x-appwrite":{"method":"updateBooleanAttribute","weight":94,"cookies":false,"type":"","demo":"databases\/update-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":false,"x-nullable":true}},"required":["required","default"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/datetime":{"post":{"summary":"Create datetime attribute","operationId":"databasesCreateDatetimeAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"AttributeDatetime","schema":{"$ref":"#\/definitions\/attributeDatetime"}}},"x-appwrite":{"method":"createDatetimeAttribute","weight":83,"cookies":false,"type":"","demo":"databases\/create-datetime-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-datetime-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for the attribute in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/datetime\/{key}":{"patch":{"summary":"Update dateTime attribute","operationId":"databasesUpdateDatetimeAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"","responses":{"200":{"description":"AttributeDatetime","schema":{"$ref":"#\/definitions\/attributeDatetime"}}},"x-appwrite":{"method":"updateDatetimeAttribute","weight":95,"cookies":false,"type":"","demo":"databases\/update-datetime-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-datetime-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null,"x-nullable":true}},"required":["required","default"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create email attribute","operationId":"databasesCreateEmailAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create an email attribute.\n","responses":{"202":{"description":"AttributeEmail","schema":{"$ref":"#\/definitions\/attributeEmail"}}},"x-appwrite":{"method":"createEmailAttribute","weight":76,"cookies":false,"type":"","demo":"databases\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"email@example.com"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/email\/{key}":{"patch":{"summary":"Update email attribute","operationId":"databasesUpdateEmailAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Update an email attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeEmail","schema":{"$ref":"#\/definitions\/attributeEmail"}}},"x-appwrite":{"method":"updateEmailAttribute","weight":88,"cookies":false,"type":"","demo":"databases\/update-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"email@example.com","x-nullable":true}},"required":["required","default"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create enum attribute","operationId":"databasesCreateEnumAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"AttributeEnum","schema":{"$ref":"#\/definitions\/attributeEnum"}}},"x-appwrite":{"method":"createEnumAttribute","weight":77,"cookies":false,"type":"","demo":"databases\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"elements":{"type":"array","description":"Array of elements in enumerated type. Uses length of longest element to determine size. Maximum of 100 elements are allowed, each 255 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","elements","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/enum\/{key}":{"patch":{"summary":"Update enum attribute","operationId":"databasesUpdateEnumAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Update an enum attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeEnum","schema":{"$ref":"#\/definitions\/attributeEnum"}}},"x-appwrite":{"method":"updateEnumAttribute","weight":89,"cookies":false,"type":"","demo":"databases\/update-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-enum-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"elements":{"type":"array","description":"Array of elements in enumerated type. Uses length of longest element to determine size. Maximum of 100 elements are allowed, each 255 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"[DEFAULT]","x-nullable":true}},"required":["elements","required","default"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create float attribute","operationId":"databasesCreateFloatAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeFloat","schema":{"$ref":"#\/definitions\/attributeFloat"}}},"x-appwrite":{"method":"createFloatAttribute","weight":81,"cookies":false,"type":"","demo":"databases\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"min":{"type":"number","description":"Minimum value to enforce on new documents","default":null,"x-example":null},"max":{"type":"number","description":"Maximum value to enforce on new documents","default":null,"x-example":null},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/float\/{key}":{"patch":{"summary":"Update float attribute","operationId":"databasesUpdateFloatAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Update a float attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeFloat","schema":{"$ref":"#\/definitions\/attributeFloat"}}},"x-appwrite":{"method":"updateFloatAttribute","weight":93,"cookies":false,"type":"","demo":"databases\/update-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"min":{"type":"number","description":"Minimum value to enforce on new documents","default":null,"x-example":null},"max":{"type":"number","description":"Maximum value to enforce on new documents","default":null,"x-example":null},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null,"x-nullable":true}},"required":["required","min","max","default"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create integer attribute","operationId":"databasesCreateIntegerAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeInteger","schema":{"$ref":"#\/definitions\/attributeInteger"}}},"x-appwrite":{"method":"createIntegerAttribute","weight":80,"cookies":false,"type":"","demo":"databases\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"min":{"type":"integer","description":"Minimum value to enforce on new documents","default":null,"x-example":null},"max":{"type":"integer","description":"Maximum value to enforce on new documents","default":null,"x-example":null},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/integer\/{key}":{"patch":{"summary":"Update integer attribute","operationId":"databasesUpdateIntegerAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Update an integer attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeInteger","schema":{"$ref":"#\/definitions\/attributeInteger"}}},"x-appwrite":{"method":"updateIntegerAttribute","weight":92,"cookies":false,"type":"","demo":"databases\/update-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"min":{"type":"integer","description":"Minimum value to enforce on new documents","default":null,"x-example":null},"max":{"type":"integer","description":"Maximum value to enforce on new documents","default":null,"x-example":null},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null,"x-nullable":true}},"required":["required","min","max","default"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP address attribute","operationId":"databasesCreateIpAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create IP address attribute.\n","responses":{"202":{"description":"AttributeIP","schema":{"$ref":"#\/definitions\/attributeIp"}}},"x-appwrite":{"method":"createIpAttribute","weight":78,"cookies":false,"type":"","demo":"databases\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/ip\/{key}":{"patch":{"summary":"Update IP address attribute","operationId":"databasesUpdateIpAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Update an ip attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeIP","schema":{"$ref":"#\/definitions\/attributeIp"}}},"x-appwrite":{"method":"updateIpAttribute","weight":90,"cookies":false,"type":"","demo":"databases\/update-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null,"x-nullable":true}},"required":["required","default"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/relationship":{"post":{"summary":"Create relationship attribute","operationId":"databasesCreateRelationshipAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create relationship attribute. [Learn more about relationship attributes](https:\/\/appwrite.io\/docs\/databases-relationships#relationship-attributes).\n","responses":{"202":{"description":"AttributeRelationship","schema":{"$ref":"#\/definitions\/attributeRelationship"}}},"x-appwrite":{"method":"createRelationshipAttribute","weight":84,"cookies":false,"type":"","demo":"databases\/create-relationship-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-relationship-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"relatedCollectionId":{"type":"string","description":"Related Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","default":null,"x-example":"[RELATED_COLLECTION_ID]"},"type":{"type":"string","description":"Relation type","default":null,"x-example":"oneToOne","enum":["oneToOne","manyToOne","manyToMany","oneToMany"],"x-enum-name":"RelationshipType","x-enum-keys":[]},"twoWay":{"type":"boolean","description":"Is Two Way?","default":false,"x-example":false},"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"twoWayKey":{"type":"string","description":"Two Way Attribute Key.","default":null,"x-example":null},"onDelete":{"type":"string","description":"Constraints option","default":"restrict","x-example":"cascade","enum":["cascade","restrict","setNull"],"x-enum-name":"RelationMutate","x-enum-keys":[]}},"required":["relatedCollectionId","type"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create string attribute","operationId":"databasesCreateStringAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a string attribute.\n","responses":{"202":{"description":"AttributeString","schema":{"$ref":"#\/definitions\/attributeString"}}},"x-appwrite":{"method":"createStringAttribute","weight":75,"cookies":false,"type":"","demo":"databases\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"size":{"type":"integer","description":"Attribute size for text attributes, in number of characters.","default":null,"x-example":1},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false},"encrypt":{"type":"boolean","description":"Toggle encryption for the attribute. Encryption enhances security by not storing any plain text values in the database. However, encrypted attributes cannot be queried.","default":false,"x-example":false}},"required":["key","size","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/string\/{key}":{"patch":{"summary":"Update string attribute","operationId":"databasesUpdateStringAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Update a string attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeString","schema":{"$ref":"#\/definitions\/attributeString"}}},"x-appwrite":{"method":"updateStringAttribute","weight":87,"cookies":false,"type":"","demo":"databases\/update-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"[DEFAULT]","x-nullable":true}},"required":["required","default"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL attribute","operationId":"databasesCreateUrlAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a URL attribute.\n","responses":{"202":{"description":"AttributeURL","schema":{"$ref":"#\/definitions\/attributeUrl"}}},"x-appwrite":{"method":"createUrlAttribute","weight":79,"cookies":false,"type":"","demo":"databases\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"https:\/\/example.com"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url\/{key}":{"patch":{"summary":"Update URL attribute","operationId":"databasesUpdateUrlAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Update an url attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeURL","schema":{"$ref":"#\/definitions\/attributeUrl"}}},"x-appwrite":{"method":"updateUrlAttribute","weight":91,"cookies":false,"type":"","demo":"databases\/update-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"https:\/\/example.com","x-nullable":true}},"required":["required","default"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get attribute","operationId":"databasesGetAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, or AttributeDatetime, or AttributeRelationship, or AttributeString","schema":{"x-oneOf":[{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeRelationship"},{"$ref":"#\/definitions\/attributeString"}]}}},"x-appwrite":{"method":"getAttribute","weight":86,"cookies":false,"type":"","demo":"databases\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"}]},"delete":{"summary":"Delete attribute","operationId":"databasesDeleteAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":97,"cookies":false,"type":"","demo":"databases\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/{key}\/relationship":{"patch":{"summary":"Update relationship attribute","operationId":"databasesUpdateRelationshipAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Update relationship attribute. [Learn more about relationship attributes](https:\/\/appwrite.io\/docs\/databases-relationships#relationship-attributes).\n","responses":{"200":{"description":"AttributeRelationship","schema":{"$ref":"#\/definitions\/attributeRelationship"}}},"x-appwrite":{"method":"updateRelationshipAttribute","weight":96,"cookies":false,"type":"","demo":"databases\/update-relationship-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-relationship-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"onDelete":{"type":"string","description":"Constraints option","default":null,"x-example":"cascade","enum":["cascade","restrict","setNull"],"x-enum-name":"RelationMutate","x-enum-keys":[]}}}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List documents","operationId":"databasesListDocuments","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","schema":{"$ref":"#\/definitions\/documentList"}}},"x-appwrite":{"method":"listDocuments","weight":103,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"post":{"summary":"Create document","operationId":"databasesCreateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"createDocument","weight":102,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","default":{},"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, only the current user is granted all permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get document","operationId":"databasesGetDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"getDocument","weight":104,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"patch":{"summary":"Update document","operationId":"databasesUpdateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"updateDocument","weight":106,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","default":[],"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete document","operationId":"databasesDeleteDocument","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":107,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}\/logs":{"get":{"summary":"List document logs","operationId":"databasesListDocumentLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get the document activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listDocumentLogs","weight":105,"cookies":false,"type":"","demo":"databases\/list-document-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes":{"get":{"summary":"List indexes","operationId":"databasesListIndexes","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Indexes List","schema":{"$ref":"#\/definitions\/indexList"}}},"x-appwrite":{"method":"listIndexes","weight":99,"cookies":false,"type":"","demo":"databases\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: key, type, status, attributes, error","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"post":{"summary":"Create index","operationId":"databasesCreateIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"createIndex","weight":98,"cookies":false,"type":"","demo":"databases\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Index Key.","default":null,"x-example":null},"type":{"type":"string","description":"Index type.","default":null,"x-example":"key","enum":["key","fulltext","unique","spatial"],"x-enum-name":"IndexType","x-enum-keys":[]},"attributes":{"type":"array","description":"Array of attributes to index. Maximum of 100 attributes are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders. Maximum of 100 orders are allowed.","default":[],"x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get index","operationId":"databasesGetIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"getIndex","weight":100,"cookies":false,"type":"","demo":"databases\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Index Key.","required":true,"type":"string","in":"path"}]},"delete":{"summary":"Delete index","operationId":"databasesDeleteIndex","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":101,"cookies":false,"type":"","demo":"databases\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Index Key.","required":true,"type":"string","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/logs":{"get":{"summary":"List collection logs","operationId":"databasesListCollectionLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get the collection activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listCollectionLogs","weight":72,"cookies":false,"type":"","demo":"databases\/list-collection-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/usage":{"get":{"summary":"Get usage stats for a collection","operationId":"databasesGetCollectionUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"UsageCollection","schema":{"$ref":"#\/definitions\/usageCollection"}}},"x-appwrite":{"method":"getCollectionUsage","weight":110,"cookies":false,"type":"","demo":"databases\/get-collection-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","enum":["24h","30d","90d"],"x-enum-name":"DatabaseUsageRange","x-enum-keys":["Twenty Four Hours","Thirty Days","Ninety Days"],"default":"30d","in":"query"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/databases\/{databaseId}\/logs":{"get":{"summary":"List database logs","operationId":"databasesListLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get the database activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listLogs","weight":66,"cookies":false,"type":"","demo":"databases\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/databases\/{databaseId}\/usage":{"get":{"summary":"Get usage stats for the database","operationId":"databasesGetDatabaseUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"UsageDatabase","schema":{"$ref":"#\/definitions\/usageDatabase"}}},"x-appwrite":{"method":"getDatabaseUsage","weight":109,"cookies":false,"type":"","demo":"databases\/get-database-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"range","description":"`Date range.","required":false,"type":"string","x-example":"24h","enum":["24h","30d","90d"],"x-enum-name":"DatabaseUsageRange","x-enum-keys":["Twenty Four Hours","Thirty Days","Ninety Days"],"default":"30d","in":"query"}]}},"\/functions":{"get":{"summary":"List functions","operationId":"functionsList","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the project's functions. You can use the query params to filter your results.","responses":{"200":{"description":"Functions List","schema":{"$ref":"#\/definitions\/functionList"}}},"x-appwrite":{"method":"list","weight":268,"cookies":false,"type":"","demo":"functions\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-functions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, runtime, deployment, schedule, scheduleNext, schedulePrevious, timeout, entrypoint, commands, installationId","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create function","operationId":"functionsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function. You can pass a list of [permissions](https:\/\/appwrite.io\/docs\/permissions) to allow different project users or team with access to execute the function using the client API.","responses":{"201":{"description":"Function","schema":{"$ref":"#\/definitions\/function"}}},"x-appwrite":{"method":"create","weight":267,"cookies":false,"type":"","demo":"functions\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"functionId":{"type":"string","description":"Function ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[FUNCTION_ID]"},"name":{"type":"string","description":"Function name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"runtime":{"type":"string","description":"Execution runtime.","default":null,"x-example":"node-18.0","enum":["node-18.0","php-8.0","ruby-3.1","python-3.9"],"x-enum-name":null,"x-enum-keys":[]},"execute":{"type":"array","description":"An array of role strings with execution permissions. By default no user is granted with any execute permissions. [learn more about roles](https:\/\/appwrite.io\/docs\/permissions#permission-roles). Maximum of 100 roles are allowed, each 64 characters long.","default":[],"x-example":"[\"any\"]","items":{"type":"string"}},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","default":[],"x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","default":"","x-example":null},"timeout":{"type":"integer","description":"Function maximum execution time in seconds.","default":15,"x-example":1},"enabled":{"type":"boolean","description":"Is function enabled? When set to 'disabled', users cannot access the function but Server SDKs with and API key can still access the function. No data is lost when this is toggled.","default":true,"x-example":false},"logging":{"type":"boolean","description":"Whether executions will be logged. When set to false, executions will not be logged, but will reduce resource used by your Appwrite project.","default":true,"x-example":false},"entrypoint":{"type":"string","description":"Entrypoint File. This path is relative to the \"providerRootDirectory\".","default":"","x-example":"[ENTRYPOINT]"},"commands":{"type":"string","description":"Build Commands.","default":"","x-example":"[COMMANDS]"},"installationId":{"type":"string","description":"Appwrite Installation ID for VCS (Version Control System) deployment.","default":"","x-example":"[INSTALLATION_ID]"},"providerRepositoryId":{"type":"string","description":"Repository ID of the repo linked to the function.","default":"","x-example":"[PROVIDER_REPOSITORY_ID]"},"providerBranch":{"type":"string","description":"Production branch for the repo linked to the function.","default":"","x-example":"[PROVIDER_BRANCH]"},"providerSilentMode":{"type":"boolean","description":"Is the VCS (Version Control System) connection in silent mode for the repo linked to the function? In silent mode, comments will not be made on commits and pull requests.","default":false,"x-example":false},"providerRootDirectory":{"type":"string","description":"Path to function code in the linked repo.","default":"","x-example":"[PROVIDER_ROOT_DIRECTORY]"},"templateRepository":{"type":"string","description":"Repository name of the template.","default":"","x-example":"[TEMPLATE_REPOSITORY]"},"templateOwner":{"type":"string","description":"The name of the owner of the template.","default":"","x-example":"[TEMPLATE_OWNER]"},"templateRootDirectory":{"type":"string","description":"Path to function code in the template repo.","default":"","x-example":"[TEMPLATE_ROOT_DIRECTORY]"},"templateBranch":{"type":"string","description":"Production branch for the repo linked to the function template.","default":"","x-example":"[TEMPLATE_BRANCH]"}},"required":["functionId","name","runtime"]}}]}},"\/functions\/runtimes":{"get":{"summary":"List runtimes","operationId":"functionsListRuntimes","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all runtimes that are currently active on your instance.","responses":{"200":{"description":"Runtimes List","schema":{"$ref":"#\/definitions\/runtimeList"}}},"x-appwrite":{"method":"listRuntimes","weight":269,"cookies":false,"type":"","demo":"functions\/list-runtimes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-runtimes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/functions\/usage":{"get":{"summary":"Get functions usage","operationId":"functionsGetUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"","responses":{"200":{"description":"UsageFunctions","schema":{"$ref":"#\/definitions\/usageFunctions"}}},"x-appwrite":{"method":"getUsage","weight":272,"cookies":false,"type":"","demo":"functions\/get-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","enum":["24h","30d","90d"],"x-enum-name":"FunctionUsageRange","x-enum-keys":["Twenty Four Hours","Thirty Days","Ninety Days"],"default":"30d","in":"query"}]}},"\/functions\/{functionId}":{"get":{"summary":"Get function","operationId":"functionsGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a function by its unique ID.","responses":{"200":{"description":"Function","schema":{"$ref":"#\/definitions\/function"}}},"x-appwrite":{"method":"get","weight":270,"cookies":false,"type":"","demo":"functions\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"}]},"put":{"summary":"Update function","operationId":"functionsUpdate","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Update function by its unique ID.","responses":{"200":{"description":"Function","schema":{"$ref":"#\/definitions\/function"}}},"x-appwrite":{"method":"update","weight":273,"cookies":false,"type":"","demo":"functions\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Function name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"runtime":{"type":"string","description":"Execution runtime.","default":"","x-example":"node-18.0","enum":["node-18.0","php-8.0","ruby-3.1","python-3.9"],"x-enum-name":null,"x-enum-keys":[]},"execute":{"type":"array","description":"An array of role strings with execution permissions. By default no user is granted with any execute permissions. [learn more about roles](https:\/\/appwrite.io\/docs\/permissions#permission-roles). Maximum of 100 roles are allowed, each 64 characters long.","default":[],"x-example":"[\"any\"]","items":{"type":"string"}},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","default":[],"x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","default":"","x-example":null},"timeout":{"type":"integer","description":"Maximum execution time in seconds.","default":15,"x-example":1},"enabled":{"type":"boolean","description":"Is function enabled? When set to 'disabled', users cannot access the function but Server SDKs with and API key can still access the function. No data is lost when this is toggled.","default":true,"x-example":false},"logging":{"type":"boolean","description":"Whether executions will be logged. When set to false, executions will not be logged, but will reduce resource used by your Appwrite project.","default":true,"x-example":false},"entrypoint":{"type":"string","description":"Entrypoint File. This path is relative to the \"providerRootDirectory\".","default":"","x-example":"[ENTRYPOINT]"},"commands":{"type":"string","description":"Build Commands.","default":"","x-example":"[COMMANDS]"},"installationId":{"type":"string","description":"Appwrite Installation ID for VCS (Version Controle System) deployment.","default":"","x-example":"[INSTALLATION_ID]"},"providerRepositoryId":{"type":"string","description":"Repository ID of the repo linked to the function","default":"","x-example":"[PROVIDER_REPOSITORY_ID]"},"providerBranch":{"type":"string","description":"Production branch for the repo linked to the function","default":"","x-example":"[PROVIDER_BRANCH]"},"providerSilentMode":{"type":"boolean","description":"Is the VCS (Version Control System) connection in silent mode for the repo linked to the function? In silent mode, comments will not be made on commits and pull requests.","default":false,"x-example":false},"providerRootDirectory":{"type":"string","description":"Path to function code in the linked repo.","default":"","x-example":"[PROVIDER_ROOT_DIRECTORY]"}},"required":["name"]}}]},"delete":{"summary":"Delete function","operationId":"functionsDelete","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"Delete a function by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":276,"cookies":false,"type":"","demo":"functions\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"}]}},"\/functions\/{functionId}\/deployments":{"get":{"summary":"List deployments","operationId":"functionsListDeployments","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the project's code deployments. You can use the query params to filter your results.","responses":{"200":{"description":"Deployments List","schema":{"$ref":"#\/definitions\/deploymentList"}}},"x-appwrite":{"method":"listDeployments","weight":278,"cookies":false,"type":"","demo":"functions\/list-deployments.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-deployments.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: size, buildId, activate, entrypoint, commands","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create deployment","operationId":"functionsCreateDeployment","consumes":["multipart\/form-data"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function code deployment. Use this endpoint to upload a new version of your code function. To execute your newly uploaded code, you'll need to update the function's deployment to use your new deployment UID.\n\nThis endpoint accepts a tar.gz file compressed with your code. Make sure to include any dependencies your code has within the compressed file. You can learn more about code packaging in the [Appwrite Cloud Functions tutorial](https:\/\/appwrite.io\/docs\/functions).\n\nUse the \"command\" param to set the entrypoint used to execute your code.","responses":{"202":{"description":"Deployment","schema":{"$ref":"#\/definitions\/deployment"}}},"x-appwrite":{"method":"createDeployment","weight":277,"cookies":false,"type":"","demo":"functions\/create-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":true,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"entrypoint","description":"Entrypoint File.","required":false,"type":"string","x-example":"[ENTRYPOINT]","in":"formData"},{"name":"commands","description":"Build Commands.","required":false,"type":"string","x-example":"[COMMANDS]","in":"formData"},{"name":"code","description":"Gzip file with your code package. When used with the Appwrite CLI, pass the path to your code directory, and the CLI will automatically package your code. Use a path that is within the current directory.","required":true,"type":"file","in":"formData"},{"name":"activate","description":"Automatically activate the deployment when it is finished building.","required":true,"type":"boolean","x-example":false,"in":"formData"}]}},"\/functions\/{functionId}\/deployments\/{deploymentId}":{"get":{"summary":"Get deployment","operationId":"functionsGetDeployment","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a code deployment by its unique ID.","responses":{"200":{"description":"Deployment","schema":{"$ref":"#\/definitions\/deployment"}}},"x-appwrite":{"method":"getDeployment","weight":279,"cookies":false,"type":"","demo":"functions\/get-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"type":"string","x-example":"[DEPLOYMENT_ID]","in":"path"}]},"patch":{"summary":"Update function deployment","operationId":"functionsUpdateDeployment","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Update the function code deployment ID using the unique function ID. Use this endpoint to switch the code deployment that should be executed by the execution endpoint.","responses":{"200":{"description":"Function","schema":{"$ref":"#\/definitions\/function"}}},"x-appwrite":{"method":"updateDeployment","weight":275,"cookies":false,"type":"","demo":"functions\/update-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-function-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"type":"string","x-example":"[DEPLOYMENT_ID]","in":"path"}]},"delete":{"summary":"Delete deployment","operationId":"functionsDeleteDeployment","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"Delete a code deployment by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDeployment","weight":280,"cookies":false,"type":"","demo":"functions\/delete-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"type":"string","x-example":"[DEPLOYMENT_ID]","in":"path"}]}},"\/functions\/{functionId}\/deployments\/{deploymentId}\/builds\/{buildId}":{"post":{"summary":"Create build","operationId":"functionsCreateBuild","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"Create a new build for an Appwrite Function deployment. This endpoint can be used to retry a failed build.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"createBuild","weight":281,"cookies":false,"type":"","demo":"functions\/create-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"type":"string","x-example":"[DEPLOYMENT_ID]","in":"path"},{"name":"buildId","description":"Build unique ID.","required":true,"type":"string","x-example":"[BUILD_ID]","in":"path"}]}},"\/functions\/{functionId}\/deployments\/{deploymentId}\/download":{"get":{"summary":"Download Deployment","operationId":"functionsDownloadDeployment","consumes":["application\/json"],"produces":["*\/*"],"tags":["functions"],"description":"Get a Deployment's contents by its unique ID. This endpoint supports range requests for partial or streaming file download.","responses":{"200":{"description":"File","schema":{"type":"file"}}},"x-appwrite":{"method":"downloadDeployment","weight":274,"cookies":false,"type":"location","demo":"functions\/download-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/download-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"type":"string","x-example":"[DEPLOYMENT_ID]","in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List executions","operationId":"functionsListExecutions","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","schema":{"$ref":"#\/definitions\/executionList"}}},"x-appwrite":{"method":"listExecutions","weight":283,"cookies":false,"type":"","demo":"functions\/list-executions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-executions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, responseStatusCode, duration","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create execution","operationId":"functionsCreateExecution","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","schema":{"$ref":"#\/definitions\/execution"}}},"x-appwrite":{"method":"createExecution","weight":282,"cookies":false,"type":"","demo":"functions\/create-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-execution.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"body":{"type":"string","description":"HTTP body of execution. Default value is empty string.","default":"","x-example":"[BODY]"},"async":{"type":"boolean","description":"Execute code in the background. Default value is false.","default":false,"x-example":false},"path":{"type":"string","description":"HTTP path of execution. Path can include query params. Default value is \/","default":"\/","x-example":"[PATH]"},"method":{"type":"string","description":"HTTP method of execution. Default value is GET.","default":"POST","x-example":"GET","enum":["GET","POST","PUT","PATCH","DELETE","OPTIONS"],"x-enum-name":"ExecutionMethod","x-enum-keys":[]},"headers":{"type":"object","description":"HTTP headers of execution. Defaults to empty.","default":[],"x-example":"{}"}}}}]}},"\/functions\/{functionId}\/executions\/{executionId}":{"get":{"summary":"Get execution","operationId":"functionsGetExecution","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a function execution log by its unique ID.","responses":{"200":{"description":"Execution","schema":{"$ref":"#\/definitions\/execution"}}},"x-appwrite":{"method":"getExecution","weight":284,"cookies":false,"type":"","demo":"functions\/get-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-execution.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"executionId","description":"Execution ID.","required":true,"type":"string","x-example":"[EXECUTION_ID]","in":"path"}]}},"\/functions\/{functionId}\/usage":{"get":{"summary":"Get function usage","operationId":"functionsGetFunctionUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"","responses":{"200":{"description":"UsageFunction","schema":{"$ref":"#\/definitions\/usageFunction"}}},"x-appwrite":{"method":"getFunctionUsage","weight":271,"cookies":false,"type":"","demo":"functions\/get-function-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","enum":["24h","30d","90d"],"x-enum-name":"FunctionUsageRange","x-enum-keys":["Twenty Four Hours","Thirty Days","Ninety Days"],"default":"30d","in":"query"}]}},"\/functions\/{functionId}\/variables":{"get":{"summary":"List variables","operationId":"functionsListVariables","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all variables of a specific function.","responses":{"200":{"description":"Variables List","schema":{"$ref":"#\/definitions\/variableList"}}},"x-appwrite":{"method":"listVariables","weight":286,"cookies":false,"type":"","demo":"functions\/list-variables.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-variables.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"}]},"post":{"summary":"Create variable","operationId":"functionsCreateVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function environment variable. These variables can be accessed in the function at runtime as environment variables.","responses":{"201":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"createVariable","weight":285,"cookies":false,"type":"","demo":"functions\/create-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","default":null,"x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","default":null,"x-example":"[VALUE]"}},"required":["key","value"]}}]}},"\/functions\/{functionId}\/variables\/{variableId}":{"get":{"summary":"Get variable","operationId":"functionsGetVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a variable by its unique ID.","responses":{"200":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"getVariable","weight":287,"cookies":false,"type":"","demo":"functions\/get-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"}]},"put":{"summary":"Update variable","operationId":"functionsUpdateVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Update variable by its unique ID.","responses":{"200":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"updateVariable","weight":288,"cookies":false,"type":"","demo":"functions\/update-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","default":null,"x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","default":null,"x-example":"[VALUE]"}},"required":["key"]}}]},"delete":{"summary":"Delete variable","operationId":"functionsDeleteVariable","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"Delete a variable by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteVariable","weight":289,"cookies":false,"type":"","demo":"functions\/delete-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"}]}},"\/graphql":{"post":{"summary":"GraphQL endpoint","operationId":"graphqlQuery","consumes":["application\/json"],"produces":["application\/json"],"tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","schema":{"$ref":"#\/definitions\/any"}}},"x-appwrite":{"method":"query","weight":304,"cookies":false,"type":"graphql","demo":"graphql\/query.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"query":{"type":"object","description":"The query or queries to execute.","default":{},"x-example":"{}"}},"required":["query"]}}]}},"\/graphql\/mutation":{"post":{"summary":"GraphQL endpoint","operationId":"graphqlMutation","consumes":["application\/json"],"produces":["application\/json"],"tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","schema":{"$ref":"#\/definitions\/any"}}},"x-appwrite":{"method":"mutation","weight":303,"cookies":false,"type":"graphql","demo":"graphql\/mutation.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"query":{"type":"object","description":"The query or queries to execute.","default":{},"x-example":"{}"}},"required":["query"]}}]}},"\/health":{"get":{"summary":"Get HTTP","operationId":"healthGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite HTTP server is up and responsive.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"get","weight":119,"cookies":false,"type":"","demo":"health\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/anti-virus":{"get":{"summary":"Get antivirus","operationId":"healthGetAntivirus","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite Antivirus server is up and connection is successful.","responses":{"200":{"description":"Health Antivirus","schema":{"$ref":"#\/definitions\/healthAntivirus"}}},"x-appwrite":{"method":"getAntivirus","weight":138,"cookies":false,"type":"","demo":"health\/get-antivirus.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-storage-anti-virus.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/cache":{"get":{"summary":"Get cache","operationId":"healthGetCache","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite in-memory cache servers are up and connection is successful.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"getCache","weight":122,"cookies":false,"type":"","demo":"health\/get-cache.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-cache.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/certificate":{"get":{"summary":"Get the SSL certificate for a domain","operationId":"healthGetCertificate","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the SSL certificate for a domain","responses":{"200":{"description":"Health Certificate","schema":{"$ref":"#\/definitions\/healthCertificate"}}},"x-appwrite":{"method":"getCertificate","weight":128,"cookies":false,"type":"","demo":"health\/get-certificate.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-certificate.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"domain","description":"string","required":false,"type":"string","in":"query"}]}},"\/health\/db":{"get":{"summary":"Get DB","operationId":"healthGetDB","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite database servers are up and connection is successful.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"getDB","weight":121,"cookies":false,"type":"","demo":"health\/get-d-b.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-db.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/pubsub":{"get":{"summary":"Get pubsub","operationId":"healthGetPubSub","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite pub-sub servers are up and connection is successful.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"getPubSub","weight":124,"cookies":false,"type":"","demo":"health\/get-pub-sub.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-pubsub.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/queue":{"get":{"summary":"Get queue","operationId":"healthGetQueue","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite queue messaging servers are up and connection is successful.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"getQueue","weight":123,"cookies":false,"type":"","demo":"health\/get-queue.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/queue\/builds":{"get":{"summary":"Get builds queue","operationId":"healthGetQueueBuilds","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of builds that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueBuilds","weight":130,"cookies":false,"type":"","demo":"health\/get-queue-builds.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-builds.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/certificates":{"get":{"summary":"Get certificates queue","operationId":"healthGetQueueCertificates","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of certificates that are waiting to be issued against [Letsencrypt](https:\/\/letsencrypt.org\/) in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueCertificates","weight":129,"cookies":false,"type":"","demo":"health\/get-queue-certificates.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-certificates.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/databases":{"get":{"summary":"Get databases queue","operationId":"healthGetQueueDatabases","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of database changes that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueDatabases","weight":131,"cookies":false,"type":"","demo":"health\/get-queue-databases.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-databases.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"name","description":"Queue name for which to check the queue size","required":false,"type":"string","x-example":"[NAME]","default":"database_db_main","in":"query"},{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/deletes":{"get":{"summary":"Get deletes queue","operationId":"healthGetQueueDeletes","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of background destructive changes that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueDeletes","weight":132,"cookies":false,"type":"","demo":"health\/get-queue-deletes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-deletes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/failed\/{name}":{"get":{"summary":"Get number of failed queue jobs","operationId":"healthGetFailedJobs","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Returns the amount of failed jobs in a given queue.\n","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getFailedJobs","weight":139,"cookies":false,"type":"","demo":"health\/get-failed-jobs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-failed-queue-jobs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"name","description":"The name of the queue","required":true,"type":"string","x-example":"v1-database","enum":["v1-database","v1-deletes","v1-audits","v1-mails","v1-functions","v1-usage","webhooksv1","v1-certificates","v1-builds","v1-messaging","v1-migrations","hamsterv1"],"x-enum-name":null,"x-enum-keys":[],"in":"path"},{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/functions":{"get":{"summary":"Get functions queue","operationId":"healthGetQueueFunctions","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueFunctions","weight":136,"cookies":false,"type":"","demo":"health\/get-queue-functions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-functions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/logs":{"get":{"summary":"Get logs queue","operationId":"healthGetQueueLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of logs that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueLogs","weight":127,"cookies":false,"type":"","demo":"health\/get-queue-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/mails":{"get":{"summary":"Get mails queue","operationId":"healthGetQueueMails","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of mails that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueMails","weight":133,"cookies":false,"type":"","demo":"health\/get-queue-mails.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-mails.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/messaging":{"get":{"summary":"Get messaging queue","operationId":"healthGetQueueMessaging","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of messages that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueMessaging","weight":134,"cookies":false,"type":"","demo":"health\/get-queue-messaging.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-messaging.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/migrations":{"get":{"summary":"Get migrations queue","operationId":"healthGetQueueMigrations","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of migrations that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueMigrations","weight":135,"cookies":false,"type":"","demo":"health\/get-queue-migrations.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-migrations.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/webhooks":{"get":{"summary":"Get webhooks queue","operationId":"healthGetQueueWebhooks","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of webhooks that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueWebhooks","weight":126,"cookies":false,"type":"","demo":"health\/get-queue-webhooks.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-webhooks.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/storage\/local":{"get":{"summary":"Get local storage","operationId":"healthGetStorageLocal","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite local storage device is up and connection is successful.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"getStorageLocal","weight":137,"cookies":false,"type":"","demo":"health\/get-storage-local.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-storage-local.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/time":{"get":{"summary":"Get time","operationId":"healthGetTime","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite server time is synced with Google remote NTP server. We use this technology to smoothly handle leap seconds with no disruptive events. The [Network Time Protocol](https:\/\/en.wikipedia.org\/wiki\/Network_Time_Protocol) (NTP) is used by hundreds of millions of computers and devices to synchronize their clocks over the Internet. If your computer sets its own clock, it likely uses NTP.","responses":{"200":{"description":"Health Time","schema":{"$ref":"#\/definitions\/healthTime"}}},"x-appwrite":{"method":"getTime","weight":125,"cookies":false,"type":"","demo":"health\/get-time.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-time.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/locale":{"get":{"summary":"Get user locale","operationId":"localeGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"Get the current user location based on IP. Returns an object with user country code, country name, continent name, continent code, ip address and suggested currency. You can use the locale header to get the data in a supported language.\n\n([IP Geolocation by DB-IP](https:\/\/db-ip.com))","responses":{"200":{"description":"Locale","schema":{"$ref":"#\/definitions\/locale"}}},"x-appwrite":{"method":"get","weight":111,"cookies":false,"type":"","demo":"locale\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-locale.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/localed","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/codes":{"get":{"summary":"List Locale Codes","operationId":"localeListCodes","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all locale codes in [ISO 639-1](https:\/\/en.wikipedia.org\/wiki\/List_of_ISO_639-1_codes).","responses":{"200":{"description":"Locale codes list","schema":{"$ref":"#\/definitions\/localeCodeList"}}},"x-appwrite":{"method":"listCodes","weight":112,"cookies":false,"type":"","demo":"locale\/list-codes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-locale-codes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/localeCode","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/continents":{"get":{"summary":"List continents","operationId":"localeListContinents","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","schema":{"$ref":"#\/definitions\/continentList"}}},"x-appwrite":{"method":"listContinents","weight":116,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/continents","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List countries","operationId":"localeListCountries","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountries","weight":113,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/countries","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU countries","operationId":"localeListCountriesEU","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountriesEU","weight":114,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/countries\/eu","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List countries phone codes","operationId":"localeListCountriesPhones","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","schema":{"$ref":"#\/definitions\/phoneList"}}},"x-appwrite":{"method":"listCountriesPhones","weight":115,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/countries\/phones","offline-key":"","offline-response-key":"countryCode","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List currencies","operationId":"localeListCurrencies","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","schema":{"$ref":"#\/definitions\/currencyList"}}},"x-appwrite":{"method":"listCurrencies","weight":117,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/currencies","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List languages","operationId":"localeListLanguages","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","schema":{"$ref":"#\/definitions\/languageList"}}},"x-appwrite":{"method":"listLanguages","weight":118,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/languages","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/messaging\/messages":{"get":{"summary":"List messages","operationId":"messagingListMessages","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Message list","schema":{"$ref":"#\/definitions\/messageList"}}},"x-appwrite":{"method":"listMessages","weight":363,"cookies":false,"type":"","demo":"messaging\/list-messages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-messages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: scheduledAt, deliveredAt, deliveredTotal, status, description, providerType","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]}},"\/messaging\/messages\/email":{"post":{"summary":"Create an email.","operationId":"messagingCreateEmail","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Message","schema":{"$ref":"#\/definitions\/message"}}},"x-appwrite":{"method":"createEmail","weight":360,"cookies":false,"type":"","demo":"messaging\/create-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"messageId":{"type":"string","description":"Message ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[MESSAGE_ID]"},"subject":{"type":"string","description":"Email Subject.","default":null,"x-example":"[SUBJECT]"},"content":{"type":"string","description":"Email Content.","default":null,"x-example":"[CONTENT]"},"topics":{"type":"array","description":"List of Topic IDs.","default":[],"x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","default":[],"x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","default":[],"x-example":null,"items":{"type":"string"}},"cc":{"type":"array","description":"Array of target IDs to be added as CC.","default":[],"x-example":null,"items":{"type":"string"}},"bcc":{"type":"array","description":"Array of target IDs to be added as BCC.","default":[],"x-example":null,"items":{"type":"string"}},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","default":"draft","x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":"MessageStatus","x-enum-keys":[]},"html":{"type":"boolean","description":"Is content of type HTML","default":false,"x-example":false},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","default":null,"x-example":null}},"required":["messageId","subject","content"]}}]}},"\/messaging\/messages\/email\/{messageId}":{"patch":{"summary":"Update an email.","operationId":"messagingUpdateEmail","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Message","schema":{"$ref":"#\/definitions\/message"}}},"x-appwrite":{"method":"updateEmail","weight":367,"cookies":false,"type":"","demo":"messaging\/update-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"type":"string","x-example":"[MESSAGE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"topics":{"type":"array","description":"List of Topic IDs.","default":null,"x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","default":null,"x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","default":null,"x-example":null,"items":{"type":"string"}},"subject":{"type":"string","description":"Email Subject.","default":null,"x-example":"[SUBJECT]"},"content":{"type":"string","description":"Email Content.","default":null,"x-example":"[CONTENT]"},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","default":null,"x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":"MessageStatus","x-enum-keys":[]},"html":{"type":"boolean","description":"Is content of type HTML","default":null,"x-example":false},"cc":{"type":"array","description":"Array of target IDs to be added as CC.","default":null,"x-example":null,"items":{"type":"string"}},"bcc":{"type":"array","description":"Array of target IDs to be added as BCC.","default":null,"x-example":null,"items":{"type":"string"}},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","default":null,"x-example":null}}}}]}},"\/messaging\/messages\/push":{"post":{"summary":"Create a push notification.","operationId":"messagingCreatePush","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Message","schema":{"$ref":"#\/definitions\/message"}}},"x-appwrite":{"method":"createPush","weight":362,"cookies":false,"type":"","demo":"messaging\/create-push.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-push-notification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"messageId":{"type":"string","description":"Message ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[MESSAGE_ID]"},"title":{"type":"string","description":"Title for push notification.","default":null,"x-example":"[TITLE]"},"body":{"type":"string","description":"Body for push notification.","default":null,"x-example":"[BODY]"},"topics":{"type":"array","description":"List of Topic IDs.","default":[],"x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","default":[],"x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","default":[],"x-example":null,"items":{"type":"string"}},"data":{"type":"object","description":"Additional Data for push notification.","default":{},"x-example":"{}"},"action":{"type":"string","description":"Action for push notification.","default":"","x-example":"[ACTION]"},"icon":{"type":"string","description":"Icon for push notification. Available only for Android and Web Platform.","default":"","x-example":"[ICON]"},"sound":{"type":"string","description":"Sound for push notification. Available only for Android and IOS Platform.","default":"","x-example":"[SOUND]"},"color":{"type":"string","description":"Color for push notification. Available only for Android Platform.","default":"","x-example":"[COLOR]"},"tag":{"type":"string","description":"Tag for push notification. Available only for Android Platform.","default":"","x-example":"[TAG]"},"badge":{"type":"string","description":"Badge for push notification. Available only for IOS Platform.","default":"","x-example":"[BADGE]"},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","default":"draft","x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":"MessageStatus","x-enum-keys":[]},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","default":null,"x-example":null}},"required":["messageId","title","body"]}}]}},"\/messaging\/messages\/push\/{messageId}":{"patch":{"summary":"Update a push notification.","operationId":"messagingUpdatePush","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Message","schema":{"$ref":"#\/definitions\/message"}}},"x-appwrite":{"method":"updatePush","weight":369,"cookies":false,"type":"","demo":"messaging\/update-push.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-push-notification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"type":"string","x-example":"[MESSAGE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"topics":{"type":"array","description":"List of Topic IDs.","default":null,"x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","default":null,"x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","default":null,"x-example":null,"items":{"type":"string"}},"title":{"type":"string","description":"Title for push notification.","default":null,"x-example":"[TITLE]"},"body":{"type":"string","description":"Body for push notification.","default":null,"x-example":"[BODY]"},"data":{"type":"object","description":"Additional Data for push notification.","default":{},"x-example":"{}"},"action":{"type":"string","description":"Action for push notification.","default":null,"x-example":"[ACTION]"},"icon":{"type":"string","description":"Icon for push notification. Available only for Android and Web platforms.","default":null,"x-example":"[ICON]"},"sound":{"type":"string","description":"Sound for push notification. Available only for Android and iOS platforms.","default":null,"x-example":"[SOUND]"},"color":{"type":"string","description":"Color for push notification. Available only for Android platforms.","default":null,"x-example":"[COLOR]"},"tag":{"type":"string","description":"Tag for push notification. Available only for Android platforms.","default":null,"x-example":"[TAG]"},"badge":{"type":"integer","description":"Badge for push notification. Available only for iOS platforms.","default":null,"x-example":null},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","default":null,"x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":"MessageStatus","x-enum-keys":[]},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","default":null,"x-example":null}}}}]}},"\/messaging\/messages\/sms":{"post":{"summary":"Create an SMS.","operationId":"messagingCreateSMS","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Message","schema":{"$ref":"#\/definitions\/message"}}},"x-appwrite":{"method":"createSMS","weight":361,"cookies":false,"type":"","demo":"messaging\/create-s-m-s.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-sms.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"messageId":{"type":"string","description":"Message ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[MESSAGE_ID]"},"content":{"type":"string","description":"SMS Content.","default":null,"x-example":"[CONTENT]"},"topics":{"type":"array","description":"List of Topic IDs.","default":[],"x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","default":[],"x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","default":[],"x-example":null,"items":{"type":"string"}},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","default":"draft","x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":"MessageStatus","x-enum-keys":[]},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","default":null,"x-example":null}},"required":["messageId","content"]}}]}},"\/messaging\/messages\/sms\/{messageId}":{"patch":{"summary":"Update an SMS.","operationId":"messagingUpdateSMS","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Message","schema":{"$ref":"#\/definitions\/message"}}},"x-appwrite":{"method":"updateSMS","weight":368,"cookies":false,"type":"","demo":"messaging\/update-s-m-s.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"type":"string","x-example":"[MESSAGE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"topics":{"type":"array","description":"List of Topic IDs.","default":null,"x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","default":null,"x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","default":null,"x-example":null,"items":{"type":"string"}},"content":{"type":"string","description":"Email Content.","default":null,"x-example":"[CONTENT]"},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","default":null,"x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":"MessageStatus","x-enum-keys":[]},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","default":null,"x-example":null}}}}]}},"\/messaging\/messages\/{messageId}":{"get":{"summary":"Get a message","operationId":"messagingGetMessage","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Message","schema":{"$ref":"#\/definitions\/message"}}},"x-appwrite":{"method":"getMessage","weight":366,"cookies":false,"type":"","demo":"messaging\/get-message.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/get-message.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"type":"string","x-example":"[MESSAGE_ID]","in":"path"}]},"delete":{"summary":"Delete a message","operationId":"messagingDelete","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":370,"cookies":false,"type":"","demo":"messaging\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-message.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"type":"string","x-example":"[MESSAGE_ID]","in":"path"}]}},"\/messaging\/messages\/{messageId}\/logs":{"get":{"summary":"List message logs","operationId":"messagingListMessageLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listMessageLogs","weight":364,"cookies":false,"type":"","demo":"messaging\/list-message-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/messages\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"type":"string","x-example":"[MESSAGE_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/messaging\/messages\/{messageId}\/targets":{"get":{"summary":"List message targets","operationId":"messagingListTargets","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"List the targets associated with a message as set via the targets attribute.","responses":{"200":{"description":"Target list","schema":{"$ref":"#\/definitions\/targetList"}}},"x-appwrite":{"method":"listTargets","weight":365,"cookies":false,"type":"","demo":"messaging\/list-targets.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-message-targets.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"type":"string","x-example":"[MESSAGE_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, providerId, identifier, providerType","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/messaging\/providers":{"get":{"summary":"List providers","operationId":"messagingListProviders","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider list","schema":{"$ref":"#\/definitions\/providerList"}}},"x-appwrite":{"method":"listProviders","weight":335,"cookies":false,"type":"","demo":"messaging\/list-providers.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-providers.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, provider, type, enabled","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]}},"\/messaging\/providers\/apns":{"post":{"summary":"Create APNS provider","operationId":"messagingCreateAPNSProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createAPNSProvider","weight":334,"cookies":false,"type":"","demo":"messaging\/create-a-p-n-s-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-apns-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"authKey":{"type":"string","description":"APNS authentication key.","default":"","x-example":"[AUTH_KEY]"},"authKeyId":{"type":"string","description":"APNS authentication key ID.","default":"","x-example":"[AUTH_KEY_ID]"},"teamId":{"type":"string","description":"APNS team ID.","default":"","x-example":"[TEAM_ID]"},"bundleId":{"type":"string","description":"APNS bundle ID.","default":"","x-example":"[BUNDLE_ID]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name"]}}]}},"\/messaging\/providers\/apns\/{providerId}":{"patch":{"summary":"Update APNS provider","operationId":"messagingUpdateAPNSProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateAPNSProvider","weight":347,"cookies":false,"type":"","demo":"messaging\/update-a-p-n-s-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-apns-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"authKey":{"type":"string","description":"APNS authentication key.","default":"","x-example":"[AUTH_KEY]"},"authKeyId":{"type":"string","description":"APNS authentication key ID.","default":"","x-example":"[AUTH_KEY_ID]"},"teamId":{"type":"string","description":"APNS team ID.","default":"","x-example":"[TEAM_ID]"},"bundleId":{"type":"string","description":"APNS bundle ID.","default":"","x-example":"[BUNDLE_ID]"}}}}]}},"\/messaging\/providers\/fcm":{"post":{"summary":"Create FCM provider","operationId":"messagingCreateFCMProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createFCMProvider","weight":333,"cookies":false,"type":"","demo":"messaging\/create-f-c-m-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-fcm-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"serviceAccountJSON":{"type":"object","description":"FCM service account JSON.","default":{},"x-example":"{}"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name"]}}]}},"\/messaging\/providers\/fcm\/{providerId}":{"patch":{"summary":"Update FCM provider","operationId":"messagingUpdateFCMProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateFCMProvider","weight":346,"cookies":false,"type":"","demo":"messaging\/update-f-c-m-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-fcm-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"serviceAccountJSON":{"type":"object","description":"FCM service account JSON.","default":{},"x-example":"{}"}}}}]}},"\/messaging\/providers\/mailgun":{"post":{"summary":"Create Mailgun provider","operationId":"messagingCreateMailgunProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createMailgunProvider","weight":325,"cookies":false,"type":"","demo":"messaging\/create-mailgun-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-mailgun-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"apiKey":{"type":"string","description":"Mailgun API Key.","default":"","x-example":"[API_KEY]"},"domain":{"type":"string","description":"Mailgun Domain.","default":"","x-example":"[DOMAIN]"},"isEuRegion":{"type":"boolean","description":"Set as EU region.","default":null,"x-example":false},"fromName":{"type":"string","description":"Sender Name.","default":"","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","default":"","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the reply to field for the mail. Default value is sender name. Reply to name must have reply to email as well.","default":"","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the reply to field for the mail. Default value is sender email. Reply to email must have reply to name as well.","default":"","x-example":"email@example.com"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name"]}}]}},"\/messaging\/providers\/mailgun\/{providerId}":{"patch":{"summary":"Update Mailgun provider","operationId":"messagingUpdateMailgunProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateMailgunProvider","weight":338,"cookies":false,"type":"","demo":"messaging\/update-mailgun-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-mailgun-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"apiKey":{"type":"string","description":"Mailgun API Key.","default":"","x-example":"[API_KEY]"},"domain":{"type":"string","description":"Mailgun Domain.","default":"","x-example":"[DOMAIN]"},"isEuRegion":{"type":"boolean","description":"Set as EU region.","default":null,"x-example":false},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"fromName":{"type":"string","description":"Sender Name.","default":"","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","default":"","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the reply to field for the mail. Default value is sender name.","default":"","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the reply to field for the mail. Default value is sender email.","default":"","x-example":"[REPLY_TO_EMAIL]"}}}}]}},"\/messaging\/providers\/msg91":{"post":{"summary":"Create Msg91 provider","operationId":"messagingCreateMsg91Provider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createMsg91Provider","weight":328,"cookies":false,"type":"","demo":"messaging\/create-msg91provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-msg91-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":"","x-example":"+12065550100"},"senderId":{"type":"string","description":"Msg91 Sender ID.","default":"","x-example":"[SENDER_ID]"},"authKey":{"type":"string","description":"Msg91 Auth Key.","default":"","x-example":"[AUTH_KEY]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name"]}}]}},"\/messaging\/providers\/msg91\/{providerId}":{"patch":{"summary":"Update Msg91 provider","operationId":"messagingUpdateMsg91Provider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateMsg91Provider","weight":341,"cookies":false,"type":"","demo":"messaging\/update-msg91provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-msg91-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"senderId":{"type":"string","description":"Msg91 Sender ID.","default":"","x-example":"[SENDER_ID]"},"authKey":{"type":"string","description":"Msg91 Auth Key.","default":"","x-example":"[AUTH_KEY]"},"from":{"type":"string","description":"Sender number.","default":"","x-example":"[FROM]"}}}}]}},"\/messaging\/providers\/sendgrid":{"post":{"summary":"Create Sendgrid provider","operationId":"messagingCreateSendgridProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createSendgridProvider","weight":326,"cookies":false,"type":"","demo":"messaging\/create-sendgrid-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-sengrid-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"apiKey":{"type":"string","description":"Sendgrid API key.","default":"","x-example":"[API_KEY]"},"fromName":{"type":"string","description":"Sender Name.","default":"","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","default":"","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the reply to field for the mail. Default value is sender name.","default":"","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the reply to field for the mail. Default value is sender email.","default":"","x-example":"email@example.com"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name"]}}]}},"\/messaging\/providers\/sendgrid\/{providerId}":{"patch":{"summary":"Update Sendgrid provider","operationId":"messagingUpdateSendgridProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateSendgridProvider","weight":339,"cookies":false,"type":"","demo":"messaging\/update-sendgrid-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-sendgrid-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"apiKey":{"type":"string","description":"Sendgrid API key.","default":"","x-example":"[API_KEY]"},"fromName":{"type":"string","description":"Sender Name.","default":"","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","default":"","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the Reply To field for the mail. Default value is Sender Name.","default":"","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the Reply To field for the mail. Default value is Sender Email.","default":"","x-example":"[REPLY_TO_EMAIL]"}}}}]}},"\/messaging\/providers\/smtp":{"post":{"summary":"Create SMTP provider","operationId":"messagingCreateSMTPProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createSMTPProvider","weight":327,"cookies":false,"type":"","demo":"messaging\/create-s-m-t-p-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-smtp-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"host":{"type":"string","description":"SMTP hosts. Either a single hostname or multiple semicolon-delimited hostnames. You can also specify a different port for each host by using this format: [hostname:port] (e.g. \"smtp1.example.com:25;smtp2.example.com\"). You can also specify encryption type, for example: (e.g. \"tls:\/\/smtp1.example.com:587;ssl:\/\/smtp2.example.com:465\"). Hosts will be tried in order.","default":null,"x-example":"[HOST]"},"port":{"type":"integer","description":"The default SMTP server port.","default":587,"x-example":1},"username":{"type":"string","description":"Authentication username.","default":"","x-example":"[USERNAME]"},"password":{"type":"string","description":"Authentication password.","default":"","x-example":"[PASSWORD]"},"encryption":{"type":"string","description":"Encryption type. Can be omitted, 'ssl', or 'tls'","default":"","x-example":"none","enum":["none","ssl","tls"],"x-enum-name":"SMTPEncryption","x-enum-keys":[]},"autoTLS":{"type":"boolean","description":"Enable SMTP AutoTLS feature.","default":true,"x-example":false},"mailer":{"type":"string","description":"The value to use for the X-Mailer header.","default":"","x-example":"[MAILER]"},"fromName":{"type":"string","description":"Sender Name.","default":"","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","default":"","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the reply to field for the mail. Default value is sender name.","default":"","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the reply to field for the mail. Default value is sender email.","default":"","x-example":"email@example.com"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name","host"]}}]}},"\/messaging\/providers\/smtp\/{providerId}":{"patch":{"summary":"Update SMTP provider","operationId":"messagingUpdateSMTPProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateSMTPProvider","weight":340,"cookies":false,"type":"","demo":"messaging\/update-s-m-t-p-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-smtp-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"host":{"type":"string","description":"SMTP hosts. Either a single hostname or multiple semicolon-delimited hostnames. You can also specify a different port for each host by using this format: [hostname:port] (e.g. \"smtp1.example.com:25;smtp2.example.com\"). You can also specify encryption type, for example: (e.g. \"tls:\/\/smtp1.example.com:587;ssl:\/\/smtp2.example.com:465\"). Hosts will be tried in order.","default":"","x-example":"[HOST]"},"port":{"type":"integer","description":"SMTP port.","default":null,"x-example":1},"username":{"type":"string","description":"Authentication username.","default":"","x-example":"[USERNAME]"},"password":{"type":"string","description":"Authentication password.","default":"","x-example":"[PASSWORD]"},"encryption":{"type":"string","description":"Encryption type. Can be 'ssl' or 'tls'","default":"","x-example":"none","enum":["none","ssl","tls"],"x-enum-name":"SMTPEncryption","x-enum-keys":[]},"autoTLS":{"type":"boolean","description":"Enable SMTP AutoTLS feature.","default":null,"x-example":false},"mailer":{"type":"string","description":"The value to use for the X-Mailer header.","default":"","x-example":"[MAILER]"},"fromName":{"type":"string","description":"Sender Name.","default":"","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","default":"","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the Reply To field for the mail. Default value is Sender Name.","default":"","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the Reply To field for the mail. Default value is Sender Email.","default":"","x-example":"[REPLY_TO_EMAIL]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}}}}]}},"\/messaging\/providers\/telesign":{"post":{"summary":"Create Telesign provider","operationId":"messagingCreateTelesignProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createTelesignProvider","weight":329,"cookies":false,"type":"","demo":"messaging\/create-telesign-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-telesign-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":"","x-example":"+12065550100"},"customerId":{"type":"string","description":"Telesign customer ID.","default":"","x-example":"[CUSTOMER_ID]"},"apiKey":{"type":"string","description":"Telesign API key.","default":"","x-example":"[API_KEY]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name"]}}]}},"\/messaging\/providers\/telesign\/{providerId}":{"patch":{"summary":"Update Telesign provider","operationId":"messagingUpdateTelesignProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateTelesignProvider","weight":342,"cookies":false,"type":"","demo":"messaging\/update-telesign-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-telesign-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"customerId":{"type":"string","description":"Telesign customer ID.","default":"","x-example":"[CUSTOMER_ID]"},"apiKey":{"type":"string","description":"Telesign API key.","default":"","x-example":"[API_KEY]"},"from":{"type":"string","description":"Sender number.","default":"","x-example":"[FROM]"}}}}]}},"\/messaging\/providers\/textmagic":{"post":{"summary":"Create Textmagic provider","operationId":"messagingCreateTextmagicProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createTextmagicProvider","weight":330,"cookies":false,"type":"","demo":"messaging\/create-textmagic-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-textmagic-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":"","x-example":"+12065550100"},"username":{"type":"string","description":"Textmagic username.","default":"","x-example":"[USERNAME]"},"apiKey":{"type":"string","description":"Textmagic apiKey.","default":"","x-example":"[API_KEY]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name"]}}]}},"\/messaging\/providers\/textmagic\/{providerId}":{"patch":{"summary":"Update Textmagic provider","operationId":"messagingUpdateTextmagicProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateTextmagicProvider","weight":343,"cookies":false,"type":"","demo":"messaging\/update-textmagic-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-textmagic-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"username":{"type":"string","description":"Textmagic username.","default":"","x-example":"[USERNAME]"},"apiKey":{"type":"string","description":"Textmagic apiKey.","default":"","x-example":"[API_KEY]"},"from":{"type":"string","description":"Sender number.","default":"","x-example":"[FROM]"}}}}]}},"\/messaging\/providers\/twilio":{"post":{"summary":"Create Twilio provider","operationId":"messagingCreateTwilioProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createTwilioProvider","weight":331,"cookies":false,"type":"","demo":"messaging\/create-twilio-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-twilio-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":"","x-example":"+12065550100"},"accountSid":{"type":"string","description":"Twilio account secret ID.","default":"","x-example":"[ACCOUNT_SID]"},"authToken":{"type":"string","description":"Twilio authentication token.","default":"","x-example":"[AUTH_TOKEN]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name"]}}]}},"\/messaging\/providers\/twilio\/{providerId}":{"patch":{"summary":"Update Twilio provider","operationId":"messagingUpdateTwilioProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateTwilioProvider","weight":344,"cookies":false,"type":"","demo":"messaging\/update-twilio-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-twilio-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"accountSid":{"type":"string","description":"Twilio account secret ID.","default":"","x-example":"[ACCOUNT_SID]"},"authToken":{"type":"string","description":"Twilio authentication token.","default":"","x-example":"[AUTH_TOKEN]"},"from":{"type":"string","description":"Sender number.","default":"","x-example":"[FROM]"}}}}]}},"\/messaging\/providers\/vonage":{"post":{"summary":"Create Vonage provider","operationId":"messagingCreateVonageProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createVonageProvider","weight":332,"cookies":false,"type":"","demo":"messaging\/create-vonage-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-vonage-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":"","x-example":"+12065550100"},"apiKey":{"type":"string","description":"Vonage API key.","default":"","x-example":"[API_KEY]"},"apiSecret":{"type":"string","description":"Vonage API secret.","default":"","x-example":"[API_SECRET]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name"]}}]}},"\/messaging\/providers\/vonage\/{providerId}":{"patch":{"summary":"Update Vonage provider","operationId":"messagingUpdateVonageProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateVonageProvider","weight":345,"cookies":false,"type":"","demo":"messaging\/update-vonage-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-vonage-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"apiKey":{"type":"string","description":"Vonage API key.","default":"","x-example":"[API_KEY]"},"apiSecret":{"type":"string","description":"Vonage API secret.","default":"","x-example":"[API_SECRET]"},"from":{"type":"string","description":"Sender number.","default":"","x-example":"[FROM]"}}}}]}},"\/messaging\/providers\/{providerId}":{"get":{"summary":"Get provider","operationId":"messagingGetProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"getProvider","weight":337,"cookies":false,"type":"","demo":"messaging\/get-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/get-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"}]},"delete":{"summary":"Delete provider","operationId":"messagingDeleteProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteProvider","weight":348,"cookies":false,"type":"","demo":"messaging\/delete-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"}]}},"\/messaging\/providers\/{providerId}\/logs":{"get":{"summary":"List provider logs","operationId":"messagingListProviderLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listProviderLogs","weight":336,"cookies":false,"type":"","demo":"messaging\/list-provider-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/providers\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/messaging\/subscribers\/{subscriberId}\/logs":{"get":{"summary":"List subscriber logs","operationId":"messagingListSubscriberLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listSubscriberLogs","weight":357,"cookies":false,"type":"","demo":"messaging\/list-subscriber-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/subscribers\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"subscriberId","description":"Subscriber ID.","required":true,"type":"string","x-example":"[SUBSCRIBER_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/messaging\/topics":{"get":{"summary":"List topics.","operationId":"messagingListTopics","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Topic list","schema":{"$ref":"#\/definitions\/topicList"}}},"x-appwrite":{"method":"listTopics","weight":350,"cookies":false,"type":"","demo":"messaging\/list-topics.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-topics.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, description, total","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create a topic.","operationId":"messagingCreateTopic","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Topic","schema":{"$ref":"#\/definitions\/topic"}}},"x-appwrite":{"method":"createTopic","weight":349,"cookies":false,"type":"","demo":"messaging\/create-topic.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-topic.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"topicId":{"type":"string","description":"Topic ID. Choose a custom Topic ID or a new Topic ID.","default":null,"x-example":"[TOPIC_ID]"},"name":{"type":"string","description":"Topic Name.","default":null,"x-example":"[NAME]"},"subscribe":{"type":"array","description":"An array of role strings with subscribe permission. By default all users are granted with any subscribe permission. [learn more about roles](https:\/\/appwrite.io\/docs\/permissions#permission-roles). Maximum of 100 roles are allowed, each 64 characters long.","default":["users"],"x-example":"[\"any\"]","items":{"type":"string"}}},"required":["topicId","name"]}}]}},"\/messaging\/topics\/{topicId}":{"get":{"summary":"Get a topic.","operationId":"messagingGetTopic","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Topic","schema":{"$ref":"#\/definitions\/topic"}}},"x-appwrite":{"method":"getTopic","weight":352,"cookies":false,"type":"","demo":"messaging\/get-topic.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/get-topic.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID.","required":true,"type":"string","x-example":"[TOPIC_ID]","in":"path"}]},"patch":{"summary":"Update a topic.","operationId":"messagingUpdateTopic","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Topic","schema":{"$ref":"#\/definitions\/topic"}}},"x-appwrite":{"method":"updateTopic","weight":353,"cookies":false,"type":"","demo":"messaging\/update-topic.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-topic.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID.","required":true,"type":"string","x-example":"[TOPIC_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Topic Name.","default":"","x-example":"[NAME]"}}}}]},"delete":{"summary":"Delete a topic.","operationId":"messagingDeleteTopic","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteTopic","weight":354,"cookies":false,"type":"","demo":"messaging\/delete-topic.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-topic.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID.","required":true,"type":"string","x-example":"[TOPIC_ID]","in":"path"}]}},"\/messaging\/topics\/{topicId}\/logs":{"get":{"summary":"List topic logs","operationId":"messagingListTopicLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listTopicLogs","weight":351,"cookies":false,"type":"","demo":"messaging\/list-topic-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/topics\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID.","required":true,"type":"string","x-example":"[TOPIC_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/messaging\/topics\/{topicId}\/subscribers":{"get":{"summary":"List subscribers.","operationId":"messagingListSubscribers","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Subscriber list","schema":{"$ref":"#\/definitions\/subscriberList"}}},"x-appwrite":{"method":"listSubscribers","weight":356,"cookies":false,"type":"","demo":"messaging\/list-subscribers.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-subscribers.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID subscribed to.","required":true,"type":"string","x-example":"[TOPIC_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, provider, type, enabled","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create a subscriber.","operationId":"messagingCreateSubscriber","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Subscriber","schema":{"$ref":"#\/definitions\/subscriber"}}},"x-appwrite":{"method":"createSubscriber","weight":355,"cookies":false,"type":"","demo":"messaging\/create-subscriber.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-subscriber.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.write","platforms":["server","client","console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID to subscribe to.","required":true,"type":"string","x-example":"[TOPIC_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"subscriberId":{"type":"string","description":"Subscriber ID. Choose a custom Subscriber ID or a new Subscriber ID.","default":null,"x-example":"[SUBSCRIBER_ID]"},"targetId":{"type":"string","description":"Target ID. The target ID to link to the specified Topic ID.","default":null,"x-example":"[TARGET_ID]"}},"required":["subscriberId","targetId"]}}]}},"\/messaging\/topics\/{topicId}\/subscribers\/{subscriberId}":{"get":{"summary":"Get a subscriber.","operationId":"messagingGetSubscriber","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Subscriber","schema":{"$ref":"#\/definitions\/subscriber"}}},"x-appwrite":{"method":"getSubscriber","weight":358,"cookies":false,"type":"","demo":"messaging\/get-subscriber.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/get-subscriber.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID subscribed to.","required":true,"type":"string","x-example":"[TOPIC_ID]","in":"path"},{"name":"subscriberId","description":"Subscriber ID.","required":true,"type":"string","x-example":"[SUBSCRIBER_ID]","in":"path"}]},"delete":{"summary":"Delete a subscriber.","operationId":"messagingDeleteSubscriber","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSubscriber","weight":359,"cookies":false,"type":"","demo":"messaging\/delete-subscriber.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-subscriber.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.write","platforms":["server","client","console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID subscribed to.","required":true,"type":"string","x-example":"[TOPIC_ID]","in":"path"},{"name":"subscriberId","description":"Subscriber ID.","required":true,"type":"string","x-example":"[SUBSCRIBER_ID]","in":"path"}]}},"\/migrations":{"get":{"summary":"List Migrations","operationId":"migrationsList","consumes":["application\/json"],"produces":["application\/json"],"tags":["migrations"],"description":"","responses":{"200":{"description":"Migrations List","schema":{"$ref":"#\/definitions\/migrationList"}}},"x-appwrite":{"method":"list","weight":312,"cookies":false,"type":"","demo":"migrations\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/list-migrations.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: status, stage, source, resources, statusCounters, resourceData, errors","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]}},"\/migrations\/appwrite":{"post":{"summary":"Migrate Appwrite Data","operationId":"migrationsCreateAppwriteMigration","consumes":["application\/json"],"produces":["application\/json"],"tags":["migrations"],"description":"","responses":{"202":{"description":"Migration","schema":{"$ref":"#\/definitions\/migration"}}},"x-appwrite":{"method":"createAppwriteMigration","weight":307,"cookies":false,"type":"","demo":"migrations\/create-appwrite-migration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-appwrite.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"resources":{"type":"array","description":"List of resources to migrate","default":null,"x-example":null,"items":{"type":"string"}},"endpoint":{"type":"string","description":"Source's Appwrite Endpoint","default":null,"x-example":"https:\/\/example.com"},"projectId":{"type":"string","description":"Source's Project ID","default":null,"x-example":"[PROJECT_ID]"},"apiKey":{"type":"string","description":"Source's API Key","default":null,"x-example":"[API_KEY]"}},"required":["resources","endpoint","projectId","apiKey"]}}]}},"\/migrations\/appwrite\/report":{"get":{"summary":"Generate a report on Appwrite Data","operationId":"migrationsGetAppwriteReport","consumes":["application\/json"],"produces":["application\/json"],"tags":["migrations"],"description":"","responses":{"200":{"description":"Migration Report","schema":{"$ref":"#\/definitions\/migrationReport"}}},"x-appwrite":{"method":"getAppwriteReport","weight":314,"cookies":false,"type":"","demo":"migrations\/get-appwrite-report.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-appwrite-report.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"resources","description":"List of resources to migrate","required":true,"type":"array","collectionFormat":"multi","items":{"type":"string"},"in":"query"},{"name":"endpoint","description":"Source's Appwrite Endpoint","required":true,"type":"string","format":"url","x-example":"https:\/\/example.com","in":"query"},{"name":"projectID","description":"Source's Project ID","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"query"},{"name":"key","description":"Source's API Key","required":true,"type":"string","x-example":"[KEY]","in":"query"}]}},"\/migrations\/firebase":{"post":{"summary":"Migrate Firebase Data (Service Account)","operationId":"migrationsCreateFirebaseMigration","consumes":["application\/json"],"produces":["application\/json"],"tags":["migrations"],"description":"","responses":{"202":{"description":"Migration","schema":{"$ref":"#\/definitions\/migration"}}},"x-appwrite":{"method":"createFirebaseMigration","weight":309,"cookies":false,"type":"","demo":"migrations\/create-firebase-migration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-firebase.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"resources":{"type":"array","description":"List of resources to migrate","default":null,"x-example":null,"items":{"type":"string"}},"serviceAccount":{"type":"string","description":"JSON of the Firebase service account credentials","default":null,"x-example":"[SERVICE_ACCOUNT]"}},"required":["resources","serviceAccount"]}}]}},"\/migrations\/firebase\/deauthorize":{"get":{"summary":"Revoke Appwrite's authorization to access Firebase Projects","operationId":"migrationsDeleteFirebaseAuth","consumes":["application\/json"],"produces":["application\/json"],"tags":["migrations"],"description":"","responses":{"200":{"description":"File","schema":{"type":"file"}}},"x-appwrite":{"method":"deleteFirebaseAuth","weight":320,"cookies":false,"type":"","demo":"migrations\/delete-firebase-auth.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/migrations\/firebase\/oauth":{"post":{"summary":"Migrate Firebase Data (OAuth)","operationId":"migrationsCreateFirebaseOAuthMigration","consumes":["application\/json"],"produces":["application\/json"],"tags":["migrations"],"description":"","responses":{"202":{"description":"Migration","schema":{"$ref":"#\/definitions\/migration"}}},"x-appwrite":{"method":"createFirebaseOAuthMigration","weight":308,"cookies":false,"type":"","demo":"migrations\/create-firebase-o-auth-migration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-firebase.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"resources":{"type":"array","description":"List of resources to migrate","default":null,"x-example":null,"items":{"type":"string"}},"projectId":{"type":"string","description":"Project ID of the Firebase Project","default":null,"x-example":"[PROJECT_ID]"}},"required":["resources","projectId"]}}]}},"\/migrations\/firebase\/projects":{"get":{"summary":"List Firebase Projects","operationId":"migrationsListFirebaseProjects","consumes":["application\/json"],"produces":["application\/json"],"tags":["migrations"],"description":"","responses":{"200":{"description":"Migrations Firebase Projects List","schema":{"$ref":"#\/definitions\/firebaseProjectList"}}},"x-appwrite":{"method":"listFirebaseProjects","weight":319,"cookies":false,"type":"","demo":"migrations\/list-firebase-projects.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/migrations\/firebase\/report":{"get":{"summary":"Generate a report on Firebase Data","operationId":"migrationsGetFirebaseReport","consumes":["application\/json"],"produces":["application\/json"],"tags":["migrations"],"description":"","responses":{"200":{"description":"Migration Report","schema":{"$ref":"#\/definitions\/migrationReport"}}},"x-appwrite":{"method":"getFirebaseReport","weight":315,"cookies":false,"type":"","demo":"migrations\/get-firebase-report.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-firebase-report.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"resources","description":"List of resources to migrate","required":true,"type":"array","collectionFormat":"multi","items":{"type":"string"},"in":"query"},{"name":"serviceAccount","description":"JSON of the Firebase service account credentials","required":true,"type":"string","x-example":"[SERVICE_ACCOUNT]","in":"query"}]}},"\/migrations\/firebase\/report\/oauth":{"get":{"summary":"Generate a report on Firebase Data using OAuth","operationId":"migrationsGetFirebaseReportOAuth","consumes":["application\/json"],"produces":["application\/json"],"tags":["migrations"],"description":"","responses":{"200":{"description":"Migration Report","schema":{"$ref":"#\/definitions\/migrationReport"}}},"x-appwrite":{"method":"getFirebaseReportOAuth","weight":316,"cookies":false,"type":"","demo":"migrations\/get-firebase-report-o-auth.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-firebase-report.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"resources","description":"List of resources to migrate","required":true,"type":"array","collectionFormat":"multi","items":{"type":"string"},"in":"query"},{"name":"projectId","description":"Project ID","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"query"}]}},"\/migrations\/nhost":{"post":{"summary":"Migrate NHost Data","operationId":"migrationsCreateNHostMigration","consumes":["application\/json"],"produces":["application\/json"],"tags":["migrations"],"description":"","responses":{"202":{"description":"Migration","schema":{"$ref":"#\/definitions\/migration"}}},"x-appwrite":{"method":"createNHostMigration","weight":311,"cookies":false,"type":"","demo":"migrations\/create-n-host-migration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-nhost.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"resources":{"type":"array","description":"List of resources to migrate","default":null,"x-example":null,"items":{"type":"string"}},"subdomain":{"type":"string","description":"Source's Subdomain","default":null,"x-example":"[SUBDOMAIN]"},"region":{"type":"string","description":"Source's Region","default":null,"x-example":"[REGION]"},"adminSecret":{"type":"string","description":"Source's Admin Secret","default":null,"x-example":"[ADMIN_SECRET]"},"database":{"type":"string","description":"Source's Database Name","default":null,"x-example":"[DATABASE]"},"username":{"type":"string","description":"Source's Database Username","default":null,"x-example":"[USERNAME]"},"password":{"type":"string","description":"Source's Database Password","default":null,"x-example":"[PASSWORD]"},"port":{"type":"integer","description":"Source's Database Port","default":5432,"x-example":null}},"required":["resources","subdomain","region","adminSecret","database","username","password"]}}]}},"\/migrations\/nhost\/report":{"get":{"summary":"Generate a report on NHost Data","operationId":"migrationsGetNHostReport","consumes":["application\/json"],"produces":["application\/json"],"tags":["migrations"],"description":"","responses":{"200":{"description":"Migration Report","schema":{"$ref":"#\/definitions\/migrationReport"}}},"x-appwrite":{"method":"getNHostReport","weight":322,"cookies":false,"type":"","demo":"migrations\/get-n-host-report.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-nhost-report.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"resources","description":"List of resources to migrate.","required":true,"type":"array","collectionFormat":"multi","items":{"type":"string"},"in":"query"},{"name":"subdomain","description":"Source's Subdomain.","required":true,"type":"string","x-example":"[SUBDOMAIN]","in":"query"},{"name":"region","description":"Source's Region.","required":true,"type":"string","x-example":"[REGION]","in":"query"},{"name":"adminSecret","description":"Source's Admin Secret.","required":true,"type":"string","x-example":"[ADMIN_SECRET]","in":"query"},{"name":"database","description":"Source's Database Name.","required":true,"type":"string","x-example":"[DATABASE]","in":"query"},{"name":"username","description":"Source's Database Username.","required":true,"type":"string","x-example":"[USERNAME]","in":"query"},{"name":"password","description":"Source's Database Password.","required":true,"type":"string","x-example":"[PASSWORD]","in":"query"},{"name":"port","description":"Source's Database Port.","required":false,"type":"integer","format":"int32","default":5432,"in":"query"}]}},"\/migrations\/supabase":{"post":{"summary":"Migrate Supabase Data","operationId":"migrationsCreateSupabaseMigration","consumes":["application\/json"],"produces":["application\/json"],"tags":["migrations"],"description":"","responses":{"202":{"description":"Migration","schema":{"$ref":"#\/definitions\/migration"}}},"x-appwrite":{"method":"createSupabaseMigration","weight":310,"cookies":false,"type":"","demo":"migrations\/create-supabase-migration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-supabase.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"resources":{"type":"array","description":"List of resources to migrate","default":null,"x-example":null,"items":{"type":"string"}},"endpoint":{"type":"string","description":"Source's Supabase Endpoint","default":null,"x-example":"https:\/\/example.com"},"apiKey":{"type":"string","description":"Source's API Key","default":null,"x-example":"[API_KEY]"},"databaseHost":{"type":"string","description":"Source's Database Host","default":null,"x-example":"[DATABASE_HOST]"},"username":{"type":"string","description":"Source's Database Username","default":null,"x-example":"[USERNAME]"},"password":{"type":"string","description":"Source's Database Password","default":null,"x-example":"[PASSWORD]"},"port":{"type":"integer","description":"Source's Database Port","default":5432,"x-example":null}},"required":["resources","endpoint","apiKey","databaseHost","username","password"]}}]}},"\/migrations\/supabase\/report":{"get":{"summary":"Generate a report on Supabase Data","operationId":"migrationsGetSupabaseReport","consumes":["application\/json"],"produces":["application\/json"],"tags":["migrations"],"description":"","responses":{"200":{"description":"Migration Report","schema":{"$ref":"#\/definitions\/migrationReport"}}},"x-appwrite":{"method":"getSupabaseReport","weight":321,"cookies":false,"type":"","demo":"migrations\/get-supabase-report.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-supabase-report.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"resources","description":"List of resources to migrate","required":true,"type":"array","collectionFormat":"multi","items":{"type":"string"},"in":"query"},{"name":"endpoint","description":"Source's Supabase Endpoint.","required":true,"type":"string","format":"url","x-example":"https:\/\/example.com","in":"query"},{"name":"apiKey","description":"Source's API Key.","required":true,"type":"string","x-example":"[API_KEY]","in":"query"},{"name":"databaseHost","description":"Source's Database Host.","required":true,"type":"string","x-example":"[DATABASE_HOST]","in":"query"},{"name":"username","description":"Source's Database Username.","required":true,"type":"string","x-example":"[USERNAME]","in":"query"},{"name":"password","description":"Source's Database Password.","required":true,"type":"string","x-example":"[PASSWORD]","in":"query"},{"name":"port","description":"Source's Database Port.","required":false,"type":"integer","format":"int32","default":5432,"in":"query"}]}},"\/migrations\/{migrationId}":{"get":{"summary":"Get Migration","operationId":"migrationsGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["migrations"],"description":"","responses":{"200":{"description":"Migration","schema":{"$ref":"#\/definitions\/migration"}}},"x-appwrite":{"method":"get","weight":313,"cookies":false,"type":"","demo":"migrations\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/get-migration.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"migrationId","description":"Migration unique ID.","required":true,"type":"string","x-example":"[MIGRATION_ID]","in":"path"}]},"patch":{"summary":"Retry Migration","operationId":"migrationsRetry","consumes":["application\/json"],"produces":["application\/json"],"tags":["migrations"],"description":"","responses":{"202":{"description":"Migration","schema":{"$ref":"#\/definitions\/migration"}}},"x-appwrite":{"method":"retry","weight":323,"cookies":false,"type":"","demo":"migrations\/retry.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/retry-migration.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"migrationId","description":"Migration unique ID.","required":true,"type":"string","x-example":"[MIGRATION_ID]","in":"path"}]},"delete":{"summary":"Delete Migration","operationId":"migrationsDelete","consumes":["application\/json"],"produces":[],"tags":["migrations"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":324,"cookies":false,"type":"","demo":"migrations\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-migration.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"migrationId","description":"Migration ID.","required":true,"type":"string","x-example":"[MIGRATION_ID]","in":"path"}]}},"\/project\/usage":{"get":{"summary":"Get usage stats for a project","operationId":"projectGetUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["project"],"description":"","responses":{"200":{"description":"UsageProject","schema":{"$ref":"#\/definitions\/usageProject"}}},"x-appwrite":{"method":"getUsage","weight":181,"cookies":false,"type":"","demo":"project\/get-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"startDate","description":"Starting date for the usage","required":true,"type":"string","in":"query"},{"name":"endDate","description":"End date for the usage","required":true,"type":"string","in":"query"},{"name":"period","description":"Period used","required":false,"type":"string","x-example":"1h","enum":["1h","1d"],"x-enum-name":"ProjectUsageRange","x-enum-keys":["One Hour","One Day"],"default":"1d","in":"query"}]}},"\/project\/variables":{"get":{"summary":"List Variables","operationId":"projectListVariables","consumes":["application\/json"],"produces":["application\/json"],"tags":["project"],"description":"Get a list of all project variables. These variables will be accessible in all Appwrite Functions at runtime.","responses":{"200":{"description":"Variables List","schema":{"$ref":"#\/definitions\/variableList"}}},"x-appwrite":{"method":"listVariables","weight":183,"cookies":false,"type":"","demo":"project\/list-variables.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/project\/list-variables.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]},"post":{"summary":"Create Variable","operationId":"projectCreateVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["project"],"description":"Create a new project variable. This variable will be accessible in all Appwrite Functions at runtime.","responses":{"201":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"createVariable","weight":182,"cookies":false,"type":"","demo":"project\/create-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/project\/create-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","default":null,"x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","default":null,"x-example":"[VALUE]"}},"required":["key","value"]}}]}},"\/project\/variables\/{variableId}":{"get":{"summary":"Get Variable","operationId":"projectGetVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["project"],"description":"Get a project variable by its unique ID.","responses":{"200":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"getVariable","weight":184,"cookies":false,"type":"","demo":"project\/get-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/project\/get-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"}]},"put":{"summary":"Update Variable","operationId":"projectUpdateVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["project"],"description":"Update project variable by its unique ID. This variable will be accessible in all Appwrite Functions at runtime.","responses":{"200":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"updateVariable","weight":185,"cookies":false,"type":"","demo":"project\/update-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/project\/update-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","default":null,"x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","default":null,"x-example":"[VALUE]"}},"required":["key"]}}]},"delete":{"summary":"Delete Variable","operationId":"projectDeleteVariable","consumes":["application\/json"],"produces":[],"tags":["project"],"description":"Delete a project variable by its unique ID. ","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteVariable","weight":186,"cookies":false,"type":"","demo":"project\/delete-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/project\/delete-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"}]}},"\/projects":{"get":{"summary":"List projects","operationId":"projectsList","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Projects List","schema":{"$ref":"#\/definitions\/projectList"}}},"x-appwrite":{"method":"list","weight":142,"cookies":false,"type":"","demo":"projects\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, teamId","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create project","operationId":"projectsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"201":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"create","weight":141,"cookies":false,"type":"","demo":"projects\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"projectId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, and hyphen. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":null},"name":{"type":"string","description":"Project name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"teamId":{"type":"string","description":"Team unique ID.","default":null,"x-example":"[TEAM_ID]"},"region":{"type":"string","description":"Project Region.","default":"default","x-example":"default","enum":["default"],"x-enum-name":null,"x-enum-keys":[]},"description":{"type":"string","description":"Project description. Max length: 256 chars.","default":"","x-example":"[DESCRIPTION]"},"logo":{"type":"string","description":"Project logo.","default":"","x-example":"[LOGO]"},"url":{"type":"string","description":"Project URL.","default":"","x-example":"https:\/\/example.com"},"legalName":{"type":"string","description":"Project legal Name. Max length: 256 chars.","default":"","x-example":"[LEGAL_NAME]"},"legalCountry":{"type":"string","description":"Project legal Country. Max length: 256 chars.","default":"","x-example":"[LEGAL_COUNTRY]"},"legalState":{"type":"string","description":"Project legal State. Max length: 256 chars.","default":"","x-example":"[LEGAL_STATE]"},"legalCity":{"type":"string","description":"Project legal City. Max length: 256 chars.","default":"","x-example":"[LEGAL_CITY]"},"legalAddress":{"type":"string","description":"Project legal Address. Max length: 256 chars.","default":"","x-example":"[LEGAL_ADDRESS]"},"legalTaxId":{"type":"string","description":"Project legal Tax ID. Max length: 256 chars.","default":"","x-example":"[LEGAL_TAX_ID]"}},"required":["projectId","name","teamId"]}}]}},"\/projects\/{projectId}":{"get":{"summary":"Get project","operationId":"projectsGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"get","weight":143,"cookies":false,"type":"","demo":"projects\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"}]},"patch":{"summary":"Update project","operationId":"projectsUpdate","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"update","weight":144,"cookies":false,"type":"","demo":"projects\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Project name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"description":{"type":"string","description":"Project description. Max length: 256 chars.","default":"","x-example":"[DESCRIPTION]"},"logo":{"type":"string","description":"Project logo.","default":"","x-example":"[LOGO]"},"url":{"type":"string","description":"Project URL.","default":"","x-example":"https:\/\/example.com"},"legalName":{"type":"string","description":"Project legal name. Max length: 256 chars.","default":"","x-example":"[LEGAL_NAME]"},"legalCountry":{"type":"string","description":"Project legal country. Max length: 256 chars.","default":"","x-example":"[LEGAL_COUNTRY]"},"legalState":{"type":"string","description":"Project legal state. Max length: 256 chars.","default":"","x-example":"[LEGAL_STATE]"},"legalCity":{"type":"string","description":"Project legal city. Max length: 256 chars.","default":"","x-example":"[LEGAL_CITY]"},"legalAddress":{"type":"string","description":"Project legal address. Max length: 256 chars.","default":"","x-example":"[LEGAL_ADDRESS]"},"legalTaxId":{"type":"string","description":"Project legal tax ID. Max length: 256 chars.","default":"","x-example":"[LEGAL_TAX_ID]"}},"required":["name"]}}]},"delete":{"summary":"Delete project","operationId":"projectsDelete","consumes":["application\/json"],"produces":[],"tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":156,"cookies":false,"type":"","demo":"projects\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"}]}},"\/projects\/{projectId}\/auth\/duration":{"patch":{"summary":"Update project authentication duration","operationId":"projectsUpdateAuthDuration","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateAuthDuration","weight":150,"cookies":false,"type":"","demo":"projects\/update-auth-duration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"duration":{"type":"integer","description":"Project session length in seconds. Max length: 31536000 seconds.","default":null,"x-example":0}},"required":["duration"]}}]}},"\/projects\/{projectId}\/auth\/limit":{"patch":{"summary":"Update project users limit","operationId":"projectsUpdateAuthLimit","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateAuthLimit","weight":149,"cookies":false,"type":"","demo":"projects\/update-auth-limit.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"limit":{"type":"integer","description":"Set the max number of users allowed in this project. Use 0 for unlimited.","default":null,"x-example":0}},"required":["limit"]}}]}},"\/projects\/{projectId}\/auth\/max-sessions":{"patch":{"summary":"Update project user sessions limit","operationId":"projectsUpdateAuthSessionsLimit","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateAuthSessionsLimit","weight":155,"cookies":false,"type":"","demo":"projects\/update-auth-sessions-limit.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"limit":{"type":"integer","description":"Set the max number of users allowed in this project. Value allowed is between 1-100. Default is 10","default":null,"x-example":1}},"required":["limit"]}}]}},"\/projects\/{projectId}\/auth\/password-dictionary":{"patch":{"summary":"Update authentication password dictionary status. Use this endpoint to enable or disable the dicitonary check for user password","operationId":"projectsUpdateAuthPasswordDictionary","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateAuthPasswordDictionary","weight":153,"cookies":false,"type":"","demo":"projects\/update-auth-password-dictionary.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Set whether or not to enable checking user's password against most commonly used passwords. Default is false.","default":null,"x-example":false}},"required":["enabled"]}}]}},"\/projects\/{projectId}\/auth\/password-history":{"patch":{"summary":"Update authentication password history. Use this endpoint to set the number of password history to save and 0 to disable password history.","operationId":"projectsUpdateAuthPasswordHistory","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateAuthPasswordHistory","weight":152,"cookies":false,"type":"","demo":"projects\/update-auth-password-history.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"limit":{"type":"integer","description":"Set the max number of passwords to store in user history. User can't choose a new password that is already stored in the password history list. Max number of passwords allowed in history is20. Default value is 0","default":null,"x-example":0}},"required":["limit"]}}]}},"\/projects\/{projectId}\/auth\/personal-data":{"patch":{"summary":"Enable or disable checking user passwords for similarity with their personal data.","operationId":"projectsUpdatePersonalDataCheck","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updatePersonalDataCheck","weight":154,"cookies":false,"type":"","demo":"projects\/update-personal-data-check.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Set whether or not to check a password for similarity with personal data. Default is false.","default":null,"x-example":false}},"required":["enabled"]}}]}},"\/projects\/{projectId}\/auth\/{method}":{"patch":{"summary":"Update project auth method status. Use this endpoint to enable or disable a given auth method for this project.","operationId":"projectsUpdateAuthStatus","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateAuthStatus","weight":151,"cookies":false,"type":"","demo":"projects\/update-auth-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"method","description":"Auth Method. Possible values: email-password,magic-url,email-otp,anonymous,invites,jwt,phone","required":true,"type":"string","x-example":"email-password","enum":["email-password","magic-url","email-otp","anonymous","invites","jwt","phone"],"x-enum-name":"AuthMethod","x-enum-keys":[],"in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"status":{"type":"boolean","description":"Set the status of this auth method.","default":null,"x-example":false}},"required":["status"]}}]}},"\/projects\/{projectId}\/keys":{"get":{"summary":"List keys","operationId":"projectsListKeys","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"API Keys List","schema":{"$ref":"#\/definitions\/keyList"}}},"x-appwrite":{"method":"listKeys","weight":164,"cookies":false,"type":"","demo":"projects\/list-keys.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"}]},"post":{"summary":"Create key","operationId":"projectsCreateKey","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"201":{"description":"Key","schema":{"$ref":"#\/definitions\/key"}}},"x-appwrite":{"method":"createKey","weight":163,"cookies":false,"type":"","demo":"projects\/create-key.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Key name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"scopes":{"type":"array","description":"Key scopes list. Maximum of 100 scopes are allowed.","default":null,"x-example":null,"items":{"type":"string"}},"expire":{"type":"string","description":"Expiration time in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. Use null for unlimited expiration.","default":null,"x-example":null}},"required":["name","scopes"]}}]}},"\/projects\/{projectId}\/keys\/{keyId}":{"get":{"summary":"Get key","operationId":"projectsGetKey","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Key","schema":{"$ref":"#\/definitions\/key"}}},"x-appwrite":{"method":"getKey","weight":165,"cookies":false,"type":"","demo":"projects\/get-key.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"keyId","description":"Key unique ID.","required":true,"type":"string","x-example":"[KEY_ID]","in":"path"}]},"put":{"summary":"Update key","operationId":"projectsUpdateKey","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Key","schema":{"$ref":"#\/definitions\/key"}}},"x-appwrite":{"method":"updateKey","weight":166,"cookies":false,"type":"","demo":"projects\/update-key.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"keyId","description":"Key unique ID.","required":true,"type":"string","x-example":"[KEY_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Key name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"scopes":{"type":"array","description":"Key scopes list. Maximum of 100 events are allowed.","default":null,"x-example":null,"items":{"type":"string"}},"expire":{"type":"string","description":"Expiration time in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. Use null for unlimited expiration.","default":null,"x-example":null}},"required":["name","scopes"]}}]},"delete":{"summary":"Delete key","operationId":"projectsDeleteKey","consumes":["application\/json"],"produces":[],"tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteKey","weight":167,"cookies":false,"type":"","demo":"projects\/delete-key.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"keyId","description":"Key unique ID.","required":true,"type":"string","x-example":"[KEY_ID]","in":"path"}]}},"\/projects\/{projectId}\/oauth2":{"patch":{"summary":"Update project OAuth2","operationId":"projectsUpdateOAuth2","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateOAuth2","weight":148,"cookies":false,"type":"","demo":"projects\/update-o-auth2.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"provider":{"type":"string","description":"Provider Name","default":null,"x-example":"amazon","enum":["amazon","apple","auth0","authentik","autodesk","bitbucket","bitly","box","dailymotion","discord","disqus","dropbox","etsy","facebook","github","gitlab","google","linkedin","microsoft","notion","oidc","okta","paypal","paypalSandbox","podio","salesforce","slack","spotify","stripe","tradeshift","tradeshiftBox","twitch","wordpress","yahoo","yammer","yandex","zoho","zoom","mock"],"x-enum-name":"OAuthProvider","x-enum-keys":[]},"appId":{"type":"string","description":"Provider app ID. Max length: 256 chars.","default":null,"x-example":"[APP_ID]"},"secret":{"type":"string","description":"Provider secret key. Max length: 512 chars.","default":null,"x-example":"[SECRET]"},"enabled":{"type":"boolean","description":"Provider status. Set to 'false' to disable new session creation.","default":null,"x-example":false}},"required":["provider"]}}]}},"\/projects\/{projectId}\/platforms":{"get":{"summary":"List platforms","operationId":"projectsListPlatforms","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Platforms List","schema":{"$ref":"#\/definitions\/platformList"}}},"x-appwrite":{"method":"listPlatforms","weight":169,"cookies":false,"type":"","demo":"projects\/list-platforms.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"}]},"post":{"summary":"Create platform","operationId":"projectsCreatePlatform","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"201":{"description":"Platform","schema":{"$ref":"#\/definitions\/platform"}}},"x-appwrite":{"method":"createPlatform","weight":168,"cookies":false,"type":"","demo":"projects\/create-platform.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"type":{"type":"string","description":"Platform type.","default":null,"x-example":"web","enum":["web","flutter-web","flutter-ios","flutter-android","flutter-linux","flutter-macos","flutter-windows","apple-ios","apple-macos","apple-watchos","apple-tvos","android","unity"],"x-enum-name":"PlatformType","x-enum-keys":[]},"name":{"type":"string","description":"Platform name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"key":{"type":"string","description":"Package name for Android or bundle ID for iOS or macOS. Max length: 256 chars.","default":"","x-example":"[KEY]"},"store":{"type":"string","description":"App store or Google Play store ID. Max length: 256 chars.","default":"","x-example":"[STORE]"},"hostname":{"type":"string","description":"Platform client hostname. Max length: 256 chars.","default":"","x-example":null}},"required":["type","name"]}}]}},"\/projects\/{projectId}\/platforms\/{platformId}":{"get":{"summary":"Get platform","operationId":"projectsGetPlatform","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Platform","schema":{"$ref":"#\/definitions\/platform"}}},"x-appwrite":{"method":"getPlatform","weight":170,"cookies":false,"type":"","demo":"projects\/get-platform.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"platformId","description":"Platform unique ID.","required":true,"type":"string","x-example":"[PLATFORM_ID]","in":"path"}]},"put":{"summary":"Update platform","operationId":"projectsUpdatePlatform","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Platform","schema":{"$ref":"#\/definitions\/platform"}}},"x-appwrite":{"method":"updatePlatform","weight":171,"cookies":false,"type":"","demo":"projects\/update-platform.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"platformId","description":"Platform unique ID.","required":true,"type":"string","x-example":"[PLATFORM_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Platform name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"key":{"type":"string","description":"Package name for android or bundle ID for iOS. Max length: 256 chars.","default":"","x-example":"[KEY]"},"store":{"type":"string","description":"App store or Google Play store ID. Max length: 256 chars.","default":"","x-example":"[STORE]"},"hostname":{"type":"string","description":"Platform client URL. Max length: 256 chars.","default":"","x-example":null}},"required":["name"]}}]},"delete":{"summary":"Delete platform","operationId":"projectsDeletePlatform","consumes":["application\/json"],"produces":[],"tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deletePlatform","weight":172,"cookies":false,"type":"","demo":"projects\/delete-platform.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"platformId","description":"Platform unique ID.","required":true,"type":"string","x-example":"[PLATFORM_ID]","in":"path"}]}},"\/projects\/{projectId}\/service":{"patch":{"summary":"Update service status","operationId":"projectsUpdateServiceStatus","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateServiceStatus","weight":146,"cookies":false,"type":"","demo":"projects\/update-service-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"service":{"type":"string","description":"Service name.","default":null,"x-example":"account","enum":["account","avatars","databases","locale","health","storage","teams","users","functions","graphql","messaging"],"x-enum-name":"APIService","x-enum-keys":[]},"status":{"type":"boolean","description":"Service status.","default":null,"x-example":false}},"required":["service","status"]}}]}},"\/projects\/{projectId}\/service\/all":{"patch":{"summary":"Update all service status","operationId":"projectsUpdateServiceStatusAll","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateServiceStatusAll","weight":147,"cookies":false,"type":"","demo":"projects\/update-service-status-all.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"status":{"type":"boolean","description":"Service status.","default":null,"x-example":false}},"required":["status"]}}]}},"\/projects\/{projectId}\/smtp":{"patch":{"summary":"Update SMTP","operationId":"projectsUpdateSmtp","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateSmtp","weight":173,"cookies":false,"type":"","demo":"projects\/update-smtp.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enable custom SMTP service","default":null,"x-example":false},"senderName":{"type":"string","description":"Name of the email sender","default":"","x-example":"[SENDER_NAME]"},"senderEmail":{"type":"string","description":"Email of the sender","default":"","x-example":"email@example.com"},"replyTo":{"type":"string","description":"Reply to email","default":"","x-example":"email@example.com"},"host":{"type":"string","description":"SMTP server host name","default":"","x-example":null},"port":{"type":"integer","description":"SMTP server port","default":587,"x-example":null},"username":{"type":"string","description":"SMTP server username","default":"","x-example":"[USERNAME]"},"password":{"type":"string","description":"SMTP server password","default":"","x-example":"[PASSWORD]"},"secure":{"type":"string","description":"Does SMTP server use secure connection","default":"","x-example":"tls","enum":["tls"],"x-enum-name":"SMTPSecure","x-enum-keys":[]}},"required":["enabled"]}}]}},"\/projects\/{projectId}\/smtp\/tests":{"post":{"summary":"Create SMTP test","operationId":"projectsCreateSmtpTest","consumes":["application\/json"],"produces":[],"tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"createSmtpTest","weight":174,"cookies":false,"type":"","demo":"projects\/create-smtp-test.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"emails":{"type":"array","description":"Array of emails to send test email to. Maximum of 10 emails are allowed.","default":null,"x-example":null,"items":{"type":"string"}},"senderName":{"type":"string","description":"Name of the email sender","default":null,"x-example":"[SENDER_NAME]"},"senderEmail":{"type":"string","description":"Email of the sender","default":null,"x-example":"email@example.com"},"replyTo":{"type":"string","description":"Reply to email","default":"","x-example":"email@example.com"},"host":{"type":"string","description":"SMTP server host name","default":null,"x-example":null},"port":{"type":"integer","description":"SMTP server port","default":587,"x-example":null},"username":{"type":"string","description":"SMTP server username","default":"","x-example":"[USERNAME]"},"password":{"type":"string","description":"SMTP server password","default":"","x-example":"[PASSWORD]"},"secure":{"type":"string","description":"Does SMTP server use secure connection","default":"","x-example":"tls","enum":["tls"],"x-enum-name":"SMTPSecure","x-enum-keys":[]}},"required":["emails","senderName","senderEmail","host"]}}]}},"\/projects\/{projectId}\/team":{"patch":{"summary":"Update Project Team","operationId":"projectsUpdateTeam","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateTeam","weight":145,"cookies":false,"type":"","demo":"projects\/update-team.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"teamId":{"type":"string","description":"Team ID of the team to transfer project to.","default":null,"x-example":"[TEAM_ID]"}},"required":["teamId"]}}]}},"\/projects\/{projectId}\/templates\/email\/{type}\/{locale}":{"get":{"summary":"Get custom email template","operationId":"projectsGetEmailTemplate","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"EmailTemplate","schema":{"$ref":"#\/definitions\/emailTemplate"}}},"x-appwrite":{"method":"getEmailTemplate","weight":176,"cookies":false,"type":"","demo":"projects\/get-email-template.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"type","description":"Template type","required":true,"type":"string","x-example":"verification","enum":["verification","magicsession","recovery","invitation"],"x-enum-name":"EmailTemplateType","x-enum-keys":[],"in":"path"},{"name":"locale","description":"Template locale","required":true,"type":"string","x-example":"af","enum":["af","ar-ae","ar-bh","ar-dz","ar-eg","ar-iq","ar-jo","ar-kw","ar-lb","ar-ly","ar-ma","ar-om","ar-qa","ar-sa","ar-sy","ar-tn","ar-ye","as","az","be","bg","bh","bn","bs","ca","cs","cy","da","de","de-at","de-ch","de-li","de-lu","el","en","en-au","en-bz","en-ca","en-gb","en-ie","en-jm","en-nz","en-tt","en-us","en-za","eo","es","es-ar","es-bo","es-cl","es-co","es-cr","es-do","es-ec","es-gt","es-hn","es-mx","es-ni","es-pa","es-pe","es-pr","es-py","es-sv","es-uy","es-ve","et","eu","fa","fi","fo","fr","fr-be","fr-ca","fr-ch","fr-lu","ga","gd","he","hi","hr","hu","id","is","it","it-ch","ja","ji","ko","ku","lt","lv","mk","ml","ms","mt","nb","ne","nl","nl-be","nn","no","pa","pl","pt","pt-br","rm","ro","ro-md","ru","ru-md","sb","sk","sl","sq","sr","sv","sv-fi","th","tn","tr","ts","ua","ur","ve","vi","xh","zh-cn","zh-hk","zh-sg","zh-tw","zu"],"x-enum-name":"EmailTemplateLocale","x-enum-keys":[],"in":"path"}]},"patch":{"summary":"Update custom email templates","operationId":"projectsUpdateEmailTemplate","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateEmailTemplate","weight":178,"cookies":false,"type":"","demo":"projects\/update-email-template.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"type","description":"Template type","required":true,"type":"string","x-example":"verification","enum":["verification","magicsession","recovery","invitation"],"x-enum-name":"EmailTemplateType","x-enum-keys":[],"in":"path"},{"name":"locale","description":"Template locale","required":true,"type":"string","x-example":"af","enum":["af","ar-ae","ar-bh","ar-dz","ar-eg","ar-iq","ar-jo","ar-kw","ar-lb","ar-ly","ar-ma","ar-om","ar-qa","ar-sa","ar-sy","ar-tn","ar-ye","as","az","be","bg","bh","bn","bs","ca","cs","cy","da","de","de-at","de-ch","de-li","de-lu","el","en","en-au","en-bz","en-ca","en-gb","en-ie","en-jm","en-nz","en-tt","en-us","en-za","eo","es","es-ar","es-bo","es-cl","es-co","es-cr","es-do","es-ec","es-gt","es-hn","es-mx","es-ni","es-pa","es-pe","es-pr","es-py","es-sv","es-uy","es-ve","et","eu","fa","fi","fo","fr","fr-be","fr-ca","fr-ch","fr-lu","ga","gd","he","hi","hr","hu","id","is","it","it-ch","ja","ji","ko","ku","lt","lv","mk","ml","ms","mt","nb","ne","nl","nl-be","nn","no","pa","pl","pt","pt-br","rm","ro","ro-md","ru","ru-md","sb","sk","sl","sq","sr","sv","sv-fi","th","tn","tr","ts","ua","ur","ve","vi","xh","zh-cn","zh-hk","zh-sg","zh-tw","zu"],"x-enum-name":"EmailTemplateLocale","x-enum-keys":[],"in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"subject":{"type":"string","description":"Email Subject","default":null,"x-example":"[SUBJECT]"},"message":{"type":"string","description":"Template message","default":null,"x-example":"[MESSAGE]"},"senderName":{"type":"string","description":"Name of the email sender","default":"","x-example":"[SENDER_NAME]"},"senderEmail":{"type":"string","description":"Email of the sender","default":"","x-example":"email@example.com"},"replyTo":{"type":"string","description":"Reply to email","default":"","x-example":"email@example.com"}},"required":["subject","message"]}}]},"delete":{"summary":"Reset custom email template","operationId":"projectsDeleteEmailTemplate","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"EmailTemplate","schema":{"$ref":"#\/definitions\/emailTemplate"}}},"x-appwrite":{"method":"deleteEmailTemplate","weight":180,"cookies":false,"type":"","demo":"projects\/delete-email-template.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"type","description":"Template type","required":true,"type":"string","x-example":"verification","enum":["verification","magicsession","recovery","invitation"],"x-enum-name":"EmailTemplateType","x-enum-keys":[],"in":"path"},{"name":"locale","description":"Template locale","required":true,"type":"string","x-example":"af","enum":["af","ar-ae","ar-bh","ar-dz","ar-eg","ar-iq","ar-jo","ar-kw","ar-lb","ar-ly","ar-ma","ar-om","ar-qa","ar-sa","ar-sy","ar-tn","ar-ye","as","az","be","bg","bh","bn","bs","ca","cs","cy","da","de","de-at","de-ch","de-li","de-lu","el","en","en-au","en-bz","en-ca","en-gb","en-ie","en-jm","en-nz","en-tt","en-us","en-za","eo","es","es-ar","es-bo","es-cl","es-co","es-cr","es-do","es-ec","es-gt","es-hn","es-mx","es-ni","es-pa","es-pe","es-pr","es-py","es-sv","es-uy","es-ve","et","eu","fa","fi","fo","fr","fr-be","fr-ca","fr-ch","fr-lu","ga","gd","he","hi","hr","hu","id","is","it","it-ch","ja","ji","ko","ku","lt","lv","mk","ml","ms","mt","nb","ne","nl","nl-be","nn","no","pa","pl","pt","pt-br","rm","ro","ro-md","ru","ru-md","sb","sk","sl","sq","sr","sv","sv-fi","th","tn","tr","ts","ua","ur","ve","vi","xh","zh-cn","zh-hk","zh-sg","zh-tw","zu"],"x-enum-name":"EmailTemplateLocale","x-enum-keys":[],"in":"path"}]}},"\/projects\/{projectId}\/templates\/sms\/{type}\/{locale}":{"get":{"summary":"Get custom SMS template","operationId":"projectsGetSmsTemplate","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"SmsTemplate","schema":{"$ref":"#\/definitions\/smsTemplate"}}},"x-appwrite":{"method":"getSmsTemplate","weight":175,"cookies":false,"type":"","demo":"projects\/get-sms-template.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"type","description":"Template type","required":true,"type":"string","x-example":"verification","enum":["verification","login","invitation"],"x-enum-name":"SMSTemplateType","x-enum-keys":[],"in":"path"},{"name":"locale","description":"Template locale","required":true,"type":"string","x-example":"af","enum":["af","ar-ae","ar-bh","ar-dz","ar-eg","ar-iq","ar-jo","ar-kw","ar-lb","ar-ly","ar-ma","ar-om","ar-qa","ar-sa","ar-sy","ar-tn","ar-ye","as","az","be","bg","bh","bn","bs","ca","cs","cy","da","de","de-at","de-ch","de-li","de-lu","el","en","en-au","en-bz","en-ca","en-gb","en-ie","en-jm","en-nz","en-tt","en-us","en-za","eo","es","es-ar","es-bo","es-cl","es-co","es-cr","es-do","es-ec","es-gt","es-hn","es-mx","es-ni","es-pa","es-pe","es-pr","es-py","es-sv","es-uy","es-ve","et","eu","fa","fi","fo","fr","fr-be","fr-ca","fr-ch","fr-lu","ga","gd","he","hi","hr","hu","id","is","it","it-ch","ja","ji","ko","ku","lt","lv","mk","ml","ms","mt","nb","ne","nl","nl-be","nn","no","pa","pl","pt","pt-br","rm","ro","ro-md","ru","ru-md","sb","sk","sl","sq","sr","sv","sv-fi","th","tn","tr","ts","ua","ur","ve","vi","xh","zh-cn","zh-hk","zh-sg","zh-tw","zu"],"x-enum-name":"SMSTemplateLocale","x-enum-keys":[],"in":"path"}]},"patch":{"summary":"Update custom SMS template","operationId":"projectsUpdateSmsTemplate","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"SmsTemplate","schema":{"$ref":"#\/definitions\/smsTemplate"}}},"x-appwrite":{"method":"updateSmsTemplate","weight":177,"cookies":false,"type":"","demo":"projects\/update-sms-template.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"type","description":"Template type","required":true,"type":"string","x-example":"verification","enum":["verification","login","invitation"],"x-enum-name":"SMSTemplateType","x-enum-keys":[],"in":"path"},{"name":"locale","description":"Template locale","required":true,"type":"string","x-example":"af","enum":["af","ar-ae","ar-bh","ar-dz","ar-eg","ar-iq","ar-jo","ar-kw","ar-lb","ar-ly","ar-ma","ar-om","ar-qa","ar-sa","ar-sy","ar-tn","ar-ye","as","az","be","bg","bh","bn","bs","ca","cs","cy","da","de","de-at","de-ch","de-li","de-lu","el","en","en-au","en-bz","en-ca","en-gb","en-ie","en-jm","en-nz","en-tt","en-us","en-za","eo","es","es-ar","es-bo","es-cl","es-co","es-cr","es-do","es-ec","es-gt","es-hn","es-mx","es-ni","es-pa","es-pe","es-pr","es-py","es-sv","es-uy","es-ve","et","eu","fa","fi","fo","fr","fr-be","fr-ca","fr-ch","fr-lu","ga","gd","he","hi","hr","hu","id","is","it","it-ch","ja","ji","ko","ku","lt","lv","mk","ml","ms","mt","nb","ne","nl","nl-be","nn","no","pa","pl","pt","pt-br","rm","ro","ro-md","ru","ru-md","sb","sk","sl","sq","sr","sv","sv-fi","th","tn","tr","ts","ua","ur","ve","vi","xh","zh-cn","zh-hk","zh-sg","zh-tw","zu"],"x-enum-name":"SMSTemplateLocale","x-enum-keys":[],"in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"message":{"type":"string","description":"Template message","default":null,"x-example":"[MESSAGE]"}},"required":["message"]}}]},"delete":{"summary":"Reset custom SMS template","operationId":"projectsDeleteSmsTemplate","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"SmsTemplate","schema":{"$ref":"#\/definitions\/smsTemplate"}}},"x-appwrite":{"method":"deleteSmsTemplate","weight":179,"cookies":false,"type":"","demo":"projects\/delete-sms-template.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"type","description":"Template type","required":true,"type":"string","x-example":"verification","enum":["verification","login","invitation"],"x-enum-name":"SMSTemplateType","x-enum-keys":[],"in":"path"},{"name":"locale","description":"Template locale","required":true,"type":"string","x-example":"af","enum":["af","ar-ae","ar-bh","ar-dz","ar-eg","ar-iq","ar-jo","ar-kw","ar-lb","ar-ly","ar-ma","ar-om","ar-qa","ar-sa","ar-sy","ar-tn","ar-ye","as","az","be","bg","bh","bn","bs","ca","cs","cy","da","de","de-at","de-ch","de-li","de-lu","el","en","en-au","en-bz","en-ca","en-gb","en-ie","en-jm","en-nz","en-tt","en-us","en-za","eo","es","es-ar","es-bo","es-cl","es-co","es-cr","es-do","es-ec","es-gt","es-hn","es-mx","es-ni","es-pa","es-pe","es-pr","es-py","es-sv","es-uy","es-ve","et","eu","fa","fi","fo","fr","fr-be","fr-ca","fr-ch","fr-lu","ga","gd","he","hi","hr","hu","id","is","it","it-ch","ja","ji","ko","ku","lt","lv","mk","ml","ms","mt","nb","ne","nl","nl-be","nn","no","pa","pl","pt","pt-br","rm","ro","ro-md","ru","ru-md","sb","sk","sl","sq","sr","sv","sv-fi","th","tn","tr","ts","ua","ur","ve","vi","xh","zh-cn","zh-hk","zh-sg","zh-tw","zu"],"x-enum-name":"SMSTemplateLocale","x-enum-keys":[],"in":"path"}]}},"\/projects\/{projectId}\/webhooks":{"get":{"summary":"List webhooks","operationId":"projectsListWebhooks","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Webhooks List","schema":{"$ref":"#\/definitions\/webhookList"}}},"x-appwrite":{"method":"listWebhooks","weight":158,"cookies":false,"type":"","demo":"projects\/list-webhooks.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"}]},"post":{"summary":"Create webhook","operationId":"projectsCreateWebhook","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"201":{"description":"Webhook","schema":{"$ref":"#\/definitions\/webhook"}}},"x-appwrite":{"method":"createWebhook","weight":157,"cookies":false,"type":"","demo":"projects\/create-webhook.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Webhook name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Enable or disable a webhook.","default":true,"x-example":false},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","default":null,"x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"Webhook URL.","default":null,"x-example":null},"security":{"type":"boolean","description":"Certificate verification, false for disabled or true for enabled.","default":null,"x-example":false},"httpUser":{"type":"string","description":"Webhook HTTP user. Max length: 256 chars.","default":"","x-example":"[HTTP_USER]"},"httpPass":{"type":"string","description":"Webhook HTTP password. Max length: 256 chars.","default":"","x-example":"[HTTP_PASS]"}},"required":["name","events","url","security"]}}]}},"\/projects\/{projectId}\/webhooks\/{webhookId}":{"get":{"summary":"Get webhook","operationId":"projectsGetWebhook","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Webhook","schema":{"$ref":"#\/definitions\/webhook"}}},"x-appwrite":{"method":"getWebhook","weight":159,"cookies":false,"type":"","demo":"projects\/get-webhook.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"webhookId","description":"Webhook unique ID.","required":true,"type":"string","x-example":"[WEBHOOK_ID]","in":"path"}]},"put":{"summary":"Update webhook","operationId":"projectsUpdateWebhook","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Webhook","schema":{"$ref":"#\/definitions\/webhook"}}},"x-appwrite":{"method":"updateWebhook","weight":160,"cookies":false,"type":"","demo":"projects\/update-webhook.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"webhookId","description":"Webhook unique ID.","required":true,"type":"string","x-example":"[WEBHOOK_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Webhook name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Enable or disable a webhook.","default":true,"x-example":false},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","default":null,"x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"Webhook URL.","default":null,"x-example":null},"security":{"type":"boolean","description":"Certificate verification, false for disabled or true for enabled.","default":null,"x-example":false},"httpUser":{"type":"string","description":"Webhook HTTP user. Max length: 256 chars.","default":"","x-example":"[HTTP_USER]"},"httpPass":{"type":"string","description":"Webhook HTTP password. Max length: 256 chars.","default":"","x-example":"[HTTP_PASS]"}},"required":["name","events","url","security"]}}]},"delete":{"summary":"Delete webhook","operationId":"projectsDeleteWebhook","consumes":["application\/json"],"produces":[],"tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteWebhook","weight":162,"cookies":false,"type":"","demo":"projects\/delete-webhook.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"webhookId","description":"Webhook unique ID.","required":true,"type":"string","x-example":"[WEBHOOK_ID]","in":"path"}]}},"\/projects\/{projectId}\/webhooks\/{webhookId}\/signature":{"patch":{"summary":"Update webhook signature key","operationId":"projectsUpdateWebhookSignature","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Webhook","schema":{"$ref":"#\/definitions\/webhook"}}},"x-appwrite":{"method":"updateWebhookSignature","weight":161,"cookies":false,"type":"","demo":"projects\/update-webhook-signature.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"webhookId","description":"Webhook unique ID.","required":true,"type":"string","x-example":"[WEBHOOK_ID]","in":"path"}]}},"\/proxy\/rules":{"get":{"summary":"List Rules","operationId":"proxyListRules","consumes":["application\/json"],"produces":["application\/json"],"tags":["proxy"],"description":"Get a list of all the proxy rules. You can use the query params to filter your results.","responses":{"200":{"description":"Rule List","schema":{"$ref":"#\/definitions\/proxyRuleList"}}},"x-appwrite":{"method":"listRules","weight":291,"cookies":false,"type":"","demo":"proxy\/list-rules.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/proxy\/list-rules.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"rules.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: domain, resourceType, resourceId, url","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Rule","operationId":"proxyCreateRule","consumes":["application\/json"],"produces":["application\/json"],"tags":["proxy"],"description":"Create a new proxy rule.","responses":{"201":{"description":"Rule","schema":{"$ref":"#\/definitions\/proxyRule"}}},"x-appwrite":{"method":"createRule","weight":290,"cookies":false,"type":"","demo":"proxy\/create-rule.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/proxy\/create-rule.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"rules.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"domain":{"type":"string","description":"Domain name.","default":null,"x-example":null},"resourceType":{"type":"string","description":"Action definition for the rule. Possible values are \"api\", \"function\"","default":null,"x-example":"api","enum":["api","function"],"x-enum-name":null,"x-enum-keys":[]},"resourceId":{"type":"string","description":"ID of resource for the action type. If resourceType is \"api\", leave empty. If resourceType is \"function\", provide ID of the function.","default":"","x-example":"[RESOURCE_ID]"}},"required":["domain","resourceType"]}}]}},"\/proxy\/rules\/{ruleId}":{"get":{"summary":"Get Rule","operationId":"proxyGetRule","consumes":["application\/json"],"produces":["application\/json"],"tags":["proxy"],"description":"Get a proxy rule by its unique ID.","responses":{"200":{"description":"Rule","schema":{"$ref":"#\/definitions\/proxyRule"}}},"x-appwrite":{"method":"getRule","weight":292,"cookies":false,"type":"","demo":"proxy\/get-rule.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/proxy\/get-rule.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"rules.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"ruleId","description":"Rule ID.","required":true,"type":"string","x-example":"[RULE_ID]","in":"path"}]},"delete":{"summary":"Delete Rule","operationId":"proxyDeleteRule","consumes":["application\/json"],"produces":[],"tags":["proxy"],"description":"Delete a proxy rule by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteRule","weight":293,"cookies":false,"type":"","demo":"proxy\/delete-rule.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/proxy\/delete-rule.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"rules.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"ruleId","description":"Rule ID.","required":true,"type":"string","x-example":"[RULE_ID]","in":"path"}]}},"\/proxy\/rules\/{ruleId}\/verification":{"patch":{"summary":"Update Rule Verification Status","operationId":"proxyUpdateRuleVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["proxy"],"description":"","responses":{"200":{"description":"Rule","schema":{"$ref":"#\/definitions\/proxyRule"}}},"x-appwrite":{"method":"updateRuleVerification","weight":294,"cookies":false,"type":"","demo":"proxy\/update-rule-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"rules.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"ruleId","description":"Rule ID.","required":true,"type":"string","x-example":"[RULE_ID]","in":"path"}]}},"\/storage\/buckets":{"get":{"summary":"List buckets","operationId":"storageListBuckets","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a list of all the storage buckets. You can use the query params to filter your results.","responses":{"200":{"description":"Buckets List","schema":{"$ref":"#\/definitions\/bucketList"}}},"x-appwrite":{"method":"listBuckets","weight":188,"cookies":false,"type":"","demo":"storage\/list-buckets.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/list-buckets.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: enabled, name, fileSecurity, maximumFileSize, encryption, antivirus","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create bucket","operationId":"storageCreateBucket","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Create a new storage bucket.","responses":{"201":{"description":"Bucket","schema":{"$ref":"#\/definitions\/bucket"}}},"x-appwrite":{"method":"createBucket","weight":187,"cookies":false,"type":"","demo":"storage\/create-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"bucketId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, no user is granted with any permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":false,"x-example":false},"enabled":{"type":"boolean","description":"Is bucket enabled? When set to 'disabled', users cannot access the files in this bucket but Server SDKs with and API key can still access the bucket. No files are lost when this is toggled.","default":true,"x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB.","default":30000000,"x-example":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","default":[],"x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","default":"none","x-example":"none","enum":["none","gzip","zstd"],"x-enum-name":null,"x-enum-keys":[]},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","default":true,"x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","default":true,"x-example":false}},"required":["bucketId","name"]}}]}},"\/storage\/buckets\/{bucketId}":{"get":{"summary":"Get bucket","operationId":"storageGetBucket","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a storage bucket by its unique ID. This endpoint response returns a JSON object with the storage bucket metadata.","responses":{"200":{"description":"Bucket","schema":{"$ref":"#\/definitions\/bucket"}}},"x-appwrite":{"method":"getBucket","weight":189,"cookies":false,"type":"","demo":"storage\/get-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"bucketId","description":"Bucket unique ID.","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"}]},"put":{"summary":"Update bucket","operationId":"storageUpdateBucket","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Update a storage bucket by its unique ID.","responses":{"200":{"description":"Bucket","schema":{"$ref":"#\/definitions\/bucket"}}},"x-appwrite":{"method":"updateBucket","weight":190,"cookies":false,"type":"","demo":"storage\/update-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"bucketId","description":"Bucket unique ID.","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Bucket name","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":false,"x-example":false},"enabled":{"type":"boolean","description":"Is bucket enabled? When set to 'disabled', users cannot access the files in this bucket but Server SDKs with and API key can still access the bucket. No files are lost when this is toggled.","default":true,"x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB.","default":null,"x-example":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","default":[],"x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","default":"none","x-example":"none","enum":["none","gzip","zstd"],"x-enum-name":null,"x-enum-keys":[]},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","default":true,"x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","default":true,"x-example":false}},"required":["name"]}}]},"delete":{"summary":"Delete bucket","operationId":"storageDeleteBucket","consumes":["application\/json"],"produces":[],"tags":["storage"],"description":"Delete a storage bucket by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteBucket","weight":191,"cookies":false,"type":"","demo":"storage\/delete-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"bucketId","description":"Bucket unique ID.","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files":{"get":{"summary":"List files","operationId":"storageListFiles","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a list of all the user files. You can use the query params to filter your results.","responses":{"200":{"description":"Files List","schema":{"$ref":"#\/definitions\/fileList"}}},"x-appwrite":{"method":"listFiles","weight":193,"cookies":false,"type":"","demo":"storage\/list-files.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/list-files.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create file","operationId":"storageCreateFile","consumes":["multipart\/form-data"],"produces":["application\/json"],"tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"createFile","weight":192,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","required":true,"x-upload-id":true,"type":"string","x-example":"[FILE_ID]","in":"formData"},{"name":"file","description":"Binary file. Appwrite SDKs provide helpers to handle file input. [Learn about file input](https:\/\/appwrite.io\/docs\/storage#file-input).","required":true,"type":"file","in":"formData"},{"name":"permissions","description":"An array of permission strings. By default, only the current user is granted all permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"x-example":"[\"read(\"any\")\"]","in":"formData"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get file","operationId":"storageGetFile","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"getFile","weight":194,"cookies":false,"type":"","demo":"storage\/get-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID.","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"}]},"put":{"summary":"Update file","operationId":"storageUpdateFile","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Update a file by its unique ID. Only users with write permissions have access to update this resource.","responses":{"200":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"updateFile","weight":198,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File unique ID.","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Name of the file","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission string. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","consumes":["application\/json"],"produces":[],"tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":199,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID.","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/download":{"get":{"summary":"Get file for download","operationId":"storageGetFileDownload","consumes":["application\/json"],"produces":["*\/*"],"tags":["storage"],"description":"Get a file content by its unique ID. The endpoint response return with a 'Content-Disposition: attachment' header that tells the browser to start downloading the file to user downloads directory.","responses":{"200":{"description":"File","schema":{"type":"file"}}},"x-appwrite":{"method":"getFileDownload","weight":196,"cookies":false,"type":"location","demo":"storage\/get-file-download.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-download.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID.","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/preview":{"get":{"summary":"Get file preview","operationId":"storageGetFilePreview","consumes":["application\/json"],"produces":["image\/*"],"tags":["storage"],"description":"Get a file preview image. Currently, this method supports preview for image files (jpg, png, and gif), other supported formats, like pdf, docs, slides, and spreadsheets, will return the file icon image. You can also pass query string arguments for cutting and resizing your preview image. Preview is supported only for image files smaller than 10MB.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFilePreview","weight":195,"cookies":false,"type":"location","demo":"storage\/get-file-preview.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-preview.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"},{"name":"width","description":"Resize preview image width, Pass an integer between 0 to 4000.","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 4000.","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"gravity","description":"Image crop gravity. Can be one of center,top-left,top,top-right,left,right,bottom-left,bottom,bottom-right","required":false,"type":"string","x-example":"center","enum":["center","top-left","top","top-right","left","right","bottom-left","bottom","bottom-right"],"x-enum-name":"ImageGravity","x-enum-keys":[],"default":"center","in":"query"},{"name":"quality","description":"Preview image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"borderWidth","description":"Preview image border in pixels. Pass an integer between 0 to 100. Defaults to 0.","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"borderColor","description":"Preview image border color. Use a valid HEX color, no # is needed for prefix.","required":false,"type":"string","default":"","in":"query"},{"name":"borderRadius","description":"Preview image border radius in pixels. Pass an integer between 0 to 4000.","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"opacity","description":"Preview image opacity. Only works with images having an alpha channel (like png). Pass a number between 0 to 1.","required":false,"type":"number","format":"float","x-example":0,"default":1,"in":"query"},{"name":"rotation","description":"Preview image rotation in degrees. Pass an integer between -360 and 360.","required":false,"type":"integer","format":"int32","x-example":-360,"default":0,"in":"query"},{"name":"background","description":"Preview image background color. Only works with transparent images (png). Use a valid HEX color, no # is needed for prefix.","required":false,"type":"string","default":"","in":"query"},{"name":"output","description":"Output format type (jpeg, jpg, png, gif and webp).","required":false,"type":"string","x-example":"jpg","enum":["jpg","jpeg","gif","png","webp"],"x-enum-name":"ImageFormat","x-enum-keys":[],"default":"","in":"query"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/view":{"get":{"summary":"Get file for view","operationId":"storageGetFileView","consumes":["application\/json"],"produces":["*\/*"],"tags":["storage"],"description":"Get a file content by its unique ID. This endpoint is similar to the download method but returns with no 'Content-Disposition: attachment' header.","responses":{"200":{"description":"File","schema":{"type":"file"}}},"x-appwrite":{"method":"getFileView","weight":197,"cookies":false,"type":"location","demo":"storage\/get-file-view.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-view.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID.","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"}]}},"\/storage\/usage":{"get":{"summary":"Get usage stats for storage","operationId":"storageGetUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"","responses":{"200":{"description":"StorageUsage","schema":{"$ref":"#\/definitions\/usageStorage"}}},"x-appwrite":{"method":"getUsage","weight":200,"cookies":false,"type":"","demo":"storage\/get-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","enum":["24h","30d","90d"],"x-enum-name":"StorageUsageRange","x-enum-keys":["Twenty Four Hours","Thirty Days","Ninety Days"],"default":"30d","in":"query"}]}},"\/storage\/{bucketId}\/usage":{"get":{"summary":"Get usage stats for storage bucket","operationId":"storageGetBucketUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"","responses":{"200":{"description":"UsageBuckets","schema":{"$ref":"#\/definitions\/usageBuckets"}}},"x-appwrite":{"method":"getBucketUsage","weight":201,"cookies":false,"type":"","demo":"storage\/get-bucket-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"bucketId","description":"Bucket ID.","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","enum":["24h","30d","90d"],"x-enum-name":"StorageUsageRange","x-enum-keys":["Twenty Four Hours","Thirty Days","Ninety Days"],"default":"30d","in":"query"}]}},"\/teams":{"get":{"summary":"List teams","operationId":"teamsList","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get a list of all the teams in which the current user is a member. You can use the parameters to filter your results.","responses":{"200":{"description":"Teams List","schema":{"$ref":"#\/definitions\/teamList"}}},"x-appwrite":{"method":"list","weight":203,"cookies":false,"type":"","demo":"teams\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-teams.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total, billingPlan","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create team","operationId":"teamsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"create","weight":202,"cookies":false,"type":"","demo":"teams\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/create-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"teamId":{"type":"string","description":"Team ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[TEAM_ID]"},"name":{"type":"string","description":"Team name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"roles":{"type":"array","description":"Array of strings. Use this param to set the roles in the team for the user who created it. The default role is **owner**. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","default":["owner"],"x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}]}},"\/teams\/{teamId}":{"get":{"summary":"Get team","operationId":"teamsGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"get","weight":204,"cookies":false,"type":"","demo":"teams\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams","offline-key":"{teamId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"}]},"put":{"summary":"Update name","operationId":"teamsUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Update the team's name by its unique ID.","responses":{"200":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"updateName","weight":206,"cookies":false,"type":"","demo":"teams\/update-name.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-name.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams","offline-key":"{teamId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"New team name. Max length: 128 chars.","default":null,"x-example":"[NAME]"}},"required":["name"]}}]},"delete":{"summary":"Delete team","operationId":"teamsDelete","consumes":["application\/json"],"produces":[],"tags":["teams"],"description":"Delete a team using its ID. Only team members with the owner role can delete the team.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":208,"cookies":false,"type":"","demo":"teams\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/delete-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"}]}},"\/teams\/{teamId}\/logs":{"get":{"summary":"List team logs","operationId":"teamsListLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get the team activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listLogs","weight":215,"cookies":false,"type":"","demo":"teams\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/teams\/{teamId}\/memberships":{"get":{"summary":"List team memberships","operationId":"teamsListMemberships","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"listMemberships","weight":210,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/memberships","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create team membership","operationId":"teamsCreateMembership","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Invite a new member to join your team. Provide an ID for existing users, or invite unregistered users using an email or phone number. If initiated from a Client SDK, Appwrite will send an email or sms with a link to join the team to the invited user, and an account will be created for them if one doesn't exist. If initiated from a Server SDK, the new member will be added automatically to the team.\n\nYou only need to provide one of a user ID, email, or phone number. Appwrite will prioritize accepting the user ID > email > phone number if you provide more than one of these parameters.\n\nUse the `url` parameter to redirect the user from the invitation email to your app. After the user is redirected, use the [Update Team Membership Status](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/teams#updateMembershipStatus) endpoint to allow the user to accept the invitation to the team. \n\nPlease note that to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) Appwrite will accept the only redirect URLs under the domains you have added as a platform on the Appwrite Console.\n","responses":{"201":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"createMembership","weight":209,"cookies":false,"type":"","demo":"teams\/create-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/create-team-membership.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"email":{"type":"string","description":"Email of the new team member.","default":"","x-example":"email@example.com"},"userId":{"type":"string","description":"ID of the user to be added to a team.","default":"","x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":"","x-example":"+12065550100"},"roles":{"type":"array","description":"Array of strings. Use this param to set the user roles in the team. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":"","x-example":"https:\/\/example.com"},"name":{"type":"string","description":"Name of the new team member. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["roles"]}}]}},"\/teams\/{teamId}\/memberships\/{membershipId}":{"get":{"summary":"Get team membership","operationId":"teamsGetMembership","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get a team member by the membership unique id. All team members have read access for this resource.","responses":{"200":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"getMembership","weight":211,"cookies":false,"type":"","demo":"teams\/get-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-member.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/memberships","offline-key":"{membershipId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"type":"string","x-example":"[MEMBERSHIP_ID]","in":"path"}]},"patch":{"summary":"Update membership","operationId":"teamsUpdateMembership","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Modify the roles of a team member. Only team members with the owner role have access to this endpoint. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions).\n","responses":{"200":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"updateMembership","weight":212,"cookies":false,"type":"","demo":"teams\/update-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"type":"string","x-example":"[MEMBERSHIP_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"roles":{"type":"array","description":"An array of strings. Use this param to set the user's roles in the team. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}}},"required":["roles"]}}]},"delete":{"summary":"Delete team membership","operationId":"teamsDeleteMembership","consumes":["application\/json"],"produces":[],"tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":214,"cookies":false,"type":"","demo":"teams\/delete-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/delete-team-membership.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"type":"string","x-example":"[MEMBERSHIP_ID]","in":"path"}]}},"\/teams\/{teamId}\/memberships\/{membershipId}\/status":{"patch":{"summary":"Update team membership status","operationId":"teamsUpdateMembershipStatus","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Use this endpoint to allow a user to accept an invitation to join a team after being redirected back to your app from the invitation email received by the user.\n\nIf the request is successful, a session for the user is automatically created.\n","responses":{"200":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"updateMembershipStatus","weight":213,"cookies":false,"type":"","demo":"teams\/update-membership-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"public","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"type":"string","x-example":"[MEMBERSHIP_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Secret key.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/teams\/{teamId}\/prefs":{"get":{"summary":"Get team preferences","operationId":"teamsGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get the team's shared preferences by its unique ID. If a preference doesn't need to be shared by all team members, prefer storing them in [user preferences](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#getPrefs).","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":205,"cookies":false,"type":"","demo":"teams\/get-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/prefs","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"}]},"put":{"summary":"Update preferences","operationId":"teamsUpdatePrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Update the team's preferences by its unique ID. The object you pass is stored as is and replaces any previous value. The maximum allowed prefs size is 64kB and throws an error if exceeded.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"updatePrefs","weight":207,"cookies":false,"type":"","demo":"teams\/update-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/prefs","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"prefs":{"type":"object","description":"Prefs key-value JSON object.","default":{},"x-example":"{}"}},"required":["prefs"]}}]}},"\/users":{"get":{"summary":"List users","operationId":"usersList","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get a list of all the project's users. You can use the query params to filter your results.","responses":{"200":{"description":"Users List","schema":{"$ref":"#\/definitions\/userList"}}},"x-appwrite":{"method":"list","weight":225,"cookies":false,"type":"","demo":"users\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-users.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, email, phone, status, passwordUpdate, registration, emailVerification, phoneVerification, labels","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create user","operationId":"usersCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"create","weight":216,"cookies":false,"type":"","demo":"users\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"},"password":{"type":"string","description":"Plain text user password. Must be at least 8 chars.","default":"","x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId"]}}]}},"\/users\/argon2":{"post":{"summary":"Create user with Argon2 password","operationId":"usersCreateArgon2User","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Argon2](https:\/\/en.wikipedia.org\/wiki\/Argon2) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createArgon2User","weight":219,"cookies":false,"type":"","demo":"users\/create-argon2user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-argon2-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Argon2.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/bcrypt":{"post":{"summary":"Create user with bcrypt password","operationId":"usersCreateBcryptUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Bcrypt](https:\/\/en.wikipedia.org\/wiki\/Bcrypt) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createBcryptUser","weight":217,"cookies":false,"type":"","demo":"users\/create-bcrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-bcrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Bcrypt.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/identities":{"get":{"summary":"List Identities","operationId":"usersListIdentities","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get identities for all users.","responses":{"200":{"description":"Identities List","schema":{"$ref":"#\/definitions\/identityList"}}},"x-appwrite":{"method":"listIdentities","weight":233,"cookies":false,"type":"","demo":"users\/list-identities.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-identities.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, provider, providerUid, providerEmail, providerAccessTokenExpiry","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]}},"\/users\/identities\/{identityId}":{"delete":{"summary":"Delete identity","operationId":"usersDeleteIdentity","consumes":["application\/json"],"produces":[],"tags":["users"],"description":"Delete an identity by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIdentity","weight":253,"cookies":false,"type":"","demo":"users\/delete-identity.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-identity.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"identityId","description":"Identity ID.","required":true,"type":"string","x-example":"[IDENTITY_ID]","in":"path"}]}},"\/users\/md5":{"post":{"summary":"Create user with MD5 password","operationId":"usersCreateMD5User","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [MD5](https:\/\/en.wikipedia.org\/wiki\/MD5) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createMD5User","weight":218,"cookies":false,"type":"","demo":"users\/create-m-d5user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-md5-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using MD5.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/phpass":{"post":{"summary":"Create user with PHPass password","operationId":"usersCreatePHPassUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [PHPass](https:\/\/www.openwall.com\/phpass\/) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createPHPassUser","weight":221,"cookies":false,"type":"","demo":"users\/create-p-h-pass-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-phpass-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or pass the string `ID.unique()`to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using PHPass.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/scrypt":{"post":{"summary":"Create user with Scrypt password","operationId":"usersCreateScryptUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt](https:\/\/github.com\/Tarsnap\/scrypt) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createScryptUser","weight":222,"cookies":false,"type":"","demo":"users\/create-scrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt.","default":null,"x-example":"password"},"passwordSalt":{"type":"string","description":"Optional salt used to hash password.","default":null,"x-example":"[PASSWORD_SALT]"},"passwordCpu":{"type":"integer","description":"Optional CPU cost used to hash password.","default":null,"x-example":null},"passwordMemory":{"type":"integer","description":"Optional memory cost used to hash password.","default":null,"x-example":null},"passwordParallel":{"type":"integer","description":"Optional parallelization cost used to hash password.","default":null,"x-example":null},"passwordLength":{"type":"integer","description":"Optional hash length used to hash password.","default":null,"x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordCpu","passwordMemory","passwordParallel","passwordLength"]}}]}},"\/users\/scrypt-modified":{"post":{"summary":"Create user with Scrypt modified password","operationId":"usersCreateScryptModifiedUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt Modified](https:\/\/gist.github.com\/Meldiron\/eecf84a0225eccb5a378d45bb27462cc) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createScryptModifiedUser","weight":223,"cookies":false,"type":"","demo":"users\/create-scrypt-modified-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-modified-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt Modified.","default":null,"x-example":"password"},"passwordSalt":{"type":"string","description":"Salt used to hash password.","default":null,"x-example":"[PASSWORD_SALT]"},"passwordSaltSeparator":{"type":"string","description":"Salt separator used to hash password.","default":null,"x-example":"[PASSWORD_SALT_SEPARATOR]"},"passwordSignerKey":{"type":"string","description":"Signer key used to hash password.","default":null,"x-example":"[PASSWORD_SIGNER_KEY]"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordSaltSeparator","passwordSignerKey"]}}]}},"\/users\/sha":{"post":{"summary":"Create user with SHA password","operationId":"usersCreateSHAUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [SHA](https:\/\/en.wikipedia.org\/wiki\/Secure_Hash_Algorithm) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createSHAUser","weight":220,"cookies":false,"type":"","demo":"users\/create-s-h-a-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-sha-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using SHA.","default":null,"x-example":"password"},"passwordVersion":{"type":"string","description":"Optional SHA version used to hash password. Allowed values are: 'sha1', 'sha224', 'sha256', 'sha384', 'sha512\/224', 'sha512\/256', 'sha512', 'sha3-224', 'sha3-256', 'sha3-384', 'sha3-512'","default":"","x-example":"sha1","enum":["sha1","sha224","sha256","sha384","sha512\/224","sha512\/256","sha512","sha3-224","sha3-256","sha3-384","sha3-512"],"x-enum-name":"PasswordHash","x-enum-keys":[]},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/usage":{"get":{"summary":"Get usage stats for the users API","operationId":"usersGetUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"","responses":{"200":{"description":"UsageUsers","schema":{"$ref":"#\/definitions\/usageUsers"}}},"x-appwrite":{"method":"getUsage","weight":254,"cookies":false,"type":"","demo":"users\/get-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","enum":["24h","30d","90d"],"x-enum-name":"UserUsageRange","x-enum-keys":["Twenty Four Hours","Thirty Days","Ninety Days"],"default":"30d","in":"query"}]}},"\/users\/{userId}":{"get":{"summary":"Get user","operationId":"usersGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get a user by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"get","weight":226,"cookies":false,"type":"","demo":"users\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]},"delete":{"summary":"Delete user","operationId":"usersDelete","consumes":["application\/json"],"produces":[],"tags":["users"],"description":"Delete a user by its unique ID, thereby releasing it's ID. Since ID is released and can be reused, all user-related resources like documents or storage files should be deleted before user deletion. If you want to keep ID reserved, use the [updateStatus](https:\/\/appwrite.io\/docs\/server\/users#usersUpdateStatus) endpoint instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":251,"cookies":false,"type":"","demo":"users\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]}},"\/users\/{userId}\/email":{"patch":{"summary":"Update email","operationId":"usersUpdateEmail","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user email by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateEmail","weight":239,"cookies":false,"type":"","demo":"users\/update-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"}},"required":["email"]}}]}},"\/users\/{userId}\/labels":{"put":{"summary":"Update user labels","operationId":"usersUpdateLabels","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user labels by its unique ID. \n\nLabels can be used to grant access to resources. While teams are a way for user's to share access to a resource, labels can be defined by the developer to grant access without an invitation. See the [Permissions docs](https:\/\/appwrite.io\/docs\/permissions) for more info.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateLabels","weight":235,"cookies":false,"type":"","demo":"users\/update-labels.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-labels.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"labels":{"type":"array","description":"Array of user labels. Replaces the previous labels. Maximum of 1000 labels are allowed, each up to 36 alphanumeric characters long.","default":null,"x-example":null,"items":{"type":"string"}}},"required":["labels"]}}]}},"\/users\/{userId}\/logs":{"get":{"summary":"List user logs","operationId":"usersListLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listLogs","weight":231,"cookies":false,"type":"","demo":"users\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/users\/{userId}\/memberships":{"get":{"summary":"List user memberships","operationId":"usersListMemberships","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user membership list by its unique ID.","responses":{"200":{"description":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"listMemberships","weight":230,"cookies":false,"type":"","demo":"users\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-memberships.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]}},"\/users\/{userId}\/mfa":{"patch":{"summary":"Update MFA","operationId":"usersUpdateMfa","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateMfa","weight":244,"cookies":false,"type":"","demo":"users\/update-mfa.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-mfa.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"mfa":{"type":"boolean","description":"Enable or disable MFA.","default":null,"x-example":false}},"required":["mfa"]}}]}},"\/users\/{userId}\/mfa\/factors":{"get":{"summary":"List Factors","operationId":"usersListFactors","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"","responses":{"200":{"description":"MFAFactors","schema":{"$ref":"#\/definitions\/mfaFactors"}}},"x-appwrite":{"method":"listFactors","weight":245,"cookies":false,"type":"","demo":"users\/list-factors.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-factors.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]}},"\/users\/{userId}\/mfa\/{type}":{"delete":{"summary":"Delete Authenticator","operationId":"usersDeleteAuthenticator","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"deleteAuthenticator","weight":246,"cookies":false,"type":"","demo":"users\/delete-authenticator.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-mfa.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"type","description":"Type of authenticator.","required":true,"type":"string","x-example":"totp","enum":["totp"],"x-enum-name":null,"x-enum-keys":[],"in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"otp":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[OTP]"}},"required":["otp"]}}]}},"\/users\/{userId}\/name":{"patch":{"summary":"Update name","operationId":"usersUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user name by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateName","weight":237,"cookies":false,"type":"","demo":"users\/update-name.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-name.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"User name. Max length: 128 chars.","default":null,"x-example":"[NAME]"}},"required":["name"]}}]}},"\/users\/{userId}\/password":{"patch":{"summary":"Update password","operationId":"usersUpdatePassword","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user password by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePassword","weight":238,"cookies":false,"type":"","demo":"users\/update-password.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-password.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"password":{"type":"string","description":"New user password. Must be at least 8 chars.","default":null,"x-example":null}},"required":["password"]}}]}},"\/users\/{userId}\/phone":{"patch":{"summary":"Update phone","operationId":"usersUpdatePhone","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user phone by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePhone","weight":240,"cookies":false,"type":"","demo":"users\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"number":{"type":"string","description":"User phone number.","default":null,"x-example":"+12065550100"}},"required":["number"]}}]}},"\/users\/{userId}\/prefs":{"get":{"summary":"Get user preferences","operationId":"usersGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user preferences by its unique ID.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":227,"cookies":false,"type":"","demo":"users\/get-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]},"patch":{"summary":"Update user preferences","operationId":"usersUpdatePrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user preferences by its unique ID. The object you pass is stored as is, and replaces any previous value. The maximum allowed prefs size is 64kB and throws error if exceeded.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"updatePrefs","weight":242,"cookies":false,"type":"","demo":"users\/update-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"prefs":{"type":"object","description":"Prefs key-value JSON object.","default":{},"x-example":"{}"}},"required":["prefs"]}}]}},"\/users\/{userId}\/sessions":{"get":{"summary":"List user sessions","operationId":"usersListSessions","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user sessions list by its unique ID.","responses":{"200":{"description":"Sessions List","schema":{"$ref":"#\/definitions\/sessionList"}}},"x-appwrite":{"method":"listSessions","weight":229,"cookies":false,"type":"","demo":"users\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]},"post":{"summary":"Create session","operationId":"usersCreateSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Creates a session for a user. Returns an immediately usable session object.\n\nIf you want to generate a token for a custom authentication flow, use the [POST \/users\/{userId}\/tokens](https:\/\/appwrite.io\/docs\/server\/users#createToken) endpoint.","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"createSession","weight":247,"cookies":false,"type":"","demo":"users\/create-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-session.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]},"delete":{"summary":"Delete user sessions","operationId":"usersDeleteSessions","consumes":["application\/json"],"produces":[],"tags":["users"],"description":"Delete all user's sessions by using the user's unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":250,"cookies":false,"type":"","demo":"users\/delete-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]}},"\/users\/{userId}\/sessions\/{sessionId}":{"delete":{"summary":"Delete user session","operationId":"usersDeleteSession","consumes":["application\/json"],"produces":[],"tags":["users"],"description":"Delete a user sessions by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSession","weight":249,"cookies":false,"type":"","demo":"users\/delete-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-user-session.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"sessionId","description":"Session ID.","required":true,"type":"string","x-example":"[SESSION_ID]","in":"path"}]}},"\/users\/{userId}\/status":{"patch":{"summary":"Update user status","operationId":"usersUpdateStatus","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user status by its unique ID. Use this endpoint as an alternative to deleting a user if you want to keep user's ID reserved.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateStatus","weight":234,"cookies":false,"type":"","demo":"users\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"status":{"type":"boolean","description":"User Status. To activate the user pass `true` and to block the user pass `false`.","default":null,"x-example":false}},"required":["status"]}}]}},"\/users\/{userId}\/targets":{"get":{"summary":"List User Targets","operationId":"usersListTargets","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"","responses":{"200":{"description":"Target list","schema":{"$ref":"#\/definitions\/targetList"}}},"x-appwrite":{"method":"listTargets","weight":232,"cookies":false,"type":"","demo":"users\/list-targets.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-targets.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.read","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, email, phone, status, passwordUpdate, registration, emailVerification, phoneVerification, labels","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"post":{"summary":"Create User Target","operationId":"usersCreateTarget","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"","responses":{"201":{"description":"Target","schema":{"$ref":"#\/definitions\/target"}}},"x-appwrite":{"method":"createTarget","weight":224,"cookies":false,"type":"","demo":"users\/create-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-target.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"targetId":{"type":"string","description":"Target ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[TARGET_ID]"},"providerType":{"type":"string","description":"The target provider type. Can be one of the following: `email`, `sms` or `push`.","default":null,"x-example":"email","enum":["email","sms","push"],"x-enum-name":"MessagingProviderType","x-enum-keys":[]},"identifier":{"type":"string","description":"The target identifier (token, email, phone etc.)","default":null,"x-example":"[IDENTIFIER]"},"providerId":{"type":"string","description":"Provider ID. Message will be sent to this target from the specified provider ID. If no provider ID is set the first setup provider will be used.","default":"","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Target name. Max length: 128 chars. For example: My Awesome App Galaxy S23.","default":"","x-example":"[NAME]"}},"required":["targetId","providerType","identifier"]}}]}},"\/users\/{userId}\/targets\/{targetId}":{"get":{"summary":"Get User Target","operationId":"usersGetTarget","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"","responses":{"200":{"description":"Target","schema":{"$ref":"#\/definitions\/target"}}},"x-appwrite":{"method":"getTarget","weight":228,"cookies":false,"type":"","demo":"users\/get-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-target.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.read","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"targetId","description":"Target ID.","required":true,"type":"string","x-example":"[TARGET_ID]","in":"path"}]},"patch":{"summary":"Update User target","operationId":"usersUpdateTarget","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"","responses":{"200":{"description":"Target","schema":{"$ref":"#\/definitions\/target"}}},"x-appwrite":{"method":"updateTarget","weight":243,"cookies":false,"type":"","demo":"users\/update-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-target.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"targetId","description":"Target ID.","required":true,"type":"string","x-example":"[TARGET_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"identifier":{"type":"string","description":"The target identifier (token, email, phone etc.)","default":"","x-example":"[IDENTIFIER]"},"providerId":{"type":"string","description":"Provider ID. Message will be sent to this target from the specified provider ID. If no provider ID is set the first setup provider will be used.","default":"","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Target name. Max length: 128 chars. For example: My Awesome App Galaxy S23.","default":"","x-example":"[NAME]"}}}}]},"delete":{"summary":"Delete user target","operationId":"usersDeleteTarget","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteTarget","weight":252,"cookies":false,"type":"","demo":"users\/delete-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-target.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"targetId","description":"Target ID.","required":true,"type":"string","x-example":"[TARGET_ID]","in":"path"}]}},"\/users\/{userId}\/tokens":{"post":{"summary":"Create token","operationId":"usersCreateToken","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Returns a token with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [PUT \/account\/sessions\/custom](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateCustomSession) endpoint to complete the login process.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createToken","weight":248,"cookies":false,"type":"","demo":"users\/create-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-token.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"length":{"type":"integer","description":"Token length in characters. The default length is 6 characters","default":6,"x-example":4},"expire":{"type":"integer","description":"Token expiration period in seconds. The default expiration is 15 minutes.","default":900,"x-example":60}}}}]}},"\/users\/{userId}\/verification":{"patch":{"summary":"Update email verification","operationId":"usersUpdateEmailVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user email verification status by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateEmailVerification","weight":241,"cookies":false,"type":"","demo":"users\/update-email-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-email-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"emailVerification":{"type":"boolean","description":"User email verification status.","default":null,"x-example":false}},"required":["emailVerification"]}}]}},"\/users\/{userId}\/verification\/phone":{"patch":{"summary":"Update phone verification","operationId":"usersUpdatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user phone verification status by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePhoneVerification","weight":236,"cookies":false,"type":"","demo":"users\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"phoneVerification":{"type":"boolean","description":"User phone verification status.","default":null,"x-example":false}},"required":["phoneVerification"]}}]}},"\/vcs\/github\/installations\/{installationId}\/providerRepositories":{"get":{"summary":"List Repositories","operationId":"vcsListRepositories","consumes":["application\/json"],"produces":["application\/json"],"tags":["vcs"],"description":"","responses":{"200":{"description":"Provider Repositories List","schema":{"$ref":"#\/definitions\/providerRepositoryList"}}},"x-appwrite":{"method":"listRepositories","weight":258,"cookies":false,"type":"","demo":"vcs\/list-repositories.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"type":"string","x-example":"[INSTALLATION_ID]","in":"path"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create repository","operationId":"vcsCreateRepository","consumes":["application\/json"],"produces":["application\/json"],"tags":["vcs"],"description":"","responses":{"200":{"description":"ProviderRepository","schema":{"$ref":"#\/definitions\/providerRepository"}}},"x-appwrite":{"method":"createRepository","weight":259,"cookies":false,"type":"","demo":"vcs\/create-repository.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"type":"string","x-example":"[INSTALLATION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Repository name (slug)","default":null,"x-example":"[NAME]"},"private":{"type":"boolean","description":"Mark repository public or private","default":null,"x-example":false}},"required":["name","private"]}}]}},"\/vcs\/github\/installations\/{installationId}\/providerRepositories\/{providerRepositoryId}":{"get":{"summary":"Get repository","operationId":"vcsGetRepository","consumes":["application\/json"],"produces":["application\/json"],"tags":["vcs"],"description":"","responses":{"200":{"description":"ProviderRepository","schema":{"$ref":"#\/definitions\/providerRepository"}}},"x-appwrite":{"method":"getRepository","weight":260,"cookies":false,"type":"","demo":"vcs\/get-repository.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"type":"string","x-example":"[INSTALLATION_ID]","in":"path"},{"name":"providerRepositoryId","description":"Repository Id","required":true,"type":"string","x-example":"[PROVIDER_REPOSITORY_ID]","in":"path"}]}},"\/vcs\/github\/installations\/{installationId}\/providerRepositories\/{providerRepositoryId}\/branches":{"get":{"summary":"List Repository Branches","operationId":"vcsListRepositoryBranches","consumes":["application\/json"],"produces":["application\/json"],"tags":["vcs"],"description":"","responses":{"200":{"description":"Branches List","schema":{"$ref":"#\/definitions\/branchList"}}},"x-appwrite":{"method":"listRepositoryBranches","weight":261,"cookies":false,"type":"","demo":"vcs\/list-repository-branches.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"type":"string","x-example":"[INSTALLATION_ID]","in":"path"},{"name":"providerRepositoryId","description":"Repository Id","required":true,"type":"string","x-example":"[PROVIDER_REPOSITORY_ID]","in":"path"}]}},"\/vcs\/github\/installations\/{installationId}\/providerRepositories\/{providerRepositoryId}\/detection":{"post":{"summary":"Detect runtime settings from source code","operationId":"vcsCreateRepositoryDetection","consumes":["application\/json"],"produces":["application\/json"],"tags":["vcs"],"description":"","responses":{"200":{"description":"Detection","schema":{"$ref":"#\/definitions\/detection"}}},"x-appwrite":{"method":"createRepositoryDetection","weight":257,"cookies":false,"type":"","demo":"vcs\/create-repository-detection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"type":"string","x-example":"[INSTALLATION_ID]","in":"path"},{"name":"providerRepositoryId","description":"Repository Id","required":true,"type":"string","x-example":"[PROVIDER_REPOSITORY_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerRootDirectory":{"type":"string","description":"Path to Root Directory","default":"","x-example":"[PROVIDER_ROOT_DIRECTORY]"}}}}]}},"\/vcs\/github\/installations\/{installationId}\/repositories\/{repositoryId}":{"patch":{"summary":"Authorize external deployment","operationId":"vcsUpdateExternalDeployments","consumes":["application\/json"],"produces":[],"tags":["vcs"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"updateExternalDeployments","weight":266,"cookies":false,"type":"","demo":"vcs\/update-external-deployments.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"type":"string","x-example":"[INSTALLATION_ID]","in":"path"},{"name":"repositoryId","description":"VCS Repository Id","required":true,"type":"string","x-example":"[REPOSITORY_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerPullRequestId":{"type":"string","description":"GitHub Pull Request Id","default":null,"x-example":"[PROVIDER_PULL_REQUEST_ID]"}},"required":["providerPullRequestId"]}}]}},"\/vcs\/installations":{"get":{"summary":"List installations","operationId":"vcsListInstallations","consumes":["application\/json"],"produces":["application\/json"],"tags":["vcs"],"description":"","responses":{"200":{"description":"Installations List","schema":{"$ref":"#\/definitions\/installationList"}}},"x-appwrite":{"method":"listInstallations","weight":263,"cookies":false,"type":"","demo":"vcs\/list-installations.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/vcs\/list-installations.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: provider, organization","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]}},"\/vcs\/installations\/{installationId}":{"get":{"summary":"Get installation","operationId":"vcsGetInstallation","consumes":["application\/json"],"produces":["application\/json"],"tags":["vcs"],"description":"","responses":{"200":{"description":"Installation","schema":{"$ref":"#\/definitions\/installation"}}},"x-appwrite":{"method":"getInstallation","weight":264,"cookies":false,"type":"","demo":"vcs\/get-installation.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/vcs\/get-installation.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"type":"string","x-example":"[INSTALLATION_ID]","in":"path"}]},"delete":{"summary":"Delete Installation","operationId":"vcsDeleteInstallation","consumes":["application\/json"],"produces":[],"tags":["vcs"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteInstallation","weight":265,"cookies":false,"type":"","demo":"vcs\/delete-installation.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/vcs\/delete-installation.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"type":"string","x-example":"[INSTALLATION_ID]","in":"path"}]}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"project","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]},{"name":"proxy","description":"The Proxy Service allows you to configure actions for your domains beyond DNS configuration.","x-globalAttributes":[]},{"name":"graphql","description":"The GraphQL API allows you to query and mutate your Appwrite server using GraphQL.","x-globalAttributes":[]},{"name":"console","description":"The Console service allows you to interact with console relevant informations.","x-globalAttributes":[]},{"name":"migrations","description":"The Migrations service allows you to migrate third-party data to your Appwrite project.","x-globalAttributes":[]},{"name":"messaging","description":"The Messaging service allows you to send messages to any provider type (SMTP, push notification, SMS, etc.).","x-globalAttributes":[]}],"definitions":{"any":{"description":"Any","type":"object","additionalProperties":true},"documentList":{"description":"Documents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of documents documents that matched your query.","x-example":5,"format":"int32"},"documents":{"type":"array","description":"List of documents.","items":{"type":"object","$ref":"#\/definitions\/document"},"x-example":""}},"required":["total","documents"]},"collectionList":{"description":"Collections List","type":"object","properties":{"total":{"type":"integer","description":"Total number of collections documents that matched your query.","x-example":5,"format":"int32"},"collections":{"type":"array","description":"List of collections.","items":{"type":"object","$ref":"#\/definitions\/collection"},"x-example":""}},"required":["total","collections"]},"databaseList":{"description":"Databases List","type":"object","properties":{"total":{"type":"integer","description":"Total number of databases documents that matched your query.","x-example":5,"format":"int32"},"databases":{"type":"array","description":"List of databases.","items":{"type":"object","$ref":"#\/definitions\/database"},"x-example":""}},"required":["total","databases"]},"indexList":{"description":"Indexes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of indexes documents that matched your query.","x-example":5,"format":"int32"},"indexes":{"type":"array","description":"List of indexes.","items":{"type":"object","$ref":"#\/definitions\/index"},"x-example":""}},"required":["total","indexes"]},"userList":{"description":"Users List","type":"object","properties":{"total":{"type":"integer","description":"Total number of users documents that matched your query.","x-example":5,"format":"int32"},"users":{"type":"array","description":"List of users.","items":{"type":"object","$ref":"#\/definitions\/user"},"x-example":""}},"required":["total","users"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of sessions documents that matched your query.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"type":"object","$ref":"#\/definitions\/session"},"x-example":""}},"required":["total","sessions"]},"identityList":{"description":"Identities List","type":"object","properties":{"total":{"type":"integer","description":"Total number of identities documents that matched your query.","x-example":5,"format":"int32"},"identities":{"type":"array","description":"List of identities.","items":{"type":"object","$ref":"#\/definitions\/identity"},"x-example":""}},"required":["total","identities"]},"logList":{"description":"Logs List","type":"object","properties":{"total":{"type":"integer","description":"Total number of logs documents that matched your query.","x-example":5,"format":"int32"},"logs":{"type":"array","description":"List of logs.","items":{"type":"object","$ref":"#\/definitions\/log"},"x-example":""}},"required":["total","logs"]},"fileList":{"description":"Files List","type":"object","properties":{"total":{"type":"integer","description":"Total number of files documents that matched your query.","x-example":5,"format":"int32"},"files":{"type":"array","description":"List of files.","items":{"type":"object","$ref":"#\/definitions\/file"},"x-example":""}},"required":["total","files"]},"bucketList":{"description":"Buckets List","type":"object","properties":{"total":{"type":"integer","description":"Total number of buckets documents that matched your query.","x-example":5,"format":"int32"},"buckets":{"type":"array","description":"List of buckets.","items":{"type":"object","$ref":"#\/definitions\/bucket"},"x-example":""}},"required":["total","buckets"]},"teamList":{"description":"Teams List","type":"object","properties":{"total":{"type":"integer","description":"Total number of teams documents that matched your query.","x-example":5,"format":"int32"},"teams":{"type":"array","description":"List of teams.","items":{"type":"object","$ref":"#\/definitions\/team"},"x-example":""}},"required":["total","teams"]},"membershipList":{"description":"Memberships List","type":"object","properties":{"total":{"type":"integer","description":"Total number of memberships documents that matched your query.","x-example":5,"format":"int32"},"memberships":{"type":"array","description":"List of memberships.","items":{"type":"object","$ref":"#\/definitions\/membership"},"x-example":""}},"required":["total","memberships"]},"functionList":{"description":"Functions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of functions documents that matched your query.","x-example":5,"format":"int32"},"functions":{"type":"array","description":"List of functions.","items":{"type":"object","$ref":"#\/definitions\/function"},"x-example":""}},"required":["total","functions"]},"installationList":{"description":"Installations List","type":"object","properties":{"total":{"type":"integer","description":"Total number of installations documents that matched your query.","x-example":5,"format":"int32"},"installations":{"type":"array","description":"List of installations.","items":{"type":"object","$ref":"#\/definitions\/installation"},"x-example":""}},"required":["total","installations"]},"providerRepositoryList":{"description":"Provider Repositories List","type":"object","properties":{"total":{"type":"integer","description":"Total number of providerRepositories documents that matched your query.","x-example":5,"format":"int32"},"providerRepositories":{"type":"array","description":"List of providerRepositories.","items":{"type":"object","$ref":"#\/definitions\/providerRepository"},"x-example":""}},"required":["total","providerRepositories"]},"branchList":{"description":"Branches List","type":"object","properties":{"total":{"type":"integer","description":"Total number of branches documents that matched your query.","x-example":5,"format":"int32"},"branches":{"type":"array","description":"List of branches.","items":{"type":"object","$ref":"#\/definitions\/branch"},"x-example":""}},"required":["total","branches"]},"runtimeList":{"description":"Runtimes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of runtimes documents that matched your query.","x-example":5,"format":"int32"},"runtimes":{"type":"array","description":"List of runtimes.","items":{"type":"object","$ref":"#\/definitions\/runtime"},"x-example":""}},"required":["total","runtimes"]},"deploymentList":{"description":"Deployments List","type":"object","properties":{"total":{"type":"integer","description":"Total number of deployments documents that matched your query.","x-example":5,"format":"int32"},"deployments":{"type":"array","description":"List of deployments.","items":{"type":"object","$ref":"#\/definitions\/deployment"},"x-example":""}},"required":["total","deployments"]},"executionList":{"description":"Executions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of executions documents that matched your query.","x-example":5,"format":"int32"},"executions":{"type":"array","description":"List of executions.","items":{"type":"object","$ref":"#\/definitions\/execution"},"x-example":""}},"required":["total","executions"]},"projectList":{"description":"Projects List","type":"object","properties":{"total":{"type":"integer","description":"Total number of projects documents that matched your query.","x-example":5,"format":"int32"},"projects":{"type":"array","description":"List of projects.","items":{"type":"object","$ref":"#\/definitions\/project"},"x-example":""}},"required":["total","projects"]},"webhookList":{"description":"Webhooks List","type":"object","properties":{"total":{"type":"integer","description":"Total number of webhooks documents that matched your query.","x-example":5,"format":"int32"},"webhooks":{"type":"array","description":"List of webhooks.","items":{"type":"object","$ref":"#\/definitions\/webhook"},"x-example":""}},"required":["total","webhooks"]},"keyList":{"description":"API Keys List","type":"object","properties":{"total":{"type":"integer","description":"Total number of keys documents that matched your query.","x-example":5,"format":"int32"},"keys":{"type":"array","description":"List of keys.","items":{"type":"object","$ref":"#\/definitions\/key"},"x-example":""}},"required":["total","keys"]},"platformList":{"description":"Platforms List","type":"object","properties":{"total":{"type":"integer","description":"Total number of platforms documents that matched your query.","x-example":5,"format":"int32"},"platforms":{"type":"array","description":"List of platforms.","items":{"type":"object","$ref":"#\/definitions\/platform"},"x-example":""}},"required":["total","platforms"]},"countryList":{"description":"Countries List","type":"object","properties":{"total":{"type":"integer","description":"Total number of countries documents that matched your query.","x-example":5,"format":"int32"},"countries":{"type":"array","description":"List of countries.","items":{"type":"object","$ref":"#\/definitions\/country"},"x-example":""}},"required":["total","countries"]},"continentList":{"description":"Continents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of continents documents that matched your query.","x-example":5,"format":"int32"},"continents":{"type":"array","description":"List of continents.","items":{"type":"object","$ref":"#\/definitions\/continent"},"x-example":""}},"required":["total","continents"]},"languageList":{"description":"Languages List","type":"object","properties":{"total":{"type":"integer","description":"Total number of languages documents that matched your query.","x-example":5,"format":"int32"},"languages":{"type":"array","description":"List of languages.","items":{"type":"object","$ref":"#\/definitions\/language"},"x-example":""}},"required":["total","languages"]},"currencyList":{"description":"Currencies List","type":"object","properties":{"total":{"type":"integer","description":"Total number of currencies documents that matched your query.","x-example":5,"format":"int32"},"currencies":{"type":"array","description":"List of currencies.","items":{"type":"object","$ref":"#\/definitions\/currency"},"x-example":""}},"required":["total","currencies"]},"phoneList":{"description":"Phones List","type":"object","properties":{"total":{"type":"integer","description":"Total number of phones documents that matched your query.","x-example":5,"format":"int32"},"phones":{"type":"array","description":"List of phones.","items":{"type":"object","$ref":"#\/definitions\/phone"},"x-example":""}},"required":["total","phones"]},"variableList":{"description":"Variables List","type":"object","properties":{"total":{"type":"integer","description":"Total number of variables documents that matched your query.","x-example":5,"format":"int32"},"variables":{"type":"array","description":"List of variables.","items":{"type":"object","$ref":"#\/definitions\/variable"},"x-example":""}},"required":["total","variables"]},"proxyRuleList":{"description":"Rule List","type":"object","properties":{"total":{"type":"integer","description":"Total number of rules documents that matched your query.","x-example":5,"format":"int32"},"rules":{"type":"array","description":"List of rules.","items":{"type":"object","$ref":"#\/definitions\/proxyRule"},"x-example":""}},"required":["total","rules"]},"localeCodeList":{"description":"Locale codes list","type":"object","properties":{"total":{"type":"integer","description":"Total number of localeCodes documents that matched your query.","x-example":5,"format":"int32"},"localeCodes":{"type":"array","description":"List of localeCodes.","items":{"type":"object","$ref":"#\/definitions\/localeCode"},"x-example":""}},"required":["total","localeCodes"]},"providerList":{"description":"Provider list","type":"object","properties":{"total":{"type":"integer","description":"Total number of providers documents that matched your query.","x-example":5,"format":"int32"},"providers":{"type":"array","description":"List of providers.","items":{"type":"object","$ref":"#\/definitions\/provider"},"x-example":""}},"required":["total","providers"]},"messageList":{"description":"Message list","type":"object","properties":{"total":{"type":"integer","description":"Total number of messages documents that matched your query.","x-example":5,"format":"int32"},"messages":{"type":"array","description":"List of messages.","items":{"type":"object","$ref":"#\/definitions\/message"},"x-example":""}},"required":["total","messages"]},"topicList":{"description":"Topic list","type":"object","properties":{"total":{"type":"integer","description":"Total number of topics documents that matched your query.","x-example":5,"format":"int32"},"topics":{"type":"array","description":"List of topics.","items":{"type":"object","$ref":"#\/definitions\/topic"},"x-example":""}},"required":["total","topics"]},"subscriberList":{"description":"Subscriber list","type":"object","properties":{"total":{"type":"integer","description":"Total number of subscribers documents that matched your query.","x-example":5,"format":"int32"},"subscribers":{"type":"array","description":"List of subscribers.","items":{"type":"object","$ref":"#\/definitions\/subscriber"},"x-example":""}},"required":["total","subscribers"]},"targetList":{"description":"Target list","type":"object","properties":{"total":{"type":"integer","description":"Total number of targets documents that matched your query.","x-example":5,"format":"int32"},"targets":{"type":"array","description":"List of targets.","items":{"type":"object","$ref":"#\/definitions\/target"},"x-example":""}},"required":["total","targets"]},"migrationList":{"description":"Migrations List","type":"object","properties":{"total":{"type":"integer","description":"Total number of migrations documents that matched your query.","x-example":5,"format":"int32"},"migrations":{"type":"array","description":"List of migrations.","items":{"type":"object","$ref":"#\/definitions\/migration"},"x-example":""}},"required":["total","migrations"]},"firebaseProjectList":{"description":"Migrations Firebase Projects List","type":"object","properties":{"total":{"type":"integer","description":"Total number of projects documents that matched your query.","x-example":5,"format":"int32"},"projects":{"type":"array","description":"List of projects.","items":{"type":"object","$ref":"#\/definitions\/firebaseProject"},"x-example":""}},"required":["total","projects"]},"database":{"description":"Database","type":"object","properties":{"$id":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Database name.","x-example":"My Database"},"$createdAt":{"type":"string","description":"Database creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Database update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"enabled":{"type":"boolean","description":"If database is enabled. Can be 'enabled' or 'disabled'. When disabled, the database is inaccessible to users, but remains accessible to Server SDKs using API keys.","x-example":false}},"required":["$id","name","$createdAt","$updatedAt","enabled"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Collection creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Collection update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Collection permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled. Can be 'enabled' or 'disabled'. When disabled, the collection is inaccessible to users, but remains accessible to Server SDKs using API keys.","x-example":false},"documentSecurity":{"type":"boolean","description":"Whether document-level permissions are enabled. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":true},"attributes":{"type":"array","description":"Collection attributes.","items":{"x-anyOf":[{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeRelationship"},{"$ref":"#\/definitions\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"type":"object","$ref":"#\/definitions\/index"},"x-example":{}}},"required":["$id","$createdAt","$updatedAt","$permissions","databaseId","name","enabled","documentSecurity","attributes","indexes"]},"attributeList":{"description":"Attributes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of attributes in the given collection.","x-example":5,"format":"int32"},"attributes":{"type":"array","description":"List of attributes.","items":{"x-anyOf":[{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeRelationship"},{"$ref":"#\/definitions\/attributeString"}]},"x-example":""}},"required":["total","attributes"]},"attributeString":{"description":"AttributeString","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"fullName"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"size":{"type":"integer","description":"Attribute size.","x-example":128,"format":"int32"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"default","x-nullable":true}},"required":["key","type","status","error","required","size"]},"attributeInteger":{"description":"AttributeInteger","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"count"},"type":{"type":"string","description":"Attribute type.","x-example":"integer"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"min":{"type":"integer","description":"Minimum value to enforce for new documents.","x-example":1,"format":"int32","x-nullable":true},"max":{"type":"integer","description":"Maximum value to enforce for new documents.","x-example":10,"format":"int32","x-nullable":true},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":10,"format":"int32","x-nullable":true}},"required":["key","type","status","error","required"]},"attributeFloat":{"description":"AttributeFloat","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"percentageCompleted"},"type":{"type":"string","description":"Attribute type.","x-example":"double"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"min":{"type":"number","description":"Minimum value to enforce for new documents.","x-example":1.5,"format":"double","x-nullable":true},"max":{"type":"number","description":"Maximum value to enforce for new documents.","x-example":10.5,"format":"double","x-nullable":true},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":2.5,"format":"double","x-nullable":true}},"required":["key","type","status","error","required"]},"attributeBoolean":{"description":"AttributeBoolean","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"isEnabled"},"type":{"type":"string","description":"Attribute type.","x-example":"boolean"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":false,"x-nullable":true}},"required":["key","type","status","error","required"]},"attributeEmail":{"description":"AttributeEmail","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"userEmail"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"format":{"type":"string","description":"String format.","x-example":"email"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"default@example.com","x-nullable":true}},"required":["key","type","status","error","required","format"]},"attributeEnum":{"description":"AttributeEnum","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"status"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"elements":{"type":"array","description":"Array of elements in enumerated type.","items":{"type":"string"},"x-example":"element"},"format":{"type":"string","description":"String format.","x-example":"enum"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"element","x-nullable":true}},"required":["key","type","status","error","required","elements","format"]},"attributeIp":{"description":"AttributeIP","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"ipAddress"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"format":{"type":"string","description":"String format.","x-example":"ip"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"192.0.2.0","x-nullable":true}},"required":["key","type","status","error","required","format"]},"attributeUrl":{"description":"AttributeURL","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"githubUrl"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"format":{"type":"string","description":"String format.","x-example":"url"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"http:\/\/example.com","x-nullable":true}},"required":["key","type","status","error","required","format"]},"attributeDatetime":{"description":"AttributeDatetime","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"birthDay"},"type":{"type":"string","description":"Attribute type.","x-example":"datetime"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"format":{"type":"string","description":"ISO 8601 format.","x-example":"datetime"},"default":{"type":"string","description":"Default value for attribute when not provided. Only null is optional","x-example":"2020-10-15T06:38:00.000+00:00","x-nullable":true}},"required":["key","type","status","error","required","format"]},"attributeRelationship":{"description":"AttributeRelationship","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"fullName"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"relatedCollection":{"type":"string","description":"The ID of the related collection.","x-example":"collection"},"relationType":{"type":"string","description":"The type of the relationship.","x-example":"oneToOne|oneToMany|manyToOne|manyToMany"},"twoWay":{"type":"boolean","description":"Is the relationship two-way?","x-example":false},"twoWayKey":{"type":"string","description":"The key of the two-way relationship.","x-example":"string"},"onDelete":{"type":"string","description":"How deleting the parent document will propagate to child documents.","x-example":"restrict|cascade|setNull"},"side":{"type":"string","description":"Whether this is the parent or child side of the relationship","x-example":"parent|child"}},"required":["key","type","status","error","required","relatedCollection","relationType","twoWay","twoWayKey","onDelete","side"]},"index":{"description":"Index","type":"object","properties":{"key":{"type":"string","description":"Index Key.","x-example":"index1"},"type":{"type":"string","description":"Index type.","x-example":"primary"},"status":{"type":"string","description":"Index status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an index.","x-example":"string"},"attributes":{"type":"array","description":"Index attributes.","items":{"type":"string"},"x-example":[]},"orders":{"type":"array","description":"Index orders.","items":{"type":"string"},"x-example":[],"x-nullable":true}},"required":["key","type","status","error","attributes"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"user":{"description":"User","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"password":{"type":"string","description":"Hashed user password.","x-example":"$argon2id$v=19$m=2048,t=4,p=3$aUZjLnliVWRINmFNTWMudg$5S+x+7uA31xFnrHFT47yFwcJeaP0w92L\/4LdgrVRXxE","x-nullable":true},"hash":{"type":"string","description":"Password hashing algorithm.","x-example":"argon2","x-nullable":true},"hashOptions":{"type":"object","description":"Password hashing algorithm configuration.","x-example":{},"items":{"x-oneOf":[{"$ref":"#\/definitions\/algoArgon2"},{"$ref":"#\/definitions\/algoScrypt"},{"$ref":"#\/definitions\/algoScryptModified"},{"$ref":"#\/definitions\/algoBcrypt"},{"$ref":"#\/definitions\/algoPhpass"},{"$ref":"#\/definitions\/algoSha"},{"$ref":"#\/definitions\/algoMd5"}]},"x-nullable":true},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"labels":{"type":"array","description":"Labels for the user.","items":{"type":"string"},"x-example":["vip"]},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"mfa":{"type":"boolean","description":"Multi factor authentication status.","x-example":true},"totp":{"type":"boolean","description":"TOTP status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"type":"object","$ref":"#\/definitions\/preferences"}},"targets":{"type":"array","description":"A user-owned message receiver. A single user may have multiple e.g. emails, phones, and a browser. Each target is registered with a single provider.","items":{"type":"object","$ref":"#\/definitions\/target"},"x-example":[]},"accessedAt":{"type":"string","description":"Most recent access date in ISO 8601 format. This attribute is only updated again after 24 hours.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","$updatedAt","name","registration","status","labels","passwordUpdate","email","phone","emailVerification","phoneVerification","mfa","totp","prefs","targets","accessedAt"]},"algoMd5":{"description":"AlgoMD5","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"md5"}},"required":["type"]},"algoSha":{"description":"AlgoSHA","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"sha"}},"required":["type"]},"algoPhpass":{"description":"AlgoPHPass","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"phpass"}},"required":["type"]},"algoBcrypt":{"description":"AlgoBcrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"bcrypt"}},"required":["type"]},"algoScrypt":{"description":"AlgoScrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scrypt"},"costCpu":{"type":"integer","description":"CPU complexity of computed hash.","x-example":8,"format":"int32"},"costMemory":{"type":"integer","description":"Memory complexity of computed hash.","x-example":14,"format":"int32"},"costParallel":{"type":"integer","description":"Parallelization of computed hash.","x-example":1,"format":"int32"},"length":{"type":"integer","description":"Length used to compute hash.","x-example":64,"format":"int32"}},"required":["type","costCpu","costMemory","costParallel","length"]},"algoScryptModified":{"description":"AlgoScryptModified","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scryptMod"},"salt":{"type":"string","description":"Salt used to compute hash.","x-example":"UxLMreBr6tYyjQ=="},"saltSeparator":{"type":"string","description":"Separator used to compute hash.","x-example":"Bw=="},"signerKey":{"type":"string","description":"Key used to compute hash.","x-example":"XyEKE9RcTDeLEsL\/RjwPDBv\/RqDl8fb3gpYEOQaPihbxf1ZAtSOHCjuAAa7Q3oHpCYhXSN9tizHgVOwn6krflQ=="}},"required":["type","salt","saltSeparator","signerKey"]},"algoArgon2":{"description":"AlgoArgon2","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"argon2"},"memoryCost":{"type":"integer","description":"Memory used to compute hash.","x-example":65536,"format":"int32"},"timeCost":{"type":"integer","description":"Amount of time consumed to compute hash","x-example":4,"format":"int32"},"threads":{"type":"integer","description":"Number of threads used to compute hash.","x-example":3,"format":"int32"}},"required":["type","memoryCost","timeCost","threads"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true},"factors":{"type":"array","description":"Returns a list of active session factors.","items":{"type":"string"},"x-example":["email"]},"secret":{"type":"string","description":"Secret used to authenticate the user. Only included if the request was made with an API key","x-example":"5e5bb8c16897e"}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current","factors","secret"]},"identity":{"description":"Identity","type":"object","properties":{"$id":{"type":"string","description":"Identity ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Identity creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Identity update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"provider":{"type":"string","description":"Identity Provider.","x-example":"email"},"providerUid":{"type":"string","description":"ID of the User in the Identity Provider.","x-example":"5e5bb8c16897e"},"providerEmail":{"type":"string","description":"Email of the User in the Identity Provider.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Identity Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Identity Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"}},"required":["$id","$createdAt","$updatedAt","userId","provider","providerUid","providerEmail","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"phrase":{"type":"string","description":"Security phrase of a token. Empty if security phrase was not requested when creating a token. It includes randomly generated phrase which is also sent in the external resource such as email.","x-example":"Golden Fox"}},"required":["$id","$createdAt","userId","secret","expire","phrase"]},"jwt":{"description":"JWT","type":"object","properties":{"jwt":{"type":"string","description":"JWT encoded string.","x-example":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c"}},"required":["jwt"]},"locale":{"description":"Locale","type":"object","properties":{"ip":{"type":"string","description":"User IP address.","x-example":"127.0.0.1"},"countryCode":{"type":"string","description":"Country code in [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) two-character format","x-example":"US"},"country":{"type":"string","description":"Country name. This field support localization.","x-example":"United States"},"continentCode":{"type":"string","description":"Continent code. A two character continent code \"AF\" for Africa, \"AN\" for Antarctica, \"AS\" for Asia, \"EU\" for Europe, \"NA\" for North America, \"OC\" for Oceania, and \"SA\" for South America.","x-example":"NA"},"continent":{"type":"string","description":"Continent name. This field support localization.","x-example":"North America"},"eu":{"type":"boolean","description":"True if country is part of the European Union.","x-example":false},"currency":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format","x-example":"USD"}},"required":["ip","countryCode","country","continentCode","continent","eu","currency"]},"localeCode":{"description":"LocaleCode","type":"object","properties":{"code":{"type":"string","description":"Locale codes in [ISO 639-1](https:\/\/en.wikipedia.org\/wiki\/List_of_ISO_639-1_codes)","x-example":"en-us"},"name":{"type":"string","description":"Locale name","x-example":"US"}},"required":["code","name"]},"file":{"description":"File","type":"object","properties":{"$id":{"type":"string","description":"File ID.","x-example":"5e5ea5c16897e"},"bucketId":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Bucket creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Bucket update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Bucket permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"fileSecurity":{"type":"boolean","description":"Whether file-level security is enabled. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":true},"name":{"type":"string","description":"Bucket name.","x-example":"Documents"},"enabled":{"type":"boolean","description":"Bucket enabled.","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size supported.","x-example":100,"format":"int32"},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions.","items":{"type":"string"},"x-example":["jpg","png"]},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Will be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd).","x-example":"gzip"},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$createdAt","$updatedAt","$permissions","fileSecurity","name","enabled","maximumFileSize","allowedFileExtensions","compression","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"},"prefs":{"type":"object","description":"Team preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"type":"object","$ref":"#\/definitions\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","total","prefs"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"mfa":{"type":"boolean","description":"Multi factor authentication status, true if the user has MFA enabled or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":["owner"]}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","mfa","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Function creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Function update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"users"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"enabled":{"type":"boolean","description":"Function enabled.","x-example":false},"live":{"type":"boolean","description":"Is the function deployed with the latest configuration? This is set to false if you've changed an environment variables, entrypoint, commands, or other settings that needs redeploy to be applied. When the value is false, redeploy the function to update it with the latest configuration.","x-example":false},"logging":{"type":"boolean","description":"Whether executions will be logged. When set to false, executions will not be logged, but will reduce resource used by your Appwrite project.","x-example":false},"runtime":{"type":"string","description":"Function execution runtime.","x-example":"python-3.8"},"deployment":{"type":"string","description":"Function's active deployment ID.","x-example":"5e5ea5c16897e"},"vars":{"type":"array","description":"Function variables.","items":{"type":"object","$ref":"#\/definitions\/variable"},"x-example":[]},"events":{"type":"array","description":"Function trigger events.","items":{"type":"string"},"x-example":"account.create"},"schedule":{"type":"string","description":"Function execution schedult in CRON format.","x-example":"5 4 * * *"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":300,"format":"int32"},"entrypoint":{"type":"string","description":"The entrypoint file used to execute the deployment.","x-example":"index.js"},"commands":{"type":"string","description":"The build command used to build the deployment.","x-example":"npm install"},"version":{"type":"string","description":"Version of Open Runtimes used for the function.","x-example":"v2"},"installationId":{"type":"string","description":"Function VCS (Version Control System) installation id.","x-example":"6m40at4ejk5h2u9s1hboo"},"providerRepositoryId":{"type":"string","description":"VCS (Version Control System) Repository ID","x-example":"appwrite"},"providerBranch":{"type":"string","description":"VCS (Version Control System) branch name","x-example":"main"},"providerRootDirectory":{"type":"string","description":"Path to function in VCS (Version Control System) repository","x-example":"functions\/helloWorld"},"providerSilentMode":{"type":"boolean","description":"Is VCS (Version Control System) connection is in silent mode? When in silence mode, no comments will be posted on the repository pull or merge requests","x-example":false}},"required":["$id","$createdAt","$updatedAt","execute","name","enabled","live","logging","runtime","deployment","vars","events","schedule","timeout","entrypoint","commands","version","installationId","providerRepositoryId","providerBranch","providerRootDirectory","providerSilentMode"]},"installation":{"description":"Installation","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Function creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Function update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"VCS (Version Control System) provider name.","x-example":"github"},"organization":{"type":"string","description":"VCS (Version Control System) organization name.","x-example":"appwrite"},"providerInstallationId":{"type":"string","description":"VCS (Version Control System) installation ID.","x-example":"5322"}},"required":["$id","$createdAt","$updatedAt","provider","organization","providerInstallationId"]},"providerRepository":{"description":"ProviderRepository","type":"object","properties":{"id":{"type":"string","description":"VCS (Version Control System) repository ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"VCS (Version Control System) repository name.","x-example":"appwrite"},"organization":{"type":"string","description":"VCS (Version Control System) organization name","x-example":"appwrite"},"provider":{"type":"string","description":"VCS (Version Control System) provider name.","x-example":"github"},"private":{"type":"boolean","description":"Is VCS (Version Control System) repository private?","x-example":true},"runtime":{"type":"string","description":"Auto-detected runtime suggestion. Empty if getting response of getRuntime().","x-example":"node"},"pushedAt":{"type":"string","description":"Last commit date in ISO 8601 format.","x-example":"datetime"}},"required":["id","name","organization","provider","private","runtime","pushedAt"]},"detection":{"description":"Detection","type":"object","properties":{"runtime":{"type":"string","description":"Runtime","x-example":"node"}},"required":["runtime"]},"branch":{"description":"Branch","type":"object","properties":{"name":{"type":"string","description":"Branch Name.","x-example":"main"}},"required":["name"]},"runtime":{"description":"Runtime","type":"object","properties":{"$id":{"type":"string","description":"Runtime ID.","x-example":"python-3.8"},"name":{"type":"string","description":"Runtime Name.","x-example":"Python"},"version":{"type":"string","description":"Runtime version.","x-example":"3.8"},"base":{"type":"string","description":"Base Docker image used to build the runtime.","x-example":"python:3.8-alpine"},"image":{"type":"string","description":"Image name of Docker Hub.","x-example":"appwrite\\\/runtime-for-python:3.8"},"logo":{"type":"string","description":"Name of the logo image.","x-example":"python.png"},"supports":{"type":"array","description":"List of supported architectures.","items":{"type":"string"},"x-example":"amd64"}},"required":["$id","name","version","base","image","logo","supports"]},"deployment":{"description":"Deployment","type":"object","properties":{"$id":{"type":"string","description":"Deployment ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Deployment creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Deployment update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"type":{"type":"string","description":"Type of deployment.","x-example":"vcs"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"index.js"},"size":{"type":"integer","description":"The code size in bytes.","x-example":128,"format":"int32"},"buildId":{"type":"string","description":"The current build ID.","x-example":"5e5ea5c16897e"},"activate":{"type":"boolean","description":"Whether the deployment should be automatically activated.","x-example":true},"status":{"type":"string","description":"The deployment status. Possible values are \"processing\", \"building\", \"waiting\", \"ready\", and \"failed\".","x-example":"ready"},"buildLogs":{"type":"string","description":"The build logs.","x-example":"Compiling source files..."},"buildTime":{"type":"integer","description":"The current build time in seconds.","x-example":128,"format":"int32"},"providerRepositoryName":{"type":"string","description":"The name of the vcs provider repository","x-example":"database"},"providerRepositoryOwner":{"type":"string","description":"The name of the vcs provider repository owner","x-example":"utopia"},"providerRepositoryUrl":{"type":"string","description":"The url of the vcs provider repository","x-example":"https:\/\/github.com\/vermakhushboo\/g4-node-function"},"providerBranch":{"type":"string","description":"The branch of the vcs repository","x-example":"0.7.x"},"providerCommitHash":{"type":"string","description":"The commit hash of the vcs commit","x-example":"7c3f25d"},"providerCommitAuthorUrl":{"type":"string","description":"The url of vcs commit author","x-example":"https:\/\/github.com\/vermakhushboo"},"providerCommitAuthor":{"type":"string","description":"The name of vcs commit author","x-example":"Khushboo Verma"},"providerCommitMessage":{"type":"string","description":"The commit message","x-example":"Update index.js"},"providerCommitUrl":{"type":"string","description":"The url of the vcs commit","x-example":"https:\/\/github.com\/vermakhushboo\/g4-node-function\/commit\/60c0416257a9cbcdd96b2d370c38d8f8d150ccfb"},"providerBranchUrl":{"type":"string","description":"The branch of the vcs repository","x-example":"https:\/\/github.com\/vermakhushboo\/appwrite\/tree\/0.7.x"}},"required":["$id","$createdAt","$updatedAt","type","resourceId","resourceType","entrypoint","size","buildId","activate","status","buildLogs","buildTime","providerRepositoryName","providerRepositoryOwner","providerRepositoryUrl","providerBranch","providerCommitHash","providerCommitAuthorUrl","providerCommitAuthor","providerCommitMessage","providerCommitUrl","providerBranchUrl"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"requestMethod":{"type":"string","description":"HTTP request method type.","x-example":"GET"},"requestPath":{"type":"string","description":"HTTP request path and query.","x-example":"\/articles?id=5"},"requestHeaders":{"type":"array","description":"HTTP response headers as a key-value object. This will return only whitelisted headers. All headers are returned if execution is created as synchronous.","items":{"type":"object","$ref":"#\/definitions\/headers"},"x-example":[{"Content-Type":"application\/json"}]},"responseStatusCode":{"type":"integer","description":"HTTP response status code.","x-example":200,"format":"int32"},"responseBody":{"type":"string","description":"HTTP response body. This will return empty unless execution is created as synchronous.","x-example":"Developers are awesome."},"responseHeaders":{"type":"array","description":"HTTP response headers as a key-value object. This will return only whitelisted headers. All headers are returned if execution is created as synchronous.","items":{"type":"object","$ref":"#\/definitions\/headers"},"x-example":[{"Content-Type":"application\/json"}]},"logs":{"type":"string","description":"Function logs. Includes the last 4,000 characters. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"errors":{"type":"string","description":"Function errors. Includes the last 4,000 characters. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"Function execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","requestMethod","requestPath","requestHeaders","responseStatusCode","responseBody","responseHeaders","logs","errors","duration"]},"project":{"description":"Project","type":"object","properties":{"$id":{"type":"string","description":"Project ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Project creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Project update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Project name.","x-example":"New Project"},"description":{"type":"string","description":"Project description.","x-example":"This is a new project."},"teamId":{"type":"string","description":"Project team ID.","x-example":"1592981250"},"logo":{"type":"string","description":"Project logo file ID.","x-example":"5f5c451b403cb"},"url":{"type":"string","description":"Project website URL.","x-example":"5f5c451b403cb"},"legalName":{"type":"string","description":"Company legal name.","x-example":"Company LTD."},"legalCountry":{"type":"string","description":"Country code in [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) two-character format.","x-example":"US"},"legalState":{"type":"string","description":"State name.","x-example":"New York"},"legalCity":{"type":"string","description":"City name.","x-example":"New York City."},"legalAddress":{"type":"string","description":"Company Address.","x-example":"620 Eighth Avenue, New York, NY 10018"},"legalTaxId":{"type":"string","description":"Company Tax ID.","x-example":"131102020"},"authDuration":{"type":"integer","description":"Session duration in seconds.","x-example":60,"format":"int32"},"authLimit":{"type":"integer","description":"Max users allowed. 0 is unlimited.","x-example":100,"format":"int32"},"authSessionsLimit":{"type":"integer","description":"Max sessions allowed per user. 100 maximum.","x-example":10,"format":"int32"},"authPasswordHistory":{"type":"integer","description":"Max allowed passwords in the history list per user. Max passwords limit allowed in history is 20. Use 0 for disabling password history.","x-example":5,"format":"int32"},"authPasswordDictionary":{"type":"boolean","description":"Whether or not to check user's password against most commonly used passwords.","x-example":true},"authPersonalDataCheck":{"type":"boolean","description":"Whether or not to check the user password for similarity with their personal data.","x-example":true},"oAuthProviders":{"type":"array","description":"List of Auth Providers.","items":{"type":"object","$ref":"#\/definitions\/authProvider"},"x-example":[{}]},"platforms":{"type":"array","description":"List of Platforms.","items":{"type":"object","$ref":"#\/definitions\/platform"},"x-example":{}},"webhooks":{"type":"array","description":"List of Webhooks.","items":{"type":"object","$ref":"#\/definitions\/webhook"},"x-example":{}},"keys":{"type":"array","description":"List of API Keys.","items":{"type":"object","$ref":"#\/definitions\/key"},"x-example":{}},"smtpEnabled":{"type":"boolean","description":"Status for custom SMTP","x-example":false},"smtpSenderName":{"type":"string","description":"SMTP sender name","x-example":"John Appwrite"},"smtpSenderEmail":{"type":"string","description":"SMTP sender email","x-example":"john@appwrite.io"},"smtpReplyTo":{"type":"string","description":"SMTP reply to email","x-example":"support@appwrite.io"},"smtpHost":{"type":"string","description":"SMTP server host name","x-example":"mail.appwrite.io"},"smtpPort":{"type":"integer","description":"SMTP server port","x-example":25,"format":"int32"},"smtpUsername":{"type":"string","description":"SMTP server username","x-example":"emailuser"},"smtpPassword":{"type":"string","description":"SMTP server password","x-example":"securepassword"},"smtpSecure":{"type":"string","description":"SMTP server secure protocol","x-example":"tls"},"authEmailPassword":{"type":"boolean","description":"Email\/Password auth method status","x-example":true},"authUsersAuthMagicURL":{"type":"boolean","description":"Magic URL auth method status","x-example":true},"authEmailOtp":{"type":"boolean","description":"Email (OTP) auth method status","x-example":true},"authAnonymous":{"type":"boolean","description":"Anonymous auth method status","x-example":true},"authInvites":{"type":"boolean","description":"Invites auth method status","x-example":true},"authJWT":{"type":"boolean","description":"JWT auth method status","x-example":true},"authPhone":{"type":"boolean","description":"Phone auth method status","x-example":true},"serviceStatusForAccount":{"type":"boolean","description":"Account service status","x-example":true},"serviceStatusForAvatars":{"type":"boolean","description":"Avatars service status","x-example":true},"serviceStatusForDatabases":{"type":"boolean","description":"Databases service status","x-example":true},"serviceStatusForLocale":{"type":"boolean","description":"Locale service status","x-example":true},"serviceStatusForHealth":{"type":"boolean","description":"Health service status","x-example":true},"serviceStatusForStorage":{"type":"boolean","description":"Storage service status","x-example":true},"serviceStatusForTeams":{"type":"boolean","description":"Teams service status","x-example":true},"serviceStatusForUsers":{"type":"boolean","description":"Users service status","x-example":true},"serviceStatusForFunctions":{"type":"boolean","description":"Functions service status","x-example":true},"serviceStatusForGraphql":{"type":"boolean","description":"GraphQL service status","x-example":true},"serviceStatusForMessaging":{"type":"boolean","description":"Messaging service status","x-example":true}},"required":["$id","$createdAt","$updatedAt","name","description","teamId","logo","url","legalName","legalCountry","legalState","legalCity","legalAddress","legalTaxId","authDuration","authLimit","authSessionsLimit","authPasswordHistory","authPasswordDictionary","authPersonalDataCheck","oAuthProviders","platforms","webhooks","keys","smtpEnabled","smtpSenderName","smtpSenderEmail","smtpReplyTo","smtpHost","smtpPort","smtpUsername","smtpPassword","smtpSecure","authEmailPassword","authUsersAuthMagicURL","authEmailOtp","authAnonymous","authInvites","authJWT","authPhone","serviceStatusForAccount","serviceStatusForAvatars","serviceStatusForDatabases","serviceStatusForLocale","serviceStatusForHealth","serviceStatusForStorage","serviceStatusForTeams","serviceStatusForUsers","serviceStatusForFunctions","serviceStatusForGraphql","serviceStatusForMessaging"]},"webhook":{"description":"Webhook","type":"object","properties":{"$id":{"type":"string","description":"Webhook ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Webhook creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Webhook update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Webhook name.","x-example":"My Webhook"},"url":{"type":"string","description":"Webhook URL endpoint.","x-example":"https:\/\/example.com\/webhook"},"events":{"type":"array","description":"Webhook trigger events.","items":{"type":"string"},"x-example":"database.collections.update"},"security":{"type":"boolean","description":"Indicated if SSL \/ TLS Certificate verification is enabled.","x-example":true},"httpUser":{"type":"string","description":"HTTP basic authentication username.","x-example":"username"},"httpPass":{"type":"string","description":"HTTP basic authentication password.","x-example":"password"},"signatureKey":{"type":"string","description":"Signature key which can be used to validated incoming","x-example":"ad3d581ca230e2b7059c545e5a"},"enabled":{"type":"boolean","description":"Indicates if this webhook is enabled.","x-example":true},"logs":{"type":"string","description":"Webhook error logs from the most recent failure.","x-example":"Failed to connect to remote server."},"attempts":{"type":"integer","description":"Number of consecutive failed webhook attempts.","x-example":10,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","name","url","events","security","httpUser","httpPass","signatureKey","enabled","logs","attempts"]},"key":{"description":"Key","type":"object","properties":{"$id":{"type":"string","description":"Key ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Key creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Key update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Key name.","x-example":"My API Key"},"expire":{"type":"string","description":"Key expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"scopes":{"type":"array","description":"Allowed permission scopes.","items":{"type":"string"},"x-example":"users.read"},"secret":{"type":"string","description":"Secret key.","x-example":"919c2d18fb5d4...a2ae413da83346ad2"},"accessedAt":{"type":"string","description":"Most recent access date in ISO 8601 format. This attribute is only updated again after 24 hours.","x-example":"2020-10-15T06:38:00.000+00:00"},"sdks":{"type":"array","description":"List of SDK user agents that used this key.","items":{"type":"string"},"x-example":"appwrite:flutter"}},"required":["$id","$createdAt","$updatedAt","name","expire","scopes","secret","accessedAt","sdks"]},"authProvider":{"description":"AuthProvider","type":"object","properties":{"key":{"type":"string","description":"Auth Provider.","x-example":"github"},"name":{"type":"string","description":"Auth Provider name.","x-example":"GitHub"},"appId":{"type":"string","description":"OAuth 2.0 application ID.","x-example":"259125845563242502"},"secret":{"type":"string","description":"OAuth 2.0 application secret. Might be JSON string if provider requires extra configuration.","x-example":"Bpw_g9c2TGXxfgLshDbSaL8tsCcqgczQ"},"enabled":{"type":"boolean","description":"Auth Provider is active and can be used to create session.","x-example":""}},"required":["key","name","appId","secret","enabled"]},"platform":{"description":"Platform","type":"object","properties":{"$id":{"type":"string","description":"Platform ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Platform creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Platform update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Platform name.","x-example":"My Web App"},"type":{"type":"string","description":"Platform type. Possible values are: web, flutter-web, flutter-ios, flutter-android, ios, android, and unity.","x-example":"web"},"key":{"type":"string","description":"Platform Key. iOS bundle ID or Android package name. Empty string for other platforms.","x-example":"com.company.appname"},"store":{"type":"string","description":"App store or Google Play store ID.","x-example":""},"hostname":{"type":"string","description":"Web app hostname. Empty string for other platforms.","x-example":true},"httpUser":{"type":"string","description":"HTTP basic authentication username.","x-example":"username"},"httpPass":{"type":"string","description":"HTTP basic authentication password.","x-example":"password"}},"required":["$id","$createdAt","$updatedAt","name","type","key","store","hostname","httpUser","httpPass"]},"variable":{"description":"Variable","type":"object","properties":{"$id":{"type":"string","description":"Variable ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"key":{"type":"string","description":"Variable key.","x-example":"API_KEY"},"value":{"type":"string","description":"Variable value.","x-example":"myPa$$word1"},"resourceType":{"type":"string","description":"Service to which the variable belongs. Possible values are \"project\", \"function\"","x-example":"function"},"resourceId":{"type":"string","description":"ID of resource to which the variable belongs. If resourceType is \"project\", it is empty. If resourceType is \"function\", it is ID of the function.","x-example":"myAwesomeFunction"}},"required":["$id","$createdAt","$updatedAt","key","value","resourceType","resourceId"]},"country":{"description":"Country","type":"object","properties":{"name":{"type":"string","description":"Country name.","x-example":"United States"},"code":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"}},"required":["name","code"]},"continent":{"description":"Continent","type":"object","properties":{"name":{"type":"string","description":"Continent name.","x-example":"Europe"},"code":{"type":"string","description":"Continent two letter code.","x-example":"EU"}},"required":["name","code"]},"language":{"description":"Language","type":"object","properties":{"name":{"type":"string","description":"Language name.","x-example":"Italian"},"code":{"type":"string","description":"Language two-character ISO 639-1 codes.","x-example":"it"},"nativeName":{"type":"string","description":"Language native name.","x-example":"Italiano"}},"required":["name","code","nativeName"]},"currency":{"description":"Currency","type":"object","properties":{"symbol":{"type":"string","description":"Currency symbol.","x-example":"$"},"name":{"type":"string","description":"Currency name.","x-example":"US dollar"},"symbolNative":{"type":"string","description":"Currency native symbol.","x-example":"$"},"decimalDigits":{"type":"integer","description":"Number of decimal digits.","x-example":2,"format":"int32"},"rounding":{"type":"number","description":"Currency digit rounding.","x-example":0,"format":"double"},"code":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format.","x-example":"USD"},"namePlural":{"type":"string","description":"Currency plural name","x-example":"US dollars"}},"required":["symbol","name","symbolNative","decimalDigits","rounding","code","namePlural"]},"phone":{"description":"Phone","type":"object","properties":{"code":{"type":"string","description":"Phone code.","x-example":"+1"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["code","countryCode","countryName"]},"healthAntivirus":{"description":"Health Antivirus","type":"object","properties":{"version":{"type":"string","description":"Antivirus version.","x-example":"1.0.0"},"status":{"type":"string","description":"Antivirus status. Possible values can are: `disabled`, `offline`, `online`","x-example":"online"}},"required":["version","status"]},"healthQueue":{"description":"Health Queue","type":"object","properties":{"size":{"type":"integer","description":"Amount of actions in the queue.","x-example":8,"format":"int32"}},"required":["size"]},"healthStatus":{"description":"Health Status","type":"object","properties":{"name":{"type":"string","description":"Name of the service.","x-example":"database"},"ping":{"type":"integer","description":"Duration in milliseconds how long the health check took.","x-example":128,"format":"int32"},"status":{"type":"string","description":"Service status. Possible values can are: `pass`, `fail`","x-example":"pass"}},"required":["name","ping","status"]},"healthCertificate":{"description":"Health Certificate","type":"object","properties":{"name":{"type":"string","description":"Certificate name","x-example":"\/CN=www.google.com"},"subjectSN":{"type":"string","description":"Subject SN","x-example":""},"issuerOrganisation":{"type":"string","description":"Issuer organisation","x-example":""},"validFrom":{"type":"string","description":"Valid from","x-example":"1704200998"},"validTo":{"type":"string","description":"Valid to","x-example":"1711458597"},"signatureTypeSN":{"type":"string","description":"Signature type SN","x-example":"RSA-SHA256"}},"required":["name","subjectSN","issuerOrganisation","validFrom","validTo","signatureTypeSN"]},"healthTime":{"description":"Health Time","type":"object","properties":{"remoteTime":{"type":"integer","description":"Current unix timestamp on trustful remote server.","x-example":1639490751,"format":"int32"},"localTime":{"type":"integer","description":"Current unix timestamp of local server where Appwrite runs.","x-example":1639490844,"format":"int32"},"diff":{"type":"integer","description":"Difference of unix remote and local timestamps in milliseconds.","x-example":93,"format":"int32"}},"required":["remoteTime","localTime","diff"]},"metric":{"description":"Metric","type":"object","properties":{"value":{"type":"integer","description":"The value of this metric at the timestamp.","x-example":1,"format":"int32"},"date":{"type":"string","description":"The date at which this metric was aggregated in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["value","date"]},"metricBreakdown":{"description":"Metric Breakdown","type":"object","properties":{"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Resource name.","x-example":"Documents"},"value":{"type":"integer","description":"The value of this metric at the timestamp.","x-example":1,"format":"int32"}},"required":["resourceId","name","value"]},"usageDatabases":{"description":"UsageDatabases","type":"object","properties":{"range":{"type":"string","description":"Time range of the usage stats.","x-example":"30d"},"databasesTotal":{"type":"integer","description":"Total aggregated number of databases.","x-example":0,"format":"int32"},"collectionsTotal":{"type":"integer","description":"Total aggregated number of collections.","x-example":0,"format":"int32"},"documentsTotal":{"type":"integer","description":"Total aggregated number of documents.","x-example":0,"format":"int32"},"databases":{"type":"array","description":"Aggregated number of databases per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collections":{"type":"array","description":"Aggregated number of collections per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documents":{"type":"array","description":"Aggregated number of documents per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","databasesTotal","collectionsTotal","documentsTotal","databases","collections","documents"]},"usageDatabase":{"description":"UsageDatabase","type":"object","properties":{"range":{"type":"string","description":"Time range of the usage stats.","x-example":"30d"},"collectionsTotal":{"type":"integer","description":"Total aggregated number of collections.","x-example":0,"format":"int32"},"documentsTotal":{"type":"integer","description":"Total aggregated number of documents.","x-example":0,"format":"int32"},"collections":{"type":"array","description":"Aggregated number of collections per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documents":{"type":"array","description":"Aggregated number of documents per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","collectionsTotal","documentsTotal","collections","documents"]},"usageCollection":{"description":"UsageCollection","type":"object","properties":{"range":{"type":"string","description":"Time range of the usage stats.","x-example":"30d"},"documentsTotal":{"type":"integer","description":"Total aggregated number of of documents.","x-example":0,"format":"int32"},"documents":{"type":"array","description":"Aggregated number of documents per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","documentsTotal","documents"]},"usageUsers":{"description":"UsageUsers","type":"object","properties":{"range":{"type":"string","description":"Time range of the usage stats.","x-example":"30d"},"usersTotal":{"type":"integer","description":"Total aggregated number of statistics of users.","x-example":0,"format":"int32"},"sessionsTotal":{"type":"integer","description":"Total aggregated number of active sessions.","x-example":0,"format":"int32"},"users":{"type":"array","description":"Aggregated number of users per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"sessions":{"type":"array","description":"Aggregated number of active sessions per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","usersTotal","sessionsTotal","users","sessions"]},"usageStorage":{"description":"StorageUsage","type":"object","properties":{"range":{"type":"string","description":"Time range of the usage stats.","x-example":"30d"},"bucketsTotal":{"type":"integer","description":"Total aggregated number of buckets","x-example":0,"format":"int32"},"filesTotal":{"type":"integer","description":"Total aggregated number of files.","x-example":0,"format":"int32"},"filesStorageTotal":{"type":"integer","description":"Total aggregated number of files storage (in bytes).","x-example":0,"format":"int32"},"buckets":{"type":"array","description":"Aggregated number of buckets per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"files":{"type":"array","description":"Aggregated number of files per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"storage":{"type":"array","description":"Aggregated number of files storage (in bytes) per period .","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","bucketsTotal","filesTotal","filesStorageTotal","buckets","files","storage"]},"usageBuckets":{"description":"UsageBuckets","type":"object","properties":{"range":{"type":"string","description":"Time range of the usage stats.","x-example":"30d"},"filesTotal":{"type":"integer","description":"Total aggregated number of bucket files.","x-example":0,"format":"int32"},"filesStorageTotal":{"type":"integer","description":"Total aggregated number of bucket files storage (in bytes).","x-example":0,"format":"int32"},"files":{"type":"array","description":"Aggregated number of bucket files per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"storage":{"type":"array","description":"Aggregated number of bucket storage files (in bytes) per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","filesTotal","filesStorageTotal","files","storage"]},"usageFunctions":{"description":"UsageFunctions","type":"object","properties":{"range":{"type":"string","description":"Time range of the usage stats.","x-example":"30d"},"functionsTotal":{"type":"integer","description":"Total aggregated number of functions.","x-example":0,"format":"int32"},"deploymentsTotal":{"type":"integer","description":"Total aggregated number of functions deployments.","x-example":0,"format":"int32"},"deploymentsStorageTotal":{"type":"integer","description":"Total aggregated sum of functions deployment storage.","x-example":0,"format":"int32"},"buildsTotal":{"type":"integer","description":"Total aggregated number of functions build.","x-example":0,"format":"int32"},"buildsStorageTotal":{"type":"integer","description":"total aggregated sum of functions build storage.","x-example":0,"format":"int32"},"buildsTimeTotal":{"type":"integer","description":"Total aggregated sum of functions build compute time.","x-example":0,"format":"int32"},"executionsTotal":{"type":"integer","description":"Total aggregated number of functions execution.","x-example":0,"format":"int32"},"executionsTimeTotal":{"type":"integer","description":"Total aggregated sum of functions execution compute time.","x-example":0,"format":"int32"},"functions":{"type":"array","description":"Aggregated number of functions per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":0},"deployments":{"type":"array","description":"Aggregated number of functions deployment per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"deploymentsStorage":{"type":"array","description":"Aggregated number of functions deployment storage per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"builds":{"type":"array","description":"Aggregated number of functions build per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"buildsStorage":{"type":"array","description":"Aggregated sum of functions build storage per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"buildsTime":{"type":"array","description":"Aggregated sum of functions build compute time per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"executions":{"type":"array","description":"Aggregated number of functions execution per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"executionsTime":{"type":"array","description":"Aggregated number of functions execution compute time per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","functionsTotal","deploymentsTotal","deploymentsStorageTotal","buildsTotal","buildsStorageTotal","buildsTimeTotal","executionsTotal","executionsTimeTotal","functions","deployments","deploymentsStorage","builds","buildsStorage","buildsTime","executions","executionsTime"]},"usageFunction":{"description":"UsageFunction","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"deploymentsTotal":{"type":"integer","description":"Total aggregated number of function deployments.","x-example":0,"format":"int32"},"deploymentsStorageTotal":{"type":"integer","description":"Total aggregated sum of function deployments storage.","x-example":0,"format":"int32"},"buildsTotal":{"type":"integer","description":"Total aggregated number of function builds.","x-example":0,"format":"int32"},"buildsStorageTotal":{"type":"integer","description":"total aggregated sum of function builds storage.","x-example":0,"format":"int32"},"buildsTimeTotal":{"type":"integer","description":"Total aggregated sum of function builds compute time.","x-example":0,"format":"int32"},"executionsTotal":{"type":"integer","description":"Total aggregated number of function executions.","x-example":0,"format":"int32"},"executionsTimeTotal":{"type":"integer","description":"Total aggregated sum of function executions compute time.","x-example":0,"format":"int32"},"deployments":{"type":"array","description":"Aggregated number of function deployments per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"deploymentsStorage":{"type":"array","description":"Aggregated number of function deployments storage per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"builds":{"type":"array","description":"Aggregated number of function builds per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"buildsStorage":{"type":"array","description":"Aggregated sum of function builds storage per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"buildsTime":{"type":"array","description":"Aggregated sum of function builds compute time per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"executions":{"type":"array","description":"Aggregated number of function executions per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"executionsTime":{"type":"array","description":"Aggregated number of function executions compute time per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","deploymentsTotal","deploymentsStorageTotal","buildsTotal","buildsStorageTotal","buildsTimeTotal","executionsTotal","executionsTimeTotal","deployments","deploymentsStorage","builds","buildsStorage","buildsTime","executions","executionsTime"]},"usageProject":{"description":"UsageProject","type":"object","properties":{"executionsTotal":{"type":"integer","description":"Total aggregated number of function executions.","x-example":0,"format":"int32"},"documentsTotal":{"type":"integer","description":"Total aggregated number of documents.","x-example":0,"format":"int32"},"databasesTotal":{"type":"integer","description":"Total aggregated number of databases.","x-example":0,"format":"int32"},"usersTotal":{"type":"integer","description":"Total aggregated number of users.","x-example":0,"format":"int32"},"filesStorageTotal":{"type":"integer","description":"Total aggregated sum of files storage size (in bytes).","x-example":0,"format":"int32"},"bucketsTotal":{"type":"integer","description":"Total aggregated number of buckets.","x-example":0,"format":"int32"},"requests":{"type":"array","description":"Aggregated number of requests per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"network":{"type":"array","description":"Aggregated number of consumed bandwidth per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"users":{"type":"array","description":"Aggregated number of users per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"executions":{"type":"array","description":"Aggregated number of executions per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"executionsBreakdown":{"type":"array","description":"Aggregated breakdown in totals of executions by functions.","items":{"type":"object","$ref":"#\/definitions\/metricBreakdown"},"x-example":[]},"bucketsBreakdown":{"type":"array","description":"Aggregated breakdown in totals of usage by buckets.","items":{"type":"object","$ref":"#\/definitions\/metricBreakdown"},"x-example":[]}},"required":["executionsTotal","documentsTotal","databasesTotal","usersTotal","filesStorageTotal","bucketsTotal","requests","network","users","executions","executionsBreakdown","bucketsBreakdown"]},"headers":{"description":"Headers","type":"object","properties":{"name":{"type":"string","description":"Header name.","x-example":"Content-Type"},"value":{"type":"string","description":"Header value.","x-example":"application\/json"}},"required":["name","value"]},"proxyRule":{"description":"Rule","type":"object","properties":{"$id":{"type":"string","description":"Rule ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Rule creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Rule update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"domain":{"type":"string","description":"Domain name.","x-example":"appwrite.company.com"},"resourceType":{"type":"string","description":"Action definition for the rule. Possible values are \"api\", \"function\", or \"redirect\"","x-example":"function"},"resourceId":{"type":"string","description":"ID of resource for the action type. If resourceType is \"api\" or \"url\", it is empty. If resourceType is \"function\", it is ID of the function.","x-example":"myAwesomeFunction"},"status":{"type":"string","description":"Domain verification status. Possible values are \"created\", \"verifying\", \"verified\" and \"unverified\"","x-example":"verified"},"logs":{"type":"string","description":"Certificate generation logs. This will return an empty string if generation did not run, or succeeded.","x-example":"HTTP challegne failed."},"renewAt":{"type":"string","description":"Certificate auto-renewal date in ISO 8601 format.","x-example":"datetime"}},"required":["$id","$createdAt","$updatedAt","domain","resourceType","resourceId","status","logs","renewAt"]},"smsTemplate":{"description":"SmsTemplate","type":"object","properties":{"type":{"type":"string","description":"Template type","x-example":"verification"},"locale":{"type":"string","description":"Template locale","x-example":"en_us"},"message":{"type":"string","description":"Template message","x-example":"Click on the link to verify your account."}},"required":["type","locale","message"]},"emailTemplate":{"description":"EmailTemplate","type":"object","properties":{"type":{"type":"string","description":"Template type","x-example":"verification"},"locale":{"type":"string","description":"Template locale","x-example":"en_us"},"message":{"type":"string","description":"Template message","x-example":"Click on the link to verify your account."},"senderName":{"type":"string","description":"Name of the sender","x-example":"My User"},"senderEmail":{"type":"string","description":"Email of the sender","x-example":"mail@appwrite.io"},"replyTo":{"type":"string","description":"Reply to email address","x-example":"emails@appwrite.io"},"subject":{"type":"string","description":"Email subject","x-example":"Please verify your email address"}},"required":["type","locale","message","senderName","senderEmail","replyTo","subject"]},"consoleVariables":{"description":"Console Variables","type":"object","properties":{"_APP_DOMAIN_TARGET":{"type":"string","description":"CNAME target for your Appwrite custom domains.","x-example":"appwrite.io"},"_APP_STORAGE_LIMIT":{"type":"integer","description":"Maximum file size allowed for file upload in bytes.","x-example":"30000000","format":"int32"},"_APP_FUNCTIONS_SIZE_LIMIT":{"type":"integer","description":"Maximum file size allowed for deployment in bytes.","x-example":"30000000","format":"int32"},"_APP_USAGE_STATS":{"type":"string","description":"Defines if usage stats are enabled. This value is set to 'enabled' by default, to disable the usage stats set the value to 'disabled'.","x-example":"enabled"},"_APP_VCS_ENABLED":{"type":"boolean","description":"Defines if VCS (Version Control System) is enabled.","x-example":true},"_APP_DOMAIN_ENABLED":{"type":"boolean","description":"Defines if main domain is configured. If so, custom domains can be created.","x-example":true},"_APP_ASSISTANT_ENABLED":{"type":"boolean","description":"Defines if AI assistant is enabled.","x-example":true}},"required":["_APP_DOMAIN_TARGET","_APP_STORAGE_LIMIT","_APP_FUNCTIONS_SIZE_LIMIT","_APP_USAGE_STATS","_APP_VCS_ENABLED","_APP_DOMAIN_ENABLED","_APP_ASSISTANT_ENABLED"]},"mfaChallenge":{"description":"MFA Challenge","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","userId","expire"]},"mfaType":{"description":"MFAType","type":"object","properties":{"backups":{"type":"array","description":"Backup codes.","items":{"type":"string"},"x-example":true},"secret":{"type":"string","description":"Secret token used for TOTP factor.","x-example":true},"uri":{"type":"string","description":"URI for authenticator apps.","x-example":true}},"required":["backups","secret","uri"]},"mfaFactors":{"description":"MFAFactors","type":"object","properties":{"totp":{"type":"boolean","description":"TOTP","x-example":true},"phone":{"type":"boolean","description":"Phone","x-example":true},"email":{"type":"boolean","description":"Email","x-example":true}},"required":["totp","phone","email"]},"provider":{"description":"Provider","type":"object","properties":{"$id":{"type":"string","description":"Provider ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Provider creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Provider update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"The name for the provider instance.","x-example":"Mailgun"},"provider":{"type":"string","description":"The name of the provider service.","x-example":"mailgun"},"enabled":{"type":"boolean","description":"Is provider enabled?","x-example":true},"type":{"type":"string","description":"Type of provider.","x-example":"sms"},"credentials":{"type":"object","additionalProperties":true,"description":"Provider credentials.","x-example":{"key":"123456789"}},"options":{"type":"object","additionalProperties":true,"description":"Provider options.","x-example":{"from":"sender-email@mydomain"}}},"required":["$id","$createdAt","$updatedAt","name","provider","enabled","type","credentials"]},"message":{"description":"Message","type":"object","properties":{"$id":{"type":"string","description":"Message ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Message creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Message update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerType":{"type":"string","description":"Message provider type.","x-example":"email"},"topics":{"type":"array","description":"Topic IDs set as recipients.","items":{"type":"string"},"x-example":["5e5ea5c16897e"]},"users":{"type":"array","description":"User IDs set as recipients.","items":{"type":"string"},"x-example":["5e5ea5c16897e"]},"targets":{"type":"array","description":"Target IDs set as recipients.","items":{"type":"string"},"x-example":["5e5ea5c16897e"]},"scheduledAt":{"type":"string","description":"The scheduled time for message.","x-example":"2020-10-15T06:38:00.000+00:00","x-nullable":true},"deliveredAt":{"type":"string","description":"The time when the message was delivered.","x-example":"2020-10-15T06:38:00.000+00:00","x-nullable":true},"deliveryErrors":{"type":"array","description":"Delivery errors if any.","items":{"type":"string"},"x-example":["Failed to send message to target 5e5ea5c16897e: Credentials not valid."],"x-nullable":true},"deliveredTotal":{"type":"integer","description":"Number of recipients the message was delivered to.","x-example":1,"format":"int32"},"data":{"type":"object","additionalProperties":true,"description":"Data of the message.","x-example":{"subject":"Welcome to Appwrite","content":"Hi there, welcome to Appwrite family."}},"status":{"type":"string","description":"Status of delivery.","x-example":"Message status can be one of the following: processing, sent, cancelled, failed."}},"required":["$id","$createdAt","$updatedAt","providerType","topics","users","targets","deliveredTotal","data","status"]},"topic":{"description":"Topic","type":"object","properties":{"$id":{"type":"string","description":"Topic ID.","x-example":"259125845563242502"},"$createdAt":{"type":"string","description":"Topic creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Topic update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"The name of the topic.","x-example":"events"},"total":{"type":"integer","description":"Total count of subscribers subscribed to topic.","x-example":100,"format":"int32"},"subscribe":{"type":"array","description":"Subscribe permissions.","items":{"type":"string"},"x-example":"users"}},"required":["$id","$createdAt","$updatedAt","name","total","subscribe"]},"subscriber":{"description":"Subscriber","type":"object","properties":{"$id":{"type":"string","description":"Subscriber ID.","x-example":"259125845563242502"},"$createdAt":{"type":"string","description":"Subscriber creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Subscriber update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"targetId":{"type":"string","description":"Target ID.","x-example":"259125845563242502"},"target":{"type":"object","description":"Target.","x-example":{"$id":"259125845563242502","$createdAt":"2020-10-15T06:38:00.000+00:00","$updatedAt":"2020-10-15T06:38:00.000+00:00","providerType":"email","providerId":"259125845563242502","name":"ageon-app-email","identifier":"random-mail@email.org","userId":"5e5ea5c16897e"},"items":{"type":"object","$ref":"#\/definitions\/target"}},"userId":{"type":"string","description":"Topic ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User Name.","x-example":"Aegon Targaryen"},"topicId":{"type":"string","description":"Topic ID.","x-example":"259125845563242502"},"providerType":{"type":"string","description":"The target provider type. Can be one of the following: `email`, `sms` or `push`.","x-example":"email"}},"required":["$id","$createdAt","$updatedAt","targetId","target","userId","userName","topicId","providerType"]},"target":{"description":"Target","type":"object","properties":{"$id":{"type":"string","description":"Target ID.","x-example":"259125845563242502"},"$createdAt":{"type":"string","description":"Target creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Target update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Target Name.","x-example":"Aegon apple token"},"userId":{"type":"string","description":"User ID.","x-example":"259125845563242502"},"providerId":{"type":"string","description":"Provider ID.","x-example":"259125845563242502","x-nullable":true},"providerType":{"type":"string","description":"The target provider type. Can be one of the following: `email`, `sms` or `push`.","x-example":"email"},"identifier":{"type":"string","description":"The target identifier.","x-example":"token"}},"required":["$id","$createdAt","$updatedAt","name","userId","providerType","identifier"]},"migration":{"description":"Migration","type":"object","properties":{"$id":{"type":"string","description":"Migration ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"string","description":"Migration status ( pending, processing, failed, completed ) ","x-example":"pending"},"stage":{"type":"string","description":"Migration stage ( init, processing, source-check, destination-check, migrating, finished )","x-example":"init"},"source":{"type":"string","description":"A string containing the type of source of the migration.","x-example":"Appwrite"},"resources":{"type":"array","description":"Resources to migration.","items":{"type":"string"},"x-example":["user"]},"statusCounters":{"type":"object","additionalProperties":true,"description":"A group of counters that represent the total progress of the migration.","x-example":"{\"Database\": {\"PENDING\": 0, \"SUCCESS\": 1, \"ERROR\": 0, \"SKIP\": 0, \"PROCESSING\": 0, \"WARNING\": 0}}"},"resourceData":{"type":"object","additionalProperties":true,"description":"An array of objects containing the report data of the resources that were migrated.","x-example":"[{\"resource\":\"Database\",\"id\":\"public\",\"status\":\"SUCCESS\",\"message\":\"\"}]"},"errors":{"type":"array","description":"All errors that occurred during the migration process.","items":{"type":"string"},"x-example":[]}},"required":["$id","$createdAt","$updatedAt","status","stage","source","resources","statusCounters","resourceData","errors"]},"migrationReport":{"description":"Migration Report","type":"object","properties":{"user":{"type":"integer","description":"Number of users to be migrated.","x-example":20,"format":"int32"},"team":{"type":"integer","description":"Number of teams to be migrated.","x-example":20,"format":"int32"},"database":{"type":"integer","description":"Number of databases to be migrated.","x-example":20,"format":"int32"},"document":{"type":"integer","description":"Number of documents to be migrated.","x-example":20,"format":"int32"},"file":{"type":"integer","description":"Number of files to be migrated.","x-example":20,"format":"int32"},"bucket":{"type":"integer","description":"Number of buckets to be migrated.","x-example":20,"format":"int32"},"function":{"type":"integer","description":"Number of functions to be migrated.","x-example":20,"format":"int32"},"size":{"type":"integer","description":"Size of files to be migrated in mb.","x-example":30000,"format":"int32"},"version":{"type":"string","description":"Version of the Appwrite instance to be migrated.","x-example":"1.4.0"}},"required":["user","team","database","document","file","bucket","function","size","version"]},"firebaseProject":{"description":"MigrationFirebaseProject","type":"object","properties":{"projectId":{"type":"string","description":"Project ID.","x-example":"my-project"},"displayName":{"type":"string","description":"Project display name.","x-example":"My Project"}},"required":["projectId","displayName"]}},"externalDocs":{"description":"Full API docs, specs and tutorials","url":"https:\/\/appwrite.io\/docs"}} \ No newline at end of file diff --git a/app/config/specs/swagger2-latest-server.json b/app/config/specs/swagger2-latest-server.json index 705beb37e8..7a87c3d269 100644 --- a/app/config/specs/swagger2-latest-server.json +++ b/app/config/specs/swagger2-latest-server.json @@ -1 +1 @@ -{"swagger":"2.0","info":{"version":"1.4.13","title":"Appwrite","description":"Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https:\/\/appwrite.io\/docs](https:\/\/appwrite.io\/docs)","termsOfService":"https:\/\/appwrite.io\/policy\/terms","contact":{"name":"Appwrite Team","url":"https:\/\/appwrite.io\/support","email":"team@appwrite.io"},"license":{"name":"BSD-3-Clause","url":"https:\/\/raw.githubusercontent.com\/appwrite\/appwrite\/master\/LICENSE"}},"host":"HOSTNAME","basePath":"\/v1","schemes":["https"],"consumes":["application\/json","multipart\/form-data"],"produces":["application\/json"],"securityDefinitions":{"Project":{"type":"apiKey","name":"X-Appwrite-Project","description":"Your project ID","in":"header","x-appwrite":{"demo":"5df5acd0d48c2"}},"Key":{"type":"apiKey","name":"X-Appwrite-Key","description":"Your secret API key","in":"header","x-appwrite":{"demo":"919c2d18fb5d4...a2ae413da83346ad2"}},"JWT":{"type":"apiKey","name":"X-Appwrite-JWT","description":"Your secret JSON Web Token","in":"header","x-appwrite":{"demo":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ..."}},"Locale":{"type":"apiKey","name":"X-Appwrite-Locale","description":"","in":"header","x-appwrite":{"demo":"en"}},"Session":{"type":"apiKey","name":"X-Appwrite-Session","description":"The user session to authenticate with","in":"header"},"ForwardedFor":{"type":"apiKey","name":"X-Forwarded-For","description":"The IP address of the client that made the request","in":"header"},"ForwardedUserAgent":{"type":"apiKey","name":"X-Forwarded-User-Agent","description":"The user agent string of the client that made the request","in":"header"}},"paths":{"\/account":{"get":{"summary":"Get account","operationId":"accountGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get the currently logged in user.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"get","weight":22,"cookies":false,"type":"","demo":"account\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]},"post":{"summary":"Create account","operationId":"accountCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to allow a new user to register a new account in your project. After the user registration completes successfully, you can use the [\/account\/verfication](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createVerification) route to start verifying the user email address. To allow the new user to login to their new account, you need to create a new [account session](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createEmailSession).","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"create","weight":7,"cookies":false,"type":"","demo":"account\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"New user password. Must be between 8 and 256 chars.","default":null,"x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/account\/email":{"patch":{"summary":"Update email","operationId":"accountUpdateEmail","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateEmail","weight":29,"cookies":false,"type":"","demo":"account\/update-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["email","password"]}}]}},"\/account\/identities":{"get":{"summary":"List Identities","operationId":"accountListIdentities","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get the list of identities for the currently logged in user.","responses":{"200":{"description":"Identities List","schema":{"$ref":"#\/definitions\/identityList"}}},"x-appwrite":{"method":"listIdentities","weight":13,"cookies":false,"type":"","demo":"account\/list-identities.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-identities.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/identities","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, provider, providerUid, providerEmail, providerAccessTokenExpiry","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/identities\/{identityId}":{"delete":{"summary":"Delete identity","operationId":"accountDeleteIdentity","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Delete an identity by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIdentity","weight":14,"cookies":false,"type":"","demo":"account\/delete-identity.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-identity.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"identityId","description":"Identity ID.","required":true,"type":"string","x-example":"[IDENTITY_ID]","in":"path"}]}},"\/account\/jwt":{"post":{"summary":"Create JWT","operationId":"accountCreateJWT","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to create a JSON Web Token. You can use the resulting JWT to authenticate on behalf of the current user when working with the Appwrite server-side API and SDKs. The JWT secret is valid for 15 minutes from its creation and will be invalid if the user will logout in that time frame.","responses":{"201":{"description":"JWT","schema":{"$ref":"#\/definitions\/jwt"}}},"x-appwrite":{"method":"createJWT","weight":21,"cookies":false,"type":"","demo":"account\/create-j-w-t.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-jwt.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"List logs","operationId":"accountListLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get the list of latest security activity logs for the currently logged in user. Each log returns user IP address, location and date and time of log.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listLogs","weight":25,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/mfa":{"patch":{"summary":"Update MFA","operationId":"accountUpdateMFA","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateMFA","weight":42,"cookies":false,"type":"","demo":"account\/update-m-f-a.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-mfa.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"mfa":{"type":"boolean","description":"Enable or disable MFA.","default":null,"x-example":false}},"required":["mfa"]}}]}},"\/account\/mfa\/challenge":{"post":{"summary":"Create MFA Challenge","operationId":"accountCreateChallenge","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"201":{"description":"MFA Challenge","schema":{"$ref":"#\/definitions\/mfaChallenge"}}},"x-appwrite":{"method":"createChallenge","weight":47,"cookies":false,"type":"","demo":"account\/create-challenge.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-challenge.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},token:{param-token}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"provider":{"type":"string","description":"provider.","default":null,"x-example":"totp","enum":["totp","phone","email"],"x-enum-name":"AuthenticatorProvider","x-enum-keys":[]}},"required":["provider"]}}]},"put":{"summary":"Create MFA Challenge (confirmation)","operationId":"accountUpdateChallenge","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"updateChallenge","weight":48,"cookies":false,"type":"","demo":"account\/update-challenge.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-challenge.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"challengeId":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[CHALLENGE_ID]"},"otp":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[OTP]"}},"required":["challengeId","otp"]}}]}},"\/account\/mfa\/factors":{"get":{"summary":"List Factors","operationId":"accountListFactors","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get the currently logged in user.","responses":{"200":{"description":"MFAProviders","schema":{"$ref":"#\/definitions\/mfaProviders"}}},"x-appwrite":{"method":"listFactors","weight":43,"cookies":false,"type":"","demo":"account\/list-factors.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/account\/mfa\/{factor}":{"post":{"summary":"Add Authenticator","operationId":"accountAddAuthenticator","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"200":{"description":"MFAProvider","schema":{"$ref":"#\/definitions\/mfaProvider"}}},"x-appwrite":{"method":"addAuthenticator","weight":44,"cookies":false,"type":"","demo":"account\/add-authenticator.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-mfa.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"factor","description":"Factor.","required":true,"type":"string","x-example":"totp","enum":["totp"],"x-enum-name":"AuthenticatorFactor","x-enum-keys":[],"in":"path"}]},"put":{"summary":"Verify Authenticator","operationId":"accountVerifyAuthenticator","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"verifyAuthenticator","weight":45,"cookies":false,"type":"","demo":"account\/verify-authenticator.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-mfa.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"factor","description":"Factor.","required":true,"type":"string","x-example":"totp","enum":["totp"],"x-enum-name":"AuthenticatorFactor","x-enum-keys":[],"in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"otp":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[OTP]"}},"required":["otp"]}}]}},"\/account\/mfa\/{provider}":{"delete":{"summary":"Delete Authenticator","operationId":"accountDeleteAuthenticator","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"deleteAuthenticator","weight":46,"cookies":false,"type":"","demo":"account\/delete-authenticator.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-mfa.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"provider","description":"Provider.","required":true,"type":"string","x-example":"totp","enum":["totp"],"x-enum-name":"AuthenticatorProvider","x-enum-keys":[],"in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"otp":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[OTP]"}},"required":["otp"]}}]}},"\/account\/name":{"patch":{"summary":"Update name","operationId":"accountUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateName","weight":27,"cookies":false,"type":"","demo":"account\/update-name.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-name.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"User name. Max length: 128 chars.","default":null,"x-example":"[NAME]"}},"required":["name"]}}]}},"\/account\/password":{"patch":{"summary":"Update password","operationId":"accountUpdatePassword","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePassword","weight":28,"cookies":false,"type":"","demo":"account\/update-password.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-password.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"password":{"type":"string","description":"New user password. Must be at least 8 chars.","default":null,"x-example":null},"oldPassword":{"type":"string","description":"Current user password. Must be at least 8 chars.","default":"","x-example":"password"}},"required":["password"]}}]}},"\/account\/phone":{"patch":{"summary":"Update phone","operationId":"accountUpdatePhone","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createPhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePhone","weight":30,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["phone","password"]}}]}},"\/account\/prefs":{"get":{"summary":"Get account preferences","operationId":"accountGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get the preferences as a key-value object for the currently logged in user.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":23,"cookies":false,"type":"","demo":"account\/get-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/prefs","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]},"patch":{"summary":"Update preferences","operationId":"accountUpdatePrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account preferences. The object you pass is stored as is, and replaces any previous value. The maximum allowed prefs size is 64kB and throws error if exceeded.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePrefs","weight":31,"cookies":false,"type":"","demo":"account\/update-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/prefs","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"prefs":{"type":"object","description":"Prefs key-value JSON object.","default":{},"x-example":"{}"}},"required":["prefs"]}}]}},"\/account\/recovery":{"post":{"summary":"Create password recovery","operationId":"accountCreateRecovery","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Sends the user an email with a temporary secret key for password reset. When the user clicks the confirmation link he is redirected back to your app password reset URL with the secret key and email address values attached to the URL query string. Use the query string params to submit a request to the [PUT \/account\/recovery](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateRecovery) endpoint to complete the process. The verification link sent to the user's email address is valid for 1 hour.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createRecovery","weight":36,"cookies":false,"type":"","demo":"account\/create-recovery.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-recovery.md","rate-limit":10,"rate-time":3600,"rate-key":["url:{url},email:{param-email}","ip:{ip}"],"scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"url":{"type":"string","description":"URL to redirect the user back to your app from the recovery email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":null,"x-example":"https:\/\/example.com"}},"required":["email","url"]}}]},"put":{"summary":"Create password recovery (confirmation)","operationId":"accountUpdateRecovery","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete the user account password reset. Both the **userId** and **secret** arguments will be passed as query parameters to the redirect URL you have provided when sending your request to the [POST \/account\/recovery](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createRecovery) endpoint.\n\nPlease note that in order to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) the only valid redirect URLs are the ones from domains you have set when adding your platforms in the console interface.","responses":{"200":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"updateRecovery","weight":37,"cookies":false,"type":"","demo":"account\/update-recovery.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-recovery.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid reset token.","default":null,"x-example":"[SECRET]"},"password":{"type":"string","description":"New user password. Must be between 8 and 256 chars.","default":null,"x-example":null}},"required":["userId","secret","password"]}}]}},"\/account\/sessions":{"get":{"summary":"List sessions","operationId":"accountListSessions","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get the list of active sessions across different devices for the currently logged in user.","responses":{"200":{"description":"Sessions List","schema":{"$ref":"#\/definitions\/sessionList"}}},"x-appwrite":{"method":"listSessions","weight":24,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/sessions","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]},"delete":{"summary":"Delete sessions","operationId":"accountDeleteSessions","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":35,"cookies":false,"type":"","demo":"account\/delete-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-sessions.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/account\/sessions\/anonymous":{"post":{"summary":"Create anonymous session","operationId":"accountCreateAnonymousSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to allow a new user to register an anonymous account in your project. This route will also create a new session for the user. To allow the new user to convert an anonymous account to a normal account, you need to update its [email and password](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateEmail) or create an [OAuth2 session](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#CreateOAuth2Session).","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"createAnonymousSession","weight":20,"cookies":false,"type":"","demo":"account\/create-anonymous-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-anonymous.md","rate-limit":50,"rate-time":3600,"rate-key":"ip:{ip}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/sessions\/email":{"post":{"summary":"Create email password session","operationId":"accountCreateEmailPasswordSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Allow the user to login into their account by providing a valid email and password combination. This route will create a new session for the user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"createEmailPasswordSession","weight":8,"cookies":false,"type":"","demo":"account\/create-email-password-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-email-password.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["email","password"]}}]}},"\/account\/sessions\/magic-url":{"put":{"summary":"Create session (deprecated)","operationId":"accountUpdateMagicURLSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to create a session from token. Provide the **userId** and **secret** parameters from the successful response of authentication flows initiated by token creation. For example, magic URL and phone login.","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateMagicURLSession","weight":17,"cookies":false,"type":"","demo":"account\/update-magic-u-r-l-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session.md","rate-limit":10,"rate-time":3600,"rate-key":"ip:{ip},userId:{param-userId}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/account\/sessions\/oauth2\/{provider}":{"get":{"summary":"Create OAuth2 session","operationId":"accountCreateOAuth2Session","consumes":["application\/json"],"produces":["text\/html"],"tags":["account"],"description":"Allow the user to login to their account using the OAuth2 provider of their choice. Each OAuth2 provider should be enabled from the Appwrite console first. Use the success and failure arguments to provide a redirect URL's back to your app when login is completed.\n\nIf there is already an active session, the new session will be attached to the logged-in account. If there are no active sessions, the server will attempt to look for a user with the same email address as the email received from the OAuth2 provider and attach the new session to the existing user. If no matching user is found - the server will create a new user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).\n","responses":{"301":{"description":"No content"}},"x-appwrite":{"method":"createOAuth2Session","weight":9,"cookies":false,"type":"webAuth","demo":"account\/create-o-auth2session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-oauth2.md","rate-limit":50,"rate-time":3600,"rate-key":"ip:{ip}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"provider","description":"OAuth2 Provider. Currently, supported providers are: amazon, apple, auth0, authentik, autodesk, bitbucket, bitly, box, dailymotion, discord, disqus, dropbox, etsy, facebook, github, gitlab, google, linkedin, microsoft, notion, oidc, okta, paypal, paypalSandbox, podio, salesforce, slack, spotify, stripe, tradeshift, tradeshiftBox, twitch, wordpress, yahoo, yammer, yandex, zoho, zoom.","required":true,"type":"string","x-example":"amazon","enum":["amazon","apple","auth0","authentik","autodesk","bitbucket","bitly","box","dailymotion","discord","disqus","dropbox","etsy","facebook","github","gitlab","google","linkedin","microsoft","notion","oidc","okta","paypal","paypalSandbox","podio","salesforce","slack","spotify","stripe","tradeshift","tradeshiftBox","twitch","wordpress","yahoo","yammer","yandex","zoho","zoom","mock"],"x-enum-name":"OAuthProvider","x-enum-keys":[],"in":"path"},{"name":"success","description":"URL to redirect back to your app after a successful login attempt. Only URLs from hostnames in your project's platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","required":false,"type":"string","format":"url","x-example":"https:\/\/example.com","default":"","in":"query"},{"name":"failure","description":"URL to redirect back to your app after a failed login attempt. Only URLs from hostnames in your project's platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","required":false,"type":"string","format":"url","x-example":"https:\/\/example.com","default":"","in":"query"},{"name":"token","description":"Include token credentials in the final redirect, useful for server-side integrations, or when cookies are not available.","required":false,"type":"boolean","x-example":false,"default":false,"in":"query"},{"name":"scopes","description":"A list of custom OAuth2 scopes. Check each provider internal docs for a list of supported scopes. Maximum of 100 scopes are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/sessions\/token":{"post":{"summary":"Create session","operationId":"accountCreateSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to create a session from token. Provide the **userId** and **secret** parameters from the successful response of authentication flows initiated by token creation. For example, magic URL and phone login.","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"createSession","weight":18,"cookies":false,"type":"","demo":"account\/create-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session.md","rate-limit":10,"rate-time":3600,"rate-key":"ip:{ip},userId:{param-userId}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Secret of a token generated by login methods. For example, the `createMagicURLToken` or `createPhoneToken` methods.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/account\/sessions\/{sessionId}":{"get":{"summary":"Get session","operationId":"accountGetSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to get a logged in user's session using a Session ID. Inputting 'current' will return the current session being used.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"getSession","weight":26,"cookies":false,"type":"","demo":"account\/get-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-session.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/sessions","offline-key":"{sessionId}","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to get the current device session.","required":true,"type":"string","x-example":"[SESSION_ID]","in":"path"}]},"patch":{"summary":"Update (or renew) a session","operationId":"accountUpdateSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Extend session's expiry to increase it's lifespan. Extending a session is useful when session length is short such as 5 minutes.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateSession","weight":34,"cookies":false,"type":"","demo":"account\/update-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-session.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to update the current device session.","required":true,"type":"string","x-example":"[SESSION_ID]","in":"path"}]},"delete":{"summary":"Delete session","operationId":"accountDeleteSession","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Logout the user. Use 'current' as the session ID to logout on this device, use a session ID to logout on another device. If you're looking to logout the user on all devices, use [Delete Sessions](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#deleteSessions) instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSession","weight":33,"cookies":false,"type":"","demo":"account\/delete-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-session.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to delete the current device session.","required":true,"type":"string","x-example":"[SESSION_ID]","in":"path"}]}},"\/account\/status":{"patch":{"summary":"Update status","operationId":"accountUpdateStatus","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateStatus","weight":32,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/account\/tokens\/email":{"post":{"summary":"Create email token (OTP)","operationId":"accountCreateEmailToken","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Sends the user an email with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [POST \/v1\/account\/sessions\/token](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createSession) endpoint to complete the login process. The secret sent to the user's email is valid for 15 minutes.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createEmailToken","weight":16,"cookies":false,"type":"","demo":"account\/create-email-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-token-email.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"phrase":{"type":"boolean","description":"Toggle for security phrase. If enabled, email will be send with a randomly generated phrase and the phrase will also be included in the response. Confirming phrases match increases the security of your authentication flow.","default":false,"x-example":false}},"required":["userId","email"]}}]}},"\/account\/tokens\/magic-url":{"post":{"summary":"Create magic URL token","operationId":"accountCreateMagicURLToken","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Sends the user an email with a secret key for creating a session. If the provided user ID has not been registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [POST \/v1\/account\/sessions\/token](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createSession) endpoint to complete the login process. The link sent to the user's email address is valid for 1 hour. If you are on a mobile device you can leave the URL parameter empty, so that the login completion will be handled by your Appwrite instance by default.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).\n","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createMagicURLToken","weight":15,"cookies":false,"type":"","demo":"account\/create-magic-u-r-l-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-token-magic-url.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"url":{"type":"string","description":"URL to redirect the user back to your app from the magic URL login. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":"","x-example":"https:\/\/example.com"},"phrase":{"type":"boolean","description":"Toggle for security phrase. If enabled, email will be send with a randomly generated phrase and the phrase will also be included in the response. Confirming phrases match increases the security of your authentication flow.","default":false,"x-example":false}},"required":["userId","email"]}}]}},"\/account\/tokens\/phone":{"post":{"summary":"Create phone token","operationId":"accountCreatePhoneToken","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Sends the user an SMS with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [POST \/v1\/account\/sessions\/token](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createSession) endpoint to complete the login process. The secret sent to the user's phone is valid for 15 minutes.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createPhoneToken","weight":19,"cookies":false,"type":"","demo":"account\/create-phone-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-token-phone.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},phone:{param-phone}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"}},"required":["userId","phone"]}}]}},"\/account\/verification":{"post":{"summary":"Create email verification","operationId":"accountCreateVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to send a verification message to your user email address to confirm they are the valid owners of that address. Both the **userId** and **secret** arguments will be passed as query parameters to the URL you have provided to be attached to the verification email. The provided URL should redirect the user back to your app and allow you to complete the verification process by verifying both the **userId** and **secret** parameters. Learn more about how to [complete the verification process](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateVerification). The verification link sent to the user's email address is valid for 7 days.\n\nPlease note that in order to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md), the only valid redirect URLs are the ones from domains you have set when adding your platforms in the console interface.\n","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createVerification","weight":38,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"url":{"type":"string","description":"URL to redirect the user back to your app from the verification email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":null,"x-example":"https:\/\/example.com"}},"required":["url"]}}]},"put":{"summary":"Create email verification (confirmation)","operationId":"accountUpdateVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete the user email verification process. Use both the **userId** and **secret** parameters that were attached to your app URL to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"updateVerification","weight":39,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/account\/verification\/phone":{"post":{"summary":"Create phone verification","operationId":"accountCreatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updatePhone) endpoint. Learn more about how to [complete the verification process](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createPhoneVerification","weight":40,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{userId}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]},"put":{"summary":"Create phone verification (confirmation)","operationId":"accountUpdatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"updatePhoneVerification","weight":41,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/avatars\/browsers\/{code}":{"get":{"summary":"Get browser icon","operationId":"avatarsGetBrowser","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"You can use this endpoint to show different browser icons to your users. The code argument receives the browser code as it appears in your user [GET \/account\/sessions](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#getSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getBrowser","weight":54,"cookies":false,"type":"location","demo":"avatars\/get-browser.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-browser.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Browser Code.","required":true,"type":"string","x-example":"aa","enum":["aa","an","ch","ci","cm","cr","ff","sf","mf","ps","oi","om","op","on"],"x-enum-name":"Browser","x-enum-keys":["Avant Browser","Android WebView Beta","Google Chrome","Google Chrome (iOS)","Google Chrome (Mobile)","Chromium","Mozilla Firefox","Safari","Mobile Safari","Microsoft Edge","Microsoft Edge (iOS)","Opera Mini","Opera","Opera (Next)"],"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"}]}},"\/avatars\/credit-cards\/{code}":{"get":{"summary":"Get credit card icon","operationId":"avatarsGetCreditCard","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"The credit card endpoint will return you the icon of the credit card provider you need. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getCreditCard","weight":53,"cookies":false,"type":"location","demo":"avatars\/get-credit-card.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-credit-card.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Credit Card Code. Possible values: amex, argencard, cabal, censosud, diners, discover, elo, hipercard, jcb, mastercard, naranja, targeta-shopping, union-china-pay, visa, mir, maestro.","required":true,"type":"string","x-example":"amex","enum":["amex","argencard","cabal","censosud","diners","discover","elo","hipercard","jcb","mastercard","naranja","targeta-shopping","union-china-pay","visa","mir","maestro"],"x-enum-name":"CreditCard","x-enum-keys":["American Express","Argencard","Cabal","Consosud","Diners Club","Discover","Elo","Hipercard","JCB","Mastercard","Naranja","Tarjeta Shopping","Union China Pay","Visa","MIR","Maestro"],"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"}]}},"\/avatars\/favicon":{"get":{"summary":"Get favicon","operationId":"avatarsGetFavicon","consumes":["application\/json"],"produces":["image\/*"],"tags":["avatars"],"description":"Use this endpoint to fetch the favorite icon (AKA favicon) of any remote website URL.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFavicon","weight":57,"cookies":false,"type":"location","demo":"avatars\/get-favicon.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-favicon.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"url","description":"Website URL which you want to fetch the favicon from.","required":true,"type":"string","format":"url","x-example":"https:\/\/example.com","in":"query"}]}},"\/avatars\/flags\/{code}":{"get":{"summary":"Get country flag","operationId":"avatarsGetFlag","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"You can use this endpoint to show different country flags icons to your users. The code argument receives the 2 letter country code. Use width, height and quality arguments to change the output settings. Country codes follow the [ISO 3166-1](https:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFlag","weight":55,"cookies":false,"type":"location","demo":"avatars\/get-flag.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-flag.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Country Code. ISO Alpha-2 country code format.","required":true,"type":"string","x-example":"af","enum":["af","ao","al","ad","ae","ar","am","ag","au","at","az","bi","be","bj","bf","bd","bg","bh","bs","ba","by","bz","bo","br","bb","bn","bt","bw","cf","ca","ch","cl","cn","ci","cm","cd","cg","co","km","cv","cr","cu","cy","cz","de","dj","dm","dk","do","dz","ec","eg","er","es","ee","et","fi","fj","fr","fm","ga","gb","ge","gh","gn","gm","gw","gq","gr","gd","gt","gy","hn","hr","ht","hu","id","in","ie","ir","iq","is","il","it","jm","jo","jp","kz","ke","kg","kh","ki","kn","kr","kw","la","lb","lr","ly","lc","li","lk","ls","lt","lu","lv","ma","mc","md","mg","mv","mx","mh","mk","ml","mt","mm","me","mn","mz","mr","mu","mw","my","na","ne","ng","ni","nl","no","np","nr","nz","om","pk","pa","pe","ph","pw","pg","pl","kp","pt","py","qa","ro","ru","rw","sa","sd","sn","sg","sb","sl","sv","sm","so","rs","ss","st","sr","sk","si","se","sz","sc","sy","td","tg","th","tj","tm","tl","to","tt","tn","tr","tv","tz","ug","ua","uy","us","uz","va","vc","ve","vn","vu","ws","ye","za","zm","zw"],"x-enum-name":"Flag","x-enum-keys":["Afghanistan","Angola","Albania","Andorra","United Arab Emirates","Argentina","Armenia","Antigua and Barbuda","Australia","Austria","Azerbaijan","Burundi","Belgium","Benin","Burkina Faso","Bangladesh","Bulgaria","Bahrain","Bahamas","Bosnia and Herzegovina","Belarus","Belize","Bolivia","Brazil","Barbados","Brunei Darussalam","Bhutan","Botswana","Central African Republic","Canada","Switzerland","Chile","China","C\u00f4te d'Ivoire","Cameroon","Democratic Republic of the Congo","Republic of the Congo","Colombia","Comoros","Cape Verde","Costa Rica","Cuba","Cyprus","Czech Republic","Germany","Djibouti","Dominica","Denmark","Dominican Republic","Algeria","Ecuador","Egypt","Eritrea","Spain","Estonia","Ethiopia","Finland","Fiji","France","Micronesia (Federated States of)","Gabon","United Kingdom","Georgia","Ghana","Guinea","Gambia","Guinea-Bissau","Equatorial Guinea","Greece","Grenada","Guatemala","Guyana","Honduras","Croatia","Haiti","Hungary","Indonesia","India","Ireland","Iran (Islamic Republic of)","Iraq","Iceland","Israel","Italy","Jamaica","Jordan","Japan","Kazakhstan","Kenya","Kyrgyzstan","Cambodia","Kiribati","Saint Kitts and Nevis","South Korea","Kuwait","Lao People's Democratic Republic","Lebanon","Liberia","Libya","Saint Lucia","Liechtenstein","Sri Lanka","Lesotho","Lithuania","Luxembourg","Latvia","Morocco","Monaco","Moldova","Madagascar","Maldives","Mexico","Marshall Islands","North Macedonia","Mali","Malta","Myanmar","Montenegro","Mongolia","Mozambique","Mauritania","Mauritius","Malawi","Malaysia","Namibia","Niger","Nigeria","Nicaragua","Netherlands","Norway","Nepal","Nauru","New Zealand","Oman","Pakistan","Panama","Peru","Philippines","Palau","Papua New Guinea","Poland","North Korea","Portugal","Paraguay","Qatar","Romania","Russia","Rwanda","Saudi Arabia","Sudan","Senegal","Singapore","Solomon Islands","Sierra Leone","El Salvador","San Marino","Somalia","Serbia","South Sudan","Sao Tome and Principe","Suriname","Slovakia","Slovenia","Sweden","Eswatini","Seychelles","Syria","Chad","Togo","Thailand","Tajikistan","Turkmenistan","Timor-Leste","Tonga","Trinidad and Tobago","Tunisia","Turkey","Tuvalu","Tanzania","Uganda","Ukraine","Uruguay","United States","Uzbekistan","Vatican City","Saint Vincent and the Grenadines","Venezuela","Vietnam","Vanuatu","Samoa","Yemen","South Africa","Zambia","Zimbabwe"],"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"}]}},"\/avatars\/image":{"get":{"summary":"Get image from URL","operationId":"avatarsGetImage","consumes":["application\/json"],"produces":["image\/*"],"tags":["avatars"],"description":"Use this endpoint to fetch a remote image URL and crop it to any image size you want. This endpoint is very useful if you need to crop and display remote images in your app or in case you want to make sure a 3rd party image is properly served using a TLS protocol.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getImage","weight":56,"cookies":false,"type":"location","demo":"avatars\/get-image.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-image.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"url","description":"Image URL which you want to crop.","required":true,"type":"string","format":"url","x-example":"https:\/\/example.com","in":"query"},{"name":"width","description":"Resize preview image width, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get user initials","operationId":"avatarsGetInitials","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getInitials","weight":59,"cookies":false,"type":"location","demo":"avatars\/get-initials.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-initials.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"name","description":"Full Name. When empty, current user name or email will be used. Max length: 128 chars.","required":false,"type":"string","x-example":"[NAME]","default":"","in":"query"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":500,"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":500,"in":"query"},{"name":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"type":"string","default":"","in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR code","operationId":"avatarsGetQR","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getQR","weight":58,"cookies":false,"type":"location","demo":"avatars\/get-q-r.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-qr.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"text","description":"Plain text to be converted to QR code image.","required":true,"type":"string","x-example":"[TEXT]","in":"query"},{"name":"size","description":"QR code size. Pass an integer between 1 to 1000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":1,"default":400,"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"type":"integer","format":"int32","x-example":0,"default":1,"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"type":"boolean","x-example":false,"default":false,"in":"query"}]}},"\/databases":{"get":{"summary":"List databases","operationId":"databasesList","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all databases from the current Appwrite project. You can use the search parameter to filter your results.","responses":{"200":{"description":"Databases List","schema":{"$ref":"#\/definitions\/databaseList"}}},"x-appwrite":{"method":"list","weight":64,"cookies":false,"type":"","demo":"databases\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create database","operationId":"databasesCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Database.\n","responses":{"201":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"create","weight":63,"cookies":false,"type":"","demo":"databases\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"databaseId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[DATABASE_ID]"},"name":{"type":"string","description":"Database name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Is the database enabled? When set to 'disabled', users cannot access the database but Server SDKs with an API key can still read and write to the database. No data is lost when this is toggled.","default":true,"x-example":false}},"required":["databaseId","name"]}}]}},"\/databases\/{databaseId}":{"get":{"summary":"Get database","operationId":"databasesGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a database by its unique ID. This endpoint response returns a JSON object with the database metadata.","responses":{"200":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"get","weight":65,"cookies":false,"type":"","demo":"databases\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"}]},"put":{"summary":"Update database","operationId":"databasesUpdate","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a database by its unique ID.","responses":{"200":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"update","weight":67,"cookies":false,"type":"","demo":"databases\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Database name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Is database enabled? When set to 'disabled', users cannot access the database but Server SDKs with an API key can still read and write to the database. No data is lost when this is toggled.","default":true,"x-example":false}},"required":["name"]}}]},"delete":{"summary":"Delete database","operationId":"databasesDelete","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a database by its unique ID. Only API keys with with databases.write scope can delete a database.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":68,"cookies":false,"type":"","demo":"databases\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections":{"get":{"summary":"List collections","operationId":"databasesListCollections","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all collections that belong to the provided databaseId. You can use the search parameter to filter your results.","responses":{"200":{"description":"Collections List","schema":{"$ref":"#\/definitions\/collectionList"}}},"x-appwrite":{"method":"listCollections","weight":70,"cookies":false,"type":"","demo":"databases\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, documentSecurity","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create collection","operationId":"databasesCreateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Collection. Before using this route, you should create a new database resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"createCollection","weight":69,"cookies":false,"type":"","demo":"databases\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permissions strings. By default, no user is granted with any permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":false,"x-example":false},"enabled":{"type":"boolean","description":"Is collection enabled? When set to 'disabled', users cannot access the collection but Server SDKs with and API key can still read and write to the collection. No data is lost when this is toggled.","default":true,"x-example":false}},"required":["collectionId","name"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}":{"get":{"summary":"Get collection","operationId":"databasesGetCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a collection by its unique ID. This endpoint response returns a JSON object with the collection metadata.","responses":{"200":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"getCollection","weight":71,"cookies":false,"type":"","demo":"databases\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]},"put":{"summary":"Update collection","operationId":"databasesUpdateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a collection by its unique ID.","responses":{"200":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"updateCollection","weight":73,"cookies":false,"type":"","demo":"databases\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":false,"x-example":false},"enabled":{"type":"boolean","description":"Is collection enabled? When set to 'disabled', users cannot access the collection but Server SDKs with and API key can still read and write to the collection. No data is lost when this is toggled.","default":true,"x-example":false}},"required":["name"]}}]},"delete":{"summary":"Delete collection","operationId":"databasesDeleteCollection","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a collection by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteCollection","weight":74,"cookies":false,"type":"","demo":"databases\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes":{"get":{"summary":"List attributes","operationId":"databasesListAttributes","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Attributes List","schema":{"$ref":"#\/definitions\/attributeList"}}},"x-appwrite":{"method":"listAttributes","weight":85,"cookies":false,"type":"","demo":"databases\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: key, type, size, required, array, status, error","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create boolean attribute","operationId":"databasesCreateBooleanAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a boolean attribute.\n","responses":{"202":{"description":"AttributeBoolean","schema":{"$ref":"#\/definitions\/attributeBoolean"}}},"x-appwrite":{"method":"createBooleanAttribute","weight":82,"cookies":false,"type":"","demo":"databases\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":false},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean\/{key}":{"patch":{"summary":"Update boolean attribute","operationId":"databasesUpdateBooleanAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"","responses":{"200":{"description":"AttributeBoolean","schema":{"$ref":"#\/definitions\/attributeBoolean"}}},"x-appwrite":{"method":"updateBooleanAttribute","weight":94,"cookies":false,"type":"","demo":"databases\/update-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":false,"x-nullable":true}},"required":["required","default"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/datetime":{"post":{"summary":"Create datetime attribute","operationId":"databasesCreateDatetimeAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"AttributeDatetime","schema":{"$ref":"#\/definitions\/attributeDatetime"}}},"x-appwrite":{"method":"createDatetimeAttribute","weight":83,"cookies":false,"type":"","demo":"databases\/create-datetime-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-datetime-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for the attribute in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/datetime\/{key}":{"patch":{"summary":"Update dateTime attribute","operationId":"databasesUpdateDatetimeAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"","responses":{"200":{"description":"AttributeDatetime","schema":{"$ref":"#\/definitions\/attributeDatetime"}}},"x-appwrite":{"method":"updateDatetimeAttribute","weight":95,"cookies":false,"type":"","demo":"databases\/update-datetime-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-datetime-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null,"x-nullable":true}},"required":["required","default"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create email attribute","operationId":"databasesCreateEmailAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create an email attribute.\n","responses":{"202":{"description":"AttributeEmail","schema":{"$ref":"#\/definitions\/attributeEmail"}}},"x-appwrite":{"method":"createEmailAttribute","weight":76,"cookies":false,"type":"","demo":"databases\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"email@example.com"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/email\/{key}":{"patch":{"summary":"Update email attribute","operationId":"databasesUpdateEmailAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Update an email attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeEmail","schema":{"$ref":"#\/definitions\/attributeEmail"}}},"x-appwrite":{"method":"updateEmailAttribute","weight":88,"cookies":false,"type":"","demo":"databases\/update-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"email@example.com","x-nullable":true}},"required":["required","default"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create enum attribute","operationId":"databasesCreateEnumAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"AttributeEnum","schema":{"$ref":"#\/definitions\/attributeEnum"}}},"x-appwrite":{"method":"createEnumAttribute","weight":77,"cookies":false,"type":"","demo":"databases\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"elements":{"type":"array","description":"Array of elements in enumerated type. Uses length of longest element to determine size. Maximum of 100 elements are allowed, each 255 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","elements","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/enum\/{key}":{"patch":{"summary":"Update enum attribute","operationId":"databasesUpdateEnumAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Update an enum attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeEnum","schema":{"$ref":"#\/definitions\/attributeEnum"}}},"x-appwrite":{"method":"updateEnumAttribute","weight":89,"cookies":false,"type":"","demo":"databases\/update-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-enum-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"elements":{"type":"array","description":"Array of elements in enumerated type. Uses length of longest element to determine size. Maximum of 100 elements are allowed, each 255 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"[DEFAULT]","x-nullable":true}},"required":["elements","required","default"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create float attribute","operationId":"databasesCreateFloatAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeFloat","schema":{"$ref":"#\/definitions\/attributeFloat"}}},"x-appwrite":{"method":"createFloatAttribute","weight":81,"cookies":false,"type":"","demo":"databases\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"min":{"type":"number","description":"Minimum value to enforce on new documents","default":null,"x-example":null},"max":{"type":"number","description":"Maximum value to enforce on new documents","default":null,"x-example":null},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/float\/{key}":{"patch":{"summary":"Update float attribute","operationId":"databasesUpdateFloatAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Update a float attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeFloat","schema":{"$ref":"#\/definitions\/attributeFloat"}}},"x-appwrite":{"method":"updateFloatAttribute","weight":93,"cookies":false,"type":"","demo":"databases\/update-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"min":{"type":"number","description":"Minimum value to enforce on new documents","default":null,"x-example":null},"max":{"type":"number","description":"Maximum value to enforce on new documents","default":null,"x-example":null},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null,"x-nullable":true}},"required":["required","min","max","default"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create integer attribute","operationId":"databasesCreateIntegerAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeInteger","schema":{"$ref":"#\/definitions\/attributeInteger"}}},"x-appwrite":{"method":"createIntegerAttribute","weight":80,"cookies":false,"type":"","demo":"databases\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"min":{"type":"integer","description":"Minimum value to enforce on new documents","default":null,"x-example":null},"max":{"type":"integer","description":"Maximum value to enforce on new documents","default":null,"x-example":null},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/integer\/{key}":{"patch":{"summary":"Update integer attribute","operationId":"databasesUpdateIntegerAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Update an integer attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeInteger","schema":{"$ref":"#\/definitions\/attributeInteger"}}},"x-appwrite":{"method":"updateIntegerAttribute","weight":92,"cookies":false,"type":"","demo":"databases\/update-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"min":{"type":"integer","description":"Minimum value to enforce on new documents","default":null,"x-example":null},"max":{"type":"integer","description":"Maximum value to enforce on new documents","default":null,"x-example":null},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null,"x-nullable":true}},"required":["required","min","max","default"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP address attribute","operationId":"databasesCreateIpAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create IP address attribute.\n","responses":{"202":{"description":"AttributeIP","schema":{"$ref":"#\/definitions\/attributeIp"}}},"x-appwrite":{"method":"createIpAttribute","weight":78,"cookies":false,"type":"","demo":"databases\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/ip\/{key}":{"patch":{"summary":"Update IP address attribute","operationId":"databasesUpdateIpAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Update an ip attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeIP","schema":{"$ref":"#\/definitions\/attributeIp"}}},"x-appwrite":{"method":"updateIpAttribute","weight":90,"cookies":false,"type":"","demo":"databases\/update-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null,"x-nullable":true}},"required":["required","default"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/relationship":{"post":{"summary":"Create relationship attribute","operationId":"databasesCreateRelationshipAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create relationship attribute. [Learn more about relationship attributes](https:\/\/appwrite.io\/docs\/databases-relationships#relationship-attributes).\n","responses":{"202":{"description":"AttributeRelationship","schema":{"$ref":"#\/definitions\/attributeRelationship"}}},"x-appwrite":{"method":"createRelationshipAttribute","weight":84,"cookies":false,"type":"","demo":"databases\/create-relationship-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-relationship-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"relatedCollectionId":{"type":"string","description":"Related Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","default":null,"x-example":"[RELATED_COLLECTION_ID]"},"type":{"type":"string","description":"Relation type","default":null,"x-example":"oneToOne","enum":["oneToOne","manyToOne","manyToMany","oneToMany"],"x-enum-name":"RelationshipType","x-enum-keys":[]},"twoWay":{"type":"boolean","description":"Is Two Way?","default":false,"x-example":false},"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"twoWayKey":{"type":"string","description":"Two Way Attribute Key.","default":null,"x-example":null},"onDelete":{"type":"string","description":"Constraints option","default":"restrict","x-example":"cascade","enum":["cascade","restrict","setNull"],"x-enum-name":"RelationMutate","x-enum-keys":[]}},"required":["relatedCollectionId","type"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create string attribute","operationId":"databasesCreateStringAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a string attribute.\n","responses":{"202":{"description":"AttributeString","schema":{"$ref":"#\/definitions\/attributeString"}}},"x-appwrite":{"method":"createStringAttribute","weight":75,"cookies":false,"type":"","demo":"databases\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"size":{"type":"integer","description":"Attribute size for text attributes, in number of characters.","default":null,"x-example":1},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false},"encrypt":{"type":"boolean","description":"Toggle encryption for the attribute. Encryption enhances security by not storing any plain text values in the database. However, encrypted attributes cannot be queried.","default":false,"x-example":false}},"required":["key","size","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/string\/{key}":{"patch":{"summary":"Update string attribute","operationId":"databasesUpdateStringAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Update a string attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeString","schema":{"$ref":"#\/definitions\/attributeString"}}},"x-appwrite":{"method":"updateStringAttribute","weight":87,"cookies":false,"type":"","demo":"databases\/update-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"[DEFAULT]","x-nullable":true}},"required":["required","default"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL attribute","operationId":"databasesCreateUrlAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a URL attribute.\n","responses":{"202":{"description":"AttributeURL","schema":{"$ref":"#\/definitions\/attributeUrl"}}},"x-appwrite":{"method":"createUrlAttribute","weight":79,"cookies":false,"type":"","demo":"databases\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"https:\/\/example.com"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url\/{key}":{"patch":{"summary":"Update URL attribute","operationId":"databasesUpdateUrlAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Update an url attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeURL","schema":{"$ref":"#\/definitions\/attributeUrl"}}},"x-appwrite":{"method":"updateUrlAttribute","weight":91,"cookies":false,"type":"","demo":"databases\/update-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"https:\/\/example.com","x-nullable":true}},"required":["required","default"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get attribute","operationId":"databasesGetAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, or AttributeDatetime, or AttributeRelationship, or AttributeString","schema":{"x-oneOf":[{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeRelationship"},{"$ref":"#\/definitions\/attributeString"}]}}},"x-appwrite":{"method":"getAttribute","weight":86,"cookies":false,"type":"","demo":"databases\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"}]},"delete":{"summary":"Delete attribute","operationId":"databasesDeleteAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":97,"cookies":false,"type":"","demo":"databases\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/{key}\/relationship":{"patch":{"summary":"Update relationship attribute","operationId":"databasesUpdateRelationshipAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Update relationship attribute. [Learn more about relationship attributes](https:\/\/appwrite.io\/docs\/databases-relationships#relationship-attributes).\n","responses":{"200":{"description":"AttributeRelationship","schema":{"$ref":"#\/definitions\/attributeRelationship"}}},"x-appwrite":{"method":"updateRelationshipAttribute","weight":96,"cookies":false,"type":"","demo":"databases\/update-relationship-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-relationship-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"onDelete":{"type":"string","description":"Constraints option","default":null,"x-example":"cascade","enum":["cascade","restrict","setNull"],"x-enum-name":"RelationMutate","x-enum-keys":[]}}}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List documents","operationId":"databasesListDocuments","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","schema":{"$ref":"#\/definitions\/documentList"}}},"x-appwrite":{"method":"listDocuments","weight":103,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"post":{"summary":"Create document","operationId":"databasesCreateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"createDocument","weight":102,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","default":{},"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, only the current user is granted all permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get document","operationId":"databasesGetDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"getDocument","weight":104,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"patch":{"summary":"Update document","operationId":"databasesUpdateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"updateDocument","weight":106,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","default":[],"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete document","operationId":"databasesDeleteDocument","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":107,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes":{"get":{"summary":"List indexes","operationId":"databasesListIndexes","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Indexes List","schema":{"$ref":"#\/definitions\/indexList"}}},"x-appwrite":{"method":"listIndexes","weight":99,"cookies":false,"type":"","demo":"databases\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: key, type, status, attributes, error","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"post":{"summary":"Create index","operationId":"databasesCreateIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"createIndex","weight":98,"cookies":false,"type":"","demo":"databases\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Index Key.","default":null,"x-example":null},"type":{"type":"string","description":"Index type.","default":null,"x-example":"key","enum":["key","fulltext","unique","spatial"],"x-enum-name":"IndexType","x-enum-keys":[]},"attributes":{"type":"array","description":"Array of attributes to index. Maximum of 100 attributes are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders. Maximum of 100 orders are allowed.","default":[],"x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get index","operationId":"databasesGetIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"getIndex","weight":100,"cookies":false,"type":"","demo":"databases\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Index Key.","required":true,"type":"string","in":"path"}]},"delete":{"summary":"Delete index","operationId":"databasesDeleteIndex","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":101,"cookies":false,"type":"","demo":"databases\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Index Key.","required":true,"type":"string","in":"path"}]}},"\/functions":{"get":{"summary":"List functions","operationId":"functionsList","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the project's functions. You can use the query params to filter your results.","responses":{"200":{"description":"Functions List","schema":{"$ref":"#\/definitions\/functionList"}}},"x-appwrite":{"method":"list","weight":266,"cookies":false,"type":"","demo":"functions\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-functions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, runtime, deployment, schedule, scheduleNext, schedulePrevious, timeout, entrypoint, commands, installationId","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create function","operationId":"functionsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function. You can pass a list of [permissions](https:\/\/appwrite.io\/docs\/permissions) to allow different project users or team with access to execute the function using the client API.","responses":{"201":{"description":"Function","schema":{"$ref":"#\/definitions\/function"}}},"x-appwrite":{"method":"create","weight":265,"cookies":false,"type":"","demo":"functions\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"functionId":{"type":"string","description":"Function ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[FUNCTION_ID]"},"name":{"type":"string","description":"Function name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"runtime":{"type":"string","description":"Execution runtime.","default":null,"x-example":"node-18.0","enum":["node-18.0","php-8.0","ruby-3.1","python-3.9"],"x-enum-name":null,"x-enum-keys":[]},"execute":{"type":"array","description":"An array of role strings with execution permissions. By default no user is granted with any execute permissions. [learn more about roles](https:\/\/appwrite.io\/docs\/permissions#permission-roles). Maximum of 100 roles are allowed, each 64 characters long.","default":[],"x-example":"[\"any\"]","items":{"type":"string"}},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","default":[],"x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","default":"","x-example":null},"timeout":{"type":"integer","description":"Function maximum execution time in seconds.","default":15,"x-example":1},"enabled":{"type":"boolean","description":"Is function enabled? When set to 'disabled', users cannot access the function but Server SDKs with and API key can still access the function. No data is lost when this is toggled.","default":true,"x-example":false},"logging":{"type":"boolean","description":"Whether executions will be logged. When set to false, executions will not be logged, but will reduce resource used by your Appwrite project.","default":true,"x-example":false},"entrypoint":{"type":"string","description":"Entrypoint File. This path is relative to the \"providerRootDirectory\".","default":"","x-example":"[ENTRYPOINT]"},"commands":{"type":"string","description":"Build Commands.","default":"","x-example":"[COMMANDS]"},"installationId":{"type":"string","description":"Appwrite Installation ID for VCS (Version Control System) deployment.","default":"","x-example":"[INSTALLATION_ID]"},"providerRepositoryId":{"type":"string","description":"Repository ID of the repo linked to the function.","default":"","x-example":"[PROVIDER_REPOSITORY_ID]"},"providerBranch":{"type":"string","description":"Production branch for the repo linked to the function.","default":"","x-example":"[PROVIDER_BRANCH]"},"providerSilentMode":{"type":"boolean","description":"Is the VCS (Version Control System) connection in silent mode for the repo linked to the function? In silent mode, comments will not be made on commits and pull requests.","default":false,"x-example":false},"providerRootDirectory":{"type":"string","description":"Path to function code in the linked repo.","default":"","x-example":"[PROVIDER_ROOT_DIRECTORY]"},"templateRepository":{"type":"string","description":"Repository name of the template.","default":"","x-example":"[TEMPLATE_REPOSITORY]"},"templateOwner":{"type":"string","description":"The name of the owner of the template.","default":"","x-example":"[TEMPLATE_OWNER]"},"templateRootDirectory":{"type":"string","description":"Path to function code in the template repo.","default":"","x-example":"[TEMPLATE_ROOT_DIRECTORY]"},"templateBranch":{"type":"string","description":"Production branch for the repo linked to the function template.","default":"","x-example":"[TEMPLATE_BRANCH]"}},"required":["functionId","name","runtime"]}}]}},"\/functions\/runtimes":{"get":{"summary":"List runtimes","operationId":"functionsListRuntimes","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all runtimes that are currently active on your instance.","responses":{"200":{"description":"Runtimes List","schema":{"$ref":"#\/definitions\/runtimeList"}}},"x-appwrite":{"method":"listRuntimes","weight":267,"cookies":false,"type":"","demo":"functions\/list-runtimes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-runtimes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/functions\/{functionId}":{"get":{"summary":"Get function","operationId":"functionsGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a function by its unique ID.","responses":{"200":{"description":"Function","schema":{"$ref":"#\/definitions\/function"}}},"x-appwrite":{"method":"get","weight":268,"cookies":false,"type":"","demo":"functions\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"}]},"put":{"summary":"Update function","operationId":"functionsUpdate","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Update function by its unique ID.","responses":{"200":{"description":"Function","schema":{"$ref":"#\/definitions\/function"}}},"x-appwrite":{"method":"update","weight":271,"cookies":false,"type":"","demo":"functions\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Function name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"runtime":{"type":"string","description":"Execution runtime.","default":"","x-example":"node-18.0","enum":["node-18.0","php-8.0","ruby-3.1","python-3.9"],"x-enum-name":null,"x-enum-keys":[]},"execute":{"type":"array","description":"An array of role strings with execution permissions. By default no user is granted with any execute permissions. [learn more about roles](https:\/\/appwrite.io\/docs\/permissions#permission-roles). Maximum of 100 roles are allowed, each 64 characters long.","default":[],"x-example":"[\"any\"]","items":{"type":"string"}},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","default":[],"x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","default":"","x-example":null},"timeout":{"type":"integer","description":"Maximum execution time in seconds.","default":15,"x-example":1},"enabled":{"type":"boolean","description":"Is function enabled? When set to 'disabled', users cannot access the function but Server SDKs with and API key can still access the function. No data is lost when this is toggled.","default":true,"x-example":false},"logging":{"type":"boolean","description":"Whether executions will be logged. When set to false, executions will not be logged, but will reduce resource used by your Appwrite project.","default":true,"x-example":false},"entrypoint":{"type":"string","description":"Entrypoint File. This path is relative to the \"providerRootDirectory\".","default":"","x-example":"[ENTRYPOINT]"},"commands":{"type":"string","description":"Build Commands.","default":"","x-example":"[COMMANDS]"},"installationId":{"type":"string","description":"Appwrite Installation ID for VCS (Version Controle System) deployment.","default":"","x-example":"[INSTALLATION_ID]"},"providerRepositoryId":{"type":"string","description":"Repository ID of the repo linked to the function","default":"","x-example":"[PROVIDER_REPOSITORY_ID]"},"providerBranch":{"type":"string","description":"Production branch for the repo linked to the function","default":"","x-example":"[PROVIDER_BRANCH]"},"providerSilentMode":{"type":"boolean","description":"Is the VCS (Version Control System) connection in silent mode for the repo linked to the function? In silent mode, comments will not be made on commits and pull requests.","default":false,"x-example":false},"providerRootDirectory":{"type":"string","description":"Path to function code in the linked repo.","default":"","x-example":"[PROVIDER_ROOT_DIRECTORY]"}},"required":["name"]}}]},"delete":{"summary":"Delete function","operationId":"functionsDelete","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"Delete a function by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":274,"cookies":false,"type":"","demo":"functions\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"}]}},"\/functions\/{functionId}\/deployments":{"get":{"summary":"List deployments","operationId":"functionsListDeployments","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the project's code deployments. You can use the query params to filter your results.","responses":{"200":{"description":"Deployments List","schema":{"$ref":"#\/definitions\/deploymentList"}}},"x-appwrite":{"method":"listDeployments","weight":276,"cookies":false,"type":"","demo":"functions\/list-deployments.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-deployments.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: size, buildId, activate, entrypoint, commands","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create deployment","operationId":"functionsCreateDeployment","consumes":["multipart\/form-data"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function code deployment. Use this endpoint to upload a new version of your code function. To execute your newly uploaded code, you'll need to update the function's deployment to use your new deployment UID.\n\nThis endpoint accepts a tar.gz file compressed with your code. Make sure to include any dependencies your code has within the compressed file. You can learn more about code packaging in the [Appwrite Cloud Functions tutorial](https:\/\/appwrite.io\/docs\/functions).\n\nUse the \"command\" param to set the entrypoint used to execute your code.","responses":{"202":{"description":"Deployment","schema":{"$ref":"#\/definitions\/deployment"}}},"x-appwrite":{"method":"createDeployment","weight":275,"cookies":false,"type":"","demo":"functions\/create-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":true,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"entrypoint","description":"Entrypoint File.","required":false,"type":"string","x-example":"[ENTRYPOINT]","in":"formData"},{"name":"commands","description":"Build Commands.","required":false,"type":"string","x-example":"[COMMANDS]","in":"formData"},{"name":"code","description":"Gzip file with your code package. When used with the Appwrite CLI, pass the path to your code directory, and the CLI will automatically package your code. Use a path that is within the current directory.","required":true,"type":"file","in":"formData"},{"name":"activate","description":"Automatically activate the deployment when it is finished building.","required":true,"type":"boolean","x-example":false,"in":"formData"}]}},"\/functions\/{functionId}\/deployments\/{deploymentId}":{"get":{"summary":"Get deployment","operationId":"functionsGetDeployment","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a code deployment by its unique ID.","responses":{"200":{"description":"Deployment","schema":{"$ref":"#\/definitions\/deployment"}}},"x-appwrite":{"method":"getDeployment","weight":277,"cookies":false,"type":"","demo":"functions\/get-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"type":"string","x-example":"[DEPLOYMENT_ID]","in":"path"}]},"patch":{"summary":"Update function deployment","operationId":"functionsUpdateDeployment","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Update the function code deployment ID using the unique function ID. Use this endpoint to switch the code deployment that should be executed by the execution endpoint.","responses":{"200":{"description":"Function","schema":{"$ref":"#\/definitions\/function"}}},"x-appwrite":{"method":"updateDeployment","weight":273,"cookies":false,"type":"","demo":"functions\/update-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-function-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"type":"string","x-example":"[DEPLOYMENT_ID]","in":"path"}]},"delete":{"summary":"Delete deployment","operationId":"functionsDeleteDeployment","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"Delete a code deployment by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDeployment","weight":278,"cookies":false,"type":"","demo":"functions\/delete-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"type":"string","x-example":"[DEPLOYMENT_ID]","in":"path"}]}},"\/functions\/{functionId}\/deployments\/{deploymentId}\/builds\/{buildId}":{"post":{"summary":"Create build","operationId":"functionsCreateBuild","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"Create a new build for an Appwrite Function deployment. This endpoint can be used to retry a failed build.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"createBuild","weight":279,"cookies":false,"type":"","demo":"functions\/create-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"type":"string","x-example":"[DEPLOYMENT_ID]","in":"path"},{"name":"buildId","description":"Build unique ID.","required":true,"type":"string","x-example":"[BUILD_ID]","in":"path"}]}},"\/functions\/{functionId}\/deployments\/{deploymentId}\/download":{"get":{"summary":"Download Deployment","operationId":"functionsDownloadDeployment","consumes":["application\/json"],"produces":["*\/*"],"tags":["functions"],"description":"Get a Deployment's contents by its unique ID. This endpoint supports range requests for partial or streaming file download.","responses":{"200":{"description":"File","schema":{"type":"file"}}},"x-appwrite":{"method":"downloadDeployment","weight":272,"cookies":false,"type":"location","demo":"functions\/download-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/download-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"type":"string","x-example":"[DEPLOYMENT_ID]","in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List executions","operationId":"functionsListExecutions","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","schema":{"$ref":"#\/definitions\/executionList"}}},"x-appwrite":{"method":"listExecutions","weight":281,"cookies":false,"type":"","demo":"functions\/list-executions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-executions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, responseStatusCode, duration","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create execution","operationId":"functionsCreateExecution","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","schema":{"$ref":"#\/definitions\/execution"}}},"x-appwrite":{"method":"createExecution","weight":280,"cookies":false,"type":"","demo":"functions\/create-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-execution.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"body":{"type":"string","description":"HTTP body of execution. Default value is empty string.","default":"","x-example":"[BODY]"},"async":{"type":"boolean","description":"Execute code in the background. Default value is false.","default":false,"x-example":false},"path":{"type":"string","description":"HTTP path of execution. Path can include query params. Default value is \/","default":"\/","x-example":"[PATH]"},"method":{"type":"string","description":"HTTP method of execution. Default value is GET.","default":"POST","x-example":"GET","enum":["GET","POST","PUT","PATCH","DELETE","OPTIONS"],"x-enum-name":"ExecutionMethod","x-enum-keys":[]},"headers":{"type":"object","description":"HTTP headers of execution. Defaults to empty.","default":[],"x-example":"{}"}}}}]}},"\/functions\/{functionId}\/executions\/{executionId}":{"get":{"summary":"Get execution","operationId":"functionsGetExecution","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a function execution log by its unique ID.","responses":{"200":{"description":"Execution","schema":{"$ref":"#\/definitions\/execution"}}},"x-appwrite":{"method":"getExecution","weight":282,"cookies":false,"type":"","demo":"functions\/get-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-execution.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"executionId","description":"Execution ID.","required":true,"type":"string","x-example":"[EXECUTION_ID]","in":"path"}]}},"\/functions\/{functionId}\/variables":{"get":{"summary":"List variables","operationId":"functionsListVariables","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all variables of a specific function.","responses":{"200":{"description":"Variables List","schema":{"$ref":"#\/definitions\/variableList"}}},"x-appwrite":{"method":"listVariables","weight":284,"cookies":false,"type":"","demo":"functions\/list-variables.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-variables.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"}]},"post":{"summary":"Create variable","operationId":"functionsCreateVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function environment variable. These variables can be accessed in the function at runtime as environment variables.","responses":{"201":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"createVariable","weight":283,"cookies":false,"type":"","demo":"functions\/create-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","default":null,"x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","default":null,"x-example":"[VALUE]"}},"required":["key","value"]}}]}},"\/functions\/{functionId}\/variables\/{variableId}":{"get":{"summary":"Get variable","operationId":"functionsGetVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a variable by its unique ID.","responses":{"200":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"getVariable","weight":285,"cookies":false,"type":"","demo":"functions\/get-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"}]},"put":{"summary":"Update variable","operationId":"functionsUpdateVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Update variable by its unique ID.","responses":{"200":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"updateVariable","weight":286,"cookies":false,"type":"","demo":"functions\/update-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","default":null,"x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","default":null,"x-example":"[VALUE]"}},"required":["key"]}}]},"delete":{"summary":"Delete variable","operationId":"functionsDeleteVariable","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"Delete a variable by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteVariable","weight":287,"cookies":false,"type":"","demo":"functions\/delete-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"}]}},"\/graphql":{"post":{"summary":"GraphQL endpoint","operationId":"graphqlQuery","consumes":["application\/json"],"produces":["application\/json"],"tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","schema":{"$ref":"#\/definitions\/any"}}},"x-appwrite":{"method":"query","weight":302,"cookies":false,"type":"graphql","demo":"graphql\/query.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"query":{"type":"object","description":"The query or queries to execute.","default":{},"x-example":"{}"}},"required":["query"]}}]}},"\/graphql\/mutation":{"post":{"summary":"GraphQL endpoint","operationId":"graphqlMutation","consumes":["application\/json"],"produces":["application\/json"],"tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","schema":{"$ref":"#\/definitions\/any"}}},"x-appwrite":{"method":"mutation","weight":301,"cookies":false,"type":"graphql","demo":"graphql\/mutation.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"query":{"type":"object","description":"The query or queries to execute.","default":{},"x-example":"{}"}},"required":["query"]}}]}},"\/health":{"get":{"summary":"Get HTTP","operationId":"healthGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite HTTP server is up and responsive.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"get","weight":119,"cookies":false,"type":"","demo":"health\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/anti-virus":{"get":{"summary":"Get antivirus","operationId":"healthGetAntivirus","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite Antivirus server is up and connection is successful.","responses":{"200":{"description":"Health Antivirus","schema":{"$ref":"#\/definitions\/healthAntivirus"}}},"x-appwrite":{"method":"getAntivirus","weight":137,"cookies":false,"type":"","demo":"health\/get-antivirus.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-storage-anti-virus.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/cache":{"get":{"summary":"Get cache","operationId":"healthGetCache","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite in-memory cache servers are up and connection is successful.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"getCache","weight":122,"cookies":false,"type":"","demo":"health\/get-cache.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-cache.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/db":{"get":{"summary":"Get DB","operationId":"healthGetDB","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite database servers are up and connection is successful.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"getDB","weight":121,"cookies":false,"type":"","demo":"health\/get-d-b.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-db.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/pubsub":{"get":{"summary":"Get pubsub","operationId":"healthGetPubSub","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite pub-sub servers are up and connection is successful.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"getPubSub","weight":124,"cookies":false,"type":"","demo":"health\/get-pub-sub.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-pubsub.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/queue":{"get":{"summary":"Get queue","operationId":"healthGetQueue","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite queue messaging servers are up and connection is successful.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"getQueue","weight":123,"cookies":false,"type":"","demo":"health\/get-queue.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/queue\/builds":{"get":{"summary":"Get builds queue","operationId":"healthGetQueueBuilds","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of builds that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueBuilds","weight":129,"cookies":false,"type":"","demo":"health\/get-queue-builds.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-builds.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/certificates":{"get":{"summary":"Get certificates queue","operationId":"healthGetQueueCertificates","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of certificates that are waiting to be issued against [Letsencrypt](https:\/\/letsencrypt.org\/) in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueCertificates","weight":128,"cookies":false,"type":"","demo":"health\/get-queue-certificates.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-certificates.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/databases":{"get":{"summary":"Get databases queue","operationId":"healthGetQueueDatabases","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of database changes that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueDatabases","weight":130,"cookies":false,"type":"","demo":"health\/get-queue-databases.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-databases.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"name","description":"Queue name for which to check the queue size","required":false,"type":"string","x-example":"[NAME]","default":"database_db_main","in":"query"},{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/deletes":{"get":{"summary":"Get deletes queue","operationId":"healthGetQueueDeletes","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of background destructive changes that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueDeletes","weight":131,"cookies":false,"type":"","demo":"health\/get-queue-deletes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-deletes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/functions":{"get":{"summary":"Get functions queue","operationId":"healthGetQueueFunctions","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueFunctions","weight":135,"cookies":false,"type":"","demo":"health\/get-queue-functions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-functions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/logs":{"get":{"summary":"Get logs queue","operationId":"healthGetQueueLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of logs that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueLogs","weight":127,"cookies":false,"type":"","demo":"health\/get-queue-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/mails":{"get":{"summary":"Get mails queue","operationId":"healthGetQueueMails","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of mails that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueMails","weight":132,"cookies":false,"type":"","demo":"health\/get-queue-mails.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-mails.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/messaging":{"get":{"summary":"Get messaging queue","operationId":"healthGetQueueMessaging","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of messages that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueMessaging","weight":133,"cookies":false,"type":"","demo":"health\/get-queue-messaging.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-messaging.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/migrations":{"get":{"summary":"Get migrations queue","operationId":"healthGetQueueMigrations","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of migrations that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueMigrations","weight":134,"cookies":false,"type":"","demo":"health\/get-queue-migrations.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-migrations.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/webhooks":{"get":{"summary":"Get webhooks queue","operationId":"healthGetQueueWebhooks","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of webhooks that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueWebhooks","weight":126,"cookies":false,"type":"","demo":"health\/get-queue-webhooks.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-webhooks.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/storage\/local":{"get":{"summary":"Get local storage","operationId":"healthGetStorageLocal","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite local storage device is up and connection is successful.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"getStorageLocal","weight":136,"cookies":false,"type":"","demo":"health\/get-storage-local.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-storage-local.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/time":{"get":{"summary":"Get time","operationId":"healthGetTime","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite server time is synced with Google remote NTP server. We use this technology to smoothly handle leap seconds with no disruptive events. The [Network Time Protocol](https:\/\/en.wikipedia.org\/wiki\/Network_Time_Protocol) (NTP) is used by hundreds of millions of computers and devices to synchronize their clocks over the Internet. If your computer sets its own clock, it likely uses NTP.","responses":{"200":{"description":"Health Time","schema":{"$ref":"#\/definitions\/healthTime"}}},"x-appwrite":{"method":"getTime","weight":125,"cookies":false,"type":"","demo":"health\/get-time.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-time.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/locale":{"get":{"summary":"Get user locale","operationId":"localeGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"Get the current user location based on IP. Returns an object with user country code, country name, continent name, continent code, ip address and suggested currency. You can use the locale header to get the data in a supported language.\n\n([IP Geolocation by DB-IP](https:\/\/db-ip.com))","responses":{"200":{"description":"Locale","schema":{"$ref":"#\/definitions\/locale"}}},"x-appwrite":{"method":"get","weight":111,"cookies":false,"type":"","demo":"locale\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-locale.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/localed","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}]}},"\/locale\/codes":{"get":{"summary":"List Locale Codes","operationId":"localeListCodes","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all locale codes in [ISO 639-1](https:\/\/en.wikipedia.org\/wiki\/List_of_ISO_639-1_codes).","responses":{"200":{"description":"Locale codes list","schema":{"$ref":"#\/definitions\/localeCodeList"}}},"x-appwrite":{"method":"listCodes","weight":112,"cookies":false,"type":"","demo":"locale\/list-codes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-locale-codes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/localeCode","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}]}},"\/locale\/continents":{"get":{"summary":"List continents","operationId":"localeListContinents","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","schema":{"$ref":"#\/definitions\/continentList"}}},"x-appwrite":{"method":"listContinents","weight":116,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/continents","offline-key":"","offline-response-key":"code","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List countries","operationId":"localeListCountries","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountries","weight":113,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/countries","offline-key":"","offline-response-key":"code","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU countries","operationId":"localeListCountriesEU","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountriesEU","weight":114,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/countries\/eu","offline-key":"","offline-response-key":"code","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List countries phone codes","operationId":"localeListCountriesPhones","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","schema":{"$ref":"#\/definitions\/phoneList"}}},"x-appwrite":{"method":"listCountriesPhones","weight":115,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/countries\/phones","offline-key":"","offline-response-key":"countryCode","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List currencies","operationId":"localeListCurrencies","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","schema":{"$ref":"#\/definitions\/currencyList"}}},"x-appwrite":{"method":"listCurrencies","weight":117,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/currencies","offline-key":"","offline-response-key":"code","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List languages","operationId":"localeListLanguages","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","schema":{"$ref":"#\/definitions\/languageList"}}},"x-appwrite":{"method":"listLanguages","weight":118,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/languages","offline-key":"","offline-response-key":"code","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}]}},"\/messaging\/messages":{"get":{"summary":"List messages","operationId":"messagingListMessages","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Message list","schema":{"$ref":"#\/definitions\/messageList"}}},"x-appwrite":{"method":"listMessages","weight":361,"cookies":false,"type":"","demo":"messaging\/list-messages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-messages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: scheduledAt, deliveredAt, deliveredTotal, status, description, providerType","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]}},"\/messaging\/messages\/email":{"post":{"summary":"Create an email.","operationId":"messagingCreateEmail","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Message","schema":{"$ref":"#\/definitions\/message"}}},"x-appwrite":{"method":"createEmail","weight":358,"cookies":false,"type":"","demo":"messaging\/create-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"messageId":{"type":"string","description":"Message ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[MESSAGE_ID]"},"subject":{"type":"string","description":"Email Subject.","default":null,"x-example":"[SUBJECT]"},"content":{"type":"string","description":"Email Content.","default":null,"x-example":"[CONTENT]"},"topics":{"type":"array","description":"List of Topic IDs.","default":[],"x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","default":[],"x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","default":[],"x-example":null,"items":{"type":"string"}},"cc":{"type":"array","description":"Array of target IDs to be added as CC.","default":[],"x-example":null,"items":{"type":"string"}},"bcc":{"type":"array","description":"Array of target IDs to be added as BCC.","default":[],"x-example":null,"items":{"type":"string"}},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","default":"draft","x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":"MessageStatus","x-enum-keys":[]},"html":{"type":"boolean","description":"Is content of type HTML","default":false,"x-example":false},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","default":null,"x-example":null}},"required":["messageId","subject","content"]}}]}},"\/messaging\/messages\/email\/{messageId}":{"patch":{"summary":"Update an email.","operationId":"messagingUpdateEmail","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Message","schema":{"$ref":"#\/definitions\/message"}}},"x-appwrite":{"method":"updateEmail","weight":365,"cookies":false,"type":"","demo":"messaging\/update-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"type":"string","x-example":"[MESSAGE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"topics":{"type":"array","description":"List of Topic IDs.","default":null,"x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","default":null,"x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","default":null,"x-example":null,"items":{"type":"string"}},"subject":{"type":"string","description":"Email Subject.","default":null,"x-example":"[SUBJECT]"},"content":{"type":"string","description":"Email Content.","default":null,"x-example":"[CONTENT]"},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","default":null,"x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":"MessageStatus","x-enum-keys":[]},"html":{"type":"boolean","description":"Is content of type HTML","default":null,"x-example":false},"cc":{"type":"array","description":"Array of target IDs to be added as CC.","default":null,"x-example":null,"items":{"type":"string"}},"bcc":{"type":"array","description":"Array of target IDs to be added as BCC.","default":null,"x-example":null,"items":{"type":"string"}},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","default":null,"x-example":null}}}}]}},"\/messaging\/messages\/push":{"post":{"summary":"Create a push notification.","operationId":"messagingCreatePush","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Message","schema":{"$ref":"#\/definitions\/message"}}},"x-appwrite":{"method":"createPush","weight":360,"cookies":false,"type":"","demo":"messaging\/create-push.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-push-notification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"messageId":{"type":"string","description":"Message ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[MESSAGE_ID]"},"title":{"type":"string","description":"Title for push notification.","default":null,"x-example":"[TITLE]"},"body":{"type":"string","description":"Body for push notification.","default":null,"x-example":"[BODY]"},"topics":{"type":"array","description":"List of Topic IDs.","default":[],"x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","default":[],"x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","default":[],"x-example":null,"items":{"type":"string"}},"data":{"type":"object","description":"Additional Data for push notification.","default":{},"x-example":"{}"},"action":{"type":"string","description":"Action for push notification.","default":"","x-example":"[ACTION]"},"icon":{"type":"string","description":"Icon for push notification. Available only for Android and Web Platform.","default":"","x-example":"[ICON]"},"sound":{"type":"string","description":"Sound for push notification. Available only for Android and IOS Platform.","default":"","x-example":"[SOUND]"},"color":{"type":"string","description":"Color for push notification. Available only for Android Platform.","default":"","x-example":"[COLOR]"},"tag":{"type":"string","description":"Tag for push notification. Available only for Android Platform.","default":"","x-example":"[TAG]"},"badge":{"type":"string","description":"Badge for push notification. Available only for IOS Platform.","default":"","x-example":"[BADGE]"},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","default":"draft","x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":"MessageStatus","x-enum-keys":[]},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","default":null,"x-example":null}},"required":["messageId","title","body"]}}]}},"\/messaging\/messages\/push\/{messageId}":{"patch":{"summary":"Update a push notification.","operationId":"messagingUpdatePush","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Message","schema":{"$ref":"#\/definitions\/message"}}},"x-appwrite":{"method":"updatePush","weight":367,"cookies":false,"type":"","demo":"messaging\/update-push.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-push-notification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"type":"string","x-example":"[MESSAGE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"topics":{"type":"array","description":"List of Topic IDs.","default":null,"x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","default":null,"x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","default":null,"x-example":null,"items":{"type":"string"}},"title":{"type":"string","description":"Title for push notification.","default":null,"x-example":"[TITLE]"},"body":{"type":"string","description":"Body for push notification.","default":null,"x-example":"[BODY]"},"data":{"type":"object","description":"Additional Data for push notification.","default":{},"x-example":"{}"},"action":{"type":"string","description":"Action for push notification.","default":null,"x-example":"[ACTION]"},"icon":{"type":"string","description":"Icon for push notification. Available only for Android and Web platforms.","default":null,"x-example":"[ICON]"},"sound":{"type":"string","description":"Sound for push notification. Available only for Android and iOS platforms.","default":null,"x-example":"[SOUND]"},"color":{"type":"string","description":"Color for push notification. Available only for Android platforms.","default":null,"x-example":"[COLOR]"},"tag":{"type":"string","description":"Tag for push notification. Available only for Android platforms.","default":null,"x-example":"[TAG]"},"badge":{"type":"integer","description":"Badge for push notification. Available only for iOS platforms.","default":null,"x-example":null},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","default":null,"x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":"MessageStatus","x-enum-keys":[]},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","default":null,"x-example":null}}}}]}},"\/messaging\/messages\/sms":{"post":{"summary":"Create an SMS.","operationId":"messagingCreateSMS","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Message","schema":{"$ref":"#\/definitions\/message"}}},"x-appwrite":{"method":"createSMS","weight":359,"cookies":false,"type":"","demo":"messaging\/create-s-m-s.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-sms.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"messageId":{"type":"string","description":"Message ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[MESSAGE_ID]"},"content":{"type":"string","description":"SMS Content.","default":null,"x-example":"[CONTENT]"},"topics":{"type":"array","description":"List of Topic IDs.","default":[],"x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","default":[],"x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","default":[],"x-example":null,"items":{"type":"string"}},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","default":"draft","x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":"MessageStatus","x-enum-keys":[]},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","default":null,"x-example":null}},"required":["messageId","content"]}}]}},"\/messaging\/messages\/sms\/{messageId}":{"patch":{"summary":"Update an SMS.","operationId":"messagingUpdateSMS","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Message","schema":{"$ref":"#\/definitions\/message"}}},"x-appwrite":{"method":"updateSMS","weight":366,"cookies":false,"type":"","demo":"messaging\/update-s-m-s.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"type":"string","x-example":"[MESSAGE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"topics":{"type":"array","description":"List of Topic IDs.","default":null,"x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","default":null,"x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","default":null,"x-example":null,"items":{"type":"string"}},"content":{"type":"string","description":"Email Content.","default":null,"x-example":"[CONTENT]"},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","default":null,"x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":"MessageStatus","x-enum-keys":[]},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","default":null,"x-example":null}}}}]}},"\/messaging\/messages\/{messageId}":{"get":{"summary":"Get a message","operationId":"messagingGetMessage","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Message","schema":{"$ref":"#\/definitions\/message"}}},"x-appwrite":{"method":"getMessage","weight":364,"cookies":false,"type":"","demo":"messaging\/get-message.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/get-message.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"type":"string","x-example":"[MESSAGE_ID]","in":"path"}]},"delete":{"summary":"Delete a message","operationId":"messagingDelete","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":368,"cookies":false,"type":"","demo":"messaging\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-message.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"type":"string","x-example":"[MESSAGE_ID]","in":"path"}]}},"\/messaging\/messages\/{messageId}\/logs":{"get":{"summary":"List message logs","operationId":"messagingListMessageLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listMessageLogs","weight":362,"cookies":false,"type":"","demo":"messaging\/list-message-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/messages\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"type":"string","x-example":"[MESSAGE_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/messaging\/messages\/{messageId}\/targets":{"get":{"summary":"List message targets","operationId":"messagingListTargets","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"List the targets associated with a message as set via the targets attribute.","responses":{"200":{"description":"Target list","schema":{"$ref":"#\/definitions\/targetList"}}},"x-appwrite":{"method":"listTargets","weight":363,"cookies":false,"type":"","demo":"messaging\/list-targets.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-message-targets.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"type":"string","x-example":"[MESSAGE_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, providerId, identifier, providerType","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/messaging\/providers":{"get":{"summary":"List providers","operationId":"messagingListProviders","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider list","schema":{"$ref":"#\/definitions\/providerList"}}},"x-appwrite":{"method":"listProviders","weight":333,"cookies":false,"type":"","demo":"messaging\/list-providers.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-providers.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, provider, type, enabled","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]}},"\/messaging\/providers\/apns":{"post":{"summary":"Create APNS provider","operationId":"messagingCreateAPNSProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createAPNSProvider","weight":332,"cookies":false,"type":"","demo":"messaging\/create-a-p-n-s-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-apns-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"authKey":{"type":"string","description":"APNS authentication key.","default":"","x-example":"[AUTH_KEY]"},"authKeyId":{"type":"string","description":"APNS authentication key ID.","default":"","x-example":"[AUTH_KEY_ID]"},"teamId":{"type":"string","description":"APNS team ID.","default":"","x-example":"[TEAM_ID]"},"bundleId":{"type":"string","description":"APNS bundle ID.","default":"","x-example":"[BUNDLE_ID]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name"]}}]}},"\/messaging\/providers\/apns\/{providerId}":{"patch":{"summary":"Update APNS provider","operationId":"messagingUpdateAPNSProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateAPNSProvider","weight":345,"cookies":false,"type":"","demo":"messaging\/update-a-p-n-s-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-apns-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"authKey":{"type":"string","description":"APNS authentication key.","default":"","x-example":"[AUTH_KEY]"},"authKeyId":{"type":"string","description":"APNS authentication key ID.","default":"","x-example":"[AUTH_KEY_ID]"},"teamId":{"type":"string","description":"APNS team ID.","default":"","x-example":"[TEAM_ID]"},"bundleId":{"type":"string","description":"APNS bundle ID.","default":"","x-example":"[BUNDLE_ID]"}}}}]}},"\/messaging\/providers\/fcm":{"post":{"summary":"Create FCM provider","operationId":"messagingCreateFCMProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createFCMProvider","weight":331,"cookies":false,"type":"","demo":"messaging\/create-f-c-m-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-fcm-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"serviceAccountJSON":{"type":"object","description":"FCM service account JSON.","default":{},"x-example":"{}"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name"]}}]}},"\/messaging\/providers\/fcm\/{providerId}":{"patch":{"summary":"Update FCM provider","operationId":"messagingUpdateFCMProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateFCMProvider","weight":344,"cookies":false,"type":"","demo":"messaging\/update-f-c-m-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-fcm-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"serviceAccountJSON":{"type":"object","description":"FCM service account JSON.","default":{},"x-example":"{}"}}}}]}},"\/messaging\/providers\/mailgun":{"post":{"summary":"Create Mailgun provider","operationId":"messagingCreateMailgunProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createMailgunProvider","weight":323,"cookies":false,"type":"","demo":"messaging\/create-mailgun-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-mailgun-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"apiKey":{"type":"string","description":"Mailgun API Key.","default":"","x-example":"[API_KEY]"},"domain":{"type":"string","description":"Mailgun Domain.","default":"","x-example":"[DOMAIN]"},"isEuRegion":{"type":"boolean","description":"Set as EU region.","default":null,"x-example":false},"fromName":{"type":"string","description":"Sender Name.","default":"","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","default":"","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the reply to field for the mail. Default value is sender name. Reply to name must have reply to email as well.","default":"","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the reply to field for the mail. Default value is sender email. Reply to email must have reply to name as well.","default":"","x-example":"email@example.com"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name"]}}]}},"\/messaging\/providers\/mailgun\/{providerId}":{"patch":{"summary":"Update Mailgun provider","operationId":"messagingUpdateMailgunProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateMailgunProvider","weight":336,"cookies":false,"type":"","demo":"messaging\/update-mailgun-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-mailgun-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"apiKey":{"type":"string","description":"Mailgun API Key.","default":"","x-example":"[API_KEY]"},"domain":{"type":"string","description":"Mailgun Domain.","default":"","x-example":"[DOMAIN]"},"isEuRegion":{"type":"boolean","description":"Set as EU region.","default":null,"x-example":false},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"fromName":{"type":"string","description":"Sender Name.","default":"","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","default":"","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the reply to field for the mail. Default value is sender name.","default":"","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the reply to field for the mail. Default value is sender email.","default":"","x-example":"[REPLY_TO_EMAIL]"}}}}]}},"\/messaging\/providers\/msg91":{"post":{"summary":"Create Msg91 provider","operationId":"messagingCreateMsg91Provider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createMsg91Provider","weight":326,"cookies":false,"type":"","demo":"messaging\/create-msg91provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-msg91-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":"","x-example":"+12065550100"},"senderId":{"type":"string","description":"Msg91 Sender ID.","default":"","x-example":"[SENDER_ID]"},"authKey":{"type":"string","description":"Msg91 Auth Key.","default":"","x-example":"[AUTH_KEY]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name"]}}]}},"\/messaging\/providers\/msg91\/{providerId}":{"patch":{"summary":"Update Msg91 provider","operationId":"messagingUpdateMsg91Provider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateMsg91Provider","weight":339,"cookies":false,"type":"","demo":"messaging\/update-msg91provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-msg91-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"senderId":{"type":"string","description":"Msg91 Sender ID.","default":"","x-example":"[SENDER_ID]"},"authKey":{"type":"string","description":"Msg91 Auth Key.","default":"","x-example":"[AUTH_KEY]"},"from":{"type":"string","description":"Sender number.","default":"","x-example":"[FROM]"}}}}]}},"\/messaging\/providers\/sendgrid":{"post":{"summary":"Create Sendgrid provider","operationId":"messagingCreateSendgridProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createSendgridProvider","weight":324,"cookies":false,"type":"","demo":"messaging\/create-sendgrid-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-sengrid-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"apiKey":{"type":"string","description":"Sendgrid API key.","default":"","x-example":"[API_KEY]"},"fromName":{"type":"string","description":"Sender Name.","default":"","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","default":"","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the reply to field for the mail. Default value is sender name.","default":"","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the reply to field for the mail. Default value is sender email.","default":"","x-example":"email@example.com"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name"]}}]}},"\/messaging\/providers\/sendgrid\/{providerId}":{"patch":{"summary":"Update Sendgrid provider","operationId":"messagingUpdateSendgridProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateSendgridProvider","weight":337,"cookies":false,"type":"","demo":"messaging\/update-sendgrid-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-sendgrid-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"apiKey":{"type":"string","description":"Sendgrid API key.","default":"","x-example":"[API_KEY]"},"fromName":{"type":"string","description":"Sender Name.","default":"","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","default":"","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the Reply To field for the mail. Default value is Sender Name.","default":"","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the Reply To field for the mail. Default value is Sender Email.","default":"","x-example":"[REPLY_TO_EMAIL]"}}}}]}},"\/messaging\/providers\/smtp":{"post":{"summary":"Create SMTP provider","operationId":"messagingCreateSMTPProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createSMTPProvider","weight":325,"cookies":false,"type":"","demo":"messaging\/create-s-m-t-p-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-smtp-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"host":{"type":"string","description":"SMTP hosts. Either a single hostname or multiple semicolon-delimited hostnames. You can also specify a different port for each host by using this format: [hostname:port] (e.g. \"smtp1.example.com:25;smtp2.example.com\"). You can also specify encryption type, for example: (e.g. \"tls:\/\/smtp1.example.com:587;ssl:\/\/smtp2.example.com:465\"). Hosts will be tried in order.","default":null,"x-example":"[HOST]"},"port":{"type":"integer","description":"The default SMTP server port.","default":587,"x-example":1},"username":{"type":"string","description":"Authentication username.","default":"","x-example":"[USERNAME]"},"password":{"type":"string","description":"Authentication password.","default":"","x-example":"[PASSWORD]"},"encryption":{"type":"string","description":"Encryption type. Can be omitted, 'ssl', or 'tls'","default":"","x-example":"none","enum":["none","ssl","tls"],"x-enum-name":"SMTPEncryption","x-enum-keys":[]},"autoTLS":{"type":"boolean","description":"Enable SMTP AutoTLS feature.","default":true,"x-example":false},"mailer":{"type":"string","description":"The value to use for the X-Mailer header.","default":"","x-example":"[MAILER]"},"fromName":{"type":"string","description":"Sender Name.","default":"","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","default":"","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the reply to field for the mail. Default value is sender name.","default":"","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the reply to field for the mail. Default value is sender email.","default":"","x-example":"email@example.com"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name","host"]}}]}},"\/messaging\/providers\/smtp\/{providerId}":{"patch":{"summary":"Update SMTP provider","operationId":"messagingUpdateSMTPProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateSMTPProvider","weight":338,"cookies":false,"type":"","demo":"messaging\/update-s-m-t-p-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-smtp-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"host":{"type":"string","description":"SMTP hosts. Either a single hostname or multiple semicolon-delimited hostnames. You can also specify a different port for each host by using this format: [hostname:port] (e.g. \"smtp1.example.com:25;smtp2.example.com\"). You can also specify encryption type, for example: (e.g. \"tls:\/\/smtp1.example.com:587;ssl:\/\/smtp2.example.com:465\"). Hosts will be tried in order.","default":"","x-example":"[HOST]"},"port":{"type":"integer","description":"SMTP port.","default":null,"x-example":1},"username":{"type":"string","description":"Authentication username.","default":"","x-example":"[USERNAME]"},"password":{"type":"string","description":"Authentication password.","default":"","x-example":"[PASSWORD]"},"encryption":{"type":"string","description":"Encryption type. Can be 'ssl' or 'tls'","default":"","x-example":"none","enum":["none","ssl","tls"],"x-enum-name":"SMTPEncryption","x-enum-keys":[]},"autoTLS":{"type":"boolean","description":"Enable SMTP AutoTLS feature.","default":null,"x-example":false},"fromName":{"type":"string","description":"Sender Name.","default":"","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","default":"","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the Reply To field for the mail. Default value is Sender Name.","default":"","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the Reply To field for the mail. Default value is Sender Email.","default":"","x-example":"[REPLY_TO_EMAIL]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}}}}]}},"\/messaging\/providers\/telesign":{"post":{"summary":"Create Telesign provider","operationId":"messagingCreateTelesignProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createTelesignProvider","weight":327,"cookies":false,"type":"","demo":"messaging\/create-telesign-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-telesign-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":"","x-example":"+12065550100"},"username":{"type":"string","description":"Telesign username.","default":"","x-example":"[USERNAME]"},"password":{"type":"string","description":"Telesign password.","default":"","x-example":"[PASSWORD]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name"]}}]}},"\/messaging\/providers\/telesign\/{providerId}":{"patch":{"summary":"Update Telesign provider","operationId":"messagingUpdateTelesignProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateTelesignProvider","weight":340,"cookies":false,"type":"","demo":"messaging\/update-telesign-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-telesign-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"username":{"type":"string","description":"Telesign username.","default":"","x-example":"[USERNAME]"},"password":{"type":"string","description":"Telesign password.","default":"","x-example":"[PASSWORD]"},"from":{"type":"string","description":"Sender number.","default":"","x-example":"[FROM]"}}}}]}},"\/messaging\/providers\/textmagic":{"post":{"summary":"Create Textmagic provider","operationId":"messagingCreateTextmagicProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createTextmagicProvider","weight":328,"cookies":false,"type":"","demo":"messaging\/create-textmagic-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-textmagic-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":"","x-example":"+12065550100"},"username":{"type":"string","description":"Textmagic username.","default":"","x-example":"[USERNAME]"},"apiKey":{"type":"string","description":"Textmagic apiKey.","default":"","x-example":"[API_KEY]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name"]}}]}},"\/messaging\/providers\/textmagic\/{providerId}":{"patch":{"summary":"Update Textmagic provider","operationId":"messagingUpdateTextmagicProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateTextmagicProvider","weight":341,"cookies":false,"type":"","demo":"messaging\/update-textmagic-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-textmagic-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"username":{"type":"string","description":"Textmagic username.","default":"","x-example":"[USERNAME]"},"apiKey":{"type":"string","description":"Textmagic apiKey.","default":"","x-example":"[API_KEY]"},"from":{"type":"string","description":"Sender number.","default":"","x-example":"[FROM]"}}}}]}},"\/messaging\/providers\/twilio":{"post":{"summary":"Create Twilio provider","operationId":"messagingCreateTwilioProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createTwilioProvider","weight":329,"cookies":false,"type":"","demo":"messaging\/create-twilio-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-twilio-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":"","x-example":"+12065550100"},"accountSid":{"type":"string","description":"Twilio account secret ID.","default":"","x-example":"[ACCOUNT_SID]"},"authToken":{"type":"string","description":"Twilio authentication token.","default":"","x-example":"[AUTH_TOKEN]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name"]}}]}},"\/messaging\/providers\/twilio\/{providerId}":{"patch":{"summary":"Update Twilio provider","operationId":"messagingUpdateTwilioProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateTwilioProvider","weight":342,"cookies":false,"type":"","demo":"messaging\/update-twilio-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-twilio-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"accountSid":{"type":"string","description":"Twilio account secret ID.","default":"","x-example":"[ACCOUNT_SID]"},"authToken":{"type":"string","description":"Twilio authentication token.","default":"","x-example":"[AUTH_TOKEN]"},"from":{"type":"string","description":"Sender number.","default":"","x-example":"[FROM]"}}}}]}},"\/messaging\/providers\/vonage":{"post":{"summary":"Create Vonage provider","operationId":"messagingCreateVonageProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createVonageProvider","weight":330,"cookies":false,"type":"","demo":"messaging\/create-vonage-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-vonage-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":"","x-example":"+12065550100"},"apiKey":{"type":"string","description":"Vonage API key.","default":"","x-example":"[API_KEY]"},"apiSecret":{"type":"string","description":"Vonage API secret.","default":"","x-example":"[API_SECRET]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name"]}}]}},"\/messaging\/providers\/vonage\/{providerId}":{"patch":{"summary":"Update Vonage provider","operationId":"messagingUpdateVonageProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateVonageProvider","weight":343,"cookies":false,"type":"","demo":"messaging\/update-vonage-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-vonage-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"apiKey":{"type":"string","description":"Vonage API key.","default":"","x-example":"[API_KEY]"},"apiSecret":{"type":"string","description":"Vonage API secret.","default":"","x-example":"[API_SECRET]"},"from":{"type":"string","description":"Sender number.","default":"","x-example":"[FROM]"}}}}]}},"\/messaging\/providers\/{providerId}":{"get":{"summary":"Get provider","operationId":"messagingGetProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"getProvider","weight":335,"cookies":false,"type":"","demo":"messaging\/get-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/get-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"}]},"delete":{"summary":"Delete provider","operationId":"messagingDeleteProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteProvider","weight":346,"cookies":false,"type":"","demo":"messaging\/delete-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"}]}},"\/messaging\/providers\/{providerId}\/logs":{"get":{"summary":"List provider logs","operationId":"messagingListProviderLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listProviderLogs","weight":334,"cookies":false,"type":"","demo":"messaging\/list-provider-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/providers\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/messaging\/subscribers\/{subscriberId}\/logs":{"get":{"summary":"List subscriber logs","operationId":"messagingListSubscriberLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listSubscriberLogs","weight":355,"cookies":false,"type":"","demo":"messaging\/list-subscriber-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/subscribers\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"subscriberId","description":"Subscriber ID.","required":true,"type":"string","x-example":"[SUBSCRIBER_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/messaging\/topics":{"get":{"summary":"List topics.","operationId":"messagingListTopics","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Topic list","schema":{"$ref":"#\/definitions\/topicList"}}},"x-appwrite":{"method":"listTopics","weight":348,"cookies":false,"type":"","demo":"messaging\/list-topics.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-topics.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, description, total","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create a topic.","operationId":"messagingCreateTopic","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Topic","schema":{"$ref":"#\/definitions\/topic"}}},"x-appwrite":{"method":"createTopic","weight":347,"cookies":false,"type":"","demo":"messaging\/create-topic.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-topic.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"topicId":{"type":"string","description":"Topic ID. Choose a custom Topic ID or a new Topic ID.","default":null,"x-example":"[TOPIC_ID]"},"name":{"type":"string","description":"Topic Name.","default":null,"x-example":"[NAME]"}},"required":["topicId","name"]}}]}},"\/messaging\/topics\/{topicId}":{"get":{"summary":"Get a topic.","operationId":"messagingGetTopic","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Topic","schema":{"$ref":"#\/definitions\/topic"}}},"x-appwrite":{"method":"getTopic","weight":350,"cookies":false,"type":"","demo":"messaging\/get-topic.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/get-topic.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID.","required":true,"type":"string","x-example":"[TOPIC_ID]","in":"path"}]},"patch":{"summary":"Update a topic.","operationId":"messagingUpdateTopic","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Topic","schema":{"$ref":"#\/definitions\/topic"}}},"x-appwrite":{"method":"updateTopic","weight":351,"cookies":false,"type":"","demo":"messaging\/update-topic.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-topic.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID.","required":true,"type":"string","x-example":"[TOPIC_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Topic Name.","default":"","x-example":"[NAME]"}}}}]},"delete":{"summary":"Delete a topic.","operationId":"messagingDeleteTopic","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteTopic","weight":352,"cookies":false,"type":"","demo":"messaging\/delete-topic.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-topic.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID.","required":true,"type":"string","x-example":"[TOPIC_ID]","in":"path"}]}},"\/messaging\/topics\/{topicId}\/logs":{"get":{"summary":"List topic logs","operationId":"messagingListTopicLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listTopicLogs","weight":349,"cookies":false,"type":"","demo":"messaging\/list-topic-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/topics\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID.","required":true,"type":"string","x-example":"[TOPIC_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/messaging\/topics\/{topicId}\/subscribers":{"get":{"summary":"List subscribers.","operationId":"messagingListSubscribers","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Subscriber list","schema":{"$ref":"#\/definitions\/subscriberList"}}},"x-appwrite":{"method":"listSubscribers","weight":354,"cookies":false,"type":"","demo":"messaging\/list-subscribers.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-subscribers.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID subscribed to.","required":true,"type":"string","x-example":"[TOPIC_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, provider, type, enabled","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create a subscriber.","operationId":"messagingCreateSubscriber","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Subscriber","schema":{"$ref":"#\/definitions\/subscriber"}}},"x-appwrite":{"method":"createSubscriber","weight":353,"cookies":false,"type":"","demo":"messaging\/create-subscriber.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-subscriber.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.write","platforms":["server","client","console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[],"Session":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID to subscribe to.","required":true,"type":"string","x-example":"[TOPIC_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"subscriberId":{"type":"string","description":"Subscriber ID. Choose a custom Subscriber ID or a new Subscriber ID.","default":null,"x-example":"[SUBSCRIBER_ID]"},"targetId":{"type":"string","description":"Target ID. The target ID to link to the specified Topic ID.","default":null,"x-example":"[TARGET_ID]"}},"required":["subscriberId","targetId"]}}]}},"\/messaging\/topics\/{topicId}\/subscribers\/{subscriberId}":{"get":{"summary":"Get a subscriber.","operationId":"messagingGetSubscriber","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Subscriber","schema":{"$ref":"#\/definitions\/subscriber"}}},"x-appwrite":{"method":"getSubscriber","weight":356,"cookies":false,"type":"","demo":"messaging\/get-subscriber.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/get-subscriber.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID subscribed to.","required":true,"type":"string","x-example":"[TOPIC_ID]","in":"path"},{"name":"subscriberId","description":"Subscriber ID.","required":true,"type":"string","x-example":"[SUBSCRIBER_ID]","in":"path"}]},"delete":{"summary":"Delete a subscriber.","operationId":"messagingDeleteSubscriber","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSubscriber","weight":357,"cookies":false,"type":"","demo":"messaging\/delete-subscriber.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-subscriber.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.write","platforms":["server","client","console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[],"Session":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID subscribed to.","required":true,"type":"string","x-example":"[TOPIC_ID]","in":"path"},{"name":"subscriberId","description":"Subscriber ID.","required":true,"type":"string","x-example":"[SUBSCRIBER_ID]","in":"path"}]}},"\/storage\/buckets":{"get":{"summary":"List buckets","operationId":"storageListBuckets","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a list of all the storage buckets. You can use the query params to filter your results.","responses":{"200":{"description":"Buckets List","schema":{"$ref":"#\/definitions\/bucketList"}}},"x-appwrite":{"method":"listBuckets","weight":186,"cookies":false,"type":"","demo":"storage\/list-buckets.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/list-buckets.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: enabled, name, fileSecurity, maximumFileSize, encryption, antivirus","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create bucket","operationId":"storageCreateBucket","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Create a new storage bucket.","responses":{"201":{"description":"Bucket","schema":{"$ref":"#\/definitions\/bucket"}}},"x-appwrite":{"method":"createBucket","weight":185,"cookies":false,"type":"","demo":"storage\/create-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"bucketId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, no user is granted with any permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":false,"x-example":false},"enabled":{"type":"boolean","description":"Is bucket enabled? When set to 'disabled', users cannot access the files in this bucket but Server SDKs with and API key can still access the bucket. No files are lost when this is toggled.","default":true,"x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB.","default":30000000,"x-example":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","default":[],"x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","default":"none","x-example":"none","enum":["none","gzip","zstd"],"x-enum-name":null,"x-enum-keys":[]},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","default":true,"x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","default":true,"x-example":false}},"required":["bucketId","name"]}}]}},"\/storage\/buckets\/{bucketId}":{"get":{"summary":"Get bucket","operationId":"storageGetBucket","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a storage bucket by its unique ID. This endpoint response returns a JSON object with the storage bucket metadata.","responses":{"200":{"description":"Bucket","schema":{"$ref":"#\/definitions\/bucket"}}},"x-appwrite":{"method":"getBucket","weight":187,"cookies":false,"type":"","demo":"storage\/get-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"bucketId","description":"Bucket unique ID.","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"}]},"put":{"summary":"Update bucket","operationId":"storageUpdateBucket","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Update a storage bucket by its unique ID.","responses":{"200":{"description":"Bucket","schema":{"$ref":"#\/definitions\/bucket"}}},"x-appwrite":{"method":"updateBucket","weight":188,"cookies":false,"type":"","demo":"storage\/update-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"bucketId","description":"Bucket unique ID.","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Bucket name","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":false,"x-example":false},"enabled":{"type":"boolean","description":"Is bucket enabled? When set to 'disabled', users cannot access the files in this bucket but Server SDKs with and API key can still access the bucket. No files are lost when this is toggled.","default":true,"x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB.","default":null,"x-example":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","default":[],"x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","default":"none","x-example":"none","enum":["none","gzip","zstd"],"x-enum-name":null,"x-enum-keys":[]},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","default":true,"x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","default":true,"x-example":false}},"required":["name"]}}]},"delete":{"summary":"Delete bucket","operationId":"storageDeleteBucket","consumes":["application\/json"],"produces":[],"tags":["storage"],"description":"Delete a storage bucket by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteBucket","weight":189,"cookies":false,"type":"","demo":"storage\/delete-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"bucketId","description":"Bucket unique ID.","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files":{"get":{"summary":"List files","operationId":"storageListFiles","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a list of all the user files. You can use the query params to filter your results.","responses":{"200":{"description":"Files List","schema":{"$ref":"#\/definitions\/fileList"}}},"x-appwrite":{"method":"listFiles","weight":191,"cookies":false,"type":"","demo":"storage\/list-files.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/list-files.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create file","operationId":"storageCreateFile","consumes":["multipart\/form-data"],"produces":["application\/json"],"tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"createFile","weight":190,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","required":true,"x-upload-id":true,"type":"string","x-example":"[FILE_ID]","in":"formData"},{"name":"file","description":"Binary file. Appwrite SDKs provide helpers to handle file input. [Learn about file input](https:\/\/appwrite.io\/docs\/storage#file-input).","required":true,"type":"file","in":"formData"},{"name":"permissions","description":"An array of permission strings. By default, only the current user is granted all permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"x-example":"[\"read(\"any\")\"]","in":"formData"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get file","operationId":"storageGetFile","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"getFile","weight":192,"cookies":false,"type":"","demo":"storage\/get-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID.","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"}]},"put":{"summary":"Update file","operationId":"storageUpdateFile","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Update a file by its unique ID. Only users with write permissions have access to update this resource.","responses":{"200":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"updateFile","weight":196,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File unique ID.","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Name of the file","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission string. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","consumes":["application\/json"],"produces":[],"tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":197,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID.","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/download":{"get":{"summary":"Get file for download","operationId":"storageGetFileDownload","consumes":["application\/json"],"produces":["*\/*"],"tags":["storage"],"description":"Get a file content by its unique ID. The endpoint response return with a 'Content-Disposition: attachment' header that tells the browser to start downloading the file to user downloads directory.","responses":{"200":{"description":"File","schema":{"type":"file"}}},"x-appwrite":{"method":"getFileDownload","weight":194,"cookies":false,"type":"location","demo":"storage\/get-file-download.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-download.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID.","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/preview":{"get":{"summary":"Get file preview","operationId":"storageGetFilePreview","consumes":["application\/json"],"produces":["image\/*"],"tags":["storage"],"description":"Get a file preview image. Currently, this method supports preview for image files (jpg, png, and gif), other supported formats, like pdf, docs, slides, and spreadsheets, will return the file icon image. You can also pass query string arguments for cutting and resizing your preview image. Preview is supported only for image files smaller than 10MB.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFilePreview","weight":193,"cookies":false,"type":"location","demo":"storage\/get-file-preview.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-preview.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"},{"name":"width","description":"Resize preview image width, Pass an integer between 0 to 4000.","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 4000.","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"gravity","description":"Image crop gravity. Can be one of center,top-left,top,top-right,left,right,bottom-left,bottom,bottom-right","required":false,"type":"string","x-example":"center","enum":["center","top-left","top","top-right","left","right","bottom-left","bottom","bottom-right"],"x-enum-name":"ImageGravity","x-enum-keys":[],"default":"center","in":"query"},{"name":"quality","description":"Preview image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"borderWidth","description":"Preview image border in pixels. Pass an integer between 0 to 100. Defaults to 0.","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"borderColor","description":"Preview image border color. Use a valid HEX color, no # is needed for prefix.","required":false,"type":"string","default":"","in":"query"},{"name":"borderRadius","description":"Preview image border radius in pixels. Pass an integer between 0 to 4000.","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"opacity","description":"Preview image opacity. Only works with images having an alpha channel (like png). Pass a number between 0 to 1.","required":false,"type":"number","format":"float","x-example":0,"default":1,"in":"query"},{"name":"rotation","description":"Preview image rotation in degrees. Pass an integer between -360 and 360.","required":false,"type":"integer","format":"int32","x-example":-360,"default":0,"in":"query"},{"name":"background","description":"Preview image background color. Only works with transparent images (png). Use a valid HEX color, no # is needed for prefix.","required":false,"type":"string","default":"","in":"query"},{"name":"output","description":"Output format type (jpeg, jpg, png, gif and webp).","required":false,"type":"string","x-example":"jpg","enum":["jpg","jpeg","gif","png","webp"],"x-enum-name":"ImageFormat","x-enum-keys":[],"default":"","in":"query"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/view":{"get":{"summary":"Get file for view","operationId":"storageGetFileView","consumes":["application\/json"],"produces":["*\/*"],"tags":["storage"],"description":"Get a file content by its unique ID. This endpoint is similar to the download method but returns with no 'Content-Disposition: attachment' header.","responses":{"200":{"description":"File","schema":{"type":"file"}}},"x-appwrite":{"method":"getFileView","weight":195,"cookies":false,"type":"location","demo":"storage\/get-file-view.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-view.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID.","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"}]}},"\/teams":{"get":{"summary":"List teams","operationId":"teamsList","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get a list of all the teams in which the current user is a member. You can use the parameters to filter your results.","responses":{"200":{"description":"Teams List","schema":{"$ref":"#\/definitions\/teamList"}}},"x-appwrite":{"method":"list","weight":201,"cookies":false,"type":"","demo":"teams\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-teams.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total, billingPlan","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create team","operationId":"teamsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"create","weight":200,"cookies":false,"type":"","demo":"teams\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/create-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"teamId":{"type":"string","description":"Team ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[TEAM_ID]"},"name":{"type":"string","description":"Team name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"roles":{"type":"array","description":"Array of strings. Use this param to set the roles in the team for the user who created it. The default role is **owner**. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","default":["owner"],"x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}]}},"\/teams\/{teamId}":{"get":{"summary":"Get team","operationId":"teamsGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"get","weight":202,"cookies":false,"type":"","demo":"teams\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams","offline-key":"{teamId}","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"}]},"put":{"summary":"Update name","operationId":"teamsUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Update the team's name by its unique ID.","responses":{"200":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"updateName","weight":204,"cookies":false,"type":"","demo":"teams\/update-name.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-name.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams","offline-key":"{teamId}","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"New team name. Max length: 128 chars.","default":null,"x-example":"[NAME]"}},"required":["name"]}}]},"delete":{"summary":"Delete team","operationId":"teamsDelete","consumes":["application\/json"],"produces":[],"tags":["teams"],"description":"Delete a team using its ID. Only team members with the owner role can delete the team.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":206,"cookies":false,"type":"","demo":"teams\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/delete-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"}]}},"\/teams\/{teamId}\/memberships":{"get":{"summary":"List team memberships","operationId":"teamsListMemberships","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"listMemberships","weight":208,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/memberships","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create team membership","operationId":"teamsCreateMembership","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Invite a new member to join your team. Provide an ID for existing users, or invite unregistered users using an email or phone number. If initiated from a Client SDK, Appwrite will send an email or sms with a link to join the team to the invited user, and an account will be created for them if one doesn't exist. If initiated from a Server SDK, the new member will be added automatically to the team.\n\nYou only need to provide one of a user ID, email, or phone number. Appwrite will prioritize accepting the user ID > email > phone number if you provide more than one of these parameters.\n\nUse the `url` parameter to redirect the user from the invitation email to your app. After the user is redirected, use the [Update Team Membership Status](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/teams#updateMembershipStatus) endpoint to allow the user to accept the invitation to the team. \n\nPlease note that to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) Appwrite will accept the only redirect URLs under the domains you have added as a platform on the Appwrite Console.\n","responses":{"201":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"createMembership","weight":207,"cookies":false,"type":"","demo":"teams\/create-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/create-team-membership.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"email":{"type":"string","description":"Email of the new team member.","default":"","x-example":"email@example.com"},"userId":{"type":"string","description":"ID of the user to be added to a team.","default":"","x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":"","x-example":"+12065550100"},"roles":{"type":"array","description":"Array of strings. Use this param to set the user roles in the team. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":"","x-example":"https:\/\/example.com"},"name":{"type":"string","description":"Name of the new team member. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["roles"]}}]}},"\/teams\/{teamId}\/memberships\/{membershipId}":{"get":{"summary":"Get team membership","operationId":"teamsGetMembership","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get a team member by the membership unique id. All team members have read access for this resource.","responses":{"200":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"getMembership","weight":209,"cookies":false,"type":"","demo":"teams\/get-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-member.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/memberships","offline-key":"{membershipId}","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"type":"string","x-example":"[MEMBERSHIP_ID]","in":"path"}]},"patch":{"summary":"Update membership","operationId":"teamsUpdateMembership","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Modify the roles of a team member. Only team members with the owner role have access to this endpoint. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions).\n","responses":{"200":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"updateMembership","weight":210,"cookies":false,"type":"","demo":"teams\/update-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"type":"string","x-example":"[MEMBERSHIP_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"roles":{"type":"array","description":"An array of strings. Use this param to set the user's roles in the team. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}}},"required":["roles"]}}]},"delete":{"summary":"Delete team membership","operationId":"teamsDeleteMembership","consumes":["application\/json"],"produces":[],"tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":212,"cookies":false,"type":"","demo":"teams\/delete-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/delete-team-membership.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"type":"string","x-example":"[MEMBERSHIP_ID]","in":"path"}]}},"\/teams\/{teamId}\/memberships\/{membershipId}\/status":{"patch":{"summary":"Update team membership status","operationId":"teamsUpdateMembershipStatus","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Use this endpoint to allow a user to accept an invitation to join a team after being redirected back to your app from the invitation email received by the user.\n\nIf the request is successful, a session for the user is automatically created.\n","responses":{"200":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"updateMembershipStatus","weight":211,"cookies":false,"type":"","demo":"teams\/update-membership-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"public","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"type":"string","x-example":"[MEMBERSHIP_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Secret key.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/teams\/{teamId}\/prefs":{"get":{"summary":"Get team preferences","operationId":"teamsGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get the team's shared preferences by its unique ID. If a preference doesn't need to be shared by all team members, prefer storing them in [user preferences](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#getPrefs).","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":203,"cookies":false,"type":"","demo":"teams\/get-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/prefs","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"}]},"put":{"summary":"Update preferences","operationId":"teamsUpdatePrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Update the team's preferences by its unique ID. The object you pass is stored as is and replaces any previous value. The maximum allowed prefs size is 64kB and throws an error if exceeded.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"updatePrefs","weight":205,"cookies":false,"type":"","demo":"teams\/update-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/prefs","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"prefs":{"type":"object","description":"Prefs key-value JSON object.","default":{},"x-example":"{}"}},"required":["prefs"]}}]}},"\/users":{"get":{"summary":"List users","operationId":"usersList","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get a list of all the project's users. You can use the query params to filter your results.","responses":{"200":{"description":"Users List","schema":{"$ref":"#\/definitions\/userList"}}},"x-appwrite":{"method":"list","weight":223,"cookies":false,"type":"","demo":"users\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-users.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, email, phone, status, passwordUpdate, registration, emailVerification, phoneVerification","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create user","operationId":"usersCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"create","weight":214,"cookies":false,"type":"","demo":"users\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"},"password":{"type":"string","description":"Plain text user password. Must be at least 8 chars.","default":"","x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId"]}}]}},"\/users\/argon2":{"post":{"summary":"Create user with Argon2 password","operationId":"usersCreateArgon2User","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Argon2](https:\/\/en.wikipedia.org\/wiki\/Argon2) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createArgon2User","weight":217,"cookies":false,"type":"","demo":"users\/create-argon2user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-argon2-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Argon2.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/bcrypt":{"post":{"summary":"Create user with bcrypt password","operationId":"usersCreateBcryptUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Bcrypt](https:\/\/en.wikipedia.org\/wiki\/Bcrypt) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createBcryptUser","weight":215,"cookies":false,"type":"","demo":"users\/create-bcrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-bcrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Bcrypt.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/identities":{"get":{"summary":"List Identities","operationId":"usersListIdentities","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get identities for all users.","responses":{"200":{"description":"Identities List","schema":{"$ref":"#\/definitions\/identityList"}}},"x-appwrite":{"method":"listIdentities","weight":231,"cookies":false,"type":"","demo":"users\/list-identities.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-identities.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, provider, providerUid, providerEmail, providerAccessTokenExpiry","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]}},"\/users\/identities\/{identityId}":{"delete":{"summary":"Delete identity","operationId":"usersDeleteIdentity","consumes":["application\/json"],"produces":[],"tags":["users"],"description":"Delete an identity by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIdentity","weight":251,"cookies":false,"type":"","demo":"users\/delete-identity.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-identity.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"identityId","description":"Identity ID.","required":true,"type":"string","x-example":"[IDENTITY_ID]","in":"path"}]}},"\/users\/md5":{"post":{"summary":"Create user with MD5 password","operationId":"usersCreateMD5User","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [MD5](https:\/\/en.wikipedia.org\/wiki\/MD5) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createMD5User","weight":216,"cookies":false,"type":"","demo":"users\/create-m-d5user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-md5-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using MD5.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/phpass":{"post":{"summary":"Create user with PHPass password","operationId":"usersCreatePHPassUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [PHPass](https:\/\/www.openwall.com\/phpass\/) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createPHPassUser","weight":219,"cookies":false,"type":"","demo":"users\/create-p-h-pass-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-phpass-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or pass the string `ID.unique()`to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using PHPass.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/scrypt":{"post":{"summary":"Create user with Scrypt password","operationId":"usersCreateScryptUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt](https:\/\/github.com\/Tarsnap\/scrypt) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createScryptUser","weight":220,"cookies":false,"type":"","demo":"users\/create-scrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt.","default":null,"x-example":"password"},"passwordSalt":{"type":"string","description":"Optional salt used to hash password.","default":null,"x-example":"[PASSWORD_SALT]"},"passwordCpu":{"type":"integer","description":"Optional CPU cost used to hash password.","default":null,"x-example":null},"passwordMemory":{"type":"integer","description":"Optional memory cost used to hash password.","default":null,"x-example":null},"passwordParallel":{"type":"integer","description":"Optional parallelization cost used to hash password.","default":null,"x-example":null},"passwordLength":{"type":"integer","description":"Optional hash length used to hash password.","default":null,"x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordCpu","passwordMemory","passwordParallel","passwordLength"]}}]}},"\/users\/scrypt-modified":{"post":{"summary":"Create user with Scrypt modified password","operationId":"usersCreateScryptModifiedUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt Modified](https:\/\/gist.github.com\/Meldiron\/eecf84a0225eccb5a378d45bb27462cc) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createScryptModifiedUser","weight":221,"cookies":false,"type":"","demo":"users\/create-scrypt-modified-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-modified-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt Modified.","default":null,"x-example":"password"},"passwordSalt":{"type":"string","description":"Salt used to hash password.","default":null,"x-example":"[PASSWORD_SALT]"},"passwordSaltSeparator":{"type":"string","description":"Salt separator used to hash password.","default":null,"x-example":"[PASSWORD_SALT_SEPARATOR]"},"passwordSignerKey":{"type":"string","description":"Signer key used to hash password.","default":null,"x-example":"[PASSWORD_SIGNER_KEY]"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordSaltSeparator","passwordSignerKey"]}}]}},"\/users\/sha":{"post":{"summary":"Create user with SHA password","operationId":"usersCreateSHAUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [SHA](https:\/\/en.wikipedia.org\/wiki\/Secure_Hash_Algorithm) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createSHAUser","weight":218,"cookies":false,"type":"","demo":"users\/create-s-h-a-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-sha-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using SHA.","default":null,"x-example":"password"},"passwordVersion":{"type":"string","description":"Optional SHA version used to hash password. Allowed values are: 'sha1', 'sha224', 'sha256', 'sha384', 'sha512\/224', 'sha512\/256', 'sha512', 'sha3-224', 'sha3-256', 'sha3-384', 'sha3-512'","default":"","x-example":"sha1","enum":["sha1","sha224","sha256","sha384","sha512\/224","sha512\/256","sha512","sha3-224","sha3-256","sha3-384","sha3-512"],"x-enum-name":"PasswordHash","x-enum-keys":[]},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/{userId}":{"get":{"summary":"Get user","operationId":"usersGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get a user by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"get","weight":224,"cookies":false,"type":"","demo":"users\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]},"delete":{"summary":"Delete user","operationId":"usersDelete","consumes":["application\/json"],"produces":[],"tags":["users"],"description":"Delete a user by its unique ID, thereby releasing it's ID. Since ID is released and can be reused, all user-related resources like documents or storage files should be deleted before user deletion. If you want to keep ID reserved, use the [updateStatus](https:\/\/appwrite.io\/docs\/server\/users#usersUpdateStatus) endpoint instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":249,"cookies":false,"type":"","demo":"users\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]}},"\/users\/{userId}\/email":{"patch":{"summary":"Update email","operationId":"usersUpdateEmail","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user email by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateEmail","weight":237,"cookies":false,"type":"","demo":"users\/update-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"}},"required":["email"]}}]}},"\/users\/{userId}\/labels":{"put":{"summary":"Update user labels","operationId":"usersUpdateLabels","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user labels by its unique ID. \n\nLabels can be used to grant access to resources. While teams are a way for user's to share access to a resource, labels can be defined by the developer to grant access without an invitation. See the [Permissions docs](https:\/\/appwrite.io\/docs\/permissions) for more info.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateLabels","weight":233,"cookies":false,"type":"","demo":"users\/update-labels.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-labels.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"labels":{"type":"array","description":"Array of user labels. Replaces the previous labels. Maximum of 1000 labels are allowed, each up to 36 alphanumeric characters long.","default":null,"x-example":null,"items":{"type":"string"}}},"required":["labels"]}}]}},"\/users\/{userId}\/logs":{"get":{"summary":"List user logs","operationId":"usersListLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listLogs","weight":229,"cookies":false,"type":"","demo":"users\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/users\/{userId}\/memberships":{"get":{"summary":"List user memberships","operationId":"usersListMemberships","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user membership list by its unique ID.","responses":{"200":{"description":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"listMemberships","weight":228,"cookies":false,"type":"","demo":"users\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-memberships.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]}},"\/users\/{userId}\/mfa":{"patch":{"summary":"Update MFA","operationId":"usersUpdateMfa","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateMfa","weight":242,"cookies":false,"type":"","demo":"users\/update-mfa.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-mfa.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"mfa":{"type":"boolean","description":"Enable or disable MFA.","default":null,"x-example":false}},"required":["mfa"]}}]}},"\/users\/{userId}\/mfa\/{provider}":{"delete":{"summary":"Delete Authenticator","operationId":"usersDeleteAuthenticator","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"deleteAuthenticator","weight":244,"cookies":false,"type":"","demo":"users\/delete-authenticator.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-mfa.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"provider","description":"Provider.","required":true,"type":"string","x-example":"totp","enum":["totp"],"x-enum-name":"AuthenticatorProvider","x-enum-keys":[],"in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"otp":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[OTP]"}},"required":["otp"]}}]}},"\/users\/{userId}\/name":{"patch":{"summary":"Update name","operationId":"usersUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user name by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateName","weight":235,"cookies":false,"type":"","demo":"users\/update-name.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-name.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"User name. Max length: 128 chars.","default":null,"x-example":"[NAME]"}},"required":["name"]}}]}},"\/users\/{userId}\/password":{"patch":{"summary":"Update password","operationId":"usersUpdatePassword","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user password by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePassword","weight":236,"cookies":false,"type":"","demo":"users\/update-password.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-password.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"password":{"type":"string","description":"New user password. Must be at least 8 chars.","default":null,"x-example":null}},"required":["password"]}}]}},"\/users\/{userId}\/phone":{"patch":{"summary":"Update phone","operationId":"usersUpdatePhone","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user phone by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePhone","weight":238,"cookies":false,"type":"","demo":"users\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"number":{"type":"string","description":"User phone number.","default":null,"x-example":"+12065550100"}},"required":["number"]}}]}},"\/users\/{userId}\/prefs":{"get":{"summary":"Get user preferences","operationId":"usersGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user preferences by its unique ID.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":225,"cookies":false,"type":"","demo":"users\/get-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]},"patch":{"summary":"Update user preferences","operationId":"usersUpdatePrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user preferences by its unique ID. The object you pass is stored as is, and replaces any previous value. The maximum allowed prefs size is 64kB and throws error if exceeded.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"updatePrefs","weight":240,"cookies":false,"type":"","demo":"users\/update-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"prefs":{"type":"object","description":"Prefs key-value JSON object.","default":{},"x-example":"{}"}},"required":["prefs"]}}]}},"\/users\/{userId}\/providers":{"get":{"summary":"List Providers","operationId":"usersListProviders","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"","responses":{"200":{"description":"MFAProviders","schema":{"$ref":"#\/definitions\/mfaProviders"}}},"x-appwrite":{"method":"listProviders","weight":243,"cookies":false,"type":"","demo":"users\/list-providers.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-providers.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]}},"\/users\/{userId}\/sessions":{"get":{"summary":"List user sessions","operationId":"usersListSessions","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user sessions list by its unique ID.","responses":{"200":{"description":"Sessions List","schema":{"$ref":"#\/definitions\/sessionList"}}},"x-appwrite":{"method":"listSessions","weight":227,"cookies":false,"type":"","demo":"users\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]},"post":{"summary":"Create session","operationId":"usersCreateSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Creates a session for a user. Returns an immediately usable session object.\n\nIf you want to generate a token for a custom authentication flow, use the [POST \/users\/{userId}\/tokens](https:\/\/appwrite.io\/docs\/server\/users#createToken) endpoint.","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"createSession","weight":245,"cookies":false,"type":"","demo":"users\/create-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-session.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]},"delete":{"summary":"Delete user sessions","operationId":"usersDeleteSessions","consumes":["application\/json"],"produces":[],"tags":["users"],"description":"Delete all user's sessions by using the user's unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":248,"cookies":false,"type":"","demo":"users\/delete-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]}},"\/users\/{userId}\/sessions\/{sessionId}":{"delete":{"summary":"Delete user session","operationId":"usersDeleteSession","consumes":["application\/json"],"produces":[],"tags":["users"],"description":"Delete a user sessions by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSession","weight":247,"cookies":false,"type":"","demo":"users\/delete-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-user-session.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"sessionId","description":"Session ID.","required":true,"type":"string","x-example":"[SESSION_ID]","in":"path"}]}},"\/users\/{userId}\/status":{"patch":{"summary":"Update user status","operationId":"usersUpdateStatus","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user status by its unique ID. Use this endpoint as an alternative to deleting a user if you want to keep user's ID reserved.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateStatus","weight":232,"cookies":false,"type":"","demo":"users\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"status":{"type":"boolean","description":"User Status. To activate the user pass `true` and to block the user pass `false`.","default":null,"x-example":false}},"required":["status"]}}]}},"\/users\/{userId}\/targets":{"get":{"summary":"List User Targets","operationId":"usersListTargets","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"","responses":{"200":{"description":"Target list","schema":{"$ref":"#\/definitions\/targetList"}}},"x-appwrite":{"method":"listTargets","weight":230,"cookies":false,"type":"","demo":"users\/list-targets.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-targets.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.read","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, email, phone, status, passwordUpdate, registration, emailVerification, phoneVerification","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"post":{"summary":"Create User Target","operationId":"usersCreateTarget","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"","responses":{"201":{"description":"Target","schema":{"$ref":"#\/definitions\/target"}}},"x-appwrite":{"method":"createTarget","weight":222,"cookies":false,"type":"","demo":"users\/create-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-target.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"targetId":{"type":"string","description":"Target ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[TARGET_ID]"},"providerType":{"type":"string","description":"The target provider type. Can be one of the following: `email`, `sms` or `push`.","default":null,"x-example":"email","enum":["email","sms","push"],"x-enum-name":"MessagingProviderType","x-enum-keys":[]},"identifier":{"type":"string","description":"The target identifier (token, email, phone etc.)","default":null,"x-example":"[IDENTIFIER]"},"providerId":{"type":"string","description":"Provider ID. Message will be sent to this target from the specified provider ID. If no provider ID is set the first setup provider will be used.","default":"","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Target name. Max length: 128 chars. For example: My Awesome App Galaxy S23.","default":"","x-example":"[NAME]"}},"required":["targetId","providerType","identifier"]}}]}},"\/users\/{userId}\/targets\/{targetId}":{"get":{"summary":"Get User Target","operationId":"usersGetTarget","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"","responses":{"200":{"description":"Target","schema":{"$ref":"#\/definitions\/target"}}},"x-appwrite":{"method":"getTarget","weight":226,"cookies":false,"type":"","demo":"users\/get-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-target.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.read","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"targetId","description":"Target ID.","required":true,"type":"string","x-example":"[TARGET_ID]","in":"path"}]},"patch":{"summary":"Update User target","operationId":"usersUpdateTarget","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"","responses":{"200":{"description":"Target","schema":{"$ref":"#\/definitions\/target"}}},"x-appwrite":{"method":"updateTarget","weight":241,"cookies":false,"type":"","demo":"users\/update-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-target.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"targetId","description":"Target ID.","required":true,"type":"string","x-example":"[TARGET_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"identifier":{"type":"string","description":"The target identifier (token, email, phone etc.)","default":"","x-example":"[IDENTIFIER]"},"providerId":{"type":"string","description":"Provider ID. Message will be sent to this target from the specified provider ID. If no provider ID is set the first setup provider will be used.","default":"","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Target name. Max length: 128 chars. For example: My Awesome App Galaxy S23.","default":"","x-example":"[NAME]"}}}}]},"delete":{"summary":"Delete user target","operationId":"usersDeleteTarget","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteTarget","weight":250,"cookies":false,"type":"","demo":"users\/delete-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-target.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"targetId","description":"Target ID.","required":true,"type":"string","x-example":"[TARGET_ID]","in":"path"}]}},"\/users\/{userId}\/tokens":{"post":{"summary":"Create token","operationId":"usersCreateToken","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Returns a token with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [PUT \/account\/sessions\/custom](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateCustomSession) endpoint to complete the login process.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createToken","weight":246,"cookies":false,"type":"","demo":"users\/create-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-token.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"length":{"type":"integer","description":"Token length in characters. The default length is 6 characters","default":6,"x-example":4},"expire":{"type":"integer","description":"Token expiration period in seconds. The default expiration is 15 minutes.","default":900,"x-example":60}}}}]}},"\/users\/{userId}\/verification":{"patch":{"summary":"Update email verification","operationId":"usersUpdateEmailVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user email verification status by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateEmailVerification","weight":239,"cookies":false,"type":"","demo":"users\/update-email-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-email-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"emailVerification":{"type":"boolean","description":"User email verification status.","default":null,"x-example":false}},"required":["emailVerification"]}}]}},"\/users\/{userId}\/verification\/phone":{"patch":{"summary":"Update phone verification","operationId":"usersUpdatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user phone verification status by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePhoneVerification","weight":234,"cookies":false,"type":"","demo":"users\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"phoneVerification":{"type":"boolean","description":"User phone verification status.","default":null,"x-example":false}},"required":["phoneVerification"]}}]}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"project","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]},{"name":"proxy","description":"The Proxy Service allows you to configure actions for your domains beyond DNS configuration.","x-globalAttributes":[]},{"name":"graphql","description":"The GraphQL API allows you to query and mutate your Appwrite server using GraphQL.","x-globalAttributes":[]},{"name":"console","description":"The Console service allows you to interact with console relevant informations.","x-globalAttributes":[]},{"name":"migrations","description":"The Migrations service allows you to migrate third-party data to your Appwrite project.","x-globalAttributes":[]},{"name":"messaging","description":"The Messaging service allows you to send messages to any provider type (SMTP, push notification, SMS, etc.).","x-globalAttributes":[]}],"definitions":{"any":{"description":"Any","type":"object","additionalProperties":true},"documentList":{"description":"Documents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of documents documents that matched your query.","x-example":5,"format":"int32"},"documents":{"type":"array","description":"List of documents.","items":{"type":"object","$ref":"#\/definitions\/document"},"x-example":""}},"required":["total","documents"]},"collectionList":{"description":"Collections List","type":"object","properties":{"total":{"type":"integer","description":"Total number of collections documents that matched your query.","x-example":5,"format":"int32"},"collections":{"type":"array","description":"List of collections.","items":{"type":"object","$ref":"#\/definitions\/collection"},"x-example":""}},"required":["total","collections"]},"databaseList":{"description":"Databases List","type":"object","properties":{"total":{"type":"integer","description":"Total number of databases documents that matched your query.","x-example":5,"format":"int32"},"databases":{"type":"array","description":"List of databases.","items":{"type":"object","$ref":"#\/definitions\/database"},"x-example":""}},"required":["total","databases"]},"indexList":{"description":"Indexes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of indexes documents that matched your query.","x-example":5,"format":"int32"},"indexes":{"type":"array","description":"List of indexes.","items":{"type":"object","$ref":"#\/definitions\/index"},"x-example":""}},"required":["total","indexes"]},"userList":{"description":"Users List","type":"object","properties":{"total":{"type":"integer","description":"Total number of users documents that matched your query.","x-example":5,"format":"int32"},"users":{"type":"array","description":"List of users.","items":{"type":"object","$ref":"#\/definitions\/user"},"x-example":""}},"required":["total","users"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of sessions documents that matched your query.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"type":"object","$ref":"#\/definitions\/session"},"x-example":""}},"required":["total","sessions"]},"identityList":{"description":"Identities List","type":"object","properties":{"total":{"type":"integer","description":"Total number of identities documents that matched your query.","x-example":5,"format":"int32"},"identities":{"type":"array","description":"List of identities.","items":{"type":"object","$ref":"#\/definitions\/identity"},"x-example":""}},"required":["total","identities"]},"logList":{"description":"Logs List","type":"object","properties":{"total":{"type":"integer","description":"Total number of logs documents that matched your query.","x-example":5,"format":"int32"},"logs":{"type":"array","description":"List of logs.","items":{"type":"object","$ref":"#\/definitions\/log"},"x-example":""}},"required":["total","logs"]},"fileList":{"description":"Files List","type":"object","properties":{"total":{"type":"integer","description":"Total number of files documents that matched your query.","x-example":5,"format":"int32"},"files":{"type":"array","description":"List of files.","items":{"type":"object","$ref":"#\/definitions\/file"},"x-example":""}},"required":["total","files"]},"bucketList":{"description":"Buckets List","type":"object","properties":{"total":{"type":"integer","description":"Total number of buckets documents that matched your query.","x-example":5,"format":"int32"},"buckets":{"type":"array","description":"List of buckets.","items":{"type":"object","$ref":"#\/definitions\/bucket"},"x-example":""}},"required":["total","buckets"]},"teamList":{"description":"Teams List","type":"object","properties":{"total":{"type":"integer","description":"Total number of teams documents that matched your query.","x-example":5,"format":"int32"},"teams":{"type":"array","description":"List of teams.","items":{"type":"object","$ref":"#\/definitions\/team"},"x-example":""}},"required":["total","teams"]},"membershipList":{"description":"Memberships List","type":"object","properties":{"total":{"type":"integer","description":"Total number of memberships documents that matched your query.","x-example":5,"format":"int32"},"memberships":{"type":"array","description":"List of memberships.","items":{"type":"object","$ref":"#\/definitions\/membership"},"x-example":""}},"required":["total","memberships"]},"functionList":{"description":"Functions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of functions documents that matched your query.","x-example":5,"format":"int32"},"functions":{"type":"array","description":"List of functions.","items":{"type":"object","$ref":"#\/definitions\/function"},"x-example":""}},"required":["total","functions"]},"runtimeList":{"description":"Runtimes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of runtimes documents that matched your query.","x-example":5,"format":"int32"},"runtimes":{"type":"array","description":"List of runtimes.","items":{"type":"object","$ref":"#\/definitions\/runtime"},"x-example":""}},"required":["total","runtimes"]},"deploymentList":{"description":"Deployments List","type":"object","properties":{"total":{"type":"integer","description":"Total number of deployments documents that matched your query.","x-example":5,"format":"int32"},"deployments":{"type":"array","description":"List of deployments.","items":{"type":"object","$ref":"#\/definitions\/deployment"},"x-example":""}},"required":["total","deployments"]},"executionList":{"description":"Executions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of executions documents that matched your query.","x-example":5,"format":"int32"},"executions":{"type":"array","description":"List of executions.","items":{"type":"object","$ref":"#\/definitions\/execution"},"x-example":""}},"required":["total","executions"]},"countryList":{"description":"Countries List","type":"object","properties":{"total":{"type":"integer","description":"Total number of countries documents that matched your query.","x-example":5,"format":"int32"},"countries":{"type":"array","description":"List of countries.","items":{"type":"object","$ref":"#\/definitions\/country"},"x-example":""}},"required":["total","countries"]},"continentList":{"description":"Continents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of continents documents that matched your query.","x-example":5,"format":"int32"},"continents":{"type":"array","description":"List of continents.","items":{"type":"object","$ref":"#\/definitions\/continent"},"x-example":""}},"required":["total","continents"]},"languageList":{"description":"Languages List","type":"object","properties":{"total":{"type":"integer","description":"Total number of languages documents that matched your query.","x-example":5,"format":"int32"},"languages":{"type":"array","description":"List of languages.","items":{"type":"object","$ref":"#\/definitions\/language"},"x-example":""}},"required":["total","languages"]},"currencyList":{"description":"Currencies List","type":"object","properties":{"total":{"type":"integer","description":"Total number of currencies documents that matched your query.","x-example":5,"format":"int32"},"currencies":{"type":"array","description":"List of currencies.","items":{"type":"object","$ref":"#\/definitions\/currency"},"x-example":""}},"required":["total","currencies"]},"phoneList":{"description":"Phones List","type":"object","properties":{"total":{"type":"integer","description":"Total number of phones documents that matched your query.","x-example":5,"format":"int32"},"phones":{"type":"array","description":"List of phones.","items":{"type":"object","$ref":"#\/definitions\/phone"},"x-example":""}},"required":["total","phones"]},"variableList":{"description":"Variables List","type":"object","properties":{"total":{"type":"integer","description":"Total number of variables documents that matched your query.","x-example":5,"format":"int32"},"variables":{"type":"array","description":"List of variables.","items":{"type":"object","$ref":"#\/definitions\/variable"},"x-example":""}},"required":["total","variables"]},"localeCodeList":{"description":"Locale codes list","type":"object","properties":{"total":{"type":"integer","description":"Total number of localeCodes documents that matched your query.","x-example":5,"format":"int32"},"localeCodes":{"type":"array","description":"List of localeCodes.","items":{"type":"object","$ref":"#\/definitions\/localeCode"},"x-example":""}},"required":["total","localeCodes"]},"providerList":{"description":"Provider list","type":"object","properties":{"total":{"type":"integer","description":"Total number of providers documents that matched your query.","x-example":5,"format":"int32"},"providers":{"type":"array","description":"List of providers.","items":{"type":"object","$ref":"#\/definitions\/provider"},"x-example":""}},"required":["total","providers"]},"messageList":{"description":"Message list","type":"object","properties":{"total":{"type":"integer","description":"Total number of messages documents that matched your query.","x-example":5,"format":"int32"},"messages":{"type":"array","description":"List of messages.","items":{"type":"object","$ref":"#\/definitions\/message"},"x-example":""}},"required":["total","messages"]},"topicList":{"description":"Topic list","type":"object","properties":{"total":{"type":"integer","description":"Total number of topics documents that matched your query.","x-example":5,"format":"int32"},"topics":{"type":"array","description":"List of topics.","items":{"type":"object","$ref":"#\/definitions\/topic"},"x-example":""}},"required":["total","topics"]},"subscriberList":{"description":"Subscriber list","type":"object","properties":{"total":{"type":"integer","description":"Total number of subscribers documents that matched your query.","x-example":5,"format":"int32"},"subscribers":{"type":"array","description":"List of subscribers.","items":{"type":"object","$ref":"#\/definitions\/subscriber"},"x-example":""}},"required":["total","subscribers"]},"targetList":{"description":"Target list","type":"object","properties":{"total":{"type":"integer","description":"Total number of targets documents that matched your query.","x-example":5,"format":"int32"},"targets":{"type":"array","description":"List of targets.","items":{"type":"object","$ref":"#\/definitions\/target"},"x-example":""}},"required":["total","targets"]},"database":{"description":"Database","type":"object","properties":{"$id":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Database name.","x-example":"My Database"},"$createdAt":{"type":"string","description":"Database creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Database update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"enabled":{"type":"boolean","description":"If database is enabled. Can be 'enabled' or 'disabled'. When disabled, the database is inaccessible to users, but remains accessible to Server SDKs using API keys.","x-example":false}},"required":["$id","name","$createdAt","$updatedAt","enabled"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Collection creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Collection update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Collection permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled. Can be 'enabled' or 'disabled'. When disabled, the collection is inaccessible to users, but remains accessible to Server SDKs using API keys.","x-example":false},"documentSecurity":{"type":"boolean","description":"Whether document-level permissions are enabled. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":true},"attributes":{"type":"array","description":"Collection attributes.","items":{"x-anyOf":[{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeRelationship"},{"$ref":"#\/definitions\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"type":"object","$ref":"#\/definitions\/index"},"x-example":{}}},"required":["$id","$createdAt","$updatedAt","$permissions","databaseId","name","enabled","documentSecurity","attributes","indexes"]},"attributeList":{"description":"Attributes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of attributes in the given collection.","x-example":5,"format":"int32"},"attributes":{"type":"array","description":"List of attributes.","items":{"x-anyOf":[{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeRelationship"},{"$ref":"#\/definitions\/attributeString"}]},"x-example":""}},"required":["total","attributes"]},"attributeString":{"description":"AttributeString","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"fullName"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"size":{"type":"integer","description":"Attribute size.","x-example":128,"format":"int32"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"default","x-nullable":true}},"required":["key","type","status","error","required","size"]},"attributeInteger":{"description":"AttributeInteger","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"count"},"type":{"type":"string","description":"Attribute type.","x-example":"integer"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"min":{"type":"integer","description":"Minimum value to enforce for new documents.","x-example":1,"format":"int32","x-nullable":true},"max":{"type":"integer","description":"Maximum value to enforce for new documents.","x-example":10,"format":"int32","x-nullable":true},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":10,"format":"int32","x-nullable":true}},"required":["key","type","status","error","required"]},"attributeFloat":{"description":"AttributeFloat","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"percentageCompleted"},"type":{"type":"string","description":"Attribute type.","x-example":"double"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"min":{"type":"number","description":"Minimum value to enforce for new documents.","x-example":1.5,"format":"double","x-nullable":true},"max":{"type":"number","description":"Maximum value to enforce for new documents.","x-example":10.5,"format":"double","x-nullable":true},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":2.5,"format":"double","x-nullable":true}},"required":["key","type","status","error","required"]},"attributeBoolean":{"description":"AttributeBoolean","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"isEnabled"},"type":{"type":"string","description":"Attribute type.","x-example":"boolean"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":false,"x-nullable":true}},"required":["key","type","status","error","required"]},"attributeEmail":{"description":"AttributeEmail","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"userEmail"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"format":{"type":"string","description":"String format.","x-example":"email"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"default@example.com","x-nullable":true}},"required":["key","type","status","error","required","format"]},"attributeEnum":{"description":"AttributeEnum","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"status"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"elements":{"type":"array","description":"Array of elements in enumerated type.","items":{"type":"string"},"x-example":"element"},"format":{"type":"string","description":"String format.","x-example":"enum"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"element","x-nullable":true}},"required":["key","type","status","error","required","elements","format"]},"attributeIp":{"description":"AttributeIP","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"ipAddress"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"format":{"type":"string","description":"String format.","x-example":"ip"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"192.0.2.0","x-nullable":true}},"required":["key","type","status","error","required","format"]},"attributeUrl":{"description":"AttributeURL","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"githubUrl"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"format":{"type":"string","description":"String format.","x-example":"url"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"http:\/\/example.com","x-nullable":true}},"required":["key","type","status","error","required","format"]},"attributeDatetime":{"description":"AttributeDatetime","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"birthDay"},"type":{"type":"string","description":"Attribute type.","x-example":"datetime"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"format":{"type":"string","description":"ISO 8601 format.","x-example":"datetime"},"default":{"type":"string","description":"Default value for attribute when not provided. Only null is optional","x-example":"2020-10-15T06:38:00.000+00:00","x-nullable":true}},"required":["key","type","status","error","required","format"]},"attributeRelationship":{"description":"AttributeRelationship","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"fullName"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"relatedCollection":{"type":"string","description":"The ID of the related collection.","x-example":"collection"},"relationType":{"type":"string","description":"The type of the relationship.","x-example":"oneToOne|oneToMany|manyToOne|manyToMany"},"twoWay":{"type":"boolean","description":"Is the relationship two-way?","x-example":false},"twoWayKey":{"type":"string","description":"The key of the two-way relationship.","x-example":"string"},"onDelete":{"type":"string","description":"How deleting the parent document will propagate to child documents.","x-example":"restrict|cascade|setNull"},"side":{"type":"string","description":"Whether this is the parent or child side of the relationship","x-example":"parent|child"}},"required":["key","type","status","error","required","relatedCollection","relationType","twoWay","twoWayKey","onDelete","side"]},"index":{"description":"Index","type":"object","properties":{"key":{"type":"string","description":"Index Key.","x-example":"index1"},"type":{"type":"string","description":"Index type.","x-example":"primary"},"status":{"type":"string","description":"Index status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an index.","x-example":"string"},"attributes":{"type":"array","description":"Index attributes.","items":{"type":"string"},"x-example":[]},"orders":{"type":"array","description":"Index orders.","items":{"type":"string"},"x-example":[],"x-nullable":true}},"required":["key","type","status","error","attributes"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"user":{"description":"User","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"password":{"type":"string","description":"Hashed user password.","x-example":"$argon2id$v=19$m=2048,t=4,p=3$aUZjLnliVWRINmFNTWMudg$5S+x+7uA31xFnrHFT47yFwcJeaP0w92L\/4LdgrVRXxE","x-nullable":true},"hash":{"type":"string","description":"Password hashing algorithm.","x-example":"argon2","x-nullable":true},"hashOptions":{"type":"object","description":"Password hashing algorithm configuration.","x-example":{},"items":{"x-oneOf":[{"$ref":"#\/definitions\/algoArgon2"},{"$ref":"#\/definitions\/algoScrypt"},{"$ref":"#\/definitions\/algoScryptModified"},{"$ref":"#\/definitions\/algoBcrypt"},{"$ref":"#\/definitions\/algoPhpass"},{"$ref":"#\/definitions\/algoSha"},{"$ref":"#\/definitions\/algoMd5"}]},"x-nullable":true},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"labels":{"type":"array","description":"Labels for the user.","items":{"type":"string"},"x-example":["vip"]},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"mfa":{"type":"boolean","description":"Multi factor authentication status.","x-example":true},"totp":{"type":"boolean","description":"TOTP status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"type":"object","$ref":"#\/definitions\/preferences"}},"targets":{"type":"array","description":"A user-owned message receiver. A single user may have multiple e.g. emails, phones, and a browser. Each target is registered with a single provider.","items":{"type":"object","$ref":"#\/definitions\/target"},"x-example":[]},"accessedAt":{"type":"string","description":"Most recent access date in ISO 8601 format. This attribute is only updated again after 24 hours.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","$updatedAt","name","registration","status","labels","passwordUpdate","email","phone","emailVerification","phoneVerification","mfa","totp","prefs","targets","accessedAt"]},"algoMd5":{"description":"AlgoMD5","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"md5"}},"required":["type"]},"algoSha":{"description":"AlgoSHA","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"sha"}},"required":["type"]},"algoPhpass":{"description":"AlgoPHPass","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"phpass"}},"required":["type"]},"algoBcrypt":{"description":"AlgoBcrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"bcrypt"}},"required":["type"]},"algoScrypt":{"description":"AlgoScrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scrypt"},"costCpu":{"type":"integer","description":"CPU complexity of computed hash.","x-example":8,"format":"int32"},"costMemory":{"type":"integer","description":"Memory complexity of computed hash.","x-example":14,"format":"int32"},"costParallel":{"type":"integer","description":"Parallelization of computed hash.","x-example":1,"format":"int32"},"length":{"type":"integer","description":"Length used to compute hash.","x-example":64,"format":"int32"}},"required":["type","costCpu","costMemory","costParallel","length"]},"algoScryptModified":{"description":"AlgoScryptModified","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scryptMod"},"salt":{"type":"string","description":"Salt used to compute hash.","x-example":"UxLMreBr6tYyjQ=="},"saltSeparator":{"type":"string","description":"Separator used to compute hash.","x-example":"Bw=="},"signerKey":{"type":"string","description":"Key used to compute hash.","x-example":"XyEKE9RcTDeLEsL\/RjwPDBv\/RqDl8fb3gpYEOQaPihbxf1ZAtSOHCjuAAa7Q3oHpCYhXSN9tizHgVOwn6krflQ=="}},"required":["type","salt","saltSeparator","signerKey"]},"algoArgon2":{"description":"AlgoArgon2","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"argon2"},"memoryCost":{"type":"integer","description":"Memory used to compute hash.","x-example":65536,"format":"int32"},"timeCost":{"type":"integer","description":"Amount of time consumed to compute hash","x-example":4,"format":"int32"},"threads":{"type":"integer","description":"Number of threads used to compute hash.","x-example":3,"format":"int32"}},"required":["type","memoryCost","timeCost","threads"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true},"factors":{"type":"array","description":"Returns a list of active session factors.","items":{"type":"string"},"x-example":["email"]},"secret":{"type":"string","description":"Secret used to authenticate the user. Only included if the request was made with an API key","x-example":"5e5bb8c16897e"}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current","factors","secret"]},"identity":{"description":"Identity","type":"object","properties":{"$id":{"type":"string","description":"Identity ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Identity creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Identity update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"provider":{"type":"string","description":"Identity Provider.","x-example":"email"},"providerUid":{"type":"string","description":"ID of the User in the Identity Provider.","x-example":"5e5bb8c16897e"},"providerEmail":{"type":"string","description":"Email of the User in the Identity Provider.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Identity Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Identity Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"}},"required":["$id","$createdAt","$updatedAt","userId","provider","providerUid","providerEmail","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"phrase":{"type":"string","description":"Security phrase of a token. Empty if security phrase was not requested when creating a token. It includes randomly generated phrase which is also sent in the external resource such as email.","x-example":"Golden Fox"}},"required":["$id","$createdAt","userId","secret","expire","phrase"]},"jwt":{"description":"JWT","type":"object","properties":{"jwt":{"type":"string","description":"JWT encoded string.","x-example":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c"}},"required":["jwt"]},"locale":{"description":"Locale","type":"object","properties":{"ip":{"type":"string","description":"User IP address.","x-example":"127.0.0.1"},"countryCode":{"type":"string","description":"Country code in [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) two-character format","x-example":"US"},"country":{"type":"string","description":"Country name. This field support localization.","x-example":"United States"},"continentCode":{"type":"string","description":"Continent code. A two character continent code \"AF\" for Africa, \"AN\" for Antarctica, \"AS\" for Asia, \"EU\" for Europe, \"NA\" for North America, \"OC\" for Oceania, and \"SA\" for South America.","x-example":"NA"},"continent":{"type":"string","description":"Continent name. This field support localization.","x-example":"North America"},"eu":{"type":"boolean","description":"True if country is part of the European Union.","x-example":false},"currency":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format","x-example":"USD"}},"required":["ip","countryCode","country","continentCode","continent","eu","currency"]},"localeCode":{"description":"LocaleCode","type":"object","properties":{"code":{"type":"string","description":"Locale codes in [ISO 639-1](https:\/\/en.wikipedia.org\/wiki\/List_of_ISO_639-1_codes)","x-example":"en-us"},"name":{"type":"string","description":"Locale name","x-example":"US"}},"required":["code","name"]},"file":{"description":"File","type":"object","properties":{"$id":{"type":"string","description":"File ID.","x-example":"5e5ea5c16897e"},"bucketId":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Bucket creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Bucket update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Bucket permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"fileSecurity":{"type":"boolean","description":"Whether file-level security is enabled. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":true},"name":{"type":"string","description":"Bucket name.","x-example":"Documents"},"enabled":{"type":"boolean","description":"Bucket enabled.","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size supported.","x-example":100,"format":"int32"},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions.","items":{"type":"string"},"x-example":["jpg","png"]},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Will be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd).","x-example":"gzip"},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$createdAt","$updatedAt","$permissions","fileSecurity","name","enabled","maximumFileSize","allowedFileExtensions","compression","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"},"prefs":{"type":"object","description":"Team preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"type":"object","$ref":"#\/definitions\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","total","prefs"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"mfa":{"type":"boolean","description":"Multi factor authentication status, true if the user has MFA enabled or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":["owner"]}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","mfa","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Function creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Function update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"users"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"enabled":{"type":"boolean","description":"Function enabled.","x-example":false},"live":{"type":"boolean","description":"Is the function deployed with the latest configuration? This is set to false if you've changed an environment variables, entrypoint, commands, or other settings that needs redeploy to be applied. When the value is false, redeploy the function to update it with the latest configuration.","x-example":false},"logging":{"type":"boolean","description":"Whether executions will be logged. When set to false, executions will not be logged, but will reduce resource used by your Appwrite project.","x-example":false},"runtime":{"type":"string","description":"Function execution runtime.","x-example":"python-3.8"},"deployment":{"type":"string","description":"Function's active deployment ID.","x-example":"5e5ea5c16897e"},"vars":{"type":"array","description":"Function variables.","items":{"type":"object","$ref":"#\/definitions\/variable"},"x-example":[]},"events":{"type":"array","description":"Function trigger events.","items":{"type":"string"},"x-example":"account.create"},"schedule":{"type":"string","description":"Function execution schedult in CRON format.","x-example":"5 4 * * *"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":300,"format":"int32"},"entrypoint":{"type":"string","description":"The entrypoint file used to execute the deployment.","x-example":"index.js"},"commands":{"type":"string","description":"The build command used to build the deployment.","x-example":"npm install"},"version":{"type":"string","description":"Version of Open Runtimes used for the function.","x-example":"v2"},"installationId":{"type":"string","description":"Function VCS (Version Control System) installation id.","x-example":"6m40at4ejk5h2u9s1hboo"},"providerRepositoryId":{"type":"string","description":"VCS (Version Control System) Repository ID","x-example":"appwrite"},"providerBranch":{"type":"string","description":"VCS (Version Control System) branch name","x-example":"main"},"providerRootDirectory":{"type":"string","description":"Path to function in VCS (Version Control System) repository","x-example":"functions\/helloWorld"},"providerSilentMode":{"type":"boolean","description":"Is VCS (Version Control System) connection is in silent mode? When in silence mode, no comments will be posted on the repository pull or merge requests","x-example":false}},"required":["$id","$createdAt","$updatedAt","execute","name","enabled","live","logging","runtime","deployment","vars","events","schedule","timeout","entrypoint","commands","version","installationId","providerRepositoryId","providerBranch","providerRootDirectory","providerSilentMode"]},"runtime":{"description":"Runtime","type":"object","properties":{"$id":{"type":"string","description":"Runtime ID.","x-example":"python-3.8"},"name":{"type":"string","description":"Runtime Name.","x-example":"Python"},"version":{"type":"string","description":"Runtime version.","x-example":"3.8"},"base":{"type":"string","description":"Base Docker image used to build the runtime.","x-example":"python:3.8-alpine"},"image":{"type":"string","description":"Image name of Docker Hub.","x-example":"appwrite\\\/runtime-for-python:3.8"},"logo":{"type":"string","description":"Name of the logo image.","x-example":"python.png"},"supports":{"type":"array","description":"List of supported architectures.","items":{"type":"string"},"x-example":"amd64"}},"required":["$id","name","version","base","image","logo","supports"]},"deployment":{"description":"Deployment","type":"object","properties":{"$id":{"type":"string","description":"Deployment ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Deployment creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Deployment update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"type":{"type":"string","description":"Type of deployment.","x-example":"vcs"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"index.js"},"size":{"type":"integer","description":"The code size in bytes.","x-example":128,"format":"int32"},"buildId":{"type":"string","description":"The current build ID.","x-example":"5e5ea5c16897e"},"activate":{"type":"boolean","description":"Whether the deployment should be automatically activated.","x-example":true},"status":{"type":"string","description":"The deployment status. Possible values are \"processing\", \"building\", \"waiting\", \"ready\", and \"failed\".","x-example":"ready"},"buildLogs":{"type":"string","description":"The build logs.","x-example":"Compiling source files..."},"buildTime":{"type":"integer","description":"The current build time in seconds.","x-example":128,"format":"int32"},"providerRepositoryName":{"type":"string","description":"The name of the vcs provider repository","x-example":"database"},"providerRepositoryOwner":{"type":"string","description":"The name of the vcs provider repository owner","x-example":"utopia"},"providerRepositoryUrl":{"type":"string","description":"The url of the vcs provider repository","x-example":"https:\/\/github.com\/vermakhushboo\/g4-node-function"},"providerBranch":{"type":"string","description":"The branch of the vcs repository","x-example":"0.7.x"},"providerCommitHash":{"type":"string","description":"The commit hash of the vcs commit","x-example":"7c3f25d"},"providerCommitAuthorUrl":{"type":"string","description":"The url of vcs commit author","x-example":"https:\/\/github.com\/vermakhushboo"},"providerCommitAuthor":{"type":"string","description":"The name of vcs commit author","x-example":"Khushboo Verma"},"providerCommitMessage":{"type":"string","description":"The commit message","x-example":"Update index.js"},"providerCommitUrl":{"type":"string","description":"The url of the vcs commit","x-example":"https:\/\/github.com\/vermakhushboo\/g4-node-function\/commit\/60c0416257a9cbcdd96b2d370c38d8f8d150ccfb"},"providerBranchUrl":{"type":"string","description":"The branch of the vcs repository","x-example":"https:\/\/github.com\/vermakhushboo\/appwrite\/tree\/0.7.x"}},"required":["$id","$createdAt","$updatedAt","type","resourceId","resourceType","entrypoint","size","buildId","activate","status","buildLogs","buildTime","providerRepositoryName","providerRepositoryOwner","providerRepositoryUrl","providerBranch","providerCommitHash","providerCommitAuthorUrl","providerCommitAuthor","providerCommitMessage","providerCommitUrl","providerBranchUrl"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"requestMethod":{"type":"string","description":"HTTP request method type.","x-example":"GET"},"requestPath":{"type":"string","description":"HTTP request path and query.","x-example":"\/articles?id=5"},"requestHeaders":{"type":"array","description":"HTTP response headers as a key-value object. This will return only whitelisted headers. All headers are returned if execution is created as synchronous.","items":{"type":"object","$ref":"#\/definitions\/headers"},"x-example":[{"Content-Type":"application\/json"}]},"responseStatusCode":{"type":"integer","description":"HTTP response status code.","x-example":200,"format":"int32"},"responseBody":{"type":"string","description":"HTTP response body. This will return empty unless execution is created as synchronous.","x-example":"Developers are awesome."},"responseHeaders":{"type":"array","description":"HTTP response headers as a key-value object. This will return only whitelisted headers. All headers are returned if execution is created as synchronous.","items":{"type":"object","$ref":"#\/definitions\/headers"},"x-example":[{"Content-Type":"application\/json"}]},"logs":{"type":"string","description":"Function logs. Includes the last 4,000 characters. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"errors":{"type":"string","description":"Function errors. Includes the last 4,000 characters. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"Function execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","requestMethod","requestPath","requestHeaders","responseStatusCode","responseBody","responseHeaders","logs","errors","duration"]},"variable":{"description":"Variable","type":"object","properties":{"$id":{"type":"string","description":"Variable ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"key":{"type":"string","description":"Variable key.","x-example":"API_KEY"},"value":{"type":"string","description":"Variable value.","x-example":"myPa$$word1"},"resourceType":{"type":"string","description":"Service to which the variable belongs. Possible values are \"project\", \"function\"","x-example":"function"},"resourceId":{"type":"string","description":"ID of resource to which the variable belongs. If resourceType is \"project\", it is empty. If resourceType is \"function\", it is ID of the function.","x-example":"myAwesomeFunction"}},"required":["$id","$createdAt","$updatedAt","key","value","resourceType","resourceId"]},"country":{"description":"Country","type":"object","properties":{"name":{"type":"string","description":"Country name.","x-example":"United States"},"code":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"}},"required":["name","code"]},"continent":{"description":"Continent","type":"object","properties":{"name":{"type":"string","description":"Continent name.","x-example":"Europe"},"code":{"type":"string","description":"Continent two letter code.","x-example":"EU"}},"required":["name","code"]},"language":{"description":"Language","type":"object","properties":{"name":{"type":"string","description":"Language name.","x-example":"Italian"},"code":{"type":"string","description":"Language two-character ISO 639-1 codes.","x-example":"it"},"nativeName":{"type":"string","description":"Language native name.","x-example":"Italiano"}},"required":["name","code","nativeName"]},"currency":{"description":"Currency","type":"object","properties":{"symbol":{"type":"string","description":"Currency symbol.","x-example":"$"},"name":{"type":"string","description":"Currency name.","x-example":"US dollar"},"symbolNative":{"type":"string","description":"Currency native symbol.","x-example":"$"},"decimalDigits":{"type":"integer","description":"Number of decimal digits.","x-example":2,"format":"int32"},"rounding":{"type":"number","description":"Currency digit rounding.","x-example":0,"format":"double"},"code":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format.","x-example":"USD"},"namePlural":{"type":"string","description":"Currency plural name","x-example":"US dollars"}},"required":["symbol","name","symbolNative","decimalDigits","rounding","code","namePlural"]},"phone":{"description":"Phone","type":"object","properties":{"code":{"type":"string","description":"Phone code.","x-example":"+1"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["code","countryCode","countryName"]},"healthAntivirus":{"description":"Health Antivirus","type":"object","properties":{"version":{"type":"string","description":"Antivirus version.","x-example":"1.0.0"},"status":{"type":"string","description":"Antivirus status. Possible values can are: `disabled`, `offline`, `online`","x-example":"online"}},"required":["version","status"]},"healthQueue":{"description":"Health Queue","type":"object","properties":{"size":{"type":"integer","description":"Amount of actions in the queue.","x-example":8,"format":"int32"}},"required":["size"]},"healthStatus":{"description":"Health Status","type":"object","properties":{"name":{"type":"string","description":"Name of the service.","x-example":"database"},"ping":{"type":"integer","description":"Duration in milliseconds how long the health check took.","x-example":128,"format":"int32"},"status":{"type":"string","description":"Service status. Possible values can are: `pass`, `fail`","x-example":"pass"}},"required":["name","ping","status"]},"healthTime":{"description":"Health Time","type":"object","properties":{"remoteTime":{"type":"integer","description":"Current unix timestamp on trustful remote server.","x-example":1639490751,"format":"int32"},"localTime":{"type":"integer","description":"Current unix timestamp of local server where Appwrite runs.","x-example":1639490844,"format":"int32"},"diff":{"type":"integer","description":"Difference of unix remote and local timestamps in milliseconds.","x-example":93,"format":"int32"}},"required":["remoteTime","localTime","diff"]},"headers":{"description":"Headers","type":"object","properties":{"name":{"type":"string","description":"Header name.","x-example":"Content-Type"},"value":{"type":"string","description":"Header value.","x-example":"application\/json"}},"required":["name","value"]},"mfaChallenge":{"description":"MFA Challenge","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","userId","expire"]},"mfaProvider":{"description":"MFAProvider","type":"object","properties":{"backups":{"type":"array","description":"Backup codes.","items":{"type":"string"},"x-example":true},"secret":{"type":"string","description":"Secret token used for TOTP factor.","x-example":true},"uri":{"type":"string","description":"URI for authenticator apps.","x-example":true}},"required":["backups","secret","uri"]},"mfaProviders":{"description":"MFAProviders","type":"object","properties":{"totp":{"type":"boolean","description":"TOTP","x-example":true},"phone":{"type":"boolean","description":"Phone","x-example":true},"email":{"type":"boolean","description":"Email","x-example":true}},"required":["totp","phone","email"]},"provider":{"description":"Provider","type":"object","properties":{"$id":{"type":"string","description":"Provider ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Provider creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Provider update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"The name for the provider instance.","x-example":"Mailgun"},"provider":{"type":"string","description":"The name of the provider service.","x-example":"mailgun"},"enabled":{"type":"boolean","description":"Is provider enabled?","x-example":true},"type":{"type":"string","description":"Type of provider.","x-example":"sms"},"credentials":{"type":"object","additionalProperties":true,"description":"Provider credentials.","x-example":{"key":"123456789"}},"options":{"type":"object","additionalProperties":true,"description":"Provider options.","x-example":{"from":"sender-email@mydomain"}}},"required":["$id","$createdAt","$updatedAt","name","provider","enabled","type","credentials"]},"message":{"description":"Message","type":"object","properties":{"$id":{"type":"string","description":"Message ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Message creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Message update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerType":{"type":"string","description":"Message provider type.","x-example":"email"},"topics":{"type":"array","description":"Topic IDs set as recipients.","items":{"type":"string"},"x-example":["5e5ea5c16897e"]},"users":{"type":"array","description":"User IDs set as recipients.","items":{"type":"string"},"x-example":["5e5ea5c16897e"]},"targets":{"type":"array","description":"Target IDs set as recipients.","items":{"type":"string"},"x-example":["5e5ea5c16897e"]},"scheduledAt":{"type":"string","description":"The scheduled time for message.","x-example":"2020-10-15T06:38:00.000+00:00","x-nullable":true},"deliveredAt":{"type":"string","description":"The time when the message was delivered.","x-example":"2020-10-15T06:38:00.000+00:00","x-nullable":true},"deliveryErrors":{"type":"array","description":"Delivery errors if any.","items":{"type":"string"},"x-example":["Failed to send message to target 5e5ea5c16897e: Credentials not valid."],"x-nullable":true},"deliveredTotal":{"type":"integer","description":"Number of recipients the message was delivered to.","x-example":1,"format":"int32"},"data":{"type":"object","additionalProperties":true,"description":"Data of the message.","x-example":{"subject":"Welcome to Appwrite","content":"Hi there, welcome to Appwrite family."}},"status":{"type":"string","description":"Status of delivery.","x-example":"Message status can be one of the following: processing, sent, cancelled, failed."}},"required":["$id","$createdAt","$updatedAt","providerType","topics","users","targets","deliveredTotal","data","status"]},"topic":{"description":"Topic","type":"object","properties":{"$id":{"type":"string","description":"Topic ID.","x-example":"259125845563242502"},"$createdAt":{"type":"string","description":"Topic creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Topic update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"The name of the topic.","x-example":"events"},"total":{"type":"integer","description":"Total count of subscribers subscribed to topic.","x-example":100,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","name","total"]},"subscriber":{"description":"Subscriber","type":"object","properties":{"$id":{"type":"string","description":"Subscriber ID.","x-example":"259125845563242502"},"$createdAt":{"type":"string","description":"Subscriber creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Subscriber update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"targetId":{"type":"string","description":"Target ID.","x-example":"259125845563242502"},"target":{"type":"object","description":"Target.","x-example":{"$id":"259125845563242502","$createdAt":"2020-10-15T06:38:00.000+00:00","$updatedAt":"2020-10-15T06:38:00.000+00:00","providerType":"email","providerId":"259125845563242502","name":"ageon-app-email","identifier":"random-mail@email.org","userId":"5e5ea5c16897e"},"items":{"type":"object","$ref":"#\/definitions\/target"}},"userId":{"type":"string","description":"Topic ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User Name.","x-example":"Aegon Targaryen"},"topicId":{"type":"string","description":"Topic ID.","x-example":"259125845563242502"},"providerType":{"type":"string","description":"The target provider type. Can be one of the following: `email`, `sms` or `push`.","x-example":"email"}},"required":["$id","$createdAt","$updatedAt","targetId","target","userId","userName","topicId","providerType"]},"target":{"description":"Target","type":"object","properties":{"$id":{"type":"string","description":"Target ID.","x-example":"259125845563242502"},"$createdAt":{"type":"string","description":"Target creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Target update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Target Name.","x-example":"Aegon apple token"},"userId":{"type":"string","description":"User ID.","x-example":"259125845563242502"},"providerId":{"type":"string","description":"Provider ID.","x-example":"259125845563242502","x-nullable":true},"providerType":{"type":"string","description":"The target provider type. Can be one of the following: `email`, `sms` or `push`.","x-example":"email"},"identifier":{"type":"string","description":"The target identifier.","x-example":"token"}},"required":["$id","$createdAt","$updatedAt","name","userId","providerType","identifier"]}},"externalDocs":{"description":"Full API docs, specs and tutorials","url":"https:\/\/appwrite.io\/docs"}} \ No newline at end of file +{"swagger":"2.0","info":{"version":"1.4.13","title":"Appwrite","description":"Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https:\/\/appwrite.io\/docs](https:\/\/appwrite.io\/docs)","termsOfService":"https:\/\/appwrite.io\/policy\/terms","contact":{"name":"Appwrite Team","url":"https:\/\/appwrite.io\/support","email":"team@appwrite.io"},"license":{"name":"BSD-3-Clause","url":"https:\/\/raw.githubusercontent.com\/appwrite\/appwrite\/master\/LICENSE"}},"host":"cloud.appwrite.io","basePath":"\/v1","schemes":["https"],"consumes":["application\/json","multipart\/form-data"],"produces":["application\/json"],"securityDefinitions":{"Project":{"type":"apiKey","name":"X-Appwrite-Project","description":"Your project ID","in":"header","x-appwrite":{"demo":"5df5acd0d48c2"}},"Key":{"type":"apiKey","name":"X-Appwrite-Key","description":"Your secret API key","in":"header","x-appwrite":{"demo":"919c2d18fb5d4...a2ae413da83346ad2"}},"JWT":{"type":"apiKey","name":"X-Appwrite-JWT","description":"Your secret JSON Web Token","in":"header","x-appwrite":{"demo":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ..."}},"Locale":{"type":"apiKey","name":"X-Appwrite-Locale","description":"","in":"header","x-appwrite":{"demo":"en"}},"Session":{"type":"apiKey","name":"X-Appwrite-Session","description":"The user session to authenticate with","in":"header"},"ForwardedFor":{"type":"apiKey","name":"X-Forwarded-For","description":"The IP address of the client that made the request","in":"header"},"ForwardedUserAgent":{"type":"apiKey","name":"X-Forwarded-User-Agent","description":"The user agent string of the client that made the request","in":"header"}},"paths":{"\/account":{"get":{"summary":"Get account","operationId":"accountGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get the currently logged in user.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"get","weight":22,"cookies":false,"type":"","demo":"account\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]},"post":{"summary":"Create account","operationId":"accountCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to allow a new user to register a new account in your project. After the user registration completes successfully, you can use the [\/account\/verfication](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createVerification) route to start verifying the user email address. To allow the new user to login to their new account, you need to create a new [account session](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createEmailSession).","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"create","weight":7,"cookies":false,"type":"","demo":"account\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"New user password. Must be between 8 and 256 chars.","default":null,"x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/account\/email":{"patch":{"summary":"Update email","operationId":"accountUpdateEmail","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateEmail","weight":29,"cookies":false,"type":"","demo":"account\/update-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["email","password"]}}]}},"\/account\/identities":{"get":{"summary":"List Identities","operationId":"accountListIdentities","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get the list of identities for the currently logged in user.","responses":{"200":{"description":"Identities List","schema":{"$ref":"#\/definitions\/identityList"}}},"x-appwrite":{"method":"listIdentities","weight":13,"cookies":false,"type":"","demo":"account\/list-identities.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-identities.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/identities","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, provider, providerUid, providerEmail, providerAccessTokenExpiry","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/identities\/{identityId}":{"delete":{"summary":"Delete identity","operationId":"accountDeleteIdentity","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Delete an identity by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIdentity","weight":14,"cookies":false,"type":"","demo":"account\/delete-identity.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-identity.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"identityId","description":"Identity ID.","required":true,"type":"string","x-example":"[IDENTITY_ID]","in":"path"}]}},"\/account\/jwt":{"post":{"summary":"Create JWT","operationId":"accountCreateJWT","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to create a JSON Web Token. You can use the resulting JWT to authenticate on behalf of the current user when working with the Appwrite server-side API and SDKs. The JWT secret is valid for 15 minutes from its creation and will be invalid if the user will logout in that time frame.","responses":{"201":{"description":"JWT","schema":{"$ref":"#\/definitions\/jwt"}}},"x-appwrite":{"method":"createJWT","weight":21,"cookies":false,"type":"","demo":"account\/create-j-w-t.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-jwt.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"List logs","operationId":"accountListLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get the list of latest security activity logs for the currently logged in user. Each log returns user IP address, location and date and time of log.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listLogs","weight":25,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/mfa":{"patch":{"summary":"Update MFA","operationId":"accountUpdateMFA","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateMFA","weight":42,"cookies":false,"type":"","demo":"account\/update-m-f-a.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-mfa.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"mfa":{"type":"boolean","description":"Enable or disable MFA.","default":null,"x-example":false}},"required":["mfa"]}}]}},"\/account\/mfa\/challenge":{"post":{"summary":"Create 2FA Challenge","operationId":"accountCreate2FAChallenge","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"201":{"description":"MFA Challenge","schema":{"$ref":"#\/definitions\/mfaChallenge"}}},"x-appwrite":{"method":"create2FAChallenge","weight":47,"cookies":false,"type":"","demo":"account\/create2f-a-challenge.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-2fa-challenge.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},token:{param-token}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"factor":{"type":"string","description":"Factor used for verification.","default":null,"x-example":"totp","enum":["totp","phone","email"],"x-enum-name":null,"x-enum-keys":[]}},"required":["factor"]}}]},"put":{"summary":"Create MFA Challenge (confirmation)","operationId":"accountUpdateChallenge","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"updateChallenge","weight":48,"cookies":false,"type":"","demo":"account\/update-challenge.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-challenge.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"challengeId":{"type":"string","description":"ID of the challenge.","default":null,"x-example":"[CHALLENGE_ID]"},"otp":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[OTP]"}},"required":["challengeId","otp"]}}]}},"\/account\/mfa\/factors":{"get":{"summary":"List Factors","operationId":"accountListFactors","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"200":{"description":"MFAFactors","schema":{"$ref":"#\/definitions\/mfaFactors"}}},"x-appwrite":{"method":"listFactors","weight":43,"cookies":false,"type":"","demo":"account\/list-factors.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-factors.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/account\/mfa\/{type}":{"post":{"summary":"Add Authenticator","operationId":"accountAddAuthenticator","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"200":{"description":"MFAType","schema":{"$ref":"#\/definitions\/mfaType"}}},"x-appwrite":{"method":"addAuthenticator","weight":44,"cookies":false,"type":"","demo":"account\/add-authenticator.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/add-authenticator.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"type","description":"Type of authenticator.","required":true,"type":"string","x-example":"totp","enum":["totp"],"x-enum-name":null,"x-enum-keys":[],"in":"path"}]},"put":{"summary":"Verify Authenticator","operationId":"accountVerifyAuthenticator","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"verifyAuthenticator","weight":45,"cookies":false,"type":"","demo":"account\/verify-authenticator.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/verify-authenticator.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"type","description":"Type of authenticator.","required":true,"type":"string","x-example":"totp","enum":["totp"],"x-enum-name":null,"x-enum-keys":[],"in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"otp":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[OTP]"}},"required":["otp"]}}]},"delete":{"summary":"Delete Authenticator","operationId":"accountDeleteAuthenticator","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"deleteAuthenticator","weight":46,"cookies":false,"type":"","demo":"account\/delete-authenticator.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-mfa.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"type","description":"Type of authenticator.","required":true,"type":"string","x-example":"totp","enum":["totp"],"x-enum-name":null,"x-enum-keys":[],"in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"otp":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[OTP]"}},"required":["otp"]}}]}},"\/account\/name":{"patch":{"summary":"Update name","operationId":"accountUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateName","weight":27,"cookies":false,"type":"","demo":"account\/update-name.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-name.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"User name. Max length: 128 chars.","default":null,"x-example":"[NAME]"}},"required":["name"]}}]}},"\/account\/password":{"patch":{"summary":"Update password","operationId":"accountUpdatePassword","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePassword","weight":28,"cookies":false,"type":"","demo":"account\/update-password.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-password.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"password":{"type":"string","description":"New user password. Must be at least 8 chars.","default":null,"x-example":null},"oldPassword":{"type":"string","description":"Current user password. Must be at least 8 chars.","default":"","x-example":"password"}},"required":["password"]}}]}},"\/account\/phone":{"patch":{"summary":"Update phone","operationId":"accountUpdatePhone","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createPhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePhone","weight":30,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["phone","password"]}}]}},"\/account\/prefs":{"get":{"summary":"Get account preferences","operationId":"accountGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get the preferences as a key-value object for the currently logged in user.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":23,"cookies":false,"type":"","demo":"account\/get-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/prefs","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]},"patch":{"summary":"Update preferences","operationId":"accountUpdatePrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account preferences. The object you pass is stored as is, and replaces any previous value. The maximum allowed prefs size is 64kB and throws error if exceeded.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePrefs","weight":31,"cookies":false,"type":"","demo":"account\/update-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/prefs","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"prefs":{"type":"object","description":"Prefs key-value JSON object.","default":{},"x-example":"{}"}},"required":["prefs"]}}]}},"\/account\/recovery":{"post":{"summary":"Create password recovery","operationId":"accountCreateRecovery","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Sends the user an email with a temporary secret key for password reset. When the user clicks the confirmation link he is redirected back to your app password reset URL with the secret key and email address values attached to the URL query string. Use the query string params to submit a request to the [PUT \/account\/recovery](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateRecovery) endpoint to complete the process. The verification link sent to the user's email address is valid for 1 hour.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createRecovery","weight":36,"cookies":false,"type":"","demo":"account\/create-recovery.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-recovery.md","rate-limit":10,"rate-time":3600,"rate-key":["url:{url},email:{param-email}","url:{url},ip:{ip}"],"scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"url":{"type":"string","description":"URL to redirect the user back to your app from the recovery email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":null,"x-example":"https:\/\/example.com"}},"required":["email","url"]}}]},"put":{"summary":"Create password recovery (confirmation)","operationId":"accountUpdateRecovery","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete the user account password reset. Both the **userId** and **secret** arguments will be passed as query parameters to the redirect URL you have provided when sending your request to the [POST \/account\/recovery](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createRecovery) endpoint.\n\nPlease note that in order to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) the only valid redirect URLs are the ones from domains you have set when adding your platforms in the console interface.","responses":{"200":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"updateRecovery","weight":37,"cookies":false,"type":"","demo":"account\/update-recovery.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-recovery.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid reset token.","default":null,"x-example":"[SECRET]"},"password":{"type":"string","description":"New user password. Must be between 8 and 256 chars.","default":null,"x-example":null}},"required":["userId","secret","password"]}}]}},"\/account\/sessions":{"get":{"summary":"List sessions","operationId":"accountListSessions","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get the list of active sessions across different devices for the currently logged in user.","responses":{"200":{"description":"Sessions List","schema":{"$ref":"#\/definitions\/sessionList"}}},"x-appwrite":{"method":"listSessions","weight":24,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/sessions","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]},"delete":{"summary":"Delete sessions","operationId":"accountDeleteSessions","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":35,"cookies":false,"type":"","demo":"account\/delete-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-sessions.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/account\/sessions\/anonymous":{"post":{"summary":"Create anonymous session","operationId":"accountCreateAnonymousSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to allow a new user to register an anonymous account in your project. This route will also create a new session for the user. To allow the new user to convert an anonymous account to a normal account, you need to update its [email and password](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateEmail) or create an [OAuth2 session](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#CreateOAuth2Session).","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"createAnonymousSession","weight":20,"cookies":false,"type":"","demo":"account\/create-anonymous-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-anonymous.md","rate-limit":50,"rate-time":3600,"rate-key":"ip:{ip}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/sessions\/email":{"post":{"summary":"Create email password session","operationId":"accountCreateEmailPasswordSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Allow the user to login into their account by providing a valid email and password combination. This route will create a new session for the user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"createEmailPasswordSession","weight":8,"cookies":false,"type":"","demo":"account\/create-email-password-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-email-password.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["email","password"]}}]}},"\/account\/sessions\/magic-url":{"put":{"summary":"Create session (deprecated)","operationId":"accountUpdateMagicURLSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to create a session from token. Provide the **userId** and **secret** parameters from the successful response of authentication flows initiated by token creation. For example, magic URL and phone login.","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateMagicURLSession","weight":17,"cookies":false,"type":"","demo":"account\/update-magic-u-r-l-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session.md","rate-limit":10,"rate-time":3600,"rate-key":"ip:{ip},userId:{param-userId}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/account\/sessions\/oauth2\/{provider}":{"get":{"summary":"Create OAuth2 session","operationId":"accountCreateOAuth2Session","consumes":["application\/json"],"produces":["text\/html"],"tags":["account"],"description":"Allow the user to login to their account using the OAuth2 provider of their choice. Each OAuth2 provider should be enabled from the Appwrite console first. Use the success and failure arguments to provide a redirect URL's back to your app when login is completed.\n\nIf there is already an active session, the new session will be attached to the logged-in account. If there are no active sessions, the server will attempt to look for a user with the same email address as the email received from the OAuth2 provider and attach the new session to the existing user. If no matching user is found - the server will create a new user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).\n","responses":{"301":{"description":"No content"}},"x-appwrite":{"method":"createOAuth2Session","weight":9,"cookies":false,"type":"webAuth","demo":"account\/create-o-auth2session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-oauth2.md","rate-limit":50,"rate-time":3600,"rate-key":"ip:{ip}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"provider","description":"OAuth2 Provider. Currently, supported providers are: amazon, apple, auth0, authentik, autodesk, bitbucket, bitly, box, dailymotion, discord, disqus, dropbox, etsy, facebook, github, gitlab, google, linkedin, microsoft, notion, oidc, okta, paypal, paypalSandbox, podio, salesforce, slack, spotify, stripe, tradeshift, tradeshiftBox, twitch, wordpress, yahoo, yammer, yandex, zoho, zoom.","required":true,"type":"string","x-example":"amazon","enum":["amazon","apple","auth0","authentik","autodesk","bitbucket","bitly","box","dailymotion","discord","disqus","dropbox","etsy","facebook","github","gitlab","google","linkedin","microsoft","notion","oidc","okta","paypal","paypalSandbox","podio","salesforce","slack","spotify","stripe","tradeshift","tradeshiftBox","twitch","wordpress","yahoo","yammer","yandex","zoho","zoom","mock"],"x-enum-name":"OAuthProvider","x-enum-keys":[],"in":"path"},{"name":"success","description":"URL to redirect back to your app after a successful login attempt. Only URLs from hostnames in your project's platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","required":false,"type":"string","format":"url","x-example":"https:\/\/example.com","default":"","in":"query"},{"name":"failure","description":"URL to redirect back to your app after a failed login attempt. Only URLs from hostnames in your project's platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","required":false,"type":"string","format":"url","x-example":"https:\/\/example.com","default":"","in":"query"},{"name":"token","description":"Include token credentials in the final redirect, useful for server-side integrations, or when cookies are not available.","required":false,"type":"boolean","x-example":false,"default":false,"in":"query"},{"name":"scopes","description":"A list of custom OAuth2 scopes. Check each provider internal docs for a list of supported scopes. Maximum of 100 scopes are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/sessions\/token":{"post":{"summary":"Create session","operationId":"accountCreateSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to create a session from token. Provide the **userId** and **secret** parameters from the successful response of authentication flows initiated by token creation. For example, magic URL and phone login.","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"createSession","weight":18,"cookies":false,"type":"","demo":"account\/create-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session.md","rate-limit":10,"rate-time":3600,"rate-key":"ip:{ip},userId:{param-userId}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Secret of a token generated by login methods. For example, the `createMagicURLToken` or `createPhoneToken` methods.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/account\/sessions\/{sessionId}":{"get":{"summary":"Get session","operationId":"accountGetSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to get a logged in user's session using a Session ID. Inputting 'current' will return the current session being used.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"getSession","weight":26,"cookies":false,"type":"","demo":"account\/get-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-session.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/sessions","offline-key":"{sessionId}","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to get the current device session.","required":true,"type":"string","x-example":"[SESSION_ID]","in":"path"}]},"patch":{"summary":"Update (or renew) a session","operationId":"accountUpdateSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Extend session's expiry to increase it's lifespan. Extending a session is useful when session length is short such as 5 minutes.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateSession","weight":34,"cookies":false,"type":"","demo":"account\/update-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-session.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to update the current device session.","required":true,"type":"string","x-example":"[SESSION_ID]","in":"path"}]},"delete":{"summary":"Delete session","operationId":"accountDeleteSession","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Logout the user. Use 'current' as the session ID to logout on this device, use a session ID to logout on another device. If you're looking to logout the user on all devices, use [Delete Sessions](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#deleteSessions) instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSession","weight":33,"cookies":false,"type":"","demo":"account\/delete-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-session.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to delete the current device session.","required":true,"type":"string","x-example":"[SESSION_ID]","in":"path"}]}},"\/account\/status":{"patch":{"summary":"Update status","operationId":"accountUpdateStatus","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateStatus","weight":32,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/account\/tokens\/email":{"post":{"summary":"Create email token (OTP)","operationId":"accountCreateEmailToken","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Sends the user an email with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [POST \/v1\/account\/sessions\/token](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createSession) endpoint to complete the login process. The secret sent to the user's email is valid for 15 minutes.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createEmailToken","weight":16,"cookies":false,"type":"","demo":"account\/create-email-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-token-email.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"phrase":{"type":"boolean","description":"Toggle for security phrase. If enabled, email will be send with a randomly generated phrase and the phrase will also be included in the response. Confirming phrases match increases the security of your authentication flow.","default":false,"x-example":false}},"required":["userId","email"]}}]}},"\/account\/tokens\/magic-url":{"post":{"summary":"Create magic URL token","operationId":"accountCreateMagicURLToken","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Sends the user an email with a secret key for creating a session. If the provided user ID has not been registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [POST \/v1\/account\/sessions\/token](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createSession) endpoint to complete the login process. The link sent to the user's email address is valid for 1 hour. If you are on a mobile device you can leave the URL parameter empty, so that the login completion will be handled by your Appwrite instance by default.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).\n","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createMagicURLToken","weight":15,"cookies":false,"type":"","demo":"account\/create-magic-u-r-l-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-token-magic-url.md","rate-limit":60,"rate-time":3600,"rate-key":["url:{url},email:{param-email}","url:{url},ip:{ip}"],"scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"url":{"type":"string","description":"URL to redirect the user back to your app from the magic URL login. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":"","x-example":"https:\/\/example.com"},"phrase":{"type":"boolean","description":"Toggle for security phrase. If enabled, email will be send with a randomly generated phrase and the phrase will also be included in the response. Confirming phrases match increases the security of your authentication flow.","default":false,"x-example":false}},"required":["userId","email"]}}]}},"\/account\/tokens\/phone":{"post":{"summary":"Create phone token","operationId":"accountCreatePhoneToken","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Sends the user an SMS with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [POST \/v1\/account\/sessions\/token](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createSession) endpoint to complete the login process. The secret sent to the user's phone is valid for 15 minutes.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createPhoneToken","weight":19,"cookies":false,"type":"","demo":"account\/create-phone-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-token-phone.md","rate-limit":10,"rate-time":3600,"rate-key":["url:{url},phone:{param-phone}","url:{url},ip:{ip}"],"scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"}},"required":["userId","phone"]}}]}},"\/account\/verification":{"post":{"summary":"Create email verification","operationId":"accountCreateVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to send a verification message to your user email address to confirm they are the valid owners of that address. Both the **userId** and **secret** arguments will be passed as query parameters to the URL you have provided to be attached to the verification email. The provided URL should redirect the user back to your app and allow you to complete the verification process by verifying both the **userId** and **secret** parameters. Learn more about how to [complete the verification process](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateVerification). The verification link sent to the user's email address is valid for 7 days.\n\nPlease note that in order to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md), the only valid redirect URLs are the ones from domains you have set when adding your platforms in the console interface.\n","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createVerification","weight":38,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"url":{"type":"string","description":"URL to redirect the user back to your app from the verification email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":null,"x-example":"https:\/\/example.com"}},"required":["url"]}}]},"put":{"summary":"Create email verification (confirmation)","operationId":"accountUpdateVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete the user email verification process. Use both the **userId** and **secret** parameters that were attached to your app URL to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"updateVerification","weight":39,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/account\/verification\/phone":{"post":{"summary":"Create phone verification","operationId":"accountCreatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updatePhone) endpoint. Learn more about how to [complete the verification process](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createPhoneVerification","weight":40,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":["url:{url},userId:{userId}","url:{url},ip:{ip}"],"scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]},"put":{"summary":"Create phone verification (confirmation)","operationId":"accountUpdatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"updatePhoneVerification","weight":41,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/avatars\/browsers\/{code}":{"get":{"summary":"Get browser icon","operationId":"avatarsGetBrowser","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"You can use this endpoint to show different browser icons to your users. The code argument receives the browser code as it appears in your user [GET \/account\/sessions](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#getSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getBrowser","weight":54,"cookies":false,"type":"location","demo":"avatars\/get-browser.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-browser.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Browser Code.","required":true,"type":"string","x-example":"aa","enum":["aa","an","ch","ci","cm","cr","ff","sf","mf","ps","oi","om","op","on"],"x-enum-name":"Browser","x-enum-keys":["Avant Browser","Android WebView Beta","Google Chrome","Google Chrome (iOS)","Google Chrome (Mobile)","Chromium","Mozilla Firefox","Safari","Mobile Safari","Microsoft Edge","Microsoft Edge (iOS)","Opera Mini","Opera","Opera (Next)"],"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"}]}},"\/avatars\/credit-cards\/{code}":{"get":{"summary":"Get credit card icon","operationId":"avatarsGetCreditCard","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"The credit card endpoint will return you the icon of the credit card provider you need. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getCreditCard","weight":53,"cookies":false,"type":"location","demo":"avatars\/get-credit-card.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-credit-card.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Credit Card Code. Possible values: amex, argencard, cabal, censosud, diners, discover, elo, hipercard, jcb, mastercard, naranja, targeta-shopping, union-china-pay, visa, mir, maestro.","required":true,"type":"string","x-example":"amex","enum":["amex","argencard","cabal","censosud","diners","discover","elo","hipercard","jcb","mastercard","naranja","targeta-shopping","union-china-pay","visa","mir","maestro"],"x-enum-name":"CreditCard","x-enum-keys":["American Express","Argencard","Cabal","Consosud","Diners Club","Discover","Elo","Hipercard","JCB","Mastercard","Naranja","Tarjeta Shopping","Union China Pay","Visa","MIR","Maestro"],"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"}]}},"\/avatars\/favicon":{"get":{"summary":"Get favicon","operationId":"avatarsGetFavicon","consumes":["application\/json"],"produces":["image\/*"],"tags":["avatars"],"description":"Use this endpoint to fetch the favorite icon (AKA favicon) of any remote website URL.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFavicon","weight":57,"cookies":false,"type":"location","demo":"avatars\/get-favicon.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-favicon.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"url","description":"Website URL which you want to fetch the favicon from.","required":true,"type":"string","format":"url","x-example":"https:\/\/example.com","in":"query"}]}},"\/avatars\/flags\/{code}":{"get":{"summary":"Get country flag","operationId":"avatarsGetFlag","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"You can use this endpoint to show different country flags icons to your users. The code argument receives the 2 letter country code. Use width, height and quality arguments to change the output settings. Country codes follow the [ISO 3166-1](https:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFlag","weight":55,"cookies":false,"type":"location","demo":"avatars\/get-flag.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-flag.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Country Code. ISO Alpha-2 country code format.","required":true,"type":"string","x-example":"af","enum":["af","ao","al","ad","ae","ar","am","ag","au","at","az","bi","be","bj","bf","bd","bg","bh","bs","ba","by","bz","bo","br","bb","bn","bt","bw","cf","ca","ch","cl","cn","ci","cm","cd","cg","co","km","cv","cr","cu","cy","cz","de","dj","dm","dk","do","dz","ec","eg","er","es","ee","et","fi","fj","fr","fm","ga","gb","ge","gh","gn","gm","gw","gq","gr","gd","gt","gy","hn","hr","ht","hu","id","in","ie","ir","iq","is","il","it","jm","jo","jp","kz","ke","kg","kh","ki","kn","kr","kw","la","lb","lr","ly","lc","li","lk","ls","lt","lu","lv","ma","mc","md","mg","mv","mx","mh","mk","ml","mt","mm","me","mn","mz","mr","mu","mw","my","na","ne","ng","ni","nl","no","np","nr","nz","om","pk","pa","pe","ph","pw","pg","pl","kp","pt","py","qa","ro","ru","rw","sa","sd","sn","sg","sb","sl","sv","sm","so","rs","ss","st","sr","sk","si","se","sz","sc","sy","td","tg","th","tj","tm","tl","to","tt","tn","tr","tv","tz","ug","ua","uy","us","uz","va","vc","ve","vn","vu","ws","ye","za","zm","zw"],"x-enum-name":"Flag","x-enum-keys":["Afghanistan","Angola","Albania","Andorra","United Arab Emirates","Argentina","Armenia","Antigua and Barbuda","Australia","Austria","Azerbaijan","Burundi","Belgium","Benin","Burkina Faso","Bangladesh","Bulgaria","Bahrain","Bahamas","Bosnia and Herzegovina","Belarus","Belize","Bolivia","Brazil","Barbados","Brunei Darussalam","Bhutan","Botswana","Central African Republic","Canada","Switzerland","Chile","China","C\u00f4te d'Ivoire","Cameroon","Democratic Republic of the Congo","Republic of the Congo","Colombia","Comoros","Cape Verde","Costa Rica","Cuba","Cyprus","Czech Republic","Germany","Djibouti","Dominica","Denmark","Dominican Republic","Algeria","Ecuador","Egypt","Eritrea","Spain","Estonia","Ethiopia","Finland","Fiji","France","Micronesia (Federated States of)","Gabon","United Kingdom","Georgia","Ghana","Guinea","Gambia","Guinea-Bissau","Equatorial Guinea","Greece","Grenada","Guatemala","Guyana","Honduras","Croatia","Haiti","Hungary","Indonesia","India","Ireland","Iran (Islamic Republic of)","Iraq","Iceland","Israel","Italy","Jamaica","Jordan","Japan","Kazakhstan","Kenya","Kyrgyzstan","Cambodia","Kiribati","Saint Kitts and Nevis","South Korea","Kuwait","Lao People's Democratic Republic","Lebanon","Liberia","Libya","Saint Lucia","Liechtenstein","Sri Lanka","Lesotho","Lithuania","Luxembourg","Latvia","Morocco","Monaco","Moldova","Madagascar","Maldives","Mexico","Marshall Islands","North Macedonia","Mali","Malta","Myanmar","Montenegro","Mongolia","Mozambique","Mauritania","Mauritius","Malawi","Malaysia","Namibia","Niger","Nigeria","Nicaragua","Netherlands","Norway","Nepal","Nauru","New Zealand","Oman","Pakistan","Panama","Peru","Philippines","Palau","Papua New Guinea","Poland","North Korea","Portugal","Paraguay","Qatar","Romania","Russia","Rwanda","Saudi Arabia","Sudan","Senegal","Singapore","Solomon Islands","Sierra Leone","El Salvador","San Marino","Somalia","Serbia","South Sudan","Sao Tome and Principe","Suriname","Slovakia","Slovenia","Sweden","Eswatini","Seychelles","Syria","Chad","Togo","Thailand","Tajikistan","Turkmenistan","Timor-Leste","Tonga","Trinidad and Tobago","Tunisia","Turkey","Tuvalu","Tanzania","Uganda","Ukraine","Uruguay","United States","Uzbekistan","Vatican City","Saint Vincent and the Grenadines","Venezuela","Vietnam","Vanuatu","Samoa","Yemen","South Africa","Zambia","Zimbabwe"],"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"}]}},"\/avatars\/image":{"get":{"summary":"Get image from URL","operationId":"avatarsGetImage","consumes":["application\/json"],"produces":["image\/*"],"tags":["avatars"],"description":"Use this endpoint to fetch a remote image URL and crop it to any image size you want. This endpoint is very useful if you need to crop and display remote images in your app or in case you want to make sure a 3rd party image is properly served using a TLS protocol.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getImage","weight":56,"cookies":false,"type":"location","demo":"avatars\/get-image.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-image.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"url","description":"Image URL which you want to crop.","required":true,"type":"string","format":"url","x-example":"https:\/\/example.com","in":"query"},{"name":"width","description":"Resize preview image width, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get user initials","operationId":"avatarsGetInitials","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getInitials","weight":59,"cookies":false,"type":"location","demo":"avatars\/get-initials.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-initials.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"name","description":"Full Name. When empty, current user name or email will be used. Max length: 128 chars.","required":false,"type":"string","x-example":"[NAME]","default":"","in":"query"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":500,"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":500,"in":"query"},{"name":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"type":"string","default":"","in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR code","operationId":"avatarsGetQR","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getQR","weight":58,"cookies":false,"type":"location","demo":"avatars\/get-q-r.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-qr.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"text","description":"Plain text to be converted to QR code image.","required":true,"type":"string","x-example":"[TEXT]","in":"query"},{"name":"size","description":"QR code size. Pass an integer between 1 to 1000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":1,"default":400,"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"type":"integer","format":"int32","x-example":0,"default":1,"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"type":"boolean","x-example":false,"default":false,"in":"query"}]}},"\/databases":{"get":{"summary":"List databases","operationId":"databasesList","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all databases from the current Appwrite project. You can use the search parameter to filter your results.","responses":{"200":{"description":"Databases List","schema":{"$ref":"#\/definitions\/databaseList"}}},"x-appwrite":{"method":"list","weight":64,"cookies":false,"type":"","demo":"databases\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create database","operationId":"databasesCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Database.\n","responses":{"201":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"create","weight":63,"cookies":false,"type":"","demo":"databases\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"databaseId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[DATABASE_ID]"},"name":{"type":"string","description":"Database name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Is the database enabled? When set to 'disabled', users cannot access the database but Server SDKs with an API key can still read and write to the database. No data is lost when this is toggled.","default":true,"x-example":false}},"required":["databaseId","name"]}}]}},"\/databases\/{databaseId}":{"get":{"summary":"Get database","operationId":"databasesGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a database by its unique ID. This endpoint response returns a JSON object with the database metadata.","responses":{"200":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"get","weight":65,"cookies":false,"type":"","demo":"databases\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"}]},"put":{"summary":"Update database","operationId":"databasesUpdate","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a database by its unique ID.","responses":{"200":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"update","weight":67,"cookies":false,"type":"","demo":"databases\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Database name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Is database enabled? When set to 'disabled', users cannot access the database but Server SDKs with an API key can still read and write to the database. No data is lost when this is toggled.","default":true,"x-example":false}},"required":["name"]}}]},"delete":{"summary":"Delete database","operationId":"databasesDelete","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a database by its unique ID. Only API keys with with databases.write scope can delete a database.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":68,"cookies":false,"type":"","demo":"databases\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections":{"get":{"summary":"List collections","operationId":"databasesListCollections","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all collections that belong to the provided databaseId. You can use the search parameter to filter your results.","responses":{"200":{"description":"Collections List","schema":{"$ref":"#\/definitions\/collectionList"}}},"x-appwrite":{"method":"listCollections","weight":70,"cookies":false,"type":"","demo":"databases\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, documentSecurity","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create collection","operationId":"databasesCreateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Collection. Before using this route, you should create a new database resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"createCollection","weight":69,"cookies":false,"type":"","demo":"databases\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permissions strings. By default, no user is granted with any permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":false,"x-example":false},"enabled":{"type":"boolean","description":"Is collection enabled? When set to 'disabled', users cannot access the collection but Server SDKs with and API key can still read and write to the collection. No data is lost when this is toggled.","default":true,"x-example":false}},"required":["collectionId","name"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}":{"get":{"summary":"Get collection","operationId":"databasesGetCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a collection by its unique ID. This endpoint response returns a JSON object with the collection metadata.","responses":{"200":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"getCollection","weight":71,"cookies":false,"type":"","demo":"databases\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]},"put":{"summary":"Update collection","operationId":"databasesUpdateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a collection by its unique ID.","responses":{"200":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"updateCollection","weight":73,"cookies":false,"type":"","demo":"databases\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":false,"x-example":false},"enabled":{"type":"boolean","description":"Is collection enabled? When set to 'disabled', users cannot access the collection but Server SDKs with and API key can still read and write to the collection. No data is lost when this is toggled.","default":true,"x-example":false}},"required":["name"]}}]},"delete":{"summary":"Delete collection","operationId":"databasesDeleteCollection","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a collection by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteCollection","weight":74,"cookies":false,"type":"","demo":"databases\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes":{"get":{"summary":"List attributes","operationId":"databasesListAttributes","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Attributes List","schema":{"$ref":"#\/definitions\/attributeList"}}},"x-appwrite":{"method":"listAttributes","weight":85,"cookies":false,"type":"","demo":"databases\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: key, type, size, required, array, status, error","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create boolean attribute","operationId":"databasesCreateBooleanAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a boolean attribute.\n","responses":{"202":{"description":"AttributeBoolean","schema":{"$ref":"#\/definitions\/attributeBoolean"}}},"x-appwrite":{"method":"createBooleanAttribute","weight":82,"cookies":false,"type":"","demo":"databases\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":false},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean\/{key}":{"patch":{"summary":"Update boolean attribute","operationId":"databasesUpdateBooleanAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"","responses":{"200":{"description":"AttributeBoolean","schema":{"$ref":"#\/definitions\/attributeBoolean"}}},"x-appwrite":{"method":"updateBooleanAttribute","weight":94,"cookies":false,"type":"","demo":"databases\/update-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":false,"x-nullable":true}},"required":["required","default"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/datetime":{"post":{"summary":"Create datetime attribute","operationId":"databasesCreateDatetimeAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"AttributeDatetime","schema":{"$ref":"#\/definitions\/attributeDatetime"}}},"x-appwrite":{"method":"createDatetimeAttribute","weight":83,"cookies":false,"type":"","demo":"databases\/create-datetime-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-datetime-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for the attribute in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/datetime\/{key}":{"patch":{"summary":"Update dateTime attribute","operationId":"databasesUpdateDatetimeAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"","responses":{"200":{"description":"AttributeDatetime","schema":{"$ref":"#\/definitions\/attributeDatetime"}}},"x-appwrite":{"method":"updateDatetimeAttribute","weight":95,"cookies":false,"type":"","demo":"databases\/update-datetime-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-datetime-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null,"x-nullable":true}},"required":["required","default"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create email attribute","operationId":"databasesCreateEmailAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create an email attribute.\n","responses":{"202":{"description":"AttributeEmail","schema":{"$ref":"#\/definitions\/attributeEmail"}}},"x-appwrite":{"method":"createEmailAttribute","weight":76,"cookies":false,"type":"","demo":"databases\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"email@example.com"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/email\/{key}":{"patch":{"summary":"Update email attribute","operationId":"databasesUpdateEmailAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Update an email attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeEmail","schema":{"$ref":"#\/definitions\/attributeEmail"}}},"x-appwrite":{"method":"updateEmailAttribute","weight":88,"cookies":false,"type":"","demo":"databases\/update-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"email@example.com","x-nullable":true}},"required":["required","default"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create enum attribute","operationId":"databasesCreateEnumAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"AttributeEnum","schema":{"$ref":"#\/definitions\/attributeEnum"}}},"x-appwrite":{"method":"createEnumAttribute","weight":77,"cookies":false,"type":"","demo":"databases\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"elements":{"type":"array","description":"Array of elements in enumerated type. Uses length of longest element to determine size. Maximum of 100 elements are allowed, each 255 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","elements","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/enum\/{key}":{"patch":{"summary":"Update enum attribute","operationId":"databasesUpdateEnumAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Update an enum attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeEnum","schema":{"$ref":"#\/definitions\/attributeEnum"}}},"x-appwrite":{"method":"updateEnumAttribute","weight":89,"cookies":false,"type":"","demo":"databases\/update-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-enum-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"elements":{"type":"array","description":"Array of elements in enumerated type. Uses length of longest element to determine size. Maximum of 100 elements are allowed, each 255 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"[DEFAULT]","x-nullable":true}},"required":["elements","required","default"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create float attribute","operationId":"databasesCreateFloatAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeFloat","schema":{"$ref":"#\/definitions\/attributeFloat"}}},"x-appwrite":{"method":"createFloatAttribute","weight":81,"cookies":false,"type":"","demo":"databases\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"min":{"type":"number","description":"Minimum value to enforce on new documents","default":null,"x-example":null},"max":{"type":"number","description":"Maximum value to enforce on new documents","default":null,"x-example":null},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/float\/{key}":{"patch":{"summary":"Update float attribute","operationId":"databasesUpdateFloatAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Update a float attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeFloat","schema":{"$ref":"#\/definitions\/attributeFloat"}}},"x-appwrite":{"method":"updateFloatAttribute","weight":93,"cookies":false,"type":"","demo":"databases\/update-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"min":{"type":"number","description":"Minimum value to enforce on new documents","default":null,"x-example":null},"max":{"type":"number","description":"Maximum value to enforce on new documents","default":null,"x-example":null},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null,"x-nullable":true}},"required":["required","min","max","default"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create integer attribute","operationId":"databasesCreateIntegerAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeInteger","schema":{"$ref":"#\/definitions\/attributeInteger"}}},"x-appwrite":{"method":"createIntegerAttribute","weight":80,"cookies":false,"type":"","demo":"databases\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"min":{"type":"integer","description":"Minimum value to enforce on new documents","default":null,"x-example":null},"max":{"type":"integer","description":"Maximum value to enforce on new documents","default":null,"x-example":null},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/integer\/{key}":{"patch":{"summary":"Update integer attribute","operationId":"databasesUpdateIntegerAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Update an integer attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeInteger","schema":{"$ref":"#\/definitions\/attributeInteger"}}},"x-appwrite":{"method":"updateIntegerAttribute","weight":92,"cookies":false,"type":"","demo":"databases\/update-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"min":{"type":"integer","description":"Minimum value to enforce on new documents","default":null,"x-example":null},"max":{"type":"integer","description":"Maximum value to enforce on new documents","default":null,"x-example":null},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null,"x-nullable":true}},"required":["required","min","max","default"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP address attribute","operationId":"databasesCreateIpAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create IP address attribute.\n","responses":{"202":{"description":"AttributeIP","schema":{"$ref":"#\/definitions\/attributeIp"}}},"x-appwrite":{"method":"createIpAttribute","weight":78,"cookies":false,"type":"","demo":"databases\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/ip\/{key}":{"patch":{"summary":"Update IP address attribute","operationId":"databasesUpdateIpAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Update an ip attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeIP","schema":{"$ref":"#\/definitions\/attributeIp"}}},"x-appwrite":{"method":"updateIpAttribute","weight":90,"cookies":false,"type":"","demo":"databases\/update-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null,"x-nullable":true}},"required":["required","default"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/relationship":{"post":{"summary":"Create relationship attribute","operationId":"databasesCreateRelationshipAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create relationship attribute. [Learn more about relationship attributes](https:\/\/appwrite.io\/docs\/databases-relationships#relationship-attributes).\n","responses":{"202":{"description":"AttributeRelationship","schema":{"$ref":"#\/definitions\/attributeRelationship"}}},"x-appwrite":{"method":"createRelationshipAttribute","weight":84,"cookies":false,"type":"","demo":"databases\/create-relationship-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-relationship-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"relatedCollectionId":{"type":"string","description":"Related Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","default":null,"x-example":"[RELATED_COLLECTION_ID]"},"type":{"type":"string","description":"Relation type","default":null,"x-example":"oneToOne","enum":["oneToOne","manyToOne","manyToMany","oneToMany"],"x-enum-name":"RelationshipType","x-enum-keys":[]},"twoWay":{"type":"boolean","description":"Is Two Way?","default":false,"x-example":false},"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"twoWayKey":{"type":"string","description":"Two Way Attribute Key.","default":null,"x-example":null},"onDelete":{"type":"string","description":"Constraints option","default":"restrict","x-example":"cascade","enum":["cascade","restrict","setNull"],"x-enum-name":"RelationMutate","x-enum-keys":[]}},"required":["relatedCollectionId","type"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create string attribute","operationId":"databasesCreateStringAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a string attribute.\n","responses":{"202":{"description":"AttributeString","schema":{"$ref":"#\/definitions\/attributeString"}}},"x-appwrite":{"method":"createStringAttribute","weight":75,"cookies":false,"type":"","demo":"databases\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"size":{"type":"integer","description":"Attribute size for text attributes, in number of characters.","default":null,"x-example":1},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false},"encrypt":{"type":"boolean","description":"Toggle encryption for the attribute. Encryption enhances security by not storing any plain text values in the database. However, encrypted attributes cannot be queried.","default":false,"x-example":false}},"required":["key","size","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/string\/{key}":{"patch":{"summary":"Update string attribute","operationId":"databasesUpdateStringAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Update a string attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeString","schema":{"$ref":"#\/definitions\/attributeString"}}},"x-appwrite":{"method":"updateStringAttribute","weight":87,"cookies":false,"type":"","demo":"databases\/update-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"[DEFAULT]","x-nullable":true}},"required":["required","default"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL attribute","operationId":"databasesCreateUrlAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a URL attribute.\n","responses":{"202":{"description":"AttributeURL","schema":{"$ref":"#\/definitions\/attributeUrl"}}},"x-appwrite":{"method":"createUrlAttribute","weight":79,"cookies":false,"type":"","demo":"databases\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"https:\/\/example.com"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url\/{key}":{"patch":{"summary":"Update URL attribute","operationId":"databasesUpdateUrlAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Update an url attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeURL","schema":{"$ref":"#\/definitions\/attributeUrl"}}},"x-appwrite":{"method":"updateUrlAttribute","weight":91,"cookies":false,"type":"","demo":"databases\/update-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"https:\/\/example.com","x-nullable":true}},"required":["required","default"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get attribute","operationId":"databasesGetAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, or AttributeDatetime, or AttributeRelationship, or AttributeString","schema":{"x-oneOf":[{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeRelationship"},{"$ref":"#\/definitions\/attributeString"}]}}},"x-appwrite":{"method":"getAttribute","weight":86,"cookies":false,"type":"","demo":"databases\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"}]},"delete":{"summary":"Delete attribute","operationId":"databasesDeleteAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":97,"cookies":false,"type":"","demo":"databases\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/{key}\/relationship":{"patch":{"summary":"Update relationship attribute","operationId":"databasesUpdateRelationshipAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Update relationship attribute. [Learn more about relationship attributes](https:\/\/appwrite.io\/docs\/databases-relationships#relationship-attributes).\n","responses":{"200":{"description":"AttributeRelationship","schema":{"$ref":"#\/definitions\/attributeRelationship"}}},"x-appwrite":{"method":"updateRelationshipAttribute","weight":96,"cookies":false,"type":"","demo":"databases\/update-relationship-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-relationship-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"onDelete":{"type":"string","description":"Constraints option","default":null,"x-example":"cascade","enum":["cascade","restrict","setNull"],"x-enum-name":"RelationMutate","x-enum-keys":[]}}}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List documents","operationId":"databasesListDocuments","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","schema":{"$ref":"#\/definitions\/documentList"}}},"x-appwrite":{"method":"listDocuments","weight":103,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"post":{"summary":"Create document","operationId":"databasesCreateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"createDocument","weight":102,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","default":{},"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, only the current user is granted all permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get document","operationId":"databasesGetDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"getDocument","weight":104,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"patch":{"summary":"Update document","operationId":"databasesUpdateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"updateDocument","weight":106,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","default":[],"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete document","operationId":"databasesDeleteDocument","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":107,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes":{"get":{"summary":"List indexes","operationId":"databasesListIndexes","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Indexes List","schema":{"$ref":"#\/definitions\/indexList"}}},"x-appwrite":{"method":"listIndexes","weight":99,"cookies":false,"type":"","demo":"databases\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: key, type, status, attributes, error","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"post":{"summary":"Create index","operationId":"databasesCreateIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"createIndex","weight":98,"cookies":false,"type":"","demo":"databases\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Index Key.","default":null,"x-example":null},"type":{"type":"string","description":"Index type.","default":null,"x-example":"key","enum":["key","fulltext","unique","spatial"],"x-enum-name":"IndexType","x-enum-keys":[]},"attributes":{"type":"array","description":"Array of attributes to index. Maximum of 100 attributes are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders. Maximum of 100 orders are allowed.","default":[],"x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get index","operationId":"databasesGetIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"getIndex","weight":100,"cookies":false,"type":"","demo":"databases\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Index Key.","required":true,"type":"string","in":"path"}]},"delete":{"summary":"Delete index","operationId":"databasesDeleteIndex","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":101,"cookies":false,"type":"","demo":"databases\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Index Key.","required":true,"type":"string","in":"path"}]}},"\/functions":{"get":{"summary":"List functions","operationId":"functionsList","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the project's functions. You can use the query params to filter your results.","responses":{"200":{"description":"Functions List","schema":{"$ref":"#\/definitions\/functionList"}}},"x-appwrite":{"method":"list","weight":268,"cookies":false,"type":"","demo":"functions\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-functions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, runtime, deployment, schedule, scheduleNext, schedulePrevious, timeout, entrypoint, commands, installationId","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create function","operationId":"functionsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function. You can pass a list of [permissions](https:\/\/appwrite.io\/docs\/permissions) to allow different project users or team with access to execute the function using the client API.","responses":{"201":{"description":"Function","schema":{"$ref":"#\/definitions\/function"}}},"x-appwrite":{"method":"create","weight":267,"cookies":false,"type":"","demo":"functions\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"functionId":{"type":"string","description":"Function ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[FUNCTION_ID]"},"name":{"type":"string","description":"Function name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"runtime":{"type":"string","description":"Execution runtime.","default":null,"x-example":"node-18.0","enum":["node-18.0","php-8.0","ruby-3.1","python-3.9"],"x-enum-name":null,"x-enum-keys":[]},"execute":{"type":"array","description":"An array of role strings with execution permissions. By default no user is granted with any execute permissions. [learn more about roles](https:\/\/appwrite.io\/docs\/permissions#permission-roles). Maximum of 100 roles are allowed, each 64 characters long.","default":[],"x-example":"[\"any\"]","items":{"type":"string"}},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","default":[],"x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","default":"","x-example":null},"timeout":{"type":"integer","description":"Function maximum execution time in seconds.","default":15,"x-example":1},"enabled":{"type":"boolean","description":"Is function enabled? When set to 'disabled', users cannot access the function but Server SDKs with and API key can still access the function. No data is lost when this is toggled.","default":true,"x-example":false},"logging":{"type":"boolean","description":"Whether executions will be logged. When set to false, executions will not be logged, but will reduce resource used by your Appwrite project.","default":true,"x-example":false},"entrypoint":{"type":"string","description":"Entrypoint File. This path is relative to the \"providerRootDirectory\".","default":"","x-example":"[ENTRYPOINT]"},"commands":{"type":"string","description":"Build Commands.","default":"","x-example":"[COMMANDS]"},"installationId":{"type":"string","description":"Appwrite Installation ID for VCS (Version Control System) deployment.","default":"","x-example":"[INSTALLATION_ID]"},"providerRepositoryId":{"type":"string","description":"Repository ID of the repo linked to the function.","default":"","x-example":"[PROVIDER_REPOSITORY_ID]"},"providerBranch":{"type":"string","description":"Production branch for the repo linked to the function.","default":"","x-example":"[PROVIDER_BRANCH]"},"providerSilentMode":{"type":"boolean","description":"Is the VCS (Version Control System) connection in silent mode for the repo linked to the function? In silent mode, comments will not be made on commits and pull requests.","default":false,"x-example":false},"providerRootDirectory":{"type":"string","description":"Path to function code in the linked repo.","default":"","x-example":"[PROVIDER_ROOT_DIRECTORY]"},"templateRepository":{"type":"string","description":"Repository name of the template.","default":"","x-example":"[TEMPLATE_REPOSITORY]"},"templateOwner":{"type":"string","description":"The name of the owner of the template.","default":"","x-example":"[TEMPLATE_OWNER]"},"templateRootDirectory":{"type":"string","description":"Path to function code in the template repo.","default":"","x-example":"[TEMPLATE_ROOT_DIRECTORY]"},"templateBranch":{"type":"string","description":"Production branch for the repo linked to the function template.","default":"","x-example":"[TEMPLATE_BRANCH]"}},"required":["functionId","name","runtime"]}}]}},"\/functions\/runtimes":{"get":{"summary":"List runtimes","operationId":"functionsListRuntimes","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all runtimes that are currently active on your instance.","responses":{"200":{"description":"Runtimes List","schema":{"$ref":"#\/definitions\/runtimeList"}}},"x-appwrite":{"method":"listRuntimes","weight":269,"cookies":false,"type":"","demo":"functions\/list-runtimes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-runtimes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/functions\/{functionId}":{"get":{"summary":"Get function","operationId":"functionsGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a function by its unique ID.","responses":{"200":{"description":"Function","schema":{"$ref":"#\/definitions\/function"}}},"x-appwrite":{"method":"get","weight":270,"cookies":false,"type":"","demo":"functions\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"}]},"put":{"summary":"Update function","operationId":"functionsUpdate","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Update function by its unique ID.","responses":{"200":{"description":"Function","schema":{"$ref":"#\/definitions\/function"}}},"x-appwrite":{"method":"update","weight":273,"cookies":false,"type":"","demo":"functions\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Function name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"runtime":{"type":"string","description":"Execution runtime.","default":"","x-example":"node-18.0","enum":["node-18.0","php-8.0","ruby-3.1","python-3.9"],"x-enum-name":null,"x-enum-keys":[]},"execute":{"type":"array","description":"An array of role strings with execution permissions. By default no user is granted with any execute permissions. [learn more about roles](https:\/\/appwrite.io\/docs\/permissions#permission-roles). Maximum of 100 roles are allowed, each 64 characters long.","default":[],"x-example":"[\"any\"]","items":{"type":"string"}},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","default":[],"x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","default":"","x-example":null},"timeout":{"type":"integer","description":"Maximum execution time in seconds.","default":15,"x-example":1},"enabled":{"type":"boolean","description":"Is function enabled? When set to 'disabled', users cannot access the function but Server SDKs with and API key can still access the function. No data is lost when this is toggled.","default":true,"x-example":false},"logging":{"type":"boolean","description":"Whether executions will be logged. When set to false, executions will not be logged, but will reduce resource used by your Appwrite project.","default":true,"x-example":false},"entrypoint":{"type":"string","description":"Entrypoint File. This path is relative to the \"providerRootDirectory\".","default":"","x-example":"[ENTRYPOINT]"},"commands":{"type":"string","description":"Build Commands.","default":"","x-example":"[COMMANDS]"},"installationId":{"type":"string","description":"Appwrite Installation ID for VCS (Version Controle System) deployment.","default":"","x-example":"[INSTALLATION_ID]"},"providerRepositoryId":{"type":"string","description":"Repository ID of the repo linked to the function","default":"","x-example":"[PROVIDER_REPOSITORY_ID]"},"providerBranch":{"type":"string","description":"Production branch for the repo linked to the function","default":"","x-example":"[PROVIDER_BRANCH]"},"providerSilentMode":{"type":"boolean","description":"Is the VCS (Version Control System) connection in silent mode for the repo linked to the function? In silent mode, comments will not be made on commits and pull requests.","default":false,"x-example":false},"providerRootDirectory":{"type":"string","description":"Path to function code in the linked repo.","default":"","x-example":"[PROVIDER_ROOT_DIRECTORY]"}},"required":["name"]}}]},"delete":{"summary":"Delete function","operationId":"functionsDelete","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"Delete a function by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":276,"cookies":false,"type":"","demo":"functions\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"}]}},"\/functions\/{functionId}\/deployments":{"get":{"summary":"List deployments","operationId":"functionsListDeployments","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the project's code deployments. You can use the query params to filter your results.","responses":{"200":{"description":"Deployments List","schema":{"$ref":"#\/definitions\/deploymentList"}}},"x-appwrite":{"method":"listDeployments","weight":278,"cookies":false,"type":"","demo":"functions\/list-deployments.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-deployments.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: size, buildId, activate, entrypoint, commands","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create deployment","operationId":"functionsCreateDeployment","consumes":["multipart\/form-data"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function code deployment. Use this endpoint to upload a new version of your code function. To execute your newly uploaded code, you'll need to update the function's deployment to use your new deployment UID.\n\nThis endpoint accepts a tar.gz file compressed with your code. Make sure to include any dependencies your code has within the compressed file. You can learn more about code packaging in the [Appwrite Cloud Functions tutorial](https:\/\/appwrite.io\/docs\/functions).\n\nUse the \"command\" param to set the entrypoint used to execute your code.","responses":{"202":{"description":"Deployment","schema":{"$ref":"#\/definitions\/deployment"}}},"x-appwrite":{"method":"createDeployment","weight":277,"cookies":false,"type":"","demo":"functions\/create-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":true,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"entrypoint","description":"Entrypoint File.","required":false,"type":"string","x-example":"[ENTRYPOINT]","in":"formData"},{"name":"commands","description":"Build Commands.","required":false,"type":"string","x-example":"[COMMANDS]","in":"formData"},{"name":"code","description":"Gzip file with your code package. When used with the Appwrite CLI, pass the path to your code directory, and the CLI will automatically package your code. Use a path that is within the current directory.","required":true,"type":"file","in":"formData"},{"name":"activate","description":"Automatically activate the deployment when it is finished building.","required":true,"type":"boolean","x-example":false,"in":"formData"}]}},"\/functions\/{functionId}\/deployments\/{deploymentId}":{"get":{"summary":"Get deployment","operationId":"functionsGetDeployment","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a code deployment by its unique ID.","responses":{"200":{"description":"Deployment","schema":{"$ref":"#\/definitions\/deployment"}}},"x-appwrite":{"method":"getDeployment","weight":279,"cookies":false,"type":"","demo":"functions\/get-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"type":"string","x-example":"[DEPLOYMENT_ID]","in":"path"}]},"patch":{"summary":"Update function deployment","operationId":"functionsUpdateDeployment","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Update the function code deployment ID using the unique function ID. Use this endpoint to switch the code deployment that should be executed by the execution endpoint.","responses":{"200":{"description":"Function","schema":{"$ref":"#\/definitions\/function"}}},"x-appwrite":{"method":"updateDeployment","weight":275,"cookies":false,"type":"","demo":"functions\/update-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-function-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"type":"string","x-example":"[DEPLOYMENT_ID]","in":"path"}]},"delete":{"summary":"Delete deployment","operationId":"functionsDeleteDeployment","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"Delete a code deployment by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDeployment","weight":280,"cookies":false,"type":"","demo":"functions\/delete-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"type":"string","x-example":"[DEPLOYMENT_ID]","in":"path"}]}},"\/functions\/{functionId}\/deployments\/{deploymentId}\/builds\/{buildId}":{"post":{"summary":"Create build","operationId":"functionsCreateBuild","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"Create a new build for an Appwrite Function deployment. This endpoint can be used to retry a failed build.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"createBuild","weight":281,"cookies":false,"type":"","demo":"functions\/create-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"type":"string","x-example":"[DEPLOYMENT_ID]","in":"path"},{"name":"buildId","description":"Build unique ID.","required":true,"type":"string","x-example":"[BUILD_ID]","in":"path"}]}},"\/functions\/{functionId}\/deployments\/{deploymentId}\/download":{"get":{"summary":"Download Deployment","operationId":"functionsDownloadDeployment","consumes":["application\/json"],"produces":["*\/*"],"tags":["functions"],"description":"Get a Deployment's contents by its unique ID. This endpoint supports range requests for partial or streaming file download.","responses":{"200":{"description":"File","schema":{"type":"file"}}},"x-appwrite":{"method":"downloadDeployment","weight":274,"cookies":false,"type":"location","demo":"functions\/download-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/download-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"type":"string","x-example":"[DEPLOYMENT_ID]","in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List executions","operationId":"functionsListExecutions","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","schema":{"$ref":"#\/definitions\/executionList"}}},"x-appwrite":{"method":"listExecutions","weight":283,"cookies":false,"type":"","demo":"functions\/list-executions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-executions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, responseStatusCode, duration","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create execution","operationId":"functionsCreateExecution","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","schema":{"$ref":"#\/definitions\/execution"}}},"x-appwrite":{"method":"createExecution","weight":282,"cookies":false,"type":"","demo":"functions\/create-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-execution.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"body":{"type":"string","description":"HTTP body of execution. Default value is empty string.","default":"","x-example":"[BODY]"},"async":{"type":"boolean","description":"Execute code in the background. Default value is false.","default":false,"x-example":false},"path":{"type":"string","description":"HTTP path of execution. Path can include query params. Default value is \/","default":"\/","x-example":"[PATH]"},"method":{"type":"string","description":"HTTP method of execution. Default value is GET.","default":"POST","x-example":"GET","enum":["GET","POST","PUT","PATCH","DELETE","OPTIONS"],"x-enum-name":"ExecutionMethod","x-enum-keys":[]},"headers":{"type":"object","description":"HTTP headers of execution. Defaults to empty.","default":[],"x-example":"{}"}}}}]}},"\/functions\/{functionId}\/executions\/{executionId}":{"get":{"summary":"Get execution","operationId":"functionsGetExecution","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a function execution log by its unique ID.","responses":{"200":{"description":"Execution","schema":{"$ref":"#\/definitions\/execution"}}},"x-appwrite":{"method":"getExecution","weight":284,"cookies":false,"type":"","demo":"functions\/get-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-execution.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"executionId","description":"Execution ID.","required":true,"type":"string","x-example":"[EXECUTION_ID]","in":"path"}]}},"\/functions\/{functionId}\/variables":{"get":{"summary":"List variables","operationId":"functionsListVariables","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all variables of a specific function.","responses":{"200":{"description":"Variables List","schema":{"$ref":"#\/definitions\/variableList"}}},"x-appwrite":{"method":"listVariables","weight":286,"cookies":false,"type":"","demo":"functions\/list-variables.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-variables.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"}]},"post":{"summary":"Create variable","operationId":"functionsCreateVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function environment variable. These variables can be accessed in the function at runtime as environment variables.","responses":{"201":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"createVariable","weight":285,"cookies":false,"type":"","demo":"functions\/create-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","default":null,"x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","default":null,"x-example":"[VALUE]"}},"required":["key","value"]}}]}},"\/functions\/{functionId}\/variables\/{variableId}":{"get":{"summary":"Get variable","operationId":"functionsGetVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a variable by its unique ID.","responses":{"200":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"getVariable","weight":287,"cookies":false,"type":"","demo":"functions\/get-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"}]},"put":{"summary":"Update variable","operationId":"functionsUpdateVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Update variable by its unique ID.","responses":{"200":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"updateVariable","weight":288,"cookies":false,"type":"","demo":"functions\/update-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","default":null,"x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","default":null,"x-example":"[VALUE]"}},"required":["key"]}}]},"delete":{"summary":"Delete variable","operationId":"functionsDeleteVariable","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"Delete a variable by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteVariable","weight":289,"cookies":false,"type":"","demo":"functions\/delete-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"}]}},"\/graphql":{"post":{"summary":"GraphQL endpoint","operationId":"graphqlQuery","consumes":["application\/json"],"produces":["application\/json"],"tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","schema":{"$ref":"#\/definitions\/any"}}},"x-appwrite":{"method":"query","weight":304,"cookies":false,"type":"graphql","demo":"graphql\/query.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"query":{"type":"object","description":"The query or queries to execute.","default":{},"x-example":"{}"}},"required":["query"]}}]}},"\/graphql\/mutation":{"post":{"summary":"GraphQL endpoint","operationId":"graphqlMutation","consumes":["application\/json"],"produces":["application\/json"],"tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","schema":{"$ref":"#\/definitions\/any"}}},"x-appwrite":{"method":"mutation","weight":303,"cookies":false,"type":"graphql","demo":"graphql\/mutation.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"query":{"type":"object","description":"The query or queries to execute.","default":{},"x-example":"{}"}},"required":["query"]}}]}},"\/health":{"get":{"summary":"Get HTTP","operationId":"healthGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite HTTP server is up and responsive.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"get","weight":119,"cookies":false,"type":"","demo":"health\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/anti-virus":{"get":{"summary":"Get antivirus","operationId":"healthGetAntivirus","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite Antivirus server is up and connection is successful.","responses":{"200":{"description":"Health Antivirus","schema":{"$ref":"#\/definitions\/healthAntivirus"}}},"x-appwrite":{"method":"getAntivirus","weight":138,"cookies":false,"type":"","demo":"health\/get-antivirus.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-storage-anti-virus.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/cache":{"get":{"summary":"Get cache","operationId":"healthGetCache","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite in-memory cache servers are up and connection is successful.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"getCache","weight":122,"cookies":false,"type":"","demo":"health\/get-cache.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-cache.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/certificate":{"get":{"summary":"Get the SSL certificate for a domain","operationId":"healthGetCertificate","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the SSL certificate for a domain","responses":{"200":{"description":"Health Certificate","schema":{"$ref":"#\/definitions\/healthCertificate"}}},"x-appwrite":{"method":"getCertificate","weight":128,"cookies":false,"type":"","demo":"health\/get-certificate.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-certificate.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"domain","description":"string","required":false,"type":"string","in":"query"}]}},"\/health\/db":{"get":{"summary":"Get DB","operationId":"healthGetDB","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite database servers are up and connection is successful.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"getDB","weight":121,"cookies":false,"type":"","demo":"health\/get-d-b.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-db.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/pubsub":{"get":{"summary":"Get pubsub","operationId":"healthGetPubSub","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite pub-sub servers are up and connection is successful.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"getPubSub","weight":124,"cookies":false,"type":"","demo":"health\/get-pub-sub.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-pubsub.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/queue":{"get":{"summary":"Get queue","operationId":"healthGetQueue","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite queue messaging servers are up and connection is successful.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"getQueue","weight":123,"cookies":false,"type":"","demo":"health\/get-queue.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/queue\/builds":{"get":{"summary":"Get builds queue","operationId":"healthGetQueueBuilds","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of builds that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueBuilds","weight":130,"cookies":false,"type":"","demo":"health\/get-queue-builds.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-builds.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/certificates":{"get":{"summary":"Get certificates queue","operationId":"healthGetQueueCertificates","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of certificates that are waiting to be issued against [Letsencrypt](https:\/\/letsencrypt.org\/) in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueCertificates","weight":129,"cookies":false,"type":"","demo":"health\/get-queue-certificates.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-certificates.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/databases":{"get":{"summary":"Get databases queue","operationId":"healthGetQueueDatabases","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of database changes that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueDatabases","weight":131,"cookies":false,"type":"","demo":"health\/get-queue-databases.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-databases.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"name","description":"Queue name for which to check the queue size","required":false,"type":"string","x-example":"[NAME]","default":"database_db_main","in":"query"},{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/deletes":{"get":{"summary":"Get deletes queue","operationId":"healthGetQueueDeletes","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of background destructive changes that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueDeletes","weight":132,"cookies":false,"type":"","demo":"health\/get-queue-deletes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-deletes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/failed\/{name}":{"get":{"summary":"Get number of failed queue jobs","operationId":"healthGetFailedJobs","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Returns the amount of failed jobs in a given queue.\n","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getFailedJobs","weight":139,"cookies":false,"type":"","demo":"health\/get-failed-jobs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-failed-queue-jobs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"name","description":"The name of the queue","required":true,"type":"string","x-example":"v1-database","enum":["v1-database","v1-deletes","v1-audits","v1-mails","v1-functions","v1-usage","webhooksv1","v1-certificates","v1-builds","v1-messaging","v1-migrations","hamsterv1"],"x-enum-name":null,"x-enum-keys":[],"in":"path"},{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/functions":{"get":{"summary":"Get functions queue","operationId":"healthGetQueueFunctions","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueFunctions","weight":136,"cookies":false,"type":"","demo":"health\/get-queue-functions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-functions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/logs":{"get":{"summary":"Get logs queue","operationId":"healthGetQueueLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of logs that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueLogs","weight":127,"cookies":false,"type":"","demo":"health\/get-queue-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/mails":{"get":{"summary":"Get mails queue","operationId":"healthGetQueueMails","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of mails that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueMails","weight":133,"cookies":false,"type":"","demo":"health\/get-queue-mails.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-mails.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/messaging":{"get":{"summary":"Get messaging queue","operationId":"healthGetQueueMessaging","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of messages that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueMessaging","weight":134,"cookies":false,"type":"","demo":"health\/get-queue-messaging.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-messaging.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/migrations":{"get":{"summary":"Get migrations queue","operationId":"healthGetQueueMigrations","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of migrations that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueMigrations","weight":135,"cookies":false,"type":"","demo":"health\/get-queue-migrations.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-migrations.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/webhooks":{"get":{"summary":"Get webhooks queue","operationId":"healthGetQueueWebhooks","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of webhooks that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueWebhooks","weight":126,"cookies":false,"type":"","demo":"health\/get-queue-webhooks.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-webhooks.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/storage\/local":{"get":{"summary":"Get local storage","operationId":"healthGetStorageLocal","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite local storage device is up and connection is successful.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"getStorageLocal","weight":137,"cookies":false,"type":"","demo":"health\/get-storage-local.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-storage-local.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/time":{"get":{"summary":"Get time","operationId":"healthGetTime","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite server time is synced with Google remote NTP server. We use this technology to smoothly handle leap seconds with no disruptive events. The [Network Time Protocol](https:\/\/en.wikipedia.org\/wiki\/Network_Time_Protocol) (NTP) is used by hundreds of millions of computers and devices to synchronize their clocks over the Internet. If your computer sets its own clock, it likely uses NTP.","responses":{"200":{"description":"Health Time","schema":{"$ref":"#\/definitions\/healthTime"}}},"x-appwrite":{"method":"getTime","weight":125,"cookies":false,"type":"","demo":"health\/get-time.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-time.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/locale":{"get":{"summary":"Get user locale","operationId":"localeGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"Get the current user location based on IP. Returns an object with user country code, country name, continent name, continent code, ip address and suggested currency. You can use the locale header to get the data in a supported language.\n\n([IP Geolocation by DB-IP](https:\/\/db-ip.com))","responses":{"200":{"description":"Locale","schema":{"$ref":"#\/definitions\/locale"}}},"x-appwrite":{"method":"get","weight":111,"cookies":false,"type":"","demo":"locale\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-locale.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/localed","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}]}},"\/locale\/codes":{"get":{"summary":"List Locale Codes","operationId":"localeListCodes","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all locale codes in [ISO 639-1](https:\/\/en.wikipedia.org\/wiki\/List_of_ISO_639-1_codes).","responses":{"200":{"description":"Locale codes list","schema":{"$ref":"#\/definitions\/localeCodeList"}}},"x-appwrite":{"method":"listCodes","weight":112,"cookies":false,"type":"","demo":"locale\/list-codes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-locale-codes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/localeCode","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}]}},"\/locale\/continents":{"get":{"summary":"List continents","operationId":"localeListContinents","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","schema":{"$ref":"#\/definitions\/continentList"}}},"x-appwrite":{"method":"listContinents","weight":116,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/continents","offline-key":"","offline-response-key":"code","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List countries","operationId":"localeListCountries","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountries","weight":113,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/countries","offline-key":"","offline-response-key":"code","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU countries","operationId":"localeListCountriesEU","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountriesEU","weight":114,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/countries\/eu","offline-key":"","offline-response-key":"code","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List countries phone codes","operationId":"localeListCountriesPhones","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","schema":{"$ref":"#\/definitions\/phoneList"}}},"x-appwrite":{"method":"listCountriesPhones","weight":115,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/countries\/phones","offline-key":"","offline-response-key":"countryCode","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List currencies","operationId":"localeListCurrencies","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","schema":{"$ref":"#\/definitions\/currencyList"}}},"x-appwrite":{"method":"listCurrencies","weight":117,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/currencies","offline-key":"","offline-response-key":"code","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List languages","operationId":"localeListLanguages","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","schema":{"$ref":"#\/definitions\/languageList"}}},"x-appwrite":{"method":"listLanguages","weight":118,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/languages","offline-key":"","offline-response-key":"code","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}]}},"\/messaging\/messages":{"get":{"summary":"List messages","operationId":"messagingListMessages","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Message list","schema":{"$ref":"#\/definitions\/messageList"}}},"x-appwrite":{"method":"listMessages","weight":363,"cookies":false,"type":"","demo":"messaging\/list-messages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-messages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: scheduledAt, deliveredAt, deliveredTotal, status, description, providerType","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]}},"\/messaging\/messages\/email":{"post":{"summary":"Create an email.","operationId":"messagingCreateEmail","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Message","schema":{"$ref":"#\/definitions\/message"}}},"x-appwrite":{"method":"createEmail","weight":360,"cookies":false,"type":"","demo":"messaging\/create-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"messageId":{"type":"string","description":"Message ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[MESSAGE_ID]"},"subject":{"type":"string","description":"Email Subject.","default":null,"x-example":"[SUBJECT]"},"content":{"type":"string","description":"Email Content.","default":null,"x-example":"[CONTENT]"},"topics":{"type":"array","description":"List of Topic IDs.","default":[],"x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","default":[],"x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","default":[],"x-example":null,"items":{"type":"string"}},"cc":{"type":"array","description":"Array of target IDs to be added as CC.","default":[],"x-example":null,"items":{"type":"string"}},"bcc":{"type":"array","description":"Array of target IDs to be added as BCC.","default":[],"x-example":null,"items":{"type":"string"}},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","default":"draft","x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":"MessageStatus","x-enum-keys":[]},"html":{"type":"boolean","description":"Is content of type HTML","default":false,"x-example":false},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","default":null,"x-example":null}},"required":["messageId","subject","content"]}}]}},"\/messaging\/messages\/email\/{messageId}":{"patch":{"summary":"Update an email.","operationId":"messagingUpdateEmail","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Message","schema":{"$ref":"#\/definitions\/message"}}},"x-appwrite":{"method":"updateEmail","weight":367,"cookies":false,"type":"","demo":"messaging\/update-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"type":"string","x-example":"[MESSAGE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"topics":{"type":"array","description":"List of Topic IDs.","default":null,"x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","default":null,"x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","default":null,"x-example":null,"items":{"type":"string"}},"subject":{"type":"string","description":"Email Subject.","default":null,"x-example":"[SUBJECT]"},"content":{"type":"string","description":"Email Content.","default":null,"x-example":"[CONTENT]"},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","default":null,"x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":"MessageStatus","x-enum-keys":[]},"html":{"type":"boolean","description":"Is content of type HTML","default":null,"x-example":false},"cc":{"type":"array","description":"Array of target IDs to be added as CC.","default":null,"x-example":null,"items":{"type":"string"}},"bcc":{"type":"array","description":"Array of target IDs to be added as BCC.","default":null,"x-example":null,"items":{"type":"string"}},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","default":null,"x-example":null}}}}]}},"\/messaging\/messages\/push":{"post":{"summary":"Create a push notification.","operationId":"messagingCreatePush","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Message","schema":{"$ref":"#\/definitions\/message"}}},"x-appwrite":{"method":"createPush","weight":362,"cookies":false,"type":"","demo":"messaging\/create-push.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-push-notification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"messageId":{"type":"string","description":"Message ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[MESSAGE_ID]"},"title":{"type":"string","description":"Title for push notification.","default":null,"x-example":"[TITLE]"},"body":{"type":"string","description":"Body for push notification.","default":null,"x-example":"[BODY]"},"topics":{"type":"array","description":"List of Topic IDs.","default":[],"x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","default":[],"x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","default":[],"x-example":null,"items":{"type":"string"}},"data":{"type":"object","description":"Additional Data for push notification.","default":{},"x-example":"{}"},"action":{"type":"string","description":"Action for push notification.","default":"","x-example":"[ACTION]"},"icon":{"type":"string","description":"Icon for push notification. Available only for Android and Web Platform.","default":"","x-example":"[ICON]"},"sound":{"type":"string","description":"Sound for push notification. Available only for Android and IOS Platform.","default":"","x-example":"[SOUND]"},"color":{"type":"string","description":"Color for push notification. Available only for Android Platform.","default":"","x-example":"[COLOR]"},"tag":{"type":"string","description":"Tag for push notification. Available only for Android Platform.","default":"","x-example":"[TAG]"},"badge":{"type":"string","description":"Badge for push notification. Available only for IOS Platform.","default":"","x-example":"[BADGE]"},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","default":"draft","x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":"MessageStatus","x-enum-keys":[]},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","default":null,"x-example":null}},"required":["messageId","title","body"]}}]}},"\/messaging\/messages\/push\/{messageId}":{"patch":{"summary":"Update a push notification.","operationId":"messagingUpdatePush","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Message","schema":{"$ref":"#\/definitions\/message"}}},"x-appwrite":{"method":"updatePush","weight":369,"cookies":false,"type":"","demo":"messaging\/update-push.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-push-notification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"type":"string","x-example":"[MESSAGE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"topics":{"type":"array","description":"List of Topic IDs.","default":null,"x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","default":null,"x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","default":null,"x-example":null,"items":{"type":"string"}},"title":{"type":"string","description":"Title for push notification.","default":null,"x-example":"[TITLE]"},"body":{"type":"string","description":"Body for push notification.","default":null,"x-example":"[BODY]"},"data":{"type":"object","description":"Additional Data for push notification.","default":{},"x-example":"{}"},"action":{"type":"string","description":"Action for push notification.","default":null,"x-example":"[ACTION]"},"icon":{"type":"string","description":"Icon for push notification. Available only for Android and Web platforms.","default":null,"x-example":"[ICON]"},"sound":{"type":"string","description":"Sound for push notification. Available only for Android and iOS platforms.","default":null,"x-example":"[SOUND]"},"color":{"type":"string","description":"Color for push notification. Available only for Android platforms.","default":null,"x-example":"[COLOR]"},"tag":{"type":"string","description":"Tag for push notification. Available only for Android platforms.","default":null,"x-example":"[TAG]"},"badge":{"type":"integer","description":"Badge for push notification. Available only for iOS platforms.","default":null,"x-example":null},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","default":null,"x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":"MessageStatus","x-enum-keys":[]},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","default":null,"x-example":null}}}}]}},"\/messaging\/messages\/sms":{"post":{"summary":"Create an SMS.","operationId":"messagingCreateSMS","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Message","schema":{"$ref":"#\/definitions\/message"}}},"x-appwrite":{"method":"createSMS","weight":361,"cookies":false,"type":"","demo":"messaging\/create-s-m-s.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-sms.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"messageId":{"type":"string","description":"Message ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[MESSAGE_ID]"},"content":{"type":"string","description":"SMS Content.","default":null,"x-example":"[CONTENT]"},"topics":{"type":"array","description":"List of Topic IDs.","default":[],"x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","default":[],"x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","default":[],"x-example":null,"items":{"type":"string"}},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","default":"draft","x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":"MessageStatus","x-enum-keys":[]},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","default":null,"x-example":null}},"required":["messageId","content"]}}]}},"\/messaging\/messages\/sms\/{messageId}":{"patch":{"summary":"Update an SMS.","operationId":"messagingUpdateSMS","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Message","schema":{"$ref":"#\/definitions\/message"}}},"x-appwrite":{"method":"updateSMS","weight":368,"cookies":false,"type":"","demo":"messaging\/update-s-m-s.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"type":"string","x-example":"[MESSAGE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"topics":{"type":"array","description":"List of Topic IDs.","default":null,"x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","default":null,"x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","default":null,"x-example":null,"items":{"type":"string"}},"content":{"type":"string","description":"Email Content.","default":null,"x-example":"[CONTENT]"},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","default":null,"x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":"MessageStatus","x-enum-keys":[]},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","default":null,"x-example":null}}}}]}},"\/messaging\/messages\/{messageId}":{"get":{"summary":"Get a message","operationId":"messagingGetMessage","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Message","schema":{"$ref":"#\/definitions\/message"}}},"x-appwrite":{"method":"getMessage","weight":366,"cookies":false,"type":"","demo":"messaging\/get-message.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/get-message.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"type":"string","x-example":"[MESSAGE_ID]","in":"path"}]},"delete":{"summary":"Delete a message","operationId":"messagingDelete","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":370,"cookies":false,"type":"","demo":"messaging\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-message.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"type":"string","x-example":"[MESSAGE_ID]","in":"path"}]}},"\/messaging\/messages\/{messageId}\/logs":{"get":{"summary":"List message logs","operationId":"messagingListMessageLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listMessageLogs","weight":364,"cookies":false,"type":"","demo":"messaging\/list-message-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/messages\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"type":"string","x-example":"[MESSAGE_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/messaging\/messages\/{messageId}\/targets":{"get":{"summary":"List message targets","operationId":"messagingListTargets","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"List the targets associated with a message as set via the targets attribute.","responses":{"200":{"description":"Target list","schema":{"$ref":"#\/definitions\/targetList"}}},"x-appwrite":{"method":"listTargets","weight":365,"cookies":false,"type":"","demo":"messaging\/list-targets.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-message-targets.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"type":"string","x-example":"[MESSAGE_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, providerId, identifier, providerType","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/messaging\/providers":{"get":{"summary":"List providers","operationId":"messagingListProviders","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider list","schema":{"$ref":"#\/definitions\/providerList"}}},"x-appwrite":{"method":"listProviders","weight":335,"cookies":false,"type":"","demo":"messaging\/list-providers.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-providers.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, provider, type, enabled","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]}},"\/messaging\/providers\/apns":{"post":{"summary":"Create APNS provider","operationId":"messagingCreateAPNSProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createAPNSProvider","weight":334,"cookies":false,"type":"","demo":"messaging\/create-a-p-n-s-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-apns-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"authKey":{"type":"string","description":"APNS authentication key.","default":"","x-example":"[AUTH_KEY]"},"authKeyId":{"type":"string","description":"APNS authentication key ID.","default":"","x-example":"[AUTH_KEY_ID]"},"teamId":{"type":"string","description":"APNS team ID.","default":"","x-example":"[TEAM_ID]"},"bundleId":{"type":"string","description":"APNS bundle ID.","default":"","x-example":"[BUNDLE_ID]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name"]}}]}},"\/messaging\/providers\/apns\/{providerId}":{"patch":{"summary":"Update APNS provider","operationId":"messagingUpdateAPNSProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateAPNSProvider","weight":347,"cookies":false,"type":"","demo":"messaging\/update-a-p-n-s-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-apns-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"authKey":{"type":"string","description":"APNS authentication key.","default":"","x-example":"[AUTH_KEY]"},"authKeyId":{"type":"string","description":"APNS authentication key ID.","default":"","x-example":"[AUTH_KEY_ID]"},"teamId":{"type":"string","description":"APNS team ID.","default":"","x-example":"[TEAM_ID]"},"bundleId":{"type":"string","description":"APNS bundle ID.","default":"","x-example":"[BUNDLE_ID]"}}}}]}},"\/messaging\/providers\/fcm":{"post":{"summary":"Create FCM provider","operationId":"messagingCreateFCMProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createFCMProvider","weight":333,"cookies":false,"type":"","demo":"messaging\/create-f-c-m-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-fcm-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"serviceAccountJSON":{"type":"object","description":"FCM service account JSON.","default":{},"x-example":"{}"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name"]}}]}},"\/messaging\/providers\/fcm\/{providerId}":{"patch":{"summary":"Update FCM provider","operationId":"messagingUpdateFCMProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateFCMProvider","weight":346,"cookies":false,"type":"","demo":"messaging\/update-f-c-m-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-fcm-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"serviceAccountJSON":{"type":"object","description":"FCM service account JSON.","default":{},"x-example":"{}"}}}}]}},"\/messaging\/providers\/mailgun":{"post":{"summary":"Create Mailgun provider","operationId":"messagingCreateMailgunProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createMailgunProvider","weight":325,"cookies":false,"type":"","demo":"messaging\/create-mailgun-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-mailgun-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"apiKey":{"type":"string","description":"Mailgun API Key.","default":"","x-example":"[API_KEY]"},"domain":{"type":"string","description":"Mailgun Domain.","default":"","x-example":"[DOMAIN]"},"isEuRegion":{"type":"boolean","description":"Set as EU region.","default":null,"x-example":false},"fromName":{"type":"string","description":"Sender Name.","default":"","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","default":"","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the reply to field for the mail. Default value is sender name. Reply to name must have reply to email as well.","default":"","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the reply to field for the mail. Default value is sender email. Reply to email must have reply to name as well.","default":"","x-example":"email@example.com"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name"]}}]}},"\/messaging\/providers\/mailgun\/{providerId}":{"patch":{"summary":"Update Mailgun provider","operationId":"messagingUpdateMailgunProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateMailgunProvider","weight":338,"cookies":false,"type":"","demo":"messaging\/update-mailgun-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-mailgun-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"apiKey":{"type":"string","description":"Mailgun API Key.","default":"","x-example":"[API_KEY]"},"domain":{"type":"string","description":"Mailgun Domain.","default":"","x-example":"[DOMAIN]"},"isEuRegion":{"type":"boolean","description":"Set as EU region.","default":null,"x-example":false},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"fromName":{"type":"string","description":"Sender Name.","default":"","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","default":"","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the reply to field for the mail. Default value is sender name.","default":"","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the reply to field for the mail. Default value is sender email.","default":"","x-example":"[REPLY_TO_EMAIL]"}}}}]}},"\/messaging\/providers\/msg91":{"post":{"summary":"Create Msg91 provider","operationId":"messagingCreateMsg91Provider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createMsg91Provider","weight":328,"cookies":false,"type":"","demo":"messaging\/create-msg91provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-msg91-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":"","x-example":"+12065550100"},"senderId":{"type":"string","description":"Msg91 Sender ID.","default":"","x-example":"[SENDER_ID]"},"authKey":{"type":"string","description":"Msg91 Auth Key.","default":"","x-example":"[AUTH_KEY]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name"]}}]}},"\/messaging\/providers\/msg91\/{providerId}":{"patch":{"summary":"Update Msg91 provider","operationId":"messagingUpdateMsg91Provider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateMsg91Provider","weight":341,"cookies":false,"type":"","demo":"messaging\/update-msg91provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-msg91-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"senderId":{"type":"string","description":"Msg91 Sender ID.","default":"","x-example":"[SENDER_ID]"},"authKey":{"type":"string","description":"Msg91 Auth Key.","default":"","x-example":"[AUTH_KEY]"},"from":{"type":"string","description":"Sender number.","default":"","x-example":"[FROM]"}}}}]}},"\/messaging\/providers\/sendgrid":{"post":{"summary":"Create Sendgrid provider","operationId":"messagingCreateSendgridProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createSendgridProvider","weight":326,"cookies":false,"type":"","demo":"messaging\/create-sendgrid-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-sengrid-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"apiKey":{"type":"string","description":"Sendgrid API key.","default":"","x-example":"[API_KEY]"},"fromName":{"type":"string","description":"Sender Name.","default":"","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","default":"","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the reply to field for the mail. Default value is sender name.","default":"","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the reply to field for the mail. Default value is sender email.","default":"","x-example":"email@example.com"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name"]}}]}},"\/messaging\/providers\/sendgrid\/{providerId}":{"patch":{"summary":"Update Sendgrid provider","operationId":"messagingUpdateSendgridProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateSendgridProvider","weight":339,"cookies":false,"type":"","demo":"messaging\/update-sendgrid-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-sendgrid-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"apiKey":{"type":"string","description":"Sendgrid API key.","default":"","x-example":"[API_KEY]"},"fromName":{"type":"string","description":"Sender Name.","default":"","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","default":"","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the Reply To field for the mail. Default value is Sender Name.","default":"","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the Reply To field for the mail. Default value is Sender Email.","default":"","x-example":"[REPLY_TO_EMAIL]"}}}}]}},"\/messaging\/providers\/smtp":{"post":{"summary":"Create SMTP provider","operationId":"messagingCreateSMTPProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createSMTPProvider","weight":327,"cookies":false,"type":"","demo":"messaging\/create-s-m-t-p-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-smtp-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"host":{"type":"string","description":"SMTP hosts. Either a single hostname or multiple semicolon-delimited hostnames. You can also specify a different port for each host by using this format: [hostname:port] (e.g. \"smtp1.example.com:25;smtp2.example.com\"). You can also specify encryption type, for example: (e.g. \"tls:\/\/smtp1.example.com:587;ssl:\/\/smtp2.example.com:465\"). Hosts will be tried in order.","default":null,"x-example":"[HOST]"},"port":{"type":"integer","description":"The default SMTP server port.","default":587,"x-example":1},"username":{"type":"string","description":"Authentication username.","default":"","x-example":"[USERNAME]"},"password":{"type":"string","description":"Authentication password.","default":"","x-example":"[PASSWORD]"},"encryption":{"type":"string","description":"Encryption type. Can be omitted, 'ssl', or 'tls'","default":"","x-example":"none","enum":["none","ssl","tls"],"x-enum-name":"SMTPEncryption","x-enum-keys":[]},"autoTLS":{"type":"boolean","description":"Enable SMTP AutoTLS feature.","default":true,"x-example":false},"mailer":{"type":"string","description":"The value to use for the X-Mailer header.","default":"","x-example":"[MAILER]"},"fromName":{"type":"string","description":"Sender Name.","default":"","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","default":"","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the reply to field for the mail. Default value is sender name.","default":"","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the reply to field for the mail. Default value is sender email.","default":"","x-example":"email@example.com"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name","host"]}}]}},"\/messaging\/providers\/smtp\/{providerId}":{"patch":{"summary":"Update SMTP provider","operationId":"messagingUpdateSMTPProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateSMTPProvider","weight":340,"cookies":false,"type":"","demo":"messaging\/update-s-m-t-p-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-smtp-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"host":{"type":"string","description":"SMTP hosts. Either a single hostname or multiple semicolon-delimited hostnames. You can also specify a different port for each host by using this format: [hostname:port] (e.g. \"smtp1.example.com:25;smtp2.example.com\"). You can also specify encryption type, for example: (e.g. \"tls:\/\/smtp1.example.com:587;ssl:\/\/smtp2.example.com:465\"). Hosts will be tried in order.","default":"","x-example":"[HOST]"},"port":{"type":"integer","description":"SMTP port.","default":null,"x-example":1},"username":{"type":"string","description":"Authentication username.","default":"","x-example":"[USERNAME]"},"password":{"type":"string","description":"Authentication password.","default":"","x-example":"[PASSWORD]"},"encryption":{"type":"string","description":"Encryption type. Can be 'ssl' or 'tls'","default":"","x-example":"none","enum":["none","ssl","tls"],"x-enum-name":"SMTPEncryption","x-enum-keys":[]},"autoTLS":{"type":"boolean","description":"Enable SMTP AutoTLS feature.","default":null,"x-example":false},"mailer":{"type":"string","description":"The value to use for the X-Mailer header.","default":"","x-example":"[MAILER]"},"fromName":{"type":"string","description":"Sender Name.","default":"","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","default":"","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the Reply To field for the mail. Default value is Sender Name.","default":"","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the Reply To field for the mail. Default value is Sender Email.","default":"","x-example":"[REPLY_TO_EMAIL]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}}}}]}},"\/messaging\/providers\/telesign":{"post":{"summary":"Create Telesign provider","operationId":"messagingCreateTelesignProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createTelesignProvider","weight":329,"cookies":false,"type":"","demo":"messaging\/create-telesign-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-telesign-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":"","x-example":"+12065550100"},"customerId":{"type":"string","description":"Telesign customer ID.","default":"","x-example":"[CUSTOMER_ID]"},"apiKey":{"type":"string","description":"Telesign API key.","default":"","x-example":"[API_KEY]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name"]}}]}},"\/messaging\/providers\/telesign\/{providerId}":{"patch":{"summary":"Update Telesign provider","operationId":"messagingUpdateTelesignProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateTelesignProvider","weight":342,"cookies":false,"type":"","demo":"messaging\/update-telesign-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-telesign-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"customerId":{"type":"string","description":"Telesign customer ID.","default":"","x-example":"[CUSTOMER_ID]"},"apiKey":{"type":"string","description":"Telesign API key.","default":"","x-example":"[API_KEY]"},"from":{"type":"string","description":"Sender number.","default":"","x-example":"[FROM]"}}}}]}},"\/messaging\/providers\/textmagic":{"post":{"summary":"Create Textmagic provider","operationId":"messagingCreateTextmagicProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createTextmagicProvider","weight":330,"cookies":false,"type":"","demo":"messaging\/create-textmagic-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-textmagic-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":"","x-example":"+12065550100"},"username":{"type":"string","description":"Textmagic username.","default":"","x-example":"[USERNAME]"},"apiKey":{"type":"string","description":"Textmagic apiKey.","default":"","x-example":"[API_KEY]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name"]}}]}},"\/messaging\/providers\/textmagic\/{providerId}":{"patch":{"summary":"Update Textmagic provider","operationId":"messagingUpdateTextmagicProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateTextmagicProvider","weight":343,"cookies":false,"type":"","demo":"messaging\/update-textmagic-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-textmagic-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"username":{"type":"string","description":"Textmagic username.","default":"","x-example":"[USERNAME]"},"apiKey":{"type":"string","description":"Textmagic apiKey.","default":"","x-example":"[API_KEY]"},"from":{"type":"string","description":"Sender number.","default":"","x-example":"[FROM]"}}}}]}},"\/messaging\/providers\/twilio":{"post":{"summary":"Create Twilio provider","operationId":"messagingCreateTwilioProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createTwilioProvider","weight":331,"cookies":false,"type":"","demo":"messaging\/create-twilio-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-twilio-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":"","x-example":"+12065550100"},"accountSid":{"type":"string","description":"Twilio account secret ID.","default":"","x-example":"[ACCOUNT_SID]"},"authToken":{"type":"string","description":"Twilio authentication token.","default":"","x-example":"[AUTH_TOKEN]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name"]}}]}},"\/messaging\/providers\/twilio\/{providerId}":{"patch":{"summary":"Update Twilio provider","operationId":"messagingUpdateTwilioProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateTwilioProvider","weight":344,"cookies":false,"type":"","demo":"messaging\/update-twilio-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-twilio-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"accountSid":{"type":"string","description":"Twilio account secret ID.","default":"","x-example":"[ACCOUNT_SID]"},"authToken":{"type":"string","description":"Twilio authentication token.","default":"","x-example":"[AUTH_TOKEN]"},"from":{"type":"string","description":"Sender number.","default":"","x-example":"[FROM]"}}}}]}},"\/messaging\/providers\/vonage":{"post":{"summary":"Create Vonage provider","operationId":"messagingCreateVonageProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createVonageProvider","weight":332,"cookies":false,"type":"","demo":"messaging\/create-vonage-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-vonage-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":"","x-example":"+12065550100"},"apiKey":{"type":"string","description":"Vonage API key.","default":"","x-example":"[API_KEY]"},"apiSecret":{"type":"string","description":"Vonage API secret.","default":"","x-example":"[API_SECRET]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name"]}}]}},"\/messaging\/providers\/vonage\/{providerId}":{"patch":{"summary":"Update Vonage provider","operationId":"messagingUpdateVonageProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateVonageProvider","weight":345,"cookies":false,"type":"","demo":"messaging\/update-vonage-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-vonage-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"apiKey":{"type":"string","description":"Vonage API key.","default":"","x-example":"[API_KEY]"},"apiSecret":{"type":"string","description":"Vonage API secret.","default":"","x-example":"[API_SECRET]"},"from":{"type":"string","description":"Sender number.","default":"","x-example":"[FROM]"}}}}]}},"\/messaging\/providers\/{providerId}":{"get":{"summary":"Get provider","operationId":"messagingGetProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"getProvider","weight":337,"cookies":false,"type":"","demo":"messaging\/get-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/get-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"}]},"delete":{"summary":"Delete provider","operationId":"messagingDeleteProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteProvider","weight":348,"cookies":false,"type":"","demo":"messaging\/delete-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"}]}},"\/messaging\/providers\/{providerId}\/logs":{"get":{"summary":"List provider logs","operationId":"messagingListProviderLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listProviderLogs","weight":336,"cookies":false,"type":"","demo":"messaging\/list-provider-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/providers\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/messaging\/subscribers\/{subscriberId}\/logs":{"get":{"summary":"List subscriber logs","operationId":"messagingListSubscriberLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listSubscriberLogs","weight":357,"cookies":false,"type":"","demo":"messaging\/list-subscriber-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/subscribers\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"subscriberId","description":"Subscriber ID.","required":true,"type":"string","x-example":"[SUBSCRIBER_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/messaging\/topics":{"get":{"summary":"List topics.","operationId":"messagingListTopics","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Topic list","schema":{"$ref":"#\/definitions\/topicList"}}},"x-appwrite":{"method":"listTopics","weight":350,"cookies":false,"type":"","demo":"messaging\/list-topics.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-topics.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, description, total","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create a topic.","operationId":"messagingCreateTopic","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Topic","schema":{"$ref":"#\/definitions\/topic"}}},"x-appwrite":{"method":"createTopic","weight":349,"cookies":false,"type":"","demo":"messaging\/create-topic.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-topic.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"topicId":{"type":"string","description":"Topic ID. Choose a custom Topic ID or a new Topic ID.","default":null,"x-example":"[TOPIC_ID]"},"name":{"type":"string","description":"Topic Name.","default":null,"x-example":"[NAME]"},"subscribe":{"type":"array","description":"An array of role strings with subscribe permission. By default all users are granted with any subscribe permission. [learn more about roles](https:\/\/appwrite.io\/docs\/permissions#permission-roles). Maximum of 100 roles are allowed, each 64 characters long.","default":["users"],"x-example":"[\"any\"]","items":{"type":"string"}}},"required":["topicId","name"]}}]}},"\/messaging\/topics\/{topicId}":{"get":{"summary":"Get a topic.","operationId":"messagingGetTopic","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Topic","schema":{"$ref":"#\/definitions\/topic"}}},"x-appwrite":{"method":"getTopic","weight":352,"cookies":false,"type":"","demo":"messaging\/get-topic.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/get-topic.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID.","required":true,"type":"string","x-example":"[TOPIC_ID]","in":"path"}]},"patch":{"summary":"Update a topic.","operationId":"messagingUpdateTopic","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Topic","schema":{"$ref":"#\/definitions\/topic"}}},"x-appwrite":{"method":"updateTopic","weight":353,"cookies":false,"type":"","demo":"messaging\/update-topic.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-topic.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID.","required":true,"type":"string","x-example":"[TOPIC_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Topic Name.","default":"","x-example":"[NAME]"}}}}]},"delete":{"summary":"Delete a topic.","operationId":"messagingDeleteTopic","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteTopic","weight":354,"cookies":false,"type":"","demo":"messaging\/delete-topic.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-topic.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID.","required":true,"type":"string","x-example":"[TOPIC_ID]","in":"path"}]}},"\/messaging\/topics\/{topicId}\/logs":{"get":{"summary":"List topic logs","operationId":"messagingListTopicLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listTopicLogs","weight":351,"cookies":false,"type":"","demo":"messaging\/list-topic-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/topics\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID.","required":true,"type":"string","x-example":"[TOPIC_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/messaging\/topics\/{topicId}\/subscribers":{"get":{"summary":"List subscribers.","operationId":"messagingListSubscribers","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Subscriber list","schema":{"$ref":"#\/definitions\/subscriberList"}}},"x-appwrite":{"method":"listSubscribers","weight":356,"cookies":false,"type":"","demo":"messaging\/list-subscribers.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-subscribers.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID subscribed to.","required":true,"type":"string","x-example":"[TOPIC_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, provider, type, enabled","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create a subscriber.","operationId":"messagingCreateSubscriber","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Subscriber","schema":{"$ref":"#\/definitions\/subscriber"}}},"x-appwrite":{"method":"createSubscriber","weight":355,"cookies":false,"type":"","demo":"messaging\/create-subscriber.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-subscriber.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.write","platforms":["server","client","console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[],"Session":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID to subscribe to.","required":true,"type":"string","x-example":"[TOPIC_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"subscriberId":{"type":"string","description":"Subscriber ID. Choose a custom Subscriber ID or a new Subscriber ID.","default":null,"x-example":"[SUBSCRIBER_ID]"},"targetId":{"type":"string","description":"Target ID. The target ID to link to the specified Topic ID.","default":null,"x-example":"[TARGET_ID]"}},"required":["subscriberId","targetId"]}}]}},"\/messaging\/topics\/{topicId}\/subscribers\/{subscriberId}":{"get":{"summary":"Get a subscriber.","operationId":"messagingGetSubscriber","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Subscriber","schema":{"$ref":"#\/definitions\/subscriber"}}},"x-appwrite":{"method":"getSubscriber","weight":358,"cookies":false,"type":"","demo":"messaging\/get-subscriber.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/get-subscriber.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID subscribed to.","required":true,"type":"string","x-example":"[TOPIC_ID]","in":"path"},{"name":"subscriberId","description":"Subscriber ID.","required":true,"type":"string","x-example":"[SUBSCRIBER_ID]","in":"path"}]},"delete":{"summary":"Delete a subscriber.","operationId":"messagingDeleteSubscriber","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSubscriber","weight":359,"cookies":false,"type":"","demo":"messaging\/delete-subscriber.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-subscriber.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.write","platforms":["server","client","console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[],"Session":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID subscribed to.","required":true,"type":"string","x-example":"[TOPIC_ID]","in":"path"},{"name":"subscriberId","description":"Subscriber ID.","required":true,"type":"string","x-example":"[SUBSCRIBER_ID]","in":"path"}]}},"\/storage\/buckets":{"get":{"summary":"List buckets","operationId":"storageListBuckets","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a list of all the storage buckets. You can use the query params to filter your results.","responses":{"200":{"description":"Buckets List","schema":{"$ref":"#\/definitions\/bucketList"}}},"x-appwrite":{"method":"listBuckets","weight":188,"cookies":false,"type":"","demo":"storage\/list-buckets.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/list-buckets.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: enabled, name, fileSecurity, maximumFileSize, encryption, antivirus","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create bucket","operationId":"storageCreateBucket","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Create a new storage bucket.","responses":{"201":{"description":"Bucket","schema":{"$ref":"#\/definitions\/bucket"}}},"x-appwrite":{"method":"createBucket","weight":187,"cookies":false,"type":"","demo":"storage\/create-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"bucketId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, no user is granted with any permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":false,"x-example":false},"enabled":{"type":"boolean","description":"Is bucket enabled? When set to 'disabled', users cannot access the files in this bucket but Server SDKs with and API key can still access the bucket. No files are lost when this is toggled.","default":true,"x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB.","default":30000000,"x-example":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","default":[],"x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","default":"none","x-example":"none","enum":["none","gzip","zstd"],"x-enum-name":null,"x-enum-keys":[]},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","default":true,"x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","default":true,"x-example":false}},"required":["bucketId","name"]}}]}},"\/storage\/buckets\/{bucketId}":{"get":{"summary":"Get bucket","operationId":"storageGetBucket","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a storage bucket by its unique ID. This endpoint response returns a JSON object with the storage bucket metadata.","responses":{"200":{"description":"Bucket","schema":{"$ref":"#\/definitions\/bucket"}}},"x-appwrite":{"method":"getBucket","weight":189,"cookies":false,"type":"","demo":"storage\/get-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"bucketId","description":"Bucket unique ID.","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"}]},"put":{"summary":"Update bucket","operationId":"storageUpdateBucket","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Update a storage bucket by its unique ID.","responses":{"200":{"description":"Bucket","schema":{"$ref":"#\/definitions\/bucket"}}},"x-appwrite":{"method":"updateBucket","weight":190,"cookies":false,"type":"","demo":"storage\/update-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"bucketId","description":"Bucket unique ID.","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Bucket name","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":false,"x-example":false},"enabled":{"type":"boolean","description":"Is bucket enabled? When set to 'disabled', users cannot access the files in this bucket but Server SDKs with and API key can still access the bucket. No files are lost when this is toggled.","default":true,"x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB.","default":null,"x-example":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","default":[],"x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","default":"none","x-example":"none","enum":["none","gzip","zstd"],"x-enum-name":null,"x-enum-keys":[]},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","default":true,"x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","default":true,"x-example":false}},"required":["name"]}}]},"delete":{"summary":"Delete bucket","operationId":"storageDeleteBucket","consumes":["application\/json"],"produces":[],"tags":["storage"],"description":"Delete a storage bucket by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteBucket","weight":191,"cookies":false,"type":"","demo":"storage\/delete-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"bucketId","description":"Bucket unique ID.","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files":{"get":{"summary":"List files","operationId":"storageListFiles","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a list of all the user files. You can use the query params to filter your results.","responses":{"200":{"description":"Files List","schema":{"$ref":"#\/definitions\/fileList"}}},"x-appwrite":{"method":"listFiles","weight":193,"cookies":false,"type":"","demo":"storage\/list-files.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/list-files.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create file","operationId":"storageCreateFile","consumes":["multipart\/form-data"],"produces":["application\/json"],"tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"createFile","weight":192,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","required":true,"x-upload-id":true,"type":"string","x-example":"[FILE_ID]","in":"formData"},{"name":"file","description":"Binary file. Appwrite SDKs provide helpers to handle file input. [Learn about file input](https:\/\/appwrite.io\/docs\/storage#file-input).","required":true,"type":"file","in":"formData"},{"name":"permissions","description":"An array of permission strings. By default, only the current user is granted all permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"x-example":"[\"read(\"any\")\"]","in":"formData"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get file","operationId":"storageGetFile","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"getFile","weight":194,"cookies":false,"type":"","demo":"storage\/get-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID.","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"}]},"put":{"summary":"Update file","operationId":"storageUpdateFile","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Update a file by its unique ID. Only users with write permissions have access to update this resource.","responses":{"200":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"updateFile","weight":198,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File unique ID.","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Name of the file","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission string. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","consumes":["application\/json"],"produces":[],"tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":199,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID.","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/download":{"get":{"summary":"Get file for download","operationId":"storageGetFileDownload","consumes":["application\/json"],"produces":["*\/*"],"tags":["storage"],"description":"Get a file content by its unique ID. The endpoint response return with a 'Content-Disposition: attachment' header that tells the browser to start downloading the file to user downloads directory.","responses":{"200":{"description":"File","schema":{"type":"file"}}},"x-appwrite":{"method":"getFileDownload","weight":196,"cookies":false,"type":"location","demo":"storage\/get-file-download.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-download.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID.","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/preview":{"get":{"summary":"Get file preview","operationId":"storageGetFilePreview","consumes":["application\/json"],"produces":["image\/*"],"tags":["storage"],"description":"Get a file preview image. Currently, this method supports preview for image files (jpg, png, and gif), other supported formats, like pdf, docs, slides, and spreadsheets, will return the file icon image. You can also pass query string arguments for cutting and resizing your preview image. Preview is supported only for image files smaller than 10MB.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFilePreview","weight":195,"cookies":false,"type":"location","demo":"storage\/get-file-preview.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-preview.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"},{"name":"width","description":"Resize preview image width, Pass an integer between 0 to 4000.","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 4000.","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"gravity","description":"Image crop gravity. Can be one of center,top-left,top,top-right,left,right,bottom-left,bottom,bottom-right","required":false,"type":"string","x-example":"center","enum":["center","top-left","top","top-right","left","right","bottom-left","bottom","bottom-right"],"x-enum-name":"ImageGravity","x-enum-keys":[],"default":"center","in":"query"},{"name":"quality","description":"Preview image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"borderWidth","description":"Preview image border in pixels. Pass an integer between 0 to 100. Defaults to 0.","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"borderColor","description":"Preview image border color. Use a valid HEX color, no # is needed for prefix.","required":false,"type":"string","default":"","in":"query"},{"name":"borderRadius","description":"Preview image border radius in pixels. Pass an integer between 0 to 4000.","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"opacity","description":"Preview image opacity. Only works with images having an alpha channel (like png). Pass a number between 0 to 1.","required":false,"type":"number","format":"float","x-example":0,"default":1,"in":"query"},{"name":"rotation","description":"Preview image rotation in degrees. Pass an integer between -360 and 360.","required":false,"type":"integer","format":"int32","x-example":-360,"default":0,"in":"query"},{"name":"background","description":"Preview image background color. Only works with transparent images (png). Use a valid HEX color, no # is needed for prefix.","required":false,"type":"string","default":"","in":"query"},{"name":"output","description":"Output format type (jpeg, jpg, png, gif and webp).","required":false,"type":"string","x-example":"jpg","enum":["jpg","jpeg","gif","png","webp"],"x-enum-name":"ImageFormat","x-enum-keys":[],"default":"","in":"query"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/view":{"get":{"summary":"Get file for view","operationId":"storageGetFileView","consumes":["application\/json"],"produces":["*\/*"],"tags":["storage"],"description":"Get a file content by its unique ID. This endpoint is similar to the download method but returns with no 'Content-Disposition: attachment' header.","responses":{"200":{"description":"File","schema":{"type":"file"}}},"x-appwrite":{"method":"getFileView","weight":197,"cookies":false,"type":"location","demo":"storage\/get-file-view.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-view.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID.","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"}]}},"\/teams":{"get":{"summary":"List teams","operationId":"teamsList","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get a list of all the teams in which the current user is a member. You can use the parameters to filter your results.","responses":{"200":{"description":"Teams List","schema":{"$ref":"#\/definitions\/teamList"}}},"x-appwrite":{"method":"list","weight":203,"cookies":false,"type":"","demo":"teams\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-teams.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total, billingPlan","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create team","operationId":"teamsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"create","weight":202,"cookies":false,"type":"","demo":"teams\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/create-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"teamId":{"type":"string","description":"Team ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[TEAM_ID]"},"name":{"type":"string","description":"Team name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"roles":{"type":"array","description":"Array of strings. Use this param to set the roles in the team for the user who created it. The default role is **owner**. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","default":["owner"],"x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}]}},"\/teams\/{teamId}":{"get":{"summary":"Get team","operationId":"teamsGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"get","weight":204,"cookies":false,"type":"","demo":"teams\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams","offline-key":"{teamId}","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"}]},"put":{"summary":"Update name","operationId":"teamsUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Update the team's name by its unique ID.","responses":{"200":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"updateName","weight":206,"cookies":false,"type":"","demo":"teams\/update-name.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-name.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams","offline-key":"{teamId}","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"New team name. Max length: 128 chars.","default":null,"x-example":"[NAME]"}},"required":["name"]}}]},"delete":{"summary":"Delete team","operationId":"teamsDelete","consumes":["application\/json"],"produces":[],"tags":["teams"],"description":"Delete a team using its ID. Only team members with the owner role can delete the team.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":208,"cookies":false,"type":"","demo":"teams\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/delete-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"}]}},"\/teams\/{teamId}\/memberships":{"get":{"summary":"List team memberships","operationId":"teamsListMemberships","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"listMemberships","weight":210,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/memberships","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create team membership","operationId":"teamsCreateMembership","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Invite a new member to join your team. Provide an ID for existing users, or invite unregistered users using an email or phone number. If initiated from a Client SDK, Appwrite will send an email or sms with a link to join the team to the invited user, and an account will be created for them if one doesn't exist. If initiated from a Server SDK, the new member will be added automatically to the team.\n\nYou only need to provide one of a user ID, email, or phone number. Appwrite will prioritize accepting the user ID > email > phone number if you provide more than one of these parameters.\n\nUse the `url` parameter to redirect the user from the invitation email to your app. After the user is redirected, use the [Update Team Membership Status](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/teams#updateMembershipStatus) endpoint to allow the user to accept the invitation to the team. \n\nPlease note that to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) Appwrite will accept the only redirect URLs under the domains you have added as a platform on the Appwrite Console.\n","responses":{"201":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"createMembership","weight":209,"cookies":false,"type":"","demo":"teams\/create-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/create-team-membership.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"email":{"type":"string","description":"Email of the new team member.","default":"","x-example":"email@example.com"},"userId":{"type":"string","description":"ID of the user to be added to a team.","default":"","x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":"","x-example":"+12065550100"},"roles":{"type":"array","description":"Array of strings. Use this param to set the user roles in the team. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":"","x-example":"https:\/\/example.com"},"name":{"type":"string","description":"Name of the new team member. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["roles"]}}]}},"\/teams\/{teamId}\/memberships\/{membershipId}":{"get":{"summary":"Get team membership","operationId":"teamsGetMembership","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get a team member by the membership unique id. All team members have read access for this resource.","responses":{"200":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"getMembership","weight":211,"cookies":false,"type":"","demo":"teams\/get-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-member.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/memberships","offline-key":"{membershipId}","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"type":"string","x-example":"[MEMBERSHIP_ID]","in":"path"}]},"patch":{"summary":"Update membership","operationId":"teamsUpdateMembership","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Modify the roles of a team member. Only team members with the owner role have access to this endpoint. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions).\n","responses":{"200":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"updateMembership","weight":212,"cookies":false,"type":"","demo":"teams\/update-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"type":"string","x-example":"[MEMBERSHIP_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"roles":{"type":"array","description":"An array of strings. Use this param to set the user's roles in the team. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}}},"required":["roles"]}}]},"delete":{"summary":"Delete team membership","operationId":"teamsDeleteMembership","consumes":["application\/json"],"produces":[],"tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":214,"cookies":false,"type":"","demo":"teams\/delete-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/delete-team-membership.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"type":"string","x-example":"[MEMBERSHIP_ID]","in":"path"}]}},"\/teams\/{teamId}\/memberships\/{membershipId}\/status":{"patch":{"summary":"Update team membership status","operationId":"teamsUpdateMembershipStatus","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Use this endpoint to allow a user to accept an invitation to join a team after being redirected back to your app from the invitation email received by the user.\n\nIf the request is successful, a session for the user is automatically created.\n","responses":{"200":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"updateMembershipStatus","weight":213,"cookies":false,"type":"","demo":"teams\/update-membership-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"public","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"type":"string","x-example":"[MEMBERSHIP_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Secret key.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/teams\/{teamId}\/prefs":{"get":{"summary":"Get team preferences","operationId":"teamsGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get the team's shared preferences by its unique ID. If a preference doesn't need to be shared by all team members, prefer storing them in [user preferences](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#getPrefs).","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":205,"cookies":false,"type":"","demo":"teams\/get-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/prefs","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"}]},"put":{"summary":"Update preferences","operationId":"teamsUpdatePrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Update the team's preferences by its unique ID. The object you pass is stored as is and replaces any previous value. The maximum allowed prefs size is 64kB and throws an error if exceeded.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"updatePrefs","weight":207,"cookies":false,"type":"","demo":"teams\/update-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/prefs","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"prefs":{"type":"object","description":"Prefs key-value JSON object.","default":{},"x-example":"{}"}},"required":["prefs"]}}]}},"\/users":{"get":{"summary":"List users","operationId":"usersList","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get a list of all the project's users. You can use the query params to filter your results.","responses":{"200":{"description":"Users List","schema":{"$ref":"#\/definitions\/userList"}}},"x-appwrite":{"method":"list","weight":225,"cookies":false,"type":"","demo":"users\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-users.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, email, phone, status, passwordUpdate, registration, emailVerification, phoneVerification, labels","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create user","operationId":"usersCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"create","weight":216,"cookies":false,"type":"","demo":"users\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"},"password":{"type":"string","description":"Plain text user password. Must be at least 8 chars.","default":"","x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId"]}}]}},"\/users\/argon2":{"post":{"summary":"Create user with Argon2 password","operationId":"usersCreateArgon2User","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Argon2](https:\/\/en.wikipedia.org\/wiki\/Argon2) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createArgon2User","weight":219,"cookies":false,"type":"","demo":"users\/create-argon2user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-argon2-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Argon2.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/bcrypt":{"post":{"summary":"Create user with bcrypt password","operationId":"usersCreateBcryptUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Bcrypt](https:\/\/en.wikipedia.org\/wiki\/Bcrypt) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createBcryptUser","weight":217,"cookies":false,"type":"","demo":"users\/create-bcrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-bcrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Bcrypt.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/identities":{"get":{"summary":"List Identities","operationId":"usersListIdentities","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get identities for all users.","responses":{"200":{"description":"Identities List","schema":{"$ref":"#\/definitions\/identityList"}}},"x-appwrite":{"method":"listIdentities","weight":233,"cookies":false,"type":"","demo":"users\/list-identities.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-identities.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, provider, providerUid, providerEmail, providerAccessTokenExpiry","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]}},"\/users\/identities\/{identityId}":{"delete":{"summary":"Delete identity","operationId":"usersDeleteIdentity","consumes":["application\/json"],"produces":[],"tags":["users"],"description":"Delete an identity by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIdentity","weight":253,"cookies":false,"type":"","demo":"users\/delete-identity.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-identity.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"identityId","description":"Identity ID.","required":true,"type":"string","x-example":"[IDENTITY_ID]","in":"path"}]}},"\/users\/md5":{"post":{"summary":"Create user with MD5 password","operationId":"usersCreateMD5User","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [MD5](https:\/\/en.wikipedia.org\/wiki\/MD5) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createMD5User","weight":218,"cookies":false,"type":"","demo":"users\/create-m-d5user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-md5-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using MD5.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/phpass":{"post":{"summary":"Create user with PHPass password","operationId":"usersCreatePHPassUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [PHPass](https:\/\/www.openwall.com\/phpass\/) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createPHPassUser","weight":221,"cookies":false,"type":"","demo":"users\/create-p-h-pass-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-phpass-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or pass the string `ID.unique()`to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using PHPass.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/scrypt":{"post":{"summary":"Create user with Scrypt password","operationId":"usersCreateScryptUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt](https:\/\/github.com\/Tarsnap\/scrypt) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createScryptUser","weight":222,"cookies":false,"type":"","demo":"users\/create-scrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt.","default":null,"x-example":"password"},"passwordSalt":{"type":"string","description":"Optional salt used to hash password.","default":null,"x-example":"[PASSWORD_SALT]"},"passwordCpu":{"type":"integer","description":"Optional CPU cost used to hash password.","default":null,"x-example":null},"passwordMemory":{"type":"integer","description":"Optional memory cost used to hash password.","default":null,"x-example":null},"passwordParallel":{"type":"integer","description":"Optional parallelization cost used to hash password.","default":null,"x-example":null},"passwordLength":{"type":"integer","description":"Optional hash length used to hash password.","default":null,"x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordCpu","passwordMemory","passwordParallel","passwordLength"]}}]}},"\/users\/scrypt-modified":{"post":{"summary":"Create user with Scrypt modified password","operationId":"usersCreateScryptModifiedUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt Modified](https:\/\/gist.github.com\/Meldiron\/eecf84a0225eccb5a378d45bb27462cc) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createScryptModifiedUser","weight":223,"cookies":false,"type":"","demo":"users\/create-scrypt-modified-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-modified-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt Modified.","default":null,"x-example":"password"},"passwordSalt":{"type":"string","description":"Salt used to hash password.","default":null,"x-example":"[PASSWORD_SALT]"},"passwordSaltSeparator":{"type":"string","description":"Salt separator used to hash password.","default":null,"x-example":"[PASSWORD_SALT_SEPARATOR]"},"passwordSignerKey":{"type":"string","description":"Signer key used to hash password.","default":null,"x-example":"[PASSWORD_SIGNER_KEY]"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordSaltSeparator","passwordSignerKey"]}}]}},"\/users\/sha":{"post":{"summary":"Create user with SHA password","operationId":"usersCreateSHAUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [SHA](https:\/\/en.wikipedia.org\/wiki\/Secure_Hash_Algorithm) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createSHAUser","weight":220,"cookies":false,"type":"","demo":"users\/create-s-h-a-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-sha-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using SHA.","default":null,"x-example":"password"},"passwordVersion":{"type":"string","description":"Optional SHA version used to hash password. Allowed values are: 'sha1', 'sha224', 'sha256', 'sha384', 'sha512\/224', 'sha512\/256', 'sha512', 'sha3-224', 'sha3-256', 'sha3-384', 'sha3-512'","default":"","x-example":"sha1","enum":["sha1","sha224","sha256","sha384","sha512\/224","sha512\/256","sha512","sha3-224","sha3-256","sha3-384","sha3-512"],"x-enum-name":"PasswordHash","x-enum-keys":[]},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/{userId}":{"get":{"summary":"Get user","operationId":"usersGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get a user by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"get","weight":226,"cookies":false,"type":"","demo":"users\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]},"delete":{"summary":"Delete user","operationId":"usersDelete","consumes":["application\/json"],"produces":[],"tags":["users"],"description":"Delete a user by its unique ID, thereby releasing it's ID. Since ID is released and can be reused, all user-related resources like documents or storage files should be deleted before user deletion. If you want to keep ID reserved, use the [updateStatus](https:\/\/appwrite.io\/docs\/server\/users#usersUpdateStatus) endpoint instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":251,"cookies":false,"type":"","demo":"users\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]}},"\/users\/{userId}\/email":{"patch":{"summary":"Update email","operationId":"usersUpdateEmail","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user email by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateEmail","weight":239,"cookies":false,"type":"","demo":"users\/update-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"}},"required":["email"]}}]}},"\/users\/{userId}\/labels":{"put":{"summary":"Update user labels","operationId":"usersUpdateLabels","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user labels by its unique ID. \n\nLabels can be used to grant access to resources. While teams are a way for user's to share access to a resource, labels can be defined by the developer to grant access without an invitation. See the [Permissions docs](https:\/\/appwrite.io\/docs\/permissions) for more info.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateLabels","weight":235,"cookies":false,"type":"","demo":"users\/update-labels.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-labels.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"labels":{"type":"array","description":"Array of user labels. Replaces the previous labels. Maximum of 1000 labels are allowed, each up to 36 alphanumeric characters long.","default":null,"x-example":null,"items":{"type":"string"}}},"required":["labels"]}}]}},"\/users\/{userId}\/logs":{"get":{"summary":"List user logs","operationId":"usersListLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listLogs","weight":231,"cookies":false,"type":"","demo":"users\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/users\/{userId}\/memberships":{"get":{"summary":"List user memberships","operationId":"usersListMemberships","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user membership list by its unique ID.","responses":{"200":{"description":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"listMemberships","weight":230,"cookies":false,"type":"","demo":"users\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-memberships.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]}},"\/users\/{userId}\/mfa":{"patch":{"summary":"Update MFA","operationId":"usersUpdateMfa","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateMfa","weight":244,"cookies":false,"type":"","demo":"users\/update-mfa.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-mfa.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"mfa":{"type":"boolean","description":"Enable or disable MFA.","default":null,"x-example":false}},"required":["mfa"]}}]}},"\/users\/{userId}\/mfa\/factors":{"get":{"summary":"List Factors","operationId":"usersListFactors","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"","responses":{"200":{"description":"MFAFactors","schema":{"$ref":"#\/definitions\/mfaFactors"}}},"x-appwrite":{"method":"listFactors","weight":245,"cookies":false,"type":"","demo":"users\/list-factors.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-factors.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]}},"\/users\/{userId}\/mfa\/{type}":{"delete":{"summary":"Delete Authenticator","operationId":"usersDeleteAuthenticator","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"deleteAuthenticator","weight":246,"cookies":false,"type":"","demo":"users\/delete-authenticator.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-mfa.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"type","description":"Type of authenticator.","required":true,"type":"string","x-example":"totp","enum":["totp"],"x-enum-name":null,"x-enum-keys":[],"in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"otp":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[OTP]"}},"required":["otp"]}}]}},"\/users\/{userId}\/name":{"patch":{"summary":"Update name","operationId":"usersUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user name by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateName","weight":237,"cookies":false,"type":"","demo":"users\/update-name.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-name.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"User name. Max length: 128 chars.","default":null,"x-example":"[NAME]"}},"required":["name"]}}]}},"\/users\/{userId}\/password":{"patch":{"summary":"Update password","operationId":"usersUpdatePassword","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user password by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePassword","weight":238,"cookies":false,"type":"","demo":"users\/update-password.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-password.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"password":{"type":"string","description":"New user password. Must be at least 8 chars.","default":null,"x-example":null}},"required":["password"]}}]}},"\/users\/{userId}\/phone":{"patch":{"summary":"Update phone","operationId":"usersUpdatePhone","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user phone by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePhone","weight":240,"cookies":false,"type":"","demo":"users\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"number":{"type":"string","description":"User phone number.","default":null,"x-example":"+12065550100"}},"required":["number"]}}]}},"\/users\/{userId}\/prefs":{"get":{"summary":"Get user preferences","operationId":"usersGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user preferences by its unique ID.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":227,"cookies":false,"type":"","demo":"users\/get-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]},"patch":{"summary":"Update user preferences","operationId":"usersUpdatePrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user preferences by its unique ID. The object you pass is stored as is, and replaces any previous value. The maximum allowed prefs size is 64kB and throws error if exceeded.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"updatePrefs","weight":242,"cookies":false,"type":"","demo":"users\/update-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"prefs":{"type":"object","description":"Prefs key-value JSON object.","default":{},"x-example":"{}"}},"required":["prefs"]}}]}},"\/users\/{userId}\/sessions":{"get":{"summary":"List user sessions","operationId":"usersListSessions","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user sessions list by its unique ID.","responses":{"200":{"description":"Sessions List","schema":{"$ref":"#\/definitions\/sessionList"}}},"x-appwrite":{"method":"listSessions","weight":229,"cookies":false,"type":"","demo":"users\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]},"post":{"summary":"Create session","operationId":"usersCreateSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Creates a session for a user. Returns an immediately usable session object.\n\nIf you want to generate a token for a custom authentication flow, use the [POST \/users\/{userId}\/tokens](https:\/\/appwrite.io\/docs\/server\/users#createToken) endpoint.","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"createSession","weight":247,"cookies":false,"type":"","demo":"users\/create-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-session.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]},"delete":{"summary":"Delete user sessions","operationId":"usersDeleteSessions","consumes":["application\/json"],"produces":[],"tags":["users"],"description":"Delete all user's sessions by using the user's unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":250,"cookies":false,"type":"","demo":"users\/delete-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]}},"\/users\/{userId}\/sessions\/{sessionId}":{"delete":{"summary":"Delete user session","operationId":"usersDeleteSession","consumes":["application\/json"],"produces":[],"tags":["users"],"description":"Delete a user sessions by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSession","weight":249,"cookies":false,"type":"","demo":"users\/delete-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-user-session.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"sessionId","description":"Session ID.","required":true,"type":"string","x-example":"[SESSION_ID]","in":"path"}]}},"\/users\/{userId}\/status":{"patch":{"summary":"Update user status","operationId":"usersUpdateStatus","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user status by its unique ID. Use this endpoint as an alternative to deleting a user if you want to keep user's ID reserved.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateStatus","weight":234,"cookies":false,"type":"","demo":"users\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"status":{"type":"boolean","description":"User Status. To activate the user pass `true` and to block the user pass `false`.","default":null,"x-example":false}},"required":["status"]}}]}},"\/users\/{userId}\/targets":{"get":{"summary":"List User Targets","operationId":"usersListTargets","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"","responses":{"200":{"description":"Target list","schema":{"$ref":"#\/definitions\/targetList"}}},"x-appwrite":{"method":"listTargets","weight":232,"cookies":false,"type":"","demo":"users\/list-targets.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-targets.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.read","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, email, phone, status, passwordUpdate, registration, emailVerification, phoneVerification, labels","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"post":{"summary":"Create User Target","operationId":"usersCreateTarget","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"","responses":{"201":{"description":"Target","schema":{"$ref":"#\/definitions\/target"}}},"x-appwrite":{"method":"createTarget","weight":224,"cookies":false,"type":"","demo":"users\/create-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-target.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"targetId":{"type":"string","description":"Target ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[TARGET_ID]"},"providerType":{"type":"string","description":"The target provider type. Can be one of the following: `email`, `sms` or `push`.","default":null,"x-example":"email","enum":["email","sms","push"],"x-enum-name":"MessagingProviderType","x-enum-keys":[]},"identifier":{"type":"string","description":"The target identifier (token, email, phone etc.)","default":null,"x-example":"[IDENTIFIER]"},"providerId":{"type":"string","description":"Provider ID. Message will be sent to this target from the specified provider ID. If no provider ID is set the first setup provider will be used.","default":"","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Target name. Max length: 128 chars. For example: My Awesome App Galaxy S23.","default":"","x-example":"[NAME]"}},"required":["targetId","providerType","identifier"]}}]}},"\/users\/{userId}\/targets\/{targetId}":{"get":{"summary":"Get User Target","operationId":"usersGetTarget","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"","responses":{"200":{"description":"Target","schema":{"$ref":"#\/definitions\/target"}}},"x-appwrite":{"method":"getTarget","weight":228,"cookies":false,"type":"","demo":"users\/get-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-target.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.read","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"targetId","description":"Target ID.","required":true,"type":"string","x-example":"[TARGET_ID]","in":"path"}]},"patch":{"summary":"Update User target","operationId":"usersUpdateTarget","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"","responses":{"200":{"description":"Target","schema":{"$ref":"#\/definitions\/target"}}},"x-appwrite":{"method":"updateTarget","weight":243,"cookies":false,"type":"","demo":"users\/update-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-target.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"targetId","description":"Target ID.","required":true,"type":"string","x-example":"[TARGET_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"identifier":{"type":"string","description":"The target identifier (token, email, phone etc.)","default":"","x-example":"[IDENTIFIER]"},"providerId":{"type":"string","description":"Provider ID. Message will be sent to this target from the specified provider ID. If no provider ID is set the first setup provider will be used.","default":"","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Target name. Max length: 128 chars. For example: My Awesome App Galaxy S23.","default":"","x-example":"[NAME]"}}}}]},"delete":{"summary":"Delete user target","operationId":"usersDeleteTarget","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteTarget","weight":252,"cookies":false,"type":"","demo":"users\/delete-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-target.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"targetId","description":"Target ID.","required":true,"type":"string","x-example":"[TARGET_ID]","in":"path"}]}},"\/users\/{userId}\/tokens":{"post":{"summary":"Create token","operationId":"usersCreateToken","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Returns a token with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [PUT \/account\/sessions\/custom](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateCustomSession) endpoint to complete the login process.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createToken","weight":248,"cookies":false,"type":"","demo":"users\/create-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-token.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"length":{"type":"integer","description":"Token length in characters. The default length is 6 characters","default":6,"x-example":4},"expire":{"type":"integer","description":"Token expiration period in seconds. The default expiration is 15 minutes.","default":900,"x-example":60}}}}]}},"\/users\/{userId}\/verification":{"patch":{"summary":"Update email verification","operationId":"usersUpdateEmailVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user email verification status by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateEmailVerification","weight":241,"cookies":false,"type":"","demo":"users\/update-email-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-email-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"emailVerification":{"type":"boolean","description":"User email verification status.","default":null,"x-example":false}},"required":["emailVerification"]}}]}},"\/users\/{userId}\/verification\/phone":{"patch":{"summary":"Update phone verification","operationId":"usersUpdatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user phone verification status by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePhoneVerification","weight":236,"cookies":false,"type":"","demo":"users\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"phoneVerification":{"type":"boolean","description":"User phone verification status.","default":null,"x-example":false}},"required":["phoneVerification"]}}]}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"project","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]},{"name":"proxy","description":"The Proxy Service allows you to configure actions for your domains beyond DNS configuration.","x-globalAttributes":[]},{"name":"graphql","description":"The GraphQL API allows you to query and mutate your Appwrite server using GraphQL.","x-globalAttributes":[]},{"name":"console","description":"The Console service allows you to interact with console relevant informations.","x-globalAttributes":[]},{"name":"migrations","description":"The Migrations service allows you to migrate third-party data to your Appwrite project.","x-globalAttributes":[]},{"name":"messaging","description":"The Messaging service allows you to send messages to any provider type (SMTP, push notification, SMS, etc.).","x-globalAttributes":[]}],"definitions":{"any":{"description":"Any","type":"object","additionalProperties":true},"documentList":{"description":"Documents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of documents documents that matched your query.","x-example":5,"format":"int32"},"documents":{"type":"array","description":"List of documents.","items":{"type":"object","$ref":"#\/definitions\/document"},"x-example":""}},"required":["total","documents"]},"collectionList":{"description":"Collections List","type":"object","properties":{"total":{"type":"integer","description":"Total number of collections documents that matched your query.","x-example":5,"format":"int32"},"collections":{"type":"array","description":"List of collections.","items":{"type":"object","$ref":"#\/definitions\/collection"},"x-example":""}},"required":["total","collections"]},"databaseList":{"description":"Databases List","type":"object","properties":{"total":{"type":"integer","description":"Total number of databases documents that matched your query.","x-example":5,"format":"int32"},"databases":{"type":"array","description":"List of databases.","items":{"type":"object","$ref":"#\/definitions\/database"},"x-example":""}},"required":["total","databases"]},"indexList":{"description":"Indexes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of indexes documents that matched your query.","x-example":5,"format":"int32"},"indexes":{"type":"array","description":"List of indexes.","items":{"type":"object","$ref":"#\/definitions\/index"},"x-example":""}},"required":["total","indexes"]},"userList":{"description":"Users List","type":"object","properties":{"total":{"type":"integer","description":"Total number of users documents that matched your query.","x-example":5,"format":"int32"},"users":{"type":"array","description":"List of users.","items":{"type":"object","$ref":"#\/definitions\/user"},"x-example":""}},"required":["total","users"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of sessions documents that matched your query.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"type":"object","$ref":"#\/definitions\/session"},"x-example":""}},"required":["total","sessions"]},"identityList":{"description":"Identities List","type":"object","properties":{"total":{"type":"integer","description":"Total number of identities documents that matched your query.","x-example":5,"format":"int32"},"identities":{"type":"array","description":"List of identities.","items":{"type":"object","$ref":"#\/definitions\/identity"},"x-example":""}},"required":["total","identities"]},"logList":{"description":"Logs List","type":"object","properties":{"total":{"type":"integer","description":"Total number of logs documents that matched your query.","x-example":5,"format":"int32"},"logs":{"type":"array","description":"List of logs.","items":{"type":"object","$ref":"#\/definitions\/log"},"x-example":""}},"required":["total","logs"]},"fileList":{"description":"Files List","type":"object","properties":{"total":{"type":"integer","description":"Total number of files documents that matched your query.","x-example":5,"format":"int32"},"files":{"type":"array","description":"List of files.","items":{"type":"object","$ref":"#\/definitions\/file"},"x-example":""}},"required":["total","files"]},"bucketList":{"description":"Buckets List","type":"object","properties":{"total":{"type":"integer","description":"Total number of buckets documents that matched your query.","x-example":5,"format":"int32"},"buckets":{"type":"array","description":"List of buckets.","items":{"type":"object","$ref":"#\/definitions\/bucket"},"x-example":""}},"required":["total","buckets"]},"teamList":{"description":"Teams List","type":"object","properties":{"total":{"type":"integer","description":"Total number of teams documents that matched your query.","x-example":5,"format":"int32"},"teams":{"type":"array","description":"List of teams.","items":{"type":"object","$ref":"#\/definitions\/team"},"x-example":""}},"required":["total","teams"]},"membershipList":{"description":"Memberships List","type":"object","properties":{"total":{"type":"integer","description":"Total number of memberships documents that matched your query.","x-example":5,"format":"int32"},"memberships":{"type":"array","description":"List of memberships.","items":{"type":"object","$ref":"#\/definitions\/membership"},"x-example":""}},"required":["total","memberships"]},"functionList":{"description":"Functions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of functions documents that matched your query.","x-example":5,"format":"int32"},"functions":{"type":"array","description":"List of functions.","items":{"type":"object","$ref":"#\/definitions\/function"},"x-example":""}},"required":["total","functions"]},"runtimeList":{"description":"Runtimes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of runtimes documents that matched your query.","x-example":5,"format":"int32"},"runtimes":{"type":"array","description":"List of runtimes.","items":{"type":"object","$ref":"#\/definitions\/runtime"},"x-example":""}},"required":["total","runtimes"]},"deploymentList":{"description":"Deployments List","type":"object","properties":{"total":{"type":"integer","description":"Total number of deployments documents that matched your query.","x-example":5,"format":"int32"},"deployments":{"type":"array","description":"List of deployments.","items":{"type":"object","$ref":"#\/definitions\/deployment"},"x-example":""}},"required":["total","deployments"]},"executionList":{"description":"Executions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of executions documents that matched your query.","x-example":5,"format":"int32"},"executions":{"type":"array","description":"List of executions.","items":{"type":"object","$ref":"#\/definitions\/execution"},"x-example":""}},"required":["total","executions"]},"countryList":{"description":"Countries List","type":"object","properties":{"total":{"type":"integer","description":"Total number of countries documents that matched your query.","x-example":5,"format":"int32"},"countries":{"type":"array","description":"List of countries.","items":{"type":"object","$ref":"#\/definitions\/country"},"x-example":""}},"required":["total","countries"]},"continentList":{"description":"Continents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of continents documents that matched your query.","x-example":5,"format":"int32"},"continents":{"type":"array","description":"List of continents.","items":{"type":"object","$ref":"#\/definitions\/continent"},"x-example":""}},"required":["total","continents"]},"languageList":{"description":"Languages List","type":"object","properties":{"total":{"type":"integer","description":"Total number of languages documents that matched your query.","x-example":5,"format":"int32"},"languages":{"type":"array","description":"List of languages.","items":{"type":"object","$ref":"#\/definitions\/language"},"x-example":""}},"required":["total","languages"]},"currencyList":{"description":"Currencies List","type":"object","properties":{"total":{"type":"integer","description":"Total number of currencies documents that matched your query.","x-example":5,"format":"int32"},"currencies":{"type":"array","description":"List of currencies.","items":{"type":"object","$ref":"#\/definitions\/currency"},"x-example":""}},"required":["total","currencies"]},"phoneList":{"description":"Phones List","type":"object","properties":{"total":{"type":"integer","description":"Total number of phones documents that matched your query.","x-example":5,"format":"int32"},"phones":{"type":"array","description":"List of phones.","items":{"type":"object","$ref":"#\/definitions\/phone"},"x-example":""}},"required":["total","phones"]},"variableList":{"description":"Variables List","type":"object","properties":{"total":{"type":"integer","description":"Total number of variables documents that matched your query.","x-example":5,"format":"int32"},"variables":{"type":"array","description":"List of variables.","items":{"type":"object","$ref":"#\/definitions\/variable"},"x-example":""}},"required":["total","variables"]},"localeCodeList":{"description":"Locale codes list","type":"object","properties":{"total":{"type":"integer","description":"Total number of localeCodes documents that matched your query.","x-example":5,"format":"int32"},"localeCodes":{"type":"array","description":"List of localeCodes.","items":{"type":"object","$ref":"#\/definitions\/localeCode"},"x-example":""}},"required":["total","localeCodes"]},"providerList":{"description":"Provider list","type":"object","properties":{"total":{"type":"integer","description":"Total number of providers documents that matched your query.","x-example":5,"format":"int32"},"providers":{"type":"array","description":"List of providers.","items":{"type":"object","$ref":"#\/definitions\/provider"},"x-example":""}},"required":["total","providers"]},"messageList":{"description":"Message list","type":"object","properties":{"total":{"type":"integer","description":"Total number of messages documents that matched your query.","x-example":5,"format":"int32"},"messages":{"type":"array","description":"List of messages.","items":{"type":"object","$ref":"#\/definitions\/message"},"x-example":""}},"required":["total","messages"]},"topicList":{"description":"Topic list","type":"object","properties":{"total":{"type":"integer","description":"Total number of topics documents that matched your query.","x-example":5,"format":"int32"},"topics":{"type":"array","description":"List of topics.","items":{"type":"object","$ref":"#\/definitions\/topic"},"x-example":""}},"required":["total","topics"]},"subscriberList":{"description":"Subscriber list","type":"object","properties":{"total":{"type":"integer","description":"Total number of subscribers documents that matched your query.","x-example":5,"format":"int32"},"subscribers":{"type":"array","description":"List of subscribers.","items":{"type":"object","$ref":"#\/definitions\/subscriber"},"x-example":""}},"required":["total","subscribers"]},"targetList":{"description":"Target list","type":"object","properties":{"total":{"type":"integer","description":"Total number of targets documents that matched your query.","x-example":5,"format":"int32"},"targets":{"type":"array","description":"List of targets.","items":{"type":"object","$ref":"#\/definitions\/target"},"x-example":""}},"required":["total","targets"]},"database":{"description":"Database","type":"object","properties":{"$id":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Database name.","x-example":"My Database"},"$createdAt":{"type":"string","description":"Database creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Database update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"enabled":{"type":"boolean","description":"If database is enabled. Can be 'enabled' or 'disabled'. When disabled, the database is inaccessible to users, but remains accessible to Server SDKs using API keys.","x-example":false}},"required":["$id","name","$createdAt","$updatedAt","enabled"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Collection creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Collection update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Collection permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled. Can be 'enabled' or 'disabled'. When disabled, the collection is inaccessible to users, but remains accessible to Server SDKs using API keys.","x-example":false},"documentSecurity":{"type":"boolean","description":"Whether document-level permissions are enabled. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":true},"attributes":{"type":"array","description":"Collection attributes.","items":{"x-anyOf":[{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeRelationship"},{"$ref":"#\/definitions\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"type":"object","$ref":"#\/definitions\/index"},"x-example":{}}},"required":["$id","$createdAt","$updatedAt","$permissions","databaseId","name","enabled","documentSecurity","attributes","indexes"]},"attributeList":{"description":"Attributes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of attributes in the given collection.","x-example":5,"format":"int32"},"attributes":{"type":"array","description":"List of attributes.","items":{"x-anyOf":[{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeRelationship"},{"$ref":"#\/definitions\/attributeString"}]},"x-example":""}},"required":["total","attributes"]},"attributeString":{"description":"AttributeString","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"fullName"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"size":{"type":"integer","description":"Attribute size.","x-example":128,"format":"int32"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"default","x-nullable":true}},"required":["key","type","status","error","required","size"]},"attributeInteger":{"description":"AttributeInteger","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"count"},"type":{"type":"string","description":"Attribute type.","x-example":"integer"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"min":{"type":"integer","description":"Minimum value to enforce for new documents.","x-example":1,"format":"int32","x-nullable":true},"max":{"type":"integer","description":"Maximum value to enforce for new documents.","x-example":10,"format":"int32","x-nullable":true},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":10,"format":"int32","x-nullable":true}},"required":["key","type","status","error","required"]},"attributeFloat":{"description":"AttributeFloat","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"percentageCompleted"},"type":{"type":"string","description":"Attribute type.","x-example":"double"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"min":{"type":"number","description":"Minimum value to enforce for new documents.","x-example":1.5,"format":"double","x-nullable":true},"max":{"type":"number","description":"Maximum value to enforce for new documents.","x-example":10.5,"format":"double","x-nullable":true},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":2.5,"format":"double","x-nullable":true}},"required":["key","type","status","error","required"]},"attributeBoolean":{"description":"AttributeBoolean","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"isEnabled"},"type":{"type":"string","description":"Attribute type.","x-example":"boolean"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":false,"x-nullable":true}},"required":["key","type","status","error","required"]},"attributeEmail":{"description":"AttributeEmail","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"userEmail"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"format":{"type":"string","description":"String format.","x-example":"email"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"default@example.com","x-nullable":true}},"required":["key","type","status","error","required","format"]},"attributeEnum":{"description":"AttributeEnum","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"status"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"elements":{"type":"array","description":"Array of elements in enumerated type.","items":{"type":"string"},"x-example":"element"},"format":{"type":"string","description":"String format.","x-example":"enum"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"element","x-nullable":true}},"required":["key","type","status","error","required","elements","format"]},"attributeIp":{"description":"AttributeIP","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"ipAddress"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"format":{"type":"string","description":"String format.","x-example":"ip"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"192.0.2.0","x-nullable":true}},"required":["key","type","status","error","required","format"]},"attributeUrl":{"description":"AttributeURL","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"githubUrl"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"format":{"type":"string","description":"String format.","x-example":"url"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"http:\/\/example.com","x-nullable":true}},"required":["key","type","status","error","required","format"]},"attributeDatetime":{"description":"AttributeDatetime","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"birthDay"},"type":{"type":"string","description":"Attribute type.","x-example":"datetime"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"format":{"type":"string","description":"ISO 8601 format.","x-example":"datetime"},"default":{"type":"string","description":"Default value for attribute when not provided. Only null is optional","x-example":"2020-10-15T06:38:00.000+00:00","x-nullable":true}},"required":["key","type","status","error","required","format"]},"attributeRelationship":{"description":"AttributeRelationship","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"fullName"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"relatedCollection":{"type":"string","description":"The ID of the related collection.","x-example":"collection"},"relationType":{"type":"string","description":"The type of the relationship.","x-example":"oneToOne|oneToMany|manyToOne|manyToMany"},"twoWay":{"type":"boolean","description":"Is the relationship two-way?","x-example":false},"twoWayKey":{"type":"string","description":"The key of the two-way relationship.","x-example":"string"},"onDelete":{"type":"string","description":"How deleting the parent document will propagate to child documents.","x-example":"restrict|cascade|setNull"},"side":{"type":"string","description":"Whether this is the parent or child side of the relationship","x-example":"parent|child"}},"required":["key","type","status","error","required","relatedCollection","relationType","twoWay","twoWayKey","onDelete","side"]},"index":{"description":"Index","type":"object","properties":{"key":{"type":"string","description":"Index Key.","x-example":"index1"},"type":{"type":"string","description":"Index type.","x-example":"primary"},"status":{"type":"string","description":"Index status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an index.","x-example":"string"},"attributes":{"type":"array","description":"Index attributes.","items":{"type":"string"},"x-example":[]},"orders":{"type":"array","description":"Index orders.","items":{"type":"string"},"x-example":[],"x-nullable":true}},"required":["key","type","status","error","attributes"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"user":{"description":"User","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"password":{"type":"string","description":"Hashed user password.","x-example":"$argon2id$v=19$m=2048,t=4,p=3$aUZjLnliVWRINmFNTWMudg$5S+x+7uA31xFnrHFT47yFwcJeaP0w92L\/4LdgrVRXxE","x-nullable":true},"hash":{"type":"string","description":"Password hashing algorithm.","x-example":"argon2","x-nullable":true},"hashOptions":{"type":"object","description":"Password hashing algorithm configuration.","x-example":{},"items":{"x-oneOf":[{"$ref":"#\/definitions\/algoArgon2"},{"$ref":"#\/definitions\/algoScrypt"},{"$ref":"#\/definitions\/algoScryptModified"},{"$ref":"#\/definitions\/algoBcrypt"},{"$ref":"#\/definitions\/algoPhpass"},{"$ref":"#\/definitions\/algoSha"},{"$ref":"#\/definitions\/algoMd5"}]},"x-nullable":true},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"labels":{"type":"array","description":"Labels for the user.","items":{"type":"string"},"x-example":["vip"]},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"mfa":{"type":"boolean","description":"Multi factor authentication status.","x-example":true},"totp":{"type":"boolean","description":"TOTP status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"type":"object","$ref":"#\/definitions\/preferences"}},"targets":{"type":"array","description":"A user-owned message receiver. A single user may have multiple e.g. emails, phones, and a browser. Each target is registered with a single provider.","items":{"type":"object","$ref":"#\/definitions\/target"},"x-example":[]},"accessedAt":{"type":"string","description":"Most recent access date in ISO 8601 format. This attribute is only updated again after 24 hours.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","$updatedAt","name","registration","status","labels","passwordUpdate","email","phone","emailVerification","phoneVerification","mfa","totp","prefs","targets","accessedAt"]},"algoMd5":{"description":"AlgoMD5","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"md5"}},"required":["type"]},"algoSha":{"description":"AlgoSHA","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"sha"}},"required":["type"]},"algoPhpass":{"description":"AlgoPHPass","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"phpass"}},"required":["type"]},"algoBcrypt":{"description":"AlgoBcrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"bcrypt"}},"required":["type"]},"algoScrypt":{"description":"AlgoScrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scrypt"},"costCpu":{"type":"integer","description":"CPU complexity of computed hash.","x-example":8,"format":"int32"},"costMemory":{"type":"integer","description":"Memory complexity of computed hash.","x-example":14,"format":"int32"},"costParallel":{"type":"integer","description":"Parallelization of computed hash.","x-example":1,"format":"int32"},"length":{"type":"integer","description":"Length used to compute hash.","x-example":64,"format":"int32"}},"required":["type","costCpu","costMemory","costParallel","length"]},"algoScryptModified":{"description":"AlgoScryptModified","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scryptMod"},"salt":{"type":"string","description":"Salt used to compute hash.","x-example":"UxLMreBr6tYyjQ=="},"saltSeparator":{"type":"string","description":"Separator used to compute hash.","x-example":"Bw=="},"signerKey":{"type":"string","description":"Key used to compute hash.","x-example":"XyEKE9RcTDeLEsL\/RjwPDBv\/RqDl8fb3gpYEOQaPihbxf1ZAtSOHCjuAAa7Q3oHpCYhXSN9tizHgVOwn6krflQ=="}},"required":["type","salt","saltSeparator","signerKey"]},"algoArgon2":{"description":"AlgoArgon2","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"argon2"},"memoryCost":{"type":"integer","description":"Memory used to compute hash.","x-example":65536,"format":"int32"},"timeCost":{"type":"integer","description":"Amount of time consumed to compute hash","x-example":4,"format":"int32"},"threads":{"type":"integer","description":"Number of threads used to compute hash.","x-example":3,"format":"int32"}},"required":["type","memoryCost","timeCost","threads"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true},"factors":{"type":"array","description":"Returns a list of active session factors.","items":{"type":"string"},"x-example":["email"]},"secret":{"type":"string","description":"Secret used to authenticate the user. Only included if the request was made with an API key","x-example":"5e5bb8c16897e"}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current","factors","secret"]},"identity":{"description":"Identity","type":"object","properties":{"$id":{"type":"string","description":"Identity ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Identity creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Identity update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"provider":{"type":"string","description":"Identity Provider.","x-example":"email"},"providerUid":{"type":"string","description":"ID of the User in the Identity Provider.","x-example":"5e5bb8c16897e"},"providerEmail":{"type":"string","description":"Email of the User in the Identity Provider.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Identity Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Identity Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"}},"required":["$id","$createdAt","$updatedAt","userId","provider","providerUid","providerEmail","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"phrase":{"type":"string","description":"Security phrase of a token. Empty if security phrase was not requested when creating a token. It includes randomly generated phrase which is also sent in the external resource such as email.","x-example":"Golden Fox"}},"required":["$id","$createdAt","userId","secret","expire","phrase"]},"jwt":{"description":"JWT","type":"object","properties":{"jwt":{"type":"string","description":"JWT encoded string.","x-example":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c"}},"required":["jwt"]},"locale":{"description":"Locale","type":"object","properties":{"ip":{"type":"string","description":"User IP address.","x-example":"127.0.0.1"},"countryCode":{"type":"string","description":"Country code in [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) two-character format","x-example":"US"},"country":{"type":"string","description":"Country name. This field support localization.","x-example":"United States"},"continentCode":{"type":"string","description":"Continent code. A two character continent code \"AF\" for Africa, \"AN\" for Antarctica, \"AS\" for Asia, \"EU\" for Europe, \"NA\" for North America, \"OC\" for Oceania, and \"SA\" for South America.","x-example":"NA"},"continent":{"type":"string","description":"Continent name. This field support localization.","x-example":"North America"},"eu":{"type":"boolean","description":"True if country is part of the European Union.","x-example":false},"currency":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format","x-example":"USD"}},"required":["ip","countryCode","country","continentCode","continent","eu","currency"]},"localeCode":{"description":"LocaleCode","type":"object","properties":{"code":{"type":"string","description":"Locale codes in [ISO 639-1](https:\/\/en.wikipedia.org\/wiki\/List_of_ISO_639-1_codes)","x-example":"en-us"},"name":{"type":"string","description":"Locale name","x-example":"US"}},"required":["code","name"]},"file":{"description":"File","type":"object","properties":{"$id":{"type":"string","description":"File ID.","x-example":"5e5ea5c16897e"},"bucketId":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Bucket creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Bucket update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Bucket permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"fileSecurity":{"type":"boolean","description":"Whether file-level security is enabled. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":true},"name":{"type":"string","description":"Bucket name.","x-example":"Documents"},"enabled":{"type":"boolean","description":"Bucket enabled.","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size supported.","x-example":100,"format":"int32"},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions.","items":{"type":"string"},"x-example":["jpg","png"]},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Will be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd).","x-example":"gzip"},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$createdAt","$updatedAt","$permissions","fileSecurity","name","enabled","maximumFileSize","allowedFileExtensions","compression","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"},"prefs":{"type":"object","description":"Team preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"type":"object","$ref":"#\/definitions\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","total","prefs"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"mfa":{"type":"boolean","description":"Multi factor authentication status, true if the user has MFA enabled or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":["owner"]}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","mfa","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Function creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Function update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"users"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"enabled":{"type":"boolean","description":"Function enabled.","x-example":false},"live":{"type":"boolean","description":"Is the function deployed with the latest configuration? This is set to false if you've changed an environment variables, entrypoint, commands, or other settings that needs redeploy to be applied. When the value is false, redeploy the function to update it with the latest configuration.","x-example":false},"logging":{"type":"boolean","description":"Whether executions will be logged. When set to false, executions will not be logged, but will reduce resource used by your Appwrite project.","x-example":false},"runtime":{"type":"string","description":"Function execution runtime.","x-example":"python-3.8"},"deployment":{"type":"string","description":"Function's active deployment ID.","x-example":"5e5ea5c16897e"},"vars":{"type":"array","description":"Function variables.","items":{"type":"object","$ref":"#\/definitions\/variable"},"x-example":[]},"events":{"type":"array","description":"Function trigger events.","items":{"type":"string"},"x-example":"account.create"},"schedule":{"type":"string","description":"Function execution schedult in CRON format.","x-example":"5 4 * * *"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":300,"format":"int32"},"entrypoint":{"type":"string","description":"The entrypoint file used to execute the deployment.","x-example":"index.js"},"commands":{"type":"string","description":"The build command used to build the deployment.","x-example":"npm install"},"version":{"type":"string","description":"Version of Open Runtimes used for the function.","x-example":"v2"},"installationId":{"type":"string","description":"Function VCS (Version Control System) installation id.","x-example":"6m40at4ejk5h2u9s1hboo"},"providerRepositoryId":{"type":"string","description":"VCS (Version Control System) Repository ID","x-example":"appwrite"},"providerBranch":{"type":"string","description":"VCS (Version Control System) branch name","x-example":"main"},"providerRootDirectory":{"type":"string","description":"Path to function in VCS (Version Control System) repository","x-example":"functions\/helloWorld"},"providerSilentMode":{"type":"boolean","description":"Is VCS (Version Control System) connection is in silent mode? When in silence mode, no comments will be posted on the repository pull or merge requests","x-example":false}},"required":["$id","$createdAt","$updatedAt","execute","name","enabled","live","logging","runtime","deployment","vars","events","schedule","timeout","entrypoint","commands","version","installationId","providerRepositoryId","providerBranch","providerRootDirectory","providerSilentMode"]},"runtime":{"description":"Runtime","type":"object","properties":{"$id":{"type":"string","description":"Runtime ID.","x-example":"python-3.8"},"name":{"type":"string","description":"Runtime Name.","x-example":"Python"},"version":{"type":"string","description":"Runtime version.","x-example":"3.8"},"base":{"type":"string","description":"Base Docker image used to build the runtime.","x-example":"python:3.8-alpine"},"image":{"type":"string","description":"Image name of Docker Hub.","x-example":"appwrite\\\/runtime-for-python:3.8"},"logo":{"type":"string","description":"Name of the logo image.","x-example":"python.png"},"supports":{"type":"array","description":"List of supported architectures.","items":{"type":"string"},"x-example":"amd64"}},"required":["$id","name","version","base","image","logo","supports"]},"deployment":{"description":"Deployment","type":"object","properties":{"$id":{"type":"string","description":"Deployment ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Deployment creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Deployment update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"type":{"type":"string","description":"Type of deployment.","x-example":"vcs"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"index.js"},"size":{"type":"integer","description":"The code size in bytes.","x-example":128,"format":"int32"},"buildId":{"type":"string","description":"The current build ID.","x-example":"5e5ea5c16897e"},"activate":{"type":"boolean","description":"Whether the deployment should be automatically activated.","x-example":true},"status":{"type":"string","description":"The deployment status. Possible values are \"processing\", \"building\", \"waiting\", \"ready\", and \"failed\".","x-example":"ready"},"buildLogs":{"type":"string","description":"The build logs.","x-example":"Compiling source files..."},"buildTime":{"type":"integer","description":"The current build time in seconds.","x-example":128,"format":"int32"},"providerRepositoryName":{"type":"string","description":"The name of the vcs provider repository","x-example":"database"},"providerRepositoryOwner":{"type":"string","description":"The name of the vcs provider repository owner","x-example":"utopia"},"providerRepositoryUrl":{"type":"string","description":"The url of the vcs provider repository","x-example":"https:\/\/github.com\/vermakhushboo\/g4-node-function"},"providerBranch":{"type":"string","description":"The branch of the vcs repository","x-example":"0.7.x"},"providerCommitHash":{"type":"string","description":"The commit hash of the vcs commit","x-example":"7c3f25d"},"providerCommitAuthorUrl":{"type":"string","description":"The url of vcs commit author","x-example":"https:\/\/github.com\/vermakhushboo"},"providerCommitAuthor":{"type":"string","description":"The name of vcs commit author","x-example":"Khushboo Verma"},"providerCommitMessage":{"type":"string","description":"The commit message","x-example":"Update index.js"},"providerCommitUrl":{"type":"string","description":"The url of the vcs commit","x-example":"https:\/\/github.com\/vermakhushboo\/g4-node-function\/commit\/60c0416257a9cbcdd96b2d370c38d8f8d150ccfb"},"providerBranchUrl":{"type":"string","description":"The branch of the vcs repository","x-example":"https:\/\/github.com\/vermakhushboo\/appwrite\/tree\/0.7.x"}},"required":["$id","$createdAt","$updatedAt","type","resourceId","resourceType","entrypoint","size","buildId","activate","status","buildLogs","buildTime","providerRepositoryName","providerRepositoryOwner","providerRepositoryUrl","providerBranch","providerCommitHash","providerCommitAuthorUrl","providerCommitAuthor","providerCommitMessage","providerCommitUrl","providerBranchUrl"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"requestMethod":{"type":"string","description":"HTTP request method type.","x-example":"GET"},"requestPath":{"type":"string","description":"HTTP request path and query.","x-example":"\/articles?id=5"},"requestHeaders":{"type":"array","description":"HTTP response headers as a key-value object. This will return only whitelisted headers. All headers are returned if execution is created as synchronous.","items":{"type":"object","$ref":"#\/definitions\/headers"},"x-example":[{"Content-Type":"application\/json"}]},"responseStatusCode":{"type":"integer","description":"HTTP response status code.","x-example":200,"format":"int32"},"responseBody":{"type":"string","description":"HTTP response body. This will return empty unless execution is created as synchronous.","x-example":"Developers are awesome."},"responseHeaders":{"type":"array","description":"HTTP response headers as a key-value object. This will return only whitelisted headers. All headers are returned if execution is created as synchronous.","items":{"type":"object","$ref":"#\/definitions\/headers"},"x-example":[{"Content-Type":"application\/json"}]},"logs":{"type":"string","description":"Function logs. Includes the last 4,000 characters. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"errors":{"type":"string","description":"Function errors. Includes the last 4,000 characters. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"Function execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","requestMethod","requestPath","requestHeaders","responseStatusCode","responseBody","responseHeaders","logs","errors","duration"]},"variable":{"description":"Variable","type":"object","properties":{"$id":{"type":"string","description":"Variable ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"key":{"type":"string","description":"Variable key.","x-example":"API_KEY"},"value":{"type":"string","description":"Variable value.","x-example":"myPa$$word1"},"resourceType":{"type":"string","description":"Service to which the variable belongs. Possible values are \"project\", \"function\"","x-example":"function"},"resourceId":{"type":"string","description":"ID of resource to which the variable belongs. If resourceType is \"project\", it is empty. If resourceType is \"function\", it is ID of the function.","x-example":"myAwesomeFunction"}},"required":["$id","$createdAt","$updatedAt","key","value","resourceType","resourceId"]},"country":{"description":"Country","type":"object","properties":{"name":{"type":"string","description":"Country name.","x-example":"United States"},"code":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"}},"required":["name","code"]},"continent":{"description":"Continent","type":"object","properties":{"name":{"type":"string","description":"Continent name.","x-example":"Europe"},"code":{"type":"string","description":"Continent two letter code.","x-example":"EU"}},"required":["name","code"]},"language":{"description":"Language","type":"object","properties":{"name":{"type":"string","description":"Language name.","x-example":"Italian"},"code":{"type":"string","description":"Language two-character ISO 639-1 codes.","x-example":"it"},"nativeName":{"type":"string","description":"Language native name.","x-example":"Italiano"}},"required":["name","code","nativeName"]},"currency":{"description":"Currency","type":"object","properties":{"symbol":{"type":"string","description":"Currency symbol.","x-example":"$"},"name":{"type":"string","description":"Currency name.","x-example":"US dollar"},"symbolNative":{"type":"string","description":"Currency native symbol.","x-example":"$"},"decimalDigits":{"type":"integer","description":"Number of decimal digits.","x-example":2,"format":"int32"},"rounding":{"type":"number","description":"Currency digit rounding.","x-example":0,"format":"double"},"code":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format.","x-example":"USD"},"namePlural":{"type":"string","description":"Currency plural name","x-example":"US dollars"}},"required":["symbol","name","symbolNative","decimalDigits","rounding","code","namePlural"]},"phone":{"description":"Phone","type":"object","properties":{"code":{"type":"string","description":"Phone code.","x-example":"+1"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["code","countryCode","countryName"]},"healthAntivirus":{"description":"Health Antivirus","type":"object","properties":{"version":{"type":"string","description":"Antivirus version.","x-example":"1.0.0"},"status":{"type":"string","description":"Antivirus status. Possible values can are: `disabled`, `offline`, `online`","x-example":"online"}},"required":["version","status"]},"healthQueue":{"description":"Health Queue","type":"object","properties":{"size":{"type":"integer","description":"Amount of actions in the queue.","x-example":8,"format":"int32"}},"required":["size"]},"healthStatus":{"description":"Health Status","type":"object","properties":{"name":{"type":"string","description":"Name of the service.","x-example":"database"},"ping":{"type":"integer","description":"Duration in milliseconds how long the health check took.","x-example":128,"format":"int32"},"status":{"type":"string","description":"Service status. Possible values can are: `pass`, `fail`","x-example":"pass"}},"required":["name","ping","status"]},"healthCertificate":{"description":"Health Certificate","type":"object","properties":{"name":{"type":"string","description":"Certificate name","x-example":"\/CN=www.google.com"},"subjectSN":{"type":"string","description":"Subject SN","x-example":""},"issuerOrganisation":{"type":"string","description":"Issuer organisation","x-example":""},"validFrom":{"type":"string","description":"Valid from","x-example":"1704200998"},"validTo":{"type":"string","description":"Valid to","x-example":"1711458597"},"signatureTypeSN":{"type":"string","description":"Signature type SN","x-example":"RSA-SHA256"}},"required":["name","subjectSN","issuerOrganisation","validFrom","validTo","signatureTypeSN"]},"healthTime":{"description":"Health Time","type":"object","properties":{"remoteTime":{"type":"integer","description":"Current unix timestamp on trustful remote server.","x-example":1639490751,"format":"int32"},"localTime":{"type":"integer","description":"Current unix timestamp of local server where Appwrite runs.","x-example":1639490844,"format":"int32"},"diff":{"type":"integer","description":"Difference of unix remote and local timestamps in milliseconds.","x-example":93,"format":"int32"}},"required":["remoteTime","localTime","diff"]},"headers":{"description":"Headers","type":"object","properties":{"name":{"type":"string","description":"Header name.","x-example":"Content-Type"},"value":{"type":"string","description":"Header value.","x-example":"application\/json"}},"required":["name","value"]},"mfaChallenge":{"description":"MFA Challenge","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","userId","expire"]},"mfaType":{"description":"MFAType","type":"object","properties":{"backups":{"type":"array","description":"Backup codes.","items":{"type":"string"},"x-example":true},"secret":{"type":"string","description":"Secret token used for TOTP factor.","x-example":true},"uri":{"type":"string","description":"URI for authenticator apps.","x-example":true}},"required":["backups","secret","uri"]},"mfaFactors":{"description":"MFAFactors","type":"object","properties":{"totp":{"type":"boolean","description":"TOTP","x-example":true},"phone":{"type":"boolean","description":"Phone","x-example":true},"email":{"type":"boolean","description":"Email","x-example":true}},"required":["totp","phone","email"]},"provider":{"description":"Provider","type":"object","properties":{"$id":{"type":"string","description":"Provider ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Provider creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Provider update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"The name for the provider instance.","x-example":"Mailgun"},"provider":{"type":"string","description":"The name of the provider service.","x-example":"mailgun"},"enabled":{"type":"boolean","description":"Is provider enabled?","x-example":true},"type":{"type":"string","description":"Type of provider.","x-example":"sms"},"credentials":{"type":"object","additionalProperties":true,"description":"Provider credentials.","x-example":{"key":"123456789"}},"options":{"type":"object","additionalProperties":true,"description":"Provider options.","x-example":{"from":"sender-email@mydomain"}}},"required":["$id","$createdAt","$updatedAt","name","provider","enabled","type","credentials"]},"message":{"description":"Message","type":"object","properties":{"$id":{"type":"string","description":"Message ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Message creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Message update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerType":{"type":"string","description":"Message provider type.","x-example":"email"},"topics":{"type":"array","description":"Topic IDs set as recipients.","items":{"type":"string"},"x-example":["5e5ea5c16897e"]},"users":{"type":"array","description":"User IDs set as recipients.","items":{"type":"string"},"x-example":["5e5ea5c16897e"]},"targets":{"type":"array","description":"Target IDs set as recipients.","items":{"type":"string"},"x-example":["5e5ea5c16897e"]},"scheduledAt":{"type":"string","description":"The scheduled time for message.","x-example":"2020-10-15T06:38:00.000+00:00","x-nullable":true},"deliveredAt":{"type":"string","description":"The time when the message was delivered.","x-example":"2020-10-15T06:38:00.000+00:00","x-nullable":true},"deliveryErrors":{"type":"array","description":"Delivery errors if any.","items":{"type":"string"},"x-example":["Failed to send message to target 5e5ea5c16897e: Credentials not valid."],"x-nullable":true},"deliveredTotal":{"type":"integer","description":"Number of recipients the message was delivered to.","x-example":1,"format":"int32"},"data":{"type":"object","additionalProperties":true,"description":"Data of the message.","x-example":{"subject":"Welcome to Appwrite","content":"Hi there, welcome to Appwrite family."}},"status":{"type":"string","description":"Status of delivery.","x-example":"Message status can be one of the following: processing, sent, cancelled, failed."}},"required":["$id","$createdAt","$updatedAt","providerType","topics","users","targets","deliveredTotal","data","status"]},"topic":{"description":"Topic","type":"object","properties":{"$id":{"type":"string","description":"Topic ID.","x-example":"259125845563242502"},"$createdAt":{"type":"string","description":"Topic creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Topic update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"The name of the topic.","x-example":"events"},"total":{"type":"integer","description":"Total count of subscribers subscribed to topic.","x-example":100,"format":"int32"},"subscribe":{"type":"array","description":"Subscribe permissions.","items":{"type":"string"},"x-example":"users"}},"required":["$id","$createdAt","$updatedAt","name","total","subscribe"]},"subscriber":{"description":"Subscriber","type":"object","properties":{"$id":{"type":"string","description":"Subscriber ID.","x-example":"259125845563242502"},"$createdAt":{"type":"string","description":"Subscriber creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Subscriber update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"targetId":{"type":"string","description":"Target ID.","x-example":"259125845563242502"},"target":{"type":"object","description":"Target.","x-example":{"$id":"259125845563242502","$createdAt":"2020-10-15T06:38:00.000+00:00","$updatedAt":"2020-10-15T06:38:00.000+00:00","providerType":"email","providerId":"259125845563242502","name":"ageon-app-email","identifier":"random-mail@email.org","userId":"5e5ea5c16897e"},"items":{"type":"object","$ref":"#\/definitions\/target"}},"userId":{"type":"string","description":"Topic ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User Name.","x-example":"Aegon Targaryen"},"topicId":{"type":"string","description":"Topic ID.","x-example":"259125845563242502"},"providerType":{"type":"string","description":"The target provider type. Can be one of the following: `email`, `sms` or `push`.","x-example":"email"}},"required":["$id","$createdAt","$updatedAt","targetId","target","userId","userName","topicId","providerType"]},"target":{"description":"Target","type":"object","properties":{"$id":{"type":"string","description":"Target ID.","x-example":"259125845563242502"},"$createdAt":{"type":"string","description":"Target creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Target update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Target Name.","x-example":"Aegon apple token"},"userId":{"type":"string","description":"User ID.","x-example":"259125845563242502"},"providerId":{"type":"string","description":"Provider ID.","x-example":"259125845563242502","x-nullable":true},"providerType":{"type":"string","description":"The target provider type. Can be one of the following: `email`, `sms` or `push`.","x-example":"email"},"identifier":{"type":"string","description":"The target identifier.","x-example":"token"}},"required":["$id","$createdAt","$updatedAt","name","userId","providerType","identifier"]}},"externalDocs":{"description":"Full API docs, specs and tutorials","url":"https:\/\/appwrite.io\/docs"}} \ No newline at end of file diff --git a/app/controllers/api/account.php b/app/controllers/api/account.php index 2e970da61f..5bc6bbc222 100644 --- a/app/controllers/api/account.php +++ b/app/controllers/api/account.php @@ -3425,10 +3425,10 @@ App::get('/v1/account/mfa/factors') ->label('sdk.auth', [APP_AUTH_TYPE_SESSION, APP_AUTH_TYPE_JWT]) ->label('sdk.namespace', 'account') ->label('sdk.method', 'listFactors') - ->label('sdk.description', '/docs/references/account/get.md') + ->label('sdk.description', '/docs/references/account/list-factors.md') ->label('sdk.response.code', Response::STATUS_CODE_OK) ->label('sdk.response.type', Response::CONTENT_TYPE_JSON) - ->label('sdk.response.model', Response::MODEL_MFA_PROVIDERS) + ->label('sdk.response.model', Response::MODEL_MFA_FACTORS) ->label('sdk.offline.model', '/account') ->label('sdk.offline.key', 'current') ->inject('response') @@ -3441,10 +3441,10 @@ App::get('/v1/account/mfa/factors') 'phone' => $user->getAttribute('phone', false) && $user->getAttribute('phoneVerification', false) ]); - $response->dynamic($providers, Response::MODEL_MFA_PROVIDERS); + $response->dynamic($providers, Response::MODEL_MFA_FACTORS); }); -App::post('/v1/account/mfa/:factor') +App::post('/v1/account/mfa/:type') ->desc('Add Authenticator') ->groups(['api', 'account']) ->label('event', 'users.[userId].update.mfa') @@ -3455,24 +3455,24 @@ App::post('/v1/account/mfa/:factor') ->label('sdk.auth', [APP_AUTH_TYPE_SESSION, APP_AUTH_TYPE_JWT]) ->label('sdk.namespace', 'account') ->label('sdk.method', 'addAuthenticator') - ->label('sdk.description', '/docs/references/account/update-mfa.md') + ->label('sdk.description', '/docs/references/account/add-authenticator.md') ->label('sdk.response.code', Response::STATUS_CODE_OK) ->label('sdk.response.type', Response::CONTENT_TYPE_JSON) - ->label('sdk.response.model', Response::MODEL_MFA_PROVIDER) + ->label('sdk.response.model', Response::MODEL_MFA_TYPE) ->label('sdk.offline.model', '/account') ->label('sdk.offline.key', 'current') - ->param('factor', null, new WhiteList(['totp']), 'Factor.') + ->param('type', null, new WhiteList(['totp']), 'Type of authenticator.') ->inject('requestTimestamp') ->inject('response') ->inject('project') ->inject('user') ->inject('dbForProject') ->inject('queueForEvents') - ->action(function (string $factor, ?\DateTime $requestTimestamp, Response $response, Document $project, Document $user, Database $dbForProject, Event $queueForEvents) { + ->action(function (string $type, ?\DateTime $requestTimestamp, Response $response, Document $project, Document $user, Database $dbForProject, Event $queueForEvents) { - $otp = match ($factor) { + $otp = match ($type) { 'totp' => new TOTP(), - default => throw new Exception(Exception::GENERAL_UNKNOWN, 'Unknown provider.') + default => throw new Exception(Exception::GENERAL_UNKNOWN, 'Unknown type.') }; $otp->setLabel($user->getAttribute('email')); @@ -3481,7 +3481,7 @@ App::post('/v1/account/mfa/:factor') $backups = Provider::generateBackupCodes(); if ($user->getAttribute('totp') && $user->getAttribute('totpVerification')) { - throw new Exception(Exception::GENERAL_UNKNOWN, 'TOTP already exists.'); + throw new Exception(Exception::GENERAL_UNKNOWN, 'TOTP already exists on this account.'); } $user @@ -3500,10 +3500,10 @@ App::post('/v1/account/mfa/:factor') $queueForEvents->setParam('userId', $user->getId()); - $response->dynamic($model, Response::MODEL_MFA_PROVIDER); + $response->dynamic($model, Response::MODEL_MFA_TYPE); }); -App::put('/v1/account/mfa/:factor') +App::put('/v1/account/mfa/:type') ->desc('Verify Authenticator') ->groups(['api', 'account']) ->label('event', 'users.[userId].update.mfa') @@ -3514,13 +3514,13 @@ App::put('/v1/account/mfa/:factor') ->label('sdk.auth', [APP_AUTH_TYPE_SESSION, APP_AUTH_TYPE_JWT]) ->label('sdk.namespace', 'account') ->label('sdk.method', 'verifyAuthenticator') - ->label('sdk.description', '/docs/references/account/update-mfa.md') + ->label('sdk.description', '/docs/references/account/verify-authenticator.md') ->label('sdk.response.code', Response::STATUS_CODE_OK) ->label('sdk.response.type', Response::CONTENT_TYPE_JSON) ->label('sdk.response.model', Response::MODEL_USER) ->label('sdk.offline.model', '/account') ->label('sdk.offline.key', 'current') - ->param('factor', null, new WhiteList(['totp']), 'Factor.') + ->param('type', null, new WhiteList(['totp']), 'Type of authenticator.') ->param('otp', '', new Text(256), 'Valid verification token.') ->inject('requestTimestamp') ->inject('response') @@ -3528,9 +3528,9 @@ App::put('/v1/account/mfa/:factor') ->inject('project') ->inject('dbForProject') ->inject('queueForEvents') - ->action(function (string $factor, string $otp, ?\DateTime $requestTimestamp, Response $response, Document $user, Document $project, Database $dbForProject, Event $queueForEvents) { + ->action(function (string $type, string $otp, ?\DateTime $requestTimestamp, Response $response, Document $user, Document $project, Database $dbForProject, Event $queueForEvents) { - $success = match ($factor) { + $success = match ($type) { 'totp' => Challenge\TOTP::verify($user, $otp), default => false }; @@ -3540,9 +3540,9 @@ App::put('/v1/account/mfa/:factor') } if (!$user->getAttribute('totp')) { - throw new Exception(Exception::GENERAL_UNKNOWN, 'TOTP not added.'); + throw new Exception(Exception::GENERAL_UNKNOWN, 'Authenticator needs to be added first.'); } elseif ($user->getAttribute('totpVerification')) { - throw new Exception(Exception::GENERAL_UNKNOWN, 'TOTP already verified.'); + throw new Exception(Exception::GENERAL_UNKNOWN, 'Authenticator already verified on this account.'); } $user->setAttribute('totpVerification', true); @@ -3552,14 +3552,14 @@ App::put('/v1/account/mfa/:factor') $authDuration = $project->getAttribute('auths', [])['duration'] ?? Auth::TOKEN_EXPIRATION_LOGIN_LONG; $sessionId = Auth::sessionVerify($user->getAttribute('sessions', []), Auth::$secret, $authDuration); $session = $dbForProject->getDocument('sessions', $sessionId); - $dbForProject->updateDocument('sessions', $sessionId, $session->setAttribute('factors', $provider, Document::SET_TYPE_APPEND)); + $dbForProject->updateDocument('sessions', $sessionId, $session->setAttribute('factors', $type, Document::SET_TYPE_APPEND)); $queueForEvents->setParam('userId', $user->getId()); $response->dynamic($user, Response::MODEL_ACCOUNT); }); -App::delete('/v1/account/mfa/:provider') +App::delete('/v1/account/mfa/:type') ->desc('Delete Authenticator') ->groups(['api', 'account']) ->label('event', 'users.[userId].delete.mfa') @@ -3574,16 +3574,16 @@ App::delete('/v1/account/mfa/:provider') ->label('sdk.response.code', Response::STATUS_CODE_OK) ->label('sdk.response.type', Response::CONTENT_TYPE_JSON) ->label('sdk.response.model', Response::MODEL_USER) - ->param('provider', null, new WhiteList(['totp']), 'Provider.') + ->param('type', null, new WhiteList(['totp']), 'Type of authenticator.') ->param('otp', '', new Text(256), 'Valid verification token.') ->inject('requestTimestamp') ->inject('response') ->inject('user') ->inject('dbForProject') ->inject('queueForEvents') - ->action(function (string $provider, string $otp, ?\DateTime $requestTimestamp, Response $response, Document $user, Database $dbForProject, Event $queueForEvents) { + ->action(function (string $type, string $otp, ?\DateTime $requestTimestamp, Response $response, Document $user, Database $dbForProject, Event $queueForEvents) { - $success = match ($provider) { + $success = match ($type) { 'totp' => Challenge\TOTP::verify($user, $otp), default => false }; @@ -3610,40 +3610,38 @@ App::delete('/v1/account/mfa/:provider') }); App::post('/v1/account/mfa/challenge') - ->desc('Create MFA Challenge') + ->desc('Create 2FA Challenge') ->groups(['api', 'account', 'mfa']) ->label('scope', 'accounts.write') ->label('event', 'users.[userId].challenges.[challengeId].create') - ->label('auth.type', 'createChallenge') ->label('audits.event', 'challenge.create') ->label('audits.resource', 'user/{response.userId}') ->label('audits.userId', '{response.userId}') ->label('sdk.auth', []) ->label('sdk.namespace', 'account') - ->label('sdk.method', 'createChallenge') - ->label('sdk.description', '/docs/references/account/create-challenge.md') + ->label('sdk.method', 'create2FAChallenge') + ->label('sdk.description', '/docs/references/account/create-2fa-challenge.md') ->label('sdk.response.code', Response::STATUS_CODE_CREATED) ->label('sdk.response.type', Response::CONTENT_TYPE_JSON) ->label('sdk.response.model', Response::MODEL_MFA_CHALLENGE) ->label('abuse-limit', 10) ->label('abuse-key', 'url:{url},token:{param-token}') - ->param('provider', '', new WhiteList(['totp', 'phone', 'email']), 'provider.') + ->param('factor', '', new WhiteList(['totp', 'phone', 'email']), 'Factor used for verification.') ->inject('response') ->inject('dbForProject') ->inject('user') - ->inject('project') ->inject('queueForEvents') ->inject('queueForMessaging') ->inject('queueForMails') ->inject('locale') - ->action(function (string $provider, Response $response, Database $dbForProject, Document $user, Document $project, Event $queueForEvents, Messaging $queueForMessaging, Mail $queueForMails, Locale $locale) { + ->action(function (string $factor, Response $response, Database $dbForProject, Document $user, Event $queueForEvents, Messaging $queueForMessaging, Mail $queueForMails, Locale $locale) { $expire = DateTime::addSeconds(new \DateTime(), Auth::TOKEN_EXPIRATION_CONFIRM); $code = Auth::codeGenerator(); $challenge = new Document([ 'userId' => $user->getId(), 'userInternalId' => $user->getInternalId(), - 'provider' => $provider, + 'provider' => $factor, 'token' => Auth::tokenGenerator(), 'code' => $code, 'expire' => $expire, @@ -3656,7 +3654,7 @@ App::post('/v1/account/mfa/challenge') $challenge = $dbForProject->createDocument('challenges', $challenge); - switch ($provider) { + switch ($factor) { case 'phone': if (empty(App::getEnv('_APP_SMS_PROVIDER'))) { throw new Exception(Exception::GENERAL_PHONE_DISABLED, 'Phone provider not configured'); @@ -3720,7 +3718,7 @@ App::put('/v1/account/mfa/challenge') ->label('sdk.response.model', Response::MODEL_SESSION) ->label('abuse-limit', 10) ->label('abuse-key', 'userId:{param-userId}') - ->param('challengeId', '', new Text(256), 'Valid verification token.') + ->param('challengeId', '', new Text(256), 'ID of the challenge.') ->param('otp', '', new Text(256), 'Valid verification token.') ->inject('project') ->inject('response') diff --git a/app/controllers/api/users.php b/app/controllers/api/users.php index e9a8a42025..942641a68a 100644 --- a/app/controllers/api/users.php +++ b/app/controllers/api/users.php @@ -1523,18 +1523,18 @@ App::patch('/v1/users/:userId/mfa') $response->dynamic($user, Response::MODEL_USER); }); -App::get('/v1/users/:userId/providers') - ->desc('List Providers') +App::get('/v1/users/:userId/mfa/factors') + ->desc('List Factors') ->groups(['api', 'users']) ->label('scope', 'users.read') ->label('usage.metric', 'users.{scope}.requests.read') ->label('sdk.auth', [APP_AUTH_TYPE_KEY]) ->label('sdk.namespace', 'users') - ->label('sdk.method', 'listProviders') - ->label('sdk.description', '/docs/references/users/list-providers.md') + ->label('sdk.method', 'listFactors') + ->label('sdk.description', '/docs/references/users/list-factors.md') ->label('sdk.response.code', Response::STATUS_CODE_OK) ->label('sdk.response.type', Response::CONTENT_TYPE_JSON) - ->label('sdk.response.model', Response::MODEL_MFA_PROVIDERS) + ->label('sdk.response.model', Response::MODEL_MFA_FACTORS) ->param('userId', '', new UID(), 'User ID.') ->inject('response') ->inject('dbForProject') @@ -1551,10 +1551,10 @@ App::get('/v1/users/:userId/providers') 'phone' => $user->getAttribute('phone', false) && $user->getAttribute('phoneVerification', false) ]); - $response->dynamic($providers, Response::MODEL_MFA_PROVIDERS); + $response->dynamic($providers, Response::MODEL_MFA_FACTORS); }); -App::delete('/v1/users/:userId/mfa/:provider') +App::delete('/v1/users/:userId/mfa/:type') ->desc('Delete Authenticator') ->groups(['api', 'users']) ->label('event', 'users.[userId].delete.mfa') @@ -1571,20 +1571,20 @@ App::delete('/v1/users/:userId/mfa/:provider') ->label('sdk.response.type', Response::CONTENT_TYPE_JSON) ->label('sdk.response.model', Response::MODEL_USER) ->param('userId', '', new UID(), 'User ID.') - ->param('provider', null, new WhiteList(['totp']), 'Provider.') + ->param('type', null, new WhiteList(['totp']), 'Type of authenticator.') ->param('otp', '', new Text(256), 'Valid verification token.') ->inject('requestTimestamp') ->inject('response') ->inject('dbForProject') ->inject('queueForEvents') - ->action(function (string $userId, string $provider, string $otp, ?\DateTime $requestTimestamp, Response $response, Database $dbForProject, Event $queueForEvents) { + ->action(function (string $userId, string $type, string $otp, ?\DateTime $requestTimestamp, Response $response, Database $dbForProject, Event $queueForEvents) { $user = $dbForProject->getDocument('users', $userId); if ($user->isEmpty()) { throw new Exception(Exception::USER_NOT_FOUND); } - $success = match ($provider) { + $success = match ($type) { 'totp' => Challenge\TOTP::verify($user, $otp), default => false }; diff --git a/src/Appwrite/Utopia/Response.php b/src/Appwrite/Utopia/Response.php index 1a4bc7fb59..8bd8963d32 100644 --- a/src/Appwrite/Utopia/Response.php +++ b/src/Appwrite/Utopia/Response.php @@ -76,13 +76,13 @@ use Appwrite\Utopia\Response\Model\HealthStatus; use Appwrite\Utopia\Response\Model\HealthTime; use Appwrite\Utopia\Response\Model\HealthVersion; use Appwrite\Utopia\Response\Model\MFAChallenge; -use Appwrite\Utopia\Response\Model\MFAProvider; -use Appwrite\Utopia\Response\Model\MFAProviders; use Appwrite\Utopia\Response\Model\Installation; use Appwrite\Utopia\Response\Model\LocaleCode; use Appwrite\Utopia\Response\Model\MetricBreakdown; use Appwrite\Utopia\Response\Model\Provider; use Appwrite\Utopia\Response\Model\Message; +use Appwrite\Utopia\Response\Model\MFAFactors; +use Appwrite\Utopia\Response\Model\MFAType; use Appwrite\Utopia\Response\Model\Subscriber; use Appwrite\Utopia\Response\Model\Topic; use Appwrite\Utopia\Response\Model\ProviderRepository; @@ -170,8 +170,8 @@ class Response extends SwooleResponse public const MODEL_PREFERENCES = 'preferences'; // MFA - public const MODEL_MFA_PROVIDER = 'mfaProvider'; - public const MODEL_MFA_PROVIDERS = 'mfaProviders'; + public const MODEL_MFA_TYPE = 'mfaType'; + public const MODEL_MFA_FACTORS = 'mfaFactors'; public const MODEL_MFA_OTP = 'mfaTotp'; public const MODEL_MFA_CHALLENGE = 'mfaChallenge'; @@ -443,8 +443,8 @@ class Response extends SwooleResponse ->setModel(new TemplateEmail()) ->setModel(new ConsoleVariables()) ->setModel(new MFAChallenge()) - ->setModel(new MFAProvider()) - ->setModel(new MFAProviders()) + ->setModel(new MFAType()) + ->setModel(new MFAFactors()) ->setModel(new Provider()) ->setModel(new Message()) ->setModel(new Topic()) diff --git a/src/Appwrite/Utopia/Response/Model/MFAProviders.php b/src/Appwrite/Utopia/Response/Model/MFAFactors.php similarity index 90% rename from src/Appwrite/Utopia/Response/Model/MFAProviders.php rename to src/Appwrite/Utopia/Response/Model/MFAFactors.php index acba916de8..527f4faadd 100644 --- a/src/Appwrite/Utopia/Response/Model/MFAProviders.php +++ b/src/Appwrite/Utopia/Response/Model/MFAFactors.php @@ -5,7 +5,7 @@ namespace Appwrite\Utopia\Response\Model; use Appwrite\Utopia\Response; use Appwrite\Utopia\Response\Model; -class MFAProviders extends Model +class MFAFactors extends Model { public function __construct() { @@ -38,7 +38,7 @@ class MFAProviders extends Model */ public function getName(): string { - return 'MFAProviders'; + return 'MFAFactors'; } /** @@ -48,6 +48,6 @@ class MFAProviders extends Model */ public function getType(): string { - return Response::MODEL_MFA_PROVIDERS; + return Response::MODEL_MFA_FACTORS; } } diff --git a/src/Appwrite/Utopia/Response/Model/MFAProvider.php b/src/Appwrite/Utopia/Response/Model/MFAType.php similarity index 91% rename from src/Appwrite/Utopia/Response/Model/MFAProvider.php rename to src/Appwrite/Utopia/Response/Model/MFAType.php index fec6c94f5e..8229e2365d 100644 --- a/src/Appwrite/Utopia/Response/Model/MFAProvider.php +++ b/src/Appwrite/Utopia/Response/Model/MFAType.php @@ -5,7 +5,7 @@ namespace Appwrite\Utopia\Response\Model; use Appwrite\Utopia\Response; use Appwrite\Utopia\Response\Model; -class MFAProvider extends Model +class MFAType extends Model { public function __construct() { @@ -39,7 +39,7 @@ class MFAProvider extends Model */ public function getName(): string { - return 'MFAProvider'; + return 'MFAType'; } /** @@ -49,6 +49,6 @@ class MFAProvider extends Model */ public function getType(): string { - return Response::MODEL_MFA_PROVIDER; + return Response::MODEL_MFA_TYPE; } } From 7e5660797531a8240b5fd441a5c34e52df8ec7ff Mon Sep 17 00:00:00 2001 From: Jake Barnby Date: Fri, 16 Feb 2024 14:09:22 +1300 Subject: [PATCH 72/87] Update docker base --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index f96138b150..1075f9a12a 100755 --- a/Dockerfile +++ b/Dockerfile @@ -29,7 +29,7 @@ ENV VITE_APPWRITE_GROWTH_ENDPOINT=$VITE_APPWRITE_GROWTH_ENDPOINT RUN npm ci RUN npm run build -FROM appwrite/base:0.7.2 as final +FROM appwrite/base:0.8.0 as final LABEL maintainer="team@appwrite.io" From 3c727861bb2fcca0df2419ad77621047f4325434 Mon Sep 17 00:00:00 2001 From: Jake Barnby Date: Fri, 16 Feb 2024 17:07:16 +1300 Subject: [PATCH 73/87] Fix target permissions --- app/controllers/api/account.php | 12 +++++++++++- app/controllers/api/users.php | 25 +++++++++++++++++++++++++ 2 files changed, 36 insertions(+), 1 deletion(-) diff --git a/app/controllers/api/account.php b/app/controllers/api/account.php index 5bc6bbc222..dd009864a7 100644 --- a/app/controllers/api/account.php +++ b/app/controllers/api/account.php @@ -163,6 +163,11 @@ App::post('/v1/account') $user = Authorization::skip(fn() => $dbForProject->createDocument('users', $user)); try { $target = Authorization::skip(fn() => $dbForProject->createDocument('targets', new Document([ + '$permissions' => [ + Permission::read(Role::user($user->getId())), + Permission::update(Role::user($user->getId())), + Permission::delete(Role::user($user->getId())), + ], 'userId' => $user->getId(), 'userInternalId' => $user->getInternalId(), 'providerType' => MESSAGE_TYPE_EMAIL, @@ -707,7 +712,7 @@ App::get('/v1/account/sessions/oauth2/:provider/redirect') $userDoc = Authorization::skip(fn() => $dbForProject->createDocument('users', $user)); $dbForProject->createDocument('targets', new Document([ '$permissions' => [ - Permission::read(Role::any()), + Permission::read(Role::user($user->getId())), Permission::update(Role::user($user->getId())), Permission::delete(Role::user($user->getId())), ], @@ -1699,6 +1704,11 @@ App::post('/v1/account/tokens/phone') Authorization::skip(fn () => $dbForProject->createDocument('users', $user)); try { $target = Authorization::skip(fn() => $dbForProject->createDocument('targets', new Document([ + '$permissions' => [ + Permission::read(Role::user($user->getId())), + Permission::update(Role::user($user->getId())), + Permission::delete(Role::user($user->getId())), + ], 'userId' => $user->getId(), 'userInternalId' => $user->getInternalId(), 'providerType' => MESSAGE_TYPE_SMS, diff --git a/app/controllers/api/users.php b/app/controllers/api/users.php index 942641a68a..9a9e37c32f 100644 --- a/app/controllers/api/users.php +++ b/app/controllers/api/users.php @@ -115,6 +115,11 @@ function createUser(string $hash, mixed $hashOptions, string $userId, ?string $e if ($email) { try { $target = $dbForProject->createDocument('targets', new Document([ + '$permissions' => [ + Permission::read(Role::user($user->getId())), + Permission::update(Role::user($user->getId())), + Permission::delete(Role::user($user->getId())), + ], 'userId' => $user->getId(), 'userInternalId' => $user->getInternalId(), 'providerType' => 'email', @@ -132,6 +137,11 @@ function createUser(string $hash, mixed $hashOptions, string $userId, ?string $e if ($phone) { try { $target = $dbForProject->createDocument('targets', new Document([ + '$permissions' => [ + Permission::read(Role::user($user->getId())), + Permission::update(Role::user($user->getId())), + Permission::delete(Role::user($user->getId())), + ], 'userId' => $user->getId(), 'userInternalId' => $user->getInternalId(), 'providerType' => 'sms', @@ -498,6 +508,11 @@ App::post('/v1/users/:userId/targets') try { $target = $dbForProject->createDocument('targets', new Document([ '$id' => $targetId, + '$permissions' => [ + Permission::read(Role::user($user->getId())), + Permission::update(Role::user($user->getId())), + Permission::delete(Role::user($user->getId())), + ], 'providerId' => $providerId ?? null, 'providerInternalId' => $provider->getInternalId() ?? null, 'providerType' => $providerType, @@ -1227,6 +1242,11 @@ App::patch('/v1/users/:userId/email') } else { if (\strlen($email) !== 0) { $target = $dbForProject->createDocument('targets', new Document([ + '$permissions' => [ + Permission::read(Role::user($user->getId())), + Permission::update(Role::user($user->getId())), + Permission::delete(Role::user($user->getId())), + ], 'userId' => $user->getId(), 'userInternalId' => $user->getInternalId(), 'providerType' => 'email', @@ -1305,6 +1325,11 @@ App::patch('/v1/users/:userId/phone') } else { if (\strlen($number) !== 0) { $target = $dbForProject->createDocument('targets', new Document([ + '$permissions' => [ + Permission::read(Role::user($user->getId())), + Permission::update(Role::user($user->getId())), + Permission::delete(Role::user($user->getId())), + ], 'userId' => $user->getId(), 'userInternalId' => $user->getInternalId(), 'providerType' => 'sms', From 4d7becc45993f669f2e8f49047c5666c9cc264b0 Mon Sep 17 00:00:00 2001 From: Jake Barnby Date: Fri, 16 Feb 2024 20:23:31 +1300 Subject: [PATCH 74/87] Apply suggestions from code review --- src/Appwrite/Migration/Version/V20.php | 8 ++++---- src/Appwrite/Utopia/Response/Filters/V17.php | 2 +- tests/unit/Utopia/Response/Filters/V17Test.php | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/Appwrite/Migration/Version/V20.php b/src/Appwrite/Migration/Version/V20.php index caf3022804..0e7434c56c 100644 --- a/src/Appwrite/Migration/Version/V20.php +++ b/src/Appwrite/Migration/Version/V20.php @@ -77,18 +77,18 @@ class V20 extends Migration // Support database array type migration (user collections) foreach ( $this->documentsIterator('attributes', [ - Query::equal('array', [true]), + Query::equal('array', [true]), ]) as $attribute ) { $foundIndex = false; foreach ( $this->documentsIterator('indexes', [ - Query::equal('databaseInternalId', [$attribute['databaseInternalId']]), - Query::equal('collectionInternalId', [$attribute['collectionInternalId']]), + Query::equal('databaseInternalId', [$attribute['databaseInternalId']]), + Query::equal('collectionInternalId', [$attribute['collectionInternalId']]), ]) as $index ) { if (in_array($attribute['key'], $index['attributes'])) { - $this->projectDB->deleteIndex($index['collectionId'], $index['_uid']); + $this->projectDB->deleteIndex($index['collectionId'], $index['$id']); $foundIndex = true; } } diff --git a/src/Appwrite/Utopia/Response/Filters/V17.php b/src/Appwrite/Utopia/Response/Filters/V17.php index de6ab607b8..cf62bcf488 100644 --- a/src/Appwrite/Utopia/Response/Filters/V17.php +++ b/src/Appwrite/Utopia/Response/Filters/V17.php @@ -42,7 +42,7 @@ class V17 extends Filter protected function parseToken(array $content) { - unset($content['securityPhrase']); + unset($content['phrase']); return $content; } } diff --git a/tests/unit/Utopia/Response/Filters/V17Test.php b/tests/unit/Utopia/Response/Filters/V17Test.php index 68d2146e0a..25f4fb2f2e 100644 --- a/tests/unit/Utopia/Response/Filters/V17Test.php +++ b/tests/unit/Utopia/Response/Filters/V17Test.php @@ -97,7 +97,7 @@ class V17Test extends TestCase return [ 'remove securityPhrase' => [ [ - 'securityPhrase' => 'Lorum Ipsum', + 'phrase' => 'Lorum Ipsum', ], [ ], From 4748dedd29726b9dfc8f331f76a97860ddf466ee Mon Sep 17 00:00:00 2001 From: Torsten Dittmann Date: Fri, 16 Feb 2024 14:58:38 +0000 Subject: [PATCH 75/87] fix: blocked users from accessing console --- app/controllers/general.php | 34 ++++++++++++++++++---------------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/app/controllers/general.php b/app/controllers/general.php index 9385fac435..e2ecde97e0 100644 --- a/app/controllers/general.php +++ b/app/controllers/general.php @@ -563,25 +563,27 @@ App::init() throw new AppwriteException(AppwriteException::GENERAL_UNAUTHORIZED_SCOPE, $user->getAttribute('email', 'User') . ' (role: ' . \strtolower($roles[$role]['label']) . ') missing scope (' . $scope . ')'); } - if (false === $user->getAttribute('status')) { // Account is blocked - throw new AppwriteException(AppwriteException::USER_BLOCKED); - } + if (in_array('api', $route->getGroups())) { + if (false === $user->getAttribute('status')) { // Account is blocked + throw new AppwriteException(AppwriteException::USER_BLOCKED); + } - if ($user->getAttribute('reset')) { - throw new AppwriteException(AppwriteException::USER_PASSWORD_RESET_REQUIRED); - } + if ($user->getAttribute('reset')) { + throw new AppwriteException(AppwriteException::USER_PASSWORD_RESET_REQUIRED); + } - if ($mode !== APP_MODE_ADMIN) { - $mfaEnabled = $user->getAttribute('mfa', false); - $hasVerifiedAuthenticator = $user->getAttribute('totpVerification', false); - $hasVerifiedEmail = $user->getAttribute('emailVerification', false); - $hasVerifiedPhone = $user->getAttribute('phoneVerification', false); - $hasMoreFactors = $hasVerifiedEmail || $hasVerifiedPhone || $hasVerifiedAuthenticator; - $minimumFactors = ($mfaEnabled && $hasMoreFactors) ? 2 : 1; + if ($mode !== APP_MODE_ADMIN) { + $mfaEnabled = $user->getAttribute('mfa', false); + $hasVerifiedAuthenticator = $user->getAttribute('totpVerification', false); + $hasVerifiedEmail = $user->getAttribute('emailVerification', false); + $hasVerifiedPhone = $user->getAttribute('phoneVerification', false); + $hasMoreFactors = $hasVerifiedEmail || $hasVerifiedPhone || $hasVerifiedAuthenticator; + $minimumFactors = ($mfaEnabled && $hasMoreFactors) ? 2 : 1; - if (!in_array('mfa', $route->getGroups())) { - if ($session && \count($session->getAttribute('factors')) < $minimumFactors) { - throw new AppwriteException(AppwriteException::USER_MORE_FACTORS_REQUIRED); + if (!in_array('mfa', $route->getGroups())) { + if ($session && \count($session->getAttribute('factors')) < $minimumFactors) { + throw new AppwriteException(AppwriteException::USER_MORE_FACTORS_REQUIRED); + } } } } From ca650fce1ba3882c2d593fc5e9ef07181f9a67dd Mon Sep 17 00:00:00 2001 From: Torsten Dittmann Date: Fri, 16 Feb 2024 14:59:40 +0000 Subject: [PATCH 76/87] fix: status code for more factors required --- app/config/errors.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/config/errors.php b/app/config/errors.php index 40f6ad018f..d3f84dc353 100644 --- a/app/config/errors.php +++ b/app/config/errors.php @@ -245,7 +245,7 @@ return [ Exception::USER_MORE_FACTORS_REQUIRED => [ 'name' => Exception::USER_MORE_FACTORS_REQUIRED, 'description' => 'More factors are required to complete the sign in process.', - 'code' => 400, + 'code' => 401, ], Exception::USER_OAUTH2_BAD_REQUEST => [ 'name' => Exception::USER_OAUTH2_BAD_REQUEST, From 5193a97ddb2aa02c8030e385c01f8f0f4615f0f3 Mon Sep 17 00:00:00 2001 From: Torsten Dittmann Date: Fri, 16 Feb 2024 16:26:50 +0000 Subject: [PATCH 77/87] fix: move user logic from general to api hook --- app/controllers/general.php | 144 +-------------------------- app/controllers/shared/api.php | 173 ++++++++++++++++++++++++++++++--- 2 files changed, 159 insertions(+), 158 deletions(-) diff --git a/app/controllers/general.php b/app/controllers/general.php index e2ecde97e0..78cb70de02 100644 --- a/app/controllers/general.php +++ b/app/controllers/general.php @@ -3,7 +3,6 @@ require_once __DIR__ . '/../init.php'; use Utopia\App; -use Utopia\Database\Helpers\Role; use Utopia\Locale\Locale; use Utopia\Logger\Logger; use Utopia\Logger\Log; @@ -15,7 +14,6 @@ use Appwrite\Utopia\View; use Appwrite\Extend\Exception as AppwriteException; use Utopia\Config\Config; use Utopia\Domains\Domain; -use Appwrite\Auth\Auth; use Appwrite\Event\Certificate; use Appwrite\Network\Validator\Origin; use Appwrite\Utopia\Response\Filters\V11 as ResponseV11; @@ -27,7 +25,6 @@ use Appwrite\Utopia\Response\Filters\V16 as ResponseV16; use Appwrite\Utopia\Response\Filters\V17 as ResponseV17; use Utopia\CLI\Console; use Utopia\Database\Database; -use Utopia\Database\DateTime; use Utopia\Database\Document; use Utopia\Database\Query; use Utopia\Database\Validator\Authorization; @@ -39,7 +36,6 @@ use Appwrite\Utopia\Request\Filters\V15 as RequestV15; use Appwrite\Utopia\Request\Filters\V16 as RequestV16; use Appwrite\Utopia\Request\Filters\V17 as RequestV17; use Utopia\Validator\Text; -use Utopia\Validator\WhiteList; Config::setParam('domainVerification', false); Config::setParam('cookieDomain', 'localhost'); @@ -205,15 +201,11 @@ App::init() ->inject('console') ->inject('project') ->inject('dbForConsole') - ->inject('user') ->inject('locale') ->inject('localeCodes') ->inject('clients') - ->inject('servers') - ->inject('session') - ->inject('mode') ->inject('queueForCertificates') - ->action(function (App $utopia, SwooleRequest $swooleRequest, Request $request, Response $response, Document $console, Document $project, Database $dbForConsole, Document $user, Locale $locale, array $localeCodes, array $clients, array $servers, ?Document $session, string $mode, Certificate $queueForCertificates) { + ->action(function (App $utopia, SwooleRequest $swooleRequest, Request $request, Response $response, Document $console, Document $project, Database $dbForConsole, Locale $locale, array $localeCodes, array $clients, Certificate $queueForCertificates) { /* * Appwrite Router */ @@ -453,140 +445,6 @@ App::init() ) { throw new AppwriteException(AppwriteException::GENERAL_UNKNOWN_ORIGIN, $originValidator->getDescription()); } - - /* - * ACL Check - */ - $role = ($user->isEmpty()) - ? Role::guests()->toString() - : Role::users()->toString(); - - // Add user roles - $memberships = $user->find('teamId', $project->getAttribute('teamId'), 'memberships'); - - if ($memberships) { - foreach ($memberships->getAttribute('roles', []) as $memberRole) { - switch ($memberRole) { - case 'owner': - $role = Auth::USER_ROLE_OWNER; - break; - case 'admin': - $role = Auth::USER_ROLE_ADMIN; - break; - case 'developer': - $role = Auth::USER_ROLE_DEVELOPER; - break; - } - } - } - - $roles = Config::getParam('roles', []); - $scope = $route->getLabel('scope', 'none'); // Allowed scope for chosen route - $scopes = $roles[$role]['scopes']; // Allowed scopes for user role - - $authKey = $request->getHeader('x-appwrite-key', ''); - - if (!empty($authKey)) { // API Key authentication - // Check if given key match project API keys - $key = $project->find('secret', $authKey, 'keys'); - - /* - * Try app auth when we have project key and no user - * Mock user to app and grant API key scopes in addition to default app scopes - */ - if ($key && $user->isEmpty()) { - $user = new Document([ - '$id' => '', - 'status' => true, - 'email' => 'app.' . $project->getId() . '@service.' . $request->getHostname(), - 'password' => '', - 'name' => $project->getAttribute('name', 'Untitled'), - ]); - - $role = Auth::USER_ROLE_APPS; - $scopes = \array_merge($roles[$role]['scopes'], $key->getAttribute('scopes', [])); - - $expire = $key->getAttribute('expire'); - if (!empty($expire) && $expire < DateTime::formatTz(DateTime::now())) { - throw new AppwriteException(AppwriteException::PROJECT_KEY_EXPIRED); - } - - Authorization::setRole(Auth::USER_ROLE_APPS); - Authorization::setDefaultStatus(false); // Cancel security segmentation for API keys. - - $accessedAt = $key->getAttribute('accessedAt', ''); - if (DateTime::formatTz(DateTime::addSeconds(new \DateTime(), -APP_KEY_ACCCESS)) > $accessedAt) { - $key->setAttribute('accessedAt', DateTime::now()); - $dbForConsole->updateDocument('keys', $key->getId(), $key); - $dbForConsole->purgeCachedDocument('projects', $project->getId()); - } - - $sdkValidator = new WhiteList($servers, true); - $sdk = $request->getHeader('x-sdk-name', 'UNKNOWN'); - if ($sdkValidator->isValid($sdk)) { - $sdks = $key->getAttribute('sdks', []); - if (!in_array($sdk, $sdks)) { - array_push($sdks, $sdk); - $key->setAttribute('sdks', $sdks); - - /** Update access time as well */ - $key->setAttribute('accessedAt', Datetime::now()); - $dbForConsole->updateDocument('keys', $key->getId(), $key); - $dbForConsole->purgeCachedDocument('projects', $project->getId()); - } - } - } - } - - Authorization::setRole($role); - - foreach (Auth::getRoles($user) as $authRole) { - Authorization::setRole($authRole); - } - - $service = $route->getLabel('sdk.namespace', ''); - if (!empty($service)) { - if ( - array_key_exists($service, $project->getAttribute('services', [])) - && !$project->getAttribute('services', [])[$service] - && !(Auth::isPrivilegedUser(Authorization::getRoles()) || Auth::isAppUser(Authorization::getRoles())) - ) { - throw new AppwriteException(AppwriteException::GENERAL_SERVICE_DISABLED); - } - } - - if (!\in_array($scope, $scopes)) { - if ($project->isEmpty()) { // Check if permission is denied because project is missing - throw new AppwriteException(AppwriteException::PROJECT_NOT_FOUND); - } - - throw new AppwriteException(AppwriteException::GENERAL_UNAUTHORIZED_SCOPE, $user->getAttribute('email', 'User') . ' (role: ' . \strtolower($roles[$role]['label']) . ') missing scope (' . $scope . ')'); - } - - if (in_array('api', $route->getGroups())) { - if (false === $user->getAttribute('status')) { // Account is blocked - throw new AppwriteException(AppwriteException::USER_BLOCKED); - } - - if ($user->getAttribute('reset')) { - throw new AppwriteException(AppwriteException::USER_PASSWORD_RESET_REQUIRED); - } - - if ($mode !== APP_MODE_ADMIN) { - $mfaEnabled = $user->getAttribute('mfa', false); - $hasVerifiedAuthenticator = $user->getAttribute('totpVerification', false); - $hasVerifiedEmail = $user->getAttribute('emailVerification', false); - $hasVerifiedPhone = $user->getAttribute('phoneVerification', false); - $hasMoreFactors = $hasVerifiedEmail || $hasVerifiedPhone || $hasVerifiedAuthenticator; - $minimumFactors = ($mfaEnabled && $hasMoreFactors) ? 2 : 1; - - if (!in_array('mfa', $route->getGroups())) { - if ($session && \count($session->getAttribute('factors')) < $minimumFactors) { - throw new AppwriteException(AppwriteException::USER_MORE_FACTORS_REQUIRED); - } - } - } - } }); App::options() diff --git a/app/controllers/shared/api.php b/app/controllers/shared/api.php index 1a9c9f7380..5758a20eb1 100644 --- a/app/controllers/shared/api.php +++ b/app/controllers/shared/api.php @@ -6,7 +6,6 @@ use Appwrite\Event\Database as EventDatabase; use Appwrite\Event\Delete; use Appwrite\Event\Event; use Appwrite\Event\Func; -use Appwrite\Event\Mail; use Appwrite\Event\Messaging; use Appwrite\Extend\Exception; use Appwrite\Event\Usage; @@ -22,7 +21,9 @@ use Utopia\Database\Database; use Utopia\Database\DateTime; use Utopia\Database\Document; use Utopia\Database\Validator\Authorization; -use MaxMind\Db\Reader; +use Utopia\Config\Config; +use Utopia\Database\Helpers\Role; +use Utopia\Validator\WhiteList; $parseLabel = function (string $label, array $responsePayload, array $requestParams, Document $user) { preg_match_all('/{(.*?)}/', $label, $matches); @@ -135,7 +136,7 @@ $databaseListener = function (string $event, Document $document, Document $proje $queueForUsage ->addMetric(METRIC_DEPLOYMENTS, $value) // per project ->addMetric(METRIC_DEPLOYMENTS_STORAGE, $document->getAttribute('size') * $value) // per project - ->addMetric(str_replace(['{resourceType}', '{resourceInternalId}'], [$document->getAttribute('resourceType'), $document->getAttribute('resourceInternalId')], METRIC_FUNCTION_ID_DEPLOYMENTS), $value)// per function + ->addMetric(str_replace(['{resourceType}', '{resourceInternalId}'], [$document->getAttribute('resourceType'), $document->getAttribute('resourceInternalId')], METRIC_FUNCTION_ID_DEPLOYMENTS), $value) // per function ->addMetric(str_replace(['{resourceType}', '{resourceInternalId}'], [$document->getAttribute('resourceType'), $document->getAttribute('resourceInternalId')], METRIC_FUNCTION_ID_DEPLOYMENTS_STORAGE), $document->getAttribute('size') * $value); break; default: @@ -143,6 +144,151 @@ $databaseListener = function (string $event, Document $document, Document $proje } }; +App::init() + ->groups(['api']) + ->inject('utopia') + ->inject('request') + ->inject('dbForConsole') + ->inject('project') + ->inject('user') + ->inject('session') + ->inject('servers') + ->inject('mode') + ->action(function (App $utopia, Request $request, Database $dbForConsole, Document $project, Document $user, ?Document $session, array $servers, string $mode) { + $route = $utopia->getRoute(); + + /** + * ACL Check + */ + $role = ($user->isEmpty()) + ? Role::guests()->toString() + : Role::users()->toString(); + + // Add user roles + $memberships = $user->find('teamId', $project->getAttribute('teamId'), 'memberships'); + + if ($memberships) { + foreach ($memberships->getAttribute('roles', []) as $memberRole) { + switch ($memberRole) { + case 'owner': + $role = Auth::USER_ROLE_OWNER; + break; + case 'admin': + $role = Auth::USER_ROLE_ADMIN; + break; + case 'developer': + $role = Auth::USER_ROLE_DEVELOPER; + break; + } + } + } + + $roles = Config::getParam('roles', []); + $scope = $route->getLabel('scope', 'none'); // Allowed scope for chosen route + $scopes = $roles[$role]['scopes']; // Allowed scopes for user role + + $authKey = $request->getHeader('x-appwrite-key', ''); + + if (!empty($authKey)) { // API Key authentication + // Check if given key match project API keys + $key = $project->find('secret', $authKey, 'keys'); + + /* + * Try app auth when we have project key and no user + * Mock user to app and grant API key scopes in addition to default app scopes + */ + if ($key && $user->isEmpty()) { + $user = new Document([ + '$id' => '', + 'status' => true, + 'email' => 'app.' . $project->getId() . '@service.' . $request->getHostname(), + 'password' => '', + 'name' => $project->getAttribute('name', 'Untitled'), + ]); + + $role = Auth::USER_ROLE_APPS; + $scopes = \array_merge($roles[$role]['scopes'], $key->getAttribute('scopes', [])); + + $expire = $key->getAttribute('expire'); + if (!empty($expire) && $expire < DateTime::formatTz(DateTime::now())) { + throw new Exception(Exception::PROJECT_KEY_EXPIRED); + } + + Authorization::setRole(Auth::USER_ROLE_APPS); + Authorization::setDefaultStatus(false); // Cancel security segmentation for API keys. + + $accessedAt = $key->getAttribute('accessedAt', ''); + if (DateTime::formatTz(DateTime::addSeconds(new \DateTime(), -APP_KEY_ACCCESS)) > $accessedAt) { + $key->setAttribute('accessedAt', DateTime::now()); + $dbForConsole->updateDocument('keys', $key->getId(), $key); + $dbForConsole->purgeCachedDocument('projects', $project->getId()); + } + + $sdkValidator = new WhiteList($servers, true); + $sdk = $request->getHeader('x-sdk-name', 'UNKNOWN'); + if ($sdkValidator->isValid($sdk)) { + $sdks = $key->getAttribute('sdks', []); + if (!in_array($sdk, $sdks)) { + array_push($sdks, $sdk); + $key->setAttribute('sdks', $sdks); + + /** Update access time as well */ + $key->setAttribute('accessedAt', Datetime::now()); + $dbForConsole->updateDocument('keys', $key->getId(), $key); + $dbForConsole->purgeCachedDocument('projects', $project->getId()); + } + } + } + } + + Authorization::setRole($role); + + foreach (Auth::getRoles($user) as $authRole) { + Authorization::setRole($authRole); + } + + $service = $route->getLabel('sdk.namespace', ''); + if (!empty($service)) { + if ( + array_key_exists($service, $project->getAttribute('services', [])) + && !$project->getAttribute('services', [])[$service] + && !(Auth::isPrivilegedUser(Authorization::getRoles()) || Auth::isAppUser(Authorization::getRoles())) + ) { + throw new Exception(Exception::GENERAL_SERVICE_DISABLED); + } + } + if (!\in_array($scope, $scopes)) { + if ($project->isEmpty()) { // Check if permission is denied because project is missing + throw new Exception(Exception::PROJECT_NOT_FOUND); + } + + throw new Exception(Exception::GENERAL_UNAUTHORIZED_SCOPE, $user->getAttribute('email', 'User') . ' (role: ' . \strtolower($roles[$role]['label']) . ') missing scope (' . $scope . ')'); + } + + if (false === $user->getAttribute('status')) { // Account is blocked + throw new Exception(Exception::USER_BLOCKED); + } + + if ($user->getAttribute('reset')) { + throw new Exception(Exception::USER_PASSWORD_RESET_REQUIRED); + } + + if ($mode !== APP_MODE_ADMIN) { + $mfaEnabled = $user->getAttribute('mfa', false); + $hasVerifiedAuthenticator = $user->getAttribute('totpVerification', false); + $hasVerifiedEmail = $user->getAttribute('emailVerification', false); + $hasVerifiedPhone = $user->getAttribute('phoneVerification', false); + $hasMoreFactors = $hasVerifiedEmail || $hasVerifiedPhone || $hasVerifiedAuthenticator; + $minimumFactors = ($mfaEnabled && $hasMoreFactors) ? 2 : 1; + + if (!in_array('mfa', $route->getGroups())) { + if ($session && \count($session->getAttribute('factors')) < $minimumFactors) { + throw new Exception(Exception::USER_MORE_FACTORS_REQUIRED); + } + } + } + }); + App::init() ->groups(['api']) ->inject('utopia') @@ -212,8 +358,7 @@ App::init() $response ->addHeader('X-RateLimit-Limit', $limit) ->addHeader('X-RateLimit-Remaining', $remaining) - ->addHeader('X-RateLimit-Reset', $time) - ; + ->addHeader('X-RateLimit-Reset', $time); } $enabled = App::getEnv('_APP_OPTIONS_ABUSE', 'enabled') !== 'disabled'; @@ -253,8 +398,7 @@ App::init() $dbForProject ->on(Database::EVENT_DOCUMENT_CREATE, 'calculate-usage', fn ($event, $document) => $databaseListener($event, $document, $project, $queueForUsage, $dbForProject)) - ->on(Database::EVENT_DOCUMENT_DELETE, 'calculate-usage', fn ($event, $document) => $databaseListener($event, $document, $project, $queueForUsage, $dbForProject)) - ; + ->on(Database::EVENT_DOCUMENT_DELETE, 'calculate-usage', fn ($event, $document) => $databaseListener($event, $document, $project, $queueForUsage, $dbForProject)); $useCache = $route->getLabel('cache', false); @@ -296,7 +440,7 @@ App::init() if ($fileSecurity && !$valid) { $file = $dbForProject->getDocument('bucket_' . $bucket->getInternalId(), $fileId); } else { - $file = Authorization::skip(fn() => $dbForProject->getDocument('bucket_' . $bucket->getInternalId(), $fileId)); + $file = Authorization::skip(fn () => $dbForProject->getDocument('bucket_' . $bucket->getInternalId(), $fileId)); } if ($file->isEmpty()) { @@ -308,8 +452,7 @@ App::init() ->addHeader('Expires', \date('D, d M Y H:i:s', \time() + $timestamp) . ' GMT') ->addHeader('X-Appwrite-Cache', 'hit') ->setContentType($data['contentType']) - ->send(base64_decode($data['payload'])) - ; + ->send(base64_decode($data['payload'])); } else { $response->addHeader('X-Appwrite-Cache', 'miss'); } @@ -497,7 +640,7 @@ App::shutdown() 'resource' => $resource, 'contentType' => $response->getContentType(), 'payload' => base64_encode($data['payload']), - ]) ; + ]); $signature = md5($data); $cacheLog = Authorization::skip(fn () => $dbForProject->getDocument('cache', $key)); @@ -505,10 +648,10 @@ App::shutdown() $now = DateTime::now(); if ($cacheLog->isEmpty()) { Authorization::skip(fn () => $dbForProject->createDocument('cache', new Document([ - '$id' => $key, - 'resource' => $resource, - 'accessedAt' => $now, - 'signature' => $signature, + '$id' => $key, + 'resource' => $resource, + 'accessedAt' => $now, + 'signature' => $signature, ]))); } elseif (DateTime::formatTz(DateTime::addSeconds(new \DateTime(), -APP_CACHE_UPDATE)) > $accessedAt) { $cacheLog->setAttribute('accessedAt', $now); From de0e83f7032591ec3e163ad2a2ed7cebf83d0435 Mon Sep 17 00:00:00 2001 From: Torsten Dittmann Date: Fri, 16 Feb 2024 17:58:51 +0000 Subject: [PATCH 78/87] fix: move user and project logic from general to api hook --- app/config/errors.php | 5 - app/controllers/general.php | 8 -- app/controllers/shared/api.php | 8 +- src/Appwrite/Extend/Exception.php | 1 - tests/e2e/General/HooksTest.php | 158 ++++++++++++++++++++++++++++++ 5 files changed, 162 insertions(+), 18 deletions(-) create mode 100644 tests/e2e/General/HooksTest.php diff --git a/app/config/errors.php b/app/config/errors.php index d3f84dc353..3f12b5953a 100644 --- a/app/config/errors.php +++ b/app/config/errors.php @@ -647,11 +647,6 @@ return [ 'description' => 'Project with the requested ID already exists. Try again with a different ID or use ID.unique() to generate a unique ID.', 'code' => 409, ], - Exception::PROJECT_UNKNOWN => [ - 'name' => Exception::PROJECT_UNKNOWN, - 'description' => 'The project ID is either missing or not valid. Please check the value of the X-Appwrite-Project header to ensure the correct project ID is being used.', - 'code' => 400, - ], Exception::PROJECT_PROVIDER_DISABLED => [ 'name' => Exception::PROJECT_PROVIDER_DISABLED, 'description' => 'The chosen OAuth provider is disabled. You can enable the OAuth provider using the Appwrite console.', diff --git a/app/controllers/general.php b/app/controllers/general.php index 78cb70de02..99ed12b668 100644 --- a/app/controllers/general.php +++ b/app/controllers/general.php @@ -316,14 +316,6 @@ App::init() $locale->setDefault($localeParam); } - if ($project->isEmpty()) { - throw new AppwriteException(AppwriteException::PROJECT_NOT_FOUND); - } - - if (!empty($route->getLabel('sdk.auth', [])) && $project->isEmpty() && ($route->getLabel('scope', '') !== 'public')) { - throw new AppwriteException(AppwriteException::PROJECT_UNKNOWN); - } - $referrer = $request->getReferer(); $origin = \parse_url($request->getOrigin($referrer), PHP_URL_HOST); $protocol = \parse_url($request->getOrigin($referrer), PHP_URL_SCHEME); diff --git a/app/controllers/shared/api.php b/app/controllers/shared/api.php index 5758a20eb1..02ab0914b2 100644 --- a/app/controllers/shared/api.php +++ b/app/controllers/shared/api.php @@ -157,6 +157,10 @@ App::init() ->action(function (App $utopia, Request $request, Database $dbForConsole, Document $project, Document $user, ?Document $session, array $servers, string $mode) { $route = $utopia->getRoute(); + if ($project->isEmpty()) { + throw new Exception(Exception::PROJECT_NOT_FOUND); + } + /** * ACL Check */ @@ -308,10 +312,6 @@ App::init() $route = $utopia->getRoute(); - if ($project->isEmpty() && $route->getLabel('abuse-limit', 0) > 0) { // Abuse limit requires an active project scope - throw new Exception(Exception::PROJECT_UNKNOWN); - } - /* * Abuse Check */ diff --git a/src/Appwrite/Extend/Exception.php b/src/Appwrite/Extend/Exception.php index 348fdacc0b..eba88480c4 100644 --- a/src/Appwrite/Extend/Exception.php +++ b/src/Appwrite/Extend/Exception.php @@ -192,7 +192,6 @@ class Exception extends \Exception /** Projects */ public const PROJECT_NOT_FOUND = 'project_not_found'; - public const PROJECT_UNKNOWN = 'project_unknown'; public const PROJECT_PROVIDER_DISABLED = 'project_provider_disabled'; public const PROJECT_PROVIDER_UNSUPPORTED = 'project_provider_unsupported'; public const PROJECT_ALREADY_EXISTS = 'project_already_exists'; diff --git a/tests/e2e/General/HooksTest.php b/tests/e2e/General/HooksTest.php new file mode 100644 index 0000000000..f4933428d1 --- /dev/null +++ b/tests/e2e/General/HooksTest.php @@ -0,0 +1,158 @@ +client->setEndpoint('http://localhost'); + } + + public function testProjectHooks() + { + /** + * Test for api controllers + */ + $response = $this->client->call(Client::METHOD_GET, '/v1/locale', \array_merge([ + 'origin' => 'http://localhost', + 'content-type' => 'application/json', + ]), [ + 'project' => 'console' + ]); + + $this->assertEquals(200, $response['headers']['status-code']); + + $response = $this->client->call(Client::METHOD_GET, '/v1/locale', \array_merge([ + 'origin' => 'http://localhost', + 'content-type' => 'application/json', + ]), [ + 'project' => '$this_project_doesnt_exist' + ]); + + $this->assertEquals(404, $response['headers']['status-code']); + + /** + * Test for web controllers + */ + $response = $this->client->call(Client::METHOD_GET, headers: [ + 'origin' => 'http://localhost', + 'content-type' => 'application/json', + ], params: [ + 'project' => 'console' + ]); + + $this->assertEquals(200, $response['headers']['status-code']); + + $response = $this->client->call(Client::METHOD_GET, headers: [ + 'origin' => 'http://localhost', + 'content-type' => 'application/json', + ], params: [ + 'project' => '$this_project_doesnt_exist' + ]); + + $this->assertEquals(200, $response['headers']['status-code']); + } + + public function testUserHooks() + { + /** + * Setup blocked user + */ + $email = uniqid() . 'user@localhost.test'; + $password = 'password'; + + $response = $this->client->call(Client::METHOD_POST, '/v1/account', [ + 'origin' => 'http://localhost', + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + ], [ + 'userId' => ID::unique(), + 'email' => $email, + 'password' => $password, + ]); + + $id = $response['body']['$id']; + + $this->assertEquals(201, $response['headers']['status-code']); + + $response = $this->client->call(Client::METHOD_POST, '/v1/account/sessions/email', [ + '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']]; + $cookie = 'a_session_' . $this->getProject()['$id'] . '=' . $session; + + $response = $this->client->call(Client::METHOD_GET, '/v1/account', [ + 'origin' => 'http://localhost', + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + 'cookie' => $cookie, + ]); + + $this->assertEquals(200, $response['headers']['status-code']); + + $response = $this->client->call(Client::METHOD_PATCH, '/v1/account/status', [ + 'origin' => 'http://localhost', + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + 'cookie' => $cookie, + ], [ + 'status' => false, + ]); + + $this->assertEquals(200, $response['headers']['status-code']); + + $response = $this->client->call(Client::METHOD_GET, '/v1/account', [ + 'origin' => 'http://localhost', + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + 'cookie' => $cookie, + ]); + + $this->assertEquals(401, $response['headers']['status-code']); + + /** + * Test for api controllers + */ + $response = $this->client->call(Client::METHOD_GET, '/v1/locale', [ + 'origin' => 'http://localhost', + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + 'cookie' => $cookie, + ]); + + $this->assertEquals(401, $response['headers']['status-code']); + $this->assertEquals(Exception::USER_BLOCKED, $response['body']['type']); + + /** + * Test for web controllers + */ + $response = $this->client->call(Client::METHOD_GET, headers: [ + 'origin' => 'http://localhost', + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + 'cookie' => $cookie, + ]); + + $this->assertEquals(200, $response['headers']['status-code']); + } +} From b500c085e16a5c9f2898468d2ae02b5f04fc7d56 Mon Sep 17 00:00:00 2001 From: Torsten Dittmann Date: Fri, 16 Feb 2024 18:00:49 +0000 Subject: [PATCH 79/87] revert: unnecessary style changes --- app/controllers/shared/api.php | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/app/controllers/shared/api.php b/app/controllers/shared/api.php index 02ab0914b2..810d778a21 100644 --- a/app/controllers/shared/api.php +++ b/app/controllers/shared/api.php @@ -358,7 +358,8 @@ App::init() $response ->addHeader('X-RateLimit-Limit', $limit) ->addHeader('X-RateLimit-Remaining', $remaining) - ->addHeader('X-RateLimit-Reset', $time); + ->addHeader('X-RateLimit-Reset', $time) + ; } $enabled = App::getEnv('_APP_OPTIONS_ABUSE', 'enabled') !== 'disabled'; @@ -398,7 +399,8 @@ App::init() $dbForProject ->on(Database::EVENT_DOCUMENT_CREATE, 'calculate-usage', fn ($event, $document) => $databaseListener($event, $document, $project, $queueForUsage, $dbForProject)) - ->on(Database::EVENT_DOCUMENT_DELETE, 'calculate-usage', fn ($event, $document) => $databaseListener($event, $document, $project, $queueForUsage, $dbForProject)); + ->on(Database::EVENT_DOCUMENT_DELETE, 'calculate-usage', fn ($event, $document) => $databaseListener($event, $document, $project, $queueForUsage, $dbForProject)) + ; $useCache = $route->getLabel('cache', false); @@ -452,7 +454,8 @@ App::init() ->addHeader('Expires', \date('D, d M Y H:i:s', \time() + $timestamp) . ' GMT') ->addHeader('X-Appwrite-Cache', 'hit') ->setContentType($data['contentType']) - ->send(base64_decode($data['payload'])); + ->send(base64_decode($data['payload'])) + ; } else { $response->addHeader('X-Appwrite-Cache', 'miss'); } From 85b0ec7f7710d6fea277c83f6750705863a39e76 Mon Sep 17 00:00:00 2001 From: Jake Barnby Date: Mon, 19 Feb 2024 17:33:47 +1300 Subject: [PATCH 80/87] Temp bump console for SDK fixes --- .gitmodules | 2 +- app/console | 2 +- app/init.php | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.gitmodules b/.gitmodules index e259782156..bed812bea0 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,4 +1,4 @@ [submodule "app/console"] path = app/console url = https://github.com/appwrite/console - branch = 1.5.x + branch = chore-update-sdk diff --git a/app/console b/app/console index 1d942975d1..44edd461c6 160000 --- a/app/console +++ b/app/console @@ -1 +1 @@ -Subproject commit 1d942975d16397a252a58ab730fb57819d679213 +Subproject commit 44edd461c6036cb462047c1424b80f0903cdc15e diff --git a/app/init.php b/app/init.php index db4fe4d669..4e75b5198b 100644 --- a/app/init.php +++ b/app/init.php @@ -112,8 +112,8 @@ const APP_LIMIT_LIST_DEFAULT = 25; // Default maximum number of items to return const APP_KEY_ACCCESS = 24 * 60 * 60; // 24 hours const APP_USER_ACCCESS = 24 * 60 * 60; // 24 hours const APP_CACHE_UPDATE = 24 * 60 * 60; // 24 hours -const APP_CACHE_BUSTER = 329; -const APP_VERSION_STABLE = '1.4.13'; +const APP_CACHE_BUSTER = 330; +const APP_VERSION_STABLE = '1.5.0'; const APP_DATABASE_ATTRIBUTE_EMAIL = 'email'; const APP_DATABASE_ATTRIBUTE_ENUM = 'enum'; const APP_DATABASE_ATTRIBUTE_IP = 'ip'; From 5747b33e38ba9df804dba3bd2355139f9a2d1d4d Mon Sep 17 00:00:00 2001 From: Jake Barnby Date: Tue, 20 Feb 2024 23:15:46 +1300 Subject: [PATCH 81/87] Make self-hosted and cloud specs consistent --- .env | 3 +- app/config/errors.php | 5 +++ app/config/regions.php | 71 +++++++++++++++++++++++++++++-- app/config/runtimes.php | 11 +---- app/controllers/api/functions.php | 8 ++++ app/controllers/api/projects.php | 9 +++- src/Appwrite/Extend/Exception.php | 2 + 7 files changed, 95 insertions(+), 14 deletions(-) diff --git a/.env b/.env index 0b5ddf24c6..f89386b5cf 100644 --- a/.env +++ b/.env @@ -102,4 +102,5 @@ _APP_ASSISTANT_OPENAI_API_KEY= _APP_MESSAGE_SMS_TEST_DSN= _APP_MESSAGE_EMAIL_TEST_DSN= _APP_MESSAGE_PUSH_TEST_DSN= -_APP_WEBHOOK_MAX_FAILED_ATTEMPTS=10 \ No newline at end of file +_APP_WEBHOOK_MAX_FAILED_ATTEMPTS=10 +_APP_PROJECT_REGIONS=default \ No newline at end of file diff --git a/app/config/errors.php b/app/config/errors.php index 3f12b5953a..c0efc2097d 100644 --- a/app/config/errors.php +++ b/app/config/errors.php @@ -718,6 +718,11 @@ return [ 'description' => 'You can\'t delete default template. If you are trying to reset your template changes, you can ignore this error as it\'s already been reset.', 'code' => 401, ], + Exception::PROJECT_REGION_UNSUPPORTED => [ + 'name' => Exception::PROJECT_REGION_UNSUPPORTED, + 'description' => 'The requested region is either inactive or unsupported. Please check the value of the _APP_REGIONS environment variable.', + 'code' => 400, + ], Exception::WEBHOOK_NOT_FOUND => [ 'name' => Exception::WEBHOOK_NOT_FOUND, 'description' => 'Webhook with the requested ID could not be found.', diff --git a/app/config/regions.php b/app/config/regions.php index 0dc5fab1ed..b40667ab5e 100644 --- a/app/config/regions.php +++ b/app/config/regions.php @@ -2,8 +2,73 @@ return [ 'default' => [ - 'name' => 'Default', - 'default' => true, + '$id' => 'default', + 'name' => 'Frankfurt', 'disabled' => false, - ] + 'flag' => 'de', + 'default' => true, + ], + 'fra' => [ + '$id' => 'fra', + 'name' => 'Frankfurt', + 'disabled' => false, + 'flag' => 'de', + 'default' => true, + ], + 'nyc' => [ + '$id' => 'nyc', + 'name' => 'New York', + 'disabled' => true, + 'flag' => 'us', + 'default' => true, + ], + 'sfo' => [ + '$id' => 'sfo', + 'name' => 'San Francisco', + 'disabled' => true, + 'flag' => 'us', + 'default' => true, + ], + 'blr' => [ + '$id' => 'blr', + 'name' => 'Banglore', + 'disabled' => true, + 'flag' => 'in', + 'default' => true, + ], + 'lon' => [ + '$id' => 'lon', + 'name' => 'London', + 'disabled' => true, + 'flag' => 'gb', + 'default' => true, + ], + 'ams' => [ + '$id' => 'ams', + 'name' => 'Amsterdam', + 'disabled' => true, + 'flag' => 'nl', + 'default' => true, + ], + 'sgp' => [ + '$id' => 'sgp', + 'name' => 'Singapore', + 'disabled' => true, + 'flag' => 'sg', + 'default' => true, + ], + 'tor' => [ + '$id' => 'tor', + 'name' => 'Toronto', + 'disabled' => true, + 'flag' => 'ca', + 'default' => true, + ], + 'syd' => [ + '$id' => 'syd', + 'name' => 'Sydney', + 'disabled' => true, + 'flag' => 'au', + 'default' => true, + ], ]; diff --git a/app/config/runtimes.php b/app/config/runtimes.php index 2cd73c1b70..a55e0b3fb4 100644 --- a/app/config/runtimes.php +++ b/app/config/runtimes.php @@ -1,16 +1,9 @@ getAll(true, $allowList); - -return $runtimes; +return (new Runtimes('v3'))->getAll(); diff --git a/app/controllers/api/functions.php b/app/controllers/api/functions.php index 21d5928267..11eaa49393 100644 --- a/app/controllers/api/functions.php +++ b/app/controllers/api/functions.php @@ -172,6 +172,14 @@ App::post('/v1/functions') ->action(function (string $functionId, string $name, string $runtime, array $execute, array $events, string $schedule, int $timeout, bool $enabled, bool $logging, string $entrypoint, string $commands, string $installationId, string $providerRepositoryId, string $providerBranch, bool $providerSilentMode, string $providerRootDirectory, string $templateRepository, string $templateOwner, string $templateRootDirectory, string $templateBranch, Request $request, Response $response, Database $dbForProject, Document $project, Document $user, Event $queueForEvents, Build $queueForBuilds, Database $dbForConsole, GitHub $github) use ($redeployVcs) { $functionId = ($functionId == 'unique()') ? ID::unique() : $functionId; + $allowList = empty(App::getEnv('_APP_FUNCTIONS_RUNTIMES')) + ? [] + : \explode(',', App::getEnv('_APP_FUNCTIONS_RUNTIMES')); + + if (!empty($allowList) && !\in_array($runtime, $allowList)) { + throw new Exception(Exception::FUNCTION_RUNTIME_UNSUPPORTED, 'Runtime "' . $runtime . '" is not supported'); + } + // build from template $template = new Document([]); if ( diff --git a/app/controllers/api/projects.php b/app/controllers/api/projects.php index bea893064f..428e97ff50 100644 --- a/app/controllers/api/projects.php +++ b/app/controllers/api/projects.php @@ -78,13 +78,20 @@ App::post('/v1/projects') ->inject('pools') ->action(function (string $projectId, string $name, string $teamId, string $region, string $description, string $logo, string $url, string $legalName, string $legalCountry, string $legalState, string $legalCity, string $legalAddress, string $legalTaxId, Response $response, Database $dbForConsole, Cache $cache, Group $pools) { - $team = $dbForConsole->getDocument('teams', $teamId); if ($team->isEmpty()) { throw new Exception(Exception::TEAM_NOT_FOUND); } + $allowList = empty(App::getEnv('_APP_PROJECT_REGIONS')) + ? [] + : \explode(',', App::getEnv('_APP_PROJECT_REGIONS')); + + if (!empty($allowList) && !\in_array($region, $allowList)) { + throw new Exception(Exception::PROJECT_REGION_UNSUPPORTED, 'Region "' . $region . '" is not supported'); + } + $auth = Config::getParam('auth', []); $auths = ['limit' => 0, 'maxSessions' => APP_LIMIT_USER_SESSIONS_DEFAULT, 'passwordHistory' => 0, 'passwordDictionary' => false, 'duration' => Auth::TOKEN_EXPIRATION_LOGIN_LONG, 'personalDataCheck' => false]; foreach ($auth as $index => $method) { diff --git a/src/Appwrite/Extend/Exception.php b/src/Appwrite/Extend/Exception.php index eba88480c4..b508dbcc51 100644 --- a/src/Appwrite/Extend/Exception.php +++ b/src/Appwrite/Extend/Exception.php @@ -204,6 +204,8 @@ class Exception extends \Exception public const PROJECT_TEMPLATE_DEFAULT_DELETION = 'project_template_default_deletion'; + public const PROJECT_REGION_UNSUPPORTED = 'project_region_unsupported'; + /** Webhooks */ public const WEBHOOK_NOT_FOUND = 'webhook_not_found'; From eb4d6f8e2072b82b0997e85960b7c42adc246b72 Mon Sep 17 00:00:00 2001 From: Jake Barnby Date: Tue, 20 Feb 2024 23:23:07 +1300 Subject: [PATCH 82/87] Update specs --- app/config/specs/open-api3-latest-client.json | 2 +- app/config/specs/open-api3-latest-console.json | 2 +- app/config/specs/open-api3-latest-server.json | 2 +- app/config/specs/swagger2-latest-client.json | 2 +- app/config/specs/swagger2-latest-console.json | 2 +- app/config/specs/swagger2-latest-server.json | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/app/config/specs/open-api3-latest-client.json b/app/config/specs/open-api3-latest-client.json index 2d06c0b92d..775403199d 100644 --- a/app/config/specs/open-api3-latest-client.json +++ b/app/config/specs/open-api3-latest-client.json @@ -1 +1 @@ -{"openapi":"3.0.0","info":{"version":"1.4.13","title":"Appwrite","description":"Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https:\/\/appwrite.io\/docs](https:\/\/appwrite.io\/docs)","termsOfService":"https:\/\/appwrite.io\/policy\/terms","contact":{"name":"Appwrite Team","url":"https:\/\/appwrite.io\/support","email":"team@appwrite.io"},"license":{"name":"BSD-3-Clause","url":"https:\/\/raw.githubusercontent.com\/appwrite\/appwrite\/master\/LICENSE"}},"servers":[{"url":"https:\/\/cloud.appwrite.io\/v1"}],"paths":{"\/account":{"get":{"summary":"Get account","operationId":"accountGet","tags":["account"],"description":"Get the currently logged in user.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"get","weight":22,"cookies":false,"type":"","demo":"account\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]},"post":{"summary":"Create account","operationId":"accountCreate","tags":["account"],"description":"Use this endpoint to allow a new user to register a new account in your project. After the user registration completes successfully, you can use the [\/account\/verfication](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createVerification) route to start verifying the user email address. To allow the new user to login to their new account, you need to create a new [account session](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createEmailSession).","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"create","weight":7,"cookies":false,"type":"","demo":"account\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"New user password. Must be between 8 and 256 chars.","x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/account\/email":{"patch":{"summary":"Update email","operationId":"accountUpdateEmail","tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateEmail","weight":29,"cookies":false,"type":"","demo":"account\/update-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","x-example":"password"}},"required":["email","password"]}}}}}},"\/account\/identities":{"get":{"summary":"List Identities","operationId":"accountListIdentities","tags":["account"],"description":"Get the list of identities for the currently logged in user.","responses":{"200":{"description":"Identities List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/identityList"}}}}},"x-appwrite":{"method":"listIdentities","weight":13,"cookies":false,"type":"","demo":"account\/list-identities.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-identities.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/identities","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, provider, providerUid, providerEmail, providerAccessTokenExpiry","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/identities\/{identityId}":{"delete":{"summary":"Delete identity","operationId":"accountDeleteIdentity","tags":["account"],"description":"Delete an identity by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIdentity","weight":14,"cookies":false,"type":"","demo":"account\/delete-identity.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-identity.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"identityId","description":"Identity ID.","required":true,"schema":{"type":"string","x-example":"[IDENTITY_ID]"},"in":"path"}]}},"\/account\/jwt":{"post":{"summary":"Create JWT","operationId":"accountCreateJWT","tags":["account"],"description":"Use this endpoint to create a JSON Web Token. You can use the resulting JWT to authenticate on behalf of the current user when working with the Appwrite server-side API and SDKs. The JWT secret is valid for 15 minutes from its creation and will be invalid if the user will logout in that time frame.","responses":{"201":{"description":"JWT","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/jwt"}}}}},"x-appwrite":{"method":"createJWT","weight":21,"cookies":false,"type":"","demo":"account\/create-j-w-t.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-jwt.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"accounts.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"List logs","operationId":"accountListLogs","tags":["account"],"description":"Get the list of latest security activity logs for the currently logged in user. Each log returns user IP address, location and date and time of log.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listLogs","weight":25,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/mfa":{"patch":{"summary":"Update MFA","operationId":"accountUpdateMFA","tags":["account"],"description":"","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateMFA","weight":42,"cookies":false,"type":"","demo":"account\/update-m-f-a.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-mfa.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"mfa":{"type":"boolean","description":"Enable or disable MFA.","x-example":false}},"required":["mfa"]}}}}}},"\/account\/mfa\/challenge":{"post":{"summary":"Create 2FA Challenge","operationId":"accountCreate2FAChallenge","tags":["account"],"description":"","responses":{"201":{"description":"MFA Challenge","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/mfaChallenge"}}}}},"x-appwrite":{"method":"create2FAChallenge","weight":47,"cookies":false,"type":"","demo":"account\/create2f-a-challenge.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-2fa-challenge.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},token:{param-token}","scope":"accounts.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"factor":{"type":"string","description":"Factor used for verification.","x-example":"totp","enum":["totp","phone","email"],"x-enum-name":null,"x-enum-keys":[]}},"required":["factor"]}}}}},"put":{"summary":"Create MFA Challenge (confirmation)","operationId":"accountUpdateChallenge","tags":["account"],"description":"","responses":{"204":{"description":"No content","content":{"":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateChallenge","weight":48,"cookies":false,"type":"","demo":"account\/update-challenge.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-challenge.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"challengeId":{"type":"string","description":"ID of the challenge.","x-example":"[CHALLENGE_ID]"},"otp":{"type":"string","description":"Valid verification token.","x-example":"[OTP]"}},"required":["challengeId","otp"]}}}}}},"\/account\/mfa\/factors":{"get":{"summary":"List Factors","operationId":"accountListFactors","tags":["account"],"description":"","responses":{"200":{"description":"MFAFactors","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/mfaFactors"}}}}},"x-appwrite":{"method":"listFactors","weight":43,"cookies":false,"type":"","demo":"account\/list-factors.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-factors.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/account\/mfa\/{type}":{"post":{"summary":"Add Authenticator","operationId":"accountAddAuthenticator","tags":["account"],"description":"","responses":{"200":{"description":"MFAType","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/mfaType"}}}}},"x-appwrite":{"method":"addAuthenticator","weight":44,"cookies":false,"type":"","demo":"account\/add-authenticator.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/add-authenticator.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"type","description":"Type of authenticator.","required":true,"schema":{"type":"string","x-example":"totp","enum":["totp"],"x-enum-name":null,"x-enum-keys":[]},"in":"path"}]},"put":{"summary":"Verify Authenticator","operationId":"accountVerifyAuthenticator","tags":["account"],"description":"","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"verifyAuthenticator","weight":45,"cookies":false,"type":"","demo":"account\/verify-authenticator.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/verify-authenticator.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"type","description":"Type of authenticator.","required":true,"schema":{"type":"string","x-example":"totp","enum":["totp"],"x-enum-name":null,"x-enum-keys":[]},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"otp":{"type":"string","description":"Valid verification token.","x-example":"[OTP]"}},"required":["otp"]}}}}},"delete":{"summary":"Delete Authenticator","operationId":"accountDeleteAuthenticator","tags":["account"],"description":"","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"deleteAuthenticator","weight":46,"cookies":false,"type":"","demo":"account\/delete-authenticator.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-mfa.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"type","description":"Type of authenticator.","required":true,"schema":{"type":"string","x-example":"totp","enum":["totp"],"x-enum-name":null,"x-enum-keys":[]},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"otp":{"type":"string","description":"Valid verification token.","x-example":"[OTP]"}},"required":["otp"]}}}}}},"\/account\/name":{"patch":{"summary":"Update name","operationId":"accountUpdateName","tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateName","weight":27,"cookies":false,"type":"","demo":"account\/update-name.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-name.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["name"]}}}}}},"\/account\/password":{"patch":{"summary":"Update password","operationId":"accountUpdatePassword","tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePassword","weight":28,"cookies":false,"type":"","demo":"account\/update-password.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-password.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"password":{"type":"string","description":"New user password. Must be at least 8 chars.","x-example":null},"oldPassword":{"type":"string","description":"Current user password. Must be at least 8 chars.","x-example":"password"}},"required":["password"]}}}}}},"\/account\/phone":{"patch":{"summary":"Update phone","operationId":"accountUpdatePhone","tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createPhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePhone","weight":30,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","x-example":"password"}},"required":["phone","password"]}}}}}},"\/account\/prefs":{"get":{"summary":"Get account preferences","operationId":"accountGetPrefs","tags":["account"],"description":"Get the preferences as a key-value object for the currently logged in user.","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"getPrefs","weight":23,"cookies":false,"type":"","demo":"account\/get-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/prefs","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]},"patch":{"summary":"Update preferences","operationId":"accountUpdatePrefs","tags":["account"],"description":"Update currently logged in user account preferences. The object you pass is stored as is, and replaces any previous value. The maximum allowed prefs size is 64kB and throws error if exceeded.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePrefs","weight":31,"cookies":false,"type":"","demo":"account\/update-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/prefs","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"prefs":{"type":"object","description":"Prefs key-value JSON object.","x-example":"{}"}},"required":["prefs"]}}}}}},"\/account\/recovery":{"post":{"summary":"Create password recovery","operationId":"accountCreateRecovery","tags":["account"],"description":"Sends the user an email with a temporary secret key for password reset. When the user clicks the confirmation link he is redirected back to your app password reset URL with the secret key and email address values attached to the URL query string. Use the query string params to submit a request to the [PUT \/account\/recovery](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateRecovery) endpoint to complete the process. The verification link sent to the user's email address is valid for 1 hour.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createRecovery","weight":36,"cookies":false,"type":"","demo":"account\/create-recovery.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-recovery.md","rate-limit":10,"rate-time":3600,"rate-key":["url:{url},email:{param-email}","url:{url},ip:{ip}"],"scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"url":{"type":"string","description":"URL to redirect the user back to your app from the recovery email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"}},"required":["email","url"]}}}}},"put":{"summary":"Create password recovery (confirmation)","operationId":"accountUpdateRecovery","tags":["account"],"description":"Use this endpoint to complete the user account password reset. Both the **userId** and **secret** arguments will be passed as query parameters to the redirect URL you have provided when sending your request to the [POST \/account\/recovery](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createRecovery) endpoint.\n\nPlease note that in order to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) the only valid redirect URLs are the ones from domains you have set when adding your platforms in the console interface.","responses":{"200":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"updateRecovery","weight":37,"cookies":false,"type":"","demo":"account\/update-recovery.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-recovery.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid reset token.","x-example":"[SECRET]"},"password":{"type":"string","description":"New user password. Must be between 8 and 256 chars.","x-example":null}},"required":["userId","secret","password"]}}}}}},"\/account\/sessions":{"get":{"summary":"List sessions","operationId":"accountListSessions","tags":["account"],"description":"Get the list of active sessions across different devices for the currently logged in user.","responses":{"200":{"description":"Sessions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/sessionList"}}}}},"x-appwrite":{"method":"listSessions","weight":24,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/sessions","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]},"delete":{"summary":"Delete sessions","operationId":"accountDeleteSessions","tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":35,"cookies":false,"type":"","demo":"account\/delete-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-sessions.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/account\/sessions\/anonymous":{"post":{"summary":"Create anonymous session","operationId":"accountCreateAnonymousSession","tags":["account"],"description":"Use this endpoint to allow a new user to register an anonymous account in your project. This route will also create a new session for the user. To allow the new user to convert an anonymous account to a normal account, you need to update its [email and password](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateEmail) or create an [OAuth2 session](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#CreateOAuth2Session).","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"createAnonymousSession","weight":20,"cookies":false,"type":"","demo":"account\/create-anonymous-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-anonymous.md","rate-limit":50,"rate-time":3600,"rate-key":"ip:{ip}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/sessions\/email":{"post":{"summary":"Create email password session","operationId":"accountCreateEmailPasswordSession","tags":["account"],"description":"Allow the user to login into their account by providing a valid email and password combination. This route will create a new session for the user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"createEmailPasswordSession","weight":8,"cookies":false,"type":"","demo":"account\/create-email-password-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-email-password.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","x-example":"password"}},"required":["email","password"]}}}}}},"\/account\/sessions\/magic-url":{"put":{"summary":"Create session (deprecated)","operationId":"accountUpdateMagicURLSession","tags":["account"],"description":"Use this endpoint to create a session from token. Provide the **userId** and **secret** parameters from the successful response of authentication flows initiated by token creation. For example, magic URL and phone login.","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateMagicURLSession","weight":17,"cookies":false,"type":"","demo":"account\/update-magic-u-r-l-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session.md","rate-limit":10,"rate-time":3600,"rate-key":"ip:{ip},userId:{param-userId}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/account\/sessions\/oauth2\/{provider}":{"get":{"summary":"Create OAuth2 session","operationId":"accountCreateOAuth2Session","tags":["account"],"description":"Allow the user to login to their account using the OAuth2 provider of their choice. Each OAuth2 provider should be enabled from the Appwrite console first. Use the success and failure arguments to provide a redirect URL's back to your app when login is completed.\n\nIf there is already an active session, the new session will be attached to the logged-in account. If there are no active sessions, the server will attempt to look for a user with the same email address as the email received from the OAuth2 provider and attach the new session to the existing user. If no matching user is found - the server will create a new user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).\n","responses":{"301":{"description":"File"}},"x-appwrite":{"method":"createOAuth2Session","weight":9,"cookies":false,"type":"webAuth","demo":"account\/create-o-auth2session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-oauth2.md","rate-limit":50,"rate-time":3600,"rate-key":"ip:{ip}","scope":"sessions.write","platforms":["client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"provider","description":"OAuth2 Provider. Currently, supported providers are: amazon, apple, auth0, authentik, autodesk, bitbucket, bitly, box, dailymotion, discord, disqus, dropbox, etsy, facebook, github, gitlab, google, linkedin, microsoft, notion, oidc, okta, paypal, paypalSandbox, podio, salesforce, slack, spotify, stripe, tradeshift, tradeshiftBox, twitch, wordpress, yahoo, yammer, yandex, zoho, zoom.","required":true,"schema":{"type":"string","x-example":"amazon","enum":["amazon","apple","auth0","authentik","autodesk","bitbucket","bitly","box","dailymotion","discord","disqus","dropbox","etsy","facebook","github","gitlab","google","linkedin","microsoft","notion","oidc","okta","paypal","paypalSandbox","podio","salesforce","slack","spotify","stripe","tradeshift","tradeshiftBox","twitch","wordpress","yahoo","yammer","yandex","zoho","zoom","mock"],"x-enum-name":"OAuthProvider","x-enum-keys":[]},"in":"path"},{"name":"success","description":"URL to redirect back to your app after a successful login attempt. Only URLs from hostnames in your project's platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","required":false,"schema":{"type":"string","format":"url","x-example":"https:\/\/example.com","default":""},"in":"query"},{"name":"failure","description":"URL to redirect back to your app after a failed login attempt. Only URLs from hostnames in your project's platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","required":false,"schema":{"type":"string","format":"url","x-example":"https:\/\/example.com","default":""},"in":"query"},{"name":"token","description":"Include token credentials in the final redirect, useful for server-side integrations, or when cookies are not available.","required":false,"schema":{"type":"boolean","x-example":false,"default":false},"in":"query"},{"name":"scopes","description":"A list of custom OAuth2 scopes. Check each provider internal docs for a list of supported scopes. Maximum of 100 scopes are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/sessions\/token":{"post":{"summary":"Create session","operationId":"accountCreateSession","tags":["account"],"description":"Use this endpoint to create a session from token. Provide the **userId** and **secret** parameters from the successful response of authentication flows initiated by token creation. For example, magic URL and phone login.","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"createSession","weight":18,"cookies":false,"type":"","demo":"account\/create-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session.md","rate-limit":10,"rate-time":3600,"rate-key":"ip:{ip},userId:{param-userId}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Secret of a token generated by login methods. For example, the `createMagicURLToken` or `createPhoneToken` methods.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/account\/sessions\/{sessionId}":{"get":{"summary":"Get session","operationId":"accountGetSession","tags":["account"],"description":"Use this endpoint to get a logged in user's session using a Session ID. Inputting 'current' will return the current session being used.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"getSession","weight":26,"cookies":false,"type":"","demo":"account\/get-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-session.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/sessions","offline-key":"{sessionId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to get the current device session.","required":true,"schema":{"type":"string","x-example":"[SESSION_ID]"},"in":"path"}]},"patch":{"summary":"Update (or renew) a session","operationId":"accountUpdateSession","tags":["account"],"description":"Extend session's expiry to increase it's lifespan. Extending a session is useful when session length is short such as 5 minutes.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateSession","weight":34,"cookies":false,"type":"","demo":"account\/update-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-session.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to update the current device session.","required":true,"schema":{"type":"string","x-example":"[SESSION_ID]"},"in":"path"}]},"delete":{"summary":"Delete session","operationId":"accountDeleteSession","tags":["account"],"description":"Logout the user. Use 'current' as the session ID to logout on this device, use a session ID to logout on another device. If you're looking to logout the user on all devices, use [Delete Sessions](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#deleteSessions) instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSession","weight":33,"cookies":false,"type":"","demo":"account\/delete-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-session.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to delete the current device session.","required":true,"schema":{"type":"string","x-example":"[SESSION_ID]"},"in":"path"}]}},"\/account\/status":{"patch":{"summary":"Update status","operationId":"accountUpdateStatus","tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateStatus","weight":32,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/account\/targets\/push":{"post":{"summary":"Create a push target","operationId":"accountCreatePushTarget","tags":["account"],"description":"","responses":{"201":{"description":"Target","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/target"}}}}},"x-appwrite":{"method":"createPushTarget","weight":50,"cookies":false,"type":"","demo":"account\/create-push-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"targetId":{"type":"string","description":"Target ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[TARGET_ID]"},"identifier":{"type":"string","description":"The target identifier (token, email, phone etc.)","x-example":"[IDENTIFIER]"},"providerId":{"type":"string","description":"Provider ID. Message will be sent to this target from the specified provider ID. If no provider ID is set the first setup provider will be used.","x-example":"[PROVIDER_ID]"}},"required":["targetId","identifier"]}}}}}},"\/account\/targets\/{targetId}\/push":{"put":{"summary":"Update a push target","operationId":"accountUpdatePushTarget","tags":["account"],"description":"","responses":{"200":{"description":"Target","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/target"}}}}},"x-appwrite":{"method":"updatePushTarget","weight":51,"cookies":false,"type":"","demo":"account\/update-push-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[]}],"parameters":[{"name":"targetId","description":"Target ID.","required":true,"schema":{"type":"string","x-example":"[TARGET_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"identifier":{"type":"string","description":"The target identifier (token, email, phone etc.)","x-example":"[IDENTIFIER]"}},"required":["identifier"]}}}}},"delete":{"summary":"Delete a push target","operationId":"accountDeletePushTarget","tags":["account"],"description":"","responses":{"204":{"description":"No content","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/target"}}}}},"x-appwrite":{"method":"deletePushTarget","weight":52,"cookies":false,"type":"","demo":"account\/delete-push-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[]}],"parameters":[{"name":"targetId","description":"Target ID.","required":true,"schema":{"type":"string","x-example":"[TARGET_ID]"},"in":"path"}]}},"\/account\/tokens\/email":{"post":{"summary":"Create email token (OTP)","operationId":"accountCreateEmailToken","tags":["account"],"description":"Sends the user an email with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [POST \/v1\/account\/sessions\/token](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createSession) endpoint to complete the login process. The secret sent to the user's email is valid for 15 minutes.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createEmailToken","weight":16,"cookies":false,"type":"","demo":"account\/create-email-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-token-email.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"phrase":{"type":"boolean","description":"Toggle for security phrase. If enabled, email will be send with a randomly generated phrase and the phrase will also be included in the response. Confirming phrases match increases the security of your authentication flow.","x-example":false}},"required":["userId","email"]}}}}}},"\/account\/tokens\/magic-url":{"post":{"summary":"Create magic URL token","operationId":"accountCreateMagicURLToken","tags":["account"],"description":"Sends the user an email with a secret key for creating a session. If the provided user ID has not been registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [POST \/v1\/account\/sessions\/token](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createSession) endpoint to complete the login process. The link sent to the user's email address is valid for 1 hour. If you are on a mobile device you can leave the URL parameter empty, so that the login completion will be handled by your Appwrite instance by default.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).\n","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createMagicURLToken","weight":15,"cookies":false,"type":"","demo":"account\/create-magic-u-r-l-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-token-magic-url.md","rate-limit":60,"rate-time":3600,"rate-key":["url:{url},email:{param-email}","url:{url},ip:{ip}"],"scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"url":{"type":"string","description":"URL to redirect the user back to your app from the magic URL login. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"},"phrase":{"type":"boolean","description":"Toggle for security phrase. If enabled, email will be send with a randomly generated phrase and the phrase will also be included in the response. Confirming phrases match increases the security of your authentication flow.","x-example":false}},"required":["userId","email"]}}}}}},"\/account\/tokens\/phone":{"post":{"summary":"Create phone token","operationId":"accountCreatePhoneToken","tags":["account"],"description":"Sends the user an SMS with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [POST \/v1\/account\/sessions\/token](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createSession) endpoint to complete the login process. The secret sent to the user's phone is valid for 15 minutes.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createPhoneToken","weight":19,"cookies":false,"type":"","demo":"account\/create-phone-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-token-phone.md","rate-limit":10,"rate-time":3600,"rate-key":["url:{url},phone:{param-phone}","url:{url},ip:{ip}"],"scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"}},"required":["userId","phone"]}}}}}},"\/account\/verification":{"post":{"summary":"Create email verification","operationId":"accountCreateVerification","tags":["account"],"description":"Use this endpoint to send a verification message to your user email address to confirm they are the valid owners of that address. Both the **userId** and **secret** arguments will be passed as query parameters to the URL you have provided to be attached to the verification email. The provided URL should redirect the user back to your app and allow you to complete the verification process by verifying both the **userId** and **secret** parameters. Learn more about how to [complete the verification process](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateVerification). The verification link sent to the user's email address is valid for 7 days.\n\nPlease note that in order to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md), the only valid redirect URLs are the ones from domains you have set when adding your platforms in the console interface.\n","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createVerification","weight":38,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"url":{"type":"string","description":"URL to redirect the user back to your app from the verification email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"}},"required":["url"]}}}}},"put":{"summary":"Create email verification (confirmation)","operationId":"accountUpdateVerification","tags":["account"],"description":"Use this endpoint to complete the user email verification process. Use both the **userId** and **secret** parameters that were attached to your app URL to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"updateVerification","weight":39,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/account\/verification\/phone":{"post":{"summary":"Create phone verification","operationId":"accountCreatePhoneVerification","tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updatePhone) endpoint. Learn more about how to [complete the verification process](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createPhoneVerification","weight":40,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":["url:{url},userId:{userId}","url:{url},ip:{ip}"],"scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]},"put":{"summary":"Create phone verification (confirmation)","operationId":"accountUpdatePhoneVerification","tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"updatePhoneVerification","weight":41,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/avatars\/browsers\/{code}":{"get":{"summary":"Get browser icon","operationId":"avatarsGetBrowser","tags":["avatars"],"description":"You can use this endpoint to show different browser icons to your users. The code argument receives the browser code as it appears in your user [GET \/account\/sessions](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#getSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getBrowser","weight":54,"cookies":false,"type":"location","demo":"avatars\/get-browser.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-browser.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"code","description":"Browser Code.","required":true,"schema":{"type":"string","x-example":"aa","enum":["aa","an","ch","ci","cm","cr","ff","sf","mf","ps","oi","om","op","on"],"x-enum-name":"Browser","x-enum-keys":["Avant Browser","Android WebView Beta","Google Chrome","Google Chrome (iOS)","Google Chrome (Mobile)","Chromium","Mozilla Firefox","Safari","Mobile Safari","Microsoft Edge","Microsoft Edge (iOS)","Opera Mini","Opera","Opera (Next)"]},"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"}]}},"\/avatars\/credit-cards\/{code}":{"get":{"summary":"Get credit card icon","operationId":"avatarsGetCreditCard","tags":["avatars"],"description":"The credit card endpoint will return you the icon of the credit card provider you need. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getCreditCard","weight":53,"cookies":false,"type":"location","demo":"avatars\/get-credit-card.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-credit-card.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"code","description":"Credit Card Code. Possible values: amex, argencard, cabal, censosud, diners, discover, elo, hipercard, jcb, mastercard, naranja, targeta-shopping, union-china-pay, visa, mir, maestro.","required":true,"schema":{"type":"string","x-example":"amex","enum":["amex","argencard","cabal","censosud","diners","discover","elo","hipercard","jcb","mastercard","naranja","targeta-shopping","union-china-pay","visa","mir","maestro"],"x-enum-name":"CreditCard","x-enum-keys":["American Express","Argencard","Cabal","Consosud","Diners Club","Discover","Elo","Hipercard","JCB","Mastercard","Naranja","Tarjeta Shopping","Union China Pay","Visa","MIR","Maestro"]},"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"}]}},"\/avatars\/favicon":{"get":{"summary":"Get favicon","operationId":"avatarsGetFavicon","tags":["avatars"],"description":"Use this endpoint to fetch the favorite icon (AKA favicon) of any remote website URL.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFavicon","weight":57,"cookies":false,"type":"location","demo":"avatars\/get-favicon.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-favicon.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"url","description":"Website URL which you want to fetch the favicon from.","required":true,"schema":{"type":"string","format":"url","x-example":"https:\/\/example.com"},"in":"query"}]}},"\/avatars\/flags\/{code}":{"get":{"summary":"Get country flag","operationId":"avatarsGetFlag","tags":["avatars"],"description":"You can use this endpoint to show different country flags icons to your users. The code argument receives the 2 letter country code. Use width, height and quality arguments to change the output settings. Country codes follow the [ISO 3166-1](https:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFlag","weight":55,"cookies":false,"type":"location","demo":"avatars\/get-flag.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-flag.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"code","description":"Country Code. ISO Alpha-2 country code format.","required":true,"schema":{"type":"string","x-example":"af","enum":["af","ao","al","ad","ae","ar","am","ag","au","at","az","bi","be","bj","bf","bd","bg","bh","bs","ba","by","bz","bo","br","bb","bn","bt","bw","cf","ca","ch","cl","cn","ci","cm","cd","cg","co","km","cv","cr","cu","cy","cz","de","dj","dm","dk","do","dz","ec","eg","er","es","ee","et","fi","fj","fr","fm","ga","gb","ge","gh","gn","gm","gw","gq","gr","gd","gt","gy","hn","hr","ht","hu","id","in","ie","ir","iq","is","il","it","jm","jo","jp","kz","ke","kg","kh","ki","kn","kr","kw","la","lb","lr","ly","lc","li","lk","ls","lt","lu","lv","ma","mc","md","mg","mv","mx","mh","mk","ml","mt","mm","me","mn","mz","mr","mu","mw","my","na","ne","ng","ni","nl","no","np","nr","nz","om","pk","pa","pe","ph","pw","pg","pl","kp","pt","py","qa","ro","ru","rw","sa","sd","sn","sg","sb","sl","sv","sm","so","rs","ss","st","sr","sk","si","se","sz","sc","sy","td","tg","th","tj","tm","tl","to","tt","tn","tr","tv","tz","ug","ua","uy","us","uz","va","vc","ve","vn","vu","ws","ye","za","zm","zw"],"x-enum-name":"Flag","x-enum-keys":["Afghanistan","Angola","Albania","Andorra","United Arab Emirates","Argentina","Armenia","Antigua and Barbuda","Australia","Austria","Azerbaijan","Burundi","Belgium","Benin","Burkina Faso","Bangladesh","Bulgaria","Bahrain","Bahamas","Bosnia and Herzegovina","Belarus","Belize","Bolivia","Brazil","Barbados","Brunei Darussalam","Bhutan","Botswana","Central African Republic","Canada","Switzerland","Chile","China","C\u00f4te d'Ivoire","Cameroon","Democratic Republic of the Congo","Republic of the Congo","Colombia","Comoros","Cape Verde","Costa Rica","Cuba","Cyprus","Czech Republic","Germany","Djibouti","Dominica","Denmark","Dominican Republic","Algeria","Ecuador","Egypt","Eritrea","Spain","Estonia","Ethiopia","Finland","Fiji","France","Micronesia (Federated States of)","Gabon","United Kingdom","Georgia","Ghana","Guinea","Gambia","Guinea-Bissau","Equatorial Guinea","Greece","Grenada","Guatemala","Guyana","Honduras","Croatia","Haiti","Hungary","Indonesia","India","Ireland","Iran (Islamic Republic of)","Iraq","Iceland","Israel","Italy","Jamaica","Jordan","Japan","Kazakhstan","Kenya","Kyrgyzstan","Cambodia","Kiribati","Saint Kitts and Nevis","South Korea","Kuwait","Lao People's Democratic Republic","Lebanon","Liberia","Libya","Saint Lucia","Liechtenstein","Sri Lanka","Lesotho","Lithuania","Luxembourg","Latvia","Morocco","Monaco","Moldova","Madagascar","Maldives","Mexico","Marshall Islands","North Macedonia","Mali","Malta","Myanmar","Montenegro","Mongolia","Mozambique","Mauritania","Mauritius","Malawi","Malaysia","Namibia","Niger","Nigeria","Nicaragua","Netherlands","Norway","Nepal","Nauru","New Zealand","Oman","Pakistan","Panama","Peru","Philippines","Palau","Papua New Guinea","Poland","North Korea","Portugal","Paraguay","Qatar","Romania","Russia","Rwanda","Saudi Arabia","Sudan","Senegal","Singapore","Solomon Islands","Sierra Leone","El Salvador","San Marino","Somalia","Serbia","South Sudan","Sao Tome and Principe","Suriname","Slovakia","Slovenia","Sweden","Eswatini","Seychelles","Syria","Chad","Togo","Thailand","Tajikistan","Turkmenistan","Timor-Leste","Tonga","Trinidad and Tobago","Tunisia","Turkey","Tuvalu","Tanzania","Uganda","Ukraine","Uruguay","United States","Uzbekistan","Vatican City","Saint Vincent and the Grenadines","Venezuela","Vietnam","Vanuatu","Samoa","Yemen","South Africa","Zambia","Zimbabwe"]},"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"}]}},"\/avatars\/image":{"get":{"summary":"Get image from URL","operationId":"avatarsGetImage","tags":["avatars"],"description":"Use this endpoint to fetch a remote image URL and crop it to any image size you want. This endpoint is very useful if you need to crop and display remote images in your app or in case you want to make sure a 3rd party image is properly served using a TLS protocol.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getImage","weight":56,"cookies":false,"type":"location","demo":"avatars\/get-image.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-image.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"url","description":"Image URL which you want to crop.","required":true,"schema":{"type":"string","format":"url","x-example":"https:\/\/example.com"},"in":"query"},{"name":"width","description":"Resize preview image width, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get user initials","operationId":"avatarsGetInitials","tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getInitials","weight":59,"cookies":false,"type":"location","demo":"avatars\/get-initials.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-initials.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"name","description":"Full Name. When empty, current user name or email will be used. Max length: 128 chars.","required":false,"schema":{"type":"string","x-example":"[NAME]","default":""},"in":"query"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":500},"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":500},"in":"query"},{"name":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"schema":{"type":"string","default":""},"in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR code","operationId":"avatarsGetQR","tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getQR","weight":58,"cookies":false,"type":"location","demo":"avatars\/get-q-r.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-qr.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"text","description":"Plain text to be converted to QR code image.","required":true,"schema":{"type":"string","x-example":"[TEXT]"},"in":"query"},{"name":"size","description":"QR code size. Pass an integer between 1 to 1000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":1,"default":400},"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":1},"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"schema":{"type":"boolean","x-example":false,"default":false},"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List documents","operationId":"databasesListDocuments","tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/documentList"}}}}},"x-appwrite":{"method":"listDocuments","weight":103,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"post":{"summary":"Create document","operationId":"databasesCreateDocument","tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"createDocument","weight":102,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, only the current user is granted all permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get document","operationId":"databasesGetDocument","tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"getDocument","weight":104,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"patch":{"summary":"Update document","operationId":"databasesUpdateDocument","tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"updateDocument","weight":106,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete document","operationId":"databasesDeleteDocument","tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":107,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List executions","operationId":"functionsListExecutions","tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/executionList"}}}}},"x-appwrite":{"method":"listExecutions","weight":283,"cookies":false,"type":"","demo":"functions\/list-executions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-executions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, responseStatusCode, duration","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create execution","operationId":"functionsCreateExecution","tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/execution"}}}}},"x-appwrite":{"method":"createExecution","weight":282,"cookies":false,"type":"","demo":"functions\/create-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-execution.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"body":{"type":"string","description":"HTTP body of execution. Default value is empty string.","x-example":"[BODY]"},"async":{"type":"boolean","description":"Execute code in the background. Default value is false.","x-example":false},"path":{"type":"string","description":"HTTP path of execution. Path can include query params. Default value is \/","x-example":"[PATH]"},"method":{"type":"string","description":"HTTP method of execution. Default value is GET.","x-example":"GET","enum":["GET","POST","PUT","PATCH","DELETE","OPTIONS"],"x-enum-name":"ExecutionMethod","x-enum-keys":[]},"headers":{"type":"object","description":"HTTP headers of execution. Defaults to empty.","x-example":"{}"}}}}}}}},"\/functions\/{functionId}\/executions\/{executionId}":{"get":{"summary":"Get execution","operationId":"functionsGetExecution","tags":["functions"],"description":"Get a function execution log by its unique ID.","responses":{"200":{"description":"Execution","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/execution"}}}}},"x-appwrite":{"method":"getExecution","weight":284,"cookies":false,"type":"","demo":"functions\/get-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-execution.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"executionId","description":"Execution ID.","required":true,"schema":{"type":"string","x-example":"[EXECUTION_ID]"},"in":"path"}]}},"\/graphql":{"post":{"summary":"GraphQL endpoint","operationId":"graphqlQuery","tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/any"}}}}},"x-appwrite":{"method":"query","weight":304,"cookies":false,"type":"graphql","demo":"graphql\/query.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/graphql\/mutation":{"post":{"summary":"GraphQL endpoint","operationId":"graphqlMutation","tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/any"}}}}},"x-appwrite":{"method":"mutation","weight":303,"cookies":false,"type":"graphql","demo":"graphql\/mutation.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/locale":{"get":{"summary":"Get user locale","operationId":"localeGet","tags":["locale"],"description":"Get the current user location based on IP. Returns an object with user country code, country name, continent name, continent code, ip address and suggested currency. You can use the locale header to get the data in a supported language.\n\n([IP Geolocation by DB-IP](https:\/\/db-ip.com))","responses":{"200":{"description":"Locale","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/locale"}}}}},"x-appwrite":{"method":"get","weight":111,"cookies":false,"type":"","demo":"locale\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-locale.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/localed","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/locale\/codes":{"get":{"summary":"List Locale Codes","operationId":"localeListCodes","tags":["locale"],"description":"List of all locale codes in [ISO 639-1](https:\/\/en.wikipedia.org\/wiki\/List_of_ISO_639-1_codes).","responses":{"200":{"description":"Locale codes list","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/localeCodeList"}}}}},"x-appwrite":{"method":"listCodes","weight":112,"cookies":false,"type":"","demo":"locale\/list-codes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-locale-codes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/localeCode","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/locale\/continents":{"get":{"summary":"List continents","operationId":"localeListContinents","tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/continentList"}}}}},"x-appwrite":{"method":"listContinents","weight":116,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/continents","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List countries","operationId":"localeListCountries","tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountries","weight":113,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/countries","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU countries","operationId":"localeListCountriesEU","tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountriesEU","weight":114,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/countries\/eu","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List countries phone codes","operationId":"localeListCountriesPhones","tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/phoneList"}}}}},"x-appwrite":{"method":"listCountriesPhones","weight":115,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/countries\/phones","offline-key":"","offline-response-key":"countryCode","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List currencies","operationId":"localeListCurrencies","tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/currencyList"}}}}},"x-appwrite":{"method":"listCurrencies","weight":117,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/currencies","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List languages","operationId":"localeListLanguages","tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/languageList"}}}}},"x-appwrite":{"method":"listLanguages","weight":118,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/languages","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/messaging\/topics\/{topicId}\/subscribers":{"post":{"summary":"Create a subscriber.","operationId":"messagingCreateSubscriber","tags":["messaging"],"description":"","responses":{"201":{"description":"Subscriber","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/subscriber"}}}}},"x-appwrite":{"method":"createSubscriber","weight":355,"cookies":false,"type":"","demo":"messaging\/create-subscriber.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-subscriber.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.write","platforms":["server","client","console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[],"Session":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID to subscribe to.","required":true,"schema":{"type":"string","x-example":"[TOPIC_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"subscriberId":{"type":"string","description":"Subscriber ID. Choose a custom Subscriber ID or a new Subscriber ID.","x-example":"[SUBSCRIBER_ID]"},"targetId":{"type":"string","description":"Target ID. The target ID to link to the specified Topic ID.","x-example":"[TARGET_ID]"}},"required":["subscriberId","targetId"]}}}}}},"\/messaging\/topics\/{topicId}\/subscribers\/{subscriberId}":{"delete":{"summary":"Delete a subscriber.","operationId":"messagingDeleteSubscriber","tags":["messaging"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSubscriber","weight":359,"cookies":false,"type":"","demo":"messaging\/delete-subscriber.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-subscriber.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.write","platforms":["server","client","console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[],"Session":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID subscribed to.","required":true,"schema":{"type":"string","x-example":"[TOPIC_ID]"},"in":"path"},{"name":"subscriberId","description":"Subscriber ID.","required":true,"schema":{"type":"string","x-example":"[SUBSCRIBER_ID]"},"in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files":{"get":{"summary":"List files","operationId":"storageListFiles","tags":["storage"],"description":"Get a list of all the user files. You can use the query params to filter your results.","responses":{"200":{"description":"Files List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/fileList"}}}}},"x-appwrite":{"method":"listFiles","weight":193,"cookies":false,"type":"","demo":"storage\/list-files.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/list-files.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create file","operationId":"storageCreateFile","tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"createFile","weight":192,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"}],"requestBody":{"content":{"multipart\/form-data":{"schema":{"type":"object","properties":{"fileId":{"type":"string","description":"File ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[FILE_ID]","x-upload-id":true},"file":{"type":"string","description":"Binary file. Appwrite SDKs provide helpers to handle file input. [Learn about file input](https:\/\/appwrite.io\/docs\/storage#file-input).","x-example":null},"permissions":{"type":"array","description":"An array of permission strings. By default, only the current user is granted all permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["fileId","file"]}}}}}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get file","operationId":"storageGetFile","tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"getFile","weight":194,"cookies":false,"type":"","demo":"storage\/get-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File ID.","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"}]},"put":{"summary":"Update file","operationId":"storageUpdateFile","tags":["storage"],"description":"Update a file by its unique ID. Only users with write permissions have access to update this resource.","responses":{"200":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"updateFile","weight":198,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File unique ID.","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Name of the file","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission string. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":199,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File ID.","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/download":{"get":{"summary":"Get file for download","operationId":"storageGetFileDownload","tags":["storage"],"description":"Get a file content by its unique ID. The endpoint response return with a 'Content-Disposition: attachment' header that tells the browser to start downloading the file to user downloads directory.","responses":{"200":{"description":"File"}},"x-appwrite":{"method":"getFileDownload","weight":196,"cookies":false,"type":"location","demo":"storage\/get-file-download.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-download.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File ID.","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/preview":{"get":{"summary":"Get file preview","operationId":"storageGetFilePreview","tags":["storage"],"description":"Get a file preview image. Currently, this method supports preview for image files (jpg, png, and gif), other supported formats, like pdf, docs, slides, and spreadsheets, will return the file icon image. You can also pass query string arguments for cutting and resizing your preview image. Preview is supported only for image files smaller than 10MB.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFilePreview","weight":195,"cookies":false,"type":"location","demo":"storage\/get-file-preview.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-preview.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File ID","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"},{"name":"width","description":"Resize preview image width, Pass an integer between 0 to 4000.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 4000.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"gravity","description":"Image crop gravity. Can be one of center,top-left,top,top-right,left,right,bottom-left,bottom,bottom-right","required":false,"schema":{"type":"string","x-example":"center","enum":["center","top-left","top","top-right","left","right","bottom-left","bottom","bottom-right"],"x-enum-name":"ImageGravity","x-enum-keys":[],"default":"center"},"in":"query"},{"name":"quality","description":"Preview image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"borderWidth","description":"Preview image border in pixels. Pass an integer between 0 to 100. Defaults to 0.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"borderColor","description":"Preview image border color. Use a valid HEX color, no # is needed for prefix.","required":false,"schema":{"type":"string","default":""},"in":"query"},{"name":"borderRadius","description":"Preview image border radius in pixels. Pass an integer between 0 to 4000.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"opacity","description":"Preview image opacity. Only works with images having an alpha channel (like png). Pass a number between 0 to 1.","required":false,"schema":{"type":"number","format":"float","x-example":0,"default":1},"in":"query"},{"name":"rotation","description":"Preview image rotation in degrees. Pass an integer between -360 and 360.","required":false,"schema":{"type":"integer","format":"int32","x-example":-360,"default":0},"in":"query"},{"name":"background","description":"Preview image background color. Only works with transparent images (png). Use a valid HEX color, no # is needed for prefix.","required":false,"schema":{"type":"string","default":""},"in":"query"},{"name":"output","description":"Output format type (jpeg, jpg, png, gif and webp).","required":false,"schema":{"type":"string","x-example":"jpg","enum":["jpg","jpeg","gif","png","webp"],"x-enum-name":"ImageFormat","x-enum-keys":[],"default":""},"in":"query"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/view":{"get":{"summary":"Get file for view","operationId":"storageGetFileView","tags":["storage"],"description":"Get a file content by its unique ID. This endpoint is similar to the download method but returns with no 'Content-Disposition: attachment' header.","responses":{"200":{"description":"File"}},"x-appwrite":{"method":"getFileView","weight":197,"cookies":false,"type":"location","demo":"storage\/get-file-view.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-view.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File ID.","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"}]}},"\/teams":{"get":{"summary":"List teams","operationId":"teamsList","tags":["teams"],"description":"Get a list of all the teams in which the current user is a member. You can use the parameters to filter your results.","responses":{"200":{"description":"Teams List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/teamList"}}}}},"x-appwrite":{"method":"list","weight":203,"cookies":false,"type":"","demo":"teams\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-teams.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total, billingPlan","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create team","operationId":"teamsCreate","tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"create","weight":202,"cookies":false,"type":"","demo":"teams\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/create-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"teamId":{"type":"string","description":"Team ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[TEAM_ID]"},"name":{"type":"string","description":"Team name. Max length: 128 chars.","x-example":"[NAME]"},"roles":{"type":"array","description":"Array of strings. Use this param to set the roles in the team for the user who created it. The default role is **owner**. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}}}}},"\/teams\/{teamId}":{"get":{"summary":"Get team","operationId":"teamsGet","tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"get","weight":204,"cookies":false,"type":"","demo":"teams\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams","offline-key":"{teamId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}]},"put":{"summary":"Update name","operationId":"teamsUpdateName","tags":["teams"],"description":"Update the team's name by its unique ID.","responses":{"200":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"updateName","weight":206,"cookies":false,"type":"","demo":"teams\/update-name.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-name.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams","offline-key":"{teamId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"New team name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["name"]}}}}},"delete":{"summary":"Delete team","operationId":"teamsDelete","tags":["teams"],"description":"Delete a team using its ID. Only team members with the owner role can delete the team.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":208,"cookies":false,"type":"","demo":"teams\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/delete-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}]}},"\/teams\/{teamId}\/memberships":{"get":{"summary":"List team memberships","operationId":"teamsListMemberships","tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"listMemberships","weight":210,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/memberships","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create team membership","operationId":"teamsCreateMembership","tags":["teams"],"description":"Invite a new member to join your team. Provide an ID for existing users, or invite unregistered users using an email or phone number. If initiated from a Client SDK, Appwrite will send an email or sms with a link to join the team to the invited user, and an account will be created for them if one doesn't exist. If initiated from a Server SDK, the new member will be added automatically to the team.\n\nYou only need to provide one of a user ID, email, or phone number. Appwrite will prioritize accepting the user ID > email > phone number if you provide more than one of these parameters.\n\nUse the `url` parameter to redirect the user from the invitation email to your app. After the user is redirected, use the [Update Team Membership Status](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/teams#updateMembershipStatus) endpoint to allow the user to accept the invitation to the team. \n\nPlease note that to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) Appwrite will accept the only redirect URLs under the domains you have added as a platform on the Appwrite Console.\n","responses":{"201":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"createMembership","weight":209,"cookies":false,"type":"","demo":"teams\/create-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/create-team-membership.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"email":{"type":"string","description":"Email of the new team member.","x-example":"email@example.com"},"userId":{"type":"string","description":"ID of the user to be added to a team.","x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"roles":{"type":"array","description":"Array of strings. Use this param to set the user roles in the team. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"},"name":{"type":"string","description":"Name of the new team member. Max length: 128 chars.","x-example":"[NAME]"}},"required":["roles"]}}}}}},"\/teams\/{teamId}\/memberships\/{membershipId}":{"get":{"summary":"Get team membership","operationId":"teamsGetMembership","tags":["teams"],"description":"Get a team member by the membership unique id. All team members have read access for this resource.","responses":{"200":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"getMembership","weight":211,"cookies":false,"type":"","demo":"teams\/get-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-member.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/memberships","offline-key":"{membershipId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"schema":{"type":"string","x-example":"[MEMBERSHIP_ID]"},"in":"path"}]},"patch":{"summary":"Update membership","operationId":"teamsUpdateMembership","tags":["teams"],"description":"Modify the roles of a team member. Only team members with the owner role have access to this endpoint. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions).\n","responses":{"200":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"updateMembership","weight":212,"cookies":false,"type":"","demo":"teams\/update-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"schema":{"type":"string","x-example":"[MEMBERSHIP_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"roles":{"type":"array","description":"An array of strings. Use this param to set the user's roles in the team. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["roles"]}}}}},"delete":{"summary":"Delete team membership","operationId":"teamsDeleteMembership","tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":214,"cookies":false,"type":"","demo":"teams\/delete-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/delete-team-membership.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"schema":{"type":"string","x-example":"[MEMBERSHIP_ID]"},"in":"path"}]}},"\/teams\/{teamId}\/memberships\/{membershipId}\/status":{"patch":{"summary":"Update team membership status","operationId":"teamsUpdateMembershipStatus","tags":["teams"],"description":"Use this endpoint to allow a user to accept an invitation to join a team after being redirected back to your app from the invitation email received by the user.\n\nIf the request is successful, a session for the user is automatically created.\n","responses":{"200":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"updateMembershipStatus","weight":213,"cookies":false,"type":"","demo":"teams\/update-membership-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"public","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"schema":{"type":"string","x-example":"[MEMBERSHIP_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Secret key.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/teams\/{teamId}\/prefs":{"get":{"summary":"Get team preferences","operationId":"teamsGetPrefs","tags":["teams"],"description":"Get the team's shared preferences by its unique ID. If a preference doesn't need to be shared by all team members, prefer storing them in [user preferences](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#getPrefs).","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"getPrefs","weight":205,"cookies":false,"type":"","demo":"teams\/get-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/prefs","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}]},"put":{"summary":"Update preferences","operationId":"teamsUpdatePrefs","tags":["teams"],"description":"Update the team's preferences by its unique ID. The object you pass is stored as is and replaces any previous value. The maximum allowed prefs size is 64kB and throws an error if exceeded.","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"updatePrefs","weight":207,"cookies":false,"type":"","demo":"teams\/update-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/prefs","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"prefs":{"type":"object","description":"Prefs key-value JSON object.","x-example":"{}"}},"required":["prefs"]}}}}}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"project","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]},{"name":"proxy","description":"The Proxy Service allows you to configure actions for your domains beyond DNS configuration.","x-globalAttributes":[]},{"name":"graphql","description":"The GraphQL API allows you to query and mutate your Appwrite server using GraphQL.","x-globalAttributes":[]},{"name":"console","description":"The Console service allows you to interact with console relevant informations.","x-globalAttributes":[]},{"name":"migrations","description":"The Migrations service allows you to migrate third-party data to your Appwrite project.","x-globalAttributes":[]},{"name":"messaging","description":"The Messaging service allows you to send messages to any provider type (SMTP, push notification, SMS, etc.).","x-globalAttributes":[]}],"components":{"schemas":{"any":{"description":"Any","type":"object","additionalProperties":true},"error":{"description":"Error","type":"object","properties":{"message":{"type":"string","description":"Error message.","x-example":"Not found"},"code":{"type":"string","description":"Error code.","x-example":"404"},"type":{"type":"string","description":"Error type. You can learn more about all the error types at https:\/\/appwrite.io\/docs\/error-codes#errorTypes","x-example":"not_found"},"version":{"type":"string","description":"Server version number.","x-example":"1.0"}},"required":["message","code","type","version"]},"documentList":{"description":"Documents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of documents documents that matched your query.","x-example":5,"format":"int32"},"documents":{"type":"array","description":"List of documents.","items":{"$ref":"#\/components\/schemas\/document"},"x-example":""}},"required":["total","documents"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of sessions documents that matched your query.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"$ref":"#\/components\/schemas\/session"},"x-example":""}},"required":["total","sessions"]},"identityList":{"description":"Identities List","type":"object","properties":{"total":{"type":"integer","description":"Total number of identities documents that matched your query.","x-example":5,"format":"int32"},"identities":{"type":"array","description":"List of identities.","items":{"$ref":"#\/components\/schemas\/identity"},"x-example":""}},"required":["total","identities"]},"logList":{"description":"Logs List","type":"object","properties":{"total":{"type":"integer","description":"Total number of logs documents that matched your query.","x-example":5,"format":"int32"},"logs":{"type":"array","description":"List of logs.","items":{"$ref":"#\/components\/schemas\/log"},"x-example":""}},"required":["total","logs"]},"fileList":{"description":"Files List","type":"object","properties":{"total":{"type":"integer","description":"Total number of files documents that matched your query.","x-example":5,"format":"int32"},"files":{"type":"array","description":"List of files.","items":{"$ref":"#\/components\/schemas\/file"},"x-example":""}},"required":["total","files"]},"teamList":{"description":"Teams List","type":"object","properties":{"total":{"type":"integer","description":"Total number of teams documents that matched your query.","x-example":5,"format":"int32"},"teams":{"type":"array","description":"List of teams.","items":{"$ref":"#\/components\/schemas\/team"},"x-example":""}},"required":["total","teams"]},"membershipList":{"description":"Memberships List","type":"object","properties":{"total":{"type":"integer","description":"Total number of memberships documents that matched your query.","x-example":5,"format":"int32"},"memberships":{"type":"array","description":"List of memberships.","items":{"$ref":"#\/components\/schemas\/membership"},"x-example":""}},"required":["total","memberships"]},"executionList":{"description":"Executions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of executions documents that matched your query.","x-example":5,"format":"int32"},"executions":{"type":"array","description":"List of executions.","items":{"$ref":"#\/components\/schemas\/execution"},"x-example":""}},"required":["total","executions"]},"countryList":{"description":"Countries List","type":"object","properties":{"total":{"type":"integer","description":"Total number of countries documents that matched your query.","x-example":5,"format":"int32"},"countries":{"type":"array","description":"List of countries.","items":{"$ref":"#\/components\/schemas\/country"},"x-example":""}},"required":["total","countries"]},"continentList":{"description":"Continents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of continents documents that matched your query.","x-example":5,"format":"int32"},"continents":{"type":"array","description":"List of continents.","items":{"$ref":"#\/components\/schemas\/continent"},"x-example":""}},"required":["total","continents"]},"languageList":{"description":"Languages List","type":"object","properties":{"total":{"type":"integer","description":"Total number of languages documents that matched your query.","x-example":5,"format":"int32"},"languages":{"type":"array","description":"List of languages.","items":{"$ref":"#\/components\/schemas\/language"},"x-example":""}},"required":["total","languages"]},"currencyList":{"description":"Currencies List","type":"object","properties":{"total":{"type":"integer","description":"Total number of currencies documents that matched your query.","x-example":5,"format":"int32"},"currencies":{"type":"array","description":"List of currencies.","items":{"$ref":"#\/components\/schemas\/currency"},"x-example":""}},"required":["total","currencies"]},"phoneList":{"description":"Phones List","type":"object","properties":{"total":{"type":"integer","description":"Total number of phones documents that matched your query.","x-example":5,"format":"int32"},"phones":{"type":"array","description":"List of phones.","items":{"$ref":"#\/components\/schemas\/phone"},"x-example":""}},"required":["total","phones"]},"localeCodeList":{"description":"Locale codes list","type":"object","properties":{"total":{"type":"integer","description":"Total number of localeCodes documents that matched your query.","x-example":5,"format":"int32"},"localeCodes":{"type":"array","description":"List of localeCodes.","items":{"$ref":"#\/components\/schemas\/localeCode"},"x-example":""}},"required":["total","localeCodes"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"user":{"description":"User","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"password":{"type":"string","description":"Hashed user password.","x-example":"$argon2id$v=19$m=2048,t=4,p=3$aUZjLnliVWRINmFNTWMudg$5S+x+7uA31xFnrHFT47yFwcJeaP0w92L\/4LdgrVRXxE","nullable":true},"hash":{"type":"string","description":"Password hashing algorithm.","x-example":"argon2","nullable":true},"hashOptions":{"type":"object","description":"Password hashing algorithm configuration.","x-example":{},"items":{"oneOf":[{"$ref":"#\/components\/schemas\/algoArgon2"},{"$ref":"#\/components\/schemas\/algoScrypt"},{"$ref":"#\/components\/schemas\/algoScryptModified"},{"$ref":"#\/components\/schemas\/algoBcrypt"},{"$ref":"#\/components\/schemas\/algoPhpass"},{"$ref":"#\/components\/schemas\/algoSha"},{"$ref":"#\/components\/schemas\/algoMd5"}]},"nullable":true},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"labels":{"type":"array","description":"Labels for the user.","items":{"type":"string"},"x-example":["vip"]},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"mfa":{"type":"boolean","description":"Multi factor authentication status.","x-example":true},"totp":{"type":"boolean","description":"TOTP status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"$ref":"#\/components\/schemas\/preferences"}},"targets":{"type":"array","description":"A user-owned message receiver. A single user may have multiple e.g. emails, phones, and a browser. Each target is registered with a single provider.","items":{"$ref":"#\/components\/schemas\/target"},"x-example":[]},"accessedAt":{"type":"string","description":"Most recent access date in ISO 8601 format. This attribute is only updated again after 24 hours.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","$updatedAt","name","registration","status","labels","passwordUpdate","email","phone","emailVerification","phoneVerification","mfa","totp","prefs","targets","accessedAt"]},"algoMd5":{"description":"AlgoMD5","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"md5"}},"required":["type"]},"algoSha":{"description":"AlgoSHA","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"sha"}},"required":["type"]},"algoPhpass":{"description":"AlgoPHPass","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"phpass"}},"required":["type"]},"algoBcrypt":{"description":"AlgoBcrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"bcrypt"}},"required":["type"]},"algoScrypt":{"description":"AlgoScrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scrypt"},"costCpu":{"type":"integer","description":"CPU complexity of computed hash.","x-example":8,"format":"int32"},"costMemory":{"type":"integer","description":"Memory complexity of computed hash.","x-example":14,"format":"int32"},"costParallel":{"type":"integer","description":"Parallelization of computed hash.","x-example":1,"format":"int32"},"length":{"type":"integer","description":"Length used to compute hash.","x-example":64,"format":"int32"}},"required":["type","costCpu","costMemory","costParallel","length"]},"algoScryptModified":{"description":"AlgoScryptModified","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scryptMod"},"salt":{"type":"string","description":"Salt used to compute hash.","x-example":"UxLMreBr6tYyjQ=="},"saltSeparator":{"type":"string","description":"Separator used to compute hash.","x-example":"Bw=="},"signerKey":{"type":"string","description":"Key used to compute hash.","x-example":"XyEKE9RcTDeLEsL\/RjwPDBv\/RqDl8fb3gpYEOQaPihbxf1ZAtSOHCjuAAa7Q3oHpCYhXSN9tizHgVOwn6krflQ=="}},"required":["type","salt","saltSeparator","signerKey"]},"algoArgon2":{"description":"AlgoArgon2","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"argon2"},"memoryCost":{"type":"integer","description":"Memory used to compute hash.","x-example":65536,"format":"int32"},"timeCost":{"type":"integer","description":"Amount of time consumed to compute hash","x-example":4,"format":"int32"},"threads":{"type":"integer","description":"Number of threads used to compute hash.","x-example":3,"format":"int32"}},"required":["type","memoryCost","timeCost","threads"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true},"factors":{"type":"array","description":"Returns a list of active session factors.","items":{"type":"string"},"x-example":["email"]},"secret":{"type":"string","description":"Secret used to authenticate the user. Only included if the request was made with an API key","x-example":"5e5bb8c16897e"}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current","factors","secret"]},"identity":{"description":"Identity","type":"object","properties":{"$id":{"type":"string","description":"Identity ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Identity creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Identity update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"provider":{"type":"string","description":"Identity Provider.","x-example":"email"},"providerUid":{"type":"string","description":"ID of the User in the Identity Provider.","x-example":"5e5bb8c16897e"},"providerEmail":{"type":"string","description":"Email of the User in the Identity Provider.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Identity Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Identity Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"}},"required":["$id","$createdAt","$updatedAt","userId","provider","providerUid","providerEmail","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"phrase":{"type":"string","description":"Security phrase of a token. Empty if security phrase was not requested when creating a token. It includes randomly generated phrase which is also sent in the external resource such as email.","x-example":"Golden Fox"}},"required":["$id","$createdAt","userId","secret","expire","phrase"]},"jwt":{"description":"JWT","type":"object","properties":{"jwt":{"type":"string","description":"JWT encoded string.","x-example":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c"}},"required":["jwt"]},"locale":{"description":"Locale","type":"object","properties":{"ip":{"type":"string","description":"User IP address.","x-example":"127.0.0.1"},"countryCode":{"type":"string","description":"Country code in [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) two-character format","x-example":"US"},"country":{"type":"string","description":"Country name. This field support localization.","x-example":"United States"},"continentCode":{"type":"string","description":"Continent code. A two character continent code \"AF\" for Africa, \"AN\" for Antarctica, \"AS\" for Asia, \"EU\" for Europe, \"NA\" for North America, \"OC\" for Oceania, and \"SA\" for South America.","x-example":"NA"},"continent":{"type":"string","description":"Continent name. This field support localization.","x-example":"North America"},"eu":{"type":"boolean","description":"True if country is part of the European Union.","x-example":false},"currency":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format","x-example":"USD"}},"required":["ip","countryCode","country","continentCode","continent","eu","currency"]},"localeCode":{"description":"LocaleCode","type":"object","properties":{"code":{"type":"string","description":"Locale codes in [ISO 639-1](https:\/\/en.wikipedia.org\/wiki\/List_of_ISO_639-1_codes)","x-example":"en-us"},"name":{"type":"string","description":"Locale name","x-example":"US"}},"required":["code","name"]},"file":{"description":"File","type":"object","properties":{"$id":{"type":"string","description":"File ID.","x-example":"5e5ea5c16897e"},"bucketId":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"},"prefs":{"type":"object","description":"Team preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"$ref":"#\/components\/schemas\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","total","prefs"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"mfa":{"type":"boolean","description":"Multi factor authentication status, true if the user has MFA enabled or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":["owner"]}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","mfa","roles"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"requestMethod":{"type":"string","description":"HTTP request method type.","x-example":"GET"},"requestPath":{"type":"string","description":"HTTP request path and query.","x-example":"\/articles?id=5"},"requestHeaders":{"type":"array","description":"HTTP response headers as a key-value object. This will return only whitelisted headers. All headers are returned if execution is created as synchronous.","items":{"$ref":"#\/components\/schemas\/headers"},"x-example":[{"Content-Type":"application\/json"}]},"responseStatusCode":{"type":"integer","description":"HTTP response status code.","x-example":200,"format":"int32"},"responseBody":{"type":"string","description":"HTTP response body. This will return empty unless execution is created as synchronous.","x-example":"Developers are awesome."},"responseHeaders":{"type":"array","description":"HTTP response headers as a key-value object. This will return only whitelisted headers. All headers are returned if execution is created as synchronous.","items":{"$ref":"#\/components\/schemas\/headers"},"x-example":[{"Content-Type":"application\/json"}]},"logs":{"type":"string","description":"Function logs. Includes the last 4,000 characters. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"errors":{"type":"string","description":"Function errors. Includes the last 4,000 characters. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"Function execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","requestMethod","requestPath","requestHeaders","responseStatusCode","responseBody","responseHeaders","logs","errors","duration"]},"country":{"description":"Country","type":"object","properties":{"name":{"type":"string","description":"Country name.","x-example":"United States"},"code":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"}},"required":["name","code"]},"continent":{"description":"Continent","type":"object","properties":{"name":{"type":"string","description":"Continent name.","x-example":"Europe"},"code":{"type":"string","description":"Continent two letter code.","x-example":"EU"}},"required":["name","code"]},"language":{"description":"Language","type":"object","properties":{"name":{"type":"string","description":"Language name.","x-example":"Italian"},"code":{"type":"string","description":"Language two-character ISO 639-1 codes.","x-example":"it"},"nativeName":{"type":"string","description":"Language native name.","x-example":"Italiano"}},"required":["name","code","nativeName"]},"currency":{"description":"Currency","type":"object","properties":{"symbol":{"type":"string","description":"Currency symbol.","x-example":"$"},"name":{"type":"string","description":"Currency name.","x-example":"US dollar"},"symbolNative":{"type":"string","description":"Currency native symbol.","x-example":"$"},"decimalDigits":{"type":"integer","description":"Number of decimal digits.","x-example":2,"format":"int32"},"rounding":{"type":"number","description":"Currency digit rounding.","x-example":0,"format":"double"},"code":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format.","x-example":"USD"},"namePlural":{"type":"string","description":"Currency plural name","x-example":"US dollars"}},"required":["symbol","name","symbolNative","decimalDigits","rounding","code","namePlural"]},"phone":{"description":"Phone","type":"object","properties":{"code":{"type":"string","description":"Phone code.","x-example":"+1"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["code","countryCode","countryName"]},"headers":{"description":"Headers","type":"object","properties":{"name":{"type":"string","description":"Header name.","x-example":"Content-Type"},"value":{"type":"string","description":"Header value.","x-example":"application\/json"}},"required":["name","value"]},"mfaChallenge":{"description":"MFA Challenge","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","userId","expire"]},"mfaType":{"description":"MFAType","type":"object","properties":{"backups":{"type":"array","description":"Backup codes.","items":{"type":"string"},"x-example":true},"secret":{"type":"string","description":"Secret token used for TOTP factor.","x-example":true},"uri":{"type":"string","description":"URI for authenticator apps.","x-example":true}},"required":["backups","secret","uri"]},"mfaFactors":{"description":"MFAFactors","type":"object","properties":{"totp":{"type":"boolean","description":"TOTP","x-example":true},"phone":{"type":"boolean","description":"Phone","x-example":true},"email":{"type":"boolean","description":"Email","x-example":true}},"required":["totp","phone","email"]},"subscriber":{"description":"Subscriber","type":"object","properties":{"$id":{"type":"string","description":"Subscriber ID.","x-example":"259125845563242502"},"$createdAt":{"type":"string","description":"Subscriber creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Subscriber update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"targetId":{"type":"string","description":"Target ID.","x-example":"259125845563242502"},"target":{"type":"object","description":"Target.","x-example":{"$id":"259125845563242502","$createdAt":"2020-10-15T06:38:00.000+00:00","$updatedAt":"2020-10-15T06:38:00.000+00:00","providerType":"email","providerId":"259125845563242502","name":"ageon-app-email","identifier":"random-mail@email.org","userId":"5e5ea5c16897e"},"items":{"$ref":"#\/components\/schemas\/target"}},"userId":{"type":"string","description":"Topic ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User Name.","x-example":"Aegon Targaryen"},"topicId":{"type":"string","description":"Topic ID.","x-example":"259125845563242502"},"providerType":{"type":"string","description":"The target provider type. Can be one of the following: `email`, `sms` or `push`.","x-example":"email"}},"required":["$id","$createdAt","$updatedAt","targetId","target","userId","userName","topicId","providerType"]},"target":{"description":"Target","type":"object","properties":{"$id":{"type":"string","description":"Target ID.","x-example":"259125845563242502"},"$createdAt":{"type":"string","description":"Target creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Target update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Target Name.","x-example":"Aegon apple token"},"userId":{"type":"string","description":"User ID.","x-example":"259125845563242502"},"providerId":{"type":"string","description":"Provider ID.","x-example":"259125845563242502","nullable":true},"providerType":{"type":"string","description":"The target provider type. Can be one of the following: `email`, `sms` or `push`.","x-example":"email"},"identifier":{"type":"string","description":"The target identifier.","x-example":"token"}},"required":["$id","$createdAt","$updatedAt","name","userId","providerType","identifier"]}},"securitySchemes":{"Project":{"type":"apiKey","name":"X-Appwrite-Project","description":"Your project ID","in":"header","x-appwrite":{"demo":"5df5acd0d48c2"}},"JWT":{"type":"apiKey","name":"X-Appwrite-JWT","description":"Your secret JSON Web Token","in":"header"},"Locale":{"type":"apiKey","name":"X-Appwrite-Locale","description":"","in":"header","x-appwrite":{"demo":"en"}},"Session":{"type":"apiKey","name":"X-Appwrite-Session","description":"The user session to authenticate with","in":"header"}}},"externalDocs":{"description":"Full API docs, specs and tutorials","url":"https:\/\/appwrite.io\/docs"}} \ No newline at end of file +{"openapi":"3.0.0","info":{"version":"1.5.0","title":"Appwrite","description":"Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https:\/\/appwrite.io\/docs](https:\/\/appwrite.io\/docs)","termsOfService":"https:\/\/appwrite.io\/policy\/terms","contact":{"name":"Appwrite Team","url":"https:\/\/appwrite.io\/support","email":"team@appwrite.io"},"license":{"name":"BSD-3-Clause","url":"https:\/\/raw.githubusercontent.com\/appwrite\/appwrite\/master\/LICENSE"}},"servers":[{"url":"https:\/\/cloud.appwrite.io\/v1"}],"paths":{"\/account":{"get":{"summary":"Get account","operationId":"accountGet","tags":["account"],"description":"Get the currently logged in user.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"get","weight":22,"cookies":false,"type":"","demo":"account\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]},"post":{"summary":"Create account","operationId":"accountCreate","tags":["account"],"description":"Use this endpoint to allow a new user to register a new account in your project. After the user registration completes successfully, you can use the [\/account\/verfication](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createVerification) route to start verifying the user email address. To allow the new user to login to their new account, you need to create a new [account session](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createEmailSession).","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"create","weight":7,"cookies":false,"type":"","demo":"account\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"New user password. Must be between 8 and 256 chars.","x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/account\/email":{"patch":{"summary":"Update email","operationId":"accountUpdateEmail","tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateEmail","weight":29,"cookies":false,"type":"","demo":"account\/update-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","x-example":"password"}},"required":["email","password"]}}}}}},"\/account\/identities":{"get":{"summary":"List Identities","operationId":"accountListIdentities","tags":["account"],"description":"Get the list of identities for the currently logged in user.","responses":{"200":{"description":"Identities List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/identityList"}}}}},"x-appwrite":{"method":"listIdentities","weight":13,"cookies":false,"type":"","demo":"account\/list-identities.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-identities.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/identities","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, provider, providerUid, providerEmail, providerAccessTokenExpiry","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/identities\/{identityId}":{"delete":{"summary":"Delete identity","operationId":"accountDeleteIdentity","tags":["account"],"description":"Delete an identity by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIdentity","weight":14,"cookies":false,"type":"","demo":"account\/delete-identity.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-identity.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"identityId","description":"Identity ID.","required":true,"schema":{"type":"string","x-example":"[IDENTITY_ID]"},"in":"path"}]}},"\/account\/jwt":{"post":{"summary":"Create JWT","operationId":"accountCreateJWT","tags":["account"],"description":"Use this endpoint to create a JSON Web Token. You can use the resulting JWT to authenticate on behalf of the current user when working with the Appwrite server-side API and SDKs. The JWT secret is valid for 15 minutes from its creation and will be invalid if the user will logout in that time frame.","responses":{"201":{"description":"JWT","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/jwt"}}}}},"x-appwrite":{"method":"createJWT","weight":21,"cookies":false,"type":"","demo":"account\/create-j-w-t.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-jwt.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"accounts.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"List logs","operationId":"accountListLogs","tags":["account"],"description":"Get the list of latest security activity logs for the currently logged in user. Each log returns user IP address, location and date and time of log.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listLogs","weight":25,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/mfa":{"patch":{"summary":"Update MFA","operationId":"accountUpdateMFA","tags":["account"],"description":"","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateMFA","weight":42,"cookies":false,"type":"","demo":"account\/update-m-f-a.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-mfa.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"mfa":{"type":"boolean","description":"Enable or disable MFA.","x-example":false}},"required":["mfa"]}}}}}},"\/account\/mfa\/challenge":{"post":{"summary":"Create 2FA Challenge","operationId":"accountCreate2FAChallenge","tags":["account"],"description":"","responses":{"201":{"description":"MFA Challenge","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/mfaChallenge"}}}}},"x-appwrite":{"method":"create2FAChallenge","weight":47,"cookies":false,"type":"","demo":"account\/create2f-a-challenge.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-2fa-challenge.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},token:{param-token}","scope":"accounts.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"factor":{"type":"string","description":"Factor used for verification.","x-example":"totp","enum":["totp","phone","email"],"x-enum-name":null,"x-enum-keys":[]}},"required":["factor"]}}}}},"put":{"summary":"Create MFA Challenge (confirmation)","operationId":"accountUpdateChallenge","tags":["account"],"description":"","responses":{"204":{"description":"No content","content":{"":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateChallenge","weight":48,"cookies":false,"type":"","demo":"account\/update-challenge.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-challenge.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"challengeId":{"type":"string","description":"ID of the challenge.","x-example":"[CHALLENGE_ID]"},"otp":{"type":"string","description":"Valid verification token.","x-example":"[OTP]"}},"required":["challengeId","otp"]}}}}}},"\/account\/mfa\/factors":{"get":{"summary":"List Factors","operationId":"accountListFactors","tags":["account"],"description":"","responses":{"200":{"description":"MFAFactors","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/mfaFactors"}}}}},"x-appwrite":{"method":"listFactors","weight":43,"cookies":false,"type":"","demo":"account\/list-factors.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-factors.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/account\/mfa\/{type}":{"post":{"summary":"Add Authenticator","operationId":"accountAddAuthenticator","tags":["account"],"description":"","responses":{"200":{"description":"MFAType","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/mfaType"}}}}},"x-appwrite":{"method":"addAuthenticator","weight":44,"cookies":false,"type":"","demo":"account\/add-authenticator.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/add-authenticator.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"type","description":"Type of authenticator.","required":true,"schema":{"type":"string","x-example":"totp","enum":["totp"],"x-enum-name":null,"x-enum-keys":[]},"in":"path"}]},"put":{"summary":"Verify Authenticator","operationId":"accountVerifyAuthenticator","tags":["account"],"description":"","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"verifyAuthenticator","weight":45,"cookies":false,"type":"","demo":"account\/verify-authenticator.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/verify-authenticator.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"type","description":"Type of authenticator.","required":true,"schema":{"type":"string","x-example":"totp","enum":["totp"],"x-enum-name":null,"x-enum-keys":[]},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"otp":{"type":"string","description":"Valid verification token.","x-example":"[OTP]"}},"required":["otp"]}}}}},"delete":{"summary":"Delete Authenticator","operationId":"accountDeleteAuthenticator","tags":["account"],"description":"","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"deleteAuthenticator","weight":46,"cookies":false,"type":"","demo":"account\/delete-authenticator.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-mfa.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"type","description":"Type of authenticator.","required":true,"schema":{"type":"string","x-example":"totp","enum":["totp"],"x-enum-name":null,"x-enum-keys":[]},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"otp":{"type":"string","description":"Valid verification token.","x-example":"[OTP]"}},"required":["otp"]}}}}}},"\/account\/name":{"patch":{"summary":"Update name","operationId":"accountUpdateName","tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateName","weight":27,"cookies":false,"type":"","demo":"account\/update-name.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-name.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["name"]}}}}}},"\/account\/password":{"patch":{"summary":"Update password","operationId":"accountUpdatePassword","tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePassword","weight":28,"cookies":false,"type":"","demo":"account\/update-password.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-password.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"password":{"type":"string","description":"New user password. Must be at least 8 chars.","x-example":null},"oldPassword":{"type":"string","description":"Current user password. Must be at least 8 chars.","x-example":"password"}},"required":["password"]}}}}}},"\/account\/phone":{"patch":{"summary":"Update phone","operationId":"accountUpdatePhone","tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createPhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePhone","weight":30,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","x-example":"password"}},"required":["phone","password"]}}}}}},"\/account\/prefs":{"get":{"summary":"Get account preferences","operationId":"accountGetPrefs","tags":["account"],"description":"Get the preferences as a key-value object for the currently logged in user.","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"getPrefs","weight":23,"cookies":false,"type":"","demo":"account\/get-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/prefs","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]},"patch":{"summary":"Update preferences","operationId":"accountUpdatePrefs","tags":["account"],"description":"Update currently logged in user account preferences. The object you pass is stored as is, and replaces any previous value. The maximum allowed prefs size is 64kB and throws error if exceeded.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePrefs","weight":31,"cookies":false,"type":"","demo":"account\/update-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/prefs","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"prefs":{"type":"object","description":"Prefs key-value JSON object.","x-example":"{}"}},"required":["prefs"]}}}}}},"\/account\/recovery":{"post":{"summary":"Create password recovery","operationId":"accountCreateRecovery","tags":["account"],"description":"Sends the user an email with a temporary secret key for password reset. When the user clicks the confirmation link he is redirected back to your app password reset URL with the secret key and email address values attached to the URL query string. Use the query string params to submit a request to the [PUT \/account\/recovery](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateRecovery) endpoint to complete the process. The verification link sent to the user's email address is valid for 1 hour.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createRecovery","weight":36,"cookies":false,"type":"","demo":"account\/create-recovery.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-recovery.md","rate-limit":10,"rate-time":3600,"rate-key":["url:{url},email:{param-email}","url:{url},ip:{ip}"],"scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"url":{"type":"string","description":"URL to redirect the user back to your app from the recovery email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"}},"required":["email","url"]}}}}},"put":{"summary":"Create password recovery (confirmation)","operationId":"accountUpdateRecovery","tags":["account"],"description":"Use this endpoint to complete the user account password reset. Both the **userId** and **secret** arguments will be passed as query parameters to the redirect URL you have provided when sending your request to the [POST \/account\/recovery](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createRecovery) endpoint.\n\nPlease note that in order to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) the only valid redirect URLs are the ones from domains you have set when adding your platforms in the console interface.","responses":{"200":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"updateRecovery","weight":37,"cookies":false,"type":"","demo":"account\/update-recovery.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-recovery.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid reset token.","x-example":"[SECRET]"},"password":{"type":"string","description":"New user password. Must be between 8 and 256 chars.","x-example":null}},"required":["userId","secret","password"]}}}}}},"\/account\/sessions":{"get":{"summary":"List sessions","operationId":"accountListSessions","tags":["account"],"description":"Get the list of active sessions across different devices for the currently logged in user.","responses":{"200":{"description":"Sessions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/sessionList"}}}}},"x-appwrite":{"method":"listSessions","weight":24,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/sessions","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]},"delete":{"summary":"Delete sessions","operationId":"accountDeleteSessions","tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":35,"cookies":false,"type":"","demo":"account\/delete-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-sessions.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/account\/sessions\/anonymous":{"post":{"summary":"Create anonymous session","operationId":"accountCreateAnonymousSession","tags":["account"],"description":"Use this endpoint to allow a new user to register an anonymous account in your project. This route will also create a new session for the user. To allow the new user to convert an anonymous account to a normal account, you need to update its [email and password](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateEmail) or create an [OAuth2 session](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#CreateOAuth2Session).","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"createAnonymousSession","weight":20,"cookies":false,"type":"","demo":"account\/create-anonymous-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-anonymous.md","rate-limit":50,"rate-time":3600,"rate-key":"ip:{ip}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/sessions\/email":{"post":{"summary":"Create email password session","operationId":"accountCreateEmailPasswordSession","tags":["account"],"description":"Allow the user to login into their account by providing a valid email and password combination. This route will create a new session for the user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"createEmailPasswordSession","weight":8,"cookies":false,"type":"","demo":"account\/create-email-password-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-email-password.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","x-example":"password"}},"required":["email","password"]}}}}}},"\/account\/sessions\/magic-url":{"put":{"summary":"Create session (deprecated)","operationId":"accountUpdateMagicURLSession","tags":["account"],"description":"Use this endpoint to create a session from token. Provide the **userId** and **secret** parameters from the successful response of authentication flows initiated by token creation. For example, magic URL and phone login.","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateMagicURLSession","weight":17,"cookies":false,"type":"","demo":"account\/update-magic-u-r-l-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session.md","rate-limit":10,"rate-time":3600,"rate-key":"ip:{ip},userId:{param-userId}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/account\/sessions\/oauth2\/{provider}":{"get":{"summary":"Create OAuth2 session","operationId":"accountCreateOAuth2Session","tags":["account"],"description":"Allow the user to login to their account using the OAuth2 provider of their choice. Each OAuth2 provider should be enabled from the Appwrite console first. Use the success and failure arguments to provide a redirect URL's back to your app when login is completed.\n\nIf there is already an active session, the new session will be attached to the logged-in account. If there are no active sessions, the server will attempt to look for a user with the same email address as the email received from the OAuth2 provider and attach the new session to the existing user. If no matching user is found - the server will create a new user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).\n","responses":{"301":{"description":"File"}},"x-appwrite":{"method":"createOAuth2Session","weight":9,"cookies":false,"type":"webAuth","demo":"account\/create-o-auth2session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-oauth2.md","rate-limit":50,"rate-time":3600,"rate-key":"ip:{ip}","scope":"sessions.write","platforms":["client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"provider","description":"OAuth2 Provider. Currently, supported providers are: amazon, apple, auth0, authentik, autodesk, bitbucket, bitly, box, dailymotion, discord, disqus, dropbox, etsy, facebook, github, gitlab, google, linkedin, microsoft, notion, oidc, okta, paypal, paypalSandbox, podio, salesforce, slack, spotify, stripe, tradeshift, tradeshiftBox, twitch, wordpress, yahoo, yammer, yandex, zoho, zoom.","required":true,"schema":{"type":"string","x-example":"amazon","enum":["amazon","apple","auth0","authentik","autodesk","bitbucket","bitly","box","dailymotion","discord","disqus","dropbox","etsy","facebook","github","gitlab","google","linkedin","microsoft","notion","oidc","okta","paypal","paypalSandbox","podio","salesforce","slack","spotify","stripe","tradeshift","tradeshiftBox","twitch","wordpress","yahoo","yammer","yandex","zoho","zoom","mock"],"x-enum-name":"OAuthProvider","x-enum-keys":[]},"in":"path"},{"name":"success","description":"URL to redirect back to your app after a successful login attempt. Only URLs from hostnames in your project's platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","required":false,"schema":{"type":"string","format":"url","x-example":"https:\/\/example.com","default":""},"in":"query"},{"name":"failure","description":"URL to redirect back to your app after a failed login attempt. Only URLs from hostnames in your project's platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","required":false,"schema":{"type":"string","format":"url","x-example":"https:\/\/example.com","default":""},"in":"query"},{"name":"token","description":"Include token credentials in the final redirect, useful for server-side integrations, or when cookies are not available.","required":false,"schema":{"type":"boolean","x-example":false,"default":false},"in":"query"},{"name":"scopes","description":"A list of custom OAuth2 scopes. Check each provider internal docs for a list of supported scopes. Maximum of 100 scopes are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/sessions\/token":{"post":{"summary":"Create session","operationId":"accountCreateSession","tags":["account"],"description":"Use this endpoint to create a session from token. Provide the **userId** and **secret** parameters from the successful response of authentication flows initiated by token creation. For example, magic URL and phone login.","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"createSession","weight":18,"cookies":false,"type":"","demo":"account\/create-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session.md","rate-limit":10,"rate-time":3600,"rate-key":"ip:{ip},userId:{param-userId}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Secret of a token generated by login methods. For example, the `createMagicURLToken` or `createPhoneToken` methods.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/account\/sessions\/{sessionId}":{"get":{"summary":"Get session","operationId":"accountGetSession","tags":["account"],"description":"Use this endpoint to get a logged in user's session using a Session ID. Inputting 'current' will return the current session being used.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"getSession","weight":26,"cookies":false,"type":"","demo":"account\/get-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-session.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/sessions","offline-key":"{sessionId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to get the current device session.","required":true,"schema":{"type":"string","x-example":"[SESSION_ID]"},"in":"path"}]},"patch":{"summary":"Update (or renew) a session","operationId":"accountUpdateSession","tags":["account"],"description":"Extend session's expiry to increase it's lifespan. Extending a session is useful when session length is short such as 5 minutes.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateSession","weight":34,"cookies":false,"type":"","demo":"account\/update-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-session.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to update the current device session.","required":true,"schema":{"type":"string","x-example":"[SESSION_ID]"},"in":"path"}]},"delete":{"summary":"Delete session","operationId":"accountDeleteSession","tags":["account"],"description":"Logout the user. Use 'current' as the session ID to logout on this device, use a session ID to logout on another device. If you're looking to logout the user on all devices, use [Delete Sessions](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#deleteSessions) instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSession","weight":33,"cookies":false,"type":"","demo":"account\/delete-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-session.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to delete the current device session.","required":true,"schema":{"type":"string","x-example":"[SESSION_ID]"},"in":"path"}]}},"\/account\/status":{"patch":{"summary":"Update status","operationId":"accountUpdateStatus","tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateStatus","weight":32,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/account\/targets\/push":{"post":{"summary":"Create a push target","operationId":"accountCreatePushTarget","tags":["account"],"description":"","responses":{"201":{"description":"Target","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/target"}}}}},"x-appwrite":{"method":"createPushTarget","weight":50,"cookies":false,"type":"","demo":"account\/create-push-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"targetId":{"type":"string","description":"Target ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[TARGET_ID]"},"identifier":{"type":"string","description":"The target identifier (token, email, phone etc.)","x-example":"[IDENTIFIER]"},"providerId":{"type":"string","description":"Provider ID. Message will be sent to this target from the specified provider ID. If no provider ID is set the first setup provider will be used.","x-example":"[PROVIDER_ID]"}},"required":["targetId","identifier"]}}}}}},"\/account\/targets\/{targetId}\/push":{"put":{"summary":"Update a push target","operationId":"accountUpdatePushTarget","tags":["account"],"description":"","responses":{"200":{"description":"Target","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/target"}}}}},"x-appwrite":{"method":"updatePushTarget","weight":51,"cookies":false,"type":"","demo":"account\/update-push-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[]}],"parameters":[{"name":"targetId","description":"Target ID.","required":true,"schema":{"type":"string","x-example":"[TARGET_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"identifier":{"type":"string","description":"The target identifier (token, email, phone etc.)","x-example":"[IDENTIFIER]"}},"required":["identifier"]}}}}},"delete":{"summary":"Delete a push target","operationId":"accountDeletePushTarget","tags":["account"],"description":"","responses":{"204":{"description":"No content","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/target"}}}}},"x-appwrite":{"method":"deletePushTarget","weight":52,"cookies":false,"type":"","demo":"account\/delete-push-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[]}],"parameters":[{"name":"targetId","description":"Target ID.","required":true,"schema":{"type":"string","x-example":"[TARGET_ID]"},"in":"path"}]}},"\/account\/tokens\/email":{"post":{"summary":"Create email token (OTP)","operationId":"accountCreateEmailToken","tags":["account"],"description":"Sends the user an email with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [POST \/v1\/account\/sessions\/token](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createSession) endpoint to complete the login process. The secret sent to the user's email is valid for 15 minutes.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createEmailToken","weight":16,"cookies":false,"type":"","demo":"account\/create-email-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-token-email.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"phrase":{"type":"boolean","description":"Toggle for security phrase. If enabled, email will be send with a randomly generated phrase and the phrase will also be included in the response. Confirming phrases match increases the security of your authentication flow.","x-example":false}},"required":["userId","email"]}}}}}},"\/account\/tokens\/magic-url":{"post":{"summary":"Create magic URL token","operationId":"accountCreateMagicURLToken","tags":["account"],"description":"Sends the user an email with a secret key for creating a session. If the provided user ID has not been registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [POST \/v1\/account\/sessions\/token](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createSession) endpoint to complete the login process. The link sent to the user's email address is valid for 1 hour. If you are on a mobile device you can leave the URL parameter empty, so that the login completion will be handled by your Appwrite instance by default.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).\n","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createMagicURLToken","weight":15,"cookies":false,"type":"","demo":"account\/create-magic-u-r-l-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-token-magic-url.md","rate-limit":60,"rate-time":3600,"rate-key":["url:{url},email:{param-email}","url:{url},ip:{ip}"],"scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"url":{"type":"string","description":"URL to redirect the user back to your app from the magic URL login. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"},"phrase":{"type":"boolean","description":"Toggle for security phrase. If enabled, email will be send with a randomly generated phrase and the phrase will also be included in the response. Confirming phrases match increases the security of your authentication flow.","x-example":false}},"required":["userId","email"]}}}}}},"\/account\/tokens\/phone":{"post":{"summary":"Create phone token","operationId":"accountCreatePhoneToken","tags":["account"],"description":"Sends the user an SMS with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [POST \/v1\/account\/sessions\/token](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createSession) endpoint to complete the login process. The secret sent to the user's phone is valid for 15 minutes.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createPhoneToken","weight":19,"cookies":false,"type":"","demo":"account\/create-phone-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-token-phone.md","rate-limit":10,"rate-time":3600,"rate-key":["url:{url},phone:{param-phone}","url:{url},ip:{ip}"],"scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"}},"required":["userId","phone"]}}}}}},"\/account\/verification":{"post":{"summary":"Create email verification","operationId":"accountCreateVerification","tags":["account"],"description":"Use this endpoint to send a verification message to your user email address to confirm they are the valid owners of that address. Both the **userId** and **secret** arguments will be passed as query parameters to the URL you have provided to be attached to the verification email. The provided URL should redirect the user back to your app and allow you to complete the verification process by verifying both the **userId** and **secret** parameters. Learn more about how to [complete the verification process](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateVerification). The verification link sent to the user's email address is valid for 7 days.\n\nPlease note that in order to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md), the only valid redirect URLs are the ones from domains you have set when adding your platforms in the console interface.\n","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createVerification","weight":38,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"url":{"type":"string","description":"URL to redirect the user back to your app from the verification email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"}},"required":["url"]}}}}},"put":{"summary":"Create email verification (confirmation)","operationId":"accountUpdateVerification","tags":["account"],"description":"Use this endpoint to complete the user email verification process. Use both the **userId** and **secret** parameters that were attached to your app URL to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"updateVerification","weight":39,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/account\/verification\/phone":{"post":{"summary":"Create phone verification","operationId":"accountCreatePhoneVerification","tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updatePhone) endpoint. Learn more about how to [complete the verification process](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createPhoneVerification","weight":40,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":["url:{url},userId:{userId}","url:{url},ip:{ip}"],"scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]},"put":{"summary":"Create phone verification (confirmation)","operationId":"accountUpdatePhoneVerification","tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"updatePhoneVerification","weight":41,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/avatars\/browsers\/{code}":{"get":{"summary":"Get browser icon","operationId":"avatarsGetBrowser","tags":["avatars"],"description":"You can use this endpoint to show different browser icons to your users. The code argument receives the browser code as it appears in your user [GET \/account\/sessions](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#getSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getBrowser","weight":54,"cookies":false,"type":"location","demo":"avatars\/get-browser.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-browser.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"code","description":"Browser Code.","required":true,"schema":{"type":"string","x-example":"aa","enum":["aa","an","ch","ci","cm","cr","ff","sf","mf","ps","oi","om","op","on"],"x-enum-name":"Browser","x-enum-keys":["Avant Browser","Android WebView Beta","Google Chrome","Google Chrome (iOS)","Google Chrome (Mobile)","Chromium","Mozilla Firefox","Safari","Mobile Safari","Microsoft Edge","Microsoft Edge (iOS)","Opera Mini","Opera","Opera (Next)"]},"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"}]}},"\/avatars\/credit-cards\/{code}":{"get":{"summary":"Get credit card icon","operationId":"avatarsGetCreditCard","tags":["avatars"],"description":"The credit card endpoint will return you the icon of the credit card provider you need. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getCreditCard","weight":53,"cookies":false,"type":"location","demo":"avatars\/get-credit-card.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-credit-card.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"code","description":"Credit Card Code. Possible values: amex, argencard, cabal, censosud, diners, discover, elo, hipercard, jcb, mastercard, naranja, targeta-shopping, union-china-pay, visa, mir, maestro.","required":true,"schema":{"type":"string","x-example":"amex","enum":["amex","argencard","cabal","censosud","diners","discover","elo","hipercard","jcb","mastercard","naranja","targeta-shopping","union-china-pay","visa","mir","maestro"],"x-enum-name":"CreditCard","x-enum-keys":["American Express","Argencard","Cabal","Consosud","Diners Club","Discover","Elo","Hipercard","JCB","Mastercard","Naranja","Tarjeta Shopping","Union China Pay","Visa","MIR","Maestro"]},"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"}]}},"\/avatars\/favicon":{"get":{"summary":"Get favicon","operationId":"avatarsGetFavicon","tags":["avatars"],"description":"Use this endpoint to fetch the favorite icon (AKA favicon) of any remote website URL.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFavicon","weight":57,"cookies":false,"type":"location","demo":"avatars\/get-favicon.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-favicon.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"url","description":"Website URL which you want to fetch the favicon from.","required":true,"schema":{"type":"string","format":"url","x-example":"https:\/\/example.com"},"in":"query"}]}},"\/avatars\/flags\/{code}":{"get":{"summary":"Get country flag","operationId":"avatarsGetFlag","tags":["avatars"],"description":"You can use this endpoint to show different country flags icons to your users. The code argument receives the 2 letter country code. Use width, height and quality arguments to change the output settings. Country codes follow the [ISO 3166-1](https:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFlag","weight":55,"cookies":false,"type":"location","demo":"avatars\/get-flag.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-flag.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"code","description":"Country Code. ISO Alpha-2 country code format.","required":true,"schema":{"type":"string","x-example":"af","enum":["af","ao","al","ad","ae","ar","am","ag","au","at","az","bi","be","bj","bf","bd","bg","bh","bs","ba","by","bz","bo","br","bb","bn","bt","bw","cf","ca","ch","cl","cn","ci","cm","cd","cg","co","km","cv","cr","cu","cy","cz","de","dj","dm","dk","do","dz","ec","eg","er","es","ee","et","fi","fj","fr","fm","ga","gb","ge","gh","gn","gm","gw","gq","gr","gd","gt","gy","hn","hr","ht","hu","id","in","ie","ir","iq","is","il","it","jm","jo","jp","kz","ke","kg","kh","ki","kn","kr","kw","la","lb","lr","ly","lc","li","lk","ls","lt","lu","lv","ma","mc","md","mg","mv","mx","mh","mk","ml","mt","mm","me","mn","mz","mr","mu","mw","my","na","ne","ng","ni","nl","no","np","nr","nz","om","pk","pa","pe","ph","pw","pg","pl","kp","pt","py","qa","ro","ru","rw","sa","sd","sn","sg","sb","sl","sv","sm","so","rs","ss","st","sr","sk","si","se","sz","sc","sy","td","tg","th","tj","tm","tl","to","tt","tn","tr","tv","tz","ug","ua","uy","us","uz","va","vc","ve","vn","vu","ws","ye","za","zm","zw"],"x-enum-name":"Flag","x-enum-keys":["Afghanistan","Angola","Albania","Andorra","United Arab Emirates","Argentina","Armenia","Antigua and Barbuda","Australia","Austria","Azerbaijan","Burundi","Belgium","Benin","Burkina Faso","Bangladesh","Bulgaria","Bahrain","Bahamas","Bosnia and Herzegovina","Belarus","Belize","Bolivia","Brazil","Barbados","Brunei Darussalam","Bhutan","Botswana","Central African Republic","Canada","Switzerland","Chile","China","C\u00f4te d'Ivoire","Cameroon","Democratic Republic of the Congo","Republic of the Congo","Colombia","Comoros","Cape Verde","Costa Rica","Cuba","Cyprus","Czech Republic","Germany","Djibouti","Dominica","Denmark","Dominican Republic","Algeria","Ecuador","Egypt","Eritrea","Spain","Estonia","Ethiopia","Finland","Fiji","France","Micronesia (Federated States of)","Gabon","United Kingdom","Georgia","Ghana","Guinea","Gambia","Guinea-Bissau","Equatorial Guinea","Greece","Grenada","Guatemala","Guyana","Honduras","Croatia","Haiti","Hungary","Indonesia","India","Ireland","Iran (Islamic Republic of)","Iraq","Iceland","Israel","Italy","Jamaica","Jordan","Japan","Kazakhstan","Kenya","Kyrgyzstan","Cambodia","Kiribati","Saint Kitts and Nevis","South Korea","Kuwait","Lao People's Democratic Republic","Lebanon","Liberia","Libya","Saint Lucia","Liechtenstein","Sri Lanka","Lesotho","Lithuania","Luxembourg","Latvia","Morocco","Monaco","Moldova","Madagascar","Maldives","Mexico","Marshall Islands","North Macedonia","Mali","Malta","Myanmar","Montenegro","Mongolia","Mozambique","Mauritania","Mauritius","Malawi","Malaysia","Namibia","Niger","Nigeria","Nicaragua","Netherlands","Norway","Nepal","Nauru","New Zealand","Oman","Pakistan","Panama","Peru","Philippines","Palau","Papua New Guinea","Poland","North Korea","Portugal","Paraguay","Qatar","Romania","Russia","Rwanda","Saudi Arabia","Sudan","Senegal","Singapore","Solomon Islands","Sierra Leone","El Salvador","San Marino","Somalia","Serbia","South Sudan","Sao Tome and Principe","Suriname","Slovakia","Slovenia","Sweden","Eswatini","Seychelles","Syria","Chad","Togo","Thailand","Tajikistan","Turkmenistan","Timor-Leste","Tonga","Trinidad and Tobago","Tunisia","Turkey","Tuvalu","Tanzania","Uganda","Ukraine","Uruguay","United States","Uzbekistan","Vatican City","Saint Vincent and the Grenadines","Venezuela","Vietnam","Vanuatu","Samoa","Yemen","South Africa","Zambia","Zimbabwe"]},"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"}]}},"\/avatars\/image":{"get":{"summary":"Get image from URL","operationId":"avatarsGetImage","tags":["avatars"],"description":"Use this endpoint to fetch a remote image URL and crop it to any image size you want. This endpoint is very useful if you need to crop and display remote images in your app or in case you want to make sure a 3rd party image is properly served using a TLS protocol.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getImage","weight":56,"cookies":false,"type":"location","demo":"avatars\/get-image.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-image.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"url","description":"Image URL which you want to crop.","required":true,"schema":{"type":"string","format":"url","x-example":"https:\/\/example.com"},"in":"query"},{"name":"width","description":"Resize preview image width, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get user initials","operationId":"avatarsGetInitials","tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getInitials","weight":59,"cookies":false,"type":"location","demo":"avatars\/get-initials.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-initials.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"name","description":"Full Name. When empty, current user name or email will be used. Max length: 128 chars.","required":false,"schema":{"type":"string","x-example":"[NAME]","default":""},"in":"query"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":500},"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":500},"in":"query"},{"name":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"schema":{"type":"string","default":""},"in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR code","operationId":"avatarsGetQR","tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getQR","weight":58,"cookies":false,"type":"location","demo":"avatars\/get-q-r.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-qr.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"text","description":"Plain text to be converted to QR code image.","required":true,"schema":{"type":"string","x-example":"[TEXT]"},"in":"query"},{"name":"size","description":"QR code size. Pass an integer between 1 to 1000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":1,"default":400},"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":1},"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"schema":{"type":"boolean","x-example":false,"default":false},"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List documents","operationId":"databasesListDocuments","tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/documentList"}}}}},"x-appwrite":{"method":"listDocuments","weight":103,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"post":{"summary":"Create document","operationId":"databasesCreateDocument","tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"createDocument","weight":102,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, only the current user is granted all permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get document","operationId":"databasesGetDocument","tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"getDocument","weight":104,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"patch":{"summary":"Update document","operationId":"databasesUpdateDocument","tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"updateDocument","weight":106,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete document","operationId":"databasesDeleteDocument","tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":107,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List executions","operationId":"functionsListExecutions","tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/executionList"}}}}},"x-appwrite":{"method":"listExecutions","weight":283,"cookies":false,"type":"","demo":"functions\/list-executions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-executions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, responseStatusCode, duration","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create execution","operationId":"functionsCreateExecution","tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/execution"}}}}},"x-appwrite":{"method":"createExecution","weight":282,"cookies":false,"type":"","demo":"functions\/create-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-execution.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"body":{"type":"string","description":"HTTP body of execution. Default value is empty string.","x-example":"[BODY]"},"async":{"type":"boolean","description":"Execute code in the background. Default value is false.","x-example":false},"path":{"type":"string","description":"HTTP path of execution. Path can include query params. Default value is \/","x-example":"[PATH]"},"method":{"type":"string","description":"HTTP method of execution. Default value is GET.","x-example":"GET","enum":["GET","POST","PUT","PATCH","DELETE","OPTIONS"],"x-enum-name":"ExecutionMethod","x-enum-keys":[]},"headers":{"type":"object","description":"HTTP headers of execution. Defaults to empty.","x-example":"{}"}}}}}}}},"\/functions\/{functionId}\/executions\/{executionId}":{"get":{"summary":"Get execution","operationId":"functionsGetExecution","tags":["functions"],"description":"Get a function execution log by its unique ID.","responses":{"200":{"description":"Execution","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/execution"}}}}},"x-appwrite":{"method":"getExecution","weight":284,"cookies":false,"type":"","demo":"functions\/get-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-execution.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"executionId","description":"Execution ID.","required":true,"schema":{"type":"string","x-example":"[EXECUTION_ID]"},"in":"path"}]}},"\/graphql":{"post":{"summary":"GraphQL endpoint","operationId":"graphqlQuery","tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/any"}}}}},"x-appwrite":{"method":"query","weight":304,"cookies":false,"type":"graphql","demo":"graphql\/query.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/graphql\/mutation":{"post":{"summary":"GraphQL endpoint","operationId":"graphqlMutation","tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/any"}}}}},"x-appwrite":{"method":"mutation","weight":303,"cookies":false,"type":"graphql","demo":"graphql\/mutation.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/locale":{"get":{"summary":"Get user locale","operationId":"localeGet","tags":["locale"],"description":"Get the current user location based on IP. Returns an object with user country code, country name, continent name, continent code, ip address and suggested currency. You can use the locale header to get the data in a supported language.\n\n([IP Geolocation by DB-IP](https:\/\/db-ip.com))","responses":{"200":{"description":"Locale","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/locale"}}}}},"x-appwrite":{"method":"get","weight":111,"cookies":false,"type":"","demo":"locale\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-locale.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/localed","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/locale\/codes":{"get":{"summary":"List Locale Codes","operationId":"localeListCodes","tags":["locale"],"description":"List of all locale codes in [ISO 639-1](https:\/\/en.wikipedia.org\/wiki\/List_of_ISO_639-1_codes).","responses":{"200":{"description":"Locale codes list","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/localeCodeList"}}}}},"x-appwrite":{"method":"listCodes","weight":112,"cookies":false,"type":"","demo":"locale\/list-codes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-locale-codes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/localeCode","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/locale\/continents":{"get":{"summary":"List continents","operationId":"localeListContinents","tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/continentList"}}}}},"x-appwrite":{"method":"listContinents","weight":116,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/continents","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List countries","operationId":"localeListCountries","tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountries","weight":113,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/countries","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU countries","operationId":"localeListCountriesEU","tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountriesEU","weight":114,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/countries\/eu","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List countries phone codes","operationId":"localeListCountriesPhones","tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/phoneList"}}}}},"x-appwrite":{"method":"listCountriesPhones","weight":115,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/countries\/phones","offline-key":"","offline-response-key":"countryCode","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List currencies","operationId":"localeListCurrencies","tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/currencyList"}}}}},"x-appwrite":{"method":"listCurrencies","weight":117,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/currencies","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List languages","operationId":"localeListLanguages","tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/languageList"}}}}},"x-appwrite":{"method":"listLanguages","weight":118,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/languages","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/messaging\/topics\/{topicId}\/subscribers":{"post":{"summary":"Create a subscriber.","operationId":"messagingCreateSubscriber","tags":["messaging"],"description":"","responses":{"201":{"description":"Subscriber","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/subscriber"}}}}},"x-appwrite":{"method":"createSubscriber","weight":355,"cookies":false,"type":"","demo":"messaging\/create-subscriber.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-subscriber.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.write","platforms":["server","client","console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[],"Session":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID to subscribe to.","required":true,"schema":{"type":"string","x-example":"[TOPIC_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"subscriberId":{"type":"string","description":"Subscriber ID. Choose a custom Subscriber ID or a new Subscriber ID.","x-example":"[SUBSCRIBER_ID]"},"targetId":{"type":"string","description":"Target ID. The target ID to link to the specified Topic ID.","x-example":"[TARGET_ID]"}},"required":["subscriberId","targetId"]}}}}}},"\/messaging\/topics\/{topicId}\/subscribers\/{subscriberId}":{"delete":{"summary":"Delete a subscriber.","operationId":"messagingDeleteSubscriber","tags":["messaging"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSubscriber","weight":359,"cookies":false,"type":"","demo":"messaging\/delete-subscriber.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-subscriber.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.write","platforms":["server","client","console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[],"Session":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID subscribed to.","required":true,"schema":{"type":"string","x-example":"[TOPIC_ID]"},"in":"path"},{"name":"subscriberId","description":"Subscriber ID.","required":true,"schema":{"type":"string","x-example":"[SUBSCRIBER_ID]"},"in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files":{"get":{"summary":"List files","operationId":"storageListFiles","tags":["storage"],"description":"Get a list of all the user files. You can use the query params to filter your results.","responses":{"200":{"description":"Files List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/fileList"}}}}},"x-appwrite":{"method":"listFiles","weight":193,"cookies":false,"type":"","demo":"storage\/list-files.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/list-files.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create file","operationId":"storageCreateFile","tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"createFile","weight":192,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"}],"requestBody":{"content":{"multipart\/form-data":{"schema":{"type":"object","properties":{"fileId":{"type":"string","description":"File ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[FILE_ID]","x-upload-id":true},"file":{"type":"string","description":"Binary file. Appwrite SDKs provide helpers to handle file input. [Learn about file input](https:\/\/appwrite.io\/docs\/storage#file-input).","x-example":null},"permissions":{"type":"array","description":"An array of permission strings. By default, only the current user is granted all permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["fileId","file"]}}}}}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get file","operationId":"storageGetFile","tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"getFile","weight":194,"cookies":false,"type":"","demo":"storage\/get-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File ID.","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"}]},"put":{"summary":"Update file","operationId":"storageUpdateFile","tags":["storage"],"description":"Update a file by its unique ID. Only users with write permissions have access to update this resource.","responses":{"200":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"updateFile","weight":198,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File unique ID.","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Name of the file","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission string. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":199,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File ID.","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/download":{"get":{"summary":"Get file for download","operationId":"storageGetFileDownload","tags":["storage"],"description":"Get a file content by its unique ID. The endpoint response return with a 'Content-Disposition: attachment' header that tells the browser to start downloading the file to user downloads directory.","responses":{"200":{"description":"File"}},"x-appwrite":{"method":"getFileDownload","weight":196,"cookies":false,"type":"location","demo":"storage\/get-file-download.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-download.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File ID.","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/preview":{"get":{"summary":"Get file preview","operationId":"storageGetFilePreview","tags":["storage"],"description":"Get a file preview image. Currently, this method supports preview for image files (jpg, png, and gif), other supported formats, like pdf, docs, slides, and spreadsheets, will return the file icon image. You can also pass query string arguments for cutting and resizing your preview image. Preview is supported only for image files smaller than 10MB.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFilePreview","weight":195,"cookies":false,"type":"location","demo":"storage\/get-file-preview.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-preview.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File ID","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"},{"name":"width","description":"Resize preview image width, Pass an integer between 0 to 4000.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 4000.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"gravity","description":"Image crop gravity. Can be one of center,top-left,top,top-right,left,right,bottom-left,bottom,bottom-right","required":false,"schema":{"type":"string","x-example":"center","enum":["center","top-left","top","top-right","left","right","bottom-left","bottom","bottom-right"],"x-enum-name":"ImageGravity","x-enum-keys":[],"default":"center"},"in":"query"},{"name":"quality","description":"Preview image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"borderWidth","description":"Preview image border in pixels. Pass an integer between 0 to 100. Defaults to 0.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"borderColor","description":"Preview image border color. Use a valid HEX color, no # is needed for prefix.","required":false,"schema":{"type":"string","default":""},"in":"query"},{"name":"borderRadius","description":"Preview image border radius in pixels. Pass an integer between 0 to 4000.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"opacity","description":"Preview image opacity. Only works with images having an alpha channel (like png). Pass a number between 0 to 1.","required":false,"schema":{"type":"number","format":"float","x-example":0,"default":1},"in":"query"},{"name":"rotation","description":"Preview image rotation in degrees. Pass an integer between -360 and 360.","required":false,"schema":{"type":"integer","format":"int32","x-example":-360,"default":0},"in":"query"},{"name":"background","description":"Preview image background color. Only works with transparent images (png). Use a valid HEX color, no # is needed for prefix.","required":false,"schema":{"type":"string","default":""},"in":"query"},{"name":"output","description":"Output format type (jpeg, jpg, png, gif and webp).","required":false,"schema":{"type":"string","x-example":"jpg","enum":["jpg","jpeg","gif","png","webp"],"x-enum-name":"ImageFormat","x-enum-keys":[],"default":""},"in":"query"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/view":{"get":{"summary":"Get file for view","operationId":"storageGetFileView","tags":["storage"],"description":"Get a file content by its unique ID. This endpoint is similar to the download method but returns with no 'Content-Disposition: attachment' header.","responses":{"200":{"description":"File"}},"x-appwrite":{"method":"getFileView","weight":197,"cookies":false,"type":"location","demo":"storage\/get-file-view.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-view.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File ID.","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"}]}},"\/teams":{"get":{"summary":"List teams","operationId":"teamsList","tags":["teams"],"description":"Get a list of all the teams in which the current user is a member. You can use the parameters to filter your results.","responses":{"200":{"description":"Teams List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/teamList"}}}}},"x-appwrite":{"method":"list","weight":203,"cookies":false,"type":"","demo":"teams\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-teams.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total, billingPlan","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create team","operationId":"teamsCreate","tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"create","weight":202,"cookies":false,"type":"","demo":"teams\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/create-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"teamId":{"type":"string","description":"Team ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[TEAM_ID]"},"name":{"type":"string","description":"Team name. Max length: 128 chars.","x-example":"[NAME]"},"roles":{"type":"array","description":"Array of strings. Use this param to set the roles in the team for the user who created it. The default role is **owner**. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}}}}},"\/teams\/{teamId}":{"get":{"summary":"Get team","operationId":"teamsGet","tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"get","weight":204,"cookies":false,"type":"","demo":"teams\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams","offline-key":"{teamId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}]},"put":{"summary":"Update name","operationId":"teamsUpdateName","tags":["teams"],"description":"Update the team's name by its unique ID.","responses":{"200":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"updateName","weight":206,"cookies":false,"type":"","demo":"teams\/update-name.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-name.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams","offline-key":"{teamId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"New team name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["name"]}}}}},"delete":{"summary":"Delete team","operationId":"teamsDelete","tags":["teams"],"description":"Delete a team using its ID. Only team members with the owner role can delete the team.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":208,"cookies":false,"type":"","demo":"teams\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/delete-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}]}},"\/teams\/{teamId}\/memberships":{"get":{"summary":"List team memberships","operationId":"teamsListMemberships","tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"listMemberships","weight":210,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/memberships","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create team membership","operationId":"teamsCreateMembership","tags":["teams"],"description":"Invite a new member to join your team. Provide an ID for existing users, or invite unregistered users using an email or phone number. If initiated from a Client SDK, Appwrite will send an email or sms with a link to join the team to the invited user, and an account will be created for them if one doesn't exist. If initiated from a Server SDK, the new member will be added automatically to the team.\n\nYou only need to provide one of a user ID, email, or phone number. Appwrite will prioritize accepting the user ID > email > phone number if you provide more than one of these parameters.\n\nUse the `url` parameter to redirect the user from the invitation email to your app. After the user is redirected, use the [Update Team Membership Status](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/teams#updateMembershipStatus) endpoint to allow the user to accept the invitation to the team. \n\nPlease note that to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) Appwrite will accept the only redirect URLs under the domains you have added as a platform on the Appwrite Console.\n","responses":{"201":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"createMembership","weight":209,"cookies":false,"type":"","demo":"teams\/create-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/create-team-membership.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"email":{"type":"string","description":"Email of the new team member.","x-example":"email@example.com"},"userId":{"type":"string","description":"ID of the user to be added to a team.","x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"roles":{"type":"array","description":"Array of strings. Use this param to set the user roles in the team. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"},"name":{"type":"string","description":"Name of the new team member. Max length: 128 chars.","x-example":"[NAME]"}},"required":["roles"]}}}}}},"\/teams\/{teamId}\/memberships\/{membershipId}":{"get":{"summary":"Get team membership","operationId":"teamsGetMembership","tags":["teams"],"description":"Get a team member by the membership unique id. All team members have read access for this resource.","responses":{"200":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"getMembership","weight":211,"cookies":false,"type":"","demo":"teams\/get-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-member.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/memberships","offline-key":"{membershipId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"schema":{"type":"string","x-example":"[MEMBERSHIP_ID]"},"in":"path"}]},"patch":{"summary":"Update membership","operationId":"teamsUpdateMembership","tags":["teams"],"description":"Modify the roles of a team member. Only team members with the owner role have access to this endpoint. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions).\n","responses":{"200":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"updateMembership","weight":212,"cookies":false,"type":"","demo":"teams\/update-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"schema":{"type":"string","x-example":"[MEMBERSHIP_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"roles":{"type":"array","description":"An array of strings. Use this param to set the user's roles in the team. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["roles"]}}}}},"delete":{"summary":"Delete team membership","operationId":"teamsDeleteMembership","tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":214,"cookies":false,"type":"","demo":"teams\/delete-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/delete-team-membership.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"schema":{"type":"string","x-example":"[MEMBERSHIP_ID]"},"in":"path"}]}},"\/teams\/{teamId}\/memberships\/{membershipId}\/status":{"patch":{"summary":"Update team membership status","operationId":"teamsUpdateMembershipStatus","tags":["teams"],"description":"Use this endpoint to allow a user to accept an invitation to join a team after being redirected back to your app from the invitation email received by the user.\n\nIf the request is successful, a session for the user is automatically created.\n","responses":{"200":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"updateMembershipStatus","weight":213,"cookies":false,"type":"","demo":"teams\/update-membership-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"public","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"schema":{"type":"string","x-example":"[MEMBERSHIP_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Secret key.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/teams\/{teamId}\/prefs":{"get":{"summary":"Get team preferences","operationId":"teamsGetPrefs","tags":["teams"],"description":"Get the team's shared preferences by its unique ID. If a preference doesn't need to be shared by all team members, prefer storing them in [user preferences](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#getPrefs).","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"getPrefs","weight":205,"cookies":false,"type":"","demo":"teams\/get-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/prefs","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}]},"put":{"summary":"Update preferences","operationId":"teamsUpdatePrefs","tags":["teams"],"description":"Update the team's preferences by its unique ID. The object you pass is stored as is and replaces any previous value. The maximum allowed prefs size is 64kB and throws an error if exceeded.","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"updatePrefs","weight":207,"cookies":false,"type":"","demo":"teams\/update-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/prefs","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"prefs":{"type":"object","description":"Prefs key-value JSON object.","x-example":"{}"}},"required":["prefs"]}}}}}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"project","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]},{"name":"proxy","description":"The Proxy Service allows you to configure actions for your domains beyond DNS configuration.","x-globalAttributes":[]},{"name":"graphql","description":"The GraphQL API allows you to query and mutate your Appwrite server using GraphQL.","x-globalAttributes":[]},{"name":"console","description":"The Console service allows you to interact with console relevant informations.","x-globalAttributes":[]},{"name":"migrations","description":"The Migrations service allows you to migrate third-party data to your Appwrite project.","x-globalAttributes":[]},{"name":"messaging","description":"The Messaging service allows you to send messages to any provider type (SMTP, push notification, SMS, etc.).","x-globalAttributes":[]}],"components":{"schemas":{"any":{"description":"Any","type":"object","additionalProperties":true},"error":{"description":"Error","type":"object","properties":{"message":{"type":"string","description":"Error message.","x-example":"Not found"},"code":{"type":"string","description":"Error code.","x-example":"404"},"type":{"type":"string","description":"Error type. You can learn more about all the error types at https:\/\/appwrite.io\/docs\/error-codes#errorTypes","x-example":"not_found"},"version":{"type":"string","description":"Server version number.","x-example":"1.0"}},"required":["message","code","type","version"]},"documentList":{"description":"Documents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of documents documents that matched your query.","x-example":5,"format":"int32"},"documents":{"type":"array","description":"List of documents.","items":{"$ref":"#\/components\/schemas\/document"},"x-example":""}},"required":["total","documents"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of sessions documents that matched your query.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"$ref":"#\/components\/schemas\/session"},"x-example":""}},"required":["total","sessions"]},"identityList":{"description":"Identities List","type":"object","properties":{"total":{"type":"integer","description":"Total number of identities documents that matched your query.","x-example":5,"format":"int32"},"identities":{"type":"array","description":"List of identities.","items":{"$ref":"#\/components\/schemas\/identity"},"x-example":""}},"required":["total","identities"]},"logList":{"description":"Logs List","type":"object","properties":{"total":{"type":"integer","description":"Total number of logs documents that matched your query.","x-example":5,"format":"int32"},"logs":{"type":"array","description":"List of logs.","items":{"$ref":"#\/components\/schemas\/log"},"x-example":""}},"required":["total","logs"]},"fileList":{"description":"Files List","type":"object","properties":{"total":{"type":"integer","description":"Total number of files documents that matched your query.","x-example":5,"format":"int32"},"files":{"type":"array","description":"List of files.","items":{"$ref":"#\/components\/schemas\/file"},"x-example":""}},"required":["total","files"]},"teamList":{"description":"Teams List","type":"object","properties":{"total":{"type":"integer","description":"Total number of teams documents that matched your query.","x-example":5,"format":"int32"},"teams":{"type":"array","description":"List of teams.","items":{"$ref":"#\/components\/schemas\/team"},"x-example":""}},"required":["total","teams"]},"membershipList":{"description":"Memberships List","type":"object","properties":{"total":{"type":"integer","description":"Total number of memberships documents that matched your query.","x-example":5,"format":"int32"},"memberships":{"type":"array","description":"List of memberships.","items":{"$ref":"#\/components\/schemas\/membership"},"x-example":""}},"required":["total","memberships"]},"executionList":{"description":"Executions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of executions documents that matched your query.","x-example":5,"format":"int32"},"executions":{"type":"array","description":"List of executions.","items":{"$ref":"#\/components\/schemas\/execution"},"x-example":""}},"required":["total","executions"]},"countryList":{"description":"Countries List","type":"object","properties":{"total":{"type":"integer","description":"Total number of countries documents that matched your query.","x-example":5,"format":"int32"},"countries":{"type":"array","description":"List of countries.","items":{"$ref":"#\/components\/schemas\/country"},"x-example":""}},"required":["total","countries"]},"continentList":{"description":"Continents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of continents documents that matched your query.","x-example":5,"format":"int32"},"continents":{"type":"array","description":"List of continents.","items":{"$ref":"#\/components\/schemas\/continent"},"x-example":""}},"required":["total","continents"]},"languageList":{"description":"Languages List","type":"object","properties":{"total":{"type":"integer","description":"Total number of languages documents that matched your query.","x-example":5,"format":"int32"},"languages":{"type":"array","description":"List of languages.","items":{"$ref":"#\/components\/schemas\/language"},"x-example":""}},"required":["total","languages"]},"currencyList":{"description":"Currencies List","type":"object","properties":{"total":{"type":"integer","description":"Total number of currencies documents that matched your query.","x-example":5,"format":"int32"},"currencies":{"type":"array","description":"List of currencies.","items":{"$ref":"#\/components\/schemas\/currency"},"x-example":""}},"required":["total","currencies"]},"phoneList":{"description":"Phones List","type":"object","properties":{"total":{"type":"integer","description":"Total number of phones documents that matched your query.","x-example":5,"format":"int32"},"phones":{"type":"array","description":"List of phones.","items":{"$ref":"#\/components\/schemas\/phone"},"x-example":""}},"required":["total","phones"]},"localeCodeList":{"description":"Locale codes list","type":"object","properties":{"total":{"type":"integer","description":"Total number of localeCodes documents that matched your query.","x-example":5,"format":"int32"},"localeCodes":{"type":"array","description":"List of localeCodes.","items":{"$ref":"#\/components\/schemas\/localeCode"},"x-example":""}},"required":["total","localeCodes"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"user":{"description":"User","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"password":{"type":"string","description":"Hashed user password.","x-example":"$argon2id$v=19$m=2048,t=4,p=3$aUZjLnliVWRINmFNTWMudg$5S+x+7uA31xFnrHFT47yFwcJeaP0w92L\/4LdgrVRXxE","nullable":true},"hash":{"type":"string","description":"Password hashing algorithm.","x-example":"argon2","nullable":true},"hashOptions":{"type":"object","description":"Password hashing algorithm configuration.","x-example":{},"items":{"oneOf":[{"$ref":"#\/components\/schemas\/algoArgon2"},{"$ref":"#\/components\/schemas\/algoScrypt"},{"$ref":"#\/components\/schemas\/algoScryptModified"},{"$ref":"#\/components\/schemas\/algoBcrypt"},{"$ref":"#\/components\/schemas\/algoPhpass"},{"$ref":"#\/components\/schemas\/algoSha"},{"$ref":"#\/components\/schemas\/algoMd5"}]},"nullable":true},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"labels":{"type":"array","description":"Labels for the user.","items":{"type":"string"},"x-example":["vip"]},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"mfa":{"type":"boolean","description":"Multi factor authentication status.","x-example":true},"totp":{"type":"boolean","description":"TOTP status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"$ref":"#\/components\/schemas\/preferences"}},"targets":{"type":"array","description":"A user-owned message receiver. A single user may have multiple e.g. emails, phones, and a browser. Each target is registered with a single provider.","items":{"$ref":"#\/components\/schemas\/target"},"x-example":[]},"accessedAt":{"type":"string","description":"Most recent access date in ISO 8601 format. This attribute is only updated again after 24 hours.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","$updatedAt","name","registration","status","labels","passwordUpdate","email","phone","emailVerification","phoneVerification","mfa","totp","prefs","targets","accessedAt"]},"algoMd5":{"description":"AlgoMD5","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"md5"}},"required":["type"]},"algoSha":{"description":"AlgoSHA","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"sha"}},"required":["type"]},"algoPhpass":{"description":"AlgoPHPass","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"phpass"}},"required":["type"]},"algoBcrypt":{"description":"AlgoBcrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"bcrypt"}},"required":["type"]},"algoScrypt":{"description":"AlgoScrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scrypt"},"costCpu":{"type":"integer","description":"CPU complexity of computed hash.","x-example":8,"format":"int32"},"costMemory":{"type":"integer","description":"Memory complexity of computed hash.","x-example":14,"format":"int32"},"costParallel":{"type":"integer","description":"Parallelization of computed hash.","x-example":1,"format":"int32"},"length":{"type":"integer","description":"Length used to compute hash.","x-example":64,"format":"int32"}},"required":["type","costCpu","costMemory","costParallel","length"]},"algoScryptModified":{"description":"AlgoScryptModified","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scryptMod"},"salt":{"type":"string","description":"Salt used to compute hash.","x-example":"UxLMreBr6tYyjQ=="},"saltSeparator":{"type":"string","description":"Separator used to compute hash.","x-example":"Bw=="},"signerKey":{"type":"string","description":"Key used to compute hash.","x-example":"XyEKE9RcTDeLEsL\/RjwPDBv\/RqDl8fb3gpYEOQaPihbxf1ZAtSOHCjuAAa7Q3oHpCYhXSN9tizHgVOwn6krflQ=="}},"required":["type","salt","saltSeparator","signerKey"]},"algoArgon2":{"description":"AlgoArgon2","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"argon2"},"memoryCost":{"type":"integer","description":"Memory used to compute hash.","x-example":65536,"format":"int32"},"timeCost":{"type":"integer","description":"Amount of time consumed to compute hash","x-example":4,"format":"int32"},"threads":{"type":"integer","description":"Number of threads used to compute hash.","x-example":3,"format":"int32"}},"required":["type","memoryCost","timeCost","threads"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true},"factors":{"type":"array","description":"Returns a list of active session factors.","items":{"type":"string"},"x-example":["email"]},"secret":{"type":"string","description":"Secret used to authenticate the user. Only included if the request was made with an API key","x-example":"5e5bb8c16897e"}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current","factors","secret"]},"identity":{"description":"Identity","type":"object","properties":{"$id":{"type":"string","description":"Identity ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Identity creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Identity update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"provider":{"type":"string","description":"Identity Provider.","x-example":"email"},"providerUid":{"type":"string","description":"ID of the User in the Identity Provider.","x-example":"5e5bb8c16897e"},"providerEmail":{"type":"string","description":"Email of the User in the Identity Provider.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Identity Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Identity Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"}},"required":["$id","$createdAt","$updatedAt","userId","provider","providerUid","providerEmail","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"phrase":{"type":"string","description":"Security phrase of a token. Empty if security phrase was not requested when creating a token. It includes randomly generated phrase which is also sent in the external resource such as email.","x-example":"Golden Fox"}},"required":["$id","$createdAt","userId","secret","expire","phrase"]},"jwt":{"description":"JWT","type":"object","properties":{"jwt":{"type":"string","description":"JWT encoded string.","x-example":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c"}},"required":["jwt"]},"locale":{"description":"Locale","type":"object","properties":{"ip":{"type":"string","description":"User IP address.","x-example":"127.0.0.1"},"countryCode":{"type":"string","description":"Country code in [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) two-character format","x-example":"US"},"country":{"type":"string","description":"Country name. This field support localization.","x-example":"United States"},"continentCode":{"type":"string","description":"Continent code. A two character continent code \"AF\" for Africa, \"AN\" for Antarctica, \"AS\" for Asia, \"EU\" for Europe, \"NA\" for North America, \"OC\" for Oceania, and \"SA\" for South America.","x-example":"NA"},"continent":{"type":"string","description":"Continent name. This field support localization.","x-example":"North America"},"eu":{"type":"boolean","description":"True if country is part of the European Union.","x-example":false},"currency":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format","x-example":"USD"}},"required":["ip","countryCode","country","continentCode","continent","eu","currency"]},"localeCode":{"description":"LocaleCode","type":"object","properties":{"code":{"type":"string","description":"Locale codes in [ISO 639-1](https:\/\/en.wikipedia.org\/wiki\/List_of_ISO_639-1_codes)","x-example":"en-us"},"name":{"type":"string","description":"Locale name","x-example":"US"}},"required":["code","name"]},"file":{"description":"File","type":"object","properties":{"$id":{"type":"string","description":"File ID.","x-example":"5e5ea5c16897e"},"bucketId":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"},"prefs":{"type":"object","description":"Team preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"$ref":"#\/components\/schemas\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","total","prefs"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"mfa":{"type":"boolean","description":"Multi factor authentication status, true if the user has MFA enabled or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":["owner"]}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","mfa","roles"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"requestMethod":{"type":"string","description":"HTTP request method type.","x-example":"GET"},"requestPath":{"type":"string","description":"HTTP request path and query.","x-example":"\/articles?id=5"},"requestHeaders":{"type":"array","description":"HTTP response headers as a key-value object. This will return only whitelisted headers. All headers are returned if execution is created as synchronous.","items":{"$ref":"#\/components\/schemas\/headers"},"x-example":[{"Content-Type":"application\/json"}]},"responseStatusCode":{"type":"integer","description":"HTTP response status code.","x-example":200,"format":"int32"},"responseBody":{"type":"string","description":"HTTP response body. This will return empty unless execution is created as synchronous.","x-example":"Developers are awesome."},"responseHeaders":{"type":"array","description":"HTTP response headers as a key-value object. This will return only whitelisted headers. All headers are returned if execution is created as synchronous.","items":{"$ref":"#\/components\/schemas\/headers"},"x-example":[{"Content-Type":"application\/json"}]},"logs":{"type":"string","description":"Function logs. Includes the last 4,000 characters. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"errors":{"type":"string","description":"Function errors. Includes the last 4,000 characters. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"Function execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","requestMethod","requestPath","requestHeaders","responseStatusCode","responseBody","responseHeaders","logs","errors","duration"]},"country":{"description":"Country","type":"object","properties":{"name":{"type":"string","description":"Country name.","x-example":"United States"},"code":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"}},"required":["name","code"]},"continent":{"description":"Continent","type":"object","properties":{"name":{"type":"string","description":"Continent name.","x-example":"Europe"},"code":{"type":"string","description":"Continent two letter code.","x-example":"EU"}},"required":["name","code"]},"language":{"description":"Language","type":"object","properties":{"name":{"type":"string","description":"Language name.","x-example":"Italian"},"code":{"type":"string","description":"Language two-character ISO 639-1 codes.","x-example":"it"},"nativeName":{"type":"string","description":"Language native name.","x-example":"Italiano"}},"required":["name","code","nativeName"]},"currency":{"description":"Currency","type":"object","properties":{"symbol":{"type":"string","description":"Currency symbol.","x-example":"$"},"name":{"type":"string","description":"Currency name.","x-example":"US dollar"},"symbolNative":{"type":"string","description":"Currency native symbol.","x-example":"$"},"decimalDigits":{"type":"integer","description":"Number of decimal digits.","x-example":2,"format":"int32"},"rounding":{"type":"number","description":"Currency digit rounding.","x-example":0,"format":"double"},"code":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format.","x-example":"USD"},"namePlural":{"type":"string","description":"Currency plural name","x-example":"US dollars"}},"required":["symbol","name","symbolNative","decimalDigits","rounding","code","namePlural"]},"phone":{"description":"Phone","type":"object","properties":{"code":{"type":"string","description":"Phone code.","x-example":"+1"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["code","countryCode","countryName"]},"headers":{"description":"Headers","type":"object","properties":{"name":{"type":"string","description":"Header name.","x-example":"Content-Type"},"value":{"type":"string","description":"Header value.","x-example":"application\/json"}},"required":["name","value"]},"mfaChallenge":{"description":"MFA Challenge","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","userId","expire"]},"mfaType":{"description":"MFAType","type":"object","properties":{"backups":{"type":"array","description":"Backup codes.","items":{"type":"string"},"x-example":true},"secret":{"type":"string","description":"Secret token used for TOTP factor.","x-example":true},"uri":{"type":"string","description":"URI for authenticator apps.","x-example":true}},"required":["backups","secret","uri"]},"mfaFactors":{"description":"MFAFactors","type":"object","properties":{"totp":{"type":"boolean","description":"TOTP","x-example":true},"phone":{"type":"boolean","description":"Phone","x-example":true},"email":{"type":"boolean","description":"Email","x-example":true}},"required":["totp","phone","email"]},"subscriber":{"description":"Subscriber","type":"object","properties":{"$id":{"type":"string","description":"Subscriber ID.","x-example":"259125845563242502"},"$createdAt":{"type":"string","description":"Subscriber creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Subscriber update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"targetId":{"type":"string","description":"Target ID.","x-example":"259125845563242502"},"target":{"type":"object","description":"Target.","x-example":{"$id":"259125845563242502","$createdAt":"2020-10-15T06:38:00.000+00:00","$updatedAt":"2020-10-15T06:38:00.000+00:00","providerType":"email","providerId":"259125845563242502","name":"ageon-app-email","identifier":"random-mail@email.org","userId":"5e5ea5c16897e"},"items":{"$ref":"#\/components\/schemas\/target"}},"userId":{"type":"string","description":"Topic ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User Name.","x-example":"Aegon Targaryen"},"topicId":{"type":"string","description":"Topic ID.","x-example":"259125845563242502"},"providerType":{"type":"string","description":"The target provider type. Can be one of the following: `email`, `sms` or `push`.","x-example":"email"}},"required":["$id","$createdAt","$updatedAt","targetId","target","userId","userName","topicId","providerType"]},"target":{"description":"Target","type":"object","properties":{"$id":{"type":"string","description":"Target ID.","x-example":"259125845563242502"},"$createdAt":{"type":"string","description":"Target creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Target update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Target Name.","x-example":"Aegon apple token"},"userId":{"type":"string","description":"User ID.","x-example":"259125845563242502"},"providerId":{"type":"string","description":"Provider ID.","x-example":"259125845563242502","nullable":true},"providerType":{"type":"string","description":"The target provider type. Can be one of the following: `email`, `sms` or `push`.","x-example":"email"},"identifier":{"type":"string","description":"The target identifier.","x-example":"token"}},"required":["$id","$createdAt","$updatedAt","name","userId","providerType","identifier"]}},"securitySchemes":{"Project":{"type":"apiKey","name":"X-Appwrite-Project","description":"Your project ID","in":"header","x-appwrite":{"demo":"5df5acd0d48c2"}},"JWT":{"type":"apiKey","name":"X-Appwrite-JWT","description":"Your secret JSON Web Token","in":"header"},"Locale":{"type":"apiKey","name":"X-Appwrite-Locale","description":"","in":"header","x-appwrite":{"demo":"en"}},"Session":{"type":"apiKey","name":"X-Appwrite-Session","description":"The user session to authenticate with","in":"header"}}},"externalDocs":{"description":"Full API docs, specs and tutorials","url":"https:\/\/appwrite.io\/docs"}} \ No newline at end of file diff --git a/app/config/specs/open-api3-latest-console.json b/app/config/specs/open-api3-latest-console.json index a6d5aa248c..1276cb3037 100644 --- a/app/config/specs/open-api3-latest-console.json +++ b/app/config/specs/open-api3-latest-console.json @@ -1 +1 @@ -{"openapi":"3.0.0","info":{"version":"1.4.13","title":"Appwrite","description":"Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https:\/\/appwrite.io\/docs](https:\/\/appwrite.io\/docs)","termsOfService":"https:\/\/appwrite.io\/policy\/terms","contact":{"name":"Appwrite Team","url":"https:\/\/appwrite.io\/support","email":"team@appwrite.io"},"license":{"name":"BSD-3-Clause","url":"https:\/\/raw.githubusercontent.com\/appwrite\/appwrite\/master\/LICENSE"}},"servers":[{"url":"https:\/\/cloud.appwrite.io\/v1"}],"paths":{"\/account":{"get":{"summary":"Get account","operationId":"accountGet","tags":["account"],"description":"Get the currently logged in user.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"get","weight":22,"cookies":false,"type":"","demo":"account\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"post":{"summary":"Create account","operationId":"accountCreate","tags":["account"],"description":"Use this endpoint to allow a new user to register a new account in your project. After the user registration completes successfully, you can use the [\/account\/verfication](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createVerification) route to start verifying the user email address. To allow the new user to login to their new account, you need to create a new [account session](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createEmailSession).","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"create","weight":7,"cookies":false,"type":"","demo":"account\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"New user password. Must be between 8 and 256 chars.","x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}},"delete":{"summary":"Delete account","operationId":"accountDelete","tags":["account"],"description":"Delete the currently logged in user.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":49,"cookies":false,"type":"","demo":"account\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/email":{"patch":{"summary":"Update email","operationId":"accountUpdateEmail","tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateEmail","weight":29,"cookies":false,"type":"","demo":"account\/update-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","x-example":"password"}},"required":["email","password"]}}}}}},"\/account\/identities":{"get":{"summary":"List Identities","operationId":"accountListIdentities","tags":["account"],"description":"Get the list of identities for the currently logged in user.","responses":{"200":{"description":"Identities List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/identityList"}}}}},"x-appwrite":{"method":"listIdentities","weight":13,"cookies":false,"type":"","demo":"account\/list-identities.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-identities.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/identities","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, provider, providerUid, providerEmail, providerAccessTokenExpiry","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/identities\/{identityId}":{"delete":{"summary":"Delete identity","operationId":"accountDeleteIdentity","tags":["account"],"description":"Delete an identity by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIdentity","weight":14,"cookies":false,"type":"","demo":"account\/delete-identity.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-identity.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"identityId","description":"Identity ID.","required":true,"schema":{"type":"string","x-example":"[IDENTITY_ID]"},"in":"path"}]}},"\/account\/jwt":{"post":{"summary":"Create JWT","operationId":"accountCreateJWT","tags":["account"],"description":"Use this endpoint to create a JSON Web Token. You can use the resulting JWT to authenticate on behalf of the current user when working with the Appwrite server-side API and SDKs. The JWT secret is valid for 15 minutes from its creation and will be invalid if the user will logout in that time frame.","responses":{"201":{"description":"JWT","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/jwt"}}}}},"x-appwrite":{"method":"createJWT","weight":21,"cookies":false,"type":"","demo":"account\/create-j-w-t.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-jwt.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"accounts.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"List logs","operationId":"accountListLogs","tags":["account"],"description":"Get the list of latest security activity logs for the currently logged in user. Each log returns user IP address, location and date and time of log.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listLogs","weight":25,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/mfa":{"patch":{"summary":"Update MFA","operationId":"accountUpdateMFA","tags":["account"],"description":"","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateMFA","weight":42,"cookies":false,"type":"","demo":"account\/update-m-f-a.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-mfa.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"mfa":{"type":"boolean","description":"Enable or disable MFA.","x-example":false}},"required":["mfa"]}}}}}},"\/account\/mfa\/challenge":{"post":{"summary":"Create 2FA Challenge","operationId":"accountCreate2FAChallenge","tags":["account"],"description":"","responses":{"201":{"description":"MFA Challenge","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/mfaChallenge"}}}}},"x-appwrite":{"method":"create2FAChallenge","weight":47,"cookies":false,"type":"","demo":"account\/create2f-a-challenge.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-2fa-challenge.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},token:{param-token}","scope":"accounts.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"factor":{"type":"string","description":"Factor used for verification.","x-example":"totp","enum":["totp","phone","email"],"x-enum-name":null,"x-enum-keys":[]}},"required":["factor"]}}}}},"put":{"summary":"Create MFA Challenge (confirmation)","operationId":"accountUpdateChallenge","tags":["account"],"description":"","responses":{"204":{"description":"No content","content":{"":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateChallenge","weight":48,"cookies":false,"type":"","demo":"account\/update-challenge.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-challenge.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"challengeId":{"type":"string","description":"ID of the challenge.","x-example":"[CHALLENGE_ID]"},"otp":{"type":"string","description":"Valid verification token.","x-example":"[OTP]"}},"required":["challengeId","otp"]}}}}}},"\/account\/mfa\/factors":{"get":{"summary":"List Factors","operationId":"accountListFactors","tags":["account"],"description":"","responses":{"200":{"description":"MFAFactors","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/mfaFactors"}}}}},"x-appwrite":{"method":"listFactors","weight":43,"cookies":false,"type":"","demo":"account\/list-factors.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-factors.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/account\/mfa\/{type}":{"post":{"summary":"Add Authenticator","operationId":"accountAddAuthenticator","tags":["account"],"description":"","responses":{"200":{"description":"MFAType","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/mfaType"}}}}},"x-appwrite":{"method":"addAuthenticator","weight":44,"cookies":false,"type":"","demo":"account\/add-authenticator.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/add-authenticator.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"type","description":"Type of authenticator.","required":true,"schema":{"type":"string","x-example":"totp","enum":["totp"],"x-enum-name":null,"x-enum-keys":[]},"in":"path"}]},"put":{"summary":"Verify Authenticator","operationId":"accountVerifyAuthenticator","tags":["account"],"description":"","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"verifyAuthenticator","weight":45,"cookies":false,"type":"","demo":"account\/verify-authenticator.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/verify-authenticator.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"type","description":"Type of authenticator.","required":true,"schema":{"type":"string","x-example":"totp","enum":["totp"],"x-enum-name":null,"x-enum-keys":[]},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"otp":{"type":"string","description":"Valid verification token.","x-example":"[OTP]"}},"required":["otp"]}}}}},"delete":{"summary":"Delete Authenticator","operationId":"accountDeleteAuthenticator","tags":["account"],"description":"","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"deleteAuthenticator","weight":46,"cookies":false,"type":"","demo":"account\/delete-authenticator.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-mfa.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"type","description":"Type of authenticator.","required":true,"schema":{"type":"string","x-example":"totp","enum":["totp"],"x-enum-name":null,"x-enum-keys":[]},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"otp":{"type":"string","description":"Valid verification token.","x-example":"[OTP]"}},"required":["otp"]}}}}}},"\/account\/name":{"patch":{"summary":"Update name","operationId":"accountUpdateName","tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateName","weight":27,"cookies":false,"type":"","demo":"account\/update-name.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-name.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["name"]}}}}}},"\/account\/password":{"patch":{"summary":"Update password","operationId":"accountUpdatePassword","tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePassword","weight":28,"cookies":false,"type":"","demo":"account\/update-password.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-password.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"password":{"type":"string","description":"New user password. Must be at least 8 chars.","x-example":null},"oldPassword":{"type":"string","description":"Current user password. Must be at least 8 chars.","x-example":"password"}},"required":["password"]}}}}}},"\/account\/phone":{"patch":{"summary":"Update phone","operationId":"accountUpdatePhone","tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createPhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePhone","weight":30,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","x-example":"password"}},"required":["phone","password"]}}}}}},"\/account\/prefs":{"get":{"summary":"Get account preferences","operationId":"accountGetPrefs","tags":["account"],"description":"Get the preferences as a key-value object for the currently logged in user.","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"getPrefs","weight":23,"cookies":false,"type":"","demo":"account\/get-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/prefs","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"patch":{"summary":"Update preferences","operationId":"accountUpdatePrefs","tags":["account"],"description":"Update currently logged in user account preferences. The object you pass is stored as is, and replaces any previous value. The maximum allowed prefs size is 64kB and throws error if exceeded.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePrefs","weight":31,"cookies":false,"type":"","demo":"account\/update-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/prefs","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"prefs":{"type":"object","description":"Prefs key-value JSON object.","x-example":"{}"}},"required":["prefs"]}}}}}},"\/account\/recovery":{"post":{"summary":"Create password recovery","operationId":"accountCreateRecovery","tags":["account"],"description":"Sends the user an email with a temporary secret key for password reset. When the user clicks the confirmation link he is redirected back to your app password reset URL with the secret key and email address values attached to the URL query string. Use the query string params to submit a request to the [PUT \/account\/recovery](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateRecovery) endpoint to complete the process. The verification link sent to the user's email address is valid for 1 hour.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createRecovery","weight":36,"cookies":false,"type":"","demo":"account\/create-recovery.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-recovery.md","rate-limit":10,"rate-time":3600,"rate-key":["url:{url},email:{param-email}","url:{url},ip:{ip}"],"scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"url":{"type":"string","description":"URL to redirect the user back to your app from the recovery email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"}},"required":["email","url"]}}}}},"put":{"summary":"Create password recovery (confirmation)","operationId":"accountUpdateRecovery","tags":["account"],"description":"Use this endpoint to complete the user account password reset. Both the **userId** and **secret** arguments will be passed as query parameters to the redirect URL you have provided when sending your request to the [POST \/account\/recovery](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createRecovery) endpoint.\n\nPlease note that in order to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) the only valid redirect URLs are the ones from domains you have set when adding your platforms in the console interface.","responses":{"200":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"updateRecovery","weight":37,"cookies":false,"type":"","demo":"account\/update-recovery.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-recovery.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid reset token.","x-example":"[SECRET]"},"password":{"type":"string","description":"New user password. Must be between 8 and 256 chars.","x-example":null}},"required":["userId","secret","password"]}}}}}},"\/account\/sessions":{"get":{"summary":"List sessions","operationId":"accountListSessions","tags":["account"],"description":"Get the list of active sessions across different devices for the currently logged in user.","responses":{"200":{"description":"Sessions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/sessionList"}}}}},"x-appwrite":{"method":"listSessions","weight":24,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/sessions","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete sessions","operationId":"accountDeleteSessions","tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":35,"cookies":false,"type":"","demo":"account\/delete-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-sessions.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/account\/sessions\/anonymous":{"post":{"summary":"Create anonymous session","operationId":"accountCreateAnonymousSession","tags":["account"],"description":"Use this endpoint to allow a new user to register an anonymous account in your project. This route will also create a new session for the user. To allow the new user to convert an anonymous account to a normal account, you need to update its [email and password](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateEmail) or create an [OAuth2 session](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#CreateOAuth2Session).","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"createAnonymousSession","weight":20,"cookies":false,"type":"","demo":"account\/create-anonymous-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-anonymous.md","rate-limit":50,"rate-time":3600,"rate-key":"ip:{ip}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/sessions\/email":{"post":{"summary":"Create email password session","operationId":"accountCreateEmailPasswordSession","tags":["account"],"description":"Allow the user to login into their account by providing a valid email and password combination. This route will create a new session for the user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"createEmailPasswordSession","weight":8,"cookies":false,"type":"","demo":"account\/create-email-password-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-email-password.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","x-example":"password"}},"required":["email","password"]}}}}}},"\/account\/sessions\/magic-url":{"put":{"summary":"Create session (deprecated)","operationId":"accountUpdateMagicURLSession","tags":["account"],"description":"Use this endpoint to create a session from token. Provide the **userId** and **secret** parameters from the successful response of authentication flows initiated by token creation. For example, magic URL and phone login.","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateMagicURLSession","weight":17,"cookies":false,"type":"","demo":"account\/update-magic-u-r-l-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session.md","rate-limit":10,"rate-time":3600,"rate-key":"ip:{ip},userId:{param-userId}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/account\/sessions\/oauth2\/{provider}":{"get":{"summary":"Create OAuth2 session","operationId":"accountCreateOAuth2Session","tags":["account"],"description":"Allow the user to login to their account using the OAuth2 provider of their choice. Each OAuth2 provider should be enabled from the Appwrite console first. Use the success and failure arguments to provide a redirect URL's back to your app when login is completed.\n\nIf there is already an active session, the new session will be attached to the logged-in account. If there are no active sessions, the server will attempt to look for a user with the same email address as the email received from the OAuth2 provider and attach the new session to the existing user. If no matching user is found - the server will create a new user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).\n","responses":{"301":{"description":"File"}},"x-appwrite":{"method":"createOAuth2Session","weight":9,"cookies":false,"type":"webAuth","demo":"account\/create-o-auth2session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-oauth2.md","rate-limit":50,"rate-time":3600,"rate-key":"ip:{ip}","scope":"sessions.write","platforms":["client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"provider","description":"OAuth2 Provider. Currently, supported providers are: amazon, apple, auth0, authentik, autodesk, bitbucket, bitly, box, dailymotion, discord, disqus, dropbox, etsy, facebook, github, gitlab, google, linkedin, microsoft, notion, oidc, okta, paypal, paypalSandbox, podio, salesforce, slack, spotify, stripe, tradeshift, tradeshiftBox, twitch, wordpress, yahoo, yammer, yandex, zoho, zoom.","required":true,"schema":{"type":"string","x-example":"amazon","enum":["amazon","apple","auth0","authentik","autodesk","bitbucket","bitly","box","dailymotion","discord","disqus","dropbox","etsy","facebook","github","gitlab","google","linkedin","microsoft","notion","oidc","okta","paypal","paypalSandbox","podio","salesforce","slack","spotify","stripe","tradeshift","tradeshiftBox","twitch","wordpress","yahoo","yammer","yandex","zoho","zoom","mock"],"x-enum-name":"OAuthProvider","x-enum-keys":[]},"in":"path"},{"name":"success","description":"URL to redirect back to your app after a successful login attempt. Only URLs from hostnames in your project's platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","required":false,"schema":{"type":"string","format":"url","x-example":"https:\/\/example.com","default":""},"in":"query"},{"name":"failure","description":"URL to redirect back to your app after a failed login attempt. Only URLs from hostnames in your project's platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","required":false,"schema":{"type":"string","format":"url","x-example":"https:\/\/example.com","default":""},"in":"query"},{"name":"token","description":"Include token credentials in the final redirect, useful for server-side integrations, or when cookies are not available.","required":false,"schema":{"type":"boolean","x-example":false,"default":false},"in":"query"},{"name":"scopes","description":"A list of custom OAuth2 scopes. Check each provider internal docs for a list of supported scopes. Maximum of 100 scopes are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/sessions\/token":{"post":{"summary":"Create session","operationId":"accountCreateSession","tags":["account"],"description":"Use this endpoint to create a session from token. Provide the **userId** and **secret** parameters from the successful response of authentication flows initiated by token creation. For example, magic URL and phone login.","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"createSession","weight":18,"cookies":false,"type":"","demo":"account\/create-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session.md","rate-limit":10,"rate-time":3600,"rate-key":"ip:{ip},userId:{param-userId}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Secret of a token generated by login methods. For example, the `createMagicURLToken` or `createPhoneToken` methods.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/account\/sessions\/{sessionId}":{"get":{"summary":"Get session","operationId":"accountGetSession","tags":["account"],"description":"Use this endpoint to get a logged in user's session using a Session ID. Inputting 'current' will return the current session being used.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"getSession","weight":26,"cookies":false,"type":"","demo":"account\/get-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-session.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/sessions","offline-key":"{sessionId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to get the current device session.","required":true,"schema":{"type":"string","x-example":"[SESSION_ID]"},"in":"path"}]},"patch":{"summary":"Update (or renew) a session","operationId":"accountUpdateSession","tags":["account"],"description":"Extend session's expiry to increase it's lifespan. Extending a session is useful when session length is short such as 5 minutes.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateSession","weight":34,"cookies":false,"type":"","demo":"account\/update-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-session.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to update the current device session.","required":true,"schema":{"type":"string","x-example":"[SESSION_ID]"},"in":"path"}]},"delete":{"summary":"Delete session","operationId":"accountDeleteSession","tags":["account"],"description":"Logout the user. Use 'current' as the session ID to logout on this device, use a session ID to logout on another device. If you're looking to logout the user on all devices, use [Delete Sessions](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#deleteSessions) instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSession","weight":33,"cookies":false,"type":"","demo":"account\/delete-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-session.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to delete the current device session.","required":true,"schema":{"type":"string","x-example":"[SESSION_ID]"},"in":"path"}]}},"\/account\/status":{"patch":{"summary":"Update status","operationId":"accountUpdateStatus","tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateStatus","weight":32,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/account\/targets\/push":{"post":{"summary":"Create a push target","operationId":"accountCreatePushTarget","tags":["account"],"description":"","responses":{"201":{"description":"Target","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/target"}}}}},"x-appwrite":{"method":"createPushTarget","weight":50,"cookies":false,"type":"","demo":"account\/create-push-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"targetId":{"type":"string","description":"Target ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[TARGET_ID]"},"identifier":{"type":"string","description":"The target identifier (token, email, phone etc.)","x-example":"[IDENTIFIER]"},"providerId":{"type":"string","description":"Provider ID. Message will be sent to this target from the specified provider ID. If no provider ID is set the first setup provider will be used.","x-example":"[PROVIDER_ID]"}},"required":["targetId","identifier"]}}}}}},"\/account\/targets\/{targetId}\/push":{"put":{"summary":"Update a push target","operationId":"accountUpdatePushTarget","tags":["account"],"description":"","responses":{"200":{"description":"Target","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/target"}}}}},"x-appwrite":{"method":"updatePushTarget","weight":51,"cookies":false,"type":"","demo":"account\/update-push-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"targetId","description":"Target ID.","required":true,"schema":{"type":"string","x-example":"[TARGET_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"identifier":{"type":"string","description":"The target identifier (token, email, phone etc.)","x-example":"[IDENTIFIER]"}},"required":["identifier"]}}}}},"delete":{"summary":"Delete a push target","operationId":"accountDeletePushTarget","tags":["account"],"description":"","responses":{"204":{"description":"No content","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/target"}}}}},"x-appwrite":{"method":"deletePushTarget","weight":52,"cookies":false,"type":"","demo":"account\/delete-push-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"targetId","description":"Target ID.","required":true,"schema":{"type":"string","x-example":"[TARGET_ID]"},"in":"path"}]}},"\/account\/tokens\/email":{"post":{"summary":"Create email token (OTP)","operationId":"accountCreateEmailToken","tags":["account"],"description":"Sends the user an email with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [POST \/v1\/account\/sessions\/token](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createSession) endpoint to complete the login process. The secret sent to the user's email is valid for 15 minutes.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createEmailToken","weight":16,"cookies":false,"type":"","demo":"account\/create-email-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-token-email.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"phrase":{"type":"boolean","description":"Toggle for security phrase. If enabled, email will be send with a randomly generated phrase and the phrase will also be included in the response. Confirming phrases match increases the security of your authentication flow.","x-example":false}},"required":["userId","email"]}}}}}},"\/account\/tokens\/magic-url":{"post":{"summary":"Create magic URL token","operationId":"accountCreateMagicURLToken","tags":["account"],"description":"Sends the user an email with a secret key for creating a session. If the provided user ID has not been registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [POST \/v1\/account\/sessions\/token](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createSession) endpoint to complete the login process. The link sent to the user's email address is valid for 1 hour. If you are on a mobile device you can leave the URL parameter empty, so that the login completion will be handled by your Appwrite instance by default.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).\n","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createMagicURLToken","weight":15,"cookies":false,"type":"","demo":"account\/create-magic-u-r-l-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-token-magic-url.md","rate-limit":60,"rate-time":3600,"rate-key":["url:{url},email:{param-email}","url:{url},ip:{ip}"],"scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"url":{"type":"string","description":"URL to redirect the user back to your app from the magic URL login. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"},"phrase":{"type":"boolean","description":"Toggle for security phrase. If enabled, email will be send with a randomly generated phrase and the phrase will also be included in the response. Confirming phrases match increases the security of your authentication flow.","x-example":false}},"required":["userId","email"]}}}}}},"\/account\/tokens\/phone":{"post":{"summary":"Create phone token","operationId":"accountCreatePhoneToken","tags":["account"],"description":"Sends the user an SMS with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [POST \/v1\/account\/sessions\/token](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createSession) endpoint to complete the login process. The secret sent to the user's phone is valid for 15 minutes.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createPhoneToken","weight":19,"cookies":false,"type":"","demo":"account\/create-phone-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-token-phone.md","rate-limit":10,"rate-time":3600,"rate-key":["url:{url},phone:{param-phone}","url:{url},ip:{ip}"],"scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"}},"required":["userId","phone"]}}}}}},"\/account\/verification":{"post":{"summary":"Create email verification","operationId":"accountCreateVerification","tags":["account"],"description":"Use this endpoint to send a verification message to your user email address to confirm they are the valid owners of that address. Both the **userId** and **secret** arguments will be passed as query parameters to the URL you have provided to be attached to the verification email. The provided URL should redirect the user back to your app and allow you to complete the verification process by verifying both the **userId** and **secret** parameters. Learn more about how to [complete the verification process](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateVerification). The verification link sent to the user's email address is valid for 7 days.\n\nPlease note that in order to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md), the only valid redirect URLs are the ones from domains you have set when adding your platforms in the console interface.\n","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createVerification","weight":38,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"url":{"type":"string","description":"URL to redirect the user back to your app from the verification email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"}},"required":["url"]}}}}},"put":{"summary":"Create email verification (confirmation)","operationId":"accountUpdateVerification","tags":["account"],"description":"Use this endpoint to complete the user email verification process. Use both the **userId** and **secret** parameters that were attached to your app URL to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"updateVerification","weight":39,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/account\/verification\/phone":{"post":{"summary":"Create phone verification","operationId":"accountCreatePhoneVerification","tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updatePhone) endpoint. Learn more about how to [complete the verification process](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createPhoneVerification","weight":40,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":["url:{url},userId:{userId}","url:{url},ip:{ip}"],"scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"put":{"summary":"Create phone verification (confirmation)","operationId":"accountUpdatePhoneVerification","tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"updatePhoneVerification","weight":41,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/avatars\/browsers\/{code}":{"get":{"summary":"Get browser icon","operationId":"avatarsGetBrowser","tags":["avatars"],"description":"You can use this endpoint to show different browser icons to your users. The code argument receives the browser code as it appears in your user [GET \/account\/sessions](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#getSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getBrowser","weight":54,"cookies":false,"type":"location","demo":"avatars\/get-browser.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-browser.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Browser Code.","required":true,"schema":{"type":"string","x-example":"aa","enum":["aa","an","ch","ci","cm","cr","ff","sf","mf","ps","oi","om","op","on"],"x-enum-name":"Browser","x-enum-keys":["Avant Browser","Android WebView Beta","Google Chrome","Google Chrome (iOS)","Google Chrome (Mobile)","Chromium","Mozilla Firefox","Safari","Mobile Safari","Microsoft Edge","Microsoft Edge (iOS)","Opera Mini","Opera","Opera (Next)"]},"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"}]}},"\/avatars\/credit-cards\/{code}":{"get":{"summary":"Get credit card icon","operationId":"avatarsGetCreditCard","tags":["avatars"],"description":"The credit card endpoint will return you the icon of the credit card provider you need. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getCreditCard","weight":53,"cookies":false,"type":"location","demo":"avatars\/get-credit-card.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-credit-card.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Credit Card Code. Possible values: amex, argencard, cabal, censosud, diners, discover, elo, hipercard, jcb, mastercard, naranja, targeta-shopping, union-china-pay, visa, mir, maestro.","required":true,"schema":{"type":"string","x-example":"amex","enum":["amex","argencard","cabal","censosud","diners","discover","elo","hipercard","jcb","mastercard","naranja","targeta-shopping","union-china-pay","visa","mir","maestro"],"x-enum-name":"CreditCard","x-enum-keys":["American Express","Argencard","Cabal","Consosud","Diners Club","Discover","Elo","Hipercard","JCB","Mastercard","Naranja","Tarjeta Shopping","Union China Pay","Visa","MIR","Maestro"]},"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"}]}},"\/avatars\/favicon":{"get":{"summary":"Get favicon","operationId":"avatarsGetFavicon","tags":["avatars"],"description":"Use this endpoint to fetch the favorite icon (AKA favicon) of any remote website URL.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFavicon","weight":57,"cookies":false,"type":"location","demo":"avatars\/get-favicon.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-favicon.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"url","description":"Website URL which you want to fetch the favicon from.","required":true,"schema":{"type":"string","format":"url","x-example":"https:\/\/example.com"},"in":"query"}]}},"\/avatars\/flags\/{code}":{"get":{"summary":"Get country flag","operationId":"avatarsGetFlag","tags":["avatars"],"description":"You can use this endpoint to show different country flags icons to your users. The code argument receives the 2 letter country code. Use width, height and quality arguments to change the output settings. Country codes follow the [ISO 3166-1](https:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFlag","weight":55,"cookies":false,"type":"location","demo":"avatars\/get-flag.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-flag.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Country Code. ISO Alpha-2 country code format.","required":true,"schema":{"type":"string","x-example":"af","enum":["af","ao","al","ad","ae","ar","am","ag","au","at","az","bi","be","bj","bf","bd","bg","bh","bs","ba","by","bz","bo","br","bb","bn","bt","bw","cf","ca","ch","cl","cn","ci","cm","cd","cg","co","km","cv","cr","cu","cy","cz","de","dj","dm","dk","do","dz","ec","eg","er","es","ee","et","fi","fj","fr","fm","ga","gb","ge","gh","gn","gm","gw","gq","gr","gd","gt","gy","hn","hr","ht","hu","id","in","ie","ir","iq","is","il","it","jm","jo","jp","kz","ke","kg","kh","ki","kn","kr","kw","la","lb","lr","ly","lc","li","lk","ls","lt","lu","lv","ma","mc","md","mg","mv","mx","mh","mk","ml","mt","mm","me","mn","mz","mr","mu","mw","my","na","ne","ng","ni","nl","no","np","nr","nz","om","pk","pa","pe","ph","pw","pg","pl","kp","pt","py","qa","ro","ru","rw","sa","sd","sn","sg","sb","sl","sv","sm","so","rs","ss","st","sr","sk","si","se","sz","sc","sy","td","tg","th","tj","tm","tl","to","tt","tn","tr","tv","tz","ug","ua","uy","us","uz","va","vc","ve","vn","vu","ws","ye","za","zm","zw"],"x-enum-name":"Flag","x-enum-keys":["Afghanistan","Angola","Albania","Andorra","United Arab Emirates","Argentina","Armenia","Antigua and Barbuda","Australia","Austria","Azerbaijan","Burundi","Belgium","Benin","Burkina Faso","Bangladesh","Bulgaria","Bahrain","Bahamas","Bosnia and Herzegovina","Belarus","Belize","Bolivia","Brazil","Barbados","Brunei Darussalam","Bhutan","Botswana","Central African Republic","Canada","Switzerland","Chile","China","C\u00f4te d'Ivoire","Cameroon","Democratic Republic of the Congo","Republic of the Congo","Colombia","Comoros","Cape Verde","Costa Rica","Cuba","Cyprus","Czech Republic","Germany","Djibouti","Dominica","Denmark","Dominican Republic","Algeria","Ecuador","Egypt","Eritrea","Spain","Estonia","Ethiopia","Finland","Fiji","France","Micronesia (Federated States of)","Gabon","United Kingdom","Georgia","Ghana","Guinea","Gambia","Guinea-Bissau","Equatorial Guinea","Greece","Grenada","Guatemala","Guyana","Honduras","Croatia","Haiti","Hungary","Indonesia","India","Ireland","Iran (Islamic Republic of)","Iraq","Iceland","Israel","Italy","Jamaica","Jordan","Japan","Kazakhstan","Kenya","Kyrgyzstan","Cambodia","Kiribati","Saint Kitts and Nevis","South Korea","Kuwait","Lao People's Democratic Republic","Lebanon","Liberia","Libya","Saint Lucia","Liechtenstein","Sri Lanka","Lesotho","Lithuania","Luxembourg","Latvia","Morocco","Monaco","Moldova","Madagascar","Maldives","Mexico","Marshall Islands","North Macedonia","Mali","Malta","Myanmar","Montenegro","Mongolia","Mozambique","Mauritania","Mauritius","Malawi","Malaysia","Namibia","Niger","Nigeria","Nicaragua","Netherlands","Norway","Nepal","Nauru","New Zealand","Oman","Pakistan","Panama","Peru","Philippines","Palau","Papua New Guinea","Poland","North Korea","Portugal","Paraguay","Qatar","Romania","Russia","Rwanda","Saudi Arabia","Sudan","Senegal","Singapore","Solomon Islands","Sierra Leone","El Salvador","San Marino","Somalia","Serbia","South Sudan","Sao Tome and Principe","Suriname","Slovakia","Slovenia","Sweden","Eswatini","Seychelles","Syria","Chad","Togo","Thailand","Tajikistan","Turkmenistan","Timor-Leste","Tonga","Trinidad and Tobago","Tunisia","Turkey","Tuvalu","Tanzania","Uganda","Ukraine","Uruguay","United States","Uzbekistan","Vatican City","Saint Vincent and the Grenadines","Venezuela","Vietnam","Vanuatu","Samoa","Yemen","South Africa","Zambia","Zimbabwe"]},"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"}]}},"\/avatars\/image":{"get":{"summary":"Get image from URL","operationId":"avatarsGetImage","tags":["avatars"],"description":"Use this endpoint to fetch a remote image URL and crop it to any image size you want. This endpoint is very useful if you need to crop and display remote images in your app or in case you want to make sure a 3rd party image is properly served using a TLS protocol.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getImage","weight":56,"cookies":false,"type":"location","demo":"avatars\/get-image.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-image.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"url","description":"Image URL which you want to crop.","required":true,"schema":{"type":"string","format":"url","x-example":"https:\/\/example.com"},"in":"query"},{"name":"width","description":"Resize preview image width, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get user initials","operationId":"avatarsGetInitials","tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getInitials","weight":59,"cookies":false,"type":"location","demo":"avatars\/get-initials.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-initials.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"name","description":"Full Name. When empty, current user name or email will be used. Max length: 128 chars.","required":false,"schema":{"type":"string","x-example":"[NAME]","default":""},"in":"query"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":500},"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":500},"in":"query"},{"name":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"schema":{"type":"string","default":""},"in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR code","operationId":"avatarsGetQR","tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getQR","weight":58,"cookies":false,"type":"location","demo":"avatars\/get-q-r.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-qr.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"text","description":"Plain text to be converted to QR code image.","required":true,"schema":{"type":"string","x-example":"[TEXT]"},"in":"query"},{"name":"size","description":"QR code size. Pass an integer between 1 to 1000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":1,"default":400},"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":1},"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"schema":{"type":"boolean","x-example":false,"default":false},"in":"query"}]}},"\/console\/assistant":{"post":{"summary":"Ask Query","operationId":"assistantChat","tags":["assistant"],"description":"","responses":{"200":{"description":"File"}},"x-appwrite":{"method":"chat","weight":306,"cookies":false,"type":"","demo":"assistant\/chat.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/assistant\/chat.md","rate-limit":15,"rate-time":3600,"rate-key":"userId:{userId}","scope":"assistant.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"prompt":{"type":"string","description":"Prompt. A string containing questions asked to the AI assistant.","x-example":"[PROMPT]"}},"required":["prompt"]}}}}}},"\/console\/variables":{"get":{"summary":"Get variables","operationId":"consoleVariables","tags":["console"],"description":"Get all Environment Variables that are relevant for the console.","responses":{"200":{"description":"Console Variables","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/consoleVariables"}}}}},"x-appwrite":{"method":"variables","weight":305,"cookies":false,"type":"","demo":"console\/variables.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/console\/variables.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/databases":{"get":{"summary":"List databases","operationId":"databasesList","tags":["databases"],"description":"Get a list of all databases from the current Appwrite project. You can use the search parameter to filter your results.","responses":{"200":{"description":"Databases List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/databaseList"}}}}},"x-appwrite":{"method":"list","weight":64,"cookies":false,"type":"","demo":"databases\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create database","operationId":"databasesCreate","tags":["databases"],"description":"Create a new Database.\n","responses":{"201":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"create","weight":63,"cookies":false,"type":"","demo":"databases\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"databaseId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[DATABASE_ID]"},"name":{"type":"string","description":"Database name. Max length: 128 chars.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Is the database enabled? When set to 'disabled', users cannot access the database but Server SDKs with an API key can still read and write to the database. No data is lost when this is toggled.","x-example":false}},"required":["databaseId","name"]}}}}}},"\/databases\/usage":{"get":{"summary":"Get usage stats for the database","operationId":"databasesGetUsage","tags":["databases"],"description":"","responses":{"200":{"description":"UsageDatabases","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageDatabases"}}}}},"x-appwrite":{"method":"getUsage","weight":108,"cookies":false,"type":"","demo":"databases\/get-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"`Date range.","required":false,"schema":{"type":"string","x-example":"24h","enum":["24h","30d","90d"],"x-enum-name":"DatabaseUsageRange","x-enum-keys":["Twenty Four Hours","Thirty Days","Ninety Days"],"default":"30d"},"in":"query"}]}},"\/databases\/{databaseId}":{"get":{"summary":"Get database","operationId":"databasesGet","tags":["databases"],"description":"Get a database by its unique ID. This endpoint response returns a JSON object with the database metadata.","responses":{"200":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"get","weight":65,"cookies":false,"type":"","demo":"databases\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}]},"put":{"summary":"Update database","operationId":"databasesUpdate","tags":["databases"],"description":"Update a database by its unique ID.","responses":{"200":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"update","weight":67,"cookies":false,"type":"","demo":"databases\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Database name. Max length: 128 chars.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Is database enabled? When set to 'disabled', users cannot access the database but Server SDKs with an API key can still read and write to the database. No data is lost when this is toggled.","x-example":false}},"required":["name"]}}}}},"delete":{"summary":"Delete database","operationId":"databasesDelete","tags":["databases"],"description":"Delete a database by its unique ID. Only API keys with with databases.write scope can delete a database.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":68,"cookies":false,"type":"","demo":"databases\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections":{"get":{"summary":"List collections","operationId":"databasesListCollections","tags":["databases"],"description":"Get a list of all collections that belong to the provided databaseId. You can use the search parameter to filter your results.","responses":{"200":{"description":"Collections List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collectionList"}}}}},"x-appwrite":{"method":"listCollections","weight":70,"cookies":false,"type":"","demo":"databases\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, documentSecurity","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create collection","operationId":"databasesCreateCollection","tags":["databases"],"description":"Create a new Collection. Before using this route, you should create a new database resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"createCollection","weight":69,"cookies":false,"type":"","demo":"databases\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permissions strings. By default, no user is granted with any permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":false},"enabled":{"type":"boolean","description":"Is collection enabled? When set to 'disabled', users cannot access the collection but Server SDKs with and API key can still read and write to the collection. No data is lost when this is toggled.","x-example":false}},"required":["collectionId","name"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}":{"get":{"summary":"Get collection","operationId":"databasesGetCollection","tags":["databases"],"description":"Get a collection by its unique ID. This endpoint response returns a JSON object with the collection metadata.","responses":{"200":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"getCollection","weight":71,"cookies":false,"type":"","demo":"databases\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]},"put":{"summary":"Update collection","operationId":"databasesUpdateCollection","tags":["databases"],"description":"Update a collection by its unique ID.","responses":{"200":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"updateCollection","weight":73,"cookies":false,"type":"","demo":"databases\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":false},"enabled":{"type":"boolean","description":"Is collection enabled? When set to 'disabled', users cannot access the collection but Server SDKs with and API key can still read and write to the collection. No data is lost when this is toggled.","x-example":false}},"required":["name"]}}}}},"delete":{"summary":"Delete collection","operationId":"databasesDeleteCollection","tags":["databases"],"description":"Delete a collection by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteCollection","weight":74,"cookies":false,"type":"","demo":"databases\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes":{"get":{"summary":"List attributes","operationId":"databasesListAttributes","tags":["databases"],"description":"","responses":{"200":{"description":"Attributes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeList"}}}}},"x-appwrite":{"method":"listAttributes","weight":85,"cookies":false,"type":"","demo":"databases\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: key, type, size, required, array, status, error","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create boolean attribute","operationId":"databasesCreateBooleanAttribute","tags":["databases"],"description":"Create a boolean attribute.\n","responses":{"202":{"description":"AttributeBoolean","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeBoolean"}}}}},"x-appwrite":{"method":"createBooleanAttribute","weight":82,"cookies":false,"type":"","demo":"databases\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":false},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean\/{key}":{"patch":{"summary":"Update boolean attribute","operationId":"databasesUpdateBooleanAttribute","tags":["databases"],"description":"","responses":{"200":{"description":"AttributeBoolean","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeBoolean"}}}}},"x-appwrite":{"method":"updateBooleanAttribute","weight":94,"cookies":false,"type":"","demo":"databases\/update-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":false,"x-nullable":true}},"required":["required","default"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/datetime":{"post":{"summary":"Create datetime attribute","operationId":"databasesCreateDatetimeAttribute","tags":["databases"],"description":"","responses":{"202":{"description":"AttributeDatetime","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeDatetime"}}}}},"x-appwrite":{"method":"createDatetimeAttribute","weight":83,"cookies":false,"type":"","demo":"databases\/create-datetime-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-datetime-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for the attribute in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/datetime\/{key}":{"patch":{"summary":"Update dateTime attribute","operationId":"databasesUpdateDatetimeAttribute","tags":["databases"],"description":"","responses":{"200":{"description":"AttributeDatetime","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeDatetime"}}}}},"x-appwrite":{"method":"updateDatetimeAttribute","weight":95,"cookies":false,"type":"","demo":"databases\/update-datetime-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-datetime-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null,"x-nullable":true}},"required":["required","default"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create email attribute","operationId":"databasesCreateEmailAttribute","tags":["databases"],"description":"Create an email attribute.\n","responses":{"202":{"description":"AttributeEmail","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeEmail"}}}}},"x-appwrite":{"method":"createEmailAttribute","weight":76,"cookies":false,"type":"","demo":"databases\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"email@example.com"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/email\/{key}":{"patch":{"summary":"Update email attribute","operationId":"databasesUpdateEmailAttribute","tags":["databases"],"description":"Update an email attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeEmail","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeEmail"}}}}},"x-appwrite":{"method":"updateEmailAttribute","weight":88,"cookies":false,"type":"","demo":"databases\/update-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"email@example.com","x-nullable":true}},"required":["required","default"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create enum attribute","operationId":"databasesCreateEnumAttribute","tags":["databases"],"description":"","responses":{"202":{"description":"AttributeEnum","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeEnum"}}}}},"x-appwrite":{"method":"createEnumAttribute","weight":77,"cookies":false,"type":"","demo":"databases\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"elements":{"type":"array","description":"Array of elements in enumerated type. Uses length of longest element to determine size. Maximum of 100 elements are allowed, each 255 characters long.","x-example":null,"items":{"type":"string"}},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","elements","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/enum\/{key}":{"patch":{"summary":"Update enum attribute","operationId":"databasesUpdateEnumAttribute","tags":["databases"],"description":"Update an enum attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeEnum","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeEnum"}}}}},"x-appwrite":{"method":"updateEnumAttribute","weight":89,"cookies":false,"type":"","demo":"databases\/update-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-enum-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"elements":{"type":"array","description":"Array of elements in enumerated type. Uses length of longest element to determine size. Maximum of 100 elements are allowed, each 255 characters long.","x-example":null,"items":{"type":"string"}},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"[DEFAULT]","x-nullable":true}},"required":["elements","required","default"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create float attribute","operationId":"databasesCreateFloatAttribute","tags":["databases"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeFloat","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeFloat"}}}}},"x-appwrite":{"method":"createFloatAttribute","weight":81,"cookies":false,"type":"","demo":"databases\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"min":{"type":"number","description":"Minimum value to enforce on new documents","x-example":null},"max":{"type":"number","description":"Maximum value to enforce on new documents","x-example":null},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/float\/{key}":{"patch":{"summary":"Update float attribute","operationId":"databasesUpdateFloatAttribute","tags":["databases"],"description":"Update a float attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeFloat","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeFloat"}}}}},"x-appwrite":{"method":"updateFloatAttribute","weight":93,"cookies":false,"type":"","demo":"databases\/update-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"min":{"type":"number","description":"Minimum value to enforce on new documents","x-example":null},"max":{"type":"number","description":"Maximum value to enforce on new documents","x-example":null},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null,"x-nullable":true}},"required":["required","min","max","default"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create integer attribute","operationId":"databasesCreateIntegerAttribute","tags":["databases"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeInteger","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeInteger"}}}}},"x-appwrite":{"method":"createIntegerAttribute","weight":80,"cookies":false,"type":"","demo":"databases\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"min":{"type":"integer","description":"Minimum value to enforce on new documents","x-example":null},"max":{"type":"integer","description":"Maximum value to enforce on new documents","x-example":null},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/integer\/{key}":{"patch":{"summary":"Update integer attribute","operationId":"databasesUpdateIntegerAttribute","tags":["databases"],"description":"Update an integer attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeInteger","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeInteger"}}}}},"x-appwrite":{"method":"updateIntegerAttribute","weight":92,"cookies":false,"type":"","demo":"databases\/update-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"min":{"type":"integer","description":"Minimum value to enforce on new documents","x-example":null},"max":{"type":"integer","description":"Maximum value to enforce on new documents","x-example":null},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null,"x-nullable":true}},"required":["required","min","max","default"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP address attribute","operationId":"databasesCreateIpAttribute","tags":["databases"],"description":"Create IP address attribute.\n","responses":{"202":{"description":"AttributeIP","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeIp"}}}}},"x-appwrite":{"method":"createIpAttribute","weight":78,"cookies":false,"type":"","demo":"databases\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/ip\/{key}":{"patch":{"summary":"Update IP address attribute","operationId":"databasesUpdateIpAttribute","tags":["databases"],"description":"Update an ip attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeIP","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeIp"}}}}},"x-appwrite":{"method":"updateIpAttribute","weight":90,"cookies":false,"type":"","demo":"databases\/update-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null,"x-nullable":true}},"required":["required","default"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/relationship":{"post":{"summary":"Create relationship attribute","operationId":"databasesCreateRelationshipAttribute","tags":["databases"],"description":"Create relationship attribute. [Learn more about relationship attributes](https:\/\/appwrite.io\/docs\/databases-relationships#relationship-attributes).\n","responses":{"202":{"description":"AttributeRelationship","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeRelationship"}}}}},"x-appwrite":{"method":"createRelationshipAttribute","weight":84,"cookies":false,"type":"","demo":"databases\/create-relationship-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-relationship-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"relatedCollectionId":{"type":"string","description":"Related Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","x-example":"[RELATED_COLLECTION_ID]"},"type":{"type":"string","description":"Relation type","x-example":"oneToOne","enum":["oneToOne","manyToOne","manyToMany","oneToMany"],"x-enum-name":"RelationshipType","x-enum-keys":[]},"twoWay":{"type":"boolean","description":"Is Two Way?","x-example":false},"key":{"type":"string","description":"Attribute Key.","x-example":null},"twoWayKey":{"type":"string","description":"Two Way Attribute Key.","x-example":null},"onDelete":{"type":"string","description":"Constraints option","x-example":"cascade","enum":["cascade","restrict","setNull"],"x-enum-name":"RelationMutate","x-enum-keys":[]}},"required":["relatedCollectionId","type"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create string attribute","operationId":"databasesCreateStringAttribute","tags":["databases"],"description":"Create a string attribute.\n","responses":{"202":{"description":"AttributeString","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeString"}}}}},"x-appwrite":{"method":"createStringAttribute","weight":75,"cookies":false,"type":"","demo":"databases\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"size":{"type":"integer","description":"Attribute size for text attributes, in number of characters.","x-example":1},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false},"encrypt":{"type":"boolean","description":"Toggle encryption for the attribute. Encryption enhances security by not storing any plain text values in the database. However, encrypted attributes cannot be queried.","x-example":false}},"required":["key","size","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/string\/{key}":{"patch":{"summary":"Update string attribute","operationId":"databasesUpdateStringAttribute","tags":["databases"],"description":"Update a string attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeString","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeString"}}}}},"x-appwrite":{"method":"updateStringAttribute","weight":87,"cookies":false,"type":"","demo":"databases\/update-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"[DEFAULT]","x-nullable":true}},"required":["required","default"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL attribute","operationId":"databasesCreateUrlAttribute","tags":["databases"],"description":"Create a URL attribute.\n","responses":{"202":{"description":"AttributeURL","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeUrl"}}}}},"x-appwrite":{"method":"createUrlAttribute","weight":79,"cookies":false,"type":"","demo":"databases\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"https:\/\/example.com"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url\/{key}":{"patch":{"summary":"Update URL attribute","operationId":"databasesUpdateUrlAttribute","tags":["databases"],"description":"Update an url attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeURL","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeUrl"}}}}},"x-appwrite":{"method":"updateUrlAttribute","weight":91,"cookies":false,"type":"","demo":"databases\/update-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"https:\/\/example.com","x-nullable":true}},"required":["required","default"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get attribute","operationId":"databasesGetAttribute","tags":["databases"],"description":"","responses":{"200":{"description":"AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, or AttributeDatetime, or AttributeRelationship, or AttributeString","content":{"application\/json":{"schema":{"oneOf":[{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeRelationship"},{"$ref":"#\/components\/schemas\/attributeString"}]}}}}},"x-appwrite":{"method":"getAttribute","weight":86,"cookies":false,"type":"","demo":"databases\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}]},"delete":{"summary":"Delete attribute","operationId":"databasesDeleteAttribute","tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":97,"cookies":false,"type":"","demo":"databases\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/{key}\/relationship":{"patch":{"summary":"Update relationship attribute","operationId":"databasesUpdateRelationshipAttribute","tags":["databases"],"description":"Update relationship attribute. [Learn more about relationship attributes](https:\/\/appwrite.io\/docs\/databases-relationships#relationship-attributes).\n","responses":{"200":{"description":"AttributeRelationship","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeRelationship"}}}}},"x-appwrite":{"method":"updateRelationshipAttribute","weight":96,"cookies":false,"type":"","demo":"databases\/update-relationship-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-relationship-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"onDelete":{"type":"string","description":"Constraints option","x-example":"cascade","enum":["cascade","restrict","setNull"],"x-enum-name":"RelationMutate","x-enum-keys":[]}}}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List documents","operationId":"databasesListDocuments","tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/documentList"}}}}},"x-appwrite":{"method":"listDocuments","weight":103,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"post":{"summary":"Create document","operationId":"databasesCreateDocument","tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"createDocument","weight":102,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, only the current user is granted all permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get document","operationId":"databasesGetDocument","tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"getDocument","weight":104,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"patch":{"summary":"Update document","operationId":"databasesUpdateDocument","tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"updateDocument","weight":106,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete document","operationId":"databasesDeleteDocument","tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":107,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}\/logs":{"get":{"summary":"List document logs","operationId":"databasesListDocumentLogs","tags":["databases"],"description":"Get the document activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listDocumentLogs","weight":105,"cookies":false,"type":"","demo":"databases\/list-document-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes":{"get":{"summary":"List indexes","operationId":"databasesListIndexes","tags":["databases"],"description":"","responses":{"200":{"description":"Indexes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/indexList"}}}}},"x-appwrite":{"method":"listIndexes","weight":99,"cookies":false,"type":"","demo":"databases\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: key, type, status, attributes, error","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"post":{"summary":"Create index","operationId":"databasesCreateIndex","tags":["databases"],"description":"","responses":{"202":{"description":"Index","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/index"}}}}},"x-appwrite":{"method":"createIndex","weight":98,"cookies":false,"type":"","demo":"databases\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Index Key.","x-example":null},"type":{"type":"string","description":"Index type.","x-example":"key","enum":["key","fulltext","unique","spatial"],"x-enum-name":"IndexType","x-enum-keys":[]},"attributes":{"type":"array","description":"Array of attributes to index. Maximum of 100 attributes are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders. Maximum of 100 orders are allowed.","x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get index","operationId":"databasesGetIndex","tags":["databases"],"description":"","responses":{"200":{"description":"Index","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/index"}}}}},"x-appwrite":{"method":"getIndex","weight":100,"cookies":false,"type":"","demo":"databases\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Index Key.","required":true,"schema":{"type":"string"},"in":"path"}]},"delete":{"summary":"Delete index","operationId":"databasesDeleteIndex","tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":101,"cookies":false,"type":"","demo":"databases\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Index Key.","required":true,"schema":{"type":"string"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/logs":{"get":{"summary":"List collection logs","operationId":"databasesListCollectionLogs","tags":["databases"],"description":"Get the collection activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listCollectionLogs","weight":72,"cookies":false,"type":"","demo":"databases\/list-collection-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/usage":{"get":{"summary":"Get usage stats for a collection","operationId":"databasesGetCollectionUsage","tags":["databases"],"description":"","responses":{"200":{"description":"UsageCollection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageCollection"}}}}},"x-appwrite":{"method":"getCollectionUsage","weight":110,"cookies":false,"type":"","demo":"databases\/get-collection-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"range","description":"Date range.","required":false,"schema":{"type":"string","x-example":"24h","enum":["24h","30d","90d"],"x-enum-name":"DatabaseUsageRange","x-enum-keys":["Twenty Four Hours","Thirty Days","Ninety Days"],"default":"30d"},"in":"query"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/logs":{"get":{"summary":"List database logs","operationId":"databasesListLogs","tags":["databases"],"description":"Get the database activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listLogs","weight":66,"cookies":false,"type":"","demo":"databases\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/databases\/{databaseId}\/usage":{"get":{"summary":"Get usage stats for the database","operationId":"databasesGetDatabaseUsage","tags":["databases"],"description":"","responses":{"200":{"description":"UsageDatabase","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageDatabase"}}}}},"x-appwrite":{"method":"getDatabaseUsage","weight":109,"cookies":false,"type":"","demo":"databases\/get-database-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"range","description":"`Date range.","required":false,"schema":{"type":"string","x-example":"24h","enum":["24h","30d","90d"],"x-enum-name":"DatabaseUsageRange","x-enum-keys":["Twenty Four Hours","Thirty Days","Ninety Days"],"default":"30d"},"in":"query"}]}},"\/functions":{"get":{"summary":"List functions","operationId":"functionsList","tags":["functions"],"description":"Get a list of all the project's functions. You can use the query params to filter your results.","responses":{"200":{"description":"Functions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/functionList"}}}}},"x-appwrite":{"method":"list","weight":268,"cookies":false,"type":"","demo":"functions\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-functions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, runtime, deployment, schedule, scheduleNext, schedulePrevious, timeout, entrypoint, commands, installationId","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create function","operationId":"functionsCreate","tags":["functions"],"description":"Create a new function. You can pass a list of [permissions](https:\/\/appwrite.io\/docs\/permissions) to allow different project users or team with access to execute the function using the client API.","responses":{"201":{"description":"Function","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/function"}}}}},"x-appwrite":{"method":"create","weight":267,"cookies":false,"type":"","demo":"functions\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"functionId":{"type":"string","description":"Function ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[FUNCTION_ID]"},"name":{"type":"string","description":"Function name. Max length: 128 chars.","x-example":"[NAME]"},"runtime":{"type":"string","description":"Execution runtime.","x-example":"node-18.0","enum":["node-18.0","php-8.0","ruby-3.1","python-3.9"],"x-enum-name":null,"x-enum-keys":[]},"execute":{"type":"array","description":"An array of role strings with execution permissions. By default no user is granted with any execute permissions. [learn more about roles](https:\/\/appwrite.io\/docs\/permissions#permission-roles). Maximum of 100 roles are allowed, each 64 characters long.","x-example":"[\"any\"]","items":{"type":"string"}},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","x-example":null},"timeout":{"type":"integer","description":"Function maximum execution time in seconds.","x-example":1},"enabled":{"type":"boolean","description":"Is function enabled? When set to 'disabled', users cannot access the function but Server SDKs with and API key can still access the function. No data is lost when this is toggled.","x-example":false},"logging":{"type":"boolean","description":"Whether executions will be logged. When set to false, executions will not be logged, but will reduce resource used by your Appwrite project.","x-example":false},"entrypoint":{"type":"string","description":"Entrypoint File. This path is relative to the \"providerRootDirectory\".","x-example":"[ENTRYPOINT]"},"commands":{"type":"string","description":"Build Commands.","x-example":"[COMMANDS]"},"installationId":{"type":"string","description":"Appwrite Installation ID for VCS (Version Control System) deployment.","x-example":"[INSTALLATION_ID]"},"providerRepositoryId":{"type":"string","description":"Repository ID of the repo linked to the function.","x-example":"[PROVIDER_REPOSITORY_ID]"},"providerBranch":{"type":"string","description":"Production branch for the repo linked to the function.","x-example":"[PROVIDER_BRANCH]"},"providerSilentMode":{"type":"boolean","description":"Is the VCS (Version Control System) connection in silent mode for the repo linked to the function? In silent mode, comments will not be made on commits and pull requests.","x-example":false},"providerRootDirectory":{"type":"string","description":"Path to function code in the linked repo.","x-example":"[PROVIDER_ROOT_DIRECTORY]"},"templateRepository":{"type":"string","description":"Repository name of the template.","x-example":"[TEMPLATE_REPOSITORY]"},"templateOwner":{"type":"string","description":"The name of the owner of the template.","x-example":"[TEMPLATE_OWNER]"},"templateRootDirectory":{"type":"string","description":"Path to function code in the template repo.","x-example":"[TEMPLATE_ROOT_DIRECTORY]"},"templateBranch":{"type":"string","description":"Production branch for the repo linked to the function template.","x-example":"[TEMPLATE_BRANCH]"}},"required":["functionId","name","runtime"]}}}}}},"\/functions\/runtimes":{"get":{"summary":"List runtimes","operationId":"functionsListRuntimes","tags":["functions"],"description":"Get a list of all runtimes that are currently active on your instance.","responses":{"200":{"description":"Runtimes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/runtimeList"}}}}},"x-appwrite":{"method":"listRuntimes","weight":269,"cookies":false,"type":"","demo":"functions\/list-runtimes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-runtimes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/functions\/usage":{"get":{"summary":"Get functions usage","operationId":"functionsGetUsage","tags":["functions"],"description":"","responses":{"200":{"description":"UsageFunctions","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageFunctions"}}}}},"x-appwrite":{"method":"getUsage","weight":272,"cookies":false,"type":"","demo":"functions\/get-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"schema":{"type":"string","x-example":"24h","enum":["24h","30d","90d"],"x-enum-name":"FunctionUsageRange","x-enum-keys":["Twenty Four Hours","Thirty Days","Ninety Days"],"default":"30d"},"in":"query"}]}},"\/functions\/{functionId}":{"get":{"summary":"Get function","operationId":"functionsGet","tags":["functions"],"description":"Get a function by its unique ID.","responses":{"200":{"description":"Function","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/function"}}}}},"x-appwrite":{"method":"get","weight":270,"cookies":false,"type":"","demo":"functions\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}]},"put":{"summary":"Update function","operationId":"functionsUpdate","tags":["functions"],"description":"Update function by its unique ID.","responses":{"200":{"description":"Function","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/function"}}}}},"x-appwrite":{"method":"update","weight":273,"cookies":false,"type":"","demo":"functions\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Function name. Max length: 128 chars.","x-example":"[NAME]"},"runtime":{"type":"string","description":"Execution runtime.","x-example":"node-18.0","enum":["node-18.0","php-8.0","ruby-3.1","python-3.9"],"x-enum-name":null,"x-enum-keys":[]},"execute":{"type":"array","description":"An array of role strings with execution permissions. By default no user is granted with any execute permissions. [learn more about roles](https:\/\/appwrite.io\/docs\/permissions#permission-roles). Maximum of 100 roles are allowed, each 64 characters long.","x-example":"[\"any\"]","items":{"type":"string"}},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","x-example":null},"timeout":{"type":"integer","description":"Maximum execution time in seconds.","x-example":1},"enabled":{"type":"boolean","description":"Is function enabled? When set to 'disabled', users cannot access the function but Server SDKs with and API key can still access the function. No data is lost when this is toggled.","x-example":false},"logging":{"type":"boolean","description":"Whether executions will be logged. When set to false, executions will not be logged, but will reduce resource used by your Appwrite project.","x-example":false},"entrypoint":{"type":"string","description":"Entrypoint File. This path is relative to the \"providerRootDirectory\".","x-example":"[ENTRYPOINT]"},"commands":{"type":"string","description":"Build Commands.","x-example":"[COMMANDS]"},"installationId":{"type":"string","description":"Appwrite Installation ID for VCS (Version Controle System) deployment.","x-example":"[INSTALLATION_ID]"},"providerRepositoryId":{"type":"string","description":"Repository ID of the repo linked to the function","x-example":"[PROVIDER_REPOSITORY_ID]"},"providerBranch":{"type":"string","description":"Production branch for the repo linked to the function","x-example":"[PROVIDER_BRANCH]"},"providerSilentMode":{"type":"boolean","description":"Is the VCS (Version Control System) connection in silent mode for the repo linked to the function? In silent mode, comments will not be made on commits and pull requests.","x-example":false},"providerRootDirectory":{"type":"string","description":"Path to function code in the linked repo.","x-example":"[PROVIDER_ROOT_DIRECTORY]"}},"required":["name"]}}}}},"delete":{"summary":"Delete function","operationId":"functionsDelete","tags":["functions"],"description":"Delete a function by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":276,"cookies":false,"type":"","demo":"functions\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/deployments":{"get":{"summary":"List deployments","operationId":"functionsListDeployments","tags":["functions"],"description":"Get a list of all the project's code deployments. You can use the query params to filter your results.","responses":{"200":{"description":"Deployments List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deploymentList"}}}}},"x-appwrite":{"method":"listDeployments","weight":278,"cookies":false,"type":"","demo":"functions\/list-deployments.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-deployments.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: size, buildId, activate, entrypoint, commands","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create deployment","operationId":"functionsCreateDeployment","tags":["functions"],"description":"Create a new function code deployment. Use this endpoint to upload a new version of your code function. To execute your newly uploaded code, you'll need to update the function's deployment to use your new deployment UID.\n\nThis endpoint accepts a tar.gz file compressed with your code. Make sure to include any dependencies your code has within the compressed file. You can learn more about code packaging in the [Appwrite Cloud Functions tutorial](https:\/\/appwrite.io\/docs\/functions).\n\nUse the \"command\" param to set the entrypoint used to execute your code.","responses":{"202":{"description":"Deployment","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deployment"}}}}},"x-appwrite":{"method":"createDeployment","weight":277,"cookies":false,"type":"","demo":"functions\/create-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":true,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}],"requestBody":{"content":{"multipart\/form-data":{"schema":{"type":"object","properties":{"entrypoint":{"type":"string","description":"Entrypoint File.","x-example":"[ENTRYPOINT]"},"commands":{"type":"string","description":"Build Commands.","x-example":"[COMMANDS]"},"code":{"type":"string","description":"Gzip file with your code package. When used with the Appwrite CLI, pass the path to your code directory, and the CLI will automatically package your code. Use a path that is within the current directory.","x-example":null},"activate":{"type":"boolean","description":"Automatically activate the deployment when it is finished building.","x-example":false}},"required":["code","activate"]}}}}}},"\/functions\/{functionId}\/deployments\/{deploymentId}":{"get":{"summary":"Get deployment","operationId":"functionsGetDeployment","tags":["functions"],"description":"Get a code deployment by its unique ID.","responses":{"200":{"description":"Deployment","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deployment"}}}}},"x-appwrite":{"method":"getDeployment","weight":279,"cookies":false,"type":"","demo":"functions\/get-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"schema":{"type":"string","x-example":"[DEPLOYMENT_ID]"},"in":"path"}]},"patch":{"summary":"Update function deployment","operationId":"functionsUpdateDeployment","tags":["functions"],"description":"Update the function code deployment ID using the unique function ID. Use this endpoint to switch the code deployment that should be executed by the execution endpoint.","responses":{"200":{"description":"Function","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/function"}}}}},"x-appwrite":{"method":"updateDeployment","weight":275,"cookies":false,"type":"","demo":"functions\/update-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-function-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"schema":{"type":"string","x-example":"[DEPLOYMENT_ID]"},"in":"path"}]},"delete":{"summary":"Delete deployment","operationId":"functionsDeleteDeployment","tags":["functions"],"description":"Delete a code deployment by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDeployment","weight":280,"cookies":false,"type":"","demo":"functions\/delete-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"schema":{"type":"string","x-example":"[DEPLOYMENT_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/deployments\/{deploymentId}\/builds\/{buildId}":{"post":{"summary":"Create build","operationId":"functionsCreateBuild","tags":["functions"],"description":"Create a new build for an Appwrite Function deployment. This endpoint can be used to retry a failed build.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"createBuild","weight":281,"cookies":false,"type":"","demo":"functions\/create-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"schema":{"type":"string","x-example":"[DEPLOYMENT_ID]"},"in":"path"},{"name":"buildId","description":"Build unique ID.","required":true,"schema":{"type":"string","x-example":"[BUILD_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/deployments\/{deploymentId}\/download":{"get":{"summary":"Download Deployment","operationId":"functionsDownloadDeployment","tags":["functions"],"description":"Get a Deployment's contents by its unique ID. This endpoint supports range requests for partial or streaming file download.","responses":{"200":{"description":"File"}},"x-appwrite":{"method":"downloadDeployment","weight":274,"cookies":false,"type":"location","demo":"functions\/download-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/download-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"schema":{"type":"string","x-example":"[DEPLOYMENT_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List executions","operationId":"functionsListExecutions","tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/executionList"}}}}},"x-appwrite":{"method":"listExecutions","weight":283,"cookies":false,"type":"","demo":"functions\/list-executions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-executions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, responseStatusCode, duration","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create execution","operationId":"functionsCreateExecution","tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/execution"}}}}},"x-appwrite":{"method":"createExecution","weight":282,"cookies":false,"type":"","demo":"functions\/create-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-execution.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"body":{"type":"string","description":"HTTP body of execution. Default value is empty string.","x-example":"[BODY]"},"async":{"type":"boolean","description":"Execute code in the background. Default value is false.","x-example":false},"path":{"type":"string","description":"HTTP path of execution. Path can include query params. Default value is \/","x-example":"[PATH]"},"method":{"type":"string","description":"HTTP method of execution. Default value is GET.","x-example":"GET","enum":["GET","POST","PUT","PATCH","DELETE","OPTIONS"],"x-enum-name":"ExecutionMethod","x-enum-keys":[]},"headers":{"type":"object","description":"HTTP headers of execution. Defaults to empty.","x-example":"{}"}}}}}}}},"\/functions\/{functionId}\/executions\/{executionId}":{"get":{"summary":"Get execution","operationId":"functionsGetExecution","tags":["functions"],"description":"Get a function execution log by its unique ID.","responses":{"200":{"description":"Execution","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/execution"}}}}},"x-appwrite":{"method":"getExecution","weight":284,"cookies":false,"type":"","demo":"functions\/get-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-execution.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"executionId","description":"Execution ID.","required":true,"schema":{"type":"string","x-example":"[EXECUTION_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/usage":{"get":{"summary":"Get function usage","operationId":"functionsGetFunctionUsage","tags":["functions"],"description":"","responses":{"200":{"description":"UsageFunction","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageFunction"}}}}},"x-appwrite":{"method":"getFunctionUsage","weight":271,"cookies":false,"type":"","demo":"functions\/get-function-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"range","description":"Date range.","required":false,"schema":{"type":"string","x-example":"24h","enum":["24h","30d","90d"],"x-enum-name":"FunctionUsageRange","x-enum-keys":["Twenty Four Hours","Thirty Days","Ninety Days"],"default":"30d"},"in":"query"}]}},"\/functions\/{functionId}\/variables":{"get":{"summary":"List variables","operationId":"functionsListVariables","tags":["functions"],"description":"Get a list of all variables of a specific function.","responses":{"200":{"description":"Variables List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variableList"}}}}},"x-appwrite":{"method":"listVariables","weight":286,"cookies":false,"type":"","demo":"functions\/list-variables.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-variables.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}]},"post":{"summary":"Create variable","operationId":"functionsCreateVariable","tags":["functions"],"description":"Create a new function environment variable. These variables can be accessed in the function at runtime as environment variables.","responses":{"201":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"createVariable","weight":285,"cookies":false,"type":"","demo":"functions\/create-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","x-example":"[VALUE]"}},"required":["key","value"]}}}}}},"\/functions\/{functionId}\/variables\/{variableId}":{"get":{"summary":"Get variable","operationId":"functionsGetVariable","tags":["functions"],"description":"Get a variable by its unique ID.","responses":{"200":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"getVariable","weight":287,"cookies":false,"type":"","demo":"functions\/get-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}]},"put":{"summary":"Update variable","operationId":"functionsUpdateVariable","tags":["functions"],"description":"Update variable by its unique ID.","responses":{"200":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"updateVariable","weight":288,"cookies":false,"type":"","demo":"functions\/update-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","x-example":"[VALUE]"}},"required":["key"]}}}}},"delete":{"summary":"Delete variable","operationId":"functionsDeleteVariable","tags":["functions"],"description":"Delete a variable by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteVariable","weight":289,"cookies":false,"type":"","demo":"functions\/delete-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}]}},"\/graphql":{"post":{"summary":"GraphQL endpoint","operationId":"graphqlQuery","tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/any"}}}}},"x-appwrite":{"method":"query","weight":304,"cookies":false,"type":"graphql","demo":"graphql\/query.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/graphql\/mutation":{"post":{"summary":"GraphQL endpoint","operationId":"graphqlMutation","tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/any"}}}}},"x-appwrite":{"method":"mutation","weight":303,"cookies":false,"type":"graphql","demo":"graphql\/mutation.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/health":{"get":{"summary":"Get HTTP","operationId":"healthGet","tags":["health"],"description":"Check the Appwrite HTTP server is up and responsive.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"get","weight":119,"cookies":false,"type":"","demo":"health\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/anti-virus":{"get":{"summary":"Get antivirus","operationId":"healthGetAntivirus","tags":["health"],"description":"Check the Appwrite Antivirus server is up and connection is successful.","responses":{"200":{"description":"Health Antivirus","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthAntivirus"}}}}},"x-appwrite":{"method":"getAntivirus","weight":138,"cookies":false,"type":"","demo":"health\/get-antivirus.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-storage-anti-virus.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/cache":{"get":{"summary":"Get cache","operationId":"healthGetCache","tags":["health"],"description":"Check the Appwrite in-memory cache servers are up and connection is successful.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"getCache","weight":122,"cookies":false,"type":"","demo":"health\/get-cache.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-cache.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/certificate":{"get":{"summary":"Get the SSL certificate for a domain","operationId":"healthGetCertificate","tags":["health"],"description":"Get the SSL certificate for a domain","responses":{"200":{"description":"Health Certificate","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthCertificate"}}}}},"x-appwrite":{"method":"getCertificate","weight":128,"cookies":false,"type":"","demo":"health\/get-certificate.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-certificate.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"domain","description":"string","required":false,"schema":{"type":"string"},"in":"query"}]}},"\/health\/db":{"get":{"summary":"Get DB","operationId":"healthGetDB","tags":["health"],"description":"Check the Appwrite database servers are up and connection is successful.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"getDB","weight":121,"cookies":false,"type":"","demo":"health\/get-d-b.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-db.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/pubsub":{"get":{"summary":"Get pubsub","operationId":"healthGetPubSub","tags":["health"],"description":"Check the Appwrite pub-sub servers are up and connection is successful.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"getPubSub","weight":124,"cookies":false,"type":"","demo":"health\/get-pub-sub.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-pubsub.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/queue":{"get":{"summary":"Get queue","operationId":"healthGetQueue","tags":["health"],"description":"Check the Appwrite queue messaging servers are up and connection is successful.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"getQueue","weight":123,"cookies":false,"type":"","demo":"health\/get-queue.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/queue\/builds":{"get":{"summary":"Get builds queue","operationId":"healthGetQueueBuilds","tags":["health"],"description":"Get the number of builds that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueBuilds","weight":130,"cookies":false,"type":"","demo":"health\/get-queue-builds.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-builds.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/certificates":{"get":{"summary":"Get certificates queue","operationId":"healthGetQueueCertificates","tags":["health"],"description":"Get the number of certificates that are waiting to be issued against [Letsencrypt](https:\/\/letsencrypt.org\/) in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueCertificates","weight":129,"cookies":false,"type":"","demo":"health\/get-queue-certificates.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-certificates.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/databases":{"get":{"summary":"Get databases queue","operationId":"healthGetQueueDatabases","tags":["health"],"description":"Get the number of database changes that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueDatabases","weight":131,"cookies":false,"type":"","demo":"health\/get-queue-databases.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-databases.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"name","description":"Queue name for which to check the queue size","required":false,"schema":{"type":"string","x-example":"[NAME]","default":"database_db_main"},"in":"query"},{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/deletes":{"get":{"summary":"Get deletes queue","operationId":"healthGetQueueDeletes","tags":["health"],"description":"Get the number of background destructive changes that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueDeletes","weight":132,"cookies":false,"type":"","demo":"health\/get-queue-deletes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-deletes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/failed\/{name}":{"get":{"summary":"Get number of failed queue jobs","operationId":"healthGetFailedJobs","tags":["health"],"description":"Returns the amount of failed jobs in a given queue.\n","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getFailedJobs","weight":139,"cookies":false,"type":"","demo":"health\/get-failed-jobs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-failed-queue-jobs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"name","description":"The name of the queue","required":true,"schema":{"type":"string","x-example":"v1-database","enum":["v1-database","v1-deletes","v1-audits","v1-mails","v1-functions","v1-usage","webhooksv1","v1-certificates","v1-builds","v1-messaging","v1-migrations","hamsterv1"],"x-enum-name":null,"x-enum-keys":[]},"in":"path"},{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/functions":{"get":{"summary":"Get functions queue","operationId":"healthGetQueueFunctions","tags":["health"],"description":"","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueFunctions","weight":136,"cookies":false,"type":"","demo":"health\/get-queue-functions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-functions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/logs":{"get":{"summary":"Get logs queue","operationId":"healthGetQueueLogs","tags":["health"],"description":"Get the number of logs that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueLogs","weight":127,"cookies":false,"type":"","demo":"health\/get-queue-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/mails":{"get":{"summary":"Get mails queue","operationId":"healthGetQueueMails","tags":["health"],"description":"Get the number of mails that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueMails","weight":133,"cookies":false,"type":"","demo":"health\/get-queue-mails.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-mails.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/messaging":{"get":{"summary":"Get messaging queue","operationId":"healthGetQueueMessaging","tags":["health"],"description":"Get the number of messages that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueMessaging","weight":134,"cookies":false,"type":"","demo":"health\/get-queue-messaging.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-messaging.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/migrations":{"get":{"summary":"Get migrations queue","operationId":"healthGetQueueMigrations","tags":["health"],"description":"Get the number of migrations that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueMigrations","weight":135,"cookies":false,"type":"","demo":"health\/get-queue-migrations.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-migrations.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/webhooks":{"get":{"summary":"Get webhooks queue","operationId":"healthGetQueueWebhooks","tags":["health"],"description":"Get the number of webhooks that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueWebhooks","weight":126,"cookies":false,"type":"","demo":"health\/get-queue-webhooks.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-webhooks.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/storage\/local":{"get":{"summary":"Get local storage","operationId":"healthGetStorageLocal","tags":["health"],"description":"Check the Appwrite local storage device is up and connection is successful.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"getStorageLocal","weight":137,"cookies":false,"type":"","demo":"health\/get-storage-local.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-storage-local.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/time":{"get":{"summary":"Get time","operationId":"healthGetTime","tags":["health"],"description":"Check the Appwrite server time is synced with Google remote NTP server. We use this technology to smoothly handle leap seconds with no disruptive events. The [Network Time Protocol](https:\/\/en.wikipedia.org\/wiki\/Network_Time_Protocol) (NTP) is used by hundreds of millions of computers and devices to synchronize their clocks over the Internet. If your computer sets its own clock, it likely uses NTP.","responses":{"200":{"description":"Health Time","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthTime"}}}}},"x-appwrite":{"method":"getTime","weight":125,"cookies":false,"type":"","demo":"health\/get-time.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-time.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/locale":{"get":{"summary":"Get user locale","operationId":"localeGet","tags":["locale"],"description":"Get the current user location based on IP. Returns an object with user country code, country name, continent name, continent code, ip address and suggested currency. You can use the locale header to get the data in a supported language.\n\n([IP Geolocation by DB-IP](https:\/\/db-ip.com))","responses":{"200":{"description":"Locale","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/locale"}}}}},"x-appwrite":{"method":"get","weight":111,"cookies":false,"type":"","demo":"locale\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-locale.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/localed","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/codes":{"get":{"summary":"List Locale Codes","operationId":"localeListCodes","tags":["locale"],"description":"List of all locale codes in [ISO 639-1](https:\/\/en.wikipedia.org\/wiki\/List_of_ISO_639-1_codes).","responses":{"200":{"description":"Locale codes list","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/localeCodeList"}}}}},"x-appwrite":{"method":"listCodes","weight":112,"cookies":false,"type":"","demo":"locale\/list-codes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-locale-codes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/localeCode","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/continents":{"get":{"summary":"List continents","operationId":"localeListContinents","tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/continentList"}}}}},"x-appwrite":{"method":"listContinents","weight":116,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/continents","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List countries","operationId":"localeListCountries","tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountries","weight":113,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/countries","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU countries","operationId":"localeListCountriesEU","tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountriesEU","weight":114,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/countries\/eu","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List countries phone codes","operationId":"localeListCountriesPhones","tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/phoneList"}}}}},"x-appwrite":{"method":"listCountriesPhones","weight":115,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/countries\/phones","offline-key":"","offline-response-key":"countryCode","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List currencies","operationId":"localeListCurrencies","tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/currencyList"}}}}},"x-appwrite":{"method":"listCurrencies","weight":117,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/currencies","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List languages","operationId":"localeListLanguages","tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/languageList"}}}}},"x-appwrite":{"method":"listLanguages","weight":118,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/languages","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/messaging\/messages":{"get":{"summary":"List messages","operationId":"messagingListMessages","tags":["messaging"],"description":"","responses":{"200":{"description":"Message list","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/messageList"}}}}},"x-appwrite":{"method":"listMessages","weight":363,"cookies":false,"type":"","demo":"messaging\/list-messages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-messages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: scheduledAt, deliveredAt, deliveredTotal, status, description, providerType","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]}},"\/messaging\/messages\/email":{"post":{"summary":"Create an email.","operationId":"messagingCreateEmail","tags":["messaging"],"description":"","responses":{"201":{"description":"Message","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/message"}}}}},"x-appwrite":{"method":"createEmail","weight":360,"cookies":false,"type":"","demo":"messaging\/create-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"messageId":{"type":"string","description":"Message ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[MESSAGE_ID]"},"subject":{"type":"string","description":"Email Subject.","x-example":"[SUBJECT]"},"content":{"type":"string","description":"Email Content.","x-example":"[CONTENT]"},"topics":{"type":"array","description":"List of Topic IDs.","x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","x-example":null,"items":{"type":"string"}},"cc":{"type":"array","description":"Array of target IDs to be added as CC.","x-example":null,"items":{"type":"string"}},"bcc":{"type":"array","description":"Array of target IDs to be added as BCC.","x-example":null,"items":{"type":"string"}},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":"MessageStatus","x-enum-keys":[]},"html":{"type":"boolean","description":"Is content of type HTML","x-example":false},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","x-example":null}},"required":["messageId","subject","content"]}}}}}},"\/messaging\/messages\/email\/{messageId}":{"patch":{"summary":"Update an email.","operationId":"messagingUpdateEmail","tags":["messaging"],"description":"","responses":{"200":{"description":"Message","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/message"}}}}},"x-appwrite":{"method":"updateEmail","weight":367,"cookies":false,"type":"","demo":"messaging\/update-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"schema":{"type":"string","x-example":"[MESSAGE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"topics":{"type":"array","description":"List of Topic IDs.","x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","x-example":null,"items":{"type":"string"}},"subject":{"type":"string","description":"Email Subject.","x-example":"[SUBJECT]"},"content":{"type":"string","description":"Email Content.","x-example":"[CONTENT]"},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":"MessageStatus","x-enum-keys":[]},"html":{"type":"boolean","description":"Is content of type HTML","x-example":false},"cc":{"type":"array","description":"Array of target IDs to be added as CC.","x-example":null,"items":{"type":"string"}},"bcc":{"type":"array","description":"Array of target IDs to be added as BCC.","x-example":null,"items":{"type":"string"}},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","x-example":null}}}}}}}},"\/messaging\/messages\/push":{"post":{"summary":"Create a push notification.","operationId":"messagingCreatePush","tags":["messaging"],"description":"","responses":{"201":{"description":"Message","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/message"}}}}},"x-appwrite":{"method":"createPush","weight":362,"cookies":false,"type":"","demo":"messaging\/create-push.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-push-notification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"messageId":{"type":"string","description":"Message ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[MESSAGE_ID]"},"title":{"type":"string","description":"Title for push notification.","x-example":"[TITLE]"},"body":{"type":"string","description":"Body for push notification.","x-example":"[BODY]"},"topics":{"type":"array","description":"List of Topic IDs.","x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","x-example":null,"items":{"type":"string"}},"data":{"type":"object","description":"Additional Data for push notification.","x-example":"{}"},"action":{"type":"string","description":"Action for push notification.","x-example":"[ACTION]"},"icon":{"type":"string","description":"Icon for push notification. Available only for Android and Web Platform.","x-example":"[ICON]"},"sound":{"type":"string","description":"Sound for push notification. Available only for Android and IOS Platform.","x-example":"[SOUND]"},"color":{"type":"string","description":"Color for push notification. Available only for Android Platform.","x-example":"[COLOR]"},"tag":{"type":"string","description":"Tag for push notification. Available only for Android Platform.","x-example":"[TAG]"},"badge":{"type":"string","description":"Badge for push notification. Available only for IOS Platform.","x-example":"[BADGE]"},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":"MessageStatus","x-enum-keys":[]},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","x-example":null}},"required":["messageId","title","body"]}}}}}},"\/messaging\/messages\/push\/{messageId}":{"patch":{"summary":"Update a push notification.","operationId":"messagingUpdatePush","tags":["messaging"],"description":"","responses":{"200":{"description":"Message","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/message"}}}}},"x-appwrite":{"method":"updatePush","weight":369,"cookies":false,"type":"","demo":"messaging\/update-push.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-push-notification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"schema":{"type":"string","x-example":"[MESSAGE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"topics":{"type":"array","description":"List of Topic IDs.","x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","x-example":null,"items":{"type":"string"}},"title":{"type":"string","description":"Title for push notification.","x-example":"[TITLE]"},"body":{"type":"string","description":"Body for push notification.","x-example":"[BODY]"},"data":{"type":"object","description":"Additional Data for push notification.","x-example":"{}"},"action":{"type":"string","description":"Action for push notification.","x-example":"[ACTION]"},"icon":{"type":"string","description":"Icon for push notification. Available only for Android and Web platforms.","x-example":"[ICON]"},"sound":{"type":"string","description":"Sound for push notification. Available only for Android and iOS platforms.","x-example":"[SOUND]"},"color":{"type":"string","description":"Color for push notification. Available only for Android platforms.","x-example":"[COLOR]"},"tag":{"type":"string","description":"Tag for push notification. Available only for Android platforms.","x-example":"[TAG]"},"badge":{"type":"integer","description":"Badge for push notification. Available only for iOS platforms.","x-example":null},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":"MessageStatus","x-enum-keys":[]},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","x-example":null}}}}}}}},"\/messaging\/messages\/sms":{"post":{"summary":"Create an SMS.","operationId":"messagingCreateSMS","tags":["messaging"],"description":"","responses":{"201":{"description":"Message","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/message"}}}}},"x-appwrite":{"method":"createSMS","weight":361,"cookies":false,"type":"","demo":"messaging\/create-s-m-s.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-sms.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"messageId":{"type":"string","description":"Message ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[MESSAGE_ID]"},"content":{"type":"string","description":"SMS Content.","x-example":"[CONTENT]"},"topics":{"type":"array","description":"List of Topic IDs.","x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","x-example":null,"items":{"type":"string"}},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":"MessageStatus","x-enum-keys":[]},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","x-example":null}},"required":["messageId","content"]}}}}}},"\/messaging\/messages\/sms\/{messageId}":{"patch":{"summary":"Update an SMS.","operationId":"messagingUpdateSMS","tags":["messaging"],"description":"","responses":{"200":{"description":"Message","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/message"}}}}},"x-appwrite":{"method":"updateSMS","weight":368,"cookies":false,"type":"","demo":"messaging\/update-s-m-s.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"schema":{"type":"string","x-example":"[MESSAGE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"topics":{"type":"array","description":"List of Topic IDs.","x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","x-example":null,"items":{"type":"string"}},"content":{"type":"string","description":"Email Content.","x-example":"[CONTENT]"},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":"MessageStatus","x-enum-keys":[]},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","x-example":null}}}}}}}},"\/messaging\/messages\/{messageId}":{"get":{"summary":"Get a message","operationId":"messagingGetMessage","tags":["messaging"],"description":"","responses":{"200":{"description":"Message","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/message"}}}}},"x-appwrite":{"method":"getMessage","weight":366,"cookies":false,"type":"","demo":"messaging\/get-message.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/get-message.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"schema":{"type":"string","x-example":"[MESSAGE_ID]"},"in":"path"}]},"delete":{"summary":"Delete a message","operationId":"messagingDelete","tags":["messaging"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":370,"cookies":false,"type":"","demo":"messaging\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-message.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"schema":{"type":"string","x-example":"[MESSAGE_ID]"},"in":"path"}]}},"\/messaging\/messages\/{messageId}\/logs":{"get":{"summary":"List message logs","operationId":"messagingListMessageLogs","tags":["messaging"],"description":"","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listMessageLogs","weight":364,"cookies":false,"type":"","demo":"messaging\/list-message-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/messages\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"schema":{"type":"string","x-example":"[MESSAGE_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/messaging\/messages\/{messageId}\/targets":{"get":{"summary":"List message targets","operationId":"messagingListTargets","tags":["messaging"],"description":"List the targets associated with a message as set via the targets attribute.","responses":{"200":{"description":"Target list","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/targetList"}}}}},"x-appwrite":{"method":"listTargets","weight":365,"cookies":false,"type":"","demo":"messaging\/list-targets.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-message-targets.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"schema":{"type":"string","x-example":"[MESSAGE_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, providerId, identifier, providerType","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/messaging\/providers":{"get":{"summary":"List providers","operationId":"messagingListProviders","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider list","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/providerList"}}}}},"x-appwrite":{"method":"listProviders","weight":335,"cookies":false,"type":"","demo":"messaging\/list-providers.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-providers.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, provider, type, enabled","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]}},"\/messaging\/providers\/apns":{"post":{"summary":"Create APNS provider","operationId":"messagingCreateAPNSProvider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createAPNSProvider","weight":334,"cookies":false,"type":"","demo":"messaging\/create-a-p-n-s-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-apns-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"authKey":{"type":"string","description":"APNS authentication key.","x-example":"[AUTH_KEY]"},"authKeyId":{"type":"string","description":"APNS authentication key ID.","x-example":"[AUTH_KEY_ID]"},"teamId":{"type":"string","description":"APNS team ID.","x-example":"[TEAM_ID]"},"bundleId":{"type":"string","description":"APNS bundle ID.","x-example":"[BUNDLE_ID]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name"]}}}}}},"\/messaging\/providers\/apns\/{providerId}":{"patch":{"summary":"Update APNS provider","operationId":"messagingUpdateAPNSProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateAPNSProvider","weight":347,"cookies":false,"type":"","demo":"messaging\/update-a-p-n-s-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-apns-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"authKey":{"type":"string","description":"APNS authentication key.","x-example":"[AUTH_KEY]"},"authKeyId":{"type":"string","description":"APNS authentication key ID.","x-example":"[AUTH_KEY_ID]"},"teamId":{"type":"string","description":"APNS team ID.","x-example":"[TEAM_ID]"},"bundleId":{"type":"string","description":"APNS bundle ID.","x-example":"[BUNDLE_ID]"}}}}}}}},"\/messaging\/providers\/fcm":{"post":{"summary":"Create FCM provider","operationId":"messagingCreateFCMProvider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createFCMProvider","weight":333,"cookies":false,"type":"","demo":"messaging\/create-f-c-m-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-fcm-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"serviceAccountJSON":{"type":"object","description":"FCM service account JSON.","x-example":"{}"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name"]}}}}}},"\/messaging\/providers\/fcm\/{providerId}":{"patch":{"summary":"Update FCM provider","operationId":"messagingUpdateFCMProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateFCMProvider","weight":346,"cookies":false,"type":"","demo":"messaging\/update-f-c-m-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-fcm-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"serviceAccountJSON":{"type":"object","description":"FCM service account JSON.","x-example":"{}"}}}}}}}},"\/messaging\/providers\/mailgun":{"post":{"summary":"Create Mailgun provider","operationId":"messagingCreateMailgunProvider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createMailgunProvider","weight":325,"cookies":false,"type":"","demo":"messaging\/create-mailgun-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-mailgun-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"apiKey":{"type":"string","description":"Mailgun API Key.","x-example":"[API_KEY]"},"domain":{"type":"string","description":"Mailgun Domain.","x-example":"[DOMAIN]"},"isEuRegion":{"type":"boolean","description":"Set as EU region.","x-example":false},"fromName":{"type":"string","description":"Sender Name.","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the reply to field for the mail. Default value is sender name. Reply to name must have reply to email as well.","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the reply to field for the mail. Default value is sender email. Reply to email must have reply to name as well.","x-example":"email@example.com"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name"]}}}}}},"\/messaging\/providers\/mailgun\/{providerId}":{"patch":{"summary":"Update Mailgun provider","operationId":"messagingUpdateMailgunProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateMailgunProvider","weight":338,"cookies":false,"type":"","demo":"messaging\/update-mailgun-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-mailgun-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"apiKey":{"type":"string","description":"Mailgun API Key.","x-example":"[API_KEY]"},"domain":{"type":"string","description":"Mailgun Domain.","x-example":"[DOMAIN]"},"isEuRegion":{"type":"boolean","description":"Set as EU region.","x-example":false},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"fromName":{"type":"string","description":"Sender Name.","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the reply to field for the mail. Default value is sender name.","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the reply to field for the mail. Default value is sender email.","x-example":"[REPLY_TO_EMAIL]"}}}}}}}},"\/messaging\/providers\/msg91":{"post":{"summary":"Create Msg91 provider","operationId":"messagingCreateMsg91Provider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createMsg91Provider","weight":328,"cookies":false,"type":"","demo":"messaging\/create-msg91provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-msg91-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"senderId":{"type":"string","description":"Msg91 Sender ID.","x-example":"[SENDER_ID]"},"authKey":{"type":"string","description":"Msg91 Auth Key.","x-example":"[AUTH_KEY]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name"]}}}}}},"\/messaging\/providers\/msg91\/{providerId}":{"patch":{"summary":"Update Msg91 provider","operationId":"messagingUpdateMsg91Provider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateMsg91Provider","weight":341,"cookies":false,"type":"","demo":"messaging\/update-msg91provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-msg91-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"senderId":{"type":"string","description":"Msg91 Sender ID.","x-example":"[SENDER_ID]"},"authKey":{"type":"string","description":"Msg91 Auth Key.","x-example":"[AUTH_KEY]"},"from":{"type":"string","description":"Sender number.","x-example":"[FROM]"}}}}}}}},"\/messaging\/providers\/sendgrid":{"post":{"summary":"Create Sendgrid provider","operationId":"messagingCreateSendgridProvider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createSendgridProvider","weight":326,"cookies":false,"type":"","demo":"messaging\/create-sendgrid-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-sengrid-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"apiKey":{"type":"string","description":"Sendgrid API key.","x-example":"[API_KEY]"},"fromName":{"type":"string","description":"Sender Name.","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the reply to field for the mail. Default value is sender name.","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the reply to field for the mail. Default value is sender email.","x-example":"email@example.com"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name"]}}}}}},"\/messaging\/providers\/sendgrid\/{providerId}":{"patch":{"summary":"Update Sendgrid provider","operationId":"messagingUpdateSendgridProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateSendgridProvider","weight":339,"cookies":false,"type":"","demo":"messaging\/update-sendgrid-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-sendgrid-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"apiKey":{"type":"string","description":"Sendgrid API key.","x-example":"[API_KEY]"},"fromName":{"type":"string","description":"Sender Name.","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the Reply To field for the mail. Default value is Sender Name.","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the Reply To field for the mail. Default value is Sender Email.","x-example":"[REPLY_TO_EMAIL]"}}}}}}}},"\/messaging\/providers\/smtp":{"post":{"summary":"Create SMTP provider","operationId":"messagingCreateSMTPProvider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createSMTPProvider","weight":327,"cookies":false,"type":"","demo":"messaging\/create-s-m-t-p-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-smtp-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"host":{"type":"string","description":"SMTP hosts. Either a single hostname or multiple semicolon-delimited hostnames. You can also specify a different port for each host by using this format: [hostname:port] (e.g. \"smtp1.example.com:25;smtp2.example.com\"). You can also specify encryption type, for example: (e.g. \"tls:\/\/smtp1.example.com:587;ssl:\/\/smtp2.example.com:465\"). Hosts will be tried in order.","x-example":"[HOST]"},"port":{"type":"integer","description":"The default SMTP server port.","x-example":1},"username":{"type":"string","description":"Authentication username.","x-example":"[USERNAME]"},"password":{"type":"string","description":"Authentication password.","x-example":"[PASSWORD]"},"encryption":{"type":"string","description":"Encryption type. Can be omitted, 'ssl', or 'tls'","x-example":"none","enum":["none","ssl","tls"],"x-enum-name":"SMTPEncryption","x-enum-keys":[]},"autoTLS":{"type":"boolean","description":"Enable SMTP AutoTLS feature.","x-example":false},"mailer":{"type":"string","description":"The value to use for the X-Mailer header.","x-example":"[MAILER]"},"fromName":{"type":"string","description":"Sender Name.","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the reply to field for the mail. Default value is sender name.","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the reply to field for the mail. Default value is sender email.","x-example":"email@example.com"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name","host"]}}}}}},"\/messaging\/providers\/smtp\/{providerId}":{"patch":{"summary":"Update SMTP provider","operationId":"messagingUpdateSMTPProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateSMTPProvider","weight":340,"cookies":false,"type":"","demo":"messaging\/update-s-m-t-p-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-smtp-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"host":{"type":"string","description":"SMTP hosts. Either a single hostname or multiple semicolon-delimited hostnames. You can also specify a different port for each host by using this format: [hostname:port] (e.g. \"smtp1.example.com:25;smtp2.example.com\"). You can also specify encryption type, for example: (e.g. \"tls:\/\/smtp1.example.com:587;ssl:\/\/smtp2.example.com:465\"). Hosts will be tried in order.","x-example":"[HOST]"},"port":{"type":"integer","description":"SMTP port.","x-example":1},"username":{"type":"string","description":"Authentication username.","x-example":"[USERNAME]"},"password":{"type":"string","description":"Authentication password.","x-example":"[PASSWORD]"},"encryption":{"type":"string","description":"Encryption type. Can be 'ssl' or 'tls'","x-example":"none","enum":["none","ssl","tls"],"x-enum-name":"SMTPEncryption","x-enum-keys":[]},"autoTLS":{"type":"boolean","description":"Enable SMTP AutoTLS feature.","x-example":false},"mailer":{"type":"string","description":"The value to use for the X-Mailer header.","x-example":"[MAILER]"},"fromName":{"type":"string","description":"Sender Name.","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the Reply To field for the mail. Default value is Sender Name.","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the Reply To field for the mail. Default value is Sender Email.","x-example":"[REPLY_TO_EMAIL]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}}}}}}}},"\/messaging\/providers\/telesign":{"post":{"summary":"Create Telesign provider","operationId":"messagingCreateTelesignProvider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createTelesignProvider","weight":329,"cookies":false,"type":"","demo":"messaging\/create-telesign-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-telesign-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"customerId":{"type":"string","description":"Telesign customer ID.","x-example":"[CUSTOMER_ID]"},"apiKey":{"type":"string","description":"Telesign API key.","x-example":"[API_KEY]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name"]}}}}}},"\/messaging\/providers\/telesign\/{providerId}":{"patch":{"summary":"Update Telesign provider","operationId":"messagingUpdateTelesignProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateTelesignProvider","weight":342,"cookies":false,"type":"","demo":"messaging\/update-telesign-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-telesign-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"customerId":{"type":"string","description":"Telesign customer ID.","x-example":"[CUSTOMER_ID]"},"apiKey":{"type":"string","description":"Telesign API key.","x-example":"[API_KEY]"},"from":{"type":"string","description":"Sender number.","x-example":"[FROM]"}}}}}}}},"\/messaging\/providers\/textmagic":{"post":{"summary":"Create Textmagic provider","operationId":"messagingCreateTextmagicProvider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createTextmagicProvider","weight":330,"cookies":false,"type":"","demo":"messaging\/create-textmagic-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-textmagic-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"username":{"type":"string","description":"Textmagic username.","x-example":"[USERNAME]"},"apiKey":{"type":"string","description":"Textmagic apiKey.","x-example":"[API_KEY]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name"]}}}}}},"\/messaging\/providers\/textmagic\/{providerId}":{"patch":{"summary":"Update Textmagic provider","operationId":"messagingUpdateTextmagicProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateTextmagicProvider","weight":343,"cookies":false,"type":"","demo":"messaging\/update-textmagic-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-textmagic-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"username":{"type":"string","description":"Textmagic username.","x-example":"[USERNAME]"},"apiKey":{"type":"string","description":"Textmagic apiKey.","x-example":"[API_KEY]"},"from":{"type":"string","description":"Sender number.","x-example":"[FROM]"}}}}}}}},"\/messaging\/providers\/twilio":{"post":{"summary":"Create Twilio provider","operationId":"messagingCreateTwilioProvider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createTwilioProvider","weight":331,"cookies":false,"type":"","demo":"messaging\/create-twilio-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-twilio-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"accountSid":{"type":"string","description":"Twilio account secret ID.","x-example":"[ACCOUNT_SID]"},"authToken":{"type":"string","description":"Twilio authentication token.","x-example":"[AUTH_TOKEN]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name"]}}}}}},"\/messaging\/providers\/twilio\/{providerId}":{"patch":{"summary":"Update Twilio provider","operationId":"messagingUpdateTwilioProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateTwilioProvider","weight":344,"cookies":false,"type":"","demo":"messaging\/update-twilio-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-twilio-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"accountSid":{"type":"string","description":"Twilio account secret ID.","x-example":"[ACCOUNT_SID]"},"authToken":{"type":"string","description":"Twilio authentication token.","x-example":"[AUTH_TOKEN]"},"from":{"type":"string","description":"Sender number.","x-example":"[FROM]"}}}}}}}},"\/messaging\/providers\/vonage":{"post":{"summary":"Create Vonage provider","operationId":"messagingCreateVonageProvider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createVonageProvider","weight":332,"cookies":false,"type":"","demo":"messaging\/create-vonage-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-vonage-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"apiKey":{"type":"string","description":"Vonage API key.","x-example":"[API_KEY]"},"apiSecret":{"type":"string","description":"Vonage API secret.","x-example":"[API_SECRET]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name"]}}}}}},"\/messaging\/providers\/vonage\/{providerId}":{"patch":{"summary":"Update Vonage provider","operationId":"messagingUpdateVonageProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateVonageProvider","weight":345,"cookies":false,"type":"","demo":"messaging\/update-vonage-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-vonage-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"apiKey":{"type":"string","description":"Vonage API key.","x-example":"[API_KEY]"},"apiSecret":{"type":"string","description":"Vonage API secret.","x-example":"[API_SECRET]"},"from":{"type":"string","description":"Sender number.","x-example":"[FROM]"}}}}}}}},"\/messaging\/providers\/{providerId}":{"get":{"summary":"Get provider","operationId":"messagingGetProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"getProvider","weight":337,"cookies":false,"type":"","demo":"messaging\/get-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/get-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}]},"delete":{"summary":"Delete provider","operationId":"messagingDeleteProvider","tags":["messaging"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteProvider","weight":348,"cookies":false,"type":"","demo":"messaging\/delete-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}]}},"\/messaging\/providers\/{providerId}\/logs":{"get":{"summary":"List provider logs","operationId":"messagingListProviderLogs","tags":["messaging"],"description":"","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listProviderLogs","weight":336,"cookies":false,"type":"","demo":"messaging\/list-provider-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/providers\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/messaging\/subscribers\/{subscriberId}\/logs":{"get":{"summary":"List subscriber logs","operationId":"messagingListSubscriberLogs","tags":["messaging"],"description":"","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listSubscriberLogs","weight":357,"cookies":false,"type":"","demo":"messaging\/list-subscriber-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/subscribers\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"subscriberId","description":"Subscriber ID.","required":true,"schema":{"type":"string","x-example":"[SUBSCRIBER_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/messaging\/topics":{"get":{"summary":"List topics.","operationId":"messagingListTopics","tags":["messaging"],"description":"","responses":{"200":{"description":"Topic list","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/topicList"}}}}},"x-appwrite":{"method":"listTopics","weight":350,"cookies":false,"type":"","demo":"messaging\/list-topics.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-topics.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, description, total","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create a topic.","operationId":"messagingCreateTopic","tags":["messaging"],"description":"","responses":{"201":{"description":"Topic","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/topic"}}}}},"x-appwrite":{"method":"createTopic","weight":349,"cookies":false,"type":"","demo":"messaging\/create-topic.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-topic.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"topicId":{"type":"string","description":"Topic ID. Choose a custom Topic ID or a new Topic ID.","x-example":"[TOPIC_ID]"},"name":{"type":"string","description":"Topic Name.","x-example":"[NAME]"},"subscribe":{"type":"array","description":"An array of role strings with subscribe permission. By default all users are granted with any subscribe permission. [learn more about roles](https:\/\/appwrite.io\/docs\/permissions#permission-roles). Maximum of 100 roles are allowed, each 64 characters long.","x-example":"[\"any\"]","items":{"type":"string"}}},"required":["topicId","name"]}}}}}},"\/messaging\/topics\/{topicId}":{"get":{"summary":"Get a topic.","operationId":"messagingGetTopic","tags":["messaging"],"description":"","responses":{"200":{"description":"Topic","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/topic"}}}}},"x-appwrite":{"method":"getTopic","weight":352,"cookies":false,"type":"","demo":"messaging\/get-topic.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/get-topic.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID.","required":true,"schema":{"type":"string","x-example":"[TOPIC_ID]"},"in":"path"}]},"patch":{"summary":"Update a topic.","operationId":"messagingUpdateTopic","tags":["messaging"],"description":"","responses":{"200":{"description":"Topic","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/topic"}}}}},"x-appwrite":{"method":"updateTopic","weight":353,"cookies":false,"type":"","demo":"messaging\/update-topic.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-topic.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID.","required":true,"schema":{"type":"string","x-example":"[TOPIC_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Topic Name.","x-example":"[NAME]"}}}}}}},"delete":{"summary":"Delete a topic.","operationId":"messagingDeleteTopic","tags":["messaging"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteTopic","weight":354,"cookies":false,"type":"","demo":"messaging\/delete-topic.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-topic.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID.","required":true,"schema":{"type":"string","x-example":"[TOPIC_ID]"},"in":"path"}]}},"\/messaging\/topics\/{topicId}\/logs":{"get":{"summary":"List topic logs","operationId":"messagingListTopicLogs","tags":["messaging"],"description":"","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listTopicLogs","weight":351,"cookies":false,"type":"","demo":"messaging\/list-topic-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/topics\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID.","required":true,"schema":{"type":"string","x-example":"[TOPIC_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/messaging\/topics\/{topicId}\/subscribers":{"get":{"summary":"List subscribers.","operationId":"messagingListSubscribers","tags":["messaging"],"description":"","responses":{"200":{"description":"Subscriber list","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/subscriberList"}}}}},"x-appwrite":{"method":"listSubscribers","weight":356,"cookies":false,"type":"","demo":"messaging\/list-subscribers.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-subscribers.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID subscribed to.","required":true,"schema":{"type":"string","x-example":"[TOPIC_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, provider, type, enabled","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create a subscriber.","operationId":"messagingCreateSubscriber","tags":["messaging"],"description":"","responses":{"201":{"description":"Subscriber","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/subscriber"}}}}},"x-appwrite":{"method":"createSubscriber","weight":355,"cookies":false,"type":"","demo":"messaging\/create-subscriber.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-subscriber.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.write","platforms":["server","client","console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID to subscribe to.","required":true,"schema":{"type":"string","x-example":"[TOPIC_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"subscriberId":{"type":"string","description":"Subscriber ID. Choose a custom Subscriber ID or a new Subscriber ID.","x-example":"[SUBSCRIBER_ID]"},"targetId":{"type":"string","description":"Target ID. The target ID to link to the specified Topic ID.","x-example":"[TARGET_ID]"}},"required":["subscriberId","targetId"]}}}}}},"\/messaging\/topics\/{topicId}\/subscribers\/{subscriberId}":{"get":{"summary":"Get a subscriber.","operationId":"messagingGetSubscriber","tags":["messaging"],"description":"","responses":{"200":{"description":"Subscriber","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/subscriber"}}}}},"x-appwrite":{"method":"getSubscriber","weight":358,"cookies":false,"type":"","demo":"messaging\/get-subscriber.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/get-subscriber.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID subscribed to.","required":true,"schema":{"type":"string","x-example":"[TOPIC_ID]"},"in":"path"},{"name":"subscriberId","description":"Subscriber ID.","required":true,"schema":{"type":"string","x-example":"[SUBSCRIBER_ID]"},"in":"path"}]},"delete":{"summary":"Delete a subscriber.","operationId":"messagingDeleteSubscriber","tags":["messaging"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSubscriber","weight":359,"cookies":false,"type":"","demo":"messaging\/delete-subscriber.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-subscriber.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.write","platforms":["server","client","console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID subscribed to.","required":true,"schema":{"type":"string","x-example":"[TOPIC_ID]"},"in":"path"},{"name":"subscriberId","description":"Subscriber ID.","required":true,"schema":{"type":"string","x-example":"[SUBSCRIBER_ID]"},"in":"path"}]}},"\/migrations":{"get":{"summary":"List Migrations","operationId":"migrationsList","tags":["migrations"],"description":"","responses":{"200":{"description":"Migrations List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/migrationList"}}}}},"x-appwrite":{"method":"list","weight":312,"cookies":false,"type":"","demo":"migrations\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/list-migrations.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: status, stage, source, resources, statusCounters, resourceData, errors","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]}},"\/migrations\/appwrite":{"post":{"summary":"Migrate Appwrite Data","operationId":"migrationsCreateAppwriteMigration","tags":["migrations"],"description":"","responses":{"202":{"description":"Migration","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/migration"}}}}},"x-appwrite":{"method":"createAppwriteMigration","weight":307,"cookies":false,"type":"","demo":"migrations\/create-appwrite-migration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-appwrite.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"resources":{"type":"array","description":"List of resources to migrate","x-example":null,"items":{"type":"string"}},"endpoint":{"type":"string","description":"Source's Appwrite Endpoint","x-example":"https:\/\/example.com"},"projectId":{"type":"string","description":"Source's Project ID","x-example":"[PROJECT_ID]"},"apiKey":{"type":"string","description":"Source's API Key","x-example":"[API_KEY]"}},"required":["resources","endpoint","projectId","apiKey"]}}}}}},"\/migrations\/appwrite\/report":{"get":{"summary":"Generate a report on Appwrite Data","operationId":"migrationsGetAppwriteReport","tags":["migrations"],"description":"","responses":{"200":{"description":"Migration Report","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/migrationReport"}}}}},"x-appwrite":{"method":"getAppwriteReport","weight":314,"cookies":false,"type":"","demo":"migrations\/get-appwrite-report.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-appwrite-report.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"resources","description":"List of resources to migrate","required":true,"schema":{"type":"array","items":{"type":"string"}},"in":"query"},{"name":"endpoint","description":"Source's Appwrite Endpoint","required":true,"schema":{"type":"string","format":"url","x-example":"https:\/\/example.com"},"in":"query"},{"name":"projectID","description":"Source's Project ID","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"query"},{"name":"key","description":"Source's API Key","required":true,"schema":{"type":"string","x-example":"[KEY]"},"in":"query"}]}},"\/migrations\/firebase":{"post":{"summary":"Migrate Firebase Data (Service Account)","operationId":"migrationsCreateFirebaseMigration","tags":["migrations"],"description":"","responses":{"202":{"description":"Migration","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/migration"}}}}},"x-appwrite":{"method":"createFirebaseMigration","weight":309,"cookies":false,"type":"","demo":"migrations\/create-firebase-migration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-firebase.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"resources":{"type":"array","description":"List of resources to migrate","x-example":null,"items":{"type":"string"}},"serviceAccount":{"type":"string","description":"JSON of the Firebase service account credentials","x-example":"[SERVICE_ACCOUNT]"}},"required":["resources","serviceAccount"]}}}}}},"\/migrations\/firebase\/deauthorize":{"get":{"summary":"Revoke Appwrite's authorization to access Firebase Projects","operationId":"migrationsDeleteFirebaseAuth","tags":["migrations"],"description":"","responses":{"200":{"description":"File"}},"x-appwrite":{"method":"deleteFirebaseAuth","weight":320,"cookies":false,"type":"","demo":"migrations\/delete-firebase-auth.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/migrations\/firebase\/oauth":{"post":{"summary":"Migrate Firebase Data (OAuth)","operationId":"migrationsCreateFirebaseOAuthMigration","tags":["migrations"],"description":"","responses":{"202":{"description":"Migration","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/migration"}}}}},"x-appwrite":{"method":"createFirebaseOAuthMigration","weight":308,"cookies":false,"type":"","demo":"migrations\/create-firebase-o-auth-migration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-firebase.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"resources":{"type":"array","description":"List of resources to migrate","x-example":null,"items":{"type":"string"}},"projectId":{"type":"string","description":"Project ID of the Firebase Project","x-example":"[PROJECT_ID]"}},"required":["resources","projectId"]}}}}}},"\/migrations\/firebase\/projects":{"get":{"summary":"List Firebase Projects","operationId":"migrationsListFirebaseProjects","tags":["migrations"],"description":"","responses":{"200":{"description":"Migrations Firebase Projects List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/firebaseProjectList"}}}}},"x-appwrite":{"method":"listFirebaseProjects","weight":319,"cookies":false,"type":"","demo":"migrations\/list-firebase-projects.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/migrations\/firebase\/report":{"get":{"summary":"Generate a report on Firebase Data","operationId":"migrationsGetFirebaseReport","tags":["migrations"],"description":"","responses":{"200":{"description":"Migration Report","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/migrationReport"}}}}},"x-appwrite":{"method":"getFirebaseReport","weight":315,"cookies":false,"type":"","demo":"migrations\/get-firebase-report.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-firebase-report.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"resources","description":"List of resources to migrate","required":true,"schema":{"type":"array","items":{"type":"string"}},"in":"query"},{"name":"serviceAccount","description":"JSON of the Firebase service account credentials","required":true,"schema":{"type":"string","x-example":"[SERVICE_ACCOUNT]"},"in":"query"}]}},"\/migrations\/firebase\/report\/oauth":{"get":{"summary":"Generate a report on Firebase Data using OAuth","operationId":"migrationsGetFirebaseReportOAuth","tags":["migrations"],"description":"","responses":{"200":{"description":"Migration Report","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/migrationReport"}}}}},"x-appwrite":{"method":"getFirebaseReportOAuth","weight":316,"cookies":false,"type":"","demo":"migrations\/get-firebase-report-o-auth.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-firebase-report.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"resources","description":"List of resources to migrate","required":true,"schema":{"type":"array","items":{"type":"string"}},"in":"query"},{"name":"projectId","description":"Project ID","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"query"}]}},"\/migrations\/nhost":{"post":{"summary":"Migrate NHost Data","operationId":"migrationsCreateNHostMigration","tags":["migrations"],"description":"","responses":{"202":{"description":"Migration","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/migration"}}}}},"x-appwrite":{"method":"createNHostMigration","weight":311,"cookies":false,"type":"","demo":"migrations\/create-n-host-migration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-nhost.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"resources":{"type":"array","description":"List of resources to migrate","x-example":null,"items":{"type":"string"}},"subdomain":{"type":"string","description":"Source's Subdomain","x-example":"[SUBDOMAIN]"},"region":{"type":"string","description":"Source's Region","x-example":"[REGION]"},"adminSecret":{"type":"string","description":"Source's Admin Secret","x-example":"[ADMIN_SECRET]"},"database":{"type":"string","description":"Source's Database Name","x-example":"[DATABASE]"},"username":{"type":"string","description":"Source's Database Username","x-example":"[USERNAME]"},"password":{"type":"string","description":"Source's Database Password","x-example":"[PASSWORD]"},"port":{"type":"integer","description":"Source's Database Port","x-example":null}},"required":["resources","subdomain","region","adminSecret","database","username","password"]}}}}}},"\/migrations\/nhost\/report":{"get":{"summary":"Generate a report on NHost Data","operationId":"migrationsGetNHostReport","tags":["migrations"],"description":"","responses":{"200":{"description":"Migration Report","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/migrationReport"}}}}},"x-appwrite":{"method":"getNHostReport","weight":322,"cookies":false,"type":"","demo":"migrations\/get-n-host-report.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-nhost-report.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"resources","description":"List of resources to migrate.","required":true,"schema":{"type":"array","items":{"type":"string"}},"in":"query"},{"name":"subdomain","description":"Source's Subdomain.","required":true,"schema":{"type":"string","x-example":"[SUBDOMAIN]"},"in":"query"},{"name":"region","description":"Source's Region.","required":true,"schema":{"type":"string","x-example":"[REGION]"},"in":"query"},{"name":"adminSecret","description":"Source's Admin Secret.","required":true,"schema":{"type":"string","x-example":"[ADMIN_SECRET]"},"in":"query"},{"name":"database","description":"Source's Database Name.","required":true,"schema":{"type":"string","x-example":"[DATABASE]"},"in":"query"},{"name":"username","description":"Source's Database Username.","required":true,"schema":{"type":"string","x-example":"[USERNAME]"},"in":"query"},{"name":"password","description":"Source's Database Password.","required":true,"schema":{"type":"string","x-example":"[PASSWORD]"},"in":"query"},{"name":"port","description":"Source's Database Port.","required":false,"schema":{"type":"integer","format":"int32","default":5432},"in":"query"}]}},"\/migrations\/supabase":{"post":{"summary":"Migrate Supabase Data","operationId":"migrationsCreateSupabaseMigration","tags":["migrations"],"description":"","responses":{"202":{"description":"Migration","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/migration"}}}}},"x-appwrite":{"method":"createSupabaseMigration","weight":310,"cookies":false,"type":"","demo":"migrations\/create-supabase-migration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-supabase.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"resources":{"type":"array","description":"List of resources to migrate","x-example":null,"items":{"type":"string"}},"endpoint":{"type":"string","description":"Source's Supabase Endpoint","x-example":"https:\/\/example.com"},"apiKey":{"type":"string","description":"Source's API Key","x-example":"[API_KEY]"},"databaseHost":{"type":"string","description":"Source's Database Host","x-example":"[DATABASE_HOST]"},"username":{"type":"string","description":"Source's Database Username","x-example":"[USERNAME]"},"password":{"type":"string","description":"Source's Database Password","x-example":"[PASSWORD]"},"port":{"type":"integer","description":"Source's Database Port","x-example":null}},"required":["resources","endpoint","apiKey","databaseHost","username","password"]}}}}}},"\/migrations\/supabase\/report":{"get":{"summary":"Generate a report on Supabase Data","operationId":"migrationsGetSupabaseReport","tags":["migrations"],"description":"","responses":{"200":{"description":"Migration Report","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/migrationReport"}}}}},"x-appwrite":{"method":"getSupabaseReport","weight":321,"cookies":false,"type":"","demo":"migrations\/get-supabase-report.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-supabase-report.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"resources","description":"List of resources to migrate","required":true,"schema":{"type":"array","items":{"type":"string"}},"in":"query"},{"name":"endpoint","description":"Source's Supabase Endpoint.","required":true,"schema":{"type":"string","format":"url","x-example":"https:\/\/example.com"},"in":"query"},{"name":"apiKey","description":"Source's API Key.","required":true,"schema":{"type":"string","x-example":"[API_KEY]"},"in":"query"},{"name":"databaseHost","description":"Source's Database Host.","required":true,"schema":{"type":"string","x-example":"[DATABASE_HOST]"},"in":"query"},{"name":"username","description":"Source's Database Username.","required":true,"schema":{"type":"string","x-example":"[USERNAME]"},"in":"query"},{"name":"password","description":"Source's Database Password.","required":true,"schema":{"type":"string","x-example":"[PASSWORD]"},"in":"query"},{"name":"port","description":"Source's Database Port.","required":false,"schema":{"type":"integer","format":"int32","default":5432},"in":"query"}]}},"\/migrations\/{migrationId}":{"get":{"summary":"Get Migration","operationId":"migrationsGet","tags":["migrations"],"description":"","responses":{"200":{"description":"Migration","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/migration"}}}}},"x-appwrite":{"method":"get","weight":313,"cookies":false,"type":"","demo":"migrations\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/get-migration.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"migrationId","description":"Migration unique ID.","required":true,"schema":{"type":"string","x-example":"[MIGRATION_ID]"},"in":"path"}]},"patch":{"summary":"Retry Migration","operationId":"migrationsRetry","tags":["migrations"],"description":"","responses":{"202":{"description":"Migration","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/migration"}}}}},"x-appwrite":{"method":"retry","weight":323,"cookies":false,"type":"","demo":"migrations\/retry.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/retry-migration.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"migrationId","description":"Migration unique ID.","required":true,"schema":{"type":"string","x-example":"[MIGRATION_ID]"},"in":"path"}]},"delete":{"summary":"Delete Migration","operationId":"migrationsDelete","tags":["migrations"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":324,"cookies":false,"type":"","demo":"migrations\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-migration.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"migrationId","description":"Migration ID.","required":true,"schema":{"type":"string","x-example":"[MIGRATION_ID]"},"in":"path"}]}},"\/project\/usage":{"get":{"summary":"Get usage stats for a project","operationId":"projectGetUsage","tags":["project"],"description":"","responses":{"200":{"description":"UsageProject","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageProject"}}}}},"x-appwrite":{"method":"getUsage","weight":181,"cookies":false,"type":"","demo":"project\/get-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"startDate","description":"Starting date for the usage","required":true,"schema":{"type":"string"},"in":"query"},{"name":"endDate","description":"End date for the usage","required":true,"schema":{"type":"string"},"in":"query"},{"name":"period","description":"Period used","required":false,"schema":{"type":"string","x-example":"1h","enum":["1h","1d"],"x-enum-name":"ProjectUsageRange","x-enum-keys":["One Hour","One Day"],"default":"1d"},"in":"query"}]}},"\/project\/variables":{"get":{"summary":"List Variables","operationId":"projectListVariables","tags":["project"],"description":"Get a list of all project variables. These variables will be accessible in all Appwrite Functions at runtime.","responses":{"200":{"description":"Variables List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variableList"}}}}},"x-appwrite":{"method":"listVariables","weight":183,"cookies":false,"type":"","demo":"project\/list-variables.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/project\/list-variables.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]},"post":{"summary":"Create Variable","operationId":"projectCreateVariable","tags":["project"],"description":"Create a new project variable. This variable will be accessible in all Appwrite Functions at runtime.","responses":{"201":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"createVariable","weight":182,"cookies":false,"type":"","demo":"project\/create-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/project\/create-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","x-example":"[VALUE]"}},"required":["key","value"]}}}}}},"\/project\/variables\/{variableId}":{"get":{"summary":"Get Variable","operationId":"projectGetVariable","tags":["project"],"description":"Get a project variable by its unique ID.","responses":{"200":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"getVariable","weight":184,"cookies":false,"type":"","demo":"project\/get-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/project\/get-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}]},"put":{"summary":"Update Variable","operationId":"projectUpdateVariable","tags":["project"],"description":"Update project variable by its unique ID. This variable will be accessible in all Appwrite Functions at runtime.","responses":{"200":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"updateVariable","weight":185,"cookies":false,"type":"","demo":"project\/update-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/project\/update-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","x-example":"[VALUE]"}},"required":["key"]}}}}},"delete":{"summary":"Delete Variable","operationId":"projectDeleteVariable","tags":["project"],"description":"Delete a project variable by its unique ID. ","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteVariable","weight":186,"cookies":false,"type":"","demo":"project\/delete-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/project\/delete-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}]}},"\/projects":{"get":{"summary":"List projects","operationId":"projectsList","tags":["projects"],"description":"","responses":{"200":{"description":"Projects List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/projectList"}}}}},"x-appwrite":{"method":"list","weight":142,"cookies":false,"type":"","demo":"projects\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, teamId","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create project","operationId":"projectsCreate","tags":["projects"],"description":"","responses":{"201":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"create","weight":141,"cookies":false,"type":"","demo":"projects\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"projectId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, and hyphen. Can't start with a special char. Max length is 36 chars.","x-example":null},"name":{"type":"string","description":"Project name. Max length: 128 chars.","x-example":"[NAME]"},"teamId":{"type":"string","description":"Team unique ID.","x-example":"[TEAM_ID]"},"region":{"type":"string","description":"Project Region.","x-example":"default","enum":["default"],"x-enum-name":null,"x-enum-keys":[]},"description":{"type":"string","description":"Project description. Max length: 256 chars.","x-example":"[DESCRIPTION]"},"logo":{"type":"string","description":"Project logo.","x-example":"[LOGO]"},"url":{"type":"string","description":"Project URL.","x-example":"https:\/\/example.com"},"legalName":{"type":"string","description":"Project legal Name. Max length: 256 chars.","x-example":"[LEGAL_NAME]"},"legalCountry":{"type":"string","description":"Project legal Country. Max length: 256 chars.","x-example":"[LEGAL_COUNTRY]"},"legalState":{"type":"string","description":"Project legal State. Max length: 256 chars.","x-example":"[LEGAL_STATE]"},"legalCity":{"type":"string","description":"Project legal City. Max length: 256 chars.","x-example":"[LEGAL_CITY]"},"legalAddress":{"type":"string","description":"Project legal Address. Max length: 256 chars.","x-example":"[LEGAL_ADDRESS]"},"legalTaxId":{"type":"string","description":"Project legal Tax ID. Max length: 256 chars.","x-example":"[LEGAL_TAX_ID]"}},"required":["projectId","name","teamId"]}}}}}},"\/projects\/{projectId}":{"get":{"summary":"Get project","operationId":"projectsGet","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"get","weight":143,"cookies":false,"type":"","demo":"projects\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}]},"patch":{"summary":"Update project","operationId":"projectsUpdate","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"update","weight":144,"cookies":false,"type":"","demo":"projects\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Project name. Max length: 128 chars.","x-example":"[NAME]"},"description":{"type":"string","description":"Project description. Max length: 256 chars.","x-example":"[DESCRIPTION]"},"logo":{"type":"string","description":"Project logo.","x-example":"[LOGO]"},"url":{"type":"string","description":"Project URL.","x-example":"https:\/\/example.com"},"legalName":{"type":"string","description":"Project legal name. Max length: 256 chars.","x-example":"[LEGAL_NAME]"},"legalCountry":{"type":"string","description":"Project legal country. Max length: 256 chars.","x-example":"[LEGAL_COUNTRY]"},"legalState":{"type":"string","description":"Project legal state. Max length: 256 chars.","x-example":"[LEGAL_STATE]"},"legalCity":{"type":"string","description":"Project legal city. Max length: 256 chars.","x-example":"[LEGAL_CITY]"},"legalAddress":{"type":"string","description":"Project legal address. Max length: 256 chars.","x-example":"[LEGAL_ADDRESS]"},"legalTaxId":{"type":"string","description":"Project legal tax ID. Max length: 256 chars.","x-example":"[LEGAL_TAX_ID]"}},"required":["name"]}}}}},"delete":{"summary":"Delete project","operationId":"projectsDelete","tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":156,"cookies":false,"type":"","demo":"projects\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}]}},"\/projects\/{projectId}\/auth\/duration":{"patch":{"summary":"Update project authentication duration","operationId":"projectsUpdateAuthDuration","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateAuthDuration","weight":150,"cookies":false,"type":"","demo":"projects\/update-auth-duration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"duration":{"type":"integer","description":"Project session length in seconds. Max length: 31536000 seconds.","x-example":0}},"required":["duration"]}}}}}},"\/projects\/{projectId}\/auth\/limit":{"patch":{"summary":"Update project users limit","operationId":"projectsUpdateAuthLimit","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateAuthLimit","weight":149,"cookies":false,"type":"","demo":"projects\/update-auth-limit.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"limit":{"type":"integer","description":"Set the max number of users allowed in this project. Use 0 for unlimited.","x-example":0}},"required":["limit"]}}}}}},"\/projects\/{projectId}\/auth\/max-sessions":{"patch":{"summary":"Update project user sessions limit","operationId":"projectsUpdateAuthSessionsLimit","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateAuthSessionsLimit","weight":155,"cookies":false,"type":"","demo":"projects\/update-auth-sessions-limit.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"limit":{"type":"integer","description":"Set the max number of users allowed in this project. Value allowed is between 1-100. Default is 10","x-example":1}},"required":["limit"]}}}}}},"\/projects\/{projectId}\/auth\/password-dictionary":{"patch":{"summary":"Update authentication password dictionary status. Use this endpoint to enable or disable the dicitonary check for user password","operationId":"projectsUpdateAuthPasswordDictionary","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateAuthPasswordDictionary","weight":153,"cookies":false,"type":"","demo":"projects\/update-auth-password-dictionary.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Set whether or not to enable checking user's password against most commonly used passwords. Default is false.","x-example":false}},"required":["enabled"]}}}}}},"\/projects\/{projectId}\/auth\/password-history":{"patch":{"summary":"Update authentication password history. Use this endpoint to set the number of password history to save and 0 to disable password history.","operationId":"projectsUpdateAuthPasswordHistory","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateAuthPasswordHistory","weight":152,"cookies":false,"type":"","demo":"projects\/update-auth-password-history.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"limit":{"type":"integer","description":"Set the max number of passwords to store in user history. User can't choose a new password that is already stored in the password history list. Max number of passwords allowed in history is20. Default value is 0","x-example":0}},"required":["limit"]}}}}}},"\/projects\/{projectId}\/auth\/personal-data":{"patch":{"summary":"Enable or disable checking user passwords for similarity with their personal data.","operationId":"projectsUpdatePersonalDataCheck","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updatePersonalDataCheck","weight":154,"cookies":false,"type":"","demo":"projects\/update-personal-data-check.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Set whether or not to check a password for similarity with personal data. Default is false.","x-example":false}},"required":["enabled"]}}}}}},"\/projects\/{projectId}\/auth\/{method}":{"patch":{"summary":"Update project auth method status. Use this endpoint to enable or disable a given auth method for this project.","operationId":"projectsUpdateAuthStatus","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateAuthStatus","weight":151,"cookies":false,"type":"","demo":"projects\/update-auth-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"method","description":"Auth Method. Possible values: email-password,magic-url,email-otp,anonymous,invites,jwt,phone","required":true,"schema":{"type":"string","x-example":"email-password","enum":["email-password","magic-url","email-otp","anonymous","invites","jwt","phone"],"x-enum-name":"AuthMethod","x-enum-keys":[]},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"status":{"type":"boolean","description":"Set the status of this auth method.","x-example":false}},"required":["status"]}}}}}},"\/projects\/{projectId}\/keys":{"get":{"summary":"List keys","operationId":"projectsListKeys","tags":["projects"],"description":"","responses":{"200":{"description":"API Keys List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/keyList"}}}}},"x-appwrite":{"method":"listKeys","weight":164,"cookies":false,"type":"","demo":"projects\/list-keys.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}]},"post":{"summary":"Create key","operationId":"projectsCreateKey","tags":["projects"],"description":"","responses":{"201":{"description":"Key","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/key"}}}}},"x-appwrite":{"method":"createKey","weight":163,"cookies":false,"type":"","demo":"projects\/create-key.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Key name. Max length: 128 chars.","x-example":"[NAME]"},"scopes":{"type":"array","description":"Key scopes list. Maximum of 100 scopes are allowed.","x-example":null,"items":{"type":"string"}},"expire":{"type":"string","description":"Expiration time in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. Use null for unlimited expiration.","x-example":null}},"required":["name","scopes"]}}}}}},"\/projects\/{projectId}\/keys\/{keyId}":{"get":{"summary":"Get key","operationId":"projectsGetKey","tags":["projects"],"description":"","responses":{"200":{"description":"Key","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/key"}}}}},"x-appwrite":{"method":"getKey","weight":165,"cookies":false,"type":"","demo":"projects\/get-key.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"keyId","description":"Key unique ID.","required":true,"schema":{"type":"string","x-example":"[KEY_ID]"},"in":"path"}]},"put":{"summary":"Update key","operationId":"projectsUpdateKey","tags":["projects"],"description":"","responses":{"200":{"description":"Key","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/key"}}}}},"x-appwrite":{"method":"updateKey","weight":166,"cookies":false,"type":"","demo":"projects\/update-key.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"keyId","description":"Key unique ID.","required":true,"schema":{"type":"string","x-example":"[KEY_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Key name. Max length: 128 chars.","x-example":"[NAME]"},"scopes":{"type":"array","description":"Key scopes list. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"expire":{"type":"string","description":"Expiration time in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. Use null for unlimited expiration.","x-example":null}},"required":["name","scopes"]}}}}},"delete":{"summary":"Delete key","operationId":"projectsDeleteKey","tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteKey","weight":167,"cookies":false,"type":"","demo":"projects\/delete-key.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"keyId","description":"Key unique ID.","required":true,"schema":{"type":"string","x-example":"[KEY_ID]"},"in":"path"}]}},"\/projects\/{projectId}\/oauth2":{"patch":{"summary":"Update project OAuth2","operationId":"projectsUpdateOAuth2","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateOAuth2","weight":148,"cookies":false,"type":"","demo":"projects\/update-o-auth2.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"provider":{"type":"string","description":"Provider Name","x-example":"amazon","enum":["amazon","apple","auth0","authentik","autodesk","bitbucket","bitly","box","dailymotion","discord","disqus","dropbox","etsy","facebook","github","gitlab","google","linkedin","microsoft","notion","oidc","okta","paypal","paypalSandbox","podio","salesforce","slack","spotify","stripe","tradeshift","tradeshiftBox","twitch","wordpress","yahoo","yammer","yandex","zoho","zoom","mock"],"x-enum-name":"OAuthProvider","x-enum-keys":[]},"appId":{"type":"string","description":"Provider app ID. Max length: 256 chars.","x-example":"[APP_ID]"},"secret":{"type":"string","description":"Provider secret key. Max length: 512 chars.","x-example":"[SECRET]"},"enabled":{"type":"boolean","description":"Provider status. Set to 'false' to disable new session creation.","x-example":false}},"required":["provider"]}}}}}},"\/projects\/{projectId}\/platforms":{"get":{"summary":"List platforms","operationId":"projectsListPlatforms","tags":["projects"],"description":"","responses":{"200":{"description":"Platforms List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/platformList"}}}}},"x-appwrite":{"method":"listPlatforms","weight":169,"cookies":false,"type":"","demo":"projects\/list-platforms.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}]},"post":{"summary":"Create platform","operationId":"projectsCreatePlatform","tags":["projects"],"description":"","responses":{"201":{"description":"Platform","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/platform"}}}}},"x-appwrite":{"method":"createPlatform","weight":168,"cookies":false,"type":"","demo":"projects\/create-platform.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"type":{"type":"string","description":"Platform type.","x-example":"web","enum":["web","flutter-web","flutter-ios","flutter-android","flutter-linux","flutter-macos","flutter-windows","apple-ios","apple-macos","apple-watchos","apple-tvos","android","unity"],"x-enum-name":"PlatformType","x-enum-keys":[]},"name":{"type":"string","description":"Platform name. Max length: 128 chars.","x-example":"[NAME]"},"key":{"type":"string","description":"Package name for Android or bundle ID for iOS or macOS. Max length: 256 chars.","x-example":"[KEY]"},"store":{"type":"string","description":"App store or Google Play store ID. Max length: 256 chars.","x-example":"[STORE]"},"hostname":{"type":"string","description":"Platform client hostname. Max length: 256 chars.","x-example":null}},"required":["type","name"]}}}}}},"\/projects\/{projectId}\/platforms\/{platformId}":{"get":{"summary":"Get platform","operationId":"projectsGetPlatform","tags":["projects"],"description":"","responses":{"200":{"description":"Platform","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/platform"}}}}},"x-appwrite":{"method":"getPlatform","weight":170,"cookies":false,"type":"","demo":"projects\/get-platform.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"platformId","description":"Platform unique ID.","required":true,"schema":{"type":"string","x-example":"[PLATFORM_ID]"},"in":"path"}]},"put":{"summary":"Update platform","operationId":"projectsUpdatePlatform","tags":["projects"],"description":"","responses":{"200":{"description":"Platform","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/platform"}}}}},"x-appwrite":{"method":"updatePlatform","weight":171,"cookies":false,"type":"","demo":"projects\/update-platform.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"platformId","description":"Platform unique ID.","required":true,"schema":{"type":"string","x-example":"[PLATFORM_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Platform name. Max length: 128 chars.","x-example":"[NAME]"},"key":{"type":"string","description":"Package name for android or bundle ID for iOS. Max length: 256 chars.","x-example":"[KEY]"},"store":{"type":"string","description":"App store or Google Play store ID. Max length: 256 chars.","x-example":"[STORE]"},"hostname":{"type":"string","description":"Platform client URL. Max length: 256 chars.","x-example":null}},"required":["name"]}}}}},"delete":{"summary":"Delete platform","operationId":"projectsDeletePlatform","tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deletePlatform","weight":172,"cookies":false,"type":"","demo":"projects\/delete-platform.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"platformId","description":"Platform unique ID.","required":true,"schema":{"type":"string","x-example":"[PLATFORM_ID]"},"in":"path"}]}},"\/projects\/{projectId}\/service":{"patch":{"summary":"Update service status","operationId":"projectsUpdateServiceStatus","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateServiceStatus","weight":146,"cookies":false,"type":"","demo":"projects\/update-service-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"service":{"type":"string","description":"Service name.","x-example":"account","enum":["account","avatars","databases","locale","health","storage","teams","users","functions","graphql","messaging"],"x-enum-name":"APIService","x-enum-keys":[]},"status":{"type":"boolean","description":"Service status.","x-example":false}},"required":["service","status"]}}}}}},"\/projects\/{projectId}\/service\/all":{"patch":{"summary":"Update all service status","operationId":"projectsUpdateServiceStatusAll","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateServiceStatusAll","weight":147,"cookies":false,"type":"","demo":"projects\/update-service-status-all.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"status":{"type":"boolean","description":"Service status.","x-example":false}},"required":["status"]}}}}}},"\/projects\/{projectId}\/smtp":{"patch":{"summary":"Update SMTP","operationId":"projectsUpdateSmtp","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateSmtp","weight":173,"cookies":false,"type":"","demo":"projects\/update-smtp.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enable custom SMTP service","x-example":false},"senderName":{"type":"string","description":"Name of the email sender","x-example":"[SENDER_NAME]"},"senderEmail":{"type":"string","description":"Email of the sender","x-example":"email@example.com"},"replyTo":{"type":"string","description":"Reply to email","x-example":"email@example.com"},"host":{"type":"string","description":"SMTP server host name","x-example":null},"port":{"type":"integer","description":"SMTP server port","x-example":null},"username":{"type":"string","description":"SMTP server username","x-example":"[USERNAME]"},"password":{"type":"string","description":"SMTP server password","x-example":"[PASSWORD]"},"secure":{"type":"string","description":"Does SMTP server use secure connection","x-example":"tls","enum":["tls"],"x-enum-name":"SMTPSecure","x-enum-keys":[]}},"required":["enabled"]}}}}}},"\/projects\/{projectId}\/smtp\/tests":{"post":{"summary":"Create SMTP test","operationId":"projectsCreateSmtpTest","tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"createSmtpTest","weight":174,"cookies":false,"type":"","demo":"projects\/create-smtp-test.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"emails":{"type":"array","description":"Array of emails to send test email to. Maximum of 10 emails are allowed.","x-example":null,"items":{"type":"string"}},"senderName":{"type":"string","description":"Name of the email sender","x-example":"[SENDER_NAME]"},"senderEmail":{"type":"string","description":"Email of the sender","x-example":"email@example.com"},"replyTo":{"type":"string","description":"Reply to email","x-example":"email@example.com"},"host":{"type":"string","description":"SMTP server host name","x-example":null},"port":{"type":"integer","description":"SMTP server port","x-example":null},"username":{"type":"string","description":"SMTP server username","x-example":"[USERNAME]"},"password":{"type":"string","description":"SMTP server password","x-example":"[PASSWORD]"},"secure":{"type":"string","description":"Does SMTP server use secure connection","x-example":"tls","enum":["tls"],"x-enum-name":"SMTPSecure","x-enum-keys":[]}},"required":["emails","senderName","senderEmail","host"]}}}}}},"\/projects\/{projectId}\/team":{"patch":{"summary":"Update Project Team","operationId":"projectsUpdateTeam","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateTeam","weight":145,"cookies":false,"type":"","demo":"projects\/update-team.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"teamId":{"type":"string","description":"Team ID of the team to transfer project to.","x-example":"[TEAM_ID]"}},"required":["teamId"]}}}}}},"\/projects\/{projectId}\/templates\/email\/{type}\/{locale}":{"get":{"summary":"Get custom email template","operationId":"projectsGetEmailTemplate","tags":["projects"],"description":"","responses":{"200":{"description":"EmailTemplate","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/emailTemplate"}}}}},"x-appwrite":{"method":"getEmailTemplate","weight":176,"cookies":false,"type":"","demo":"projects\/get-email-template.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"type","description":"Template type","required":true,"schema":{"type":"string","x-example":"verification","enum":["verification","magicsession","recovery","invitation"],"x-enum-name":"EmailTemplateType","x-enum-keys":[]},"in":"path"},{"name":"locale","description":"Template locale","required":true,"schema":{"type":"string","x-example":"af","enum":["af","ar-ae","ar-bh","ar-dz","ar-eg","ar-iq","ar-jo","ar-kw","ar-lb","ar-ly","ar-ma","ar-om","ar-qa","ar-sa","ar-sy","ar-tn","ar-ye","as","az","be","bg","bh","bn","bs","ca","cs","cy","da","de","de-at","de-ch","de-li","de-lu","el","en","en-au","en-bz","en-ca","en-gb","en-ie","en-jm","en-nz","en-tt","en-us","en-za","eo","es","es-ar","es-bo","es-cl","es-co","es-cr","es-do","es-ec","es-gt","es-hn","es-mx","es-ni","es-pa","es-pe","es-pr","es-py","es-sv","es-uy","es-ve","et","eu","fa","fi","fo","fr","fr-be","fr-ca","fr-ch","fr-lu","ga","gd","he","hi","hr","hu","id","is","it","it-ch","ja","ji","ko","ku","lt","lv","mk","ml","ms","mt","nb","ne","nl","nl-be","nn","no","pa","pl","pt","pt-br","rm","ro","ro-md","ru","ru-md","sb","sk","sl","sq","sr","sv","sv-fi","th","tn","tr","ts","ua","ur","ve","vi","xh","zh-cn","zh-hk","zh-sg","zh-tw","zu"],"x-enum-name":"EmailTemplateLocale","x-enum-keys":[]},"in":"path"}]},"patch":{"summary":"Update custom email templates","operationId":"projectsUpdateEmailTemplate","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateEmailTemplate","weight":178,"cookies":false,"type":"","demo":"projects\/update-email-template.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"type","description":"Template type","required":true,"schema":{"type":"string","x-example":"verification","enum":["verification","magicsession","recovery","invitation"],"x-enum-name":"EmailTemplateType","x-enum-keys":[]},"in":"path"},{"name":"locale","description":"Template locale","required":true,"schema":{"type":"string","x-example":"af","enum":["af","ar-ae","ar-bh","ar-dz","ar-eg","ar-iq","ar-jo","ar-kw","ar-lb","ar-ly","ar-ma","ar-om","ar-qa","ar-sa","ar-sy","ar-tn","ar-ye","as","az","be","bg","bh","bn","bs","ca","cs","cy","da","de","de-at","de-ch","de-li","de-lu","el","en","en-au","en-bz","en-ca","en-gb","en-ie","en-jm","en-nz","en-tt","en-us","en-za","eo","es","es-ar","es-bo","es-cl","es-co","es-cr","es-do","es-ec","es-gt","es-hn","es-mx","es-ni","es-pa","es-pe","es-pr","es-py","es-sv","es-uy","es-ve","et","eu","fa","fi","fo","fr","fr-be","fr-ca","fr-ch","fr-lu","ga","gd","he","hi","hr","hu","id","is","it","it-ch","ja","ji","ko","ku","lt","lv","mk","ml","ms","mt","nb","ne","nl","nl-be","nn","no","pa","pl","pt","pt-br","rm","ro","ro-md","ru","ru-md","sb","sk","sl","sq","sr","sv","sv-fi","th","tn","tr","ts","ua","ur","ve","vi","xh","zh-cn","zh-hk","zh-sg","zh-tw","zu"],"x-enum-name":"EmailTemplateLocale","x-enum-keys":[]},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"subject":{"type":"string","description":"Email Subject","x-example":"[SUBJECT]"},"message":{"type":"string","description":"Template message","x-example":"[MESSAGE]"},"senderName":{"type":"string","description":"Name of the email sender","x-example":"[SENDER_NAME]"},"senderEmail":{"type":"string","description":"Email of the sender","x-example":"email@example.com"},"replyTo":{"type":"string","description":"Reply to email","x-example":"email@example.com"}},"required":["subject","message"]}}}}},"delete":{"summary":"Reset custom email template","operationId":"projectsDeleteEmailTemplate","tags":["projects"],"description":"","responses":{"200":{"description":"EmailTemplate","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/emailTemplate"}}}}},"x-appwrite":{"method":"deleteEmailTemplate","weight":180,"cookies":false,"type":"","demo":"projects\/delete-email-template.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"type","description":"Template type","required":true,"schema":{"type":"string","x-example":"verification","enum":["verification","magicsession","recovery","invitation"],"x-enum-name":"EmailTemplateType","x-enum-keys":[]},"in":"path"},{"name":"locale","description":"Template locale","required":true,"schema":{"type":"string","x-example":"af","enum":["af","ar-ae","ar-bh","ar-dz","ar-eg","ar-iq","ar-jo","ar-kw","ar-lb","ar-ly","ar-ma","ar-om","ar-qa","ar-sa","ar-sy","ar-tn","ar-ye","as","az","be","bg","bh","bn","bs","ca","cs","cy","da","de","de-at","de-ch","de-li","de-lu","el","en","en-au","en-bz","en-ca","en-gb","en-ie","en-jm","en-nz","en-tt","en-us","en-za","eo","es","es-ar","es-bo","es-cl","es-co","es-cr","es-do","es-ec","es-gt","es-hn","es-mx","es-ni","es-pa","es-pe","es-pr","es-py","es-sv","es-uy","es-ve","et","eu","fa","fi","fo","fr","fr-be","fr-ca","fr-ch","fr-lu","ga","gd","he","hi","hr","hu","id","is","it","it-ch","ja","ji","ko","ku","lt","lv","mk","ml","ms","mt","nb","ne","nl","nl-be","nn","no","pa","pl","pt","pt-br","rm","ro","ro-md","ru","ru-md","sb","sk","sl","sq","sr","sv","sv-fi","th","tn","tr","ts","ua","ur","ve","vi","xh","zh-cn","zh-hk","zh-sg","zh-tw","zu"],"x-enum-name":"EmailTemplateLocale","x-enum-keys":[]},"in":"path"}]}},"\/projects\/{projectId}\/templates\/sms\/{type}\/{locale}":{"get":{"summary":"Get custom SMS template","operationId":"projectsGetSmsTemplate","tags":["projects"],"description":"","responses":{"200":{"description":"SmsTemplate","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/smsTemplate"}}}}},"x-appwrite":{"method":"getSmsTemplate","weight":175,"cookies":false,"type":"","demo":"projects\/get-sms-template.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"type","description":"Template type","required":true,"schema":{"type":"string","x-example":"verification","enum":["verification","login","invitation"],"x-enum-name":"SMSTemplateType","x-enum-keys":[]},"in":"path"},{"name":"locale","description":"Template locale","required":true,"schema":{"type":"string","x-example":"af","enum":["af","ar-ae","ar-bh","ar-dz","ar-eg","ar-iq","ar-jo","ar-kw","ar-lb","ar-ly","ar-ma","ar-om","ar-qa","ar-sa","ar-sy","ar-tn","ar-ye","as","az","be","bg","bh","bn","bs","ca","cs","cy","da","de","de-at","de-ch","de-li","de-lu","el","en","en-au","en-bz","en-ca","en-gb","en-ie","en-jm","en-nz","en-tt","en-us","en-za","eo","es","es-ar","es-bo","es-cl","es-co","es-cr","es-do","es-ec","es-gt","es-hn","es-mx","es-ni","es-pa","es-pe","es-pr","es-py","es-sv","es-uy","es-ve","et","eu","fa","fi","fo","fr","fr-be","fr-ca","fr-ch","fr-lu","ga","gd","he","hi","hr","hu","id","is","it","it-ch","ja","ji","ko","ku","lt","lv","mk","ml","ms","mt","nb","ne","nl","nl-be","nn","no","pa","pl","pt","pt-br","rm","ro","ro-md","ru","ru-md","sb","sk","sl","sq","sr","sv","sv-fi","th","tn","tr","ts","ua","ur","ve","vi","xh","zh-cn","zh-hk","zh-sg","zh-tw","zu"],"x-enum-name":"SMSTemplateLocale","x-enum-keys":[]},"in":"path"}]},"patch":{"summary":"Update custom SMS template","operationId":"projectsUpdateSmsTemplate","tags":["projects"],"description":"","responses":{"200":{"description":"SmsTemplate","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/smsTemplate"}}}}},"x-appwrite":{"method":"updateSmsTemplate","weight":177,"cookies":false,"type":"","demo":"projects\/update-sms-template.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"type","description":"Template type","required":true,"schema":{"type":"string","x-example":"verification","enum":["verification","login","invitation"],"x-enum-name":"SMSTemplateType","x-enum-keys":[]},"in":"path"},{"name":"locale","description":"Template locale","required":true,"schema":{"type":"string","x-example":"af","enum":["af","ar-ae","ar-bh","ar-dz","ar-eg","ar-iq","ar-jo","ar-kw","ar-lb","ar-ly","ar-ma","ar-om","ar-qa","ar-sa","ar-sy","ar-tn","ar-ye","as","az","be","bg","bh","bn","bs","ca","cs","cy","da","de","de-at","de-ch","de-li","de-lu","el","en","en-au","en-bz","en-ca","en-gb","en-ie","en-jm","en-nz","en-tt","en-us","en-za","eo","es","es-ar","es-bo","es-cl","es-co","es-cr","es-do","es-ec","es-gt","es-hn","es-mx","es-ni","es-pa","es-pe","es-pr","es-py","es-sv","es-uy","es-ve","et","eu","fa","fi","fo","fr","fr-be","fr-ca","fr-ch","fr-lu","ga","gd","he","hi","hr","hu","id","is","it","it-ch","ja","ji","ko","ku","lt","lv","mk","ml","ms","mt","nb","ne","nl","nl-be","nn","no","pa","pl","pt","pt-br","rm","ro","ro-md","ru","ru-md","sb","sk","sl","sq","sr","sv","sv-fi","th","tn","tr","ts","ua","ur","ve","vi","xh","zh-cn","zh-hk","zh-sg","zh-tw","zu"],"x-enum-name":"SMSTemplateLocale","x-enum-keys":[]},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Template message","x-example":"[MESSAGE]"}},"required":["message"]}}}}},"delete":{"summary":"Reset custom SMS template","operationId":"projectsDeleteSmsTemplate","tags":["projects"],"description":"","responses":{"200":{"description":"SmsTemplate","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/smsTemplate"}}}}},"x-appwrite":{"method":"deleteSmsTemplate","weight":179,"cookies":false,"type":"","demo":"projects\/delete-sms-template.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"type","description":"Template type","required":true,"schema":{"type":"string","x-example":"verification","enum":["verification","login","invitation"],"x-enum-name":"SMSTemplateType","x-enum-keys":[]},"in":"path"},{"name":"locale","description":"Template locale","required":true,"schema":{"type":"string","x-example":"af","enum":["af","ar-ae","ar-bh","ar-dz","ar-eg","ar-iq","ar-jo","ar-kw","ar-lb","ar-ly","ar-ma","ar-om","ar-qa","ar-sa","ar-sy","ar-tn","ar-ye","as","az","be","bg","bh","bn","bs","ca","cs","cy","da","de","de-at","de-ch","de-li","de-lu","el","en","en-au","en-bz","en-ca","en-gb","en-ie","en-jm","en-nz","en-tt","en-us","en-za","eo","es","es-ar","es-bo","es-cl","es-co","es-cr","es-do","es-ec","es-gt","es-hn","es-mx","es-ni","es-pa","es-pe","es-pr","es-py","es-sv","es-uy","es-ve","et","eu","fa","fi","fo","fr","fr-be","fr-ca","fr-ch","fr-lu","ga","gd","he","hi","hr","hu","id","is","it","it-ch","ja","ji","ko","ku","lt","lv","mk","ml","ms","mt","nb","ne","nl","nl-be","nn","no","pa","pl","pt","pt-br","rm","ro","ro-md","ru","ru-md","sb","sk","sl","sq","sr","sv","sv-fi","th","tn","tr","ts","ua","ur","ve","vi","xh","zh-cn","zh-hk","zh-sg","zh-tw","zu"],"x-enum-name":"SMSTemplateLocale","x-enum-keys":[]},"in":"path"}]}},"\/projects\/{projectId}\/webhooks":{"get":{"summary":"List webhooks","operationId":"projectsListWebhooks","tags":["projects"],"description":"","responses":{"200":{"description":"Webhooks List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/webhookList"}}}}},"x-appwrite":{"method":"listWebhooks","weight":158,"cookies":false,"type":"","demo":"projects\/list-webhooks.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}]},"post":{"summary":"Create webhook","operationId":"projectsCreateWebhook","tags":["projects"],"description":"","responses":{"201":{"description":"Webhook","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/webhook"}}}}},"x-appwrite":{"method":"createWebhook","weight":157,"cookies":false,"type":"","demo":"projects\/create-webhook.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Webhook name. Max length: 128 chars.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Enable or disable a webhook.","x-example":false},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"Webhook URL.","x-example":null},"security":{"type":"boolean","description":"Certificate verification, false for disabled or true for enabled.","x-example":false},"httpUser":{"type":"string","description":"Webhook HTTP user. Max length: 256 chars.","x-example":"[HTTP_USER]"},"httpPass":{"type":"string","description":"Webhook HTTP password. Max length: 256 chars.","x-example":"[HTTP_PASS]"}},"required":["name","events","url","security"]}}}}}},"\/projects\/{projectId}\/webhooks\/{webhookId}":{"get":{"summary":"Get webhook","operationId":"projectsGetWebhook","tags":["projects"],"description":"","responses":{"200":{"description":"Webhook","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/webhook"}}}}},"x-appwrite":{"method":"getWebhook","weight":159,"cookies":false,"type":"","demo":"projects\/get-webhook.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"webhookId","description":"Webhook unique ID.","required":true,"schema":{"type":"string","x-example":"[WEBHOOK_ID]"},"in":"path"}]},"put":{"summary":"Update webhook","operationId":"projectsUpdateWebhook","tags":["projects"],"description":"","responses":{"200":{"description":"Webhook","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/webhook"}}}}},"x-appwrite":{"method":"updateWebhook","weight":160,"cookies":false,"type":"","demo":"projects\/update-webhook.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"webhookId","description":"Webhook unique ID.","required":true,"schema":{"type":"string","x-example":"[WEBHOOK_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Webhook name. Max length: 128 chars.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Enable or disable a webhook.","x-example":false},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"Webhook URL.","x-example":null},"security":{"type":"boolean","description":"Certificate verification, false for disabled or true for enabled.","x-example":false},"httpUser":{"type":"string","description":"Webhook HTTP user. Max length: 256 chars.","x-example":"[HTTP_USER]"},"httpPass":{"type":"string","description":"Webhook HTTP password. Max length: 256 chars.","x-example":"[HTTP_PASS]"}},"required":["name","events","url","security"]}}}}},"delete":{"summary":"Delete webhook","operationId":"projectsDeleteWebhook","tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteWebhook","weight":162,"cookies":false,"type":"","demo":"projects\/delete-webhook.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"webhookId","description":"Webhook unique ID.","required":true,"schema":{"type":"string","x-example":"[WEBHOOK_ID]"},"in":"path"}]}},"\/projects\/{projectId}\/webhooks\/{webhookId}\/signature":{"patch":{"summary":"Update webhook signature key","operationId":"projectsUpdateWebhookSignature","tags":["projects"],"description":"","responses":{"200":{"description":"Webhook","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/webhook"}}}}},"x-appwrite":{"method":"updateWebhookSignature","weight":161,"cookies":false,"type":"","demo":"projects\/update-webhook-signature.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"webhookId","description":"Webhook unique ID.","required":true,"schema":{"type":"string","x-example":"[WEBHOOK_ID]"},"in":"path"}]}},"\/proxy\/rules":{"get":{"summary":"List Rules","operationId":"proxyListRules","tags":["proxy"],"description":"Get a list of all the proxy rules. You can use the query params to filter your results.","responses":{"200":{"description":"Rule List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/proxyRuleList"}}}}},"x-appwrite":{"method":"listRules","weight":291,"cookies":false,"type":"","demo":"proxy\/list-rules.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/proxy\/list-rules.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"rules.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: domain, resourceType, resourceId, url","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Rule","operationId":"proxyCreateRule","tags":["proxy"],"description":"Create a new proxy rule.","responses":{"201":{"description":"Rule","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/proxyRule"}}}}},"x-appwrite":{"method":"createRule","weight":290,"cookies":false,"type":"","demo":"proxy\/create-rule.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/proxy\/create-rule.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"rules.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"domain":{"type":"string","description":"Domain name.","x-example":null},"resourceType":{"type":"string","description":"Action definition for the rule. Possible values are \"api\", \"function\"","x-example":"api","enum":["api","function"],"x-enum-name":null,"x-enum-keys":[]},"resourceId":{"type":"string","description":"ID of resource for the action type. If resourceType is \"api\", leave empty. If resourceType is \"function\", provide ID of the function.","x-example":"[RESOURCE_ID]"}},"required":["domain","resourceType"]}}}}}},"\/proxy\/rules\/{ruleId}":{"get":{"summary":"Get Rule","operationId":"proxyGetRule","tags":["proxy"],"description":"Get a proxy rule by its unique ID.","responses":{"200":{"description":"Rule","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/proxyRule"}}}}},"x-appwrite":{"method":"getRule","weight":292,"cookies":false,"type":"","demo":"proxy\/get-rule.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/proxy\/get-rule.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"rules.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"ruleId","description":"Rule ID.","required":true,"schema":{"type":"string","x-example":"[RULE_ID]"},"in":"path"}]},"delete":{"summary":"Delete Rule","operationId":"proxyDeleteRule","tags":["proxy"],"description":"Delete a proxy rule by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteRule","weight":293,"cookies":false,"type":"","demo":"proxy\/delete-rule.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/proxy\/delete-rule.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"rules.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"ruleId","description":"Rule ID.","required":true,"schema":{"type":"string","x-example":"[RULE_ID]"},"in":"path"}]}},"\/proxy\/rules\/{ruleId}\/verification":{"patch":{"summary":"Update Rule Verification Status","operationId":"proxyUpdateRuleVerification","tags":["proxy"],"description":"","responses":{"200":{"description":"Rule","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/proxyRule"}}}}},"x-appwrite":{"method":"updateRuleVerification","weight":294,"cookies":false,"type":"","demo":"proxy\/update-rule-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"rules.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"ruleId","description":"Rule ID.","required":true,"schema":{"type":"string","x-example":"[RULE_ID]"},"in":"path"}]}},"\/storage\/buckets":{"get":{"summary":"List buckets","operationId":"storageListBuckets","tags":["storage"],"description":"Get a list of all the storage buckets. You can use the query params to filter your results.","responses":{"200":{"description":"Buckets List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/bucketList"}}}}},"x-appwrite":{"method":"listBuckets","weight":188,"cookies":false,"type":"","demo":"storage\/list-buckets.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/list-buckets.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: enabled, name, fileSecurity, maximumFileSize, encryption, antivirus","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create bucket","operationId":"storageCreateBucket","tags":["storage"],"description":"Create a new storage bucket.","responses":{"201":{"description":"Bucket","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/bucket"}}}}},"x-appwrite":{"method":"createBucket","weight":187,"cookies":false,"type":"","demo":"storage\/create-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"bucketId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, no user is granted with any permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":false},"enabled":{"type":"boolean","description":"Is bucket enabled? When set to 'disabled', users cannot access the files in this bucket but Server SDKs with and API key can still access the bucket. No files are lost when this is toggled.","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB.","x-example":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","x-example":"none","enum":["none","gzip","zstd"],"x-enum-name":null,"x-enum-keys":[]},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","x-example":false}},"required":["bucketId","name"]}}}}}},"\/storage\/buckets\/{bucketId}":{"get":{"summary":"Get bucket","operationId":"storageGetBucket","tags":["storage"],"description":"Get a storage bucket by its unique ID. This endpoint response returns a JSON object with the storage bucket metadata.","responses":{"200":{"description":"Bucket","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/bucket"}}}}},"x-appwrite":{"method":"getBucket","weight":189,"cookies":false,"type":"","demo":"storage\/get-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"bucketId","description":"Bucket unique ID.","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"}]},"put":{"summary":"Update bucket","operationId":"storageUpdateBucket","tags":["storage"],"description":"Update a storage bucket by its unique ID.","responses":{"200":{"description":"Bucket","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/bucket"}}}}},"x-appwrite":{"method":"updateBucket","weight":190,"cookies":false,"type":"","demo":"storage\/update-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"bucketId","description":"Bucket unique ID.","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Bucket name","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":false},"enabled":{"type":"boolean","description":"Is bucket enabled? When set to 'disabled', users cannot access the files in this bucket but Server SDKs with and API key can still access the bucket. No files are lost when this is toggled.","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB.","x-example":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","x-example":"none","enum":["none","gzip","zstd"],"x-enum-name":null,"x-enum-keys":[]},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","x-example":false}},"required":["name"]}}}}},"delete":{"summary":"Delete bucket","operationId":"storageDeleteBucket","tags":["storage"],"description":"Delete a storage bucket by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteBucket","weight":191,"cookies":false,"type":"","demo":"storage\/delete-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"bucketId","description":"Bucket unique ID.","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files":{"get":{"summary":"List files","operationId":"storageListFiles","tags":["storage"],"description":"Get a list of all the user files. You can use the query params to filter your results.","responses":{"200":{"description":"Files List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/fileList"}}}}},"x-appwrite":{"method":"listFiles","weight":193,"cookies":false,"type":"","demo":"storage\/list-files.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/list-files.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create file","operationId":"storageCreateFile","tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"createFile","weight":192,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"}],"requestBody":{"content":{"multipart\/form-data":{"schema":{"type":"object","properties":{"fileId":{"type":"string","description":"File ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[FILE_ID]","x-upload-id":true},"file":{"type":"string","description":"Binary file. Appwrite SDKs provide helpers to handle file input. [Learn about file input](https:\/\/appwrite.io\/docs\/storage#file-input).","x-example":null},"permissions":{"type":"array","description":"An array of permission strings. By default, only the current user is granted all permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["fileId","file"]}}}}}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get file","operationId":"storageGetFile","tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"getFile","weight":194,"cookies":false,"type":"","demo":"storage\/get-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File ID.","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"}]},"put":{"summary":"Update file","operationId":"storageUpdateFile","tags":["storage"],"description":"Update a file by its unique ID. Only users with write permissions have access to update this resource.","responses":{"200":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"updateFile","weight":198,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File unique ID.","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Name of the file","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission string. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":199,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File ID.","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/download":{"get":{"summary":"Get file for download","operationId":"storageGetFileDownload","tags":["storage"],"description":"Get a file content by its unique ID. The endpoint response return with a 'Content-Disposition: attachment' header that tells the browser to start downloading the file to user downloads directory.","responses":{"200":{"description":"File"}},"x-appwrite":{"method":"getFileDownload","weight":196,"cookies":false,"type":"location","demo":"storage\/get-file-download.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-download.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File ID.","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/preview":{"get":{"summary":"Get file preview","operationId":"storageGetFilePreview","tags":["storage"],"description":"Get a file preview image. Currently, this method supports preview for image files (jpg, png, and gif), other supported formats, like pdf, docs, slides, and spreadsheets, will return the file icon image. You can also pass query string arguments for cutting and resizing your preview image. Preview is supported only for image files smaller than 10MB.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFilePreview","weight":195,"cookies":false,"type":"location","demo":"storage\/get-file-preview.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-preview.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File ID","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"},{"name":"width","description":"Resize preview image width, Pass an integer between 0 to 4000.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 4000.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"gravity","description":"Image crop gravity. Can be one of center,top-left,top,top-right,left,right,bottom-left,bottom,bottom-right","required":false,"schema":{"type":"string","x-example":"center","enum":["center","top-left","top","top-right","left","right","bottom-left","bottom","bottom-right"],"x-enum-name":"ImageGravity","x-enum-keys":[],"default":"center"},"in":"query"},{"name":"quality","description":"Preview image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"borderWidth","description":"Preview image border in pixels. Pass an integer between 0 to 100. Defaults to 0.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"borderColor","description":"Preview image border color. Use a valid HEX color, no # is needed for prefix.","required":false,"schema":{"type":"string","default":""},"in":"query"},{"name":"borderRadius","description":"Preview image border radius in pixels. Pass an integer between 0 to 4000.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"opacity","description":"Preview image opacity. Only works with images having an alpha channel (like png). Pass a number between 0 to 1.","required":false,"schema":{"type":"number","format":"float","x-example":0,"default":1},"in":"query"},{"name":"rotation","description":"Preview image rotation in degrees. Pass an integer between -360 and 360.","required":false,"schema":{"type":"integer","format":"int32","x-example":-360,"default":0},"in":"query"},{"name":"background","description":"Preview image background color. Only works with transparent images (png). Use a valid HEX color, no # is needed for prefix.","required":false,"schema":{"type":"string","default":""},"in":"query"},{"name":"output","description":"Output format type (jpeg, jpg, png, gif and webp).","required":false,"schema":{"type":"string","x-example":"jpg","enum":["jpg","jpeg","gif","png","webp"],"x-enum-name":"ImageFormat","x-enum-keys":[],"default":""},"in":"query"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/view":{"get":{"summary":"Get file for view","operationId":"storageGetFileView","tags":["storage"],"description":"Get a file content by its unique ID. This endpoint is similar to the download method but returns with no 'Content-Disposition: attachment' header.","responses":{"200":{"description":"File"}},"x-appwrite":{"method":"getFileView","weight":197,"cookies":false,"type":"location","demo":"storage\/get-file-view.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-view.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File ID.","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"}]}},"\/storage\/usage":{"get":{"summary":"Get usage stats for storage","operationId":"storageGetUsage","tags":["storage"],"description":"","responses":{"200":{"description":"StorageUsage","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageStorage"}}}}},"x-appwrite":{"method":"getUsage","weight":200,"cookies":false,"type":"","demo":"storage\/get-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"schema":{"type":"string","x-example":"24h","enum":["24h","30d","90d"],"x-enum-name":"StorageUsageRange","x-enum-keys":["Twenty Four Hours","Thirty Days","Ninety Days"],"default":"30d"},"in":"query"}]}},"\/storage\/{bucketId}\/usage":{"get":{"summary":"Get usage stats for storage bucket","operationId":"storageGetBucketUsage","tags":["storage"],"description":"","responses":{"200":{"description":"UsageBuckets","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageBuckets"}}}}},"x-appwrite":{"method":"getBucketUsage","weight":201,"cookies":false,"type":"","demo":"storage\/get-bucket-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"bucketId","description":"Bucket ID.","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"range","description":"Date range.","required":false,"schema":{"type":"string","x-example":"24h","enum":["24h","30d","90d"],"x-enum-name":"StorageUsageRange","x-enum-keys":["Twenty Four Hours","Thirty Days","Ninety Days"],"default":"30d"},"in":"query"}]}},"\/teams":{"get":{"summary":"List teams","operationId":"teamsList","tags":["teams"],"description":"Get a list of all the teams in which the current user is a member. You can use the parameters to filter your results.","responses":{"200":{"description":"Teams List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/teamList"}}}}},"x-appwrite":{"method":"list","weight":203,"cookies":false,"type":"","demo":"teams\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-teams.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total, billingPlan","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create team","operationId":"teamsCreate","tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"create","weight":202,"cookies":false,"type":"","demo":"teams\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/create-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"teamId":{"type":"string","description":"Team ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[TEAM_ID]"},"name":{"type":"string","description":"Team name. Max length: 128 chars.","x-example":"[NAME]"},"roles":{"type":"array","description":"Array of strings. Use this param to set the roles in the team for the user who created it. The default role is **owner**. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}}}}},"\/teams\/{teamId}":{"get":{"summary":"Get team","operationId":"teamsGet","tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"get","weight":204,"cookies":false,"type":"","demo":"teams\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams","offline-key":"{teamId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}]},"put":{"summary":"Update name","operationId":"teamsUpdateName","tags":["teams"],"description":"Update the team's name by its unique ID.","responses":{"200":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"updateName","weight":206,"cookies":false,"type":"","demo":"teams\/update-name.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-name.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams","offline-key":"{teamId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"New team name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["name"]}}}}},"delete":{"summary":"Delete team","operationId":"teamsDelete","tags":["teams"],"description":"Delete a team using its ID. Only team members with the owner role can delete the team.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":208,"cookies":false,"type":"","demo":"teams\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/delete-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}]}},"\/teams\/{teamId}\/logs":{"get":{"summary":"List team logs","operationId":"teamsListLogs","tags":["teams"],"description":"Get the team activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listLogs","weight":215,"cookies":false,"type":"","demo":"teams\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/teams\/{teamId}\/memberships":{"get":{"summary":"List team memberships","operationId":"teamsListMemberships","tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"listMemberships","weight":210,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/memberships","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create team membership","operationId":"teamsCreateMembership","tags":["teams"],"description":"Invite a new member to join your team. Provide an ID for existing users, or invite unregistered users using an email or phone number. If initiated from a Client SDK, Appwrite will send an email or sms with a link to join the team to the invited user, and an account will be created for them if one doesn't exist. If initiated from a Server SDK, the new member will be added automatically to the team.\n\nYou only need to provide one of a user ID, email, or phone number. Appwrite will prioritize accepting the user ID > email > phone number if you provide more than one of these parameters.\n\nUse the `url` parameter to redirect the user from the invitation email to your app. After the user is redirected, use the [Update Team Membership Status](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/teams#updateMembershipStatus) endpoint to allow the user to accept the invitation to the team. \n\nPlease note that to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) Appwrite will accept the only redirect URLs under the domains you have added as a platform on the Appwrite Console.\n","responses":{"201":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"createMembership","weight":209,"cookies":false,"type":"","demo":"teams\/create-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/create-team-membership.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"email":{"type":"string","description":"Email of the new team member.","x-example":"email@example.com"},"userId":{"type":"string","description":"ID of the user to be added to a team.","x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"roles":{"type":"array","description":"Array of strings. Use this param to set the user roles in the team. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"},"name":{"type":"string","description":"Name of the new team member. Max length: 128 chars.","x-example":"[NAME]"}},"required":["roles"]}}}}}},"\/teams\/{teamId}\/memberships\/{membershipId}":{"get":{"summary":"Get team membership","operationId":"teamsGetMembership","tags":["teams"],"description":"Get a team member by the membership unique id. All team members have read access for this resource.","responses":{"200":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"getMembership","weight":211,"cookies":false,"type":"","demo":"teams\/get-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-member.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/memberships","offline-key":"{membershipId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"schema":{"type":"string","x-example":"[MEMBERSHIP_ID]"},"in":"path"}]},"patch":{"summary":"Update membership","operationId":"teamsUpdateMembership","tags":["teams"],"description":"Modify the roles of a team member. Only team members with the owner role have access to this endpoint. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions).\n","responses":{"200":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"updateMembership","weight":212,"cookies":false,"type":"","demo":"teams\/update-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"schema":{"type":"string","x-example":"[MEMBERSHIP_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"roles":{"type":"array","description":"An array of strings. Use this param to set the user's roles in the team. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["roles"]}}}}},"delete":{"summary":"Delete team membership","operationId":"teamsDeleteMembership","tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":214,"cookies":false,"type":"","demo":"teams\/delete-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/delete-team-membership.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"schema":{"type":"string","x-example":"[MEMBERSHIP_ID]"},"in":"path"}]}},"\/teams\/{teamId}\/memberships\/{membershipId}\/status":{"patch":{"summary":"Update team membership status","operationId":"teamsUpdateMembershipStatus","tags":["teams"],"description":"Use this endpoint to allow a user to accept an invitation to join a team after being redirected back to your app from the invitation email received by the user.\n\nIf the request is successful, a session for the user is automatically created.\n","responses":{"200":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"updateMembershipStatus","weight":213,"cookies":false,"type":"","demo":"teams\/update-membership-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"public","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"schema":{"type":"string","x-example":"[MEMBERSHIP_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Secret key.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/teams\/{teamId}\/prefs":{"get":{"summary":"Get team preferences","operationId":"teamsGetPrefs","tags":["teams"],"description":"Get the team's shared preferences by its unique ID. If a preference doesn't need to be shared by all team members, prefer storing them in [user preferences](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#getPrefs).","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"getPrefs","weight":205,"cookies":false,"type":"","demo":"teams\/get-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/prefs","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}]},"put":{"summary":"Update preferences","operationId":"teamsUpdatePrefs","tags":["teams"],"description":"Update the team's preferences by its unique ID. The object you pass is stored as is and replaces any previous value. The maximum allowed prefs size is 64kB and throws an error if exceeded.","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"updatePrefs","weight":207,"cookies":false,"type":"","demo":"teams\/update-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/prefs","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"prefs":{"type":"object","description":"Prefs key-value JSON object.","x-example":"{}"}},"required":["prefs"]}}}}}},"\/users":{"get":{"summary":"List users","operationId":"usersList","tags":["users"],"description":"Get a list of all the project's users. You can use the query params to filter your results.","responses":{"200":{"description":"Users List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/userList"}}}}},"x-appwrite":{"method":"list","weight":225,"cookies":false,"type":"","demo":"users\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-users.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, email, phone, status, passwordUpdate, registration, emailVerification, phoneVerification, labels","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create user","operationId":"usersCreate","tags":["users"],"description":"Create a new user.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"create","weight":216,"cookies":false,"type":"","demo":"users\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"password":{"type":"string","description":"Plain text user password. Must be at least 8 chars.","x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId"]}}}}}},"\/users\/argon2":{"post":{"summary":"Create user with Argon2 password","operationId":"usersCreateArgon2User","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Argon2](https:\/\/en.wikipedia.org\/wiki\/Argon2) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createArgon2User","weight":219,"cookies":false,"type":"","demo":"users\/create-argon2user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-argon2-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Argon2.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/bcrypt":{"post":{"summary":"Create user with bcrypt password","operationId":"usersCreateBcryptUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Bcrypt](https:\/\/en.wikipedia.org\/wiki\/Bcrypt) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createBcryptUser","weight":217,"cookies":false,"type":"","demo":"users\/create-bcrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-bcrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Bcrypt.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/identities":{"get":{"summary":"List Identities","operationId":"usersListIdentities","tags":["users"],"description":"Get identities for all users.","responses":{"200":{"description":"Identities List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/identityList"}}}}},"x-appwrite":{"method":"listIdentities","weight":233,"cookies":false,"type":"","demo":"users\/list-identities.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-identities.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, provider, providerUid, providerEmail, providerAccessTokenExpiry","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]}},"\/users\/identities\/{identityId}":{"delete":{"summary":"Delete identity","operationId":"usersDeleteIdentity","tags":["users"],"description":"Delete an identity by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIdentity","weight":253,"cookies":false,"type":"","demo":"users\/delete-identity.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-identity.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"identityId","description":"Identity ID.","required":true,"schema":{"type":"string","x-example":"[IDENTITY_ID]"},"in":"path"}]}},"\/users\/md5":{"post":{"summary":"Create user with MD5 password","operationId":"usersCreateMD5User","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [MD5](https:\/\/en.wikipedia.org\/wiki\/MD5) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createMD5User","weight":218,"cookies":false,"type":"","demo":"users\/create-m-d5user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-md5-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using MD5.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/phpass":{"post":{"summary":"Create user with PHPass password","operationId":"usersCreatePHPassUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [PHPass](https:\/\/www.openwall.com\/phpass\/) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createPHPassUser","weight":221,"cookies":false,"type":"","demo":"users\/create-p-h-pass-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-phpass-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or pass the string `ID.unique()`to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using PHPass.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/scrypt":{"post":{"summary":"Create user with Scrypt password","operationId":"usersCreateScryptUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt](https:\/\/github.com\/Tarsnap\/scrypt) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createScryptUser","weight":222,"cookies":false,"type":"","demo":"users\/create-scrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt.","x-example":"password"},"passwordSalt":{"type":"string","description":"Optional salt used to hash password.","x-example":"[PASSWORD_SALT]"},"passwordCpu":{"type":"integer","description":"Optional CPU cost used to hash password.","x-example":null},"passwordMemory":{"type":"integer","description":"Optional memory cost used to hash password.","x-example":null},"passwordParallel":{"type":"integer","description":"Optional parallelization cost used to hash password.","x-example":null},"passwordLength":{"type":"integer","description":"Optional hash length used to hash password.","x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordCpu","passwordMemory","passwordParallel","passwordLength"]}}}}}},"\/users\/scrypt-modified":{"post":{"summary":"Create user with Scrypt modified password","operationId":"usersCreateScryptModifiedUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt Modified](https:\/\/gist.github.com\/Meldiron\/eecf84a0225eccb5a378d45bb27462cc) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createScryptModifiedUser","weight":223,"cookies":false,"type":"","demo":"users\/create-scrypt-modified-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-modified-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt Modified.","x-example":"password"},"passwordSalt":{"type":"string","description":"Salt used to hash password.","x-example":"[PASSWORD_SALT]"},"passwordSaltSeparator":{"type":"string","description":"Salt separator used to hash password.","x-example":"[PASSWORD_SALT_SEPARATOR]"},"passwordSignerKey":{"type":"string","description":"Signer key used to hash password.","x-example":"[PASSWORD_SIGNER_KEY]"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordSaltSeparator","passwordSignerKey"]}}}}}},"\/users\/sha":{"post":{"summary":"Create user with SHA password","operationId":"usersCreateSHAUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [SHA](https:\/\/en.wikipedia.org\/wiki\/Secure_Hash_Algorithm) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createSHAUser","weight":220,"cookies":false,"type":"","demo":"users\/create-s-h-a-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-sha-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using SHA.","x-example":"password"},"passwordVersion":{"type":"string","description":"Optional SHA version used to hash password. Allowed values are: 'sha1', 'sha224', 'sha256', 'sha384', 'sha512\/224', 'sha512\/256', 'sha512', 'sha3-224', 'sha3-256', 'sha3-384', 'sha3-512'","x-example":"sha1","enum":["sha1","sha224","sha256","sha384","sha512\/224","sha512\/256","sha512","sha3-224","sha3-256","sha3-384","sha3-512"],"x-enum-name":"PasswordHash","x-enum-keys":[]},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/usage":{"get":{"summary":"Get usage stats for the users API","operationId":"usersGetUsage","tags":["users"],"description":"","responses":{"200":{"description":"UsageUsers","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageUsers"}}}}},"x-appwrite":{"method":"getUsage","weight":254,"cookies":false,"type":"","demo":"users\/get-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"schema":{"type":"string","x-example":"24h","enum":["24h","30d","90d"],"x-enum-name":"UserUsageRange","x-enum-keys":["Twenty Four Hours","Thirty Days","Ninety Days"],"default":"30d"},"in":"query"}]}},"\/users\/{userId}":{"get":{"summary":"Get user","operationId":"usersGet","tags":["users"],"description":"Get a user by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"get","weight":226,"cookies":false,"type":"","demo":"users\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]},"delete":{"summary":"Delete user","operationId":"usersDelete","tags":["users"],"description":"Delete a user by its unique ID, thereby releasing it's ID. Since ID is released and can be reused, all user-related resources like documents or storage files should be deleted before user deletion. If you want to keep ID reserved, use the [updateStatus](https:\/\/appwrite.io\/docs\/server\/users#usersUpdateStatus) endpoint instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":251,"cookies":false,"type":"","demo":"users\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]}},"\/users\/{userId}\/email":{"patch":{"summary":"Update email","operationId":"usersUpdateEmail","tags":["users"],"description":"Update the user email by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateEmail","weight":239,"cookies":false,"type":"","demo":"users\/update-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","x-example":"email@example.com"}},"required":["email"]}}}}}},"\/users\/{userId}\/labels":{"put":{"summary":"Update user labels","operationId":"usersUpdateLabels","tags":["users"],"description":"Update the user labels by its unique ID. \n\nLabels can be used to grant access to resources. While teams are a way for user's to share access to a resource, labels can be defined by the developer to grant access without an invitation. See the [Permissions docs](https:\/\/appwrite.io\/docs\/permissions) for more info.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateLabels","weight":235,"cookies":false,"type":"","demo":"users\/update-labels.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-labels.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"labels":{"type":"array","description":"Array of user labels. Replaces the previous labels. Maximum of 1000 labels are allowed, each up to 36 alphanumeric characters long.","x-example":null,"items":{"type":"string"}}},"required":["labels"]}}}}}},"\/users\/{userId}\/logs":{"get":{"summary":"List user logs","operationId":"usersListLogs","tags":["users"],"description":"Get the user activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listLogs","weight":231,"cookies":false,"type":"","demo":"users\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/users\/{userId}\/memberships":{"get":{"summary":"List user memberships","operationId":"usersListMemberships","tags":["users"],"description":"Get the user membership list by its unique ID.","responses":{"200":{"description":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"listMemberships","weight":230,"cookies":false,"type":"","demo":"users\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-memberships.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]}},"\/users\/{userId}\/mfa":{"patch":{"summary":"Update MFA","operationId":"usersUpdateMfa","tags":["users"],"description":"","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateMfa","weight":244,"cookies":false,"type":"","demo":"users\/update-mfa.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-mfa.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"mfa":{"type":"boolean","description":"Enable or disable MFA.","x-example":false}},"required":["mfa"]}}}}}},"\/users\/{userId}\/mfa\/factors":{"get":{"summary":"List Factors","operationId":"usersListFactors","tags":["users"],"description":"","responses":{"200":{"description":"MFAFactors","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/mfaFactors"}}}}},"x-appwrite":{"method":"listFactors","weight":245,"cookies":false,"type":"","demo":"users\/list-factors.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-factors.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]}},"\/users\/{userId}\/mfa\/{type}":{"delete":{"summary":"Delete Authenticator","operationId":"usersDeleteAuthenticator","tags":["users"],"description":"","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"deleteAuthenticator","weight":246,"cookies":false,"type":"","demo":"users\/delete-authenticator.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-mfa.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"type","description":"Type of authenticator.","required":true,"schema":{"type":"string","x-example":"totp","enum":["totp"],"x-enum-name":null,"x-enum-keys":[]},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"otp":{"type":"string","description":"Valid verification token.","x-example":"[OTP]"}},"required":["otp"]}}}}}},"\/users\/{userId}\/name":{"patch":{"summary":"Update name","operationId":"usersUpdateName","tags":["users"],"description":"Update the user name by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateName","weight":237,"cookies":false,"type":"","demo":"users\/update-name.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-name.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["name"]}}}}}},"\/users\/{userId}\/password":{"patch":{"summary":"Update password","operationId":"usersUpdatePassword","tags":["users"],"description":"Update the user password by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePassword","weight":238,"cookies":false,"type":"","demo":"users\/update-password.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-password.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"password":{"type":"string","description":"New user password. Must be at least 8 chars.","x-example":null}},"required":["password"]}}}}}},"\/users\/{userId}\/phone":{"patch":{"summary":"Update phone","operationId":"usersUpdatePhone","tags":["users"],"description":"Update the user phone by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePhone","weight":240,"cookies":false,"type":"","demo":"users\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"number":{"type":"string","description":"User phone number.","x-example":"+12065550100"}},"required":["number"]}}}}}},"\/users\/{userId}\/prefs":{"get":{"summary":"Get user preferences","operationId":"usersGetPrefs","tags":["users"],"description":"Get the user preferences by its unique ID.","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"getPrefs","weight":227,"cookies":false,"type":"","demo":"users\/get-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]},"patch":{"summary":"Update user preferences","operationId":"usersUpdatePrefs","tags":["users"],"description":"Update the user preferences by its unique ID. The object you pass is stored as is, and replaces any previous value. The maximum allowed prefs size is 64kB and throws error if exceeded.","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"updatePrefs","weight":242,"cookies":false,"type":"","demo":"users\/update-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"prefs":{"type":"object","description":"Prefs key-value JSON object.","x-example":"{}"}},"required":["prefs"]}}}}}},"\/users\/{userId}\/sessions":{"get":{"summary":"List user sessions","operationId":"usersListSessions","tags":["users"],"description":"Get the user sessions list by its unique ID.","responses":{"200":{"description":"Sessions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/sessionList"}}}}},"x-appwrite":{"method":"listSessions","weight":229,"cookies":false,"type":"","demo":"users\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]},"post":{"summary":"Create session","operationId":"usersCreateSession","tags":["users"],"description":"Creates a session for a user. Returns an immediately usable session object.\n\nIf you want to generate a token for a custom authentication flow, use the [POST \/users\/{userId}\/tokens](https:\/\/appwrite.io\/docs\/server\/users#createToken) endpoint.","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"createSession","weight":247,"cookies":false,"type":"","demo":"users\/create-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-session.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]},"delete":{"summary":"Delete user sessions","operationId":"usersDeleteSessions","tags":["users"],"description":"Delete all user's sessions by using the user's unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":250,"cookies":false,"type":"","demo":"users\/delete-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]}},"\/users\/{userId}\/sessions\/{sessionId}":{"delete":{"summary":"Delete user session","operationId":"usersDeleteSession","tags":["users"],"description":"Delete a user sessions by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSession","weight":249,"cookies":false,"type":"","demo":"users\/delete-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-user-session.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"sessionId","description":"Session ID.","required":true,"schema":{"type":"string","x-example":"[SESSION_ID]"},"in":"path"}]}},"\/users\/{userId}\/status":{"patch":{"summary":"Update user status","operationId":"usersUpdateStatus","tags":["users"],"description":"Update the user status by its unique ID. Use this endpoint as an alternative to deleting a user if you want to keep user's ID reserved.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateStatus","weight":234,"cookies":false,"type":"","demo":"users\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"status":{"type":"boolean","description":"User Status. To activate the user pass `true` and to block the user pass `false`.","x-example":false}},"required":["status"]}}}}}},"\/users\/{userId}\/targets":{"get":{"summary":"List User Targets","operationId":"usersListTargets","tags":["users"],"description":"","responses":{"200":{"description":"Target list","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/targetList"}}}}},"x-appwrite":{"method":"listTargets","weight":232,"cookies":false,"type":"","demo":"users\/list-targets.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-targets.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.read","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, email, phone, status, passwordUpdate, registration, emailVerification, phoneVerification, labels","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"post":{"summary":"Create User Target","operationId":"usersCreateTarget","tags":["users"],"description":"","responses":{"201":{"description":"Target","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/target"}}}}},"x-appwrite":{"method":"createTarget","weight":224,"cookies":false,"type":"","demo":"users\/create-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-target.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"targetId":{"type":"string","description":"Target ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[TARGET_ID]"},"providerType":{"type":"string","description":"The target provider type. Can be one of the following: `email`, `sms` or `push`.","x-example":"email","enum":["email","sms","push"],"x-enum-name":"MessagingProviderType","x-enum-keys":[]},"identifier":{"type":"string","description":"The target identifier (token, email, phone etc.)","x-example":"[IDENTIFIER]"},"providerId":{"type":"string","description":"Provider ID. Message will be sent to this target from the specified provider ID. If no provider ID is set the first setup provider will be used.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Target name. Max length: 128 chars. For example: My Awesome App Galaxy S23.","x-example":"[NAME]"}},"required":["targetId","providerType","identifier"]}}}}}},"\/users\/{userId}\/targets\/{targetId}":{"get":{"summary":"Get User Target","operationId":"usersGetTarget","tags":["users"],"description":"","responses":{"200":{"description":"Target","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/target"}}}}},"x-appwrite":{"method":"getTarget","weight":228,"cookies":false,"type":"","demo":"users\/get-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-target.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.read","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"targetId","description":"Target ID.","required":true,"schema":{"type":"string","x-example":"[TARGET_ID]"},"in":"path"}]},"patch":{"summary":"Update User target","operationId":"usersUpdateTarget","tags":["users"],"description":"","responses":{"200":{"description":"Target","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/target"}}}}},"x-appwrite":{"method":"updateTarget","weight":243,"cookies":false,"type":"","demo":"users\/update-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-target.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"targetId","description":"Target ID.","required":true,"schema":{"type":"string","x-example":"[TARGET_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"identifier":{"type":"string","description":"The target identifier (token, email, phone etc.)","x-example":"[IDENTIFIER]"},"providerId":{"type":"string","description":"Provider ID. Message will be sent to this target from the specified provider ID. If no provider ID is set the first setup provider will be used.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Target name. Max length: 128 chars. For example: My Awesome App Galaxy S23.","x-example":"[NAME]"}}}}}}},"delete":{"summary":"Delete user target","operationId":"usersDeleteTarget","tags":["users"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteTarget","weight":252,"cookies":false,"type":"","demo":"users\/delete-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-target.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"targetId","description":"Target ID.","required":true,"schema":{"type":"string","x-example":"[TARGET_ID]"},"in":"path"}]}},"\/users\/{userId}\/tokens":{"post":{"summary":"Create token","operationId":"usersCreateToken","tags":["users"],"description":"Returns a token with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [PUT \/account\/sessions\/custom](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateCustomSession) endpoint to complete the login process.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createToken","weight":248,"cookies":false,"type":"","demo":"users\/create-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-token.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"length":{"type":"integer","description":"Token length in characters. The default length is 6 characters","x-example":4},"expire":{"type":"integer","description":"Token expiration period in seconds. The default expiration is 15 minutes.","x-example":60}}}}}}}},"\/users\/{userId}\/verification":{"patch":{"summary":"Update email verification","operationId":"usersUpdateEmailVerification","tags":["users"],"description":"Update the user email verification status by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateEmailVerification","weight":241,"cookies":false,"type":"","demo":"users\/update-email-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-email-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"emailVerification":{"type":"boolean","description":"User email verification status.","x-example":false}},"required":["emailVerification"]}}}}}},"\/users\/{userId}\/verification\/phone":{"patch":{"summary":"Update phone verification","operationId":"usersUpdatePhoneVerification","tags":["users"],"description":"Update the user phone verification status by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePhoneVerification","weight":236,"cookies":false,"type":"","demo":"users\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"phoneVerification":{"type":"boolean","description":"User phone verification status.","x-example":false}},"required":["phoneVerification"]}}}}}},"\/vcs\/github\/installations\/{installationId}\/providerRepositories":{"get":{"summary":"List Repositories","operationId":"vcsListRepositories","tags":["vcs"],"description":"","responses":{"200":{"description":"Provider Repositories List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/providerRepositoryList"}}}}},"x-appwrite":{"method":"listRepositories","weight":258,"cookies":false,"type":"","demo":"vcs\/list-repositories.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"schema":{"type":"string","x-example":"[INSTALLATION_ID]"},"in":"path"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create repository","operationId":"vcsCreateRepository","tags":["vcs"],"description":"","responses":{"200":{"description":"ProviderRepository","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/providerRepository"}}}}},"x-appwrite":{"method":"createRepository","weight":259,"cookies":false,"type":"","demo":"vcs\/create-repository.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"schema":{"type":"string","x-example":"[INSTALLATION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Repository name (slug)","x-example":"[NAME]"},"private":{"type":"boolean","description":"Mark repository public or private","x-example":false}},"required":["name","private"]}}}}}},"\/vcs\/github\/installations\/{installationId}\/providerRepositories\/{providerRepositoryId}":{"get":{"summary":"Get repository","operationId":"vcsGetRepository","tags":["vcs"],"description":"","responses":{"200":{"description":"ProviderRepository","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/providerRepository"}}}}},"x-appwrite":{"method":"getRepository","weight":260,"cookies":false,"type":"","demo":"vcs\/get-repository.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"schema":{"type":"string","x-example":"[INSTALLATION_ID]"},"in":"path"},{"name":"providerRepositoryId","description":"Repository Id","required":true,"schema":{"type":"string","x-example":"[PROVIDER_REPOSITORY_ID]"},"in":"path"}]}},"\/vcs\/github\/installations\/{installationId}\/providerRepositories\/{providerRepositoryId}\/branches":{"get":{"summary":"List Repository Branches","operationId":"vcsListRepositoryBranches","tags":["vcs"],"description":"","responses":{"200":{"description":"Branches List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/branchList"}}}}},"x-appwrite":{"method":"listRepositoryBranches","weight":261,"cookies":false,"type":"","demo":"vcs\/list-repository-branches.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"schema":{"type":"string","x-example":"[INSTALLATION_ID]"},"in":"path"},{"name":"providerRepositoryId","description":"Repository Id","required":true,"schema":{"type":"string","x-example":"[PROVIDER_REPOSITORY_ID]"},"in":"path"}]}},"\/vcs\/github\/installations\/{installationId}\/providerRepositories\/{providerRepositoryId}\/detection":{"post":{"summary":"Detect runtime settings from source code","operationId":"vcsCreateRepositoryDetection","tags":["vcs"],"description":"","responses":{"200":{"description":"Detection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/detection"}}}}},"x-appwrite":{"method":"createRepositoryDetection","weight":257,"cookies":false,"type":"","demo":"vcs\/create-repository-detection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"schema":{"type":"string","x-example":"[INSTALLATION_ID]"},"in":"path"},{"name":"providerRepositoryId","description":"Repository Id","required":true,"schema":{"type":"string","x-example":"[PROVIDER_REPOSITORY_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerRootDirectory":{"type":"string","description":"Path to Root Directory","x-example":"[PROVIDER_ROOT_DIRECTORY]"}}}}}}}},"\/vcs\/github\/installations\/{installationId}\/repositories\/{repositoryId}":{"patch":{"summary":"Authorize external deployment","operationId":"vcsUpdateExternalDeployments","tags":["vcs"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"updateExternalDeployments","weight":266,"cookies":false,"type":"","demo":"vcs\/update-external-deployments.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"schema":{"type":"string","x-example":"[INSTALLATION_ID]"},"in":"path"},{"name":"repositoryId","description":"VCS Repository Id","required":true,"schema":{"type":"string","x-example":"[REPOSITORY_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerPullRequestId":{"type":"string","description":"GitHub Pull Request Id","x-example":"[PROVIDER_PULL_REQUEST_ID]"}},"required":["providerPullRequestId"]}}}}}},"\/vcs\/installations":{"get":{"summary":"List installations","operationId":"vcsListInstallations","tags":["vcs"],"description":"","responses":{"200":{"description":"Installations List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/installationList"}}}}},"x-appwrite":{"method":"listInstallations","weight":263,"cookies":false,"type":"","demo":"vcs\/list-installations.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/vcs\/list-installations.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: provider, organization","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]}},"\/vcs\/installations\/{installationId}":{"get":{"summary":"Get installation","operationId":"vcsGetInstallation","tags":["vcs"],"description":"","responses":{"200":{"description":"Installation","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/installation"}}}}},"x-appwrite":{"method":"getInstallation","weight":264,"cookies":false,"type":"","demo":"vcs\/get-installation.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/vcs\/get-installation.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"schema":{"type":"string","x-example":"[INSTALLATION_ID]"},"in":"path"}]},"delete":{"summary":"Delete Installation","operationId":"vcsDeleteInstallation","tags":["vcs"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteInstallation","weight":265,"cookies":false,"type":"","demo":"vcs\/delete-installation.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/vcs\/delete-installation.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"schema":{"type":"string","x-example":"[INSTALLATION_ID]"},"in":"path"}]}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"project","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]},{"name":"proxy","description":"The Proxy Service allows you to configure actions for your domains beyond DNS configuration.","x-globalAttributes":[]},{"name":"graphql","description":"The GraphQL API allows you to query and mutate your Appwrite server using GraphQL.","x-globalAttributes":[]},{"name":"console","description":"The Console service allows you to interact with console relevant informations.","x-globalAttributes":[]},{"name":"migrations","description":"The Migrations service allows you to migrate third-party data to your Appwrite project.","x-globalAttributes":[]},{"name":"messaging","description":"The Messaging service allows you to send messages to any provider type (SMTP, push notification, SMS, etc.).","x-globalAttributes":[]}],"components":{"schemas":{"any":{"description":"Any","type":"object","additionalProperties":true},"error":{"description":"Error","type":"object","properties":{"message":{"type":"string","description":"Error message.","x-example":"Not found"},"code":{"type":"string","description":"Error code.","x-example":"404"},"type":{"type":"string","description":"Error type. You can learn more about all the error types at https:\/\/appwrite.io\/docs\/error-codes#errorTypes","x-example":"not_found"},"version":{"type":"string","description":"Server version number.","x-example":"1.0"}},"required":["message","code","type","version"]},"documentList":{"description":"Documents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of documents documents that matched your query.","x-example":5,"format":"int32"},"documents":{"type":"array","description":"List of documents.","items":{"$ref":"#\/components\/schemas\/document"},"x-example":""}},"required":["total","documents"]},"collectionList":{"description":"Collections List","type":"object","properties":{"total":{"type":"integer","description":"Total number of collections documents that matched your query.","x-example":5,"format":"int32"},"collections":{"type":"array","description":"List of collections.","items":{"$ref":"#\/components\/schemas\/collection"},"x-example":""}},"required":["total","collections"]},"databaseList":{"description":"Databases List","type":"object","properties":{"total":{"type":"integer","description":"Total number of databases documents that matched your query.","x-example":5,"format":"int32"},"databases":{"type":"array","description":"List of databases.","items":{"$ref":"#\/components\/schemas\/database"},"x-example":""}},"required":["total","databases"]},"indexList":{"description":"Indexes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of indexes documents that matched your query.","x-example":5,"format":"int32"},"indexes":{"type":"array","description":"List of indexes.","items":{"$ref":"#\/components\/schemas\/index"},"x-example":""}},"required":["total","indexes"]},"userList":{"description":"Users List","type":"object","properties":{"total":{"type":"integer","description":"Total number of users documents that matched your query.","x-example":5,"format":"int32"},"users":{"type":"array","description":"List of users.","items":{"$ref":"#\/components\/schemas\/user"},"x-example":""}},"required":["total","users"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of sessions documents that matched your query.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"$ref":"#\/components\/schemas\/session"},"x-example":""}},"required":["total","sessions"]},"identityList":{"description":"Identities List","type":"object","properties":{"total":{"type":"integer","description":"Total number of identities documents that matched your query.","x-example":5,"format":"int32"},"identities":{"type":"array","description":"List of identities.","items":{"$ref":"#\/components\/schemas\/identity"},"x-example":""}},"required":["total","identities"]},"logList":{"description":"Logs List","type":"object","properties":{"total":{"type":"integer","description":"Total number of logs documents that matched your query.","x-example":5,"format":"int32"},"logs":{"type":"array","description":"List of logs.","items":{"$ref":"#\/components\/schemas\/log"},"x-example":""}},"required":["total","logs"]},"fileList":{"description":"Files List","type":"object","properties":{"total":{"type":"integer","description":"Total number of files documents that matched your query.","x-example":5,"format":"int32"},"files":{"type":"array","description":"List of files.","items":{"$ref":"#\/components\/schemas\/file"},"x-example":""}},"required":["total","files"]},"bucketList":{"description":"Buckets List","type":"object","properties":{"total":{"type":"integer","description":"Total number of buckets documents that matched your query.","x-example":5,"format":"int32"},"buckets":{"type":"array","description":"List of buckets.","items":{"$ref":"#\/components\/schemas\/bucket"},"x-example":""}},"required":["total","buckets"]},"teamList":{"description":"Teams List","type":"object","properties":{"total":{"type":"integer","description":"Total number of teams documents that matched your query.","x-example":5,"format":"int32"},"teams":{"type":"array","description":"List of teams.","items":{"$ref":"#\/components\/schemas\/team"},"x-example":""}},"required":["total","teams"]},"membershipList":{"description":"Memberships List","type":"object","properties":{"total":{"type":"integer","description":"Total number of memberships documents that matched your query.","x-example":5,"format":"int32"},"memberships":{"type":"array","description":"List of memberships.","items":{"$ref":"#\/components\/schemas\/membership"},"x-example":""}},"required":["total","memberships"]},"functionList":{"description":"Functions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of functions documents that matched your query.","x-example":5,"format":"int32"},"functions":{"type":"array","description":"List of functions.","items":{"$ref":"#\/components\/schemas\/function"},"x-example":""}},"required":["total","functions"]},"installationList":{"description":"Installations List","type":"object","properties":{"total":{"type":"integer","description":"Total number of installations documents that matched your query.","x-example":5,"format":"int32"},"installations":{"type":"array","description":"List of installations.","items":{"$ref":"#\/components\/schemas\/installation"},"x-example":""}},"required":["total","installations"]},"providerRepositoryList":{"description":"Provider Repositories List","type":"object","properties":{"total":{"type":"integer","description":"Total number of providerRepositories documents that matched your query.","x-example":5,"format":"int32"},"providerRepositories":{"type":"array","description":"List of providerRepositories.","items":{"$ref":"#\/components\/schemas\/providerRepository"},"x-example":""}},"required":["total","providerRepositories"]},"branchList":{"description":"Branches List","type":"object","properties":{"total":{"type":"integer","description":"Total number of branches documents that matched your query.","x-example":5,"format":"int32"},"branches":{"type":"array","description":"List of branches.","items":{"$ref":"#\/components\/schemas\/branch"},"x-example":""}},"required":["total","branches"]},"runtimeList":{"description":"Runtimes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of runtimes documents that matched your query.","x-example":5,"format":"int32"},"runtimes":{"type":"array","description":"List of runtimes.","items":{"$ref":"#\/components\/schemas\/runtime"},"x-example":""}},"required":["total","runtimes"]},"deploymentList":{"description":"Deployments List","type":"object","properties":{"total":{"type":"integer","description":"Total number of deployments documents that matched your query.","x-example":5,"format":"int32"},"deployments":{"type":"array","description":"List of deployments.","items":{"$ref":"#\/components\/schemas\/deployment"},"x-example":""}},"required":["total","deployments"]},"executionList":{"description":"Executions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of executions documents that matched your query.","x-example":5,"format":"int32"},"executions":{"type":"array","description":"List of executions.","items":{"$ref":"#\/components\/schemas\/execution"},"x-example":""}},"required":["total","executions"]},"projectList":{"description":"Projects List","type":"object","properties":{"total":{"type":"integer","description":"Total number of projects documents that matched your query.","x-example":5,"format":"int32"},"projects":{"type":"array","description":"List of projects.","items":{"$ref":"#\/components\/schemas\/project"},"x-example":""}},"required":["total","projects"]},"webhookList":{"description":"Webhooks List","type":"object","properties":{"total":{"type":"integer","description":"Total number of webhooks documents that matched your query.","x-example":5,"format":"int32"},"webhooks":{"type":"array","description":"List of webhooks.","items":{"$ref":"#\/components\/schemas\/webhook"},"x-example":""}},"required":["total","webhooks"]},"keyList":{"description":"API Keys List","type":"object","properties":{"total":{"type":"integer","description":"Total number of keys documents that matched your query.","x-example":5,"format":"int32"},"keys":{"type":"array","description":"List of keys.","items":{"$ref":"#\/components\/schemas\/key"},"x-example":""}},"required":["total","keys"]},"platformList":{"description":"Platforms List","type":"object","properties":{"total":{"type":"integer","description":"Total number of platforms documents that matched your query.","x-example":5,"format":"int32"},"platforms":{"type":"array","description":"List of platforms.","items":{"$ref":"#\/components\/schemas\/platform"},"x-example":""}},"required":["total","platforms"]},"countryList":{"description":"Countries List","type":"object","properties":{"total":{"type":"integer","description":"Total number of countries documents that matched your query.","x-example":5,"format":"int32"},"countries":{"type":"array","description":"List of countries.","items":{"$ref":"#\/components\/schemas\/country"},"x-example":""}},"required":["total","countries"]},"continentList":{"description":"Continents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of continents documents that matched your query.","x-example":5,"format":"int32"},"continents":{"type":"array","description":"List of continents.","items":{"$ref":"#\/components\/schemas\/continent"},"x-example":""}},"required":["total","continents"]},"languageList":{"description":"Languages List","type":"object","properties":{"total":{"type":"integer","description":"Total number of languages documents that matched your query.","x-example":5,"format":"int32"},"languages":{"type":"array","description":"List of languages.","items":{"$ref":"#\/components\/schemas\/language"},"x-example":""}},"required":["total","languages"]},"currencyList":{"description":"Currencies List","type":"object","properties":{"total":{"type":"integer","description":"Total number of currencies documents that matched your query.","x-example":5,"format":"int32"},"currencies":{"type":"array","description":"List of currencies.","items":{"$ref":"#\/components\/schemas\/currency"},"x-example":""}},"required":["total","currencies"]},"phoneList":{"description":"Phones List","type":"object","properties":{"total":{"type":"integer","description":"Total number of phones documents that matched your query.","x-example":5,"format":"int32"},"phones":{"type":"array","description":"List of phones.","items":{"$ref":"#\/components\/schemas\/phone"},"x-example":""}},"required":["total","phones"]},"variableList":{"description":"Variables List","type":"object","properties":{"total":{"type":"integer","description":"Total number of variables documents that matched your query.","x-example":5,"format":"int32"},"variables":{"type":"array","description":"List of variables.","items":{"$ref":"#\/components\/schemas\/variable"},"x-example":""}},"required":["total","variables"]},"proxyRuleList":{"description":"Rule List","type":"object","properties":{"total":{"type":"integer","description":"Total number of rules documents that matched your query.","x-example":5,"format":"int32"},"rules":{"type":"array","description":"List of rules.","items":{"$ref":"#\/components\/schemas\/proxyRule"},"x-example":""}},"required":["total","rules"]},"localeCodeList":{"description":"Locale codes list","type":"object","properties":{"total":{"type":"integer","description":"Total number of localeCodes documents that matched your query.","x-example":5,"format":"int32"},"localeCodes":{"type":"array","description":"List of localeCodes.","items":{"$ref":"#\/components\/schemas\/localeCode"},"x-example":""}},"required":["total","localeCodes"]},"providerList":{"description":"Provider list","type":"object","properties":{"total":{"type":"integer","description":"Total number of providers documents that matched your query.","x-example":5,"format":"int32"},"providers":{"type":"array","description":"List of providers.","items":{"$ref":"#\/components\/schemas\/provider"},"x-example":""}},"required":["total","providers"]},"messageList":{"description":"Message list","type":"object","properties":{"total":{"type":"integer","description":"Total number of messages documents that matched your query.","x-example":5,"format":"int32"},"messages":{"type":"array","description":"List of messages.","items":{"$ref":"#\/components\/schemas\/message"},"x-example":""}},"required":["total","messages"]},"topicList":{"description":"Topic list","type":"object","properties":{"total":{"type":"integer","description":"Total number of topics documents that matched your query.","x-example":5,"format":"int32"},"topics":{"type":"array","description":"List of topics.","items":{"$ref":"#\/components\/schemas\/topic"},"x-example":""}},"required":["total","topics"]},"subscriberList":{"description":"Subscriber list","type":"object","properties":{"total":{"type":"integer","description":"Total number of subscribers documents that matched your query.","x-example":5,"format":"int32"},"subscribers":{"type":"array","description":"List of subscribers.","items":{"$ref":"#\/components\/schemas\/subscriber"},"x-example":""}},"required":["total","subscribers"]},"targetList":{"description":"Target list","type":"object","properties":{"total":{"type":"integer","description":"Total number of targets documents that matched your query.","x-example":5,"format":"int32"},"targets":{"type":"array","description":"List of targets.","items":{"$ref":"#\/components\/schemas\/target"},"x-example":""}},"required":["total","targets"]},"migrationList":{"description":"Migrations List","type":"object","properties":{"total":{"type":"integer","description":"Total number of migrations documents that matched your query.","x-example":5,"format":"int32"},"migrations":{"type":"array","description":"List of migrations.","items":{"$ref":"#\/components\/schemas\/migration"},"x-example":""}},"required":["total","migrations"]},"firebaseProjectList":{"description":"Migrations Firebase Projects List","type":"object","properties":{"total":{"type":"integer","description":"Total number of projects documents that matched your query.","x-example":5,"format":"int32"},"projects":{"type":"array","description":"List of projects.","items":{"$ref":"#\/components\/schemas\/firebaseProject"},"x-example":""}},"required":["total","projects"]},"database":{"description":"Database","type":"object","properties":{"$id":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Database name.","x-example":"My Database"},"$createdAt":{"type":"string","description":"Database creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Database update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"enabled":{"type":"boolean","description":"If database is enabled. Can be 'enabled' or 'disabled'. When disabled, the database is inaccessible to users, but remains accessible to Server SDKs using API keys.","x-example":false}},"required":["$id","name","$createdAt","$updatedAt","enabled"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Collection creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Collection update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Collection permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled. Can be 'enabled' or 'disabled'. When disabled, the collection is inaccessible to users, but remains accessible to Server SDKs using API keys.","x-example":false},"documentSecurity":{"type":"boolean","description":"Whether document-level permissions are enabled. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":true},"attributes":{"type":"array","description":"Collection attributes.","items":{"anyOf":[{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeRelationship"},{"$ref":"#\/components\/schemas\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"$ref":"#\/components\/schemas\/index"},"x-example":{}}},"required":["$id","$createdAt","$updatedAt","$permissions","databaseId","name","enabled","documentSecurity","attributes","indexes"]},"attributeList":{"description":"Attributes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of attributes in the given collection.","x-example":5,"format":"int32"},"attributes":{"type":"array","description":"List of attributes.","items":{"anyOf":[{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeRelationship"},{"$ref":"#\/components\/schemas\/attributeString"}]},"x-example":""}},"required":["total","attributes"]},"attributeString":{"description":"AttributeString","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"fullName"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"size":{"type":"integer","description":"Attribute size.","x-example":128,"format":"int32"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"default","nullable":true}},"required":["key","type","status","error","required","size"]},"attributeInteger":{"description":"AttributeInteger","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"count"},"type":{"type":"string","description":"Attribute type.","x-example":"integer"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"min":{"type":"integer","description":"Minimum value to enforce for new documents.","x-example":1,"format":"int32","nullable":true},"max":{"type":"integer","description":"Maximum value to enforce for new documents.","x-example":10,"format":"int32","nullable":true},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":10,"format":"int32","nullable":true}},"required":["key","type","status","error","required"]},"attributeFloat":{"description":"AttributeFloat","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"percentageCompleted"},"type":{"type":"string","description":"Attribute type.","x-example":"double"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"min":{"type":"number","description":"Minimum value to enforce for new documents.","x-example":1.5,"format":"double","nullable":true},"max":{"type":"number","description":"Maximum value to enforce for new documents.","x-example":10.5,"format":"double","nullable":true},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":2.5,"format":"double","nullable":true}},"required":["key","type","status","error","required"]},"attributeBoolean":{"description":"AttributeBoolean","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"isEnabled"},"type":{"type":"string","description":"Attribute type.","x-example":"boolean"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":false,"nullable":true}},"required":["key","type","status","error","required"]},"attributeEmail":{"description":"AttributeEmail","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"userEmail"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"format":{"type":"string","description":"String format.","x-example":"email"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"default@example.com","nullable":true}},"required":["key","type","status","error","required","format"]},"attributeEnum":{"description":"AttributeEnum","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"status"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"elements":{"type":"array","description":"Array of elements in enumerated type.","items":{"type":"string"},"x-example":"element"},"format":{"type":"string","description":"String format.","x-example":"enum"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"element","nullable":true}},"required":["key","type","status","error","required","elements","format"]},"attributeIp":{"description":"AttributeIP","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"ipAddress"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"format":{"type":"string","description":"String format.","x-example":"ip"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"192.0.2.0","nullable":true}},"required":["key","type","status","error","required","format"]},"attributeUrl":{"description":"AttributeURL","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"githubUrl"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"format":{"type":"string","description":"String format.","x-example":"url"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"http:\/\/example.com","nullable":true}},"required":["key","type","status","error","required","format"]},"attributeDatetime":{"description":"AttributeDatetime","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"birthDay"},"type":{"type":"string","description":"Attribute type.","x-example":"datetime"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"format":{"type":"string","description":"ISO 8601 format.","x-example":"datetime"},"default":{"type":"string","description":"Default value for attribute when not provided. Only null is optional","x-example":"2020-10-15T06:38:00.000+00:00","nullable":true}},"required":["key","type","status","error","required","format"]},"attributeRelationship":{"description":"AttributeRelationship","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"fullName"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"relatedCollection":{"type":"string","description":"The ID of the related collection.","x-example":"collection"},"relationType":{"type":"string","description":"The type of the relationship.","x-example":"oneToOne|oneToMany|manyToOne|manyToMany"},"twoWay":{"type":"boolean","description":"Is the relationship two-way?","x-example":false},"twoWayKey":{"type":"string","description":"The key of the two-way relationship.","x-example":"string"},"onDelete":{"type":"string","description":"How deleting the parent document will propagate to child documents.","x-example":"restrict|cascade|setNull"},"side":{"type":"string","description":"Whether this is the parent or child side of the relationship","x-example":"parent|child"}},"required":["key","type","status","error","required","relatedCollection","relationType","twoWay","twoWayKey","onDelete","side"]},"index":{"description":"Index","type":"object","properties":{"key":{"type":"string","description":"Index Key.","x-example":"index1"},"type":{"type":"string","description":"Index type.","x-example":"primary"},"status":{"type":"string","description":"Index status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an index.","x-example":"string"},"attributes":{"type":"array","description":"Index attributes.","items":{"type":"string"},"x-example":[]},"orders":{"type":"array","description":"Index orders.","items":{"type":"string"},"x-example":[],"nullable":true}},"required":["key","type","status","error","attributes"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"user":{"description":"User","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"password":{"type":"string","description":"Hashed user password.","x-example":"$argon2id$v=19$m=2048,t=4,p=3$aUZjLnliVWRINmFNTWMudg$5S+x+7uA31xFnrHFT47yFwcJeaP0w92L\/4LdgrVRXxE","nullable":true},"hash":{"type":"string","description":"Password hashing algorithm.","x-example":"argon2","nullable":true},"hashOptions":{"type":"object","description":"Password hashing algorithm configuration.","x-example":{},"items":{"oneOf":[{"$ref":"#\/components\/schemas\/algoArgon2"},{"$ref":"#\/components\/schemas\/algoScrypt"},{"$ref":"#\/components\/schemas\/algoScryptModified"},{"$ref":"#\/components\/schemas\/algoBcrypt"},{"$ref":"#\/components\/schemas\/algoPhpass"},{"$ref":"#\/components\/schemas\/algoSha"},{"$ref":"#\/components\/schemas\/algoMd5"}]},"nullable":true},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"labels":{"type":"array","description":"Labels for the user.","items":{"type":"string"},"x-example":["vip"]},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"mfa":{"type":"boolean","description":"Multi factor authentication status.","x-example":true},"totp":{"type":"boolean","description":"TOTP status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"$ref":"#\/components\/schemas\/preferences"}},"targets":{"type":"array","description":"A user-owned message receiver. A single user may have multiple e.g. emails, phones, and a browser. Each target is registered with a single provider.","items":{"$ref":"#\/components\/schemas\/target"},"x-example":[]},"accessedAt":{"type":"string","description":"Most recent access date in ISO 8601 format. This attribute is only updated again after 24 hours.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","$updatedAt","name","registration","status","labels","passwordUpdate","email","phone","emailVerification","phoneVerification","mfa","totp","prefs","targets","accessedAt"]},"algoMd5":{"description":"AlgoMD5","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"md5"}},"required":["type"]},"algoSha":{"description":"AlgoSHA","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"sha"}},"required":["type"]},"algoPhpass":{"description":"AlgoPHPass","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"phpass"}},"required":["type"]},"algoBcrypt":{"description":"AlgoBcrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"bcrypt"}},"required":["type"]},"algoScrypt":{"description":"AlgoScrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scrypt"},"costCpu":{"type":"integer","description":"CPU complexity of computed hash.","x-example":8,"format":"int32"},"costMemory":{"type":"integer","description":"Memory complexity of computed hash.","x-example":14,"format":"int32"},"costParallel":{"type":"integer","description":"Parallelization of computed hash.","x-example":1,"format":"int32"},"length":{"type":"integer","description":"Length used to compute hash.","x-example":64,"format":"int32"}},"required":["type","costCpu","costMemory","costParallel","length"]},"algoScryptModified":{"description":"AlgoScryptModified","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scryptMod"},"salt":{"type":"string","description":"Salt used to compute hash.","x-example":"UxLMreBr6tYyjQ=="},"saltSeparator":{"type":"string","description":"Separator used to compute hash.","x-example":"Bw=="},"signerKey":{"type":"string","description":"Key used to compute hash.","x-example":"XyEKE9RcTDeLEsL\/RjwPDBv\/RqDl8fb3gpYEOQaPihbxf1ZAtSOHCjuAAa7Q3oHpCYhXSN9tizHgVOwn6krflQ=="}},"required":["type","salt","saltSeparator","signerKey"]},"algoArgon2":{"description":"AlgoArgon2","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"argon2"},"memoryCost":{"type":"integer","description":"Memory used to compute hash.","x-example":65536,"format":"int32"},"timeCost":{"type":"integer","description":"Amount of time consumed to compute hash","x-example":4,"format":"int32"},"threads":{"type":"integer","description":"Number of threads used to compute hash.","x-example":3,"format":"int32"}},"required":["type","memoryCost","timeCost","threads"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true},"factors":{"type":"array","description":"Returns a list of active session factors.","items":{"type":"string"},"x-example":["email"]},"secret":{"type":"string","description":"Secret used to authenticate the user. Only included if the request was made with an API key","x-example":"5e5bb8c16897e"}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current","factors","secret"]},"identity":{"description":"Identity","type":"object","properties":{"$id":{"type":"string","description":"Identity ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Identity creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Identity update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"provider":{"type":"string","description":"Identity Provider.","x-example":"email"},"providerUid":{"type":"string","description":"ID of the User in the Identity Provider.","x-example":"5e5bb8c16897e"},"providerEmail":{"type":"string","description":"Email of the User in the Identity Provider.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Identity Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Identity Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"}},"required":["$id","$createdAt","$updatedAt","userId","provider","providerUid","providerEmail","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"phrase":{"type":"string","description":"Security phrase of a token. Empty if security phrase was not requested when creating a token. It includes randomly generated phrase which is also sent in the external resource such as email.","x-example":"Golden Fox"}},"required":["$id","$createdAt","userId","secret","expire","phrase"]},"jwt":{"description":"JWT","type":"object","properties":{"jwt":{"type":"string","description":"JWT encoded string.","x-example":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c"}},"required":["jwt"]},"locale":{"description":"Locale","type":"object","properties":{"ip":{"type":"string","description":"User IP address.","x-example":"127.0.0.1"},"countryCode":{"type":"string","description":"Country code in [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) two-character format","x-example":"US"},"country":{"type":"string","description":"Country name. This field support localization.","x-example":"United States"},"continentCode":{"type":"string","description":"Continent code. A two character continent code \"AF\" for Africa, \"AN\" for Antarctica, \"AS\" for Asia, \"EU\" for Europe, \"NA\" for North America, \"OC\" for Oceania, and \"SA\" for South America.","x-example":"NA"},"continent":{"type":"string","description":"Continent name. This field support localization.","x-example":"North America"},"eu":{"type":"boolean","description":"True if country is part of the European Union.","x-example":false},"currency":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format","x-example":"USD"}},"required":["ip","countryCode","country","continentCode","continent","eu","currency"]},"localeCode":{"description":"LocaleCode","type":"object","properties":{"code":{"type":"string","description":"Locale codes in [ISO 639-1](https:\/\/en.wikipedia.org\/wiki\/List_of_ISO_639-1_codes)","x-example":"en-us"},"name":{"type":"string","description":"Locale name","x-example":"US"}},"required":["code","name"]},"file":{"description":"File","type":"object","properties":{"$id":{"type":"string","description":"File ID.","x-example":"5e5ea5c16897e"},"bucketId":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Bucket creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Bucket update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Bucket permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"fileSecurity":{"type":"boolean","description":"Whether file-level security is enabled. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":true},"name":{"type":"string","description":"Bucket name.","x-example":"Documents"},"enabled":{"type":"boolean","description":"Bucket enabled.","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size supported.","x-example":100,"format":"int32"},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions.","items":{"type":"string"},"x-example":["jpg","png"]},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Will be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd).","x-example":"gzip"},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$createdAt","$updatedAt","$permissions","fileSecurity","name","enabled","maximumFileSize","allowedFileExtensions","compression","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"},"prefs":{"type":"object","description":"Team preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"$ref":"#\/components\/schemas\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","total","prefs"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"mfa":{"type":"boolean","description":"Multi factor authentication status, true if the user has MFA enabled or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":["owner"]}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","mfa","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Function creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Function update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"users"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"enabled":{"type":"boolean","description":"Function enabled.","x-example":false},"live":{"type":"boolean","description":"Is the function deployed with the latest configuration? This is set to false if you've changed an environment variables, entrypoint, commands, or other settings that needs redeploy to be applied. When the value is false, redeploy the function to update it with the latest configuration.","x-example":false},"logging":{"type":"boolean","description":"Whether executions will be logged. When set to false, executions will not be logged, but will reduce resource used by your Appwrite project.","x-example":false},"runtime":{"type":"string","description":"Function execution runtime.","x-example":"python-3.8"},"deployment":{"type":"string","description":"Function's active deployment ID.","x-example":"5e5ea5c16897e"},"vars":{"type":"array","description":"Function variables.","items":{"$ref":"#\/components\/schemas\/variable"},"x-example":[]},"events":{"type":"array","description":"Function trigger events.","items":{"type":"string"},"x-example":"account.create"},"schedule":{"type":"string","description":"Function execution schedult in CRON format.","x-example":"5 4 * * *"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":300,"format":"int32"},"entrypoint":{"type":"string","description":"The entrypoint file used to execute the deployment.","x-example":"index.js"},"commands":{"type":"string","description":"The build command used to build the deployment.","x-example":"npm install"},"version":{"type":"string","description":"Version of Open Runtimes used for the function.","x-example":"v2"},"installationId":{"type":"string","description":"Function VCS (Version Control System) installation id.","x-example":"6m40at4ejk5h2u9s1hboo"},"providerRepositoryId":{"type":"string","description":"VCS (Version Control System) Repository ID","x-example":"appwrite"},"providerBranch":{"type":"string","description":"VCS (Version Control System) branch name","x-example":"main"},"providerRootDirectory":{"type":"string","description":"Path to function in VCS (Version Control System) repository","x-example":"functions\/helloWorld"},"providerSilentMode":{"type":"boolean","description":"Is VCS (Version Control System) connection is in silent mode? When in silence mode, no comments will be posted on the repository pull or merge requests","x-example":false}},"required":["$id","$createdAt","$updatedAt","execute","name","enabled","live","logging","runtime","deployment","vars","events","schedule","timeout","entrypoint","commands","version","installationId","providerRepositoryId","providerBranch","providerRootDirectory","providerSilentMode"]},"installation":{"description":"Installation","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Function creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Function update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"VCS (Version Control System) provider name.","x-example":"github"},"organization":{"type":"string","description":"VCS (Version Control System) organization name.","x-example":"appwrite"},"providerInstallationId":{"type":"string","description":"VCS (Version Control System) installation ID.","x-example":"5322"}},"required":["$id","$createdAt","$updatedAt","provider","organization","providerInstallationId"]},"providerRepository":{"description":"ProviderRepository","type":"object","properties":{"id":{"type":"string","description":"VCS (Version Control System) repository ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"VCS (Version Control System) repository name.","x-example":"appwrite"},"organization":{"type":"string","description":"VCS (Version Control System) organization name","x-example":"appwrite"},"provider":{"type":"string","description":"VCS (Version Control System) provider name.","x-example":"github"},"private":{"type":"boolean","description":"Is VCS (Version Control System) repository private?","x-example":true},"runtime":{"type":"string","description":"Auto-detected runtime suggestion. Empty if getting response of getRuntime().","x-example":"node"},"pushedAt":{"type":"string","description":"Last commit date in ISO 8601 format.","x-example":"datetime"}},"required":["id","name","organization","provider","private","runtime","pushedAt"]},"detection":{"description":"Detection","type":"object","properties":{"runtime":{"type":"string","description":"Runtime","x-example":"node"}},"required":["runtime"]},"branch":{"description":"Branch","type":"object","properties":{"name":{"type":"string","description":"Branch Name.","x-example":"main"}},"required":["name"]},"runtime":{"description":"Runtime","type":"object","properties":{"$id":{"type":"string","description":"Runtime ID.","x-example":"python-3.8"},"name":{"type":"string","description":"Runtime Name.","x-example":"Python"},"version":{"type":"string","description":"Runtime version.","x-example":"3.8"},"base":{"type":"string","description":"Base Docker image used to build the runtime.","x-example":"python:3.8-alpine"},"image":{"type":"string","description":"Image name of Docker Hub.","x-example":"appwrite\\\/runtime-for-python:3.8"},"logo":{"type":"string","description":"Name of the logo image.","x-example":"python.png"},"supports":{"type":"array","description":"List of supported architectures.","items":{"type":"string"},"x-example":"amd64"}},"required":["$id","name","version","base","image","logo","supports"]},"deployment":{"description":"Deployment","type":"object","properties":{"$id":{"type":"string","description":"Deployment ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Deployment creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Deployment update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"type":{"type":"string","description":"Type of deployment.","x-example":"vcs"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"index.js"},"size":{"type":"integer","description":"The code size in bytes.","x-example":128,"format":"int32"},"buildId":{"type":"string","description":"The current build ID.","x-example":"5e5ea5c16897e"},"activate":{"type":"boolean","description":"Whether the deployment should be automatically activated.","x-example":true},"status":{"type":"string","description":"The deployment status. Possible values are \"processing\", \"building\", \"waiting\", \"ready\", and \"failed\".","x-example":"ready"},"buildLogs":{"type":"string","description":"The build logs.","x-example":"Compiling source files..."},"buildTime":{"type":"integer","description":"The current build time in seconds.","x-example":128,"format":"int32"},"providerRepositoryName":{"type":"string","description":"The name of the vcs provider repository","x-example":"database"},"providerRepositoryOwner":{"type":"string","description":"The name of the vcs provider repository owner","x-example":"utopia"},"providerRepositoryUrl":{"type":"string","description":"The url of the vcs provider repository","x-example":"https:\/\/github.com\/vermakhushboo\/g4-node-function"},"providerBranch":{"type":"string","description":"The branch of the vcs repository","x-example":"0.7.x"},"providerCommitHash":{"type":"string","description":"The commit hash of the vcs commit","x-example":"7c3f25d"},"providerCommitAuthorUrl":{"type":"string","description":"The url of vcs commit author","x-example":"https:\/\/github.com\/vermakhushboo"},"providerCommitAuthor":{"type":"string","description":"The name of vcs commit author","x-example":"Khushboo Verma"},"providerCommitMessage":{"type":"string","description":"The commit message","x-example":"Update index.js"},"providerCommitUrl":{"type":"string","description":"The url of the vcs commit","x-example":"https:\/\/github.com\/vermakhushboo\/g4-node-function\/commit\/60c0416257a9cbcdd96b2d370c38d8f8d150ccfb"},"providerBranchUrl":{"type":"string","description":"The branch of the vcs repository","x-example":"https:\/\/github.com\/vermakhushboo\/appwrite\/tree\/0.7.x"}},"required":["$id","$createdAt","$updatedAt","type","resourceId","resourceType","entrypoint","size","buildId","activate","status","buildLogs","buildTime","providerRepositoryName","providerRepositoryOwner","providerRepositoryUrl","providerBranch","providerCommitHash","providerCommitAuthorUrl","providerCommitAuthor","providerCommitMessage","providerCommitUrl","providerBranchUrl"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"requestMethod":{"type":"string","description":"HTTP request method type.","x-example":"GET"},"requestPath":{"type":"string","description":"HTTP request path and query.","x-example":"\/articles?id=5"},"requestHeaders":{"type":"array","description":"HTTP response headers as a key-value object. This will return only whitelisted headers. All headers are returned if execution is created as synchronous.","items":{"$ref":"#\/components\/schemas\/headers"},"x-example":[{"Content-Type":"application\/json"}]},"responseStatusCode":{"type":"integer","description":"HTTP response status code.","x-example":200,"format":"int32"},"responseBody":{"type":"string","description":"HTTP response body. This will return empty unless execution is created as synchronous.","x-example":"Developers are awesome."},"responseHeaders":{"type":"array","description":"HTTP response headers as a key-value object. This will return only whitelisted headers. All headers are returned if execution is created as synchronous.","items":{"$ref":"#\/components\/schemas\/headers"},"x-example":[{"Content-Type":"application\/json"}]},"logs":{"type":"string","description":"Function logs. Includes the last 4,000 characters. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"errors":{"type":"string","description":"Function errors. Includes the last 4,000 characters. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"Function execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","requestMethod","requestPath","requestHeaders","responseStatusCode","responseBody","responseHeaders","logs","errors","duration"]},"project":{"description":"Project","type":"object","properties":{"$id":{"type":"string","description":"Project ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Project creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Project update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Project name.","x-example":"New Project"},"description":{"type":"string","description":"Project description.","x-example":"This is a new project."},"teamId":{"type":"string","description":"Project team ID.","x-example":"1592981250"},"logo":{"type":"string","description":"Project logo file ID.","x-example":"5f5c451b403cb"},"url":{"type":"string","description":"Project website URL.","x-example":"5f5c451b403cb"},"legalName":{"type":"string","description":"Company legal name.","x-example":"Company LTD."},"legalCountry":{"type":"string","description":"Country code in [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) two-character format.","x-example":"US"},"legalState":{"type":"string","description":"State name.","x-example":"New York"},"legalCity":{"type":"string","description":"City name.","x-example":"New York City."},"legalAddress":{"type":"string","description":"Company Address.","x-example":"620 Eighth Avenue, New York, NY 10018"},"legalTaxId":{"type":"string","description":"Company Tax ID.","x-example":"131102020"},"authDuration":{"type":"integer","description":"Session duration in seconds.","x-example":60,"format":"int32"},"authLimit":{"type":"integer","description":"Max users allowed. 0 is unlimited.","x-example":100,"format":"int32"},"authSessionsLimit":{"type":"integer","description":"Max sessions allowed per user. 100 maximum.","x-example":10,"format":"int32"},"authPasswordHistory":{"type":"integer","description":"Max allowed passwords in the history list per user. Max passwords limit allowed in history is 20. Use 0 for disabling password history.","x-example":5,"format":"int32"},"authPasswordDictionary":{"type":"boolean","description":"Whether or not to check user's password against most commonly used passwords.","x-example":true},"authPersonalDataCheck":{"type":"boolean","description":"Whether or not to check the user password for similarity with their personal data.","x-example":true},"oAuthProviders":{"type":"array","description":"List of Auth Providers.","items":{"$ref":"#\/components\/schemas\/authProvider"},"x-example":[{}]},"platforms":{"type":"array","description":"List of Platforms.","items":{"$ref":"#\/components\/schemas\/platform"},"x-example":{}},"webhooks":{"type":"array","description":"List of Webhooks.","items":{"$ref":"#\/components\/schemas\/webhook"},"x-example":{}},"keys":{"type":"array","description":"List of API Keys.","items":{"$ref":"#\/components\/schemas\/key"},"x-example":{}},"smtpEnabled":{"type":"boolean","description":"Status for custom SMTP","x-example":false},"smtpSenderName":{"type":"string","description":"SMTP sender name","x-example":"John Appwrite"},"smtpSenderEmail":{"type":"string","description":"SMTP sender email","x-example":"john@appwrite.io"},"smtpReplyTo":{"type":"string","description":"SMTP reply to email","x-example":"support@appwrite.io"},"smtpHost":{"type":"string","description":"SMTP server host name","x-example":"mail.appwrite.io"},"smtpPort":{"type":"integer","description":"SMTP server port","x-example":25,"format":"int32"},"smtpUsername":{"type":"string","description":"SMTP server username","x-example":"emailuser"},"smtpPassword":{"type":"string","description":"SMTP server password","x-example":"securepassword"},"smtpSecure":{"type":"string","description":"SMTP server secure protocol","x-example":"tls"},"authEmailPassword":{"type":"boolean","description":"Email\/Password auth method status","x-example":true},"authUsersAuthMagicURL":{"type":"boolean","description":"Magic URL auth method status","x-example":true},"authEmailOtp":{"type":"boolean","description":"Email (OTP) auth method status","x-example":true},"authAnonymous":{"type":"boolean","description":"Anonymous auth method status","x-example":true},"authInvites":{"type":"boolean","description":"Invites auth method status","x-example":true},"authJWT":{"type":"boolean","description":"JWT auth method status","x-example":true},"authPhone":{"type":"boolean","description":"Phone auth method status","x-example":true},"serviceStatusForAccount":{"type":"boolean","description":"Account service status","x-example":true},"serviceStatusForAvatars":{"type":"boolean","description":"Avatars service status","x-example":true},"serviceStatusForDatabases":{"type":"boolean","description":"Databases service status","x-example":true},"serviceStatusForLocale":{"type":"boolean","description":"Locale service status","x-example":true},"serviceStatusForHealth":{"type":"boolean","description":"Health service status","x-example":true},"serviceStatusForStorage":{"type":"boolean","description":"Storage service status","x-example":true},"serviceStatusForTeams":{"type":"boolean","description":"Teams service status","x-example":true},"serviceStatusForUsers":{"type":"boolean","description":"Users service status","x-example":true},"serviceStatusForFunctions":{"type":"boolean","description":"Functions service status","x-example":true},"serviceStatusForGraphql":{"type":"boolean","description":"GraphQL service status","x-example":true},"serviceStatusForMessaging":{"type":"boolean","description":"Messaging service status","x-example":true}},"required":["$id","$createdAt","$updatedAt","name","description","teamId","logo","url","legalName","legalCountry","legalState","legalCity","legalAddress","legalTaxId","authDuration","authLimit","authSessionsLimit","authPasswordHistory","authPasswordDictionary","authPersonalDataCheck","oAuthProviders","platforms","webhooks","keys","smtpEnabled","smtpSenderName","smtpSenderEmail","smtpReplyTo","smtpHost","smtpPort","smtpUsername","smtpPassword","smtpSecure","authEmailPassword","authUsersAuthMagicURL","authEmailOtp","authAnonymous","authInvites","authJWT","authPhone","serviceStatusForAccount","serviceStatusForAvatars","serviceStatusForDatabases","serviceStatusForLocale","serviceStatusForHealth","serviceStatusForStorage","serviceStatusForTeams","serviceStatusForUsers","serviceStatusForFunctions","serviceStatusForGraphql","serviceStatusForMessaging"]},"webhook":{"description":"Webhook","type":"object","properties":{"$id":{"type":"string","description":"Webhook ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Webhook creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Webhook update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Webhook name.","x-example":"My Webhook"},"url":{"type":"string","description":"Webhook URL endpoint.","x-example":"https:\/\/example.com\/webhook"},"events":{"type":"array","description":"Webhook trigger events.","items":{"type":"string"},"x-example":"database.collections.update"},"security":{"type":"boolean","description":"Indicated if SSL \/ TLS Certificate verification is enabled.","x-example":true},"httpUser":{"type":"string","description":"HTTP basic authentication username.","x-example":"username"},"httpPass":{"type":"string","description":"HTTP basic authentication password.","x-example":"password"},"signatureKey":{"type":"string","description":"Signature key which can be used to validated incoming","x-example":"ad3d581ca230e2b7059c545e5a"},"enabled":{"type":"boolean","description":"Indicates if this webhook is enabled.","x-example":true},"logs":{"type":"string","description":"Webhook error logs from the most recent failure.","x-example":"Failed to connect to remote server."},"attempts":{"type":"integer","description":"Number of consecutive failed webhook attempts.","x-example":10,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","name","url","events","security","httpUser","httpPass","signatureKey","enabled","logs","attempts"]},"key":{"description":"Key","type":"object","properties":{"$id":{"type":"string","description":"Key ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Key creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Key update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Key name.","x-example":"My API Key"},"expire":{"type":"string","description":"Key expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"scopes":{"type":"array","description":"Allowed permission scopes.","items":{"type":"string"},"x-example":"users.read"},"secret":{"type":"string","description":"Secret key.","x-example":"919c2d18fb5d4...a2ae413da83346ad2"},"accessedAt":{"type":"string","description":"Most recent access date in ISO 8601 format. This attribute is only updated again after 24 hours.","x-example":"2020-10-15T06:38:00.000+00:00"},"sdks":{"type":"array","description":"List of SDK user agents that used this key.","items":{"type":"string"},"x-example":"appwrite:flutter"}},"required":["$id","$createdAt","$updatedAt","name","expire","scopes","secret","accessedAt","sdks"]},"authProvider":{"description":"AuthProvider","type":"object","properties":{"key":{"type":"string","description":"Auth Provider.","x-example":"github"},"name":{"type":"string","description":"Auth Provider name.","x-example":"GitHub"},"appId":{"type":"string","description":"OAuth 2.0 application ID.","x-example":"259125845563242502"},"secret":{"type":"string","description":"OAuth 2.0 application secret. Might be JSON string if provider requires extra configuration.","x-example":"Bpw_g9c2TGXxfgLshDbSaL8tsCcqgczQ"},"enabled":{"type":"boolean","description":"Auth Provider is active and can be used to create session.","x-example":""}},"required":["key","name","appId","secret","enabled"]},"platform":{"description":"Platform","type":"object","properties":{"$id":{"type":"string","description":"Platform ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Platform creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Platform update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Platform name.","x-example":"My Web App"},"type":{"type":"string","description":"Platform type. Possible values are: web, flutter-web, flutter-ios, flutter-android, ios, android, and unity.","x-example":"web"},"key":{"type":"string","description":"Platform Key. iOS bundle ID or Android package name. Empty string for other platforms.","x-example":"com.company.appname"},"store":{"type":"string","description":"App store or Google Play store ID.","x-example":""},"hostname":{"type":"string","description":"Web app hostname. Empty string for other platforms.","x-example":true},"httpUser":{"type":"string","description":"HTTP basic authentication username.","x-example":"username"},"httpPass":{"type":"string","description":"HTTP basic authentication password.","x-example":"password"}},"required":["$id","$createdAt","$updatedAt","name","type","key","store","hostname","httpUser","httpPass"]},"variable":{"description":"Variable","type":"object","properties":{"$id":{"type":"string","description":"Variable ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"key":{"type":"string","description":"Variable key.","x-example":"API_KEY"},"value":{"type":"string","description":"Variable value.","x-example":"myPa$$word1"},"resourceType":{"type":"string","description":"Service to which the variable belongs. Possible values are \"project\", \"function\"","x-example":"function"},"resourceId":{"type":"string","description":"ID of resource to which the variable belongs. If resourceType is \"project\", it is empty. If resourceType is \"function\", it is ID of the function.","x-example":"myAwesomeFunction"}},"required":["$id","$createdAt","$updatedAt","key","value","resourceType","resourceId"]},"country":{"description":"Country","type":"object","properties":{"name":{"type":"string","description":"Country name.","x-example":"United States"},"code":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"}},"required":["name","code"]},"continent":{"description":"Continent","type":"object","properties":{"name":{"type":"string","description":"Continent name.","x-example":"Europe"},"code":{"type":"string","description":"Continent two letter code.","x-example":"EU"}},"required":["name","code"]},"language":{"description":"Language","type":"object","properties":{"name":{"type":"string","description":"Language name.","x-example":"Italian"},"code":{"type":"string","description":"Language two-character ISO 639-1 codes.","x-example":"it"},"nativeName":{"type":"string","description":"Language native name.","x-example":"Italiano"}},"required":["name","code","nativeName"]},"currency":{"description":"Currency","type":"object","properties":{"symbol":{"type":"string","description":"Currency symbol.","x-example":"$"},"name":{"type":"string","description":"Currency name.","x-example":"US dollar"},"symbolNative":{"type":"string","description":"Currency native symbol.","x-example":"$"},"decimalDigits":{"type":"integer","description":"Number of decimal digits.","x-example":2,"format":"int32"},"rounding":{"type":"number","description":"Currency digit rounding.","x-example":0,"format":"double"},"code":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format.","x-example":"USD"},"namePlural":{"type":"string","description":"Currency plural name","x-example":"US dollars"}},"required":["symbol","name","symbolNative","decimalDigits","rounding","code","namePlural"]},"phone":{"description":"Phone","type":"object","properties":{"code":{"type":"string","description":"Phone code.","x-example":"+1"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["code","countryCode","countryName"]},"healthAntivirus":{"description":"Health Antivirus","type":"object","properties":{"version":{"type":"string","description":"Antivirus version.","x-example":"1.0.0"},"status":{"type":"string","description":"Antivirus status. Possible values can are: `disabled`, `offline`, `online`","x-example":"online"}},"required":["version","status"]},"healthQueue":{"description":"Health Queue","type":"object","properties":{"size":{"type":"integer","description":"Amount of actions in the queue.","x-example":8,"format":"int32"}},"required":["size"]},"healthStatus":{"description":"Health Status","type":"object","properties":{"name":{"type":"string","description":"Name of the service.","x-example":"database"},"ping":{"type":"integer","description":"Duration in milliseconds how long the health check took.","x-example":128,"format":"int32"},"status":{"type":"string","description":"Service status. Possible values can are: `pass`, `fail`","x-example":"pass"}},"required":["name","ping","status"]},"healthCertificate":{"description":"Health Certificate","type":"object","properties":{"name":{"type":"string","description":"Certificate name","x-example":"\/CN=www.google.com"},"subjectSN":{"type":"string","description":"Subject SN","x-example":""},"issuerOrganisation":{"type":"string","description":"Issuer organisation","x-example":""},"validFrom":{"type":"string","description":"Valid from","x-example":"1704200998"},"validTo":{"type":"string","description":"Valid to","x-example":"1711458597"},"signatureTypeSN":{"type":"string","description":"Signature type SN","x-example":"RSA-SHA256"}},"required":["name","subjectSN","issuerOrganisation","validFrom","validTo","signatureTypeSN"]},"healthTime":{"description":"Health Time","type":"object","properties":{"remoteTime":{"type":"integer","description":"Current unix timestamp on trustful remote server.","x-example":1639490751,"format":"int32"},"localTime":{"type":"integer","description":"Current unix timestamp of local server where Appwrite runs.","x-example":1639490844,"format":"int32"},"diff":{"type":"integer","description":"Difference of unix remote and local timestamps in milliseconds.","x-example":93,"format":"int32"}},"required":["remoteTime","localTime","diff"]},"metric":{"description":"Metric","type":"object","properties":{"value":{"type":"integer","description":"The value of this metric at the timestamp.","x-example":1,"format":"int32"},"date":{"type":"string","description":"The date at which this metric was aggregated in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["value","date"]},"metricBreakdown":{"description":"Metric Breakdown","type":"object","properties":{"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Resource name.","x-example":"Documents"},"value":{"type":"integer","description":"The value of this metric at the timestamp.","x-example":1,"format":"int32"}},"required":["resourceId","name","value"]},"usageDatabases":{"description":"UsageDatabases","type":"object","properties":{"range":{"type":"string","description":"Time range of the usage stats.","x-example":"30d"},"databasesTotal":{"type":"integer","description":"Total aggregated number of databases.","x-example":0,"format":"int32"},"collectionsTotal":{"type":"integer","description":"Total aggregated number of collections.","x-example":0,"format":"int32"},"documentsTotal":{"type":"integer","description":"Total aggregated number of documents.","x-example":0,"format":"int32"},"databases":{"type":"array","description":"Aggregated number of databases per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collections":{"type":"array","description":"Aggregated number of collections per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documents":{"type":"array","description":"Aggregated number of documents per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","databasesTotal","collectionsTotal","documentsTotal","databases","collections","documents"]},"usageDatabase":{"description":"UsageDatabase","type":"object","properties":{"range":{"type":"string","description":"Time range of the usage stats.","x-example":"30d"},"collectionsTotal":{"type":"integer","description":"Total aggregated number of collections.","x-example":0,"format":"int32"},"documentsTotal":{"type":"integer","description":"Total aggregated number of documents.","x-example":0,"format":"int32"},"collections":{"type":"array","description":"Aggregated number of collections per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documents":{"type":"array","description":"Aggregated number of documents per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","collectionsTotal","documentsTotal","collections","documents"]},"usageCollection":{"description":"UsageCollection","type":"object","properties":{"range":{"type":"string","description":"Time range of the usage stats.","x-example":"30d"},"documentsTotal":{"type":"integer","description":"Total aggregated number of of documents.","x-example":0,"format":"int32"},"documents":{"type":"array","description":"Aggregated number of documents per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","documentsTotal","documents"]},"usageUsers":{"description":"UsageUsers","type":"object","properties":{"range":{"type":"string","description":"Time range of the usage stats.","x-example":"30d"},"usersTotal":{"type":"integer","description":"Total aggregated number of statistics of users.","x-example":0,"format":"int32"},"sessionsTotal":{"type":"integer","description":"Total aggregated number of active sessions.","x-example":0,"format":"int32"},"users":{"type":"array","description":"Aggregated number of users per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"sessions":{"type":"array","description":"Aggregated number of active sessions per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","usersTotal","sessionsTotal","users","sessions"]},"usageStorage":{"description":"StorageUsage","type":"object","properties":{"range":{"type":"string","description":"Time range of the usage stats.","x-example":"30d"},"bucketsTotal":{"type":"integer","description":"Total aggregated number of buckets","x-example":0,"format":"int32"},"filesTotal":{"type":"integer","description":"Total aggregated number of files.","x-example":0,"format":"int32"},"filesStorageTotal":{"type":"integer","description":"Total aggregated number of files storage (in bytes).","x-example":0,"format":"int32"},"buckets":{"type":"array","description":"Aggregated number of buckets per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"files":{"type":"array","description":"Aggregated number of files per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"storage":{"type":"array","description":"Aggregated number of files storage (in bytes) per period .","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","bucketsTotal","filesTotal","filesStorageTotal","buckets","files","storage"]},"usageBuckets":{"description":"UsageBuckets","type":"object","properties":{"range":{"type":"string","description":"Time range of the usage stats.","x-example":"30d"},"filesTotal":{"type":"integer","description":"Total aggregated number of bucket files.","x-example":0,"format":"int32"},"filesStorageTotal":{"type":"integer","description":"Total aggregated number of bucket files storage (in bytes).","x-example":0,"format":"int32"},"files":{"type":"array","description":"Aggregated number of bucket files per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"storage":{"type":"array","description":"Aggregated number of bucket storage files (in bytes) per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","filesTotal","filesStorageTotal","files","storage"]},"usageFunctions":{"description":"UsageFunctions","type":"object","properties":{"range":{"type":"string","description":"Time range of the usage stats.","x-example":"30d"},"functionsTotal":{"type":"integer","description":"Total aggregated number of functions.","x-example":0,"format":"int32"},"deploymentsTotal":{"type":"integer","description":"Total aggregated number of functions deployments.","x-example":0,"format":"int32"},"deploymentsStorageTotal":{"type":"integer","description":"Total aggregated sum of functions deployment storage.","x-example":0,"format":"int32"},"buildsTotal":{"type":"integer","description":"Total aggregated number of functions build.","x-example":0,"format":"int32"},"buildsStorageTotal":{"type":"integer","description":"total aggregated sum of functions build storage.","x-example":0,"format":"int32"},"buildsTimeTotal":{"type":"integer","description":"Total aggregated sum of functions build compute time.","x-example":0,"format":"int32"},"executionsTotal":{"type":"integer","description":"Total aggregated number of functions execution.","x-example":0,"format":"int32"},"executionsTimeTotal":{"type":"integer","description":"Total aggregated sum of functions execution compute time.","x-example":0,"format":"int32"},"functions":{"type":"array","description":"Aggregated number of functions per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":0},"deployments":{"type":"array","description":"Aggregated number of functions deployment per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"deploymentsStorage":{"type":"array","description":"Aggregated number of functions deployment storage per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"builds":{"type":"array","description":"Aggregated number of functions build per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"buildsStorage":{"type":"array","description":"Aggregated sum of functions build storage per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"buildsTime":{"type":"array","description":"Aggregated sum of functions build compute time per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"executions":{"type":"array","description":"Aggregated number of functions execution per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"executionsTime":{"type":"array","description":"Aggregated number of functions execution compute time per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","functionsTotal","deploymentsTotal","deploymentsStorageTotal","buildsTotal","buildsStorageTotal","buildsTimeTotal","executionsTotal","executionsTimeTotal","functions","deployments","deploymentsStorage","builds","buildsStorage","buildsTime","executions","executionsTime"]},"usageFunction":{"description":"UsageFunction","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"deploymentsTotal":{"type":"integer","description":"Total aggregated number of function deployments.","x-example":0,"format":"int32"},"deploymentsStorageTotal":{"type":"integer","description":"Total aggregated sum of function deployments storage.","x-example":0,"format":"int32"},"buildsTotal":{"type":"integer","description":"Total aggregated number of function builds.","x-example":0,"format":"int32"},"buildsStorageTotal":{"type":"integer","description":"total aggregated sum of function builds storage.","x-example":0,"format":"int32"},"buildsTimeTotal":{"type":"integer","description":"Total aggregated sum of function builds compute time.","x-example":0,"format":"int32"},"executionsTotal":{"type":"integer","description":"Total aggregated number of function executions.","x-example":0,"format":"int32"},"executionsTimeTotal":{"type":"integer","description":"Total aggregated sum of function executions compute time.","x-example":0,"format":"int32"},"deployments":{"type":"array","description":"Aggregated number of function deployments per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"deploymentsStorage":{"type":"array","description":"Aggregated number of function deployments storage per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"builds":{"type":"array","description":"Aggregated number of function builds per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"buildsStorage":{"type":"array","description":"Aggregated sum of function builds storage per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"buildsTime":{"type":"array","description":"Aggregated sum of function builds compute time per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"executions":{"type":"array","description":"Aggregated number of function executions per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"executionsTime":{"type":"array","description":"Aggregated number of function executions compute time per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","deploymentsTotal","deploymentsStorageTotal","buildsTotal","buildsStorageTotal","buildsTimeTotal","executionsTotal","executionsTimeTotal","deployments","deploymentsStorage","builds","buildsStorage","buildsTime","executions","executionsTime"]},"usageProject":{"description":"UsageProject","type":"object","properties":{"executionsTotal":{"type":"integer","description":"Total aggregated number of function executions.","x-example":0,"format":"int32"},"documentsTotal":{"type":"integer","description":"Total aggregated number of documents.","x-example":0,"format":"int32"},"databasesTotal":{"type":"integer","description":"Total aggregated number of databases.","x-example":0,"format":"int32"},"usersTotal":{"type":"integer","description":"Total aggregated number of users.","x-example":0,"format":"int32"},"filesStorageTotal":{"type":"integer","description":"Total aggregated sum of files storage size (in bytes).","x-example":0,"format":"int32"},"bucketsTotal":{"type":"integer","description":"Total aggregated number of buckets.","x-example":0,"format":"int32"},"requests":{"type":"array","description":"Aggregated number of requests per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"network":{"type":"array","description":"Aggregated number of consumed bandwidth per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"users":{"type":"array","description":"Aggregated number of users per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"executions":{"type":"array","description":"Aggregated number of executions per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"executionsBreakdown":{"type":"array","description":"Aggregated breakdown in totals of executions by functions.","items":{"$ref":"#\/components\/schemas\/metricBreakdown"},"x-example":[]},"bucketsBreakdown":{"type":"array","description":"Aggregated breakdown in totals of usage by buckets.","items":{"$ref":"#\/components\/schemas\/metricBreakdown"},"x-example":[]}},"required":["executionsTotal","documentsTotal","databasesTotal","usersTotal","filesStorageTotal","bucketsTotal","requests","network","users","executions","executionsBreakdown","bucketsBreakdown"]},"headers":{"description":"Headers","type":"object","properties":{"name":{"type":"string","description":"Header name.","x-example":"Content-Type"},"value":{"type":"string","description":"Header value.","x-example":"application\/json"}},"required":["name","value"]},"proxyRule":{"description":"Rule","type":"object","properties":{"$id":{"type":"string","description":"Rule ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Rule creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Rule update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"domain":{"type":"string","description":"Domain name.","x-example":"appwrite.company.com"},"resourceType":{"type":"string","description":"Action definition for the rule. Possible values are \"api\", \"function\", or \"redirect\"","x-example":"function"},"resourceId":{"type":"string","description":"ID of resource for the action type. If resourceType is \"api\" or \"url\", it is empty. If resourceType is \"function\", it is ID of the function.","x-example":"myAwesomeFunction"},"status":{"type":"string","description":"Domain verification status. Possible values are \"created\", \"verifying\", \"verified\" and \"unverified\"","x-example":"verified"},"logs":{"type":"string","description":"Certificate generation logs. This will return an empty string if generation did not run, or succeeded.","x-example":"HTTP challegne failed."},"renewAt":{"type":"string","description":"Certificate auto-renewal date in ISO 8601 format.","x-example":"datetime"}},"required":["$id","$createdAt","$updatedAt","domain","resourceType","resourceId","status","logs","renewAt"]},"smsTemplate":{"description":"SmsTemplate","type":"object","properties":{"type":{"type":"string","description":"Template type","x-example":"verification"},"locale":{"type":"string","description":"Template locale","x-example":"en_us"},"message":{"type":"string","description":"Template message","x-example":"Click on the link to verify your account."}},"required":["type","locale","message"]},"emailTemplate":{"description":"EmailTemplate","type":"object","properties":{"type":{"type":"string","description":"Template type","x-example":"verification"},"locale":{"type":"string","description":"Template locale","x-example":"en_us"},"message":{"type":"string","description":"Template message","x-example":"Click on the link to verify your account."},"senderName":{"type":"string","description":"Name of the sender","x-example":"My User"},"senderEmail":{"type":"string","description":"Email of the sender","x-example":"mail@appwrite.io"},"replyTo":{"type":"string","description":"Reply to email address","x-example":"emails@appwrite.io"},"subject":{"type":"string","description":"Email subject","x-example":"Please verify your email address"}},"required":["type","locale","message","senderName","senderEmail","replyTo","subject"]},"consoleVariables":{"description":"Console Variables","type":"object","properties":{"_APP_DOMAIN_TARGET":{"type":"string","description":"CNAME target for your Appwrite custom domains.","x-example":"appwrite.io"},"_APP_STORAGE_LIMIT":{"type":"integer","description":"Maximum file size allowed for file upload in bytes.","x-example":"30000000","format":"int32"},"_APP_FUNCTIONS_SIZE_LIMIT":{"type":"integer","description":"Maximum file size allowed for deployment in bytes.","x-example":"30000000","format":"int32"},"_APP_USAGE_STATS":{"type":"string","description":"Defines if usage stats are enabled. This value is set to 'enabled' by default, to disable the usage stats set the value to 'disabled'.","x-example":"enabled"},"_APP_VCS_ENABLED":{"type":"boolean","description":"Defines if VCS (Version Control System) is enabled.","x-example":true},"_APP_DOMAIN_ENABLED":{"type":"boolean","description":"Defines if main domain is configured. If so, custom domains can be created.","x-example":true},"_APP_ASSISTANT_ENABLED":{"type":"boolean","description":"Defines if AI assistant is enabled.","x-example":true}},"required":["_APP_DOMAIN_TARGET","_APP_STORAGE_LIMIT","_APP_FUNCTIONS_SIZE_LIMIT","_APP_USAGE_STATS","_APP_VCS_ENABLED","_APP_DOMAIN_ENABLED","_APP_ASSISTANT_ENABLED"]},"mfaChallenge":{"description":"MFA Challenge","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","userId","expire"]},"mfaType":{"description":"MFAType","type":"object","properties":{"backups":{"type":"array","description":"Backup codes.","items":{"type":"string"},"x-example":true},"secret":{"type":"string","description":"Secret token used for TOTP factor.","x-example":true},"uri":{"type":"string","description":"URI for authenticator apps.","x-example":true}},"required":["backups","secret","uri"]},"mfaFactors":{"description":"MFAFactors","type":"object","properties":{"totp":{"type":"boolean","description":"TOTP","x-example":true},"phone":{"type":"boolean","description":"Phone","x-example":true},"email":{"type":"boolean","description":"Email","x-example":true}},"required":["totp","phone","email"]},"provider":{"description":"Provider","type":"object","properties":{"$id":{"type":"string","description":"Provider ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Provider creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Provider update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"The name for the provider instance.","x-example":"Mailgun"},"provider":{"type":"string","description":"The name of the provider service.","x-example":"mailgun"},"enabled":{"type":"boolean","description":"Is provider enabled?","x-example":true},"type":{"type":"string","description":"Type of provider.","x-example":"sms"},"credentials":{"type":"object","description":"Provider credentials.","x-example":{"key":"123456789"}},"options":{"type":"object","description":"Provider options.","x-example":{"from":"sender-email@mydomain"},"nullable":true}},"required":["$id","$createdAt","$updatedAt","name","provider","enabled","type","credentials"]},"message":{"description":"Message","type":"object","properties":{"$id":{"type":"string","description":"Message ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Message creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Message update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerType":{"type":"string","description":"Message provider type.","x-example":"email"},"topics":{"type":"array","description":"Topic IDs set as recipients.","items":{"type":"string"},"x-example":["5e5ea5c16897e"]},"users":{"type":"array","description":"User IDs set as recipients.","items":{"type":"string"},"x-example":["5e5ea5c16897e"]},"targets":{"type":"array","description":"Target IDs set as recipients.","items":{"type":"string"},"x-example":["5e5ea5c16897e"]},"scheduledAt":{"type":"string","description":"The scheduled time for message.","x-example":"2020-10-15T06:38:00.000+00:00","nullable":true},"deliveredAt":{"type":"string","description":"The time when the message was delivered.","x-example":"2020-10-15T06:38:00.000+00:00","nullable":true},"deliveryErrors":{"type":"array","description":"Delivery errors if any.","items":{"type":"string"},"x-example":["Failed to send message to target 5e5ea5c16897e: Credentials not valid."],"nullable":true},"deliveredTotal":{"type":"integer","description":"Number of recipients the message was delivered to.","x-example":1,"format":"int32"},"data":{"type":"object","description":"Data of the message.","x-example":{"subject":"Welcome to Appwrite","content":"Hi there, welcome to Appwrite family."}},"status":{"type":"string","description":"Status of delivery.","x-example":"Message status can be one of the following: processing, sent, cancelled, failed."}},"required":["$id","$createdAt","$updatedAt","providerType","topics","users","targets","deliveredTotal","data","status"]},"topic":{"description":"Topic","type":"object","properties":{"$id":{"type":"string","description":"Topic ID.","x-example":"259125845563242502"},"$createdAt":{"type":"string","description":"Topic creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Topic update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"The name of the topic.","x-example":"events"},"total":{"type":"integer","description":"Total count of subscribers subscribed to topic.","x-example":100,"format":"int32"},"subscribe":{"type":"array","description":"Subscribe permissions.","items":{"type":"string"},"x-example":"users"}},"required":["$id","$createdAt","$updatedAt","name","total","subscribe"]},"subscriber":{"description":"Subscriber","type":"object","properties":{"$id":{"type":"string","description":"Subscriber ID.","x-example":"259125845563242502"},"$createdAt":{"type":"string","description":"Subscriber creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Subscriber update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"targetId":{"type":"string","description":"Target ID.","x-example":"259125845563242502"},"target":{"type":"object","description":"Target.","x-example":{"$id":"259125845563242502","$createdAt":"2020-10-15T06:38:00.000+00:00","$updatedAt":"2020-10-15T06:38:00.000+00:00","providerType":"email","providerId":"259125845563242502","name":"ageon-app-email","identifier":"random-mail@email.org","userId":"5e5ea5c16897e"},"items":{"$ref":"#\/components\/schemas\/target"}},"userId":{"type":"string","description":"Topic ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User Name.","x-example":"Aegon Targaryen"},"topicId":{"type":"string","description":"Topic ID.","x-example":"259125845563242502"},"providerType":{"type":"string","description":"The target provider type. Can be one of the following: `email`, `sms` or `push`.","x-example":"email"}},"required":["$id","$createdAt","$updatedAt","targetId","target","userId","userName","topicId","providerType"]},"target":{"description":"Target","type":"object","properties":{"$id":{"type":"string","description":"Target ID.","x-example":"259125845563242502"},"$createdAt":{"type":"string","description":"Target creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Target update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Target Name.","x-example":"Aegon apple token"},"userId":{"type":"string","description":"User ID.","x-example":"259125845563242502"},"providerId":{"type":"string","description":"Provider ID.","x-example":"259125845563242502","nullable":true},"providerType":{"type":"string","description":"The target provider type. Can be one of the following: `email`, `sms` or `push`.","x-example":"email"},"identifier":{"type":"string","description":"The target identifier.","x-example":"token"}},"required":["$id","$createdAt","$updatedAt","name","userId","providerType","identifier"]},"migration":{"description":"Migration","type":"object","properties":{"$id":{"type":"string","description":"Migration ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"string","description":"Migration status ( pending, processing, failed, completed ) ","x-example":"pending"},"stage":{"type":"string","description":"Migration stage ( init, processing, source-check, destination-check, migrating, finished )","x-example":"init"},"source":{"type":"string","description":"A string containing the type of source of the migration.","x-example":"Appwrite"},"resources":{"type":"array","description":"Resources to migration.","items":{"type":"string"},"x-example":["user"]},"statusCounters":{"type":"object","description":"A group of counters that represent the total progress of the migration.","x-example":"{\"Database\": {\"PENDING\": 0, \"SUCCESS\": 1, \"ERROR\": 0, \"SKIP\": 0, \"PROCESSING\": 0, \"WARNING\": 0}}"},"resourceData":{"type":"object","description":"An array of objects containing the report data of the resources that were migrated.","x-example":"[{\"resource\":\"Database\",\"id\":\"public\",\"status\":\"SUCCESS\",\"message\":\"\"}]"},"errors":{"type":"array","description":"All errors that occurred during the migration process.","items":{"type":"string"},"x-example":[]}},"required":["$id","$createdAt","$updatedAt","status","stage","source","resources","statusCounters","resourceData","errors"]},"migrationReport":{"description":"Migration Report","type":"object","properties":{"user":{"type":"integer","description":"Number of users to be migrated.","x-example":20,"format":"int32"},"team":{"type":"integer","description":"Number of teams to be migrated.","x-example":20,"format":"int32"},"database":{"type":"integer","description":"Number of databases to be migrated.","x-example":20,"format":"int32"},"document":{"type":"integer","description":"Number of documents to be migrated.","x-example":20,"format":"int32"},"file":{"type":"integer","description":"Number of files to be migrated.","x-example":20,"format":"int32"},"bucket":{"type":"integer","description":"Number of buckets to be migrated.","x-example":20,"format":"int32"},"function":{"type":"integer","description":"Number of functions to be migrated.","x-example":20,"format":"int32"},"size":{"type":"integer","description":"Size of files to be migrated in mb.","x-example":30000,"format":"int32"},"version":{"type":"string","description":"Version of the Appwrite instance to be migrated.","x-example":"1.4.0"}},"required":["user","team","database","document","file","bucket","function","size","version"]},"firebaseProject":{"description":"MigrationFirebaseProject","type":"object","properties":{"projectId":{"type":"string","description":"Project ID.","x-example":"my-project"},"displayName":{"type":"string","description":"Project display name.","x-example":"My Project"}},"required":["projectId","displayName"]}},"securitySchemes":{"Project":{"type":"apiKey","name":"X-Appwrite-Project","description":"Your project ID","in":"header","x-appwrite":{"demo":"5df5acd0d48c2"}},"Key":{"type":"apiKey","name":"X-Appwrite-Key","description":"Your secret API key","in":"header","x-appwrite":{"demo":"919c2d18fb5d4...a2ae413da83346ad2"}},"JWT":{"type":"apiKey","name":"X-Appwrite-JWT","description":"Your secret JSON Web Token","in":"header"},"Locale":{"type":"apiKey","name":"X-Appwrite-Locale","description":"","in":"header","x-appwrite":{"demo":"en"}},"Mode":{"type":"apiKey","name":"X-Appwrite-Mode","description":"","in":"header","x-appwrite":{"demo":""}}}},"externalDocs":{"description":"Full API docs, specs and tutorials","url":"https:\/\/appwrite.io\/docs"}} \ No newline at end of file +{"openapi":"3.0.0","info":{"version":"1.5.0","title":"Appwrite","description":"Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https:\/\/appwrite.io\/docs](https:\/\/appwrite.io\/docs)","termsOfService":"https:\/\/appwrite.io\/policy\/terms","contact":{"name":"Appwrite Team","url":"https:\/\/appwrite.io\/support","email":"team@appwrite.io"},"license":{"name":"BSD-3-Clause","url":"https:\/\/raw.githubusercontent.com\/appwrite\/appwrite\/master\/LICENSE"}},"servers":[{"url":"https:\/\/cloud.appwrite.io\/v1"}],"paths":{"\/account":{"get":{"summary":"Get account","operationId":"accountGet","tags":["account"],"description":"Get the currently logged in user.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"get","weight":22,"cookies":false,"type":"","demo":"account\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"post":{"summary":"Create account","operationId":"accountCreate","tags":["account"],"description":"Use this endpoint to allow a new user to register a new account in your project. After the user registration completes successfully, you can use the [\/account\/verfication](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createVerification) route to start verifying the user email address. To allow the new user to login to their new account, you need to create a new [account session](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createEmailSession).","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"create","weight":7,"cookies":false,"type":"","demo":"account\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"New user password. Must be between 8 and 256 chars.","x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}},"delete":{"summary":"Delete account","operationId":"accountDelete","tags":["account"],"description":"Delete the currently logged in user.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":49,"cookies":false,"type":"","demo":"account\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/email":{"patch":{"summary":"Update email","operationId":"accountUpdateEmail","tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateEmail","weight":29,"cookies":false,"type":"","demo":"account\/update-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","x-example":"password"}},"required":["email","password"]}}}}}},"\/account\/identities":{"get":{"summary":"List Identities","operationId":"accountListIdentities","tags":["account"],"description":"Get the list of identities for the currently logged in user.","responses":{"200":{"description":"Identities List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/identityList"}}}}},"x-appwrite":{"method":"listIdentities","weight":13,"cookies":false,"type":"","demo":"account\/list-identities.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-identities.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/identities","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, provider, providerUid, providerEmail, providerAccessTokenExpiry","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/identities\/{identityId}":{"delete":{"summary":"Delete identity","operationId":"accountDeleteIdentity","tags":["account"],"description":"Delete an identity by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIdentity","weight":14,"cookies":false,"type":"","demo":"account\/delete-identity.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-identity.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"identityId","description":"Identity ID.","required":true,"schema":{"type":"string","x-example":"[IDENTITY_ID]"},"in":"path"}]}},"\/account\/jwt":{"post":{"summary":"Create JWT","operationId":"accountCreateJWT","tags":["account"],"description":"Use this endpoint to create a JSON Web Token. You can use the resulting JWT to authenticate on behalf of the current user when working with the Appwrite server-side API and SDKs. The JWT secret is valid for 15 minutes from its creation and will be invalid if the user will logout in that time frame.","responses":{"201":{"description":"JWT","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/jwt"}}}}},"x-appwrite":{"method":"createJWT","weight":21,"cookies":false,"type":"","demo":"account\/create-j-w-t.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-jwt.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"accounts.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"List logs","operationId":"accountListLogs","tags":["account"],"description":"Get the list of latest security activity logs for the currently logged in user. Each log returns user IP address, location and date and time of log.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listLogs","weight":25,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/mfa":{"patch":{"summary":"Update MFA","operationId":"accountUpdateMFA","tags":["account"],"description":"","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateMFA","weight":42,"cookies":false,"type":"","demo":"account\/update-m-f-a.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-mfa.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"mfa":{"type":"boolean","description":"Enable or disable MFA.","x-example":false}},"required":["mfa"]}}}}}},"\/account\/mfa\/challenge":{"post":{"summary":"Create 2FA Challenge","operationId":"accountCreate2FAChallenge","tags":["account"],"description":"","responses":{"201":{"description":"MFA Challenge","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/mfaChallenge"}}}}},"x-appwrite":{"method":"create2FAChallenge","weight":47,"cookies":false,"type":"","demo":"account\/create2f-a-challenge.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-2fa-challenge.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},token:{param-token}","scope":"accounts.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"factor":{"type":"string","description":"Factor used for verification.","x-example":"totp","enum":["totp","phone","email"],"x-enum-name":null,"x-enum-keys":[]}},"required":["factor"]}}}}},"put":{"summary":"Create MFA Challenge (confirmation)","operationId":"accountUpdateChallenge","tags":["account"],"description":"","responses":{"204":{"description":"No content","content":{"":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateChallenge","weight":48,"cookies":false,"type":"","demo":"account\/update-challenge.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-challenge.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"challengeId":{"type":"string","description":"ID of the challenge.","x-example":"[CHALLENGE_ID]"},"otp":{"type":"string","description":"Valid verification token.","x-example":"[OTP]"}},"required":["challengeId","otp"]}}}}}},"\/account\/mfa\/factors":{"get":{"summary":"List Factors","operationId":"accountListFactors","tags":["account"],"description":"","responses":{"200":{"description":"MFAFactors","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/mfaFactors"}}}}},"x-appwrite":{"method":"listFactors","weight":43,"cookies":false,"type":"","demo":"account\/list-factors.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-factors.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/account\/mfa\/{type}":{"post":{"summary":"Add Authenticator","operationId":"accountAddAuthenticator","tags":["account"],"description":"","responses":{"200":{"description":"MFAType","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/mfaType"}}}}},"x-appwrite":{"method":"addAuthenticator","weight":44,"cookies":false,"type":"","demo":"account\/add-authenticator.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/add-authenticator.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"type","description":"Type of authenticator.","required":true,"schema":{"type":"string","x-example":"totp","enum":["totp"],"x-enum-name":null,"x-enum-keys":[]},"in":"path"}]},"put":{"summary":"Verify Authenticator","operationId":"accountVerifyAuthenticator","tags":["account"],"description":"","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"verifyAuthenticator","weight":45,"cookies":false,"type":"","demo":"account\/verify-authenticator.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/verify-authenticator.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"type","description":"Type of authenticator.","required":true,"schema":{"type":"string","x-example":"totp","enum":["totp"],"x-enum-name":null,"x-enum-keys":[]},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"otp":{"type":"string","description":"Valid verification token.","x-example":"[OTP]"}},"required":["otp"]}}}}},"delete":{"summary":"Delete Authenticator","operationId":"accountDeleteAuthenticator","tags":["account"],"description":"","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"deleteAuthenticator","weight":46,"cookies":false,"type":"","demo":"account\/delete-authenticator.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-mfa.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"type","description":"Type of authenticator.","required":true,"schema":{"type":"string","x-example":"totp","enum":["totp"],"x-enum-name":null,"x-enum-keys":[]},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"otp":{"type":"string","description":"Valid verification token.","x-example":"[OTP]"}},"required":["otp"]}}}}}},"\/account\/name":{"patch":{"summary":"Update name","operationId":"accountUpdateName","tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateName","weight":27,"cookies":false,"type":"","demo":"account\/update-name.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-name.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["name"]}}}}}},"\/account\/password":{"patch":{"summary":"Update password","operationId":"accountUpdatePassword","tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePassword","weight":28,"cookies":false,"type":"","demo":"account\/update-password.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-password.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"password":{"type":"string","description":"New user password. Must be at least 8 chars.","x-example":null},"oldPassword":{"type":"string","description":"Current user password. Must be at least 8 chars.","x-example":"password"}},"required":["password"]}}}}}},"\/account\/phone":{"patch":{"summary":"Update phone","operationId":"accountUpdatePhone","tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createPhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePhone","weight":30,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","x-example":"password"}},"required":["phone","password"]}}}}}},"\/account\/prefs":{"get":{"summary":"Get account preferences","operationId":"accountGetPrefs","tags":["account"],"description":"Get the preferences as a key-value object for the currently logged in user.","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"getPrefs","weight":23,"cookies":false,"type":"","demo":"account\/get-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/prefs","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"patch":{"summary":"Update preferences","operationId":"accountUpdatePrefs","tags":["account"],"description":"Update currently logged in user account preferences. The object you pass is stored as is, and replaces any previous value. The maximum allowed prefs size is 64kB and throws error if exceeded.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePrefs","weight":31,"cookies":false,"type":"","demo":"account\/update-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/prefs","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"prefs":{"type":"object","description":"Prefs key-value JSON object.","x-example":"{}"}},"required":["prefs"]}}}}}},"\/account\/recovery":{"post":{"summary":"Create password recovery","operationId":"accountCreateRecovery","tags":["account"],"description":"Sends the user an email with a temporary secret key for password reset. When the user clicks the confirmation link he is redirected back to your app password reset URL with the secret key and email address values attached to the URL query string. Use the query string params to submit a request to the [PUT \/account\/recovery](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateRecovery) endpoint to complete the process. The verification link sent to the user's email address is valid for 1 hour.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createRecovery","weight":36,"cookies":false,"type":"","demo":"account\/create-recovery.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-recovery.md","rate-limit":10,"rate-time":3600,"rate-key":["url:{url},email:{param-email}","url:{url},ip:{ip}"],"scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"url":{"type":"string","description":"URL to redirect the user back to your app from the recovery email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"}},"required":["email","url"]}}}}},"put":{"summary":"Create password recovery (confirmation)","operationId":"accountUpdateRecovery","tags":["account"],"description":"Use this endpoint to complete the user account password reset. Both the **userId** and **secret** arguments will be passed as query parameters to the redirect URL you have provided when sending your request to the [POST \/account\/recovery](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createRecovery) endpoint.\n\nPlease note that in order to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) the only valid redirect URLs are the ones from domains you have set when adding your platforms in the console interface.","responses":{"200":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"updateRecovery","weight":37,"cookies":false,"type":"","demo":"account\/update-recovery.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-recovery.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid reset token.","x-example":"[SECRET]"},"password":{"type":"string","description":"New user password. Must be between 8 and 256 chars.","x-example":null}},"required":["userId","secret","password"]}}}}}},"\/account\/sessions":{"get":{"summary":"List sessions","operationId":"accountListSessions","tags":["account"],"description":"Get the list of active sessions across different devices for the currently logged in user.","responses":{"200":{"description":"Sessions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/sessionList"}}}}},"x-appwrite":{"method":"listSessions","weight":24,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/sessions","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete sessions","operationId":"accountDeleteSessions","tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":35,"cookies":false,"type":"","demo":"account\/delete-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-sessions.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/account\/sessions\/anonymous":{"post":{"summary":"Create anonymous session","operationId":"accountCreateAnonymousSession","tags":["account"],"description":"Use this endpoint to allow a new user to register an anonymous account in your project. This route will also create a new session for the user. To allow the new user to convert an anonymous account to a normal account, you need to update its [email and password](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateEmail) or create an [OAuth2 session](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#CreateOAuth2Session).","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"createAnonymousSession","weight":20,"cookies":false,"type":"","demo":"account\/create-anonymous-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-anonymous.md","rate-limit":50,"rate-time":3600,"rate-key":"ip:{ip}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/sessions\/email":{"post":{"summary":"Create email password session","operationId":"accountCreateEmailPasswordSession","tags":["account"],"description":"Allow the user to login into their account by providing a valid email and password combination. This route will create a new session for the user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"createEmailPasswordSession","weight":8,"cookies":false,"type":"","demo":"account\/create-email-password-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-email-password.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","x-example":"password"}},"required":["email","password"]}}}}}},"\/account\/sessions\/magic-url":{"put":{"summary":"Create session (deprecated)","operationId":"accountUpdateMagicURLSession","tags":["account"],"description":"Use this endpoint to create a session from token. Provide the **userId** and **secret** parameters from the successful response of authentication flows initiated by token creation. For example, magic URL and phone login.","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateMagicURLSession","weight":17,"cookies":false,"type":"","demo":"account\/update-magic-u-r-l-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session.md","rate-limit":10,"rate-time":3600,"rate-key":"ip:{ip},userId:{param-userId}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/account\/sessions\/oauth2\/{provider}":{"get":{"summary":"Create OAuth2 session","operationId":"accountCreateOAuth2Session","tags":["account"],"description":"Allow the user to login to their account using the OAuth2 provider of their choice. Each OAuth2 provider should be enabled from the Appwrite console first. Use the success and failure arguments to provide a redirect URL's back to your app when login is completed.\n\nIf there is already an active session, the new session will be attached to the logged-in account. If there are no active sessions, the server will attempt to look for a user with the same email address as the email received from the OAuth2 provider and attach the new session to the existing user. If no matching user is found - the server will create a new user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).\n","responses":{"301":{"description":"File"}},"x-appwrite":{"method":"createOAuth2Session","weight":9,"cookies":false,"type":"webAuth","demo":"account\/create-o-auth2session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-oauth2.md","rate-limit":50,"rate-time":3600,"rate-key":"ip:{ip}","scope":"sessions.write","platforms":["client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"provider","description":"OAuth2 Provider. Currently, supported providers are: amazon, apple, auth0, authentik, autodesk, bitbucket, bitly, box, dailymotion, discord, disqus, dropbox, etsy, facebook, github, gitlab, google, linkedin, microsoft, notion, oidc, okta, paypal, paypalSandbox, podio, salesforce, slack, spotify, stripe, tradeshift, tradeshiftBox, twitch, wordpress, yahoo, yammer, yandex, zoho, zoom.","required":true,"schema":{"type":"string","x-example":"amazon","enum":["amazon","apple","auth0","authentik","autodesk","bitbucket","bitly","box","dailymotion","discord","disqus","dropbox","etsy","facebook","github","gitlab","google","linkedin","microsoft","notion","oidc","okta","paypal","paypalSandbox","podio","salesforce","slack","spotify","stripe","tradeshift","tradeshiftBox","twitch","wordpress","yahoo","yammer","yandex","zoho","zoom","mock"],"x-enum-name":"OAuthProvider","x-enum-keys":[]},"in":"path"},{"name":"success","description":"URL to redirect back to your app after a successful login attempt. Only URLs from hostnames in your project's platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","required":false,"schema":{"type":"string","format":"url","x-example":"https:\/\/example.com","default":""},"in":"query"},{"name":"failure","description":"URL to redirect back to your app after a failed login attempt. Only URLs from hostnames in your project's platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","required":false,"schema":{"type":"string","format":"url","x-example":"https:\/\/example.com","default":""},"in":"query"},{"name":"token","description":"Include token credentials in the final redirect, useful for server-side integrations, or when cookies are not available.","required":false,"schema":{"type":"boolean","x-example":false,"default":false},"in":"query"},{"name":"scopes","description":"A list of custom OAuth2 scopes. Check each provider internal docs for a list of supported scopes. Maximum of 100 scopes are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/sessions\/token":{"post":{"summary":"Create session","operationId":"accountCreateSession","tags":["account"],"description":"Use this endpoint to create a session from token. Provide the **userId** and **secret** parameters from the successful response of authentication flows initiated by token creation. For example, magic URL and phone login.","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"createSession","weight":18,"cookies":false,"type":"","demo":"account\/create-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session.md","rate-limit":10,"rate-time":3600,"rate-key":"ip:{ip},userId:{param-userId}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Secret of a token generated by login methods. For example, the `createMagicURLToken` or `createPhoneToken` methods.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/account\/sessions\/{sessionId}":{"get":{"summary":"Get session","operationId":"accountGetSession","tags":["account"],"description":"Use this endpoint to get a logged in user's session using a Session ID. Inputting 'current' will return the current session being used.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"getSession","weight":26,"cookies":false,"type":"","demo":"account\/get-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-session.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/sessions","offline-key":"{sessionId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to get the current device session.","required":true,"schema":{"type":"string","x-example":"[SESSION_ID]"},"in":"path"}]},"patch":{"summary":"Update (or renew) a session","operationId":"accountUpdateSession","tags":["account"],"description":"Extend session's expiry to increase it's lifespan. Extending a session is useful when session length is short such as 5 minutes.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateSession","weight":34,"cookies":false,"type":"","demo":"account\/update-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-session.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to update the current device session.","required":true,"schema":{"type":"string","x-example":"[SESSION_ID]"},"in":"path"}]},"delete":{"summary":"Delete session","operationId":"accountDeleteSession","tags":["account"],"description":"Logout the user. Use 'current' as the session ID to logout on this device, use a session ID to logout on another device. If you're looking to logout the user on all devices, use [Delete Sessions](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#deleteSessions) instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSession","weight":33,"cookies":false,"type":"","demo":"account\/delete-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-session.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to delete the current device session.","required":true,"schema":{"type":"string","x-example":"[SESSION_ID]"},"in":"path"}]}},"\/account\/status":{"patch":{"summary":"Update status","operationId":"accountUpdateStatus","tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateStatus","weight":32,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/account\/targets\/push":{"post":{"summary":"Create a push target","operationId":"accountCreatePushTarget","tags":["account"],"description":"","responses":{"201":{"description":"Target","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/target"}}}}},"x-appwrite":{"method":"createPushTarget","weight":50,"cookies":false,"type":"","demo":"account\/create-push-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"targetId":{"type":"string","description":"Target ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[TARGET_ID]"},"identifier":{"type":"string","description":"The target identifier (token, email, phone etc.)","x-example":"[IDENTIFIER]"},"providerId":{"type":"string","description":"Provider ID. Message will be sent to this target from the specified provider ID. If no provider ID is set the first setup provider will be used.","x-example":"[PROVIDER_ID]"}},"required":["targetId","identifier"]}}}}}},"\/account\/targets\/{targetId}\/push":{"put":{"summary":"Update a push target","operationId":"accountUpdatePushTarget","tags":["account"],"description":"","responses":{"200":{"description":"Target","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/target"}}}}},"x-appwrite":{"method":"updatePushTarget","weight":51,"cookies":false,"type":"","demo":"account\/update-push-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"targetId","description":"Target ID.","required":true,"schema":{"type":"string","x-example":"[TARGET_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"identifier":{"type":"string","description":"The target identifier (token, email, phone etc.)","x-example":"[IDENTIFIER]"}},"required":["identifier"]}}}}},"delete":{"summary":"Delete a push target","operationId":"accountDeletePushTarget","tags":["account"],"description":"","responses":{"204":{"description":"No content","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/target"}}}}},"x-appwrite":{"method":"deletePushTarget","weight":52,"cookies":false,"type":"","demo":"account\/delete-push-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"targetId","description":"Target ID.","required":true,"schema":{"type":"string","x-example":"[TARGET_ID]"},"in":"path"}]}},"\/account\/tokens\/email":{"post":{"summary":"Create email token (OTP)","operationId":"accountCreateEmailToken","tags":["account"],"description":"Sends the user an email with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [POST \/v1\/account\/sessions\/token](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createSession) endpoint to complete the login process. The secret sent to the user's email is valid for 15 minutes.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createEmailToken","weight":16,"cookies":false,"type":"","demo":"account\/create-email-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-token-email.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"phrase":{"type":"boolean","description":"Toggle for security phrase. If enabled, email will be send with a randomly generated phrase and the phrase will also be included in the response. Confirming phrases match increases the security of your authentication flow.","x-example":false}},"required":["userId","email"]}}}}}},"\/account\/tokens\/magic-url":{"post":{"summary":"Create magic URL token","operationId":"accountCreateMagicURLToken","tags":["account"],"description":"Sends the user an email with a secret key for creating a session. If the provided user ID has not been registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [POST \/v1\/account\/sessions\/token](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createSession) endpoint to complete the login process. The link sent to the user's email address is valid for 1 hour. If you are on a mobile device you can leave the URL parameter empty, so that the login completion will be handled by your Appwrite instance by default.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).\n","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createMagicURLToken","weight":15,"cookies":false,"type":"","demo":"account\/create-magic-u-r-l-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-token-magic-url.md","rate-limit":60,"rate-time":3600,"rate-key":["url:{url},email:{param-email}","url:{url},ip:{ip}"],"scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"url":{"type":"string","description":"URL to redirect the user back to your app from the magic URL login. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"},"phrase":{"type":"boolean","description":"Toggle for security phrase. If enabled, email will be send with a randomly generated phrase and the phrase will also be included in the response. Confirming phrases match increases the security of your authentication flow.","x-example":false}},"required":["userId","email"]}}}}}},"\/account\/tokens\/phone":{"post":{"summary":"Create phone token","operationId":"accountCreatePhoneToken","tags":["account"],"description":"Sends the user an SMS with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [POST \/v1\/account\/sessions\/token](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createSession) endpoint to complete the login process. The secret sent to the user's phone is valid for 15 minutes.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createPhoneToken","weight":19,"cookies":false,"type":"","demo":"account\/create-phone-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-token-phone.md","rate-limit":10,"rate-time":3600,"rate-key":["url:{url},phone:{param-phone}","url:{url},ip:{ip}"],"scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"}},"required":["userId","phone"]}}}}}},"\/account\/verification":{"post":{"summary":"Create email verification","operationId":"accountCreateVerification","tags":["account"],"description":"Use this endpoint to send a verification message to your user email address to confirm they are the valid owners of that address. Both the **userId** and **secret** arguments will be passed as query parameters to the URL you have provided to be attached to the verification email. The provided URL should redirect the user back to your app and allow you to complete the verification process by verifying both the **userId** and **secret** parameters. Learn more about how to [complete the verification process](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateVerification). The verification link sent to the user's email address is valid for 7 days.\n\nPlease note that in order to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md), the only valid redirect URLs are the ones from domains you have set when adding your platforms in the console interface.\n","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createVerification","weight":38,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"url":{"type":"string","description":"URL to redirect the user back to your app from the verification email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"}},"required":["url"]}}}}},"put":{"summary":"Create email verification (confirmation)","operationId":"accountUpdateVerification","tags":["account"],"description":"Use this endpoint to complete the user email verification process. Use both the **userId** and **secret** parameters that were attached to your app URL to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"updateVerification","weight":39,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/account\/verification\/phone":{"post":{"summary":"Create phone verification","operationId":"accountCreatePhoneVerification","tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updatePhone) endpoint. Learn more about how to [complete the verification process](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createPhoneVerification","weight":40,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":["url:{url},userId:{userId}","url:{url},ip:{ip}"],"scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"put":{"summary":"Create phone verification (confirmation)","operationId":"accountUpdatePhoneVerification","tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"updatePhoneVerification","weight":41,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/avatars\/browsers\/{code}":{"get":{"summary":"Get browser icon","operationId":"avatarsGetBrowser","tags":["avatars"],"description":"You can use this endpoint to show different browser icons to your users. The code argument receives the browser code as it appears in your user [GET \/account\/sessions](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#getSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getBrowser","weight":54,"cookies":false,"type":"location","demo":"avatars\/get-browser.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-browser.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Browser Code.","required":true,"schema":{"type":"string","x-example":"aa","enum":["aa","an","ch","ci","cm","cr","ff","sf","mf","ps","oi","om","op","on"],"x-enum-name":"Browser","x-enum-keys":["Avant Browser","Android WebView Beta","Google Chrome","Google Chrome (iOS)","Google Chrome (Mobile)","Chromium","Mozilla Firefox","Safari","Mobile Safari","Microsoft Edge","Microsoft Edge (iOS)","Opera Mini","Opera","Opera (Next)"]},"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"}]}},"\/avatars\/credit-cards\/{code}":{"get":{"summary":"Get credit card icon","operationId":"avatarsGetCreditCard","tags":["avatars"],"description":"The credit card endpoint will return you the icon of the credit card provider you need. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getCreditCard","weight":53,"cookies":false,"type":"location","demo":"avatars\/get-credit-card.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-credit-card.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Credit Card Code. Possible values: amex, argencard, cabal, censosud, diners, discover, elo, hipercard, jcb, mastercard, naranja, targeta-shopping, union-china-pay, visa, mir, maestro.","required":true,"schema":{"type":"string","x-example":"amex","enum":["amex","argencard","cabal","censosud","diners","discover","elo","hipercard","jcb","mastercard","naranja","targeta-shopping","union-china-pay","visa","mir","maestro"],"x-enum-name":"CreditCard","x-enum-keys":["American Express","Argencard","Cabal","Consosud","Diners Club","Discover","Elo","Hipercard","JCB","Mastercard","Naranja","Tarjeta Shopping","Union China Pay","Visa","MIR","Maestro"]},"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"}]}},"\/avatars\/favicon":{"get":{"summary":"Get favicon","operationId":"avatarsGetFavicon","tags":["avatars"],"description":"Use this endpoint to fetch the favorite icon (AKA favicon) of any remote website URL.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFavicon","weight":57,"cookies":false,"type":"location","demo":"avatars\/get-favicon.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-favicon.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"url","description":"Website URL which you want to fetch the favicon from.","required":true,"schema":{"type":"string","format":"url","x-example":"https:\/\/example.com"},"in":"query"}]}},"\/avatars\/flags\/{code}":{"get":{"summary":"Get country flag","operationId":"avatarsGetFlag","tags":["avatars"],"description":"You can use this endpoint to show different country flags icons to your users. The code argument receives the 2 letter country code. Use width, height and quality arguments to change the output settings. Country codes follow the [ISO 3166-1](https:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFlag","weight":55,"cookies":false,"type":"location","demo":"avatars\/get-flag.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-flag.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Country Code. ISO Alpha-2 country code format.","required":true,"schema":{"type":"string","x-example":"af","enum":["af","ao","al","ad","ae","ar","am","ag","au","at","az","bi","be","bj","bf","bd","bg","bh","bs","ba","by","bz","bo","br","bb","bn","bt","bw","cf","ca","ch","cl","cn","ci","cm","cd","cg","co","km","cv","cr","cu","cy","cz","de","dj","dm","dk","do","dz","ec","eg","er","es","ee","et","fi","fj","fr","fm","ga","gb","ge","gh","gn","gm","gw","gq","gr","gd","gt","gy","hn","hr","ht","hu","id","in","ie","ir","iq","is","il","it","jm","jo","jp","kz","ke","kg","kh","ki","kn","kr","kw","la","lb","lr","ly","lc","li","lk","ls","lt","lu","lv","ma","mc","md","mg","mv","mx","mh","mk","ml","mt","mm","me","mn","mz","mr","mu","mw","my","na","ne","ng","ni","nl","no","np","nr","nz","om","pk","pa","pe","ph","pw","pg","pl","kp","pt","py","qa","ro","ru","rw","sa","sd","sn","sg","sb","sl","sv","sm","so","rs","ss","st","sr","sk","si","se","sz","sc","sy","td","tg","th","tj","tm","tl","to","tt","tn","tr","tv","tz","ug","ua","uy","us","uz","va","vc","ve","vn","vu","ws","ye","za","zm","zw"],"x-enum-name":"Flag","x-enum-keys":["Afghanistan","Angola","Albania","Andorra","United Arab Emirates","Argentina","Armenia","Antigua and Barbuda","Australia","Austria","Azerbaijan","Burundi","Belgium","Benin","Burkina Faso","Bangladesh","Bulgaria","Bahrain","Bahamas","Bosnia and Herzegovina","Belarus","Belize","Bolivia","Brazil","Barbados","Brunei Darussalam","Bhutan","Botswana","Central African Republic","Canada","Switzerland","Chile","China","C\u00f4te d'Ivoire","Cameroon","Democratic Republic of the Congo","Republic of the Congo","Colombia","Comoros","Cape Verde","Costa Rica","Cuba","Cyprus","Czech Republic","Germany","Djibouti","Dominica","Denmark","Dominican Republic","Algeria","Ecuador","Egypt","Eritrea","Spain","Estonia","Ethiopia","Finland","Fiji","France","Micronesia (Federated States of)","Gabon","United Kingdom","Georgia","Ghana","Guinea","Gambia","Guinea-Bissau","Equatorial Guinea","Greece","Grenada","Guatemala","Guyana","Honduras","Croatia","Haiti","Hungary","Indonesia","India","Ireland","Iran (Islamic Republic of)","Iraq","Iceland","Israel","Italy","Jamaica","Jordan","Japan","Kazakhstan","Kenya","Kyrgyzstan","Cambodia","Kiribati","Saint Kitts and Nevis","South Korea","Kuwait","Lao People's Democratic Republic","Lebanon","Liberia","Libya","Saint Lucia","Liechtenstein","Sri Lanka","Lesotho","Lithuania","Luxembourg","Latvia","Morocco","Monaco","Moldova","Madagascar","Maldives","Mexico","Marshall Islands","North Macedonia","Mali","Malta","Myanmar","Montenegro","Mongolia","Mozambique","Mauritania","Mauritius","Malawi","Malaysia","Namibia","Niger","Nigeria","Nicaragua","Netherlands","Norway","Nepal","Nauru","New Zealand","Oman","Pakistan","Panama","Peru","Philippines","Palau","Papua New Guinea","Poland","North Korea","Portugal","Paraguay","Qatar","Romania","Russia","Rwanda","Saudi Arabia","Sudan","Senegal","Singapore","Solomon Islands","Sierra Leone","El Salvador","San Marino","Somalia","Serbia","South Sudan","Sao Tome and Principe","Suriname","Slovakia","Slovenia","Sweden","Eswatini","Seychelles","Syria","Chad","Togo","Thailand","Tajikistan","Turkmenistan","Timor-Leste","Tonga","Trinidad and Tobago","Tunisia","Turkey","Tuvalu","Tanzania","Uganda","Ukraine","Uruguay","United States","Uzbekistan","Vatican City","Saint Vincent and the Grenadines","Venezuela","Vietnam","Vanuatu","Samoa","Yemen","South Africa","Zambia","Zimbabwe"]},"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"}]}},"\/avatars\/image":{"get":{"summary":"Get image from URL","operationId":"avatarsGetImage","tags":["avatars"],"description":"Use this endpoint to fetch a remote image URL and crop it to any image size you want. This endpoint is very useful if you need to crop and display remote images in your app or in case you want to make sure a 3rd party image is properly served using a TLS protocol.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getImage","weight":56,"cookies":false,"type":"location","demo":"avatars\/get-image.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-image.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"url","description":"Image URL which you want to crop.","required":true,"schema":{"type":"string","format":"url","x-example":"https:\/\/example.com"},"in":"query"},{"name":"width","description":"Resize preview image width, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get user initials","operationId":"avatarsGetInitials","tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getInitials","weight":59,"cookies":false,"type":"location","demo":"avatars\/get-initials.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-initials.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"name","description":"Full Name. When empty, current user name or email will be used. Max length: 128 chars.","required":false,"schema":{"type":"string","x-example":"[NAME]","default":""},"in":"query"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":500},"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":500},"in":"query"},{"name":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"schema":{"type":"string","default":""},"in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR code","operationId":"avatarsGetQR","tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getQR","weight":58,"cookies":false,"type":"location","demo":"avatars\/get-q-r.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-qr.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"text","description":"Plain text to be converted to QR code image.","required":true,"schema":{"type":"string","x-example":"[TEXT]"},"in":"query"},{"name":"size","description":"QR code size. Pass an integer between 1 to 1000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":1,"default":400},"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":1},"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"schema":{"type":"boolean","x-example":false,"default":false},"in":"query"}]}},"\/console\/assistant":{"post":{"summary":"Ask Query","operationId":"assistantChat","tags":["assistant"],"description":"","responses":{"200":{"description":"File"}},"x-appwrite":{"method":"chat","weight":306,"cookies":false,"type":"","demo":"assistant\/chat.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/assistant\/chat.md","rate-limit":15,"rate-time":3600,"rate-key":"userId:{userId}","scope":"assistant.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"prompt":{"type":"string","description":"Prompt. A string containing questions asked to the AI assistant.","x-example":"[PROMPT]"}},"required":["prompt"]}}}}}},"\/console\/variables":{"get":{"summary":"Get variables","operationId":"consoleVariables","tags":["console"],"description":"Get all Environment Variables that are relevant for the console.","responses":{"200":{"description":"Console Variables","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/consoleVariables"}}}}},"x-appwrite":{"method":"variables","weight":305,"cookies":false,"type":"","demo":"console\/variables.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/console\/variables.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/databases":{"get":{"summary":"List databases","operationId":"databasesList","tags":["databases"],"description":"Get a list of all databases from the current Appwrite project. You can use the search parameter to filter your results.","responses":{"200":{"description":"Databases List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/databaseList"}}}}},"x-appwrite":{"method":"list","weight":64,"cookies":false,"type":"","demo":"databases\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create database","operationId":"databasesCreate","tags":["databases"],"description":"Create a new Database.\n","responses":{"201":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"create","weight":63,"cookies":false,"type":"","demo":"databases\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"databaseId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[DATABASE_ID]"},"name":{"type":"string","description":"Database name. Max length: 128 chars.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Is the database enabled? When set to 'disabled', users cannot access the database but Server SDKs with an API key can still read and write to the database. No data is lost when this is toggled.","x-example":false}},"required":["databaseId","name"]}}}}}},"\/databases\/usage":{"get":{"summary":"Get usage stats for the database","operationId":"databasesGetUsage","tags":["databases"],"description":"","responses":{"200":{"description":"UsageDatabases","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageDatabases"}}}}},"x-appwrite":{"method":"getUsage","weight":108,"cookies":false,"type":"","demo":"databases\/get-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"`Date range.","required":false,"schema":{"type":"string","x-example":"24h","enum":["24h","30d","90d"],"x-enum-name":"DatabaseUsageRange","x-enum-keys":["Twenty Four Hours","Thirty Days","Ninety Days"],"default":"30d"},"in":"query"}]}},"\/databases\/{databaseId}":{"get":{"summary":"Get database","operationId":"databasesGet","tags":["databases"],"description":"Get a database by its unique ID. This endpoint response returns a JSON object with the database metadata.","responses":{"200":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"get","weight":65,"cookies":false,"type":"","demo":"databases\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}]},"put":{"summary":"Update database","operationId":"databasesUpdate","tags":["databases"],"description":"Update a database by its unique ID.","responses":{"200":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"update","weight":67,"cookies":false,"type":"","demo":"databases\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Database name. Max length: 128 chars.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Is database enabled? When set to 'disabled', users cannot access the database but Server SDKs with an API key can still read and write to the database. No data is lost when this is toggled.","x-example":false}},"required":["name"]}}}}},"delete":{"summary":"Delete database","operationId":"databasesDelete","tags":["databases"],"description":"Delete a database by its unique ID. Only API keys with with databases.write scope can delete a database.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":68,"cookies":false,"type":"","demo":"databases\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections":{"get":{"summary":"List collections","operationId":"databasesListCollections","tags":["databases"],"description":"Get a list of all collections that belong to the provided databaseId. You can use the search parameter to filter your results.","responses":{"200":{"description":"Collections List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collectionList"}}}}},"x-appwrite":{"method":"listCollections","weight":70,"cookies":false,"type":"","demo":"databases\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, documentSecurity","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create collection","operationId":"databasesCreateCollection","tags":["databases"],"description":"Create a new Collection. Before using this route, you should create a new database resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"createCollection","weight":69,"cookies":false,"type":"","demo":"databases\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permissions strings. By default, no user is granted with any permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":false},"enabled":{"type":"boolean","description":"Is collection enabled? When set to 'disabled', users cannot access the collection but Server SDKs with and API key can still read and write to the collection. No data is lost when this is toggled.","x-example":false}},"required":["collectionId","name"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}":{"get":{"summary":"Get collection","operationId":"databasesGetCollection","tags":["databases"],"description":"Get a collection by its unique ID. This endpoint response returns a JSON object with the collection metadata.","responses":{"200":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"getCollection","weight":71,"cookies":false,"type":"","demo":"databases\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]},"put":{"summary":"Update collection","operationId":"databasesUpdateCollection","tags":["databases"],"description":"Update a collection by its unique ID.","responses":{"200":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"updateCollection","weight":73,"cookies":false,"type":"","demo":"databases\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":false},"enabled":{"type":"boolean","description":"Is collection enabled? When set to 'disabled', users cannot access the collection but Server SDKs with and API key can still read and write to the collection. No data is lost when this is toggled.","x-example":false}},"required":["name"]}}}}},"delete":{"summary":"Delete collection","operationId":"databasesDeleteCollection","tags":["databases"],"description":"Delete a collection by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteCollection","weight":74,"cookies":false,"type":"","demo":"databases\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes":{"get":{"summary":"List attributes","operationId":"databasesListAttributes","tags":["databases"],"description":"","responses":{"200":{"description":"Attributes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeList"}}}}},"x-appwrite":{"method":"listAttributes","weight":85,"cookies":false,"type":"","demo":"databases\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: key, type, size, required, array, status, error","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create boolean attribute","operationId":"databasesCreateBooleanAttribute","tags":["databases"],"description":"Create a boolean attribute.\n","responses":{"202":{"description":"AttributeBoolean","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeBoolean"}}}}},"x-appwrite":{"method":"createBooleanAttribute","weight":82,"cookies":false,"type":"","demo":"databases\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":false},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean\/{key}":{"patch":{"summary":"Update boolean attribute","operationId":"databasesUpdateBooleanAttribute","tags":["databases"],"description":"","responses":{"200":{"description":"AttributeBoolean","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeBoolean"}}}}},"x-appwrite":{"method":"updateBooleanAttribute","weight":94,"cookies":false,"type":"","demo":"databases\/update-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":false,"x-nullable":true}},"required":["required","default"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/datetime":{"post":{"summary":"Create datetime attribute","operationId":"databasesCreateDatetimeAttribute","tags":["databases"],"description":"","responses":{"202":{"description":"AttributeDatetime","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeDatetime"}}}}},"x-appwrite":{"method":"createDatetimeAttribute","weight":83,"cookies":false,"type":"","demo":"databases\/create-datetime-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-datetime-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for the attribute in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/datetime\/{key}":{"patch":{"summary":"Update dateTime attribute","operationId":"databasesUpdateDatetimeAttribute","tags":["databases"],"description":"","responses":{"200":{"description":"AttributeDatetime","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeDatetime"}}}}},"x-appwrite":{"method":"updateDatetimeAttribute","weight":95,"cookies":false,"type":"","demo":"databases\/update-datetime-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-datetime-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null,"x-nullable":true}},"required":["required","default"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create email attribute","operationId":"databasesCreateEmailAttribute","tags":["databases"],"description":"Create an email attribute.\n","responses":{"202":{"description":"AttributeEmail","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeEmail"}}}}},"x-appwrite":{"method":"createEmailAttribute","weight":76,"cookies":false,"type":"","demo":"databases\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"email@example.com"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/email\/{key}":{"patch":{"summary":"Update email attribute","operationId":"databasesUpdateEmailAttribute","tags":["databases"],"description":"Update an email attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeEmail","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeEmail"}}}}},"x-appwrite":{"method":"updateEmailAttribute","weight":88,"cookies":false,"type":"","demo":"databases\/update-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"email@example.com","x-nullable":true}},"required":["required","default"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create enum attribute","operationId":"databasesCreateEnumAttribute","tags":["databases"],"description":"","responses":{"202":{"description":"AttributeEnum","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeEnum"}}}}},"x-appwrite":{"method":"createEnumAttribute","weight":77,"cookies":false,"type":"","demo":"databases\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"elements":{"type":"array","description":"Array of elements in enumerated type. Uses length of longest element to determine size. Maximum of 100 elements are allowed, each 255 characters long.","x-example":null,"items":{"type":"string"}},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","elements","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/enum\/{key}":{"patch":{"summary":"Update enum attribute","operationId":"databasesUpdateEnumAttribute","tags":["databases"],"description":"Update an enum attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeEnum","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeEnum"}}}}},"x-appwrite":{"method":"updateEnumAttribute","weight":89,"cookies":false,"type":"","demo":"databases\/update-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-enum-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"elements":{"type":"array","description":"Array of elements in enumerated type. Uses length of longest element to determine size. Maximum of 100 elements are allowed, each 255 characters long.","x-example":null,"items":{"type":"string"}},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"[DEFAULT]","x-nullable":true}},"required":["elements","required","default"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create float attribute","operationId":"databasesCreateFloatAttribute","tags":["databases"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeFloat","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeFloat"}}}}},"x-appwrite":{"method":"createFloatAttribute","weight":81,"cookies":false,"type":"","demo":"databases\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"min":{"type":"number","description":"Minimum value to enforce on new documents","x-example":null},"max":{"type":"number","description":"Maximum value to enforce on new documents","x-example":null},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/float\/{key}":{"patch":{"summary":"Update float attribute","operationId":"databasesUpdateFloatAttribute","tags":["databases"],"description":"Update a float attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeFloat","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeFloat"}}}}},"x-appwrite":{"method":"updateFloatAttribute","weight":93,"cookies":false,"type":"","demo":"databases\/update-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"min":{"type":"number","description":"Minimum value to enforce on new documents","x-example":null},"max":{"type":"number","description":"Maximum value to enforce on new documents","x-example":null},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null,"x-nullable":true}},"required":["required","min","max","default"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create integer attribute","operationId":"databasesCreateIntegerAttribute","tags":["databases"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeInteger","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeInteger"}}}}},"x-appwrite":{"method":"createIntegerAttribute","weight":80,"cookies":false,"type":"","demo":"databases\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"min":{"type":"integer","description":"Minimum value to enforce on new documents","x-example":null},"max":{"type":"integer","description":"Maximum value to enforce on new documents","x-example":null},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/integer\/{key}":{"patch":{"summary":"Update integer attribute","operationId":"databasesUpdateIntegerAttribute","tags":["databases"],"description":"Update an integer attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeInteger","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeInteger"}}}}},"x-appwrite":{"method":"updateIntegerAttribute","weight":92,"cookies":false,"type":"","demo":"databases\/update-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"min":{"type":"integer","description":"Minimum value to enforce on new documents","x-example":null},"max":{"type":"integer","description":"Maximum value to enforce on new documents","x-example":null},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null,"x-nullable":true}},"required":["required","min","max","default"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP address attribute","operationId":"databasesCreateIpAttribute","tags":["databases"],"description":"Create IP address attribute.\n","responses":{"202":{"description":"AttributeIP","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeIp"}}}}},"x-appwrite":{"method":"createIpAttribute","weight":78,"cookies":false,"type":"","demo":"databases\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/ip\/{key}":{"patch":{"summary":"Update IP address attribute","operationId":"databasesUpdateIpAttribute","tags":["databases"],"description":"Update an ip attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeIP","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeIp"}}}}},"x-appwrite":{"method":"updateIpAttribute","weight":90,"cookies":false,"type":"","demo":"databases\/update-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null,"x-nullable":true}},"required":["required","default"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/relationship":{"post":{"summary":"Create relationship attribute","operationId":"databasesCreateRelationshipAttribute","tags":["databases"],"description":"Create relationship attribute. [Learn more about relationship attributes](https:\/\/appwrite.io\/docs\/databases-relationships#relationship-attributes).\n","responses":{"202":{"description":"AttributeRelationship","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeRelationship"}}}}},"x-appwrite":{"method":"createRelationshipAttribute","weight":84,"cookies":false,"type":"","demo":"databases\/create-relationship-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-relationship-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"relatedCollectionId":{"type":"string","description":"Related Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","x-example":"[RELATED_COLLECTION_ID]"},"type":{"type":"string","description":"Relation type","x-example":"oneToOne","enum":["oneToOne","manyToOne","manyToMany","oneToMany"],"x-enum-name":"RelationshipType","x-enum-keys":[]},"twoWay":{"type":"boolean","description":"Is Two Way?","x-example":false},"key":{"type":"string","description":"Attribute Key.","x-example":null},"twoWayKey":{"type":"string","description":"Two Way Attribute Key.","x-example":null},"onDelete":{"type":"string","description":"Constraints option","x-example":"cascade","enum":["cascade","restrict","setNull"],"x-enum-name":"RelationMutate","x-enum-keys":[]}},"required":["relatedCollectionId","type"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create string attribute","operationId":"databasesCreateStringAttribute","tags":["databases"],"description":"Create a string attribute.\n","responses":{"202":{"description":"AttributeString","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeString"}}}}},"x-appwrite":{"method":"createStringAttribute","weight":75,"cookies":false,"type":"","demo":"databases\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"size":{"type":"integer","description":"Attribute size for text attributes, in number of characters.","x-example":1},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false},"encrypt":{"type":"boolean","description":"Toggle encryption for the attribute. Encryption enhances security by not storing any plain text values in the database. However, encrypted attributes cannot be queried.","x-example":false}},"required":["key","size","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/string\/{key}":{"patch":{"summary":"Update string attribute","operationId":"databasesUpdateStringAttribute","tags":["databases"],"description":"Update a string attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeString","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeString"}}}}},"x-appwrite":{"method":"updateStringAttribute","weight":87,"cookies":false,"type":"","demo":"databases\/update-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"[DEFAULT]","x-nullable":true}},"required":["required","default"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL attribute","operationId":"databasesCreateUrlAttribute","tags":["databases"],"description":"Create a URL attribute.\n","responses":{"202":{"description":"AttributeURL","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeUrl"}}}}},"x-appwrite":{"method":"createUrlAttribute","weight":79,"cookies":false,"type":"","demo":"databases\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"https:\/\/example.com"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url\/{key}":{"patch":{"summary":"Update URL attribute","operationId":"databasesUpdateUrlAttribute","tags":["databases"],"description":"Update an url attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeURL","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeUrl"}}}}},"x-appwrite":{"method":"updateUrlAttribute","weight":91,"cookies":false,"type":"","demo":"databases\/update-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"https:\/\/example.com","x-nullable":true}},"required":["required","default"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get attribute","operationId":"databasesGetAttribute","tags":["databases"],"description":"","responses":{"200":{"description":"AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, or AttributeDatetime, or AttributeRelationship, or AttributeString","content":{"application\/json":{"schema":{"oneOf":[{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeRelationship"},{"$ref":"#\/components\/schemas\/attributeString"}]}}}}},"x-appwrite":{"method":"getAttribute","weight":86,"cookies":false,"type":"","demo":"databases\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}]},"delete":{"summary":"Delete attribute","operationId":"databasesDeleteAttribute","tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":97,"cookies":false,"type":"","demo":"databases\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/{key}\/relationship":{"patch":{"summary":"Update relationship attribute","operationId":"databasesUpdateRelationshipAttribute","tags":["databases"],"description":"Update relationship attribute. [Learn more about relationship attributes](https:\/\/appwrite.io\/docs\/databases-relationships#relationship-attributes).\n","responses":{"200":{"description":"AttributeRelationship","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeRelationship"}}}}},"x-appwrite":{"method":"updateRelationshipAttribute","weight":96,"cookies":false,"type":"","demo":"databases\/update-relationship-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-relationship-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"onDelete":{"type":"string","description":"Constraints option","x-example":"cascade","enum":["cascade","restrict","setNull"],"x-enum-name":"RelationMutate","x-enum-keys":[]}}}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List documents","operationId":"databasesListDocuments","tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/documentList"}}}}},"x-appwrite":{"method":"listDocuments","weight":103,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"post":{"summary":"Create document","operationId":"databasesCreateDocument","tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"createDocument","weight":102,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, only the current user is granted all permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get document","operationId":"databasesGetDocument","tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"getDocument","weight":104,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"patch":{"summary":"Update document","operationId":"databasesUpdateDocument","tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"updateDocument","weight":106,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete document","operationId":"databasesDeleteDocument","tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":107,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}\/logs":{"get":{"summary":"List document logs","operationId":"databasesListDocumentLogs","tags":["databases"],"description":"Get the document activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listDocumentLogs","weight":105,"cookies":false,"type":"","demo":"databases\/list-document-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes":{"get":{"summary":"List indexes","operationId":"databasesListIndexes","tags":["databases"],"description":"","responses":{"200":{"description":"Indexes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/indexList"}}}}},"x-appwrite":{"method":"listIndexes","weight":99,"cookies":false,"type":"","demo":"databases\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: key, type, status, attributes, error","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"post":{"summary":"Create index","operationId":"databasesCreateIndex","tags":["databases"],"description":"","responses":{"202":{"description":"Index","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/index"}}}}},"x-appwrite":{"method":"createIndex","weight":98,"cookies":false,"type":"","demo":"databases\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Index Key.","x-example":null},"type":{"type":"string","description":"Index type.","x-example":"key","enum":["key","fulltext","unique","spatial"],"x-enum-name":"IndexType","x-enum-keys":[]},"attributes":{"type":"array","description":"Array of attributes to index. Maximum of 100 attributes are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders. Maximum of 100 orders are allowed.","x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get index","operationId":"databasesGetIndex","tags":["databases"],"description":"","responses":{"200":{"description":"Index","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/index"}}}}},"x-appwrite":{"method":"getIndex","weight":100,"cookies":false,"type":"","demo":"databases\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Index Key.","required":true,"schema":{"type":"string"},"in":"path"}]},"delete":{"summary":"Delete index","operationId":"databasesDeleteIndex","tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":101,"cookies":false,"type":"","demo":"databases\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Index Key.","required":true,"schema":{"type":"string"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/logs":{"get":{"summary":"List collection logs","operationId":"databasesListCollectionLogs","tags":["databases"],"description":"Get the collection activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listCollectionLogs","weight":72,"cookies":false,"type":"","demo":"databases\/list-collection-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/usage":{"get":{"summary":"Get usage stats for a collection","operationId":"databasesGetCollectionUsage","tags":["databases"],"description":"","responses":{"200":{"description":"UsageCollection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageCollection"}}}}},"x-appwrite":{"method":"getCollectionUsage","weight":110,"cookies":false,"type":"","demo":"databases\/get-collection-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"range","description":"Date range.","required":false,"schema":{"type":"string","x-example":"24h","enum":["24h","30d","90d"],"x-enum-name":"DatabaseUsageRange","x-enum-keys":["Twenty Four Hours","Thirty Days","Ninety Days"],"default":"30d"},"in":"query"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/logs":{"get":{"summary":"List database logs","operationId":"databasesListLogs","tags":["databases"],"description":"Get the database activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listLogs","weight":66,"cookies":false,"type":"","demo":"databases\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/databases\/{databaseId}\/usage":{"get":{"summary":"Get usage stats for the database","operationId":"databasesGetDatabaseUsage","tags":["databases"],"description":"","responses":{"200":{"description":"UsageDatabase","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageDatabase"}}}}},"x-appwrite":{"method":"getDatabaseUsage","weight":109,"cookies":false,"type":"","demo":"databases\/get-database-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"range","description":"`Date range.","required":false,"schema":{"type":"string","x-example":"24h","enum":["24h","30d","90d"],"x-enum-name":"DatabaseUsageRange","x-enum-keys":["Twenty Four Hours","Thirty Days","Ninety Days"],"default":"30d"},"in":"query"}]}},"\/functions":{"get":{"summary":"List functions","operationId":"functionsList","tags":["functions"],"description":"Get a list of all the project's functions. You can use the query params to filter your results.","responses":{"200":{"description":"Functions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/functionList"}}}}},"x-appwrite":{"method":"list","weight":268,"cookies":false,"type":"","demo":"functions\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-functions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, runtime, deployment, schedule, scheduleNext, schedulePrevious, timeout, entrypoint, commands, installationId","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create function","operationId":"functionsCreate","tags":["functions"],"description":"Create a new function. You can pass a list of [permissions](https:\/\/appwrite.io\/docs\/permissions) to allow different project users or team with access to execute the function using the client API.","responses":{"201":{"description":"Function","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/function"}}}}},"x-appwrite":{"method":"create","weight":267,"cookies":false,"type":"","demo":"functions\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"functionId":{"type":"string","description":"Function ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[FUNCTION_ID]"},"name":{"type":"string","description":"Function name. Max length: 128 chars.","x-example":"[NAME]"},"runtime":{"type":"string","description":"Execution runtime.","x-example":"node-14.5","enum":["node-14.5","node-16.0","node-18.0","node-19.0","node-20.0","php-8.0","php-8.1","php-8.2","ruby-3.0","ruby-3.1","ruby-3.2","python-3.8","python-3.9","python-3.10","python-3.11","python-3.12","dart-2.15","dart-2.16","dart-2.17","dart-2.18","dart-3.0","dart-3.1","dotnet-3.1","dotnet-6.0","dotnet-7.0","java-8.0","java-11.0","java-17.0","java-18.0","swift-5.5","swift-5.8","kotlin-1.6","kotlin-1.8","cpp-17","cpp-20","bun-1.0"],"x-enum-name":null,"x-enum-keys":[]},"execute":{"type":"array","description":"An array of role strings with execution permissions. By default no user is granted with any execute permissions. [learn more about roles](https:\/\/appwrite.io\/docs\/permissions#permission-roles). Maximum of 100 roles are allowed, each 64 characters long.","x-example":"[\"any\"]","items":{"type":"string"}},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","x-example":null},"timeout":{"type":"integer","description":"Function maximum execution time in seconds.","x-example":1},"enabled":{"type":"boolean","description":"Is function enabled? When set to 'disabled', users cannot access the function but Server SDKs with and API key can still access the function. No data is lost when this is toggled.","x-example":false},"logging":{"type":"boolean","description":"Whether executions will be logged. When set to false, executions will not be logged, but will reduce resource used by your Appwrite project.","x-example":false},"entrypoint":{"type":"string","description":"Entrypoint File. This path is relative to the \"providerRootDirectory\".","x-example":"[ENTRYPOINT]"},"commands":{"type":"string","description":"Build Commands.","x-example":"[COMMANDS]"},"installationId":{"type":"string","description":"Appwrite Installation ID for VCS (Version Control System) deployment.","x-example":"[INSTALLATION_ID]"},"providerRepositoryId":{"type":"string","description":"Repository ID of the repo linked to the function.","x-example":"[PROVIDER_REPOSITORY_ID]"},"providerBranch":{"type":"string","description":"Production branch for the repo linked to the function.","x-example":"[PROVIDER_BRANCH]"},"providerSilentMode":{"type":"boolean","description":"Is the VCS (Version Control System) connection in silent mode for the repo linked to the function? In silent mode, comments will not be made on commits and pull requests.","x-example":false},"providerRootDirectory":{"type":"string","description":"Path to function code in the linked repo.","x-example":"[PROVIDER_ROOT_DIRECTORY]"},"templateRepository":{"type":"string","description":"Repository name of the template.","x-example":"[TEMPLATE_REPOSITORY]"},"templateOwner":{"type":"string","description":"The name of the owner of the template.","x-example":"[TEMPLATE_OWNER]"},"templateRootDirectory":{"type":"string","description":"Path to function code in the template repo.","x-example":"[TEMPLATE_ROOT_DIRECTORY]"},"templateBranch":{"type":"string","description":"Production branch for the repo linked to the function template.","x-example":"[TEMPLATE_BRANCH]"}},"required":["functionId","name","runtime"]}}}}}},"\/functions\/runtimes":{"get":{"summary":"List runtimes","operationId":"functionsListRuntimes","tags":["functions"],"description":"Get a list of all runtimes that are currently active on your instance.","responses":{"200":{"description":"Runtimes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/runtimeList"}}}}},"x-appwrite":{"method":"listRuntimes","weight":269,"cookies":false,"type":"","demo":"functions\/list-runtimes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-runtimes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/functions\/usage":{"get":{"summary":"Get functions usage","operationId":"functionsGetUsage","tags":["functions"],"description":"","responses":{"200":{"description":"UsageFunctions","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageFunctions"}}}}},"x-appwrite":{"method":"getUsage","weight":272,"cookies":false,"type":"","demo":"functions\/get-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"schema":{"type":"string","x-example":"24h","enum":["24h","30d","90d"],"x-enum-name":"FunctionUsageRange","x-enum-keys":["Twenty Four Hours","Thirty Days","Ninety Days"],"default":"30d"},"in":"query"}]}},"\/functions\/{functionId}":{"get":{"summary":"Get function","operationId":"functionsGet","tags":["functions"],"description":"Get a function by its unique ID.","responses":{"200":{"description":"Function","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/function"}}}}},"x-appwrite":{"method":"get","weight":270,"cookies":false,"type":"","demo":"functions\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}]},"put":{"summary":"Update function","operationId":"functionsUpdate","tags":["functions"],"description":"Update function by its unique ID.","responses":{"200":{"description":"Function","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/function"}}}}},"x-appwrite":{"method":"update","weight":273,"cookies":false,"type":"","demo":"functions\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Function name. Max length: 128 chars.","x-example":"[NAME]"},"runtime":{"type":"string","description":"Execution runtime.","x-example":"node-14.5","enum":["node-14.5","node-16.0","node-18.0","node-19.0","node-20.0","php-8.0","php-8.1","php-8.2","ruby-3.0","ruby-3.1","ruby-3.2","python-3.8","python-3.9","python-3.10","python-3.11","python-3.12","dart-2.15","dart-2.16","dart-2.17","dart-2.18","dart-3.0","dart-3.1","dotnet-3.1","dotnet-6.0","dotnet-7.0","java-8.0","java-11.0","java-17.0","java-18.0","swift-5.5","swift-5.8","kotlin-1.6","kotlin-1.8","cpp-17","cpp-20","bun-1.0"],"x-enum-name":null,"x-enum-keys":[]},"execute":{"type":"array","description":"An array of role strings with execution permissions. By default no user is granted with any execute permissions. [learn more about roles](https:\/\/appwrite.io\/docs\/permissions#permission-roles). Maximum of 100 roles are allowed, each 64 characters long.","x-example":"[\"any\"]","items":{"type":"string"}},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","x-example":null},"timeout":{"type":"integer","description":"Maximum execution time in seconds.","x-example":1},"enabled":{"type":"boolean","description":"Is function enabled? When set to 'disabled', users cannot access the function but Server SDKs with and API key can still access the function. No data is lost when this is toggled.","x-example":false},"logging":{"type":"boolean","description":"Whether executions will be logged. When set to false, executions will not be logged, but will reduce resource used by your Appwrite project.","x-example":false},"entrypoint":{"type":"string","description":"Entrypoint File. This path is relative to the \"providerRootDirectory\".","x-example":"[ENTRYPOINT]"},"commands":{"type":"string","description":"Build Commands.","x-example":"[COMMANDS]"},"installationId":{"type":"string","description":"Appwrite Installation ID for VCS (Version Controle System) deployment.","x-example":"[INSTALLATION_ID]"},"providerRepositoryId":{"type":"string","description":"Repository ID of the repo linked to the function","x-example":"[PROVIDER_REPOSITORY_ID]"},"providerBranch":{"type":"string","description":"Production branch for the repo linked to the function","x-example":"[PROVIDER_BRANCH]"},"providerSilentMode":{"type":"boolean","description":"Is the VCS (Version Control System) connection in silent mode for the repo linked to the function? In silent mode, comments will not be made on commits and pull requests.","x-example":false},"providerRootDirectory":{"type":"string","description":"Path to function code in the linked repo.","x-example":"[PROVIDER_ROOT_DIRECTORY]"}},"required":["name"]}}}}},"delete":{"summary":"Delete function","operationId":"functionsDelete","tags":["functions"],"description":"Delete a function by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":276,"cookies":false,"type":"","demo":"functions\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/deployments":{"get":{"summary":"List deployments","operationId":"functionsListDeployments","tags":["functions"],"description":"Get a list of all the project's code deployments. You can use the query params to filter your results.","responses":{"200":{"description":"Deployments List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deploymentList"}}}}},"x-appwrite":{"method":"listDeployments","weight":278,"cookies":false,"type":"","demo":"functions\/list-deployments.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-deployments.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: size, buildId, activate, entrypoint, commands","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create deployment","operationId":"functionsCreateDeployment","tags":["functions"],"description":"Create a new function code deployment. Use this endpoint to upload a new version of your code function. To execute your newly uploaded code, you'll need to update the function's deployment to use your new deployment UID.\n\nThis endpoint accepts a tar.gz file compressed with your code. Make sure to include any dependencies your code has within the compressed file. You can learn more about code packaging in the [Appwrite Cloud Functions tutorial](https:\/\/appwrite.io\/docs\/functions).\n\nUse the \"command\" param to set the entrypoint used to execute your code.","responses":{"202":{"description":"Deployment","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deployment"}}}}},"x-appwrite":{"method":"createDeployment","weight":277,"cookies":false,"type":"","demo":"functions\/create-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":true,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}],"requestBody":{"content":{"multipart\/form-data":{"schema":{"type":"object","properties":{"entrypoint":{"type":"string","description":"Entrypoint File.","x-example":"[ENTRYPOINT]"},"commands":{"type":"string","description":"Build Commands.","x-example":"[COMMANDS]"},"code":{"type":"string","description":"Gzip file with your code package. When used with the Appwrite CLI, pass the path to your code directory, and the CLI will automatically package your code. Use a path that is within the current directory.","x-example":null},"activate":{"type":"boolean","description":"Automatically activate the deployment when it is finished building.","x-example":false}},"required":["code","activate"]}}}}}},"\/functions\/{functionId}\/deployments\/{deploymentId}":{"get":{"summary":"Get deployment","operationId":"functionsGetDeployment","tags":["functions"],"description":"Get a code deployment by its unique ID.","responses":{"200":{"description":"Deployment","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deployment"}}}}},"x-appwrite":{"method":"getDeployment","weight":279,"cookies":false,"type":"","demo":"functions\/get-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"schema":{"type":"string","x-example":"[DEPLOYMENT_ID]"},"in":"path"}]},"patch":{"summary":"Update function deployment","operationId":"functionsUpdateDeployment","tags":["functions"],"description":"Update the function code deployment ID using the unique function ID. Use this endpoint to switch the code deployment that should be executed by the execution endpoint.","responses":{"200":{"description":"Function","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/function"}}}}},"x-appwrite":{"method":"updateDeployment","weight":275,"cookies":false,"type":"","demo":"functions\/update-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-function-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"schema":{"type":"string","x-example":"[DEPLOYMENT_ID]"},"in":"path"}]},"delete":{"summary":"Delete deployment","operationId":"functionsDeleteDeployment","tags":["functions"],"description":"Delete a code deployment by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDeployment","weight":280,"cookies":false,"type":"","demo":"functions\/delete-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"schema":{"type":"string","x-example":"[DEPLOYMENT_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/deployments\/{deploymentId}\/builds\/{buildId}":{"post":{"summary":"Create build","operationId":"functionsCreateBuild","tags":["functions"],"description":"Create a new build for an Appwrite Function deployment. This endpoint can be used to retry a failed build.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"createBuild","weight":281,"cookies":false,"type":"","demo":"functions\/create-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"schema":{"type":"string","x-example":"[DEPLOYMENT_ID]"},"in":"path"},{"name":"buildId","description":"Build unique ID.","required":true,"schema":{"type":"string","x-example":"[BUILD_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/deployments\/{deploymentId}\/download":{"get":{"summary":"Download Deployment","operationId":"functionsDownloadDeployment","tags":["functions"],"description":"Get a Deployment's contents by its unique ID. This endpoint supports range requests for partial or streaming file download.","responses":{"200":{"description":"File"}},"x-appwrite":{"method":"downloadDeployment","weight":274,"cookies":false,"type":"location","demo":"functions\/download-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/download-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"schema":{"type":"string","x-example":"[DEPLOYMENT_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List executions","operationId":"functionsListExecutions","tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/executionList"}}}}},"x-appwrite":{"method":"listExecutions","weight":283,"cookies":false,"type":"","demo":"functions\/list-executions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-executions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, responseStatusCode, duration","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create execution","operationId":"functionsCreateExecution","tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/execution"}}}}},"x-appwrite":{"method":"createExecution","weight":282,"cookies":false,"type":"","demo":"functions\/create-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-execution.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"body":{"type":"string","description":"HTTP body of execution. Default value is empty string.","x-example":"[BODY]"},"async":{"type":"boolean","description":"Execute code in the background. Default value is false.","x-example":false},"path":{"type":"string","description":"HTTP path of execution. Path can include query params. Default value is \/","x-example":"[PATH]"},"method":{"type":"string","description":"HTTP method of execution. Default value is GET.","x-example":"GET","enum":["GET","POST","PUT","PATCH","DELETE","OPTIONS"],"x-enum-name":"ExecutionMethod","x-enum-keys":[]},"headers":{"type":"object","description":"HTTP headers of execution. Defaults to empty.","x-example":"{}"}}}}}}}},"\/functions\/{functionId}\/executions\/{executionId}":{"get":{"summary":"Get execution","operationId":"functionsGetExecution","tags":["functions"],"description":"Get a function execution log by its unique ID.","responses":{"200":{"description":"Execution","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/execution"}}}}},"x-appwrite":{"method":"getExecution","weight":284,"cookies":false,"type":"","demo":"functions\/get-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-execution.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"executionId","description":"Execution ID.","required":true,"schema":{"type":"string","x-example":"[EXECUTION_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/usage":{"get":{"summary":"Get function usage","operationId":"functionsGetFunctionUsage","tags":["functions"],"description":"","responses":{"200":{"description":"UsageFunction","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageFunction"}}}}},"x-appwrite":{"method":"getFunctionUsage","weight":271,"cookies":false,"type":"","demo":"functions\/get-function-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"range","description":"Date range.","required":false,"schema":{"type":"string","x-example":"24h","enum":["24h","30d","90d"],"x-enum-name":"FunctionUsageRange","x-enum-keys":["Twenty Four Hours","Thirty Days","Ninety Days"],"default":"30d"},"in":"query"}]}},"\/functions\/{functionId}\/variables":{"get":{"summary":"List variables","operationId":"functionsListVariables","tags":["functions"],"description":"Get a list of all variables of a specific function.","responses":{"200":{"description":"Variables List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variableList"}}}}},"x-appwrite":{"method":"listVariables","weight":286,"cookies":false,"type":"","demo":"functions\/list-variables.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-variables.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}]},"post":{"summary":"Create variable","operationId":"functionsCreateVariable","tags":["functions"],"description":"Create a new function environment variable. These variables can be accessed in the function at runtime as environment variables.","responses":{"201":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"createVariable","weight":285,"cookies":false,"type":"","demo":"functions\/create-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","x-example":"[VALUE]"}},"required":["key","value"]}}}}}},"\/functions\/{functionId}\/variables\/{variableId}":{"get":{"summary":"Get variable","operationId":"functionsGetVariable","tags":["functions"],"description":"Get a variable by its unique ID.","responses":{"200":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"getVariable","weight":287,"cookies":false,"type":"","demo":"functions\/get-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}]},"put":{"summary":"Update variable","operationId":"functionsUpdateVariable","tags":["functions"],"description":"Update variable by its unique ID.","responses":{"200":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"updateVariable","weight":288,"cookies":false,"type":"","demo":"functions\/update-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","x-example":"[VALUE]"}},"required":["key"]}}}}},"delete":{"summary":"Delete variable","operationId":"functionsDeleteVariable","tags":["functions"],"description":"Delete a variable by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteVariable","weight":289,"cookies":false,"type":"","demo":"functions\/delete-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}]}},"\/graphql":{"post":{"summary":"GraphQL endpoint","operationId":"graphqlQuery","tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/any"}}}}},"x-appwrite":{"method":"query","weight":304,"cookies":false,"type":"graphql","demo":"graphql\/query.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/graphql\/mutation":{"post":{"summary":"GraphQL endpoint","operationId":"graphqlMutation","tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/any"}}}}},"x-appwrite":{"method":"mutation","weight":303,"cookies":false,"type":"graphql","demo":"graphql\/mutation.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/health":{"get":{"summary":"Get HTTP","operationId":"healthGet","tags":["health"],"description":"Check the Appwrite HTTP server is up and responsive.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"get","weight":119,"cookies":false,"type":"","demo":"health\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/anti-virus":{"get":{"summary":"Get antivirus","operationId":"healthGetAntivirus","tags":["health"],"description":"Check the Appwrite Antivirus server is up and connection is successful.","responses":{"200":{"description":"Health Antivirus","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthAntivirus"}}}}},"x-appwrite":{"method":"getAntivirus","weight":138,"cookies":false,"type":"","demo":"health\/get-antivirus.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-storage-anti-virus.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/cache":{"get":{"summary":"Get cache","operationId":"healthGetCache","tags":["health"],"description":"Check the Appwrite in-memory cache servers are up and connection is successful.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"getCache","weight":122,"cookies":false,"type":"","demo":"health\/get-cache.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-cache.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/certificate":{"get":{"summary":"Get the SSL certificate for a domain","operationId":"healthGetCertificate","tags":["health"],"description":"Get the SSL certificate for a domain","responses":{"200":{"description":"Health Certificate","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthCertificate"}}}}},"x-appwrite":{"method":"getCertificate","weight":128,"cookies":false,"type":"","demo":"health\/get-certificate.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-certificate.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"domain","description":"string","required":false,"schema":{"type":"string"},"in":"query"}]}},"\/health\/db":{"get":{"summary":"Get DB","operationId":"healthGetDB","tags":["health"],"description":"Check the Appwrite database servers are up and connection is successful.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"getDB","weight":121,"cookies":false,"type":"","demo":"health\/get-d-b.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-db.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/pubsub":{"get":{"summary":"Get pubsub","operationId":"healthGetPubSub","tags":["health"],"description":"Check the Appwrite pub-sub servers are up and connection is successful.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"getPubSub","weight":124,"cookies":false,"type":"","demo":"health\/get-pub-sub.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-pubsub.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/queue":{"get":{"summary":"Get queue","operationId":"healthGetQueue","tags":["health"],"description":"Check the Appwrite queue messaging servers are up and connection is successful.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"getQueue","weight":123,"cookies":false,"type":"","demo":"health\/get-queue.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/queue\/builds":{"get":{"summary":"Get builds queue","operationId":"healthGetQueueBuilds","tags":["health"],"description":"Get the number of builds that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueBuilds","weight":130,"cookies":false,"type":"","demo":"health\/get-queue-builds.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-builds.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/certificates":{"get":{"summary":"Get certificates queue","operationId":"healthGetQueueCertificates","tags":["health"],"description":"Get the number of certificates that are waiting to be issued against [Letsencrypt](https:\/\/letsencrypt.org\/) in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueCertificates","weight":129,"cookies":false,"type":"","demo":"health\/get-queue-certificates.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-certificates.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/databases":{"get":{"summary":"Get databases queue","operationId":"healthGetQueueDatabases","tags":["health"],"description":"Get the number of database changes that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueDatabases","weight":131,"cookies":false,"type":"","demo":"health\/get-queue-databases.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-databases.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"name","description":"Queue name for which to check the queue size","required":false,"schema":{"type":"string","x-example":"[NAME]","default":"database_db_main"},"in":"query"},{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/deletes":{"get":{"summary":"Get deletes queue","operationId":"healthGetQueueDeletes","tags":["health"],"description":"Get the number of background destructive changes that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueDeletes","weight":132,"cookies":false,"type":"","demo":"health\/get-queue-deletes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-deletes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/failed\/{name}":{"get":{"summary":"Get number of failed queue jobs","operationId":"healthGetFailedJobs","tags":["health"],"description":"Returns the amount of failed jobs in a given queue.\n","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getFailedJobs","weight":139,"cookies":false,"type":"","demo":"health\/get-failed-jobs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-failed-queue-jobs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"name","description":"The name of the queue","required":true,"schema":{"type":"string","x-example":"v1-database","enum":["v1-database","v1-deletes","v1-audits","v1-mails","v1-functions","v1-usage","webhooksv1","v1-certificates","v1-builds","v1-messaging","v1-migrations","hamsterv1"],"x-enum-name":null,"x-enum-keys":[]},"in":"path"},{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/functions":{"get":{"summary":"Get functions queue","operationId":"healthGetQueueFunctions","tags":["health"],"description":"","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueFunctions","weight":136,"cookies":false,"type":"","demo":"health\/get-queue-functions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-functions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/logs":{"get":{"summary":"Get logs queue","operationId":"healthGetQueueLogs","tags":["health"],"description":"Get the number of logs that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueLogs","weight":127,"cookies":false,"type":"","demo":"health\/get-queue-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/mails":{"get":{"summary":"Get mails queue","operationId":"healthGetQueueMails","tags":["health"],"description":"Get the number of mails that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueMails","weight":133,"cookies":false,"type":"","demo":"health\/get-queue-mails.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-mails.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/messaging":{"get":{"summary":"Get messaging queue","operationId":"healthGetQueueMessaging","tags":["health"],"description":"Get the number of messages that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueMessaging","weight":134,"cookies":false,"type":"","demo":"health\/get-queue-messaging.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-messaging.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/migrations":{"get":{"summary":"Get migrations queue","operationId":"healthGetQueueMigrations","tags":["health"],"description":"Get the number of migrations that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueMigrations","weight":135,"cookies":false,"type":"","demo":"health\/get-queue-migrations.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-migrations.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/webhooks":{"get":{"summary":"Get webhooks queue","operationId":"healthGetQueueWebhooks","tags":["health"],"description":"Get the number of webhooks that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueWebhooks","weight":126,"cookies":false,"type":"","demo":"health\/get-queue-webhooks.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-webhooks.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/storage\/local":{"get":{"summary":"Get local storage","operationId":"healthGetStorageLocal","tags":["health"],"description":"Check the Appwrite local storage device is up and connection is successful.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"getStorageLocal","weight":137,"cookies":false,"type":"","demo":"health\/get-storage-local.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-storage-local.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/time":{"get":{"summary":"Get time","operationId":"healthGetTime","tags":["health"],"description":"Check the Appwrite server time is synced with Google remote NTP server. We use this technology to smoothly handle leap seconds with no disruptive events. The [Network Time Protocol](https:\/\/en.wikipedia.org\/wiki\/Network_Time_Protocol) (NTP) is used by hundreds of millions of computers and devices to synchronize their clocks over the Internet. If your computer sets its own clock, it likely uses NTP.","responses":{"200":{"description":"Health Time","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthTime"}}}}},"x-appwrite":{"method":"getTime","weight":125,"cookies":false,"type":"","demo":"health\/get-time.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-time.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/locale":{"get":{"summary":"Get user locale","operationId":"localeGet","tags":["locale"],"description":"Get the current user location based on IP. Returns an object with user country code, country name, continent name, continent code, ip address and suggested currency. You can use the locale header to get the data in a supported language.\n\n([IP Geolocation by DB-IP](https:\/\/db-ip.com))","responses":{"200":{"description":"Locale","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/locale"}}}}},"x-appwrite":{"method":"get","weight":111,"cookies":false,"type":"","demo":"locale\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-locale.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/localed","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/codes":{"get":{"summary":"List Locale Codes","operationId":"localeListCodes","tags":["locale"],"description":"List of all locale codes in [ISO 639-1](https:\/\/en.wikipedia.org\/wiki\/List_of_ISO_639-1_codes).","responses":{"200":{"description":"Locale codes list","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/localeCodeList"}}}}},"x-appwrite":{"method":"listCodes","weight":112,"cookies":false,"type":"","demo":"locale\/list-codes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-locale-codes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/localeCode","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/continents":{"get":{"summary":"List continents","operationId":"localeListContinents","tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/continentList"}}}}},"x-appwrite":{"method":"listContinents","weight":116,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/continents","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List countries","operationId":"localeListCountries","tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountries","weight":113,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/countries","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU countries","operationId":"localeListCountriesEU","tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountriesEU","weight":114,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/countries\/eu","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List countries phone codes","operationId":"localeListCountriesPhones","tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/phoneList"}}}}},"x-appwrite":{"method":"listCountriesPhones","weight":115,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/countries\/phones","offline-key":"","offline-response-key":"countryCode","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List currencies","operationId":"localeListCurrencies","tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/currencyList"}}}}},"x-appwrite":{"method":"listCurrencies","weight":117,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/currencies","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List languages","operationId":"localeListLanguages","tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/languageList"}}}}},"x-appwrite":{"method":"listLanguages","weight":118,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/languages","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/messaging\/messages":{"get":{"summary":"List messages","operationId":"messagingListMessages","tags":["messaging"],"description":"","responses":{"200":{"description":"Message list","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/messageList"}}}}},"x-appwrite":{"method":"listMessages","weight":363,"cookies":false,"type":"","demo":"messaging\/list-messages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-messages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: scheduledAt, deliveredAt, deliveredTotal, status, description, providerType","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]}},"\/messaging\/messages\/email":{"post":{"summary":"Create an email.","operationId":"messagingCreateEmail","tags":["messaging"],"description":"","responses":{"201":{"description":"Message","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/message"}}}}},"x-appwrite":{"method":"createEmail","weight":360,"cookies":false,"type":"","demo":"messaging\/create-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"messageId":{"type":"string","description":"Message ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[MESSAGE_ID]"},"subject":{"type":"string","description":"Email Subject.","x-example":"[SUBJECT]"},"content":{"type":"string","description":"Email Content.","x-example":"[CONTENT]"},"topics":{"type":"array","description":"List of Topic IDs.","x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","x-example":null,"items":{"type":"string"}},"cc":{"type":"array","description":"Array of target IDs to be added as CC.","x-example":null,"items":{"type":"string"}},"bcc":{"type":"array","description":"Array of target IDs to be added as BCC.","x-example":null,"items":{"type":"string"}},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":"MessageStatus","x-enum-keys":[]},"html":{"type":"boolean","description":"Is content of type HTML","x-example":false},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","x-example":null}},"required":["messageId","subject","content"]}}}}}},"\/messaging\/messages\/email\/{messageId}":{"patch":{"summary":"Update an email.","operationId":"messagingUpdateEmail","tags":["messaging"],"description":"","responses":{"200":{"description":"Message","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/message"}}}}},"x-appwrite":{"method":"updateEmail","weight":367,"cookies":false,"type":"","demo":"messaging\/update-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"schema":{"type":"string","x-example":"[MESSAGE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"topics":{"type":"array","description":"List of Topic IDs.","x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","x-example":null,"items":{"type":"string"}},"subject":{"type":"string","description":"Email Subject.","x-example":"[SUBJECT]"},"content":{"type":"string","description":"Email Content.","x-example":"[CONTENT]"},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":"MessageStatus","x-enum-keys":[]},"html":{"type":"boolean","description":"Is content of type HTML","x-example":false},"cc":{"type":"array","description":"Array of target IDs to be added as CC.","x-example":null,"items":{"type":"string"}},"bcc":{"type":"array","description":"Array of target IDs to be added as BCC.","x-example":null,"items":{"type":"string"}},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","x-example":null}}}}}}}},"\/messaging\/messages\/push":{"post":{"summary":"Create a push notification.","operationId":"messagingCreatePush","tags":["messaging"],"description":"","responses":{"201":{"description":"Message","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/message"}}}}},"x-appwrite":{"method":"createPush","weight":362,"cookies":false,"type":"","demo":"messaging\/create-push.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-push-notification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"messageId":{"type":"string","description":"Message ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[MESSAGE_ID]"},"title":{"type":"string","description":"Title for push notification.","x-example":"[TITLE]"},"body":{"type":"string","description":"Body for push notification.","x-example":"[BODY]"},"topics":{"type":"array","description":"List of Topic IDs.","x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","x-example":null,"items":{"type":"string"}},"data":{"type":"object","description":"Additional Data for push notification.","x-example":"{}"},"action":{"type":"string","description":"Action for push notification.","x-example":"[ACTION]"},"icon":{"type":"string","description":"Icon for push notification. Available only for Android and Web Platform.","x-example":"[ICON]"},"sound":{"type":"string","description":"Sound for push notification. Available only for Android and IOS Platform.","x-example":"[SOUND]"},"color":{"type":"string","description":"Color for push notification. Available only for Android Platform.","x-example":"[COLOR]"},"tag":{"type":"string","description":"Tag for push notification. Available only for Android Platform.","x-example":"[TAG]"},"badge":{"type":"string","description":"Badge for push notification. Available only for IOS Platform.","x-example":"[BADGE]"},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":"MessageStatus","x-enum-keys":[]},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","x-example":null}},"required":["messageId","title","body"]}}}}}},"\/messaging\/messages\/push\/{messageId}":{"patch":{"summary":"Update a push notification.","operationId":"messagingUpdatePush","tags":["messaging"],"description":"","responses":{"200":{"description":"Message","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/message"}}}}},"x-appwrite":{"method":"updatePush","weight":369,"cookies":false,"type":"","demo":"messaging\/update-push.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-push-notification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"schema":{"type":"string","x-example":"[MESSAGE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"topics":{"type":"array","description":"List of Topic IDs.","x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","x-example":null,"items":{"type":"string"}},"title":{"type":"string","description":"Title for push notification.","x-example":"[TITLE]"},"body":{"type":"string","description":"Body for push notification.","x-example":"[BODY]"},"data":{"type":"object","description":"Additional Data for push notification.","x-example":"{}"},"action":{"type":"string","description":"Action for push notification.","x-example":"[ACTION]"},"icon":{"type":"string","description":"Icon for push notification. Available only for Android and Web platforms.","x-example":"[ICON]"},"sound":{"type":"string","description":"Sound for push notification. Available only for Android and iOS platforms.","x-example":"[SOUND]"},"color":{"type":"string","description":"Color for push notification. Available only for Android platforms.","x-example":"[COLOR]"},"tag":{"type":"string","description":"Tag for push notification. Available only for Android platforms.","x-example":"[TAG]"},"badge":{"type":"integer","description":"Badge for push notification. Available only for iOS platforms.","x-example":null},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":"MessageStatus","x-enum-keys":[]},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","x-example":null}}}}}}}},"\/messaging\/messages\/sms":{"post":{"summary":"Create an SMS.","operationId":"messagingCreateSMS","tags":["messaging"],"description":"","responses":{"201":{"description":"Message","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/message"}}}}},"x-appwrite":{"method":"createSMS","weight":361,"cookies":false,"type":"","demo":"messaging\/create-s-m-s.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-sms.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"messageId":{"type":"string","description":"Message ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[MESSAGE_ID]"},"content":{"type":"string","description":"SMS Content.","x-example":"[CONTENT]"},"topics":{"type":"array","description":"List of Topic IDs.","x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","x-example":null,"items":{"type":"string"}},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":"MessageStatus","x-enum-keys":[]},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","x-example":null}},"required":["messageId","content"]}}}}}},"\/messaging\/messages\/sms\/{messageId}":{"patch":{"summary":"Update an SMS.","operationId":"messagingUpdateSMS","tags":["messaging"],"description":"","responses":{"200":{"description":"Message","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/message"}}}}},"x-appwrite":{"method":"updateSMS","weight":368,"cookies":false,"type":"","demo":"messaging\/update-s-m-s.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"schema":{"type":"string","x-example":"[MESSAGE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"topics":{"type":"array","description":"List of Topic IDs.","x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","x-example":null,"items":{"type":"string"}},"content":{"type":"string","description":"Email Content.","x-example":"[CONTENT]"},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":"MessageStatus","x-enum-keys":[]},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","x-example":null}}}}}}}},"\/messaging\/messages\/{messageId}":{"get":{"summary":"Get a message","operationId":"messagingGetMessage","tags":["messaging"],"description":"","responses":{"200":{"description":"Message","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/message"}}}}},"x-appwrite":{"method":"getMessage","weight":366,"cookies":false,"type":"","demo":"messaging\/get-message.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/get-message.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"schema":{"type":"string","x-example":"[MESSAGE_ID]"},"in":"path"}]},"delete":{"summary":"Delete a message","operationId":"messagingDelete","tags":["messaging"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":370,"cookies":false,"type":"","demo":"messaging\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-message.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"schema":{"type":"string","x-example":"[MESSAGE_ID]"},"in":"path"}]}},"\/messaging\/messages\/{messageId}\/logs":{"get":{"summary":"List message logs","operationId":"messagingListMessageLogs","tags":["messaging"],"description":"","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listMessageLogs","weight":364,"cookies":false,"type":"","demo":"messaging\/list-message-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/messages\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"schema":{"type":"string","x-example":"[MESSAGE_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/messaging\/messages\/{messageId}\/targets":{"get":{"summary":"List message targets","operationId":"messagingListTargets","tags":["messaging"],"description":"List the targets associated with a message as set via the targets attribute.","responses":{"200":{"description":"Target list","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/targetList"}}}}},"x-appwrite":{"method":"listTargets","weight":365,"cookies":false,"type":"","demo":"messaging\/list-targets.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-message-targets.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"schema":{"type":"string","x-example":"[MESSAGE_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, providerId, identifier, providerType","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/messaging\/providers":{"get":{"summary":"List providers","operationId":"messagingListProviders","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider list","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/providerList"}}}}},"x-appwrite":{"method":"listProviders","weight":335,"cookies":false,"type":"","demo":"messaging\/list-providers.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-providers.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, provider, type, enabled","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]}},"\/messaging\/providers\/apns":{"post":{"summary":"Create APNS provider","operationId":"messagingCreateAPNSProvider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createAPNSProvider","weight":334,"cookies":false,"type":"","demo":"messaging\/create-a-p-n-s-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-apns-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"authKey":{"type":"string","description":"APNS authentication key.","x-example":"[AUTH_KEY]"},"authKeyId":{"type":"string","description":"APNS authentication key ID.","x-example":"[AUTH_KEY_ID]"},"teamId":{"type":"string","description":"APNS team ID.","x-example":"[TEAM_ID]"},"bundleId":{"type":"string","description":"APNS bundle ID.","x-example":"[BUNDLE_ID]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name"]}}}}}},"\/messaging\/providers\/apns\/{providerId}":{"patch":{"summary":"Update APNS provider","operationId":"messagingUpdateAPNSProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateAPNSProvider","weight":347,"cookies":false,"type":"","demo":"messaging\/update-a-p-n-s-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-apns-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"authKey":{"type":"string","description":"APNS authentication key.","x-example":"[AUTH_KEY]"},"authKeyId":{"type":"string","description":"APNS authentication key ID.","x-example":"[AUTH_KEY_ID]"},"teamId":{"type":"string","description":"APNS team ID.","x-example":"[TEAM_ID]"},"bundleId":{"type":"string","description":"APNS bundle ID.","x-example":"[BUNDLE_ID]"}}}}}}}},"\/messaging\/providers\/fcm":{"post":{"summary":"Create FCM provider","operationId":"messagingCreateFCMProvider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createFCMProvider","weight":333,"cookies":false,"type":"","demo":"messaging\/create-f-c-m-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-fcm-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"serviceAccountJSON":{"type":"object","description":"FCM service account JSON.","x-example":"{}"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name"]}}}}}},"\/messaging\/providers\/fcm\/{providerId}":{"patch":{"summary":"Update FCM provider","operationId":"messagingUpdateFCMProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateFCMProvider","weight":346,"cookies":false,"type":"","demo":"messaging\/update-f-c-m-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-fcm-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"serviceAccountJSON":{"type":"object","description":"FCM service account JSON.","x-example":"{}"}}}}}}}},"\/messaging\/providers\/mailgun":{"post":{"summary":"Create Mailgun provider","operationId":"messagingCreateMailgunProvider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createMailgunProvider","weight":325,"cookies":false,"type":"","demo":"messaging\/create-mailgun-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-mailgun-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"apiKey":{"type":"string","description":"Mailgun API Key.","x-example":"[API_KEY]"},"domain":{"type":"string","description":"Mailgun Domain.","x-example":"[DOMAIN]"},"isEuRegion":{"type":"boolean","description":"Set as EU region.","x-example":false},"fromName":{"type":"string","description":"Sender Name.","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the reply to field for the mail. Default value is sender name. Reply to name must have reply to email as well.","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the reply to field for the mail. Default value is sender email. Reply to email must have reply to name as well.","x-example":"email@example.com"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name"]}}}}}},"\/messaging\/providers\/mailgun\/{providerId}":{"patch":{"summary":"Update Mailgun provider","operationId":"messagingUpdateMailgunProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateMailgunProvider","weight":338,"cookies":false,"type":"","demo":"messaging\/update-mailgun-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-mailgun-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"apiKey":{"type":"string","description":"Mailgun API Key.","x-example":"[API_KEY]"},"domain":{"type":"string","description":"Mailgun Domain.","x-example":"[DOMAIN]"},"isEuRegion":{"type":"boolean","description":"Set as EU region.","x-example":false},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"fromName":{"type":"string","description":"Sender Name.","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the reply to field for the mail. Default value is sender name.","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the reply to field for the mail. Default value is sender email.","x-example":"[REPLY_TO_EMAIL]"}}}}}}}},"\/messaging\/providers\/msg91":{"post":{"summary":"Create Msg91 provider","operationId":"messagingCreateMsg91Provider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createMsg91Provider","weight":328,"cookies":false,"type":"","demo":"messaging\/create-msg91provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-msg91-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"senderId":{"type":"string","description":"Msg91 Sender ID.","x-example":"[SENDER_ID]"},"authKey":{"type":"string","description":"Msg91 Auth Key.","x-example":"[AUTH_KEY]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name"]}}}}}},"\/messaging\/providers\/msg91\/{providerId}":{"patch":{"summary":"Update Msg91 provider","operationId":"messagingUpdateMsg91Provider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateMsg91Provider","weight":341,"cookies":false,"type":"","demo":"messaging\/update-msg91provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-msg91-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"senderId":{"type":"string","description":"Msg91 Sender ID.","x-example":"[SENDER_ID]"},"authKey":{"type":"string","description":"Msg91 Auth Key.","x-example":"[AUTH_KEY]"},"from":{"type":"string","description":"Sender number.","x-example":"[FROM]"}}}}}}}},"\/messaging\/providers\/sendgrid":{"post":{"summary":"Create Sendgrid provider","operationId":"messagingCreateSendgridProvider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createSendgridProvider","weight":326,"cookies":false,"type":"","demo":"messaging\/create-sendgrid-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-sengrid-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"apiKey":{"type":"string","description":"Sendgrid API key.","x-example":"[API_KEY]"},"fromName":{"type":"string","description":"Sender Name.","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the reply to field for the mail. Default value is sender name.","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the reply to field for the mail. Default value is sender email.","x-example":"email@example.com"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name"]}}}}}},"\/messaging\/providers\/sendgrid\/{providerId}":{"patch":{"summary":"Update Sendgrid provider","operationId":"messagingUpdateSendgridProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateSendgridProvider","weight":339,"cookies":false,"type":"","demo":"messaging\/update-sendgrid-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-sendgrid-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"apiKey":{"type":"string","description":"Sendgrid API key.","x-example":"[API_KEY]"},"fromName":{"type":"string","description":"Sender Name.","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the Reply To field for the mail. Default value is Sender Name.","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the Reply To field for the mail. Default value is Sender Email.","x-example":"[REPLY_TO_EMAIL]"}}}}}}}},"\/messaging\/providers\/smtp":{"post":{"summary":"Create SMTP provider","operationId":"messagingCreateSMTPProvider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createSMTPProvider","weight":327,"cookies":false,"type":"","demo":"messaging\/create-s-m-t-p-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-smtp-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"host":{"type":"string","description":"SMTP hosts. Either a single hostname or multiple semicolon-delimited hostnames. You can also specify a different port for each host by using this format: [hostname:port] (e.g. \"smtp1.example.com:25;smtp2.example.com\"). You can also specify encryption type, for example: (e.g. \"tls:\/\/smtp1.example.com:587;ssl:\/\/smtp2.example.com:465\"). Hosts will be tried in order.","x-example":"[HOST]"},"port":{"type":"integer","description":"The default SMTP server port.","x-example":1},"username":{"type":"string","description":"Authentication username.","x-example":"[USERNAME]"},"password":{"type":"string","description":"Authentication password.","x-example":"[PASSWORD]"},"encryption":{"type":"string","description":"Encryption type. Can be omitted, 'ssl', or 'tls'","x-example":"none","enum":["none","ssl","tls"],"x-enum-name":"SMTPEncryption","x-enum-keys":[]},"autoTLS":{"type":"boolean","description":"Enable SMTP AutoTLS feature.","x-example":false},"mailer":{"type":"string","description":"The value to use for the X-Mailer header.","x-example":"[MAILER]"},"fromName":{"type":"string","description":"Sender Name.","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the reply to field for the mail. Default value is sender name.","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the reply to field for the mail. Default value is sender email.","x-example":"email@example.com"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name","host"]}}}}}},"\/messaging\/providers\/smtp\/{providerId}":{"patch":{"summary":"Update SMTP provider","operationId":"messagingUpdateSMTPProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateSMTPProvider","weight":340,"cookies":false,"type":"","demo":"messaging\/update-s-m-t-p-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-smtp-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"host":{"type":"string","description":"SMTP hosts. Either a single hostname or multiple semicolon-delimited hostnames. You can also specify a different port for each host by using this format: [hostname:port] (e.g. \"smtp1.example.com:25;smtp2.example.com\"). You can also specify encryption type, for example: (e.g. \"tls:\/\/smtp1.example.com:587;ssl:\/\/smtp2.example.com:465\"). Hosts will be tried in order.","x-example":"[HOST]"},"port":{"type":"integer","description":"SMTP port.","x-example":1},"username":{"type":"string","description":"Authentication username.","x-example":"[USERNAME]"},"password":{"type":"string","description":"Authentication password.","x-example":"[PASSWORD]"},"encryption":{"type":"string","description":"Encryption type. Can be 'ssl' or 'tls'","x-example":"none","enum":["none","ssl","tls"],"x-enum-name":"SMTPEncryption","x-enum-keys":[]},"autoTLS":{"type":"boolean","description":"Enable SMTP AutoTLS feature.","x-example":false},"mailer":{"type":"string","description":"The value to use for the X-Mailer header.","x-example":"[MAILER]"},"fromName":{"type":"string","description":"Sender Name.","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the Reply To field for the mail. Default value is Sender Name.","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the Reply To field for the mail. Default value is Sender Email.","x-example":"[REPLY_TO_EMAIL]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}}}}}}}},"\/messaging\/providers\/telesign":{"post":{"summary":"Create Telesign provider","operationId":"messagingCreateTelesignProvider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createTelesignProvider","weight":329,"cookies":false,"type":"","demo":"messaging\/create-telesign-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-telesign-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"customerId":{"type":"string","description":"Telesign customer ID.","x-example":"[CUSTOMER_ID]"},"apiKey":{"type":"string","description":"Telesign API key.","x-example":"[API_KEY]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name"]}}}}}},"\/messaging\/providers\/telesign\/{providerId}":{"patch":{"summary":"Update Telesign provider","operationId":"messagingUpdateTelesignProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateTelesignProvider","weight":342,"cookies":false,"type":"","demo":"messaging\/update-telesign-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-telesign-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"customerId":{"type":"string","description":"Telesign customer ID.","x-example":"[CUSTOMER_ID]"},"apiKey":{"type":"string","description":"Telesign API key.","x-example":"[API_KEY]"},"from":{"type":"string","description":"Sender number.","x-example":"[FROM]"}}}}}}}},"\/messaging\/providers\/textmagic":{"post":{"summary":"Create Textmagic provider","operationId":"messagingCreateTextmagicProvider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createTextmagicProvider","weight":330,"cookies":false,"type":"","demo":"messaging\/create-textmagic-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-textmagic-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"username":{"type":"string","description":"Textmagic username.","x-example":"[USERNAME]"},"apiKey":{"type":"string","description":"Textmagic apiKey.","x-example":"[API_KEY]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name"]}}}}}},"\/messaging\/providers\/textmagic\/{providerId}":{"patch":{"summary":"Update Textmagic provider","operationId":"messagingUpdateTextmagicProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateTextmagicProvider","weight":343,"cookies":false,"type":"","demo":"messaging\/update-textmagic-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-textmagic-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"username":{"type":"string","description":"Textmagic username.","x-example":"[USERNAME]"},"apiKey":{"type":"string","description":"Textmagic apiKey.","x-example":"[API_KEY]"},"from":{"type":"string","description":"Sender number.","x-example":"[FROM]"}}}}}}}},"\/messaging\/providers\/twilio":{"post":{"summary":"Create Twilio provider","operationId":"messagingCreateTwilioProvider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createTwilioProvider","weight":331,"cookies":false,"type":"","demo":"messaging\/create-twilio-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-twilio-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"accountSid":{"type":"string","description":"Twilio account secret ID.","x-example":"[ACCOUNT_SID]"},"authToken":{"type":"string","description":"Twilio authentication token.","x-example":"[AUTH_TOKEN]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name"]}}}}}},"\/messaging\/providers\/twilio\/{providerId}":{"patch":{"summary":"Update Twilio provider","operationId":"messagingUpdateTwilioProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateTwilioProvider","weight":344,"cookies":false,"type":"","demo":"messaging\/update-twilio-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-twilio-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"accountSid":{"type":"string","description":"Twilio account secret ID.","x-example":"[ACCOUNT_SID]"},"authToken":{"type":"string","description":"Twilio authentication token.","x-example":"[AUTH_TOKEN]"},"from":{"type":"string","description":"Sender number.","x-example":"[FROM]"}}}}}}}},"\/messaging\/providers\/vonage":{"post":{"summary":"Create Vonage provider","operationId":"messagingCreateVonageProvider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createVonageProvider","weight":332,"cookies":false,"type":"","demo":"messaging\/create-vonage-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-vonage-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"apiKey":{"type":"string","description":"Vonage API key.","x-example":"[API_KEY]"},"apiSecret":{"type":"string","description":"Vonage API secret.","x-example":"[API_SECRET]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name"]}}}}}},"\/messaging\/providers\/vonage\/{providerId}":{"patch":{"summary":"Update Vonage provider","operationId":"messagingUpdateVonageProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateVonageProvider","weight":345,"cookies":false,"type":"","demo":"messaging\/update-vonage-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-vonage-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"apiKey":{"type":"string","description":"Vonage API key.","x-example":"[API_KEY]"},"apiSecret":{"type":"string","description":"Vonage API secret.","x-example":"[API_SECRET]"},"from":{"type":"string","description":"Sender number.","x-example":"[FROM]"}}}}}}}},"\/messaging\/providers\/{providerId}":{"get":{"summary":"Get provider","operationId":"messagingGetProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"getProvider","weight":337,"cookies":false,"type":"","demo":"messaging\/get-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/get-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}]},"delete":{"summary":"Delete provider","operationId":"messagingDeleteProvider","tags":["messaging"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteProvider","weight":348,"cookies":false,"type":"","demo":"messaging\/delete-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}]}},"\/messaging\/providers\/{providerId}\/logs":{"get":{"summary":"List provider logs","operationId":"messagingListProviderLogs","tags":["messaging"],"description":"","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listProviderLogs","weight":336,"cookies":false,"type":"","demo":"messaging\/list-provider-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/providers\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/messaging\/subscribers\/{subscriberId}\/logs":{"get":{"summary":"List subscriber logs","operationId":"messagingListSubscriberLogs","tags":["messaging"],"description":"","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listSubscriberLogs","weight":357,"cookies":false,"type":"","demo":"messaging\/list-subscriber-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/subscribers\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"subscriberId","description":"Subscriber ID.","required":true,"schema":{"type":"string","x-example":"[SUBSCRIBER_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/messaging\/topics":{"get":{"summary":"List topics.","operationId":"messagingListTopics","tags":["messaging"],"description":"","responses":{"200":{"description":"Topic list","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/topicList"}}}}},"x-appwrite":{"method":"listTopics","weight":350,"cookies":false,"type":"","demo":"messaging\/list-topics.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-topics.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, description, emailTotal, smsTotal, pushTotal","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create a topic.","operationId":"messagingCreateTopic","tags":["messaging"],"description":"","responses":{"201":{"description":"Topic","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/topic"}}}}},"x-appwrite":{"method":"createTopic","weight":349,"cookies":false,"type":"","demo":"messaging\/create-topic.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-topic.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"topicId":{"type":"string","description":"Topic ID. Choose a custom Topic ID or a new Topic ID.","x-example":"[TOPIC_ID]"},"name":{"type":"string","description":"Topic Name.","x-example":"[NAME]"},"subscribe":{"type":"array","description":"An array of role strings with subscribe permission. By default all users are granted with any subscribe permission. [learn more about roles](https:\/\/appwrite.io\/docs\/permissions#permission-roles). Maximum of 100 roles are allowed, each 64 characters long.","x-example":"[\"any\"]","items":{"type":"string"}}},"required":["topicId","name"]}}}}}},"\/messaging\/topics\/{topicId}":{"get":{"summary":"Get a topic.","operationId":"messagingGetTopic","tags":["messaging"],"description":"","responses":{"200":{"description":"Topic","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/topic"}}}}},"x-appwrite":{"method":"getTopic","weight":352,"cookies":false,"type":"","demo":"messaging\/get-topic.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/get-topic.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID.","required":true,"schema":{"type":"string","x-example":"[TOPIC_ID]"},"in":"path"}]},"patch":{"summary":"Update a topic.","operationId":"messagingUpdateTopic","tags":["messaging"],"description":"","responses":{"200":{"description":"Topic","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/topic"}}}}},"x-appwrite":{"method":"updateTopic","weight":353,"cookies":false,"type":"","demo":"messaging\/update-topic.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-topic.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID.","required":true,"schema":{"type":"string","x-example":"[TOPIC_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Topic Name.","x-example":"[NAME]"}}}}}}},"delete":{"summary":"Delete a topic.","operationId":"messagingDeleteTopic","tags":["messaging"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteTopic","weight":354,"cookies":false,"type":"","demo":"messaging\/delete-topic.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-topic.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID.","required":true,"schema":{"type":"string","x-example":"[TOPIC_ID]"},"in":"path"}]}},"\/messaging\/topics\/{topicId}\/logs":{"get":{"summary":"List topic logs","operationId":"messagingListTopicLogs","tags":["messaging"],"description":"","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listTopicLogs","weight":351,"cookies":false,"type":"","demo":"messaging\/list-topic-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/topics\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID.","required":true,"schema":{"type":"string","x-example":"[TOPIC_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/messaging\/topics\/{topicId}\/subscribers":{"get":{"summary":"List subscribers.","operationId":"messagingListSubscribers","tags":["messaging"],"description":"","responses":{"200":{"description":"Subscriber list","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/subscriberList"}}}}},"x-appwrite":{"method":"listSubscribers","weight":356,"cookies":false,"type":"","demo":"messaging\/list-subscribers.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-subscribers.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID subscribed to.","required":true,"schema":{"type":"string","x-example":"[TOPIC_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, provider, type, enabled","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create a subscriber.","operationId":"messagingCreateSubscriber","tags":["messaging"],"description":"","responses":{"201":{"description":"Subscriber","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/subscriber"}}}}},"x-appwrite":{"method":"createSubscriber","weight":355,"cookies":false,"type":"","demo":"messaging\/create-subscriber.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-subscriber.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.write","platforms":["server","client","console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID to subscribe to.","required":true,"schema":{"type":"string","x-example":"[TOPIC_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"subscriberId":{"type":"string","description":"Subscriber ID. Choose a custom Subscriber ID or a new Subscriber ID.","x-example":"[SUBSCRIBER_ID]"},"targetId":{"type":"string","description":"Target ID. The target ID to link to the specified Topic ID.","x-example":"[TARGET_ID]"}},"required":["subscriberId","targetId"]}}}}}},"\/messaging\/topics\/{topicId}\/subscribers\/{subscriberId}":{"get":{"summary":"Get a subscriber.","operationId":"messagingGetSubscriber","tags":["messaging"],"description":"","responses":{"200":{"description":"Subscriber","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/subscriber"}}}}},"x-appwrite":{"method":"getSubscriber","weight":358,"cookies":false,"type":"","demo":"messaging\/get-subscriber.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/get-subscriber.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID subscribed to.","required":true,"schema":{"type":"string","x-example":"[TOPIC_ID]"},"in":"path"},{"name":"subscriberId","description":"Subscriber ID.","required":true,"schema":{"type":"string","x-example":"[SUBSCRIBER_ID]"},"in":"path"}]},"delete":{"summary":"Delete a subscriber.","operationId":"messagingDeleteSubscriber","tags":["messaging"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSubscriber","weight":359,"cookies":false,"type":"","demo":"messaging\/delete-subscriber.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-subscriber.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.write","platforms":["server","client","console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID subscribed to.","required":true,"schema":{"type":"string","x-example":"[TOPIC_ID]"},"in":"path"},{"name":"subscriberId","description":"Subscriber ID.","required":true,"schema":{"type":"string","x-example":"[SUBSCRIBER_ID]"},"in":"path"}]}},"\/migrations":{"get":{"summary":"List Migrations","operationId":"migrationsList","tags":["migrations"],"description":"","responses":{"200":{"description":"Migrations List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/migrationList"}}}}},"x-appwrite":{"method":"list","weight":312,"cookies":false,"type":"","demo":"migrations\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/list-migrations.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: status, stage, source, resources, statusCounters, resourceData, errors","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]}},"\/migrations\/appwrite":{"post":{"summary":"Migrate Appwrite Data","operationId":"migrationsCreateAppwriteMigration","tags":["migrations"],"description":"","responses":{"202":{"description":"Migration","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/migration"}}}}},"x-appwrite":{"method":"createAppwriteMigration","weight":307,"cookies":false,"type":"","demo":"migrations\/create-appwrite-migration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-appwrite.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"resources":{"type":"array","description":"List of resources to migrate","x-example":null,"items":{"type":"string"}},"endpoint":{"type":"string","description":"Source's Appwrite Endpoint","x-example":"https:\/\/example.com"},"projectId":{"type":"string","description":"Source's Project ID","x-example":"[PROJECT_ID]"},"apiKey":{"type":"string","description":"Source's API Key","x-example":"[API_KEY]"}},"required":["resources","endpoint","projectId","apiKey"]}}}}}},"\/migrations\/appwrite\/report":{"get":{"summary":"Generate a report on Appwrite Data","operationId":"migrationsGetAppwriteReport","tags":["migrations"],"description":"","responses":{"200":{"description":"Migration Report","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/migrationReport"}}}}},"x-appwrite":{"method":"getAppwriteReport","weight":314,"cookies":false,"type":"","demo":"migrations\/get-appwrite-report.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-appwrite-report.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"resources","description":"List of resources to migrate","required":true,"schema":{"type":"array","items":{"type":"string"}},"in":"query"},{"name":"endpoint","description":"Source's Appwrite Endpoint","required":true,"schema":{"type":"string","format":"url","x-example":"https:\/\/example.com"},"in":"query"},{"name":"projectID","description":"Source's Project ID","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"query"},{"name":"key","description":"Source's API Key","required":true,"schema":{"type":"string","x-example":"[KEY]"},"in":"query"}]}},"\/migrations\/firebase":{"post":{"summary":"Migrate Firebase Data (Service Account)","operationId":"migrationsCreateFirebaseMigration","tags":["migrations"],"description":"","responses":{"202":{"description":"Migration","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/migration"}}}}},"x-appwrite":{"method":"createFirebaseMigration","weight":309,"cookies":false,"type":"","demo":"migrations\/create-firebase-migration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-firebase.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"resources":{"type":"array","description":"List of resources to migrate","x-example":null,"items":{"type":"string"}},"serviceAccount":{"type":"string","description":"JSON of the Firebase service account credentials","x-example":"[SERVICE_ACCOUNT]"}},"required":["resources","serviceAccount"]}}}}}},"\/migrations\/firebase\/deauthorize":{"get":{"summary":"Revoke Appwrite's authorization to access Firebase Projects","operationId":"migrationsDeleteFirebaseAuth","tags":["migrations"],"description":"","responses":{"200":{"description":"File"}},"x-appwrite":{"method":"deleteFirebaseAuth","weight":320,"cookies":false,"type":"","demo":"migrations\/delete-firebase-auth.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/migrations\/firebase\/oauth":{"post":{"summary":"Migrate Firebase Data (OAuth)","operationId":"migrationsCreateFirebaseOAuthMigration","tags":["migrations"],"description":"","responses":{"202":{"description":"Migration","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/migration"}}}}},"x-appwrite":{"method":"createFirebaseOAuthMigration","weight":308,"cookies":false,"type":"","demo":"migrations\/create-firebase-o-auth-migration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-firebase.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"resources":{"type":"array","description":"List of resources to migrate","x-example":null,"items":{"type":"string"}},"projectId":{"type":"string","description":"Project ID of the Firebase Project","x-example":"[PROJECT_ID]"}},"required":["resources","projectId"]}}}}}},"\/migrations\/firebase\/projects":{"get":{"summary":"List Firebase Projects","operationId":"migrationsListFirebaseProjects","tags":["migrations"],"description":"","responses":{"200":{"description":"Migrations Firebase Projects List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/firebaseProjectList"}}}}},"x-appwrite":{"method":"listFirebaseProjects","weight":319,"cookies":false,"type":"","demo":"migrations\/list-firebase-projects.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/migrations\/firebase\/report":{"get":{"summary":"Generate a report on Firebase Data","operationId":"migrationsGetFirebaseReport","tags":["migrations"],"description":"","responses":{"200":{"description":"Migration Report","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/migrationReport"}}}}},"x-appwrite":{"method":"getFirebaseReport","weight":315,"cookies":false,"type":"","demo":"migrations\/get-firebase-report.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-firebase-report.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"resources","description":"List of resources to migrate","required":true,"schema":{"type":"array","items":{"type":"string"}},"in":"query"},{"name":"serviceAccount","description":"JSON of the Firebase service account credentials","required":true,"schema":{"type":"string","x-example":"[SERVICE_ACCOUNT]"},"in":"query"}]}},"\/migrations\/firebase\/report\/oauth":{"get":{"summary":"Generate a report on Firebase Data using OAuth","operationId":"migrationsGetFirebaseReportOAuth","tags":["migrations"],"description":"","responses":{"200":{"description":"Migration Report","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/migrationReport"}}}}},"x-appwrite":{"method":"getFirebaseReportOAuth","weight":316,"cookies":false,"type":"","demo":"migrations\/get-firebase-report-o-auth.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-firebase-report.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"resources","description":"List of resources to migrate","required":true,"schema":{"type":"array","items":{"type":"string"}},"in":"query"},{"name":"projectId","description":"Project ID","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"query"}]}},"\/migrations\/nhost":{"post":{"summary":"Migrate NHost Data","operationId":"migrationsCreateNHostMigration","tags":["migrations"],"description":"","responses":{"202":{"description":"Migration","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/migration"}}}}},"x-appwrite":{"method":"createNHostMigration","weight":311,"cookies":false,"type":"","demo":"migrations\/create-n-host-migration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-nhost.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"resources":{"type":"array","description":"List of resources to migrate","x-example":null,"items":{"type":"string"}},"subdomain":{"type":"string","description":"Source's Subdomain","x-example":"[SUBDOMAIN]"},"region":{"type":"string","description":"Source's Region","x-example":"[REGION]"},"adminSecret":{"type":"string","description":"Source's Admin Secret","x-example":"[ADMIN_SECRET]"},"database":{"type":"string","description":"Source's Database Name","x-example":"[DATABASE]"},"username":{"type":"string","description":"Source's Database Username","x-example":"[USERNAME]"},"password":{"type":"string","description":"Source's Database Password","x-example":"[PASSWORD]"},"port":{"type":"integer","description":"Source's Database Port","x-example":null}},"required":["resources","subdomain","region","adminSecret","database","username","password"]}}}}}},"\/migrations\/nhost\/report":{"get":{"summary":"Generate a report on NHost Data","operationId":"migrationsGetNHostReport","tags":["migrations"],"description":"","responses":{"200":{"description":"Migration Report","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/migrationReport"}}}}},"x-appwrite":{"method":"getNHostReport","weight":322,"cookies":false,"type":"","demo":"migrations\/get-n-host-report.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-nhost-report.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"resources","description":"List of resources to migrate.","required":true,"schema":{"type":"array","items":{"type":"string"}},"in":"query"},{"name":"subdomain","description":"Source's Subdomain.","required":true,"schema":{"type":"string","x-example":"[SUBDOMAIN]"},"in":"query"},{"name":"region","description":"Source's Region.","required":true,"schema":{"type":"string","x-example":"[REGION]"},"in":"query"},{"name":"adminSecret","description":"Source's Admin Secret.","required":true,"schema":{"type":"string","x-example":"[ADMIN_SECRET]"},"in":"query"},{"name":"database","description":"Source's Database Name.","required":true,"schema":{"type":"string","x-example":"[DATABASE]"},"in":"query"},{"name":"username","description":"Source's Database Username.","required":true,"schema":{"type":"string","x-example":"[USERNAME]"},"in":"query"},{"name":"password","description":"Source's Database Password.","required":true,"schema":{"type":"string","x-example":"[PASSWORD]"},"in":"query"},{"name":"port","description":"Source's Database Port.","required":false,"schema":{"type":"integer","format":"int32","default":5432},"in":"query"}]}},"\/migrations\/supabase":{"post":{"summary":"Migrate Supabase Data","operationId":"migrationsCreateSupabaseMigration","tags":["migrations"],"description":"","responses":{"202":{"description":"Migration","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/migration"}}}}},"x-appwrite":{"method":"createSupabaseMigration","weight":310,"cookies":false,"type":"","demo":"migrations\/create-supabase-migration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-supabase.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"resources":{"type":"array","description":"List of resources to migrate","x-example":null,"items":{"type":"string"}},"endpoint":{"type":"string","description":"Source's Supabase Endpoint","x-example":"https:\/\/example.com"},"apiKey":{"type":"string","description":"Source's API Key","x-example":"[API_KEY]"},"databaseHost":{"type":"string","description":"Source's Database Host","x-example":"[DATABASE_HOST]"},"username":{"type":"string","description":"Source's Database Username","x-example":"[USERNAME]"},"password":{"type":"string","description":"Source's Database Password","x-example":"[PASSWORD]"},"port":{"type":"integer","description":"Source's Database Port","x-example":null}},"required":["resources","endpoint","apiKey","databaseHost","username","password"]}}}}}},"\/migrations\/supabase\/report":{"get":{"summary":"Generate a report on Supabase Data","operationId":"migrationsGetSupabaseReport","tags":["migrations"],"description":"","responses":{"200":{"description":"Migration Report","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/migrationReport"}}}}},"x-appwrite":{"method":"getSupabaseReport","weight":321,"cookies":false,"type":"","demo":"migrations\/get-supabase-report.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-supabase-report.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"resources","description":"List of resources to migrate","required":true,"schema":{"type":"array","items":{"type":"string"}},"in":"query"},{"name":"endpoint","description":"Source's Supabase Endpoint.","required":true,"schema":{"type":"string","format":"url","x-example":"https:\/\/example.com"},"in":"query"},{"name":"apiKey","description":"Source's API Key.","required":true,"schema":{"type":"string","x-example":"[API_KEY]"},"in":"query"},{"name":"databaseHost","description":"Source's Database Host.","required":true,"schema":{"type":"string","x-example":"[DATABASE_HOST]"},"in":"query"},{"name":"username","description":"Source's Database Username.","required":true,"schema":{"type":"string","x-example":"[USERNAME]"},"in":"query"},{"name":"password","description":"Source's Database Password.","required":true,"schema":{"type":"string","x-example":"[PASSWORD]"},"in":"query"},{"name":"port","description":"Source's Database Port.","required":false,"schema":{"type":"integer","format":"int32","default":5432},"in":"query"}]}},"\/migrations\/{migrationId}":{"get":{"summary":"Get Migration","operationId":"migrationsGet","tags":["migrations"],"description":"","responses":{"200":{"description":"Migration","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/migration"}}}}},"x-appwrite":{"method":"get","weight":313,"cookies":false,"type":"","demo":"migrations\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/get-migration.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"migrationId","description":"Migration unique ID.","required":true,"schema":{"type":"string","x-example":"[MIGRATION_ID]"},"in":"path"}]},"patch":{"summary":"Retry Migration","operationId":"migrationsRetry","tags":["migrations"],"description":"","responses":{"202":{"description":"Migration","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/migration"}}}}},"x-appwrite":{"method":"retry","weight":323,"cookies":false,"type":"","demo":"migrations\/retry.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/retry-migration.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"migrationId","description":"Migration unique ID.","required":true,"schema":{"type":"string","x-example":"[MIGRATION_ID]"},"in":"path"}]},"delete":{"summary":"Delete Migration","operationId":"migrationsDelete","tags":["migrations"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":324,"cookies":false,"type":"","demo":"migrations\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-migration.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"migrationId","description":"Migration ID.","required":true,"schema":{"type":"string","x-example":"[MIGRATION_ID]"},"in":"path"}]}},"\/project\/usage":{"get":{"summary":"Get usage stats for a project","operationId":"projectGetUsage","tags":["project"],"description":"","responses":{"200":{"description":"UsageProject","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageProject"}}}}},"x-appwrite":{"method":"getUsage","weight":181,"cookies":false,"type":"","demo":"project\/get-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"startDate","description":"Starting date for the usage","required":true,"schema":{"type":"string"},"in":"query"},{"name":"endDate","description":"End date for the usage","required":true,"schema":{"type":"string"},"in":"query"},{"name":"period","description":"Period used","required":false,"schema":{"type":"string","x-example":"1h","enum":["1h","1d"],"x-enum-name":"ProjectUsageRange","x-enum-keys":["One Hour","One Day"],"default":"1d"},"in":"query"}]}},"\/project\/variables":{"get":{"summary":"List Variables","operationId":"projectListVariables","tags":["project"],"description":"Get a list of all project variables. These variables will be accessible in all Appwrite Functions at runtime.","responses":{"200":{"description":"Variables List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variableList"}}}}},"x-appwrite":{"method":"listVariables","weight":183,"cookies":false,"type":"","demo":"project\/list-variables.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/project\/list-variables.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]},"post":{"summary":"Create Variable","operationId":"projectCreateVariable","tags":["project"],"description":"Create a new project variable. This variable will be accessible in all Appwrite Functions at runtime.","responses":{"201":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"createVariable","weight":182,"cookies":false,"type":"","demo":"project\/create-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/project\/create-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","x-example":"[VALUE]"}},"required":["key","value"]}}}}}},"\/project\/variables\/{variableId}":{"get":{"summary":"Get Variable","operationId":"projectGetVariable","tags":["project"],"description":"Get a project variable by its unique ID.","responses":{"200":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"getVariable","weight":184,"cookies":false,"type":"","demo":"project\/get-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/project\/get-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}]},"put":{"summary":"Update Variable","operationId":"projectUpdateVariable","tags":["project"],"description":"Update project variable by its unique ID. This variable will be accessible in all Appwrite Functions at runtime.","responses":{"200":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"updateVariable","weight":185,"cookies":false,"type":"","demo":"project\/update-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/project\/update-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","x-example":"[VALUE]"}},"required":["key"]}}}}},"delete":{"summary":"Delete Variable","operationId":"projectDeleteVariable","tags":["project"],"description":"Delete a project variable by its unique ID. ","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteVariable","weight":186,"cookies":false,"type":"","demo":"project\/delete-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/project\/delete-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}]}},"\/projects":{"get":{"summary":"List projects","operationId":"projectsList","tags":["projects"],"description":"","responses":{"200":{"description":"Projects List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/projectList"}}}}},"x-appwrite":{"method":"list","weight":142,"cookies":false,"type":"","demo":"projects\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, teamId","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create project","operationId":"projectsCreate","tags":["projects"],"description":"","responses":{"201":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"create","weight":141,"cookies":false,"type":"","demo":"projects\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"projectId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, and hyphen. Can't start with a special char. Max length is 36 chars.","x-example":null},"name":{"type":"string","description":"Project name. Max length: 128 chars.","x-example":"[NAME]"},"teamId":{"type":"string","description":"Team unique ID.","x-example":"[TEAM_ID]"},"region":{"type":"string","description":"Project Region.","x-example":"default","enum":["default","fra"],"x-enum-name":null,"x-enum-keys":[]},"description":{"type":"string","description":"Project description. Max length: 256 chars.","x-example":"[DESCRIPTION]"},"logo":{"type":"string","description":"Project logo.","x-example":"[LOGO]"},"url":{"type":"string","description":"Project URL.","x-example":"https:\/\/example.com"},"legalName":{"type":"string","description":"Project legal Name. Max length: 256 chars.","x-example":"[LEGAL_NAME]"},"legalCountry":{"type":"string","description":"Project legal Country. Max length: 256 chars.","x-example":"[LEGAL_COUNTRY]"},"legalState":{"type":"string","description":"Project legal State. Max length: 256 chars.","x-example":"[LEGAL_STATE]"},"legalCity":{"type":"string","description":"Project legal City. Max length: 256 chars.","x-example":"[LEGAL_CITY]"},"legalAddress":{"type":"string","description":"Project legal Address. Max length: 256 chars.","x-example":"[LEGAL_ADDRESS]"},"legalTaxId":{"type":"string","description":"Project legal Tax ID. Max length: 256 chars.","x-example":"[LEGAL_TAX_ID]"}},"required":["projectId","name","teamId"]}}}}}},"\/projects\/{projectId}":{"get":{"summary":"Get project","operationId":"projectsGet","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"get","weight":143,"cookies":false,"type":"","demo":"projects\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}]},"patch":{"summary":"Update project","operationId":"projectsUpdate","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"update","weight":144,"cookies":false,"type":"","demo":"projects\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Project name. Max length: 128 chars.","x-example":"[NAME]"},"description":{"type":"string","description":"Project description. Max length: 256 chars.","x-example":"[DESCRIPTION]"},"logo":{"type":"string","description":"Project logo.","x-example":"[LOGO]"},"url":{"type":"string","description":"Project URL.","x-example":"https:\/\/example.com"},"legalName":{"type":"string","description":"Project legal name. Max length: 256 chars.","x-example":"[LEGAL_NAME]"},"legalCountry":{"type":"string","description":"Project legal country. Max length: 256 chars.","x-example":"[LEGAL_COUNTRY]"},"legalState":{"type":"string","description":"Project legal state. Max length: 256 chars.","x-example":"[LEGAL_STATE]"},"legalCity":{"type":"string","description":"Project legal city. Max length: 256 chars.","x-example":"[LEGAL_CITY]"},"legalAddress":{"type":"string","description":"Project legal address. Max length: 256 chars.","x-example":"[LEGAL_ADDRESS]"},"legalTaxId":{"type":"string","description":"Project legal tax ID. Max length: 256 chars.","x-example":"[LEGAL_TAX_ID]"}},"required":["name"]}}}}},"delete":{"summary":"Delete project","operationId":"projectsDelete","tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":156,"cookies":false,"type":"","demo":"projects\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}]}},"\/projects\/{projectId}\/auth\/duration":{"patch":{"summary":"Update project authentication duration","operationId":"projectsUpdateAuthDuration","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateAuthDuration","weight":150,"cookies":false,"type":"","demo":"projects\/update-auth-duration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"duration":{"type":"integer","description":"Project session length in seconds. Max length: 31536000 seconds.","x-example":0}},"required":["duration"]}}}}}},"\/projects\/{projectId}\/auth\/limit":{"patch":{"summary":"Update project users limit","operationId":"projectsUpdateAuthLimit","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateAuthLimit","weight":149,"cookies":false,"type":"","demo":"projects\/update-auth-limit.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"limit":{"type":"integer","description":"Set the max number of users allowed in this project. Use 0 for unlimited.","x-example":0}},"required":["limit"]}}}}}},"\/projects\/{projectId}\/auth\/max-sessions":{"patch":{"summary":"Update project user sessions limit","operationId":"projectsUpdateAuthSessionsLimit","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateAuthSessionsLimit","weight":155,"cookies":false,"type":"","demo":"projects\/update-auth-sessions-limit.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"limit":{"type":"integer","description":"Set the max number of users allowed in this project. Value allowed is between 1-100. Default is 10","x-example":1}},"required":["limit"]}}}}}},"\/projects\/{projectId}\/auth\/password-dictionary":{"patch":{"summary":"Update authentication password dictionary status. Use this endpoint to enable or disable the dicitonary check for user password","operationId":"projectsUpdateAuthPasswordDictionary","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateAuthPasswordDictionary","weight":153,"cookies":false,"type":"","demo":"projects\/update-auth-password-dictionary.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Set whether or not to enable checking user's password against most commonly used passwords. Default is false.","x-example":false}},"required":["enabled"]}}}}}},"\/projects\/{projectId}\/auth\/password-history":{"patch":{"summary":"Update authentication password history. Use this endpoint to set the number of password history to save and 0 to disable password history.","operationId":"projectsUpdateAuthPasswordHistory","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateAuthPasswordHistory","weight":152,"cookies":false,"type":"","demo":"projects\/update-auth-password-history.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"limit":{"type":"integer","description":"Set the max number of passwords to store in user history. User can't choose a new password that is already stored in the password history list. Max number of passwords allowed in history is20. Default value is 0","x-example":0}},"required":["limit"]}}}}}},"\/projects\/{projectId}\/auth\/personal-data":{"patch":{"summary":"Enable or disable checking user passwords for similarity with their personal data.","operationId":"projectsUpdatePersonalDataCheck","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updatePersonalDataCheck","weight":154,"cookies":false,"type":"","demo":"projects\/update-personal-data-check.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Set whether or not to check a password for similarity with personal data. Default is false.","x-example":false}},"required":["enabled"]}}}}}},"\/projects\/{projectId}\/auth\/{method}":{"patch":{"summary":"Update project auth method status. Use this endpoint to enable or disable a given auth method for this project.","operationId":"projectsUpdateAuthStatus","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateAuthStatus","weight":151,"cookies":false,"type":"","demo":"projects\/update-auth-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"method","description":"Auth Method. Possible values: email-password,magic-url,email-otp,anonymous,invites,jwt,phone","required":true,"schema":{"type":"string","x-example":"email-password","enum":["email-password","magic-url","email-otp","anonymous","invites","jwt","phone"],"x-enum-name":"AuthMethod","x-enum-keys":[]},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"status":{"type":"boolean","description":"Set the status of this auth method.","x-example":false}},"required":["status"]}}}}}},"\/projects\/{projectId}\/keys":{"get":{"summary":"List keys","operationId":"projectsListKeys","tags":["projects"],"description":"","responses":{"200":{"description":"API Keys List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/keyList"}}}}},"x-appwrite":{"method":"listKeys","weight":164,"cookies":false,"type":"","demo":"projects\/list-keys.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}]},"post":{"summary":"Create key","operationId":"projectsCreateKey","tags":["projects"],"description":"","responses":{"201":{"description":"Key","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/key"}}}}},"x-appwrite":{"method":"createKey","weight":163,"cookies":false,"type":"","demo":"projects\/create-key.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Key name. Max length: 128 chars.","x-example":"[NAME]"},"scopes":{"type":"array","description":"Key scopes list. Maximum of 100 scopes are allowed.","x-example":null,"items":{"type":"string"}},"expire":{"type":"string","description":"Expiration time in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. Use null for unlimited expiration.","x-example":null}},"required":["name","scopes"]}}}}}},"\/projects\/{projectId}\/keys\/{keyId}":{"get":{"summary":"Get key","operationId":"projectsGetKey","tags":["projects"],"description":"","responses":{"200":{"description":"Key","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/key"}}}}},"x-appwrite":{"method":"getKey","weight":165,"cookies":false,"type":"","demo":"projects\/get-key.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"keyId","description":"Key unique ID.","required":true,"schema":{"type":"string","x-example":"[KEY_ID]"},"in":"path"}]},"put":{"summary":"Update key","operationId":"projectsUpdateKey","tags":["projects"],"description":"","responses":{"200":{"description":"Key","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/key"}}}}},"x-appwrite":{"method":"updateKey","weight":166,"cookies":false,"type":"","demo":"projects\/update-key.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"keyId","description":"Key unique ID.","required":true,"schema":{"type":"string","x-example":"[KEY_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Key name. Max length: 128 chars.","x-example":"[NAME]"},"scopes":{"type":"array","description":"Key scopes list. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"expire":{"type":"string","description":"Expiration time in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. Use null for unlimited expiration.","x-example":null}},"required":["name","scopes"]}}}}},"delete":{"summary":"Delete key","operationId":"projectsDeleteKey","tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteKey","weight":167,"cookies":false,"type":"","demo":"projects\/delete-key.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"keyId","description":"Key unique ID.","required":true,"schema":{"type":"string","x-example":"[KEY_ID]"},"in":"path"}]}},"\/projects\/{projectId}\/oauth2":{"patch":{"summary":"Update project OAuth2","operationId":"projectsUpdateOAuth2","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateOAuth2","weight":148,"cookies":false,"type":"","demo":"projects\/update-o-auth2.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"provider":{"type":"string","description":"Provider Name","x-example":"amazon","enum":["amazon","apple","auth0","authentik","autodesk","bitbucket","bitly","box","dailymotion","discord","disqus","dropbox","etsy","facebook","github","gitlab","google","linkedin","microsoft","notion","oidc","okta","paypal","paypalSandbox","podio","salesforce","slack","spotify","stripe","tradeshift","tradeshiftBox","twitch","wordpress","yahoo","yammer","yandex","zoho","zoom","mock"],"x-enum-name":"OAuthProvider","x-enum-keys":[]},"appId":{"type":"string","description":"Provider app ID. Max length: 256 chars.","x-example":"[APP_ID]"},"secret":{"type":"string","description":"Provider secret key. Max length: 512 chars.","x-example":"[SECRET]"},"enabled":{"type":"boolean","description":"Provider status. Set to 'false' to disable new session creation.","x-example":false}},"required":["provider"]}}}}}},"\/projects\/{projectId}\/platforms":{"get":{"summary":"List platforms","operationId":"projectsListPlatforms","tags":["projects"],"description":"","responses":{"200":{"description":"Platforms List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/platformList"}}}}},"x-appwrite":{"method":"listPlatforms","weight":169,"cookies":false,"type":"","demo":"projects\/list-platforms.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}]},"post":{"summary":"Create platform","operationId":"projectsCreatePlatform","tags":["projects"],"description":"","responses":{"201":{"description":"Platform","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/platform"}}}}},"x-appwrite":{"method":"createPlatform","weight":168,"cookies":false,"type":"","demo":"projects\/create-platform.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"type":{"type":"string","description":"Platform type.","x-example":"web","enum":["web","flutter-web","flutter-ios","flutter-android","flutter-linux","flutter-macos","flutter-windows","apple-ios","apple-macos","apple-watchos","apple-tvos","android","unity"],"x-enum-name":"PlatformType","x-enum-keys":[]},"name":{"type":"string","description":"Platform name. Max length: 128 chars.","x-example":"[NAME]"},"key":{"type":"string","description":"Package name for Android or bundle ID for iOS or macOS. Max length: 256 chars.","x-example":"[KEY]"},"store":{"type":"string","description":"App store or Google Play store ID. Max length: 256 chars.","x-example":"[STORE]"},"hostname":{"type":"string","description":"Platform client hostname. Max length: 256 chars.","x-example":null}},"required":["type","name"]}}}}}},"\/projects\/{projectId}\/platforms\/{platformId}":{"get":{"summary":"Get platform","operationId":"projectsGetPlatform","tags":["projects"],"description":"","responses":{"200":{"description":"Platform","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/platform"}}}}},"x-appwrite":{"method":"getPlatform","weight":170,"cookies":false,"type":"","demo":"projects\/get-platform.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"platformId","description":"Platform unique ID.","required":true,"schema":{"type":"string","x-example":"[PLATFORM_ID]"},"in":"path"}]},"put":{"summary":"Update platform","operationId":"projectsUpdatePlatform","tags":["projects"],"description":"","responses":{"200":{"description":"Platform","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/platform"}}}}},"x-appwrite":{"method":"updatePlatform","weight":171,"cookies":false,"type":"","demo":"projects\/update-platform.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"platformId","description":"Platform unique ID.","required":true,"schema":{"type":"string","x-example":"[PLATFORM_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Platform name. Max length: 128 chars.","x-example":"[NAME]"},"key":{"type":"string","description":"Package name for android or bundle ID for iOS. Max length: 256 chars.","x-example":"[KEY]"},"store":{"type":"string","description":"App store or Google Play store ID. Max length: 256 chars.","x-example":"[STORE]"},"hostname":{"type":"string","description":"Platform client URL. Max length: 256 chars.","x-example":null}},"required":["name"]}}}}},"delete":{"summary":"Delete platform","operationId":"projectsDeletePlatform","tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deletePlatform","weight":172,"cookies":false,"type":"","demo":"projects\/delete-platform.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"platformId","description":"Platform unique ID.","required":true,"schema":{"type":"string","x-example":"[PLATFORM_ID]"},"in":"path"}]}},"\/projects\/{projectId}\/service":{"patch":{"summary":"Update service status","operationId":"projectsUpdateServiceStatus","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateServiceStatus","weight":146,"cookies":false,"type":"","demo":"projects\/update-service-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"service":{"type":"string","description":"Service name.","x-example":"account","enum":["account","avatars","databases","locale","health","storage","teams","users","functions","graphql","messaging"],"x-enum-name":"APIService","x-enum-keys":[]},"status":{"type":"boolean","description":"Service status.","x-example":false}},"required":["service","status"]}}}}}},"\/projects\/{projectId}\/service\/all":{"patch":{"summary":"Update all service status","operationId":"projectsUpdateServiceStatusAll","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateServiceStatusAll","weight":147,"cookies":false,"type":"","demo":"projects\/update-service-status-all.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"status":{"type":"boolean","description":"Service status.","x-example":false}},"required":["status"]}}}}}},"\/projects\/{projectId}\/smtp":{"patch":{"summary":"Update SMTP","operationId":"projectsUpdateSmtp","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateSmtp","weight":173,"cookies":false,"type":"","demo":"projects\/update-smtp.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enable custom SMTP service","x-example":false},"senderName":{"type":"string","description":"Name of the email sender","x-example":"[SENDER_NAME]"},"senderEmail":{"type":"string","description":"Email of the sender","x-example":"email@example.com"},"replyTo":{"type":"string","description":"Reply to email","x-example":"email@example.com"},"host":{"type":"string","description":"SMTP server host name","x-example":null},"port":{"type":"integer","description":"SMTP server port","x-example":null},"username":{"type":"string","description":"SMTP server username","x-example":"[USERNAME]"},"password":{"type":"string","description":"SMTP server password","x-example":"[PASSWORD]"},"secure":{"type":"string","description":"Does SMTP server use secure connection","x-example":"tls","enum":["tls"],"x-enum-name":"SMTPSecure","x-enum-keys":[]}},"required":["enabled"]}}}}}},"\/projects\/{projectId}\/smtp\/tests":{"post":{"summary":"Create SMTP test","operationId":"projectsCreateSmtpTest","tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"createSmtpTest","weight":174,"cookies":false,"type":"","demo":"projects\/create-smtp-test.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"emails":{"type":"array","description":"Array of emails to send test email to. Maximum of 10 emails are allowed.","x-example":null,"items":{"type":"string"}},"senderName":{"type":"string","description":"Name of the email sender","x-example":"[SENDER_NAME]"},"senderEmail":{"type":"string","description":"Email of the sender","x-example":"email@example.com"},"replyTo":{"type":"string","description":"Reply to email","x-example":"email@example.com"},"host":{"type":"string","description":"SMTP server host name","x-example":null},"port":{"type":"integer","description":"SMTP server port","x-example":null},"username":{"type":"string","description":"SMTP server username","x-example":"[USERNAME]"},"password":{"type":"string","description":"SMTP server password","x-example":"[PASSWORD]"},"secure":{"type":"string","description":"Does SMTP server use secure connection","x-example":"tls","enum":["tls"],"x-enum-name":"SMTPSecure","x-enum-keys":[]}},"required":["emails","senderName","senderEmail","host"]}}}}}},"\/projects\/{projectId}\/team":{"patch":{"summary":"Update Project Team","operationId":"projectsUpdateTeam","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateTeam","weight":145,"cookies":false,"type":"","demo":"projects\/update-team.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"teamId":{"type":"string","description":"Team ID of the team to transfer project to.","x-example":"[TEAM_ID]"}},"required":["teamId"]}}}}}},"\/projects\/{projectId}\/templates\/email\/{type}\/{locale}":{"get":{"summary":"Get custom email template","operationId":"projectsGetEmailTemplate","tags":["projects"],"description":"","responses":{"200":{"description":"EmailTemplate","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/emailTemplate"}}}}},"x-appwrite":{"method":"getEmailTemplate","weight":176,"cookies":false,"type":"","demo":"projects\/get-email-template.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"type","description":"Template type","required":true,"schema":{"type":"string","x-example":"verification","enum":["verification","magicsession","recovery","invitation"],"x-enum-name":"EmailTemplateType","x-enum-keys":[]},"in":"path"},{"name":"locale","description":"Template locale","required":true,"schema":{"type":"string","x-example":"af","enum":["af","ar-ae","ar-bh","ar-dz","ar-eg","ar-iq","ar-jo","ar-kw","ar-lb","ar-ly","ar-ma","ar-om","ar-qa","ar-sa","ar-sy","ar-tn","ar-ye","as","az","be","bg","bh","bn","bs","ca","cs","cy","da","de","de-at","de-ch","de-li","de-lu","el","en","en-au","en-bz","en-ca","en-gb","en-ie","en-jm","en-nz","en-tt","en-us","en-za","eo","es","es-ar","es-bo","es-cl","es-co","es-cr","es-do","es-ec","es-gt","es-hn","es-mx","es-ni","es-pa","es-pe","es-pr","es-py","es-sv","es-uy","es-ve","et","eu","fa","fi","fo","fr","fr-be","fr-ca","fr-ch","fr-lu","ga","gd","he","hi","hr","hu","id","is","it","it-ch","ja","ji","ko","ku","lt","lv","mk","ml","ms","mt","nb","ne","nl","nl-be","nn","no","pa","pl","pt","pt-br","rm","ro","ro-md","ru","ru-md","sb","sk","sl","sq","sr","sv","sv-fi","th","tn","tr","ts","ua","ur","ve","vi","xh","zh-cn","zh-hk","zh-sg","zh-tw","zu"],"x-enum-name":"EmailTemplateLocale","x-enum-keys":[]},"in":"path"}]},"patch":{"summary":"Update custom email templates","operationId":"projectsUpdateEmailTemplate","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateEmailTemplate","weight":178,"cookies":false,"type":"","demo":"projects\/update-email-template.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"type","description":"Template type","required":true,"schema":{"type":"string","x-example":"verification","enum":["verification","magicsession","recovery","invitation"],"x-enum-name":"EmailTemplateType","x-enum-keys":[]},"in":"path"},{"name":"locale","description":"Template locale","required":true,"schema":{"type":"string","x-example":"af","enum":["af","ar-ae","ar-bh","ar-dz","ar-eg","ar-iq","ar-jo","ar-kw","ar-lb","ar-ly","ar-ma","ar-om","ar-qa","ar-sa","ar-sy","ar-tn","ar-ye","as","az","be","bg","bh","bn","bs","ca","cs","cy","da","de","de-at","de-ch","de-li","de-lu","el","en","en-au","en-bz","en-ca","en-gb","en-ie","en-jm","en-nz","en-tt","en-us","en-za","eo","es","es-ar","es-bo","es-cl","es-co","es-cr","es-do","es-ec","es-gt","es-hn","es-mx","es-ni","es-pa","es-pe","es-pr","es-py","es-sv","es-uy","es-ve","et","eu","fa","fi","fo","fr","fr-be","fr-ca","fr-ch","fr-lu","ga","gd","he","hi","hr","hu","id","is","it","it-ch","ja","ji","ko","ku","lt","lv","mk","ml","ms","mt","nb","ne","nl","nl-be","nn","no","pa","pl","pt","pt-br","rm","ro","ro-md","ru","ru-md","sb","sk","sl","sq","sr","sv","sv-fi","th","tn","tr","ts","ua","ur","ve","vi","xh","zh-cn","zh-hk","zh-sg","zh-tw","zu"],"x-enum-name":"EmailTemplateLocale","x-enum-keys":[]},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"subject":{"type":"string","description":"Email Subject","x-example":"[SUBJECT]"},"message":{"type":"string","description":"Template message","x-example":"[MESSAGE]"},"senderName":{"type":"string","description":"Name of the email sender","x-example":"[SENDER_NAME]"},"senderEmail":{"type":"string","description":"Email of the sender","x-example":"email@example.com"},"replyTo":{"type":"string","description":"Reply to email","x-example":"email@example.com"}},"required":["subject","message"]}}}}},"delete":{"summary":"Reset custom email template","operationId":"projectsDeleteEmailTemplate","tags":["projects"],"description":"","responses":{"200":{"description":"EmailTemplate","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/emailTemplate"}}}}},"x-appwrite":{"method":"deleteEmailTemplate","weight":180,"cookies":false,"type":"","demo":"projects\/delete-email-template.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"type","description":"Template type","required":true,"schema":{"type":"string","x-example":"verification","enum":["verification","magicsession","recovery","invitation"],"x-enum-name":"EmailTemplateType","x-enum-keys":[]},"in":"path"},{"name":"locale","description":"Template locale","required":true,"schema":{"type":"string","x-example":"af","enum":["af","ar-ae","ar-bh","ar-dz","ar-eg","ar-iq","ar-jo","ar-kw","ar-lb","ar-ly","ar-ma","ar-om","ar-qa","ar-sa","ar-sy","ar-tn","ar-ye","as","az","be","bg","bh","bn","bs","ca","cs","cy","da","de","de-at","de-ch","de-li","de-lu","el","en","en-au","en-bz","en-ca","en-gb","en-ie","en-jm","en-nz","en-tt","en-us","en-za","eo","es","es-ar","es-bo","es-cl","es-co","es-cr","es-do","es-ec","es-gt","es-hn","es-mx","es-ni","es-pa","es-pe","es-pr","es-py","es-sv","es-uy","es-ve","et","eu","fa","fi","fo","fr","fr-be","fr-ca","fr-ch","fr-lu","ga","gd","he","hi","hr","hu","id","is","it","it-ch","ja","ji","ko","ku","lt","lv","mk","ml","ms","mt","nb","ne","nl","nl-be","nn","no","pa","pl","pt","pt-br","rm","ro","ro-md","ru","ru-md","sb","sk","sl","sq","sr","sv","sv-fi","th","tn","tr","ts","ua","ur","ve","vi","xh","zh-cn","zh-hk","zh-sg","zh-tw","zu"],"x-enum-name":"EmailTemplateLocale","x-enum-keys":[]},"in":"path"}]}},"\/projects\/{projectId}\/templates\/sms\/{type}\/{locale}":{"get":{"summary":"Get custom SMS template","operationId":"projectsGetSmsTemplate","tags":["projects"],"description":"","responses":{"200":{"description":"SmsTemplate","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/smsTemplate"}}}}},"x-appwrite":{"method":"getSmsTemplate","weight":175,"cookies":false,"type":"","demo":"projects\/get-sms-template.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"type","description":"Template type","required":true,"schema":{"type":"string","x-example":"verification","enum":["verification","login","invitation"],"x-enum-name":"SMSTemplateType","x-enum-keys":[]},"in":"path"},{"name":"locale","description":"Template locale","required":true,"schema":{"type":"string","x-example":"af","enum":["af","ar-ae","ar-bh","ar-dz","ar-eg","ar-iq","ar-jo","ar-kw","ar-lb","ar-ly","ar-ma","ar-om","ar-qa","ar-sa","ar-sy","ar-tn","ar-ye","as","az","be","bg","bh","bn","bs","ca","cs","cy","da","de","de-at","de-ch","de-li","de-lu","el","en","en-au","en-bz","en-ca","en-gb","en-ie","en-jm","en-nz","en-tt","en-us","en-za","eo","es","es-ar","es-bo","es-cl","es-co","es-cr","es-do","es-ec","es-gt","es-hn","es-mx","es-ni","es-pa","es-pe","es-pr","es-py","es-sv","es-uy","es-ve","et","eu","fa","fi","fo","fr","fr-be","fr-ca","fr-ch","fr-lu","ga","gd","he","hi","hr","hu","id","is","it","it-ch","ja","ji","ko","ku","lt","lv","mk","ml","ms","mt","nb","ne","nl","nl-be","nn","no","pa","pl","pt","pt-br","rm","ro","ro-md","ru","ru-md","sb","sk","sl","sq","sr","sv","sv-fi","th","tn","tr","ts","ua","ur","ve","vi","xh","zh-cn","zh-hk","zh-sg","zh-tw","zu"],"x-enum-name":"SMSTemplateLocale","x-enum-keys":[]},"in":"path"}]},"patch":{"summary":"Update custom SMS template","operationId":"projectsUpdateSmsTemplate","tags":["projects"],"description":"","responses":{"200":{"description":"SmsTemplate","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/smsTemplate"}}}}},"x-appwrite":{"method":"updateSmsTemplate","weight":177,"cookies":false,"type":"","demo":"projects\/update-sms-template.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"type","description":"Template type","required":true,"schema":{"type":"string","x-example":"verification","enum":["verification","login","invitation"],"x-enum-name":"SMSTemplateType","x-enum-keys":[]},"in":"path"},{"name":"locale","description":"Template locale","required":true,"schema":{"type":"string","x-example":"af","enum":["af","ar-ae","ar-bh","ar-dz","ar-eg","ar-iq","ar-jo","ar-kw","ar-lb","ar-ly","ar-ma","ar-om","ar-qa","ar-sa","ar-sy","ar-tn","ar-ye","as","az","be","bg","bh","bn","bs","ca","cs","cy","da","de","de-at","de-ch","de-li","de-lu","el","en","en-au","en-bz","en-ca","en-gb","en-ie","en-jm","en-nz","en-tt","en-us","en-za","eo","es","es-ar","es-bo","es-cl","es-co","es-cr","es-do","es-ec","es-gt","es-hn","es-mx","es-ni","es-pa","es-pe","es-pr","es-py","es-sv","es-uy","es-ve","et","eu","fa","fi","fo","fr","fr-be","fr-ca","fr-ch","fr-lu","ga","gd","he","hi","hr","hu","id","is","it","it-ch","ja","ji","ko","ku","lt","lv","mk","ml","ms","mt","nb","ne","nl","nl-be","nn","no","pa","pl","pt","pt-br","rm","ro","ro-md","ru","ru-md","sb","sk","sl","sq","sr","sv","sv-fi","th","tn","tr","ts","ua","ur","ve","vi","xh","zh-cn","zh-hk","zh-sg","zh-tw","zu"],"x-enum-name":"SMSTemplateLocale","x-enum-keys":[]},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Template message","x-example":"[MESSAGE]"}},"required":["message"]}}}}},"delete":{"summary":"Reset custom SMS template","operationId":"projectsDeleteSmsTemplate","tags":["projects"],"description":"","responses":{"200":{"description":"SmsTemplate","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/smsTemplate"}}}}},"x-appwrite":{"method":"deleteSmsTemplate","weight":179,"cookies":false,"type":"","demo":"projects\/delete-sms-template.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"type","description":"Template type","required":true,"schema":{"type":"string","x-example":"verification","enum":["verification","login","invitation"],"x-enum-name":"SMSTemplateType","x-enum-keys":[]},"in":"path"},{"name":"locale","description":"Template locale","required":true,"schema":{"type":"string","x-example":"af","enum":["af","ar-ae","ar-bh","ar-dz","ar-eg","ar-iq","ar-jo","ar-kw","ar-lb","ar-ly","ar-ma","ar-om","ar-qa","ar-sa","ar-sy","ar-tn","ar-ye","as","az","be","bg","bh","bn","bs","ca","cs","cy","da","de","de-at","de-ch","de-li","de-lu","el","en","en-au","en-bz","en-ca","en-gb","en-ie","en-jm","en-nz","en-tt","en-us","en-za","eo","es","es-ar","es-bo","es-cl","es-co","es-cr","es-do","es-ec","es-gt","es-hn","es-mx","es-ni","es-pa","es-pe","es-pr","es-py","es-sv","es-uy","es-ve","et","eu","fa","fi","fo","fr","fr-be","fr-ca","fr-ch","fr-lu","ga","gd","he","hi","hr","hu","id","is","it","it-ch","ja","ji","ko","ku","lt","lv","mk","ml","ms","mt","nb","ne","nl","nl-be","nn","no","pa","pl","pt","pt-br","rm","ro","ro-md","ru","ru-md","sb","sk","sl","sq","sr","sv","sv-fi","th","tn","tr","ts","ua","ur","ve","vi","xh","zh-cn","zh-hk","zh-sg","zh-tw","zu"],"x-enum-name":"SMSTemplateLocale","x-enum-keys":[]},"in":"path"}]}},"\/projects\/{projectId}\/webhooks":{"get":{"summary":"List webhooks","operationId":"projectsListWebhooks","tags":["projects"],"description":"","responses":{"200":{"description":"Webhooks List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/webhookList"}}}}},"x-appwrite":{"method":"listWebhooks","weight":158,"cookies":false,"type":"","demo":"projects\/list-webhooks.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}]},"post":{"summary":"Create webhook","operationId":"projectsCreateWebhook","tags":["projects"],"description":"","responses":{"201":{"description":"Webhook","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/webhook"}}}}},"x-appwrite":{"method":"createWebhook","weight":157,"cookies":false,"type":"","demo":"projects\/create-webhook.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Webhook name. Max length: 128 chars.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Enable or disable a webhook.","x-example":false},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"Webhook URL.","x-example":null},"security":{"type":"boolean","description":"Certificate verification, false for disabled or true for enabled.","x-example":false},"httpUser":{"type":"string","description":"Webhook HTTP user. Max length: 256 chars.","x-example":"[HTTP_USER]"},"httpPass":{"type":"string","description":"Webhook HTTP password. Max length: 256 chars.","x-example":"[HTTP_PASS]"}},"required":["name","events","url","security"]}}}}}},"\/projects\/{projectId}\/webhooks\/{webhookId}":{"get":{"summary":"Get webhook","operationId":"projectsGetWebhook","tags":["projects"],"description":"","responses":{"200":{"description":"Webhook","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/webhook"}}}}},"x-appwrite":{"method":"getWebhook","weight":159,"cookies":false,"type":"","demo":"projects\/get-webhook.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"webhookId","description":"Webhook unique ID.","required":true,"schema":{"type":"string","x-example":"[WEBHOOK_ID]"},"in":"path"}]},"put":{"summary":"Update webhook","operationId":"projectsUpdateWebhook","tags":["projects"],"description":"","responses":{"200":{"description":"Webhook","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/webhook"}}}}},"x-appwrite":{"method":"updateWebhook","weight":160,"cookies":false,"type":"","demo":"projects\/update-webhook.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"webhookId","description":"Webhook unique ID.","required":true,"schema":{"type":"string","x-example":"[WEBHOOK_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Webhook name. Max length: 128 chars.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Enable or disable a webhook.","x-example":false},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"Webhook URL.","x-example":null},"security":{"type":"boolean","description":"Certificate verification, false for disabled or true for enabled.","x-example":false},"httpUser":{"type":"string","description":"Webhook HTTP user. Max length: 256 chars.","x-example":"[HTTP_USER]"},"httpPass":{"type":"string","description":"Webhook HTTP password. Max length: 256 chars.","x-example":"[HTTP_PASS]"}},"required":["name","events","url","security"]}}}}},"delete":{"summary":"Delete webhook","operationId":"projectsDeleteWebhook","tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteWebhook","weight":162,"cookies":false,"type":"","demo":"projects\/delete-webhook.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"webhookId","description":"Webhook unique ID.","required":true,"schema":{"type":"string","x-example":"[WEBHOOK_ID]"},"in":"path"}]}},"\/projects\/{projectId}\/webhooks\/{webhookId}\/signature":{"patch":{"summary":"Update webhook signature key","operationId":"projectsUpdateWebhookSignature","tags":["projects"],"description":"","responses":{"200":{"description":"Webhook","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/webhook"}}}}},"x-appwrite":{"method":"updateWebhookSignature","weight":161,"cookies":false,"type":"","demo":"projects\/update-webhook-signature.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"webhookId","description":"Webhook unique ID.","required":true,"schema":{"type":"string","x-example":"[WEBHOOK_ID]"},"in":"path"}]}},"\/proxy\/rules":{"get":{"summary":"List Rules","operationId":"proxyListRules","tags":["proxy"],"description":"Get a list of all the proxy rules. You can use the query params to filter your results.","responses":{"200":{"description":"Rule List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/proxyRuleList"}}}}},"x-appwrite":{"method":"listRules","weight":291,"cookies":false,"type":"","demo":"proxy\/list-rules.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/proxy\/list-rules.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"rules.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: domain, resourceType, resourceId, url","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Rule","operationId":"proxyCreateRule","tags":["proxy"],"description":"Create a new proxy rule.","responses":{"201":{"description":"Rule","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/proxyRule"}}}}},"x-appwrite":{"method":"createRule","weight":290,"cookies":false,"type":"","demo":"proxy\/create-rule.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/proxy\/create-rule.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"rules.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"domain":{"type":"string","description":"Domain name.","x-example":null},"resourceType":{"type":"string","description":"Action definition for the rule. Possible values are \"api\", \"function\"","x-example":"api","enum":["api","function"],"x-enum-name":null,"x-enum-keys":[]},"resourceId":{"type":"string","description":"ID of resource for the action type. If resourceType is \"api\", leave empty. If resourceType is \"function\", provide ID of the function.","x-example":"[RESOURCE_ID]"}},"required":["domain","resourceType"]}}}}}},"\/proxy\/rules\/{ruleId}":{"get":{"summary":"Get Rule","operationId":"proxyGetRule","tags":["proxy"],"description":"Get a proxy rule by its unique ID.","responses":{"200":{"description":"Rule","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/proxyRule"}}}}},"x-appwrite":{"method":"getRule","weight":292,"cookies":false,"type":"","demo":"proxy\/get-rule.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/proxy\/get-rule.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"rules.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"ruleId","description":"Rule ID.","required":true,"schema":{"type":"string","x-example":"[RULE_ID]"},"in":"path"}]},"delete":{"summary":"Delete Rule","operationId":"proxyDeleteRule","tags":["proxy"],"description":"Delete a proxy rule by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteRule","weight":293,"cookies":false,"type":"","demo":"proxy\/delete-rule.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/proxy\/delete-rule.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"rules.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"ruleId","description":"Rule ID.","required":true,"schema":{"type":"string","x-example":"[RULE_ID]"},"in":"path"}]}},"\/proxy\/rules\/{ruleId}\/verification":{"patch":{"summary":"Update Rule Verification Status","operationId":"proxyUpdateRuleVerification","tags":["proxy"],"description":"","responses":{"200":{"description":"Rule","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/proxyRule"}}}}},"x-appwrite":{"method":"updateRuleVerification","weight":294,"cookies":false,"type":"","demo":"proxy\/update-rule-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"rules.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"ruleId","description":"Rule ID.","required":true,"schema":{"type":"string","x-example":"[RULE_ID]"},"in":"path"}]}},"\/storage\/buckets":{"get":{"summary":"List buckets","operationId":"storageListBuckets","tags":["storage"],"description":"Get a list of all the storage buckets. You can use the query params to filter your results.","responses":{"200":{"description":"Buckets List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/bucketList"}}}}},"x-appwrite":{"method":"listBuckets","weight":188,"cookies":false,"type":"","demo":"storage\/list-buckets.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/list-buckets.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: enabled, name, fileSecurity, maximumFileSize, encryption, antivirus","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create bucket","operationId":"storageCreateBucket","tags":["storage"],"description":"Create a new storage bucket.","responses":{"201":{"description":"Bucket","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/bucket"}}}}},"x-appwrite":{"method":"createBucket","weight":187,"cookies":false,"type":"","demo":"storage\/create-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"bucketId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, no user is granted with any permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":false},"enabled":{"type":"boolean","description":"Is bucket enabled? When set to 'disabled', users cannot access the files in this bucket but Server SDKs with and API key can still access the bucket. No files are lost when this is toggled.","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB.","x-example":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","x-example":"none","enum":["none","gzip","zstd"],"x-enum-name":null,"x-enum-keys":[]},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","x-example":false}},"required":["bucketId","name"]}}}}}},"\/storage\/buckets\/{bucketId}":{"get":{"summary":"Get bucket","operationId":"storageGetBucket","tags":["storage"],"description":"Get a storage bucket by its unique ID. This endpoint response returns a JSON object with the storage bucket metadata.","responses":{"200":{"description":"Bucket","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/bucket"}}}}},"x-appwrite":{"method":"getBucket","weight":189,"cookies":false,"type":"","demo":"storage\/get-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"bucketId","description":"Bucket unique ID.","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"}]},"put":{"summary":"Update bucket","operationId":"storageUpdateBucket","tags":["storage"],"description":"Update a storage bucket by its unique ID.","responses":{"200":{"description":"Bucket","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/bucket"}}}}},"x-appwrite":{"method":"updateBucket","weight":190,"cookies":false,"type":"","demo":"storage\/update-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"bucketId","description":"Bucket unique ID.","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Bucket name","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":false},"enabled":{"type":"boolean","description":"Is bucket enabled? When set to 'disabled', users cannot access the files in this bucket but Server SDKs with and API key can still access the bucket. No files are lost when this is toggled.","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB.","x-example":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","x-example":"none","enum":["none","gzip","zstd"],"x-enum-name":null,"x-enum-keys":[]},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","x-example":false}},"required":["name"]}}}}},"delete":{"summary":"Delete bucket","operationId":"storageDeleteBucket","tags":["storage"],"description":"Delete a storage bucket by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteBucket","weight":191,"cookies":false,"type":"","demo":"storage\/delete-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"bucketId","description":"Bucket unique ID.","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files":{"get":{"summary":"List files","operationId":"storageListFiles","tags":["storage"],"description":"Get a list of all the user files. You can use the query params to filter your results.","responses":{"200":{"description":"Files List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/fileList"}}}}},"x-appwrite":{"method":"listFiles","weight":193,"cookies":false,"type":"","demo":"storage\/list-files.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/list-files.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create file","operationId":"storageCreateFile","tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"createFile","weight":192,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"}],"requestBody":{"content":{"multipart\/form-data":{"schema":{"type":"object","properties":{"fileId":{"type":"string","description":"File ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[FILE_ID]","x-upload-id":true},"file":{"type":"string","description":"Binary file. Appwrite SDKs provide helpers to handle file input. [Learn about file input](https:\/\/appwrite.io\/docs\/storage#file-input).","x-example":null},"permissions":{"type":"array","description":"An array of permission strings. By default, only the current user is granted all permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["fileId","file"]}}}}}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get file","operationId":"storageGetFile","tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"getFile","weight":194,"cookies":false,"type":"","demo":"storage\/get-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File ID.","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"}]},"put":{"summary":"Update file","operationId":"storageUpdateFile","tags":["storage"],"description":"Update a file by its unique ID. Only users with write permissions have access to update this resource.","responses":{"200":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"updateFile","weight":198,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File unique ID.","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Name of the file","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission string. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":199,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File ID.","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/download":{"get":{"summary":"Get file for download","operationId":"storageGetFileDownload","tags":["storage"],"description":"Get a file content by its unique ID. The endpoint response return with a 'Content-Disposition: attachment' header that tells the browser to start downloading the file to user downloads directory.","responses":{"200":{"description":"File"}},"x-appwrite":{"method":"getFileDownload","weight":196,"cookies":false,"type":"location","demo":"storage\/get-file-download.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-download.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File ID.","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/preview":{"get":{"summary":"Get file preview","operationId":"storageGetFilePreview","tags":["storage"],"description":"Get a file preview image. Currently, this method supports preview for image files (jpg, png, and gif), other supported formats, like pdf, docs, slides, and spreadsheets, will return the file icon image. You can also pass query string arguments for cutting and resizing your preview image. Preview is supported only for image files smaller than 10MB.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFilePreview","weight":195,"cookies":false,"type":"location","demo":"storage\/get-file-preview.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-preview.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File ID","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"},{"name":"width","description":"Resize preview image width, Pass an integer between 0 to 4000.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 4000.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"gravity","description":"Image crop gravity. Can be one of center,top-left,top,top-right,left,right,bottom-left,bottom,bottom-right","required":false,"schema":{"type":"string","x-example":"center","enum":["center","top-left","top","top-right","left","right","bottom-left","bottom","bottom-right"],"x-enum-name":"ImageGravity","x-enum-keys":[],"default":"center"},"in":"query"},{"name":"quality","description":"Preview image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"borderWidth","description":"Preview image border in pixels. Pass an integer between 0 to 100. Defaults to 0.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"borderColor","description":"Preview image border color. Use a valid HEX color, no # is needed for prefix.","required":false,"schema":{"type":"string","default":""},"in":"query"},{"name":"borderRadius","description":"Preview image border radius in pixels. Pass an integer between 0 to 4000.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"opacity","description":"Preview image opacity. Only works with images having an alpha channel (like png). Pass a number between 0 to 1.","required":false,"schema":{"type":"number","format":"float","x-example":0,"default":1},"in":"query"},{"name":"rotation","description":"Preview image rotation in degrees. Pass an integer between -360 and 360.","required":false,"schema":{"type":"integer","format":"int32","x-example":-360,"default":0},"in":"query"},{"name":"background","description":"Preview image background color. Only works with transparent images (png). Use a valid HEX color, no # is needed for prefix.","required":false,"schema":{"type":"string","default":""},"in":"query"},{"name":"output","description":"Output format type (jpeg, jpg, png, gif and webp).","required":false,"schema":{"type":"string","x-example":"jpg","enum":["jpg","jpeg","gif","png","webp"],"x-enum-name":"ImageFormat","x-enum-keys":[],"default":""},"in":"query"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/view":{"get":{"summary":"Get file for view","operationId":"storageGetFileView","tags":["storage"],"description":"Get a file content by its unique ID. This endpoint is similar to the download method but returns with no 'Content-Disposition: attachment' header.","responses":{"200":{"description":"File"}},"x-appwrite":{"method":"getFileView","weight":197,"cookies":false,"type":"location","demo":"storage\/get-file-view.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-view.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File ID.","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"}]}},"\/storage\/usage":{"get":{"summary":"Get usage stats for storage","operationId":"storageGetUsage","tags":["storage"],"description":"","responses":{"200":{"description":"StorageUsage","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageStorage"}}}}},"x-appwrite":{"method":"getUsage","weight":200,"cookies":false,"type":"","demo":"storage\/get-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"schema":{"type":"string","x-example":"24h","enum":["24h","30d","90d"],"x-enum-name":"StorageUsageRange","x-enum-keys":["Twenty Four Hours","Thirty Days","Ninety Days"],"default":"30d"},"in":"query"}]}},"\/storage\/{bucketId}\/usage":{"get":{"summary":"Get usage stats for storage bucket","operationId":"storageGetBucketUsage","tags":["storage"],"description":"","responses":{"200":{"description":"UsageBuckets","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageBuckets"}}}}},"x-appwrite":{"method":"getBucketUsage","weight":201,"cookies":false,"type":"","demo":"storage\/get-bucket-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"bucketId","description":"Bucket ID.","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"range","description":"Date range.","required":false,"schema":{"type":"string","x-example":"24h","enum":["24h","30d","90d"],"x-enum-name":"StorageUsageRange","x-enum-keys":["Twenty Four Hours","Thirty Days","Ninety Days"],"default":"30d"},"in":"query"}]}},"\/teams":{"get":{"summary":"List teams","operationId":"teamsList","tags":["teams"],"description":"Get a list of all the teams in which the current user is a member. You can use the parameters to filter your results.","responses":{"200":{"description":"Teams List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/teamList"}}}}},"x-appwrite":{"method":"list","weight":203,"cookies":false,"type":"","demo":"teams\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-teams.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total, billingPlan","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create team","operationId":"teamsCreate","tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"create","weight":202,"cookies":false,"type":"","demo":"teams\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/create-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"teamId":{"type":"string","description":"Team ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[TEAM_ID]"},"name":{"type":"string","description":"Team name. Max length: 128 chars.","x-example":"[NAME]"},"roles":{"type":"array","description":"Array of strings. Use this param to set the roles in the team for the user who created it. The default role is **owner**. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}}}}},"\/teams\/{teamId}":{"get":{"summary":"Get team","operationId":"teamsGet","tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"get","weight":204,"cookies":false,"type":"","demo":"teams\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams","offline-key":"{teamId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}]},"put":{"summary":"Update name","operationId":"teamsUpdateName","tags":["teams"],"description":"Update the team's name by its unique ID.","responses":{"200":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"updateName","weight":206,"cookies":false,"type":"","demo":"teams\/update-name.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-name.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams","offline-key":"{teamId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"New team name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["name"]}}}}},"delete":{"summary":"Delete team","operationId":"teamsDelete","tags":["teams"],"description":"Delete a team using its ID. Only team members with the owner role can delete the team.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":208,"cookies":false,"type":"","demo":"teams\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/delete-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}]}},"\/teams\/{teamId}\/logs":{"get":{"summary":"List team logs","operationId":"teamsListLogs","tags":["teams"],"description":"Get the team activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listLogs","weight":215,"cookies":false,"type":"","demo":"teams\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/teams\/{teamId}\/memberships":{"get":{"summary":"List team memberships","operationId":"teamsListMemberships","tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"listMemberships","weight":210,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/memberships","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create team membership","operationId":"teamsCreateMembership","tags":["teams"],"description":"Invite a new member to join your team. Provide an ID for existing users, or invite unregistered users using an email or phone number. If initiated from a Client SDK, Appwrite will send an email or sms with a link to join the team to the invited user, and an account will be created for them if one doesn't exist. If initiated from a Server SDK, the new member will be added automatically to the team.\n\nYou only need to provide one of a user ID, email, or phone number. Appwrite will prioritize accepting the user ID > email > phone number if you provide more than one of these parameters.\n\nUse the `url` parameter to redirect the user from the invitation email to your app. After the user is redirected, use the [Update Team Membership Status](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/teams#updateMembershipStatus) endpoint to allow the user to accept the invitation to the team. \n\nPlease note that to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) Appwrite will accept the only redirect URLs under the domains you have added as a platform on the Appwrite Console.\n","responses":{"201":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"createMembership","weight":209,"cookies":false,"type":"","demo":"teams\/create-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/create-team-membership.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"email":{"type":"string","description":"Email of the new team member.","x-example":"email@example.com"},"userId":{"type":"string","description":"ID of the user to be added to a team.","x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"roles":{"type":"array","description":"Array of strings. Use this param to set the user roles in the team. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"},"name":{"type":"string","description":"Name of the new team member. Max length: 128 chars.","x-example":"[NAME]"}},"required":["roles"]}}}}}},"\/teams\/{teamId}\/memberships\/{membershipId}":{"get":{"summary":"Get team membership","operationId":"teamsGetMembership","tags":["teams"],"description":"Get a team member by the membership unique id. All team members have read access for this resource.","responses":{"200":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"getMembership","weight":211,"cookies":false,"type":"","demo":"teams\/get-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-member.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/memberships","offline-key":"{membershipId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"schema":{"type":"string","x-example":"[MEMBERSHIP_ID]"},"in":"path"}]},"patch":{"summary":"Update membership","operationId":"teamsUpdateMembership","tags":["teams"],"description":"Modify the roles of a team member. Only team members with the owner role have access to this endpoint. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions).\n","responses":{"200":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"updateMembership","weight":212,"cookies":false,"type":"","demo":"teams\/update-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"schema":{"type":"string","x-example":"[MEMBERSHIP_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"roles":{"type":"array","description":"An array of strings. Use this param to set the user's roles in the team. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["roles"]}}}}},"delete":{"summary":"Delete team membership","operationId":"teamsDeleteMembership","tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":214,"cookies":false,"type":"","demo":"teams\/delete-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/delete-team-membership.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"schema":{"type":"string","x-example":"[MEMBERSHIP_ID]"},"in":"path"}]}},"\/teams\/{teamId}\/memberships\/{membershipId}\/status":{"patch":{"summary":"Update team membership status","operationId":"teamsUpdateMembershipStatus","tags":["teams"],"description":"Use this endpoint to allow a user to accept an invitation to join a team after being redirected back to your app from the invitation email received by the user.\n\nIf the request is successful, a session for the user is automatically created.\n","responses":{"200":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"updateMembershipStatus","weight":213,"cookies":false,"type":"","demo":"teams\/update-membership-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"public","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"schema":{"type":"string","x-example":"[MEMBERSHIP_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Secret key.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/teams\/{teamId}\/prefs":{"get":{"summary":"Get team preferences","operationId":"teamsGetPrefs","tags":["teams"],"description":"Get the team's shared preferences by its unique ID. If a preference doesn't need to be shared by all team members, prefer storing them in [user preferences](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#getPrefs).","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"getPrefs","weight":205,"cookies":false,"type":"","demo":"teams\/get-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/prefs","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}]},"put":{"summary":"Update preferences","operationId":"teamsUpdatePrefs","tags":["teams"],"description":"Update the team's preferences by its unique ID. The object you pass is stored as is and replaces any previous value. The maximum allowed prefs size is 64kB and throws an error if exceeded.","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"updatePrefs","weight":207,"cookies":false,"type":"","demo":"teams\/update-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/prefs","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"prefs":{"type":"object","description":"Prefs key-value JSON object.","x-example":"{}"}},"required":["prefs"]}}}}}},"\/users":{"get":{"summary":"List users","operationId":"usersList","tags":["users"],"description":"Get a list of all the project's users. You can use the query params to filter your results.","responses":{"200":{"description":"Users List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/userList"}}}}},"x-appwrite":{"method":"list","weight":225,"cookies":false,"type":"","demo":"users\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-users.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, email, phone, status, passwordUpdate, registration, emailVerification, phoneVerification, labels","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create user","operationId":"usersCreate","tags":["users"],"description":"Create a new user.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"create","weight":216,"cookies":false,"type":"","demo":"users\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"password":{"type":"string","description":"Plain text user password. Must be at least 8 chars.","x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId"]}}}}}},"\/users\/argon2":{"post":{"summary":"Create user with Argon2 password","operationId":"usersCreateArgon2User","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Argon2](https:\/\/en.wikipedia.org\/wiki\/Argon2) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createArgon2User","weight":219,"cookies":false,"type":"","demo":"users\/create-argon2user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-argon2-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Argon2.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/bcrypt":{"post":{"summary":"Create user with bcrypt password","operationId":"usersCreateBcryptUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Bcrypt](https:\/\/en.wikipedia.org\/wiki\/Bcrypt) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createBcryptUser","weight":217,"cookies":false,"type":"","demo":"users\/create-bcrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-bcrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Bcrypt.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/identities":{"get":{"summary":"List Identities","operationId":"usersListIdentities","tags":["users"],"description":"Get identities for all users.","responses":{"200":{"description":"Identities List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/identityList"}}}}},"x-appwrite":{"method":"listIdentities","weight":233,"cookies":false,"type":"","demo":"users\/list-identities.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-identities.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, provider, providerUid, providerEmail, providerAccessTokenExpiry","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]}},"\/users\/identities\/{identityId}":{"delete":{"summary":"Delete identity","operationId":"usersDeleteIdentity","tags":["users"],"description":"Delete an identity by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIdentity","weight":253,"cookies":false,"type":"","demo":"users\/delete-identity.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-identity.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"identityId","description":"Identity ID.","required":true,"schema":{"type":"string","x-example":"[IDENTITY_ID]"},"in":"path"}]}},"\/users\/md5":{"post":{"summary":"Create user with MD5 password","operationId":"usersCreateMD5User","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [MD5](https:\/\/en.wikipedia.org\/wiki\/MD5) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createMD5User","weight":218,"cookies":false,"type":"","demo":"users\/create-m-d5user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-md5-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using MD5.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/phpass":{"post":{"summary":"Create user with PHPass password","operationId":"usersCreatePHPassUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [PHPass](https:\/\/www.openwall.com\/phpass\/) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createPHPassUser","weight":221,"cookies":false,"type":"","demo":"users\/create-p-h-pass-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-phpass-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or pass the string `ID.unique()`to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using PHPass.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/scrypt":{"post":{"summary":"Create user with Scrypt password","operationId":"usersCreateScryptUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt](https:\/\/github.com\/Tarsnap\/scrypt) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createScryptUser","weight":222,"cookies":false,"type":"","demo":"users\/create-scrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt.","x-example":"password"},"passwordSalt":{"type":"string","description":"Optional salt used to hash password.","x-example":"[PASSWORD_SALT]"},"passwordCpu":{"type":"integer","description":"Optional CPU cost used to hash password.","x-example":null},"passwordMemory":{"type":"integer","description":"Optional memory cost used to hash password.","x-example":null},"passwordParallel":{"type":"integer","description":"Optional parallelization cost used to hash password.","x-example":null},"passwordLength":{"type":"integer","description":"Optional hash length used to hash password.","x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordCpu","passwordMemory","passwordParallel","passwordLength"]}}}}}},"\/users\/scrypt-modified":{"post":{"summary":"Create user with Scrypt modified password","operationId":"usersCreateScryptModifiedUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt Modified](https:\/\/gist.github.com\/Meldiron\/eecf84a0225eccb5a378d45bb27462cc) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createScryptModifiedUser","weight":223,"cookies":false,"type":"","demo":"users\/create-scrypt-modified-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-modified-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt Modified.","x-example":"password"},"passwordSalt":{"type":"string","description":"Salt used to hash password.","x-example":"[PASSWORD_SALT]"},"passwordSaltSeparator":{"type":"string","description":"Salt separator used to hash password.","x-example":"[PASSWORD_SALT_SEPARATOR]"},"passwordSignerKey":{"type":"string","description":"Signer key used to hash password.","x-example":"[PASSWORD_SIGNER_KEY]"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordSaltSeparator","passwordSignerKey"]}}}}}},"\/users\/sha":{"post":{"summary":"Create user with SHA password","operationId":"usersCreateSHAUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [SHA](https:\/\/en.wikipedia.org\/wiki\/Secure_Hash_Algorithm) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createSHAUser","weight":220,"cookies":false,"type":"","demo":"users\/create-s-h-a-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-sha-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using SHA.","x-example":"password"},"passwordVersion":{"type":"string","description":"Optional SHA version used to hash password. Allowed values are: 'sha1', 'sha224', 'sha256', 'sha384', 'sha512\/224', 'sha512\/256', 'sha512', 'sha3-224', 'sha3-256', 'sha3-384', 'sha3-512'","x-example":"sha1","enum":["sha1","sha224","sha256","sha384","sha512\/224","sha512\/256","sha512","sha3-224","sha3-256","sha3-384","sha3-512"],"x-enum-name":"PasswordHash","x-enum-keys":[]},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/usage":{"get":{"summary":"Get usage stats for the users API","operationId":"usersGetUsage","tags":["users"],"description":"","responses":{"200":{"description":"UsageUsers","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageUsers"}}}}},"x-appwrite":{"method":"getUsage","weight":254,"cookies":false,"type":"","demo":"users\/get-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"schema":{"type":"string","x-example":"24h","enum":["24h","30d","90d"],"x-enum-name":"UserUsageRange","x-enum-keys":["Twenty Four Hours","Thirty Days","Ninety Days"],"default":"30d"},"in":"query"}]}},"\/users\/{userId}":{"get":{"summary":"Get user","operationId":"usersGet","tags":["users"],"description":"Get a user by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"get","weight":226,"cookies":false,"type":"","demo":"users\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]},"delete":{"summary":"Delete user","operationId":"usersDelete","tags":["users"],"description":"Delete a user by its unique ID, thereby releasing it's ID. Since ID is released and can be reused, all user-related resources like documents or storage files should be deleted before user deletion. If you want to keep ID reserved, use the [updateStatus](https:\/\/appwrite.io\/docs\/server\/users#usersUpdateStatus) endpoint instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":251,"cookies":false,"type":"","demo":"users\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]}},"\/users\/{userId}\/email":{"patch":{"summary":"Update email","operationId":"usersUpdateEmail","tags":["users"],"description":"Update the user email by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateEmail","weight":239,"cookies":false,"type":"","demo":"users\/update-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","x-example":"email@example.com"}},"required":["email"]}}}}}},"\/users\/{userId}\/labels":{"put":{"summary":"Update user labels","operationId":"usersUpdateLabels","tags":["users"],"description":"Update the user labels by its unique ID. \n\nLabels can be used to grant access to resources. While teams are a way for user's to share access to a resource, labels can be defined by the developer to grant access without an invitation. See the [Permissions docs](https:\/\/appwrite.io\/docs\/permissions) for more info.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateLabels","weight":235,"cookies":false,"type":"","demo":"users\/update-labels.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-labels.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"labels":{"type":"array","description":"Array of user labels. Replaces the previous labels. Maximum of 1000 labels are allowed, each up to 36 alphanumeric characters long.","x-example":null,"items":{"type":"string"}}},"required":["labels"]}}}}}},"\/users\/{userId}\/logs":{"get":{"summary":"List user logs","operationId":"usersListLogs","tags":["users"],"description":"Get the user activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listLogs","weight":231,"cookies":false,"type":"","demo":"users\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/users\/{userId}\/memberships":{"get":{"summary":"List user memberships","operationId":"usersListMemberships","tags":["users"],"description":"Get the user membership list by its unique ID.","responses":{"200":{"description":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"listMemberships","weight":230,"cookies":false,"type":"","demo":"users\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-memberships.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]}},"\/users\/{userId}\/mfa":{"patch":{"summary":"Update MFA","operationId":"usersUpdateMfa","tags":["users"],"description":"","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateMfa","weight":244,"cookies":false,"type":"","demo":"users\/update-mfa.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-mfa.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"mfa":{"type":"boolean","description":"Enable or disable MFA.","x-example":false}},"required":["mfa"]}}}}}},"\/users\/{userId}\/mfa\/factors":{"get":{"summary":"List Factors","operationId":"usersListFactors","tags":["users"],"description":"","responses":{"200":{"description":"MFAFactors","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/mfaFactors"}}}}},"x-appwrite":{"method":"listFactors","weight":245,"cookies":false,"type":"","demo":"users\/list-factors.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-factors.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]}},"\/users\/{userId}\/mfa\/{type}":{"delete":{"summary":"Delete Authenticator","operationId":"usersDeleteAuthenticator","tags":["users"],"description":"","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"deleteAuthenticator","weight":246,"cookies":false,"type":"","demo":"users\/delete-authenticator.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-mfa.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"type","description":"Type of authenticator.","required":true,"schema":{"type":"string","x-example":"totp","enum":["totp"],"x-enum-name":null,"x-enum-keys":[]},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"otp":{"type":"string","description":"Valid verification token.","x-example":"[OTP]"}},"required":["otp"]}}}}}},"\/users\/{userId}\/name":{"patch":{"summary":"Update name","operationId":"usersUpdateName","tags":["users"],"description":"Update the user name by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateName","weight":237,"cookies":false,"type":"","demo":"users\/update-name.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-name.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["name"]}}}}}},"\/users\/{userId}\/password":{"patch":{"summary":"Update password","operationId":"usersUpdatePassword","tags":["users"],"description":"Update the user password by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePassword","weight":238,"cookies":false,"type":"","demo":"users\/update-password.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-password.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"password":{"type":"string","description":"New user password. Must be at least 8 chars.","x-example":null}},"required":["password"]}}}}}},"\/users\/{userId}\/phone":{"patch":{"summary":"Update phone","operationId":"usersUpdatePhone","tags":["users"],"description":"Update the user phone by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePhone","weight":240,"cookies":false,"type":"","demo":"users\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"number":{"type":"string","description":"User phone number.","x-example":"+12065550100"}},"required":["number"]}}}}}},"\/users\/{userId}\/prefs":{"get":{"summary":"Get user preferences","operationId":"usersGetPrefs","tags":["users"],"description":"Get the user preferences by its unique ID.","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"getPrefs","weight":227,"cookies":false,"type":"","demo":"users\/get-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]},"patch":{"summary":"Update user preferences","operationId":"usersUpdatePrefs","tags":["users"],"description":"Update the user preferences by its unique ID. The object you pass is stored as is, and replaces any previous value. The maximum allowed prefs size is 64kB and throws error if exceeded.","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"updatePrefs","weight":242,"cookies":false,"type":"","demo":"users\/update-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"prefs":{"type":"object","description":"Prefs key-value JSON object.","x-example":"{}"}},"required":["prefs"]}}}}}},"\/users\/{userId}\/sessions":{"get":{"summary":"List user sessions","operationId":"usersListSessions","tags":["users"],"description":"Get the user sessions list by its unique ID.","responses":{"200":{"description":"Sessions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/sessionList"}}}}},"x-appwrite":{"method":"listSessions","weight":229,"cookies":false,"type":"","demo":"users\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]},"post":{"summary":"Create session","operationId":"usersCreateSession","tags":["users"],"description":"Creates a session for a user. Returns an immediately usable session object.\n\nIf you want to generate a token for a custom authentication flow, use the [POST \/users\/{userId}\/tokens](https:\/\/appwrite.io\/docs\/server\/users#createToken) endpoint.","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"createSession","weight":247,"cookies":false,"type":"","demo":"users\/create-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-session.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]},"delete":{"summary":"Delete user sessions","operationId":"usersDeleteSessions","tags":["users"],"description":"Delete all user's sessions by using the user's unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":250,"cookies":false,"type":"","demo":"users\/delete-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]}},"\/users\/{userId}\/sessions\/{sessionId}":{"delete":{"summary":"Delete user session","operationId":"usersDeleteSession","tags":["users"],"description":"Delete a user sessions by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSession","weight":249,"cookies":false,"type":"","demo":"users\/delete-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-user-session.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"sessionId","description":"Session ID.","required":true,"schema":{"type":"string","x-example":"[SESSION_ID]"},"in":"path"}]}},"\/users\/{userId}\/status":{"patch":{"summary":"Update user status","operationId":"usersUpdateStatus","tags":["users"],"description":"Update the user status by its unique ID. Use this endpoint as an alternative to deleting a user if you want to keep user's ID reserved.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateStatus","weight":234,"cookies":false,"type":"","demo":"users\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"status":{"type":"boolean","description":"User Status. To activate the user pass `true` and to block the user pass `false`.","x-example":false}},"required":["status"]}}}}}},"\/users\/{userId}\/targets":{"get":{"summary":"List User Targets","operationId":"usersListTargets","tags":["users"],"description":"","responses":{"200":{"description":"Target list","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/targetList"}}}}},"x-appwrite":{"method":"listTargets","weight":232,"cookies":false,"type":"","demo":"users\/list-targets.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-targets.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.read","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, email, phone, status, passwordUpdate, registration, emailVerification, phoneVerification, labels","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"post":{"summary":"Create User Target","operationId":"usersCreateTarget","tags":["users"],"description":"","responses":{"201":{"description":"Target","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/target"}}}}},"x-appwrite":{"method":"createTarget","weight":224,"cookies":false,"type":"","demo":"users\/create-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-target.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"targetId":{"type":"string","description":"Target ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[TARGET_ID]"},"providerType":{"type":"string","description":"The target provider type. Can be one of the following: `email`, `sms` or `push`.","x-example":"email","enum":["email","sms","push"],"x-enum-name":"MessagingProviderType","x-enum-keys":[]},"identifier":{"type":"string","description":"The target identifier (token, email, phone etc.)","x-example":"[IDENTIFIER]"},"providerId":{"type":"string","description":"Provider ID. Message will be sent to this target from the specified provider ID. If no provider ID is set the first setup provider will be used.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Target name. Max length: 128 chars. For example: My Awesome App Galaxy S23.","x-example":"[NAME]"}},"required":["targetId","providerType","identifier"]}}}}}},"\/users\/{userId}\/targets\/{targetId}":{"get":{"summary":"Get User Target","operationId":"usersGetTarget","tags":["users"],"description":"","responses":{"200":{"description":"Target","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/target"}}}}},"x-appwrite":{"method":"getTarget","weight":228,"cookies":false,"type":"","demo":"users\/get-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-target.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.read","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"targetId","description":"Target ID.","required":true,"schema":{"type":"string","x-example":"[TARGET_ID]"},"in":"path"}]},"patch":{"summary":"Update User target","operationId":"usersUpdateTarget","tags":["users"],"description":"","responses":{"200":{"description":"Target","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/target"}}}}},"x-appwrite":{"method":"updateTarget","weight":243,"cookies":false,"type":"","demo":"users\/update-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-target.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"targetId","description":"Target ID.","required":true,"schema":{"type":"string","x-example":"[TARGET_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"identifier":{"type":"string","description":"The target identifier (token, email, phone etc.)","x-example":"[IDENTIFIER]"},"providerId":{"type":"string","description":"Provider ID. Message will be sent to this target from the specified provider ID. If no provider ID is set the first setup provider will be used.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Target name. Max length: 128 chars. For example: My Awesome App Galaxy S23.","x-example":"[NAME]"}}}}}}},"delete":{"summary":"Delete user target","operationId":"usersDeleteTarget","tags":["users"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteTarget","weight":252,"cookies":false,"type":"","demo":"users\/delete-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-target.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"targetId","description":"Target ID.","required":true,"schema":{"type":"string","x-example":"[TARGET_ID]"},"in":"path"}]}},"\/users\/{userId}\/tokens":{"post":{"summary":"Create token","operationId":"usersCreateToken","tags":["users"],"description":"Returns a token with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [PUT \/account\/sessions\/custom](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateCustomSession) endpoint to complete the login process.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createToken","weight":248,"cookies":false,"type":"","demo":"users\/create-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-token.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"length":{"type":"integer","description":"Token length in characters. The default length is 6 characters","x-example":4},"expire":{"type":"integer","description":"Token expiration period in seconds. The default expiration is 15 minutes.","x-example":60}}}}}}}},"\/users\/{userId}\/verification":{"patch":{"summary":"Update email verification","operationId":"usersUpdateEmailVerification","tags":["users"],"description":"Update the user email verification status by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateEmailVerification","weight":241,"cookies":false,"type":"","demo":"users\/update-email-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-email-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"emailVerification":{"type":"boolean","description":"User email verification status.","x-example":false}},"required":["emailVerification"]}}}}}},"\/users\/{userId}\/verification\/phone":{"patch":{"summary":"Update phone verification","operationId":"usersUpdatePhoneVerification","tags":["users"],"description":"Update the user phone verification status by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePhoneVerification","weight":236,"cookies":false,"type":"","demo":"users\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"phoneVerification":{"type":"boolean","description":"User phone verification status.","x-example":false}},"required":["phoneVerification"]}}}}}},"\/vcs\/github\/installations\/{installationId}\/providerRepositories":{"get":{"summary":"List Repositories","operationId":"vcsListRepositories","tags":["vcs"],"description":"","responses":{"200":{"description":"Provider Repositories List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/providerRepositoryList"}}}}},"x-appwrite":{"method":"listRepositories","weight":258,"cookies":false,"type":"","demo":"vcs\/list-repositories.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"schema":{"type":"string","x-example":"[INSTALLATION_ID]"},"in":"path"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create repository","operationId":"vcsCreateRepository","tags":["vcs"],"description":"","responses":{"200":{"description":"ProviderRepository","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/providerRepository"}}}}},"x-appwrite":{"method":"createRepository","weight":259,"cookies":false,"type":"","demo":"vcs\/create-repository.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"schema":{"type":"string","x-example":"[INSTALLATION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Repository name (slug)","x-example":"[NAME]"},"private":{"type":"boolean","description":"Mark repository public or private","x-example":false}},"required":["name","private"]}}}}}},"\/vcs\/github\/installations\/{installationId}\/providerRepositories\/{providerRepositoryId}":{"get":{"summary":"Get repository","operationId":"vcsGetRepository","tags":["vcs"],"description":"","responses":{"200":{"description":"ProviderRepository","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/providerRepository"}}}}},"x-appwrite":{"method":"getRepository","weight":260,"cookies":false,"type":"","demo":"vcs\/get-repository.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"schema":{"type":"string","x-example":"[INSTALLATION_ID]"},"in":"path"},{"name":"providerRepositoryId","description":"Repository Id","required":true,"schema":{"type":"string","x-example":"[PROVIDER_REPOSITORY_ID]"},"in":"path"}]}},"\/vcs\/github\/installations\/{installationId}\/providerRepositories\/{providerRepositoryId}\/branches":{"get":{"summary":"List Repository Branches","operationId":"vcsListRepositoryBranches","tags":["vcs"],"description":"","responses":{"200":{"description":"Branches List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/branchList"}}}}},"x-appwrite":{"method":"listRepositoryBranches","weight":261,"cookies":false,"type":"","demo":"vcs\/list-repository-branches.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"schema":{"type":"string","x-example":"[INSTALLATION_ID]"},"in":"path"},{"name":"providerRepositoryId","description":"Repository Id","required":true,"schema":{"type":"string","x-example":"[PROVIDER_REPOSITORY_ID]"},"in":"path"}]}},"\/vcs\/github\/installations\/{installationId}\/providerRepositories\/{providerRepositoryId}\/detection":{"post":{"summary":"Detect runtime settings from source code","operationId":"vcsCreateRepositoryDetection","tags":["vcs"],"description":"","responses":{"200":{"description":"Detection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/detection"}}}}},"x-appwrite":{"method":"createRepositoryDetection","weight":257,"cookies":false,"type":"","demo":"vcs\/create-repository-detection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"schema":{"type":"string","x-example":"[INSTALLATION_ID]"},"in":"path"},{"name":"providerRepositoryId","description":"Repository Id","required":true,"schema":{"type":"string","x-example":"[PROVIDER_REPOSITORY_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerRootDirectory":{"type":"string","description":"Path to Root Directory","x-example":"[PROVIDER_ROOT_DIRECTORY]"}}}}}}}},"\/vcs\/github\/installations\/{installationId}\/repositories\/{repositoryId}":{"patch":{"summary":"Authorize external deployment","operationId":"vcsUpdateExternalDeployments","tags":["vcs"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"updateExternalDeployments","weight":266,"cookies":false,"type":"","demo":"vcs\/update-external-deployments.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"schema":{"type":"string","x-example":"[INSTALLATION_ID]"},"in":"path"},{"name":"repositoryId","description":"VCS Repository Id","required":true,"schema":{"type":"string","x-example":"[REPOSITORY_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerPullRequestId":{"type":"string","description":"GitHub Pull Request Id","x-example":"[PROVIDER_PULL_REQUEST_ID]"}},"required":["providerPullRequestId"]}}}}}},"\/vcs\/installations":{"get":{"summary":"List installations","operationId":"vcsListInstallations","tags":["vcs"],"description":"","responses":{"200":{"description":"Installations List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/installationList"}}}}},"x-appwrite":{"method":"listInstallations","weight":263,"cookies":false,"type":"","demo":"vcs\/list-installations.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/vcs\/list-installations.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: provider, organization","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]}},"\/vcs\/installations\/{installationId}":{"get":{"summary":"Get installation","operationId":"vcsGetInstallation","tags":["vcs"],"description":"","responses":{"200":{"description":"Installation","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/installation"}}}}},"x-appwrite":{"method":"getInstallation","weight":264,"cookies":false,"type":"","demo":"vcs\/get-installation.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/vcs\/get-installation.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"schema":{"type":"string","x-example":"[INSTALLATION_ID]"},"in":"path"}]},"delete":{"summary":"Delete Installation","operationId":"vcsDeleteInstallation","tags":["vcs"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteInstallation","weight":265,"cookies":false,"type":"","demo":"vcs\/delete-installation.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/vcs\/delete-installation.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"schema":{"type":"string","x-example":"[INSTALLATION_ID]"},"in":"path"}]}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"project","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]},{"name":"proxy","description":"The Proxy Service allows you to configure actions for your domains beyond DNS configuration.","x-globalAttributes":[]},{"name":"graphql","description":"The GraphQL API allows you to query and mutate your Appwrite server using GraphQL.","x-globalAttributes":[]},{"name":"console","description":"The Console service allows you to interact with console relevant informations.","x-globalAttributes":[]},{"name":"migrations","description":"The Migrations service allows you to migrate third-party data to your Appwrite project.","x-globalAttributes":[]},{"name":"messaging","description":"The Messaging service allows you to send messages to any provider type (SMTP, push notification, SMS, etc.).","x-globalAttributes":[]}],"components":{"schemas":{"any":{"description":"Any","type":"object","additionalProperties":true},"error":{"description":"Error","type":"object","properties":{"message":{"type":"string","description":"Error message.","x-example":"Not found"},"code":{"type":"string","description":"Error code.","x-example":"404"},"type":{"type":"string","description":"Error type. You can learn more about all the error types at https:\/\/appwrite.io\/docs\/error-codes#errorTypes","x-example":"not_found"},"version":{"type":"string","description":"Server version number.","x-example":"1.0"}},"required":["message","code","type","version"]},"documentList":{"description":"Documents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of documents documents that matched your query.","x-example":5,"format":"int32"},"documents":{"type":"array","description":"List of documents.","items":{"$ref":"#\/components\/schemas\/document"},"x-example":""}},"required":["total","documents"]},"collectionList":{"description":"Collections List","type":"object","properties":{"total":{"type":"integer","description":"Total number of collections documents that matched your query.","x-example":5,"format":"int32"},"collections":{"type":"array","description":"List of collections.","items":{"$ref":"#\/components\/schemas\/collection"},"x-example":""}},"required":["total","collections"]},"databaseList":{"description":"Databases List","type":"object","properties":{"total":{"type":"integer","description":"Total number of databases documents that matched your query.","x-example":5,"format":"int32"},"databases":{"type":"array","description":"List of databases.","items":{"$ref":"#\/components\/schemas\/database"},"x-example":""}},"required":["total","databases"]},"indexList":{"description":"Indexes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of indexes documents that matched your query.","x-example":5,"format":"int32"},"indexes":{"type":"array","description":"List of indexes.","items":{"$ref":"#\/components\/schemas\/index"},"x-example":""}},"required":["total","indexes"]},"userList":{"description":"Users List","type":"object","properties":{"total":{"type":"integer","description":"Total number of users documents that matched your query.","x-example":5,"format":"int32"},"users":{"type":"array","description":"List of users.","items":{"$ref":"#\/components\/schemas\/user"},"x-example":""}},"required":["total","users"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of sessions documents that matched your query.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"$ref":"#\/components\/schemas\/session"},"x-example":""}},"required":["total","sessions"]},"identityList":{"description":"Identities List","type":"object","properties":{"total":{"type":"integer","description":"Total number of identities documents that matched your query.","x-example":5,"format":"int32"},"identities":{"type":"array","description":"List of identities.","items":{"$ref":"#\/components\/schemas\/identity"},"x-example":""}},"required":["total","identities"]},"logList":{"description":"Logs List","type":"object","properties":{"total":{"type":"integer","description":"Total number of logs documents that matched your query.","x-example":5,"format":"int32"},"logs":{"type":"array","description":"List of logs.","items":{"$ref":"#\/components\/schemas\/log"},"x-example":""}},"required":["total","logs"]},"fileList":{"description":"Files List","type":"object","properties":{"total":{"type":"integer","description":"Total number of files documents that matched your query.","x-example":5,"format":"int32"},"files":{"type":"array","description":"List of files.","items":{"$ref":"#\/components\/schemas\/file"},"x-example":""}},"required":["total","files"]},"bucketList":{"description":"Buckets List","type":"object","properties":{"total":{"type":"integer","description":"Total number of buckets documents that matched your query.","x-example":5,"format":"int32"},"buckets":{"type":"array","description":"List of buckets.","items":{"$ref":"#\/components\/schemas\/bucket"},"x-example":""}},"required":["total","buckets"]},"teamList":{"description":"Teams List","type":"object","properties":{"total":{"type":"integer","description":"Total number of teams documents that matched your query.","x-example":5,"format":"int32"},"teams":{"type":"array","description":"List of teams.","items":{"$ref":"#\/components\/schemas\/team"},"x-example":""}},"required":["total","teams"]},"membershipList":{"description":"Memberships List","type":"object","properties":{"total":{"type":"integer","description":"Total number of memberships documents that matched your query.","x-example":5,"format":"int32"},"memberships":{"type":"array","description":"List of memberships.","items":{"$ref":"#\/components\/schemas\/membership"},"x-example":""}},"required":["total","memberships"]},"functionList":{"description":"Functions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of functions documents that matched your query.","x-example":5,"format":"int32"},"functions":{"type":"array","description":"List of functions.","items":{"$ref":"#\/components\/schemas\/function"},"x-example":""}},"required":["total","functions"]},"installationList":{"description":"Installations List","type":"object","properties":{"total":{"type":"integer","description":"Total number of installations documents that matched your query.","x-example":5,"format":"int32"},"installations":{"type":"array","description":"List of installations.","items":{"$ref":"#\/components\/schemas\/installation"},"x-example":""}},"required":["total","installations"]},"providerRepositoryList":{"description":"Provider Repositories List","type":"object","properties":{"total":{"type":"integer","description":"Total number of providerRepositories documents that matched your query.","x-example":5,"format":"int32"},"providerRepositories":{"type":"array","description":"List of providerRepositories.","items":{"$ref":"#\/components\/schemas\/providerRepository"},"x-example":""}},"required":["total","providerRepositories"]},"branchList":{"description":"Branches List","type":"object","properties":{"total":{"type":"integer","description":"Total number of branches documents that matched your query.","x-example":5,"format":"int32"},"branches":{"type":"array","description":"List of branches.","items":{"$ref":"#\/components\/schemas\/branch"},"x-example":""}},"required":["total","branches"]},"runtimeList":{"description":"Runtimes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of runtimes documents that matched your query.","x-example":5,"format":"int32"},"runtimes":{"type":"array","description":"List of runtimes.","items":{"$ref":"#\/components\/schemas\/runtime"},"x-example":""}},"required":["total","runtimes"]},"deploymentList":{"description":"Deployments List","type":"object","properties":{"total":{"type":"integer","description":"Total number of deployments documents that matched your query.","x-example":5,"format":"int32"},"deployments":{"type":"array","description":"List of deployments.","items":{"$ref":"#\/components\/schemas\/deployment"},"x-example":""}},"required":["total","deployments"]},"executionList":{"description":"Executions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of executions documents that matched your query.","x-example":5,"format":"int32"},"executions":{"type":"array","description":"List of executions.","items":{"$ref":"#\/components\/schemas\/execution"},"x-example":""}},"required":["total","executions"]},"projectList":{"description":"Projects List","type":"object","properties":{"total":{"type":"integer","description":"Total number of projects documents that matched your query.","x-example":5,"format":"int32"},"projects":{"type":"array","description":"List of projects.","items":{"$ref":"#\/components\/schemas\/project"},"x-example":""}},"required":["total","projects"]},"webhookList":{"description":"Webhooks List","type":"object","properties":{"total":{"type":"integer","description":"Total number of webhooks documents that matched your query.","x-example":5,"format":"int32"},"webhooks":{"type":"array","description":"List of webhooks.","items":{"$ref":"#\/components\/schemas\/webhook"},"x-example":""}},"required":["total","webhooks"]},"keyList":{"description":"API Keys List","type":"object","properties":{"total":{"type":"integer","description":"Total number of keys documents that matched your query.","x-example":5,"format":"int32"},"keys":{"type":"array","description":"List of keys.","items":{"$ref":"#\/components\/schemas\/key"},"x-example":""}},"required":["total","keys"]},"platformList":{"description":"Platforms List","type":"object","properties":{"total":{"type":"integer","description":"Total number of platforms documents that matched your query.","x-example":5,"format":"int32"},"platforms":{"type":"array","description":"List of platforms.","items":{"$ref":"#\/components\/schemas\/platform"},"x-example":""}},"required":["total","platforms"]},"countryList":{"description":"Countries List","type":"object","properties":{"total":{"type":"integer","description":"Total number of countries documents that matched your query.","x-example":5,"format":"int32"},"countries":{"type":"array","description":"List of countries.","items":{"$ref":"#\/components\/schemas\/country"},"x-example":""}},"required":["total","countries"]},"continentList":{"description":"Continents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of continents documents that matched your query.","x-example":5,"format":"int32"},"continents":{"type":"array","description":"List of continents.","items":{"$ref":"#\/components\/schemas\/continent"},"x-example":""}},"required":["total","continents"]},"languageList":{"description":"Languages List","type":"object","properties":{"total":{"type":"integer","description":"Total number of languages documents that matched your query.","x-example":5,"format":"int32"},"languages":{"type":"array","description":"List of languages.","items":{"$ref":"#\/components\/schemas\/language"},"x-example":""}},"required":["total","languages"]},"currencyList":{"description":"Currencies List","type":"object","properties":{"total":{"type":"integer","description":"Total number of currencies documents that matched your query.","x-example":5,"format":"int32"},"currencies":{"type":"array","description":"List of currencies.","items":{"$ref":"#\/components\/schemas\/currency"},"x-example":""}},"required":["total","currencies"]},"phoneList":{"description":"Phones List","type":"object","properties":{"total":{"type":"integer","description":"Total number of phones documents that matched your query.","x-example":5,"format":"int32"},"phones":{"type":"array","description":"List of phones.","items":{"$ref":"#\/components\/schemas\/phone"},"x-example":""}},"required":["total","phones"]},"variableList":{"description":"Variables List","type":"object","properties":{"total":{"type":"integer","description":"Total number of variables documents that matched your query.","x-example":5,"format":"int32"},"variables":{"type":"array","description":"List of variables.","items":{"$ref":"#\/components\/schemas\/variable"},"x-example":""}},"required":["total","variables"]},"proxyRuleList":{"description":"Rule List","type":"object","properties":{"total":{"type":"integer","description":"Total number of rules documents that matched your query.","x-example":5,"format":"int32"},"rules":{"type":"array","description":"List of rules.","items":{"$ref":"#\/components\/schemas\/proxyRule"},"x-example":""}},"required":["total","rules"]},"localeCodeList":{"description":"Locale codes list","type":"object","properties":{"total":{"type":"integer","description":"Total number of localeCodes documents that matched your query.","x-example":5,"format":"int32"},"localeCodes":{"type":"array","description":"List of localeCodes.","items":{"$ref":"#\/components\/schemas\/localeCode"},"x-example":""}},"required":["total","localeCodes"]},"providerList":{"description":"Provider list","type":"object","properties":{"total":{"type":"integer","description":"Total number of providers documents that matched your query.","x-example":5,"format":"int32"},"providers":{"type":"array","description":"List of providers.","items":{"$ref":"#\/components\/schemas\/provider"},"x-example":""}},"required":["total","providers"]},"messageList":{"description":"Message list","type":"object","properties":{"total":{"type":"integer","description":"Total number of messages documents that matched your query.","x-example":5,"format":"int32"},"messages":{"type":"array","description":"List of messages.","items":{"$ref":"#\/components\/schemas\/message"},"x-example":""}},"required":["total","messages"]},"topicList":{"description":"Topic list","type":"object","properties":{"total":{"type":"integer","description":"Total number of topics documents that matched your query.","x-example":5,"format":"int32"},"topics":{"type":"array","description":"List of topics.","items":{"$ref":"#\/components\/schemas\/topic"},"x-example":""}},"required":["total","topics"]},"subscriberList":{"description":"Subscriber list","type":"object","properties":{"total":{"type":"integer","description":"Total number of subscribers documents that matched your query.","x-example":5,"format":"int32"},"subscribers":{"type":"array","description":"List of subscribers.","items":{"$ref":"#\/components\/schemas\/subscriber"},"x-example":""}},"required":["total","subscribers"]},"targetList":{"description":"Target list","type":"object","properties":{"total":{"type":"integer","description":"Total number of targets documents that matched your query.","x-example":5,"format":"int32"},"targets":{"type":"array","description":"List of targets.","items":{"$ref":"#\/components\/schemas\/target"},"x-example":""}},"required":["total","targets"]},"migrationList":{"description":"Migrations List","type":"object","properties":{"total":{"type":"integer","description":"Total number of migrations documents that matched your query.","x-example":5,"format":"int32"},"migrations":{"type":"array","description":"List of migrations.","items":{"$ref":"#\/components\/schemas\/migration"},"x-example":""}},"required":["total","migrations"]},"firebaseProjectList":{"description":"Migrations Firebase Projects List","type":"object","properties":{"total":{"type":"integer","description":"Total number of projects documents that matched your query.","x-example":5,"format":"int32"},"projects":{"type":"array","description":"List of projects.","items":{"$ref":"#\/components\/schemas\/firebaseProject"},"x-example":""}},"required":["total","projects"]},"database":{"description":"Database","type":"object","properties":{"$id":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Database name.","x-example":"My Database"},"$createdAt":{"type":"string","description":"Database creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Database update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"enabled":{"type":"boolean","description":"If database is enabled. Can be 'enabled' or 'disabled'. When disabled, the database is inaccessible to users, but remains accessible to Server SDKs using API keys.","x-example":false}},"required":["$id","name","$createdAt","$updatedAt","enabled"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Collection creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Collection update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Collection permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled. Can be 'enabled' or 'disabled'. When disabled, the collection is inaccessible to users, but remains accessible to Server SDKs using API keys.","x-example":false},"documentSecurity":{"type":"boolean","description":"Whether document-level permissions are enabled. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":true},"attributes":{"type":"array","description":"Collection attributes.","items":{"anyOf":[{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeRelationship"},{"$ref":"#\/components\/schemas\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"$ref":"#\/components\/schemas\/index"},"x-example":{}}},"required":["$id","$createdAt","$updatedAt","$permissions","databaseId","name","enabled","documentSecurity","attributes","indexes"]},"attributeList":{"description":"Attributes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of attributes in the given collection.","x-example":5,"format":"int32"},"attributes":{"type":"array","description":"List of attributes.","items":{"anyOf":[{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeRelationship"},{"$ref":"#\/components\/schemas\/attributeString"}]},"x-example":""}},"required":["total","attributes"]},"attributeString":{"description":"AttributeString","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"fullName"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"size":{"type":"integer","description":"Attribute size.","x-example":128,"format":"int32"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"default","nullable":true}},"required":["key","type","status","error","required","size"]},"attributeInteger":{"description":"AttributeInteger","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"count"},"type":{"type":"string","description":"Attribute type.","x-example":"integer"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"min":{"type":"integer","description":"Minimum value to enforce for new documents.","x-example":1,"format":"int32","nullable":true},"max":{"type":"integer","description":"Maximum value to enforce for new documents.","x-example":10,"format":"int32","nullable":true},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":10,"format":"int32","nullable":true}},"required":["key","type","status","error","required"]},"attributeFloat":{"description":"AttributeFloat","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"percentageCompleted"},"type":{"type":"string","description":"Attribute type.","x-example":"double"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"min":{"type":"number","description":"Minimum value to enforce for new documents.","x-example":1.5,"format":"double","nullable":true},"max":{"type":"number","description":"Maximum value to enforce for new documents.","x-example":10.5,"format":"double","nullable":true},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":2.5,"format":"double","nullable":true}},"required":["key","type","status","error","required"]},"attributeBoolean":{"description":"AttributeBoolean","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"isEnabled"},"type":{"type":"string","description":"Attribute type.","x-example":"boolean"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":false,"nullable":true}},"required":["key","type","status","error","required"]},"attributeEmail":{"description":"AttributeEmail","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"userEmail"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"format":{"type":"string","description":"String format.","x-example":"email"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"default@example.com","nullable":true}},"required":["key","type","status","error","required","format"]},"attributeEnum":{"description":"AttributeEnum","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"status"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"elements":{"type":"array","description":"Array of elements in enumerated type.","items":{"type":"string"},"x-example":"element"},"format":{"type":"string","description":"String format.","x-example":"enum"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"element","nullable":true}},"required":["key","type","status","error","required","elements","format"]},"attributeIp":{"description":"AttributeIP","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"ipAddress"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"format":{"type":"string","description":"String format.","x-example":"ip"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"192.0.2.0","nullable":true}},"required":["key","type","status","error","required","format"]},"attributeUrl":{"description":"AttributeURL","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"githubUrl"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"format":{"type":"string","description":"String format.","x-example":"url"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"http:\/\/example.com","nullable":true}},"required":["key","type","status","error","required","format"]},"attributeDatetime":{"description":"AttributeDatetime","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"birthDay"},"type":{"type":"string","description":"Attribute type.","x-example":"datetime"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"format":{"type":"string","description":"ISO 8601 format.","x-example":"datetime"},"default":{"type":"string","description":"Default value for attribute when not provided. Only null is optional","x-example":"2020-10-15T06:38:00.000+00:00","nullable":true}},"required":["key","type","status","error","required","format"]},"attributeRelationship":{"description":"AttributeRelationship","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"fullName"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"relatedCollection":{"type":"string","description":"The ID of the related collection.","x-example":"collection"},"relationType":{"type":"string","description":"The type of the relationship.","x-example":"oneToOne|oneToMany|manyToOne|manyToMany"},"twoWay":{"type":"boolean","description":"Is the relationship two-way?","x-example":false},"twoWayKey":{"type":"string","description":"The key of the two-way relationship.","x-example":"string"},"onDelete":{"type":"string","description":"How deleting the parent document will propagate to child documents.","x-example":"restrict|cascade|setNull"},"side":{"type":"string","description":"Whether this is the parent or child side of the relationship","x-example":"parent|child"}},"required":["key","type","status","error","required","relatedCollection","relationType","twoWay","twoWayKey","onDelete","side"]},"index":{"description":"Index","type":"object","properties":{"key":{"type":"string","description":"Index Key.","x-example":"index1"},"type":{"type":"string","description":"Index type.","x-example":"primary"},"status":{"type":"string","description":"Index status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an index.","x-example":"string"},"attributes":{"type":"array","description":"Index attributes.","items":{"type":"string"},"x-example":[]},"orders":{"type":"array","description":"Index orders.","items":{"type":"string"},"x-example":[],"nullable":true}},"required":["key","type","status","error","attributes"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"user":{"description":"User","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"password":{"type":"string","description":"Hashed user password.","x-example":"$argon2id$v=19$m=2048,t=4,p=3$aUZjLnliVWRINmFNTWMudg$5S+x+7uA31xFnrHFT47yFwcJeaP0w92L\/4LdgrVRXxE","nullable":true},"hash":{"type":"string","description":"Password hashing algorithm.","x-example":"argon2","nullable":true},"hashOptions":{"type":"object","description":"Password hashing algorithm configuration.","x-example":{},"items":{"oneOf":[{"$ref":"#\/components\/schemas\/algoArgon2"},{"$ref":"#\/components\/schemas\/algoScrypt"},{"$ref":"#\/components\/schemas\/algoScryptModified"},{"$ref":"#\/components\/schemas\/algoBcrypt"},{"$ref":"#\/components\/schemas\/algoPhpass"},{"$ref":"#\/components\/schemas\/algoSha"},{"$ref":"#\/components\/schemas\/algoMd5"}]},"nullable":true},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"labels":{"type":"array","description":"Labels for the user.","items":{"type":"string"},"x-example":["vip"]},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"mfa":{"type":"boolean","description":"Multi factor authentication status.","x-example":true},"totp":{"type":"boolean","description":"TOTP status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"$ref":"#\/components\/schemas\/preferences"}},"targets":{"type":"array","description":"A user-owned message receiver. A single user may have multiple e.g. emails, phones, and a browser. Each target is registered with a single provider.","items":{"$ref":"#\/components\/schemas\/target"},"x-example":[]},"accessedAt":{"type":"string","description":"Most recent access date in ISO 8601 format. This attribute is only updated again after 24 hours.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","$updatedAt","name","registration","status","labels","passwordUpdate","email","phone","emailVerification","phoneVerification","mfa","totp","prefs","targets","accessedAt"]},"algoMd5":{"description":"AlgoMD5","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"md5"}},"required":["type"]},"algoSha":{"description":"AlgoSHA","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"sha"}},"required":["type"]},"algoPhpass":{"description":"AlgoPHPass","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"phpass"}},"required":["type"]},"algoBcrypt":{"description":"AlgoBcrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"bcrypt"}},"required":["type"]},"algoScrypt":{"description":"AlgoScrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scrypt"},"costCpu":{"type":"integer","description":"CPU complexity of computed hash.","x-example":8,"format":"int32"},"costMemory":{"type":"integer","description":"Memory complexity of computed hash.","x-example":14,"format":"int32"},"costParallel":{"type":"integer","description":"Parallelization of computed hash.","x-example":1,"format":"int32"},"length":{"type":"integer","description":"Length used to compute hash.","x-example":64,"format":"int32"}},"required":["type","costCpu","costMemory","costParallel","length"]},"algoScryptModified":{"description":"AlgoScryptModified","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scryptMod"},"salt":{"type":"string","description":"Salt used to compute hash.","x-example":"UxLMreBr6tYyjQ=="},"saltSeparator":{"type":"string","description":"Separator used to compute hash.","x-example":"Bw=="},"signerKey":{"type":"string","description":"Key used to compute hash.","x-example":"XyEKE9RcTDeLEsL\/RjwPDBv\/RqDl8fb3gpYEOQaPihbxf1ZAtSOHCjuAAa7Q3oHpCYhXSN9tizHgVOwn6krflQ=="}},"required":["type","salt","saltSeparator","signerKey"]},"algoArgon2":{"description":"AlgoArgon2","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"argon2"},"memoryCost":{"type":"integer","description":"Memory used to compute hash.","x-example":65536,"format":"int32"},"timeCost":{"type":"integer","description":"Amount of time consumed to compute hash","x-example":4,"format":"int32"},"threads":{"type":"integer","description":"Number of threads used to compute hash.","x-example":3,"format":"int32"}},"required":["type","memoryCost","timeCost","threads"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true},"factors":{"type":"array","description":"Returns a list of active session factors.","items":{"type":"string"},"x-example":["email"]},"secret":{"type":"string","description":"Secret used to authenticate the user. Only included if the request was made with an API key","x-example":"5e5bb8c16897e"}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current","factors","secret"]},"identity":{"description":"Identity","type":"object","properties":{"$id":{"type":"string","description":"Identity ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Identity creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Identity update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"provider":{"type":"string","description":"Identity Provider.","x-example":"email"},"providerUid":{"type":"string","description":"ID of the User in the Identity Provider.","x-example":"5e5bb8c16897e"},"providerEmail":{"type":"string","description":"Email of the User in the Identity Provider.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Identity Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Identity Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"}},"required":["$id","$createdAt","$updatedAt","userId","provider","providerUid","providerEmail","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"phrase":{"type":"string","description":"Security phrase of a token. Empty if security phrase was not requested when creating a token. It includes randomly generated phrase which is also sent in the external resource such as email.","x-example":"Golden Fox"}},"required":["$id","$createdAt","userId","secret","expire","phrase"]},"jwt":{"description":"JWT","type":"object","properties":{"jwt":{"type":"string","description":"JWT encoded string.","x-example":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c"}},"required":["jwt"]},"locale":{"description":"Locale","type":"object","properties":{"ip":{"type":"string","description":"User IP address.","x-example":"127.0.0.1"},"countryCode":{"type":"string","description":"Country code in [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) two-character format","x-example":"US"},"country":{"type":"string","description":"Country name. This field support localization.","x-example":"United States"},"continentCode":{"type":"string","description":"Continent code. A two character continent code \"AF\" for Africa, \"AN\" for Antarctica, \"AS\" for Asia, \"EU\" for Europe, \"NA\" for North America, \"OC\" for Oceania, and \"SA\" for South America.","x-example":"NA"},"continent":{"type":"string","description":"Continent name. This field support localization.","x-example":"North America"},"eu":{"type":"boolean","description":"True if country is part of the European Union.","x-example":false},"currency":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format","x-example":"USD"}},"required":["ip","countryCode","country","continentCode","continent","eu","currency"]},"localeCode":{"description":"LocaleCode","type":"object","properties":{"code":{"type":"string","description":"Locale codes in [ISO 639-1](https:\/\/en.wikipedia.org\/wiki\/List_of_ISO_639-1_codes)","x-example":"en-us"},"name":{"type":"string","description":"Locale name","x-example":"US"}},"required":["code","name"]},"file":{"description":"File","type":"object","properties":{"$id":{"type":"string","description":"File ID.","x-example":"5e5ea5c16897e"},"bucketId":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Bucket creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Bucket update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Bucket permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"fileSecurity":{"type":"boolean","description":"Whether file-level security is enabled. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":true},"name":{"type":"string","description":"Bucket name.","x-example":"Documents"},"enabled":{"type":"boolean","description":"Bucket enabled.","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size supported.","x-example":100,"format":"int32"},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions.","items":{"type":"string"},"x-example":["jpg","png"]},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Will be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd).","x-example":"gzip"},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$createdAt","$updatedAt","$permissions","fileSecurity","name","enabled","maximumFileSize","allowedFileExtensions","compression","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"},"prefs":{"type":"object","description":"Team preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"$ref":"#\/components\/schemas\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","total","prefs"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"mfa":{"type":"boolean","description":"Multi factor authentication status, true if the user has MFA enabled or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":["owner"]}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","mfa","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Function creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Function update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"users"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"enabled":{"type":"boolean","description":"Function enabled.","x-example":false},"live":{"type":"boolean","description":"Is the function deployed with the latest configuration? This is set to false if you've changed an environment variables, entrypoint, commands, or other settings that needs redeploy to be applied. When the value is false, redeploy the function to update it with the latest configuration.","x-example":false},"logging":{"type":"boolean","description":"Whether executions will be logged. When set to false, executions will not be logged, but will reduce resource used by your Appwrite project.","x-example":false},"runtime":{"type":"string","description":"Function execution runtime.","x-example":"python-3.8"},"deployment":{"type":"string","description":"Function's active deployment ID.","x-example":"5e5ea5c16897e"},"vars":{"type":"array","description":"Function variables.","items":{"$ref":"#\/components\/schemas\/variable"},"x-example":[]},"events":{"type":"array","description":"Function trigger events.","items":{"type":"string"},"x-example":"account.create"},"schedule":{"type":"string","description":"Function execution schedult in CRON format.","x-example":"5 4 * * *"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":300,"format":"int32"},"entrypoint":{"type":"string","description":"The entrypoint file used to execute the deployment.","x-example":"index.js"},"commands":{"type":"string","description":"The build command used to build the deployment.","x-example":"npm install"},"version":{"type":"string","description":"Version of Open Runtimes used for the function.","x-example":"v2"},"installationId":{"type":"string","description":"Function VCS (Version Control System) installation id.","x-example":"6m40at4ejk5h2u9s1hboo"},"providerRepositoryId":{"type":"string","description":"VCS (Version Control System) Repository ID","x-example":"appwrite"},"providerBranch":{"type":"string","description":"VCS (Version Control System) branch name","x-example":"main"},"providerRootDirectory":{"type":"string","description":"Path to function in VCS (Version Control System) repository","x-example":"functions\/helloWorld"},"providerSilentMode":{"type":"boolean","description":"Is VCS (Version Control System) connection is in silent mode? When in silence mode, no comments will be posted on the repository pull or merge requests","x-example":false}},"required":["$id","$createdAt","$updatedAt","execute","name","enabled","live","logging","runtime","deployment","vars","events","schedule","timeout","entrypoint","commands","version","installationId","providerRepositoryId","providerBranch","providerRootDirectory","providerSilentMode"]},"installation":{"description":"Installation","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Function creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Function update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"VCS (Version Control System) provider name.","x-example":"github"},"organization":{"type":"string","description":"VCS (Version Control System) organization name.","x-example":"appwrite"},"providerInstallationId":{"type":"string","description":"VCS (Version Control System) installation ID.","x-example":"5322"}},"required":["$id","$createdAt","$updatedAt","provider","organization","providerInstallationId"]},"providerRepository":{"description":"ProviderRepository","type":"object","properties":{"id":{"type":"string","description":"VCS (Version Control System) repository ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"VCS (Version Control System) repository name.","x-example":"appwrite"},"organization":{"type":"string","description":"VCS (Version Control System) organization name","x-example":"appwrite"},"provider":{"type":"string","description":"VCS (Version Control System) provider name.","x-example":"github"},"private":{"type":"boolean","description":"Is VCS (Version Control System) repository private?","x-example":true},"runtime":{"type":"string","description":"Auto-detected runtime suggestion. Empty if getting response of getRuntime().","x-example":"node"},"pushedAt":{"type":"string","description":"Last commit date in ISO 8601 format.","x-example":"datetime"}},"required":["id","name","organization","provider","private","runtime","pushedAt"]},"detection":{"description":"Detection","type":"object","properties":{"runtime":{"type":"string","description":"Runtime","x-example":"node"}},"required":["runtime"]},"branch":{"description":"Branch","type":"object","properties":{"name":{"type":"string","description":"Branch Name.","x-example":"main"}},"required":["name"]},"runtime":{"description":"Runtime","type":"object","properties":{"$id":{"type":"string","description":"Runtime ID.","x-example":"python-3.8"},"name":{"type":"string","description":"Runtime Name.","x-example":"Python"},"version":{"type":"string","description":"Runtime version.","x-example":"3.8"},"base":{"type":"string","description":"Base Docker image used to build the runtime.","x-example":"python:3.8-alpine"},"image":{"type":"string","description":"Image name of Docker Hub.","x-example":"appwrite\\\/runtime-for-python:3.8"},"logo":{"type":"string","description":"Name of the logo image.","x-example":"python.png"},"supports":{"type":"array","description":"List of supported architectures.","items":{"type":"string"},"x-example":"amd64"}},"required":["$id","name","version","base","image","logo","supports"]},"deployment":{"description":"Deployment","type":"object","properties":{"$id":{"type":"string","description":"Deployment ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Deployment creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Deployment update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"type":{"type":"string","description":"Type of deployment.","x-example":"vcs"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"index.js"},"size":{"type":"integer","description":"The code size in bytes.","x-example":128,"format":"int32"},"buildId":{"type":"string","description":"The current build ID.","x-example":"5e5ea5c16897e"},"activate":{"type":"boolean","description":"Whether the deployment should be automatically activated.","x-example":true},"status":{"type":"string","description":"The deployment status. Possible values are \"processing\", \"building\", \"waiting\", \"ready\", and \"failed\".","x-example":"ready"},"buildLogs":{"type":"string","description":"The build logs.","x-example":"Compiling source files..."},"buildTime":{"type":"integer","description":"The current build time in seconds.","x-example":128,"format":"int32"},"providerRepositoryName":{"type":"string","description":"The name of the vcs provider repository","x-example":"database"},"providerRepositoryOwner":{"type":"string","description":"The name of the vcs provider repository owner","x-example":"utopia"},"providerRepositoryUrl":{"type":"string","description":"The url of the vcs provider repository","x-example":"https:\/\/github.com\/vermakhushboo\/g4-node-function"},"providerBranch":{"type":"string","description":"The branch of the vcs repository","x-example":"0.7.x"},"providerCommitHash":{"type":"string","description":"The commit hash of the vcs commit","x-example":"7c3f25d"},"providerCommitAuthorUrl":{"type":"string","description":"The url of vcs commit author","x-example":"https:\/\/github.com\/vermakhushboo"},"providerCommitAuthor":{"type":"string","description":"The name of vcs commit author","x-example":"Khushboo Verma"},"providerCommitMessage":{"type":"string","description":"The commit message","x-example":"Update index.js"},"providerCommitUrl":{"type":"string","description":"The url of the vcs commit","x-example":"https:\/\/github.com\/vermakhushboo\/g4-node-function\/commit\/60c0416257a9cbcdd96b2d370c38d8f8d150ccfb"},"providerBranchUrl":{"type":"string","description":"The branch of the vcs repository","x-example":"https:\/\/github.com\/vermakhushboo\/appwrite\/tree\/0.7.x"}},"required":["$id","$createdAt","$updatedAt","type","resourceId","resourceType","entrypoint","size","buildId","activate","status","buildLogs","buildTime","providerRepositoryName","providerRepositoryOwner","providerRepositoryUrl","providerBranch","providerCommitHash","providerCommitAuthorUrl","providerCommitAuthor","providerCommitMessage","providerCommitUrl","providerBranchUrl"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"requestMethod":{"type":"string","description":"HTTP request method type.","x-example":"GET"},"requestPath":{"type":"string","description":"HTTP request path and query.","x-example":"\/articles?id=5"},"requestHeaders":{"type":"array","description":"HTTP response headers as a key-value object. This will return only whitelisted headers. All headers are returned if execution is created as synchronous.","items":{"$ref":"#\/components\/schemas\/headers"},"x-example":[{"Content-Type":"application\/json"}]},"responseStatusCode":{"type":"integer","description":"HTTP response status code.","x-example":200,"format":"int32"},"responseBody":{"type":"string","description":"HTTP response body. This will return empty unless execution is created as synchronous.","x-example":"Developers are awesome."},"responseHeaders":{"type":"array","description":"HTTP response headers as a key-value object. This will return only whitelisted headers. All headers are returned if execution is created as synchronous.","items":{"$ref":"#\/components\/schemas\/headers"},"x-example":[{"Content-Type":"application\/json"}]},"logs":{"type":"string","description":"Function logs. Includes the last 4,000 characters. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"errors":{"type":"string","description":"Function errors. Includes the last 4,000 characters. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"Function execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","requestMethod","requestPath","requestHeaders","responseStatusCode","responseBody","responseHeaders","logs","errors","duration"]},"project":{"description":"Project","type":"object","properties":{"$id":{"type":"string","description":"Project ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Project creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Project update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Project name.","x-example":"New Project"},"description":{"type":"string","description":"Project description.","x-example":"This is a new project."},"teamId":{"type":"string","description":"Project team ID.","x-example":"1592981250"},"logo":{"type":"string","description":"Project logo file ID.","x-example":"5f5c451b403cb"},"url":{"type":"string","description":"Project website URL.","x-example":"5f5c451b403cb"},"legalName":{"type":"string","description":"Company legal name.","x-example":"Company LTD."},"legalCountry":{"type":"string","description":"Country code in [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) two-character format.","x-example":"US"},"legalState":{"type":"string","description":"State name.","x-example":"New York"},"legalCity":{"type":"string","description":"City name.","x-example":"New York City."},"legalAddress":{"type":"string","description":"Company Address.","x-example":"620 Eighth Avenue, New York, NY 10018"},"legalTaxId":{"type":"string","description":"Company Tax ID.","x-example":"131102020"},"authDuration":{"type":"integer","description":"Session duration in seconds.","x-example":60,"format":"int32"},"authLimit":{"type":"integer","description":"Max users allowed. 0 is unlimited.","x-example":100,"format":"int32"},"authSessionsLimit":{"type":"integer","description":"Max sessions allowed per user. 100 maximum.","x-example":10,"format":"int32"},"authPasswordHistory":{"type":"integer","description":"Max allowed passwords in the history list per user. Max passwords limit allowed in history is 20. Use 0 for disabling password history.","x-example":5,"format":"int32"},"authPasswordDictionary":{"type":"boolean","description":"Whether or not to check user's password against most commonly used passwords.","x-example":true},"authPersonalDataCheck":{"type":"boolean","description":"Whether or not to check the user password for similarity with their personal data.","x-example":true},"oAuthProviders":{"type":"array","description":"List of Auth Providers.","items":{"$ref":"#\/components\/schemas\/authProvider"},"x-example":[{}]},"platforms":{"type":"array","description":"List of Platforms.","items":{"$ref":"#\/components\/schemas\/platform"},"x-example":{}},"webhooks":{"type":"array","description":"List of Webhooks.","items":{"$ref":"#\/components\/schemas\/webhook"},"x-example":{}},"keys":{"type":"array","description":"List of API Keys.","items":{"$ref":"#\/components\/schemas\/key"},"x-example":{}},"smtpEnabled":{"type":"boolean","description":"Status for custom SMTP","x-example":false},"smtpSenderName":{"type":"string","description":"SMTP sender name","x-example":"John Appwrite"},"smtpSenderEmail":{"type":"string","description":"SMTP sender email","x-example":"john@appwrite.io"},"smtpReplyTo":{"type":"string","description":"SMTP reply to email","x-example":"support@appwrite.io"},"smtpHost":{"type":"string","description":"SMTP server host name","x-example":"mail.appwrite.io"},"smtpPort":{"type":"integer","description":"SMTP server port","x-example":25,"format":"int32"},"smtpUsername":{"type":"string","description":"SMTP server username","x-example":"emailuser"},"smtpPassword":{"type":"string","description":"SMTP server password","x-example":"securepassword"},"smtpSecure":{"type":"string","description":"SMTP server secure protocol","x-example":"tls"},"authEmailPassword":{"type":"boolean","description":"Email\/Password auth method status","x-example":true},"authUsersAuthMagicURL":{"type":"boolean","description":"Magic URL auth method status","x-example":true},"authEmailOtp":{"type":"boolean","description":"Email (OTP) auth method status","x-example":true},"authAnonymous":{"type":"boolean","description":"Anonymous auth method status","x-example":true},"authInvites":{"type":"boolean","description":"Invites auth method status","x-example":true},"authJWT":{"type":"boolean","description":"JWT auth method status","x-example":true},"authPhone":{"type":"boolean","description":"Phone auth method status","x-example":true},"serviceStatusForAccount":{"type":"boolean","description":"Account service status","x-example":true},"serviceStatusForAvatars":{"type":"boolean","description":"Avatars service status","x-example":true},"serviceStatusForDatabases":{"type":"boolean","description":"Databases service status","x-example":true},"serviceStatusForLocale":{"type":"boolean","description":"Locale service status","x-example":true},"serviceStatusForHealth":{"type":"boolean","description":"Health service status","x-example":true},"serviceStatusForStorage":{"type":"boolean","description":"Storage service status","x-example":true},"serviceStatusForTeams":{"type":"boolean","description":"Teams service status","x-example":true},"serviceStatusForUsers":{"type":"boolean","description":"Users service status","x-example":true},"serviceStatusForFunctions":{"type":"boolean","description":"Functions service status","x-example":true},"serviceStatusForGraphql":{"type":"boolean","description":"GraphQL service status","x-example":true},"serviceStatusForMessaging":{"type":"boolean","description":"Messaging service status","x-example":true}},"required":["$id","$createdAt","$updatedAt","name","description","teamId","logo","url","legalName","legalCountry","legalState","legalCity","legalAddress","legalTaxId","authDuration","authLimit","authSessionsLimit","authPasswordHistory","authPasswordDictionary","authPersonalDataCheck","oAuthProviders","platforms","webhooks","keys","smtpEnabled","smtpSenderName","smtpSenderEmail","smtpReplyTo","smtpHost","smtpPort","smtpUsername","smtpPassword","smtpSecure","authEmailPassword","authUsersAuthMagicURL","authEmailOtp","authAnonymous","authInvites","authJWT","authPhone","serviceStatusForAccount","serviceStatusForAvatars","serviceStatusForDatabases","serviceStatusForLocale","serviceStatusForHealth","serviceStatusForStorage","serviceStatusForTeams","serviceStatusForUsers","serviceStatusForFunctions","serviceStatusForGraphql","serviceStatusForMessaging"]},"webhook":{"description":"Webhook","type":"object","properties":{"$id":{"type":"string","description":"Webhook ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Webhook creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Webhook update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Webhook name.","x-example":"My Webhook"},"url":{"type":"string","description":"Webhook URL endpoint.","x-example":"https:\/\/example.com\/webhook"},"events":{"type":"array","description":"Webhook trigger events.","items":{"type":"string"},"x-example":"database.collections.update"},"security":{"type":"boolean","description":"Indicated if SSL \/ TLS Certificate verification is enabled.","x-example":true},"httpUser":{"type":"string","description":"HTTP basic authentication username.","x-example":"username"},"httpPass":{"type":"string","description":"HTTP basic authentication password.","x-example":"password"},"signatureKey":{"type":"string","description":"Signature key which can be used to validated incoming","x-example":"ad3d581ca230e2b7059c545e5a"},"enabled":{"type":"boolean","description":"Indicates if this webhook is enabled.","x-example":true},"logs":{"type":"string","description":"Webhook error logs from the most recent failure.","x-example":"Failed to connect to remote server."},"attempts":{"type":"integer","description":"Number of consecutive failed webhook attempts.","x-example":10,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","name","url","events","security","httpUser","httpPass","signatureKey","enabled","logs","attempts"]},"key":{"description":"Key","type":"object","properties":{"$id":{"type":"string","description":"Key ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Key creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Key update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Key name.","x-example":"My API Key"},"expire":{"type":"string","description":"Key expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"scopes":{"type":"array","description":"Allowed permission scopes.","items":{"type":"string"},"x-example":"users.read"},"secret":{"type":"string","description":"Secret key.","x-example":"919c2d18fb5d4...a2ae413da83346ad2"},"accessedAt":{"type":"string","description":"Most recent access date in ISO 8601 format. This attribute is only updated again after 24 hours.","x-example":"2020-10-15T06:38:00.000+00:00"},"sdks":{"type":"array","description":"List of SDK user agents that used this key.","items":{"type":"string"},"x-example":"appwrite:flutter"}},"required":["$id","$createdAt","$updatedAt","name","expire","scopes","secret","accessedAt","sdks"]},"authProvider":{"description":"AuthProvider","type":"object","properties":{"key":{"type":"string","description":"Auth Provider.","x-example":"github"},"name":{"type":"string","description":"Auth Provider name.","x-example":"GitHub"},"appId":{"type":"string","description":"OAuth 2.0 application ID.","x-example":"259125845563242502"},"secret":{"type":"string","description":"OAuth 2.0 application secret. Might be JSON string if provider requires extra configuration.","x-example":"Bpw_g9c2TGXxfgLshDbSaL8tsCcqgczQ"},"enabled":{"type":"boolean","description":"Auth Provider is active and can be used to create session.","x-example":""}},"required":["key","name","appId","secret","enabled"]},"platform":{"description":"Platform","type":"object","properties":{"$id":{"type":"string","description":"Platform ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Platform creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Platform update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Platform name.","x-example":"My Web App"},"type":{"type":"string","description":"Platform type. Possible values are: web, flutter-web, flutter-ios, flutter-android, ios, android, and unity.","x-example":"web"},"key":{"type":"string","description":"Platform Key. iOS bundle ID or Android package name. Empty string for other platforms.","x-example":"com.company.appname"},"store":{"type":"string","description":"App store or Google Play store ID.","x-example":""},"hostname":{"type":"string","description":"Web app hostname. Empty string for other platforms.","x-example":true},"httpUser":{"type":"string","description":"HTTP basic authentication username.","x-example":"username"},"httpPass":{"type":"string","description":"HTTP basic authentication password.","x-example":"password"}},"required":["$id","$createdAt","$updatedAt","name","type","key","store","hostname","httpUser","httpPass"]},"variable":{"description":"Variable","type":"object","properties":{"$id":{"type":"string","description":"Variable ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"key":{"type":"string","description":"Variable key.","x-example":"API_KEY"},"value":{"type":"string","description":"Variable value.","x-example":"myPa$$word1"},"resourceType":{"type":"string","description":"Service to which the variable belongs. Possible values are \"project\", \"function\"","x-example":"function"},"resourceId":{"type":"string","description":"ID of resource to which the variable belongs. If resourceType is \"project\", it is empty. If resourceType is \"function\", it is ID of the function.","x-example":"myAwesomeFunction"}},"required":["$id","$createdAt","$updatedAt","key","value","resourceType","resourceId"]},"country":{"description":"Country","type":"object","properties":{"name":{"type":"string","description":"Country name.","x-example":"United States"},"code":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"}},"required":["name","code"]},"continent":{"description":"Continent","type":"object","properties":{"name":{"type":"string","description":"Continent name.","x-example":"Europe"},"code":{"type":"string","description":"Continent two letter code.","x-example":"EU"}},"required":["name","code"]},"language":{"description":"Language","type":"object","properties":{"name":{"type":"string","description":"Language name.","x-example":"Italian"},"code":{"type":"string","description":"Language two-character ISO 639-1 codes.","x-example":"it"},"nativeName":{"type":"string","description":"Language native name.","x-example":"Italiano"}},"required":["name","code","nativeName"]},"currency":{"description":"Currency","type":"object","properties":{"symbol":{"type":"string","description":"Currency symbol.","x-example":"$"},"name":{"type":"string","description":"Currency name.","x-example":"US dollar"},"symbolNative":{"type":"string","description":"Currency native symbol.","x-example":"$"},"decimalDigits":{"type":"integer","description":"Number of decimal digits.","x-example":2,"format":"int32"},"rounding":{"type":"number","description":"Currency digit rounding.","x-example":0,"format":"double"},"code":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format.","x-example":"USD"},"namePlural":{"type":"string","description":"Currency plural name","x-example":"US dollars"}},"required":["symbol","name","symbolNative","decimalDigits","rounding","code","namePlural"]},"phone":{"description":"Phone","type":"object","properties":{"code":{"type":"string","description":"Phone code.","x-example":"+1"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["code","countryCode","countryName"]},"healthAntivirus":{"description":"Health Antivirus","type":"object","properties":{"version":{"type":"string","description":"Antivirus version.","x-example":"1.0.0"},"status":{"type":"string","description":"Antivirus status. Possible values can are: `disabled`, `offline`, `online`","x-example":"online"}},"required":["version","status"]},"healthQueue":{"description":"Health Queue","type":"object","properties":{"size":{"type":"integer","description":"Amount of actions in the queue.","x-example":8,"format":"int32"}},"required":["size"]},"healthStatus":{"description":"Health Status","type":"object","properties":{"name":{"type":"string","description":"Name of the service.","x-example":"database"},"ping":{"type":"integer","description":"Duration in milliseconds how long the health check took.","x-example":128,"format":"int32"},"status":{"type":"string","description":"Service status. Possible values can are: `pass`, `fail`","x-example":"pass"}},"required":["name","ping","status"]},"healthCertificate":{"description":"Health Certificate","type":"object","properties":{"name":{"type":"string","description":"Certificate name","x-example":"\/CN=www.google.com"},"subjectSN":{"type":"string","description":"Subject SN","x-example":""},"issuerOrganisation":{"type":"string","description":"Issuer organisation","x-example":""},"validFrom":{"type":"string","description":"Valid from","x-example":"1704200998"},"validTo":{"type":"string","description":"Valid to","x-example":"1711458597"},"signatureTypeSN":{"type":"string","description":"Signature type SN","x-example":"RSA-SHA256"}},"required":["name","subjectSN","issuerOrganisation","validFrom","validTo","signatureTypeSN"]},"healthTime":{"description":"Health Time","type":"object","properties":{"remoteTime":{"type":"integer","description":"Current unix timestamp on trustful remote server.","x-example":1639490751,"format":"int32"},"localTime":{"type":"integer","description":"Current unix timestamp of local server where Appwrite runs.","x-example":1639490844,"format":"int32"},"diff":{"type":"integer","description":"Difference of unix remote and local timestamps in milliseconds.","x-example":93,"format":"int32"}},"required":["remoteTime","localTime","diff"]},"metric":{"description":"Metric","type":"object","properties":{"value":{"type":"integer","description":"The value of this metric at the timestamp.","x-example":1,"format":"int32"},"date":{"type":"string","description":"The date at which this metric was aggregated in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["value","date"]},"metricBreakdown":{"description":"Metric Breakdown","type":"object","properties":{"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Resource name.","x-example":"Documents"},"value":{"type":"integer","description":"The value of this metric at the timestamp.","x-example":1,"format":"int32"}},"required":["resourceId","name","value"]},"usageDatabases":{"description":"UsageDatabases","type":"object","properties":{"range":{"type":"string","description":"Time range of the usage stats.","x-example":"30d"},"databasesTotal":{"type":"integer","description":"Total aggregated number of databases.","x-example":0,"format":"int32"},"collectionsTotal":{"type":"integer","description":"Total aggregated number of collections.","x-example":0,"format":"int32"},"documentsTotal":{"type":"integer","description":"Total aggregated number of documents.","x-example":0,"format":"int32"},"databases":{"type":"array","description":"Aggregated number of databases per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collections":{"type":"array","description":"Aggregated number of collections per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documents":{"type":"array","description":"Aggregated number of documents per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","databasesTotal","collectionsTotal","documentsTotal","databases","collections","documents"]},"usageDatabase":{"description":"UsageDatabase","type":"object","properties":{"range":{"type":"string","description":"Time range of the usage stats.","x-example":"30d"},"collectionsTotal":{"type":"integer","description":"Total aggregated number of collections.","x-example":0,"format":"int32"},"documentsTotal":{"type":"integer","description":"Total aggregated number of documents.","x-example":0,"format":"int32"},"collections":{"type":"array","description":"Aggregated number of collections per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documents":{"type":"array","description":"Aggregated number of documents per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","collectionsTotal","documentsTotal","collections","documents"]},"usageCollection":{"description":"UsageCollection","type":"object","properties":{"range":{"type":"string","description":"Time range of the usage stats.","x-example":"30d"},"documentsTotal":{"type":"integer","description":"Total aggregated number of of documents.","x-example":0,"format":"int32"},"documents":{"type":"array","description":"Aggregated number of documents per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","documentsTotal","documents"]},"usageUsers":{"description":"UsageUsers","type":"object","properties":{"range":{"type":"string","description":"Time range of the usage stats.","x-example":"30d"},"usersTotal":{"type":"integer","description":"Total aggregated number of statistics of users.","x-example":0,"format":"int32"},"sessionsTotal":{"type":"integer","description":"Total aggregated number of active sessions.","x-example":0,"format":"int32"},"users":{"type":"array","description":"Aggregated number of users per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"sessions":{"type":"array","description":"Aggregated number of active sessions per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","usersTotal","sessionsTotal","users","sessions"]},"usageStorage":{"description":"StorageUsage","type":"object","properties":{"range":{"type":"string","description":"Time range of the usage stats.","x-example":"30d"},"bucketsTotal":{"type":"integer","description":"Total aggregated number of buckets","x-example":0,"format":"int32"},"filesTotal":{"type":"integer","description":"Total aggregated number of files.","x-example":0,"format":"int32"},"filesStorageTotal":{"type":"integer","description":"Total aggregated number of files storage (in bytes).","x-example":0,"format":"int32"},"buckets":{"type":"array","description":"Aggregated number of buckets per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"files":{"type":"array","description":"Aggregated number of files per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"storage":{"type":"array","description":"Aggregated number of files storage (in bytes) per period .","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","bucketsTotal","filesTotal","filesStorageTotal","buckets","files","storage"]},"usageBuckets":{"description":"UsageBuckets","type":"object","properties":{"range":{"type":"string","description":"Time range of the usage stats.","x-example":"30d"},"filesTotal":{"type":"integer","description":"Total aggregated number of bucket files.","x-example":0,"format":"int32"},"filesStorageTotal":{"type":"integer","description":"Total aggregated number of bucket files storage (in bytes).","x-example":0,"format":"int32"},"files":{"type":"array","description":"Aggregated number of bucket files per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"storage":{"type":"array","description":"Aggregated number of bucket storage files (in bytes) per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","filesTotal","filesStorageTotal","files","storage"]},"usageFunctions":{"description":"UsageFunctions","type":"object","properties":{"range":{"type":"string","description":"Time range of the usage stats.","x-example":"30d"},"functionsTotal":{"type":"integer","description":"Total aggregated number of functions.","x-example":0,"format":"int32"},"deploymentsTotal":{"type":"integer","description":"Total aggregated number of functions deployments.","x-example":0,"format":"int32"},"deploymentsStorageTotal":{"type":"integer","description":"Total aggregated sum of functions deployment storage.","x-example":0,"format":"int32"},"buildsTotal":{"type":"integer","description":"Total aggregated number of functions build.","x-example":0,"format":"int32"},"buildsStorageTotal":{"type":"integer","description":"total aggregated sum of functions build storage.","x-example":0,"format":"int32"},"buildsTimeTotal":{"type":"integer","description":"Total aggregated sum of functions build compute time.","x-example":0,"format":"int32"},"executionsTotal":{"type":"integer","description":"Total aggregated number of functions execution.","x-example":0,"format":"int32"},"executionsTimeTotal":{"type":"integer","description":"Total aggregated sum of functions execution compute time.","x-example":0,"format":"int32"},"functions":{"type":"array","description":"Aggregated number of functions per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":0},"deployments":{"type":"array","description":"Aggregated number of functions deployment per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"deploymentsStorage":{"type":"array","description":"Aggregated number of functions deployment storage per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"builds":{"type":"array","description":"Aggregated number of functions build per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"buildsStorage":{"type":"array","description":"Aggregated sum of functions build storage per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"buildsTime":{"type":"array","description":"Aggregated sum of functions build compute time per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"executions":{"type":"array","description":"Aggregated number of functions execution per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"executionsTime":{"type":"array","description":"Aggregated number of functions execution compute time per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","functionsTotal","deploymentsTotal","deploymentsStorageTotal","buildsTotal","buildsStorageTotal","buildsTimeTotal","executionsTotal","executionsTimeTotal","functions","deployments","deploymentsStorage","builds","buildsStorage","buildsTime","executions","executionsTime"]},"usageFunction":{"description":"UsageFunction","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"deploymentsTotal":{"type":"integer","description":"Total aggregated number of function deployments.","x-example":0,"format":"int32"},"deploymentsStorageTotal":{"type":"integer","description":"Total aggregated sum of function deployments storage.","x-example":0,"format":"int32"},"buildsTotal":{"type":"integer","description":"Total aggregated number of function builds.","x-example":0,"format":"int32"},"buildsStorageTotal":{"type":"integer","description":"total aggregated sum of function builds storage.","x-example":0,"format":"int32"},"buildsTimeTotal":{"type":"integer","description":"Total aggregated sum of function builds compute time.","x-example":0,"format":"int32"},"executionsTotal":{"type":"integer","description":"Total aggregated number of function executions.","x-example":0,"format":"int32"},"executionsTimeTotal":{"type":"integer","description":"Total aggregated sum of function executions compute time.","x-example":0,"format":"int32"},"deployments":{"type":"array","description":"Aggregated number of function deployments per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"deploymentsStorage":{"type":"array","description":"Aggregated number of function deployments storage per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"builds":{"type":"array","description":"Aggregated number of function builds per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"buildsStorage":{"type":"array","description":"Aggregated sum of function builds storage per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"buildsTime":{"type":"array","description":"Aggregated sum of function builds compute time per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"executions":{"type":"array","description":"Aggregated number of function executions per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"executionsTime":{"type":"array","description":"Aggregated number of function executions compute time per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","deploymentsTotal","deploymentsStorageTotal","buildsTotal","buildsStorageTotal","buildsTimeTotal","executionsTotal","executionsTimeTotal","deployments","deploymentsStorage","builds","buildsStorage","buildsTime","executions","executionsTime"]},"usageProject":{"description":"UsageProject","type":"object","properties":{"executionsTotal":{"type":"integer","description":"Total aggregated number of function executions.","x-example":0,"format":"int32"},"documentsTotal":{"type":"integer","description":"Total aggregated number of documents.","x-example":0,"format":"int32"},"databasesTotal":{"type":"integer","description":"Total aggregated number of databases.","x-example":0,"format":"int32"},"usersTotal":{"type":"integer","description":"Total aggregated number of users.","x-example":0,"format":"int32"},"filesStorageTotal":{"type":"integer","description":"Total aggregated sum of files storage size (in bytes).","x-example":0,"format":"int32"},"bucketsTotal":{"type":"integer","description":"Total aggregated number of buckets.","x-example":0,"format":"int32"},"requests":{"type":"array","description":"Aggregated number of requests per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"network":{"type":"array","description":"Aggregated number of consumed bandwidth per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"users":{"type":"array","description":"Aggregated number of users per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"executions":{"type":"array","description":"Aggregated number of executions per period.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"executionsBreakdown":{"type":"array","description":"Aggregated breakdown in totals of executions by functions.","items":{"$ref":"#\/components\/schemas\/metricBreakdown"},"x-example":[]},"bucketsBreakdown":{"type":"array","description":"Aggregated breakdown in totals of usage by buckets.","items":{"$ref":"#\/components\/schemas\/metricBreakdown"},"x-example":[]}},"required":["executionsTotal","documentsTotal","databasesTotal","usersTotal","filesStorageTotal","bucketsTotal","requests","network","users","executions","executionsBreakdown","bucketsBreakdown"]},"headers":{"description":"Headers","type":"object","properties":{"name":{"type":"string","description":"Header name.","x-example":"Content-Type"},"value":{"type":"string","description":"Header value.","x-example":"application\/json"}},"required":["name","value"]},"proxyRule":{"description":"Rule","type":"object","properties":{"$id":{"type":"string","description":"Rule ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Rule creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Rule update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"domain":{"type":"string","description":"Domain name.","x-example":"appwrite.company.com"},"resourceType":{"type":"string","description":"Action definition for the rule. Possible values are \"api\", \"function\", or \"redirect\"","x-example":"function"},"resourceId":{"type":"string","description":"ID of resource for the action type. If resourceType is \"api\" or \"url\", it is empty. If resourceType is \"function\", it is ID of the function.","x-example":"myAwesomeFunction"},"status":{"type":"string","description":"Domain verification status. Possible values are \"created\", \"verifying\", \"verified\" and \"unverified\"","x-example":"verified"},"logs":{"type":"string","description":"Certificate generation logs. This will return an empty string if generation did not run, or succeeded.","x-example":"HTTP challegne failed."},"renewAt":{"type":"string","description":"Certificate auto-renewal date in ISO 8601 format.","x-example":"datetime"}},"required":["$id","$createdAt","$updatedAt","domain","resourceType","resourceId","status","logs","renewAt"]},"smsTemplate":{"description":"SmsTemplate","type":"object","properties":{"type":{"type":"string","description":"Template type","x-example":"verification"},"locale":{"type":"string","description":"Template locale","x-example":"en_us"},"message":{"type":"string","description":"Template message","x-example":"Click on the link to verify your account."}},"required":["type","locale","message"]},"emailTemplate":{"description":"EmailTemplate","type":"object","properties":{"type":{"type":"string","description":"Template type","x-example":"verification"},"locale":{"type":"string","description":"Template locale","x-example":"en_us"},"message":{"type":"string","description":"Template message","x-example":"Click on the link to verify your account."},"senderName":{"type":"string","description":"Name of the sender","x-example":"My User"},"senderEmail":{"type":"string","description":"Email of the sender","x-example":"mail@appwrite.io"},"replyTo":{"type":"string","description":"Reply to email address","x-example":"emails@appwrite.io"},"subject":{"type":"string","description":"Email subject","x-example":"Please verify your email address"}},"required":["type","locale","message","senderName","senderEmail","replyTo","subject"]},"consoleVariables":{"description":"Console Variables","type":"object","properties":{"_APP_DOMAIN_TARGET":{"type":"string","description":"CNAME target for your Appwrite custom domains.","x-example":"appwrite.io"},"_APP_STORAGE_LIMIT":{"type":"integer","description":"Maximum file size allowed for file upload in bytes.","x-example":"30000000","format":"int32"},"_APP_FUNCTIONS_SIZE_LIMIT":{"type":"integer","description":"Maximum file size allowed for deployment in bytes.","x-example":"30000000","format":"int32"},"_APP_USAGE_STATS":{"type":"string","description":"Defines if usage stats are enabled. This value is set to 'enabled' by default, to disable the usage stats set the value to 'disabled'.","x-example":"enabled"},"_APP_VCS_ENABLED":{"type":"boolean","description":"Defines if VCS (Version Control System) is enabled.","x-example":true},"_APP_DOMAIN_ENABLED":{"type":"boolean","description":"Defines if main domain is configured. If so, custom domains can be created.","x-example":true},"_APP_ASSISTANT_ENABLED":{"type":"boolean","description":"Defines if AI assistant is enabled.","x-example":true}},"required":["_APP_DOMAIN_TARGET","_APP_STORAGE_LIMIT","_APP_FUNCTIONS_SIZE_LIMIT","_APP_USAGE_STATS","_APP_VCS_ENABLED","_APP_DOMAIN_ENABLED","_APP_ASSISTANT_ENABLED"]},"mfaChallenge":{"description":"MFA Challenge","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","userId","expire"]},"mfaType":{"description":"MFAType","type":"object","properties":{"backups":{"type":"array","description":"Backup codes.","items":{"type":"string"},"x-example":true},"secret":{"type":"string","description":"Secret token used for TOTP factor.","x-example":true},"uri":{"type":"string","description":"URI for authenticator apps.","x-example":true}},"required":["backups","secret","uri"]},"mfaFactors":{"description":"MFAFactors","type":"object","properties":{"totp":{"type":"boolean","description":"TOTP","x-example":true},"phone":{"type":"boolean","description":"Phone","x-example":true},"email":{"type":"boolean","description":"Email","x-example":true}},"required":["totp","phone","email"]},"provider":{"description":"Provider","type":"object","properties":{"$id":{"type":"string","description":"Provider ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Provider creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Provider update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"The name for the provider instance.","x-example":"Mailgun"},"provider":{"type":"string","description":"The name of the provider service.","x-example":"mailgun"},"enabled":{"type":"boolean","description":"Is provider enabled?","x-example":true},"type":{"type":"string","description":"Type of provider.","x-example":"sms"},"credentials":{"type":"object","description":"Provider credentials.","x-example":{"key":"123456789"}},"options":{"type":"object","description":"Provider options.","x-example":{"from":"sender-email@mydomain"},"nullable":true}},"required":["$id","$createdAt","$updatedAt","name","provider","enabled","type","credentials"]},"message":{"description":"Message","type":"object","properties":{"$id":{"type":"string","description":"Message ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Message creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Message update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerType":{"type":"string","description":"Message provider type.","x-example":"email"},"topics":{"type":"array","description":"Topic IDs set as recipients.","items":{"type":"string"},"x-example":["5e5ea5c16897e"]},"users":{"type":"array","description":"User IDs set as recipients.","items":{"type":"string"},"x-example":["5e5ea5c16897e"]},"targets":{"type":"array","description":"Target IDs set as recipients.","items":{"type":"string"},"x-example":["5e5ea5c16897e"]},"scheduledAt":{"type":"string","description":"The scheduled time for message.","x-example":"2020-10-15T06:38:00.000+00:00","nullable":true},"deliveredAt":{"type":"string","description":"The time when the message was delivered.","x-example":"2020-10-15T06:38:00.000+00:00","nullable":true},"deliveryErrors":{"type":"array","description":"Delivery errors if any.","items":{"type":"string"},"x-example":["Failed to send message to target 5e5ea5c16897e: Credentials not valid."],"nullable":true},"deliveredTotal":{"type":"integer","description":"Number of recipients the message was delivered to.","x-example":1,"format":"int32"},"data":{"type":"object","description":"Data of the message.","x-example":{"subject":"Welcome to Appwrite","content":"Hi there, welcome to Appwrite family."}},"status":{"type":"string","description":"Status of delivery.","x-example":"Message status can be one of the following: processing, sent, cancelled, failed."}},"required":["$id","$createdAt","$updatedAt","providerType","topics","users","targets","deliveredTotal","data","status"]},"topic":{"description":"Topic","type":"object","properties":{"$id":{"type":"string","description":"Topic ID.","x-example":"259125845563242502"},"$createdAt":{"type":"string","description":"Topic creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Topic update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"The name of the topic.","x-example":"events"},"emailTotal":{"type":"integer","description":"Total count of email subscribers subscribed to the topic.","x-example":100,"format":"int32"},"smsTotal":{"type":"integer","description":"Total count of SMS subscribers subscribed to the topic.","x-example":100,"format":"int32"},"pushTotal":{"type":"integer","description":"Total count of push subscribers subscribed to the topic.","x-example":100,"format":"int32"},"subscribe":{"type":"array","description":"Subscribe permissions.","items":{"type":"string"},"x-example":"users"}},"required":["$id","$createdAt","$updatedAt","name","emailTotal","smsTotal","pushTotal","subscribe"]},"subscriber":{"description":"Subscriber","type":"object","properties":{"$id":{"type":"string","description":"Subscriber ID.","x-example":"259125845563242502"},"$createdAt":{"type":"string","description":"Subscriber creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Subscriber update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"targetId":{"type":"string","description":"Target ID.","x-example":"259125845563242502"},"target":{"type":"object","description":"Target.","x-example":{"$id":"259125845563242502","$createdAt":"2020-10-15T06:38:00.000+00:00","$updatedAt":"2020-10-15T06:38:00.000+00:00","providerType":"email","providerId":"259125845563242502","name":"ageon-app-email","identifier":"random-mail@email.org","userId":"5e5ea5c16897e"},"items":{"$ref":"#\/components\/schemas\/target"}},"userId":{"type":"string","description":"Topic ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User Name.","x-example":"Aegon Targaryen"},"topicId":{"type":"string","description":"Topic ID.","x-example":"259125845563242502"},"providerType":{"type":"string","description":"The target provider type. Can be one of the following: `email`, `sms` or `push`.","x-example":"email"}},"required":["$id","$createdAt","$updatedAt","targetId","target","userId","userName","topicId","providerType"]},"target":{"description":"Target","type":"object","properties":{"$id":{"type":"string","description":"Target ID.","x-example":"259125845563242502"},"$createdAt":{"type":"string","description":"Target creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Target update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Target Name.","x-example":"Aegon apple token"},"userId":{"type":"string","description":"User ID.","x-example":"259125845563242502"},"providerId":{"type":"string","description":"Provider ID.","x-example":"259125845563242502","nullable":true},"providerType":{"type":"string","description":"The target provider type. Can be one of the following: `email`, `sms` or `push`.","x-example":"email"},"identifier":{"type":"string","description":"The target identifier.","x-example":"token"}},"required":["$id","$createdAt","$updatedAt","name","userId","providerType","identifier"]},"migration":{"description":"Migration","type":"object","properties":{"$id":{"type":"string","description":"Migration ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"string","description":"Migration status ( pending, processing, failed, completed ) ","x-example":"pending"},"stage":{"type":"string","description":"Migration stage ( init, processing, source-check, destination-check, migrating, finished )","x-example":"init"},"source":{"type":"string","description":"A string containing the type of source of the migration.","x-example":"Appwrite"},"resources":{"type":"array","description":"Resources to migration.","items":{"type":"string"},"x-example":["user"]},"statusCounters":{"type":"object","description":"A group of counters that represent the total progress of the migration.","x-example":"{\"Database\": {\"PENDING\": 0, \"SUCCESS\": 1, \"ERROR\": 0, \"SKIP\": 0, \"PROCESSING\": 0, \"WARNING\": 0}}"},"resourceData":{"type":"object","description":"An array of objects containing the report data of the resources that were migrated.","x-example":"[{\"resource\":\"Database\",\"id\":\"public\",\"status\":\"SUCCESS\",\"message\":\"\"}]"},"errors":{"type":"array","description":"All errors that occurred during the migration process.","items":{"type":"string"},"x-example":[]}},"required":["$id","$createdAt","$updatedAt","status","stage","source","resources","statusCounters","resourceData","errors"]},"migrationReport":{"description":"Migration Report","type":"object","properties":{"user":{"type":"integer","description":"Number of users to be migrated.","x-example":20,"format":"int32"},"team":{"type":"integer","description":"Number of teams to be migrated.","x-example":20,"format":"int32"},"database":{"type":"integer","description":"Number of databases to be migrated.","x-example":20,"format":"int32"},"document":{"type":"integer","description":"Number of documents to be migrated.","x-example":20,"format":"int32"},"file":{"type":"integer","description":"Number of files to be migrated.","x-example":20,"format":"int32"},"bucket":{"type":"integer","description":"Number of buckets to be migrated.","x-example":20,"format":"int32"},"function":{"type":"integer","description":"Number of functions to be migrated.","x-example":20,"format":"int32"},"size":{"type":"integer","description":"Size of files to be migrated in mb.","x-example":30000,"format":"int32"},"version":{"type":"string","description":"Version of the Appwrite instance to be migrated.","x-example":"1.4.0"}},"required":["user","team","database","document","file","bucket","function","size","version"]},"firebaseProject":{"description":"MigrationFirebaseProject","type":"object","properties":{"projectId":{"type":"string","description":"Project ID.","x-example":"my-project"},"displayName":{"type":"string","description":"Project display name.","x-example":"My Project"}},"required":["projectId","displayName"]}},"securitySchemes":{"Project":{"type":"apiKey","name":"X-Appwrite-Project","description":"Your project ID","in":"header","x-appwrite":{"demo":"5df5acd0d48c2"}},"Key":{"type":"apiKey","name":"X-Appwrite-Key","description":"Your secret API key","in":"header","x-appwrite":{"demo":"919c2d18fb5d4...a2ae413da83346ad2"}},"JWT":{"type":"apiKey","name":"X-Appwrite-JWT","description":"Your secret JSON Web Token","in":"header"},"Locale":{"type":"apiKey","name":"X-Appwrite-Locale","description":"","in":"header","x-appwrite":{"demo":"en"}},"Mode":{"type":"apiKey","name":"X-Appwrite-Mode","description":"","in":"header","x-appwrite":{"demo":""}}}},"externalDocs":{"description":"Full API docs, specs and tutorials","url":"https:\/\/appwrite.io\/docs"}} \ No newline at end of file diff --git a/app/config/specs/open-api3-latest-server.json b/app/config/specs/open-api3-latest-server.json index a43cf225a2..f81645c4f6 100644 --- a/app/config/specs/open-api3-latest-server.json +++ b/app/config/specs/open-api3-latest-server.json @@ -1 +1 @@ -{"openapi":"3.0.0","info":{"version":"1.4.13","title":"Appwrite","description":"Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https:\/\/appwrite.io\/docs](https:\/\/appwrite.io\/docs)","termsOfService":"https:\/\/appwrite.io\/policy\/terms","contact":{"name":"Appwrite Team","url":"https:\/\/appwrite.io\/support","email":"team@appwrite.io"},"license":{"name":"BSD-3-Clause","url":"https:\/\/raw.githubusercontent.com\/appwrite\/appwrite\/master\/LICENSE"}},"servers":[{"url":"https:\/\/cloud.appwrite.io\/v1"}],"paths":{"\/account":{"get":{"summary":"Get account","operationId":"accountGet","tags":["account"],"description":"Get the currently logged in user.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"get","weight":22,"cookies":false,"type":"","demo":"account\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]},"post":{"summary":"Create account","operationId":"accountCreate","tags":["account"],"description":"Use this endpoint to allow a new user to register a new account in your project. After the user registration completes successfully, you can use the [\/account\/verfication](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createVerification) route to start verifying the user email address. To allow the new user to login to their new account, you need to create a new [account session](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createEmailSession).","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"create","weight":7,"cookies":false,"type":"","demo":"account\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"New user password. Must be between 8 and 256 chars.","x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/account\/email":{"patch":{"summary":"Update email","operationId":"accountUpdateEmail","tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateEmail","weight":29,"cookies":false,"type":"","demo":"account\/update-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","x-example":"password"}},"required":["email","password"]}}}}}},"\/account\/identities":{"get":{"summary":"List Identities","operationId":"accountListIdentities","tags":["account"],"description":"Get the list of identities for the currently logged in user.","responses":{"200":{"description":"Identities List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/identityList"}}}}},"x-appwrite":{"method":"listIdentities","weight":13,"cookies":false,"type":"","demo":"account\/list-identities.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-identities.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/identities","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, provider, providerUid, providerEmail, providerAccessTokenExpiry","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/identities\/{identityId}":{"delete":{"summary":"Delete identity","operationId":"accountDeleteIdentity","tags":["account"],"description":"Delete an identity by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIdentity","weight":14,"cookies":false,"type":"","demo":"account\/delete-identity.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-identity.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"identityId","description":"Identity ID.","required":true,"schema":{"type":"string","x-example":"[IDENTITY_ID]"},"in":"path"}]}},"\/account\/jwt":{"post":{"summary":"Create JWT","operationId":"accountCreateJWT","tags":["account"],"description":"Use this endpoint to create a JSON Web Token. You can use the resulting JWT to authenticate on behalf of the current user when working with the Appwrite server-side API and SDKs. The JWT secret is valid for 15 minutes from its creation and will be invalid if the user will logout in that time frame.","responses":{"201":{"description":"JWT","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/jwt"}}}}},"x-appwrite":{"method":"createJWT","weight":21,"cookies":false,"type":"","demo":"account\/create-j-w-t.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-jwt.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"accounts.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"List logs","operationId":"accountListLogs","tags":["account"],"description":"Get the list of latest security activity logs for the currently logged in user. Each log returns user IP address, location and date and time of log.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listLogs","weight":25,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/mfa":{"patch":{"summary":"Update MFA","operationId":"accountUpdateMFA","tags":["account"],"description":"","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateMFA","weight":42,"cookies":false,"type":"","demo":"account\/update-m-f-a.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-mfa.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"mfa":{"type":"boolean","description":"Enable or disable MFA.","x-example":false}},"required":["mfa"]}}}}}},"\/account\/mfa\/challenge":{"post":{"summary":"Create 2FA Challenge","operationId":"accountCreate2FAChallenge","tags":["account"],"description":"","responses":{"201":{"description":"MFA Challenge","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/mfaChallenge"}}}}},"x-appwrite":{"method":"create2FAChallenge","weight":47,"cookies":false,"type":"","demo":"account\/create2f-a-challenge.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-2fa-challenge.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},token:{param-token}","scope":"accounts.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"factor":{"type":"string","description":"Factor used for verification.","x-example":"totp","enum":["totp","phone","email"],"x-enum-name":null,"x-enum-keys":[]}},"required":["factor"]}}}}},"put":{"summary":"Create MFA Challenge (confirmation)","operationId":"accountUpdateChallenge","tags":["account"],"description":"","responses":{"204":{"description":"No content","content":{"":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateChallenge","weight":48,"cookies":false,"type":"","demo":"account\/update-challenge.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-challenge.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"challengeId":{"type":"string","description":"ID of the challenge.","x-example":"[CHALLENGE_ID]"},"otp":{"type":"string","description":"Valid verification token.","x-example":"[OTP]"}},"required":["challengeId","otp"]}}}}}},"\/account\/mfa\/factors":{"get":{"summary":"List Factors","operationId":"accountListFactors","tags":["account"],"description":"","responses":{"200":{"description":"MFAFactors","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/mfaFactors"}}}}},"x-appwrite":{"method":"listFactors","weight":43,"cookies":false,"type":"","demo":"account\/list-factors.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-factors.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/account\/mfa\/{type}":{"post":{"summary":"Add Authenticator","operationId":"accountAddAuthenticator","tags":["account"],"description":"","responses":{"200":{"description":"MFAType","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/mfaType"}}}}},"x-appwrite":{"method":"addAuthenticator","weight":44,"cookies":false,"type":"","demo":"account\/add-authenticator.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/add-authenticator.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"type","description":"Type of authenticator.","required":true,"schema":{"type":"string","x-example":"totp","enum":["totp"],"x-enum-name":null,"x-enum-keys":[]},"in":"path"}]},"put":{"summary":"Verify Authenticator","operationId":"accountVerifyAuthenticator","tags":["account"],"description":"","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"verifyAuthenticator","weight":45,"cookies":false,"type":"","demo":"account\/verify-authenticator.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/verify-authenticator.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"type","description":"Type of authenticator.","required":true,"schema":{"type":"string","x-example":"totp","enum":["totp"],"x-enum-name":null,"x-enum-keys":[]},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"otp":{"type":"string","description":"Valid verification token.","x-example":"[OTP]"}},"required":["otp"]}}}}},"delete":{"summary":"Delete Authenticator","operationId":"accountDeleteAuthenticator","tags":["account"],"description":"","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"deleteAuthenticator","weight":46,"cookies":false,"type":"","demo":"account\/delete-authenticator.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-mfa.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"type","description":"Type of authenticator.","required":true,"schema":{"type":"string","x-example":"totp","enum":["totp"],"x-enum-name":null,"x-enum-keys":[]},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"otp":{"type":"string","description":"Valid verification token.","x-example":"[OTP]"}},"required":["otp"]}}}}}},"\/account\/name":{"patch":{"summary":"Update name","operationId":"accountUpdateName","tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateName","weight":27,"cookies":false,"type":"","demo":"account\/update-name.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-name.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["name"]}}}}}},"\/account\/password":{"patch":{"summary":"Update password","operationId":"accountUpdatePassword","tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePassword","weight":28,"cookies":false,"type":"","demo":"account\/update-password.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-password.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"password":{"type":"string","description":"New user password. Must be at least 8 chars.","x-example":null},"oldPassword":{"type":"string","description":"Current user password. Must be at least 8 chars.","x-example":"password"}},"required":["password"]}}}}}},"\/account\/phone":{"patch":{"summary":"Update phone","operationId":"accountUpdatePhone","tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createPhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePhone","weight":30,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","x-example":"password"}},"required":["phone","password"]}}}}}},"\/account\/prefs":{"get":{"summary":"Get account preferences","operationId":"accountGetPrefs","tags":["account"],"description":"Get the preferences as a key-value object for the currently logged in user.","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"getPrefs","weight":23,"cookies":false,"type":"","demo":"account\/get-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/prefs","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]},"patch":{"summary":"Update preferences","operationId":"accountUpdatePrefs","tags":["account"],"description":"Update currently logged in user account preferences. The object you pass is stored as is, and replaces any previous value. The maximum allowed prefs size is 64kB and throws error if exceeded.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePrefs","weight":31,"cookies":false,"type":"","demo":"account\/update-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/prefs","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"prefs":{"type":"object","description":"Prefs key-value JSON object.","x-example":"{}"}},"required":["prefs"]}}}}}},"\/account\/recovery":{"post":{"summary":"Create password recovery","operationId":"accountCreateRecovery","tags":["account"],"description":"Sends the user an email with a temporary secret key for password reset. When the user clicks the confirmation link he is redirected back to your app password reset URL with the secret key and email address values attached to the URL query string. Use the query string params to submit a request to the [PUT \/account\/recovery](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateRecovery) endpoint to complete the process. The verification link sent to the user's email address is valid for 1 hour.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createRecovery","weight":36,"cookies":false,"type":"","demo":"account\/create-recovery.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-recovery.md","rate-limit":10,"rate-time":3600,"rate-key":["url:{url},email:{param-email}","url:{url},ip:{ip}"],"scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"url":{"type":"string","description":"URL to redirect the user back to your app from the recovery email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"}},"required":["email","url"]}}}}},"put":{"summary":"Create password recovery (confirmation)","operationId":"accountUpdateRecovery","tags":["account"],"description":"Use this endpoint to complete the user account password reset. Both the **userId** and **secret** arguments will be passed as query parameters to the redirect URL you have provided when sending your request to the [POST \/account\/recovery](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createRecovery) endpoint.\n\nPlease note that in order to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) the only valid redirect URLs are the ones from domains you have set when adding your platforms in the console interface.","responses":{"200":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"updateRecovery","weight":37,"cookies":false,"type":"","demo":"account\/update-recovery.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-recovery.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid reset token.","x-example":"[SECRET]"},"password":{"type":"string","description":"New user password. Must be between 8 and 256 chars.","x-example":null}},"required":["userId","secret","password"]}}}}}},"\/account\/sessions":{"get":{"summary":"List sessions","operationId":"accountListSessions","tags":["account"],"description":"Get the list of active sessions across different devices for the currently logged in user.","responses":{"200":{"description":"Sessions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/sessionList"}}}}},"x-appwrite":{"method":"listSessions","weight":24,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/sessions","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]},"delete":{"summary":"Delete sessions","operationId":"accountDeleteSessions","tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":35,"cookies":false,"type":"","demo":"account\/delete-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-sessions.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/account\/sessions\/anonymous":{"post":{"summary":"Create anonymous session","operationId":"accountCreateAnonymousSession","tags":["account"],"description":"Use this endpoint to allow a new user to register an anonymous account in your project. This route will also create a new session for the user. To allow the new user to convert an anonymous account to a normal account, you need to update its [email and password](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateEmail) or create an [OAuth2 session](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#CreateOAuth2Session).","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"createAnonymousSession","weight":20,"cookies":false,"type":"","demo":"account\/create-anonymous-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-anonymous.md","rate-limit":50,"rate-time":3600,"rate-key":"ip:{ip}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/sessions\/email":{"post":{"summary":"Create email password session","operationId":"accountCreateEmailPasswordSession","tags":["account"],"description":"Allow the user to login into their account by providing a valid email and password combination. This route will create a new session for the user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"createEmailPasswordSession","weight":8,"cookies":false,"type":"","demo":"account\/create-email-password-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-email-password.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","x-example":"password"}},"required":["email","password"]}}}}}},"\/account\/sessions\/magic-url":{"put":{"summary":"Create session (deprecated)","operationId":"accountUpdateMagicURLSession","tags":["account"],"description":"Use this endpoint to create a session from token. Provide the **userId** and **secret** parameters from the successful response of authentication flows initiated by token creation. For example, magic URL and phone login.","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateMagicURLSession","weight":17,"cookies":false,"type":"","demo":"account\/update-magic-u-r-l-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session.md","rate-limit":10,"rate-time":3600,"rate-key":"ip:{ip},userId:{param-userId}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/account\/sessions\/oauth2\/{provider}":{"get":{"summary":"Create OAuth2 session","operationId":"accountCreateOAuth2Session","tags":["account"],"description":"Allow the user to login to their account using the OAuth2 provider of their choice. Each OAuth2 provider should be enabled from the Appwrite console first. Use the success and failure arguments to provide a redirect URL's back to your app when login is completed.\n\nIf there is already an active session, the new session will be attached to the logged-in account. If there are no active sessions, the server will attempt to look for a user with the same email address as the email received from the OAuth2 provider and attach the new session to the existing user. If no matching user is found - the server will create a new user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).\n","responses":{"301":{"description":"File"}},"x-appwrite":{"method":"createOAuth2Session","weight":9,"cookies":false,"type":"webAuth","demo":"account\/create-o-auth2session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-oauth2.md","rate-limit":50,"rate-time":3600,"rate-key":"ip:{ip}","scope":"sessions.write","platforms":["client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"provider","description":"OAuth2 Provider. Currently, supported providers are: amazon, apple, auth0, authentik, autodesk, bitbucket, bitly, box, dailymotion, discord, disqus, dropbox, etsy, facebook, github, gitlab, google, linkedin, microsoft, notion, oidc, okta, paypal, paypalSandbox, podio, salesforce, slack, spotify, stripe, tradeshift, tradeshiftBox, twitch, wordpress, yahoo, yammer, yandex, zoho, zoom.","required":true,"schema":{"type":"string","x-example":"amazon","enum":["amazon","apple","auth0","authentik","autodesk","bitbucket","bitly","box","dailymotion","discord","disqus","dropbox","etsy","facebook","github","gitlab","google","linkedin","microsoft","notion","oidc","okta","paypal","paypalSandbox","podio","salesforce","slack","spotify","stripe","tradeshift","tradeshiftBox","twitch","wordpress","yahoo","yammer","yandex","zoho","zoom","mock"],"x-enum-name":"OAuthProvider","x-enum-keys":[]},"in":"path"},{"name":"success","description":"URL to redirect back to your app after a successful login attempt. Only URLs from hostnames in your project's platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","required":false,"schema":{"type":"string","format":"url","x-example":"https:\/\/example.com","default":""},"in":"query"},{"name":"failure","description":"URL to redirect back to your app after a failed login attempt. Only URLs from hostnames in your project's platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","required":false,"schema":{"type":"string","format":"url","x-example":"https:\/\/example.com","default":""},"in":"query"},{"name":"token","description":"Include token credentials in the final redirect, useful for server-side integrations, or when cookies are not available.","required":false,"schema":{"type":"boolean","x-example":false,"default":false},"in":"query"},{"name":"scopes","description":"A list of custom OAuth2 scopes. Check each provider internal docs for a list of supported scopes. Maximum of 100 scopes are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/sessions\/token":{"post":{"summary":"Create session","operationId":"accountCreateSession","tags":["account"],"description":"Use this endpoint to create a session from token. Provide the **userId** and **secret** parameters from the successful response of authentication flows initiated by token creation. For example, magic URL and phone login.","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"createSession","weight":18,"cookies":false,"type":"","demo":"account\/create-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session.md","rate-limit":10,"rate-time":3600,"rate-key":"ip:{ip},userId:{param-userId}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Secret of a token generated by login methods. For example, the `createMagicURLToken` or `createPhoneToken` methods.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/account\/sessions\/{sessionId}":{"get":{"summary":"Get session","operationId":"accountGetSession","tags":["account"],"description":"Use this endpoint to get a logged in user's session using a Session ID. Inputting 'current' will return the current session being used.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"getSession","weight":26,"cookies":false,"type":"","demo":"account\/get-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-session.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/sessions","offline-key":"{sessionId}","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to get the current device session.","required":true,"schema":{"type":"string","x-example":"[SESSION_ID]"},"in":"path"}]},"patch":{"summary":"Update (or renew) a session","operationId":"accountUpdateSession","tags":["account"],"description":"Extend session's expiry to increase it's lifespan. Extending a session is useful when session length is short such as 5 minutes.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateSession","weight":34,"cookies":false,"type":"","demo":"account\/update-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-session.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to update the current device session.","required":true,"schema":{"type":"string","x-example":"[SESSION_ID]"},"in":"path"}]},"delete":{"summary":"Delete session","operationId":"accountDeleteSession","tags":["account"],"description":"Logout the user. Use 'current' as the session ID to logout on this device, use a session ID to logout on another device. If you're looking to logout the user on all devices, use [Delete Sessions](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#deleteSessions) instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSession","weight":33,"cookies":false,"type":"","demo":"account\/delete-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-session.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to delete the current device session.","required":true,"schema":{"type":"string","x-example":"[SESSION_ID]"},"in":"path"}]}},"\/account\/status":{"patch":{"summary":"Update status","operationId":"accountUpdateStatus","tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateStatus","weight":32,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/account\/tokens\/email":{"post":{"summary":"Create email token (OTP)","operationId":"accountCreateEmailToken","tags":["account"],"description":"Sends the user an email with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [POST \/v1\/account\/sessions\/token](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createSession) endpoint to complete the login process. The secret sent to the user's email is valid for 15 minutes.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createEmailToken","weight":16,"cookies":false,"type":"","demo":"account\/create-email-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-token-email.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"phrase":{"type":"boolean","description":"Toggle for security phrase. If enabled, email will be send with a randomly generated phrase and the phrase will also be included in the response. Confirming phrases match increases the security of your authentication flow.","x-example":false}},"required":["userId","email"]}}}}}},"\/account\/tokens\/magic-url":{"post":{"summary":"Create magic URL token","operationId":"accountCreateMagicURLToken","tags":["account"],"description":"Sends the user an email with a secret key for creating a session. If the provided user ID has not been registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [POST \/v1\/account\/sessions\/token](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createSession) endpoint to complete the login process. The link sent to the user's email address is valid for 1 hour. If you are on a mobile device you can leave the URL parameter empty, so that the login completion will be handled by your Appwrite instance by default.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).\n","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createMagicURLToken","weight":15,"cookies":false,"type":"","demo":"account\/create-magic-u-r-l-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-token-magic-url.md","rate-limit":60,"rate-time":3600,"rate-key":["url:{url},email:{param-email}","url:{url},ip:{ip}"],"scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"url":{"type":"string","description":"URL to redirect the user back to your app from the magic URL login. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"},"phrase":{"type":"boolean","description":"Toggle for security phrase. If enabled, email will be send with a randomly generated phrase and the phrase will also be included in the response. Confirming phrases match increases the security of your authentication flow.","x-example":false}},"required":["userId","email"]}}}}}},"\/account\/tokens\/phone":{"post":{"summary":"Create phone token","operationId":"accountCreatePhoneToken","tags":["account"],"description":"Sends the user an SMS with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [POST \/v1\/account\/sessions\/token](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createSession) endpoint to complete the login process. The secret sent to the user's phone is valid for 15 minutes.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createPhoneToken","weight":19,"cookies":false,"type":"","demo":"account\/create-phone-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-token-phone.md","rate-limit":10,"rate-time":3600,"rate-key":["url:{url},phone:{param-phone}","url:{url},ip:{ip}"],"scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"}},"required":["userId","phone"]}}}}}},"\/account\/verification":{"post":{"summary":"Create email verification","operationId":"accountCreateVerification","tags":["account"],"description":"Use this endpoint to send a verification message to your user email address to confirm they are the valid owners of that address. Both the **userId** and **secret** arguments will be passed as query parameters to the URL you have provided to be attached to the verification email. The provided URL should redirect the user back to your app and allow you to complete the verification process by verifying both the **userId** and **secret** parameters. Learn more about how to [complete the verification process](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateVerification). The verification link sent to the user's email address is valid for 7 days.\n\nPlease note that in order to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md), the only valid redirect URLs are the ones from domains you have set when adding your platforms in the console interface.\n","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createVerification","weight":38,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"url":{"type":"string","description":"URL to redirect the user back to your app from the verification email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"}},"required":["url"]}}}}},"put":{"summary":"Create email verification (confirmation)","operationId":"accountUpdateVerification","tags":["account"],"description":"Use this endpoint to complete the user email verification process. Use both the **userId** and **secret** parameters that were attached to your app URL to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"updateVerification","weight":39,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/account\/verification\/phone":{"post":{"summary":"Create phone verification","operationId":"accountCreatePhoneVerification","tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updatePhone) endpoint. Learn more about how to [complete the verification process](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createPhoneVerification","weight":40,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":["url:{url},userId:{userId}","url:{url},ip:{ip}"],"scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]},"put":{"summary":"Create phone verification (confirmation)","operationId":"accountUpdatePhoneVerification","tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"updatePhoneVerification","weight":41,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/avatars\/browsers\/{code}":{"get":{"summary":"Get browser icon","operationId":"avatarsGetBrowser","tags":["avatars"],"description":"You can use this endpoint to show different browser icons to your users. The code argument receives the browser code as it appears in your user [GET \/account\/sessions](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#getSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getBrowser","weight":54,"cookies":false,"type":"location","demo":"avatars\/get-browser.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-browser.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Browser Code.","required":true,"schema":{"type":"string","x-example":"aa","enum":["aa","an","ch","ci","cm","cr","ff","sf","mf","ps","oi","om","op","on"],"x-enum-name":"Browser","x-enum-keys":["Avant Browser","Android WebView Beta","Google Chrome","Google Chrome (iOS)","Google Chrome (Mobile)","Chromium","Mozilla Firefox","Safari","Mobile Safari","Microsoft Edge","Microsoft Edge (iOS)","Opera Mini","Opera","Opera (Next)"]},"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"}]}},"\/avatars\/credit-cards\/{code}":{"get":{"summary":"Get credit card icon","operationId":"avatarsGetCreditCard","tags":["avatars"],"description":"The credit card endpoint will return you the icon of the credit card provider you need. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getCreditCard","weight":53,"cookies":false,"type":"location","demo":"avatars\/get-credit-card.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-credit-card.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Credit Card Code. Possible values: amex, argencard, cabal, censosud, diners, discover, elo, hipercard, jcb, mastercard, naranja, targeta-shopping, union-china-pay, visa, mir, maestro.","required":true,"schema":{"type":"string","x-example":"amex","enum":["amex","argencard","cabal","censosud","diners","discover","elo","hipercard","jcb","mastercard","naranja","targeta-shopping","union-china-pay","visa","mir","maestro"],"x-enum-name":"CreditCard","x-enum-keys":["American Express","Argencard","Cabal","Consosud","Diners Club","Discover","Elo","Hipercard","JCB","Mastercard","Naranja","Tarjeta Shopping","Union China Pay","Visa","MIR","Maestro"]},"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"}]}},"\/avatars\/favicon":{"get":{"summary":"Get favicon","operationId":"avatarsGetFavicon","tags":["avatars"],"description":"Use this endpoint to fetch the favorite icon (AKA favicon) of any remote website URL.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFavicon","weight":57,"cookies":false,"type":"location","demo":"avatars\/get-favicon.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-favicon.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"url","description":"Website URL which you want to fetch the favicon from.","required":true,"schema":{"type":"string","format":"url","x-example":"https:\/\/example.com"},"in":"query"}]}},"\/avatars\/flags\/{code}":{"get":{"summary":"Get country flag","operationId":"avatarsGetFlag","tags":["avatars"],"description":"You can use this endpoint to show different country flags icons to your users. The code argument receives the 2 letter country code. Use width, height and quality arguments to change the output settings. Country codes follow the [ISO 3166-1](https:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFlag","weight":55,"cookies":false,"type":"location","demo":"avatars\/get-flag.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-flag.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Country Code. ISO Alpha-2 country code format.","required":true,"schema":{"type":"string","x-example":"af","enum":["af","ao","al","ad","ae","ar","am","ag","au","at","az","bi","be","bj","bf","bd","bg","bh","bs","ba","by","bz","bo","br","bb","bn","bt","bw","cf","ca","ch","cl","cn","ci","cm","cd","cg","co","km","cv","cr","cu","cy","cz","de","dj","dm","dk","do","dz","ec","eg","er","es","ee","et","fi","fj","fr","fm","ga","gb","ge","gh","gn","gm","gw","gq","gr","gd","gt","gy","hn","hr","ht","hu","id","in","ie","ir","iq","is","il","it","jm","jo","jp","kz","ke","kg","kh","ki","kn","kr","kw","la","lb","lr","ly","lc","li","lk","ls","lt","lu","lv","ma","mc","md","mg","mv","mx","mh","mk","ml","mt","mm","me","mn","mz","mr","mu","mw","my","na","ne","ng","ni","nl","no","np","nr","nz","om","pk","pa","pe","ph","pw","pg","pl","kp","pt","py","qa","ro","ru","rw","sa","sd","sn","sg","sb","sl","sv","sm","so","rs","ss","st","sr","sk","si","se","sz","sc","sy","td","tg","th","tj","tm","tl","to","tt","tn","tr","tv","tz","ug","ua","uy","us","uz","va","vc","ve","vn","vu","ws","ye","za","zm","zw"],"x-enum-name":"Flag","x-enum-keys":["Afghanistan","Angola","Albania","Andorra","United Arab Emirates","Argentina","Armenia","Antigua and Barbuda","Australia","Austria","Azerbaijan","Burundi","Belgium","Benin","Burkina Faso","Bangladesh","Bulgaria","Bahrain","Bahamas","Bosnia and Herzegovina","Belarus","Belize","Bolivia","Brazil","Barbados","Brunei Darussalam","Bhutan","Botswana","Central African Republic","Canada","Switzerland","Chile","China","C\u00f4te d'Ivoire","Cameroon","Democratic Republic of the Congo","Republic of the Congo","Colombia","Comoros","Cape Verde","Costa Rica","Cuba","Cyprus","Czech Republic","Germany","Djibouti","Dominica","Denmark","Dominican Republic","Algeria","Ecuador","Egypt","Eritrea","Spain","Estonia","Ethiopia","Finland","Fiji","France","Micronesia (Federated States of)","Gabon","United Kingdom","Georgia","Ghana","Guinea","Gambia","Guinea-Bissau","Equatorial Guinea","Greece","Grenada","Guatemala","Guyana","Honduras","Croatia","Haiti","Hungary","Indonesia","India","Ireland","Iran (Islamic Republic of)","Iraq","Iceland","Israel","Italy","Jamaica","Jordan","Japan","Kazakhstan","Kenya","Kyrgyzstan","Cambodia","Kiribati","Saint Kitts and Nevis","South Korea","Kuwait","Lao People's Democratic Republic","Lebanon","Liberia","Libya","Saint Lucia","Liechtenstein","Sri Lanka","Lesotho","Lithuania","Luxembourg","Latvia","Morocco","Monaco","Moldova","Madagascar","Maldives","Mexico","Marshall Islands","North Macedonia","Mali","Malta","Myanmar","Montenegro","Mongolia","Mozambique","Mauritania","Mauritius","Malawi","Malaysia","Namibia","Niger","Nigeria","Nicaragua","Netherlands","Norway","Nepal","Nauru","New Zealand","Oman","Pakistan","Panama","Peru","Philippines","Palau","Papua New Guinea","Poland","North Korea","Portugal","Paraguay","Qatar","Romania","Russia","Rwanda","Saudi Arabia","Sudan","Senegal","Singapore","Solomon Islands","Sierra Leone","El Salvador","San Marino","Somalia","Serbia","South Sudan","Sao Tome and Principe","Suriname","Slovakia","Slovenia","Sweden","Eswatini","Seychelles","Syria","Chad","Togo","Thailand","Tajikistan","Turkmenistan","Timor-Leste","Tonga","Trinidad and Tobago","Tunisia","Turkey","Tuvalu","Tanzania","Uganda","Ukraine","Uruguay","United States","Uzbekistan","Vatican City","Saint Vincent and the Grenadines","Venezuela","Vietnam","Vanuatu","Samoa","Yemen","South Africa","Zambia","Zimbabwe"]},"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"}]}},"\/avatars\/image":{"get":{"summary":"Get image from URL","operationId":"avatarsGetImage","tags":["avatars"],"description":"Use this endpoint to fetch a remote image URL and crop it to any image size you want. This endpoint is very useful if you need to crop and display remote images in your app or in case you want to make sure a 3rd party image is properly served using a TLS protocol.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getImage","weight":56,"cookies":false,"type":"location","demo":"avatars\/get-image.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-image.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"url","description":"Image URL which you want to crop.","required":true,"schema":{"type":"string","format":"url","x-example":"https:\/\/example.com"},"in":"query"},{"name":"width","description":"Resize preview image width, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get user initials","operationId":"avatarsGetInitials","tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getInitials","weight":59,"cookies":false,"type":"location","demo":"avatars\/get-initials.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-initials.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"name","description":"Full Name. When empty, current user name or email will be used. Max length: 128 chars.","required":false,"schema":{"type":"string","x-example":"[NAME]","default":""},"in":"query"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":500},"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":500},"in":"query"},{"name":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"schema":{"type":"string","default":""},"in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR code","operationId":"avatarsGetQR","tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getQR","weight":58,"cookies":false,"type":"location","demo":"avatars\/get-q-r.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-qr.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"text","description":"Plain text to be converted to QR code image.","required":true,"schema":{"type":"string","x-example":"[TEXT]"},"in":"query"},{"name":"size","description":"QR code size. Pass an integer between 1 to 1000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":1,"default":400},"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":1},"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"schema":{"type":"boolean","x-example":false,"default":false},"in":"query"}]}},"\/databases":{"get":{"summary":"List databases","operationId":"databasesList","tags":["databases"],"description":"Get a list of all databases from the current Appwrite project. You can use the search parameter to filter your results.","responses":{"200":{"description":"Databases List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/databaseList"}}}}},"x-appwrite":{"method":"list","weight":64,"cookies":false,"type":"","demo":"databases\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create database","operationId":"databasesCreate","tags":["databases"],"description":"Create a new Database.\n","responses":{"201":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"create","weight":63,"cookies":false,"type":"","demo":"databases\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"databaseId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[DATABASE_ID]"},"name":{"type":"string","description":"Database name. Max length: 128 chars.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Is the database enabled? When set to 'disabled', users cannot access the database but Server SDKs with an API key can still read and write to the database. No data is lost when this is toggled.","x-example":false}},"required":["databaseId","name"]}}}}}},"\/databases\/{databaseId}":{"get":{"summary":"Get database","operationId":"databasesGet","tags":["databases"],"description":"Get a database by its unique ID. This endpoint response returns a JSON object with the database metadata.","responses":{"200":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"get","weight":65,"cookies":false,"type":"","demo":"databases\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}]},"put":{"summary":"Update database","operationId":"databasesUpdate","tags":["databases"],"description":"Update a database by its unique ID.","responses":{"200":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"update","weight":67,"cookies":false,"type":"","demo":"databases\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Database name. Max length: 128 chars.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Is database enabled? When set to 'disabled', users cannot access the database but Server SDKs with an API key can still read and write to the database. No data is lost when this is toggled.","x-example":false}},"required":["name"]}}}}},"delete":{"summary":"Delete database","operationId":"databasesDelete","tags":["databases"],"description":"Delete a database by its unique ID. Only API keys with with databases.write scope can delete a database.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":68,"cookies":false,"type":"","demo":"databases\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections":{"get":{"summary":"List collections","operationId":"databasesListCollections","tags":["databases"],"description":"Get a list of all collections that belong to the provided databaseId. You can use the search parameter to filter your results.","responses":{"200":{"description":"Collections List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collectionList"}}}}},"x-appwrite":{"method":"listCollections","weight":70,"cookies":false,"type":"","demo":"databases\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, documentSecurity","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create collection","operationId":"databasesCreateCollection","tags":["databases"],"description":"Create a new Collection. Before using this route, you should create a new database resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"createCollection","weight":69,"cookies":false,"type":"","demo":"databases\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permissions strings. By default, no user is granted with any permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":false},"enabled":{"type":"boolean","description":"Is collection enabled? When set to 'disabled', users cannot access the collection but Server SDKs with and API key can still read and write to the collection. No data is lost when this is toggled.","x-example":false}},"required":["collectionId","name"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}":{"get":{"summary":"Get collection","operationId":"databasesGetCollection","tags":["databases"],"description":"Get a collection by its unique ID. This endpoint response returns a JSON object with the collection metadata.","responses":{"200":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"getCollection","weight":71,"cookies":false,"type":"","demo":"databases\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]},"put":{"summary":"Update collection","operationId":"databasesUpdateCollection","tags":["databases"],"description":"Update a collection by its unique ID.","responses":{"200":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"updateCollection","weight":73,"cookies":false,"type":"","demo":"databases\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":false},"enabled":{"type":"boolean","description":"Is collection enabled? When set to 'disabled', users cannot access the collection but Server SDKs with and API key can still read and write to the collection. No data is lost when this is toggled.","x-example":false}},"required":["name"]}}}}},"delete":{"summary":"Delete collection","operationId":"databasesDeleteCollection","tags":["databases"],"description":"Delete a collection by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteCollection","weight":74,"cookies":false,"type":"","demo":"databases\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes":{"get":{"summary":"List attributes","operationId":"databasesListAttributes","tags":["databases"],"description":"","responses":{"200":{"description":"Attributes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeList"}}}}},"x-appwrite":{"method":"listAttributes","weight":85,"cookies":false,"type":"","demo":"databases\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: key, type, size, required, array, status, error","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create boolean attribute","operationId":"databasesCreateBooleanAttribute","tags":["databases"],"description":"Create a boolean attribute.\n","responses":{"202":{"description":"AttributeBoolean","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeBoolean"}}}}},"x-appwrite":{"method":"createBooleanAttribute","weight":82,"cookies":false,"type":"","demo":"databases\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":false},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean\/{key}":{"patch":{"summary":"Update boolean attribute","operationId":"databasesUpdateBooleanAttribute","tags":["databases"],"description":"","responses":{"200":{"description":"AttributeBoolean","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeBoolean"}}}}},"x-appwrite":{"method":"updateBooleanAttribute","weight":94,"cookies":false,"type":"","demo":"databases\/update-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":false,"x-nullable":true}},"required":["required","default"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/datetime":{"post":{"summary":"Create datetime attribute","operationId":"databasesCreateDatetimeAttribute","tags":["databases"],"description":"","responses":{"202":{"description":"AttributeDatetime","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeDatetime"}}}}},"x-appwrite":{"method":"createDatetimeAttribute","weight":83,"cookies":false,"type":"","demo":"databases\/create-datetime-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-datetime-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for the attribute in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/datetime\/{key}":{"patch":{"summary":"Update dateTime attribute","operationId":"databasesUpdateDatetimeAttribute","tags":["databases"],"description":"","responses":{"200":{"description":"AttributeDatetime","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeDatetime"}}}}},"x-appwrite":{"method":"updateDatetimeAttribute","weight":95,"cookies":false,"type":"","demo":"databases\/update-datetime-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-datetime-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null,"x-nullable":true}},"required":["required","default"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create email attribute","operationId":"databasesCreateEmailAttribute","tags":["databases"],"description":"Create an email attribute.\n","responses":{"202":{"description":"AttributeEmail","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeEmail"}}}}},"x-appwrite":{"method":"createEmailAttribute","weight":76,"cookies":false,"type":"","demo":"databases\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"email@example.com"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/email\/{key}":{"patch":{"summary":"Update email attribute","operationId":"databasesUpdateEmailAttribute","tags":["databases"],"description":"Update an email attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeEmail","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeEmail"}}}}},"x-appwrite":{"method":"updateEmailAttribute","weight":88,"cookies":false,"type":"","demo":"databases\/update-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"email@example.com","x-nullable":true}},"required":["required","default"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create enum attribute","operationId":"databasesCreateEnumAttribute","tags":["databases"],"description":"","responses":{"202":{"description":"AttributeEnum","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeEnum"}}}}},"x-appwrite":{"method":"createEnumAttribute","weight":77,"cookies":false,"type":"","demo":"databases\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"elements":{"type":"array","description":"Array of elements in enumerated type. Uses length of longest element to determine size. Maximum of 100 elements are allowed, each 255 characters long.","x-example":null,"items":{"type":"string"}},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","elements","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/enum\/{key}":{"patch":{"summary":"Update enum attribute","operationId":"databasesUpdateEnumAttribute","tags":["databases"],"description":"Update an enum attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeEnum","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeEnum"}}}}},"x-appwrite":{"method":"updateEnumAttribute","weight":89,"cookies":false,"type":"","demo":"databases\/update-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-enum-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"elements":{"type":"array","description":"Array of elements in enumerated type. Uses length of longest element to determine size. Maximum of 100 elements are allowed, each 255 characters long.","x-example":null,"items":{"type":"string"}},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"[DEFAULT]","x-nullable":true}},"required":["elements","required","default"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create float attribute","operationId":"databasesCreateFloatAttribute","tags":["databases"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeFloat","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeFloat"}}}}},"x-appwrite":{"method":"createFloatAttribute","weight":81,"cookies":false,"type":"","demo":"databases\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"min":{"type":"number","description":"Minimum value to enforce on new documents","x-example":null},"max":{"type":"number","description":"Maximum value to enforce on new documents","x-example":null},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/float\/{key}":{"patch":{"summary":"Update float attribute","operationId":"databasesUpdateFloatAttribute","tags":["databases"],"description":"Update a float attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeFloat","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeFloat"}}}}},"x-appwrite":{"method":"updateFloatAttribute","weight":93,"cookies":false,"type":"","demo":"databases\/update-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"min":{"type":"number","description":"Minimum value to enforce on new documents","x-example":null},"max":{"type":"number","description":"Maximum value to enforce on new documents","x-example":null},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null,"x-nullable":true}},"required":["required","min","max","default"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create integer attribute","operationId":"databasesCreateIntegerAttribute","tags":["databases"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeInteger","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeInteger"}}}}},"x-appwrite":{"method":"createIntegerAttribute","weight":80,"cookies":false,"type":"","demo":"databases\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"min":{"type":"integer","description":"Minimum value to enforce on new documents","x-example":null},"max":{"type":"integer","description":"Maximum value to enforce on new documents","x-example":null},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/integer\/{key}":{"patch":{"summary":"Update integer attribute","operationId":"databasesUpdateIntegerAttribute","tags":["databases"],"description":"Update an integer attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeInteger","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeInteger"}}}}},"x-appwrite":{"method":"updateIntegerAttribute","weight":92,"cookies":false,"type":"","demo":"databases\/update-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"min":{"type":"integer","description":"Minimum value to enforce on new documents","x-example":null},"max":{"type":"integer","description":"Maximum value to enforce on new documents","x-example":null},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null,"x-nullable":true}},"required":["required","min","max","default"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP address attribute","operationId":"databasesCreateIpAttribute","tags":["databases"],"description":"Create IP address attribute.\n","responses":{"202":{"description":"AttributeIP","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeIp"}}}}},"x-appwrite":{"method":"createIpAttribute","weight":78,"cookies":false,"type":"","demo":"databases\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/ip\/{key}":{"patch":{"summary":"Update IP address attribute","operationId":"databasesUpdateIpAttribute","tags":["databases"],"description":"Update an ip attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeIP","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeIp"}}}}},"x-appwrite":{"method":"updateIpAttribute","weight":90,"cookies":false,"type":"","demo":"databases\/update-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null,"x-nullable":true}},"required":["required","default"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/relationship":{"post":{"summary":"Create relationship attribute","operationId":"databasesCreateRelationshipAttribute","tags":["databases"],"description":"Create relationship attribute. [Learn more about relationship attributes](https:\/\/appwrite.io\/docs\/databases-relationships#relationship-attributes).\n","responses":{"202":{"description":"AttributeRelationship","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeRelationship"}}}}},"x-appwrite":{"method":"createRelationshipAttribute","weight":84,"cookies":false,"type":"","demo":"databases\/create-relationship-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-relationship-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"relatedCollectionId":{"type":"string","description":"Related Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","x-example":"[RELATED_COLLECTION_ID]"},"type":{"type":"string","description":"Relation type","x-example":"oneToOne","enum":["oneToOne","manyToOne","manyToMany","oneToMany"],"x-enum-name":"RelationshipType","x-enum-keys":[]},"twoWay":{"type":"boolean","description":"Is Two Way?","x-example":false},"key":{"type":"string","description":"Attribute Key.","x-example":null},"twoWayKey":{"type":"string","description":"Two Way Attribute Key.","x-example":null},"onDelete":{"type":"string","description":"Constraints option","x-example":"cascade","enum":["cascade","restrict","setNull"],"x-enum-name":"RelationMutate","x-enum-keys":[]}},"required":["relatedCollectionId","type"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create string attribute","operationId":"databasesCreateStringAttribute","tags":["databases"],"description":"Create a string attribute.\n","responses":{"202":{"description":"AttributeString","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeString"}}}}},"x-appwrite":{"method":"createStringAttribute","weight":75,"cookies":false,"type":"","demo":"databases\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"size":{"type":"integer","description":"Attribute size for text attributes, in number of characters.","x-example":1},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false},"encrypt":{"type":"boolean","description":"Toggle encryption for the attribute. Encryption enhances security by not storing any plain text values in the database. However, encrypted attributes cannot be queried.","x-example":false}},"required":["key","size","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/string\/{key}":{"patch":{"summary":"Update string attribute","operationId":"databasesUpdateStringAttribute","tags":["databases"],"description":"Update a string attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeString","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeString"}}}}},"x-appwrite":{"method":"updateStringAttribute","weight":87,"cookies":false,"type":"","demo":"databases\/update-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"[DEFAULT]","x-nullable":true}},"required":["required","default"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL attribute","operationId":"databasesCreateUrlAttribute","tags":["databases"],"description":"Create a URL attribute.\n","responses":{"202":{"description":"AttributeURL","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeUrl"}}}}},"x-appwrite":{"method":"createUrlAttribute","weight":79,"cookies":false,"type":"","demo":"databases\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"https:\/\/example.com"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url\/{key}":{"patch":{"summary":"Update URL attribute","operationId":"databasesUpdateUrlAttribute","tags":["databases"],"description":"Update an url attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeURL","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeUrl"}}}}},"x-appwrite":{"method":"updateUrlAttribute","weight":91,"cookies":false,"type":"","demo":"databases\/update-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"https:\/\/example.com","x-nullable":true}},"required":["required","default"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get attribute","operationId":"databasesGetAttribute","tags":["databases"],"description":"","responses":{"200":{"description":"AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, or AttributeDatetime, or AttributeRelationship, or AttributeString","content":{"application\/json":{"schema":{"oneOf":[{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeRelationship"},{"$ref":"#\/components\/schemas\/attributeString"}]}}}}},"x-appwrite":{"method":"getAttribute","weight":86,"cookies":false,"type":"","demo":"databases\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}]},"delete":{"summary":"Delete attribute","operationId":"databasesDeleteAttribute","tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":97,"cookies":false,"type":"","demo":"databases\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/{key}\/relationship":{"patch":{"summary":"Update relationship attribute","operationId":"databasesUpdateRelationshipAttribute","tags":["databases"],"description":"Update relationship attribute. [Learn more about relationship attributes](https:\/\/appwrite.io\/docs\/databases-relationships#relationship-attributes).\n","responses":{"200":{"description":"AttributeRelationship","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeRelationship"}}}}},"x-appwrite":{"method":"updateRelationshipAttribute","weight":96,"cookies":false,"type":"","demo":"databases\/update-relationship-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-relationship-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"onDelete":{"type":"string","description":"Constraints option","x-example":"cascade","enum":["cascade","restrict","setNull"],"x-enum-name":"RelationMutate","x-enum-keys":[]}}}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List documents","operationId":"databasesListDocuments","tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/documentList"}}}}},"x-appwrite":{"method":"listDocuments","weight":103,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"post":{"summary":"Create document","operationId":"databasesCreateDocument","tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"createDocument","weight":102,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, only the current user is granted all permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get document","operationId":"databasesGetDocument","tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"getDocument","weight":104,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"patch":{"summary":"Update document","operationId":"databasesUpdateDocument","tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"updateDocument","weight":106,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete document","operationId":"databasesDeleteDocument","tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":107,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes":{"get":{"summary":"List indexes","operationId":"databasesListIndexes","tags":["databases"],"description":"","responses":{"200":{"description":"Indexes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/indexList"}}}}},"x-appwrite":{"method":"listIndexes","weight":99,"cookies":false,"type":"","demo":"databases\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: key, type, status, attributes, error","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"post":{"summary":"Create index","operationId":"databasesCreateIndex","tags":["databases"],"description":"","responses":{"202":{"description":"Index","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/index"}}}}},"x-appwrite":{"method":"createIndex","weight":98,"cookies":false,"type":"","demo":"databases\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Index Key.","x-example":null},"type":{"type":"string","description":"Index type.","x-example":"key","enum":["key","fulltext","unique","spatial"],"x-enum-name":"IndexType","x-enum-keys":[]},"attributes":{"type":"array","description":"Array of attributes to index. Maximum of 100 attributes are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders. Maximum of 100 orders are allowed.","x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get index","operationId":"databasesGetIndex","tags":["databases"],"description":"","responses":{"200":{"description":"Index","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/index"}}}}},"x-appwrite":{"method":"getIndex","weight":100,"cookies":false,"type":"","demo":"databases\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Index Key.","required":true,"schema":{"type":"string"},"in":"path"}]},"delete":{"summary":"Delete index","operationId":"databasesDeleteIndex","tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":101,"cookies":false,"type":"","demo":"databases\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Index Key.","required":true,"schema":{"type":"string"},"in":"path"}]}},"\/functions":{"get":{"summary":"List functions","operationId":"functionsList","tags":["functions"],"description":"Get a list of all the project's functions. You can use the query params to filter your results.","responses":{"200":{"description":"Functions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/functionList"}}}}},"x-appwrite":{"method":"list","weight":268,"cookies":false,"type":"","demo":"functions\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-functions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, runtime, deployment, schedule, scheduleNext, schedulePrevious, timeout, entrypoint, commands, installationId","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create function","operationId":"functionsCreate","tags":["functions"],"description":"Create a new function. You can pass a list of [permissions](https:\/\/appwrite.io\/docs\/permissions) to allow different project users or team with access to execute the function using the client API.","responses":{"201":{"description":"Function","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/function"}}}}},"x-appwrite":{"method":"create","weight":267,"cookies":false,"type":"","demo":"functions\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"functionId":{"type":"string","description":"Function ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[FUNCTION_ID]"},"name":{"type":"string","description":"Function name. Max length: 128 chars.","x-example":"[NAME]"},"runtime":{"type":"string","description":"Execution runtime.","x-example":"node-18.0","enum":["node-18.0","php-8.0","ruby-3.1","python-3.9"],"x-enum-name":null,"x-enum-keys":[]},"execute":{"type":"array","description":"An array of role strings with execution permissions. By default no user is granted with any execute permissions. [learn more about roles](https:\/\/appwrite.io\/docs\/permissions#permission-roles). Maximum of 100 roles are allowed, each 64 characters long.","x-example":"[\"any\"]","items":{"type":"string"}},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","x-example":null},"timeout":{"type":"integer","description":"Function maximum execution time in seconds.","x-example":1},"enabled":{"type":"boolean","description":"Is function enabled? When set to 'disabled', users cannot access the function but Server SDKs with and API key can still access the function. No data is lost when this is toggled.","x-example":false},"logging":{"type":"boolean","description":"Whether executions will be logged. When set to false, executions will not be logged, but will reduce resource used by your Appwrite project.","x-example":false},"entrypoint":{"type":"string","description":"Entrypoint File. This path is relative to the \"providerRootDirectory\".","x-example":"[ENTRYPOINT]"},"commands":{"type":"string","description":"Build Commands.","x-example":"[COMMANDS]"},"installationId":{"type":"string","description":"Appwrite Installation ID for VCS (Version Control System) deployment.","x-example":"[INSTALLATION_ID]"},"providerRepositoryId":{"type":"string","description":"Repository ID of the repo linked to the function.","x-example":"[PROVIDER_REPOSITORY_ID]"},"providerBranch":{"type":"string","description":"Production branch for the repo linked to the function.","x-example":"[PROVIDER_BRANCH]"},"providerSilentMode":{"type":"boolean","description":"Is the VCS (Version Control System) connection in silent mode for the repo linked to the function? In silent mode, comments will not be made on commits and pull requests.","x-example":false},"providerRootDirectory":{"type":"string","description":"Path to function code in the linked repo.","x-example":"[PROVIDER_ROOT_DIRECTORY]"},"templateRepository":{"type":"string","description":"Repository name of the template.","x-example":"[TEMPLATE_REPOSITORY]"},"templateOwner":{"type":"string","description":"The name of the owner of the template.","x-example":"[TEMPLATE_OWNER]"},"templateRootDirectory":{"type":"string","description":"Path to function code in the template repo.","x-example":"[TEMPLATE_ROOT_DIRECTORY]"},"templateBranch":{"type":"string","description":"Production branch for the repo linked to the function template.","x-example":"[TEMPLATE_BRANCH]"}},"required":["functionId","name","runtime"]}}}}}},"\/functions\/runtimes":{"get":{"summary":"List runtimes","operationId":"functionsListRuntimes","tags":["functions"],"description":"Get a list of all runtimes that are currently active on your instance.","responses":{"200":{"description":"Runtimes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/runtimeList"}}}}},"x-appwrite":{"method":"listRuntimes","weight":269,"cookies":false,"type":"","demo":"functions\/list-runtimes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-runtimes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/functions\/{functionId}":{"get":{"summary":"Get function","operationId":"functionsGet","tags":["functions"],"description":"Get a function by its unique ID.","responses":{"200":{"description":"Function","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/function"}}}}},"x-appwrite":{"method":"get","weight":270,"cookies":false,"type":"","demo":"functions\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}]},"put":{"summary":"Update function","operationId":"functionsUpdate","tags":["functions"],"description":"Update function by its unique ID.","responses":{"200":{"description":"Function","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/function"}}}}},"x-appwrite":{"method":"update","weight":273,"cookies":false,"type":"","demo":"functions\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Function name. Max length: 128 chars.","x-example":"[NAME]"},"runtime":{"type":"string","description":"Execution runtime.","x-example":"node-18.0","enum":["node-18.0","php-8.0","ruby-3.1","python-3.9"],"x-enum-name":null,"x-enum-keys":[]},"execute":{"type":"array","description":"An array of role strings with execution permissions. By default no user is granted with any execute permissions. [learn more about roles](https:\/\/appwrite.io\/docs\/permissions#permission-roles). Maximum of 100 roles are allowed, each 64 characters long.","x-example":"[\"any\"]","items":{"type":"string"}},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","x-example":null},"timeout":{"type":"integer","description":"Maximum execution time in seconds.","x-example":1},"enabled":{"type":"boolean","description":"Is function enabled? When set to 'disabled', users cannot access the function but Server SDKs with and API key can still access the function. No data is lost when this is toggled.","x-example":false},"logging":{"type":"boolean","description":"Whether executions will be logged. When set to false, executions will not be logged, but will reduce resource used by your Appwrite project.","x-example":false},"entrypoint":{"type":"string","description":"Entrypoint File. This path is relative to the \"providerRootDirectory\".","x-example":"[ENTRYPOINT]"},"commands":{"type":"string","description":"Build Commands.","x-example":"[COMMANDS]"},"installationId":{"type":"string","description":"Appwrite Installation ID for VCS (Version Controle System) deployment.","x-example":"[INSTALLATION_ID]"},"providerRepositoryId":{"type":"string","description":"Repository ID of the repo linked to the function","x-example":"[PROVIDER_REPOSITORY_ID]"},"providerBranch":{"type":"string","description":"Production branch for the repo linked to the function","x-example":"[PROVIDER_BRANCH]"},"providerSilentMode":{"type":"boolean","description":"Is the VCS (Version Control System) connection in silent mode for the repo linked to the function? In silent mode, comments will not be made on commits and pull requests.","x-example":false},"providerRootDirectory":{"type":"string","description":"Path to function code in the linked repo.","x-example":"[PROVIDER_ROOT_DIRECTORY]"}},"required":["name"]}}}}},"delete":{"summary":"Delete function","operationId":"functionsDelete","tags":["functions"],"description":"Delete a function by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":276,"cookies":false,"type":"","demo":"functions\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/deployments":{"get":{"summary":"List deployments","operationId":"functionsListDeployments","tags":["functions"],"description":"Get a list of all the project's code deployments. You can use the query params to filter your results.","responses":{"200":{"description":"Deployments List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deploymentList"}}}}},"x-appwrite":{"method":"listDeployments","weight":278,"cookies":false,"type":"","demo":"functions\/list-deployments.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-deployments.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: size, buildId, activate, entrypoint, commands","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create deployment","operationId":"functionsCreateDeployment","tags":["functions"],"description":"Create a new function code deployment. Use this endpoint to upload a new version of your code function. To execute your newly uploaded code, you'll need to update the function's deployment to use your new deployment UID.\n\nThis endpoint accepts a tar.gz file compressed with your code. Make sure to include any dependencies your code has within the compressed file. You can learn more about code packaging in the [Appwrite Cloud Functions tutorial](https:\/\/appwrite.io\/docs\/functions).\n\nUse the \"command\" param to set the entrypoint used to execute your code.","responses":{"202":{"description":"Deployment","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deployment"}}}}},"x-appwrite":{"method":"createDeployment","weight":277,"cookies":false,"type":"","demo":"functions\/create-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":true,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}],"requestBody":{"content":{"multipart\/form-data":{"schema":{"type":"object","properties":{"entrypoint":{"type":"string","description":"Entrypoint File.","x-example":"[ENTRYPOINT]"},"commands":{"type":"string","description":"Build Commands.","x-example":"[COMMANDS]"},"code":{"type":"string","description":"Gzip file with your code package. When used with the Appwrite CLI, pass the path to your code directory, and the CLI will automatically package your code. Use a path that is within the current directory.","x-example":null},"activate":{"type":"boolean","description":"Automatically activate the deployment when it is finished building.","x-example":false}},"required":["code","activate"]}}}}}},"\/functions\/{functionId}\/deployments\/{deploymentId}":{"get":{"summary":"Get deployment","operationId":"functionsGetDeployment","tags":["functions"],"description":"Get a code deployment by its unique ID.","responses":{"200":{"description":"Deployment","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deployment"}}}}},"x-appwrite":{"method":"getDeployment","weight":279,"cookies":false,"type":"","demo":"functions\/get-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"schema":{"type":"string","x-example":"[DEPLOYMENT_ID]"},"in":"path"}]},"patch":{"summary":"Update function deployment","operationId":"functionsUpdateDeployment","tags":["functions"],"description":"Update the function code deployment ID using the unique function ID. Use this endpoint to switch the code deployment that should be executed by the execution endpoint.","responses":{"200":{"description":"Function","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/function"}}}}},"x-appwrite":{"method":"updateDeployment","weight":275,"cookies":false,"type":"","demo":"functions\/update-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-function-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"schema":{"type":"string","x-example":"[DEPLOYMENT_ID]"},"in":"path"}]},"delete":{"summary":"Delete deployment","operationId":"functionsDeleteDeployment","tags":["functions"],"description":"Delete a code deployment by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDeployment","weight":280,"cookies":false,"type":"","demo":"functions\/delete-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"schema":{"type":"string","x-example":"[DEPLOYMENT_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/deployments\/{deploymentId}\/builds\/{buildId}":{"post":{"summary":"Create build","operationId":"functionsCreateBuild","tags":["functions"],"description":"Create a new build for an Appwrite Function deployment. This endpoint can be used to retry a failed build.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"createBuild","weight":281,"cookies":false,"type":"","demo":"functions\/create-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"schema":{"type":"string","x-example":"[DEPLOYMENT_ID]"},"in":"path"},{"name":"buildId","description":"Build unique ID.","required":true,"schema":{"type":"string","x-example":"[BUILD_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/deployments\/{deploymentId}\/download":{"get":{"summary":"Download Deployment","operationId":"functionsDownloadDeployment","tags":["functions"],"description":"Get a Deployment's contents by its unique ID. This endpoint supports range requests for partial or streaming file download.","responses":{"200":{"description":"File"}},"x-appwrite":{"method":"downloadDeployment","weight":274,"cookies":false,"type":"location","demo":"functions\/download-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/download-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"schema":{"type":"string","x-example":"[DEPLOYMENT_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List executions","operationId":"functionsListExecutions","tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/executionList"}}}}},"x-appwrite":{"method":"listExecutions","weight":283,"cookies":false,"type":"","demo":"functions\/list-executions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-executions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, responseStatusCode, duration","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create execution","operationId":"functionsCreateExecution","tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/execution"}}}}},"x-appwrite":{"method":"createExecution","weight":282,"cookies":false,"type":"","demo":"functions\/create-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-execution.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"body":{"type":"string","description":"HTTP body of execution. Default value is empty string.","x-example":"[BODY]"},"async":{"type":"boolean","description":"Execute code in the background. Default value is false.","x-example":false},"path":{"type":"string","description":"HTTP path of execution. Path can include query params. Default value is \/","x-example":"[PATH]"},"method":{"type":"string","description":"HTTP method of execution. Default value is GET.","x-example":"GET","enum":["GET","POST","PUT","PATCH","DELETE","OPTIONS"],"x-enum-name":"ExecutionMethod","x-enum-keys":[]},"headers":{"type":"object","description":"HTTP headers of execution. Defaults to empty.","x-example":"{}"}}}}}}}},"\/functions\/{functionId}\/executions\/{executionId}":{"get":{"summary":"Get execution","operationId":"functionsGetExecution","tags":["functions"],"description":"Get a function execution log by its unique ID.","responses":{"200":{"description":"Execution","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/execution"}}}}},"x-appwrite":{"method":"getExecution","weight":284,"cookies":false,"type":"","demo":"functions\/get-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-execution.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"executionId","description":"Execution ID.","required":true,"schema":{"type":"string","x-example":"[EXECUTION_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/variables":{"get":{"summary":"List variables","operationId":"functionsListVariables","tags":["functions"],"description":"Get a list of all variables of a specific function.","responses":{"200":{"description":"Variables List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variableList"}}}}},"x-appwrite":{"method":"listVariables","weight":286,"cookies":false,"type":"","demo":"functions\/list-variables.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-variables.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}]},"post":{"summary":"Create variable","operationId":"functionsCreateVariable","tags":["functions"],"description":"Create a new function environment variable. These variables can be accessed in the function at runtime as environment variables.","responses":{"201":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"createVariable","weight":285,"cookies":false,"type":"","demo":"functions\/create-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","x-example":"[VALUE]"}},"required":["key","value"]}}}}}},"\/functions\/{functionId}\/variables\/{variableId}":{"get":{"summary":"Get variable","operationId":"functionsGetVariable","tags":["functions"],"description":"Get a variable by its unique ID.","responses":{"200":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"getVariable","weight":287,"cookies":false,"type":"","demo":"functions\/get-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}]},"put":{"summary":"Update variable","operationId":"functionsUpdateVariable","tags":["functions"],"description":"Update variable by its unique ID.","responses":{"200":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"updateVariable","weight":288,"cookies":false,"type":"","demo":"functions\/update-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","x-example":"[VALUE]"}},"required":["key"]}}}}},"delete":{"summary":"Delete variable","operationId":"functionsDeleteVariable","tags":["functions"],"description":"Delete a variable by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteVariable","weight":289,"cookies":false,"type":"","demo":"functions\/delete-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}]}},"\/graphql":{"post":{"summary":"GraphQL endpoint","operationId":"graphqlQuery","tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/any"}}}}},"x-appwrite":{"method":"query","weight":304,"cookies":false,"type":"graphql","demo":"graphql\/query.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"Session":[],"JWT":[]}]}},"\/graphql\/mutation":{"post":{"summary":"GraphQL endpoint","operationId":"graphqlMutation","tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/any"}}}}},"x-appwrite":{"method":"mutation","weight":303,"cookies":false,"type":"graphql","demo":"graphql\/mutation.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"Session":[],"JWT":[]}]}},"\/health":{"get":{"summary":"Get HTTP","operationId":"healthGet","tags":["health"],"description":"Check the Appwrite HTTP server is up and responsive.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"get","weight":119,"cookies":false,"type":"","demo":"health\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/anti-virus":{"get":{"summary":"Get antivirus","operationId":"healthGetAntivirus","tags":["health"],"description":"Check the Appwrite Antivirus server is up and connection is successful.","responses":{"200":{"description":"Health Antivirus","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthAntivirus"}}}}},"x-appwrite":{"method":"getAntivirus","weight":138,"cookies":false,"type":"","demo":"health\/get-antivirus.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-storage-anti-virus.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/cache":{"get":{"summary":"Get cache","operationId":"healthGetCache","tags":["health"],"description":"Check the Appwrite in-memory cache servers are up and connection is successful.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"getCache","weight":122,"cookies":false,"type":"","demo":"health\/get-cache.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-cache.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/certificate":{"get":{"summary":"Get the SSL certificate for a domain","operationId":"healthGetCertificate","tags":["health"],"description":"Get the SSL certificate for a domain","responses":{"200":{"description":"Health Certificate","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthCertificate"}}}}},"x-appwrite":{"method":"getCertificate","weight":128,"cookies":false,"type":"","demo":"health\/get-certificate.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-certificate.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"domain","description":"string","required":false,"schema":{"type":"string"},"in":"query"}]}},"\/health\/db":{"get":{"summary":"Get DB","operationId":"healthGetDB","tags":["health"],"description":"Check the Appwrite database servers are up and connection is successful.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"getDB","weight":121,"cookies":false,"type":"","demo":"health\/get-d-b.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-db.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/pubsub":{"get":{"summary":"Get pubsub","operationId":"healthGetPubSub","tags":["health"],"description":"Check the Appwrite pub-sub servers are up and connection is successful.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"getPubSub","weight":124,"cookies":false,"type":"","demo":"health\/get-pub-sub.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-pubsub.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/queue":{"get":{"summary":"Get queue","operationId":"healthGetQueue","tags":["health"],"description":"Check the Appwrite queue messaging servers are up and connection is successful.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"getQueue","weight":123,"cookies":false,"type":"","demo":"health\/get-queue.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/queue\/builds":{"get":{"summary":"Get builds queue","operationId":"healthGetQueueBuilds","tags":["health"],"description":"Get the number of builds that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueBuilds","weight":130,"cookies":false,"type":"","demo":"health\/get-queue-builds.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-builds.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/certificates":{"get":{"summary":"Get certificates queue","operationId":"healthGetQueueCertificates","tags":["health"],"description":"Get the number of certificates that are waiting to be issued against [Letsencrypt](https:\/\/letsencrypt.org\/) in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueCertificates","weight":129,"cookies":false,"type":"","demo":"health\/get-queue-certificates.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-certificates.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/databases":{"get":{"summary":"Get databases queue","operationId":"healthGetQueueDatabases","tags":["health"],"description":"Get the number of database changes that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueDatabases","weight":131,"cookies":false,"type":"","demo":"health\/get-queue-databases.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-databases.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"name","description":"Queue name for which to check the queue size","required":false,"schema":{"type":"string","x-example":"[NAME]","default":"database_db_main"},"in":"query"},{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/deletes":{"get":{"summary":"Get deletes queue","operationId":"healthGetQueueDeletes","tags":["health"],"description":"Get the number of background destructive changes that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueDeletes","weight":132,"cookies":false,"type":"","demo":"health\/get-queue-deletes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-deletes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/failed\/{name}":{"get":{"summary":"Get number of failed queue jobs","operationId":"healthGetFailedJobs","tags":["health"],"description":"Returns the amount of failed jobs in a given queue.\n","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getFailedJobs","weight":139,"cookies":false,"type":"","demo":"health\/get-failed-jobs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-failed-queue-jobs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"name","description":"The name of the queue","required":true,"schema":{"type":"string","x-example":"v1-database","enum":["v1-database","v1-deletes","v1-audits","v1-mails","v1-functions","v1-usage","webhooksv1","v1-certificates","v1-builds","v1-messaging","v1-migrations","hamsterv1"],"x-enum-name":null,"x-enum-keys":[]},"in":"path"},{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/functions":{"get":{"summary":"Get functions queue","operationId":"healthGetQueueFunctions","tags":["health"],"description":"","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueFunctions","weight":136,"cookies":false,"type":"","demo":"health\/get-queue-functions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-functions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/logs":{"get":{"summary":"Get logs queue","operationId":"healthGetQueueLogs","tags":["health"],"description":"Get the number of logs that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueLogs","weight":127,"cookies":false,"type":"","demo":"health\/get-queue-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/mails":{"get":{"summary":"Get mails queue","operationId":"healthGetQueueMails","tags":["health"],"description":"Get the number of mails that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueMails","weight":133,"cookies":false,"type":"","demo":"health\/get-queue-mails.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-mails.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/messaging":{"get":{"summary":"Get messaging queue","operationId":"healthGetQueueMessaging","tags":["health"],"description":"Get the number of messages that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueMessaging","weight":134,"cookies":false,"type":"","demo":"health\/get-queue-messaging.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-messaging.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/migrations":{"get":{"summary":"Get migrations queue","operationId":"healthGetQueueMigrations","tags":["health"],"description":"Get the number of migrations that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueMigrations","weight":135,"cookies":false,"type":"","demo":"health\/get-queue-migrations.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-migrations.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/webhooks":{"get":{"summary":"Get webhooks queue","operationId":"healthGetQueueWebhooks","tags":["health"],"description":"Get the number of webhooks that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueWebhooks","weight":126,"cookies":false,"type":"","demo":"health\/get-queue-webhooks.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-webhooks.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/storage\/local":{"get":{"summary":"Get local storage","operationId":"healthGetStorageLocal","tags":["health"],"description":"Check the Appwrite local storage device is up and connection is successful.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"getStorageLocal","weight":137,"cookies":false,"type":"","demo":"health\/get-storage-local.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-storage-local.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/time":{"get":{"summary":"Get time","operationId":"healthGetTime","tags":["health"],"description":"Check the Appwrite server time is synced with Google remote NTP server. We use this technology to smoothly handle leap seconds with no disruptive events. The [Network Time Protocol](https:\/\/en.wikipedia.org\/wiki\/Network_Time_Protocol) (NTP) is used by hundreds of millions of computers and devices to synchronize their clocks over the Internet. If your computer sets its own clock, it likely uses NTP.","responses":{"200":{"description":"Health Time","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthTime"}}}}},"x-appwrite":{"method":"getTime","weight":125,"cookies":false,"type":"","demo":"health\/get-time.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-time.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/locale":{"get":{"summary":"Get user locale","operationId":"localeGet","tags":["locale"],"description":"Get the current user location based on IP. Returns an object with user country code, country name, continent name, continent code, ip address and suggested currency. You can use the locale header to get the data in a supported language.\n\n([IP Geolocation by DB-IP](https:\/\/db-ip.com))","responses":{"200":{"description":"Locale","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/locale"}}}}},"x-appwrite":{"method":"get","weight":111,"cookies":false,"type":"","demo":"locale\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-locale.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/localed","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}]}},"\/locale\/codes":{"get":{"summary":"List Locale Codes","operationId":"localeListCodes","tags":["locale"],"description":"List of all locale codes in [ISO 639-1](https:\/\/en.wikipedia.org\/wiki\/List_of_ISO_639-1_codes).","responses":{"200":{"description":"Locale codes list","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/localeCodeList"}}}}},"x-appwrite":{"method":"listCodes","weight":112,"cookies":false,"type":"","demo":"locale\/list-codes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-locale-codes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/localeCode","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}]}},"\/locale\/continents":{"get":{"summary":"List continents","operationId":"localeListContinents","tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/continentList"}}}}},"x-appwrite":{"method":"listContinents","weight":116,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/continents","offline-key":"","offline-response-key":"code","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List countries","operationId":"localeListCountries","tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountries","weight":113,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/countries","offline-key":"","offline-response-key":"code","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU countries","operationId":"localeListCountriesEU","tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountriesEU","weight":114,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/countries\/eu","offline-key":"","offline-response-key":"code","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List countries phone codes","operationId":"localeListCountriesPhones","tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/phoneList"}}}}},"x-appwrite":{"method":"listCountriesPhones","weight":115,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/countries\/phones","offline-key":"","offline-response-key":"countryCode","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List currencies","operationId":"localeListCurrencies","tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/currencyList"}}}}},"x-appwrite":{"method":"listCurrencies","weight":117,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/currencies","offline-key":"","offline-response-key":"code","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List languages","operationId":"localeListLanguages","tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/languageList"}}}}},"x-appwrite":{"method":"listLanguages","weight":118,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/languages","offline-key":"","offline-response-key":"code","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}]}},"\/messaging\/messages":{"get":{"summary":"List messages","operationId":"messagingListMessages","tags":["messaging"],"description":"","responses":{"200":{"description":"Message list","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/messageList"}}}}},"x-appwrite":{"method":"listMessages","weight":363,"cookies":false,"type":"","demo":"messaging\/list-messages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-messages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: scheduledAt, deliveredAt, deliveredTotal, status, description, providerType","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]}},"\/messaging\/messages\/email":{"post":{"summary":"Create an email.","operationId":"messagingCreateEmail","tags":["messaging"],"description":"","responses":{"201":{"description":"Message","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/message"}}}}},"x-appwrite":{"method":"createEmail","weight":360,"cookies":false,"type":"","demo":"messaging\/create-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"messageId":{"type":"string","description":"Message ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[MESSAGE_ID]"},"subject":{"type":"string","description":"Email Subject.","x-example":"[SUBJECT]"},"content":{"type":"string","description":"Email Content.","x-example":"[CONTENT]"},"topics":{"type":"array","description":"List of Topic IDs.","x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","x-example":null,"items":{"type":"string"}},"cc":{"type":"array","description":"Array of target IDs to be added as CC.","x-example":null,"items":{"type":"string"}},"bcc":{"type":"array","description":"Array of target IDs to be added as BCC.","x-example":null,"items":{"type":"string"}},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":"MessageStatus","x-enum-keys":[]},"html":{"type":"boolean","description":"Is content of type HTML","x-example":false},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","x-example":null}},"required":["messageId","subject","content"]}}}}}},"\/messaging\/messages\/email\/{messageId}":{"patch":{"summary":"Update an email.","operationId":"messagingUpdateEmail","tags":["messaging"],"description":"","responses":{"200":{"description":"Message","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/message"}}}}},"x-appwrite":{"method":"updateEmail","weight":367,"cookies":false,"type":"","demo":"messaging\/update-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"schema":{"type":"string","x-example":"[MESSAGE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"topics":{"type":"array","description":"List of Topic IDs.","x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","x-example":null,"items":{"type":"string"}},"subject":{"type":"string","description":"Email Subject.","x-example":"[SUBJECT]"},"content":{"type":"string","description":"Email Content.","x-example":"[CONTENT]"},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":"MessageStatus","x-enum-keys":[]},"html":{"type":"boolean","description":"Is content of type HTML","x-example":false},"cc":{"type":"array","description":"Array of target IDs to be added as CC.","x-example":null,"items":{"type":"string"}},"bcc":{"type":"array","description":"Array of target IDs to be added as BCC.","x-example":null,"items":{"type":"string"}},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","x-example":null}}}}}}}},"\/messaging\/messages\/push":{"post":{"summary":"Create a push notification.","operationId":"messagingCreatePush","tags":["messaging"],"description":"","responses":{"201":{"description":"Message","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/message"}}}}},"x-appwrite":{"method":"createPush","weight":362,"cookies":false,"type":"","demo":"messaging\/create-push.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-push-notification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"messageId":{"type":"string","description":"Message ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[MESSAGE_ID]"},"title":{"type":"string","description":"Title for push notification.","x-example":"[TITLE]"},"body":{"type":"string","description":"Body for push notification.","x-example":"[BODY]"},"topics":{"type":"array","description":"List of Topic IDs.","x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","x-example":null,"items":{"type":"string"}},"data":{"type":"object","description":"Additional Data for push notification.","x-example":"{}"},"action":{"type":"string","description":"Action for push notification.","x-example":"[ACTION]"},"icon":{"type":"string","description":"Icon for push notification. Available only for Android and Web Platform.","x-example":"[ICON]"},"sound":{"type":"string","description":"Sound for push notification. Available only for Android and IOS Platform.","x-example":"[SOUND]"},"color":{"type":"string","description":"Color for push notification. Available only for Android Platform.","x-example":"[COLOR]"},"tag":{"type":"string","description":"Tag for push notification. Available only for Android Platform.","x-example":"[TAG]"},"badge":{"type":"string","description":"Badge for push notification. Available only for IOS Platform.","x-example":"[BADGE]"},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":"MessageStatus","x-enum-keys":[]},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","x-example":null}},"required":["messageId","title","body"]}}}}}},"\/messaging\/messages\/push\/{messageId}":{"patch":{"summary":"Update a push notification.","operationId":"messagingUpdatePush","tags":["messaging"],"description":"","responses":{"200":{"description":"Message","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/message"}}}}},"x-appwrite":{"method":"updatePush","weight":369,"cookies":false,"type":"","demo":"messaging\/update-push.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-push-notification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"schema":{"type":"string","x-example":"[MESSAGE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"topics":{"type":"array","description":"List of Topic IDs.","x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","x-example":null,"items":{"type":"string"}},"title":{"type":"string","description":"Title for push notification.","x-example":"[TITLE]"},"body":{"type":"string","description":"Body for push notification.","x-example":"[BODY]"},"data":{"type":"object","description":"Additional Data for push notification.","x-example":"{}"},"action":{"type":"string","description":"Action for push notification.","x-example":"[ACTION]"},"icon":{"type":"string","description":"Icon for push notification. Available only for Android and Web platforms.","x-example":"[ICON]"},"sound":{"type":"string","description":"Sound for push notification. Available only for Android and iOS platforms.","x-example":"[SOUND]"},"color":{"type":"string","description":"Color for push notification. Available only for Android platforms.","x-example":"[COLOR]"},"tag":{"type":"string","description":"Tag for push notification. Available only for Android platforms.","x-example":"[TAG]"},"badge":{"type":"integer","description":"Badge for push notification. Available only for iOS platforms.","x-example":null},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":"MessageStatus","x-enum-keys":[]},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","x-example":null}}}}}}}},"\/messaging\/messages\/sms":{"post":{"summary":"Create an SMS.","operationId":"messagingCreateSMS","tags":["messaging"],"description":"","responses":{"201":{"description":"Message","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/message"}}}}},"x-appwrite":{"method":"createSMS","weight":361,"cookies":false,"type":"","demo":"messaging\/create-s-m-s.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-sms.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"messageId":{"type":"string","description":"Message ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[MESSAGE_ID]"},"content":{"type":"string","description":"SMS Content.","x-example":"[CONTENT]"},"topics":{"type":"array","description":"List of Topic IDs.","x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","x-example":null,"items":{"type":"string"}},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":"MessageStatus","x-enum-keys":[]},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","x-example":null}},"required":["messageId","content"]}}}}}},"\/messaging\/messages\/sms\/{messageId}":{"patch":{"summary":"Update an SMS.","operationId":"messagingUpdateSMS","tags":["messaging"],"description":"","responses":{"200":{"description":"Message","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/message"}}}}},"x-appwrite":{"method":"updateSMS","weight":368,"cookies":false,"type":"","demo":"messaging\/update-s-m-s.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"schema":{"type":"string","x-example":"[MESSAGE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"topics":{"type":"array","description":"List of Topic IDs.","x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","x-example":null,"items":{"type":"string"}},"content":{"type":"string","description":"Email Content.","x-example":"[CONTENT]"},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":"MessageStatus","x-enum-keys":[]},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","x-example":null}}}}}}}},"\/messaging\/messages\/{messageId}":{"get":{"summary":"Get a message","operationId":"messagingGetMessage","tags":["messaging"],"description":"","responses":{"200":{"description":"Message","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/message"}}}}},"x-appwrite":{"method":"getMessage","weight":366,"cookies":false,"type":"","demo":"messaging\/get-message.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/get-message.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"schema":{"type":"string","x-example":"[MESSAGE_ID]"},"in":"path"}]},"delete":{"summary":"Delete a message","operationId":"messagingDelete","tags":["messaging"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":370,"cookies":false,"type":"","demo":"messaging\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-message.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"schema":{"type":"string","x-example":"[MESSAGE_ID]"},"in":"path"}]}},"\/messaging\/messages\/{messageId}\/logs":{"get":{"summary":"List message logs","operationId":"messagingListMessageLogs","tags":["messaging"],"description":"","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listMessageLogs","weight":364,"cookies":false,"type":"","demo":"messaging\/list-message-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/messages\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"schema":{"type":"string","x-example":"[MESSAGE_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/messaging\/messages\/{messageId}\/targets":{"get":{"summary":"List message targets","operationId":"messagingListTargets","tags":["messaging"],"description":"List the targets associated with a message as set via the targets attribute.","responses":{"200":{"description":"Target list","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/targetList"}}}}},"x-appwrite":{"method":"listTargets","weight":365,"cookies":false,"type":"","demo":"messaging\/list-targets.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-message-targets.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"schema":{"type":"string","x-example":"[MESSAGE_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, providerId, identifier, providerType","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/messaging\/providers":{"get":{"summary":"List providers","operationId":"messagingListProviders","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider list","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/providerList"}}}}},"x-appwrite":{"method":"listProviders","weight":335,"cookies":false,"type":"","demo":"messaging\/list-providers.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-providers.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, provider, type, enabled","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]}},"\/messaging\/providers\/apns":{"post":{"summary":"Create APNS provider","operationId":"messagingCreateAPNSProvider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createAPNSProvider","weight":334,"cookies":false,"type":"","demo":"messaging\/create-a-p-n-s-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-apns-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"authKey":{"type":"string","description":"APNS authentication key.","x-example":"[AUTH_KEY]"},"authKeyId":{"type":"string","description":"APNS authentication key ID.","x-example":"[AUTH_KEY_ID]"},"teamId":{"type":"string","description":"APNS team ID.","x-example":"[TEAM_ID]"},"bundleId":{"type":"string","description":"APNS bundle ID.","x-example":"[BUNDLE_ID]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name"]}}}}}},"\/messaging\/providers\/apns\/{providerId}":{"patch":{"summary":"Update APNS provider","operationId":"messagingUpdateAPNSProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateAPNSProvider","weight":347,"cookies":false,"type":"","demo":"messaging\/update-a-p-n-s-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-apns-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"authKey":{"type":"string","description":"APNS authentication key.","x-example":"[AUTH_KEY]"},"authKeyId":{"type":"string","description":"APNS authentication key ID.","x-example":"[AUTH_KEY_ID]"},"teamId":{"type":"string","description":"APNS team ID.","x-example":"[TEAM_ID]"},"bundleId":{"type":"string","description":"APNS bundle ID.","x-example":"[BUNDLE_ID]"}}}}}}}},"\/messaging\/providers\/fcm":{"post":{"summary":"Create FCM provider","operationId":"messagingCreateFCMProvider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createFCMProvider","weight":333,"cookies":false,"type":"","demo":"messaging\/create-f-c-m-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-fcm-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"serviceAccountJSON":{"type":"object","description":"FCM service account JSON.","x-example":"{}"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name"]}}}}}},"\/messaging\/providers\/fcm\/{providerId}":{"patch":{"summary":"Update FCM provider","operationId":"messagingUpdateFCMProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateFCMProvider","weight":346,"cookies":false,"type":"","demo":"messaging\/update-f-c-m-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-fcm-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"serviceAccountJSON":{"type":"object","description":"FCM service account JSON.","x-example":"{}"}}}}}}}},"\/messaging\/providers\/mailgun":{"post":{"summary":"Create Mailgun provider","operationId":"messagingCreateMailgunProvider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createMailgunProvider","weight":325,"cookies":false,"type":"","demo":"messaging\/create-mailgun-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-mailgun-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"apiKey":{"type":"string","description":"Mailgun API Key.","x-example":"[API_KEY]"},"domain":{"type":"string","description":"Mailgun Domain.","x-example":"[DOMAIN]"},"isEuRegion":{"type":"boolean","description":"Set as EU region.","x-example":false},"fromName":{"type":"string","description":"Sender Name.","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the reply to field for the mail. Default value is sender name. Reply to name must have reply to email as well.","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the reply to field for the mail. Default value is sender email. Reply to email must have reply to name as well.","x-example":"email@example.com"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name"]}}}}}},"\/messaging\/providers\/mailgun\/{providerId}":{"patch":{"summary":"Update Mailgun provider","operationId":"messagingUpdateMailgunProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateMailgunProvider","weight":338,"cookies":false,"type":"","demo":"messaging\/update-mailgun-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-mailgun-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"apiKey":{"type":"string","description":"Mailgun API Key.","x-example":"[API_KEY]"},"domain":{"type":"string","description":"Mailgun Domain.","x-example":"[DOMAIN]"},"isEuRegion":{"type":"boolean","description":"Set as EU region.","x-example":false},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"fromName":{"type":"string","description":"Sender Name.","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the reply to field for the mail. Default value is sender name.","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the reply to field for the mail. Default value is sender email.","x-example":"[REPLY_TO_EMAIL]"}}}}}}}},"\/messaging\/providers\/msg91":{"post":{"summary":"Create Msg91 provider","operationId":"messagingCreateMsg91Provider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createMsg91Provider","weight":328,"cookies":false,"type":"","demo":"messaging\/create-msg91provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-msg91-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"senderId":{"type":"string","description":"Msg91 Sender ID.","x-example":"[SENDER_ID]"},"authKey":{"type":"string","description":"Msg91 Auth Key.","x-example":"[AUTH_KEY]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name"]}}}}}},"\/messaging\/providers\/msg91\/{providerId}":{"patch":{"summary":"Update Msg91 provider","operationId":"messagingUpdateMsg91Provider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateMsg91Provider","weight":341,"cookies":false,"type":"","demo":"messaging\/update-msg91provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-msg91-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"senderId":{"type":"string","description":"Msg91 Sender ID.","x-example":"[SENDER_ID]"},"authKey":{"type":"string","description":"Msg91 Auth Key.","x-example":"[AUTH_KEY]"},"from":{"type":"string","description":"Sender number.","x-example":"[FROM]"}}}}}}}},"\/messaging\/providers\/sendgrid":{"post":{"summary":"Create Sendgrid provider","operationId":"messagingCreateSendgridProvider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createSendgridProvider","weight":326,"cookies":false,"type":"","demo":"messaging\/create-sendgrid-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-sengrid-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"apiKey":{"type":"string","description":"Sendgrid API key.","x-example":"[API_KEY]"},"fromName":{"type":"string","description":"Sender Name.","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the reply to field for the mail. Default value is sender name.","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the reply to field for the mail. Default value is sender email.","x-example":"email@example.com"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name"]}}}}}},"\/messaging\/providers\/sendgrid\/{providerId}":{"patch":{"summary":"Update Sendgrid provider","operationId":"messagingUpdateSendgridProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateSendgridProvider","weight":339,"cookies":false,"type":"","demo":"messaging\/update-sendgrid-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-sendgrid-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"apiKey":{"type":"string","description":"Sendgrid API key.","x-example":"[API_KEY]"},"fromName":{"type":"string","description":"Sender Name.","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the Reply To field for the mail. Default value is Sender Name.","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the Reply To field for the mail. Default value is Sender Email.","x-example":"[REPLY_TO_EMAIL]"}}}}}}}},"\/messaging\/providers\/smtp":{"post":{"summary":"Create SMTP provider","operationId":"messagingCreateSMTPProvider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createSMTPProvider","weight":327,"cookies":false,"type":"","demo":"messaging\/create-s-m-t-p-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-smtp-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"host":{"type":"string","description":"SMTP hosts. Either a single hostname or multiple semicolon-delimited hostnames. You can also specify a different port for each host by using this format: [hostname:port] (e.g. \"smtp1.example.com:25;smtp2.example.com\"). You can also specify encryption type, for example: (e.g. \"tls:\/\/smtp1.example.com:587;ssl:\/\/smtp2.example.com:465\"). Hosts will be tried in order.","x-example":"[HOST]"},"port":{"type":"integer","description":"The default SMTP server port.","x-example":1},"username":{"type":"string","description":"Authentication username.","x-example":"[USERNAME]"},"password":{"type":"string","description":"Authentication password.","x-example":"[PASSWORD]"},"encryption":{"type":"string","description":"Encryption type. Can be omitted, 'ssl', or 'tls'","x-example":"none","enum":["none","ssl","tls"],"x-enum-name":"SMTPEncryption","x-enum-keys":[]},"autoTLS":{"type":"boolean","description":"Enable SMTP AutoTLS feature.","x-example":false},"mailer":{"type":"string","description":"The value to use for the X-Mailer header.","x-example":"[MAILER]"},"fromName":{"type":"string","description":"Sender Name.","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the reply to field for the mail. Default value is sender name.","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the reply to field for the mail. Default value is sender email.","x-example":"email@example.com"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name","host"]}}}}}},"\/messaging\/providers\/smtp\/{providerId}":{"patch":{"summary":"Update SMTP provider","operationId":"messagingUpdateSMTPProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateSMTPProvider","weight":340,"cookies":false,"type":"","demo":"messaging\/update-s-m-t-p-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-smtp-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"host":{"type":"string","description":"SMTP hosts. Either a single hostname or multiple semicolon-delimited hostnames. You can also specify a different port for each host by using this format: [hostname:port] (e.g. \"smtp1.example.com:25;smtp2.example.com\"). You can also specify encryption type, for example: (e.g. \"tls:\/\/smtp1.example.com:587;ssl:\/\/smtp2.example.com:465\"). Hosts will be tried in order.","x-example":"[HOST]"},"port":{"type":"integer","description":"SMTP port.","x-example":1},"username":{"type":"string","description":"Authentication username.","x-example":"[USERNAME]"},"password":{"type":"string","description":"Authentication password.","x-example":"[PASSWORD]"},"encryption":{"type":"string","description":"Encryption type. Can be 'ssl' or 'tls'","x-example":"none","enum":["none","ssl","tls"],"x-enum-name":"SMTPEncryption","x-enum-keys":[]},"autoTLS":{"type":"boolean","description":"Enable SMTP AutoTLS feature.","x-example":false},"mailer":{"type":"string","description":"The value to use for the X-Mailer header.","x-example":"[MAILER]"},"fromName":{"type":"string","description":"Sender Name.","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the Reply To field for the mail. Default value is Sender Name.","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the Reply To field for the mail. Default value is Sender Email.","x-example":"[REPLY_TO_EMAIL]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}}}}}}}},"\/messaging\/providers\/telesign":{"post":{"summary":"Create Telesign provider","operationId":"messagingCreateTelesignProvider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createTelesignProvider","weight":329,"cookies":false,"type":"","demo":"messaging\/create-telesign-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-telesign-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"customerId":{"type":"string","description":"Telesign customer ID.","x-example":"[CUSTOMER_ID]"},"apiKey":{"type":"string","description":"Telesign API key.","x-example":"[API_KEY]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name"]}}}}}},"\/messaging\/providers\/telesign\/{providerId}":{"patch":{"summary":"Update Telesign provider","operationId":"messagingUpdateTelesignProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateTelesignProvider","weight":342,"cookies":false,"type":"","demo":"messaging\/update-telesign-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-telesign-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"customerId":{"type":"string","description":"Telesign customer ID.","x-example":"[CUSTOMER_ID]"},"apiKey":{"type":"string","description":"Telesign API key.","x-example":"[API_KEY]"},"from":{"type":"string","description":"Sender number.","x-example":"[FROM]"}}}}}}}},"\/messaging\/providers\/textmagic":{"post":{"summary":"Create Textmagic provider","operationId":"messagingCreateTextmagicProvider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createTextmagicProvider","weight":330,"cookies":false,"type":"","demo":"messaging\/create-textmagic-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-textmagic-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"username":{"type":"string","description":"Textmagic username.","x-example":"[USERNAME]"},"apiKey":{"type":"string","description":"Textmagic apiKey.","x-example":"[API_KEY]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name"]}}}}}},"\/messaging\/providers\/textmagic\/{providerId}":{"patch":{"summary":"Update Textmagic provider","operationId":"messagingUpdateTextmagicProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateTextmagicProvider","weight":343,"cookies":false,"type":"","demo":"messaging\/update-textmagic-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-textmagic-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"username":{"type":"string","description":"Textmagic username.","x-example":"[USERNAME]"},"apiKey":{"type":"string","description":"Textmagic apiKey.","x-example":"[API_KEY]"},"from":{"type":"string","description":"Sender number.","x-example":"[FROM]"}}}}}}}},"\/messaging\/providers\/twilio":{"post":{"summary":"Create Twilio provider","operationId":"messagingCreateTwilioProvider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createTwilioProvider","weight":331,"cookies":false,"type":"","demo":"messaging\/create-twilio-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-twilio-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"accountSid":{"type":"string","description":"Twilio account secret ID.","x-example":"[ACCOUNT_SID]"},"authToken":{"type":"string","description":"Twilio authentication token.","x-example":"[AUTH_TOKEN]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name"]}}}}}},"\/messaging\/providers\/twilio\/{providerId}":{"patch":{"summary":"Update Twilio provider","operationId":"messagingUpdateTwilioProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateTwilioProvider","weight":344,"cookies":false,"type":"","demo":"messaging\/update-twilio-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-twilio-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"accountSid":{"type":"string","description":"Twilio account secret ID.","x-example":"[ACCOUNT_SID]"},"authToken":{"type":"string","description":"Twilio authentication token.","x-example":"[AUTH_TOKEN]"},"from":{"type":"string","description":"Sender number.","x-example":"[FROM]"}}}}}}}},"\/messaging\/providers\/vonage":{"post":{"summary":"Create Vonage provider","operationId":"messagingCreateVonageProvider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createVonageProvider","weight":332,"cookies":false,"type":"","demo":"messaging\/create-vonage-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-vonage-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"apiKey":{"type":"string","description":"Vonage API key.","x-example":"[API_KEY]"},"apiSecret":{"type":"string","description":"Vonage API secret.","x-example":"[API_SECRET]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name"]}}}}}},"\/messaging\/providers\/vonage\/{providerId}":{"patch":{"summary":"Update Vonage provider","operationId":"messagingUpdateVonageProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateVonageProvider","weight":345,"cookies":false,"type":"","demo":"messaging\/update-vonage-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-vonage-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"apiKey":{"type":"string","description":"Vonage API key.","x-example":"[API_KEY]"},"apiSecret":{"type":"string","description":"Vonage API secret.","x-example":"[API_SECRET]"},"from":{"type":"string","description":"Sender number.","x-example":"[FROM]"}}}}}}}},"\/messaging\/providers\/{providerId}":{"get":{"summary":"Get provider","operationId":"messagingGetProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"getProvider","weight":337,"cookies":false,"type":"","demo":"messaging\/get-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/get-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}]},"delete":{"summary":"Delete provider","operationId":"messagingDeleteProvider","tags":["messaging"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteProvider","weight":348,"cookies":false,"type":"","demo":"messaging\/delete-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}]}},"\/messaging\/providers\/{providerId}\/logs":{"get":{"summary":"List provider logs","operationId":"messagingListProviderLogs","tags":["messaging"],"description":"","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listProviderLogs","weight":336,"cookies":false,"type":"","demo":"messaging\/list-provider-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/providers\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/messaging\/subscribers\/{subscriberId}\/logs":{"get":{"summary":"List subscriber logs","operationId":"messagingListSubscriberLogs","tags":["messaging"],"description":"","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listSubscriberLogs","weight":357,"cookies":false,"type":"","demo":"messaging\/list-subscriber-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/subscribers\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"subscriberId","description":"Subscriber ID.","required":true,"schema":{"type":"string","x-example":"[SUBSCRIBER_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/messaging\/topics":{"get":{"summary":"List topics.","operationId":"messagingListTopics","tags":["messaging"],"description":"","responses":{"200":{"description":"Topic list","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/topicList"}}}}},"x-appwrite":{"method":"listTopics","weight":350,"cookies":false,"type":"","demo":"messaging\/list-topics.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-topics.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, description, total","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create a topic.","operationId":"messagingCreateTopic","tags":["messaging"],"description":"","responses":{"201":{"description":"Topic","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/topic"}}}}},"x-appwrite":{"method":"createTopic","weight":349,"cookies":false,"type":"","demo":"messaging\/create-topic.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-topic.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"topicId":{"type":"string","description":"Topic ID. Choose a custom Topic ID or a new Topic ID.","x-example":"[TOPIC_ID]"},"name":{"type":"string","description":"Topic Name.","x-example":"[NAME]"},"subscribe":{"type":"array","description":"An array of role strings with subscribe permission. By default all users are granted with any subscribe permission. [learn more about roles](https:\/\/appwrite.io\/docs\/permissions#permission-roles). Maximum of 100 roles are allowed, each 64 characters long.","x-example":"[\"any\"]","items":{"type":"string"}}},"required":["topicId","name"]}}}}}},"\/messaging\/topics\/{topicId}":{"get":{"summary":"Get a topic.","operationId":"messagingGetTopic","tags":["messaging"],"description":"","responses":{"200":{"description":"Topic","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/topic"}}}}},"x-appwrite":{"method":"getTopic","weight":352,"cookies":false,"type":"","demo":"messaging\/get-topic.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/get-topic.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID.","required":true,"schema":{"type":"string","x-example":"[TOPIC_ID]"},"in":"path"}]},"patch":{"summary":"Update a topic.","operationId":"messagingUpdateTopic","tags":["messaging"],"description":"","responses":{"200":{"description":"Topic","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/topic"}}}}},"x-appwrite":{"method":"updateTopic","weight":353,"cookies":false,"type":"","demo":"messaging\/update-topic.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-topic.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID.","required":true,"schema":{"type":"string","x-example":"[TOPIC_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Topic Name.","x-example":"[NAME]"}}}}}}},"delete":{"summary":"Delete a topic.","operationId":"messagingDeleteTopic","tags":["messaging"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteTopic","weight":354,"cookies":false,"type":"","demo":"messaging\/delete-topic.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-topic.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID.","required":true,"schema":{"type":"string","x-example":"[TOPIC_ID]"},"in":"path"}]}},"\/messaging\/topics\/{topicId}\/logs":{"get":{"summary":"List topic logs","operationId":"messagingListTopicLogs","tags":["messaging"],"description":"","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listTopicLogs","weight":351,"cookies":false,"type":"","demo":"messaging\/list-topic-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/topics\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID.","required":true,"schema":{"type":"string","x-example":"[TOPIC_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/messaging\/topics\/{topicId}\/subscribers":{"get":{"summary":"List subscribers.","operationId":"messagingListSubscribers","tags":["messaging"],"description":"","responses":{"200":{"description":"Subscriber list","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/subscriberList"}}}}},"x-appwrite":{"method":"listSubscribers","weight":356,"cookies":false,"type":"","demo":"messaging\/list-subscribers.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-subscribers.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID subscribed to.","required":true,"schema":{"type":"string","x-example":"[TOPIC_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, provider, type, enabled","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create a subscriber.","operationId":"messagingCreateSubscriber","tags":["messaging"],"description":"","responses":{"201":{"description":"Subscriber","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/subscriber"}}}}},"x-appwrite":{"method":"createSubscriber","weight":355,"cookies":false,"type":"","demo":"messaging\/create-subscriber.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-subscriber.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.write","platforms":["server","client","console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[],"Session":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID to subscribe to.","required":true,"schema":{"type":"string","x-example":"[TOPIC_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"subscriberId":{"type":"string","description":"Subscriber ID. Choose a custom Subscriber ID or a new Subscriber ID.","x-example":"[SUBSCRIBER_ID]"},"targetId":{"type":"string","description":"Target ID. The target ID to link to the specified Topic ID.","x-example":"[TARGET_ID]"}},"required":["subscriberId","targetId"]}}}}}},"\/messaging\/topics\/{topicId}\/subscribers\/{subscriberId}":{"get":{"summary":"Get a subscriber.","operationId":"messagingGetSubscriber","tags":["messaging"],"description":"","responses":{"200":{"description":"Subscriber","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/subscriber"}}}}},"x-appwrite":{"method":"getSubscriber","weight":358,"cookies":false,"type":"","demo":"messaging\/get-subscriber.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/get-subscriber.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID subscribed to.","required":true,"schema":{"type":"string","x-example":"[TOPIC_ID]"},"in":"path"},{"name":"subscriberId","description":"Subscriber ID.","required":true,"schema":{"type":"string","x-example":"[SUBSCRIBER_ID]"},"in":"path"}]},"delete":{"summary":"Delete a subscriber.","operationId":"messagingDeleteSubscriber","tags":["messaging"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSubscriber","weight":359,"cookies":false,"type":"","demo":"messaging\/delete-subscriber.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-subscriber.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.write","platforms":["server","client","console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[],"Session":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID subscribed to.","required":true,"schema":{"type":"string","x-example":"[TOPIC_ID]"},"in":"path"},{"name":"subscriberId","description":"Subscriber ID.","required":true,"schema":{"type":"string","x-example":"[SUBSCRIBER_ID]"},"in":"path"}]}},"\/storage\/buckets":{"get":{"summary":"List buckets","operationId":"storageListBuckets","tags":["storage"],"description":"Get a list of all the storage buckets. You can use the query params to filter your results.","responses":{"200":{"description":"Buckets List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/bucketList"}}}}},"x-appwrite":{"method":"listBuckets","weight":188,"cookies":false,"type":"","demo":"storage\/list-buckets.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/list-buckets.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: enabled, name, fileSecurity, maximumFileSize, encryption, antivirus","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create bucket","operationId":"storageCreateBucket","tags":["storage"],"description":"Create a new storage bucket.","responses":{"201":{"description":"Bucket","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/bucket"}}}}},"x-appwrite":{"method":"createBucket","weight":187,"cookies":false,"type":"","demo":"storage\/create-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"bucketId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, no user is granted with any permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":false},"enabled":{"type":"boolean","description":"Is bucket enabled? When set to 'disabled', users cannot access the files in this bucket but Server SDKs with and API key can still access the bucket. No files are lost when this is toggled.","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB.","x-example":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","x-example":"none","enum":["none","gzip","zstd"],"x-enum-name":null,"x-enum-keys":[]},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","x-example":false}},"required":["bucketId","name"]}}}}}},"\/storage\/buckets\/{bucketId}":{"get":{"summary":"Get bucket","operationId":"storageGetBucket","tags":["storage"],"description":"Get a storage bucket by its unique ID. This endpoint response returns a JSON object with the storage bucket metadata.","responses":{"200":{"description":"Bucket","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/bucket"}}}}},"x-appwrite":{"method":"getBucket","weight":189,"cookies":false,"type":"","demo":"storage\/get-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"bucketId","description":"Bucket unique ID.","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"}]},"put":{"summary":"Update bucket","operationId":"storageUpdateBucket","tags":["storage"],"description":"Update a storage bucket by its unique ID.","responses":{"200":{"description":"Bucket","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/bucket"}}}}},"x-appwrite":{"method":"updateBucket","weight":190,"cookies":false,"type":"","demo":"storage\/update-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"bucketId","description":"Bucket unique ID.","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Bucket name","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":false},"enabled":{"type":"boolean","description":"Is bucket enabled? When set to 'disabled', users cannot access the files in this bucket but Server SDKs with and API key can still access the bucket. No files are lost when this is toggled.","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB.","x-example":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","x-example":"none","enum":["none","gzip","zstd"],"x-enum-name":null,"x-enum-keys":[]},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","x-example":false}},"required":["name"]}}}}},"delete":{"summary":"Delete bucket","operationId":"storageDeleteBucket","tags":["storage"],"description":"Delete a storage bucket by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteBucket","weight":191,"cookies":false,"type":"","demo":"storage\/delete-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"bucketId","description":"Bucket unique ID.","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files":{"get":{"summary":"List files","operationId":"storageListFiles","tags":["storage"],"description":"Get a list of all the user files. You can use the query params to filter your results.","responses":{"200":{"description":"Files List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/fileList"}}}}},"x-appwrite":{"method":"listFiles","weight":193,"cookies":false,"type":"","demo":"storage\/list-files.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/list-files.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create file","operationId":"storageCreateFile","tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"createFile","weight":192,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"}],"requestBody":{"content":{"multipart\/form-data":{"schema":{"type":"object","properties":{"fileId":{"type":"string","description":"File ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[FILE_ID]","x-upload-id":true},"file":{"type":"string","description":"Binary file. Appwrite SDKs provide helpers to handle file input. [Learn about file input](https:\/\/appwrite.io\/docs\/storage#file-input).","x-example":null},"permissions":{"type":"array","description":"An array of permission strings. By default, only the current user is granted all permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["fileId","file"]}}}}}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get file","operationId":"storageGetFile","tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"getFile","weight":194,"cookies":false,"type":"","demo":"storage\/get-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File ID.","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"}]},"put":{"summary":"Update file","operationId":"storageUpdateFile","tags":["storage"],"description":"Update a file by its unique ID. Only users with write permissions have access to update this resource.","responses":{"200":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"updateFile","weight":198,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File unique ID.","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Name of the file","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission string. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":199,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File ID.","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/download":{"get":{"summary":"Get file for download","operationId":"storageGetFileDownload","tags":["storage"],"description":"Get a file content by its unique ID. The endpoint response return with a 'Content-Disposition: attachment' header that tells the browser to start downloading the file to user downloads directory.","responses":{"200":{"description":"File"}},"x-appwrite":{"method":"getFileDownload","weight":196,"cookies":false,"type":"location","demo":"storage\/get-file-download.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-download.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File ID.","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/preview":{"get":{"summary":"Get file preview","operationId":"storageGetFilePreview","tags":["storage"],"description":"Get a file preview image. Currently, this method supports preview for image files (jpg, png, and gif), other supported formats, like pdf, docs, slides, and spreadsheets, will return the file icon image. You can also pass query string arguments for cutting and resizing your preview image. Preview is supported only for image files smaller than 10MB.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFilePreview","weight":195,"cookies":false,"type":"location","demo":"storage\/get-file-preview.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-preview.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File ID","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"},{"name":"width","description":"Resize preview image width, Pass an integer between 0 to 4000.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 4000.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"gravity","description":"Image crop gravity. Can be one of center,top-left,top,top-right,left,right,bottom-left,bottom,bottom-right","required":false,"schema":{"type":"string","x-example":"center","enum":["center","top-left","top","top-right","left","right","bottom-left","bottom","bottom-right"],"x-enum-name":"ImageGravity","x-enum-keys":[],"default":"center"},"in":"query"},{"name":"quality","description":"Preview image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"borderWidth","description":"Preview image border in pixels. Pass an integer between 0 to 100. Defaults to 0.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"borderColor","description":"Preview image border color. Use a valid HEX color, no # is needed for prefix.","required":false,"schema":{"type":"string","default":""},"in":"query"},{"name":"borderRadius","description":"Preview image border radius in pixels. Pass an integer between 0 to 4000.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"opacity","description":"Preview image opacity. Only works with images having an alpha channel (like png). Pass a number between 0 to 1.","required":false,"schema":{"type":"number","format":"float","x-example":0,"default":1},"in":"query"},{"name":"rotation","description":"Preview image rotation in degrees. Pass an integer between -360 and 360.","required":false,"schema":{"type":"integer","format":"int32","x-example":-360,"default":0},"in":"query"},{"name":"background","description":"Preview image background color. Only works with transparent images (png). Use a valid HEX color, no # is needed for prefix.","required":false,"schema":{"type":"string","default":""},"in":"query"},{"name":"output","description":"Output format type (jpeg, jpg, png, gif and webp).","required":false,"schema":{"type":"string","x-example":"jpg","enum":["jpg","jpeg","gif","png","webp"],"x-enum-name":"ImageFormat","x-enum-keys":[],"default":""},"in":"query"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/view":{"get":{"summary":"Get file for view","operationId":"storageGetFileView","tags":["storage"],"description":"Get a file content by its unique ID. This endpoint is similar to the download method but returns with no 'Content-Disposition: attachment' header.","responses":{"200":{"description":"File"}},"x-appwrite":{"method":"getFileView","weight":197,"cookies":false,"type":"location","demo":"storage\/get-file-view.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-view.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File ID.","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"}]}},"\/teams":{"get":{"summary":"List teams","operationId":"teamsList","tags":["teams"],"description":"Get a list of all the teams in which the current user is a member. You can use the parameters to filter your results.","responses":{"200":{"description":"Teams List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/teamList"}}}}},"x-appwrite":{"method":"list","weight":203,"cookies":false,"type":"","demo":"teams\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-teams.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total, billingPlan","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create team","operationId":"teamsCreate","tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"create","weight":202,"cookies":false,"type":"","demo":"teams\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/create-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"teamId":{"type":"string","description":"Team ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[TEAM_ID]"},"name":{"type":"string","description":"Team name. Max length: 128 chars.","x-example":"[NAME]"},"roles":{"type":"array","description":"Array of strings. Use this param to set the roles in the team for the user who created it. The default role is **owner**. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}}}}},"\/teams\/{teamId}":{"get":{"summary":"Get team","operationId":"teamsGet","tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"get","weight":204,"cookies":false,"type":"","demo":"teams\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams","offline-key":"{teamId}","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}]},"put":{"summary":"Update name","operationId":"teamsUpdateName","tags":["teams"],"description":"Update the team's name by its unique ID.","responses":{"200":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"updateName","weight":206,"cookies":false,"type":"","demo":"teams\/update-name.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-name.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams","offline-key":"{teamId}","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"New team name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["name"]}}}}},"delete":{"summary":"Delete team","operationId":"teamsDelete","tags":["teams"],"description":"Delete a team using its ID. Only team members with the owner role can delete the team.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":208,"cookies":false,"type":"","demo":"teams\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/delete-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}]}},"\/teams\/{teamId}\/memberships":{"get":{"summary":"List team memberships","operationId":"teamsListMemberships","tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"listMemberships","weight":210,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/memberships","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create team membership","operationId":"teamsCreateMembership","tags":["teams"],"description":"Invite a new member to join your team. Provide an ID for existing users, or invite unregistered users using an email or phone number. If initiated from a Client SDK, Appwrite will send an email or sms with a link to join the team to the invited user, and an account will be created for them if one doesn't exist. If initiated from a Server SDK, the new member will be added automatically to the team.\n\nYou only need to provide one of a user ID, email, or phone number. Appwrite will prioritize accepting the user ID > email > phone number if you provide more than one of these parameters.\n\nUse the `url` parameter to redirect the user from the invitation email to your app. After the user is redirected, use the [Update Team Membership Status](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/teams#updateMembershipStatus) endpoint to allow the user to accept the invitation to the team. \n\nPlease note that to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) Appwrite will accept the only redirect URLs under the domains you have added as a platform on the Appwrite Console.\n","responses":{"201":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"createMembership","weight":209,"cookies":false,"type":"","demo":"teams\/create-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/create-team-membership.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"email":{"type":"string","description":"Email of the new team member.","x-example":"email@example.com"},"userId":{"type":"string","description":"ID of the user to be added to a team.","x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"roles":{"type":"array","description":"Array of strings. Use this param to set the user roles in the team. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"},"name":{"type":"string","description":"Name of the new team member. Max length: 128 chars.","x-example":"[NAME]"}},"required":["roles"]}}}}}},"\/teams\/{teamId}\/memberships\/{membershipId}":{"get":{"summary":"Get team membership","operationId":"teamsGetMembership","tags":["teams"],"description":"Get a team member by the membership unique id. All team members have read access for this resource.","responses":{"200":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"getMembership","weight":211,"cookies":false,"type":"","demo":"teams\/get-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-member.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/memberships","offline-key":"{membershipId}","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"schema":{"type":"string","x-example":"[MEMBERSHIP_ID]"},"in":"path"}]},"patch":{"summary":"Update membership","operationId":"teamsUpdateMembership","tags":["teams"],"description":"Modify the roles of a team member. Only team members with the owner role have access to this endpoint. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions).\n","responses":{"200":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"updateMembership","weight":212,"cookies":false,"type":"","demo":"teams\/update-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"schema":{"type":"string","x-example":"[MEMBERSHIP_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"roles":{"type":"array","description":"An array of strings. Use this param to set the user's roles in the team. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["roles"]}}}}},"delete":{"summary":"Delete team membership","operationId":"teamsDeleteMembership","tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":214,"cookies":false,"type":"","demo":"teams\/delete-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/delete-team-membership.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"schema":{"type":"string","x-example":"[MEMBERSHIP_ID]"},"in":"path"}]}},"\/teams\/{teamId}\/memberships\/{membershipId}\/status":{"patch":{"summary":"Update team membership status","operationId":"teamsUpdateMembershipStatus","tags":["teams"],"description":"Use this endpoint to allow a user to accept an invitation to join a team after being redirected back to your app from the invitation email received by the user.\n\nIf the request is successful, a session for the user is automatically created.\n","responses":{"200":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"updateMembershipStatus","weight":213,"cookies":false,"type":"","demo":"teams\/update-membership-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"public","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"schema":{"type":"string","x-example":"[MEMBERSHIP_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Secret key.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/teams\/{teamId}\/prefs":{"get":{"summary":"Get team preferences","operationId":"teamsGetPrefs","tags":["teams"],"description":"Get the team's shared preferences by its unique ID. If a preference doesn't need to be shared by all team members, prefer storing them in [user preferences](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#getPrefs).","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"getPrefs","weight":205,"cookies":false,"type":"","demo":"teams\/get-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/prefs","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}]},"put":{"summary":"Update preferences","operationId":"teamsUpdatePrefs","tags":["teams"],"description":"Update the team's preferences by its unique ID. The object you pass is stored as is and replaces any previous value. The maximum allowed prefs size is 64kB and throws an error if exceeded.","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"updatePrefs","weight":207,"cookies":false,"type":"","demo":"teams\/update-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/prefs","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"prefs":{"type":"object","description":"Prefs key-value JSON object.","x-example":"{}"}},"required":["prefs"]}}}}}},"\/users":{"get":{"summary":"List users","operationId":"usersList","tags":["users"],"description":"Get a list of all the project's users. You can use the query params to filter your results.","responses":{"200":{"description":"Users List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/userList"}}}}},"x-appwrite":{"method":"list","weight":225,"cookies":false,"type":"","demo":"users\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-users.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, email, phone, status, passwordUpdate, registration, emailVerification, phoneVerification, labels","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create user","operationId":"usersCreate","tags":["users"],"description":"Create a new user.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"create","weight":216,"cookies":false,"type":"","demo":"users\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"password":{"type":"string","description":"Plain text user password. Must be at least 8 chars.","x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId"]}}}}}},"\/users\/argon2":{"post":{"summary":"Create user with Argon2 password","operationId":"usersCreateArgon2User","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Argon2](https:\/\/en.wikipedia.org\/wiki\/Argon2) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createArgon2User","weight":219,"cookies":false,"type":"","demo":"users\/create-argon2user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-argon2-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Argon2.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/bcrypt":{"post":{"summary":"Create user with bcrypt password","operationId":"usersCreateBcryptUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Bcrypt](https:\/\/en.wikipedia.org\/wiki\/Bcrypt) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createBcryptUser","weight":217,"cookies":false,"type":"","demo":"users\/create-bcrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-bcrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Bcrypt.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/identities":{"get":{"summary":"List Identities","operationId":"usersListIdentities","tags":["users"],"description":"Get identities for all users.","responses":{"200":{"description":"Identities List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/identityList"}}}}},"x-appwrite":{"method":"listIdentities","weight":233,"cookies":false,"type":"","demo":"users\/list-identities.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-identities.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, provider, providerUid, providerEmail, providerAccessTokenExpiry","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]}},"\/users\/identities\/{identityId}":{"delete":{"summary":"Delete identity","operationId":"usersDeleteIdentity","tags":["users"],"description":"Delete an identity by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIdentity","weight":253,"cookies":false,"type":"","demo":"users\/delete-identity.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-identity.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"identityId","description":"Identity ID.","required":true,"schema":{"type":"string","x-example":"[IDENTITY_ID]"},"in":"path"}]}},"\/users\/md5":{"post":{"summary":"Create user with MD5 password","operationId":"usersCreateMD5User","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [MD5](https:\/\/en.wikipedia.org\/wiki\/MD5) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createMD5User","weight":218,"cookies":false,"type":"","demo":"users\/create-m-d5user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-md5-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using MD5.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/phpass":{"post":{"summary":"Create user with PHPass password","operationId":"usersCreatePHPassUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [PHPass](https:\/\/www.openwall.com\/phpass\/) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createPHPassUser","weight":221,"cookies":false,"type":"","demo":"users\/create-p-h-pass-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-phpass-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or pass the string `ID.unique()`to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using PHPass.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/scrypt":{"post":{"summary":"Create user with Scrypt password","operationId":"usersCreateScryptUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt](https:\/\/github.com\/Tarsnap\/scrypt) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createScryptUser","weight":222,"cookies":false,"type":"","demo":"users\/create-scrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt.","x-example":"password"},"passwordSalt":{"type":"string","description":"Optional salt used to hash password.","x-example":"[PASSWORD_SALT]"},"passwordCpu":{"type":"integer","description":"Optional CPU cost used to hash password.","x-example":null},"passwordMemory":{"type":"integer","description":"Optional memory cost used to hash password.","x-example":null},"passwordParallel":{"type":"integer","description":"Optional parallelization cost used to hash password.","x-example":null},"passwordLength":{"type":"integer","description":"Optional hash length used to hash password.","x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordCpu","passwordMemory","passwordParallel","passwordLength"]}}}}}},"\/users\/scrypt-modified":{"post":{"summary":"Create user with Scrypt modified password","operationId":"usersCreateScryptModifiedUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt Modified](https:\/\/gist.github.com\/Meldiron\/eecf84a0225eccb5a378d45bb27462cc) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createScryptModifiedUser","weight":223,"cookies":false,"type":"","demo":"users\/create-scrypt-modified-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-modified-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt Modified.","x-example":"password"},"passwordSalt":{"type":"string","description":"Salt used to hash password.","x-example":"[PASSWORD_SALT]"},"passwordSaltSeparator":{"type":"string","description":"Salt separator used to hash password.","x-example":"[PASSWORD_SALT_SEPARATOR]"},"passwordSignerKey":{"type":"string","description":"Signer key used to hash password.","x-example":"[PASSWORD_SIGNER_KEY]"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordSaltSeparator","passwordSignerKey"]}}}}}},"\/users\/sha":{"post":{"summary":"Create user with SHA password","operationId":"usersCreateSHAUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [SHA](https:\/\/en.wikipedia.org\/wiki\/Secure_Hash_Algorithm) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createSHAUser","weight":220,"cookies":false,"type":"","demo":"users\/create-s-h-a-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-sha-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using SHA.","x-example":"password"},"passwordVersion":{"type":"string","description":"Optional SHA version used to hash password. Allowed values are: 'sha1', 'sha224', 'sha256', 'sha384', 'sha512\/224', 'sha512\/256', 'sha512', 'sha3-224', 'sha3-256', 'sha3-384', 'sha3-512'","x-example":"sha1","enum":["sha1","sha224","sha256","sha384","sha512\/224","sha512\/256","sha512","sha3-224","sha3-256","sha3-384","sha3-512"],"x-enum-name":"PasswordHash","x-enum-keys":[]},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/{userId}":{"get":{"summary":"Get user","operationId":"usersGet","tags":["users"],"description":"Get a user by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"get","weight":226,"cookies":false,"type":"","demo":"users\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]},"delete":{"summary":"Delete user","operationId":"usersDelete","tags":["users"],"description":"Delete a user by its unique ID, thereby releasing it's ID. Since ID is released and can be reused, all user-related resources like documents or storage files should be deleted before user deletion. If you want to keep ID reserved, use the [updateStatus](https:\/\/appwrite.io\/docs\/server\/users#usersUpdateStatus) endpoint instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":251,"cookies":false,"type":"","demo":"users\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]}},"\/users\/{userId}\/email":{"patch":{"summary":"Update email","operationId":"usersUpdateEmail","tags":["users"],"description":"Update the user email by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateEmail","weight":239,"cookies":false,"type":"","demo":"users\/update-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","x-example":"email@example.com"}},"required":["email"]}}}}}},"\/users\/{userId}\/labels":{"put":{"summary":"Update user labels","operationId":"usersUpdateLabels","tags":["users"],"description":"Update the user labels by its unique ID. \n\nLabels can be used to grant access to resources. While teams are a way for user's to share access to a resource, labels can be defined by the developer to grant access without an invitation. See the [Permissions docs](https:\/\/appwrite.io\/docs\/permissions) for more info.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateLabels","weight":235,"cookies":false,"type":"","demo":"users\/update-labels.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-labels.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"labels":{"type":"array","description":"Array of user labels. Replaces the previous labels. Maximum of 1000 labels are allowed, each up to 36 alphanumeric characters long.","x-example":null,"items":{"type":"string"}}},"required":["labels"]}}}}}},"\/users\/{userId}\/logs":{"get":{"summary":"List user logs","operationId":"usersListLogs","tags":["users"],"description":"Get the user activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listLogs","weight":231,"cookies":false,"type":"","demo":"users\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/users\/{userId}\/memberships":{"get":{"summary":"List user memberships","operationId":"usersListMemberships","tags":["users"],"description":"Get the user membership list by its unique ID.","responses":{"200":{"description":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"listMemberships","weight":230,"cookies":false,"type":"","demo":"users\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-memberships.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]}},"\/users\/{userId}\/mfa":{"patch":{"summary":"Update MFA","operationId":"usersUpdateMfa","tags":["users"],"description":"","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateMfa","weight":244,"cookies":false,"type":"","demo":"users\/update-mfa.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-mfa.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"mfa":{"type":"boolean","description":"Enable or disable MFA.","x-example":false}},"required":["mfa"]}}}}}},"\/users\/{userId}\/mfa\/factors":{"get":{"summary":"List Factors","operationId":"usersListFactors","tags":["users"],"description":"","responses":{"200":{"description":"MFAFactors","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/mfaFactors"}}}}},"x-appwrite":{"method":"listFactors","weight":245,"cookies":false,"type":"","demo":"users\/list-factors.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-factors.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]}},"\/users\/{userId}\/mfa\/{type}":{"delete":{"summary":"Delete Authenticator","operationId":"usersDeleteAuthenticator","tags":["users"],"description":"","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"deleteAuthenticator","weight":246,"cookies":false,"type":"","demo":"users\/delete-authenticator.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-mfa.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"type","description":"Type of authenticator.","required":true,"schema":{"type":"string","x-example":"totp","enum":["totp"],"x-enum-name":null,"x-enum-keys":[]},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"otp":{"type":"string","description":"Valid verification token.","x-example":"[OTP]"}},"required":["otp"]}}}}}},"\/users\/{userId}\/name":{"patch":{"summary":"Update name","operationId":"usersUpdateName","tags":["users"],"description":"Update the user name by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateName","weight":237,"cookies":false,"type":"","demo":"users\/update-name.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-name.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["name"]}}}}}},"\/users\/{userId}\/password":{"patch":{"summary":"Update password","operationId":"usersUpdatePassword","tags":["users"],"description":"Update the user password by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePassword","weight":238,"cookies":false,"type":"","demo":"users\/update-password.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-password.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"password":{"type":"string","description":"New user password. Must be at least 8 chars.","x-example":null}},"required":["password"]}}}}}},"\/users\/{userId}\/phone":{"patch":{"summary":"Update phone","operationId":"usersUpdatePhone","tags":["users"],"description":"Update the user phone by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePhone","weight":240,"cookies":false,"type":"","demo":"users\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"number":{"type":"string","description":"User phone number.","x-example":"+12065550100"}},"required":["number"]}}}}}},"\/users\/{userId}\/prefs":{"get":{"summary":"Get user preferences","operationId":"usersGetPrefs","tags":["users"],"description":"Get the user preferences by its unique ID.","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"getPrefs","weight":227,"cookies":false,"type":"","demo":"users\/get-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]},"patch":{"summary":"Update user preferences","operationId":"usersUpdatePrefs","tags":["users"],"description":"Update the user preferences by its unique ID. The object you pass is stored as is, and replaces any previous value. The maximum allowed prefs size is 64kB and throws error if exceeded.","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"updatePrefs","weight":242,"cookies":false,"type":"","demo":"users\/update-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"prefs":{"type":"object","description":"Prefs key-value JSON object.","x-example":"{}"}},"required":["prefs"]}}}}}},"\/users\/{userId}\/sessions":{"get":{"summary":"List user sessions","operationId":"usersListSessions","tags":["users"],"description":"Get the user sessions list by its unique ID.","responses":{"200":{"description":"Sessions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/sessionList"}}}}},"x-appwrite":{"method":"listSessions","weight":229,"cookies":false,"type":"","demo":"users\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]},"post":{"summary":"Create session","operationId":"usersCreateSession","tags":["users"],"description":"Creates a session for a user. Returns an immediately usable session object.\n\nIf you want to generate a token for a custom authentication flow, use the [POST \/users\/{userId}\/tokens](https:\/\/appwrite.io\/docs\/server\/users#createToken) endpoint.","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"createSession","weight":247,"cookies":false,"type":"","demo":"users\/create-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-session.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]},"delete":{"summary":"Delete user sessions","operationId":"usersDeleteSessions","tags":["users"],"description":"Delete all user's sessions by using the user's unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":250,"cookies":false,"type":"","demo":"users\/delete-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]}},"\/users\/{userId}\/sessions\/{sessionId}":{"delete":{"summary":"Delete user session","operationId":"usersDeleteSession","tags":["users"],"description":"Delete a user sessions by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSession","weight":249,"cookies":false,"type":"","demo":"users\/delete-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-user-session.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"sessionId","description":"Session ID.","required":true,"schema":{"type":"string","x-example":"[SESSION_ID]"},"in":"path"}]}},"\/users\/{userId}\/status":{"patch":{"summary":"Update user status","operationId":"usersUpdateStatus","tags":["users"],"description":"Update the user status by its unique ID. Use this endpoint as an alternative to deleting a user if you want to keep user's ID reserved.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateStatus","weight":234,"cookies":false,"type":"","demo":"users\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"status":{"type":"boolean","description":"User Status. To activate the user pass `true` and to block the user pass `false`.","x-example":false}},"required":["status"]}}}}}},"\/users\/{userId}\/targets":{"get":{"summary":"List User Targets","operationId":"usersListTargets","tags":["users"],"description":"","responses":{"200":{"description":"Target list","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/targetList"}}}}},"x-appwrite":{"method":"listTargets","weight":232,"cookies":false,"type":"","demo":"users\/list-targets.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-targets.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.read","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, email, phone, status, passwordUpdate, registration, emailVerification, phoneVerification, labels","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"post":{"summary":"Create User Target","operationId":"usersCreateTarget","tags":["users"],"description":"","responses":{"201":{"description":"Target","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/target"}}}}},"x-appwrite":{"method":"createTarget","weight":224,"cookies":false,"type":"","demo":"users\/create-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-target.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"targetId":{"type":"string","description":"Target ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[TARGET_ID]"},"providerType":{"type":"string","description":"The target provider type. Can be one of the following: `email`, `sms` or `push`.","x-example":"email","enum":["email","sms","push"],"x-enum-name":"MessagingProviderType","x-enum-keys":[]},"identifier":{"type":"string","description":"The target identifier (token, email, phone etc.)","x-example":"[IDENTIFIER]"},"providerId":{"type":"string","description":"Provider ID. Message will be sent to this target from the specified provider ID. If no provider ID is set the first setup provider will be used.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Target name. Max length: 128 chars. For example: My Awesome App Galaxy S23.","x-example":"[NAME]"}},"required":["targetId","providerType","identifier"]}}}}}},"\/users\/{userId}\/targets\/{targetId}":{"get":{"summary":"Get User Target","operationId":"usersGetTarget","tags":["users"],"description":"","responses":{"200":{"description":"Target","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/target"}}}}},"x-appwrite":{"method":"getTarget","weight":228,"cookies":false,"type":"","demo":"users\/get-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-target.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.read","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"targetId","description":"Target ID.","required":true,"schema":{"type":"string","x-example":"[TARGET_ID]"},"in":"path"}]},"patch":{"summary":"Update User target","operationId":"usersUpdateTarget","tags":["users"],"description":"","responses":{"200":{"description":"Target","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/target"}}}}},"x-appwrite":{"method":"updateTarget","weight":243,"cookies":false,"type":"","demo":"users\/update-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-target.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"targetId","description":"Target ID.","required":true,"schema":{"type":"string","x-example":"[TARGET_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"identifier":{"type":"string","description":"The target identifier (token, email, phone etc.)","x-example":"[IDENTIFIER]"},"providerId":{"type":"string","description":"Provider ID. Message will be sent to this target from the specified provider ID. If no provider ID is set the first setup provider will be used.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Target name. Max length: 128 chars. For example: My Awesome App Galaxy S23.","x-example":"[NAME]"}}}}}}},"delete":{"summary":"Delete user target","operationId":"usersDeleteTarget","tags":["users"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteTarget","weight":252,"cookies":false,"type":"","demo":"users\/delete-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-target.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"targetId","description":"Target ID.","required":true,"schema":{"type":"string","x-example":"[TARGET_ID]"},"in":"path"}]}},"\/users\/{userId}\/tokens":{"post":{"summary":"Create token","operationId":"usersCreateToken","tags":["users"],"description":"Returns a token with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [PUT \/account\/sessions\/custom](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateCustomSession) endpoint to complete the login process.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createToken","weight":248,"cookies":false,"type":"","demo":"users\/create-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-token.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"length":{"type":"integer","description":"Token length in characters. The default length is 6 characters","x-example":4},"expire":{"type":"integer","description":"Token expiration period in seconds. The default expiration is 15 minutes.","x-example":60}}}}}}}},"\/users\/{userId}\/verification":{"patch":{"summary":"Update email verification","operationId":"usersUpdateEmailVerification","tags":["users"],"description":"Update the user email verification status by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateEmailVerification","weight":241,"cookies":false,"type":"","demo":"users\/update-email-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-email-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"emailVerification":{"type":"boolean","description":"User email verification status.","x-example":false}},"required":["emailVerification"]}}}}}},"\/users\/{userId}\/verification\/phone":{"patch":{"summary":"Update phone verification","operationId":"usersUpdatePhoneVerification","tags":["users"],"description":"Update the user phone verification status by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePhoneVerification","weight":236,"cookies":false,"type":"","demo":"users\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"phoneVerification":{"type":"boolean","description":"User phone verification status.","x-example":false}},"required":["phoneVerification"]}}}}}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"project","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]},{"name":"proxy","description":"The Proxy Service allows you to configure actions for your domains beyond DNS configuration.","x-globalAttributes":[]},{"name":"graphql","description":"The GraphQL API allows you to query and mutate your Appwrite server using GraphQL.","x-globalAttributes":[]},{"name":"console","description":"The Console service allows you to interact with console relevant informations.","x-globalAttributes":[]},{"name":"migrations","description":"The Migrations service allows you to migrate third-party data to your Appwrite project.","x-globalAttributes":[]},{"name":"messaging","description":"The Messaging service allows you to send messages to any provider type (SMTP, push notification, SMS, etc.).","x-globalAttributes":[]}],"components":{"schemas":{"any":{"description":"Any","type":"object","additionalProperties":true},"error":{"description":"Error","type":"object","properties":{"message":{"type":"string","description":"Error message.","x-example":"Not found"},"code":{"type":"string","description":"Error code.","x-example":"404"},"type":{"type":"string","description":"Error type. You can learn more about all the error types at https:\/\/appwrite.io\/docs\/error-codes#errorTypes","x-example":"not_found"},"version":{"type":"string","description":"Server version number.","x-example":"1.0"}},"required":["message","code","type","version"]},"documentList":{"description":"Documents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of documents documents that matched your query.","x-example":5,"format":"int32"},"documents":{"type":"array","description":"List of documents.","items":{"$ref":"#\/components\/schemas\/document"},"x-example":""}},"required":["total","documents"]},"collectionList":{"description":"Collections List","type":"object","properties":{"total":{"type":"integer","description":"Total number of collections documents that matched your query.","x-example":5,"format":"int32"},"collections":{"type":"array","description":"List of collections.","items":{"$ref":"#\/components\/schemas\/collection"},"x-example":""}},"required":["total","collections"]},"databaseList":{"description":"Databases List","type":"object","properties":{"total":{"type":"integer","description":"Total number of databases documents that matched your query.","x-example":5,"format":"int32"},"databases":{"type":"array","description":"List of databases.","items":{"$ref":"#\/components\/schemas\/database"},"x-example":""}},"required":["total","databases"]},"indexList":{"description":"Indexes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of indexes documents that matched your query.","x-example":5,"format":"int32"},"indexes":{"type":"array","description":"List of indexes.","items":{"$ref":"#\/components\/schemas\/index"},"x-example":""}},"required":["total","indexes"]},"userList":{"description":"Users List","type":"object","properties":{"total":{"type":"integer","description":"Total number of users documents that matched your query.","x-example":5,"format":"int32"},"users":{"type":"array","description":"List of users.","items":{"$ref":"#\/components\/schemas\/user"},"x-example":""}},"required":["total","users"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of sessions documents that matched your query.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"$ref":"#\/components\/schemas\/session"},"x-example":""}},"required":["total","sessions"]},"identityList":{"description":"Identities List","type":"object","properties":{"total":{"type":"integer","description":"Total number of identities documents that matched your query.","x-example":5,"format":"int32"},"identities":{"type":"array","description":"List of identities.","items":{"$ref":"#\/components\/schemas\/identity"},"x-example":""}},"required":["total","identities"]},"logList":{"description":"Logs List","type":"object","properties":{"total":{"type":"integer","description":"Total number of logs documents that matched your query.","x-example":5,"format":"int32"},"logs":{"type":"array","description":"List of logs.","items":{"$ref":"#\/components\/schemas\/log"},"x-example":""}},"required":["total","logs"]},"fileList":{"description":"Files List","type":"object","properties":{"total":{"type":"integer","description":"Total number of files documents that matched your query.","x-example":5,"format":"int32"},"files":{"type":"array","description":"List of files.","items":{"$ref":"#\/components\/schemas\/file"},"x-example":""}},"required":["total","files"]},"bucketList":{"description":"Buckets List","type":"object","properties":{"total":{"type":"integer","description":"Total number of buckets documents that matched your query.","x-example":5,"format":"int32"},"buckets":{"type":"array","description":"List of buckets.","items":{"$ref":"#\/components\/schemas\/bucket"},"x-example":""}},"required":["total","buckets"]},"teamList":{"description":"Teams List","type":"object","properties":{"total":{"type":"integer","description":"Total number of teams documents that matched your query.","x-example":5,"format":"int32"},"teams":{"type":"array","description":"List of teams.","items":{"$ref":"#\/components\/schemas\/team"},"x-example":""}},"required":["total","teams"]},"membershipList":{"description":"Memberships List","type":"object","properties":{"total":{"type":"integer","description":"Total number of memberships documents that matched your query.","x-example":5,"format":"int32"},"memberships":{"type":"array","description":"List of memberships.","items":{"$ref":"#\/components\/schemas\/membership"},"x-example":""}},"required":["total","memberships"]},"functionList":{"description":"Functions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of functions documents that matched your query.","x-example":5,"format":"int32"},"functions":{"type":"array","description":"List of functions.","items":{"$ref":"#\/components\/schemas\/function"},"x-example":""}},"required":["total","functions"]},"runtimeList":{"description":"Runtimes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of runtimes documents that matched your query.","x-example":5,"format":"int32"},"runtimes":{"type":"array","description":"List of runtimes.","items":{"$ref":"#\/components\/schemas\/runtime"},"x-example":""}},"required":["total","runtimes"]},"deploymentList":{"description":"Deployments List","type":"object","properties":{"total":{"type":"integer","description":"Total number of deployments documents that matched your query.","x-example":5,"format":"int32"},"deployments":{"type":"array","description":"List of deployments.","items":{"$ref":"#\/components\/schemas\/deployment"},"x-example":""}},"required":["total","deployments"]},"executionList":{"description":"Executions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of executions documents that matched your query.","x-example":5,"format":"int32"},"executions":{"type":"array","description":"List of executions.","items":{"$ref":"#\/components\/schemas\/execution"},"x-example":""}},"required":["total","executions"]},"countryList":{"description":"Countries List","type":"object","properties":{"total":{"type":"integer","description":"Total number of countries documents that matched your query.","x-example":5,"format":"int32"},"countries":{"type":"array","description":"List of countries.","items":{"$ref":"#\/components\/schemas\/country"},"x-example":""}},"required":["total","countries"]},"continentList":{"description":"Continents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of continents documents that matched your query.","x-example":5,"format":"int32"},"continents":{"type":"array","description":"List of continents.","items":{"$ref":"#\/components\/schemas\/continent"},"x-example":""}},"required":["total","continents"]},"languageList":{"description":"Languages List","type":"object","properties":{"total":{"type":"integer","description":"Total number of languages documents that matched your query.","x-example":5,"format":"int32"},"languages":{"type":"array","description":"List of languages.","items":{"$ref":"#\/components\/schemas\/language"},"x-example":""}},"required":["total","languages"]},"currencyList":{"description":"Currencies List","type":"object","properties":{"total":{"type":"integer","description":"Total number of currencies documents that matched your query.","x-example":5,"format":"int32"},"currencies":{"type":"array","description":"List of currencies.","items":{"$ref":"#\/components\/schemas\/currency"},"x-example":""}},"required":["total","currencies"]},"phoneList":{"description":"Phones List","type":"object","properties":{"total":{"type":"integer","description":"Total number of phones documents that matched your query.","x-example":5,"format":"int32"},"phones":{"type":"array","description":"List of phones.","items":{"$ref":"#\/components\/schemas\/phone"},"x-example":""}},"required":["total","phones"]},"variableList":{"description":"Variables List","type":"object","properties":{"total":{"type":"integer","description":"Total number of variables documents that matched your query.","x-example":5,"format":"int32"},"variables":{"type":"array","description":"List of variables.","items":{"$ref":"#\/components\/schemas\/variable"},"x-example":""}},"required":["total","variables"]},"localeCodeList":{"description":"Locale codes list","type":"object","properties":{"total":{"type":"integer","description":"Total number of localeCodes documents that matched your query.","x-example":5,"format":"int32"},"localeCodes":{"type":"array","description":"List of localeCodes.","items":{"$ref":"#\/components\/schemas\/localeCode"},"x-example":""}},"required":["total","localeCodes"]},"providerList":{"description":"Provider list","type":"object","properties":{"total":{"type":"integer","description":"Total number of providers documents that matched your query.","x-example":5,"format":"int32"},"providers":{"type":"array","description":"List of providers.","items":{"$ref":"#\/components\/schemas\/provider"},"x-example":""}},"required":["total","providers"]},"messageList":{"description":"Message list","type":"object","properties":{"total":{"type":"integer","description":"Total number of messages documents that matched your query.","x-example":5,"format":"int32"},"messages":{"type":"array","description":"List of messages.","items":{"$ref":"#\/components\/schemas\/message"},"x-example":""}},"required":["total","messages"]},"topicList":{"description":"Topic list","type":"object","properties":{"total":{"type":"integer","description":"Total number of topics documents that matched your query.","x-example":5,"format":"int32"},"topics":{"type":"array","description":"List of topics.","items":{"$ref":"#\/components\/schemas\/topic"},"x-example":""}},"required":["total","topics"]},"subscriberList":{"description":"Subscriber list","type":"object","properties":{"total":{"type":"integer","description":"Total number of subscribers documents that matched your query.","x-example":5,"format":"int32"},"subscribers":{"type":"array","description":"List of subscribers.","items":{"$ref":"#\/components\/schemas\/subscriber"},"x-example":""}},"required":["total","subscribers"]},"targetList":{"description":"Target list","type":"object","properties":{"total":{"type":"integer","description":"Total number of targets documents that matched your query.","x-example":5,"format":"int32"},"targets":{"type":"array","description":"List of targets.","items":{"$ref":"#\/components\/schemas\/target"},"x-example":""}},"required":["total","targets"]},"database":{"description":"Database","type":"object","properties":{"$id":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Database name.","x-example":"My Database"},"$createdAt":{"type":"string","description":"Database creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Database update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"enabled":{"type":"boolean","description":"If database is enabled. Can be 'enabled' or 'disabled'. When disabled, the database is inaccessible to users, but remains accessible to Server SDKs using API keys.","x-example":false}},"required":["$id","name","$createdAt","$updatedAt","enabled"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Collection creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Collection update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Collection permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled. Can be 'enabled' or 'disabled'. When disabled, the collection is inaccessible to users, but remains accessible to Server SDKs using API keys.","x-example":false},"documentSecurity":{"type":"boolean","description":"Whether document-level permissions are enabled. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":true},"attributes":{"type":"array","description":"Collection attributes.","items":{"anyOf":[{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeRelationship"},{"$ref":"#\/components\/schemas\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"$ref":"#\/components\/schemas\/index"},"x-example":{}}},"required":["$id","$createdAt","$updatedAt","$permissions","databaseId","name","enabled","documentSecurity","attributes","indexes"]},"attributeList":{"description":"Attributes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of attributes in the given collection.","x-example":5,"format":"int32"},"attributes":{"type":"array","description":"List of attributes.","items":{"anyOf":[{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeRelationship"},{"$ref":"#\/components\/schemas\/attributeString"}]},"x-example":""}},"required":["total","attributes"]},"attributeString":{"description":"AttributeString","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"fullName"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"size":{"type":"integer","description":"Attribute size.","x-example":128,"format":"int32"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"default","nullable":true}},"required":["key","type","status","error","required","size"]},"attributeInteger":{"description":"AttributeInteger","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"count"},"type":{"type":"string","description":"Attribute type.","x-example":"integer"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"min":{"type":"integer","description":"Minimum value to enforce for new documents.","x-example":1,"format":"int32","nullable":true},"max":{"type":"integer","description":"Maximum value to enforce for new documents.","x-example":10,"format":"int32","nullable":true},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":10,"format":"int32","nullable":true}},"required":["key","type","status","error","required"]},"attributeFloat":{"description":"AttributeFloat","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"percentageCompleted"},"type":{"type":"string","description":"Attribute type.","x-example":"double"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"min":{"type":"number","description":"Minimum value to enforce for new documents.","x-example":1.5,"format":"double","nullable":true},"max":{"type":"number","description":"Maximum value to enforce for new documents.","x-example":10.5,"format":"double","nullable":true},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":2.5,"format":"double","nullable":true}},"required":["key","type","status","error","required"]},"attributeBoolean":{"description":"AttributeBoolean","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"isEnabled"},"type":{"type":"string","description":"Attribute type.","x-example":"boolean"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":false,"nullable":true}},"required":["key","type","status","error","required"]},"attributeEmail":{"description":"AttributeEmail","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"userEmail"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"format":{"type":"string","description":"String format.","x-example":"email"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"default@example.com","nullable":true}},"required":["key","type","status","error","required","format"]},"attributeEnum":{"description":"AttributeEnum","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"status"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"elements":{"type":"array","description":"Array of elements in enumerated type.","items":{"type":"string"},"x-example":"element"},"format":{"type":"string","description":"String format.","x-example":"enum"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"element","nullable":true}},"required":["key","type","status","error","required","elements","format"]},"attributeIp":{"description":"AttributeIP","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"ipAddress"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"format":{"type":"string","description":"String format.","x-example":"ip"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"192.0.2.0","nullable":true}},"required":["key","type","status","error","required","format"]},"attributeUrl":{"description":"AttributeURL","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"githubUrl"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"format":{"type":"string","description":"String format.","x-example":"url"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"http:\/\/example.com","nullable":true}},"required":["key","type","status","error","required","format"]},"attributeDatetime":{"description":"AttributeDatetime","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"birthDay"},"type":{"type":"string","description":"Attribute type.","x-example":"datetime"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"format":{"type":"string","description":"ISO 8601 format.","x-example":"datetime"},"default":{"type":"string","description":"Default value for attribute when not provided. Only null is optional","x-example":"2020-10-15T06:38:00.000+00:00","nullable":true}},"required":["key","type","status","error","required","format"]},"attributeRelationship":{"description":"AttributeRelationship","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"fullName"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"relatedCollection":{"type":"string","description":"The ID of the related collection.","x-example":"collection"},"relationType":{"type":"string","description":"The type of the relationship.","x-example":"oneToOne|oneToMany|manyToOne|manyToMany"},"twoWay":{"type":"boolean","description":"Is the relationship two-way?","x-example":false},"twoWayKey":{"type":"string","description":"The key of the two-way relationship.","x-example":"string"},"onDelete":{"type":"string","description":"How deleting the parent document will propagate to child documents.","x-example":"restrict|cascade|setNull"},"side":{"type":"string","description":"Whether this is the parent or child side of the relationship","x-example":"parent|child"}},"required":["key","type","status","error","required","relatedCollection","relationType","twoWay","twoWayKey","onDelete","side"]},"index":{"description":"Index","type":"object","properties":{"key":{"type":"string","description":"Index Key.","x-example":"index1"},"type":{"type":"string","description":"Index type.","x-example":"primary"},"status":{"type":"string","description":"Index status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an index.","x-example":"string"},"attributes":{"type":"array","description":"Index attributes.","items":{"type":"string"},"x-example":[]},"orders":{"type":"array","description":"Index orders.","items":{"type":"string"},"x-example":[],"nullable":true}},"required":["key","type","status","error","attributes"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"user":{"description":"User","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"password":{"type":"string","description":"Hashed user password.","x-example":"$argon2id$v=19$m=2048,t=4,p=3$aUZjLnliVWRINmFNTWMudg$5S+x+7uA31xFnrHFT47yFwcJeaP0w92L\/4LdgrVRXxE","nullable":true},"hash":{"type":"string","description":"Password hashing algorithm.","x-example":"argon2","nullable":true},"hashOptions":{"type":"object","description":"Password hashing algorithm configuration.","x-example":{},"items":{"oneOf":[{"$ref":"#\/components\/schemas\/algoArgon2"},{"$ref":"#\/components\/schemas\/algoScrypt"},{"$ref":"#\/components\/schemas\/algoScryptModified"},{"$ref":"#\/components\/schemas\/algoBcrypt"},{"$ref":"#\/components\/schemas\/algoPhpass"},{"$ref":"#\/components\/schemas\/algoSha"},{"$ref":"#\/components\/schemas\/algoMd5"}]},"nullable":true},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"labels":{"type":"array","description":"Labels for the user.","items":{"type":"string"},"x-example":["vip"]},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"mfa":{"type":"boolean","description":"Multi factor authentication status.","x-example":true},"totp":{"type":"boolean","description":"TOTP status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"$ref":"#\/components\/schemas\/preferences"}},"targets":{"type":"array","description":"A user-owned message receiver. A single user may have multiple e.g. emails, phones, and a browser. Each target is registered with a single provider.","items":{"$ref":"#\/components\/schemas\/target"},"x-example":[]},"accessedAt":{"type":"string","description":"Most recent access date in ISO 8601 format. This attribute is only updated again after 24 hours.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","$updatedAt","name","registration","status","labels","passwordUpdate","email","phone","emailVerification","phoneVerification","mfa","totp","prefs","targets","accessedAt"]},"algoMd5":{"description":"AlgoMD5","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"md5"}},"required":["type"]},"algoSha":{"description":"AlgoSHA","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"sha"}},"required":["type"]},"algoPhpass":{"description":"AlgoPHPass","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"phpass"}},"required":["type"]},"algoBcrypt":{"description":"AlgoBcrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"bcrypt"}},"required":["type"]},"algoScrypt":{"description":"AlgoScrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scrypt"},"costCpu":{"type":"integer","description":"CPU complexity of computed hash.","x-example":8,"format":"int32"},"costMemory":{"type":"integer","description":"Memory complexity of computed hash.","x-example":14,"format":"int32"},"costParallel":{"type":"integer","description":"Parallelization of computed hash.","x-example":1,"format":"int32"},"length":{"type":"integer","description":"Length used to compute hash.","x-example":64,"format":"int32"}},"required":["type","costCpu","costMemory","costParallel","length"]},"algoScryptModified":{"description":"AlgoScryptModified","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scryptMod"},"salt":{"type":"string","description":"Salt used to compute hash.","x-example":"UxLMreBr6tYyjQ=="},"saltSeparator":{"type":"string","description":"Separator used to compute hash.","x-example":"Bw=="},"signerKey":{"type":"string","description":"Key used to compute hash.","x-example":"XyEKE9RcTDeLEsL\/RjwPDBv\/RqDl8fb3gpYEOQaPihbxf1ZAtSOHCjuAAa7Q3oHpCYhXSN9tizHgVOwn6krflQ=="}},"required":["type","salt","saltSeparator","signerKey"]},"algoArgon2":{"description":"AlgoArgon2","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"argon2"},"memoryCost":{"type":"integer","description":"Memory used to compute hash.","x-example":65536,"format":"int32"},"timeCost":{"type":"integer","description":"Amount of time consumed to compute hash","x-example":4,"format":"int32"},"threads":{"type":"integer","description":"Number of threads used to compute hash.","x-example":3,"format":"int32"}},"required":["type","memoryCost","timeCost","threads"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true},"factors":{"type":"array","description":"Returns a list of active session factors.","items":{"type":"string"},"x-example":["email"]},"secret":{"type":"string","description":"Secret used to authenticate the user. Only included if the request was made with an API key","x-example":"5e5bb8c16897e"}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current","factors","secret"]},"identity":{"description":"Identity","type":"object","properties":{"$id":{"type":"string","description":"Identity ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Identity creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Identity update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"provider":{"type":"string","description":"Identity Provider.","x-example":"email"},"providerUid":{"type":"string","description":"ID of the User in the Identity Provider.","x-example":"5e5bb8c16897e"},"providerEmail":{"type":"string","description":"Email of the User in the Identity Provider.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Identity Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Identity Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"}},"required":["$id","$createdAt","$updatedAt","userId","provider","providerUid","providerEmail","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"phrase":{"type":"string","description":"Security phrase of a token. Empty if security phrase was not requested when creating a token. It includes randomly generated phrase which is also sent in the external resource such as email.","x-example":"Golden Fox"}},"required":["$id","$createdAt","userId","secret","expire","phrase"]},"jwt":{"description":"JWT","type":"object","properties":{"jwt":{"type":"string","description":"JWT encoded string.","x-example":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c"}},"required":["jwt"]},"locale":{"description":"Locale","type":"object","properties":{"ip":{"type":"string","description":"User IP address.","x-example":"127.0.0.1"},"countryCode":{"type":"string","description":"Country code in [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) two-character format","x-example":"US"},"country":{"type":"string","description":"Country name. This field support localization.","x-example":"United States"},"continentCode":{"type":"string","description":"Continent code. A two character continent code \"AF\" for Africa, \"AN\" for Antarctica, \"AS\" for Asia, \"EU\" for Europe, \"NA\" for North America, \"OC\" for Oceania, and \"SA\" for South America.","x-example":"NA"},"continent":{"type":"string","description":"Continent name. This field support localization.","x-example":"North America"},"eu":{"type":"boolean","description":"True if country is part of the European Union.","x-example":false},"currency":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format","x-example":"USD"}},"required":["ip","countryCode","country","continentCode","continent","eu","currency"]},"localeCode":{"description":"LocaleCode","type":"object","properties":{"code":{"type":"string","description":"Locale codes in [ISO 639-1](https:\/\/en.wikipedia.org\/wiki\/List_of_ISO_639-1_codes)","x-example":"en-us"},"name":{"type":"string","description":"Locale name","x-example":"US"}},"required":["code","name"]},"file":{"description":"File","type":"object","properties":{"$id":{"type":"string","description":"File ID.","x-example":"5e5ea5c16897e"},"bucketId":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Bucket creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Bucket update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Bucket permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"fileSecurity":{"type":"boolean","description":"Whether file-level security is enabled. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":true},"name":{"type":"string","description":"Bucket name.","x-example":"Documents"},"enabled":{"type":"boolean","description":"Bucket enabled.","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size supported.","x-example":100,"format":"int32"},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions.","items":{"type":"string"},"x-example":["jpg","png"]},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Will be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd).","x-example":"gzip"},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$createdAt","$updatedAt","$permissions","fileSecurity","name","enabled","maximumFileSize","allowedFileExtensions","compression","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"},"prefs":{"type":"object","description":"Team preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"$ref":"#\/components\/schemas\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","total","prefs"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"mfa":{"type":"boolean","description":"Multi factor authentication status, true if the user has MFA enabled or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":["owner"]}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","mfa","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Function creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Function update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"users"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"enabled":{"type":"boolean","description":"Function enabled.","x-example":false},"live":{"type":"boolean","description":"Is the function deployed with the latest configuration? This is set to false if you've changed an environment variables, entrypoint, commands, or other settings that needs redeploy to be applied. When the value is false, redeploy the function to update it with the latest configuration.","x-example":false},"logging":{"type":"boolean","description":"Whether executions will be logged. When set to false, executions will not be logged, but will reduce resource used by your Appwrite project.","x-example":false},"runtime":{"type":"string","description":"Function execution runtime.","x-example":"python-3.8"},"deployment":{"type":"string","description":"Function's active deployment ID.","x-example":"5e5ea5c16897e"},"vars":{"type":"array","description":"Function variables.","items":{"$ref":"#\/components\/schemas\/variable"},"x-example":[]},"events":{"type":"array","description":"Function trigger events.","items":{"type":"string"},"x-example":"account.create"},"schedule":{"type":"string","description":"Function execution schedult in CRON format.","x-example":"5 4 * * *"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":300,"format":"int32"},"entrypoint":{"type":"string","description":"The entrypoint file used to execute the deployment.","x-example":"index.js"},"commands":{"type":"string","description":"The build command used to build the deployment.","x-example":"npm install"},"version":{"type":"string","description":"Version of Open Runtimes used for the function.","x-example":"v2"},"installationId":{"type":"string","description":"Function VCS (Version Control System) installation id.","x-example":"6m40at4ejk5h2u9s1hboo"},"providerRepositoryId":{"type":"string","description":"VCS (Version Control System) Repository ID","x-example":"appwrite"},"providerBranch":{"type":"string","description":"VCS (Version Control System) branch name","x-example":"main"},"providerRootDirectory":{"type":"string","description":"Path to function in VCS (Version Control System) repository","x-example":"functions\/helloWorld"},"providerSilentMode":{"type":"boolean","description":"Is VCS (Version Control System) connection is in silent mode? When in silence mode, no comments will be posted on the repository pull or merge requests","x-example":false}},"required":["$id","$createdAt","$updatedAt","execute","name","enabled","live","logging","runtime","deployment","vars","events","schedule","timeout","entrypoint","commands","version","installationId","providerRepositoryId","providerBranch","providerRootDirectory","providerSilentMode"]},"runtime":{"description":"Runtime","type":"object","properties":{"$id":{"type":"string","description":"Runtime ID.","x-example":"python-3.8"},"name":{"type":"string","description":"Runtime Name.","x-example":"Python"},"version":{"type":"string","description":"Runtime version.","x-example":"3.8"},"base":{"type":"string","description":"Base Docker image used to build the runtime.","x-example":"python:3.8-alpine"},"image":{"type":"string","description":"Image name of Docker Hub.","x-example":"appwrite\\\/runtime-for-python:3.8"},"logo":{"type":"string","description":"Name of the logo image.","x-example":"python.png"},"supports":{"type":"array","description":"List of supported architectures.","items":{"type":"string"},"x-example":"amd64"}},"required":["$id","name","version","base","image","logo","supports"]},"deployment":{"description":"Deployment","type":"object","properties":{"$id":{"type":"string","description":"Deployment ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Deployment creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Deployment update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"type":{"type":"string","description":"Type of deployment.","x-example":"vcs"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"index.js"},"size":{"type":"integer","description":"The code size in bytes.","x-example":128,"format":"int32"},"buildId":{"type":"string","description":"The current build ID.","x-example":"5e5ea5c16897e"},"activate":{"type":"boolean","description":"Whether the deployment should be automatically activated.","x-example":true},"status":{"type":"string","description":"The deployment status. Possible values are \"processing\", \"building\", \"waiting\", \"ready\", and \"failed\".","x-example":"ready"},"buildLogs":{"type":"string","description":"The build logs.","x-example":"Compiling source files..."},"buildTime":{"type":"integer","description":"The current build time in seconds.","x-example":128,"format":"int32"},"providerRepositoryName":{"type":"string","description":"The name of the vcs provider repository","x-example":"database"},"providerRepositoryOwner":{"type":"string","description":"The name of the vcs provider repository owner","x-example":"utopia"},"providerRepositoryUrl":{"type":"string","description":"The url of the vcs provider repository","x-example":"https:\/\/github.com\/vermakhushboo\/g4-node-function"},"providerBranch":{"type":"string","description":"The branch of the vcs repository","x-example":"0.7.x"},"providerCommitHash":{"type":"string","description":"The commit hash of the vcs commit","x-example":"7c3f25d"},"providerCommitAuthorUrl":{"type":"string","description":"The url of vcs commit author","x-example":"https:\/\/github.com\/vermakhushboo"},"providerCommitAuthor":{"type":"string","description":"The name of vcs commit author","x-example":"Khushboo Verma"},"providerCommitMessage":{"type":"string","description":"The commit message","x-example":"Update index.js"},"providerCommitUrl":{"type":"string","description":"The url of the vcs commit","x-example":"https:\/\/github.com\/vermakhushboo\/g4-node-function\/commit\/60c0416257a9cbcdd96b2d370c38d8f8d150ccfb"},"providerBranchUrl":{"type":"string","description":"The branch of the vcs repository","x-example":"https:\/\/github.com\/vermakhushboo\/appwrite\/tree\/0.7.x"}},"required":["$id","$createdAt","$updatedAt","type","resourceId","resourceType","entrypoint","size","buildId","activate","status","buildLogs","buildTime","providerRepositoryName","providerRepositoryOwner","providerRepositoryUrl","providerBranch","providerCommitHash","providerCommitAuthorUrl","providerCommitAuthor","providerCommitMessage","providerCommitUrl","providerBranchUrl"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"requestMethod":{"type":"string","description":"HTTP request method type.","x-example":"GET"},"requestPath":{"type":"string","description":"HTTP request path and query.","x-example":"\/articles?id=5"},"requestHeaders":{"type":"array","description":"HTTP response headers as a key-value object. This will return only whitelisted headers. All headers are returned if execution is created as synchronous.","items":{"$ref":"#\/components\/schemas\/headers"},"x-example":[{"Content-Type":"application\/json"}]},"responseStatusCode":{"type":"integer","description":"HTTP response status code.","x-example":200,"format":"int32"},"responseBody":{"type":"string","description":"HTTP response body. This will return empty unless execution is created as synchronous.","x-example":"Developers are awesome."},"responseHeaders":{"type":"array","description":"HTTP response headers as a key-value object. This will return only whitelisted headers. All headers are returned if execution is created as synchronous.","items":{"$ref":"#\/components\/schemas\/headers"},"x-example":[{"Content-Type":"application\/json"}]},"logs":{"type":"string","description":"Function logs. Includes the last 4,000 characters. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"errors":{"type":"string","description":"Function errors. Includes the last 4,000 characters. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"Function execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","requestMethod","requestPath","requestHeaders","responseStatusCode","responseBody","responseHeaders","logs","errors","duration"]},"variable":{"description":"Variable","type":"object","properties":{"$id":{"type":"string","description":"Variable ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"key":{"type":"string","description":"Variable key.","x-example":"API_KEY"},"value":{"type":"string","description":"Variable value.","x-example":"myPa$$word1"},"resourceType":{"type":"string","description":"Service to which the variable belongs. Possible values are \"project\", \"function\"","x-example":"function"},"resourceId":{"type":"string","description":"ID of resource to which the variable belongs. If resourceType is \"project\", it is empty. If resourceType is \"function\", it is ID of the function.","x-example":"myAwesomeFunction"}},"required":["$id","$createdAt","$updatedAt","key","value","resourceType","resourceId"]},"country":{"description":"Country","type":"object","properties":{"name":{"type":"string","description":"Country name.","x-example":"United States"},"code":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"}},"required":["name","code"]},"continent":{"description":"Continent","type":"object","properties":{"name":{"type":"string","description":"Continent name.","x-example":"Europe"},"code":{"type":"string","description":"Continent two letter code.","x-example":"EU"}},"required":["name","code"]},"language":{"description":"Language","type":"object","properties":{"name":{"type":"string","description":"Language name.","x-example":"Italian"},"code":{"type":"string","description":"Language two-character ISO 639-1 codes.","x-example":"it"},"nativeName":{"type":"string","description":"Language native name.","x-example":"Italiano"}},"required":["name","code","nativeName"]},"currency":{"description":"Currency","type":"object","properties":{"symbol":{"type":"string","description":"Currency symbol.","x-example":"$"},"name":{"type":"string","description":"Currency name.","x-example":"US dollar"},"symbolNative":{"type":"string","description":"Currency native symbol.","x-example":"$"},"decimalDigits":{"type":"integer","description":"Number of decimal digits.","x-example":2,"format":"int32"},"rounding":{"type":"number","description":"Currency digit rounding.","x-example":0,"format":"double"},"code":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format.","x-example":"USD"},"namePlural":{"type":"string","description":"Currency plural name","x-example":"US dollars"}},"required":["symbol","name","symbolNative","decimalDigits","rounding","code","namePlural"]},"phone":{"description":"Phone","type":"object","properties":{"code":{"type":"string","description":"Phone code.","x-example":"+1"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["code","countryCode","countryName"]},"healthAntivirus":{"description":"Health Antivirus","type":"object","properties":{"version":{"type":"string","description":"Antivirus version.","x-example":"1.0.0"},"status":{"type":"string","description":"Antivirus status. Possible values can are: `disabled`, `offline`, `online`","x-example":"online"}},"required":["version","status"]},"healthQueue":{"description":"Health Queue","type":"object","properties":{"size":{"type":"integer","description":"Amount of actions in the queue.","x-example":8,"format":"int32"}},"required":["size"]},"healthStatus":{"description":"Health Status","type":"object","properties":{"name":{"type":"string","description":"Name of the service.","x-example":"database"},"ping":{"type":"integer","description":"Duration in milliseconds how long the health check took.","x-example":128,"format":"int32"},"status":{"type":"string","description":"Service status. Possible values can are: `pass`, `fail`","x-example":"pass"}},"required":["name","ping","status"]},"healthCertificate":{"description":"Health Certificate","type":"object","properties":{"name":{"type":"string","description":"Certificate name","x-example":"\/CN=www.google.com"},"subjectSN":{"type":"string","description":"Subject SN","x-example":""},"issuerOrganisation":{"type":"string","description":"Issuer organisation","x-example":""},"validFrom":{"type":"string","description":"Valid from","x-example":"1704200998"},"validTo":{"type":"string","description":"Valid to","x-example":"1711458597"},"signatureTypeSN":{"type":"string","description":"Signature type SN","x-example":"RSA-SHA256"}},"required":["name","subjectSN","issuerOrganisation","validFrom","validTo","signatureTypeSN"]},"healthTime":{"description":"Health Time","type":"object","properties":{"remoteTime":{"type":"integer","description":"Current unix timestamp on trustful remote server.","x-example":1639490751,"format":"int32"},"localTime":{"type":"integer","description":"Current unix timestamp of local server where Appwrite runs.","x-example":1639490844,"format":"int32"},"diff":{"type":"integer","description":"Difference of unix remote and local timestamps in milliseconds.","x-example":93,"format":"int32"}},"required":["remoteTime","localTime","diff"]},"headers":{"description":"Headers","type":"object","properties":{"name":{"type":"string","description":"Header name.","x-example":"Content-Type"},"value":{"type":"string","description":"Header value.","x-example":"application\/json"}},"required":["name","value"]},"mfaChallenge":{"description":"MFA Challenge","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","userId","expire"]},"mfaType":{"description":"MFAType","type":"object","properties":{"backups":{"type":"array","description":"Backup codes.","items":{"type":"string"},"x-example":true},"secret":{"type":"string","description":"Secret token used for TOTP factor.","x-example":true},"uri":{"type":"string","description":"URI for authenticator apps.","x-example":true}},"required":["backups","secret","uri"]},"mfaFactors":{"description":"MFAFactors","type":"object","properties":{"totp":{"type":"boolean","description":"TOTP","x-example":true},"phone":{"type":"boolean","description":"Phone","x-example":true},"email":{"type":"boolean","description":"Email","x-example":true}},"required":["totp","phone","email"]},"provider":{"description":"Provider","type":"object","properties":{"$id":{"type":"string","description":"Provider ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Provider creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Provider update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"The name for the provider instance.","x-example":"Mailgun"},"provider":{"type":"string","description":"The name of the provider service.","x-example":"mailgun"},"enabled":{"type":"boolean","description":"Is provider enabled?","x-example":true},"type":{"type":"string","description":"Type of provider.","x-example":"sms"},"credentials":{"type":"object","description":"Provider credentials.","x-example":{"key":"123456789"}},"options":{"type":"object","description":"Provider options.","x-example":{"from":"sender-email@mydomain"},"nullable":true}},"required":["$id","$createdAt","$updatedAt","name","provider","enabled","type","credentials"]},"message":{"description":"Message","type":"object","properties":{"$id":{"type":"string","description":"Message ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Message creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Message update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerType":{"type":"string","description":"Message provider type.","x-example":"email"},"topics":{"type":"array","description":"Topic IDs set as recipients.","items":{"type":"string"},"x-example":["5e5ea5c16897e"]},"users":{"type":"array","description":"User IDs set as recipients.","items":{"type":"string"},"x-example":["5e5ea5c16897e"]},"targets":{"type":"array","description":"Target IDs set as recipients.","items":{"type":"string"},"x-example":["5e5ea5c16897e"]},"scheduledAt":{"type":"string","description":"The scheduled time for message.","x-example":"2020-10-15T06:38:00.000+00:00","nullable":true},"deliveredAt":{"type":"string","description":"The time when the message was delivered.","x-example":"2020-10-15T06:38:00.000+00:00","nullable":true},"deliveryErrors":{"type":"array","description":"Delivery errors if any.","items":{"type":"string"},"x-example":["Failed to send message to target 5e5ea5c16897e: Credentials not valid."],"nullable":true},"deliveredTotal":{"type":"integer","description":"Number of recipients the message was delivered to.","x-example":1,"format":"int32"},"data":{"type":"object","description":"Data of the message.","x-example":{"subject":"Welcome to Appwrite","content":"Hi there, welcome to Appwrite family."}},"status":{"type":"string","description":"Status of delivery.","x-example":"Message status can be one of the following: processing, sent, cancelled, failed."}},"required":["$id","$createdAt","$updatedAt","providerType","topics","users","targets","deliveredTotal","data","status"]},"topic":{"description":"Topic","type":"object","properties":{"$id":{"type":"string","description":"Topic ID.","x-example":"259125845563242502"},"$createdAt":{"type":"string","description":"Topic creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Topic update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"The name of the topic.","x-example":"events"},"total":{"type":"integer","description":"Total count of subscribers subscribed to topic.","x-example":100,"format":"int32"},"subscribe":{"type":"array","description":"Subscribe permissions.","items":{"type":"string"},"x-example":"users"}},"required":["$id","$createdAt","$updatedAt","name","total","subscribe"]},"subscriber":{"description":"Subscriber","type":"object","properties":{"$id":{"type":"string","description":"Subscriber ID.","x-example":"259125845563242502"},"$createdAt":{"type":"string","description":"Subscriber creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Subscriber update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"targetId":{"type":"string","description":"Target ID.","x-example":"259125845563242502"},"target":{"type":"object","description":"Target.","x-example":{"$id":"259125845563242502","$createdAt":"2020-10-15T06:38:00.000+00:00","$updatedAt":"2020-10-15T06:38:00.000+00:00","providerType":"email","providerId":"259125845563242502","name":"ageon-app-email","identifier":"random-mail@email.org","userId":"5e5ea5c16897e"},"items":{"$ref":"#\/components\/schemas\/target"}},"userId":{"type":"string","description":"Topic ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User Name.","x-example":"Aegon Targaryen"},"topicId":{"type":"string","description":"Topic ID.","x-example":"259125845563242502"},"providerType":{"type":"string","description":"The target provider type. Can be one of the following: `email`, `sms` or `push`.","x-example":"email"}},"required":["$id","$createdAt","$updatedAt","targetId","target","userId","userName","topicId","providerType"]},"target":{"description":"Target","type":"object","properties":{"$id":{"type":"string","description":"Target ID.","x-example":"259125845563242502"},"$createdAt":{"type":"string","description":"Target creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Target update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Target Name.","x-example":"Aegon apple token"},"userId":{"type":"string","description":"User ID.","x-example":"259125845563242502"},"providerId":{"type":"string","description":"Provider ID.","x-example":"259125845563242502","nullable":true},"providerType":{"type":"string","description":"The target provider type. Can be one of the following: `email`, `sms` or `push`.","x-example":"email"},"identifier":{"type":"string","description":"The target identifier.","x-example":"token"}},"required":["$id","$createdAt","$updatedAt","name","userId","providerType","identifier"]}},"securitySchemes":{"Project":{"type":"apiKey","name":"X-Appwrite-Project","description":"Your project ID","in":"header","x-appwrite":{"demo":"5df5acd0d48c2"}},"Key":{"type":"apiKey","name":"X-Appwrite-Key","description":"Your secret API key","in":"header","x-appwrite":{"demo":"919c2d18fb5d4...a2ae413da83346ad2"}},"JWT":{"type":"apiKey","name":"X-Appwrite-JWT","description":"Your secret JSON Web Token","in":"header"},"Locale":{"type":"apiKey","name":"X-Appwrite-Locale","description":"","in":"header","x-appwrite":{"demo":"en"}},"Session":{"type":"apiKey","name":"X-Appwrite-Session","description":"The user session to authenticate with","in":"header"},"ForwardedFor":{"type":"apiKey","name":"X-Forwarded-For","description":"The IP address of the client that made the request","in":"header"},"ForwardedUserAgent":{"type":"apiKey","name":"X-Forwarded-User-Agent","description":"The user agent string of the client that made the request","in":"header"}}},"externalDocs":{"description":"Full API docs, specs and tutorials","url":"https:\/\/appwrite.io\/docs"}} \ No newline at end of file +{"openapi":"3.0.0","info":{"version":"1.5.0","title":"Appwrite","description":"Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https:\/\/appwrite.io\/docs](https:\/\/appwrite.io\/docs)","termsOfService":"https:\/\/appwrite.io\/policy\/terms","contact":{"name":"Appwrite Team","url":"https:\/\/appwrite.io\/support","email":"team@appwrite.io"},"license":{"name":"BSD-3-Clause","url":"https:\/\/raw.githubusercontent.com\/appwrite\/appwrite\/master\/LICENSE"}},"servers":[{"url":"https:\/\/cloud.appwrite.io\/v1"}],"paths":{"\/account":{"get":{"summary":"Get account","operationId":"accountGet","tags":["account"],"description":"Get the currently logged in user.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"get","weight":22,"cookies":false,"type":"","demo":"account\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]},"post":{"summary":"Create account","operationId":"accountCreate","tags":["account"],"description":"Use this endpoint to allow a new user to register a new account in your project. After the user registration completes successfully, you can use the [\/account\/verfication](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createVerification) route to start verifying the user email address. To allow the new user to login to their new account, you need to create a new [account session](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createEmailSession).","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"create","weight":7,"cookies":false,"type":"","demo":"account\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"New user password. Must be between 8 and 256 chars.","x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/account\/email":{"patch":{"summary":"Update email","operationId":"accountUpdateEmail","tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateEmail","weight":29,"cookies":false,"type":"","demo":"account\/update-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","x-example":"password"}},"required":["email","password"]}}}}}},"\/account\/identities":{"get":{"summary":"List Identities","operationId":"accountListIdentities","tags":["account"],"description":"Get the list of identities for the currently logged in user.","responses":{"200":{"description":"Identities List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/identityList"}}}}},"x-appwrite":{"method":"listIdentities","weight":13,"cookies":false,"type":"","demo":"account\/list-identities.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-identities.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/identities","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, provider, providerUid, providerEmail, providerAccessTokenExpiry","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/identities\/{identityId}":{"delete":{"summary":"Delete identity","operationId":"accountDeleteIdentity","tags":["account"],"description":"Delete an identity by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIdentity","weight":14,"cookies":false,"type":"","demo":"account\/delete-identity.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-identity.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"identityId","description":"Identity ID.","required":true,"schema":{"type":"string","x-example":"[IDENTITY_ID]"},"in":"path"}]}},"\/account\/jwt":{"post":{"summary":"Create JWT","operationId":"accountCreateJWT","tags":["account"],"description":"Use this endpoint to create a JSON Web Token. You can use the resulting JWT to authenticate on behalf of the current user when working with the Appwrite server-side API and SDKs. The JWT secret is valid for 15 minutes from its creation and will be invalid if the user will logout in that time frame.","responses":{"201":{"description":"JWT","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/jwt"}}}}},"x-appwrite":{"method":"createJWT","weight":21,"cookies":false,"type":"","demo":"account\/create-j-w-t.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-jwt.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"accounts.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"List logs","operationId":"accountListLogs","tags":["account"],"description":"Get the list of latest security activity logs for the currently logged in user. Each log returns user IP address, location and date and time of log.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listLogs","weight":25,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/mfa":{"patch":{"summary":"Update MFA","operationId":"accountUpdateMFA","tags":["account"],"description":"","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateMFA","weight":42,"cookies":false,"type":"","demo":"account\/update-m-f-a.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-mfa.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"mfa":{"type":"boolean","description":"Enable or disable MFA.","x-example":false}},"required":["mfa"]}}}}}},"\/account\/mfa\/challenge":{"post":{"summary":"Create 2FA Challenge","operationId":"accountCreate2FAChallenge","tags":["account"],"description":"","responses":{"201":{"description":"MFA Challenge","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/mfaChallenge"}}}}},"x-appwrite":{"method":"create2FAChallenge","weight":47,"cookies":false,"type":"","demo":"account\/create2f-a-challenge.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-2fa-challenge.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},token:{param-token}","scope":"accounts.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"factor":{"type":"string","description":"Factor used for verification.","x-example":"totp","enum":["totp","phone","email"],"x-enum-name":null,"x-enum-keys":[]}},"required":["factor"]}}}}},"put":{"summary":"Create MFA Challenge (confirmation)","operationId":"accountUpdateChallenge","tags":["account"],"description":"","responses":{"204":{"description":"No content","content":{"":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateChallenge","weight":48,"cookies":false,"type":"","demo":"account\/update-challenge.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-challenge.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"challengeId":{"type":"string","description":"ID of the challenge.","x-example":"[CHALLENGE_ID]"},"otp":{"type":"string","description":"Valid verification token.","x-example":"[OTP]"}},"required":["challengeId","otp"]}}}}}},"\/account\/mfa\/factors":{"get":{"summary":"List Factors","operationId":"accountListFactors","tags":["account"],"description":"","responses":{"200":{"description":"MFAFactors","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/mfaFactors"}}}}},"x-appwrite":{"method":"listFactors","weight":43,"cookies":false,"type":"","demo":"account\/list-factors.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-factors.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/account\/mfa\/{type}":{"post":{"summary":"Add Authenticator","operationId":"accountAddAuthenticator","tags":["account"],"description":"","responses":{"200":{"description":"MFAType","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/mfaType"}}}}},"x-appwrite":{"method":"addAuthenticator","weight":44,"cookies":false,"type":"","demo":"account\/add-authenticator.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/add-authenticator.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"type","description":"Type of authenticator.","required":true,"schema":{"type":"string","x-example":"totp","enum":["totp"],"x-enum-name":null,"x-enum-keys":[]},"in":"path"}]},"put":{"summary":"Verify Authenticator","operationId":"accountVerifyAuthenticator","tags":["account"],"description":"","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"verifyAuthenticator","weight":45,"cookies":false,"type":"","demo":"account\/verify-authenticator.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/verify-authenticator.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"type","description":"Type of authenticator.","required":true,"schema":{"type":"string","x-example":"totp","enum":["totp"],"x-enum-name":null,"x-enum-keys":[]},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"otp":{"type":"string","description":"Valid verification token.","x-example":"[OTP]"}},"required":["otp"]}}}}},"delete":{"summary":"Delete Authenticator","operationId":"accountDeleteAuthenticator","tags":["account"],"description":"","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"deleteAuthenticator","weight":46,"cookies":false,"type":"","demo":"account\/delete-authenticator.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-mfa.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"type","description":"Type of authenticator.","required":true,"schema":{"type":"string","x-example":"totp","enum":["totp"],"x-enum-name":null,"x-enum-keys":[]},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"otp":{"type":"string","description":"Valid verification token.","x-example":"[OTP]"}},"required":["otp"]}}}}}},"\/account\/name":{"patch":{"summary":"Update name","operationId":"accountUpdateName","tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateName","weight":27,"cookies":false,"type":"","demo":"account\/update-name.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-name.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["name"]}}}}}},"\/account\/password":{"patch":{"summary":"Update password","operationId":"accountUpdatePassword","tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePassword","weight":28,"cookies":false,"type":"","demo":"account\/update-password.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-password.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"password":{"type":"string","description":"New user password. Must be at least 8 chars.","x-example":null},"oldPassword":{"type":"string","description":"Current user password. Must be at least 8 chars.","x-example":"password"}},"required":["password"]}}}}}},"\/account\/phone":{"patch":{"summary":"Update phone","operationId":"accountUpdatePhone","tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createPhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePhone","weight":30,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","x-example":"password"}},"required":["phone","password"]}}}}}},"\/account\/prefs":{"get":{"summary":"Get account preferences","operationId":"accountGetPrefs","tags":["account"],"description":"Get the preferences as a key-value object for the currently logged in user.","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"getPrefs","weight":23,"cookies":false,"type":"","demo":"account\/get-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/prefs","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]},"patch":{"summary":"Update preferences","operationId":"accountUpdatePrefs","tags":["account"],"description":"Update currently logged in user account preferences. The object you pass is stored as is, and replaces any previous value. The maximum allowed prefs size is 64kB and throws error if exceeded.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePrefs","weight":31,"cookies":false,"type":"","demo":"account\/update-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/prefs","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"prefs":{"type":"object","description":"Prefs key-value JSON object.","x-example":"{}"}},"required":["prefs"]}}}}}},"\/account\/recovery":{"post":{"summary":"Create password recovery","operationId":"accountCreateRecovery","tags":["account"],"description":"Sends the user an email with a temporary secret key for password reset. When the user clicks the confirmation link he is redirected back to your app password reset URL with the secret key and email address values attached to the URL query string. Use the query string params to submit a request to the [PUT \/account\/recovery](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateRecovery) endpoint to complete the process. The verification link sent to the user's email address is valid for 1 hour.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createRecovery","weight":36,"cookies":false,"type":"","demo":"account\/create-recovery.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-recovery.md","rate-limit":10,"rate-time":3600,"rate-key":["url:{url},email:{param-email}","url:{url},ip:{ip}"],"scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"url":{"type":"string","description":"URL to redirect the user back to your app from the recovery email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"}},"required":["email","url"]}}}}},"put":{"summary":"Create password recovery (confirmation)","operationId":"accountUpdateRecovery","tags":["account"],"description":"Use this endpoint to complete the user account password reset. Both the **userId** and **secret** arguments will be passed as query parameters to the redirect URL you have provided when sending your request to the [POST \/account\/recovery](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createRecovery) endpoint.\n\nPlease note that in order to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) the only valid redirect URLs are the ones from domains you have set when adding your platforms in the console interface.","responses":{"200":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"updateRecovery","weight":37,"cookies":false,"type":"","demo":"account\/update-recovery.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-recovery.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid reset token.","x-example":"[SECRET]"},"password":{"type":"string","description":"New user password. Must be between 8 and 256 chars.","x-example":null}},"required":["userId","secret","password"]}}}}}},"\/account\/sessions":{"get":{"summary":"List sessions","operationId":"accountListSessions","tags":["account"],"description":"Get the list of active sessions across different devices for the currently logged in user.","responses":{"200":{"description":"Sessions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/sessionList"}}}}},"x-appwrite":{"method":"listSessions","weight":24,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/sessions","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]},"delete":{"summary":"Delete sessions","operationId":"accountDeleteSessions","tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":35,"cookies":false,"type":"","demo":"account\/delete-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-sessions.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/account\/sessions\/anonymous":{"post":{"summary":"Create anonymous session","operationId":"accountCreateAnonymousSession","tags":["account"],"description":"Use this endpoint to allow a new user to register an anonymous account in your project. This route will also create a new session for the user. To allow the new user to convert an anonymous account to a normal account, you need to update its [email and password](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateEmail) or create an [OAuth2 session](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#CreateOAuth2Session).","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"createAnonymousSession","weight":20,"cookies":false,"type":"","demo":"account\/create-anonymous-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-anonymous.md","rate-limit":50,"rate-time":3600,"rate-key":"ip:{ip}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/sessions\/email":{"post":{"summary":"Create email password session","operationId":"accountCreateEmailPasswordSession","tags":["account"],"description":"Allow the user to login into their account by providing a valid email and password combination. This route will create a new session for the user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"createEmailPasswordSession","weight":8,"cookies":false,"type":"","demo":"account\/create-email-password-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-email-password.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","x-example":"password"}},"required":["email","password"]}}}}}},"\/account\/sessions\/magic-url":{"put":{"summary":"Create session (deprecated)","operationId":"accountUpdateMagicURLSession","tags":["account"],"description":"Use this endpoint to create a session from token. Provide the **userId** and **secret** parameters from the successful response of authentication flows initiated by token creation. For example, magic URL and phone login.","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateMagicURLSession","weight":17,"cookies":false,"type":"","demo":"account\/update-magic-u-r-l-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session.md","rate-limit":10,"rate-time":3600,"rate-key":"ip:{ip},userId:{param-userId}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/account\/sessions\/oauth2\/{provider}":{"get":{"summary":"Create OAuth2 session","operationId":"accountCreateOAuth2Session","tags":["account"],"description":"Allow the user to login to their account using the OAuth2 provider of their choice. Each OAuth2 provider should be enabled from the Appwrite console first. Use the success and failure arguments to provide a redirect URL's back to your app when login is completed.\n\nIf there is already an active session, the new session will be attached to the logged-in account. If there are no active sessions, the server will attempt to look for a user with the same email address as the email received from the OAuth2 provider and attach the new session to the existing user. If no matching user is found - the server will create a new user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).\n","responses":{"301":{"description":"File"}},"x-appwrite":{"method":"createOAuth2Session","weight":9,"cookies":false,"type":"webAuth","demo":"account\/create-o-auth2session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-oauth2.md","rate-limit":50,"rate-time":3600,"rate-key":"ip:{ip}","scope":"sessions.write","platforms":["client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"provider","description":"OAuth2 Provider. Currently, supported providers are: amazon, apple, auth0, authentik, autodesk, bitbucket, bitly, box, dailymotion, discord, disqus, dropbox, etsy, facebook, github, gitlab, google, linkedin, microsoft, notion, oidc, okta, paypal, paypalSandbox, podio, salesforce, slack, spotify, stripe, tradeshift, tradeshiftBox, twitch, wordpress, yahoo, yammer, yandex, zoho, zoom.","required":true,"schema":{"type":"string","x-example":"amazon","enum":["amazon","apple","auth0","authentik","autodesk","bitbucket","bitly","box","dailymotion","discord","disqus","dropbox","etsy","facebook","github","gitlab","google","linkedin","microsoft","notion","oidc","okta","paypal","paypalSandbox","podio","salesforce","slack","spotify","stripe","tradeshift","tradeshiftBox","twitch","wordpress","yahoo","yammer","yandex","zoho","zoom","mock"],"x-enum-name":"OAuthProvider","x-enum-keys":[]},"in":"path"},{"name":"success","description":"URL to redirect back to your app after a successful login attempt. Only URLs from hostnames in your project's platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","required":false,"schema":{"type":"string","format":"url","x-example":"https:\/\/example.com","default":""},"in":"query"},{"name":"failure","description":"URL to redirect back to your app after a failed login attempt. Only URLs from hostnames in your project's platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","required":false,"schema":{"type":"string","format":"url","x-example":"https:\/\/example.com","default":""},"in":"query"},{"name":"token","description":"Include token credentials in the final redirect, useful for server-side integrations, or when cookies are not available.","required":false,"schema":{"type":"boolean","x-example":false,"default":false},"in":"query"},{"name":"scopes","description":"A list of custom OAuth2 scopes. Check each provider internal docs for a list of supported scopes. Maximum of 100 scopes are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/sessions\/token":{"post":{"summary":"Create session","operationId":"accountCreateSession","tags":["account"],"description":"Use this endpoint to create a session from token. Provide the **userId** and **secret** parameters from the successful response of authentication flows initiated by token creation. For example, magic URL and phone login.","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"createSession","weight":18,"cookies":false,"type":"","demo":"account\/create-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session.md","rate-limit":10,"rate-time":3600,"rate-key":"ip:{ip},userId:{param-userId}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Secret of a token generated by login methods. For example, the `createMagicURLToken` or `createPhoneToken` methods.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/account\/sessions\/{sessionId}":{"get":{"summary":"Get session","operationId":"accountGetSession","tags":["account"],"description":"Use this endpoint to get a logged in user's session using a Session ID. Inputting 'current' will return the current session being used.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"getSession","weight":26,"cookies":false,"type":"","demo":"account\/get-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-session.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/sessions","offline-key":"{sessionId}","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to get the current device session.","required":true,"schema":{"type":"string","x-example":"[SESSION_ID]"},"in":"path"}]},"patch":{"summary":"Update (or renew) a session","operationId":"accountUpdateSession","tags":["account"],"description":"Extend session's expiry to increase it's lifespan. Extending a session is useful when session length is short such as 5 minutes.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateSession","weight":34,"cookies":false,"type":"","demo":"account\/update-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-session.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to update the current device session.","required":true,"schema":{"type":"string","x-example":"[SESSION_ID]"},"in":"path"}]},"delete":{"summary":"Delete session","operationId":"accountDeleteSession","tags":["account"],"description":"Logout the user. Use 'current' as the session ID to logout on this device, use a session ID to logout on another device. If you're looking to logout the user on all devices, use [Delete Sessions](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#deleteSessions) instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSession","weight":33,"cookies":false,"type":"","demo":"account\/delete-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-session.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to delete the current device session.","required":true,"schema":{"type":"string","x-example":"[SESSION_ID]"},"in":"path"}]}},"\/account\/status":{"patch":{"summary":"Update status","operationId":"accountUpdateStatus","tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateStatus","weight":32,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/account\/tokens\/email":{"post":{"summary":"Create email token (OTP)","operationId":"accountCreateEmailToken","tags":["account"],"description":"Sends the user an email with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [POST \/v1\/account\/sessions\/token](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createSession) endpoint to complete the login process. The secret sent to the user's email is valid for 15 minutes.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createEmailToken","weight":16,"cookies":false,"type":"","demo":"account\/create-email-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-token-email.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"phrase":{"type":"boolean","description":"Toggle for security phrase. If enabled, email will be send with a randomly generated phrase and the phrase will also be included in the response. Confirming phrases match increases the security of your authentication flow.","x-example":false}},"required":["userId","email"]}}}}}},"\/account\/tokens\/magic-url":{"post":{"summary":"Create magic URL token","operationId":"accountCreateMagicURLToken","tags":["account"],"description":"Sends the user an email with a secret key for creating a session. If the provided user ID has not been registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [POST \/v1\/account\/sessions\/token](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createSession) endpoint to complete the login process. The link sent to the user's email address is valid for 1 hour. If you are on a mobile device you can leave the URL parameter empty, so that the login completion will be handled by your Appwrite instance by default.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).\n","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createMagicURLToken","weight":15,"cookies":false,"type":"","demo":"account\/create-magic-u-r-l-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-token-magic-url.md","rate-limit":60,"rate-time":3600,"rate-key":["url:{url},email:{param-email}","url:{url},ip:{ip}"],"scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"url":{"type":"string","description":"URL to redirect the user back to your app from the magic URL login. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"},"phrase":{"type":"boolean","description":"Toggle for security phrase. If enabled, email will be send with a randomly generated phrase and the phrase will also be included in the response. Confirming phrases match increases the security of your authentication flow.","x-example":false}},"required":["userId","email"]}}}}}},"\/account\/tokens\/phone":{"post":{"summary":"Create phone token","operationId":"accountCreatePhoneToken","tags":["account"],"description":"Sends the user an SMS with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [POST \/v1\/account\/sessions\/token](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createSession) endpoint to complete the login process. The secret sent to the user's phone is valid for 15 minutes.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createPhoneToken","weight":19,"cookies":false,"type":"","demo":"account\/create-phone-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-token-phone.md","rate-limit":10,"rate-time":3600,"rate-key":["url:{url},phone:{param-phone}","url:{url},ip:{ip}"],"scope":"sessions.write","platforms":["server","client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"}},"required":["userId","phone"]}}}}}},"\/account\/verification":{"post":{"summary":"Create email verification","operationId":"accountCreateVerification","tags":["account"],"description":"Use this endpoint to send a verification message to your user email address to confirm they are the valid owners of that address. Both the **userId** and **secret** arguments will be passed as query parameters to the URL you have provided to be attached to the verification email. The provided URL should redirect the user back to your app and allow you to complete the verification process by verifying both the **userId** and **secret** parameters. Learn more about how to [complete the verification process](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateVerification). The verification link sent to the user's email address is valid for 7 days.\n\nPlease note that in order to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md), the only valid redirect URLs are the ones from domains you have set when adding your platforms in the console interface.\n","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createVerification","weight":38,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"url":{"type":"string","description":"URL to redirect the user back to your app from the verification email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"}},"required":["url"]}}}}},"put":{"summary":"Create email verification (confirmation)","operationId":"accountUpdateVerification","tags":["account"],"description":"Use this endpoint to complete the user email verification process. Use both the **userId** and **secret** parameters that were attached to your app URL to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"updateVerification","weight":39,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/account\/verification\/phone":{"post":{"summary":"Create phone verification","operationId":"accountCreatePhoneVerification","tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updatePhone) endpoint. Learn more about how to [complete the verification process](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createPhoneVerification","weight":40,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":["url:{url},userId:{userId}","url:{url},ip:{ip}"],"scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]},"put":{"summary":"Create phone verification (confirmation)","operationId":"accountUpdatePhoneVerification","tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"updatePhoneVerification","weight":41,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/avatars\/browsers\/{code}":{"get":{"summary":"Get browser icon","operationId":"avatarsGetBrowser","tags":["avatars"],"description":"You can use this endpoint to show different browser icons to your users. The code argument receives the browser code as it appears in your user [GET \/account\/sessions](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#getSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getBrowser","weight":54,"cookies":false,"type":"location","demo":"avatars\/get-browser.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-browser.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Browser Code.","required":true,"schema":{"type":"string","x-example":"aa","enum":["aa","an","ch","ci","cm","cr","ff","sf","mf","ps","oi","om","op","on"],"x-enum-name":"Browser","x-enum-keys":["Avant Browser","Android WebView Beta","Google Chrome","Google Chrome (iOS)","Google Chrome (Mobile)","Chromium","Mozilla Firefox","Safari","Mobile Safari","Microsoft Edge","Microsoft Edge (iOS)","Opera Mini","Opera","Opera (Next)"]},"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"}]}},"\/avatars\/credit-cards\/{code}":{"get":{"summary":"Get credit card icon","operationId":"avatarsGetCreditCard","tags":["avatars"],"description":"The credit card endpoint will return you the icon of the credit card provider you need. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getCreditCard","weight":53,"cookies":false,"type":"location","demo":"avatars\/get-credit-card.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-credit-card.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Credit Card Code. Possible values: amex, argencard, cabal, censosud, diners, discover, elo, hipercard, jcb, mastercard, naranja, targeta-shopping, union-china-pay, visa, mir, maestro.","required":true,"schema":{"type":"string","x-example":"amex","enum":["amex","argencard","cabal","censosud","diners","discover","elo","hipercard","jcb","mastercard","naranja","targeta-shopping","union-china-pay","visa","mir","maestro"],"x-enum-name":"CreditCard","x-enum-keys":["American Express","Argencard","Cabal","Consosud","Diners Club","Discover","Elo","Hipercard","JCB","Mastercard","Naranja","Tarjeta Shopping","Union China Pay","Visa","MIR","Maestro"]},"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"}]}},"\/avatars\/favicon":{"get":{"summary":"Get favicon","operationId":"avatarsGetFavicon","tags":["avatars"],"description":"Use this endpoint to fetch the favorite icon (AKA favicon) of any remote website URL.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFavicon","weight":57,"cookies":false,"type":"location","demo":"avatars\/get-favicon.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-favicon.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"url","description":"Website URL which you want to fetch the favicon from.","required":true,"schema":{"type":"string","format":"url","x-example":"https:\/\/example.com"},"in":"query"}]}},"\/avatars\/flags\/{code}":{"get":{"summary":"Get country flag","operationId":"avatarsGetFlag","tags":["avatars"],"description":"You can use this endpoint to show different country flags icons to your users. The code argument receives the 2 letter country code. Use width, height and quality arguments to change the output settings. Country codes follow the [ISO 3166-1](https:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFlag","weight":55,"cookies":false,"type":"location","demo":"avatars\/get-flag.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-flag.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Country Code. ISO Alpha-2 country code format.","required":true,"schema":{"type":"string","x-example":"af","enum":["af","ao","al","ad","ae","ar","am","ag","au","at","az","bi","be","bj","bf","bd","bg","bh","bs","ba","by","bz","bo","br","bb","bn","bt","bw","cf","ca","ch","cl","cn","ci","cm","cd","cg","co","km","cv","cr","cu","cy","cz","de","dj","dm","dk","do","dz","ec","eg","er","es","ee","et","fi","fj","fr","fm","ga","gb","ge","gh","gn","gm","gw","gq","gr","gd","gt","gy","hn","hr","ht","hu","id","in","ie","ir","iq","is","il","it","jm","jo","jp","kz","ke","kg","kh","ki","kn","kr","kw","la","lb","lr","ly","lc","li","lk","ls","lt","lu","lv","ma","mc","md","mg","mv","mx","mh","mk","ml","mt","mm","me","mn","mz","mr","mu","mw","my","na","ne","ng","ni","nl","no","np","nr","nz","om","pk","pa","pe","ph","pw","pg","pl","kp","pt","py","qa","ro","ru","rw","sa","sd","sn","sg","sb","sl","sv","sm","so","rs","ss","st","sr","sk","si","se","sz","sc","sy","td","tg","th","tj","tm","tl","to","tt","tn","tr","tv","tz","ug","ua","uy","us","uz","va","vc","ve","vn","vu","ws","ye","za","zm","zw"],"x-enum-name":"Flag","x-enum-keys":["Afghanistan","Angola","Albania","Andorra","United Arab Emirates","Argentina","Armenia","Antigua and Barbuda","Australia","Austria","Azerbaijan","Burundi","Belgium","Benin","Burkina Faso","Bangladesh","Bulgaria","Bahrain","Bahamas","Bosnia and Herzegovina","Belarus","Belize","Bolivia","Brazil","Barbados","Brunei Darussalam","Bhutan","Botswana","Central African Republic","Canada","Switzerland","Chile","China","C\u00f4te d'Ivoire","Cameroon","Democratic Republic of the Congo","Republic of the Congo","Colombia","Comoros","Cape Verde","Costa Rica","Cuba","Cyprus","Czech Republic","Germany","Djibouti","Dominica","Denmark","Dominican Republic","Algeria","Ecuador","Egypt","Eritrea","Spain","Estonia","Ethiopia","Finland","Fiji","France","Micronesia (Federated States of)","Gabon","United Kingdom","Georgia","Ghana","Guinea","Gambia","Guinea-Bissau","Equatorial Guinea","Greece","Grenada","Guatemala","Guyana","Honduras","Croatia","Haiti","Hungary","Indonesia","India","Ireland","Iran (Islamic Republic of)","Iraq","Iceland","Israel","Italy","Jamaica","Jordan","Japan","Kazakhstan","Kenya","Kyrgyzstan","Cambodia","Kiribati","Saint Kitts and Nevis","South Korea","Kuwait","Lao People's Democratic Republic","Lebanon","Liberia","Libya","Saint Lucia","Liechtenstein","Sri Lanka","Lesotho","Lithuania","Luxembourg","Latvia","Morocco","Monaco","Moldova","Madagascar","Maldives","Mexico","Marshall Islands","North Macedonia","Mali","Malta","Myanmar","Montenegro","Mongolia","Mozambique","Mauritania","Mauritius","Malawi","Malaysia","Namibia","Niger","Nigeria","Nicaragua","Netherlands","Norway","Nepal","Nauru","New Zealand","Oman","Pakistan","Panama","Peru","Philippines","Palau","Papua New Guinea","Poland","North Korea","Portugal","Paraguay","Qatar","Romania","Russia","Rwanda","Saudi Arabia","Sudan","Senegal","Singapore","Solomon Islands","Sierra Leone","El Salvador","San Marino","Somalia","Serbia","South Sudan","Sao Tome and Principe","Suriname","Slovakia","Slovenia","Sweden","Eswatini","Seychelles","Syria","Chad","Togo","Thailand","Tajikistan","Turkmenistan","Timor-Leste","Tonga","Trinidad and Tobago","Tunisia","Turkey","Tuvalu","Tanzania","Uganda","Ukraine","Uruguay","United States","Uzbekistan","Vatican City","Saint Vincent and the Grenadines","Venezuela","Vietnam","Vanuatu","Samoa","Yemen","South Africa","Zambia","Zimbabwe"]},"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"}]}},"\/avatars\/image":{"get":{"summary":"Get image from URL","operationId":"avatarsGetImage","tags":["avatars"],"description":"Use this endpoint to fetch a remote image URL and crop it to any image size you want. This endpoint is very useful if you need to crop and display remote images in your app or in case you want to make sure a 3rd party image is properly served using a TLS protocol.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getImage","weight":56,"cookies":false,"type":"location","demo":"avatars\/get-image.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-image.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"url","description":"Image URL which you want to crop.","required":true,"schema":{"type":"string","format":"url","x-example":"https:\/\/example.com"},"in":"query"},{"name":"width","description":"Resize preview image width, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get user initials","operationId":"avatarsGetInitials","tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getInitials","weight":59,"cookies":false,"type":"location","demo":"avatars\/get-initials.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-initials.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"name","description":"Full Name. When empty, current user name or email will be used. Max length: 128 chars.","required":false,"schema":{"type":"string","x-example":"[NAME]","default":""},"in":"query"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":500},"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":500},"in":"query"},{"name":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"schema":{"type":"string","default":""},"in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR code","operationId":"avatarsGetQR","tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getQR","weight":58,"cookies":false,"type":"location","demo":"avatars\/get-q-r.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-qr.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"text","description":"Plain text to be converted to QR code image.","required":true,"schema":{"type":"string","x-example":"[TEXT]"},"in":"query"},{"name":"size","description":"QR code size. Pass an integer between 1 to 1000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":1,"default":400},"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":1},"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"schema":{"type":"boolean","x-example":false,"default":false},"in":"query"}]}},"\/databases":{"get":{"summary":"List databases","operationId":"databasesList","tags":["databases"],"description":"Get a list of all databases from the current Appwrite project. You can use the search parameter to filter your results.","responses":{"200":{"description":"Databases List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/databaseList"}}}}},"x-appwrite":{"method":"list","weight":64,"cookies":false,"type":"","demo":"databases\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create database","operationId":"databasesCreate","tags":["databases"],"description":"Create a new Database.\n","responses":{"201":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"create","weight":63,"cookies":false,"type":"","demo":"databases\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"databaseId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[DATABASE_ID]"},"name":{"type":"string","description":"Database name. Max length: 128 chars.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Is the database enabled? When set to 'disabled', users cannot access the database but Server SDKs with an API key can still read and write to the database. No data is lost when this is toggled.","x-example":false}},"required":["databaseId","name"]}}}}}},"\/databases\/{databaseId}":{"get":{"summary":"Get database","operationId":"databasesGet","tags":["databases"],"description":"Get a database by its unique ID. This endpoint response returns a JSON object with the database metadata.","responses":{"200":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"get","weight":65,"cookies":false,"type":"","demo":"databases\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}]},"put":{"summary":"Update database","operationId":"databasesUpdate","tags":["databases"],"description":"Update a database by its unique ID.","responses":{"200":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"update","weight":67,"cookies":false,"type":"","demo":"databases\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Database name. Max length: 128 chars.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Is database enabled? When set to 'disabled', users cannot access the database but Server SDKs with an API key can still read and write to the database. No data is lost when this is toggled.","x-example":false}},"required":["name"]}}}}},"delete":{"summary":"Delete database","operationId":"databasesDelete","tags":["databases"],"description":"Delete a database by its unique ID. Only API keys with with databases.write scope can delete a database.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":68,"cookies":false,"type":"","demo":"databases\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections":{"get":{"summary":"List collections","operationId":"databasesListCollections","tags":["databases"],"description":"Get a list of all collections that belong to the provided databaseId. You can use the search parameter to filter your results.","responses":{"200":{"description":"Collections List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collectionList"}}}}},"x-appwrite":{"method":"listCollections","weight":70,"cookies":false,"type":"","demo":"databases\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, documentSecurity","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create collection","operationId":"databasesCreateCollection","tags":["databases"],"description":"Create a new Collection. Before using this route, you should create a new database resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"createCollection","weight":69,"cookies":false,"type":"","demo":"databases\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permissions strings. By default, no user is granted with any permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":false},"enabled":{"type":"boolean","description":"Is collection enabled? When set to 'disabled', users cannot access the collection but Server SDKs with and API key can still read and write to the collection. No data is lost when this is toggled.","x-example":false}},"required":["collectionId","name"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}":{"get":{"summary":"Get collection","operationId":"databasesGetCollection","tags":["databases"],"description":"Get a collection by its unique ID. This endpoint response returns a JSON object with the collection metadata.","responses":{"200":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"getCollection","weight":71,"cookies":false,"type":"","demo":"databases\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]},"put":{"summary":"Update collection","operationId":"databasesUpdateCollection","tags":["databases"],"description":"Update a collection by its unique ID.","responses":{"200":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"updateCollection","weight":73,"cookies":false,"type":"","demo":"databases\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":false},"enabled":{"type":"boolean","description":"Is collection enabled? When set to 'disabled', users cannot access the collection but Server SDKs with and API key can still read and write to the collection. No data is lost when this is toggled.","x-example":false}},"required":["name"]}}}}},"delete":{"summary":"Delete collection","operationId":"databasesDeleteCollection","tags":["databases"],"description":"Delete a collection by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteCollection","weight":74,"cookies":false,"type":"","demo":"databases\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes":{"get":{"summary":"List attributes","operationId":"databasesListAttributes","tags":["databases"],"description":"","responses":{"200":{"description":"Attributes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeList"}}}}},"x-appwrite":{"method":"listAttributes","weight":85,"cookies":false,"type":"","demo":"databases\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: key, type, size, required, array, status, error","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create boolean attribute","operationId":"databasesCreateBooleanAttribute","tags":["databases"],"description":"Create a boolean attribute.\n","responses":{"202":{"description":"AttributeBoolean","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeBoolean"}}}}},"x-appwrite":{"method":"createBooleanAttribute","weight":82,"cookies":false,"type":"","demo":"databases\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":false},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean\/{key}":{"patch":{"summary":"Update boolean attribute","operationId":"databasesUpdateBooleanAttribute","tags":["databases"],"description":"","responses":{"200":{"description":"AttributeBoolean","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeBoolean"}}}}},"x-appwrite":{"method":"updateBooleanAttribute","weight":94,"cookies":false,"type":"","demo":"databases\/update-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":false,"x-nullable":true}},"required":["required","default"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/datetime":{"post":{"summary":"Create datetime attribute","operationId":"databasesCreateDatetimeAttribute","tags":["databases"],"description":"","responses":{"202":{"description":"AttributeDatetime","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeDatetime"}}}}},"x-appwrite":{"method":"createDatetimeAttribute","weight":83,"cookies":false,"type":"","demo":"databases\/create-datetime-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-datetime-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for the attribute in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/datetime\/{key}":{"patch":{"summary":"Update dateTime attribute","operationId":"databasesUpdateDatetimeAttribute","tags":["databases"],"description":"","responses":{"200":{"description":"AttributeDatetime","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeDatetime"}}}}},"x-appwrite":{"method":"updateDatetimeAttribute","weight":95,"cookies":false,"type":"","demo":"databases\/update-datetime-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-datetime-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null,"x-nullable":true}},"required":["required","default"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create email attribute","operationId":"databasesCreateEmailAttribute","tags":["databases"],"description":"Create an email attribute.\n","responses":{"202":{"description":"AttributeEmail","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeEmail"}}}}},"x-appwrite":{"method":"createEmailAttribute","weight":76,"cookies":false,"type":"","demo":"databases\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"email@example.com"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/email\/{key}":{"patch":{"summary":"Update email attribute","operationId":"databasesUpdateEmailAttribute","tags":["databases"],"description":"Update an email attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeEmail","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeEmail"}}}}},"x-appwrite":{"method":"updateEmailAttribute","weight":88,"cookies":false,"type":"","demo":"databases\/update-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"email@example.com","x-nullable":true}},"required":["required","default"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create enum attribute","operationId":"databasesCreateEnumAttribute","tags":["databases"],"description":"","responses":{"202":{"description":"AttributeEnum","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeEnum"}}}}},"x-appwrite":{"method":"createEnumAttribute","weight":77,"cookies":false,"type":"","demo":"databases\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"elements":{"type":"array","description":"Array of elements in enumerated type. Uses length of longest element to determine size. Maximum of 100 elements are allowed, each 255 characters long.","x-example":null,"items":{"type":"string"}},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","elements","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/enum\/{key}":{"patch":{"summary":"Update enum attribute","operationId":"databasesUpdateEnumAttribute","tags":["databases"],"description":"Update an enum attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeEnum","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeEnum"}}}}},"x-appwrite":{"method":"updateEnumAttribute","weight":89,"cookies":false,"type":"","demo":"databases\/update-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-enum-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"elements":{"type":"array","description":"Array of elements in enumerated type. Uses length of longest element to determine size. Maximum of 100 elements are allowed, each 255 characters long.","x-example":null,"items":{"type":"string"}},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"[DEFAULT]","x-nullable":true}},"required":["elements","required","default"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create float attribute","operationId":"databasesCreateFloatAttribute","tags":["databases"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeFloat","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeFloat"}}}}},"x-appwrite":{"method":"createFloatAttribute","weight":81,"cookies":false,"type":"","demo":"databases\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"min":{"type":"number","description":"Minimum value to enforce on new documents","x-example":null},"max":{"type":"number","description":"Maximum value to enforce on new documents","x-example":null},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/float\/{key}":{"patch":{"summary":"Update float attribute","operationId":"databasesUpdateFloatAttribute","tags":["databases"],"description":"Update a float attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeFloat","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeFloat"}}}}},"x-appwrite":{"method":"updateFloatAttribute","weight":93,"cookies":false,"type":"","demo":"databases\/update-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"min":{"type":"number","description":"Minimum value to enforce on new documents","x-example":null},"max":{"type":"number","description":"Maximum value to enforce on new documents","x-example":null},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null,"x-nullable":true}},"required":["required","min","max","default"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create integer attribute","operationId":"databasesCreateIntegerAttribute","tags":["databases"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeInteger","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeInteger"}}}}},"x-appwrite":{"method":"createIntegerAttribute","weight":80,"cookies":false,"type":"","demo":"databases\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"min":{"type":"integer","description":"Minimum value to enforce on new documents","x-example":null},"max":{"type":"integer","description":"Maximum value to enforce on new documents","x-example":null},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/integer\/{key}":{"patch":{"summary":"Update integer attribute","operationId":"databasesUpdateIntegerAttribute","tags":["databases"],"description":"Update an integer attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeInteger","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeInteger"}}}}},"x-appwrite":{"method":"updateIntegerAttribute","weight":92,"cookies":false,"type":"","demo":"databases\/update-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"min":{"type":"integer","description":"Minimum value to enforce on new documents","x-example":null},"max":{"type":"integer","description":"Maximum value to enforce on new documents","x-example":null},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null,"x-nullable":true}},"required":["required","min","max","default"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP address attribute","operationId":"databasesCreateIpAttribute","tags":["databases"],"description":"Create IP address attribute.\n","responses":{"202":{"description":"AttributeIP","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeIp"}}}}},"x-appwrite":{"method":"createIpAttribute","weight":78,"cookies":false,"type":"","demo":"databases\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/ip\/{key}":{"patch":{"summary":"Update IP address attribute","operationId":"databasesUpdateIpAttribute","tags":["databases"],"description":"Update an ip attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeIP","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeIp"}}}}},"x-appwrite":{"method":"updateIpAttribute","weight":90,"cookies":false,"type":"","demo":"databases\/update-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null,"x-nullable":true}},"required":["required","default"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/relationship":{"post":{"summary":"Create relationship attribute","operationId":"databasesCreateRelationshipAttribute","tags":["databases"],"description":"Create relationship attribute. [Learn more about relationship attributes](https:\/\/appwrite.io\/docs\/databases-relationships#relationship-attributes).\n","responses":{"202":{"description":"AttributeRelationship","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeRelationship"}}}}},"x-appwrite":{"method":"createRelationshipAttribute","weight":84,"cookies":false,"type":"","demo":"databases\/create-relationship-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-relationship-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"relatedCollectionId":{"type":"string","description":"Related Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","x-example":"[RELATED_COLLECTION_ID]"},"type":{"type":"string","description":"Relation type","x-example":"oneToOne","enum":["oneToOne","manyToOne","manyToMany","oneToMany"],"x-enum-name":"RelationshipType","x-enum-keys":[]},"twoWay":{"type":"boolean","description":"Is Two Way?","x-example":false},"key":{"type":"string","description":"Attribute Key.","x-example":null},"twoWayKey":{"type":"string","description":"Two Way Attribute Key.","x-example":null},"onDelete":{"type":"string","description":"Constraints option","x-example":"cascade","enum":["cascade","restrict","setNull"],"x-enum-name":"RelationMutate","x-enum-keys":[]}},"required":["relatedCollectionId","type"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create string attribute","operationId":"databasesCreateStringAttribute","tags":["databases"],"description":"Create a string attribute.\n","responses":{"202":{"description":"AttributeString","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeString"}}}}},"x-appwrite":{"method":"createStringAttribute","weight":75,"cookies":false,"type":"","demo":"databases\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"size":{"type":"integer","description":"Attribute size for text attributes, in number of characters.","x-example":1},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false},"encrypt":{"type":"boolean","description":"Toggle encryption for the attribute. Encryption enhances security by not storing any plain text values in the database. However, encrypted attributes cannot be queried.","x-example":false}},"required":["key","size","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/string\/{key}":{"patch":{"summary":"Update string attribute","operationId":"databasesUpdateStringAttribute","tags":["databases"],"description":"Update a string attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeString","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeString"}}}}},"x-appwrite":{"method":"updateStringAttribute","weight":87,"cookies":false,"type":"","demo":"databases\/update-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"[DEFAULT]","x-nullable":true}},"required":["required","default"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL attribute","operationId":"databasesCreateUrlAttribute","tags":["databases"],"description":"Create a URL attribute.\n","responses":{"202":{"description":"AttributeURL","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeUrl"}}}}},"x-appwrite":{"method":"createUrlAttribute","weight":79,"cookies":false,"type":"","demo":"databases\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"https:\/\/example.com"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url\/{key}":{"patch":{"summary":"Update URL attribute","operationId":"databasesUpdateUrlAttribute","tags":["databases"],"description":"Update an url attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeURL","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeUrl"}}}}},"x-appwrite":{"method":"updateUrlAttribute","weight":91,"cookies":false,"type":"","demo":"databases\/update-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"https:\/\/example.com","x-nullable":true}},"required":["required","default"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get attribute","operationId":"databasesGetAttribute","tags":["databases"],"description":"","responses":{"200":{"description":"AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, or AttributeDatetime, or AttributeRelationship, or AttributeString","content":{"application\/json":{"schema":{"oneOf":[{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeRelationship"},{"$ref":"#\/components\/schemas\/attributeString"}]}}}}},"x-appwrite":{"method":"getAttribute","weight":86,"cookies":false,"type":"","demo":"databases\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}]},"delete":{"summary":"Delete attribute","operationId":"databasesDeleteAttribute","tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":97,"cookies":false,"type":"","demo":"databases\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/{key}\/relationship":{"patch":{"summary":"Update relationship attribute","operationId":"databasesUpdateRelationshipAttribute","tags":["databases"],"description":"Update relationship attribute. [Learn more about relationship attributes](https:\/\/appwrite.io\/docs\/databases-relationships#relationship-attributes).\n","responses":{"200":{"description":"AttributeRelationship","content":{"":{"schema":{"$ref":"#\/components\/schemas\/attributeRelationship"}}}}},"x-appwrite":{"method":"updateRelationshipAttribute","weight":96,"cookies":false,"type":"","demo":"databases\/update-relationship-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-relationship-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"onDelete":{"type":"string","description":"Constraints option","x-example":"cascade","enum":["cascade","restrict","setNull"],"x-enum-name":"RelationMutate","x-enum-keys":[]}}}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List documents","operationId":"databasesListDocuments","tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/documentList"}}}}},"x-appwrite":{"method":"listDocuments","weight":103,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"post":{"summary":"Create document","operationId":"databasesCreateDocument","tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"createDocument","weight":102,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, only the current user is granted all permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get document","operationId":"databasesGetDocument","tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"getDocument","weight":104,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"patch":{"summary":"Update document","operationId":"databasesUpdateDocument","tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"updateDocument","weight":106,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete document","operationId":"databasesDeleteDocument","tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":107,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes":{"get":{"summary":"List indexes","operationId":"databasesListIndexes","tags":["databases"],"description":"","responses":{"200":{"description":"Indexes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/indexList"}}}}},"x-appwrite":{"method":"listIndexes","weight":99,"cookies":false,"type":"","demo":"databases\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: key, type, status, attributes, error","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"post":{"summary":"Create index","operationId":"databasesCreateIndex","tags":["databases"],"description":"","responses":{"202":{"description":"Index","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/index"}}}}},"x-appwrite":{"method":"createIndex","weight":98,"cookies":false,"type":"","demo":"databases\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Index Key.","x-example":null},"type":{"type":"string","description":"Index type.","x-example":"key","enum":["key","fulltext","unique","spatial"],"x-enum-name":"IndexType","x-enum-keys":[]},"attributes":{"type":"array","description":"Array of attributes to index. Maximum of 100 attributes are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders. Maximum of 100 orders are allowed.","x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get index","operationId":"databasesGetIndex","tags":["databases"],"description":"","responses":{"200":{"description":"Index","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/index"}}}}},"x-appwrite":{"method":"getIndex","weight":100,"cookies":false,"type":"","demo":"databases\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Index Key.","required":true,"schema":{"type":"string"},"in":"path"}]},"delete":{"summary":"Delete index","operationId":"databasesDeleteIndex","tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":101,"cookies":false,"type":"","demo":"databases\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Index Key.","required":true,"schema":{"type":"string"},"in":"path"}]}},"\/functions":{"get":{"summary":"List functions","operationId":"functionsList","tags":["functions"],"description":"Get a list of all the project's functions. You can use the query params to filter your results.","responses":{"200":{"description":"Functions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/functionList"}}}}},"x-appwrite":{"method":"list","weight":268,"cookies":false,"type":"","demo":"functions\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-functions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, runtime, deployment, schedule, scheduleNext, schedulePrevious, timeout, entrypoint, commands, installationId","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create function","operationId":"functionsCreate","tags":["functions"],"description":"Create a new function. You can pass a list of [permissions](https:\/\/appwrite.io\/docs\/permissions) to allow different project users or team with access to execute the function using the client API.","responses":{"201":{"description":"Function","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/function"}}}}},"x-appwrite":{"method":"create","weight":267,"cookies":false,"type":"","demo":"functions\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"functionId":{"type":"string","description":"Function ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[FUNCTION_ID]"},"name":{"type":"string","description":"Function name. Max length: 128 chars.","x-example":"[NAME]"},"runtime":{"type":"string","description":"Execution runtime.","x-example":"node-14.5","enum":["node-14.5","node-16.0","node-18.0","node-19.0","node-20.0","php-8.0","php-8.1","php-8.2","ruby-3.0","ruby-3.1","ruby-3.2","python-3.8","python-3.9","python-3.10","python-3.11","python-3.12","dart-2.15","dart-2.16","dart-2.17","dart-2.18","dart-3.0","dart-3.1","dotnet-3.1","dotnet-6.0","dotnet-7.0","java-8.0","java-11.0","java-17.0","java-18.0","swift-5.5","swift-5.8","kotlin-1.6","kotlin-1.8","cpp-17","cpp-20","bun-1.0"],"x-enum-name":null,"x-enum-keys":[]},"execute":{"type":"array","description":"An array of role strings with execution permissions. By default no user is granted with any execute permissions. [learn more about roles](https:\/\/appwrite.io\/docs\/permissions#permission-roles). Maximum of 100 roles are allowed, each 64 characters long.","x-example":"[\"any\"]","items":{"type":"string"}},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","x-example":null},"timeout":{"type":"integer","description":"Function maximum execution time in seconds.","x-example":1},"enabled":{"type":"boolean","description":"Is function enabled? When set to 'disabled', users cannot access the function but Server SDKs with and API key can still access the function. No data is lost when this is toggled.","x-example":false},"logging":{"type":"boolean","description":"Whether executions will be logged. When set to false, executions will not be logged, but will reduce resource used by your Appwrite project.","x-example":false},"entrypoint":{"type":"string","description":"Entrypoint File. This path is relative to the \"providerRootDirectory\".","x-example":"[ENTRYPOINT]"},"commands":{"type":"string","description":"Build Commands.","x-example":"[COMMANDS]"},"installationId":{"type":"string","description":"Appwrite Installation ID for VCS (Version Control System) deployment.","x-example":"[INSTALLATION_ID]"},"providerRepositoryId":{"type":"string","description":"Repository ID of the repo linked to the function.","x-example":"[PROVIDER_REPOSITORY_ID]"},"providerBranch":{"type":"string","description":"Production branch for the repo linked to the function.","x-example":"[PROVIDER_BRANCH]"},"providerSilentMode":{"type":"boolean","description":"Is the VCS (Version Control System) connection in silent mode for the repo linked to the function? In silent mode, comments will not be made on commits and pull requests.","x-example":false},"providerRootDirectory":{"type":"string","description":"Path to function code in the linked repo.","x-example":"[PROVIDER_ROOT_DIRECTORY]"},"templateRepository":{"type":"string","description":"Repository name of the template.","x-example":"[TEMPLATE_REPOSITORY]"},"templateOwner":{"type":"string","description":"The name of the owner of the template.","x-example":"[TEMPLATE_OWNER]"},"templateRootDirectory":{"type":"string","description":"Path to function code in the template repo.","x-example":"[TEMPLATE_ROOT_DIRECTORY]"},"templateBranch":{"type":"string","description":"Production branch for the repo linked to the function template.","x-example":"[TEMPLATE_BRANCH]"}},"required":["functionId","name","runtime"]}}}}}},"\/functions\/runtimes":{"get":{"summary":"List runtimes","operationId":"functionsListRuntimes","tags":["functions"],"description":"Get a list of all runtimes that are currently active on your instance.","responses":{"200":{"description":"Runtimes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/runtimeList"}}}}},"x-appwrite":{"method":"listRuntimes","weight":269,"cookies":false,"type":"","demo":"functions\/list-runtimes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-runtimes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/functions\/{functionId}":{"get":{"summary":"Get function","operationId":"functionsGet","tags":["functions"],"description":"Get a function by its unique ID.","responses":{"200":{"description":"Function","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/function"}}}}},"x-appwrite":{"method":"get","weight":270,"cookies":false,"type":"","demo":"functions\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}]},"put":{"summary":"Update function","operationId":"functionsUpdate","tags":["functions"],"description":"Update function by its unique ID.","responses":{"200":{"description":"Function","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/function"}}}}},"x-appwrite":{"method":"update","weight":273,"cookies":false,"type":"","demo":"functions\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Function name. Max length: 128 chars.","x-example":"[NAME]"},"runtime":{"type":"string","description":"Execution runtime.","x-example":"node-14.5","enum":["node-14.5","node-16.0","node-18.0","node-19.0","node-20.0","php-8.0","php-8.1","php-8.2","ruby-3.0","ruby-3.1","ruby-3.2","python-3.8","python-3.9","python-3.10","python-3.11","python-3.12","dart-2.15","dart-2.16","dart-2.17","dart-2.18","dart-3.0","dart-3.1","dotnet-3.1","dotnet-6.0","dotnet-7.0","java-8.0","java-11.0","java-17.0","java-18.0","swift-5.5","swift-5.8","kotlin-1.6","kotlin-1.8","cpp-17","cpp-20","bun-1.0"],"x-enum-name":null,"x-enum-keys":[]},"execute":{"type":"array","description":"An array of role strings with execution permissions. By default no user is granted with any execute permissions. [learn more about roles](https:\/\/appwrite.io\/docs\/permissions#permission-roles). Maximum of 100 roles are allowed, each 64 characters long.","x-example":"[\"any\"]","items":{"type":"string"}},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","x-example":null},"timeout":{"type":"integer","description":"Maximum execution time in seconds.","x-example":1},"enabled":{"type":"boolean","description":"Is function enabled? When set to 'disabled', users cannot access the function but Server SDKs with and API key can still access the function. No data is lost when this is toggled.","x-example":false},"logging":{"type":"boolean","description":"Whether executions will be logged. When set to false, executions will not be logged, but will reduce resource used by your Appwrite project.","x-example":false},"entrypoint":{"type":"string","description":"Entrypoint File. This path is relative to the \"providerRootDirectory\".","x-example":"[ENTRYPOINT]"},"commands":{"type":"string","description":"Build Commands.","x-example":"[COMMANDS]"},"installationId":{"type":"string","description":"Appwrite Installation ID for VCS (Version Controle System) deployment.","x-example":"[INSTALLATION_ID]"},"providerRepositoryId":{"type":"string","description":"Repository ID of the repo linked to the function","x-example":"[PROVIDER_REPOSITORY_ID]"},"providerBranch":{"type":"string","description":"Production branch for the repo linked to the function","x-example":"[PROVIDER_BRANCH]"},"providerSilentMode":{"type":"boolean","description":"Is the VCS (Version Control System) connection in silent mode for the repo linked to the function? In silent mode, comments will not be made on commits and pull requests.","x-example":false},"providerRootDirectory":{"type":"string","description":"Path to function code in the linked repo.","x-example":"[PROVIDER_ROOT_DIRECTORY]"}},"required":["name"]}}}}},"delete":{"summary":"Delete function","operationId":"functionsDelete","tags":["functions"],"description":"Delete a function by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":276,"cookies":false,"type":"","demo":"functions\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/deployments":{"get":{"summary":"List deployments","operationId":"functionsListDeployments","tags":["functions"],"description":"Get a list of all the project's code deployments. You can use the query params to filter your results.","responses":{"200":{"description":"Deployments List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deploymentList"}}}}},"x-appwrite":{"method":"listDeployments","weight":278,"cookies":false,"type":"","demo":"functions\/list-deployments.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-deployments.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: size, buildId, activate, entrypoint, commands","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create deployment","operationId":"functionsCreateDeployment","tags":["functions"],"description":"Create a new function code deployment. Use this endpoint to upload a new version of your code function. To execute your newly uploaded code, you'll need to update the function's deployment to use your new deployment UID.\n\nThis endpoint accepts a tar.gz file compressed with your code. Make sure to include any dependencies your code has within the compressed file. You can learn more about code packaging in the [Appwrite Cloud Functions tutorial](https:\/\/appwrite.io\/docs\/functions).\n\nUse the \"command\" param to set the entrypoint used to execute your code.","responses":{"202":{"description":"Deployment","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deployment"}}}}},"x-appwrite":{"method":"createDeployment","weight":277,"cookies":false,"type":"","demo":"functions\/create-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":true,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}],"requestBody":{"content":{"multipart\/form-data":{"schema":{"type":"object","properties":{"entrypoint":{"type":"string","description":"Entrypoint File.","x-example":"[ENTRYPOINT]"},"commands":{"type":"string","description":"Build Commands.","x-example":"[COMMANDS]"},"code":{"type":"string","description":"Gzip file with your code package. When used with the Appwrite CLI, pass the path to your code directory, and the CLI will automatically package your code. Use a path that is within the current directory.","x-example":null},"activate":{"type":"boolean","description":"Automatically activate the deployment when it is finished building.","x-example":false}},"required":["code","activate"]}}}}}},"\/functions\/{functionId}\/deployments\/{deploymentId}":{"get":{"summary":"Get deployment","operationId":"functionsGetDeployment","tags":["functions"],"description":"Get a code deployment by its unique ID.","responses":{"200":{"description":"Deployment","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deployment"}}}}},"x-appwrite":{"method":"getDeployment","weight":279,"cookies":false,"type":"","demo":"functions\/get-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"schema":{"type":"string","x-example":"[DEPLOYMENT_ID]"},"in":"path"}]},"patch":{"summary":"Update function deployment","operationId":"functionsUpdateDeployment","tags":["functions"],"description":"Update the function code deployment ID using the unique function ID. Use this endpoint to switch the code deployment that should be executed by the execution endpoint.","responses":{"200":{"description":"Function","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/function"}}}}},"x-appwrite":{"method":"updateDeployment","weight":275,"cookies":false,"type":"","demo":"functions\/update-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-function-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"schema":{"type":"string","x-example":"[DEPLOYMENT_ID]"},"in":"path"}]},"delete":{"summary":"Delete deployment","operationId":"functionsDeleteDeployment","tags":["functions"],"description":"Delete a code deployment by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDeployment","weight":280,"cookies":false,"type":"","demo":"functions\/delete-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"schema":{"type":"string","x-example":"[DEPLOYMENT_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/deployments\/{deploymentId}\/builds\/{buildId}":{"post":{"summary":"Create build","operationId":"functionsCreateBuild","tags":["functions"],"description":"Create a new build for an Appwrite Function deployment. This endpoint can be used to retry a failed build.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"createBuild","weight":281,"cookies":false,"type":"","demo":"functions\/create-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"schema":{"type":"string","x-example":"[DEPLOYMENT_ID]"},"in":"path"},{"name":"buildId","description":"Build unique ID.","required":true,"schema":{"type":"string","x-example":"[BUILD_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/deployments\/{deploymentId}\/download":{"get":{"summary":"Download Deployment","operationId":"functionsDownloadDeployment","tags":["functions"],"description":"Get a Deployment's contents by its unique ID. This endpoint supports range requests for partial or streaming file download.","responses":{"200":{"description":"File"}},"x-appwrite":{"method":"downloadDeployment","weight":274,"cookies":false,"type":"location","demo":"functions\/download-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/download-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"schema":{"type":"string","x-example":"[DEPLOYMENT_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List executions","operationId":"functionsListExecutions","tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/executionList"}}}}},"x-appwrite":{"method":"listExecutions","weight":283,"cookies":false,"type":"","demo":"functions\/list-executions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-executions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, responseStatusCode, duration","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create execution","operationId":"functionsCreateExecution","tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/execution"}}}}},"x-appwrite":{"method":"createExecution","weight":282,"cookies":false,"type":"","demo":"functions\/create-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-execution.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"body":{"type":"string","description":"HTTP body of execution. Default value is empty string.","x-example":"[BODY]"},"async":{"type":"boolean","description":"Execute code in the background. Default value is false.","x-example":false},"path":{"type":"string","description":"HTTP path of execution. Path can include query params. Default value is \/","x-example":"[PATH]"},"method":{"type":"string","description":"HTTP method of execution. Default value is GET.","x-example":"GET","enum":["GET","POST","PUT","PATCH","DELETE","OPTIONS"],"x-enum-name":"ExecutionMethod","x-enum-keys":[]},"headers":{"type":"object","description":"HTTP headers of execution. Defaults to empty.","x-example":"{}"}}}}}}}},"\/functions\/{functionId}\/executions\/{executionId}":{"get":{"summary":"Get execution","operationId":"functionsGetExecution","tags":["functions"],"description":"Get a function execution log by its unique ID.","responses":{"200":{"description":"Execution","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/execution"}}}}},"x-appwrite":{"method":"getExecution","weight":284,"cookies":false,"type":"","demo":"functions\/get-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-execution.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"executionId","description":"Execution ID.","required":true,"schema":{"type":"string","x-example":"[EXECUTION_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/variables":{"get":{"summary":"List variables","operationId":"functionsListVariables","tags":["functions"],"description":"Get a list of all variables of a specific function.","responses":{"200":{"description":"Variables List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variableList"}}}}},"x-appwrite":{"method":"listVariables","weight":286,"cookies":false,"type":"","demo":"functions\/list-variables.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-variables.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}]},"post":{"summary":"Create variable","operationId":"functionsCreateVariable","tags":["functions"],"description":"Create a new function environment variable. These variables can be accessed in the function at runtime as environment variables.","responses":{"201":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"createVariable","weight":285,"cookies":false,"type":"","demo":"functions\/create-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","x-example":"[VALUE]"}},"required":["key","value"]}}}}}},"\/functions\/{functionId}\/variables\/{variableId}":{"get":{"summary":"Get variable","operationId":"functionsGetVariable","tags":["functions"],"description":"Get a variable by its unique ID.","responses":{"200":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"getVariable","weight":287,"cookies":false,"type":"","demo":"functions\/get-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}]},"put":{"summary":"Update variable","operationId":"functionsUpdateVariable","tags":["functions"],"description":"Update variable by its unique ID.","responses":{"200":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"updateVariable","weight":288,"cookies":false,"type":"","demo":"functions\/update-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","x-example":"[VALUE]"}},"required":["key"]}}}}},"delete":{"summary":"Delete variable","operationId":"functionsDeleteVariable","tags":["functions"],"description":"Delete a variable by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteVariable","weight":289,"cookies":false,"type":"","demo":"functions\/delete-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}]}},"\/graphql":{"post":{"summary":"GraphQL endpoint","operationId":"graphqlQuery","tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/any"}}}}},"x-appwrite":{"method":"query","weight":304,"cookies":false,"type":"graphql","demo":"graphql\/query.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"Session":[],"JWT":[]}]}},"\/graphql\/mutation":{"post":{"summary":"GraphQL endpoint","operationId":"graphqlMutation","tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/any"}}}}},"x-appwrite":{"method":"mutation","weight":303,"cookies":false,"type":"graphql","demo":"graphql\/mutation.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"Session":[],"JWT":[]}]}},"\/health":{"get":{"summary":"Get HTTP","operationId":"healthGet","tags":["health"],"description":"Check the Appwrite HTTP server is up and responsive.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"get","weight":119,"cookies":false,"type":"","demo":"health\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/anti-virus":{"get":{"summary":"Get antivirus","operationId":"healthGetAntivirus","tags":["health"],"description":"Check the Appwrite Antivirus server is up and connection is successful.","responses":{"200":{"description":"Health Antivirus","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthAntivirus"}}}}},"x-appwrite":{"method":"getAntivirus","weight":138,"cookies":false,"type":"","demo":"health\/get-antivirus.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-storage-anti-virus.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/cache":{"get":{"summary":"Get cache","operationId":"healthGetCache","tags":["health"],"description":"Check the Appwrite in-memory cache servers are up and connection is successful.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"getCache","weight":122,"cookies":false,"type":"","demo":"health\/get-cache.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-cache.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/certificate":{"get":{"summary":"Get the SSL certificate for a domain","operationId":"healthGetCertificate","tags":["health"],"description":"Get the SSL certificate for a domain","responses":{"200":{"description":"Health Certificate","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthCertificate"}}}}},"x-appwrite":{"method":"getCertificate","weight":128,"cookies":false,"type":"","demo":"health\/get-certificate.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-certificate.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"domain","description":"string","required":false,"schema":{"type":"string"},"in":"query"}]}},"\/health\/db":{"get":{"summary":"Get DB","operationId":"healthGetDB","tags":["health"],"description":"Check the Appwrite database servers are up and connection is successful.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"getDB","weight":121,"cookies":false,"type":"","demo":"health\/get-d-b.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-db.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/pubsub":{"get":{"summary":"Get pubsub","operationId":"healthGetPubSub","tags":["health"],"description":"Check the Appwrite pub-sub servers are up and connection is successful.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"getPubSub","weight":124,"cookies":false,"type":"","demo":"health\/get-pub-sub.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-pubsub.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/queue":{"get":{"summary":"Get queue","operationId":"healthGetQueue","tags":["health"],"description":"Check the Appwrite queue messaging servers are up and connection is successful.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"getQueue","weight":123,"cookies":false,"type":"","demo":"health\/get-queue.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/queue\/builds":{"get":{"summary":"Get builds queue","operationId":"healthGetQueueBuilds","tags":["health"],"description":"Get the number of builds that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueBuilds","weight":130,"cookies":false,"type":"","demo":"health\/get-queue-builds.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-builds.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/certificates":{"get":{"summary":"Get certificates queue","operationId":"healthGetQueueCertificates","tags":["health"],"description":"Get the number of certificates that are waiting to be issued against [Letsencrypt](https:\/\/letsencrypt.org\/) in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueCertificates","weight":129,"cookies":false,"type":"","demo":"health\/get-queue-certificates.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-certificates.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/databases":{"get":{"summary":"Get databases queue","operationId":"healthGetQueueDatabases","tags":["health"],"description":"Get the number of database changes that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueDatabases","weight":131,"cookies":false,"type":"","demo":"health\/get-queue-databases.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-databases.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"name","description":"Queue name for which to check the queue size","required":false,"schema":{"type":"string","x-example":"[NAME]","default":"database_db_main"},"in":"query"},{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/deletes":{"get":{"summary":"Get deletes queue","operationId":"healthGetQueueDeletes","tags":["health"],"description":"Get the number of background destructive changes that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueDeletes","weight":132,"cookies":false,"type":"","demo":"health\/get-queue-deletes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-deletes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/failed\/{name}":{"get":{"summary":"Get number of failed queue jobs","operationId":"healthGetFailedJobs","tags":["health"],"description":"Returns the amount of failed jobs in a given queue.\n","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getFailedJobs","weight":139,"cookies":false,"type":"","demo":"health\/get-failed-jobs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-failed-queue-jobs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"name","description":"The name of the queue","required":true,"schema":{"type":"string","x-example":"v1-database","enum":["v1-database","v1-deletes","v1-audits","v1-mails","v1-functions","v1-usage","webhooksv1","v1-certificates","v1-builds","v1-messaging","v1-migrations","hamsterv1"],"x-enum-name":null,"x-enum-keys":[]},"in":"path"},{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/functions":{"get":{"summary":"Get functions queue","operationId":"healthGetQueueFunctions","tags":["health"],"description":"","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueFunctions","weight":136,"cookies":false,"type":"","demo":"health\/get-queue-functions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-functions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/logs":{"get":{"summary":"Get logs queue","operationId":"healthGetQueueLogs","tags":["health"],"description":"Get the number of logs that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueLogs","weight":127,"cookies":false,"type":"","demo":"health\/get-queue-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/mails":{"get":{"summary":"Get mails queue","operationId":"healthGetQueueMails","tags":["health"],"description":"Get the number of mails that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueMails","weight":133,"cookies":false,"type":"","demo":"health\/get-queue-mails.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-mails.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/messaging":{"get":{"summary":"Get messaging queue","operationId":"healthGetQueueMessaging","tags":["health"],"description":"Get the number of messages that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueMessaging","weight":134,"cookies":false,"type":"","demo":"health\/get-queue-messaging.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-messaging.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/migrations":{"get":{"summary":"Get migrations queue","operationId":"healthGetQueueMigrations","tags":["health"],"description":"Get the number of migrations that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueMigrations","weight":135,"cookies":false,"type":"","demo":"health\/get-queue-migrations.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-migrations.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/queue\/webhooks":{"get":{"summary":"Get webhooks queue","operationId":"healthGetQueueWebhooks","tags":["health"],"description":"Get the number of webhooks that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthQueue"}}}}},"x-appwrite":{"method":"getQueueWebhooks","weight":126,"cookies":false,"type":"","demo":"health\/get-queue-webhooks.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-webhooks.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"schema":{"type":"integer","format":"int32","default":5000},"in":"query"}]}},"\/health\/storage\/local":{"get":{"summary":"Get local storage","operationId":"healthGetStorageLocal","tags":["health"],"description":"Check the Appwrite local storage device is up and connection is successful.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"getStorageLocal","weight":137,"cookies":false,"type":"","demo":"health\/get-storage-local.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-storage-local.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/time":{"get":{"summary":"Get time","operationId":"healthGetTime","tags":["health"],"description":"Check the Appwrite server time is synced with Google remote NTP server. We use this technology to smoothly handle leap seconds with no disruptive events. The [Network Time Protocol](https:\/\/en.wikipedia.org\/wiki\/Network_Time_Protocol) (NTP) is used by hundreds of millions of computers and devices to synchronize their clocks over the Internet. If your computer sets its own clock, it likely uses NTP.","responses":{"200":{"description":"Health Time","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthTime"}}}}},"x-appwrite":{"method":"getTime","weight":125,"cookies":false,"type":"","demo":"health\/get-time.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-time.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/locale":{"get":{"summary":"Get user locale","operationId":"localeGet","tags":["locale"],"description":"Get the current user location based on IP. Returns an object with user country code, country name, continent name, continent code, ip address and suggested currency. You can use the locale header to get the data in a supported language.\n\n([IP Geolocation by DB-IP](https:\/\/db-ip.com))","responses":{"200":{"description":"Locale","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/locale"}}}}},"x-appwrite":{"method":"get","weight":111,"cookies":false,"type":"","demo":"locale\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-locale.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/localed","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}]}},"\/locale\/codes":{"get":{"summary":"List Locale Codes","operationId":"localeListCodes","tags":["locale"],"description":"List of all locale codes in [ISO 639-1](https:\/\/en.wikipedia.org\/wiki\/List_of_ISO_639-1_codes).","responses":{"200":{"description":"Locale codes list","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/localeCodeList"}}}}},"x-appwrite":{"method":"listCodes","weight":112,"cookies":false,"type":"","demo":"locale\/list-codes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-locale-codes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/localeCode","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}]}},"\/locale\/continents":{"get":{"summary":"List continents","operationId":"localeListContinents","tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/continentList"}}}}},"x-appwrite":{"method":"listContinents","weight":116,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/continents","offline-key":"","offline-response-key":"code","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List countries","operationId":"localeListCountries","tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountries","weight":113,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/countries","offline-key":"","offline-response-key":"code","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU countries","operationId":"localeListCountriesEU","tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountriesEU","weight":114,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/countries\/eu","offline-key":"","offline-response-key":"code","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List countries phone codes","operationId":"localeListCountriesPhones","tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/phoneList"}}}}},"x-appwrite":{"method":"listCountriesPhones","weight":115,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/countries\/phones","offline-key":"","offline-response-key":"countryCode","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List currencies","operationId":"localeListCurrencies","tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/currencyList"}}}}},"x-appwrite":{"method":"listCurrencies","weight":117,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/currencies","offline-key":"","offline-response-key":"code","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List languages","operationId":"localeListLanguages","tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/languageList"}}}}},"x-appwrite":{"method":"listLanguages","weight":118,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/languages","offline-key":"","offline-response-key":"code","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}]}},"\/messaging\/messages":{"get":{"summary":"List messages","operationId":"messagingListMessages","tags":["messaging"],"description":"","responses":{"200":{"description":"Message list","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/messageList"}}}}},"x-appwrite":{"method":"listMessages","weight":363,"cookies":false,"type":"","demo":"messaging\/list-messages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-messages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: scheduledAt, deliveredAt, deliveredTotal, status, description, providerType","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]}},"\/messaging\/messages\/email":{"post":{"summary":"Create an email.","operationId":"messagingCreateEmail","tags":["messaging"],"description":"","responses":{"201":{"description":"Message","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/message"}}}}},"x-appwrite":{"method":"createEmail","weight":360,"cookies":false,"type":"","demo":"messaging\/create-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"messageId":{"type":"string","description":"Message ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[MESSAGE_ID]"},"subject":{"type":"string","description":"Email Subject.","x-example":"[SUBJECT]"},"content":{"type":"string","description":"Email Content.","x-example":"[CONTENT]"},"topics":{"type":"array","description":"List of Topic IDs.","x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","x-example":null,"items":{"type":"string"}},"cc":{"type":"array","description":"Array of target IDs to be added as CC.","x-example":null,"items":{"type":"string"}},"bcc":{"type":"array","description":"Array of target IDs to be added as BCC.","x-example":null,"items":{"type":"string"}},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":"MessageStatus","x-enum-keys":[]},"html":{"type":"boolean","description":"Is content of type HTML","x-example":false},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","x-example":null}},"required":["messageId","subject","content"]}}}}}},"\/messaging\/messages\/email\/{messageId}":{"patch":{"summary":"Update an email.","operationId":"messagingUpdateEmail","tags":["messaging"],"description":"","responses":{"200":{"description":"Message","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/message"}}}}},"x-appwrite":{"method":"updateEmail","weight":367,"cookies":false,"type":"","demo":"messaging\/update-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"schema":{"type":"string","x-example":"[MESSAGE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"topics":{"type":"array","description":"List of Topic IDs.","x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","x-example":null,"items":{"type":"string"}},"subject":{"type":"string","description":"Email Subject.","x-example":"[SUBJECT]"},"content":{"type":"string","description":"Email Content.","x-example":"[CONTENT]"},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":"MessageStatus","x-enum-keys":[]},"html":{"type":"boolean","description":"Is content of type HTML","x-example":false},"cc":{"type":"array","description":"Array of target IDs to be added as CC.","x-example":null,"items":{"type":"string"}},"bcc":{"type":"array","description":"Array of target IDs to be added as BCC.","x-example":null,"items":{"type":"string"}},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","x-example":null}}}}}}}},"\/messaging\/messages\/push":{"post":{"summary":"Create a push notification.","operationId":"messagingCreatePush","tags":["messaging"],"description":"","responses":{"201":{"description":"Message","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/message"}}}}},"x-appwrite":{"method":"createPush","weight":362,"cookies":false,"type":"","demo":"messaging\/create-push.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-push-notification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"messageId":{"type":"string","description":"Message ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[MESSAGE_ID]"},"title":{"type":"string","description":"Title for push notification.","x-example":"[TITLE]"},"body":{"type":"string","description":"Body for push notification.","x-example":"[BODY]"},"topics":{"type":"array","description":"List of Topic IDs.","x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","x-example":null,"items":{"type":"string"}},"data":{"type":"object","description":"Additional Data for push notification.","x-example":"{}"},"action":{"type":"string","description":"Action for push notification.","x-example":"[ACTION]"},"icon":{"type":"string","description":"Icon for push notification. Available only for Android and Web Platform.","x-example":"[ICON]"},"sound":{"type":"string","description":"Sound for push notification. Available only for Android and IOS Platform.","x-example":"[SOUND]"},"color":{"type":"string","description":"Color for push notification. Available only for Android Platform.","x-example":"[COLOR]"},"tag":{"type":"string","description":"Tag for push notification. Available only for Android Platform.","x-example":"[TAG]"},"badge":{"type":"string","description":"Badge for push notification. Available only for IOS Platform.","x-example":"[BADGE]"},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":"MessageStatus","x-enum-keys":[]},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","x-example":null}},"required":["messageId","title","body"]}}}}}},"\/messaging\/messages\/push\/{messageId}":{"patch":{"summary":"Update a push notification.","operationId":"messagingUpdatePush","tags":["messaging"],"description":"","responses":{"200":{"description":"Message","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/message"}}}}},"x-appwrite":{"method":"updatePush","weight":369,"cookies":false,"type":"","demo":"messaging\/update-push.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-push-notification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"schema":{"type":"string","x-example":"[MESSAGE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"topics":{"type":"array","description":"List of Topic IDs.","x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","x-example":null,"items":{"type":"string"}},"title":{"type":"string","description":"Title for push notification.","x-example":"[TITLE]"},"body":{"type":"string","description":"Body for push notification.","x-example":"[BODY]"},"data":{"type":"object","description":"Additional Data for push notification.","x-example":"{}"},"action":{"type":"string","description":"Action for push notification.","x-example":"[ACTION]"},"icon":{"type":"string","description":"Icon for push notification. Available only for Android and Web platforms.","x-example":"[ICON]"},"sound":{"type":"string","description":"Sound for push notification. Available only for Android and iOS platforms.","x-example":"[SOUND]"},"color":{"type":"string","description":"Color for push notification. Available only for Android platforms.","x-example":"[COLOR]"},"tag":{"type":"string","description":"Tag for push notification. Available only for Android platforms.","x-example":"[TAG]"},"badge":{"type":"integer","description":"Badge for push notification. Available only for iOS platforms.","x-example":null},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":"MessageStatus","x-enum-keys":[]},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","x-example":null}}}}}}}},"\/messaging\/messages\/sms":{"post":{"summary":"Create an SMS.","operationId":"messagingCreateSMS","tags":["messaging"],"description":"","responses":{"201":{"description":"Message","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/message"}}}}},"x-appwrite":{"method":"createSMS","weight":361,"cookies":false,"type":"","demo":"messaging\/create-s-m-s.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-sms.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"messageId":{"type":"string","description":"Message ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[MESSAGE_ID]"},"content":{"type":"string","description":"SMS Content.","x-example":"[CONTENT]"},"topics":{"type":"array","description":"List of Topic IDs.","x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","x-example":null,"items":{"type":"string"}},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":"MessageStatus","x-enum-keys":[]},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","x-example":null}},"required":["messageId","content"]}}}}}},"\/messaging\/messages\/sms\/{messageId}":{"patch":{"summary":"Update an SMS.","operationId":"messagingUpdateSMS","tags":["messaging"],"description":"","responses":{"200":{"description":"Message","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/message"}}}}},"x-appwrite":{"method":"updateSMS","weight":368,"cookies":false,"type":"","demo":"messaging\/update-s-m-s.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"schema":{"type":"string","x-example":"[MESSAGE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"topics":{"type":"array","description":"List of Topic IDs.","x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","x-example":null,"items":{"type":"string"}},"content":{"type":"string","description":"Email Content.","x-example":"[CONTENT]"},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":"MessageStatus","x-enum-keys":[]},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","x-example":null}}}}}}}},"\/messaging\/messages\/{messageId}":{"get":{"summary":"Get a message","operationId":"messagingGetMessage","tags":["messaging"],"description":"","responses":{"200":{"description":"Message","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/message"}}}}},"x-appwrite":{"method":"getMessage","weight":366,"cookies":false,"type":"","demo":"messaging\/get-message.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/get-message.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"schema":{"type":"string","x-example":"[MESSAGE_ID]"},"in":"path"}]},"delete":{"summary":"Delete a message","operationId":"messagingDelete","tags":["messaging"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":370,"cookies":false,"type":"","demo":"messaging\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-message.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"schema":{"type":"string","x-example":"[MESSAGE_ID]"},"in":"path"}]}},"\/messaging\/messages\/{messageId}\/logs":{"get":{"summary":"List message logs","operationId":"messagingListMessageLogs","tags":["messaging"],"description":"","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listMessageLogs","weight":364,"cookies":false,"type":"","demo":"messaging\/list-message-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/messages\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"schema":{"type":"string","x-example":"[MESSAGE_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/messaging\/messages\/{messageId}\/targets":{"get":{"summary":"List message targets","operationId":"messagingListTargets","tags":["messaging"],"description":"List the targets associated with a message as set via the targets attribute.","responses":{"200":{"description":"Target list","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/targetList"}}}}},"x-appwrite":{"method":"listTargets","weight":365,"cookies":false,"type":"","demo":"messaging\/list-targets.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-message-targets.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"schema":{"type":"string","x-example":"[MESSAGE_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, providerId, identifier, providerType","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/messaging\/providers":{"get":{"summary":"List providers","operationId":"messagingListProviders","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider list","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/providerList"}}}}},"x-appwrite":{"method":"listProviders","weight":335,"cookies":false,"type":"","demo":"messaging\/list-providers.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-providers.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, provider, type, enabled","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]}},"\/messaging\/providers\/apns":{"post":{"summary":"Create APNS provider","operationId":"messagingCreateAPNSProvider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createAPNSProvider","weight":334,"cookies":false,"type":"","demo":"messaging\/create-a-p-n-s-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-apns-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"authKey":{"type":"string","description":"APNS authentication key.","x-example":"[AUTH_KEY]"},"authKeyId":{"type":"string","description":"APNS authentication key ID.","x-example":"[AUTH_KEY_ID]"},"teamId":{"type":"string","description":"APNS team ID.","x-example":"[TEAM_ID]"},"bundleId":{"type":"string","description":"APNS bundle ID.","x-example":"[BUNDLE_ID]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name"]}}}}}},"\/messaging\/providers\/apns\/{providerId}":{"patch":{"summary":"Update APNS provider","operationId":"messagingUpdateAPNSProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateAPNSProvider","weight":347,"cookies":false,"type":"","demo":"messaging\/update-a-p-n-s-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-apns-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"authKey":{"type":"string","description":"APNS authentication key.","x-example":"[AUTH_KEY]"},"authKeyId":{"type":"string","description":"APNS authentication key ID.","x-example":"[AUTH_KEY_ID]"},"teamId":{"type":"string","description":"APNS team ID.","x-example":"[TEAM_ID]"},"bundleId":{"type":"string","description":"APNS bundle ID.","x-example":"[BUNDLE_ID]"}}}}}}}},"\/messaging\/providers\/fcm":{"post":{"summary":"Create FCM provider","operationId":"messagingCreateFCMProvider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createFCMProvider","weight":333,"cookies":false,"type":"","demo":"messaging\/create-f-c-m-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-fcm-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"serviceAccountJSON":{"type":"object","description":"FCM service account JSON.","x-example":"{}"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name"]}}}}}},"\/messaging\/providers\/fcm\/{providerId}":{"patch":{"summary":"Update FCM provider","operationId":"messagingUpdateFCMProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateFCMProvider","weight":346,"cookies":false,"type":"","demo":"messaging\/update-f-c-m-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-fcm-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"serviceAccountJSON":{"type":"object","description":"FCM service account JSON.","x-example":"{}"}}}}}}}},"\/messaging\/providers\/mailgun":{"post":{"summary":"Create Mailgun provider","operationId":"messagingCreateMailgunProvider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createMailgunProvider","weight":325,"cookies":false,"type":"","demo":"messaging\/create-mailgun-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-mailgun-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"apiKey":{"type":"string","description":"Mailgun API Key.","x-example":"[API_KEY]"},"domain":{"type":"string","description":"Mailgun Domain.","x-example":"[DOMAIN]"},"isEuRegion":{"type":"boolean","description":"Set as EU region.","x-example":false},"fromName":{"type":"string","description":"Sender Name.","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the reply to field for the mail. Default value is sender name. Reply to name must have reply to email as well.","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the reply to field for the mail. Default value is sender email. Reply to email must have reply to name as well.","x-example":"email@example.com"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name"]}}}}}},"\/messaging\/providers\/mailgun\/{providerId}":{"patch":{"summary":"Update Mailgun provider","operationId":"messagingUpdateMailgunProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateMailgunProvider","weight":338,"cookies":false,"type":"","demo":"messaging\/update-mailgun-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-mailgun-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"apiKey":{"type":"string","description":"Mailgun API Key.","x-example":"[API_KEY]"},"domain":{"type":"string","description":"Mailgun Domain.","x-example":"[DOMAIN]"},"isEuRegion":{"type":"boolean","description":"Set as EU region.","x-example":false},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"fromName":{"type":"string","description":"Sender Name.","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the reply to field for the mail. Default value is sender name.","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the reply to field for the mail. Default value is sender email.","x-example":"[REPLY_TO_EMAIL]"}}}}}}}},"\/messaging\/providers\/msg91":{"post":{"summary":"Create Msg91 provider","operationId":"messagingCreateMsg91Provider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createMsg91Provider","weight":328,"cookies":false,"type":"","demo":"messaging\/create-msg91provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-msg91-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"senderId":{"type":"string","description":"Msg91 Sender ID.","x-example":"[SENDER_ID]"},"authKey":{"type":"string","description":"Msg91 Auth Key.","x-example":"[AUTH_KEY]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name"]}}}}}},"\/messaging\/providers\/msg91\/{providerId}":{"patch":{"summary":"Update Msg91 provider","operationId":"messagingUpdateMsg91Provider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateMsg91Provider","weight":341,"cookies":false,"type":"","demo":"messaging\/update-msg91provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-msg91-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"senderId":{"type":"string","description":"Msg91 Sender ID.","x-example":"[SENDER_ID]"},"authKey":{"type":"string","description":"Msg91 Auth Key.","x-example":"[AUTH_KEY]"},"from":{"type":"string","description":"Sender number.","x-example":"[FROM]"}}}}}}}},"\/messaging\/providers\/sendgrid":{"post":{"summary":"Create Sendgrid provider","operationId":"messagingCreateSendgridProvider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createSendgridProvider","weight":326,"cookies":false,"type":"","demo":"messaging\/create-sendgrid-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-sengrid-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"apiKey":{"type":"string","description":"Sendgrid API key.","x-example":"[API_KEY]"},"fromName":{"type":"string","description":"Sender Name.","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the reply to field for the mail. Default value is sender name.","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the reply to field for the mail. Default value is sender email.","x-example":"email@example.com"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name"]}}}}}},"\/messaging\/providers\/sendgrid\/{providerId}":{"patch":{"summary":"Update Sendgrid provider","operationId":"messagingUpdateSendgridProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateSendgridProvider","weight":339,"cookies":false,"type":"","demo":"messaging\/update-sendgrid-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-sendgrid-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"apiKey":{"type":"string","description":"Sendgrid API key.","x-example":"[API_KEY]"},"fromName":{"type":"string","description":"Sender Name.","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the Reply To field for the mail. Default value is Sender Name.","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the Reply To field for the mail. Default value is Sender Email.","x-example":"[REPLY_TO_EMAIL]"}}}}}}}},"\/messaging\/providers\/smtp":{"post":{"summary":"Create SMTP provider","operationId":"messagingCreateSMTPProvider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createSMTPProvider","weight":327,"cookies":false,"type":"","demo":"messaging\/create-s-m-t-p-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-smtp-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"host":{"type":"string","description":"SMTP hosts. Either a single hostname or multiple semicolon-delimited hostnames. You can also specify a different port for each host by using this format: [hostname:port] (e.g. \"smtp1.example.com:25;smtp2.example.com\"). You can also specify encryption type, for example: (e.g. \"tls:\/\/smtp1.example.com:587;ssl:\/\/smtp2.example.com:465\"). Hosts will be tried in order.","x-example":"[HOST]"},"port":{"type":"integer","description":"The default SMTP server port.","x-example":1},"username":{"type":"string","description":"Authentication username.","x-example":"[USERNAME]"},"password":{"type":"string","description":"Authentication password.","x-example":"[PASSWORD]"},"encryption":{"type":"string","description":"Encryption type. Can be omitted, 'ssl', or 'tls'","x-example":"none","enum":["none","ssl","tls"],"x-enum-name":"SMTPEncryption","x-enum-keys":[]},"autoTLS":{"type":"boolean","description":"Enable SMTP AutoTLS feature.","x-example":false},"mailer":{"type":"string","description":"The value to use for the X-Mailer header.","x-example":"[MAILER]"},"fromName":{"type":"string","description":"Sender Name.","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the reply to field for the mail. Default value is sender name.","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the reply to field for the mail. Default value is sender email.","x-example":"email@example.com"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name","host"]}}}}}},"\/messaging\/providers\/smtp\/{providerId}":{"patch":{"summary":"Update SMTP provider","operationId":"messagingUpdateSMTPProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateSMTPProvider","weight":340,"cookies":false,"type":"","demo":"messaging\/update-s-m-t-p-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-smtp-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"host":{"type":"string","description":"SMTP hosts. Either a single hostname or multiple semicolon-delimited hostnames. You can also specify a different port for each host by using this format: [hostname:port] (e.g. \"smtp1.example.com:25;smtp2.example.com\"). You can also specify encryption type, for example: (e.g. \"tls:\/\/smtp1.example.com:587;ssl:\/\/smtp2.example.com:465\"). Hosts will be tried in order.","x-example":"[HOST]"},"port":{"type":"integer","description":"SMTP port.","x-example":1},"username":{"type":"string","description":"Authentication username.","x-example":"[USERNAME]"},"password":{"type":"string","description":"Authentication password.","x-example":"[PASSWORD]"},"encryption":{"type":"string","description":"Encryption type. Can be 'ssl' or 'tls'","x-example":"none","enum":["none","ssl","tls"],"x-enum-name":"SMTPEncryption","x-enum-keys":[]},"autoTLS":{"type":"boolean","description":"Enable SMTP AutoTLS feature.","x-example":false},"mailer":{"type":"string","description":"The value to use for the X-Mailer header.","x-example":"[MAILER]"},"fromName":{"type":"string","description":"Sender Name.","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the Reply To field for the mail. Default value is Sender Name.","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the Reply To field for the mail. Default value is Sender Email.","x-example":"[REPLY_TO_EMAIL]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}}}}}}}},"\/messaging\/providers\/telesign":{"post":{"summary":"Create Telesign provider","operationId":"messagingCreateTelesignProvider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createTelesignProvider","weight":329,"cookies":false,"type":"","demo":"messaging\/create-telesign-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-telesign-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"customerId":{"type":"string","description":"Telesign customer ID.","x-example":"[CUSTOMER_ID]"},"apiKey":{"type":"string","description":"Telesign API key.","x-example":"[API_KEY]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name"]}}}}}},"\/messaging\/providers\/telesign\/{providerId}":{"patch":{"summary":"Update Telesign provider","operationId":"messagingUpdateTelesignProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateTelesignProvider","weight":342,"cookies":false,"type":"","demo":"messaging\/update-telesign-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-telesign-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"customerId":{"type":"string","description":"Telesign customer ID.","x-example":"[CUSTOMER_ID]"},"apiKey":{"type":"string","description":"Telesign API key.","x-example":"[API_KEY]"},"from":{"type":"string","description":"Sender number.","x-example":"[FROM]"}}}}}}}},"\/messaging\/providers\/textmagic":{"post":{"summary":"Create Textmagic provider","operationId":"messagingCreateTextmagicProvider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createTextmagicProvider","weight":330,"cookies":false,"type":"","demo":"messaging\/create-textmagic-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-textmagic-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"username":{"type":"string","description":"Textmagic username.","x-example":"[USERNAME]"},"apiKey":{"type":"string","description":"Textmagic apiKey.","x-example":"[API_KEY]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name"]}}}}}},"\/messaging\/providers\/textmagic\/{providerId}":{"patch":{"summary":"Update Textmagic provider","operationId":"messagingUpdateTextmagicProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateTextmagicProvider","weight":343,"cookies":false,"type":"","demo":"messaging\/update-textmagic-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-textmagic-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"username":{"type":"string","description":"Textmagic username.","x-example":"[USERNAME]"},"apiKey":{"type":"string","description":"Textmagic apiKey.","x-example":"[API_KEY]"},"from":{"type":"string","description":"Sender number.","x-example":"[FROM]"}}}}}}}},"\/messaging\/providers\/twilio":{"post":{"summary":"Create Twilio provider","operationId":"messagingCreateTwilioProvider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createTwilioProvider","weight":331,"cookies":false,"type":"","demo":"messaging\/create-twilio-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-twilio-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"accountSid":{"type":"string","description":"Twilio account secret ID.","x-example":"[ACCOUNT_SID]"},"authToken":{"type":"string","description":"Twilio authentication token.","x-example":"[AUTH_TOKEN]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name"]}}}}}},"\/messaging\/providers\/twilio\/{providerId}":{"patch":{"summary":"Update Twilio provider","operationId":"messagingUpdateTwilioProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateTwilioProvider","weight":344,"cookies":false,"type":"","demo":"messaging\/update-twilio-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-twilio-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"accountSid":{"type":"string","description":"Twilio account secret ID.","x-example":"[ACCOUNT_SID]"},"authToken":{"type":"string","description":"Twilio authentication token.","x-example":"[AUTH_TOKEN]"},"from":{"type":"string","description":"Sender number.","x-example":"[FROM]"}}}}}}}},"\/messaging\/providers\/vonage":{"post":{"summary":"Create Vonage provider","operationId":"messagingCreateVonageProvider","tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"createVonageProvider","weight":332,"cookies":false,"type":"","demo":"messaging\/create-vonage-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-vonage-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"apiKey":{"type":"string","description":"Vonage API key.","x-example":"[API_KEY]"},"apiSecret":{"type":"string","description":"Vonage API secret.","x-example":"[API_SECRET]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false}},"required":["providerId","name"]}}}}}},"\/messaging\/providers\/vonage\/{providerId}":{"patch":{"summary":"Update Vonage provider","operationId":"messagingUpdateVonageProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"updateVonageProvider","weight":345,"cookies":false,"type":"","demo":"messaging\/update-vonage-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-vonage-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","x-example":false},"apiKey":{"type":"string","description":"Vonage API key.","x-example":"[API_KEY]"},"apiSecret":{"type":"string","description":"Vonage API secret.","x-example":"[API_SECRET]"},"from":{"type":"string","description":"Sender number.","x-example":"[FROM]"}}}}}}}},"\/messaging\/providers\/{providerId}":{"get":{"summary":"Get provider","operationId":"messagingGetProvider","tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/provider"}}}}},"x-appwrite":{"method":"getProvider","weight":337,"cookies":false,"type":"","demo":"messaging\/get-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/get-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}]},"delete":{"summary":"Delete provider","operationId":"messagingDeleteProvider","tags":["messaging"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteProvider","weight":348,"cookies":false,"type":"","demo":"messaging\/delete-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"}]}},"\/messaging\/providers\/{providerId}\/logs":{"get":{"summary":"List provider logs","operationId":"messagingListProviderLogs","tags":["messaging"],"description":"","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listProviderLogs","weight":336,"cookies":false,"type":"","demo":"messaging\/list-provider-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/providers\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"schema":{"type":"string","x-example":"[PROVIDER_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/messaging\/subscribers\/{subscriberId}\/logs":{"get":{"summary":"List subscriber logs","operationId":"messagingListSubscriberLogs","tags":["messaging"],"description":"","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listSubscriberLogs","weight":357,"cookies":false,"type":"","demo":"messaging\/list-subscriber-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/subscribers\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"subscriberId","description":"Subscriber ID.","required":true,"schema":{"type":"string","x-example":"[SUBSCRIBER_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/messaging\/topics":{"get":{"summary":"List topics.","operationId":"messagingListTopics","tags":["messaging"],"description":"","responses":{"200":{"description":"Topic list","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/topicList"}}}}},"x-appwrite":{"method":"listTopics","weight":350,"cookies":false,"type":"","demo":"messaging\/list-topics.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-topics.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, description, emailTotal, smsTotal, pushTotal","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create a topic.","operationId":"messagingCreateTopic","tags":["messaging"],"description":"","responses":{"201":{"description":"Topic","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/topic"}}}}},"x-appwrite":{"method":"createTopic","weight":349,"cookies":false,"type":"","demo":"messaging\/create-topic.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-topic.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"topicId":{"type":"string","description":"Topic ID. Choose a custom Topic ID or a new Topic ID.","x-example":"[TOPIC_ID]"},"name":{"type":"string","description":"Topic Name.","x-example":"[NAME]"},"subscribe":{"type":"array","description":"An array of role strings with subscribe permission. By default all users are granted with any subscribe permission. [learn more about roles](https:\/\/appwrite.io\/docs\/permissions#permission-roles). Maximum of 100 roles are allowed, each 64 characters long.","x-example":"[\"any\"]","items":{"type":"string"}}},"required":["topicId","name"]}}}}}},"\/messaging\/topics\/{topicId}":{"get":{"summary":"Get a topic.","operationId":"messagingGetTopic","tags":["messaging"],"description":"","responses":{"200":{"description":"Topic","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/topic"}}}}},"x-appwrite":{"method":"getTopic","weight":352,"cookies":false,"type":"","demo":"messaging\/get-topic.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/get-topic.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID.","required":true,"schema":{"type":"string","x-example":"[TOPIC_ID]"},"in":"path"}]},"patch":{"summary":"Update a topic.","operationId":"messagingUpdateTopic","tags":["messaging"],"description":"","responses":{"200":{"description":"Topic","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/topic"}}}}},"x-appwrite":{"method":"updateTopic","weight":353,"cookies":false,"type":"","demo":"messaging\/update-topic.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-topic.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID.","required":true,"schema":{"type":"string","x-example":"[TOPIC_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Topic Name.","x-example":"[NAME]"}}}}}}},"delete":{"summary":"Delete a topic.","operationId":"messagingDeleteTopic","tags":["messaging"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteTopic","weight":354,"cookies":false,"type":"","demo":"messaging\/delete-topic.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-topic.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID.","required":true,"schema":{"type":"string","x-example":"[TOPIC_ID]"},"in":"path"}]}},"\/messaging\/topics\/{topicId}\/logs":{"get":{"summary":"List topic logs","operationId":"messagingListTopicLogs","tags":["messaging"],"description":"","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listTopicLogs","weight":351,"cookies":false,"type":"","demo":"messaging\/list-topic-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/topics\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID.","required":true,"schema":{"type":"string","x-example":"[TOPIC_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/messaging\/topics\/{topicId}\/subscribers":{"get":{"summary":"List subscribers.","operationId":"messagingListSubscribers","tags":["messaging"],"description":"","responses":{"200":{"description":"Subscriber list","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/subscriberList"}}}}},"x-appwrite":{"method":"listSubscribers","weight":356,"cookies":false,"type":"","demo":"messaging\/list-subscribers.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-subscribers.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID subscribed to.","required":true,"schema":{"type":"string","x-example":"[TOPIC_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, provider, type, enabled","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create a subscriber.","operationId":"messagingCreateSubscriber","tags":["messaging"],"description":"","responses":{"201":{"description":"Subscriber","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/subscriber"}}}}},"x-appwrite":{"method":"createSubscriber","weight":355,"cookies":false,"type":"","demo":"messaging\/create-subscriber.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-subscriber.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.write","platforms":["server","client","console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[],"Session":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID to subscribe to.","required":true,"schema":{"type":"string","x-example":"[TOPIC_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"subscriberId":{"type":"string","description":"Subscriber ID. Choose a custom Subscriber ID or a new Subscriber ID.","x-example":"[SUBSCRIBER_ID]"},"targetId":{"type":"string","description":"Target ID. The target ID to link to the specified Topic ID.","x-example":"[TARGET_ID]"}},"required":["subscriberId","targetId"]}}}}}},"\/messaging\/topics\/{topicId}\/subscribers\/{subscriberId}":{"get":{"summary":"Get a subscriber.","operationId":"messagingGetSubscriber","tags":["messaging"],"description":"","responses":{"200":{"description":"Subscriber","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/subscriber"}}}}},"x-appwrite":{"method":"getSubscriber","weight":358,"cookies":false,"type":"","demo":"messaging\/get-subscriber.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/get-subscriber.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID subscribed to.","required":true,"schema":{"type":"string","x-example":"[TOPIC_ID]"},"in":"path"},{"name":"subscriberId","description":"Subscriber ID.","required":true,"schema":{"type":"string","x-example":"[SUBSCRIBER_ID]"},"in":"path"}]},"delete":{"summary":"Delete a subscriber.","operationId":"messagingDeleteSubscriber","tags":["messaging"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSubscriber","weight":359,"cookies":false,"type":"","demo":"messaging\/delete-subscriber.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-subscriber.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.write","platforms":["server","client","console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[],"Session":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID subscribed to.","required":true,"schema":{"type":"string","x-example":"[TOPIC_ID]"},"in":"path"},{"name":"subscriberId","description":"Subscriber ID.","required":true,"schema":{"type":"string","x-example":"[SUBSCRIBER_ID]"},"in":"path"}]}},"\/storage\/buckets":{"get":{"summary":"List buckets","operationId":"storageListBuckets","tags":["storage"],"description":"Get a list of all the storage buckets. You can use the query params to filter your results.","responses":{"200":{"description":"Buckets List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/bucketList"}}}}},"x-appwrite":{"method":"listBuckets","weight":188,"cookies":false,"type":"","demo":"storage\/list-buckets.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/list-buckets.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: enabled, name, fileSecurity, maximumFileSize, encryption, antivirus","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create bucket","operationId":"storageCreateBucket","tags":["storage"],"description":"Create a new storage bucket.","responses":{"201":{"description":"Bucket","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/bucket"}}}}},"x-appwrite":{"method":"createBucket","weight":187,"cookies":false,"type":"","demo":"storage\/create-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"bucketId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, no user is granted with any permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":false},"enabled":{"type":"boolean","description":"Is bucket enabled? When set to 'disabled', users cannot access the files in this bucket but Server SDKs with and API key can still access the bucket. No files are lost when this is toggled.","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB.","x-example":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","x-example":"none","enum":["none","gzip","zstd"],"x-enum-name":null,"x-enum-keys":[]},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","x-example":false}},"required":["bucketId","name"]}}}}}},"\/storage\/buckets\/{bucketId}":{"get":{"summary":"Get bucket","operationId":"storageGetBucket","tags":["storage"],"description":"Get a storage bucket by its unique ID. This endpoint response returns a JSON object with the storage bucket metadata.","responses":{"200":{"description":"Bucket","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/bucket"}}}}},"x-appwrite":{"method":"getBucket","weight":189,"cookies":false,"type":"","demo":"storage\/get-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"bucketId","description":"Bucket unique ID.","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"}]},"put":{"summary":"Update bucket","operationId":"storageUpdateBucket","tags":["storage"],"description":"Update a storage bucket by its unique ID.","responses":{"200":{"description":"Bucket","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/bucket"}}}}},"x-appwrite":{"method":"updateBucket","weight":190,"cookies":false,"type":"","demo":"storage\/update-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"bucketId","description":"Bucket unique ID.","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Bucket name","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":false},"enabled":{"type":"boolean","description":"Is bucket enabled? When set to 'disabled', users cannot access the files in this bucket but Server SDKs with and API key can still access the bucket. No files are lost when this is toggled.","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB.","x-example":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","x-example":"none","enum":["none","gzip","zstd"],"x-enum-name":null,"x-enum-keys":[]},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","x-example":false}},"required":["name"]}}}}},"delete":{"summary":"Delete bucket","operationId":"storageDeleteBucket","tags":["storage"],"description":"Delete a storage bucket by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteBucket","weight":191,"cookies":false,"type":"","demo":"storage\/delete-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"bucketId","description":"Bucket unique ID.","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files":{"get":{"summary":"List files","operationId":"storageListFiles","tags":["storage"],"description":"Get a list of all the user files. You can use the query params to filter your results.","responses":{"200":{"description":"Files List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/fileList"}}}}},"x-appwrite":{"method":"listFiles","weight":193,"cookies":false,"type":"","demo":"storage\/list-files.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/list-files.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create file","operationId":"storageCreateFile","tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"createFile","weight":192,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"}],"requestBody":{"content":{"multipart\/form-data":{"schema":{"type":"object","properties":{"fileId":{"type":"string","description":"File ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[FILE_ID]","x-upload-id":true},"file":{"type":"string","description":"Binary file. Appwrite SDKs provide helpers to handle file input. [Learn about file input](https:\/\/appwrite.io\/docs\/storage#file-input).","x-example":null},"permissions":{"type":"array","description":"An array of permission strings. By default, only the current user is granted all permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["fileId","file"]}}}}}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get file","operationId":"storageGetFile","tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"getFile","weight":194,"cookies":false,"type":"","demo":"storage\/get-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File ID.","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"}]},"put":{"summary":"Update file","operationId":"storageUpdateFile","tags":["storage"],"description":"Update a file by its unique ID. Only users with write permissions have access to update this resource.","responses":{"200":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"updateFile","weight":198,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File unique ID.","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Name of the file","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission string. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":199,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File ID.","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/download":{"get":{"summary":"Get file for download","operationId":"storageGetFileDownload","tags":["storage"],"description":"Get a file content by its unique ID. The endpoint response return with a 'Content-Disposition: attachment' header that tells the browser to start downloading the file to user downloads directory.","responses":{"200":{"description":"File"}},"x-appwrite":{"method":"getFileDownload","weight":196,"cookies":false,"type":"location","demo":"storage\/get-file-download.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-download.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File ID.","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/preview":{"get":{"summary":"Get file preview","operationId":"storageGetFilePreview","tags":["storage"],"description":"Get a file preview image. Currently, this method supports preview for image files (jpg, png, and gif), other supported formats, like pdf, docs, slides, and spreadsheets, will return the file icon image. You can also pass query string arguments for cutting and resizing your preview image. Preview is supported only for image files smaller than 10MB.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFilePreview","weight":195,"cookies":false,"type":"location","demo":"storage\/get-file-preview.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-preview.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File ID","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"},{"name":"width","description":"Resize preview image width, Pass an integer between 0 to 4000.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 4000.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"gravity","description":"Image crop gravity. Can be one of center,top-left,top,top-right,left,right,bottom-left,bottom,bottom-right","required":false,"schema":{"type":"string","x-example":"center","enum":["center","top-left","top","top-right","left","right","bottom-left","bottom","bottom-right"],"x-enum-name":"ImageGravity","x-enum-keys":[],"default":"center"},"in":"query"},{"name":"quality","description":"Preview image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":100},"in":"query"},{"name":"borderWidth","description":"Preview image border in pixels. Pass an integer between 0 to 100. Defaults to 0.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"borderColor","description":"Preview image border color. Use a valid HEX color, no # is needed for prefix.","required":false,"schema":{"type":"string","default":""},"in":"query"},{"name":"borderRadius","description":"Preview image border radius in pixels. Pass an integer between 0 to 4000.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"opacity","description":"Preview image opacity. Only works with images having an alpha channel (like png). Pass a number between 0 to 1.","required":false,"schema":{"type":"number","format":"float","x-example":0,"default":1},"in":"query"},{"name":"rotation","description":"Preview image rotation in degrees. Pass an integer between -360 and 360.","required":false,"schema":{"type":"integer","format":"int32","x-example":-360,"default":0},"in":"query"},{"name":"background","description":"Preview image background color. Only works with transparent images (png). Use a valid HEX color, no # is needed for prefix.","required":false,"schema":{"type":"string","default":""},"in":"query"},{"name":"output","description":"Output format type (jpeg, jpg, png, gif and webp).","required":false,"schema":{"type":"string","x-example":"jpg","enum":["jpg","jpeg","gif","png","webp"],"x-enum-name":"ImageFormat","x-enum-keys":[],"default":""},"in":"query"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/view":{"get":{"summary":"Get file for view","operationId":"storageGetFileView","tags":["storage"],"description":"Get a file content by its unique ID. This endpoint is similar to the download method but returns with no 'Content-Disposition: attachment' header.","responses":{"200":{"description":"File"}},"x-appwrite":{"method":"getFileView","weight":197,"cookies":false,"type":"location","demo":"storage\/get-file-view.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-view.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_ID]"},"in":"path"},{"name":"fileId","description":"File ID.","required":true,"schema":{"type":"string","x-example":"[FILE_ID]"},"in":"path"}]}},"\/teams":{"get":{"summary":"List teams","operationId":"teamsList","tags":["teams"],"description":"Get a list of all the teams in which the current user is a member. You can use the parameters to filter your results.","responses":{"200":{"description":"Teams List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/teamList"}}}}},"x-appwrite":{"method":"list","weight":203,"cookies":false,"type":"","demo":"teams\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-teams.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total, billingPlan","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create team","operationId":"teamsCreate","tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"create","weight":202,"cookies":false,"type":"","demo":"teams\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/create-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"teamId":{"type":"string","description":"Team ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[TEAM_ID]"},"name":{"type":"string","description":"Team name. Max length: 128 chars.","x-example":"[NAME]"},"roles":{"type":"array","description":"Array of strings. Use this param to set the roles in the team for the user who created it. The default role is **owner**. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}}}}},"\/teams\/{teamId}":{"get":{"summary":"Get team","operationId":"teamsGet","tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"get","weight":204,"cookies":false,"type":"","demo":"teams\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams","offline-key":"{teamId}","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}]},"put":{"summary":"Update name","operationId":"teamsUpdateName","tags":["teams"],"description":"Update the team's name by its unique ID.","responses":{"200":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"updateName","weight":206,"cookies":false,"type":"","demo":"teams\/update-name.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-name.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams","offline-key":"{teamId}","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"New team name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["name"]}}}}},"delete":{"summary":"Delete team","operationId":"teamsDelete","tags":["teams"],"description":"Delete a team using its ID. Only team members with the owner role can delete the team.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":208,"cookies":false,"type":"","demo":"teams\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/delete-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}]}},"\/teams\/{teamId}\/memberships":{"get":{"summary":"List team memberships","operationId":"teamsListMemberships","tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"listMemberships","weight":210,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/memberships","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create team membership","operationId":"teamsCreateMembership","tags":["teams"],"description":"Invite a new member to join your team. Provide an ID for existing users, or invite unregistered users using an email or phone number. If initiated from a Client SDK, Appwrite will send an email or sms with a link to join the team to the invited user, and an account will be created for them if one doesn't exist. If initiated from a Server SDK, the new member will be added automatically to the team.\n\nYou only need to provide one of a user ID, email, or phone number. Appwrite will prioritize accepting the user ID > email > phone number if you provide more than one of these parameters.\n\nUse the `url` parameter to redirect the user from the invitation email to your app. After the user is redirected, use the [Update Team Membership Status](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/teams#updateMembershipStatus) endpoint to allow the user to accept the invitation to the team. \n\nPlease note that to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) Appwrite will accept the only redirect URLs under the domains you have added as a platform on the Appwrite Console.\n","responses":{"201":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"createMembership","weight":209,"cookies":false,"type":"","demo":"teams\/create-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/create-team-membership.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"email":{"type":"string","description":"Email of the new team member.","x-example":"email@example.com"},"userId":{"type":"string","description":"ID of the user to be added to a team.","x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"roles":{"type":"array","description":"Array of strings. Use this param to set the user roles in the team. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"},"name":{"type":"string","description":"Name of the new team member. Max length: 128 chars.","x-example":"[NAME]"}},"required":["roles"]}}}}}},"\/teams\/{teamId}\/memberships\/{membershipId}":{"get":{"summary":"Get team membership","operationId":"teamsGetMembership","tags":["teams"],"description":"Get a team member by the membership unique id. All team members have read access for this resource.","responses":{"200":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"getMembership","weight":211,"cookies":false,"type":"","demo":"teams\/get-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-member.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/memberships","offline-key":"{membershipId}","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"schema":{"type":"string","x-example":"[MEMBERSHIP_ID]"},"in":"path"}]},"patch":{"summary":"Update membership","operationId":"teamsUpdateMembership","tags":["teams"],"description":"Modify the roles of a team member. Only team members with the owner role have access to this endpoint. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions).\n","responses":{"200":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"updateMembership","weight":212,"cookies":false,"type":"","demo":"teams\/update-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"schema":{"type":"string","x-example":"[MEMBERSHIP_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"roles":{"type":"array","description":"An array of strings. Use this param to set the user's roles in the team. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["roles"]}}}}},"delete":{"summary":"Delete team membership","operationId":"teamsDeleteMembership","tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":214,"cookies":false,"type":"","demo":"teams\/delete-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/delete-team-membership.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"schema":{"type":"string","x-example":"[MEMBERSHIP_ID]"},"in":"path"}]}},"\/teams\/{teamId}\/memberships\/{membershipId}\/status":{"patch":{"summary":"Update team membership status","operationId":"teamsUpdateMembershipStatus","tags":["teams"],"description":"Use this endpoint to allow a user to accept an invitation to join a team after being redirected back to your app from the invitation email received by the user.\n\nIf the request is successful, a session for the user is automatically created.\n","responses":{"200":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"updateMembershipStatus","weight":213,"cookies":false,"type":"","demo":"teams\/update-membership-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"public","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"schema":{"type":"string","x-example":"[MEMBERSHIP_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Secret key.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/teams\/{teamId}\/prefs":{"get":{"summary":"Get team preferences","operationId":"teamsGetPrefs","tags":["teams"],"description":"Get the team's shared preferences by its unique ID. If a preference doesn't need to be shared by all team members, prefer storing them in [user preferences](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#getPrefs).","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"getPrefs","weight":205,"cookies":false,"type":"","demo":"teams\/get-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/prefs","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}]},"put":{"summary":"Update preferences","operationId":"teamsUpdatePrefs","tags":["teams"],"description":"Update the team's preferences by its unique ID. The object you pass is stored as is and replaces any previous value. The maximum allowed prefs size is 64kB and throws an error if exceeded.","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"updatePrefs","weight":207,"cookies":false,"type":"","demo":"teams\/update-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/prefs","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"prefs":{"type":"object","description":"Prefs key-value JSON object.","x-example":"{}"}},"required":["prefs"]}}}}}},"\/users":{"get":{"summary":"List users","operationId":"usersList","tags":["users"],"description":"Get a list of all the project's users. You can use the query params to filter your results.","responses":{"200":{"description":"Users List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/userList"}}}}},"x-appwrite":{"method":"list","weight":225,"cookies":false,"type":"","demo":"users\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-users.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, email, phone, status, passwordUpdate, registration, emailVerification, phoneVerification, labels","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create user","operationId":"usersCreate","tags":["users"],"description":"Create a new user.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"create","weight":216,"cookies":false,"type":"","demo":"users\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"password":{"type":"string","description":"Plain text user password. Must be at least 8 chars.","x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId"]}}}}}},"\/users\/argon2":{"post":{"summary":"Create user with Argon2 password","operationId":"usersCreateArgon2User","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Argon2](https:\/\/en.wikipedia.org\/wiki\/Argon2) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createArgon2User","weight":219,"cookies":false,"type":"","demo":"users\/create-argon2user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-argon2-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Argon2.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/bcrypt":{"post":{"summary":"Create user with bcrypt password","operationId":"usersCreateBcryptUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Bcrypt](https:\/\/en.wikipedia.org\/wiki\/Bcrypt) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createBcryptUser","weight":217,"cookies":false,"type":"","demo":"users\/create-bcrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-bcrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Bcrypt.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/identities":{"get":{"summary":"List Identities","operationId":"usersListIdentities","tags":["users"],"description":"Get identities for all users.","responses":{"200":{"description":"Identities List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/identityList"}}}}},"x-appwrite":{"method":"listIdentities","weight":233,"cookies":false,"type":"","demo":"users\/list-identities.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-identities.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, provider, providerUid, providerEmail, providerAccessTokenExpiry","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]}},"\/users\/identities\/{identityId}":{"delete":{"summary":"Delete identity","operationId":"usersDeleteIdentity","tags":["users"],"description":"Delete an identity by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIdentity","weight":253,"cookies":false,"type":"","demo":"users\/delete-identity.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-identity.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"identityId","description":"Identity ID.","required":true,"schema":{"type":"string","x-example":"[IDENTITY_ID]"},"in":"path"}]}},"\/users\/md5":{"post":{"summary":"Create user with MD5 password","operationId":"usersCreateMD5User","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [MD5](https:\/\/en.wikipedia.org\/wiki\/MD5) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createMD5User","weight":218,"cookies":false,"type":"","demo":"users\/create-m-d5user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-md5-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using MD5.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/phpass":{"post":{"summary":"Create user with PHPass password","operationId":"usersCreatePHPassUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [PHPass](https:\/\/www.openwall.com\/phpass\/) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createPHPassUser","weight":221,"cookies":false,"type":"","demo":"users\/create-p-h-pass-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-phpass-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or pass the string `ID.unique()`to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using PHPass.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/scrypt":{"post":{"summary":"Create user with Scrypt password","operationId":"usersCreateScryptUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt](https:\/\/github.com\/Tarsnap\/scrypt) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createScryptUser","weight":222,"cookies":false,"type":"","demo":"users\/create-scrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt.","x-example":"password"},"passwordSalt":{"type":"string","description":"Optional salt used to hash password.","x-example":"[PASSWORD_SALT]"},"passwordCpu":{"type":"integer","description":"Optional CPU cost used to hash password.","x-example":null},"passwordMemory":{"type":"integer","description":"Optional memory cost used to hash password.","x-example":null},"passwordParallel":{"type":"integer","description":"Optional parallelization cost used to hash password.","x-example":null},"passwordLength":{"type":"integer","description":"Optional hash length used to hash password.","x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordCpu","passwordMemory","passwordParallel","passwordLength"]}}}}}},"\/users\/scrypt-modified":{"post":{"summary":"Create user with Scrypt modified password","operationId":"usersCreateScryptModifiedUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt Modified](https:\/\/gist.github.com\/Meldiron\/eecf84a0225eccb5a378d45bb27462cc) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createScryptModifiedUser","weight":223,"cookies":false,"type":"","demo":"users\/create-scrypt-modified-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-modified-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt Modified.","x-example":"password"},"passwordSalt":{"type":"string","description":"Salt used to hash password.","x-example":"[PASSWORD_SALT]"},"passwordSaltSeparator":{"type":"string","description":"Salt separator used to hash password.","x-example":"[PASSWORD_SALT_SEPARATOR]"},"passwordSignerKey":{"type":"string","description":"Signer key used to hash password.","x-example":"[PASSWORD_SIGNER_KEY]"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordSaltSeparator","passwordSignerKey"]}}}}}},"\/users\/sha":{"post":{"summary":"Create user with SHA password","operationId":"usersCreateSHAUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [SHA](https:\/\/en.wikipedia.org\/wiki\/Secure_Hash_Algorithm) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createSHAUser","weight":220,"cookies":false,"type":"","demo":"users\/create-s-h-a-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-sha-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using SHA.","x-example":"password"},"passwordVersion":{"type":"string","description":"Optional SHA version used to hash password. Allowed values are: 'sha1', 'sha224', 'sha256', 'sha384', 'sha512\/224', 'sha512\/256', 'sha512', 'sha3-224', 'sha3-256', 'sha3-384', 'sha3-512'","x-example":"sha1","enum":["sha1","sha224","sha256","sha384","sha512\/224","sha512\/256","sha512","sha3-224","sha3-256","sha3-384","sha3-512"],"x-enum-name":"PasswordHash","x-enum-keys":[]},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/{userId}":{"get":{"summary":"Get user","operationId":"usersGet","tags":["users"],"description":"Get a user by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"get","weight":226,"cookies":false,"type":"","demo":"users\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]},"delete":{"summary":"Delete user","operationId":"usersDelete","tags":["users"],"description":"Delete a user by its unique ID, thereby releasing it's ID. Since ID is released and can be reused, all user-related resources like documents or storage files should be deleted before user deletion. If you want to keep ID reserved, use the [updateStatus](https:\/\/appwrite.io\/docs\/server\/users#usersUpdateStatus) endpoint instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":251,"cookies":false,"type":"","demo":"users\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]}},"\/users\/{userId}\/email":{"patch":{"summary":"Update email","operationId":"usersUpdateEmail","tags":["users"],"description":"Update the user email by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateEmail","weight":239,"cookies":false,"type":"","demo":"users\/update-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","x-example":"email@example.com"}},"required":["email"]}}}}}},"\/users\/{userId}\/labels":{"put":{"summary":"Update user labels","operationId":"usersUpdateLabels","tags":["users"],"description":"Update the user labels by its unique ID. \n\nLabels can be used to grant access to resources. While teams are a way for user's to share access to a resource, labels can be defined by the developer to grant access without an invitation. See the [Permissions docs](https:\/\/appwrite.io\/docs\/permissions) for more info.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateLabels","weight":235,"cookies":false,"type":"","demo":"users\/update-labels.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-labels.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"labels":{"type":"array","description":"Array of user labels. Replaces the previous labels. Maximum of 1000 labels are allowed, each up to 36 alphanumeric characters long.","x-example":null,"items":{"type":"string"}}},"required":["labels"]}}}}}},"\/users\/{userId}\/logs":{"get":{"summary":"List user logs","operationId":"usersListLogs","tags":["users"],"description":"Get the user activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listLogs","weight":231,"cookies":false,"type":"","demo":"users\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/users\/{userId}\/memberships":{"get":{"summary":"List user memberships","operationId":"usersListMemberships","tags":["users"],"description":"Get the user membership list by its unique ID.","responses":{"200":{"description":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"listMemberships","weight":230,"cookies":false,"type":"","demo":"users\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-memberships.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]}},"\/users\/{userId}\/mfa":{"patch":{"summary":"Update MFA","operationId":"usersUpdateMfa","tags":["users"],"description":"","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateMfa","weight":244,"cookies":false,"type":"","demo":"users\/update-mfa.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-mfa.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"mfa":{"type":"boolean","description":"Enable or disable MFA.","x-example":false}},"required":["mfa"]}}}}}},"\/users\/{userId}\/mfa\/factors":{"get":{"summary":"List Factors","operationId":"usersListFactors","tags":["users"],"description":"","responses":{"200":{"description":"MFAFactors","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/mfaFactors"}}}}},"x-appwrite":{"method":"listFactors","weight":245,"cookies":false,"type":"","demo":"users\/list-factors.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-factors.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]}},"\/users\/{userId}\/mfa\/{type}":{"delete":{"summary":"Delete Authenticator","operationId":"usersDeleteAuthenticator","tags":["users"],"description":"","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"deleteAuthenticator","weight":246,"cookies":false,"type":"","demo":"users\/delete-authenticator.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-mfa.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"type","description":"Type of authenticator.","required":true,"schema":{"type":"string","x-example":"totp","enum":["totp"],"x-enum-name":null,"x-enum-keys":[]},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"otp":{"type":"string","description":"Valid verification token.","x-example":"[OTP]"}},"required":["otp"]}}}}}},"\/users\/{userId}\/name":{"patch":{"summary":"Update name","operationId":"usersUpdateName","tags":["users"],"description":"Update the user name by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateName","weight":237,"cookies":false,"type":"","demo":"users\/update-name.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-name.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["name"]}}}}}},"\/users\/{userId}\/password":{"patch":{"summary":"Update password","operationId":"usersUpdatePassword","tags":["users"],"description":"Update the user password by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePassword","weight":238,"cookies":false,"type":"","demo":"users\/update-password.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-password.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"password":{"type":"string","description":"New user password. Must be at least 8 chars.","x-example":null}},"required":["password"]}}}}}},"\/users\/{userId}\/phone":{"patch":{"summary":"Update phone","operationId":"usersUpdatePhone","tags":["users"],"description":"Update the user phone by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePhone","weight":240,"cookies":false,"type":"","demo":"users\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"number":{"type":"string","description":"User phone number.","x-example":"+12065550100"}},"required":["number"]}}}}}},"\/users\/{userId}\/prefs":{"get":{"summary":"Get user preferences","operationId":"usersGetPrefs","tags":["users"],"description":"Get the user preferences by its unique ID.","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"getPrefs","weight":227,"cookies":false,"type":"","demo":"users\/get-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]},"patch":{"summary":"Update user preferences","operationId":"usersUpdatePrefs","tags":["users"],"description":"Update the user preferences by its unique ID. The object you pass is stored as is, and replaces any previous value. The maximum allowed prefs size is 64kB and throws error if exceeded.","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"updatePrefs","weight":242,"cookies":false,"type":"","demo":"users\/update-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"prefs":{"type":"object","description":"Prefs key-value JSON object.","x-example":"{}"}},"required":["prefs"]}}}}}},"\/users\/{userId}\/sessions":{"get":{"summary":"List user sessions","operationId":"usersListSessions","tags":["users"],"description":"Get the user sessions list by its unique ID.","responses":{"200":{"description":"Sessions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/sessionList"}}}}},"x-appwrite":{"method":"listSessions","weight":229,"cookies":false,"type":"","demo":"users\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]},"post":{"summary":"Create session","operationId":"usersCreateSession","tags":["users"],"description":"Creates a session for a user. Returns an immediately usable session object.\n\nIf you want to generate a token for a custom authentication flow, use the [POST \/users\/{userId}\/tokens](https:\/\/appwrite.io\/docs\/server\/users#createToken) endpoint.","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"createSession","weight":247,"cookies":false,"type":"","demo":"users\/create-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-session.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]},"delete":{"summary":"Delete user sessions","operationId":"usersDeleteSessions","tags":["users"],"description":"Delete all user's sessions by using the user's unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":250,"cookies":false,"type":"","demo":"users\/delete-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]}},"\/users\/{userId}\/sessions\/{sessionId}":{"delete":{"summary":"Delete user session","operationId":"usersDeleteSession","tags":["users"],"description":"Delete a user sessions by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSession","weight":249,"cookies":false,"type":"","demo":"users\/delete-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-user-session.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"sessionId","description":"Session ID.","required":true,"schema":{"type":"string","x-example":"[SESSION_ID]"},"in":"path"}]}},"\/users\/{userId}\/status":{"patch":{"summary":"Update user status","operationId":"usersUpdateStatus","tags":["users"],"description":"Update the user status by its unique ID. Use this endpoint as an alternative to deleting a user if you want to keep user's ID reserved.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateStatus","weight":234,"cookies":false,"type":"","demo":"users\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"status":{"type":"boolean","description":"User Status. To activate the user pass `true` and to block the user pass `false`.","x-example":false}},"required":["status"]}}}}}},"\/users\/{userId}\/targets":{"get":{"summary":"List User Targets","operationId":"usersListTargets","tags":["users"],"description":"","responses":{"200":{"description":"Target list","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/targetList"}}}}},"x-appwrite":{"method":"listTargets","weight":232,"cookies":false,"type":"","demo":"users\/list-targets.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-targets.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.read","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, email, phone, status, passwordUpdate, registration, emailVerification, phoneVerification, labels","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"post":{"summary":"Create User Target","operationId":"usersCreateTarget","tags":["users"],"description":"","responses":{"201":{"description":"Target","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/target"}}}}},"x-appwrite":{"method":"createTarget","weight":224,"cookies":false,"type":"","demo":"users\/create-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-target.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"targetId":{"type":"string","description":"Target ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[TARGET_ID]"},"providerType":{"type":"string","description":"The target provider type. Can be one of the following: `email`, `sms` or `push`.","x-example":"email","enum":["email","sms","push"],"x-enum-name":"MessagingProviderType","x-enum-keys":[]},"identifier":{"type":"string","description":"The target identifier (token, email, phone etc.)","x-example":"[IDENTIFIER]"},"providerId":{"type":"string","description":"Provider ID. Message will be sent to this target from the specified provider ID. If no provider ID is set the first setup provider will be used.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Target name. Max length: 128 chars. For example: My Awesome App Galaxy S23.","x-example":"[NAME]"}},"required":["targetId","providerType","identifier"]}}}}}},"\/users\/{userId}\/targets\/{targetId}":{"get":{"summary":"Get User Target","operationId":"usersGetTarget","tags":["users"],"description":"","responses":{"200":{"description":"Target","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/target"}}}}},"x-appwrite":{"method":"getTarget","weight":228,"cookies":false,"type":"","demo":"users\/get-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-target.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.read","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"targetId","description":"Target ID.","required":true,"schema":{"type":"string","x-example":"[TARGET_ID]"},"in":"path"}]},"patch":{"summary":"Update User target","operationId":"usersUpdateTarget","tags":["users"],"description":"","responses":{"200":{"description":"Target","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/target"}}}}},"x-appwrite":{"method":"updateTarget","weight":243,"cookies":false,"type":"","demo":"users\/update-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-target.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"targetId","description":"Target ID.","required":true,"schema":{"type":"string","x-example":"[TARGET_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"identifier":{"type":"string","description":"The target identifier (token, email, phone etc.)","x-example":"[IDENTIFIER]"},"providerId":{"type":"string","description":"Provider ID. Message will be sent to this target from the specified provider ID. If no provider ID is set the first setup provider will be used.","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Target name. Max length: 128 chars. For example: My Awesome App Galaxy S23.","x-example":"[NAME]"}}}}}}},"delete":{"summary":"Delete user target","operationId":"usersDeleteTarget","tags":["users"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteTarget","weight":252,"cookies":false,"type":"","demo":"users\/delete-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-target.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"targetId","description":"Target ID.","required":true,"schema":{"type":"string","x-example":"[TARGET_ID]"},"in":"path"}]}},"\/users\/{userId}\/tokens":{"post":{"summary":"Create token","operationId":"usersCreateToken","tags":["users"],"description":"Returns a token with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [PUT \/account\/sessions\/custom](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateCustomSession) endpoint to complete the login process.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createToken","weight":248,"cookies":false,"type":"","demo":"users\/create-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-token.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"length":{"type":"integer","description":"Token length in characters. The default length is 6 characters","x-example":4},"expire":{"type":"integer","description":"Token expiration period in seconds. The default expiration is 15 minutes.","x-example":60}}}}}}}},"\/users\/{userId}\/verification":{"patch":{"summary":"Update email verification","operationId":"usersUpdateEmailVerification","tags":["users"],"description":"Update the user email verification status by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateEmailVerification","weight":241,"cookies":false,"type":"","demo":"users\/update-email-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-email-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"emailVerification":{"type":"boolean","description":"User email verification status.","x-example":false}},"required":["emailVerification"]}}}}}},"\/users\/{userId}\/verification\/phone":{"patch":{"summary":"Update phone verification","operationId":"usersUpdatePhoneVerification","tags":["users"],"description":"Update the user phone verification status by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePhoneVerification","weight":236,"cookies":false,"type":"","demo":"users\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"phoneVerification":{"type":"boolean","description":"User phone verification status.","x-example":false}},"required":["phoneVerification"]}}}}}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"project","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]},{"name":"proxy","description":"The Proxy Service allows you to configure actions for your domains beyond DNS configuration.","x-globalAttributes":[]},{"name":"graphql","description":"The GraphQL API allows you to query and mutate your Appwrite server using GraphQL.","x-globalAttributes":[]},{"name":"console","description":"The Console service allows you to interact with console relevant informations.","x-globalAttributes":[]},{"name":"migrations","description":"The Migrations service allows you to migrate third-party data to your Appwrite project.","x-globalAttributes":[]},{"name":"messaging","description":"The Messaging service allows you to send messages to any provider type (SMTP, push notification, SMS, etc.).","x-globalAttributes":[]}],"components":{"schemas":{"any":{"description":"Any","type":"object","additionalProperties":true},"error":{"description":"Error","type":"object","properties":{"message":{"type":"string","description":"Error message.","x-example":"Not found"},"code":{"type":"string","description":"Error code.","x-example":"404"},"type":{"type":"string","description":"Error type. You can learn more about all the error types at https:\/\/appwrite.io\/docs\/error-codes#errorTypes","x-example":"not_found"},"version":{"type":"string","description":"Server version number.","x-example":"1.0"}},"required":["message","code","type","version"]},"documentList":{"description":"Documents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of documents documents that matched your query.","x-example":5,"format":"int32"},"documents":{"type":"array","description":"List of documents.","items":{"$ref":"#\/components\/schemas\/document"},"x-example":""}},"required":["total","documents"]},"collectionList":{"description":"Collections List","type":"object","properties":{"total":{"type":"integer","description":"Total number of collections documents that matched your query.","x-example":5,"format":"int32"},"collections":{"type":"array","description":"List of collections.","items":{"$ref":"#\/components\/schemas\/collection"},"x-example":""}},"required":["total","collections"]},"databaseList":{"description":"Databases List","type":"object","properties":{"total":{"type":"integer","description":"Total number of databases documents that matched your query.","x-example":5,"format":"int32"},"databases":{"type":"array","description":"List of databases.","items":{"$ref":"#\/components\/schemas\/database"},"x-example":""}},"required":["total","databases"]},"indexList":{"description":"Indexes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of indexes documents that matched your query.","x-example":5,"format":"int32"},"indexes":{"type":"array","description":"List of indexes.","items":{"$ref":"#\/components\/schemas\/index"},"x-example":""}},"required":["total","indexes"]},"userList":{"description":"Users List","type":"object","properties":{"total":{"type":"integer","description":"Total number of users documents that matched your query.","x-example":5,"format":"int32"},"users":{"type":"array","description":"List of users.","items":{"$ref":"#\/components\/schemas\/user"},"x-example":""}},"required":["total","users"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of sessions documents that matched your query.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"$ref":"#\/components\/schemas\/session"},"x-example":""}},"required":["total","sessions"]},"identityList":{"description":"Identities List","type":"object","properties":{"total":{"type":"integer","description":"Total number of identities documents that matched your query.","x-example":5,"format":"int32"},"identities":{"type":"array","description":"List of identities.","items":{"$ref":"#\/components\/schemas\/identity"},"x-example":""}},"required":["total","identities"]},"logList":{"description":"Logs List","type":"object","properties":{"total":{"type":"integer","description":"Total number of logs documents that matched your query.","x-example":5,"format":"int32"},"logs":{"type":"array","description":"List of logs.","items":{"$ref":"#\/components\/schemas\/log"},"x-example":""}},"required":["total","logs"]},"fileList":{"description":"Files List","type":"object","properties":{"total":{"type":"integer","description":"Total number of files documents that matched your query.","x-example":5,"format":"int32"},"files":{"type":"array","description":"List of files.","items":{"$ref":"#\/components\/schemas\/file"},"x-example":""}},"required":["total","files"]},"bucketList":{"description":"Buckets List","type":"object","properties":{"total":{"type":"integer","description":"Total number of buckets documents that matched your query.","x-example":5,"format":"int32"},"buckets":{"type":"array","description":"List of buckets.","items":{"$ref":"#\/components\/schemas\/bucket"},"x-example":""}},"required":["total","buckets"]},"teamList":{"description":"Teams List","type":"object","properties":{"total":{"type":"integer","description":"Total number of teams documents that matched your query.","x-example":5,"format":"int32"},"teams":{"type":"array","description":"List of teams.","items":{"$ref":"#\/components\/schemas\/team"},"x-example":""}},"required":["total","teams"]},"membershipList":{"description":"Memberships List","type":"object","properties":{"total":{"type":"integer","description":"Total number of memberships documents that matched your query.","x-example":5,"format":"int32"},"memberships":{"type":"array","description":"List of memberships.","items":{"$ref":"#\/components\/schemas\/membership"},"x-example":""}},"required":["total","memberships"]},"functionList":{"description":"Functions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of functions documents that matched your query.","x-example":5,"format":"int32"},"functions":{"type":"array","description":"List of functions.","items":{"$ref":"#\/components\/schemas\/function"},"x-example":""}},"required":["total","functions"]},"runtimeList":{"description":"Runtimes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of runtimes documents that matched your query.","x-example":5,"format":"int32"},"runtimes":{"type":"array","description":"List of runtimes.","items":{"$ref":"#\/components\/schemas\/runtime"},"x-example":""}},"required":["total","runtimes"]},"deploymentList":{"description":"Deployments List","type":"object","properties":{"total":{"type":"integer","description":"Total number of deployments documents that matched your query.","x-example":5,"format":"int32"},"deployments":{"type":"array","description":"List of deployments.","items":{"$ref":"#\/components\/schemas\/deployment"},"x-example":""}},"required":["total","deployments"]},"executionList":{"description":"Executions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of executions documents that matched your query.","x-example":5,"format":"int32"},"executions":{"type":"array","description":"List of executions.","items":{"$ref":"#\/components\/schemas\/execution"},"x-example":""}},"required":["total","executions"]},"countryList":{"description":"Countries List","type":"object","properties":{"total":{"type":"integer","description":"Total number of countries documents that matched your query.","x-example":5,"format":"int32"},"countries":{"type":"array","description":"List of countries.","items":{"$ref":"#\/components\/schemas\/country"},"x-example":""}},"required":["total","countries"]},"continentList":{"description":"Continents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of continents documents that matched your query.","x-example":5,"format":"int32"},"continents":{"type":"array","description":"List of continents.","items":{"$ref":"#\/components\/schemas\/continent"},"x-example":""}},"required":["total","continents"]},"languageList":{"description":"Languages List","type":"object","properties":{"total":{"type":"integer","description":"Total number of languages documents that matched your query.","x-example":5,"format":"int32"},"languages":{"type":"array","description":"List of languages.","items":{"$ref":"#\/components\/schemas\/language"},"x-example":""}},"required":["total","languages"]},"currencyList":{"description":"Currencies List","type":"object","properties":{"total":{"type":"integer","description":"Total number of currencies documents that matched your query.","x-example":5,"format":"int32"},"currencies":{"type":"array","description":"List of currencies.","items":{"$ref":"#\/components\/schemas\/currency"},"x-example":""}},"required":["total","currencies"]},"phoneList":{"description":"Phones List","type":"object","properties":{"total":{"type":"integer","description":"Total number of phones documents that matched your query.","x-example":5,"format":"int32"},"phones":{"type":"array","description":"List of phones.","items":{"$ref":"#\/components\/schemas\/phone"},"x-example":""}},"required":["total","phones"]},"variableList":{"description":"Variables List","type":"object","properties":{"total":{"type":"integer","description":"Total number of variables documents that matched your query.","x-example":5,"format":"int32"},"variables":{"type":"array","description":"List of variables.","items":{"$ref":"#\/components\/schemas\/variable"},"x-example":""}},"required":["total","variables"]},"localeCodeList":{"description":"Locale codes list","type":"object","properties":{"total":{"type":"integer","description":"Total number of localeCodes documents that matched your query.","x-example":5,"format":"int32"},"localeCodes":{"type":"array","description":"List of localeCodes.","items":{"$ref":"#\/components\/schemas\/localeCode"},"x-example":""}},"required":["total","localeCodes"]},"providerList":{"description":"Provider list","type":"object","properties":{"total":{"type":"integer","description":"Total number of providers documents that matched your query.","x-example":5,"format":"int32"},"providers":{"type":"array","description":"List of providers.","items":{"$ref":"#\/components\/schemas\/provider"},"x-example":""}},"required":["total","providers"]},"messageList":{"description":"Message list","type":"object","properties":{"total":{"type":"integer","description":"Total number of messages documents that matched your query.","x-example":5,"format":"int32"},"messages":{"type":"array","description":"List of messages.","items":{"$ref":"#\/components\/schemas\/message"},"x-example":""}},"required":["total","messages"]},"topicList":{"description":"Topic list","type":"object","properties":{"total":{"type":"integer","description":"Total number of topics documents that matched your query.","x-example":5,"format":"int32"},"topics":{"type":"array","description":"List of topics.","items":{"$ref":"#\/components\/schemas\/topic"},"x-example":""}},"required":["total","topics"]},"subscriberList":{"description":"Subscriber list","type":"object","properties":{"total":{"type":"integer","description":"Total number of subscribers documents that matched your query.","x-example":5,"format":"int32"},"subscribers":{"type":"array","description":"List of subscribers.","items":{"$ref":"#\/components\/schemas\/subscriber"},"x-example":""}},"required":["total","subscribers"]},"targetList":{"description":"Target list","type":"object","properties":{"total":{"type":"integer","description":"Total number of targets documents that matched your query.","x-example":5,"format":"int32"},"targets":{"type":"array","description":"List of targets.","items":{"$ref":"#\/components\/schemas\/target"},"x-example":""}},"required":["total","targets"]},"database":{"description":"Database","type":"object","properties":{"$id":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Database name.","x-example":"My Database"},"$createdAt":{"type":"string","description":"Database creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Database update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"enabled":{"type":"boolean","description":"If database is enabled. Can be 'enabled' or 'disabled'. When disabled, the database is inaccessible to users, but remains accessible to Server SDKs using API keys.","x-example":false}},"required":["$id","name","$createdAt","$updatedAt","enabled"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Collection creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Collection update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Collection permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled. Can be 'enabled' or 'disabled'. When disabled, the collection is inaccessible to users, but remains accessible to Server SDKs using API keys.","x-example":false},"documentSecurity":{"type":"boolean","description":"Whether document-level permissions are enabled. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":true},"attributes":{"type":"array","description":"Collection attributes.","items":{"anyOf":[{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeRelationship"},{"$ref":"#\/components\/schemas\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"$ref":"#\/components\/schemas\/index"},"x-example":{}}},"required":["$id","$createdAt","$updatedAt","$permissions","databaseId","name","enabled","documentSecurity","attributes","indexes"]},"attributeList":{"description":"Attributes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of attributes in the given collection.","x-example":5,"format":"int32"},"attributes":{"type":"array","description":"List of attributes.","items":{"anyOf":[{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeRelationship"},{"$ref":"#\/components\/schemas\/attributeString"}]},"x-example":""}},"required":["total","attributes"]},"attributeString":{"description":"AttributeString","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"fullName"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"size":{"type":"integer","description":"Attribute size.","x-example":128,"format":"int32"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"default","nullable":true}},"required":["key","type","status","error","required","size"]},"attributeInteger":{"description":"AttributeInteger","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"count"},"type":{"type":"string","description":"Attribute type.","x-example":"integer"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"min":{"type":"integer","description":"Minimum value to enforce for new documents.","x-example":1,"format":"int32","nullable":true},"max":{"type":"integer","description":"Maximum value to enforce for new documents.","x-example":10,"format":"int32","nullable":true},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":10,"format":"int32","nullable":true}},"required":["key","type","status","error","required"]},"attributeFloat":{"description":"AttributeFloat","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"percentageCompleted"},"type":{"type":"string","description":"Attribute type.","x-example":"double"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"min":{"type":"number","description":"Minimum value to enforce for new documents.","x-example":1.5,"format":"double","nullable":true},"max":{"type":"number","description":"Maximum value to enforce for new documents.","x-example":10.5,"format":"double","nullable":true},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":2.5,"format":"double","nullable":true}},"required":["key","type","status","error","required"]},"attributeBoolean":{"description":"AttributeBoolean","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"isEnabled"},"type":{"type":"string","description":"Attribute type.","x-example":"boolean"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":false,"nullable":true}},"required":["key","type","status","error","required"]},"attributeEmail":{"description":"AttributeEmail","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"userEmail"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"format":{"type":"string","description":"String format.","x-example":"email"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"default@example.com","nullable":true}},"required":["key","type","status","error","required","format"]},"attributeEnum":{"description":"AttributeEnum","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"status"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"elements":{"type":"array","description":"Array of elements in enumerated type.","items":{"type":"string"},"x-example":"element"},"format":{"type":"string","description":"String format.","x-example":"enum"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"element","nullable":true}},"required":["key","type","status","error","required","elements","format"]},"attributeIp":{"description":"AttributeIP","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"ipAddress"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"format":{"type":"string","description":"String format.","x-example":"ip"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"192.0.2.0","nullable":true}},"required":["key","type","status","error","required","format"]},"attributeUrl":{"description":"AttributeURL","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"githubUrl"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"format":{"type":"string","description":"String format.","x-example":"url"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"http:\/\/example.com","nullable":true}},"required":["key","type","status","error","required","format"]},"attributeDatetime":{"description":"AttributeDatetime","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"birthDay"},"type":{"type":"string","description":"Attribute type.","x-example":"datetime"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"format":{"type":"string","description":"ISO 8601 format.","x-example":"datetime"},"default":{"type":"string","description":"Default value for attribute when not provided. Only null is optional","x-example":"2020-10-15T06:38:00.000+00:00","nullable":true}},"required":["key","type","status","error","required","format"]},"attributeRelationship":{"description":"AttributeRelationship","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"fullName"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"nullable":true},"relatedCollection":{"type":"string","description":"The ID of the related collection.","x-example":"collection"},"relationType":{"type":"string","description":"The type of the relationship.","x-example":"oneToOne|oneToMany|manyToOne|manyToMany"},"twoWay":{"type":"boolean","description":"Is the relationship two-way?","x-example":false},"twoWayKey":{"type":"string","description":"The key of the two-way relationship.","x-example":"string"},"onDelete":{"type":"string","description":"How deleting the parent document will propagate to child documents.","x-example":"restrict|cascade|setNull"},"side":{"type":"string","description":"Whether this is the parent or child side of the relationship","x-example":"parent|child"}},"required":["key","type","status","error","required","relatedCollection","relationType","twoWay","twoWayKey","onDelete","side"]},"index":{"description":"Index","type":"object","properties":{"key":{"type":"string","description":"Index Key.","x-example":"index1"},"type":{"type":"string","description":"Index type.","x-example":"primary"},"status":{"type":"string","description":"Index status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an index.","x-example":"string"},"attributes":{"type":"array","description":"Index attributes.","items":{"type":"string"},"x-example":[]},"orders":{"type":"array","description":"Index orders.","items":{"type":"string"},"x-example":[],"nullable":true}},"required":["key","type","status","error","attributes"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"user":{"description":"User","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"password":{"type":"string","description":"Hashed user password.","x-example":"$argon2id$v=19$m=2048,t=4,p=3$aUZjLnliVWRINmFNTWMudg$5S+x+7uA31xFnrHFT47yFwcJeaP0w92L\/4LdgrVRXxE","nullable":true},"hash":{"type":"string","description":"Password hashing algorithm.","x-example":"argon2","nullable":true},"hashOptions":{"type":"object","description":"Password hashing algorithm configuration.","x-example":{},"items":{"oneOf":[{"$ref":"#\/components\/schemas\/algoArgon2"},{"$ref":"#\/components\/schemas\/algoScrypt"},{"$ref":"#\/components\/schemas\/algoScryptModified"},{"$ref":"#\/components\/schemas\/algoBcrypt"},{"$ref":"#\/components\/schemas\/algoPhpass"},{"$ref":"#\/components\/schemas\/algoSha"},{"$ref":"#\/components\/schemas\/algoMd5"}]},"nullable":true},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"labels":{"type":"array","description":"Labels for the user.","items":{"type":"string"},"x-example":["vip"]},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"mfa":{"type":"boolean","description":"Multi factor authentication status.","x-example":true},"totp":{"type":"boolean","description":"TOTP status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"$ref":"#\/components\/schemas\/preferences"}},"targets":{"type":"array","description":"A user-owned message receiver. A single user may have multiple e.g. emails, phones, and a browser. Each target is registered with a single provider.","items":{"$ref":"#\/components\/schemas\/target"},"x-example":[]},"accessedAt":{"type":"string","description":"Most recent access date in ISO 8601 format. This attribute is only updated again after 24 hours.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","$updatedAt","name","registration","status","labels","passwordUpdate","email","phone","emailVerification","phoneVerification","mfa","totp","prefs","targets","accessedAt"]},"algoMd5":{"description":"AlgoMD5","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"md5"}},"required":["type"]},"algoSha":{"description":"AlgoSHA","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"sha"}},"required":["type"]},"algoPhpass":{"description":"AlgoPHPass","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"phpass"}},"required":["type"]},"algoBcrypt":{"description":"AlgoBcrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"bcrypt"}},"required":["type"]},"algoScrypt":{"description":"AlgoScrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scrypt"},"costCpu":{"type":"integer","description":"CPU complexity of computed hash.","x-example":8,"format":"int32"},"costMemory":{"type":"integer","description":"Memory complexity of computed hash.","x-example":14,"format":"int32"},"costParallel":{"type":"integer","description":"Parallelization of computed hash.","x-example":1,"format":"int32"},"length":{"type":"integer","description":"Length used to compute hash.","x-example":64,"format":"int32"}},"required":["type","costCpu","costMemory","costParallel","length"]},"algoScryptModified":{"description":"AlgoScryptModified","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scryptMod"},"salt":{"type":"string","description":"Salt used to compute hash.","x-example":"UxLMreBr6tYyjQ=="},"saltSeparator":{"type":"string","description":"Separator used to compute hash.","x-example":"Bw=="},"signerKey":{"type":"string","description":"Key used to compute hash.","x-example":"XyEKE9RcTDeLEsL\/RjwPDBv\/RqDl8fb3gpYEOQaPihbxf1ZAtSOHCjuAAa7Q3oHpCYhXSN9tizHgVOwn6krflQ=="}},"required":["type","salt","saltSeparator","signerKey"]},"algoArgon2":{"description":"AlgoArgon2","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"argon2"},"memoryCost":{"type":"integer","description":"Memory used to compute hash.","x-example":65536,"format":"int32"},"timeCost":{"type":"integer","description":"Amount of time consumed to compute hash","x-example":4,"format":"int32"},"threads":{"type":"integer","description":"Number of threads used to compute hash.","x-example":3,"format":"int32"}},"required":["type","memoryCost","timeCost","threads"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true},"factors":{"type":"array","description":"Returns a list of active session factors.","items":{"type":"string"},"x-example":["email"]},"secret":{"type":"string","description":"Secret used to authenticate the user. Only included if the request was made with an API key","x-example":"5e5bb8c16897e"}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current","factors","secret"]},"identity":{"description":"Identity","type":"object","properties":{"$id":{"type":"string","description":"Identity ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Identity creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Identity update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"provider":{"type":"string","description":"Identity Provider.","x-example":"email"},"providerUid":{"type":"string","description":"ID of the User in the Identity Provider.","x-example":"5e5bb8c16897e"},"providerEmail":{"type":"string","description":"Email of the User in the Identity Provider.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Identity Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Identity Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"}},"required":["$id","$createdAt","$updatedAt","userId","provider","providerUid","providerEmail","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"phrase":{"type":"string","description":"Security phrase of a token. Empty if security phrase was not requested when creating a token. It includes randomly generated phrase which is also sent in the external resource such as email.","x-example":"Golden Fox"}},"required":["$id","$createdAt","userId","secret","expire","phrase"]},"jwt":{"description":"JWT","type":"object","properties":{"jwt":{"type":"string","description":"JWT encoded string.","x-example":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c"}},"required":["jwt"]},"locale":{"description":"Locale","type":"object","properties":{"ip":{"type":"string","description":"User IP address.","x-example":"127.0.0.1"},"countryCode":{"type":"string","description":"Country code in [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) two-character format","x-example":"US"},"country":{"type":"string","description":"Country name. This field support localization.","x-example":"United States"},"continentCode":{"type":"string","description":"Continent code. A two character continent code \"AF\" for Africa, \"AN\" for Antarctica, \"AS\" for Asia, \"EU\" for Europe, \"NA\" for North America, \"OC\" for Oceania, and \"SA\" for South America.","x-example":"NA"},"continent":{"type":"string","description":"Continent name. This field support localization.","x-example":"North America"},"eu":{"type":"boolean","description":"True if country is part of the European Union.","x-example":false},"currency":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format","x-example":"USD"}},"required":["ip","countryCode","country","continentCode","continent","eu","currency"]},"localeCode":{"description":"LocaleCode","type":"object","properties":{"code":{"type":"string","description":"Locale codes in [ISO 639-1](https:\/\/en.wikipedia.org\/wiki\/List_of_ISO_639-1_codes)","x-example":"en-us"},"name":{"type":"string","description":"Locale name","x-example":"US"}},"required":["code","name"]},"file":{"description":"File","type":"object","properties":{"$id":{"type":"string","description":"File ID.","x-example":"5e5ea5c16897e"},"bucketId":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Bucket creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Bucket update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Bucket permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"fileSecurity":{"type":"boolean","description":"Whether file-level security is enabled. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":true},"name":{"type":"string","description":"Bucket name.","x-example":"Documents"},"enabled":{"type":"boolean","description":"Bucket enabled.","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size supported.","x-example":100,"format":"int32"},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions.","items":{"type":"string"},"x-example":["jpg","png"]},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Will be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd).","x-example":"gzip"},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$createdAt","$updatedAt","$permissions","fileSecurity","name","enabled","maximumFileSize","allowedFileExtensions","compression","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"},"prefs":{"type":"object","description":"Team preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"$ref":"#\/components\/schemas\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","total","prefs"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"mfa":{"type":"boolean","description":"Multi factor authentication status, true if the user has MFA enabled or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":["owner"]}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","mfa","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Function creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Function update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"users"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"enabled":{"type":"boolean","description":"Function enabled.","x-example":false},"live":{"type":"boolean","description":"Is the function deployed with the latest configuration? This is set to false if you've changed an environment variables, entrypoint, commands, or other settings that needs redeploy to be applied. When the value is false, redeploy the function to update it with the latest configuration.","x-example":false},"logging":{"type":"boolean","description":"Whether executions will be logged. When set to false, executions will not be logged, but will reduce resource used by your Appwrite project.","x-example":false},"runtime":{"type":"string","description":"Function execution runtime.","x-example":"python-3.8"},"deployment":{"type":"string","description":"Function's active deployment ID.","x-example":"5e5ea5c16897e"},"vars":{"type":"array","description":"Function variables.","items":{"$ref":"#\/components\/schemas\/variable"},"x-example":[]},"events":{"type":"array","description":"Function trigger events.","items":{"type":"string"},"x-example":"account.create"},"schedule":{"type":"string","description":"Function execution schedult in CRON format.","x-example":"5 4 * * *"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":300,"format":"int32"},"entrypoint":{"type":"string","description":"The entrypoint file used to execute the deployment.","x-example":"index.js"},"commands":{"type":"string","description":"The build command used to build the deployment.","x-example":"npm install"},"version":{"type":"string","description":"Version of Open Runtimes used for the function.","x-example":"v2"},"installationId":{"type":"string","description":"Function VCS (Version Control System) installation id.","x-example":"6m40at4ejk5h2u9s1hboo"},"providerRepositoryId":{"type":"string","description":"VCS (Version Control System) Repository ID","x-example":"appwrite"},"providerBranch":{"type":"string","description":"VCS (Version Control System) branch name","x-example":"main"},"providerRootDirectory":{"type":"string","description":"Path to function in VCS (Version Control System) repository","x-example":"functions\/helloWorld"},"providerSilentMode":{"type":"boolean","description":"Is VCS (Version Control System) connection is in silent mode? When in silence mode, no comments will be posted on the repository pull or merge requests","x-example":false}},"required":["$id","$createdAt","$updatedAt","execute","name","enabled","live","logging","runtime","deployment","vars","events","schedule","timeout","entrypoint","commands","version","installationId","providerRepositoryId","providerBranch","providerRootDirectory","providerSilentMode"]},"runtime":{"description":"Runtime","type":"object","properties":{"$id":{"type":"string","description":"Runtime ID.","x-example":"python-3.8"},"name":{"type":"string","description":"Runtime Name.","x-example":"Python"},"version":{"type":"string","description":"Runtime version.","x-example":"3.8"},"base":{"type":"string","description":"Base Docker image used to build the runtime.","x-example":"python:3.8-alpine"},"image":{"type":"string","description":"Image name of Docker Hub.","x-example":"appwrite\\\/runtime-for-python:3.8"},"logo":{"type":"string","description":"Name of the logo image.","x-example":"python.png"},"supports":{"type":"array","description":"List of supported architectures.","items":{"type":"string"},"x-example":"amd64"}},"required":["$id","name","version","base","image","logo","supports"]},"deployment":{"description":"Deployment","type":"object","properties":{"$id":{"type":"string","description":"Deployment ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Deployment creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Deployment update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"type":{"type":"string","description":"Type of deployment.","x-example":"vcs"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"index.js"},"size":{"type":"integer","description":"The code size in bytes.","x-example":128,"format":"int32"},"buildId":{"type":"string","description":"The current build ID.","x-example":"5e5ea5c16897e"},"activate":{"type":"boolean","description":"Whether the deployment should be automatically activated.","x-example":true},"status":{"type":"string","description":"The deployment status. Possible values are \"processing\", \"building\", \"waiting\", \"ready\", and \"failed\".","x-example":"ready"},"buildLogs":{"type":"string","description":"The build logs.","x-example":"Compiling source files..."},"buildTime":{"type":"integer","description":"The current build time in seconds.","x-example":128,"format":"int32"},"providerRepositoryName":{"type":"string","description":"The name of the vcs provider repository","x-example":"database"},"providerRepositoryOwner":{"type":"string","description":"The name of the vcs provider repository owner","x-example":"utopia"},"providerRepositoryUrl":{"type":"string","description":"The url of the vcs provider repository","x-example":"https:\/\/github.com\/vermakhushboo\/g4-node-function"},"providerBranch":{"type":"string","description":"The branch of the vcs repository","x-example":"0.7.x"},"providerCommitHash":{"type":"string","description":"The commit hash of the vcs commit","x-example":"7c3f25d"},"providerCommitAuthorUrl":{"type":"string","description":"The url of vcs commit author","x-example":"https:\/\/github.com\/vermakhushboo"},"providerCommitAuthor":{"type":"string","description":"The name of vcs commit author","x-example":"Khushboo Verma"},"providerCommitMessage":{"type":"string","description":"The commit message","x-example":"Update index.js"},"providerCommitUrl":{"type":"string","description":"The url of the vcs commit","x-example":"https:\/\/github.com\/vermakhushboo\/g4-node-function\/commit\/60c0416257a9cbcdd96b2d370c38d8f8d150ccfb"},"providerBranchUrl":{"type":"string","description":"The branch of the vcs repository","x-example":"https:\/\/github.com\/vermakhushboo\/appwrite\/tree\/0.7.x"}},"required":["$id","$createdAt","$updatedAt","type","resourceId","resourceType","entrypoint","size","buildId","activate","status","buildLogs","buildTime","providerRepositoryName","providerRepositoryOwner","providerRepositoryUrl","providerBranch","providerCommitHash","providerCommitAuthorUrl","providerCommitAuthor","providerCommitMessage","providerCommitUrl","providerBranchUrl"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"requestMethod":{"type":"string","description":"HTTP request method type.","x-example":"GET"},"requestPath":{"type":"string","description":"HTTP request path and query.","x-example":"\/articles?id=5"},"requestHeaders":{"type":"array","description":"HTTP response headers as a key-value object. This will return only whitelisted headers. All headers are returned if execution is created as synchronous.","items":{"$ref":"#\/components\/schemas\/headers"},"x-example":[{"Content-Type":"application\/json"}]},"responseStatusCode":{"type":"integer","description":"HTTP response status code.","x-example":200,"format":"int32"},"responseBody":{"type":"string","description":"HTTP response body. This will return empty unless execution is created as synchronous.","x-example":"Developers are awesome."},"responseHeaders":{"type":"array","description":"HTTP response headers as a key-value object. This will return only whitelisted headers. All headers are returned if execution is created as synchronous.","items":{"$ref":"#\/components\/schemas\/headers"},"x-example":[{"Content-Type":"application\/json"}]},"logs":{"type":"string","description":"Function logs. Includes the last 4,000 characters. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"errors":{"type":"string","description":"Function errors. Includes the last 4,000 characters. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"Function execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","requestMethod","requestPath","requestHeaders","responseStatusCode","responseBody","responseHeaders","logs","errors","duration"]},"variable":{"description":"Variable","type":"object","properties":{"$id":{"type":"string","description":"Variable ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"key":{"type":"string","description":"Variable key.","x-example":"API_KEY"},"value":{"type":"string","description":"Variable value.","x-example":"myPa$$word1"},"resourceType":{"type":"string","description":"Service to which the variable belongs. Possible values are \"project\", \"function\"","x-example":"function"},"resourceId":{"type":"string","description":"ID of resource to which the variable belongs. If resourceType is \"project\", it is empty. If resourceType is \"function\", it is ID of the function.","x-example":"myAwesomeFunction"}},"required":["$id","$createdAt","$updatedAt","key","value","resourceType","resourceId"]},"country":{"description":"Country","type":"object","properties":{"name":{"type":"string","description":"Country name.","x-example":"United States"},"code":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"}},"required":["name","code"]},"continent":{"description":"Continent","type":"object","properties":{"name":{"type":"string","description":"Continent name.","x-example":"Europe"},"code":{"type":"string","description":"Continent two letter code.","x-example":"EU"}},"required":["name","code"]},"language":{"description":"Language","type":"object","properties":{"name":{"type":"string","description":"Language name.","x-example":"Italian"},"code":{"type":"string","description":"Language two-character ISO 639-1 codes.","x-example":"it"},"nativeName":{"type":"string","description":"Language native name.","x-example":"Italiano"}},"required":["name","code","nativeName"]},"currency":{"description":"Currency","type":"object","properties":{"symbol":{"type":"string","description":"Currency symbol.","x-example":"$"},"name":{"type":"string","description":"Currency name.","x-example":"US dollar"},"symbolNative":{"type":"string","description":"Currency native symbol.","x-example":"$"},"decimalDigits":{"type":"integer","description":"Number of decimal digits.","x-example":2,"format":"int32"},"rounding":{"type":"number","description":"Currency digit rounding.","x-example":0,"format":"double"},"code":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format.","x-example":"USD"},"namePlural":{"type":"string","description":"Currency plural name","x-example":"US dollars"}},"required":["symbol","name","symbolNative","decimalDigits","rounding","code","namePlural"]},"phone":{"description":"Phone","type":"object","properties":{"code":{"type":"string","description":"Phone code.","x-example":"+1"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["code","countryCode","countryName"]},"healthAntivirus":{"description":"Health Antivirus","type":"object","properties":{"version":{"type":"string","description":"Antivirus version.","x-example":"1.0.0"},"status":{"type":"string","description":"Antivirus status. Possible values can are: `disabled`, `offline`, `online`","x-example":"online"}},"required":["version","status"]},"healthQueue":{"description":"Health Queue","type":"object","properties":{"size":{"type":"integer","description":"Amount of actions in the queue.","x-example":8,"format":"int32"}},"required":["size"]},"healthStatus":{"description":"Health Status","type":"object","properties":{"name":{"type":"string","description":"Name of the service.","x-example":"database"},"ping":{"type":"integer","description":"Duration in milliseconds how long the health check took.","x-example":128,"format":"int32"},"status":{"type":"string","description":"Service status. Possible values can are: `pass`, `fail`","x-example":"pass"}},"required":["name","ping","status"]},"healthCertificate":{"description":"Health Certificate","type":"object","properties":{"name":{"type":"string","description":"Certificate name","x-example":"\/CN=www.google.com"},"subjectSN":{"type":"string","description":"Subject SN","x-example":""},"issuerOrganisation":{"type":"string","description":"Issuer organisation","x-example":""},"validFrom":{"type":"string","description":"Valid from","x-example":"1704200998"},"validTo":{"type":"string","description":"Valid to","x-example":"1711458597"},"signatureTypeSN":{"type":"string","description":"Signature type SN","x-example":"RSA-SHA256"}},"required":["name","subjectSN","issuerOrganisation","validFrom","validTo","signatureTypeSN"]},"healthTime":{"description":"Health Time","type":"object","properties":{"remoteTime":{"type":"integer","description":"Current unix timestamp on trustful remote server.","x-example":1639490751,"format":"int32"},"localTime":{"type":"integer","description":"Current unix timestamp of local server where Appwrite runs.","x-example":1639490844,"format":"int32"},"diff":{"type":"integer","description":"Difference of unix remote and local timestamps in milliseconds.","x-example":93,"format":"int32"}},"required":["remoteTime","localTime","diff"]},"headers":{"description":"Headers","type":"object","properties":{"name":{"type":"string","description":"Header name.","x-example":"Content-Type"},"value":{"type":"string","description":"Header value.","x-example":"application\/json"}},"required":["name","value"]},"mfaChallenge":{"description":"MFA Challenge","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","userId","expire"]},"mfaType":{"description":"MFAType","type":"object","properties":{"backups":{"type":"array","description":"Backup codes.","items":{"type":"string"},"x-example":true},"secret":{"type":"string","description":"Secret token used for TOTP factor.","x-example":true},"uri":{"type":"string","description":"URI for authenticator apps.","x-example":true}},"required":["backups","secret","uri"]},"mfaFactors":{"description":"MFAFactors","type":"object","properties":{"totp":{"type":"boolean","description":"TOTP","x-example":true},"phone":{"type":"boolean","description":"Phone","x-example":true},"email":{"type":"boolean","description":"Email","x-example":true}},"required":["totp","phone","email"]},"provider":{"description":"Provider","type":"object","properties":{"$id":{"type":"string","description":"Provider ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Provider creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Provider update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"The name for the provider instance.","x-example":"Mailgun"},"provider":{"type":"string","description":"The name of the provider service.","x-example":"mailgun"},"enabled":{"type":"boolean","description":"Is provider enabled?","x-example":true},"type":{"type":"string","description":"Type of provider.","x-example":"sms"},"credentials":{"type":"object","description":"Provider credentials.","x-example":{"key":"123456789"}},"options":{"type":"object","description":"Provider options.","x-example":{"from":"sender-email@mydomain"},"nullable":true}},"required":["$id","$createdAt","$updatedAt","name","provider","enabled","type","credentials"]},"message":{"description":"Message","type":"object","properties":{"$id":{"type":"string","description":"Message ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Message creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Message update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerType":{"type":"string","description":"Message provider type.","x-example":"email"},"topics":{"type":"array","description":"Topic IDs set as recipients.","items":{"type":"string"},"x-example":["5e5ea5c16897e"]},"users":{"type":"array","description":"User IDs set as recipients.","items":{"type":"string"},"x-example":["5e5ea5c16897e"]},"targets":{"type":"array","description":"Target IDs set as recipients.","items":{"type":"string"},"x-example":["5e5ea5c16897e"]},"scheduledAt":{"type":"string","description":"The scheduled time for message.","x-example":"2020-10-15T06:38:00.000+00:00","nullable":true},"deliveredAt":{"type":"string","description":"The time when the message was delivered.","x-example":"2020-10-15T06:38:00.000+00:00","nullable":true},"deliveryErrors":{"type":"array","description":"Delivery errors if any.","items":{"type":"string"},"x-example":["Failed to send message to target 5e5ea5c16897e: Credentials not valid."],"nullable":true},"deliveredTotal":{"type":"integer","description":"Number of recipients the message was delivered to.","x-example":1,"format":"int32"},"data":{"type":"object","description":"Data of the message.","x-example":{"subject":"Welcome to Appwrite","content":"Hi there, welcome to Appwrite family."}},"status":{"type":"string","description":"Status of delivery.","x-example":"Message status can be one of the following: processing, sent, cancelled, failed."}},"required":["$id","$createdAt","$updatedAt","providerType","topics","users","targets","deliveredTotal","data","status"]},"topic":{"description":"Topic","type":"object","properties":{"$id":{"type":"string","description":"Topic ID.","x-example":"259125845563242502"},"$createdAt":{"type":"string","description":"Topic creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Topic update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"The name of the topic.","x-example":"events"},"emailTotal":{"type":"integer","description":"Total count of email subscribers subscribed to the topic.","x-example":100,"format":"int32"},"smsTotal":{"type":"integer","description":"Total count of SMS subscribers subscribed to the topic.","x-example":100,"format":"int32"},"pushTotal":{"type":"integer","description":"Total count of push subscribers subscribed to the topic.","x-example":100,"format":"int32"},"subscribe":{"type":"array","description":"Subscribe permissions.","items":{"type":"string"},"x-example":"users"}},"required":["$id","$createdAt","$updatedAt","name","emailTotal","smsTotal","pushTotal","subscribe"]},"subscriber":{"description":"Subscriber","type":"object","properties":{"$id":{"type":"string","description":"Subscriber ID.","x-example":"259125845563242502"},"$createdAt":{"type":"string","description":"Subscriber creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Subscriber update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"targetId":{"type":"string","description":"Target ID.","x-example":"259125845563242502"},"target":{"type":"object","description":"Target.","x-example":{"$id":"259125845563242502","$createdAt":"2020-10-15T06:38:00.000+00:00","$updatedAt":"2020-10-15T06:38:00.000+00:00","providerType":"email","providerId":"259125845563242502","name":"ageon-app-email","identifier":"random-mail@email.org","userId":"5e5ea5c16897e"},"items":{"$ref":"#\/components\/schemas\/target"}},"userId":{"type":"string","description":"Topic ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User Name.","x-example":"Aegon Targaryen"},"topicId":{"type":"string","description":"Topic ID.","x-example":"259125845563242502"},"providerType":{"type":"string","description":"The target provider type. Can be one of the following: `email`, `sms` or `push`.","x-example":"email"}},"required":["$id","$createdAt","$updatedAt","targetId","target","userId","userName","topicId","providerType"]},"target":{"description":"Target","type":"object","properties":{"$id":{"type":"string","description":"Target ID.","x-example":"259125845563242502"},"$createdAt":{"type":"string","description":"Target creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Target update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Target Name.","x-example":"Aegon apple token"},"userId":{"type":"string","description":"User ID.","x-example":"259125845563242502"},"providerId":{"type":"string","description":"Provider ID.","x-example":"259125845563242502","nullable":true},"providerType":{"type":"string","description":"The target provider type. Can be one of the following: `email`, `sms` or `push`.","x-example":"email"},"identifier":{"type":"string","description":"The target identifier.","x-example":"token"}},"required":["$id","$createdAt","$updatedAt","name","userId","providerType","identifier"]}},"securitySchemes":{"Project":{"type":"apiKey","name":"X-Appwrite-Project","description":"Your project ID","in":"header","x-appwrite":{"demo":"5df5acd0d48c2"}},"Key":{"type":"apiKey","name":"X-Appwrite-Key","description":"Your secret API key","in":"header","x-appwrite":{"demo":"919c2d18fb5d4...a2ae413da83346ad2"}},"JWT":{"type":"apiKey","name":"X-Appwrite-JWT","description":"Your secret JSON Web Token","in":"header"},"Locale":{"type":"apiKey","name":"X-Appwrite-Locale","description":"","in":"header","x-appwrite":{"demo":"en"}},"Session":{"type":"apiKey","name":"X-Appwrite-Session","description":"The user session to authenticate with","in":"header"},"ForwardedFor":{"type":"apiKey","name":"X-Forwarded-For","description":"The IP address of the client that made the request","in":"header"},"ForwardedUserAgent":{"type":"apiKey","name":"X-Forwarded-User-Agent","description":"The user agent string of the client that made the request","in":"header"}}},"externalDocs":{"description":"Full API docs, specs and tutorials","url":"https:\/\/appwrite.io\/docs"}} \ No newline at end of file diff --git a/app/config/specs/swagger2-latest-client.json b/app/config/specs/swagger2-latest-client.json index 9b7656f890..1bf78e7089 100644 --- a/app/config/specs/swagger2-latest-client.json +++ b/app/config/specs/swagger2-latest-client.json @@ -1 +1 @@ -{"swagger":"2.0","info":{"version":"1.4.13","title":"Appwrite","description":"Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https:\/\/appwrite.io\/docs](https:\/\/appwrite.io\/docs)","termsOfService":"https:\/\/appwrite.io\/policy\/terms","contact":{"name":"Appwrite Team","url":"https:\/\/appwrite.io\/support","email":"team@appwrite.io"},"license":{"name":"BSD-3-Clause","url":"https:\/\/raw.githubusercontent.com\/appwrite\/appwrite\/master\/LICENSE"}},"host":"cloud.appwrite.io","basePath":"\/v1","schemes":["https"],"consumes":["application\/json","multipart\/form-data"],"produces":["application\/json"],"securityDefinitions":{"Project":{"type":"apiKey","name":"X-Appwrite-Project","description":"Your project ID","in":"header","x-appwrite":{"demo":"5df5acd0d48c2"}},"JWT":{"type":"apiKey","name":"X-Appwrite-JWT","description":"Your secret JSON Web Token","in":"header","x-appwrite":{"demo":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ..."}},"Locale":{"type":"apiKey","name":"X-Appwrite-Locale","description":"","in":"header","x-appwrite":{"demo":"en"}},"Session":{"type":"apiKey","name":"X-Appwrite-Session","description":"The user session to authenticate with","in":"header"}},"paths":{"\/account":{"get":{"summary":"Get account","operationId":"accountGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get the currently logged in user.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"get","weight":22,"cookies":false,"type":"","demo":"account\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]},"post":{"summary":"Create account","operationId":"accountCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to allow a new user to register a new account in your project. After the user registration completes successfully, you can use the [\/account\/verfication](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createVerification) route to start verifying the user email address. To allow the new user to login to their new account, you need to create a new [account session](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createEmailSession).","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"create","weight":7,"cookies":false,"type":"","demo":"account\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"New user password. Must be between 8 and 256 chars.","default":null,"x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/account\/email":{"patch":{"summary":"Update email","operationId":"accountUpdateEmail","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateEmail","weight":29,"cookies":false,"type":"","demo":"account\/update-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["email","password"]}}]}},"\/account\/identities":{"get":{"summary":"List Identities","operationId":"accountListIdentities","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get the list of identities for the currently logged in user.","responses":{"200":{"description":"Identities List","schema":{"$ref":"#\/definitions\/identityList"}}},"x-appwrite":{"method":"listIdentities","weight":13,"cookies":false,"type":"","demo":"account\/list-identities.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-identities.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/identities","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, provider, providerUid, providerEmail, providerAccessTokenExpiry","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/identities\/{identityId}":{"delete":{"summary":"Delete identity","operationId":"accountDeleteIdentity","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Delete an identity by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIdentity","weight":14,"cookies":false,"type":"","demo":"account\/delete-identity.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-identity.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"identityId","description":"Identity ID.","required":true,"type":"string","x-example":"[IDENTITY_ID]","in":"path"}]}},"\/account\/jwt":{"post":{"summary":"Create JWT","operationId":"accountCreateJWT","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to create a JSON Web Token. You can use the resulting JWT to authenticate on behalf of the current user when working with the Appwrite server-side API and SDKs. The JWT secret is valid for 15 minutes from its creation and will be invalid if the user will logout in that time frame.","responses":{"201":{"description":"JWT","schema":{"$ref":"#\/definitions\/jwt"}}},"x-appwrite":{"method":"createJWT","weight":21,"cookies":false,"type":"","demo":"account\/create-j-w-t.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-jwt.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"List logs","operationId":"accountListLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get the list of latest security activity logs for the currently logged in user. Each log returns user IP address, location and date and time of log.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listLogs","weight":25,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/mfa":{"patch":{"summary":"Update MFA","operationId":"accountUpdateMFA","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateMFA","weight":42,"cookies":false,"type":"","demo":"account\/update-m-f-a.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-mfa.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"mfa":{"type":"boolean","description":"Enable or disable MFA.","default":null,"x-example":false}},"required":["mfa"]}}]}},"\/account\/mfa\/challenge":{"post":{"summary":"Create 2FA Challenge","operationId":"accountCreate2FAChallenge","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"201":{"description":"MFA Challenge","schema":{"$ref":"#\/definitions\/mfaChallenge"}}},"x-appwrite":{"method":"create2FAChallenge","weight":47,"cookies":false,"type":"","demo":"account\/create2f-a-challenge.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-2fa-challenge.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},token:{param-token}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"factor":{"type":"string","description":"Factor used for verification.","default":null,"x-example":"totp","enum":["totp","phone","email"],"x-enum-name":null,"x-enum-keys":[]}},"required":["factor"]}}]},"put":{"summary":"Create MFA Challenge (confirmation)","operationId":"accountUpdateChallenge","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"updateChallenge","weight":48,"cookies":false,"type":"","demo":"account\/update-challenge.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-challenge.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"challengeId":{"type":"string","description":"ID of the challenge.","default":null,"x-example":"[CHALLENGE_ID]"},"otp":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[OTP]"}},"required":["challengeId","otp"]}}]}},"\/account\/mfa\/factors":{"get":{"summary":"List Factors","operationId":"accountListFactors","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"200":{"description":"MFAFactors","schema":{"$ref":"#\/definitions\/mfaFactors"}}},"x-appwrite":{"method":"listFactors","weight":43,"cookies":false,"type":"","demo":"account\/list-factors.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-factors.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/account\/mfa\/{type}":{"post":{"summary":"Add Authenticator","operationId":"accountAddAuthenticator","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"200":{"description":"MFAType","schema":{"$ref":"#\/definitions\/mfaType"}}},"x-appwrite":{"method":"addAuthenticator","weight":44,"cookies":false,"type":"","demo":"account\/add-authenticator.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/add-authenticator.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"type","description":"Type of authenticator.","required":true,"type":"string","x-example":"totp","enum":["totp"],"x-enum-name":null,"x-enum-keys":[],"in":"path"}]},"put":{"summary":"Verify Authenticator","operationId":"accountVerifyAuthenticator","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"verifyAuthenticator","weight":45,"cookies":false,"type":"","demo":"account\/verify-authenticator.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/verify-authenticator.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"type","description":"Type of authenticator.","required":true,"type":"string","x-example":"totp","enum":["totp"],"x-enum-name":null,"x-enum-keys":[],"in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"otp":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[OTP]"}},"required":["otp"]}}]},"delete":{"summary":"Delete Authenticator","operationId":"accountDeleteAuthenticator","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"deleteAuthenticator","weight":46,"cookies":false,"type":"","demo":"account\/delete-authenticator.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-mfa.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"type","description":"Type of authenticator.","required":true,"type":"string","x-example":"totp","enum":["totp"],"x-enum-name":null,"x-enum-keys":[],"in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"otp":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[OTP]"}},"required":["otp"]}}]}},"\/account\/name":{"patch":{"summary":"Update name","operationId":"accountUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateName","weight":27,"cookies":false,"type":"","demo":"account\/update-name.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-name.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"User name. Max length: 128 chars.","default":null,"x-example":"[NAME]"}},"required":["name"]}}]}},"\/account\/password":{"patch":{"summary":"Update password","operationId":"accountUpdatePassword","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePassword","weight":28,"cookies":false,"type":"","demo":"account\/update-password.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-password.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"password":{"type":"string","description":"New user password. Must be at least 8 chars.","default":null,"x-example":null},"oldPassword":{"type":"string","description":"Current user password. Must be at least 8 chars.","default":"","x-example":"password"}},"required":["password"]}}]}},"\/account\/phone":{"patch":{"summary":"Update phone","operationId":"accountUpdatePhone","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createPhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePhone","weight":30,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["phone","password"]}}]}},"\/account\/prefs":{"get":{"summary":"Get account preferences","operationId":"accountGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get the preferences as a key-value object for the currently logged in user.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":23,"cookies":false,"type":"","demo":"account\/get-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/prefs","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]},"patch":{"summary":"Update preferences","operationId":"accountUpdatePrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account preferences. The object you pass is stored as is, and replaces any previous value. The maximum allowed prefs size is 64kB and throws error if exceeded.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePrefs","weight":31,"cookies":false,"type":"","demo":"account\/update-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/prefs","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"prefs":{"type":"object","description":"Prefs key-value JSON object.","default":{},"x-example":"{}"}},"required":["prefs"]}}]}},"\/account\/recovery":{"post":{"summary":"Create password recovery","operationId":"accountCreateRecovery","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Sends the user an email with a temporary secret key for password reset. When the user clicks the confirmation link he is redirected back to your app password reset URL with the secret key and email address values attached to the URL query string. Use the query string params to submit a request to the [PUT \/account\/recovery](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateRecovery) endpoint to complete the process. The verification link sent to the user's email address is valid for 1 hour.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createRecovery","weight":36,"cookies":false,"type":"","demo":"account\/create-recovery.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-recovery.md","rate-limit":10,"rate-time":3600,"rate-key":["url:{url},email:{param-email}","url:{url},ip:{ip}"],"scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"url":{"type":"string","description":"URL to redirect the user back to your app from the recovery email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":null,"x-example":"https:\/\/example.com"}},"required":["email","url"]}}]},"put":{"summary":"Create password recovery (confirmation)","operationId":"accountUpdateRecovery","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete the user account password reset. Both the **userId** and **secret** arguments will be passed as query parameters to the redirect URL you have provided when sending your request to the [POST \/account\/recovery](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createRecovery) endpoint.\n\nPlease note that in order to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) the only valid redirect URLs are the ones from domains you have set when adding your platforms in the console interface.","responses":{"200":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"updateRecovery","weight":37,"cookies":false,"type":"","demo":"account\/update-recovery.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-recovery.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid reset token.","default":null,"x-example":"[SECRET]"},"password":{"type":"string","description":"New user password. Must be between 8 and 256 chars.","default":null,"x-example":null}},"required":["userId","secret","password"]}}]}},"\/account\/sessions":{"get":{"summary":"List sessions","operationId":"accountListSessions","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get the list of active sessions across different devices for the currently logged in user.","responses":{"200":{"description":"Sessions List","schema":{"$ref":"#\/definitions\/sessionList"}}},"x-appwrite":{"method":"listSessions","weight":24,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/sessions","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]},"delete":{"summary":"Delete sessions","operationId":"accountDeleteSessions","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":35,"cookies":false,"type":"","demo":"account\/delete-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-sessions.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/account\/sessions\/anonymous":{"post":{"summary":"Create anonymous session","operationId":"accountCreateAnonymousSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to allow a new user to register an anonymous account in your project. This route will also create a new session for the user. To allow the new user to convert an anonymous account to a normal account, you need to update its [email and password](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateEmail) or create an [OAuth2 session](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#CreateOAuth2Session).","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"createAnonymousSession","weight":20,"cookies":false,"type":"","demo":"account\/create-anonymous-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-anonymous.md","rate-limit":50,"rate-time":3600,"rate-key":"ip:{ip}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/sessions\/email":{"post":{"summary":"Create email password session","operationId":"accountCreateEmailPasswordSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Allow the user to login into their account by providing a valid email and password combination. This route will create a new session for the user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"createEmailPasswordSession","weight":8,"cookies":false,"type":"","demo":"account\/create-email-password-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-email-password.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["email","password"]}}]}},"\/account\/sessions\/magic-url":{"put":{"summary":"Create session (deprecated)","operationId":"accountUpdateMagicURLSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to create a session from token. Provide the **userId** and **secret** parameters from the successful response of authentication flows initiated by token creation. For example, magic URL and phone login.","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateMagicURLSession","weight":17,"cookies":false,"type":"","demo":"account\/update-magic-u-r-l-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session.md","rate-limit":10,"rate-time":3600,"rate-key":"ip:{ip},userId:{param-userId}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/account\/sessions\/oauth2\/{provider}":{"get":{"summary":"Create OAuth2 session","operationId":"accountCreateOAuth2Session","consumes":["application\/json"],"produces":["text\/html"],"tags":["account"],"description":"Allow the user to login to their account using the OAuth2 provider of their choice. Each OAuth2 provider should be enabled from the Appwrite console first. Use the success and failure arguments to provide a redirect URL's back to your app when login is completed.\n\nIf there is already an active session, the new session will be attached to the logged-in account. If there are no active sessions, the server will attempt to look for a user with the same email address as the email received from the OAuth2 provider and attach the new session to the existing user. If no matching user is found - the server will create a new user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).\n","responses":{"301":{"description":"No content"}},"x-appwrite":{"method":"createOAuth2Session","weight":9,"cookies":false,"type":"webAuth","demo":"account\/create-o-auth2session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-oauth2.md","rate-limit":50,"rate-time":3600,"rate-key":"ip:{ip}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"provider","description":"OAuth2 Provider. Currently, supported providers are: amazon, apple, auth0, authentik, autodesk, bitbucket, bitly, box, dailymotion, discord, disqus, dropbox, etsy, facebook, github, gitlab, google, linkedin, microsoft, notion, oidc, okta, paypal, paypalSandbox, podio, salesforce, slack, spotify, stripe, tradeshift, tradeshiftBox, twitch, wordpress, yahoo, yammer, yandex, zoho, zoom.","required":true,"type":"string","x-example":"amazon","enum":["amazon","apple","auth0","authentik","autodesk","bitbucket","bitly","box","dailymotion","discord","disqus","dropbox","etsy","facebook","github","gitlab","google","linkedin","microsoft","notion","oidc","okta","paypal","paypalSandbox","podio","salesforce","slack","spotify","stripe","tradeshift","tradeshiftBox","twitch","wordpress","yahoo","yammer","yandex","zoho","zoom","mock"],"x-enum-name":"OAuthProvider","x-enum-keys":[],"in":"path"},{"name":"success","description":"URL to redirect back to your app after a successful login attempt. Only URLs from hostnames in your project's platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","required":false,"type":"string","format":"url","x-example":"https:\/\/example.com","default":"","in":"query"},{"name":"failure","description":"URL to redirect back to your app after a failed login attempt. Only URLs from hostnames in your project's platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","required":false,"type":"string","format":"url","x-example":"https:\/\/example.com","default":"","in":"query"},{"name":"token","description":"Include token credentials in the final redirect, useful for server-side integrations, or when cookies are not available.","required":false,"type":"boolean","x-example":false,"default":false,"in":"query"},{"name":"scopes","description":"A list of custom OAuth2 scopes. Check each provider internal docs for a list of supported scopes. Maximum of 100 scopes are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/sessions\/token":{"post":{"summary":"Create session","operationId":"accountCreateSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to create a session from token. Provide the **userId** and **secret** parameters from the successful response of authentication flows initiated by token creation. For example, magic URL and phone login.","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"createSession","weight":18,"cookies":false,"type":"","demo":"account\/create-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session.md","rate-limit":10,"rate-time":3600,"rate-key":"ip:{ip},userId:{param-userId}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Secret of a token generated by login methods. For example, the `createMagicURLToken` or `createPhoneToken` methods.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/account\/sessions\/{sessionId}":{"get":{"summary":"Get session","operationId":"accountGetSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to get a logged in user's session using a Session ID. Inputting 'current' will return the current session being used.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"getSession","weight":26,"cookies":false,"type":"","demo":"account\/get-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-session.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/sessions","offline-key":"{sessionId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to get the current device session.","required":true,"type":"string","x-example":"[SESSION_ID]","in":"path"}]},"patch":{"summary":"Update (or renew) a session","operationId":"accountUpdateSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Extend session's expiry to increase it's lifespan. Extending a session is useful when session length is short such as 5 minutes.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateSession","weight":34,"cookies":false,"type":"","demo":"account\/update-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-session.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to update the current device session.","required":true,"type":"string","x-example":"[SESSION_ID]","in":"path"}]},"delete":{"summary":"Delete session","operationId":"accountDeleteSession","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Logout the user. Use 'current' as the session ID to logout on this device, use a session ID to logout on another device. If you're looking to logout the user on all devices, use [Delete Sessions](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#deleteSessions) instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSession","weight":33,"cookies":false,"type":"","demo":"account\/delete-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-session.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to delete the current device session.","required":true,"type":"string","x-example":"[SESSION_ID]","in":"path"}]}},"\/account\/status":{"patch":{"summary":"Update status","operationId":"accountUpdateStatus","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateStatus","weight":32,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/account\/targets\/push":{"post":{"summary":"Create a push target","operationId":"accountCreatePushTarget","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"201":{"description":"Target","schema":{"$ref":"#\/definitions\/target"}}},"x-appwrite":{"method":"createPushTarget","weight":50,"cookies":false,"type":"","demo":"account\/create-push-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"targetId":{"type":"string","description":"Target ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[TARGET_ID]"},"identifier":{"type":"string","description":"The target identifier (token, email, phone etc.)","default":null,"x-example":"[IDENTIFIER]"},"providerId":{"type":"string","description":"Provider ID. Message will be sent to this target from the specified provider ID. If no provider ID is set the first setup provider will be used.","default":"","x-example":"[PROVIDER_ID]"}},"required":["targetId","identifier"]}}]}},"\/account\/targets\/{targetId}\/push":{"put":{"summary":"Update a push target","operationId":"accountUpdatePushTarget","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"200":{"description":"Target","schema":{"$ref":"#\/definitions\/target"}}},"x-appwrite":{"method":"updatePushTarget","weight":51,"cookies":false,"type":"","demo":"account\/update-push-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[]}],"parameters":[{"name":"targetId","description":"Target ID.","required":true,"type":"string","x-example":"[TARGET_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"identifier":{"type":"string","description":"The target identifier (token, email, phone etc.)","default":null,"x-example":"[IDENTIFIER]"}},"required":["identifier"]}}]},"delete":{"summary":"Delete a push target","operationId":"accountDeletePushTarget","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deletePushTarget","weight":52,"cookies":false,"type":"","demo":"account\/delete-push-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[]}],"parameters":[{"name":"targetId","description":"Target ID.","required":true,"type":"string","x-example":"[TARGET_ID]","in":"path"}]}},"\/account\/tokens\/email":{"post":{"summary":"Create email token (OTP)","operationId":"accountCreateEmailToken","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Sends the user an email with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [POST \/v1\/account\/sessions\/token](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createSession) endpoint to complete the login process. The secret sent to the user's email is valid for 15 minutes.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createEmailToken","weight":16,"cookies":false,"type":"","demo":"account\/create-email-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-token-email.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"phrase":{"type":"boolean","description":"Toggle for security phrase. If enabled, email will be send with a randomly generated phrase and the phrase will also be included in the response. Confirming phrases match increases the security of your authentication flow.","default":false,"x-example":false}},"required":["userId","email"]}}]}},"\/account\/tokens\/magic-url":{"post":{"summary":"Create magic URL token","operationId":"accountCreateMagicURLToken","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Sends the user an email with a secret key for creating a session. If the provided user ID has not been registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [POST \/v1\/account\/sessions\/token](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createSession) endpoint to complete the login process. The link sent to the user's email address is valid for 1 hour. If you are on a mobile device you can leave the URL parameter empty, so that the login completion will be handled by your Appwrite instance by default.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).\n","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createMagicURLToken","weight":15,"cookies":false,"type":"","demo":"account\/create-magic-u-r-l-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-token-magic-url.md","rate-limit":60,"rate-time":3600,"rate-key":["url:{url},email:{param-email}","url:{url},ip:{ip}"],"scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"url":{"type":"string","description":"URL to redirect the user back to your app from the magic URL login. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":"","x-example":"https:\/\/example.com"},"phrase":{"type":"boolean","description":"Toggle for security phrase. If enabled, email will be send with a randomly generated phrase and the phrase will also be included in the response. Confirming phrases match increases the security of your authentication flow.","default":false,"x-example":false}},"required":["userId","email"]}}]}},"\/account\/tokens\/phone":{"post":{"summary":"Create phone token","operationId":"accountCreatePhoneToken","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Sends the user an SMS with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [POST \/v1\/account\/sessions\/token](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createSession) endpoint to complete the login process. The secret sent to the user's phone is valid for 15 minutes.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createPhoneToken","weight":19,"cookies":false,"type":"","demo":"account\/create-phone-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-token-phone.md","rate-limit":10,"rate-time":3600,"rate-key":["url:{url},phone:{param-phone}","url:{url},ip:{ip}"],"scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"}},"required":["userId","phone"]}}]}},"\/account\/verification":{"post":{"summary":"Create email verification","operationId":"accountCreateVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to send a verification message to your user email address to confirm they are the valid owners of that address. Both the **userId** and **secret** arguments will be passed as query parameters to the URL you have provided to be attached to the verification email. The provided URL should redirect the user back to your app and allow you to complete the verification process by verifying both the **userId** and **secret** parameters. Learn more about how to [complete the verification process](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateVerification). The verification link sent to the user's email address is valid for 7 days.\n\nPlease note that in order to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md), the only valid redirect URLs are the ones from domains you have set when adding your platforms in the console interface.\n","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createVerification","weight":38,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"url":{"type":"string","description":"URL to redirect the user back to your app from the verification email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":null,"x-example":"https:\/\/example.com"}},"required":["url"]}}]},"put":{"summary":"Create email verification (confirmation)","operationId":"accountUpdateVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete the user email verification process. Use both the **userId** and **secret** parameters that were attached to your app URL to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"updateVerification","weight":39,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/account\/verification\/phone":{"post":{"summary":"Create phone verification","operationId":"accountCreatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updatePhone) endpoint. Learn more about how to [complete the verification process](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createPhoneVerification","weight":40,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":["url:{url},userId:{userId}","url:{url},ip:{ip}"],"scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]},"put":{"summary":"Create phone verification (confirmation)","operationId":"accountUpdatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"updatePhoneVerification","weight":41,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/avatars\/browsers\/{code}":{"get":{"summary":"Get browser icon","operationId":"avatarsGetBrowser","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"You can use this endpoint to show different browser icons to your users. The code argument receives the browser code as it appears in your user [GET \/account\/sessions](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#getSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getBrowser","weight":54,"cookies":false,"type":"location","demo":"avatars\/get-browser.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-browser.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"code","description":"Browser Code.","required":true,"type":"string","x-example":"aa","enum":["aa","an","ch","ci","cm","cr","ff","sf","mf","ps","oi","om","op","on"],"x-enum-name":"Browser","x-enum-keys":["Avant Browser","Android WebView Beta","Google Chrome","Google Chrome (iOS)","Google Chrome (Mobile)","Chromium","Mozilla Firefox","Safari","Mobile Safari","Microsoft Edge","Microsoft Edge (iOS)","Opera Mini","Opera","Opera (Next)"],"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"}]}},"\/avatars\/credit-cards\/{code}":{"get":{"summary":"Get credit card icon","operationId":"avatarsGetCreditCard","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"The credit card endpoint will return you the icon of the credit card provider you need. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getCreditCard","weight":53,"cookies":false,"type":"location","demo":"avatars\/get-credit-card.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-credit-card.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"code","description":"Credit Card Code. Possible values: amex, argencard, cabal, censosud, diners, discover, elo, hipercard, jcb, mastercard, naranja, targeta-shopping, union-china-pay, visa, mir, maestro.","required":true,"type":"string","x-example":"amex","enum":["amex","argencard","cabal","censosud","diners","discover","elo","hipercard","jcb","mastercard","naranja","targeta-shopping","union-china-pay","visa","mir","maestro"],"x-enum-name":"CreditCard","x-enum-keys":["American Express","Argencard","Cabal","Consosud","Diners Club","Discover","Elo","Hipercard","JCB","Mastercard","Naranja","Tarjeta Shopping","Union China Pay","Visa","MIR","Maestro"],"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"}]}},"\/avatars\/favicon":{"get":{"summary":"Get favicon","operationId":"avatarsGetFavicon","consumes":["application\/json"],"produces":["image\/*"],"tags":["avatars"],"description":"Use this endpoint to fetch the favorite icon (AKA favicon) of any remote website URL.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFavicon","weight":57,"cookies":false,"type":"location","demo":"avatars\/get-favicon.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-favicon.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"url","description":"Website URL which you want to fetch the favicon from.","required":true,"type":"string","format":"url","x-example":"https:\/\/example.com","in":"query"}]}},"\/avatars\/flags\/{code}":{"get":{"summary":"Get country flag","operationId":"avatarsGetFlag","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"You can use this endpoint to show different country flags icons to your users. The code argument receives the 2 letter country code. Use width, height and quality arguments to change the output settings. Country codes follow the [ISO 3166-1](https:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFlag","weight":55,"cookies":false,"type":"location","demo":"avatars\/get-flag.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-flag.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"code","description":"Country Code. ISO Alpha-2 country code format.","required":true,"type":"string","x-example":"af","enum":["af","ao","al","ad","ae","ar","am","ag","au","at","az","bi","be","bj","bf","bd","bg","bh","bs","ba","by","bz","bo","br","bb","bn","bt","bw","cf","ca","ch","cl","cn","ci","cm","cd","cg","co","km","cv","cr","cu","cy","cz","de","dj","dm","dk","do","dz","ec","eg","er","es","ee","et","fi","fj","fr","fm","ga","gb","ge","gh","gn","gm","gw","gq","gr","gd","gt","gy","hn","hr","ht","hu","id","in","ie","ir","iq","is","il","it","jm","jo","jp","kz","ke","kg","kh","ki","kn","kr","kw","la","lb","lr","ly","lc","li","lk","ls","lt","lu","lv","ma","mc","md","mg","mv","mx","mh","mk","ml","mt","mm","me","mn","mz","mr","mu","mw","my","na","ne","ng","ni","nl","no","np","nr","nz","om","pk","pa","pe","ph","pw","pg","pl","kp","pt","py","qa","ro","ru","rw","sa","sd","sn","sg","sb","sl","sv","sm","so","rs","ss","st","sr","sk","si","se","sz","sc","sy","td","tg","th","tj","tm","tl","to","tt","tn","tr","tv","tz","ug","ua","uy","us","uz","va","vc","ve","vn","vu","ws","ye","za","zm","zw"],"x-enum-name":"Flag","x-enum-keys":["Afghanistan","Angola","Albania","Andorra","United Arab Emirates","Argentina","Armenia","Antigua and Barbuda","Australia","Austria","Azerbaijan","Burundi","Belgium","Benin","Burkina Faso","Bangladesh","Bulgaria","Bahrain","Bahamas","Bosnia and Herzegovina","Belarus","Belize","Bolivia","Brazil","Barbados","Brunei Darussalam","Bhutan","Botswana","Central African Republic","Canada","Switzerland","Chile","China","C\u00f4te d'Ivoire","Cameroon","Democratic Republic of the Congo","Republic of the Congo","Colombia","Comoros","Cape Verde","Costa Rica","Cuba","Cyprus","Czech Republic","Germany","Djibouti","Dominica","Denmark","Dominican Republic","Algeria","Ecuador","Egypt","Eritrea","Spain","Estonia","Ethiopia","Finland","Fiji","France","Micronesia (Federated States of)","Gabon","United Kingdom","Georgia","Ghana","Guinea","Gambia","Guinea-Bissau","Equatorial Guinea","Greece","Grenada","Guatemala","Guyana","Honduras","Croatia","Haiti","Hungary","Indonesia","India","Ireland","Iran (Islamic Republic of)","Iraq","Iceland","Israel","Italy","Jamaica","Jordan","Japan","Kazakhstan","Kenya","Kyrgyzstan","Cambodia","Kiribati","Saint Kitts and Nevis","South Korea","Kuwait","Lao People's Democratic Republic","Lebanon","Liberia","Libya","Saint Lucia","Liechtenstein","Sri Lanka","Lesotho","Lithuania","Luxembourg","Latvia","Morocco","Monaco","Moldova","Madagascar","Maldives","Mexico","Marshall Islands","North Macedonia","Mali","Malta","Myanmar","Montenegro","Mongolia","Mozambique","Mauritania","Mauritius","Malawi","Malaysia","Namibia","Niger","Nigeria","Nicaragua","Netherlands","Norway","Nepal","Nauru","New Zealand","Oman","Pakistan","Panama","Peru","Philippines","Palau","Papua New Guinea","Poland","North Korea","Portugal","Paraguay","Qatar","Romania","Russia","Rwanda","Saudi Arabia","Sudan","Senegal","Singapore","Solomon Islands","Sierra Leone","El Salvador","San Marino","Somalia","Serbia","South Sudan","Sao Tome and Principe","Suriname","Slovakia","Slovenia","Sweden","Eswatini","Seychelles","Syria","Chad","Togo","Thailand","Tajikistan","Turkmenistan","Timor-Leste","Tonga","Trinidad and Tobago","Tunisia","Turkey","Tuvalu","Tanzania","Uganda","Ukraine","Uruguay","United States","Uzbekistan","Vatican City","Saint Vincent and the Grenadines","Venezuela","Vietnam","Vanuatu","Samoa","Yemen","South Africa","Zambia","Zimbabwe"],"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"}]}},"\/avatars\/image":{"get":{"summary":"Get image from URL","operationId":"avatarsGetImage","consumes":["application\/json"],"produces":["image\/*"],"tags":["avatars"],"description":"Use this endpoint to fetch a remote image URL and crop it to any image size you want. This endpoint is very useful if you need to crop and display remote images in your app or in case you want to make sure a 3rd party image is properly served using a TLS protocol.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getImage","weight":56,"cookies":false,"type":"location","demo":"avatars\/get-image.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-image.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"url","description":"Image URL which you want to crop.","required":true,"type":"string","format":"url","x-example":"https:\/\/example.com","in":"query"},{"name":"width","description":"Resize preview image width, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get user initials","operationId":"avatarsGetInitials","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getInitials","weight":59,"cookies":false,"type":"location","demo":"avatars\/get-initials.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-initials.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"name","description":"Full Name. When empty, current user name or email will be used. Max length: 128 chars.","required":false,"type":"string","x-example":"[NAME]","default":"","in":"query"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":500,"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":500,"in":"query"},{"name":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"type":"string","default":"","in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR code","operationId":"avatarsGetQR","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getQR","weight":58,"cookies":false,"type":"location","demo":"avatars\/get-q-r.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-qr.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"text","description":"Plain text to be converted to QR code image.","required":true,"type":"string","x-example":"[TEXT]","in":"query"},{"name":"size","description":"QR code size. Pass an integer between 1 to 1000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":1,"default":400,"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"type":"integer","format":"int32","x-example":0,"default":1,"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"type":"boolean","x-example":false,"default":false,"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List documents","operationId":"databasesListDocuments","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","schema":{"$ref":"#\/definitions\/documentList"}}},"x-appwrite":{"method":"listDocuments","weight":103,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"post":{"summary":"Create document","operationId":"databasesCreateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"createDocument","weight":102,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","default":{},"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, only the current user is granted all permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get document","operationId":"databasesGetDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"getDocument","weight":104,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"patch":{"summary":"Update document","operationId":"databasesUpdateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"updateDocument","weight":106,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","default":[],"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete document","operationId":"databasesDeleteDocument","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":107,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List executions","operationId":"functionsListExecutions","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","schema":{"$ref":"#\/definitions\/executionList"}}},"x-appwrite":{"method":"listExecutions","weight":283,"cookies":false,"type":"","demo":"functions\/list-executions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-executions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, responseStatusCode, duration","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create execution","operationId":"functionsCreateExecution","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","schema":{"$ref":"#\/definitions\/execution"}}},"x-appwrite":{"method":"createExecution","weight":282,"cookies":false,"type":"","demo":"functions\/create-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-execution.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"body":{"type":"string","description":"HTTP body of execution. Default value is empty string.","default":"","x-example":"[BODY]"},"async":{"type":"boolean","description":"Execute code in the background. Default value is false.","default":false,"x-example":false},"path":{"type":"string","description":"HTTP path of execution. Path can include query params. Default value is \/","default":"\/","x-example":"[PATH]"},"method":{"type":"string","description":"HTTP method of execution. Default value is GET.","default":"POST","x-example":"GET","enum":["GET","POST","PUT","PATCH","DELETE","OPTIONS"],"x-enum-name":"ExecutionMethod","x-enum-keys":[]},"headers":{"type":"object","description":"HTTP headers of execution. Defaults to empty.","default":[],"x-example":"{}"}}}}]}},"\/functions\/{functionId}\/executions\/{executionId}":{"get":{"summary":"Get execution","operationId":"functionsGetExecution","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a function execution log by its unique ID.","responses":{"200":{"description":"Execution","schema":{"$ref":"#\/definitions\/execution"}}},"x-appwrite":{"method":"getExecution","weight":284,"cookies":false,"type":"","demo":"functions\/get-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-execution.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"executionId","description":"Execution ID.","required":true,"type":"string","x-example":"[EXECUTION_ID]","in":"path"}]}},"\/graphql":{"post":{"summary":"GraphQL endpoint","operationId":"graphqlQuery","consumes":["application\/json"],"produces":["application\/json"],"tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","schema":{"$ref":"#\/definitions\/any"}}},"x-appwrite":{"method":"query","weight":304,"cookies":false,"type":"graphql","demo":"graphql\/query.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"query":{"type":"object","description":"The query or queries to execute.","default":{},"x-example":"{}"}},"required":["query"]}}]}},"\/graphql\/mutation":{"post":{"summary":"GraphQL endpoint","operationId":"graphqlMutation","consumes":["application\/json"],"produces":["application\/json"],"tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","schema":{"$ref":"#\/definitions\/any"}}},"x-appwrite":{"method":"mutation","weight":303,"cookies":false,"type":"graphql","demo":"graphql\/mutation.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"query":{"type":"object","description":"The query or queries to execute.","default":{},"x-example":"{}"}},"required":["query"]}}]}},"\/locale":{"get":{"summary":"Get user locale","operationId":"localeGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"Get the current user location based on IP. Returns an object with user country code, country name, continent name, continent code, ip address and suggested currency. You can use the locale header to get the data in a supported language.\n\n([IP Geolocation by DB-IP](https:\/\/db-ip.com))","responses":{"200":{"description":"Locale","schema":{"$ref":"#\/definitions\/locale"}}},"x-appwrite":{"method":"get","weight":111,"cookies":false,"type":"","demo":"locale\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-locale.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/localed","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/locale\/codes":{"get":{"summary":"List Locale Codes","operationId":"localeListCodes","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all locale codes in [ISO 639-1](https:\/\/en.wikipedia.org\/wiki\/List_of_ISO_639-1_codes).","responses":{"200":{"description":"Locale codes list","schema":{"$ref":"#\/definitions\/localeCodeList"}}},"x-appwrite":{"method":"listCodes","weight":112,"cookies":false,"type":"","demo":"locale\/list-codes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-locale-codes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/localeCode","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/locale\/continents":{"get":{"summary":"List continents","operationId":"localeListContinents","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","schema":{"$ref":"#\/definitions\/continentList"}}},"x-appwrite":{"method":"listContinents","weight":116,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/continents","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List countries","operationId":"localeListCountries","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountries","weight":113,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/countries","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU countries","operationId":"localeListCountriesEU","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountriesEU","weight":114,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/countries\/eu","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List countries phone codes","operationId":"localeListCountriesPhones","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","schema":{"$ref":"#\/definitions\/phoneList"}}},"x-appwrite":{"method":"listCountriesPhones","weight":115,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/countries\/phones","offline-key":"","offline-response-key":"countryCode","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List currencies","operationId":"localeListCurrencies","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","schema":{"$ref":"#\/definitions\/currencyList"}}},"x-appwrite":{"method":"listCurrencies","weight":117,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/currencies","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List languages","operationId":"localeListLanguages","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","schema":{"$ref":"#\/definitions\/languageList"}}},"x-appwrite":{"method":"listLanguages","weight":118,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/languages","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/messaging\/topics\/{topicId}\/subscribers":{"post":{"summary":"Create a subscriber.","operationId":"messagingCreateSubscriber","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Subscriber","schema":{"$ref":"#\/definitions\/subscriber"}}},"x-appwrite":{"method":"createSubscriber","weight":355,"cookies":false,"type":"","demo":"messaging\/create-subscriber.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-subscriber.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.write","platforms":["server","client","console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[],"Session":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID to subscribe to.","required":true,"type":"string","x-example":"[TOPIC_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"subscriberId":{"type":"string","description":"Subscriber ID. Choose a custom Subscriber ID or a new Subscriber ID.","default":null,"x-example":"[SUBSCRIBER_ID]"},"targetId":{"type":"string","description":"Target ID. The target ID to link to the specified Topic ID.","default":null,"x-example":"[TARGET_ID]"}},"required":["subscriberId","targetId"]}}]}},"\/messaging\/topics\/{topicId}\/subscribers\/{subscriberId}":{"delete":{"summary":"Delete a subscriber.","operationId":"messagingDeleteSubscriber","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSubscriber","weight":359,"cookies":false,"type":"","demo":"messaging\/delete-subscriber.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-subscriber.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.write","platforms":["server","client","console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[],"Session":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID subscribed to.","required":true,"type":"string","x-example":"[TOPIC_ID]","in":"path"},{"name":"subscriberId","description":"Subscriber ID.","required":true,"type":"string","x-example":"[SUBSCRIBER_ID]","in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files":{"get":{"summary":"List files","operationId":"storageListFiles","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a list of all the user files. You can use the query params to filter your results.","responses":{"200":{"description":"Files List","schema":{"$ref":"#\/definitions\/fileList"}}},"x-appwrite":{"method":"listFiles","weight":193,"cookies":false,"type":"","demo":"storage\/list-files.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/list-files.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create file","operationId":"storageCreateFile","consumes":["multipart\/form-data"],"produces":["application\/json"],"tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"createFile","weight":192,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","required":true,"x-upload-id":true,"type":"string","x-example":"[FILE_ID]","in":"formData"},{"name":"file","description":"Binary file. Appwrite SDKs provide helpers to handle file input. [Learn about file input](https:\/\/appwrite.io\/docs\/storage#file-input).","required":true,"type":"file","in":"formData"},{"name":"permissions","description":"An array of permission strings. By default, only the current user is granted all permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"x-example":"[\"read(\"any\")\"]","in":"formData"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get file","operationId":"storageGetFile","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"getFile","weight":194,"cookies":false,"type":"","demo":"storage\/get-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID.","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"}]},"put":{"summary":"Update file","operationId":"storageUpdateFile","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Update a file by its unique ID. Only users with write permissions have access to update this resource.","responses":{"200":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"updateFile","weight":198,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File unique ID.","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Name of the file","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission string. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","consumes":["application\/json"],"produces":[],"tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":199,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID.","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/download":{"get":{"summary":"Get file for download","operationId":"storageGetFileDownload","consumes":["application\/json"],"produces":["*\/*"],"tags":["storage"],"description":"Get a file content by its unique ID. The endpoint response return with a 'Content-Disposition: attachment' header that tells the browser to start downloading the file to user downloads directory.","responses":{"200":{"description":"File","schema":{"type":"file"}}},"x-appwrite":{"method":"getFileDownload","weight":196,"cookies":false,"type":"location","demo":"storage\/get-file-download.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-download.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID.","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/preview":{"get":{"summary":"Get file preview","operationId":"storageGetFilePreview","consumes":["application\/json"],"produces":["image\/*"],"tags":["storage"],"description":"Get a file preview image. Currently, this method supports preview for image files (jpg, png, and gif), other supported formats, like pdf, docs, slides, and spreadsheets, will return the file icon image. You can also pass query string arguments for cutting and resizing your preview image. Preview is supported only for image files smaller than 10MB.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFilePreview","weight":195,"cookies":false,"type":"location","demo":"storage\/get-file-preview.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-preview.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"},{"name":"width","description":"Resize preview image width, Pass an integer between 0 to 4000.","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 4000.","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"gravity","description":"Image crop gravity. Can be one of center,top-left,top,top-right,left,right,bottom-left,bottom,bottom-right","required":false,"type":"string","x-example":"center","enum":["center","top-left","top","top-right","left","right","bottom-left","bottom","bottom-right"],"x-enum-name":"ImageGravity","x-enum-keys":[],"default":"center","in":"query"},{"name":"quality","description":"Preview image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"borderWidth","description":"Preview image border in pixels. Pass an integer between 0 to 100. Defaults to 0.","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"borderColor","description":"Preview image border color. Use a valid HEX color, no # is needed for prefix.","required":false,"type":"string","default":"","in":"query"},{"name":"borderRadius","description":"Preview image border radius in pixels. Pass an integer between 0 to 4000.","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"opacity","description":"Preview image opacity. Only works with images having an alpha channel (like png). Pass a number between 0 to 1.","required":false,"type":"number","format":"float","x-example":0,"default":1,"in":"query"},{"name":"rotation","description":"Preview image rotation in degrees. Pass an integer between -360 and 360.","required":false,"type":"integer","format":"int32","x-example":-360,"default":0,"in":"query"},{"name":"background","description":"Preview image background color. Only works with transparent images (png). Use a valid HEX color, no # is needed for prefix.","required":false,"type":"string","default":"","in":"query"},{"name":"output","description":"Output format type (jpeg, jpg, png, gif and webp).","required":false,"type":"string","x-example":"jpg","enum":["jpg","jpeg","gif","png","webp"],"x-enum-name":"ImageFormat","x-enum-keys":[],"default":"","in":"query"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/view":{"get":{"summary":"Get file for view","operationId":"storageGetFileView","consumes":["application\/json"],"produces":["*\/*"],"tags":["storage"],"description":"Get a file content by its unique ID. This endpoint is similar to the download method but returns with no 'Content-Disposition: attachment' header.","responses":{"200":{"description":"File","schema":{"type":"file"}}},"x-appwrite":{"method":"getFileView","weight":197,"cookies":false,"type":"location","demo":"storage\/get-file-view.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-view.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID.","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"}]}},"\/teams":{"get":{"summary":"List teams","operationId":"teamsList","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get a list of all the teams in which the current user is a member. You can use the parameters to filter your results.","responses":{"200":{"description":"Teams List","schema":{"$ref":"#\/definitions\/teamList"}}},"x-appwrite":{"method":"list","weight":203,"cookies":false,"type":"","demo":"teams\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-teams.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total, billingPlan","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create team","operationId":"teamsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"create","weight":202,"cookies":false,"type":"","demo":"teams\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/create-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"teamId":{"type":"string","description":"Team ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[TEAM_ID]"},"name":{"type":"string","description":"Team name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"roles":{"type":"array","description":"Array of strings. Use this param to set the roles in the team for the user who created it. The default role is **owner**. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","default":["owner"],"x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}]}},"\/teams\/{teamId}":{"get":{"summary":"Get team","operationId":"teamsGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"get","weight":204,"cookies":false,"type":"","demo":"teams\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams","offline-key":"{teamId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"}]},"put":{"summary":"Update name","operationId":"teamsUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Update the team's name by its unique ID.","responses":{"200":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"updateName","weight":206,"cookies":false,"type":"","demo":"teams\/update-name.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-name.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams","offline-key":"{teamId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"New team name. Max length: 128 chars.","default":null,"x-example":"[NAME]"}},"required":["name"]}}]},"delete":{"summary":"Delete team","operationId":"teamsDelete","consumes":["application\/json"],"produces":[],"tags":["teams"],"description":"Delete a team using its ID. Only team members with the owner role can delete the team.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":208,"cookies":false,"type":"","demo":"teams\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/delete-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"}]}},"\/teams\/{teamId}\/memberships":{"get":{"summary":"List team memberships","operationId":"teamsListMemberships","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"listMemberships","weight":210,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/memberships","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create team membership","operationId":"teamsCreateMembership","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Invite a new member to join your team. Provide an ID for existing users, or invite unregistered users using an email or phone number. If initiated from a Client SDK, Appwrite will send an email or sms with a link to join the team to the invited user, and an account will be created for them if one doesn't exist. If initiated from a Server SDK, the new member will be added automatically to the team.\n\nYou only need to provide one of a user ID, email, or phone number. Appwrite will prioritize accepting the user ID > email > phone number if you provide more than one of these parameters.\n\nUse the `url` parameter to redirect the user from the invitation email to your app. After the user is redirected, use the [Update Team Membership Status](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/teams#updateMembershipStatus) endpoint to allow the user to accept the invitation to the team. \n\nPlease note that to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) Appwrite will accept the only redirect URLs under the domains you have added as a platform on the Appwrite Console.\n","responses":{"201":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"createMembership","weight":209,"cookies":false,"type":"","demo":"teams\/create-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/create-team-membership.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"email":{"type":"string","description":"Email of the new team member.","default":"","x-example":"email@example.com"},"userId":{"type":"string","description":"ID of the user to be added to a team.","default":"","x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":"","x-example":"+12065550100"},"roles":{"type":"array","description":"Array of strings. Use this param to set the user roles in the team. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":"","x-example":"https:\/\/example.com"},"name":{"type":"string","description":"Name of the new team member. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["roles"]}}]}},"\/teams\/{teamId}\/memberships\/{membershipId}":{"get":{"summary":"Get team membership","operationId":"teamsGetMembership","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get a team member by the membership unique id. All team members have read access for this resource.","responses":{"200":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"getMembership","weight":211,"cookies":false,"type":"","demo":"teams\/get-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-member.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/memberships","offline-key":"{membershipId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"type":"string","x-example":"[MEMBERSHIP_ID]","in":"path"}]},"patch":{"summary":"Update membership","operationId":"teamsUpdateMembership","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Modify the roles of a team member. Only team members with the owner role have access to this endpoint. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions).\n","responses":{"200":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"updateMembership","weight":212,"cookies":false,"type":"","demo":"teams\/update-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"type":"string","x-example":"[MEMBERSHIP_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"roles":{"type":"array","description":"An array of strings. Use this param to set the user's roles in the team. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}}},"required":["roles"]}}]},"delete":{"summary":"Delete team membership","operationId":"teamsDeleteMembership","consumes":["application\/json"],"produces":[],"tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":214,"cookies":false,"type":"","demo":"teams\/delete-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/delete-team-membership.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"type":"string","x-example":"[MEMBERSHIP_ID]","in":"path"}]}},"\/teams\/{teamId}\/memberships\/{membershipId}\/status":{"patch":{"summary":"Update team membership status","operationId":"teamsUpdateMembershipStatus","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Use this endpoint to allow a user to accept an invitation to join a team after being redirected back to your app from the invitation email received by the user.\n\nIf the request is successful, a session for the user is automatically created.\n","responses":{"200":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"updateMembershipStatus","weight":213,"cookies":false,"type":"","demo":"teams\/update-membership-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"public","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"type":"string","x-example":"[MEMBERSHIP_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Secret key.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/teams\/{teamId}\/prefs":{"get":{"summary":"Get team preferences","operationId":"teamsGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get the team's shared preferences by its unique ID. If a preference doesn't need to be shared by all team members, prefer storing them in [user preferences](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#getPrefs).","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":205,"cookies":false,"type":"","demo":"teams\/get-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/prefs","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"}]},"put":{"summary":"Update preferences","operationId":"teamsUpdatePrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Update the team's preferences by its unique ID. The object you pass is stored as is and replaces any previous value. The maximum allowed prefs size is 64kB and throws an error if exceeded.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"updatePrefs","weight":207,"cookies":false,"type":"","demo":"teams\/update-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/prefs","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"prefs":{"type":"object","description":"Prefs key-value JSON object.","default":{},"x-example":"{}"}},"required":["prefs"]}}]}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"project","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]},{"name":"proxy","description":"The Proxy Service allows you to configure actions for your domains beyond DNS configuration.","x-globalAttributes":[]},{"name":"graphql","description":"The GraphQL API allows you to query and mutate your Appwrite server using GraphQL.","x-globalAttributes":[]},{"name":"console","description":"The Console service allows you to interact with console relevant informations.","x-globalAttributes":[]},{"name":"migrations","description":"The Migrations service allows you to migrate third-party data to your Appwrite project.","x-globalAttributes":[]},{"name":"messaging","description":"The Messaging service allows you to send messages to any provider type (SMTP, push notification, SMS, etc.).","x-globalAttributes":[]}],"definitions":{"any":{"description":"Any","type":"object","additionalProperties":true},"documentList":{"description":"Documents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of documents documents that matched your query.","x-example":5,"format":"int32"},"documents":{"type":"array","description":"List of documents.","items":{"type":"object","$ref":"#\/definitions\/document"},"x-example":""}},"required":["total","documents"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of sessions documents that matched your query.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"type":"object","$ref":"#\/definitions\/session"},"x-example":""}},"required":["total","sessions"]},"identityList":{"description":"Identities List","type":"object","properties":{"total":{"type":"integer","description":"Total number of identities documents that matched your query.","x-example":5,"format":"int32"},"identities":{"type":"array","description":"List of identities.","items":{"type":"object","$ref":"#\/definitions\/identity"},"x-example":""}},"required":["total","identities"]},"logList":{"description":"Logs List","type":"object","properties":{"total":{"type":"integer","description":"Total number of logs documents that matched your query.","x-example":5,"format":"int32"},"logs":{"type":"array","description":"List of logs.","items":{"type":"object","$ref":"#\/definitions\/log"},"x-example":""}},"required":["total","logs"]},"fileList":{"description":"Files List","type":"object","properties":{"total":{"type":"integer","description":"Total number of files documents that matched your query.","x-example":5,"format":"int32"},"files":{"type":"array","description":"List of files.","items":{"type":"object","$ref":"#\/definitions\/file"},"x-example":""}},"required":["total","files"]},"teamList":{"description":"Teams List","type":"object","properties":{"total":{"type":"integer","description":"Total number of teams documents that matched your query.","x-example":5,"format":"int32"},"teams":{"type":"array","description":"List of teams.","items":{"type":"object","$ref":"#\/definitions\/team"},"x-example":""}},"required":["total","teams"]},"membershipList":{"description":"Memberships List","type":"object","properties":{"total":{"type":"integer","description":"Total number of memberships documents that matched your query.","x-example":5,"format":"int32"},"memberships":{"type":"array","description":"List of memberships.","items":{"type":"object","$ref":"#\/definitions\/membership"},"x-example":""}},"required":["total","memberships"]},"executionList":{"description":"Executions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of executions documents that matched your query.","x-example":5,"format":"int32"},"executions":{"type":"array","description":"List of executions.","items":{"type":"object","$ref":"#\/definitions\/execution"},"x-example":""}},"required":["total","executions"]},"countryList":{"description":"Countries List","type":"object","properties":{"total":{"type":"integer","description":"Total number of countries documents that matched your query.","x-example":5,"format":"int32"},"countries":{"type":"array","description":"List of countries.","items":{"type":"object","$ref":"#\/definitions\/country"},"x-example":""}},"required":["total","countries"]},"continentList":{"description":"Continents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of continents documents that matched your query.","x-example":5,"format":"int32"},"continents":{"type":"array","description":"List of continents.","items":{"type":"object","$ref":"#\/definitions\/continent"},"x-example":""}},"required":["total","continents"]},"languageList":{"description":"Languages List","type":"object","properties":{"total":{"type":"integer","description":"Total number of languages documents that matched your query.","x-example":5,"format":"int32"},"languages":{"type":"array","description":"List of languages.","items":{"type":"object","$ref":"#\/definitions\/language"},"x-example":""}},"required":["total","languages"]},"currencyList":{"description":"Currencies List","type":"object","properties":{"total":{"type":"integer","description":"Total number of currencies documents that matched your query.","x-example":5,"format":"int32"},"currencies":{"type":"array","description":"List of currencies.","items":{"type":"object","$ref":"#\/definitions\/currency"},"x-example":""}},"required":["total","currencies"]},"phoneList":{"description":"Phones List","type":"object","properties":{"total":{"type":"integer","description":"Total number of phones documents that matched your query.","x-example":5,"format":"int32"},"phones":{"type":"array","description":"List of phones.","items":{"type":"object","$ref":"#\/definitions\/phone"},"x-example":""}},"required":["total","phones"]},"localeCodeList":{"description":"Locale codes list","type":"object","properties":{"total":{"type":"integer","description":"Total number of localeCodes documents that matched your query.","x-example":5,"format":"int32"},"localeCodes":{"type":"array","description":"List of localeCodes.","items":{"type":"object","$ref":"#\/definitions\/localeCode"},"x-example":""}},"required":["total","localeCodes"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"user":{"description":"User","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"password":{"type":"string","description":"Hashed user password.","x-example":"$argon2id$v=19$m=2048,t=4,p=3$aUZjLnliVWRINmFNTWMudg$5S+x+7uA31xFnrHFT47yFwcJeaP0w92L\/4LdgrVRXxE","x-nullable":true},"hash":{"type":"string","description":"Password hashing algorithm.","x-example":"argon2","x-nullable":true},"hashOptions":{"type":"object","description":"Password hashing algorithm configuration.","x-example":{},"items":{"x-oneOf":[{"$ref":"#\/definitions\/algoArgon2"},{"$ref":"#\/definitions\/algoScrypt"},{"$ref":"#\/definitions\/algoScryptModified"},{"$ref":"#\/definitions\/algoBcrypt"},{"$ref":"#\/definitions\/algoPhpass"},{"$ref":"#\/definitions\/algoSha"},{"$ref":"#\/definitions\/algoMd5"}]},"x-nullable":true},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"labels":{"type":"array","description":"Labels for the user.","items":{"type":"string"},"x-example":["vip"]},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"mfa":{"type":"boolean","description":"Multi factor authentication status.","x-example":true},"totp":{"type":"boolean","description":"TOTP status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"type":"object","$ref":"#\/definitions\/preferences"}},"targets":{"type":"array","description":"A user-owned message receiver. A single user may have multiple e.g. emails, phones, and a browser. Each target is registered with a single provider.","items":{"type":"object","$ref":"#\/definitions\/target"},"x-example":[]},"accessedAt":{"type":"string","description":"Most recent access date in ISO 8601 format. This attribute is only updated again after 24 hours.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","$updatedAt","name","registration","status","labels","passwordUpdate","email","phone","emailVerification","phoneVerification","mfa","totp","prefs","targets","accessedAt"]},"algoMd5":{"description":"AlgoMD5","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"md5"}},"required":["type"]},"algoSha":{"description":"AlgoSHA","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"sha"}},"required":["type"]},"algoPhpass":{"description":"AlgoPHPass","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"phpass"}},"required":["type"]},"algoBcrypt":{"description":"AlgoBcrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"bcrypt"}},"required":["type"]},"algoScrypt":{"description":"AlgoScrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scrypt"},"costCpu":{"type":"integer","description":"CPU complexity of computed hash.","x-example":8,"format":"int32"},"costMemory":{"type":"integer","description":"Memory complexity of computed hash.","x-example":14,"format":"int32"},"costParallel":{"type":"integer","description":"Parallelization of computed hash.","x-example":1,"format":"int32"},"length":{"type":"integer","description":"Length used to compute hash.","x-example":64,"format":"int32"}},"required":["type","costCpu","costMemory","costParallel","length"]},"algoScryptModified":{"description":"AlgoScryptModified","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scryptMod"},"salt":{"type":"string","description":"Salt used to compute hash.","x-example":"UxLMreBr6tYyjQ=="},"saltSeparator":{"type":"string","description":"Separator used to compute hash.","x-example":"Bw=="},"signerKey":{"type":"string","description":"Key used to compute hash.","x-example":"XyEKE9RcTDeLEsL\/RjwPDBv\/RqDl8fb3gpYEOQaPihbxf1ZAtSOHCjuAAa7Q3oHpCYhXSN9tizHgVOwn6krflQ=="}},"required":["type","salt","saltSeparator","signerKey"]},"algoArgon2":{"description":"AlgoArgon2","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"argon2"},"memoryCost":{"type":"integer","description":"Memory used to compute hash.","x-example":65536,"format":"int32"},"timeCost":{"type":"integer","description":"Amount of time consumed to compute hash","x-example":4,"format":"int32"},"threads":{"type":"integer","description":"Number of threads used to compute hash.","x-example":3,"format":"int32"}},"required":["type","memoryCost","timeCost","threads"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true},"factors":{"type":"array","description":"Returns a list of active session factors.","items":{"type":"string"},"x-example":["email"]},"secret":{"type":"string","description":"Secret used to authenticate the user. Only included if the request was made with an API key","x-example":"5e5bb8c16897e"}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current","factors","secret"]},"identity":{"description":"Identity","type":"object","properties":{"$id":{"type":"string","description":"Identity ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Identity creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Identity update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"provider":{"type":"string","description":"Identity Provider.","x-example":"email"},"providerUid":{"type":"string","description":"ID of the User in the Identity Provider.","x-example":"5e5bb8c16897e"},"providerEmail":{"type":"string","description":"Email of the User in the Identity Provider.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Identity Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Identity Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"}},"required":["$id","$createdAt","$updatedAt","userId","provider","providerUid","providerEmail","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"phrase":{"type":"string","description":"Security phrase of a token. Empty if security phrase was not requested when creating a token. It includes randomly generated phrase which is also sent in the external resource such as email.","x-example":"Golden Fox"}},"required":["$id","$createdAt","userId","secret","expire","phrase"]},"jwt":{"description":"JWT","type":"object","properties":{"jwt":{"type":"string","description":"JWT encoded string.","x-example":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c"}},"required":["jwt"]},"locale":{"description":"Locale","type":"object","properties":{"ip":{"type":"string","description":"User IP address.","x-example":"127.0.0.1"},"countryCode":{"type":"string","description":"Country code in [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) two-character format","x-example":"US"},"country":{"type":"string","description":"Country name. This field support localization.","x-example":"United States"},"continentCode":{"type":"string","description":"Continent code. A two character continent code \"AF\" for Africa, \"AN\" for Antarctica, \"AS\" for Asia, \"EU\" for Europe, \"NA\" for North America, \"OC\" for Oceania, and \"SA\" for South America.","x-example":"NA"},"continent":{"type":"string","description":"Continent name. This field support localization.","x-example":"North America"},"eu":{"type":"boolean","description":"True if country is part of the European Union.","x-example":false},"currency":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format","x-example":"USD"}},"required":["ip","countryCode","country","continentCode","continent","eu","currency"]},"localeCode":{"description":"LocaleCode","type":"object","properties":{"code":{"type":"string","description":"Locale codes in [ISO 639-1](https:\/\/en.wikipedia.org\/wiki\/List_of_ISO_639-1_codes)","x-example":"en-us"},"name":{"type":"string","description":"Locale name","x-example":"US"}},"required":["code","name"]},"file":{"description":"File","type":"object","properties":{"$id":{"type":"string","description":"File ID.","x-example":"5e5ea5c16897e"},"bucketId":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"},"prefs":{"type":"object","description":"Team preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"type":"object","$ref":"#\/definitions\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","total","prefs"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"mfa":{"type":"boolean","description":"Multi factor authentication status, true if the user has MFA enabled or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":["owner"]}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","mfa","roles"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"requestMethod":{"type":"string","description":"HTTP request method type.","x-example":"GET"},"requestPath":{"type":"string","description":"HTTP request path and query.","x-example":"\/articles?id=5"},"requestHeaders":{"type":"array","description":"HTTP response headers as a key-value object. This will return only whitelisted headers. All headers are returned if execution is created as synchronous.","items":{"type":"object","$ref":"#\/definitions\/headers"},"x-example":[{"Content-Type":"application\/json"}]},"responseStatusCode":{"type":"integer","description":"HTTP response status code.","x-example":200,"format":"int32"},"responseBody":{"type":"string","description":"HTTP response body. This will return empty unless execution is created as synchronous.","x-example":"Developers are awesome."},"responseHeaders":{"type":"array","description":"HTTP response headers as a key-value object. This will return only whitelisted headers. All headers are returned if execution is created as synchronous.","items":{"type":"object","$ref":"#\/definitions\/headers"},"x-example":[{"Content-Type":"application\/json"}]},"logs":{"type":"string","description":"Function logs. Includes the last 4,000 characters. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"errors":{"type":"string","description":"Function errors. Includes the last 4,000 characters. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"Function execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","requestMethod","requestPath","requestHeaders","responseStatusCode","responseBody","responseHeaders","logs","errors","duration"]},"country":{"description":"Country","type":"object","properties":{"name":{"type":"string","description":"Country name.","x-example":"United States"},"code":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"}},"required":["name","code"]},"continent":{"description":"Continent","type":"object","properties":{"name":{"type":"string","description":"Continent name.","x-example":"Europe"},"code":{"type":"string","description":"Continent two letter code.","x-example":"EU"}},"required":["name","code"]},"language":{"description":"Language","type":"object","properties":{"name":{"type":"string","description":"Language name.","x-example":"Italian"},"code":{"type":"string","description":"Language two-character ISO 639-1 codes.","x-example":"it"},"nativeName":{"type":"string","description":"Language native name.","x-example":"Italiano"}},"required":["name","code","nativeName"]},"currency":{"description":"Currency","type":"object","properties":{"symbol":{"type":"string","description":"Currency symbol.","x-example":"$"},"name":{"type":"string","description":"Currency name.","x-example":"US dollar"},"symbolNative":{"type":"string","description":"Currency native symbol.","x-example":"$"},"decimalDigits":{"type":"integer","description":"Number of decimal digits.","x-example":2,"format":"int32"},"rounding":{"type":"number","description":"Currency digit rounding.","x-example":0,"format":"double"},"code":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format.","x-example":"USD"},"namePlural":{"type":"string","description":"Currency plural name","x-example":"US dollars"}},"required":["symbol","name","symbolNative","decimalDigits","rounding","code","namePlural"]},"phone":{"description":"Phone","type":"object","properties":{"code":{"type":"string","description":"Phone code.","x-example":"+1"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["code","countryCode","countryName"]},"headers":{"description":"Headers","type":"object","properties":{"name":{"type":"string","description":"Header name.","x-example":"Content-Type"},"value":{"type":"string","description":"Header value.","x-example":"application\/json"}},"required":["name","value"]},"mfaChallenge":{"description":"MFA Challenge","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","userId","expire"]},"mfaType":{"description":"MFAType","type":"object","properties":{"backups":{"type":"array","description":"Backup codes.","items":{"type":"string"},"x-example":true},"secret":{"type":"string","description":"Secret token used for TOTP factor.","x-example":true},"uri":{"type":"string","description":"URI for authenticator apps.","x-example":true}},"required":["backups","secret","uri"]},"mfaFactors":{"description":"MFAFactors","type":"object","properties":{"totp":{"type":"boolean","description":"TOTP","x-example":true},"phone":{"type":"boolean","description":"Phone","x-example":true},"email":{"type":"boolean","description":"Email","x-example":true}},"required":["totp","phone","email"]},"subscriber":{"description":"Subscriber","type":"object","properties":{"$id":{"type":"string","description":"Subscriber ID.","x-example":"259125845563242502"},"$createdAt":{"type":"string","description":"Subscriber creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Subscriber update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"targetId":{"type":"string","description":"Target ID.","x-example":"259125845563242502"},"target":{"type":"object","description":"Target.","x-example":{"$id":"259125845563242502","$createdAt":"2020-10-15T06:38:00.000+00:00","$updatedAt":"2020-10-15T06:38:00.000+00:00","providerType":"email","providerId":"259125845563242502","name":"ageon-app-email","identifier":"random-mail@email.org","userId":"5e5ea5c16897e"},"items":{"type":"object","$ref":"#\/definitions\/target"}},"userId":{"type":"string","description":"Topic ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User Name.","x-example":"Aegon Targaryen"},"topicId":{"type":"string","description":"Topic ID.","x-example":"259125845563242502"},"providerType":{"type":"string","description":"The target provider type. Can be one of the following: `email`, `sms` or `push`.","x-example":"email"}},"required":["$id","$createdAt","$updatedAt","targetId","target","userId","userName","topicId","providerType"]},"target":{"description":"Target","type":"object","properties":{"$id":{"type":"string","description":"Target ID.","x-example":"259125845563242502"},"$createdAt":{"type":"string","description":"Target creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Target update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Target Name.","x-example":"Aegon apple token"},"userId":{"type":"string","description":"User ID.","x-example":"259125845563242502"},"providerId":{"type":"string","description":"Provider ID.","x-example":"259125845563242502","x-nullable":true},"providerType":{"type":"string","description":"The target provider type. Can be one of the following: `email`, `sms` or `push`.","x-example":"email"},"identifier":{"type":"string","description":"The target identifier.","x-example":"token"}},"required":["$id","$createdAt","$updatedAt","name","userId","providerType","identifier"]}},"externalDocs":{"description":"Full API docs, specs and tutorials","url":"https:\/\/appwrite.io\/docs"}} \ No newline at end of file +{"swagger":"2.0","info":{"version":"1.5.0","title":"Appwrite","description":"Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https:\/\/appwrite.io\/docs](https:\/\/appwrite.io\/docs)","termsOfService":"https:\/\/appwrite.io\/policy\/terms","contact":{"name":"Appwrite Team","url":"https:\/\/appwrite.io\/support","email":"team@appwrite.io"},"license":{"name":"BSD-3-Clause","url":"https:\/\/raw.githubusercontent.com\/appwrite\/appwrite\/master\/LICENSE"}},"host":"cloud.appwrite.io","basePath":"\/v1","schemes":["https"],"consumes":["application\/json","multipart\/form-data"],"produces":["application\/json"],"securityDefinitions":{"Project":{"type":"apiKey","name":"X-Appwrite-Project","description":"Your project ID","in":"header","x-appwrite":{"demo":"5df5acd0d48c2"}},"JWT":{"type":"apiKey","name":"X-Appwrite-JWT","description":"Your secret JSON Web Token","in":"header","x-appwrite":{"demo":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ..."}},"Locale":{"type":"apiKey","name":"X-Appwrite-Locale","description":"","in":"header","x-appwrite":{"demo":"en"}},"Session":{"type":"apiKey","name":"X-Appwrite-Session","description":"The user session to authenticate with","in":"header"}},"paths":{"\/account":{"get":{"summary":"Get account","operationId":"accountGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get the currently logged in user.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"get","weight":22,"cookies":false,"type":"","demo":"account\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]},"post":{"summary":"Create account","operationId":"accountCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to allow a new user to register a new account in your project. After the user registration completes successfully, you can use the [\/account\/verfication](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createVerification) route to start verifying the user email address. To allow the new user to login to their new account, you need to create a new [account session](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createEmailSession).","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"create","weight":7,"cookies":false,"type":"","demo":"account\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"New user password. Must be between 8 and 256 chars.","default":null,"x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/account\/email":{"patch":{"summary":"Update email","operationId":"accountUpdateEmail","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateEmail","weight":29,"cookies":false,"type":"","demo":"account\/update-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["email","password"]}}]}},"\/account\/identities":{"get":{"summary":"List Identities","operationId":"accountListIdentities","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get the list of identities for the currently logged in user.","responses":{"200":{"description":"Identities List","schema":{"$ref":"#\/definitions\/identityList"}}},"x-appwrite":{"method":"listIdentities","weight":13,"cookies":false,"type":"","demo":"account\/list-identities.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-identities.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/identities","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, provider, providerUid, providerEmail, providerAccessTokenExpiry","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/identities\/{identityId}":{"delete":{"summary":"Delete identity","operationId":"accountDeleteIdentity","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Delete an identity by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIdentity","weight":14,"cookies":false,"type":"","demo":"account\/delete-identity.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-identity.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"identityId","description":"Identity ID.","required":true,"type":"string","x-example":"[IDENTITY_ID]","in":"path"}]}},"\/account\/jwt":{"post":{"summary":"Create JWT","operationId":"accountCreateJWT","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to create a JSON Web Token. You can use the resulting JWT to authenticate on behalf of the current user when working with the Appwrite server-side API and SDKs. The JWT secret is valid for 15 minutes from its creation and will be invalid if the user will logout in that time frame.","responses":{"201":{"description":"JWT","schema":{"$ref":"#\/definitions\/jwt"}}},"x-appwrite":{"method":"createJWT","weight":21,"cookies":false,"type":"","demo":"account\/create-j-w-t.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-jwt.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"List logs","operationId":"accountListLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get the list of latest security activity logs for the currently logged in user. Each log returns user IP address, location and date and time of log.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listLogs","weight":25,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/mfa":{"patch":{"summary":"Update MFA","operationId":"accountUpdateMFA","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateMFA","weight":42,"cookies":false,"type":"","demo":"account\/update-m-f-a.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-mfa.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"mfa":{"type":"boolean","description":"Enable or disable MFA.","default":null,"x-example":false}},"required":["mfa"]}}]}},"\/account\/mfa\/challenge":{"post":{"summary":"Create 2FA Challenge","operationId":"accountCreate2FAChallenge","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"201":{"description":"MFA Challenge","schema":{"$ref":"#\/definitions\/mfaChallenge"}}},"x-appwrite":{"method":"create2FAChallenge","weight":47,"cookies":false,"type":"","demo":"account\/create2f-a-challenge.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-2fa-challenge.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},token:{param-token}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"factor":{"type":"string","description":"Factor used for verification.","default":null,"x-example":"totp","enum":["totp","phone","email"],"x-enum-name":null,"x-enum-keys":[]}},"required":["factor"]}}]},"put":{"summary":"Create MFA Challenge (confirmation)","operationId":"accountUpdateChallenge","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"updateChallenge","weight":48,"cookies":false,"type":"","demo":"account\/update-challenge.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-challenge.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"challengeId":{"type":"string","description":"ID of the challenge.","default":null,"x-example":"[CHALLENGE_ID]"},"otp":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[OTP]"}},"required":["challengeId","otp"]}}]}},"\/account\/mfa\/factors":{"get":{"summary":"List Factors","operationId":"accountListFactors","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"200":{"description":"MFAFactors","schema":{"$ref":"#\/definitions\/mfaFactors"}}},"x-appwrite":{"method":"listFactors","weight":43,"cookies":false,"type":"","demo":"account\/list-factors.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-factors.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/account\/mfa\/{type}":{"post":{"summary":"Add Authenticator","operationId":"accountAddAuthenticator","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"200":{"description":"MFAType","schema":{"$ref":"#\/definitions\/mfaType"}}},"x-appwrite":{"method":"addAuthenticator","weight":44,"cookies":false,"type":"","demo":"account\/add-authenticator.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/add-authenticator.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"type","description":"Type of authenticator.","required":true,"type":"string","x-example":"totp","enum":["totp"],"x-enum-name":null,"x-enum-keys":[],"in":"path"}]},"put":{"summary":"Verify Authenticator","operationId":"accountVerifyAuthenticator","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"verifyAuthenticator","weight":45,"cookies":false,"type":"","demo":"account\/verify-authenticator.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/verify-authenticator.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"type","description":"Type of authenticator.","required":true,"type":"string","x-example":"totp","enum":["totp"],"x-enum-name":null,"x-enum-keys":[],"in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"otp":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[OTP]"}},"required":["otp"]}}]},"delete":{"summary":"Delete Authenticator","operationId":"accountDeleteAuthenticator","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"deleteAuthenticator","weight":46,"cookies":false,"type":"","demo":"account\/delete-authenticator.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-mfa.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"type","description":"Type of authenticator.","required":true,"type":"string","x-example":"totp","enum":["totp"],"x-enum-name":null,"x-enum-keys":[],"in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"otp":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[OTP]"}},"required":["otp"]}}]}},"\/account\/name":{"patch":{"summary":"Update name","operationId":"accountUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateName","weight":27,"cookies":false,"type":"","demo":"account\/update-name.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-name.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"User name. Max length: 128 chars.","default":null,"x-example":"[NAME]"}},"required":["name"]}}]}},"\/account\/password":{"patch":{"summary":"Update password","operationId":"accountUpdatePassword","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePassword","weight":28,"cookies":false,"type":"","demo":"account\/update-password.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-password.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"password":{"type":"string","description":"New user password. Must be at least 8 chars.","default":null,"x-example":null},"oldPassword":{"type":"string","description":"Current user password. Must be at least 8 chars.","default":"","x-example":"password"}},"required":["password"]}}]}},"\/account\/phone":{"patch":{"summary":"Update phone","operationId":"accountUpdatePhone","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createPhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePhone","weight":30,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["phone","password"]}}]}},"\/account\/prefs":{"get":{"summary":"Get account preferences","operationId":"accountGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get the preferences as a key-value object for the currently logged in user.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":23,"cookies":false,"type":"","demo":"account\/get-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/prefs","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]},"patch":{"summary":"Update preferences","operationId":"accountUpdatePrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account preferences. The object you pass is stored as is, and replaces any previous value. The maximum allowed prefs size is 64kB and throws error if exceeded.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePrefs","weight":31,"cookies":false,"type":"","demo":"account\/update-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/prefs","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"prefs":{"type":"object","description":"Prefs key-value JSON object.","default":{},"x-example":"{}"}},"required":["prefs"]}}]}},"\/account\/recovery":{"post":{"summary":"Create password recovery","operationId":"accountCreateRecovery","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Sends the user an email with a temporary secret key for password reset. When the user clicks the confirmation link he is redirected back to your app password reset URL with the secret key and email address values attached to the URL query string. Use the query string params to submit a request to the [PUT \/account\/recovery](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateRecovery) endpoint to complete the process. The verification link sent to the user's email address is valid for 1 hour.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createRecovery","weight":36,"cookies":false,"type":"","demo":"account\/create-recovery.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-recovery.md","rate-limit":10,"rate-time":3600,"rate-key":["url:{url},email:{param-email}","url:{url},ip:{ip}"],"scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"url":{"type":"string","description":"URL to redirect the user back to your app from the recovery email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":null,"x-example":"https:\/\/example.com"}},"required":["email","url"]}}]},"put":{"summary":"Create password recovery (confirmation)","operationId":"accountUpdateRecovery","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete the user account password reset. Both the **userId** and **secret** arguments will be passed as query parameters to the redirect URL you have provided when sending your request to the [POST \/account\/recovery](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createRecovery) endpoint.\n\nPlease note that in order to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) the only valid redirect URLs are the ones from domains you have set when adding your platforms in the console interface.","responses":{"200":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"updateRecovery","weight":37,"cookies":false,"type":"","demo":"account\/update-recovery.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-recovery.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid reset token.","default":null,"x-example":"[SECRET]"},"password":{"type":"string","description":"New user password. Must be between 8 and 256 chars.","default":null,"x-example":null}},"required":["userId","secret","password"]}}]}},"\/account\/sessions":{"get":{"summary":"List sessions","operationId":"accountListSessions","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get the list of active sessions across different devices for the currently logged in user.","responses":{"200":{"description":"Sessions List","schema":{"$ref":"#\/definitions\/sessionList"}}},"x-appwrite":{"method":"listSessions","weight":24,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/sessions","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]},"delete":{"summary":"Delete sessions","operationId":"accountDeleteSessions","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":35,"cookies":false,"type":"","demo":"account\/delete-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-sessions.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/account\/sessions\/anonymous":{"post":{"summary":"Create anonymous session","operationId":"accountCreateAnonymousSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to allow a new user to register an anonymous account in your project. This route will also create a new session for the user. To allow the new user to convert an anonymous account to a normal account, you need to update its [email and password](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateEmail) or create an [OAuth2 session](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#CreateOAuth2Session).","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"createAnonymousSession","weight":20,"cookies":false,"type":"","demo":"account\/create-anonymous-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-anonymous.md","rate-limit":50,"rate-time":3600,"rate-key":"ip:{ip}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/sessions\/email":{"post":{"summary":"Create email password session","operationId":"accountCreateEmailPasswordSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Allow the user to login into their account by providing a valid email and password combination. This route will create a new session for the user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"createEmailPasswordSession","weight":8,"cookies":false,"type":"","demo":"account\/create-email-password-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-email-password.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["email","password"]}}]}},"\/account\/sessions\/magic-url":{"put":{"summary":"Create session (deprecated)","operationId":"accountUpdateMagicURLSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to create a session from token. Provide the **userId** and **secret** parameters from the successful response of authentication flows initiated by token creation. For example, magic URL and phone login.","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateMagicURLSession","weight":17,"cookies":false,"type":"","demo":"account\/update-magic-u-r-l-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session.md","rate-limit":10,"rate-time":3600,"rate-key":"ip:{ip},userId:{param-userId}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/account\/sessions\/oauth2\/{provider}":{"get":{"summary":"Create OAuth2 session","operationId":"accountCreateOAuth2Session","consumes":["application\/json"],"produces":["text\/html"],"tags":["account"],"description":"Allow the user to login to their account using the OAuth2 provider of their choice. Each OAuth2 provider should be enabled from the Appwrite console first. Use the success and failure arguments to provide a redirect URL's back to your app when login is completed.\n\nIf there is already an active session, the new session will be attached to the logged-in account. If there are no active sessions, the server will attempt to look for a user with the same email address as the email received from the OAuth2 provider and attach the new session to the existing user. If no matching user is found - the server will create a new user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).\n","responses":{"301":{"description":"No content"}},"x-appwrite":{"method":"createOAuth2Session","weight":9,"cookies":false,"type":"webAuth","demo":"account\/create-o-auth2session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-oauth2.md","rate-limit":50,"rate-time":3600,"rate-key":"ip:{ip}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"provider","description":"OAuth2 Provider. Currently, supported providers are: amazon, apple, auth0, authentik, autodesk, bitbucket, bitly, box, dailymotion, discord, disqus, dropbox, etsy, facebook, github, gitlab, google, linkedin, microsoft, notion, oidc, okta, paypal, paypalSandbox, podio, salesforce, slack, spotify, stripe, tradeshift, tradeshiftBox, twitch, wordpress, yahoo, yammer, yandex, zoho, zoom.","required":true,"type":"string","x-example":"amazon","enum":["amazon","apple","auth0","authentik","autodesk","bitbucket","bitly","box","dailymotion","discord","disqus","dropbox","etsy","facebook","github","gitlab","google","linkedin","microsoft","notion","oidc","okta","paypal","paypalSandbox","podio","salesforce","slack","spotify","stripe","tradeshift","tradeshiftBox","twitch","wordpress","yahoo","yammer","yandex","zoho","zoom","mock"],"x-enum-name":"OAuthProvider","x-enum-keys":[],"in":"path"},{"name":"success","description":"URL to redirect back to your app after a successful login attempt. Only URLs from hostnames in your project's platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","required":false,"type":"string","format":"url","x-example":"https:\/\/example.com","default":"","in":"query"},{"name":"failure","description":"URL to redirect back to your app after a failed login attempt. Only URLs from hostnames in your project's platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","required":false,"type":"string","format":"url","x-example":"https:\/\/example.com","default":"","in":"query"},{"name":"token","description":"Include token credentials in the final redirect, useful for server-side integrations, or when cookies are not available.","required":false,"type":"boolean","x-example":false,"default":false,"in":"query"},{"name":"scopes","description":"A list of custom OAuth2 scopes. Check each provider internal docs for a list of supported scopes. Maximum of 100 scopes are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/sessions\/token":{"post":{"summary":"Create session","operationId":"accountCreateSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to create a session from token. Provide the **userId** and **secret** parameters from the successful response of authentication flows initiated by token creation. For example, magic URL and phone login.","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"createSession","weight":18,"cookies":false,"type":"","demo":"account\/create-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session.md","rate-limit":10,"rate-time":3600,"rate-key":"ip:{ip},userId:{param-userId}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Secret of a token generated by login methods. For example, the `createMagicURLToken` or `createPhoneToken` methods.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/account\/sessions\/{sessionId}":{"get":{"summary":"Get session","operationId":"accountGetSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to get a logged in user's session using a Session ID. Inputting 'current' will return the current session being used.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"getSession","weight":26,"cookies":false,"type":"","demo":"account\/get-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-session.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/sessions","offline-key":"{sessionId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to get the current device session.","required":true,"type":"string","x-example":"[SESSION_ID]","in":"path"}]},"patch":{"summary":"Update (or renew) a session","operationId":"accountUpdateSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Extend session's expiry to increase it's lifespan. Extending a session is useful when session length is short such as 5 minutes.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateSession","weight":34,"cookies":false,"type":"","demo":"account\/update-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-session.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to update the current device session.","required":true,"type":"string","x-example":"[SESSION_ID]","in":"path"}]},"delete":{"summary":"Delete session","operationId":"accountDeleteSession","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Logout the user. Use 'current' as the session ID to logout on this device, use a session ID to logout on another device. If you're looking to logout the user on all devices, use [Delete Sessions](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#deleteSessions) instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSession","weight":33,"cookies":false,"type":"","demo":"account\/delete-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-session.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to delete the current device session.","required":true,"type":"string","x-example":"[SESSION_ID]","in":"path"}]}},"\/account\/status":{"patch":{"summary":"Update status","operationId":"accountUpdateStatus","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateStatus","weight":32,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/account\/targets\/push":{"post":{"summary":"Create a push target","operationId":"accountCreatePushTarget","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"201":{"description":"Target","schema":{"$ref":"#\/definitions\/target"}}},"x-appwrite":{"method":"createPushTarget","weight":50,"cookies":false,"type":"","demo":"account\/create-push-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"targetId":{"type":"string","description":"Target ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[TARGET_ID]"},"identifier":{"type":"string","description":"The target identifier (token, email, phone etc.)","default":null,"x-example":"[IDENTIFIER]"},"providerId":{"type":"string","description":"Provider ID. Message will be sent to this target from the specified provider ID. If no provider ID is set the first setup provider will be used.","default":"","x-example":"[PROVIDER_ID]"}},"required":["targetId","identifier"]}}]}},"\/account\/targets\/{targetId}\/push":{"put":{"summary":"Update a push target","operationId":"accountUpdatePushTarget","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"200":{"description":"Target","schema":{"$ref":"#\/definitions\/target"}}},"x-appwrite":{"method":"updatePushTarget","weight":51,"cookies":false,"type":"","demo":"account\/update-push-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[]}],"parameters":[{"name":"targetId","description":"Target ID.","required":true,"type":"string","x-example":"[TARGET_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"identifier":{"type":"string","description":"The target identifier (token, email, phone etc.)","default":null,"x-example":"[IDENTIFIER]"}},"required":["identifier"]}}]},"delete":{"summary":"Delete a push target","operationId":"accountDeletePushTarget","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deletePushTarget","weight":52,"cookies":false,"type":"","demo":"account\/delete-push-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[]}],"parameters":[{"name":"targetId","description":"Target ID.","required":true,"type":"string","x-example":"[TARGET_ID]","in":"path"}]}},"\/account\/tokens\/email":{"post":{"summary":"Create email token (OTP)","operationId":"accountCreateEmailToken","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Sends the user an email with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [POST \/v1\/account\/sessions\/token](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createSession) endpoint to complete the login process. The secret sent to the user's email is valid for 15 minutes.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createEmailToken","weight":16,"cookies":false,"type":"","demo":"account\/create-email-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-token-email.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"phrase":{"type":"boolean","description":"Toggle for security phrase. If enabled, email will be send with a randomly generated phrase and the phrase will also be included in the response. Confirming phrases match increases the security of your authentication flow.","default":false,"x-example":false}},"required":["userId","email"]}}]}},"\/account\/tokens\/magic-url":{"post":{"summary":"Create magic URL token","operationId":"accountCreateMagicURLToken","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Sends the user an email with a secret key for creating a session. If the provided user ID has not been registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [POST \/v1\/account\/sessions\/token](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createSession) endpoint to complete the login process. The link sent to the user's email address is valid for 1 hour. If you are on a mobile device you can leave the URL parameter empty, so that the login completion will be handled by your Appwrite instance by default.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).\n","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createMagicURLToken","weight":15,"cookies":false,"type":"","demo":"account\/create-magic-u-r-l-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-token-magic-url.md","rate-limit":60,"rate-time":3600,"rate-key":["url:{url},email:{param-email}","url:{url},ip:{ip}"],"scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"url":{"type":"string","description":"URL to redirect the user back to your app from the magic URL login. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":"","x-example":"https:\/\/example.com"},"phrase":{"type":"boolean","description":"Toggle for security phrase. If enabled, email will be send with a randomly generated phrase and the phrase will also be included in the response. Confirming phrases match increases the security of your authentication flow.","default":false,"x-example":false}},"required":["userId","email"]}}]}},"\/account\/tokens\/phone":{"post":{"summary":"Create phone token","operationId":"accountCreatePhoneToken","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Sends the user an SMS with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [POST \/v1\/account\/sessions\/token](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createSession) endpoint to complete the login process. The secret sent to the user's phone is valid for 15 minutes.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createPhoneToken","weight":19,"cookies":false,"type":"","demo":"account\/create-phone-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-token-phone.md","rate-limit":10,"rate-time":3600,"rate-key":["url:{url},phone:{param-phone}","url:{url},ip:{ip}"],"scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"}},"required":["userId","phone"]}}]}},"\/account\/verification":{"post":{"summary":"Create email verification","operationId":"accountCreateVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to send a verification message to your user email address to confirm they are the valid owners of that address. Both the **userId** and **secret** arguments will be passed as query parameters to the URL you have provided to be attached to the verification email. The provided URL should redirect the user back to your app and allow you to complete the verification process by verifying both the **userId** and **secret** parameters. Learn more about how to [complete the verification process](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateVerification). The verification link sent to the user's email address is valid for 7 days.\n\nPlease note that in order to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md), the only valid redirect URLs are the ones from domains you have set when adding your platforms in the console interface.\n","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createVerification","weight":38,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"url":{"type":"string","description":"URL to redirect the user back to your app from the verification email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":null,"x-example":"https:\/\/example.com"}},"required":["url"]}}]},"put":{"summary":"Create email verification (confirmation)","operationId":"accountUpdateVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete the user email verification process. Use both the **userId** and **secret** parameters that were attached to your app URL to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"updateVerification","weight":39,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/account\/verification\/phone":{"post":{"summary":"Create phone verification","operationId":"accountCreatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updatePhone) endpoint. Learn more about how to [complete the verification process](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createPhoneVerification","weight":40,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":["url:{url},userId:{userId}","url:{url},ip:{ip}"],"scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]},"put":{"summary":"Create phone verification (confirmation)","operationId":"accountUpdatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"updatePhoneVerification","weight":41,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/avatars\/browsers\/{code}":{"get":{"summary":"Get browser icon","operationId":"avatarsGetBrowser","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"You can use this endpoint to show different browser icons to your users. The code argument receives the browser code as it appears in your user [GET \/account\/sessions](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#getSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getBrowser","weight":54,"cookies":false,"type":"location","demo":"avatars\/get-browser.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-browser.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"code","description":"Browser Code.","required":true,"type":"string","x-example":"aa","enum":["aa","an","ch","ci","cm","cr","ff","sf","mf","ps","oi","om","op","on"],"x-enum-name":"Browser","x-enum-keys":["Avant Browser","Android WebView Beta","Google Chrome","Google Chrome (iOS)","Google Chrome (Mobile)","Chromium","Mozilla Firefox","Safari","Mobile Safari","Microsoft Edge","Microsoft Edge (iOS)","Opera Mini","Opera","Opera (Next)"],"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"}]}},"\/avatars\/credit-cards\/{code}":{"get":{"summary":"Get credit card icon","operationId":"avatarsGetCreditCard","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"The credit card endpoint will return you the icon of the credit card provider you need. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getCreditCard","weight":53,"cookies":false,"type":"location","demo":"avatars\/get-credit-card.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-credit-card.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"code","description":"Credit Card Code. Possible values: amex, argencard, cabal, censosud, diners, discover, elo, hipercard, jcb, mastercard, naranja, targeta-shopping, union-china-pay, visa, mir, maestro.","required":true,"type":"string","x-example":"amex","enum":["amex","argencard","cabal","censosud","diners","discover","elo","hipercard","jcb","mastercard","naranja","targeta-shopping","union-china-pay","visa","mir","maestro"],"x-enum-name":"CreditCard","x-enum-keys":["American Express","Argencard","Cabal","Consosud","Diners Club","Discover","Elo","Hipercard","JCB","Mastercard","Naranja","Tarjeta Shopping","Union China Pay","Visa","MIR","Maestro"],"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"}]}},"\/avatars\/favicon":{"get":{"summary":"Get favicon","operationId":"avatarsGetFavicon","consumes":["application\/json"],"produces":["image\/*"],"tags":["avatars"],"description":"Use this endpoint to fetch the favorite icon (AKA favicon) of any remote website URL.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFavicon","weight":57,"cookies":false,"type":"location","demo":"avatars\/get-favicon.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-favicon.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"url","description":"Website URL which you want to fetch the favicon from.","required":true,"type":"string","format":"url","x-example":"https:\/\/example.com","in":"query"}]}},"\/avatars\/flags\/{code}":{"get":{"summary":"Get country flag","operationId":"avatarsGetFlag","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"You can use this endpoint to show different country flags icons to your users. The code argument receives the 2 letter country code. Use width, height and quality arguments to change the output settings. Country codes follow the [ISO 3166-1](https:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFlag","weight":55,"cookies":false,"type":"location","demo":"avatars\/get-flag.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-flag.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"code","description":"Country Code. ISO Alpha-2 country code format.","required":true,"type":"string","x-example":"af","enum":["af","ao","al","ad","ae","ar","am","ag","au","at","az","bi","be","bj","bf","bd","bg","bh","bs","ba","by","bz","bo","br","bb","bn","bt","bw","cf","ca","ch","cl","cn","ci","cm","cd","cg","co","km","cv","cr","cu","cy","cz","de","dj","dm","dk","do","dz","ec","eg","er","es","ee","et","fi","fj","fr","fm","ga","gb","ge","gh","gn","gm","gw","gq","gr","gd","gt","gy","hn","hr","ht","hu","id","in","ie","ir","iq","is","il","it","jm","jo","jp","kz","ke","kg","kh","ki","kn","kr","kw","la","lb","lr","ly","lc","li","lk","ls","lt","lu","lv","ma","mc","md","mg","mv","mx","mh","mk","ml","mt","mm","me","mn","mz","mr","mu","mw","my","na","ne","ng","ni","nl","no","np","nr","nz","om","pk","pa","pe","ph","pw","pg","pl","kp","pt","py","qa","ro","ru","rw","sa","sd","sn","sg","sb","sl","sv","sm","so","rs","ss","st","sr","sk","si","se","sz","sc","sy","td","tg","th","tj","tm","tl","to","tt","tn","tr","tv","tz","ug","ua","uy","us","uz","va","vc","ve","vn","vu","ws","ye","za","zm","zw"],"x-enum-name":"Flag","x-enum-keys":["Afghanistan","Angola","Albania","Andorra","United Arab Emirates","Argentina","Armenia","Antigua and Barbuda","Australia","Austria","Azerbaijan","Burundi","Belgium","Benin","Burkina Faso","Bangladesh","Bulgaria","Bahrain","Bahamas","Bosnia and Herzegovina","Belarus","Belize","Bolivia","Brazil","Barbados","Brunei Darussalam","Bhutan","Botswana","Central African Republic","Canada","Switzerland","Chile","China","C\u00f4te d'Ivoire","Cameroon","Democratic Republic of the Congo","Republic of the Congo","Colombia","Comoros","Cape Verde","Costa Rica","Cuba","Cyprus","Czech Republic","Germany","Djibouti","Dominica","Denmark","Dominican Republic","Algeria","Ecuador","Egypt","Eritrea","Spain","Estonia","Ethiopia","Finland","Fiji","France","Micronesia (Federated States of)","Gabon","United Kingdom","Georgia","Ghana","Guinea","Gambia","Guinea-Bissau","Equatorial Guinea","Greece","Grenada","Guatemala","Guyana","Honduras","Croatia","Haiti","Hungary","Indonesia","India","Ireland","Iran (Islamic Republic of)","Iraq","Iceland","Israel","Italy","Jamaica","Jordan","Japan","Kazakhstan","Kenya","Kyrgyzstan","Cambodia","Kiribati","Saint Kitts and Nevis","South Korea","Kuwait","Lao People's Democratic Republic","Lebanon","Liberia","Libya","Saint Lucia","Liechtenstein","Sri Lanka","Lesotho","Lithuania","Luxembourg","Latvia","Morocco","Monaco","Moldova","Madagascar","Maldives","Mexico","Marshall Islands","North Macedonia","Mali","Malta","Myanmar","Montenegro","Mongolia","Mozambique","Mauritania","Mauritius","Malawi","Malaysia","Namibia","Niger","Nigeria","Nicaragua","Netherlands","Norway","Nepal","Nauru","New Zealand","Oman","Pakistan","Panama","Peru","Philippines","Palau","Papua New Guinea","Poland","North Korea","Portugal","Paraguay","Qatar","Romania","Russia","Rwanda","Saudi Arabia","Sudan","Senegal","Singapore","Solomon Islands","Sierra Leone","El Salvador","San Marino","Somalia","Serbia","South Sudan","Sao Tome and Principe","Suriname","Slovakia","Slovenia","Sweden","Eswatini","Seychelles","Syria","Chad","Togo","Thailand","Tajikistan","Turkmenistan","Timor-Leste","Tonga","Trinidad and Tobago","Tunisia","Turkey","Tuvalu","Tanzania","Uganda","Ukraine","Uruguay","United States","Uzbekistan","Vatican City","Saint Vincent and the Grenadines","Venezuela","Vietnam","Vanuatu","Samoa","Yemen","South Africa","Zambia","Zimbabwe"],"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"}]}},"\/avatars\/image":{"get":{"summary":"Get image from URL","operationId":"avatarsGetImage","consumes":["application\/json"],"produces":["image\/*"],"tags":["avatars"],"description":"Use this endpoint to fetch a remote image URL and crop it to any image size you want. This endpoint is very useful if you need to crop and display remote images in your app or in case you want to make sure a 3rd party image is properly served using a TLS protocol.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getImage","weight":56,"cookies":false,"type":"location","demo":"avatars\/get-image.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-image.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"url","description":"Image URL which you want to crop.","required":true,"type":"string","format":"url","x-example":"https:\/\/example.com","in":"query"},{"name":"width","description":"Resize preview image width, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get user initials","operationId":"avatarsGetInitials","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getInitials","weight":59,"cookies":false,"type":"location","demo":"avatars\/get-initials.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-initials.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"name","description":"Full Name. When empty, current user name or email will be used. Max length: 128 chars.","required":false,"type":"string","x-example":"[NAME]","default":"","in":"query"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":500,"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":500,"in":"query"},{"name":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"type":"string","default":"","in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR code","operationId":"avatarsGetQR","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getQR","weight":58,"cookies":false,"type":"location","demo":"avatars\/get-q-r.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-qr.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"text","description":"Plain text to be converted to QR code image.","required":true,"type":"string","x-example":"[TEXT]","in":"query"},{"name":"size","description":"QR code size. Pass an integer between 1 to 1000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":1,"default":400,"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"type":"integer","format":"int32","x-example":0,"default":1,"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"type":"boolean","x-example":false,"default":false,"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List documents","operationId":"databasesListDocuments","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","schema":{"$ref":"#\/definitions\/documentList"}}},"x-appwrite":{"method":"listDocuments","weight":103,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"post":{"summary":"Create document","operationId":"databasesCreateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"createDocument","weight":102,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","default":{},"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, only the current user is granted all permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get document","operationId":"databasesGetDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"getDocument","weight":104,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"patch":{"summary":"Update document","operationId":"databasesUpdateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"updateDocument","weight":106,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","default":[],"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete document","operationId":"databasesDeleteDocument","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":107,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List executions","operationId":"functionsListExecutions","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","schema":{"$ref":"#\/definitions\/executionList"}}},"x-appwrite":{"method":"listExecutions","weight":283,"cookies":false,"type":"","demo":"functions\/list-executions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-executions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, responseStatusCode, duration","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create execution","operationId":"functionsCreateExecution","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","schema":{"$ref":"#\/definitions\/execution"}}},"x-appwrite":{"method":"createExecution","weight":282,"cookies":false,"type":"","demo":"functions\/create-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-execution.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"body":{"type":"string","description":"HTTP body of execution. Default value is empty string.","default":"","x-example":"[BODY]"},"async":{"type":"boolean","description":"Execute code in the background. Default value is false.","default":false,"x-example":false},"path":{"type":"string","description":"HTTP path of execution. Path can include query params. Default value is \/","default":"\/","x-example":"[PATH]"},"method":{"type":"string","description":"HTTP method of execution. Default value is GET.","default":"POST","x-example":"GET","enum":["GET","POST","PUT","PATCH","DELETE","OPTIONS"],"x-enum-name":"ExecutionMethod","x-enum-keys":[]},"headers":{"type":"object","description":"HTTP headers of execution. Defaults to empty.","default":[],"x-example":"{}"}}}}]}},"\/functions\/{functionId}\/executions\/{executionId}":{"get":{"summary":"Get execution","operationId":"functionsGetExecution","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a function execution log by its unique ID.","responses":{"200":{"description":"Execution","schema":{"$ref":"#\/definitions\/execution"}}},"x-appwrite":{"method":"getExecution","weight":284,"cookies":false,"type":"","demo":"functions\/get-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-execution.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"executionId","description":"Execution ID.","required":true,"type":"string","x-example":"[EXECUTION_ID]","in":"path"}]}},"\/graphql":{"post":{"summary":"GraphQL endpoint","operationId":"graphqlQuery","consumes":["application\/json"],"produces":["application\/json"],"tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","schema":{"$ref":"#\/definitions\/any"}}},"x-appwrite":{"method":"query","weight":304,"cookies":false,"type":"graphql","demo":"graphql\/query.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"query":{"type":"object","description":"The query or queries to execute.","default":{},"x-example":"{}"}},"required":["query"]}}]}},"\/graphql\/mutation":{"post":{"summary":"GraphQL endpoint","operationId":"graphqlMutation","consumes":["application\/json"],"produces":["application\/json"],"tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","schema":{"$ref":"#\/definitions\/any"}}},"x-appwrite":{"method":"mutation","weight":303,"cookies":false,"type":"graphql","demo":"graphql\/mutation.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"query":{"type":"object","description":"The query or queries to execute.","default":{},"x-example":"{}"}},"required":["query"]}}]}},"\/locale":{"get":{"summary":"Get user locale","operationId":"localeGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"Get the current user location based on IP. Returns an object with user country code, country name, continent name, continent code, ip address and suggested currency. You can use the locale header to get the data in a supported language.\n\n([IP Geolocation by DB-IP](https:\/\/db-ip.com))","responses":{"200":{"description":"Locale","schema":{"$ref":"#\/definitions\/locale"}}},"x-appwrite":{"method":"get","weight":111,"cookies":false,"type":"","demo":"locale\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-locale.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/localed","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/locale\/codes":{"get":{"summary":"List Locale Codes","operationId":"localeListCodes","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all locale codes in [ISO 639-1](https:\/\/en.wikipedia.org\/wiki\/List_of_ISO_639-1_codes).","responses":{"200":{"description":"Locale codes list","schema":{"$ref":"#\/definitions\/localeCodeList"}}},"x-appwrite":{"method":"listCodes","weight":112,"cookies":false,"type":"","demo":"locale\/list-codes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-locale-codes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/localeCode","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/locale\/continents":{"get":{"summary":"List continents","operationId":"localeListContinents","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","schema":{"$ref":"#\/definitions\/continentList"}}},"x-appwrite":{"method":"listContinents","weight":116,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/continents","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List countries","operationId":"localeListCountries","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountries","weight":113,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/countries","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU countries","operationId":"localeListCountriesEU","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountriesEU","weight":114,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/countries\/eu","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List countries phone codes","operationId":"localeListCountriesPhones","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","schema":{"$ref":"#\/definitions\/phoneList"}}},"x-appwrite":{"method":"listCountriesPhones","weight":115,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/countries\/phones","offline-key":"","offline-response-key":"countryCode","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List currencies","operationId":"localeListCurrencies","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","schema":{"$ref":"#\/definitions\/currencyList"}}},"x-appwrite":{"method":"listCurrencies","weight":117,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/currencies","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List languages","operationId":"localeListLanguages","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","schema":{"$ref":"#\/definitions\/languageList"}}},"x-appwrite":{"method":"listLanguages","weight":118,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/languages","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/messaging\/topics\/{topicId}\/subscribers":{"post":{"summary":"Create a subscriber.","operationId":"messagingCreateSubscriber","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Subscriber","schema":{"$ref":"#\/definitions\/subscriber"}}},"x-appwrite":{"method":"createSubscriber","weight":355,"cookies":false,"type":"","demo":"messaging\/create-subscriber.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-subscriber.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.write","platforms":["server","client","console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[],"Session":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID to subscribe to.","required":true,"type":"string","x-example":"[TOPIC_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"subscriberId":{"type":"string","description":"Subscriber ID. Choose a custom Subscriber ID or a new Subscriber ID.","default":null,"x-example":"[SUBSCRIBER_ID]"},"targetId":{"type":"string","description":"Target ID. The target ID to link to the specified Topic ID.","default":null,"x-example":"[TARGET_ID]"}},"required":["subscriberId","targetId"]}}]}},"\/messaging\/topics\/{topicId}\/subscribers\/{subscriberId}":{"delete":{"summary":"Delete a subscriber.","operationId":"messagingDeleteSubscriber","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSubscriber","weight":359,"cookies":false,"type":"","demo":"messaging\/delete-subscriber.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-subscriber.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.write","platforms":["server","client","console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[],"Session":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID subscribed to.","required":true,"type":"string","x-example":"[TOPIC_ID]","in":"path"},{"name":"subscriberId","description":"Subscriber ID.","required":true,"type":"string","x-example":"[SUBSCRIBER_ID]","in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files":{"get":{"summary":"List files","operationId":"storageListFiles","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a list of all the user files. You can use the query params to filter your results.","responses":{"200":{"description":"Files List","schema":{"$ref":"#\/definitions\/fileList"}}},"x-appwrite":{"method":"listFiles","weight":193,"cookies":false,"type":"","demo":"storage\/list-files.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/list-files.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create file","operationId":"storageCreateFile","consumes":["multipart\/form-data"],"produces":["application\/json"],"tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"createFile","weight":192,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","required":true,"x-upload-id":true,"type":"string","x-example":"[FILE_ID]","in":"formData"},{"name":"file","description":"Binary file. Appwrite SDKs provide helpers to handle file input. [Learn about file input](https:\/\/appwrite.io\/docs\/storage#file-input).","required":true,"type":"file","in":"formData"},{"name":"permissions","description":"An array of permission strings. By default, only the current user is granted all permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"x-example":"[\"read(\"any\")\"]","in":"formData"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get file","operationId":"storageGetFile","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"getFile","weight":194,"cookies":false,"type":"","demo":"storage\/get-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID.","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"}]},"put":{"summary":"Update file","operationId":"storageUpdateFile","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Update a file by its unique ID. Only users with write permissions have access to update this resource.","responses":{"200":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"updateFile","weight":198,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File unique ID.","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Name of the file","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission string. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","consumes":["application\/json"],"produces":[],"tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":199,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID.","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/download":{"get":{"summary":"Get file for download","operationId":"storageGetFileDownload","consumes":["application\/json"],"produces":["*\/*"],"tags":["storage"],"description":"Get a file content by its unique ID. The endpoint response return with a 'Content-Disposition: attachment' header that tells the browser to start downloading the file to user downloads directory.","responses":{"200":{"description":"File","schema":{"type":"file"}}},"x-appwrite":{"method":"getFileDownload","weight":196,"cookies":false,"type":"location","demo":"storage\/get-file-download.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-download.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID.","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/preview":{"get":{"summary":"Get file preview","operationId":"storageGetFilePreview","consumes":["application\/json"],"produces":["image\/*"],"tags":["storage"],"description":"Get a file preview image. Currently, this method supports preview for image files (jpg, png, and gif), other supported formats, like pdf, docs, slides, and spreadsheets, will return the file icon image. You can also pass query string arguments for cutting and resizing your preview image. Preview is supported only for image files smaller than 10MB.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFilePreview","weight":195,"cookies":false,"type":"location","demo":"storage\/get-file-preview.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-preview.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"},{"name":"width","description":"Resize preview image width, Pass an integer between 0 to 4000.","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 4000.","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"gravity","description":"Image crop gravity. Can be one of center,top-left,top,top-right,left,right,bottom-left,bottom,bottom-right","required":false,"type":"string","x-example":"center","enum":["center","top-left","top","top-right","left","right","bottom-left","bottom","bottom-right"],"x-enum-name":"ImageGravity","x-enum-keys":[],"default":"center","in":"query"},{"name":"quality","description":"Preview image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"borderWidth","description":"Preview image border in pixels. Pass an integer between 0 to 100. Defaults to 0.","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"borderColor","description":"Preview image border color. Use a valid HEX color, no # is needed for prefix.","required":false,"type":"string","default":"","in":"query"},{"name":"borderRadius","description":"Preview image border radius in pixels. Pass an integer between 0 to 4000.","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"opacity","description":"Preview image opacity. Only works with images having an alpha channel (like png). Pass a number between 0 to 1.","required":false,"type":"number","format":"float","x-example":0,"default":1,"in":"query"},{"name":"rotation","description":"Preview image rotation in degrees. Pass an integer between -360 and 360.","required":false,"type":"integer","format":"int32","x-example":-360,"default":0,"in":"query"},{"name":"background","description":"Preview image background color. Only works with transparent images (png). Use a valid HEX color, no # is needed for prefix.","required":false,"type":"string","default":"","in":"query"},{"name":"output","description":"Output format type (jpeg, jpg, png, gif and webp).","required":false,"type":"string","x-example":"jpg","enum":["jpg","jpeg","gif","png","webp"],"x-enum-name":"ImageFormat","x-enum-keys":[],"default":"","in":"query"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/view":{"get":{"summary":"Get file for view","operationId":"storageGetFileView","consumes":["application\/json"],"produces":["*\/*"],"tags":["storage"],"description":"Get a file content by its unique ID. This endpoint is similar to the download method but returns with no 'Content-Disposition: attachment' header.","responses":{"200":{"description":"File","schema":{"type":"file"}}},"x-appwrite":{"method":"getFileView","weight":197,"cookies":false,"type":"location","demo":"storage\/get-file-view.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-view.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID.","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"}]}},"\/teams":{"get":{"summary":"List teams","operationId":"teamsList","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get a list of all the teams in which the current user is a member. You can use the parameters to filter your results.","responses":{"200":{"description":"Teams List","schema":{"$ref":"#\/definitions\/teamList"}}},"x-appwrite":{"method":"list","weight":203,"cookies":false,"type":"","demo":"teams\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-teams.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total, billingPlan","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create team","operationId":"teamsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"create","weight":202,"cookies":false,"type":"","demo":"teams\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/create-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"teamId":{"type":"string","description":"Team ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[TEAM_ID]"},"name":{"type":"string","description":"Team name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"roles":{"type":"array","description":"Array of strings. Use this param to set the roles in the team for the user who created it. The default role is **owner**. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","default":["owner"],"x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}]}},"\/teams\/{teamId}":{"get":{"summary":"Get team","operationId":"teamsGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"get","weight":204,"cookies":false,"type":"","demo":"teams\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams","offline-key":"{teamId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"}]},"put":{"summary":"Update name","operationId":"teamsUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Update the team's name by its unique ID.","responses":{"200":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"updateName","weight":206,"cookies":false,"type":"","demo":"teams\/update-name.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-name.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams","offline-key":"{teamId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"New team name. Max length: 128 chars.","default":null,"x-example":"[NAME]"}},"required":["name"]}}]},"delete":{"summary":"Delete team","operationId":"teamsDelete","consumes":["application\/json"],"produces":[],"tags":["teams"],"description":"Delete a team using its ID. Only team members with the owner role can delete the team.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":208,"cookies":false,"type":"","demo":"teams\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/delete-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"}]}},"\/teams\/{teamId}\/memberships":{"get":{"summary":"List team memberships","operationId":"teamsListMemberships","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"listMemberships","weight":210,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/memberships","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create team membership","operationId":"teamsCreateMembership","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Invite a new member to join your team. Provide an ID for existing users, or invite unregistered users using an email or phone number. If initiated from a Client SDK, Appwrite will send an email or sms with a link to join the team to the invited user, and an account will be created for them if one doesn't exist. If initiated from a Server SDK, the new member will be added automatically to the team.\n\nYou only need to provide one of a user ID, email, or phone number. Appwrite will prioritize accepting the user ID > email > phone number if you provide more than one of these parameters.\n\nUse the `url` parameter to redirect the user from the invitation email to your app. After the user is redirected, use the [Update Team Membership Status](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/teams#updateMembershipStatus) endpoint to allow the user to accept the invitation to the team. \n\nPlease note that to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) Appwrite will accept the only redirect URLs under the domains you have added as a platform on the Appwrite Console.\n","responses":{"201":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"createMembership","weight":209,"cookies":false,"type":"","demo":"teams\/create-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/create-team-membership.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"email":{"type":"string","description":"Email of the new team member.","default":"","x-example":"email@example.com"},"userId":{"type":"string","description":"ID of the user to be added to a team.","default":"","x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":"","x-example":"+12065550100"},"roles":{"type":"array","description":"Array of strings. Use this param to set the user roles in the team. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":"","x-example":"https:\/\/example.com"},"name":{"type":"string","description":"Name of the new team member. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["roles"]}}]}},"\/teams\/{teamId}\/memberships\/{membershipId}":{"get":{"summary":"Get team membership","operationId":"teamsGetMembership","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get a team member by the membership unique id. All team members have read access for this resource.","responses":{"200":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"getMembership","weight":211,"cookies":false,"type":"","demo":"teams\/get-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-member.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/memberships","offline-key":"{membershipId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"type":"string","x-example":"[MEMBERSHIP_ID]","in":"path"}]},"patch":{"summary":"Update membership","operationId":"teamsUpdateMembership","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Modify the roles of a team member. Only team members with the owner role have access to this endpoint. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions).\n","responses":{"200":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"updateMembership","weight":212,"cookies":false,"type":"","demo":"teams\/update-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"type":"string","x-example":"[MEMBERSHIP_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"roles":{"type":"array","description":"An array of strings. Use this param to set the user's roles in the team. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}}},"required":["roles"]}}]},"delete":{"summary":"Delete team membership","operationId":"teamsDeleteMembership","consumes":["application\/json"],"produces":[],"tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":214,"cookies":false,"type":"","demo":"teams\/delete-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/delete-team-membership.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"type":"string","x-example":"[MEMBERSHIP_ID]","in":"path"}]}},"\/teams\/{teamId}\/memberships\/{membershipId}\/status":{"patch":{"summary":"Update team membership status","operationId":"teamsUpdateMembershipStatus","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Use this endpoint to allow a user to accept an invitation to join a team after being redirected back to your app from the invitation email received by the user.\n\nIf the request is successful, a session for the user is automatically created.\n","responses":{"200":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"updateMembershipStatus","weight":213,"cookies":false,"type":"","demo":"teams\/update-membership-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"public","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"type":"string","x-example":"[MEMBERSHIP_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Secret key.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/teams\/{teamId}\/prefs":{"get":{"summary":"Get team preferences","operationId":"teamsGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get the team's shared preferences by its unique ID. If a preference doesn't need to be shared by all team members, prefer storing them in [user preferences](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#getPrefs).","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":205,"cookies":false,"type":"","demo":"teams\/get-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/prefs","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"}]},"put":{"summary":"Update preferences","operationId":"teamsUpdatePrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Update the team's preferences by its unique ID. The object you pass is stored as is and replaces any previous value. The maximum allowed prefs size is 64kB and throws an error if exceeded.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"updatePrefs","weight":207,"cookies":false,"type":"","demo":"teams\/update-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/prefs","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"prefs":{"type":"object","description":"Prefs key-value JSON object.","default":{},"x-example":"{}"}},"required":["prefs"]}}]}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"project","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]},{"name":"proxy","description":"The Proxy Service allows you to configure actions for your domains beyond DNS configuration.","x-globalAttributes":[]},{"name":"graphql","description":"The GraphQL API allows you to query and mutate your Appwrite server using GraphQL.","x-globalAttributes":[]},{"name":"console","description":"The Console service allows you to interact with console relevant informations.","x-globalAttributes":[]},{"name":"migrations","description":"The Migrations service allows you to migrate third-party data to your Appwrite project.","x-globalAttributes":[]},{"name":"messaging","description":"The Messaging service allows you to send messages to any provider type (SMTP, push notification, SMS, etc.).","x-globalAttributes":[]}],"definitions":{"any":{"description":"Any","type":"object","additionalProperties":true},"documentList":{"description":"Documents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of documents documents that matched your query.","x-example":5,"format":"int32"},"documents":{"type":"array","description":"List of documents.","items":{"type":"object","$ref":"#\/definitions\/document"},"x-example":""}},"required":["total","documents"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of sessions documents that matched your query.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"type":"object","$ref":"#\/definitions\/session"},"x-example":""}},"required":["total","sessions"]},"identityList":{"description":"Identities List","type":"object","properties":{"total":{"type":"integer","description":"Total number of identities documents that matched your query.","x-example":5,"format":"int32"},"identities":{"type":"array","description":"List of identities.","items":{"type":"object","$ref":"#\/definitions\/identity"},"x-example":""}},"required":["total","identities"]},"logList":{"description":"Logs List","type":"object","properties":{"total":{"type":"integer","description":"Total number of logs documents that matched your query.","x-example":5,"format":"int32"},"logs":{"type":"array","description":"List of logs.","items":{"type":"object","$ref":"#\/definitions\/log"},"x-example":""}},"required":["total","logs"]},"fileList":{"description":"Files List","type":"object","properties":{"total":{"type":"integer","description":"Total number of files documents that matched your query.","x-example":5,"format":"int32"},"files":{"type":"array","description":"List of files.","items":{"type":"object","$ref":"#\/definitions\/file"},"x-example":""}},"required":["total","files"]},"teamList":{"description":"Teams List","type":"object","properties":{"total":{"type":"integer","description":"Total number of teams documents that matched your query.","x-example":5,"format":"int32"},"teams":{"type":"array","description":"List of teams.","items":{"type":"object","$ref":"#\/definitions\/team"},"x-example":""}},"required":["total","teams"]},"membershipList":{"description":"Memberships List","type":"object","properties":{"total":{"type":"integer","description":"Total number of memberships documents that matched your query.","x-example":5,"format":"int32"},"memberships":{"type":"array","description":"List of memberships.","items":{"type":"object","$ref":"#\/definitions\/membership"},"x-example":""}},"required":["total","memberships"]},"executionList":{"description":"Executions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of executions documents that matched your query.","x-example":5,"format":"int32"},"executions":{"type":"array","description":"List of executions.","items":{"type":"object","$ref":"#\/definitions\/execution"},"x-example":""}},"required":["total","executions"]},"countryList":{"description":"Countries List","type":"object","properties":{"total":{"type":"integer","description":"Total number of countries documents that matched your query.","x-example":5,"format":"int32"},"countries":{"type":"array","description":"List of countries.","items":{"type":"object","$ref":"#\/definitions\/country"},"x-example":""}},"required":["total","countries"]},"continentList":{"description":"Continents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of continents documents that matched your query.","x-example":5,"format":"int32"},"continents":{"type":"array","description":"List of continents.","items":{"type":"object","$ref":"#\/definitions\/continent"},"x-example":""}},"required":["total","continents"]},"languageList":{"description":"Languages List","type":"object","properties":{"total":{"type":"integer","description":"Total number of languages documents that matched your query.","x-example":5,"format":"int32"},"languages":{"type":"array","description":"List of languages.","items":{"type":"object","$ref":"#\/definitions\/language"},"x-example":""}},"required":["total","languages"]},"currencyList":{"description":"Currencies List","type":"object","properties":{"total":{"type":"integer","description":"Total number of currencies documents that matched your query.","x-example":5,"format":"int32"},"currencies":{"type":"array","description":"List of currencies.","items":{"type":"object","$ref":"#\/definitions\/currency"},"x-example":""}},"required":["total","currencies"]},"phoneList":{"description":"Phones List","type":"object","properties":{"total":{"type":"integer","description":"Total number of phones documents that matched your query.","x-example":5,"format":"int32"},"phones":{"type":"array","description":"List of phones.","items":{"type":"object","$ref":"#\/definitions\/phone"},"x-example":""}},"required":["total","phones"]},"localeCodeList":{"description":"Locale codes list","type":"object","properties":{"total":{"type":"integer","description":"Total number of localeCodes documents that matched your query.","x-example":5,"format":"int32"},"localeCodes":{"type":"array","description":"List of localeCodes.","items":{"type":"object","$ref":"#\/definitions\/localeCode"},"x-example":""}},"required":["total","localeCodes"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"user":{"description":"User","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"password":{"type":"string","description":"Hashed user password.","x-example":"$argon2id$v=19$m=2048,t=4,p=3$aUZjLnliVWRINmFNTWMudg$5S+x+7uA31xFnrHFT47yFwcJeaP0w92L\/4LdgrVRXxE","x-nullable":true},"hash":{"type":"string","description":"Password hashing algorithm.","x-example":"argon2","x-nullable":true},"hashOptions":{"type":"object","description":"Password hashing algorithm configuration.","x-example":{},"items":{"x-oneOf":[{"$ref":"#\/definitions\/algoArgon2"},{"$ref":"#\/definitions\/algoScrypt"},{"$ref":"#\/definitions\/algoScryptModified"},{"$ref":"#\/definitions\/algoBcrypt"},{"$ref":"#\/definitions\/algoPhpass"},{"$ref":"#\/definitions\/algoSha"},{"$ref":"#\/definitions\/algoMd5"}]},"x-nullable":true},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"labels":{"type":"array","description":"Labels for the user.","items":{"type":"string"},"x-example":["vip"]},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"mfa":{"type":"boolean","description":"Multi factor authentication status.","x-example":true},"totp":{"type":"boolean","description":"TOTP status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"type":"object","$ref":"#\/definitions\/preferences"}},"targets":{"type":"array","description":"A user-owned message receiver. A single user may have multiple e.g. emails, phones, and a browser. Each target is registered with a single provider.","items":{"type":"object","$ref":"#\/definitions\/target"},"x-example":[]},"accessedAt":{"type":"string","description":"Most recent access date in ISO 8601 format. This attribute is only updated again after 24 hours.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","$updatedAt","name","registration","status","labels","passwordUpdate","email","phone","emailVerification","phoneVerification","mfa","totp","prefs","targets","accessedAt"]},"algoMd5":{"description":"AlgoMD5","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"md5"}},"required":["type"]},"algoSha":{"description":"AlgoSHA","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"sha"}},"required":["type"]},"algoPhpass":{"description":"AlgoPHPass","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"phpass"}},"required":["type"]},"algoBcrypt":{"description":"AlgoBcrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"bcrypt"}},"required":["type"]},"algoScrypt":{"description":"AlgoScrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scrypt"},"costCpu":{"type":"integer","description":"CPU complexity of computed hash.","x-example":8,"format":"int32"},"costMemory":{"type":"integer","description":"Memory complexity of computed hash.","x-example":14,"format":"int32"},"costParallel":{"type":"integer","description":"Parallelization of computed hash.","x-example":1,"format":"int32"},"length":{"type":"integer","description":"Length used to compute hash.","x-example":64,"format":"int32"}},"required":["type","costCpu","costMemory","costParallel","length"]},"algoScryptModified":{"description":"AlgoScryptModified","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scryptMod"},"salt":{"type":"string","description":"Salt used to compute hash.","x-example":"UxLMreBr6tYyjQ=="},"saltSeparator":{"type":"string","description":"Separator used to compute hash.","x-example":"Bw=="},"signerKey":{"type":"string","description":"Key used to compute hash.","x-example":"XyEKE9RcTDeLEsL\/RjwPDBv\/RqDl8fb3gpYEOQaPihbxf1ZAtSOHCjuAAa7Q3oHpCYhXSN9tizHgVOwn6krflQ=="}},"required":["type","salt","saltSeparator","signerKey"]},"algoArgon2":{"description":"AlgoArgon2","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"argon2"},"memoryCost":{"type":"integer","description":"Memory used to compute hash.","x-example":65536,"format":"int32"},"timeCost":{"type":"integer","description":"Amount of time consumed to compute hash","x-example":4,"format":"int32"},"threads":{"type":"integer","description":"Number of threads used to compute hash.","x-example":3,"format":"int32"}},"required":["type","memoryCost","timeCost","threads"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true},"factors":{"type":"array","description":"Returns a list of active session factors.","items":{"type":"string"},"x-example":["email"]},"secret":{"type":"string","description":"Secret used to authenticate the user. Only included if the request was made with an API key","x-example":"5e5bb8c16897e"}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current","factors","secret"]},"identity":{"description":"Identity","type":"object","properties":{"$id":{"type":"string","description":"Identity ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Identity creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Identity update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"provider":{"type":"string","description":"Identity Provider.","x-example":"email"},"providerUid":{"type":"string","description":"ID of the User in the Identity Provider.","x-example":"5e5bb8c16897e"},"providerEmail":{"type":"string","description":"Email of the User in the Identity Provider.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Identity Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Identity Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"}},"required":["$id","$createdAt","$updatedAt","userId","provider","providerUid","providerEmail","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"phrase":{"type":"string","description":"Security phrase of a token. Empty if security phrase was not requested when creating a token. It includes randomly generated phrase which is also sent in the external resource such as email.","x-example":"Golden Fox"}},"required":["$id","$createdAt","userId","secret","expire","phrase"]},"jwt":{"description":"JWT","type":"object","properties":{"jwt":{"type":"string","description":"JWT encoded string.","x-example":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c"}},"required":["jwt"]},"locale":{"description":"Locale","type":"object","properties":{"ip":{"type":"string","description":"User IP address.","x-example":"127.0.0.1"},"countryCode":{"type":"string","description":"Country code in [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) two-character format","x-example":"US"},"country":{"type":"string","description":"Country name. This field support localization.","x-example":"United States"},"continentCode":{"type":"string","description":"Continent code. A two character continent code \"AF\" for Africa, \"AN\" for Antarctica, \"AS\" for Asia, \"EU\" for Europe, \"NA\" for North America, \"OC\" for Oceania, and \"SA\" for South America.","x-example":"NA"},"continent":{"type":"string","description":"Continent name. This field support localization.","x-example":"North America"},"eu":{"type":"boolean","description":"True if country is part of the European Union.","x-example":false},"currency":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format","x-example":"USD"}},"required":["ip","countryCode","country","continentCode","continent","eu","currency"]},"localeCode":{"description":"LocaleCode","type":"object","properties":{"code":{"type":"string","description":"Locale codes in [ISO 639-1](https:\/\/en.wikipedia.org\/wiki\/List_of_ISO_639-1_codes)","x-example":"en-us"},"name":{"type":"string","description":"Locale name","x-example":"US"}},"required":["code","name"]},"file":{"description":"File","type":"object","properties":{"$id":{"type":"string","description":"File ID.","x-example":"5e5ea5c16897e"},"bucketId":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"},"prefs":{"type":"object","description":"Team preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"type":"object","$ref":"#\/definitions\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","total","prefs"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"mfa":{"type":"boolean","description":"Multi factor authentication status, true if the user has MFA enabled or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":["owner"]}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","mfa","roles"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"requestMethod":{"type":"string","description":"HTTP request method type.","x-example":"GET"},"requestPath":{"type":"string","description":"HTTP request path and query.","x-example":"\/articles?id=5"},"requestHeaders":{"type":"array","description":"HTTP response headers as a key-value object. This will return only whitelisted headers. All headers are returned if execution is created as synchronous.","items":{"type":"object","$ref":"#\/definitions\/headers"},"x-example":[{"Content-Type":"application\/json"}]},"responseStatusCode":{"type":"integer","description":"HTTP response status code.","x-example":200,"format":"int32"},"responseBody":{"type":"string","description":"HTTP response body. This will return empty unless execution is created as synchronous.","x-example":"Developers are awesome."},"responseHeaders":{"type":"array","description":"HTTP response headers as a key-value object. This will return only whitelisted headers. All headers are returned if execution is created as synchronous.","items":{"type":"object","$ref":"#\/definitions\/headers"},"x-example":[{"Content-Type":"application\/json"}]},"logs":{"type":"string","description":"Function logs. Includes the last 4,000 characters. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"errors":{"type":"string","description":"Function errors. Includes the last 4,000 characters. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"Function execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","requestMethod","requestPath","requestHeaders","responseStatusCode","responseBody","responseHeaders","logs","errors","duration"]},"country":{"description":"Country","type":"object","properties":{"name":{"type":"string","description":"Country name.","x-example":"United States"},"code":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"}},"required":["name","code"]},"continent":{"description":"Continent","type":"object","properties":{"name":{"type":"string","description":"Continent name.","x-example":"Europe"},"code":{"type":"string","description":"Continent two letter code.","x-example":"EU"}},"required":["name","code"]},"language":{"description":"Language","type":"object","properties":{"name":{"type":"string","description":"Language name.","x-example":"Italian"},"code":{"type":"string","description":"Language two-character ISO 639-1 codes.","x-example":"it"},"nativeName":{"type":"string","description":"Language native name.","x-example":"Italiano"}},"required":["name","code","nativeName"]},"currency":{"description":"Currency","type":"object","properties":{"symbol":{"type":"string","description":"Currency symbol.","x-example":"$"},"name":{"type":"string","description":"Currency name.","x-example":"US dollar"},"symbolNative":{"type":"string","description":"Currency native symbol.","x-example":"$"},"decimalDigits":{"type":"integer","description":"Number of decimal digits.","x-example":2,"format":"int32"},"rounding":{"type":"number","description":"Currency digit rounding.","x-example":0,"format":"double"},"code":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format.","x-example":"USD"},"namePlural":{"type":"string","description":"Currency plural name","x-example":"US dollars"}},"required":["symbol","name","symbolNative","decimalDigits","rounding","code","namePlural"]},"phone":{"description":"Phone","type":"object","properties":{"code":{"type":"string","description":"Phone code.","x-example":"+1"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["code","countryCode","countryName"]},"headers":{"description":"Headers","type":"object","properties":{"name":{"type":"string","description":"Header name.","x-example":"Content-Type"},"value":{"type":"string","description":"Header value.","x-example":"application\/json"}},"required":["name","value"]},"mfaChallenge":{"description":"MFA Challenge","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","userId","expire"]},"mfaType":{"description":"MFAType","type":"object","properties":{"backups":{"type":"array","description":"Backup codes.","items":{"type":"string"},"x-example":true},"secret":{"type":"string","description":"Secret token used for TOTP factor.","x-example":true},"uri":{"type":"string","description":"URI for authenticator apps.","x-example":true}},"required":["backups","secret","uri"]},"mfaFactors":{"description":"MFAFactors","type":"object","properties":{"totp":{"type":"boolean","description":"TOTP","x-example":true},"phone":{"type":"boolean","description":"Phone","x-example":true},"email":{"type":"boolean","description":"Email","x-example":true}},"required":["totp","phone","email"]},"subscriber":{"description":"Subscriber","type":"object","properties":{"$id":{"type":"string","description":"Subscriber ID.","x-example":"259125845563242502"},"$createdAt":{"type":"string","description":"Subscriber creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Subscriber update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"targetId":{"type":"string","description":"Target ID.","x-example":"259125845563242502"},"target":{"type":"object","description":"Target.","x-example":{"$id":"259125845563242502","$createdAt":"2020-10-15T06:38:00.000+00:00","$updatedAt":"2020-10-15T06:38:00.000+00:00","providerType":"email","providerId":"259125845563242502","name":"ageon-app-email","identifier":"random-mail@email.org","userId":"5e5ea5c16897e"},"items":{"type":"object","$ref":"#\/definitions\/target"}},"userId":{"type":"string","description":"Topic ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User Name.","x-example":"Aegon Targaryen"},"topicId":{"type":"string","description":"Topic ID.","x-example":"259125845563242502"},"providerType":{"type":"string","description":"The target provider type. Can be one of the following: `email`, `sms` or `push`.","x-example":"email"}},"required":["$id","$createdAt","$updatedAt","targetId","target","userId","userName","topicId","providerType"]},"target":{"description":"Target","type":"object","properties":{"$id":{"type":"string","description":"Target ID.","x-example":"259125845563242502"},"$createdAt":{"type":"string","description":"Target creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Target update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Target Name.","x-example":"Aegon apple token"},"userId":{"type":"string","description":"User ID.","x-example":"259125845563242502"},"providerId":{"type":"string","description":"Provider ID.","x-example":"259125845563242502","x-nullable":true},"providerType":{"type":"string","description":"The target provider type. Can be one of the following: `email`, `sms` or `push`.","x-example":"email"},"identifier":{"type":"string","description":"The target identifier.","x-example":"token"}},"required":["$id","$createdAt","$updatedAt","name","userId","providerType","identifier"]}},"externalDocs":{"description":"Full API docs, specs and tutorials","url":"https:\/\/appwrite.io\/docs"}} \ No newline at end of file diff --git a/app/config/specs/swagger2-latest-console.json b/app/config/specs/swagger2-latest-console.json index 594fae1411..9a31bcc07a 100644 --- a/app/config/specs/swagger2-latest-console.json +++ b/app/config/specs/swagger2-latest-console.json @@ -1 +1 @@ -{"swagger":"2.0","info":{"version":"1.4.13","title":"Appwrite","description":"Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https:\/\/appwrite.io\/docs](https:\/\/appwrite.io\/docs)","termsOfService":"https:\/\/appwrite.io\/policy\/terms","contact":{"name":"Appwrite Team","url":"https:\/\/appwrite.io\/support","email":"team@appwrite.io"},"license":{"name":"BSD-3-Clause","url":"https:\/\/raw.githubusercontent.com\/appwrite\/appwrite\/master\/LICENSE"}},"host":"cloud.appwrite.io","basePath":"\/v1","schemes":["https"],"consumes":["application\/json","multipart\/form-data"],"produces":["application\/json"],"securityDefinitions":{"Project":{"type":"apiKey","name":"X-Appwrite-Project","description":"Your project ID","in":"header","x-appwrite":{"demo":"5df5acd0d48c2"}},"Key":{"type":"apiKey","name":"X-Appwrite-Key","description":"Your secret API key","in":"header","x-appwrite":{"demo":"919c2d18fb5d4...a2ae413da83346ad2"}},"JWT":{"type":"apiKey","name":"X-Appwrite-JWT","description":"Your secret JSON Web Token","in":"header","x-appwrite":{"demo":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ..."}},"Locale":{"type":"apiKey","name":"X-Appwrite-Locale","description":"","in":"header","x-appwrite":{"demo":"en"}},"Mode":{"type":"apiKey","name":"X-Appwrite-Mode","description":"","in":"header","x-appwrite":{"demo":""}}},"paths":{"\/account":{"get":{"summary":"Get account","operationId":"accountGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get the currently logged in user.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"get","weight":22,"cookies":false,"type":"","demo":"account\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"post":{"summary":"Create account","operationId":"accountCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to allow a new user to register a new account in your project. After the user registration completes successfully, you can use the [\/account\/verfication](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createVerification) route to start verifying the user email address. To allow the new user to login to their new account, you need to create a new [account session](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createEmailSession).","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"create","weight":7,"cookies":false,"type":"","demo":"account\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"New user password. Must be between 8 and 256 chars.","default":null,"x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]},"delete":{"summary":"Delete account","operationId":"accountDelete","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Delete the currently logged in user.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":49,"cookies":false,"type":"","demo":"account\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/email":{"patch":{"summary":"Update email","operationId":"accountUpdateEmail","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateEmail","weight":29,"cookies":false,"type":"","demo":"account\/update-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["email","password"]}}]}},"\/account\/identities":{"get":{"summary":"List Identities","operationId":"accountListIdentities","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get the list of identities for the currently logged in user.","responses":{"200":{"description":"Identities List","schema":{"$ref":"#\/definitions\/identityList"}}},"x-appwrite":{"method":"listIdentities","weight":13,"cookies":false,"type":"","demo":"account\/list-identities.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-identities.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/identities","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, provider, providerUid, providerEmail, providerAccessTokenExpiry","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/identities\/{identityId}":{"delete":{"summary":"Delete identity","operationId":"accountDeleteIdentity","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Delete an identity by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIdentity","weight":14,"cookies":false,"type":"","demo":"account\/delete-identity.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-identity.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"identityId","description":"Identity ID.","required":true,"type":"string","x-example":"[IDENTITY_ID]","in":"path"}]}},"\/account\/jwt":{"post":{"summary":"Create JWT","operationId":"accountCreateJWT","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to create a JSON Web Token. You can use the resulting JWT to authenticate on behalf of the current user when working with the Appwrite server-side API and SDKs. The JWT secret is valid for 15 minutes from its creation and will be invalid if the user will logout in that time frame.","responses":{"201":{"description":"JWT","schema":{"$ref":"#\/definitions\/jwt"}}},"x-appwrite":{"method":"createJWT","weight":21,"cookies":false,"type":"","demo":"account\/create-j-w-t.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-jwt.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"List logs","operationId":"accountListLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get the list of latest security activity logs for the currently logged in user. Each log returns user IP address, location and date and time of log.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listLogs","weight":25,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/mfa":{"patch":{"summary":"Update MFA","operationId":"accountUpdateMFA","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateMFA","weight":42,"cookies":false,"type":"","demo":"account\/update-m-f-a.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-mfa.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"mfa":{"type":"boolean","description":"Enable or disable MFA.","default":null,"x-example":false}},"required":["mfa"]}}]}},"\/account\/mfa\/challenge":{"post":{"summary":"Create 2FA Challenge","operationId":"accountCreate2FAChallenge","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"201":{"description":"MFA Challenge","schema":{"$ref":"#\/definitions\/mfaChallenge"}}},"x-appwrite":{"method":"create2FAChallenge","weight":47,"cookies":false,"type":"","demo":"account\/create2f-a-challenge.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-2fa-challenge.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},token:{param-token}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"factor":{"type":"string","description":"Factor used for verification.","default":null,"x-example":"totp","enum":["totp","phone","email"],"x-enum-name":null,"x-enum-keys":[]}},"required":["factor"]}}]},"put":{"summary":"Create MFA Challenge (confirmation)","operationId":"accountUpdateChallenge","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"updateChallenge","weight":48,"cookies":false,"type":"","demo":"account\/update-challenge.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-challenge.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"challengeId":{"type":"string","description":"ID of the challenge.","default":null,"x-example":"[CHALLENGE_ID]"},"otp":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[OTP]"}},"required":["challengeId","otp"]}}]}},"\/account\/mfa\/factors":{"get":{"summary":"List Factors","operationId":"accountListFactors","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"200":{"description":"MFAFactors","schema":{"$ref":"#\/definitions\/mfaFactors"}}},"x-appwrite":{"method":"listFactors","weight":43,"cookies":false,"type":"","demo":"account\/list-factors.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-factors.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/account\/mfa\/{type}":{"post":{"summary":"Add Authenticator","operationId":"accountAddAuthenticator","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"200":{"description":"MFAType","schema":{"$ref":"#\/definitions\/mfaType"}}},"x-appwrite":{"method":"addAuthenticator","weight":44,"cookies":false,"type":"","demo":"account\/add-authenticator.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/add-authenticator.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"type","description":"Type of authenticator.","required":true,"type":"string","x-example":"totp","enum":["totp"],"x-enum-name":null,"x-enum-keys":[],"in":"path"}]},"put":{"summary":"Verify Authenticator","operationId":"accountVerifyAuthenticator","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"verifyAuthenticator","weight":45,"cookies":false,"type":"","demo":"account\/verify-authenticator.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/verify-authenticator.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"type","description":"Type of authenticator.","required":true,"type":"string","x-example":"totp","enum":["totp"],"x-enum-name":null,"x-enum-keys":[],"in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"otp":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[OTP]"}},"required":["otp"]}}]},"delete":{"summary":"Delete Authenticator","operationId":"accountDeleteAuthenticator","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"deleteAuthenticator","weight":46,"cookies":false,"type":"","demo":"account\/delete-authenticator.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-mfa.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"type","description":"Type of authenticator.","required":true,"type":"string","x-example":"totp","enum":["totp"],"x-enum-name":null,"x-enum-keys":[],"in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"otp":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[OTP]"}},"required":["otp"]}}]}},"\/account\/name":{"patch":{"summary":"Update name","operationId":"accountUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateName","weight":27,"cookies":false,"type":"","demo":"account\/update-name.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-name.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"User name. Max length: 128 chars.","default":null,"x-example":"[NAME]"}},"required":["name"]}}]}},"\/account\/password":{"patch":{"summary":"Update password","operationId":"accountUpdatePassword","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePassword","weight":28,"cookies":false,"type":"","demo":"account\/update-password.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-password.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"password":{"type":"string","description":"New user password. Must be at least 8 chars.","default":null,"x-example":null},"oldPassword":{"type":"string","description":"Current user password. Must be at least 8 chars.","default":"","x-example":"password"}},"required":["password"]}}]}},"\/account\/phone":{"patch":{"summary":"Update phone","operationId":"accountUpdatePhone","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createPhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePhone","weight":30,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["phone","password"]}}]}},"\/account\/prefs":{"get":{"summary":"Get account preferences","operationId":"accountGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get the preferences as a key-value object for the currently logged in user.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":23,"cookies":false,"type":"","demo":"account\/get-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/prefs","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"patch":{"summary":"Update preferences","operationId":"accountUpdatePrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account preferences. The object you pass is stored as is, and replaces any previous value. The maximum allowed prefs size is 64kB and throws error if exceeded.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePrefs","weight":31,"cookies":false,"type":"","demo":"account\/update-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/prefs","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"prefs":{"type":"object","description":"Prefs key-value JSON object.","default":{},"x-example":"{}"}},"required":["prefs"]}}]}},"\/account\/recovery":{"post":{"summary":"Create password recovery","operationId":"accountCreateRecovery","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Sends the user an email with a temporary secret key for password reset. When the user clicks the confirmation link he is redirected back to your app password reset URL with the secret key and email address values attached to the URL query string. Use the query string params to submit a request to the [PUT \/account\/recovery](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateRecovery) endpoint to complete the process. The verification link sent to the user's email address is valid for 1 hour.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createRecovery","weight":36,"cookies":false,"type":"","demo":"account\/create-recovery.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-recovery.md","rate-limit":10,"rate-time":3600,"rate-key":["url:{url},email:{param-email}","url:{url},ip:{ip}"],"scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"url":{"type":"string","description":"URL to redirect the user back to your app from the recovery email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":null,"x-example":"https:\/\/example.com"}},"required":["email","url"]}}]},"put":{"summary":"Create password recovery (confirmation)","operationId":"accountUpdateRecovery","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete the user account password reset. Both the **userId** and **secret** arguments will be passed as query parameters to the redirect URL you have provided when sending your request to the [POST \/account\/recovery](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createRecovery) endpoint.\n\nPlease note that in order to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) the only valid redirect URLs are the ones from domains you have set when adding your platforms in the console interface.","responses":{"200":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"updateRecovery","weight":37,"cookies":false,"type":"","demo":"account\/update-recovery.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-recovery.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid reset token.","default":null,"x-example":"[SECRET]"},"password":{"type":"string","description":"New user password. Must be between 8 and 256 chars.","default":null,"x-example":null}},"required":["userId","secret","password"]}}]}},"\/account\/sessions":{"get":{"summary":"List sessions","operationId":"accountListSessions","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get the list of active sessions across different devices for the currently logged in user.","responses":{"200":{"description":"Sessions List","schema":{"$ref":"#\/definitions\/sessionList"}}},"x-appwrite":{"method":"listSessions","weight":24,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/sessions","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete sessions","operationId":"accountDeleteSessions","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":35,"cookies":false,"type":"","demo":"account\/delete-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-sessions.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/account\/sessions\/anonymous":{"post":{"summary":"Create anonymous session","operationId":"accountCreateAnonymousSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to allow a new user to register an anonymous account in your project. This route will also create a new session for the user. To allow the new user to convert an anonymous account to a normal account, you need to update its [email and password](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateEmail) or create an [OAuth2 session](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#CreateOAuth2Session).","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"createAnonymousSession","weight":20,"cookies":false,"type":"","demo":"account\/create-anonymous-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-anonymous.md","rate-limit":50,"rate-time":3600,"rate-key":"ip:{ip}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/sessions\/email":{"post":{"summary":"Create email password session","operationId":"accountCreateEmailPasswordSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Allow the user to login into their account by providing a valid email and password combination. This route will create a new session for the user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"createEmailPasswordSession","weight":8,"cookies":false,"type":"","demo":"account\/create-email-password-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-email-password.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["email","password"]}}]}},"\/account\/sessions\/magic-url":{"put":{"summary":"Create session (deprecated)","operationId":"accountUpdateMagicURLSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to create a session from token. Provide the **userId** and **secret** parameters from the successful response of authentication flows initiated by token creation. For example, magic URL and phone login.","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateMagicURLSession","weight":17,"cookies":false,"type":"","demo":"account\/update-magic-u-r-l-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session.md","rate-limit":10,"rate-time":3600,"rate-key":"ip:{ip},userId:{param-userId}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/account\/sessions\/oauth2\/{provider}":{"get":{"summary":"Create OAuth2 session","operationId":"accountCreateOAuth2Session","consumes":["application\/json"],"produces":["text\/html"],"tags":["account"],"description":"Allow the user to login to their account using the OAuth2 provider of their choice. Each OAuth2 provider should be enabled from the Appwrite console first. Use the success and failure arguments to provide a redirect URL's back to your app when login is completed.\n\nIf there is already an active session, the new session will be attached to the logged-in account. If there are no active sessions, the server will attempt to look for a user with the same email address as the email received from the OAuth2 provider and attach the new session to the existing user. If no matching user is found - the server will create a new user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).\n","responses":{"301":{"description":"No content"}},"x-appwrite":{"method":"createOAuth2Session","weight":9,"cookies":false,"type":"webAuth","demo":"account\/create-o-auth2session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-oauth2.md","rate-limit":50,"rate-time":3600,"rate-key":"ip:{ip}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"provider","description":"OAuth2 Provider. Currently, supported providers are: amazon, apple, auth0, authentik, autodesk, bitbucket, bitly, box, dailymotion, discord, disqus, dropbox, etsy, facebook, github, gitlab, google, linkedin, microsoft, notion, oidc, okta, paypal, paypalSandbox, podio, salesforce, slack, spotify, stripe, tradeshift, tradeshiftBox, twitch, wordpress, yahoo, yammer, yandex, zoho, zoom.","required":true,"type":"string","x-example":"amazon","enum":["amazon","apple","auth0","authentik","autodesk","bitbucket","bitly","box","dailymotion","discord","disqus","dropbox","etsy","facebook","github","gitlab","google","linkedin","microsoft","notion","oidc","okta","paypal","paypalSandbox","podio","salesforce","slack","spotify","stripe","tradeshift","tradeshiftBox","twitch","wordpress","yahoo","yammer","yandex","zoho","zoom","mock"],"x-enum-name":"OAuthProvider","x-enum-keys":[],"in":"path"},{"name":"success","description":"URL to redirect back to your app after a successful login attempt. Only URLs from hostnames in your project's platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","required":false,"type":"string","format":"url","x-example":"https:\/\/example.com","default":"","in":"query"},{"name":"failure","description":"URL to redirect back to your app after a failed login attempt. Only URLs from hostnames in your project's platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","required":false,"type":"string","format":"url","x-example":"https:\/\/example.com","default":"","in":"query"},{"name":"token","description":"Include token credentials in the final redirect, useful for server-side integrations, or when cookies are not available.","required":false,"type":"boolean","x-example":false,"default":false,"in":"query"},{"name":"scopes","description":"A list of custom OAuth2 scopes. Check each provider internal docs for a list of supported scopes. Maximum of 100 scopes are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/sessions\/token":{"post":{"summary":"Create session","operationId":"accountCreateSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to create a session from token. Provide the **userId** and **secret** parameters from the successful response of authentication flows initiated by token creation. For example, magic URL and phone login.","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"createSession","weight":18,"cookies":false,"type":"","demo":"account\/create-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session.md","rate-limit":10,"rate-time":3600,"rate-key":"ip:{ip},userId:{param-userId}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Secret of a token generated by login methods. For example, the `createMagicURLToken` or `createPhoneToken` methods.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/account\/sessions\/{sessionId}":{"get":{"summary":"Get session","operationId":"accountGetSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to get a logged in user's session using a Session ID. Inputting 'current' will return the current session being used.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"getSession","weight":26,"cookies":false,"type":"","demo":"account\/get-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-session.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/sessions","offline-key":"{sessionId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to get the current device session.","required":true,"type":"string","x-example":"[SESSION_ID]","in":"path"}]},"patch":{"summary":"Update (or renew) a session","operationId":"accountUpdateSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Extend session's expiry to increase it's lifespan. Extending a session is useful when session length is short such as 5 minutes.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateSession","weight":34,"cookies":false,"type":"","demo":"account\/update-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-session.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to update the current device session.","required":true,"type":"string","x-example":"[SESSION_ID]","in":"path"}]},"delete":{"summary":"Delete session","operationId":"accountDeleteSession","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Logout the user. Use 'current' as the session ID to logout on this device, use a session ID to logout on another device. If you're looking to logout the user on all devices, use [Delete Sessions](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#deleteSessions) instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSession","weight":33,"cookies":false,"type":"","demo":"account\/delete-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-session.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to delete the current device session.","required":true,"type":"string","x-example":"[SESSION_ID]","in":"path"}]}},"\/account\/status":{"patch":{"summary":"Update status","operationId":"accountUpdateStatus","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateStatus","weight":32,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/account\/targets\/push":{"post":{"summary":"Create a push target","operationId":"accountCreatePushTarget","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"201":{"description":"Target","schema":{"$ref":"#\/definitions\/target"}}},"x-appwrite":{"method":"createPushTarget","weight":50,"cookies":false,"type":"","demo":"account\/create-push-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"targetId":{"type":"string","description":"Target ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[TARGET_ID]"},"identifier":{"type":"string","description":"The target identifier (token, email, phone etc.)","default":null,"x-example":"[IDENTIFIER]"},"providerId":{"type":"string","description":"Provider ID. Message will be sent to this target from the specified provider ID. If no provider ID is set the first setup provider will be used.","default":"","x-example":"[PROVIDER_ID]"}},"required":["targetId","identifier"]}}]}},"\/account\/targets\/{targetId}\/push":{"put":{"summary":"Update a push target","operationId":"accountUpdatePushTarget","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"200":{"description":"Target","schema":{"$ref":"#\/definitions\/target"}}},"x-appwrite":{"method":"updatePushTarget","weight":51,"cookies":false,"type":"","demo":"account\/update-push-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"targetId","description":"Target ID.","required":true,"type":"string","x-example":"[TARGET_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"identifier":{"type":"string","description":"The target identifier (token, email, phone etc.)","default":null,"x-example":"[IDENTIFIER]"}},"required":["identifier"]}}]},"delete":{"summary":"Delete a push target","operationId":"accountDeletePushTarget","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deletePushTarget","weight":52,"cookies":false,"type":"","demo":"account\/delete-push-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"targetId","description":"Target ID.","required":true,"type":"string","x-example":"[TARGET_ID]","in":"path"}]}},"\/account\/tokens\/email":{"post":{"summary":"Create email token (OTP)","operationId":"accountCreateEmailToken","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Sends the user an email with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [POST \/v1\/account\/sessions\/token](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createSession) endpoint to complete the login process. The secret sent to the user's email is valid for 15 minutes.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createEmailToken","weight":16,"cookies":false,"type":"","demo":"account\/create-email-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-token-email.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"phrase":{"type":"boolean","description":"Toggle for security phrase. If enabled, email will be send with a randomly generated phrase and the phrase will also be included in the response. Confirming phrases match increases the security of your authentication flow.","default":false,"x-example":false}},"required":["userId","email"]}}]}},"\/account\/tokens\/magic-url":{"post":{"summary":"Create magic URL token","operationId":"accountCreateMagicURLToken","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Sends the user an email with a secret key for creating a session. If the provided user ID has not been registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [POST \/v1\/account\/sessions\/token](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createSession) endpoint to complete the login process. The link sent to the user's email address is valid for 1 hour. If you are on a mobile device you can leave the URL parameter empty, so that the login completion will be handled by your Appwrite instance by default.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).\n","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createMagicURLToken","weight":15,"cookies":false,"type":"","demo":"account\/create-magic-u-r-l-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-token-magic-url.md","rate-limit":60,"rate-time":3600,"rate-key":["url:{url},email:{param-email}","url:{url},ip:{ip}"],"scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"url":{"type":"string","description":"URL to redirect the user back to your app from the magic URL login. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":"","x-example":"https:\/\/example.com"},"phrase":{"type":"boolean","description":"Toggle for security phrase. If enabled, email will be send with a randomly generated phrase and the phrase will also be included in the response. Confirming phrases match increases the security of your authentication flow.","default":false,"x-example":false}},"required":["userId","email"]}}]}},"\/account\/tokens\/phone":{"post":{"summary":"Create phone token","operationId":"accountCreatePhoneToken","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Sends the user an SMS with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [POST \/v1\/account\/sessions\/token](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createSession) endpoint to complete the login process. The secret sent to the user's phone is valid for 15 minutes.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createPhoneToken","weight":19,"cookies":false,"type":"","demo":"account\/create-phone-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-token-phone.md","rate-limit":10,"rate-time":3600,"rate-key":["url:{url},phone:{param-phone}","url:{url},ip:{ip}"],"scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"}},"required":["userId","phone"]}}]}},"\/account\/verification":{"post":{"summary":"Create email verification","operationId":"accountCreateVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to send a verification message to your user email address to confirm they are the valid owners of that address. Both the **userId** and **secret** arguments will be passed as query parameters to the URL you have provided to be attached to the verification email. The provided URL should redirect the user back to your app and allow you to complete the verification process by verifying both the **userId** and **secret** parameters. Learn more about how to [complete the verification process](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateVerification). The verification link sent to the user's email address is valid for 7 days.\n\nPlease note that in order to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md), the only valid redirect URLs are the ones from domains you have set when adding your platforms in the console interface.\n","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createVerification","weight":38,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"url":{"type":"string","description":"URL to redirect the user back to your app from the verification email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":null,"x-example":"https:\/\/example.com"}},"required":["url"]}}]},"put":{"summary":"Create email verification (confirmation)","operationId":"accountUpdateVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete the user email verification process. Use both the **userId** and **secret** parameters that were attached to your app URL to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"updateVerification","weight":39,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/account\/verification\/phone":{"post":{"summary":"Create phone verification","operationId":"accountCreatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updatePhone) endpoint. Learn more about how to [complete the verification process](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createPhoneVerification","weight":40,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":["url:{url},userId:{userId}","url:{url},ip:{ip}"],"scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"put":{"summary":"Create phone verification (confirmation)","operationId":"accountUpdatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"updatePhoneVerification","weight":41,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/avatars\/browsers\/{code}":{"get":{"summary":"Get browser icon","operationId":"avatarsGetBrowser","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"You can use this endpoint to show different browser icons to your users. The code argument receives the browser code as it appears in your user [GET \/account\/sessions](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#getSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getBrowser","weight":54,"cookies":false,"type":"location","demo":"avatars\/get-browser.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-browser.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Browser Code.","required":true,"type":"string","x-example":"aa","enum":["aa","an","ch","ci","cm","cr","ff","sf","mf","ps","oi","om","op","on"],"x-enum-name":"Browser","x-enum-keys":["Avant Browser","Android WebView Beta","Google Chrome","Google Chrome (iOS)","Google Chrome (Mobile)","Chromium","Mozilla Firefox","Safari","Mobile Safari","Microsoft Edge","Microsoft Edge (iOS)","Opera Mini","Opera","Opera (Next)"],"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"}]}},"\/avatars\/credit-cards\/{code}":{"get":{"summary":"Get credit card icon","operationId":"avatarsGetCreditCard","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"The credit card endpoint will return you the icon of the credit card provider you need. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getCreditCard","weight":53,"cookies":false,"type":"location","demo":"avatars\/get-credit-card.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-credit-card.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Credit Card Code. Possible values: amex, argencard, cabal, censosud, diners, discover, elo, hipercard, jcb, mastercard, naranja, targeta-shopping, union-china-pay, visa, mir, maestro.","required":true,"type":"string","x-example":"amex","enum":["amex","argencard","cabal","censosud","diners","discover","elo","hipercard","jcb","mastercard","naranja","targeta-shopping","union-china-pay","visa","mir","maestro"],"x-enum-name":"CreditCard","x-enum-keys":["American Express","Argencard","Cabal","Consosud","Diners Club","Discover","Elo","Hipercard","JCB","Mastercard","Naranja","Tarjeta Shopping","Union China Pay","Visa","MIR","Maestro"],"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"}]}},"\/avatars\/favicon":{"get":{"summary":"Get favicon","operationId":"avatarsGetFavicon","consumes":["application\/json"],"produces":["image\/*"],"tags":["avatars"],"description":"Use this endpoint to fetch the favorite icon (AKA favicon) of any remote website URL.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFavicon","weight":57,"cookies":false,"type":"location","demo":"avatars\/get-favicon.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-favicon.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"url","description":"Website URL which you want to fetch the favicon from.","required":true,"type":"string","format":"url","x-example":"https:\/\/example.com","in":"query"}]}},"\/avatars\/flags\/{code}":{"get":{"summary":"Get country flag","operationId":"avatarsGetFlag","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"You can use this endpoint to show different country flags icons to your users. The code argument receives the 2 letter country code. Use width, height and quality arguments to change the output settings. Country codes follow the [ISO 3166-1](https:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFlag","weight":55,"cookies":false,"type":"location","demo":"avatars\/get-flag.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-flag.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Country Code. ISO Alpha-2 country code format.","required":true,"type":"string","x-example":"af","enum":["af","ao","al","ad","ae","ar","am","ag","au","at","az","bi","be","bj","bf","bd","bg","bh","bs","ba","by","bz","bo","br","bb","bn","bt","bw","cf","ca","ch","cl","cn","ci","cm","cd","cg","co","km","cv","cr","cu","cy","cz","de","dj","dm","dk","do","dz","ec","eg","er","es","ee","et","fi","fj","fr","fm","ga","gb","ge","gh","gn","gm","gw","gq","gr","gd","gt","gy","hn","hr","ht","hu","id","in","ie","ir","iq","is","il","it","jm","jo","jp","kz","ke","kg","kh","ki","kn","kr","kw","la","lb","lr","ly","lc","li","lk","ls","lt","lu","lv","ma","mc","md","mg","mv","mx","mh","mk","ml","mt","mm","me","mn","mz","mr","mu","mw","my","na","ne","ng","ni","nl","no","np","nr","nz","om","pk","pa","pe","ph","pw","pg","pl","kp","pt","py","qa","ro","ru","rw","sa","sd","sn","sg","sb","sl","sv","sm","so","rs","ss","st","sr","sk","si","se","sz","sc","sy","td","tg","th","tj","tm","tl","to","tt","tn","tr","tv","tz","ug","ua","uy","us","uz","va","vc","ve","vn","vu","ws","ye","za","zm","zw"],"x-enum-name":"Flag","x-enum-keys":["Afghanistan","Angola","Albania","Andorra","United Arab Emirates","Argentina","Armenia","Antigua and Barbuda","Australia","Austria","Azerbaijan","Burundi","Belgium","Benin","Burkina Faso","Bangladesh","Bulgaria","Bahrain","Bahamas","Bosnia and Herzegovina","Belarus","Belize","Bolivia","Brazil","Barbados","Brunei Darussalam","Bhutan","Botswana","Central African Republic","Canada","Switzerland","Chile","China","C\u00f4te d'Ivoire","Cameroon","Democratic Republic of the Congo","Republic of the Congo","Colombia","Comoros","Cape Verde","Costa Rica","Cuba","Cyprus","Czech Republic","Germany","Djibouti","Dominica","Denmark","Dominican Republic","Algeria","Ecuador","Egypt","Eritrea","Spain","Estonia","Ethiopia","Finland","Fiji","France","Micronesia (Federated States of)","Gabon","United Kingdom","Georgia","Ghana","Guinea","Gambia","Guinea-Bissau","Equatorial Guinea","Greece","Grenada","Guatemala","Guyana","Honduras","Croatia","Haiti","Hungary","Indonesia","India","Ireland","Iran (Islamic Republic of)","Iraq","Iceland","Israel","Italy","Jamaica","Jordan","Japan","Kazakhstan","Kenya","Kyrgyzstan","Cambodia","Kiribati","Saint Kitts and Nevis","South Korea","Kuwait","Lao People's Democratic Republic","Lebanon","Liberia","Libya","Saint Lucia","Liechtenstein","Sri Lanka","Lesotho","Lithuania","Luxembourg","Latvia","Morocco","Monaco","Moldova","Madagascar","Maldives","Mexico","Marshall Islands","North Macedonia","Mali","Malta","Myanmar","Montenegro","Mongolia","Mozambique","Mauritania","Mauritius","Malawi","Malaysia","Namibia","Niger","Nigeria","Nicaragua","Netherlands","Norway","Nepal","Nauru","New Zealand","Oman","Pakistan","Panama","Peru","Philippines","Palau","Papua New Guinea","Poland","North Korea","Portugal","Paraguay","Qatar","Romania","Russia","Rwanda","Saudi Arabia","Sudan","Senegal","Singapore","Solomon Islands","Sierra Leone","El Salvador","San Marino","Somalia","Serbia","South Sudan","Sao Tome and Principe","Suriname","Slovakia","Slovenia","Sweden","Eswatini","Seychelles","Syria","Chad","Togo","Thailand","Tajikistan","Turkmenistan","Timor-Leste","Tonga","Trinidad and Tobago","Tunisia","Turkey","Tuvalu","Tanzania","Uganda","Ukraine","Uruguay","United States","Uzbekistan","Vatican City","Saint Vincent and the Grenadines","Venezuela","Vietnam","Vanuatu","Samoa","Yemen","South Africa","Zambia","Zimbabwe"],"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"}]}},"\/avatars\/image":{"get":{"summary":"Get image from URL","operationId":"avatarsGetImage","consumes":["application\/json"],"produces":["image\/*"],"tags":["avatars"],"description":"Use this endpoint to fetch a remote image URL and crop it to any image size you want. This endpoint is very useful if you need to crop and display remote images in your app or in case you want to make sure a 3rd party image is properly served using a TLS protocol.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getImage","weight":56,"cookies":false,"type":"location","demo":"avatars\/get-image.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-image.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"url","description":"Image URL which you want to crop.","required":true,"type":"string","format":"url","x-example":"https:\/\/example.com","in":"query"},{"name":"width","description":"Resize preview image width, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get user initials","operationId":"avatarsGetInitials","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getInitials","weight":59,"cookies":false,"type":"location","demo":"avatars\/get-initials.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-initials.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"name","description":"Full Name. When empty, current user name or email will be used. Max length: 128 chars.","required":false,"type":"string","x-example":"[NAME]","default":"","in":"query"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":500,"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":500,"in":"query"},{"name":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"type":"string","default":"","in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR code","operationId":"avatarsGetQR","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getQR","weight":58,"cookies":false,"type":"location","demo":"avatars\/get-q-r.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-qr.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"text","description":"Plain text to be converted to QR code image.","required":true,"type":"string","x-example":"[TEXT]","in":"query"},{"name":"size","description":"QR code size. Pass an integer between 1 to 1000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":1,"default":400,"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"type":"integer","format":"int32","x-example":0,"default":1,"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"type":"boolean","x-example":false,"default":false,"in":"query"}]}},"\/console\/assistant":{"post":{"summary":"Ask Query","operationId":"assistantChat","consumes":["application\/json"],"produces":["text\/plain"],"tags":["assistant"],"description":"","responses":{"200":{"description":"File","schema":{"type":"file"}}},"x-appwrite":{"method":"chat","weight":306,"cookies":false,"type":"","demo":"assistant\/chat.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/assistant\/chat.md","rate-limit":15,"rate-time":3600,"rate-key":"userId:{userId}","scope":"assistant.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"prompt":{"type":"string","description":"Prompt. A string containing questions asked to the AI assistant.","default":null,"x-example":"[PROMPT]"}},"required":["prompt"]}}]}},"\/console\/variables":{"get":{"summary":"Get variables","operationId":"consoleVariables","consumes":["application\/json"],"produces":["application\/json"],"tags":["console"],"description":"Get all Environment Variables that are relevant for the console.","responses":{"200":{"description":"Console Variables","schema":{"$ref":"#\/definitions\/consoleVariables"}}},"x-appwrite":{"method":"variables","weight":305,"cookies":false,"type":"","demo":"console\/variables.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/console\/variables.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/databases":{"get":{"summary":"List databases","operationId":"databasesList","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all databases from the current Appwrite project. You can use the search parameter to filter your results.","responses":{"200":{"description":"Databases List","schema":{"$ref":"#\/definitions\/databaseList"}}},"x-appwrite":{"method":"list","weight":64,"cookies":false,"type":"","demo":"databases\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create database","operationId":"databasesCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Database.\n","responses":{"201":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"create","weight":63,"cookies":false,"type":"","demo":"databases\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"databaseId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[DATABASE_ID]"},"name":{"type":"string","description":"Database name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Is the database enabled? When set to 'disabled', users cannot access the database but Server SDKs with an API key can still read and write to the database. No data is lost when this is toggled.","default":true,"x-example":false}},"required":["databaseId","name"]}}]}},"\/databases\/usage":{"get":{"summary":"Get usage stats for the database","operationId":"databasesGetUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"UsageDatabases","schema":{"$ref":"#\/definitions\/usageDatabases"}}},"x-appwrite":{"method":"getUsage","weight":108,"cookies":false,"type":"","demo":"databases\/get-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"`Date range.","required":false,"type":"string","x-example":"24h","enum":["24h","30d","90d"],"x-enum-name":"DatabaseUsageRange","x-enum-keys":["Twenty Four Hours","Thirty Days","Ninety Days"],"default":"30d","in":"query"}]}},"\/databases\/{databaseId}":{"get":{"summary":"Get database","operationId":"databasesGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a database by its unique ID. This endpoint response returns a JSON object with the database metadata.","responses":{"200":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"get","weight":65,"cookies":false,"type":"","demo":"databases\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"}]},"put":{"summary":"Update database","operationId":"databasesUpdate","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a database by its unique ID.","responses":{"200":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"update","weight":67,"cookies":false,"type":"","demo":"databases\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Database name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Is database enabled? When set to 'disabled', users cannot access the database but Server SDKs with an API key can still read and write to the database. No data is lost when this is toggled.","default":true,"x-example":false}},"required":["name"]}}]},"delete":{"summary":"Delete database","operationId":"databasesDelete","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a database by its unique ID. Only API keys with with databases.write scope can delete a database.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":68,"cookies":false,"type":"","demo":"databases\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections":{"get":{"summary":"List collections","operationId":"databasesListCollections","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all collections that belong to the provided databaseId. You can use the search parameter to filter your results.","responses":{"200":{"description":"Collections List","schema":{"$ref":"#\/definitions\/collectionList"}}},"x-appwrite":{"method":"listCollections","weight":70,"cookies":false,"type":"","demo":"databases\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, documentSecurity","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create collection","operationId":"databasesCreateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Collection. Before using this route, you should create a new database resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"createCollection","weight":69,"cookies":false,"type":"","demo":"databases\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permissions strings. By default, no user is granted with any permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":false,"x-example":false},"enabled":{"type":"boolean","description":"Is collection enabled? When set to 'disabled', users cannot access the collection but Server SDKs with and API key can still read and write to the collection. No data is lost when this is toggled.","default":true,"x-example":false}},"required":["collectionId","name"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}":{"get":{"summary":"Get collection","operationId":"databasesGetCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a collection by its unique ID. This endpoint response returns a JSON object with the collection metadata.","responses":{"200":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"getCollection","weight":71,"cookies":false,"type":"","demo":"databases\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]},"put":{"summary":"Update collection","operationId":"databasesUpdateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a collection by its unique ID.","responses":{"200":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"updateCollection","weight":73,"cookies":false,"type":"","demo":"databases\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":false,"x-example":false},"enabled":{"type":"boolean","description":"Is collection enabled? When set to 'disabled', users cannot access the collection but Server SDKs with and API key can still read and write to the collection. No data is lost when this is toggled.","default":true,"x-example":false}},"required":["name"]}}]},"delete":{"summary":"Delete collection","operationId":"databasesDeleteCollection","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a collection by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteCollection","weight":74,"cookies":false,"type":"","demo":"databases\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes":{"get":{"summary":"List attributes","operationId":"databasesListAttributes","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Attributes List","schema":{"$ref":"#\/definitions\/attributeList"}}},"x-appwrite":{"method":"listAttributes","weight":85,"cookies":false,"type":"","demo":"databases\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: key, type, size, required, array, status, error","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create boolean attribute","operationId":"databasesCreateBooleanAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a boolean attribute.\n","responses":{"202":{"description":"AttributeBoolean","schema":{"$ref":"#\/definitions\/attributeBoolean"}}},"x-appwrite":{"method":"createBooleanAttribute","weight":82,"cookies":false,"type":"","demo":"databases\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":false},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean\/{key}":{"patch":{"summary":"Update boolean attribute","operationId":"databasesUpdateBooleanAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"","responses":{"200":{"description":"AttributeBoolean","schema":{"$ref":"#\/definitions\/attributeBoolean"}}},"x-appwrite":{"method":"updateBooleanAttribute","weight":94,"cookies":false,"type":"","demo":"databases\/update-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":false,"x-nullable":true}},"required":["required","default"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/datetime":{"post":{"summary":"Create datetime attribute","operationId":"databasesCreateDatetimeAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"AttributeDatetime","schema":{"$ref":"#\/definitions\/attributeDatetime"}}},"x-appwrite":{"method":"createDatetimeAttribute","weight":83,"cookies":false,"type":"","demo":"databases\/create-datetime-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-datetime-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for the attribute in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/datetime\/{key}":{"patch":{"summary":"Update dateTime attribute","operationId":"databasesUpdateDatetimeAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"","responses":{"200":{"description":"AttributeDatetime","schema":{"$ref":"#\/definitions\/attributeDatetime"}}},"x-appwrite":{"method":"updateDatetimeAttribute","weight":95,"cookies":false,"type":"","demo":"databases\/update-datetime-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-datetime-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null,"x-nullable":true}},"required":["required","default"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create email attribute","operationId":"databasesCreateEmailAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create an email attribute.\n","responses":{"202":{"description":"AttributeEmail","schema":{"$ref":"#\/definitions\/attributeEmail"}}},"x-appwrite":{"method":"createEmailAttribute","weight":76,"cookies":false,"type":"","demo":"databases\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"email@example.com"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/email\/{key}":{"patch":{"summary":"Update email attribute","operationId":"databasesUpdateEmailAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Update an email attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeEmail","schema":{"$ref":"#\/definitions\/attributeEmail"}}},"x-appwrite":{"method":"updateEmailAttribute","weight":88,"cookies":false,"type":"","demo":"databases\/update-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"email@example.com","x-nullable":true}},"required":["required","default"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create enum attribute","operationId":"databasesCreateEnumAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"AttributeEnum","schema":{"$ref":"#\/definitions\/attributeEnum"}}},"x-appwrite":{"method":"createEnumAttribute","weight":77,"cookies":false,"type":"","demo":"databases\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"elements":{"type":"array","description":"Array of elements in enumerated type. Uses length of longest element to determine size. Maximum of 100 elements are allowed, each 255 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","elements","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/enum\/{key}":{"patch":{"summary":"Update enum attribute","operationId":"databasesUpdateEnumAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Update an enum attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeEnum","schema":{"$ref":"#\/definitions\/attributeEnum"}}},"x-appwrite":{"method":"updateEnumAttribute","weight":89,"cookies":false,"type":"","demo":"databases\/update-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-enum-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"elements":{"type":"array","description":"Array of elements in enumerated type. Uses length of longest element to determine size. Maximum of 100 elements are allowed, each 255 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"[DEFAULT]","x-nullable":true}},"required":["elements","required","default"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create float attribute","operationId":"databasesCreateFloatAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeFloat","schema":{"$ref":"#\/definitions\/attributeFloat"}}},"x-appwrite":{"method":"createFloatAttribute","weight":81,"cookies":false,"type":"","demo":"databases\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"min":{"type":"number","description":"Minimum value to enforce on new documents","default":null,"x-example":null},"max":{"type":"number","description":"Maximum value to enforce on new documents","default":null,"x-example":null},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/float\/{key}":{"patch":{"summary":"Update float attribute","operationId":"databasesUpdateFloatAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Update a float attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeFloat","schema":{"$ref":"#\/definitions\/attributeFloat"}}},"x-appwrite":{"method":"updateFloatAttribute","weight":93,"cookies":false,"type":"","demo":"databases\/update-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"min":{"type":"number","description":"Minimum value to enforce on new documents","default":null,"x-example":null},"max":{"type":"number","description":"Maximum value to enforce on new documents","default":null,"x-example":null},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null,"x-nullable":true}},"required":["required","min","max","default"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create integer attribute","operationId":"databasesCreateIntegerAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeInteger","schema":{"$ref":"#\/definitions\/attributeInteger"}}},"x-appwrite":{"method":"createIntegerAttribute","weight":80,"cookies":false,"type":"","demo":"databases\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"min":{"type":"integer","description":"Minimum value to enforce on new documents","default":null,"x-example":null},"max":{"type":"integer","description":"Maximum value to enforce on new documents","default":null,"x-example":null},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/integer\/{key}":{"patch":{"summary":"Update integer attribute","operationId":"databasesUpdateIntegerAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Update an integer attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeInteger","schema":{"$ref":"#\/definitions\/attributeInteger"}}},"x-appwrite":{"method":"updateIntegerAttribute","weight":92,"cookies":false,"type":"","demo":"databases\/update-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"min":{"type":"integer","description":"Minimum value to enforce on new documents","default":null,"x-example":null},"max":{"type":"integer","description":"Maximum value to enforce on new documents","default":null,"x-example":null},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null,"x-nullable":true}},"required":["required","min","max","default"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP address attribute","operationId":"databasesCreateIpAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create IP address attribute.\n","responses":{"202":{"description":"AttributeIP","schema":{"$ref":"#\/definitions\/attributeIp"}}},"x-appwrite":{"method":"createIpAttribute","weight":78,"cookies":false,"type":"","demo":"databases\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/ip\/{key}":{"patch":{"summary":"Update IP address attribute","operationId":"databasesUpdateIpAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Update an ip attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeIP","schema":{"$ref":"#\/definitions\/attributeIp"}}},"x-appwrite":{"method":"updateIpAttribute","weight":90,"cookies":false,"type":"","demo":"databases\/update-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null,"x-nullable":true}},"required":["required","default"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/relationship":{"post":{"summary":"Create relationship attribute","operationId":"databasesCreateRelationshipAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create relationship attribute. [Learn more about relationship attributes](https:\/\/appwrite.io\/docs\/databases-relationships#relationship-attributes).\n","responses":{"202":{"description":"AttributeRelationship","schema":{"$ref":"#\/definitions\/attributeRelationship"}}},"x-appwrite":{"method":"createRelationshipAttribute","weight":84,"cookies":false,"type":"","demo":"databases\/create-relationship-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-relationship-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"relatedCollectionId":{"type":"string","description":"Related Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","default":null,"x-example":"[RELATED_COLLECTION_ID]"},"type":{"type":"string","description":"Relation type","default":null,"x-example":"oneToOne","enum":["oneToOne","manyToOne","manyToMany","oneToMany"],"x-enum-name":"RelationshipType","x-enum-keys":[]},"twoWay":{"type":"boolean","description":"Is Two Way?","default":false,"x-example":false},"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"twoWayKey":{"type":"string","description":"Two Way Attribute Key.","default":null,"x-example":null},"onDelete":{"type":"string","description":"Constraints option","default":"restrict","x-example":"cascade","enum":["cascade","restrict","setNull"],"x-enum-name":"RelationMutate","x-enum-keys":[]}},"required":["relatedCollectionId","type"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create string attribute","operationId":"databasesCreateStringAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a string attribute.\n","responses":{"202":{"description":"AttributeString","schema":{"$ref":"#\/definitions\/attributeString"}}},"x-appwrite":{"method":"createStringAttribute","weight":75,"cookies":false,"type":"","demo":"databases\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"size":{"type":"integer","description":"Attribute size for text attributes, in number of characters.","default":null,"x-example":1},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false},"encrypt":{"type":"boolean","description":"Toggle encryption for the attribute. Encryption enhances security by not storing any plain text values in the database. However, encrypted attributes cannot be queried.","default":false,"x-example":false}},"required":["key","size","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/string\/{key}":{"patch":{"summary":"Update string attribute","operationId":"databasesUpdateStringAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Update a string attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeString","schema":{"$ref":"#\/definitions\/attributeString"}}},"x-appwrite":{"method":"updateStringAttribute","weight":87,"cookies":false,"type":"","demo":"databases\/update-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"[DEFAULT]","x-nullable":true}},"required":["required","default"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL attribute","operationId":"databasesCreateUrlAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a URL attribute.\n","responses":{"202":{"description":"AttributeURL","schema":{"$ref":"#\/definitions\/attributeUrl"}}},"x-appwrite":{"method":"createUrlAttribute","weight":79,"cookies":false,"type":"","demo":"databases\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"https:\/\/example.com"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url\/{key}":{"patch":{"summary":"Update URL attribute","operationId":"databasesUpdateUrlAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Update an url attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeURL","schema":{"$ref":"#\/definitions\/attributeUrl"}}},"x-appwrite":{"method":"updateUrlAttribute","weight":91,"cookies":false,"type":"","demo":"databases\/update-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"https:\/\/example.com","x-nullable":true}},"required":["required","default"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get attribute","operationId":"databasesGetAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, or AttributeDatetime, or AttributeRelationship, or AttributeString","schema":{"x-oneOf":[{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeRelationship"},{"$ref":"#\/definitions\/attributeString"}]}}},"x-appwrite":{"method":"getAttribute","weight":86,"cookies":false,"type":"","demo":"databases\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"}]},"delete":{"summary":"Delete attribute","operationId":"databasesDeleteAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":97,"cookies":false,"type":"","demo":"databases\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/{key}\/relationship":{"patch":{"summary":"Update relationship attribute","operationId":"databasesUpdateRelationshipAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Update relationship attribute. [Learn more about relationship attributes](https:\/\/appwrite.io\/docs\/databases-relationships#relationship-attributes).\n","responses":{"200":{"description":"AttributeRelationship","schema":{"$ref":"#\/definitions\/attributeRelationship"}}},"x-appwrite":{"method":"updateRelationshipAttribute","weight":96,"cookies":false,"type":"","demo":"databases\/update-relationship-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-relationship-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"onDelete":{"type":"string","description":"Constraints option","default":null,"x-example":"cascade","enum":["cascade","restrict","setNull"],"x-enum-name":"RelationMutate","x-enum-keys":[]}}}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List documents","operationId":"databasesListDocuments","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","schema":{"$ref":"#\/definitions\/documentList"}}},"x-appwrite":{"method":"listDocuments","weight":103,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"post":{"summary":"Create document","operationId":"databasesCreateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"createDocument","weight":102,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","default":{},"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, only the current user is granted all permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get document","operationId":"databasesGetDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"getDocument","weight":104,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"patch":{"summary":"Update document","operationId":"databasesUpdateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"updateDocument","weight":106,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","default":[],"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete document","operationId":"databasesDeleteDocument","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":107,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}\/logs":{"get":{"summary":"List document logs","operationId":"databasesListDocumentLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get the document activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listDocumentLogs","weight":105,"cookies":false,"type":"","demo":"databases\/list-document-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes":{"get":{"summary":"List indexes","operationId":"databasesListIndexes","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Indexes List","schema":{"$ref":"#\/definitions\/indexList"}}},"x-appwrite":{"method":"listIndexes","weight":99,"cookies":false,"type":"","demo":"databases\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: key, type, status, attributes, error","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"post":{"summary":"Create index","operationId":"databasesCreateIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"createIndex","weight":98,"cookies":false,"type":"","demo":"databases\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Index Key.","default":null,"x-example":null},"type":{"type":"string","description":"Index type.","default":null,"x-example":"key","enum":["key","fulltext","unique","spatial"],"x-enum-name":"IndexType","x-enum-keys":[]},"attributes":{"type":"array","description":"Array of attributes to index. Maximum of 100 attributes are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders. Maximum of 100 orders are allowed.","default":[],"x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get index","operationId":"databasesGetIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"getIndex","weight":100,"cookies":false,"type":"","demo":"databases\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Index Key.","required":true,"type":"string","in":"path"}]},"delete":{"summary":"Delete index","operationId":"databasesDeleteIndex","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":101,"cookies":false,"type":"","demo":"databases\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Index Key.","required":true,"type":"string","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/logs":{"get":{"summary":"List collection logs","operationId":"databasesListCollectionLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get the collection activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listCollectionLogs","weight":72,"cookies":false,"type":"","demo":"databases\/list-collection-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/usage":{"get":{"summary":"Get usage stats for a collection","operationId":"databasesGetCollectionUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"UsageCollection","schema":{"$ref":"#\/definitions\/usageCollection"}}},"x-appwrite":{"method":"getCollectionUsage","weight":110,"cookies":false,"type":"","demo":"databases\/get-collection-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","enum":["24h","30d","90d"],"x-enum-name":"DatabaseUsageRange","x-enum-keys":["Twenty Four Hours","Thirty Days","Ninety Days"],"default":"30d","in":"query"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/databases\/{databaseId}\/logs":{"get":{"summary":"List database logs","operationId":"databasesListLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get the database activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listLogs","weight":66,"cookies":false,"type":"","demo":"databases\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/databases\/{databaseId}\/usage":{"get":{"summary":"Get usage stats for the database","operationId":"databasesGetDatabaseUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"UsageDatabase","schema":{"$ref":"#\/definitions\/usageDatabase"}}},"x-appwrite":{"method":"getDatabaseUsage","weight":109,"cookies":false,"type":"","demo":"databases\/get-database-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"range","description":"`Date range.","required":false,"type":"string","x-example":"24h","enum":["24h","30d","90d"],"x-enum-name":"DatabaseUsageRange","x-enum-keys":["Twenty Four Hours","Thirty Days","Ninety Days"],"default":"30d","in":"query"}]}},"\/functions":{"get":{"summary":"List functions","operationId":"functionsList","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the project's functions. You can use the query params to filter your results.","responses":{"200":{"description":"Functions List","schema":{"$ref":"#\/definitions\/functionList"}}},"x-appwrite":{"method":"list","weight":268,"cookies":false,"type":"","demo":"functions\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-functions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, runtime, deployment, schedule, scheduleNext, schedulePrevious, timeout, entrypoint, commands, installationId","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create function","operationId":"functionsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function. You can pass a list of [permissions](https:\/\/appwrite.io\/docs\/permissions) to allow different project users or team with access to execute the function using the client API.","responses":{"201":{"description":"Function","schema":{"$ref":"#\/definitions\/function"}}},"x-appwrite":{"method":"create","weight":267,"cookies":false,"type":"","demo":"functions\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"functionId":{"type":"string","description":"Function ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[FUNCTION_ID]"},"name":{"type":"string","description":"Function name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"runtime":{"type":"string","description":"Execution runtime.","default":null,"x-example":"node-18.0","enum":["node-18.0","php-8.0","ruby-3.1","python-3.9"],"x-enum-name":null,"x-enum-keys":[]},"execute":{"type":"array","description":"An array of role strings with execution permissions. By default no user is granted with any execute permissions. [learn more about roles](https:\/\/appwrite.io\/docs\/permissions#permission-roles). Maximum of 100 roles are allowed, each 64 characters long.","default":[],"x-example":"[\"any\"]","items":{"type":"string"}},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","default":[],"x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","default":"","x-example":null},"timeout":{"type":"integer","description":"Function maximum execution time in seconds.","default":15,"x-example":1},"enabled":{"type":"boolean","description":"Is function enabled? When set to 'disabled', users cannot access the function but Server SDKs with and API key can still access the function. No data is lost when this is toggled.","default":true,"x-example":false},"logging":{"type":"boolean","description":"Whether executions will be logged. When set to false, executions will not be logged, but will reduce resource used by your Appwrite project.","default":true,"x-example":false},"entrypoint":{"type":"string","description":"Entrypoint File. This path is relative to the \"providerRootDirectory\".","default":"","x-example":"[ENTRYPOINT]"},"commands":{"type":"string","description":"Build Commands.","default":"","x-example":"[COMMANDS]"},"installationId":{"type":"string","description":"Appwrite Installation ID for VCS (Version Control System) deployment.","default":"","x-example":"[INSTALLATION_ID]"},"providerRepositoryId":{"type":"string","description":"Repository ID of the repo linked to the function.","default":"","x-example":"[PROVIDER_REPOSITORY_ID]"},"providerBranch":{"type":"string","description":"Production branch for the repo linked to the function.","default":"","x-example":"[PROVIDER_BRANCH]"},"providerSilentMode":{"type":"boolean","description":"Is the VCS (Version Control System) connection in silent mode for the repo linked to the function? In silent mode, comments will not be made on commits and pull requests.","default":false,"x-example":false},"providerRootDirectory":{"type":"string","description":"Path to function code in the linked repo.","default":"","x-example":"[PROVIDER_ROOT_DIRECTORY]"},"templateRepository":{"type":"string","description":"Repository name of the template.","default":"","x-example":"[TEMPLATE_REPOSITORY]"},"templateOwner":{"type":"string","description":"The name of the owner of the template.","default":"","x-example":"[TEMPLATE_OWNER]"},"templateRootDirectory":{"type":"string","description":"Path to function code in the template repo.","default":"","x-example":"[TEMPLATE_ROOT_DIRECTORY]"},"templateBranch":{"type":"string","description":"Production branch for the repo linked to the function template.","default":"","x-example":"[TEMPLATE_BRANCH]"}},"required":["functionId","name","runtime"]}}]}},"\/functions\/runtimes":{"get":{"summary":"List runtimes","operationId":"functionsListRuntimes","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all runtimes that are currently active on your instance.","responses":{"200":{"description":"Runtimes List","schema":{"$ref":"#\/definitions\/runtimeList"}}},"x-appwrite":{"method":"listRuntimes","weight":269,"cookies":false,"type":"","demo":"functions\/list-runtimes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-runtimes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/functions\/usage":{"get":{"summary":"Get functions usage","operationId":"functionsGetUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"","responses":{"200":{"description":"UsageFunctions","schema":{"$ref":"#\/definitions\/usageFunctions"}}},"x-appwrite":{"method":"getUsage","weight":272,"cookies":false,"type":"","demo":"functions\/get-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","enum":["24h","30d","90d"],"x-enum-name":"FunctionUsageRange","x-enum-keys":["Twenty Four Hours","Thirty Days","Ninety Days"],"default":"30d","in":"query"}]}},"\/functions\/{functionId}":{"get":{"summary":"Get function","operationId":"functionsGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a function by its unique ID.","responses":{"200":{"description":"Function","schema":{"$ref":"#\/definitions\/function"}}},"x-appwrite":{"method":"get","weight":270,"cookies":false,"type":"","demo":"functions\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"}]},"put":{"summary":"Update function","operationId":"functionsUpdate","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Update function by its unique ID.","responses":{"200":{"description":"Function","schema":{"$ref":"#\/definitions\/function"}}},"x-appwrite":{"method":"update","weight":273,"cookies":false,"type":"","demo":"functions\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Function name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"runtime":{"type":"string","description":"Execution runtime.","default":"","x-example":"node-18.0","enum":["node-18.0","php-8.0","ruby-3.1","python-3.9"],"x-enum-name":null,"x-enum-keys":[]},"execute":{"type":"array","description":"An array of role strings with execution permissions. By default no user is granted with any execute permissions. [learn more about roles](https:\/\/appwrite.io\/docs\/permissions#permission-roles). Maximum of 100 roles are allowed, each 64 characters long.","default":[],"x-example":"[\"any\"]","items":{"type":"string"}},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","default":[],"x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","default":"","x-example":null},"timeout":{"type":"integer","description":"Maximum execution time in seconds.","default":15,"x-example":1},"enabled":{"type":"boolean","description":"Is function enabled? When set to 'disabled', users cannot access the function but Server SDKs with and API key can still access the function. No data is lost when this is toggled.","default":true,"x-example":false},"logging":{"type":"boolean","description":"Whether executions will be logged. When set to false, executions will not be logged, but will reduce resource used by your Appwrite project.","default":true,"x-example":false},"entrypoint":{"type":"string","description":"Entrypoint File. This path is relative to the \"providerRootDirectory\".","default":"","x-example":"[ENTRYPOINT]"},"commands":{"type":"string","description":"Build Commands.","default":"","x-example":"[COMMANDS]"},"installationId":{"type":"string","description":"Appwrite Installation ID for VCS (Version Controle System) deployment.","default":"","x-example":"[INSTALLATION_ID]"},"providerRepositoryId":{"type":"string","description":"Repository ID of the repo linked to the function","default":"","x-example":"[PROVIDER_REPOSITORY_ID]"},"providerBranch":{"type":"string","description":"Production branch for the repo linked to the function","default":"","x-example":"[PROVIDER_BRANCH]"},"providerSilentMode":{"type":"boolean","description":"Is the VCS (Version Control System) connection in silent mode for the repo linked to the function? In silent mode, comments will not be made on commits and pull requests.","default":false,"x-example":false},"providerRootDirectory":{"type":"string","description":"Path to function code in the linked repo.","default":"","x-example":"[PROVIDER_ROOT_DIRECTORY]"}},"required":["name"]}}]},"delete":{"summary":"Delete function","operationId":"functionsDelete","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"Delete a function by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":276,"cookies":false,"type":"","demo":"functions\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"}]}},"\/functions\/{functionId}\/deployments":{"get":{"summary":"List deployments","operationId":"functionsListDeployments","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the project's code deployments. You can use the query params to filter your results.","responses":{"200":{"description":"Deployments List","schema":{"$ref":"#\/definitions\/deploymentList"}}},"x-appwrite":{"method":"listDeployments","weight":278,"cookies":false,"type":"","demo":"functions\/list-deployments.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-deployments.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: size, buildId, activate, entrypoint, commands","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create deployment","operationId":"functionsCreateDeployment","consumes":["multipart\/form-data"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function code deployment. Use this endpoint to upload a new version of your code function. To execute your newly uploaded code, you'll need to update the function's deployment to use your new deployment UID.\n\nThis endpoint accepts a tar.gz file compressed with your code. Make sure to include any dependencies your code has within the compressed file. You can learn more about code packaging in the [Appwrite Cloud Functions tutorial](https:\/\/appwrite.io\/docs\/functions).\n\nUse the \"command\" param to set the entrypoint used to execute your code.","responses":{"202":{"description":"Deployment","schema":{"$ref":"#\/definitions\/deployment"}}},"x-appwrite":{"method":"createDeployment","weight":277,"cookies":false,"type":"","demo":"functions\/create-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":true,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"entrypoint","description":"Entrypoint File.","required":false,"type":"string","x-example":"[ENTRYPOINT]","in":"formData"},{"name":"commands","description":"Build Commands.","required":false,"type":"string","x-example":"[COMMANDS]","in":"formData"},{"name":"code","description":"Gzip file with your code package. When used with the Appwrite CLI, pass the path to your code directory, and the CLI will automatically package your code. Use a path that is within the current directory.","required":true,"type":"file","in":"formData"},{"name":"activate","description":"Automatically activate the deployment when it is finished building.","required":true,"type":"boolean","x-example":false,"in":"formData"}]}},"\/functions\/{functionId}\/deployments\/{deploymentId}":{"get":{"summary":"Get deployment","operationId":"functionsGetDeployment","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a code deployment by its unique ID.","responses":{"200":{"description":"Deployment","schema":{"$ref":"#\/definitions\/deployment"}}},"x-appwrite":{"method":"getDeployment","weight":279,"cookies":false,"type":"","demo":"functions\/get-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"type":"string","x-example":"[DEPLOYMENT_ID]","in":"path"}]},"patch":{"summary":"Update function deployment","operationId":"functionsUpdateDeployment","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Update the function code deployment ID using the unique function ID. Use this endpoint to switch the code deployment that should be executed by the execution endpoint.","responses":{"200":{"description":"Function","schema":{"$ref":"#\/definitions\/function"}}},"x-appwrite":{"method":"updateDeployment","weight":275,"cookies":false,"type":"","demo":"functions\/update-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-function-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"type":"string","x-example":"[DEPLOYMENT_ID]","in":"path"}]},"delete":{"summary":"Delete deployment","operationId":"functionsDeleteDeployment","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"Delete a code deployment by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDeployment","weight":280,"cookies":false,"type":"","demo":"functions\/delete-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"type":"string","x-example":"[DEPLOYMENT_ID]","in":"path"}]}},"\/functions\/{functionId}\/deployments\/{deploymentId}\/builds\/{buildId}":{"post":{"summary":"Create build","operationId":"functionsCreateBuild","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"Create a new build for an Appwrite Function deployment. This endpoint can be used to retry a failed build.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"createBuild","weight":281,"cookies":false,"type":"","demo":"functions\/create-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"type":"string","x-example":"[DEPLOYMENT_ID]","in":"path"},{"name":"buildId","description":"Build unique ID.","required":true,"type":"string","x-example":"[BUILD_ID]","in":"path"}]}},"\/functions\/{functionId}\/deployments\/{deploymentId}\/download":{"get":{"summary":"Download Deployment","operationId":"functionsDownloadDeployment","consumes":["application\/json"],"produces":["*\/*"],"tags":["functions"],"description":"Get a Deployment's contents by its unique ID. This endpoint supports range requests for partial or streaming file download.","responses":{"200":{"description":"File","schema":{"type":"file"}}},"x-appwrite":{"method":"downloadDeployment","weight":274,"cookies":false,"type":"location","demo":"functions\/download-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/download-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"type":"string","x-example":"[DEPLOYMENT_ID]","in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List executions","operationId":"functionsListExecutions","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","schema":{"$ref":"#\/definitions\/executionList"}}},"x-appwrite":{"method":"listExecutions","weight":283,"cookies":false,"type":"","demo":"functions\/list-executions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-executions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, responseStatusCode, duration","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create execution","operationId":"functionsCreateExecution","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","schema":{"$ref":"#\/definitions\/execution"}}},"x-appwrite":{"method":"createExecution","weight":282,"cookies":false,"type":"","demo":"functions\/create-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-execution.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"body":{"type":"string","description":"HTTP body of execution. Default value is empty string.","default":"","x-example":"[BODY]"},"async":{"type":"boolean","description":"Execute code in the background. Default value is false.","default":false,"x-example":false},"path":{"type":"string","description":"HTTP path of execution. Path can include query params. Default value is \/","default":"\/","x-example":"[PATH]"},"method":{"type":"string","description":"HTTP method of execution. Default value is GET.","default":"POST","x-example":"GET","enum":["GET","POST","PUT","PATCH","DELETE","OPTIONS"],"x-enum-name":"ExecutionMethod","x-enum-keys":[]},"headers":{"type":"object","description":"HTTP headers of execution. Defaults to empty.","default":[],"x-example":"{}"}}}}]}},"\/functions\/{functionId}\/executions\/{executionId}":{"get":{"summary":"Get execution","operationId":"functionsGetExecution","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a function execution log by its unique ID.","responses":{"200":{"description":"Execution","schema":{"$ref":"#\/definitions\/execution"}}},"x-appwrite":{"method":"getExecution","weight":284,"cookies":false,"type":"","demo":"functions\/get-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-execution.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"executionId","description":"Execution ID.","required":true,"type":"string","x-example":"[EXECUTION_ID]","in":"path"}]}},"\/functions\/{functionId}\/usage":{"get":{"summary":"Get function usage","operationId":"functionsGetFunctionUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"","responses":{"200":{"description":"UsageFunction","schema":{"$ref":"#\/definitions\/usageFunction"}}},"x-appwrite":{"method":"getFunctionUsage","weight":271,"cookies":false,"type":"","demo":"functions\/get-function-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","enum":["24h","30d","90d"],"x-enum-name":"FunctionUsageRange","x-enum-keys":["Twenty Four Hours","Thirty Days","Ninety Days"],"default":"30d","in":"query"}]}},"\/functions\/{functionId}\/variables":{"get":{"summary":"List variables","operationId":"functionsListVariables","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all variables of a specific function.","responses":{"200":{"description":"Variables List","schema":{"$ref":"#\/definitions\/variableList"}}},"x-appwrite":{"method":"listVariables","weight":286,"cookies":false,"type":"","demo":"functions\/list-variables.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-variables.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"}]},"post":{"summary":"Create variable","operationId":"functionsCreateVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function environment variable. These variables can be accessed in the function at runtime as environment variables.","responses":{"201":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"createVariable","weight":285,"cookies":false,"type":"","demo":"functions\/create-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","default":null,"x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","default":null,"x-example":"[VALUE]"}},"required":["key","value"]}}]}},"\/functions\/{functionId}\/variables\/{variableId}":{"get":{"summary":"Get variable","operationId":"functionsGetVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a variable by its unique ID.","responses":{"200":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"getVariable","weight":287,"cookies":false,"type":"","demo":"functions\/get-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"}]},"put":{"summary":"Update variable","operationId":"functionsUpdateVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Update variable by its unique ID.","responses":{"200":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"updateVariable","weight":288,"cookies":false,"type":"","demo":"functions\/update-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","default":null,"x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","default":null,"x-example":"[VALUE]"}},"required":["key"]}}]},"delete":{"summary":"Delete variable","operationId":"functionsDeleteVariable","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"Delete a variable by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteVariable","weight":289,"cookies":false,"type":"","demo":"functions\/delete-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"}]}},"\/graphql":{"post":{"summary":"GraphQL endpoint","operationId":"graphqlQuery","consumes":["application\/json"],"produces":["application\/json"],"tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","schema":{"$ref":"#\/definitions\/any"}}},"x-appwrite":{"method":"query","weight":304,"cookies":false,"type":"graphql","demo":"graphql\/query.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"query":{"type":"object","description":"The query or queries to execute.","default":{},"x-example":"{}"}},"required":["query"]}}]}},"\/graphql\/mutation":{"post":{"summary":"GraphQL endpoint","operationId":"graphqlMutation","consumes":["application\/json"],"produces":["application\/json"],"tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","schema":{"$ref":"#\/definitions\/any"}}},"x-appwrite":{"method":"mutation","weight":303,"cookies":false,"type":"graphql","demo":"graphql\/mutation.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"query":{"type":"object","description":"The query or queries to execute.","default":{},"x-example":"{}"}},"required":["query"]}}]}},"\/health":{"get":{"summary":"Get HTTP","operationId":"healthGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite HTTP server is up and responsive.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"get","weight":119,"cookies":false,"type":"","demo":"health\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/anti-virus":{"get":{"summary":"Get antivirus","operationId":"healthGetAntivirus","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite Antivirus server is up and connection is successful.","responses":{"200":{"description":"Health Antivirus","schema":{"$ref":"#\/definitions\/healthAntivirus"}}},"x-appwrite":{"method":"getAntivirus","weight":138,"cookies":false,"type":"","demo":"health\/get-antivirus.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-storage-anti-virus.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/cache":{"get":{"summary":"Get cache","operationId":"healthGetCache","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite in-memory cache servers are up and connection is successful.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"getCache","weight":122,"cookies":false,"type":"","demo":"health\/get-cache.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-cache.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/certificate":{"get":{"summary":"Get the SSL certificate for a domain","operationId":"healthGetCertificate","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the SSL certificate for a domain","responses":{"200":{"description":"Health Certificate","schema":{"$ref":"#\/definitions\/healthCertificate"}}},"x-appwrite":{"method":"getCertificate","weight":128,"cookies":false,"type":"","demo":"health\/get-certificate.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-certificate.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"domain","description":"string","required":false,"type":"string","in":"query"}]}},"\/health\/db":{"get":{"summary":"Get DB","operationId":"healthGetDB","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite database servers are up and connection is successful.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"getDB","weight":121,"cookies":false,"type":"","demo":"health\/get-d-b.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-db.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/pubsub":{"get":{"summary":"Get pubsub","operationId":"healthGetPubSub","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite pub-sub servers are up and connection is successful.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"getPubSub","weight":124,"cookies":false,"type":"","demo":"health\/get-pub-sub.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-pubsub.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/queue":{"get":{"summary":"Get queue","operationId":"healthGetQueue","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite queue messaging servers are up and connection is successful.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"getQueue","weight":123,"cookies":false,"type":"","demo":"health\/get-queue.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/queue\/builds":{"get":{"summary":"Get builds queue","operationId":"healthGetQueueBuilds","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of builds that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueBuilds","weight":130,"cookies":false,"type":"","demo":"health\/get-queue-builds.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-builds.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/certificates":{"get":{"summary":"Get certificates queue","operationId":"healthGetQueueCertificates","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of certificates that are waiting to be issued against [Letsencrypt](https:\/\/letsencrypt.org\/) in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueCertificates","weight":129,"cookies":false,"type":"","demo":"health\/get-queue-certificates.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-certificates.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/databases":{"get":{"summary":"Get databases queue","operationId":"healthGetQueueDatabases","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of database changes that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueDatabases","weight":131,"cookies":false,"type":"","demo":"health\/get-queue-databases.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-databases.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"name","description":"Queue name for which to check the queue size","required":false,"type":"string","x-example":"[NAME]","default":"database_db_main","in":"query"},{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/deletes":{"get":{"summary":"Get deletes queue","operationId":"healthGetQueueDeletes","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of background destructive changes that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueDeletes","weight":132,"cookies":false,"type":"","demo":"health\/get-queue-deletes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-deletes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/failed\/{name}":{"get":{"summary":"Get number of failed queue jobs","operationId":"healthGetFailedJobs","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Returns the amount of failed jobs in a given queue.\n","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getFailedJobs","weight":139,"cookies":false,"type":"","demo":"health\/get-failed-jobs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-failed-queue-jobs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"name","description":"The name of the queue","required":true,"type":"string","x-example":"v1-database","enum":["v1-database","v1-deletes","v1-audits","v1-mails","v1-functions","v1-usage","webhooksv1","v1-certificates","v1-builds","v1-messaging","v1-migrations","hamsterv1"],"x-enum-name":null,"x-enum-keys":[],"in":"path"},{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/functions":{"get":{"summary":"Get functions queue","operationId":"healthGetQueueFunctions","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueFunctions","weight":136,"cookies":false,"type":"","demo":"health\/get-queue-functions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-functions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/logs":{"get":{"summary":"Get logs queue","operationId":"healthGetQueueLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of logs that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueLogs","weight":127,"cookies":false,"type":"","demo":"health\/get-queue-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/mails":{"get":{"summary":"Get mails queue","operationId":"healthGetQueueMails","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of mails that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueMails","weight":133,"cookies":false,"type":"","demo":"health\/get-queue-mails.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-mails.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/messaging":{"get":{"summary":"Get messaging queue","operationId":"healthGetQueueMessaging","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of messages that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueMessaging","weight":134,"cookies":false,"type":"","demo":"health\/get-queue-messaging.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-messaging.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/migrations":{"get":{"summary":"Get migrations queue","operationId":"healthGetQueueMigrations","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of migrations that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueMigrations","weight":135,"cookies":false,"type":"","demo":"health\/get-queue-migrations.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-migrations.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/webhooks":{"get":{"summary":"Get webhooks queue","operationId":"healthGetQueueWebhooks","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of webhooks that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueWebhooks","weight":126,"cookies":false,"type":"","demo":"health\/get-queue-webhooks.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-webhooks.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/storage\/local":{"get":{"summary":"Get local storage","operationId":"healthGetStorageLocal","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite local storage device is up and connection is successful.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"getStorageLocal","weight":137,"cookies":false,"type":"","demo":"health\/get-storage-local.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-storage-local.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/time":{"get":{"summary":"Get time","operationId":"healthGetTime","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite server time is synced with Google remote NTP server. We use this technology to smoothly handle leap seconds with no disruptive events. The [Network Time Protocol](https:\/\/en.wikipedia.org\/wiki\/Network_Time_Protocol) (NTP) is used by hundreds of millions of computers and devices to synchronize their clocks over the Internet. If your computer sets its own clock, it likely uses NTP.","responses":{"200":{"description":"Health Time","schema":{"$ref":"#\/definitions\/healthTime"}}},"x-appwrite":{"method":"getTime","weight":125,"cookies":false,"type":"","demo":"health\/get-time.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-time.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/locale":{"get":{"summary":"Get user locale","operationId":"localeGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"Get the current user location based on IP. Returns an object with user country code, country name, continent name, continent code, ip address and suggested currency. You can use the locale header to get the data in a supported language.\n\n([IP Geolocation by DB-IP](https:\/\/db-ip.com))","responses":{"200":{"description":"Locale","schema":{"$ref":"#\/definitions\/locale"}}},"x-appwrite":{"method":"get","weight":111,"cookies":false,"type":"","demo":"locale\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-locale.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/localed","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/codes":{"get":{"summary":"List Locale Codes","operationId":"localeListCodes","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all locale codes in [ISO 639-1](https:\/\/en.wikipedia.org\/wiki\/List_of_ISO_639-1_codes).","responses":{"200":{"description":"Locale codes list","schema":{"$ref":"#\/definitions\/localeCodeList"}}},"x-appwrite":{"method":"listCodes","weight":112,"cookies":false,"type":"","demo":"locale\/list-codes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-locale-codes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/localeCode","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/continents":{"get":{"summary":"List continents","operationId":"localeListContinents","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","schema":{"$ref":"#\/definitions\/continentList"}}},"x-appwrite":{"method":"listContinents","weight":116,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/continents","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List countries","operationId":"localeListCountries","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountries","weight":113,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/countries","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU countries","operationId":"localeListCountriesEU","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountriesEU","weight":114,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/countries\/eu","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List countries phone codes","operationId":"localeListCountriesPhones","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","schema":{"$ref":"#\/definitions\/phoneList"}}},"x-appwrite":{"method":"listCountriesPhones","weight":115,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/countries\/phones","offline-key":"","offline-response-key":"countryCode","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List currencies","operationId":"localeListCurrencies","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","schema":{"$ref":"#\/definitions\/currencyList"}}},"x-appwrite":{"method":"listCurrencies","weight":117,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/currencies","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List languages","operationId":"localeListLanguages","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","schema":{"$ref":"#\/definitions\/languageList"}}},"x-appwrite":{"method":"listLanguages","weight":118,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/languages","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/messaging\/messages":{"get":{"summary":"List messages","operationId":"messagingListMessages","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Message list","schema":{"$ref":"#\/definitions\/messageList"}}},"x-appwrite":{"method":"listMessages","weight":363,"cookies":false,"type":"","demo":"messaging\/list-messages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-messages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: scheduledAt, deliveredAt, deliveredTotal, status, description, providerType","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]}},"\/messaging\/messages\/email":{"post":{"summary":"Create an email.","operationId":"messagingCreateEmail","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Message","schema":{"$ref":"#\/definitions\/message"}}},"x-appwrite":{"method":"createEmail","weight":360,"cookies":false,"type":"","demo":"messaging\/create-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"messageId":{"type":"string","description":"Message ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[MESSAGE_ID]"},"subject":{"type":"string","description":"Email Subject.","default":null,"x-example":"[SUBJECT]"},"content":{"type":"string","description":"Email Content.","default":null,"x-example":"[CONTENT]"},"topics":{"type":"array","description":"List of Topic IDs.","default":[],"x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","default":[],"x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","default":[],"x-example":null,"items":{"type":"string"}},"cc":{"type":"array","description":"Array of target IDs to be added as CC.","default":[],"x-example":null,"items":{"type":"string"}},"bcc":{"type":"array","description":"Array of target IDs to be added as BCC.","default":[],"x-example":null,"items":{"type":"string"}},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","default":"draft","x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":"MessageStatus","x-enum-keys":[]},"html":{"type":"boolean","description":"Is content of type HTML","default":false,"x-example":false},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","default":null,"x-example":null}},"required":["messageId","subject","content"]}}]}},"\/messaging\/messages\/email\/{messageId}":{"patch":{"summary":"Update an email.","operationId":"messagingUpdateEmail","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Message","schema":{"$ref":"#\/definitions\/message"}}},"x-appwrite":{"method":"updateEmail","weight":367,"cookies":false,"type":"","demo":"messaging\/update-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"type":"string","x-example":"[MESSAGE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"topics":{"type":"array","description":"List of Topic IDs.","default":null,"x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","default":null,"x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","default":null,"x-example":null,"items":{"type":"string"}},"subject":{"type":"string","description":"Email Subject.","default":null,"x-example":"[SUBJECT]"},"content":{"type":"string","description":"Email Content.","default":null,"x-example":"[CONTENT]"},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","default":null,"x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":"MessageStatus","x-enum-keys":[]},"html":{"type":"boolean","description":"Is content of type HTML","default":null,"x-example":false},"cc":{"type":"array","description":"Array of target IDs to be added as CC.","default":null,"x-example":null,"items":{"type":"string"}},"bcc":{"type":"array","description":"Array of target IDs to be added as BCC.","default":null,"x-example":null,"items":{"type":"string"}},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","default":null,"x-example":null}}}}]}},"\/messaging\/messages\/push":{"post":{"summary":"Create a push notification.","operationId":"messagingCreatePush","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Message","schema":{"$ref":"#\/definitions\/message"}}},"x-appwrite":{"method":"createPush","weight":362,"cookies":false,"type":"","demo":"messaging\/create-push.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-push-notification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"messageId":{"type":"string","description":"Message ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[MESSAGE_ID]"},"title":{"type":"string","description":"Title for push notification.","default":null,"x-example":"[TITLE]"},"body":{"type":"string","description":"Body for push notification.","default":null,"x-example":"[BODY]"},"topics":{"type":"array","description":"List of Topic IDs.","default":[],"x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","default":[],"x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","default":[],"x-example":null,"items":{"type":"string"}},"data":{"type":"object","description":"Additional Data for push notification.","default":{},"x-example":"{}"},"action":{"type":"string","description":"Action for push notification.","default":"","x-example":"[ACTION]"},"icon":{"type":"string","description":"Icon for push notification. Available only for Android and Web Platform.","default":"","x-example":"[ICON]"},"sound":{"type":"string","description":"Sound for push notification. Available only for Android and IOS Platform.","default":"","x-example":"[SOUND]"},"color":{"type":"string","description":"Color for push notification. Available only for Android Platform.","default":"","x-example":"[COLOR]"},"tag":{"type":"string","description":"Tag for push notification. Available only for Android Platform.","default":"","x-example":"[TAG]"},"badge":{"type":"string","description":"Badge for push notification. Available only for IOS Platform.","default":"","x-example":"[BADGE]"},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","default":"draft","x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":"MessageStatus","x-enum-keys":[]},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","default":null,"x-example":null}},"required":["messageId","title","body"]}}]}},"\/messaging\/messages\/push\/{messageId}":{"patch":{"summary":"Update a push notification.","operationId":"messagingUpdatePush","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Message","schema":{"$ref":"#\/definitions\/message"}}},"x-appwrite":{"method":"updatePush","weight":369,"cookies":false,"type":"","demo":"messaging\/update-push.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-push-notification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"type":"string","x-example":"[MESSAGE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"topics":{"type":"array","description":"List of Topic IDs.","default":null,"x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","default":null,"x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","default":null,"x-example":null,"items":{"type":"string"}},"title":{"type":"string","description":"Title for push notification.","default":null,"x-example":"[TITLE]"},"body":{"type":"string","description":"Body for push notification.","default":null,"x-example":"[BODY]"},"data":{"type":"object","description":"Additional Data for push notification.","default":{},"x-example":"{}"},"action":{"type":"string","description":"Action for push notification.","default":null,"x-example":"[ACTION]"},"icon":{"type":"string","description":"Icon for push notification. Available only for Android and Web platforms.","default":null,"x-example":"[ICON]"},"sound":{"type":"string","description":"Sound for push notification. Available only for Android and iOS platforms.","default":null,"x-example":"[SOUND]"},"color":{"type":"string","description":"Color for push notification. Available only for Android platforms.","default":null,"x-example":"[COLOR]"},"tag":{"type":"string","description":"Tag for push notification. Available only for Android platforms.","default":null,"x-example":"[TAG]"},"badge":{"type":"integer","description":"Badge for push notification. Available only for iOS platforms.","default":null,"x-example":null},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","default":null,"x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":"MessageStatus","x-enum-keys":[]},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","default":null,"x-example":null}}}}]}},"\/messaging\/messages\/sms":{"post":{"summary":"Create an SMS.","operationId":"messagingCreateSMS","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Message","schema":{"$ref":"#\/definitions\/message"}}},"x-appwrite":{"method":"createSMS","weight":361,"cookies":false,"type":"","demo":"messaging\/create-s-m-s.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-sms.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"messageId":{"type":"string","description":"Message ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[MESSAGE_ID]"},"content":{"type":"string","description":"SMS Content.","default":null,"x-example":"[CONTENT]"},"topics":{"type":"array","description":"List of Topic IDs.","default":[],"x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","default":[],"x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","default":[],"x-example":null,"items":{"type":"string"}},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","default":"draft","x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":"MessageStatus","x-enum-keys":[]},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","default":null,"x-example":null}},"required":["messageId","content"]}}]}},"\/messaging\/messages\/sms\/{messageId}":{"patch":{"summary":"Update an SMS.","operationId":"messagingUpdateSMS","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Message","schema":{"$ref":"#\/definitions\/message"}}},"x-appwrite":{"method":"updateSMS","weight":368,"cookies":false,"type":"","demo":"messaging\/update-s-m-s.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"type":"string","x-example":"[MESSAGE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"topics":{"type":"array","description":"List of Topic IDs.","default":null,"x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","default":null,"x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","default":null,"x-example":null,"items":{"type":"string"}},"content":{"type":"string","description":"Email Content.","default":null,"x-example":"[CONTENT]"},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","default":null,"x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":"MessageStatus","x-enum-keys":[]},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","default":null,"x-example":null}}}}]}},"\/messaging\/messages\/{messageId}":{"get":{"summary":"Get a message","operationId":"messagingGetMessage","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Message","schema":{"$ref":"#\/definitions\/message"}}},"x-appwrite":{"method":"getMessage","weight":366,"cookies":false,"type":"","demo":"messaging\/get-message.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/get-message.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"type":"string","x-example":"[MESSAGE_ID]","in":"path"}]},"delete":{"summary":"Delete a message","operationId":"messagingDelete","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":370,"cookies":false,"type":"","demo":"messaging\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-message.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"type":"string","x-example":"[MESSAGE_ID]","in":"path"}]}},"\/messaging\/messages\/{messageId}\/logs":{"get":{"summary":"List message logs","operationId":"messagingListMessageLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listMessageLogs","weight":364,"cookies":false,"type":"","demo":"messaging\/list-message-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/messages\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"type":"string","x-example":"[MESSAGE_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/messaging\/messages\/{messageId}\/targets":{"get":{"summary":"List message targets","operationId":"messagingListTargets","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"List the targets associated with a message as set via the targets attribute.","responses":{"200":{"description":"Target list","schema":{"$ref":"#\/definitions\/targetList"}}},"x-appwrite":{"method":"listTargets","weight":365,"cookies":false,"type":"","demo":"messaging\/list-targets.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-message-targets.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"type":"string","x-example":"[MESSAGE_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, providerId, identifier, providerType","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/messaging\/providers":{"get":{"summary":"List providers","operationId":"messagingListProviders","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider list","schema":{"$ref":"#\/definitions\/providerList"}}},"x-appwrite":{"method":"listProviders","weight":335,"cookies":false,"type":"","demo":"messaging\/list-providers.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-providers.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, provider, type, enabled","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]}},"\/messaging\/providers\/apns":{"post":{"summary":"Create APNS provider","operationId":"messagingCreateAPNSProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createAPNSProvider","weight":334,"cookies":false,"type":"","demo":"messaging\/create-a-p-n-s-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-apns-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"authKey":{"type":"string","description":"APNS authentication key.","default":"","x-example":"[AUTH_KEY]"},"authKeyId":{"type":"string","description":"APNS authentication key ID.","default":"","x-example":"[AUTH_KEY_ID]"},"teamId":{"type":"string","description":"APNS team ID.","default":"","x-example":"[TEAM_ID]"},"bundleId":{"type":"string","description":"APNS bundle ID.","default":"","x-example":"[BUNDLE_ID]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name"]}}]}},"\/messaging\/providers\/apns\/{providerId}":{"patch":{"summary":"Update APNS provider","operationId":"messagingUpdateAPNSProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateAPNSProvider","weight":347,"cookies":false,"type":"","demo":"messaging\/update-a-p-n-s-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-apns-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"authKey":{"type":"string","description":"APNS authentication key.","default":"","x-example":"[AUTH_KEY]"},"authKeyId":{"type":"string","description":"APNS authentication key ID.","default":"","x-example":"[AUTH_KEY_ID]"},"teamId":{"type":"string","description":"APNS team ID.","default":"","x-example":"[TEAM_ID]"},"bundleId":{"type":"string","description":"APNS bundle ID.","default":"","x-example":"[BUNDLE_ID]"}}}}]}},"\/messaging\/providers\/fcm":{"post":{"summary":"Create FCM provider","operationId":"messagingCreateFCMProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createFCMProvider","weight":333,"cookies":false,"type":"","demo":"messaging\/create-f-c-m-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-fcm-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"serviceAccountJSON":{"type":"object","description":"FCM service account JSON.","default":{},"x-example":"{}"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name"]}}]}},"\/messaging\/providers\/fcm\/{providerId}":{"patch":{"summary":"Update FCM provider","operationId":"messagingUpdateFCMProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateFCMProvider","weight":346,"cookies":false,"type":"","demo":"messaging\/update-f-c-m-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-fcm-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"serviceAccountJSON":{"type":"object","description":"FCM service account JSON.","default":{},"x-example":"{}"}}}}]}},"\/messaging\/providers\/mailgun":{"post":{"summary":"Create Mailgun provider","operationId":"messagingCreateMailgunProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createMailgunProvider","weight":325,"cookies":false,"type":"","demo":"messaging\/create-mailgun-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-mailgun-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"apiKey":{"type":"string","description":"Mailgun API Key.","default":"","x-example":"[API_KEY]"},"domain":{"type":"string","description":"Mailgun Domain.","default":"","x-example":"[DOMAIN]"},"isEuRegion":{"type":"boolean","description":"Set as EU region.","default":null,"x-example":false},"fromName":{"type":"string","description":"Sender Name.","default":"","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","default":"","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the reply to field for the mail. Default value is sender name. Reply to name must have reply to email as well.","default":"","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the reply to field for the mail. Default value is sender email. Reply to email must have reply to name as well.","default":"","x-example":"email@example.com"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name"]}}]}},"\/messaging\/providers\/mailgun\/{providerId}":{"patch":{"summary":"Update Mailgun provider","operationId":"messagingUpdateMailgunProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateMailgunProvider","weight":338,"cookies":false,"type":"","demo":"messaging\/update-mailgun-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-mailgun-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"apiKey":{"type":"string","description":"Mailgun API Key.","default":"","x-example":"[API_KEY]"},"domain":{"type":"string","description":"Mailgun Domain.","default":"","x-example":"[DOMAIN]"},"isEuRegion":{"type":"boolean","description":"Set as EU region.","default":null,"x-example":false},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"fromName":{"type":"string","description":"Sender Name.","default":"","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","default":"","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the reply to field for the mail. Default value is sender name.","default":"","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the reply to field for the mail. Default value is sender email.","default":"","x-example":"[REPLY_TO_EMAIL]"}}}}]}},"\/messaging\/providers\/msg91":{"post":{"summary":"Create Msg91 provider","operationId":"messagingCreateMsg91Provider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createMsg91Provider","weight":328,"cookies":false,"type":"","demo":"messaging\/create-msg91provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-msg91-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":"","x-example":"+12065550100"},"senderId":{"type":"string","description":"Msg91 Sender ID.","default":"","x-example":"[SENDER_ID]"},"authKey":{"type":"string","description":"Msg91 Auth Key.","default":"","x-example":"[AUTH_KEY]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name"]}}]}},"\/messaging\/providers\/msg91\/{providerId}":{"patch":{"summary":"Update Msg91 provider","operationId":"messagingUpdateMsg91Provider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateMsg91Provider","weight":341,"cookies":false,"type":"","demo":"messaging\/update-msg91provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-msg91-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"senderId":{"type":"string","description":"Msg91 Sender ID.","default":"","x-example":"[SENDER_ID]"},"authKey":{"type":"string","description":"Msg91 Auth Key.","default":"","x-example":"[AUTH_KEY]"},"from":{"type":"string","description":"Sender number.","default":"","x-example":"[FROM]"}}}}]}},"\/messaging\/providers\/sendgrid":{"post":{"summary":"Create Sendgrid provider","operationId":"messagingCreateSendgridProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createSendgridProvider","weight":326,"cookies":false,"type":"","demo":"messaging\/create-sendgrid-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-sengrid-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"apiKey":{"type":"string","description":"Sendgrid API key.","default":"","x-example":"[API_KEY]"},"fromName":{"type":"string","description":"Sender Name.","default":"","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","default":"","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the reply to field for the mail. Default value is sender name.","default":"","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the reply to field for the mail. Default value is sender email.","default":"","x-example":"email@example.com"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name"]}}]}},"\/messaging\/providers\/sendgrid\/{providerId}":{"patch":{"summary":"Update Sendgrid provider","operationId":"messagingUpdateSendgridProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateSendgridProvider","weight":339,"cookies":false,"type":"","demo":"messaging\/update-sendgrid-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-sendgrid-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"apiKey":{"type":"string","description":"Sendgrid API key.","default":"","x-example":"[API_KEY]"},"fromName":{"type":"string","description":"Sender Name.","default":"","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","default":"","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the Reply To field for the mail. Default value is Sender Name.","default":"","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the Reply To field for the mail. Default value is Sender Email.","default":"","x-example":"[REPLY_TO_EMAIL]"}}}}]}},"\/messaging\/providers\/smtp":{"post":{"summary":"Create SMTP provider","operationId":"messagingCreateSMTPProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createSMTPProvider","weight":327,"cookies":false,"type":"","demo":"messaging\/create-s-m-t-p-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-smtp-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"host":{"type":"string","description":"SMTP hosts. Either a single hostname or multiple semicolon-delimited hostnames. You can also specify a different port for each host by using this format: [hostname:port] (e.g. \"smtp1.example.com:25;smtp2.example.com\"). You can also specify encryption type, for example: (e.g. \"tls:\/\/smtp1.example.com:587;ssl:\/\/smtp2.example.com:465\"). Hosts will be tried in order.","default":null,"x-example":"[HOST]"},"port":{"type":"integer","description":"The default SMTP server port.","default":587,"x-example":1},"username":{"type":"string","description":"Authentication username.","default":"","x-example":"[USERNAME]"},"password":{"type":"string","description":"Authentication password.","default":"","x-example":"[PASSWORD]"},"encryption":{"type":"string","description":"Encryption type. Can be omitted, 'ssl', or 'tls'","default":"","x-example":"none","enum":["none","ssl","tls"],"x-enum-name":"SMTPEncryption","x-enum-keys":[]},"autoTLS":{"type":"boolean","description":"Enable SMTP AutoTLS feature.","default":true,"x-example":false},"mailer":{"type":"string","description":"The value to use for the X-Mailer header.","default":"","x-example":"[MAILER]"},"fromName":{"type":"string","description":"Sender Name.","default":"","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","default":"","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the reply to field for the mail. Default value is sender name.","default":"","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the reply to field for the mail. Default value is sender email.","default":"","x-example":"email@example.com"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name","host"]}}]}},"\/messaging\/providers\/smtp\/{providerId}":{"patch":{"summary":"Update SMTP provider","operationId":"messagingUpdateSMTPProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateSMTPProvider","weight":340,"cookies":false,"type":"","demo":"messaging\/update-s-m-t-p-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-smtp-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"host":{"type":"string","description":"SMTP hosts. Either a single hostname or multiple semicolon-delimited hostnames. You can also specify a different port for each host by using this format: [hostname:port] (e.g. \"smtp1.example.com:25;smtp2.example.com\"). You can also specify encryption type, for example: (e.g. \"tls:\/\/smtp1.example.com:587;ssl:\/\/smtp2.example.com:465\"). Hosts will be tried in order.","default":"","x-example":"[HOST]"},"port":{"type":"integer","description":"SMTP port.","default":null,"x-example":1},"username":{"type":"string","description":"Authentication username.","default":"","x-example":"[USERNAME]"},"password":{"type":"string","description":"Authentication password.","default":"","x-example":"[PASSWORD]"},"encryption":{"type":"string","description":"Encryption type. Can be 'ssl' or 'tls'","default":"","x-example":"none","enum":["none","ssl","tls"],"x-enum-name":"SMTPEncryption","x-enum-keys":[]},"autoTLS":{"type":"boolean","description":"Enable SMTP AutoTLS feature.","default":null,"x-example":false},"mailer":{"type":"string","description":"The value to use for the X-Mailer header.","default":"","x-example":"[MAILER]"},"fromName":{"type":"string","description":"Sender Name.","default":"","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","default":"","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the Reply To field for the mail. Default value is Sender Name.","default":"","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the Reply To field for the mail. Default value is Sender Email.","default":"","x-example":"[REPLY_TO_EMAIL]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}}}}]}},"\/messaging\/providers\/telesign":{"post":{"summary":"Create Telesign provider","operationId":"messagingCreateTelesignProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createTelesignProvider","weight":329,"cookies":false,"type":"","demo":"messaging\/create-telesign-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-telesign-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":"","x-example":"+12065550100"},"customerId":{"type":"string","description":"Telesign customer ID.","default":"","x-example":"[CUSTOMER_ID]"},"apiKey":{"type":"string","description":"Telesign API key.","default":"","x-example":"[API_KEY]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name"]}}]}},"\/messaging\/providers\/telesign\/{providerId}":{"patch":{"summary":"Update Telesign provider","operationId":"messagingUpdateTelesignProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateTelesignProvider","weight":342,"cookies":false,"type":"","demo":"messaging\/update-telesign-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-telesign-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"customerId":{"type":"string","description":"Telesign customer ID.","default":"","x-example":"[CUSTOMER_ID]"},"apiKey":{"type":"string","description":"Telesign API key.","default":"","x-example":"[API_KEY]"},"from":{"type":"string","description":"Sender number.","default":"","x-example":"[FROM]"}}}}]}},"\/messaging\/providers\/textmagic":{"post":{"summary":"Create Textmagic provider","operationId":"messagingCreateTextmagicProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createTextmagicProvider","weight":330,"cookies":false,"type":"","demo":"messaging\/create-textmagic-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-textmagic-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":"","x-example":"+12065550100"},"username":{"type":"string","description":"Textmagic username.","default":"","x-example":"[USERNAME]"},"apiKey":{"type":"string","description":"Textmagic apiKey.","default":"","x-example":"[API_KEY]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name"]}}]}},"\/messaging\/providers\/textmagic\/{providerId}":{"patch":{"summary":"Update Textmagic provider","operationId":"messagingUpdateTextmagicProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateTextmagicProvider","weight":343,"cookies":false,"type":"","demo":"messaging\/update-textmagic-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-textmagic-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"username":{"type":"string","description":"Textmagic username.","default":"","x-example":"[USERNAME]"},"apiKey":{"type":"string","description":"Textmagic apiKey.","default":"","x-example":"[API_KEY]"},"from":{"type":"string","description":"Sender number.","default":"","x-example":"[FROM]"}}}}]}},"\/messaging\/providers\/twilio":{"post":{"summary":"Create Twilio provider","operationId":"messagingCreateTwilioProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createTwilioProvider","weight":331,"cookies":false,"type":"","demo":"messaging\/create-twilio-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-twilio-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":"","x-example":"+12065550100"},"accountSid":{"type":"string","description":"Twilio account secret ID.","default":"","x-example":"[ACCOUNT_SID]"},"authToken":{"type":"string","description":"Twilio authentication token.","default":"","x-example":"[AUTH_TOKEN]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name"]}}]}},"\/messaging\/providers\/twilio\/{providerId}":{"patch":{"summary":"Update Twilio provider","operationId":"messagingUpdateTwilioProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateTwilioProvider","weight":344,"cookies":false,"type":"","demo":"messaging\/update-twilio-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-twilio-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"accountSid":{"type":"string","description":"Twilio account secret ID.","default":"","x-example":"[ACCOUNT_SID]"},"authToken":{"type":"string","description":"Twilio authentication token.","default":"","x-example":"[AUTH_TOKEN]"},"from":{"type":"string","description":"Sender number.","default":"","x-example":"[FROM]"}}}}]}},"\/messaging\/providers\/vonage":{"post":{"summary":"Create Vonage provider","operationId":"messagingCreateVonageProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createVonageProvider","weight":332,"cookies":false,"type":"","demo":"messaging\/create-vonage-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-vonage-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":"","x-example":"+12065550100"},"apiKey":{"type":"string","description":"Vonage API key.","default":"","x-example":"[API_KEY]"},"apiSecret":{"type":"string","description":"Vonage API secret.","default":"","x-example":"[API_SECRET]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name"]}}]}},"\/messaging\/providers\/vonage\/{providerId}":{"patch":{"summary":"Update Vonage provider","operationId":"messagingUpdateVonageProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateVonageProvider","weight":345,"cookies":false,"type":"","demo":"messaging\/update-vonage-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-vonage-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"apiKey":{"type":"string","description":"Vonage API key.","default":"","x-example":"[API_KEY]"},"apiSecret":{"type":"string","description":"Vonage API secret.","default":"","x-example":"[API_SECRET]"},"from":{"type":"string","description":"Sender number.","default":"","x-example":"[FROM]"}}}}]}},"\/messaging\/providers\/{providerId}":{"get":{"summary":"Get provider","operationId":"messagingGetProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"getProvider","weight":337,"cookies":false,"type":"","demo":"messaging\/get-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/get-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"}]},"delete":{"summary":"Delete provider","operationId":"messagingDeleteProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteProvider","weight":348,"cookies":false,"type":"","demo":"messaging\/delete-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"}]}},"\/messaging\/providers\/{providerId}\/logs":{"get":{"summary":"List provider logs","operationId":"messagingListProviderLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listProviderLogs","weight":336,"cookies":false,"type":"","demo":"messaging\/list-provider-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/providers\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/messaging\/subscribers\/{subscriberId}\/logs":{"get":{"summary":"List subscriber logs","operationId":"messagingListSubscriberLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listSubscriberLogs","weight":357,"cookies":false,"type":"","demo":"messaging\/list-subscriber-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/subscribers\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"subscriberId","description":"Subscriber ID.","required":true,"type":"string","x-example":"[SUBSCRIBER_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/messaging\/topics":{"get":{"summary":"List topics.","operationId":"messagingListTopics","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Topic list","schema":{"$ref":"#\/definitions\/topicList"}}},"x-appwrite":{"method":"listTopics","weight":350,"cookies":false,"type":"","demo":"messaging\/list-topics.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-topics.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, description, total","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create a topic.","operationId":"messagingCreateTopic","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Topic","schema":{"$ref":"#\/definitions\/topic"}}},"x-appwrite":{"method":"createTopic","weight":349,"cookies":false,"type":"","demo":"messaging\/create-topic.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-topic.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"topicId":{"type":"string","description":"Topic ID. Choose a custom Topic ID or a new Topic ID.","default":null,"x-example":"[TOPIC_ID]"},"name":{"type":"string","description":"Topic Name.","default":null,"x-example":"[NAME]"},"subscribe":{"type":"array","description":"An array of role strings with subscribe permission. By default all users are granted with any subscribe permission. [learn more about roles](https:\/\/appwrite.io\/docs\/permissions#permission-roles). Maximum of 100 roles are allowed, each 64 characters long.","default":["users"],"x-example":"[\"any\"]","items":{"type":"string"}}},"required":["topicId","name"]}}]}},"\/messaging\/topics\/{topicId}":{"get":{"summary":"Get a topic.","operationId":"messagingGetTopic","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Topic","schema":{"$ref":"#\/definitions\/topic"}}},"x-appwrite":{"method":"getTopic","weight":352,"cookies":false,"type":"","demo":"messaging\/get-topic.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/get-topic.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID.","required":true,"type":"string","x-example":"[TOPIC_ID]","in":"path"}]},"patch":{"summary":"Update a topic.","operationId":"messagingUpdateTopic","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Topic","schema":{"$ref":"#\/definitions\/topic"}}},"x-appwrite":{"method":"updateTopic","weight":353,"cookies":false,"type":"","demo":"messaging\/update-topic.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-topic.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID.","required":true,"type":"string","x-example":"[TOPIC_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Topic Name.","default":"","x-example":"[NAME]"}}}}]},"delete":{"summary":"Delete a topic.","operationId":"messagingDeleteTopic","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteTopic","weight":354,"cookies":false,"type":"","demo":"messaging\/delete-topic.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-topic.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID.","required":true,"type":"string","x-example":"[TOPIC_ID]","in":"path"}]}},"\/messaging\/topics\/{topicId}\/logs":{"get":{"summary":"List topic logs","operationId":"messagingListTopicLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listTopicLogs","weight":351,"cookies":false,"type":"","demo":"messaging\/list-topic-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/topics\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID.","required":true,"type":"string","x-example":"[TOPIC_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/messaging\/topics\/{topicId}\/subscribers":{"get":{"summary":"List subscribers.","operationId":"messagingListSubscribers","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Subscriber list","schema":{"$ref":"#\/definitions\/subscriberList"}}},"x-appwrite":{"method":"listSubscribers","weight":356,"cookies":false,"type":"","demo":"messaging\/list-subscribers.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-subscribers.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID subscribed to.","required":true,"type":"string","x-example":"[TOPIC_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, provider, type, enabled","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create a subscriber.","operationId":"messagingCreateSubscriber","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Subscriber","schema":{"$ref":"#\/definitions\/subscriber"}}},"x-appwrite":{"method":"createSubscriber","weight":355,"cookies":false,"type":"","demo":"messaging\/create-subscriber.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-subscriber.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.write","platforms":["server","client","console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID to subscribe to.","required":true,"type":"string","x-example":"[TOPIC_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"subscriberId":{"type":"string","description":"Subscriber ID. Choose a custom Subscriber ID or a new Subscriber ID.","default":null,"x-example":"[SUBSCRIBER_ID]"},"targetId":{"type":"string","description":"Target ID. The target ID to link to the specified Topic ID.","default":null,"x-example":"[TARGET_ID]"}},"required":["subscriberId","targetId"]}}]}},"\/messaging\/topics\/{topicId}\/subscribers\/{subscriberId}":{"get":{"summary":"Get a subscriber.","operationId":"messagingGetSubscriber","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Subscriber","schema":{"$ref":"#\/definitions\/subscriber"}}},"x-appwrite":{"method":"getSubscriber","weight":358,"cookies":false,"type":"","demo":"messaging\/get-subscriber.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/get-subscriber.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID subscribed to.","required":true,"type":"string","x-example":"[TOPIC_ID]","in":"path"},{"name":"subscriberId","description":"Subscriber ID.","required":true,"type":"string","x-example":"[SUBSCRIBER_ID]","in":"path"}]},"delete":{"summary":"Delete a subscriber.","operationId":"messagingDeleteSubscriber","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSubscriber","weight":359,"cookies":false,"type":"","demo":"messaging\/delete-subscriber.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-subscriber.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.write","platforms":["server","client","console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID subscribed to.","required":true,"type":"string","x-example":"[TOPIC_ID]","in":"path"},{"name":"subscriberId","description":"Subscriber ID.","required":true,"type":"string","x-example":"[SUBSCRIBER_ID]","in":"path"}]}},"\/migrations":{"get":{"summary":"List Migrations","operationId":"migrationsList","consumes":["application\/json"],"produces":["application\/json"],"tags":["migrations"],"description":"","responses":{"200":{"description":"Migrations List","schema":{"$ref":"#\/definitions\/migrationList"}}},"x-appwrite":{"method":"list","weight":312,"cookies":false,"type":"","demo":"migrations\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/list-migrations.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: status, stage, source, resources, statusCounters, resourceData, errors","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]}},"\/migrations\/appwrite":{"post":{"summary":"Migrate Appwrite Data","operationId":"migrationsCreateAppwriteMigration","consumes":["application\/json"],"produces":["application\/json"],"tags":["migrations"],"description":"","responses":{"202":{"description":"Migration","schema":{"$ref":"#\/definitions\/migration"}}},"x-appwrite":{"method":"createAppwriteMigration","weight":307,"cookies":false,"type":"","demo":"migrations\/create-appwrite-migration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-appwrite.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"resources":{"type":"array","description":"List of resources to migrate","default":null,"x-example":null,"items":{"type":"string"}},"endpoint":{"type":"string","description":"Source's Appwrite Endpoint","default":null,"x-example":"https:\/\/example.com"},"projectId":{"type":"string","description":"Source's Project ID","default":null,"x-example":"[PROJECT_ID]"},"apiKey":{"type":"string","description":"Source's API Key","default":null,"x-example":"[API_KEY]"}},"required":["resources","endpoint","projectId","apiKey"]}}]}},"\/migrations\/appwrite\/report":{"get":{"summary":"Generate a report on Appwrite Data","operationId":"migrationsGetAppwriteReport","consumes":["application\/json"],"produces":["application\/json"],"tags":["migrations"],"description":"","responses":{"200":{"description":"Migration Report","schema":{"$ref":"#\/definitions\/migrationReport"}}},"x-appwrite":{"method":"getAppwriteReport","weight":314,"cookies":false,"type":"","demo":"migrations\/get-appwrite-report.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-appwrite-report.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"resources","description":"List of resources to migrate","required":true,"type":"array","collectionFormat":"multi","items":{"type":"string"},"in":"query"},{"name":"endpoint","description":"Source's Appwrite Endpoint","required":true,"type":"string","format":"url","x-example":"https:\/\/example.com","in":"query"},{"name":"projectID","description":"Source's Project ID","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"query"},{"name":"key","description":"Source's API Key","required":true,"type":"string","x-example":"[KEY]","in":"query"}]}},"\/migrations\/firebase":{"post":{"summary":"Migrate Firebase Data (Service Account)","operationId":"migrationsCreateFirebaseMigration","consumes":["application\/json"],"produces":["application\/json"],"tags":["migrations"],"description":"","responses":{"202":{"description":"Migration","schema":{"$ref":"#\/definitions\/migration"}}},"x-appwrite":{"method":"createFirebaseMigration","weight":309,"cookies":false,"type":"","demo":"migrations\/create-firebase-migration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-firebase.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"resources":{"type":"array","description":"List of resources to migrate","default":null,"x-example":null,"items":{"type":"string"}},"serviceAccount":{"type":"string","description":"JSON of the Firebase service account credentials","default":null,"x-example":"[SERVICE_ACCOUNT]"}},"required":["resources","serviceAccount"]}}]}},"\/migrations\/firebase\/deauthorize":{"get":{"summary":"Revoke Appwrite's authorization to access Firebase Projects","operationId":"migrationsDeleteFirebaseAuth","consumes":["application\/json"],"produces":["application\/json"],"tags":["migrations"],"description":"","responses":{"200":{"description":"File","schema":{"type":"file"}}},"x-appwrite":{"method":"deleteFirebaseAuth","weight":320,"cookies":false,"type":"","demo":"migrations\/delete-firebase-auth.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/migrations\/firebase\/oauth":{"post":{"summary":"Migrate Firebase Data (OAuth)","operationId":"migrationsCreateFirebaseOAuthMigration","consumes":["application\/json"],"produces":["application\/json"],"tags":["migrations"],"description":"","responses":{"202":{"description":"Migration","schema":{"$ref":"#\/definitions\/migration"}}},"x-appwrite":{"method":"createFirebaseOAuthMigration","weight":308,"cookies":false,"type":"","demo":"migrations\/create-firebase-o-auth-migration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-firebase.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"resources":{"type":"array","description":"List of resources to migrate","default":null,"x-example":null,"items":{"type":"string"}},"projectId":{"type":"string","description":"Project ID of the Firebase Project","default":null,"x-example":"[PROJECT_ID]"}},"required":["resources","projectId"]}}]}},"\/migrations\/firebase\/projects":{"get":{"summary":"List Firebase Projects","operationId":"migrationsListFirebaseProjects","consumes":["application\/json"],"produces":["application\/json"],"tags":["migrations"],"description":"","responses":{"200":{"description":"Migrations Firebase Projects List","schema":{"$ref":"#\/definitions\/firebaseProjectList"}}},"x-appwrite":{"method":"listFirebaseProjects","weight":319,"cookies":false,"type":"","demo":"migrations\/list-firebase-projects.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/migrations\/firebase\/report":{"get":{"summary":"Generate a report on Firebase Data","operationId":"migrationsGetFirebaseReport","consumes":["application\/json"],"produces":["application\/json"],"tags":["migrations"],"description":"","responses":{"200":{"description":"Migration Report","schema":{"$ref":"#\/definitions\/migrationReport"}}},"x-appwrite":{"method":"getFirebaseReport","weight":315,"cookies":false,"type":"","demo":"migrations\/get-firebase-report.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-firebase-report.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"resources","description":"List of resources to migrate","required":true,"type":"array","collectionFormat":"multi","items":{"type":"string"},"in":"query"},{"name":"serviceAccount","description":"JSON of the Firebase service account credentials","required":true,"type":"string","x-example":"[SERVICE_ACCOUNT]","in":"query"}]}},"\/migrations\/firebase\/report\/oauth":{"get":{"summary":"Generate a report on Firebase Data using OAuth","operationId":"migrationsGetFirebaseReportOAuth","consumes":["application\/json"],"produces":["application\/json"],"tags":["migrations"],"description":"","responses":{"200":{"description":"Migration Report","schema":{"$ref":"#\/definitions\/migrationReport"}}},"x-appwrite":{"method":"getFirebaseReportOAuth","weight":316,"cookies":false,"type":"","demo":"migrations\/get-firebase-report-o-auth.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-firebase-report.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"resources","description":"List of resources to migrate","required":true,"type":"array","collectionFormat":"multi","items":{"type":"string"},"in":"query"},{"name":"projectId","description":"Project ID","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"query"}]}},"\/migrations\/nhost":{"post":{"summary":"Migrate NHost Data","operationId":"migrationsCreateNHostMigration","consumes":["application\/json"],"produces":["application\/json"],"tags":["migrations"],"description":"","responses":{"202":{"description":"Migration","schema":{"$ref":"#\/definitions\/migration"}}},"x-appwrite":{"method":"createNHostMigration","weight":311,"cookies":false,"type":"","demo":"migrations\/create-n-host-migration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-nhost.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"resources":{"type":"array","description":"List of resources to migrate","default":null,"x-example":null,"items":{"type":"string"}},"subdomain":{"type":"string","description":"Source's Subdomain","default":null,"x-example":"[SUBDOMAIN]"},"region":{"type":"string","description":"Source's Region","default":null,"x-example":"[REGION]"},"adminSecret":{"type":"string","description":"Source's Admin Secret","default":null,"x-example":"[ADMIN_SECRET]"},"database":{"type":"string","description":"Source's Database Name","default":null,"x-example":"[DATABASE]"},"username":{"type":"string","description":"Source's Database Username","default":null,"x-example":"[USERNAME]"},"password":{"type":"string","description":"Source's Database Password","default":null,"x-example":"[PASSWORD]"},"port":{"type":"integer","description":"Source's Database Port","default":5432,"x-example":null}},"required":["resources","subdomain","region","adminSecret","database","username","password"]}}]}},"\/migrations\/nhost\/report":{"get":{"summary":"Generate a report on NHost Data","operationId":"migrationsGetNHostReport","consumes":["application\/json"],"produces":["application\/json"],"tags":["migrations"],"description":"","responses":{"200":{"description":"Migration Report","schema":{"$ref":"#\/definitions\/migrationReport"}}},"x-appwrite":{"method":"getNHostReport","weight":322,"cookies":false,"type":"","demo":"migrations\/get-n-host-report.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-nhost-report.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"resources","description":"List of resources to migrate.","required":true,"type":"array","collectionFormat":"multi","items":{"type":"string"},"in":"query"},{"name":"subdomain","description":"Source's Subdomain.","required":true,"type":"string","x-example":"[SUBDOMAIN]","in":"query"},{"name":"region","description":"Source's Region.","required":true,"type":"string","x-example":"[REGION]","in":"query"},{"name":"adminSecret","description":"Source's Admin Secret.","required":true,"type":"string","x-example":"[ADMIN_SECRET]","in":"query"},{"name":"database","description":"Source's Database Name.","required":true,"type":"string","x-example":"[DATABASE]","in":"query"},{"name":"username","description":"Source's Database Username.","required":true,"type":"string","x-example":"[USERNAME]","in":"query"},{"name":"password","description":"Source's Database Password.","required":true,"type":"string","x-example":"[PASSWORD]","in":"query"},{"name":"port","description":"Source's Database Port.","required":false,"type":"integer","format":"int32","default":5432,"in":"query"}]}},"\/migrations\/supabase":{"post":{"summary":"Migrate Supabase Data","operationId":"migrationsCreateSupabaseMigration","consumes":["application\/json"],"produces":["application\/json"],"tags":["migrations"],"description":"","responses":{"202":{"description":"Migration","schema":{"$ref":"#\/definitions\/migration"}}},"x-appwrite":{"method":"createSupabaseMigration","weight":310,"cookies":false,"type":"","demo":"migrations\/create-supabase-migration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-supabase.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"resources":{"type":"array","description":"List of resources to migrate","default":null,"x-example":null,"items":{"type":"string"}},"endpoint":{"type":"string","description":"Source's Supabase Endpoint","default":null,"x-example":"https:\/\/example.com"},"apiKey":{"type":"string","description":"Source's API Key","default":null,"x-example":"[API_KEY]"},"databaseHost":{"type":"string","description":"Source's Database Host","default":null,"x-example":"[DATABASE_HOST]"},"username":{"type":"string","description":"Source's Database Username","default":null,"x-example":"[USERNAME]"},"password":{"type":"string","description":"Source's Database Password","default":null,"x-example":"[PASSWORD]"},"port":{"type":"integer","description":"Source's Database Port","default":5432,"x-example":null}},"required":["resources","endpoint","apiKey","databaseHost","username","password"]}}]}},"\/migrations\/supabase\/report":{"get":{"summary":"Generate a report on Supabase Data","operationId":"migrationsGetSupabaseReport","consumes":["application\/json"],"produces":["application\/json"],"tags":["migrations"],"description":"","responses":{"200":{"description":"Migration Report","schema":{"$ref":"#\/definitions\/migrationReport"}}},"x-appwrite":{"method":"getSupabaseReport","weight":321,"cookies":false,"type":"","demo":"migrations\/get-supabase-report.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-supabase-report.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"resources","description":"List of resources to migrate","required":true,"type":"array","collectionFormat":"multi","items":{"type":"string"},"in":"query"},{"name":"endpoint","description":"Source's Supabase Endpoint.","required":true,"type":"string","format":"url","x-example":"https:\/\/example.com","in":"query"},{"name":"apiKey","description":"Source's API Key.","required":true,"type":"string","x-example":"[API_KEY]","in":"query"},{"name":"databaseHost","description":"Source's Database Host.","required":true,"type":"string","x-example":"[DATABASE_HOST]","in":"query"},{"name":"username","description":"Source's Database Username.","required":true,"type":"string","x-example":"[USERNAME]","in":"query"},{"name":"password","description":"Source's Database Password.","required":true,"type":"string","x-example":"[PASSWORD]","in":"query"},{"name":"port","description":"Source's Database Port.","required":false,"type":"integer","format":"int32","default":5432,"in":"query"}]}},"\/migrations\/{migrationId}":{"get":{"summary":"Get Migration","operationId":"migrationsGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["migrations"],"description":"","responses":{"200":{"description":"Migration","schema":{"$ref":"#\/definitions\/migration"}}},"x-appwrite":{"method":"get","weight":313,"cookies":false,"type":"","demo":"migrations\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/get-migration.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"migrationId","description":"Migration unique ID.","required":true,"type":"string","x-example":"[MIGRATION_ID]","in":"path"}]},"patch":{"summary":"Retry Migration","operationId":"migrationsRetry","consumes":["application\/json"],"produces":["application\/json"],"tags":["migrations"],"description":"","responses":{"202":{"description":"Migration","schema":{"$ref":"#\/definitions\/migration"}}},"x-appwrite":{"method":"retry","weight":323,"cookies":false,"type":"","demo":"migrations\/retry.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/retry-migration.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"migrationId","description":"Migration unique ID.","required":true,"type":"string","x-example":"[MIGRATION_ID]","in":"path"}]},"delete":{"summary":"Delete Migration","operationId":"migrationsDelete","consumes":["application\/json"],"produces":[],"tags":["migrations"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":324,"cookies":false,"type":"","demo":"migrations\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-migration.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"migrationId","description":"Migration ID.","required":true,"type":"string","x-example":"[MIGRATION_ID]","in":"path"}]}},"\/project\/usage":{"get":{"summary":"Get usage stats for a project","operationId":"projectGetUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["project"],"description":"","responses":{"200":{"description":"UsageProject","schema":{"$ref":"#\/definitions\/usageProject"}}},"x-appwrite":{"method":"getUsage","weight":181,"cookies":false,"type":"","demo":"project\/get-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"startDate","description":"Starting date for the usage","required":true,"type":"string","in":"query"},{"name":"endDate","description":"End date for the usage","required":true,"type":"string","in":"query"},{"name":"period","description":"Period used","required":false,"type":"string","x-example":"1h","enum":["1h","1d"],"x-enum-name":"ProjectUsageRange","x-enum-keys":["One Hour","One Day"],"default":"1d","in":"query"}]}},"\/project\/variables":{"get":{"summary":"List Variables","operationId":"projectListVariables","consumes":["application\/json"],"produces":["application\/json"],"tags":["project"],"description":"Get a list of all project variables. These variables will be accessible in all Appwrite Functions at runtime.","responses":{"200":{"description":"Variables List","schema":{"$ref":"#\/definitions\/variableList"}}},"x-appwrite":{"method":"listVariables","weight":183,"cookies":false,"type":"","demo":"project\/list-variables.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/project\/list-variables.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]},"post":{"summary":"Create Variable","operationId":"projectCreateVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["project"],"description":"Create a new project variable. This variable will be accessible in all Appwrite Functions at runtime.","responses":{"201":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"createVariable","weight":182,"cookies":false,"type":"","demo":"project\/create-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/project\/create-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","default":null,"x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","default":null,"x-example":"[VALUE]"}},"required":["key","value"]}}]}},"\/project\/variables\/{variableId}":{"get":{"summary":"Get Variable","operationId":"projectGetVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["project"],"description":"Get a project variable by its unique ID.","responses":{"200":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"getVariable","weight":184,"cookies":false,"type":"","demo":"project\/get-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/project\/get-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"}]},"put":{"summary":"Update Variable","operationId":"projectUpdateVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["project"],"description":"Update project variable by its unique ID. This variable will be accessible in all Appwrite Functions at runtime.","responses":{"200":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"updateVariable","weight":185,"cookies":false,"type":"","demo":"project\/update-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/project\/update-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","default":null,"x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","default":null,"x-example":"[VALUE]"}},"required":["key"]}}]},"delete":{"summary":"Delete Variable","operationId":"projectDeleteVariable","consumes":["application\/json"],"produces":[],"tags":["project"],"description":"Delete a project variable by its unique ID. ","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteVariable","weight":186,"cookies":false,"type":"","demo":"project\/delete-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/project\/delete-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"}]}},"\/projects":{"get":{"summary":"List projects","operationId":"projectsList","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Projects List","schema":{"$ref":"#\/definitions\/projectList"}}},"x-appwrite":{"method":"list","weight":142,"cookies":false,"type":"","demo":"projects\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, teamId","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create project","operationId":"projectsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"201":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"create","weight":141,"cookies":false,"type":"","demo":"projects\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"projectId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, and hyphen. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":null},"name":{"type":"string","description":"Project name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"teamId":{"type":"string","description":"Team unique ID.","default":null,"x-example":"[TEAM_ID]"},"region":{"type":"string","description":"Project Region.","default":"default","x-example":"default","enum":["default"],"x-enum-name":null,"x-enum-keys":[]},"description":{"type":"string","description":"Project description. Max length: 256 chars.","default":"","x-example":"[DESCRIPTION]"},"logo":{"type":"string","description":"Project logo.","default":"","x-example":"[LOGO]"},"url":{"type":"string","description":"Project URL.","default":"","x-example":"https:\/\/example.com"},"legalName":{"type":"string","description":"Project legal Name. Max length: 256 chars.","default":"","x-example":"[LEGAL_NAME]"},"legalCountry":{"type":"string","description":"Project legal Country. Max length: 256 chars.","default":"","x-example":"[LEGAL_COUNTRY]"},"legalState":{"type":"string","description":"Project legal State. Max length: 256 chars.","default":"","x-example":"[LEGAL_STATE]"},"legalCity":{"type":"string","description":"Project legal City. Max length: 256 chars.","default":"","x-example":"[LEGAL_CITY]"},"legalAddress":{"type":"string","description":"Project legal Address. Max length: 256 chars.","default":"","x-example":"[LEGAL_ADDRESS]"},"legalTaxId":{"type":"string","description":"Project legal Tax ID. Max length: 256 chars.","default":"","x-example":"[LEGAL_TAX_ID]"}},"required":["projectId","name","teamId"]}}]}},"\/projects\/{projectId}":{"get":{"summary":"Get project","operationId":"projectsGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"get","weight":143,"cookies":false,"type":"","demo":"projects\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"}]},"patch":{"summary":"Update project","operationId":"projectsUpdate","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"update","weight":144,"cookies":false,"type":"","demo":"projects\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Project name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"description":{"type":"string","description":"Project description. Max length: 256 chars.","default":"","x-example":"[DESCRIPTION]"},"logo":{"type":"string","description":"Project logo.","default":"","x-example":"[LOGO]"},"url":{"type":"string","description":"Project URL.","default":"","x-example":"https:\/\/example.com"},"legalName":{"type":"string","description":"Project legal name. Max length: 256 chars.","default":"","x-example":"[LEGAL_NAME]"},"legalCountry":{"type":"string","description":"Project legal country. Max length: 256 chars.","default":"","x-example":"[LEGAL_COUNTRY]"},"legalState":{"type":"string","description":"Project legal state. Max length: 256 chars.","default":"","x-example":"[LEGAL_STATE]"},"legalCity":{"type":"string","description":"Project legal city. Max length: 256 chars.","default":"","x-example":"[LEGAL_CITY]"},"legalAddress":{"type":"string","description":"Project legal address. Max length: 256 chars.","default":"","x-example":"[LEGAL_ADDRESS]"},"legalTaxId":{"type":"string","description":"Project legal tax ID. Max length: 256 chars.","default":"","x-example":"[LEGAL_TAX_ID]"}},"required":["name"]}}]},"delete":{"summary":"Delete project","operationId":"projectsDelete","consumes":["application\/json"],"produces":[],"tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":156,"cookies":false,"type":"","demo":"projects\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"}]}},"\/projects\/{projectId}\/auth\/duration":{"patch":{"summary":"Update project authentication duration","operationId":"projectsUpdateAuthDuration","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateAuthDuration","weight":150,"cookies":false,"type":"","demo":"projects\/update-auth-duration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"duration":{"type":"integer","description":"Project session length in seconds. Max length: 31536000 seconds.","default":null,"x-example":0}},"required":["duration"]}}]}},"\/projects\/{projectId}\/auth\/limit":{"patch":{"summary":"Update project users limit","operationId":"projectsUpdateAuthLimit","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateAuthLimit","weight":149,"cookies":false,"type":"","demo":"projects\/update-auth-limit.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"limit":{"type":"integer","description":"Set the max number of users allowed in this project. Use 0 for unlimited.","default":null,"x-example":0}},"required":["limit"]}}]}},"\/projects\/{projectId}\/auth\/max-sessions":{"patch":{"summary":"Update project user sessions limit","operationId":"projectsUpdateAuthSessionsLimit","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateAuthSessionsLimit","weight":155,"cookies":false,"type":"","demo":"projects\/update-auth-sessions-limit.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"limit":{"type":"integer","description":"Set the max number of users allowed in this project. Value allowed is between 1-100. Default is 10","default":null,"x-example":1}},"required":["limit"]}}]}},"\/projects\/{projectId}\/auth\/password-dictionary":{"patch":{"summary":"Update authentication password dictionary status. Use this endpoint to enable or disable the dicitonary check for user password","operationId":"projectsUpdateAuthPasswordDictionary","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateAuthPasswordDictionary","weight":153,"cookies":false,"type":"","demo":"projects\/update-auth-password-dictionary.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Set whether or not to enable checking user's password against most commonly used passwords. Default is false.","default":null,"x-example":false}},"required":["enabled"]}}]}},"\/projects\/{projectId}\/auth\/password-history":{"patch":{"summary":"Update authentication password history. Use this endpoint to set the number of password history to save and 0 to disable password history.","operationId":"projectsUpdateAuthPasswordHistory","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateAuthPasswordHistory","weight":152,"cookies":false,"type":"","demo":"projects\/update-auth-password-history.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"limit":{"type":"integer","description":"Set the max number of passwords to store in user history. User can't choose a new password that is already stored in the password history list. Max number of passwords allowed in history is20. Default value is 0","default":null,"x-example":0}},"required":["limit"]}}]}},"\/projects\/{projectId}\/auth\/personal-data":{"patch":{"summary":"Enable or disable checking user passwords for similarity with their personal data.","operationId":"projectsUpdatePersonalDataCheck","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updatePersonalDataCheck","weight":154,"cookies":false,"type":"","demo":"projects\/update-personal-data-check.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Set whether or not to check a password for similarity with personal data. Default is false.","default":null,"x-example":false}},"required":["enabled"]}}]}},"\/projects\/{projectId}\/auth\/{method}":{"patch":{"summary":"Update project auth method status. Use this endpoint to enable or disable a given auth method for this project.","operationId":"projectsUpdateAuthStatus","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateAuthStatus","weight":151,"cookies":false,"type":"","demo":"projects\/update-auth-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"method","description":"Auth Method. Possible values: email-password,magic-url,email-otp,anonymous,invites,jwt,phone","required":true,"type":"string","x-example":"email-password","enum":["email-password","magic-url","email-otp","anonymous","invites","jwt","phone"],"x-enum-name":"AuthMethod","x-enum-keys":[],"in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"status":{"type":"boolean","description":"Set the status of this auth method.","default":null,"x-example":false}},"required":["status"]}}]}},"\/projects\/{projectId}\/keys":{"get":{"summary":"List keys","operationId":"projectsListKeys","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"API Keys List","schema":{"$ref":"#\/definitions\/keyList"}}},"x-appwrite":{"method":"listKeys","weight":164,"cookies":false,"type":"","demo":"projects\/list-keys.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"}]},"post":{"summary":"Create key","operationId":"projectsCreateKey","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"201":{"description":"Key","schema":{"$ref":"#\/definitions\/key"}}},"x-appwrite":{"method":"createKey","weight":163,"cookies":false,"type":"","demo":"projects\/create-key.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Key name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"scopes":{"type":"array","description":"Key scopes list. Maximum of 100 scopes are allowed.","default":null,"x-example":null,"items":{"type":"string"}},"expire":{"type":"string","description":"Expiration time in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. Use null for unlimited expiration.","default":null,"x-example":null}},"required":["name","scopes"]}}]}},"\/projects\/{projectId}\/keys\/{keyId}":{"get":{"summary":"Get key","operationId":"projectsGetKey","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Key","schema":{"$ref":"#\/definitions\/key"}}},"x-appwrite":{"method":"getKey","weight":165,"cookies":false,"type":"","demo":"projects\/get-key.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"keyId","description":"Key unique ID.","required":true,"type":"string","x-example":"[KEY_ID]","in":"path"}]},"put":{"summary":"Update key","operationId":"projectsUpdateKey","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Key","schema":{"$ref":"#\/definitions\/key"}}},"x-appwrite":{"method":"updateKey","weight":166,"cookies":false,"type":"","demo":"projects\/update-key.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"keyId","description":"Key unique ID.","required":true,"type":"string","x-example":"[KEY_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Key name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"scopes":{"type":"array","description":"Key scopes list. Maximum of 100 events are allowed.","default":null,"x-example":null,"items":{"type":"string"}},"expire":{"type":"string","description":"Expiration time in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. Use null for unlimited expiration.","default":null,"x-example":null}},"required":["name","scopes"]}}]},"delete":{"summary":"Delete key","operationId":"projectsDeleteKey","consumes":["application\/json"],"produces":[],"tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteKey","weight":167,"cookies":false,"type":"","demo":"projects\/delete-key.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"keyId","description":"Key unique ID.","required":true,"type":"string","x-example":"[KEY_ID]","in":"path"}]}},"\/projects\/{projectId}\/oauth2":{"patch":{"summary":"Update project OAuth2","operationId":"projectsUpdateOAuth2","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateOAuth2","weight":148,"cookies":false,"type":"","demo":"projects\/update-o-auth2.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"provider":{"type":"string","description":"Provider Name","default":null,"x-example":"amazon","enum":["amazon","apple","auth0","authentik","autodesk","bitbucket","bitly","box","dailymotion","discord","disqus","dropbox","etsy","facebook","github","gitlab","google","linkedin","microsoft","notion","oidc","okta","paypal","paypalSandbox","podio","salesforce","slack","spotify","stripe","tradeshift","tradeshiftBox","twitch","wordpress","yahoo","yammer","yandex","zoho","zoom","mock"],"x-enum-name":"OAuthProvider","x-enum-keys":[]},"appId":{"type":"string","description":"Provider app ID. Max length: 256 chars.","default":null,"x-example":"[APP_ID]"},"secret":{"type":"string","description":"Provider secret key. Max length: 512 chars.","default":null,"x-example":"[SECRET]"},"enabled":{"type":"boolean","description":"Provider status. Set to 'false' to disable new session creation.","default":null,"x-example":false}},"required":["provider"]}}]}},"\/projects\/{projectId}\/platforms":{"get":{"summary":"List platforms","operationId":"projectsListPlatforms","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Platforms List","schema":{"$ref":"#\/definitions\/platformList"}}},"x-appwrite":{"method":"listPlatforms","weight":169,"cookies":false,"type":"","demo":"projects\/list-platforms.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"}]},"post":{"summary":"Create platform","operationId":"projectsCreatePlatform","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"201":{"description":"Platform","schema":{"$ref":"#\/definitions\/platform"}}},"x-appwrite":{"method":"createPlatform","weight":168,"cookies":false,"type":"","demo":"projects\/create-platform.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"type":{"type":"string","description":"Platform type.","default":null,"x-example":"web","enum":["web","flutter-web","flutter-ios","flutter-android","flutter-linux","flutter-macos","flutter-windows","apple-ios","apple-macos","apple-watchos","apple-tvos","android","unity"],"x-enum-name":"PlatformType","x-enum-keys":[]},"name":{"type":"string","description":"Platform name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"key":{"type":"string","description":"Package name for Android or bundle ID for iOS or macOS. Max length: 256 chars.","default":"","x-example":"[KEY]"},"store":{"type":"string","description":"App store or Google Play store ID. Max length: 256 chars.","default":"","x-example":"[STORE]"},"hostname":{"type":"string","description":"Platform client hostname. Max length: 256 chars.","default":"","x-example":null}},"required":["type","name"]}}]}},"\/projects\/{projectId}\/platforms\/{platformId}":{"get":{"summary":"Get platform","operationId":"projectsGetPlatform","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Platform","schema":{"$ref":"#\/definitions\/platform"}}},"x-appwrite":{"method":"getPlatform","weight":170,"cookies":false,"type":"","demo":"projects\/get-platform.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"platformId","description":"Platform unique ID.","required":true,"type":"string","x-example":"[PLATFORM_ID]","in":"path"}]},"put":{"summary":"Update platform","operationId":"projectsUpdatePlatform","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Platform","schema":{"$ref":"#\/definitions\/platform"}}},"x-appwrite":{"method":"updatePlatform","weight":171,"cookies":false,"type":"","demo":"projects\/update-platform.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"platformId","description":"Platform unique ID.","required":true,"type":"string","x-example":"[PLATFORM_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Platform name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"key":{"type":"string","description":"Package name for android or bundle ID for iOS. Max length: 256 chars.","default":"","x-example":"[KEY]"},"store":{"type":"string","description":"App store or Google Play store ID. Max length: 256 chars.","default":"","x-example":"[STORE]"},"hostname":{"type":"string","description":"Platform client URL. Max length: 256 chars.","default":"","x-example":null}},"required":["name"]}}]},"delete":{"summary":"Delete platform","operationId":"projectsDeletePlatform","consumes":["application\/json"],"produces":[],"tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deletePlatform","weight":172,"cookies":false,"type":"","demo":"projects\/delete-platform.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"platformId","description":"Platform unique ID.","required":true,"type":"string","x-example":"[PLATFORM_ID]","in":"path"}]}},"\/projects\/{projectId}\/service":{"patch":{"summary":"Update service status","operationId":"projectsUpdateServiceStatus","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateServiceStatus","weight":146,"cookies":false,"type":"","demo":"projects\/update-service-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"service":{"type":"string","description":"Service name.","default":null,"x-example":"account","enum":["account","avatars","databases","locale","health","storage","teams","users","functions","graphql","messaging"],"x-enum-name":"APIService","x-enum-keys":[]},"status":{"type":"boolean","description":"Service status.","default":null,"x-example":false}},"required":["service","status"]}}]}},"\/projects\/{projectId}\/service\/all":{"patch":{"summary":"Update all service status","operationId":"projectsUpdateServiceStatusAll","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateServiceStatusAll","weight":147,"cookies":false,"type":"","demo":"projects\/update-service-status-all.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"status":{"type":"boolean","description":"Service status.","default":null,"x-example":false}},"required":["status"]}}]}},"\/projects\/{projectId}\/smtp":{"patch":{"summary":"Update SMTP","operationId":"projectsUpdateSmtp","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateSmtp","weight":173,"cookies":false,"type":"","demo":"projects\/update-smtp.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enable custom SMTP service","default":null,"x-example":false},"senderName":{"type":"string","description":"Name of the email sender","default":"","x-example":"[SENDER_NAME]"},"senderEmail":{"type":"string","description":"Email of the sender","default":"","x-example":"email@example.com"},"replyTo":{"type":"string","description":"Reply to email","default":"","x-example":"email@example.com"},"host":{"type":"string","description":"SMTP server host name","default":"","x-example":null},"port":{"type":"integer","description":"SMTP server port","default":587,"x-example":null},"username":{"type":"string","description":"SMTP server username","default":"","x-example":"[USERNAME]"},"password":{"type":"string","description":"SMTP server password","default":"","x-example":"[PASSWORD]"},"secure":{"type":"string","description":"Does SMTP server use secure connection","default":"","x-example":"tls","enum":["tls"],"x-enum-name":"SMTPSecure","x-enum-keys":[]}},"required":["enabled"]}}]}},"\/projects\/{projectId}\/smtp\/tests":{"post":{"summary":"Create SMTP test","operationId":"projectsCreateSmtpTest","consumes":["application\/json"],"produces":[],"tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"createSmtpTest","weight":174,"cookies":false,"type":"","demo":"projects\/create-smtp-test.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"emails":{"type":"array","description":"Array of emails to send test email to. Maximum of 10 emails are allowed.","default":null,"x-example":null,"items":{"type":"string"}},"senderName":{"type":"string","description":"Name of the email sender","default":null,"x-example":"[SENDER_NAME]"},"senderEmail":{"type":"string","description":"Email of the sender","default":null,"x-example":"email@example.com"},"replyTo":{"type":"string","description":"Reply to email","default":"","x-example":"email@example.com"},"host":{"type":"string","description":"SMTP server host name","default":null,"x-example":null},"port":{"type":"integer","description":"SMTP server port","default":587,"x-example":null},"username":{"type":"string","description":"SMTP server username","default":"","x-example":"[USERNAME]"},"password":{"type":"string","description":"SMTP server password","default":"","x-example":"[PASSWORD]"},"secure":{"type":"string","description":"Does SMTP server use secure connection","default":"","x-example":"tls","enum":["tls"],"x-enum-name":"SMTPSecure","x-enum-keys":[]}},"required":["emails","senderName","senderEmail","host"]}}]}},"\/projects\/{projectId}\/team":{"patch":{"summary":"Update Project Team","operationId":"projectsUpdateTeam","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateTeam","weight":145,"cookies":false,"type":"","demo":"projects\/update-team.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"teamId":{"type":"string","description":"Team ID of the team to transfer project to.","default":null,"x-example":"[TEAM_ID]"}},"required":["teamId"]}}]}},"\/projects\/{projectId}\/templates\/email\/{type}\/{locale}":{"get":{"summary":"Get custom email template","operationId":"projectsGetEmailTemplate","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"EmailTemplate","schema":{"$ref":"#\/definitions\/emailTemplate"}}},"x-appwrite":{"method":"getEmailTemplate","weight":176,"cookies":false,"type":"","demo":"projects\/get-email-template.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"type","description":"Template type","required":true,"type":"string","x-example":"verification","enum":["verification","magicsession","recovery","invitation"],"x-enum-name":"EmailTemplateType","x-enum-keys":[],"in":"path"},{"name":"locale","description":"Template locale","required":true,"type":"string","x-example":"af","enum":["af","ar-ae","ar-bh","ar-dz","ar-eg","ar-iq","ar-jo","ar-kw","ar-lb","ar-ly","ar-ma","ar-om","ar-qa","ar-sa","ar-sy","ar-tn","ar-ye","as","az","be","bg","bh","bn","bs","ca","cs","cy","da","de","de-at","de-ch","de-li","de-lu","el","en","en-au","en-bz","en-ca","en-gb","en-ie","en-jm","en-nz","en-tt","en-us","en-za","eo","es","es-ar","es-bo","es-cl","es-co","es-cr","es-do","es-ec","es-gt","es-hn","es-mx","es-ni","es-pa","es-pe","es-pr","es-py","es-sv","es-uy","es-ve","et","eu","fa","fi","fo","fr","fr-be","fr-ca","fr-ch","fr-lu","ga","gd","he","hi","hr","hu","id","is","it","it-ch","ja","ji","ko","ku","lt","lv","mk","ml","ms","mt","nb","ne","nl","nl-be","nn","no","pa","pl","pt","pt-br","rm","ro","ro-md","ru","ru-md","sb","sk","sl","sq","sr","sv","sv-fi","th","tn","tr","ts","ua","ur","ve","vi","xh","zh-cn","zh-hk","zh-sg","zh-tw","zu"],"x-enum-name":"EmailTemplateLocale","x-enum-keys":[],"in":"path"}]},"patch":{"summary":"Update custom email templates","operationId":"projectsUpdateEmailTemplate","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateEmailTemplate","weight":178,"cookies":false,"type":"","demo":"projects\/update-email-template.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"type","description":"Template type","required":true,"type":"string","x-example":"verification","enum":["verification","magicsession","recovery","invitation"],"x-enum-name":"EmailTemplateType","x-enum-keys":[],"in":"path"},{"name":"locale","description":"Template locale","required":true,"type":"string","x-example":"af","enum":["af","ar-ae","ar-bh","ar-dz","ar-eg","ar-iq","ar-jo","ar-kw","ar-lb","ar-ly","ar-ma","ar-om","ar-qa","ar-sa","ar-sy","ar-tn","ar-ye","as","az","be","bg","bh","bn","bs","ca","cs","cy","da","de","de-at","de-ch","de-li","de-lu","el","en","en-au","en-bz","en-ca","en-gb","en-ie","en-jm","en-nz","en-tt","en-us","en-za","eo","es","es-ar","es-bo","es-cl","es-co","es-cr","es-do","es-ec","es-gt","es-hn","es-mx","es-ni","es-pa","es-pe","es-pr","es-py","es-sv","es-uy","es-ve","et","eu","fa","fi","fo","fr","fr-be","fr-ca","fr-ch","fr-lu","ga","gd","he","hi","hr","hu","id","is","it","it-ch","ja","ji","ko","ku","lt","lv","mk","ml","ms","mt","nb","ne","nl","nl-be","nn","no","pa","pl","pt","pt-br","rm","ro","ro-md","ru","ru-md","sb","sk","sl","sq","sr","sv","sv-fi","th","tn","tr","ts","ua","ur","ve","vi","xh","zh-cn","zh-hk","zh-sg","zh-tw","zu"],"x-enum-name":"EmailTemplateLocale","x-enum-keys":[],"in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"subject":{"type":"string","description":"Email Subject","default":null,"x-example":"[SUBJECT]"},"message":{"type":"string","description":"Template message","default":null,"x-example":"[MESSAGE]"},"senderName":{"type":"string","description":"Name of the email sender","default":"","x-example":"[SENDER_NAME]"},"senderEmail":{"type":"string","description":"Email of the sender","default":"","x-example":"email@example.com"},"replyTo":{"type":"string","description":"Reply to email","default":"","x-example":"email@example.com"}},"required":["subject","message"]}}]},"delete":{"summary":"Reset custom email template","operationId":"projectsDeleteEmailTemplate","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"EmailTemplate","schema":{"$ref":"#\/definitions\/emailTemplate"}}},"x-appwrite":{"method":"deleteEmailTemplate","weight":180,"cookies":false,"type":"","demo":"projects\/delete-email-template.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"type","description":"Template type","required":true,"type":"string","x-example":"verification","enum":["verification","magicsession","recovery","invitation"],"x-enum-name":"EmailTemplateType","x-enum-keys":[],"in":"path"},{"name":"locale","description":"Template locale","required":true,"type":"string","x-example":"af","enum":["af","ar-ae","ar-bh","ar-dz","ar-eg","ar-iq","ar-jo","ar-kw","ar-lb","ar-ly","ar-ma","ar-om","ar-qa","ar-sa","ar-sy","ar-tn","ar-ye","as","az","be","bg","bh","bn","bs","ca","cs","cy","da","de","de-at","de-ch","de-li","de-lu","el","en","en-au","en-bz","en-ca","en-gb","en-ie","en-jm","en-nz","en-tt","en-us","en-za","eo","es","es-ar","es-bo","es-cl","es-co","es-cr","es-do","es-ec","es-gt","es-hn","es-mx","es-ni","es-pa","es-pe","es-pr","es-py","es-sv","es-uy","es-ve","et","eu","fa","fi","fo","fr","fr-be","fr-ca","fr-ch","fr-lu","ga","gd","he","hi","hr","hu","id","is","it","it-ch","ja","ji","ko","ku","lt","lv","mk","ml","ms","mt","nb","ne","nl","nl-be","nn","no","pa","pl","pt","pt-br","rm","ro","ro-md","ru","ru-md","sb","sk","sl","sq","sr","sv","sv-fi","th","tn","tr","ts","ua","ur","ve","vi","xh","zh-cn","zh-hk","zh-sg","zh-tw","zu"],"x-enum-name":"EmailTemplateLocale","x-enum-keys":[],"in":"path"}]}},"\/projects\/{projectId}\/templates\/sms\/{type}\/{locale}":{"get":{"summary":"Get custom SMS template","operationId":"projectsGetSmsTemplate","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"SmsTemplate","schema":{"$ref":"#\/definitions\/smsTemplate"}}},"x-appwrite":{"method":"getSmsTemplate","weight":175,"cookies":false,"type":"","demo":"projects\/get-sms-template.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"type","description":"Template type","required":true,"type":"string","x-example":"verification","enum":["verification","login","invitation"],"x-enum-name":"SMSTemplateType","x-enum-keys":[],"in":"path"},{"name":"locale","description":"Template locale","required":true,"type":"string","x-example":"af","enum":["af","ar-ae","ar-bh","ar-dz","ar-eg","ar-iq","ar-jo","ar-kw","ar-lb","ar-ly","ar-ma","ar-om","ar-qa","ar-sa","ar-sy","ar-tn","ar-ye","as","az","be","bg","bh","bn","bs","ca","cs","cy","da","de","de-at","de-ch","de-li","de-lu","el","en","en-au","en-bz","en-ca","en-gb","en-ie","en-jm","en-nz","en-tt","en-us","en-za","eo","es","es-ar","es-bo","es-cl","es-co","es-cr","es-do","es-ec","es-gt","es-hn","es-mx","es-ni","es-pa","es-pe","es-pr","es-py","es-sv","es-uy","es-ve","et","eu","fa","fi","fo","fr","fr-be","fr-ca","fr-ch","fr-lu","ga","gd","he","hi","hr","hu","id","is","it","it-ch","ja","ji","ko","ku","lt","lv","mk","ml","ms","mt","nb","ne","nl","nl-be","nn","no","pa","pl","pt","pt-br","rm","ro","ro-md","ru","ru-md","sb","sk","sl","sq","sr","sv","sv-fi","th","tn","tr","ts","ua","ur","ve","vi","xh","zh-cn","zh-hk","zh-sg","zh-tw","zu"],"x-enum-name":"SMSTemplateLocale","x-enum-keys":[],"in":"path"}]},"patch":{"summary":"Update custom SMS template","operationId":"projectsUpdateSmsTemplate","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"SmsTemplate","schema":{"$ref":"#\/definitions\/smsTemplate"}}},"x-appwrite":{"method":"updateSmsTemplate","weight":177,"cookies":false,"type":"","demo":"projects\/update-sms-template.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"type","description":"Template type","required":true,"type":"string","x-example":"verification","enum":["verification","login","invitation"],"x-enum-name":"SMSTemplateType","x-enum-keys":[],"in":"path"},{"name":"locale","description":"Template locale","required":true,"type":"string","x-example":"af","enum":["af","ar-ae","ar-bh","ar-dz","ar-eg","ar-iq","ar-jo","ar-kw","ar-lb","ar-ly","ar-ma","ar-om","ar-qa","ar-sa","ar-sy","ar-tn","ar-ye","as","az","be","bg","bh","bn","bs","ca","cs","cy","da","de","de-at","de-ch","de-li","de-lu","el","en","en-au","en-bz","en-ca","en-gb","en-ie","en-jm","en-nz","en-tt","en-us","en-za","eo","es","es-ar","es-bo","es-cl","es-co","es-cr","es-do","es-ec","es-gt","es-hn","es-mx","es-ni","es-pa","es-pe","es-pr","es-py","es-sv","es-uy","es-ve","et","eu","fa","fi","fo","fr","fr-be","fr-ca","fr-ch","fr-lu","ga","gd","he","hi","hr","hu","id","is","it","it-ch","ja","ji","ko","ku","lt","lv","mk","ml","ms","mt","nb","ne","nl","nl-be","nn","no","pa","pl","pt","pt-br","rm","ro","ro-md","ru","ru-md","sb","sk","sl","sq","sr","sv","sv-fi","th","tn","tr","ts","ua","ur","ve","vi","xh","zh-cn","zh-hk","zh-sg","zh-tw","zu"],"x-enum-name":"SMSTemplateLocale","x-enum-keys":[],"in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"message":{"type":"string","description":"Template message","default":null,"x-example":"[MESSAGE]"}},"required":["message"]}}]},"delete":{"summary":"Reset custom SMS template","operationId":"projectsDeleteSmsTemplate","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"SmsTemplate","schema":{"$ref":"#\/definitions\/smsTemplate"}}},"x-appwrite":{"method":"deleteSmsTemplate","weight":179,"cookies":false,"type":"","demo":"projects\/delete-sms-template.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"type","description":"Template type","required":true,"type":"string","x-example":"verification","enum":["verification","login","invitation"],"x-enum-name":"SMSTemplateType","x-enum-keys":[],"in":"path"},{"name":"locale","description":"Template locale","required":true,"type":"string","x-example":"af","enum":["af","ar-ae","ar-bh","ar-dz","ar-eg","ar-iq","ar-jo","ar-kw","ar-lb","ar-ly","ar-ma","ar-om","ar-qa","ar-sa","ar-sy","ar-tn","ar-ye","as","az","be","bg","bh","bn","bs","ca","cs","cy","da","de","de-at","de-ch","de-li","de-lu","el","en","en-au","en-bz","en-ca","en-gb","en-ie","en-jm","en-nz","en-tt","en-us","en-za","eo","es","es-ar","es-bo","es-cl","es-co","es-cr","es-do","es-ec","es-gt","es-hn","es-mx","es-ni","es-pa","es-pe","es-pr","es-py","es-sv","es-uy","es-ve","et","eu","fa","fi","fo","fr","fr-be","fr-ca","fr-ch","fr-lu","ga","gd","he","hi","hr","hu","id","is","it","it-ch","ja","ji","ko","ku","lt","lv","mk","ml","ms","mt","nb","ne","nl","nl-be","nn","no","pa","pl","pt","pt-br","rm","ro","ro-md","ru","ru-md","sb","sk","sl","sq","sr","sv","sv-fi","th","tn","tr","ts","ua","ur","ve","vi","xh","zh-cn","zh-hk","zh-sg","zh-tw","zu"],"x-enum-name":"SMSTemplateLocale","x-enum-keys":[],"in":"path"}]}},"\/projects\/{projectId}\/webhooks":{"get":{"summary":"List webhooks","operationId":"projectsListWebhooks","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Webhooks List","schema":{"$ref":"#\/definitions\/webhookList"}}},"x-appwrite":{"method":"listWebhooks","weight":158,"cookies":false,"type":"","demo":"projects\/list-webhooks.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"}]},"post":{"summary":"Create webhook","operationId":"projectsCreateWebhook","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"201":{"description":"Webhook","schema":{"$ref":"#\/definitions\/webhook"}}},"x-appwrite":{"method":"createWebhook","weight":157,"cookies":false,"type":"","demo":"projects\/create-webhook.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Webhook name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Enable or disable a webhook.","default":true,"x-example":false},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","default":null,"x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"Webhook URL.","default":null,"x-example":null},"security":{"type":"boolean","description":"Certificate verification, false for disabled or true for enabled.","default":null,"x-example":false},"httpUser":{"type":"string","description":"Webhook HTTP user. Max length: 256 chars.","default":"","x-example":"[HTTP_USER]"},"httpPass":{"type":"string","description":"Webhook HTTP password. Max length: 256 chars.","default":"","x-example":"[HTTP_PASS]"}},"required":["name","events","url","security"]}}]}},"\/projects\/{projectId}\/webhooks\/{webhookId}":{"get":{"summary":"Get webhook","operationId":"projectsGetWebhook","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Webhook","schema":{"$ref":"#\/definitions\/webhook"}}},"x-appwrite":{"method":"getWebhook","weight":159,"cookies":false,"type":"","demo":"projects\/get-webhook.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"webhookId","description":"Webhook unique ID.","required":true,"type":"string","x-example":"[WEBHOOK_ID]","in":"path"}]},"put":{"summary":"Update webhook","operationId":"projectsUpdateWebhook","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Webhook","schema":{"$ref":"#\/definitions\/webhook"}}},"x-appwrite":{"method":"updateWebhook","weight":160,"cookies":false,"type":"","demo":"projects\/update-webhook.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"webhookId","description":"Webhook unique ID.","required":true,"type":"string","x-example":"[WEBHOOK_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Webhook name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Enable or disable a webhook.","default":true,"x-example":false},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","default":null,"x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"Webhook URL.","default":null,"x-example":null},"security":{"type":"boolean","description":"Certificate verification, false for disabled or true for enabled.","default":null,"x-example":false},"httpUser":{"type":"string","description":"Webhook HTTP user. Max length: 256 chars.","default":"","x-example":"[HTTP_USER]"},"httpPass":{"type":"string","description":"Webhook HTTP password. Max length: 256 chars.","default":"","x-example":"[HTTP_PASS]"}},"required":["name","events","url","security"]}}]},"delete":{"summary":"Delete webhook","operationId":"projectsDeleteWebhook","consumes":["application\/json"],"produces":[],"tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteWebhook","weight":162,"cookies":false,"type":"","demo":"projects\/delete-webhook.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"webhookId","description":"Webhook unique ID.","required":true,"type":"string","x-example":"[WEBHOOK_ID]","in":"path"}]}},"\/projects\/{projectId}\/webhooks\/{webhookId}\/signature":{"patch":{"summary":"Update webhook signature key","operationId":"projectsUpdateWebhookSignature","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Webhook","schema":{"$ref":"#\/definitions\/webhook"}}},"x-appwrite":{"method":"updateWebhookSignature","weight":161,"cookies":false,"type":"","demo":"projects\/update-webhook-signature.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"webhookId","description":"Webhook unique ID.","required":true,"type":"string","x-example":"[WEBHOOK_ID]","in":"path"}]}},"\/proxy\/rules":{"get":{"summary":"List Rules","operationId":"proxyListRules","consumes":["application\/json"],"produces":["application\/json"],"tags":["proxy"],"description":"Get a list of all the proxy rules. You can use the query params to filter your results.","responses":{"200":{"description":"Rule List","schema":{"$ref":"#\/definitions\/proxyRuleList"}}},"x-appwrite":{"method":"listRules","weight":291,"cookies":false,"type":"","demo":"proxy\/list-rules.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/proxy\/list-rules.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"rules.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: domain, resourceType, resourceId, url","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Rule","operationId":"proxyCreateRule","consumes":["application\/json"],"produces":["application\/json"],"tags":["proxy"],"description":"Create a new proxy rule.","responses":{"201":{"description":"Rule","schema":{"$ref":"#\/definitions\/proxyRule"}}},"x-appwrite":{"method":"createRule","weight":290,"cookies":false,"type":"","demo":"proxy\/create-rule.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/proxy\/create-rule.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"rules.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"domain":{"type":"string","description":"Domain name.","default":null,"x-example":null},"resourceType":{"type":"string","description":"Action definition for the rule. Possible values are \"api\", \"function\"","default":null,"x-example":"api","enum":["api","function"],"x-enum-name":null,"x-enum-keys":[]},"resourceId":{"type":"string","description":"ID of resource for the action type. If resourceType is \"api\", leave empty. If resourceType is \"function\", provide ID of the function.","default":"","x-example":"[RESOURCE_ID]"}},"required":["domain","resourceType"]}}]}},"\/proxy\/rules\/{ruleId}":{"get":{"summary":"Get Rule","operationId":"proxyGetRule","consumes":["application\/json"],"produces":["application\/json"],"tags":["proxy"],"description":"Get a proxy rule by its unique ID.","responses":{"200":{"description":"Rule","schema":{"$ref":"#\/definitions\/proxyRule"}}},"x-appwrite":{"method":"getRule","weight":292,"cookies":false,"type":"","demo":"proxy\/get-rule.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/proxy\/get-rule.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"rules.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"ruleId","description":"Rule ID.","required":true,"type":"string","x-example":"[RULE_ID]","in":"path"}]},"delete":{"summary":"Delete Rule","operationId":"proxyDeleteRule","consumes":["application\/json"],"produces":[],"tags":["proxy"],"description":"Delete a proxy rule by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteRule","weight":293,"cookies":false,"type":"","demo":"proxy\/delete-rule.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/proxy\/delete-rule.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"rules.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"ruleId","description":"Rule ID.","required":true,"type":"string","x-example":"[RULE_ID]","in":"path"}]}},"\/proxy\/rules\/{ruleId}\/verification":{"patch":{"summary":"Update Rule Verification Status","operationId":"proxyUpdateRuleVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["proxy"],"description":"","responses":{"200":{"description":"Rule","schema":{"$ref":"#\/definitions\/proxyRule"}}},"x-appwrite":{"method":"updateRuleVerification","weight":294,"cookies":false,"type":"","demo":"proxy\/update-rule-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"rules.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"ruleId","description":"Rule ID.","required":true,"type":"string","x-example":"[RULE_ID]","in":"path"}]}},"\/storage\/buckets":{"get":{"summary":"List buckets","operationId":"storageListBuckets","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a list of all the storage buckets. You can use the query params to filter your results.","responses":{"200":{"description":"Buckets List","schema":{"$ref":"#\/definitions\/bucketList"}}},"x-appwrite":{"method":"listBuckets","weight":188,"cookies":false,"type":"","demo":"storage\/list-buckets.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/list-buckets.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: enabled, name, fileSecurity, maximumFileSize, encryption, antivirus","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create bucket","operationId":"storageCreateBucket","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Create a new storage bucket.","responses":{"201":{"description":"Bucket","schema":{"$ref":"#\/definitions\/bucket"}}},"x-appwrite":{"method":"createBucket","weight":187,"cookies":false,"type":"","demo":"storage\/create-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"bucketId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, no user is granted with any permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":false,"x-example":false},"enabled":{"type":"boolean","description":"Is bucket enabled? When set to 'disabled', users cannot access the files in this bucket but Server SDKs with and API key can still access the bucket. No files are lost when this is toggled.","default":true,"x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB.","default":30000000,"x-example":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","default":[],"x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","default":"none","x-example":"none","enum":["none","gzip","zstd"],"x-enum-name":null,"x-enum-keys":[]},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","default":true,"x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","default":true,"x-example":false}},"required":["bucketId","name"]}}]}},"\/storage\/buckets\/{bucketId}":{"get":{"summary":"Get bucket","operationId":"storageGetBucket","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a storage bucket by its unique ID. This endpoint response returns a JSON object with the storage bucket metadata.","responses":{"200":{"description":"Bucket","schema":{"$ref":"#\/definitions\/bucket"}}},"x-appwrite":{"method":"getBucket","weight":189,"cookies":false,"type":"","demo":"storage\/get-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"bucketId","description":"Bucket unique ID.","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"}]},"put":{"summary":"Update bucket","operationId":"storageUpdateBucket","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Update a storage bucket by its unique ID.","responses":{"200":{"description":"Bucket","schema":{"$ref":"#\/definitions\/bucket"}}},"x-appwrite":{"method":"updateBucket","weight":190,"cookies":false,"type":"","demo":"storage\/update-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"bucketId","description":"Bucket unique ID.","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Bucket name","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":false,"x-example":false},"enabled":{"type":"boolean","description":"Is bucket enabled? When set to 'disabled', users cannot access the files in this bucket but Server SDKs with and API key can still access the bucket. No files are lost when this is toggled.","default":true,"x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB.","default":null,"x-example":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","default":[],"x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","default":"none","x-example":"none","enum":["none","gzip","zstd"],"x-enum-name":null,"x-enum-keys":[]},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","default":true,"x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","default":true,"x-example":false}},"required":["name"]}}]},"delete":{"summary":"Delete bucket","operationId":"storageDeleteBucket","consumes":["application\/json"],"produces":[],"tags":["storage"],"description":"Delete a storage bucket by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteBucket","weight":191,"cookies":false,"type":"","demo":"storage\/delete-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"bucketId","description":"Bucket unique ID.","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files":{"get":{"summary":"List files","operationId":"storageListFiles","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a list of all the user files. You can use the query params to filter your results.","responses":{"200":{"description":"Files List","schema":{"$ref":"#\/definitions\/fileList"}}},"x-appwrite":{"method":"listFiles","weight":193,"cookies":false,"type":"","demo":"storage\/list-files.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/list-files.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create file","operationId":"storageCreateFile","consumes":["multipart\/form-data"],"produces":["application\/json"],"tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"createFile","weight":192,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","required":true,"x-upload-id":true,"type":"string","x-example":"[FILE_ID]","in":"formData"},{"name":"file","description":"Binary file. Appwrite SDKs provide helpers to handle file input. [Learn about file input](https:\/\/appwrite.io\/docs\/storage#file-input).","required":true,"type":"file","in":"formData"},{"name":"permissions","description":"An array of permission strings. By default, only the current user is granted all permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"x-example":"[\"read(\"any\")\"]","in":"formData"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get file","operationId":"storageGetFile","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"getFile","weight":194,"cookies":false,"type":"","demo":"storage\/get-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID.","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"}]},"put":{"summary":"Update file","operationId":"storageUpdateFile","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Update a file by its unique ID. Only users with write permissions have access to update this resource.","responses":{"200":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"updateFile","weight":198,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File unique ID.","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Name of the file","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission string. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","consumes":["application\/json"],"produces":[],"tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":199,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID.","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/download":{"get":{"summary":"Get file for download","operationId":"storageGetFileDownload","consumes":["application\/json"],"produces":["*\/*"],"tags":["storage"],"description":"Get a file content by its unique ID. The endpoint response return with a 'Content-Disposition: attachment' header that tells the browser to start downloading the file to user downloads directory.","responses":{"200":{"description":"File","schema":{"type":"file"}}},"x-appwrite":{"method":"getFileDownload","weight":196,"cookies":false,"type":"location","demo":"storage\/get-file-download.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-download.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID.","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/preview":{"get":{"summary":"Get file preview","operationId":"storageGetFilePreview","consumes":["application\/json"],"produces":["image\/*"],"tags":["storage"],"description":"Get a file preview image. Currently, this method supports preview for image files (jpg, png, and gif), other supported formats, like pdf, docs, slides, and spreadsheets, will return the file icon image. You can also pass query string arguments for cutting and resizing your preview image. Preview is supported only for image files smaller than 10MB.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFilePreview","weight":195,"cookies":false,"type":"location","demo":"storage\/get-file-preview.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-preview.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"},{"name":"width","description":"Resize preview image width, Pass an integer between 0 to 4000.","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 4000.","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"gravity","description":"Image crop gravity. Can be one of center,top-left,top,top-right,left,right,bottom-left,bottom,bottom-right","required":false,"type":"string","x-example":"center","enum":["center","top-left","top","top-right","left","right","bottom-left","bottom","bottom-right"],"x-enum-name":"ImageGravity","x-enum-keys":[],"default":"center","in":"query"},{"name":"quality","description":"Preview image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"borderWidth","description":"Preview image border in pixels. Pass an integer between 0 to 100. Defaults to 0.","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"borderColor","description":"Preview image border color. Use a valid HEX color, no # is needed for prefix.","required":false,"type":"string","default":"","in":"query"},{"name":"borderRadius","description":"Preview image border radius in pixels. Pass an integer between 0 to 4000.","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"opacity","description":"Preview image opacity. Only works with images having an alpha channel (like png). Pass a number between 0 to 1.","required":false,"type":"number","format":"float","x-example":0,"default":1,"in":"query"},{"name":"rotation","description":"Preview image rotation in degrees. Pass an integer between -360 and 360.","required":false,"type":"integer","format":"int32","x-example":-360,"default":0,"in":"query"},{"name":"background","description":"Preview image background color. Only works with transparent images (png). Use a valid HEX color, no # is needed for prefix.","required":false,"type":"string","default":"","in":"query"},{"name":"output","description":"Output format type (jpeg, jpg, png, gif and webp).","required":false,"type":"string","x-example":"jpg","enum":["jpg","jpeg","gif","png","webp"],"x-enum-name":"ImageFormat","x-enum-keys":[],"default":"","in":"query"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/view":{"get":{"summary":"Get file for view","operationId":"storageGetFileView","consumes":["application\/json"],"produces":["*\/*"],"tags":["storage"],"description":"Get a file content by its unique ID. This endpoint is similar to the download method but returns with no 'Content-Disposition: attachment' header.","responses":{"200":{"description":"File","schema":{"type":"file"}}},"x-appwrite":{"method":"getFileView","weight":197,"cookies":false,"type":"location","demo":"storage\/get-file-view.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-view.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID.","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"}]}},"\/storage\/usage":{"get":{"summary":"Get usage stats for storage","operationId":"storageGetUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"","responses":{"200":{"description":"StorageUsage","schema":{"$ref":"#\/definitions\/usageStorage"}}},"x-appwrite":{"method":"getUsage","weight":200,"cookies":false,"type":"","demo":"storage\/get-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","enum":["24h","30d","90d"],"x-enum-name":"StorageUsageRange","x-enum-keys":["Twenty Four Hours","Thirty Days","Ninety Days"],"default":"30d","in":"query"}]}},"\/storage\/{bucketId}\/usage":{"get":{"summary":"Get usage stats for storage bucket","operationId":"storageGetBucketUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"","responses":{"200":{"description":"UsageBuckets","schema":{"$ref":"#\/definitions\/usageBuckets"}}},"x-appwrite":{"method":"getBucketUsage","weight":201,"cookies":false,"type":"","demo":"storage\/get-bucket-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"bucketId","description":"Bucket ID.","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","enum":["24h","30d","90d"],"x-enum-name":"StorageUsageRange","x-enum-keys":["Twenty Four Hours","Thirty Days","Ninety Days"],"default":"30d","in":"query"}]}},"\/teams":{"get":{"summary":"List teams","operationId":"teamsList","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get a list of all the teams in which the current user is a member. You can use the parameters to filter your results.","responses":{"200":{"description":"Teams List","schema":{"$ref":"#\/definitions\/teamList"}}},"x-appwrite":{"method":"list","weight":203,"cookies":false,"type":"","demo":"teams\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-teams.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total, billingPlan","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create team","operationId":"teamsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"create","weight":202,"cookies":false,"type":"","demo":"teams\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/create-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"teamId":{"type":"string","description":"Team ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[TEAM_ID]"},"name":{"type":"string","description":"Team name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"roles":{"type":"array","description":"Array of strings. Use this param to set the roles in the team for the user who created it. The default role is **owner**. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","default":["owner"],"x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}]}},"\/teams\/{teamId}":{"get":{"summary":"Get team","operationId":"teamsGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"get","weight":204,"cookies":false,"type":"","demo":"teams\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams","offline-key":"{teamId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"}]},"put":{"summary":"Update name","operationId":"teamsUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Update the team's name by its unique ID.","responses":{"200":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"updateName","weight":206,"cookies":false,"type":"","demo":"teams\/update-name.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-name.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams","offline-key":"{teamId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"New team name. Max length: 128 chars.","default":null,"x-example":"[NAME]"}},"required":["name"]}}]},"delete":{"summary":"Delete team","operationId":"teamsDelete","consumes":["application\/json"],"produces":[],"tags":["teams"],"description":"Delete a team using its ID. Only team members with the owner role can delete the team.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":208,"cookies":false,"type":"","demo":"teams\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/delete-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"}]}},"\/teams\/{teamId}\/logs":{"get":{"summary":"List team logs","operationId":"teamsListLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get the team activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listLogs","weight":215,"cookies":false,"type":"","demo":"teams\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/teams\/{teamId}\/memberships":{"get":{"summary":"List team memberships","operationId":"teamsListMemberships","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"listMemberships","weight":210,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/memberships","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create team membership","operationId":"teamsCreateMembership","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Invite a new member to join your team. Provide an ID for existing users, or invite unregistered users using an email or phone number. If initiated from a Client SDK, Appwrite will send an email or sms with a link to join the team to the invited user, and an account will be created for them if one doesn't exist. If initiated from a Server SDK, the new member will be added automatically to the team.\n\nYou only need to provide one of a user ID, email, or phone number. Appwrite will prioritize accepting the user ID > email > phone number if you provide more than one of these parameters.\n\nUse the `url` parameter to redirect the user from the invitation email to your app. After the user is redirected, use the [Update Team Membership Status](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/teams#updateMembershipStatus) endpoint to allow the user to accept the invitation to the team. \n\nPlease note that to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) Appwrite will accept the only redirect URLs under the domains you have added as a platform on the Appwrite Console.\n","responses":{"201":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"createMembership","weight":209,"cookies":false,"type":"","demo":"teams\/create-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/create-team-membership.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"email":{"type":"string","description":"Email of the new team member.","default":"","x-example":"email@example.com"},"userId":{"type":"string","description":"ID of the user to be added to a team.","default":"","x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":"","x-example":"+12065550100"},"roles":{"type":"array","description":"Array of strings. Use this param to set the user roles in the team. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":"","x-example":"https:\/\/example.com"},"name":{"type":"string","description":"Name of the new team member. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["roles"]}}]}},"\/teams\/{teamId}\/memberships\/{membershipId}":{"get":{"summary":"Get team membership","operationId":"teamsGetMembership","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get a team member by the membership unique id. All team members have read access for this resource.","responses":{"200":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"getMembership","weight":211,"cookies":false,"type":"","demo":"teams\/get-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-member.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/memberships","offline-key":"{membershipId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"type":"string","x-example":"[MEMBERSHIP_ID]","in":"path"}]},"patch":{"summary":"Update membership","operationId":"teamsUpdateMembership","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Modify the roles of a team member. Only team members with the owner role have access to this endpoint. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions).\n","responses":{"200":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"updateMembership","weight":212,"cookies":false,"type":"","demo":"teams\/update-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"type":"string","x-example":"[MEMBERSHIP_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"roles":{"type":"array","description":"An array of strings. Use this param to set the user's roles in the team. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}}},"required":["roles"]}}]},"delete":{"summary":"Delete team membership","operationId":"teamsDeleteMembership","consumes":["application\/json"],"produces":[],"tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":214,"cookies":false,"type":"","demo":"teams\/delete-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/delete-team-membership.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"type":"string","x-example":"[MEMBERSHIP_ID]","in":"path"}]}},"\/teams\/{teamId}\/memberships\/{membershipId}\/status":{"patch":{"summary":"Update team membership status","operationId":"teamsUpdateMembershipStatus","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Use this endpoint to allow a user to accept an invitation to join a team after being redirected back to your app from the invitation email received by the user.\n\nIf the request is successful, a session for the user is automatically created.\n","responses":{"200":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"updateMembershipStatus","weight":213,"cookies":false,"type":"","demo":"teams\/update-membership-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"public","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"type":"string","x-example":"[MEMBERSHIP_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Secret key.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/teams\/{teamId}\/prefs":{"get":{"summary":"Get team preferences","operationId":"teamsGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get the team's shared preferences by its unique ID. If a preference doesn't need to be shared by all team members, prefer storing them in [user preferences](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#getPrefs).","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":205,"cookies":false,"type":"","demo":"teams\/get-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/prefs","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"}]},"put":{"summary":"Update preferences","operationId":"teamsUpdatePrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Update the team's preferences by its unique ID. The object you pass is stored as is and replaces any previous value. The maximum allowed prefs size is 64kB and throws an error if exceeded.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"updatePrefs","weight":207,"cookies":false,"type":"","demo":"teams\/update-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/prefs","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"prefs":{"type":"object","description":"Prefs key-value JSON object.","default":{},"x-example":"{}"}},"required":["prefs"]}}]}},"\/users":{"get":{"summary":"List users","operationId":"usersList","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get a list of all the project's users. You can use the query params to filter your results.","responses":{"200":{"description":"Users List","schema":{"$ref":"#\/definitions\/userList"}}},"x-appwrite":{"method":"list","weight":225,"cookies":false,"type":"","demo":"users\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-users.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, email, phone, status, passwordUpdate, registration, emailVerification, phoneVerification, labels","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create user","operationId":"usersCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"create","weight":216,"cookies":false,"type":"","demo":"users\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"},"password":{"type":"string","description":"Plain text user password. Must be at least 8 chars.","default":"","x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId"]}}]}},"\/users\/argon2":{"post":{"summary":"Create user with Argon2 password","operationId":"usersCreateArgon2User","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Argon2](https:\/\/en.wikipedia.org\/wiki\/Argon2) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createArgon2User","weight":219,"cookies":false,"type":"","demo":"users\/create-argon2user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-argon2-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Argon2.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/bcrypt":{"post":{"summary":"Create user with bcrypt password","operationId":"usersCreateBcryptUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Bcrypt](https:\/\/en.wikipedia.org\/wiki\/Bcrypt) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createBcryptUser","weight":217,"cookies":false,"type":"","demo":"users\/create-bcrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-bcrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Bcrypt.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/identities":{"get":{"summary":"List Identities","operationId":"usersListIdentities","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get identities for all users.","responses":{"200":{"description":"Identities List","schema":{"$ref":"#\/definitions\/identityList"}}},"x-appwrite":{"method":"listIdentities","weight":233,"cookies":false,"type":"","demo":"users\/list-identities.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-identities.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, provider, providerUid, providerEmail, providerAccessTokenExpiry","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]}},"\/users\/identities\/{identityId}":{"delete":{"summary":"Delete identity","operationId":"usersDeleteIdentity","consumes":["application\/json"],"produces":[],"tags":["users"],"description":"Delete an identity by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIdentity","weight":253,"cookies":false,"type":"","demo":"users\/delete-identity.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-identity.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"identityId","description":"Identity ID.","required":true,"type":"string","x-example":"[IDENTITY_ID]","in":"path"}]}},"\/users\/md5":{"post":{"summary":"Create user with MD5 password","operationId":"usersCreateMD5User","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [MD5](https:\/\/en.wikipedia.org\/wiki\/MD5) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createMD5User","weight":218,"cookies":false,"type":"","demo":"users\/create-m-d5user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-md5-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using MD5.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/phpass":{"post":{"summary":"Create user with PHPass password","operationId":"usersCreatePHPassUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [PHPass](https:\/\/www.openwall.com\/phpass\/) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createPHPassUser","weight":221,"cookies":false,"type":"","demo":"users\/create-p-h-pass-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-phpass-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or pass the string `ID.unique()`to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using PHPass.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/scrypt":{"post":{"summary":"Create user with Scrypt password","operationId":"usersCreateScryptUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt](https:\/\/github.com\/Tarsnap\/scrypt) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createScryptUser","weight":222,"cookies":false,"type":"","demo":"users\/create-scrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt.","default":null,"x-example":"password"},"passwordSalt":{"type":"string","description":"Optional salt used to hash password.","default":null,"x-example":"[PASSWORD_SALT]"},"passwordCpu":{"type":"integer","description":"Optional CPU cost used to hash password.","default":null,"x-example":null},"passwordMemory":{"type":"integer","description":"Optional memory cost used to hash password.","default":null,"x-example":null},"passwordParallel":{"type":"integer","description":"Optional parallelization cost used to hash password.","default":null,"x-example":null},"passwordLength":{"type":"integer","description":"Optional hash length used to hash password.","default":null,"x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordCpu","passwordMemory","passwordParallel","passwordLength"]}}]}},"\/users\/scrypt-modified":{"post":{"summary":"Create user with Scrypt modified password","operationId":"usersCreateScryptModifiedUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt Modified](https:\/\/gist.github.com\/Meldiron\/eecf84a0225eccb5a378d45bb27462cc) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createScryptModifiedUser","weight":223,"cookies":false,"type":"","demo":"users\/create-scrypt-modified-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-modified-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt Modified.","default":null,"x-example":"password"},"passwordSalt":{"type":"string","description":"Salt used to hash password.","default":null,"x-example":"[PASSWORD_SALT]"},"passwordSaltSeparator":{"type":"string","description":"Salt separator used to hash password.","default":null,"x-example":"[PASSWORD_SALT_SEPARATOR]"},"passwordSignerKey":{"type":"string","description":"Signer key used to hash password.","default":null,"x-example":"[PASSWORD_SIGNER_KEY]"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordSaltSeparator","passwordSignerKey"]}}]}},"\/users\/sha":{"post":{"summary":"Create user with SHA password","operationId":"usersCreateSHAUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [SHA](https:\/\/en.wikipedia.org\/wiki\/Secure_Hash_Algorithm) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createSHAUser","weight":220,"cookies":false,"type":"","demo":"users\/create-s-h-a-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-sha-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using SHA.","default":null,"x-example":"password"},"passwordVersion":{"type":"string","description":"Optional SHA version used to hash password. Allowed values are: 'sha1', 'sha224', 'sha256', 'sha384', 'sha512\/224', 'sha512\/256', 'sha512', 'sha3-224', 'sha3-256', 'sha3-384', 'sha3-512'","default":"","x-example":"sha1","enum":["sha1","sha224","sha256","sha384","sha512\/224","sha512\/256","sha512","sha3-224","sha3-256","sha3-384","sha3-512"],"x-enum-name":"PasswordHash","x-enum-keys":[]},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/usage":{"get":{"summary":"Get usage stats for the users API","operationId":"usersGetUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"","responses":{"200":{"description":"UsageUsers","schema":{"$ref":"#\/definitions\/usageUsers"}}},"x-appwrite":{"method":"getUsage","weight":254,"cookies":false,"type":"","demo":"users\/get-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","enum":["24h","30d","90d"],"x-enum-name":"UserUsageRange","x-enum-keys":["Twenty Four Hours","Thirty Days","Ninety Days"],"default":"30d","in":"query"}]}},"\/users\/{userId}":{"get":{"summary":"Get user","operationId":"usersGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get a user by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"get","weight":226,"cookies":false,"type":"","demo":"users\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]},"delete":{"summary":"Delete user","operationId":"usersDelete","consumes":["application\/json"],"produces":[],"tags":["users"],"description":"Delete a user by its unique ID, thereby releasing it's ID. Since ID is released and can be reused, all user-related resources like documents or storage files should be deleted before user deletion. If you want to keep ID reserved, use the [updateStatus](https:\/\/appwrite.io\/docs\/server\/users#usersUpdateStatus) endpoint instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":251,"cookies":false,"type":"","demo":"users\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]}},"\/users\/{userId}\/email":{"patch":{"summary":"Update email","operationId":"usersUpdateEmail","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user email by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateEmail","weight":239,"cookies":false,"type":"","demo":"users\/update-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"}},"required":["email"]}}]}},"\/users\/{userId}\/labels":{"put":{"summary":"Update user labels","operationId":"usersUpdateLabels","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user labels by its unique ID. \n\nLabels can be used to grant access to resources. While teams are a way for user's to share access to a resource, labels can be defined by the developer to grant access without an invitation. See the [Permissions docs](https:\/\/appwrite.io\/docs\/permissions) for more info.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateLabels","weight":235,"cookies":false,"type":"","demo":"users\/update-labels.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-labels.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"labels":{"type":"array","description":"Array of user labels. Replaces the previous labels. Maximum of 1000 labels are allowed, each up to 36 alphanumeric characters long.","default":null,"x-example":null,"items":{"type":"string"}}},"required":["labels"]}}]}},"\/users\/{userId}\/logs":{"get":{"summary":"List user logs","operationId":"usersListLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listLogs","weight":231,"cookies":false,"type":"","demo":"users\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/users\/{userId}\/memberships":{"get":{"summary":"List user memberships","operationId":"usersListMemberships","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user membership list by its unique ID.","responses":{"200":{"description":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"listMemberships","weight":230,"cookies":false,"type":"","demo":"users\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-memberships.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]}},"\/users\/{userId}\/mfa":{"patch":{"summary":"Update MFA","operationId":"usersUpdateMfa","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateMfa","weight":244,"cookies":false,"type":"","demo":"users\/update-mfa.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-mfa.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"mfa":{"type":"boolean","description":"Enable or disable MFA.","default":null,"x-example":false}},"required":["mfa"]}}]}},"\/users\/{userId}\/mfa\/factors":{"get":{"summary":"List Factors","operationId":"usersListFactors","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"","responses":{"200":{"description":"MFAFactors","schema":{"$ref":"#\/definitions\/mfaFactors"}}},"x-appwrite":{"method":"listFactors","weight":245,"cookies":false,"type":"","demo":"users\/list-factors.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-factors.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]}},"\/users\/{userId}\/mfa\/{type}":{"delete":{"summary":"Delete Authenticator","operationId":"usersDeleteAuthenticator","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"deleteAuthenticator","weight":246,"cookies":false,"type":"","demo":"users\/delete-authenticator.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-mfa.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"type","description":"Type of authenticator.","required":true,"type":"string","x-example":"totp","enum":["totp"],"x-enum-name":null,"x-enum-keys":[],"in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"otp":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[OTP]"}},"required":["otp"]}}]}},"\/users\/{userId}\/name":{"patch":{"summary":"Update name","operationId":"usersUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user name by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateName","weight":237,"cookies":false,"type":"","demo":"users\/update-name.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-name.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"User name. Max length: 128 chars.","default":null,"x-example":"[NAME]"}},"required":["name"]}}]}},"\/users\/{userId}\/password":{"patch":{"summary":"Update password","operationId":"usersUpdatePassword","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user password by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePassword","weight":238,"cookies":false,"type":"","demo":"users\/update-password.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-password.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"password":{"type":"string","description":"New user password. Must be at least 8 chars.","default":null,"x-example":null}},"required":["password"]}}]}},"\/users\/{userId}\/phone":{"patch":{"summary":"Update phone","operationId":"usersUpdatePhone","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user phone by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePhone","weight":240,"cookies":false,"type":"","demo":"users\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"number":{"type":"string","description":"User phone number.","default":null,"x-example":"+12065550100"}},"required":["number"]}}]}},"\/users\/{userId}\/prefs":{"get":{"summary":"Get user preferences","operationId":"usersGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user preferences by its unique ID.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":227,"cookies":false,"type":"","demo":"users\/get-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]},"patch":{"summary":"Update user preferences","operationId":"usersUpdatePrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user preferences by its unique ID. The object you pass is stored as is, and replaces any previous value. The maximum allowed prefs size is 64kB and throws error if exceeded.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"updatePrefs","weight":242,"cookies":false,"type":"","demo":"users\/update-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"prefs":{"type":"object","description":"Prefs key-value JSON object.","default":{},"x-example":"{}"}},"required":["prefs"]}}]}},"\/users\/{userId}\/sessions":{"get":{"summary":"List user sessions","operationId":"usersListSessions","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user sessions list by its unique ID.","responses":{"200":{"description":"Sessions List","schema":{"$ref":"#\/definitions\/sessionList"}}},"x-appwrite":{"method":"listSessions","weight":229,"cookies":false,"type":"","demo":"users\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]},"post":{"summary":"Create session","operationId":"usersCreateSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Creates a session for a user. Returns an immediately usable session object.\n\nIf you want to generate a token for a custom authentication flow, use the [POST \/users\/{userId}\/tokens](https:\/\/appwrite.io\/docs\/server\/users#createToken) endpoint.","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"createSession","weight":247,"cookies":false,"type":"","demo":"users\/create-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-session.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]},"delete":{"summary":"Delete user sessions","operationId":"usersDeleteSessions","consumes":["application\/json"],"produces":[],"tags":["users"],"description":"Delete all user's sessions by using the user's unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":250,"cookies":false,"type":"","demo":"users\/delete-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]}},"\/users\/{userId}\/sessions\/{sessionId}":{"delete":{"summary":"Delete user session","operationId":"usersDeleteSession","consumes":["application\/json"],"produces":[],"tags":["users"],"description":"Delete a user sessions by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSession","weight":249,"cookies":false,"type":"","demo":"users\/delete-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-user-session.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"sessionId","description":"Session ID.","required":true,"type":"string","x-example":"[SESSION_ID]","in":"path"}]}},"\/users\/{userId}\/status":{"patch":{"summary":"Update user status","operationId":"usersUpdateStatus","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user status by its unique ID. Use this endpoint as an alternative to deleting a user if you want to keep user's ID reserved.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateStatus","weight":234,"cookies":false,"type":"","demo":"users\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"status":{"type":"boolean","description":"User Status. To activate the user pass `true` and to block the user pass `false`.","default":null,"x-example":false}},"required":["status"]}}]}},"\/users\/{userId}\/targets":{"get":{"summary":"List User Targets","operationId":"usersListTargets","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"","responses":{"200":{"description":"Target list","schema":{"$ref":"#\/definitions\/targetList"}}},"x-appwrite":{"method":"listTargets","weight":232,"cookies":false,"type":"","demo":"users\/list-targets.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-targets.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.read","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, email, phone, status, passwordUpdate, registration, emailVerification, phoneVerification, labels","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"post":{"summary":"Create User Target","operationId":"usersCreateTarget","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"","responses":{"201":{"description":"Target","schema":{"$ref":"#\/definitions\/target"}}},"x-appwrite":{"method":"createTarget","weight":224,"cookies":false,"type":"","demo":"users\/create-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-target.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"targetId":{"type":"string","description":"Target ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[TARGET_ID]"},"providerType":{"type":"string","description":"The target provider type. Can be one of the following: `email`, `sms` or `push`.","default":null,"x-example":"email","enum":["email","sms","push"],"x-enum-name":"MessagingProviderType","x-enum-keys":[]},"identifier":{"type":"string","description":"The target identifier (token, email, phone etc.)","default":null,"x-example":"[IDENTIFIER]"},"providerId":{"type":"string","description":"Provider ID. Message will be sent to this target from the specified provider ID. If no provider ID is set the first setup provider will be used.","default":"","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Target name. Max length: 128 chars. For example: My Awesome App Galaxy S23.","default":"","x-example":"[NAME]"}},"required":["targetId","providerType","identifier"]}}]}},"\/users\/{userId}\/targets\/{targetId}":{"get":{"summary":"Get User Target","operationId":"usersGetTarget","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"","responses":{"200":{"description":"Target","schema":{"$ref":"#\/definitions\/target"}}},"x-appwrite":{"method":"getTarget","weight":228,"cookies":false,"type":"","demo":"users\/get-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-target.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.read","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"targetId","description":"Target ID.","required":true,"type":"string","x-example":"[TARGET_ID]","in":"path"}]},"patch":{"summary":"Update User target","operationId":"usersUpdateTarget","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"","responses":{"200":{"description":"Target","schema":{"$ref":"#\/definitions\/target"}}},"x-appwrite":{"method":"updateTarget","weight":243,"cookies":false,"type":"","demo":"users\/update-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-target.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"targetId","description":"Target ID.","required":true,"type":"string","x-example":"[TARGET_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"identifier":{"type":"string","description":"The target identifier (token, email, phone etc.)","default":"","x-example":"[IDENTIFIER]"},"providerId":{"type":"string","description":"Provider ID. Message will be sent to this target from the specified provider ID. If no provider ID is set the first setup provider will be used.","default":"","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Target name. Max length: 128 chars. For example: My Awesome App Galaxy S23.","default":"","x-example":"[NAME]"}}}}]},"delete":{"summary":"Delete user target","operationId":"usersDeleteTarget","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteTarget","weight":252,"cookies":false,"type":"","demo":"users\/delete-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-target.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"targetId","description":"Target ID.","required":true,"type":"string","x-example":"[TARGET_ID]","in":"path"}]}},"\/users\/{userId}\/tokens":{"post":{"summary":"Create token","operationId":"usersCreateToken","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Returns a token with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [PUT \/account\/sessions\/custom](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateCustomSession) endpoint to complete the login process.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createToken","weight":248,"cookies":false,"type":"","demo":"users\/create-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-token.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"length":{"type":"integer","description":"Token length in characters. The default length is 6 characters","default":6,"x-example":4},"expire":{"type":"integer","description":"Token expiration period in seconds. The default expiration is 15 minutes.","default":900,"x-example":60}}}}]}},"\/users\/{userId}\/verification":{"patch":{"summary":"Update email verification","operationId":"usersUpdateEmailVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user email verification status by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateEmailVerification","weight":241,"cookies":false,"type":"","demo":"users\/update-email-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-email-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"emailVerification":{"type":"boolean","description":"User email verification status.","default":null,"x-example":false}},"required":["emailVerification"]}}]}},"\/users\/{userId}\/verification\/phone":{"patch":{"summary":"Update phone verification","operationId":"usersUpdatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user phone verification status by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePhoneVerification","weight":236,"cookies":false,"type":"","demo":"users\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"phoneVerification":{"type":"boolean","description":"User phone verification status.","default":null,"x-example":false}},"required":["phoneVerification"]}}]}},"\/vcs\/github\/installations\/{installationId}\/providerRepositories":{"get":{"summary":"List Repositories","operationId":"vcsListRepositories","consumes":["application\/json"],"produces":["application\/json"],"tags":["vcs"],"description":"","responses":{"200":{"description":"Provider Repositories List","schema":{"$ref":"#\/definitions\/providerRepositoryList"}}},"x-appwrite":{"method":"listRepositories","weight":258,"cookies":false,"type":"","demo":"vcs\/list-repositories.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"type":"string","x-example":"[INSTALLATION_ID]","in":"path"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create repository","operationId":"vcsCreateRepository","consumes":["application\/json"],"produces":["application\/json"],"tags":["vcs"],"description":"","responses":{"200":{"description":"ProviderRepository","schema":{"$ref":"#\/definitions\/providerRepository"}}},"x-appwrite":{"method":"createRepository","weight":259,"cookies":false,"type":"","demo":"vcs\/create-repository.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"type":"string","x-example":"[INSTALLATION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Repository name (slug)","default":null,"x-example":"[NAME]"},"private":{"type":"boolean","description":"Mark repository public or private","default":null,"x-example":false}},"required":["name","private"]}}]}},"\/vcs\/github\/installations\/{installationId}\/providerRepositories\/{providerRepositoryId}":{"get":{"summary":"Get repository","operationId":"vcsGetRepository","consumes":["application\/json"],"produces":["application\/json"],"tags":["vcs"],"description":"","responses":{"200":{"description":"ProviderRepository","schema":{"$ref":"#\/definitions\/providerRepository"}}},"x-appwrite":{"method":"getRepository","weight":260,"cookies":false,"type":"","demo":"vcs\/get-repository.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"type":"string","x-example":"[INSTALLATION_ID]","in":"path"},{"name":"providerRepositoryId","description":"Repository Id","required":true,"type":"string","x-example":"[PROVIDER_REPOSITORY_ID]","in":"path"}]}},"\/vcs\/github\/installations\/{installationId}\/providerRepositories\/{providerRepositoryId}\/branches":{"get":{"summary":"List Repository Branches","operationId":"vcsListRepositoryBranches","consumes":["application\/json"],"produces":["application\/json"],"tags":["vcs"],"description":"","responses":{"200":{"description":"Branches List","schema":{"$ref":"#\/definitions\/branchList"}}},"x-appwrite":{"method":"listRepositoryBranches","weight":261,"cookies":false,"type":"","demo":"vcs\/list-repository-branches.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"type":"string","x-example":"[INSTALLATION_ID]","in":"path"},{"name":"providerRepositoryId","description":"Repository Id","required":true,"type":"string","x-example":"[PROVIDER_REPOSITORY_ID]","in":"path"}]}},"\/vcs\/github\/installations\/{installationId}\/providerRepositories\/{providerRepositoryId}\/detection":{"post":{"summary":"Detect runtime settings from source code","operationId":"vcsCreateRepositoryDetection","consumes":["application\/json"],"produces":["application\/json"],"tags":["vcs"],"description":"","responses":{"200":{"description":"Detection","schema":{"$ref":"#\/definitions\/detection"}}},"x-appwrite":{"method":"createRepositoryDetection","weight":257,"cookies":false,"type":"","demo":"vcs\/create-repository-detection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"type":"string","x-example":"[INSTALLATION_ID]","in":"path"},{"name":"providerRepositoryId","description":"Repository Id","required":true,"type":"string","x-example":"[PROVIDER_REPOSITORY_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerRootDirectory":{"type":"string","description":"Path to Root Directory","default":"","x-example":"[PROVIDER_ROOT_DIRECTORY]"}}}}]}},"\/vcs\/github\/installations\/{installationId}\/repositories\/{repositoryId}":{"patch":{"summary":"Authorize external deployment","operationId":"vcsUpdateExternalDeployments","consumes":["application\/json"],"produces":[],"tags":["vcs"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"updateExternalDeployments","weight":266,"cookies":false,"type":"","demo":"vcs\/update-external-deployments.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"type":"string","x-example":"[INSTALLATION_ID]","in":"path"},{"name":"repositoryId","description":"VCS Repository Id","required":true,"type":"string","x-example":"[REPOSITORY_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerPullRequestId":{"type":"string","description":"GitHub Pull Request Id","default":null,"x-example":"[PROVIDER_PULL_REQUEST_ID]"}},"required":["providerPullRequestId"]}}]}},"\/vcs\/installations":{"get":{"summary":"List installations","operationId":"vcsListInstallations","consumes":["application\/json"],"produces":["application\/json"],"tags":["vcs"],"description":"","responses":{"200":{"description":"Installations List","schema":{"$ref":"#\/definitions\/installationList"}}},"x-appwrite":{"method":"listInstallations","weight":263,"cookies":false,"type":"","demo":"vcs\/list-installations.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/vcs\/list-installations.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: provider, organization","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]}},"\/vcs\/installations\/{installationId}":{"get":{"summary":"Get installation","operationId":"vcsGetInstallation","consumes":["application\/json"],"produces":["application\/json"],"tags":["vcs"],"description":"","responses":{"200":{"description":"Installation","schema":{"$ref":"#\/definitions\/installation"}}},"x-appwrite":{"method":"getInstallation","weight":264,"cookies":false,"type":"","demo":"vcs\/get-installation.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/vcs\/get-installation.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"type":"string","x-example":"[INSTALLATION_ID]","in":"path"}]},"delete":{"summary":"Delete Installation","operationId":"vcsDeleteInstallation","consumes":["application\/json"],"produces":[],"tags":["vcs"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteInstallation","weight":265,"cookies":false,"type":"","demo":"vcs\/delete-installation.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/vcs\/delete-installation.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"type":"string","x-example":"[INSTALLATION_ID]","in":"path"}]}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"project","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]},{"name":"proxy","description":"The Proxy Service allows you to configure actions for your domains beyond DNS configuration.","x-globalAttributes":[]},{"name":"graphql","description":"The GraphQL API allows you to query and mutate your Appwrite server using GraphQL.","x-globalAttributes":[]},{"name":"console","description":"The Console service allows you to interact with console relevant informations.","x-globalAttributes":[]},{"name":"migrations","description":"The Migrations service allows you to migrate third-party data to your Appwrite project.","x-globalAttributes":[]},{"name":"messaging","description":"The Messaging service allows you to send messages to any provider type (SMTP, push notification, SMS, etc.).","x-globalAttributes":[]}],"definitions":{"any":{"description":"Any","type":"object","additionalProperties":true},"documentList":{"description":"Documents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of documents documents that matched your query.","x-example":5,"format":"int32"},"documents":{"type":"array","description":"List of documents.","items":{"type":"object","$ref":"#\/definitions\/document"},"x-example":""}},"required":["total","documents"]},"collectionList":{"description":"Collections List","type":"object","properties":{"total":{"type":"integer","description":"Total number of collections documents that matched your query.","x-example":5,"format":"int32"},"collections":{"type":"array","description":"List of collections.","items":{"type":"object","$ref":"#\/definitions\/collection"},"x-example":""}},"required":["total","collections"]},"databaseList":{"description":"Databases List","type":"object","properties":{"total":{"type":"integer","description":"Total number of databases documents that matched your query.","x-example":5,"format":"int32"},"databases":{"type":"array","description":"List of databases.","items":{"type":"object","$ref":"#\/definitions\/database"},"x-example":""}},"required":["total","databases"]},"indexList":{"description":"Indexes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of indexes documents that matched your query.","x-example":5,"format":"int32"},"indexes":{"type":"array","description":"List of indexes.","items":{"type":"object","$ref":"#\/definitions\/index"},"x-example":""}},"required":["total","indexes"]},"userList":{"description":"Users List","type":"object","properties":{"total":{"type":"integer","description":"Total number of users documents that matched your query.","x-example":5,"format":"int32"},"users":{"type":"array","description":"List of users.","items":{"type":"object","$ref":"#\/definitions\/user"},"x-example":""}},"required":["total","users"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of sessions documents that matched your query.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"type":"object","$ref":"#\/definitions\/session"},"x-example":""}},"required":["total","sessions"]},"identityList":{"description":"Identities List","type":"object","properties":{"total":{"type":"integer","description":"Total number of identities documents that matched your query.","x-example":5,"format":"int32"},"identities":{"type":"array","description":"List of identities.","items":{"type":"object","$ref":"#\/definitions\/identity"},"x-example":""}},"required":["total","identities"]},"logList":{"description":"Logs List","type":"object","properties":{"total":{"type":"integer","description":"Total number of logs documents that matched your query.","x-example":5,"format":"int32"},"logs":{"type":"array","description":"List of logs.","items":{"type":"object","$ref":"#\/definitions\/log"},"x-example":""}},"required":["total","logs"]},"fileList":{"description":"Files List","type":"object","properties":{"total":{"type":"integer","description":"Total number of files documents that matched your query.","x-example":5,"format":"int32"},"files":{"type":"array","description":"List of files.","items":{"type":"object","$ref":"#\/definitions\/file"},"x-example":""}},"required":["total","files"]},"bucketList":{"description":"Buckets List","type":"object","properties":{"total":{"type":"integer","description":"Total number of buckets documents that matched your query.","x-example":5,"format":"int32"},"buckets":{"type":"array","description":"List of buckets.","items":{"type":"object","$ref":"#\/definitions\/bucket"},"x-example":""}},"required":["total","buckets"]},"teamList":{"description":"Teams List","type":"object","properties":{"total":{"type":"integer","description":"Total number of teams documents that matched your query.","x-example":5,"format":"int32"},"teams":{"type":"array","description":"List of teams.","items":{"type":"object","$ref":"#\/definitions\/team"},"x-example":""}},"required":["total","teams"]},"membershipList":{"description":"Memberships List","type":"object","properties":{"total":{"type":"integer","description":"Total number of memberships documents that matched your query.","x-example":5,"format":"int32"},"memberships":{"type":"array","description":"List of memberships.","items":{"type":"object","$ref":"#\/definitions\/membership"},"x-example":""}},"required":["total","memberships"]},"functionList":{"description":"Functions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of functions documents that matched your query.","x-example":5,"format":"int32"},"functions":{"type":"array","description":"List of functions.","items":{"type":"object","$ref":"#\/definitions\/function"},"x-example":""}},"required":["total","functions"]},"installationList":{"description":"Installations List","type":"object","properties":{"total":{"type":"integer","description":"Total number of installations documents that matched your query.","x-example":5,"format":"int32"},"installations":{"type":"array","description":"List of installations.","items":{"type":"object","$ref":"#\/definitions\/installation"},"x-example":""}},"required":["total","installations"]},"providerRepositoryList":{"description":"Provider Repositories List","type":"object","properties":{"total":{"type":"integer","description":"Total number of providerRepositories documents that matched your query.","x-example":5,"format":"int32"},"providerRepositories":{"type":"array","description":"List of providerRepositories.","items":{"type":"object","$ref":"#\/definitions\/providerRepository"},"x-example":""}},"required":["total","providerRepositories"]},"branchList":{"description":"Branches List","type":"object","properties":{"total":{"type":"integer","description":"Total number of branches documents that matched your query.","x-example":5,"format":"int32"},"branches":{"type":"array","description":"List of branches.","items":{"type":"object","$ref":"#\/definitions\/branch"},"x-example":""}},"required":["total","branches"]},"runtimeList":{"description":"Runtimes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of runtimes documents that matched your query.","x-example":5,"format":"int32"},"runtimes":{"type":"array","description":"List of runtimes.","items":{"type":"object","$ref":"#\/definitions\/runtime"},"x-example":""}},"required":["total","runtimes"]},"deploymentList":{"description":"Deployments List","type":"object","properties":{"total":{"type":"integer","description":"Total number of deployments documents that matched your query.","x-example":5,"format":"int32"},"deployments":{"type":"array","description":"List of deployments.","items":{"type":"object","$ref":"#\/definitions\/deployment"},"x-example":""}},"required":["total","deployments"]},"executionList":{"description":"Executions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of executions documents that matched your query.","x-example":5,"format":"int32"},"executions":{"type":"array","description":"List of executions.","items":{"type":"object","$ref":"#\/definitions\/execution"},"x-example":""}},"required":["total","executions"]},"projectList":{"description":"Projects List","type":"object","properties":{"total":{"type":"integer","description":"Total number of projects documents that matched your query.","x-example":5,"format":"int32"},"projects":{"type":"array","description":"List of projects.","items":{"type":"object","$ref":"#\/definitions\/project"},"x-example":""}},"required":["total","projects"]},"webhookList":{"description":"Webhooks List","type":"object","properties":{"total":{"type":"integer","description":"Total number of webhooks documents that matched your query.","x-example":5,"format":"int32"},"webhooks":{"type":"array","description":"List of webhooks.","items":{"type":"object","$ref":"#\/definitions\/webhook"},"x-example":""}},"required":["total","webhooks"]},"keyList":{"description":"API Keys List","type":"object","properties":{"total":{"type":"integer","description":"Total number of keys documents that matched your query.","x-example":5,"format":"int32"},"keys":{"type":"array","description":"List of keys.","items":{"type":"object","$ref":"#\/definitions\/key"},"x-example":""}},"required":["total","keys"]},"platformList":{"description":"Platforms List","type":"object","properties":{"total":{"type":"integer","description":"Total number of platforms documents that matched your query.","x-example":5,"format":"int32"},"platforms":{"type":"array","description":"List of platforms.","items":{"type":"object","$ref":"#\/definitions\/platform"},"x-example":""}},"required":["total","platforms"]},"countryList":{"description":"Countries List","type":"object","properties":{"total":{"type":"integer","description":"Total number of countries documents that matched your query.","x-example":5,"format":"int32"},"countries":{"type":"array","description":"List of countries.","items":{"type":"object","$ref":"#\/definitions\/country"},"x-example":""}},"required":["total","countries"]},"continentList":{"description":"Continents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of continents documents that matched your query.","x-example":5,"format":"int32"},"continents":{"type":"array","description":"List of continents.","items":{"type":"object","$ref":"#\/definitions\/continent"},"x-example":""}},"required":["total","continents"]},"languageList":{"description":"Languages List","type":"object","properties":{"total":{"type":"integer","description":"Total number of languages documents that matched your query.","x-example":5,"format":"int32"},"languages":{"type":"array","description":"List of languages.","items":{"type":"object","$ref":"#\/definitions\/language"},"x-example":""}},"required":["total","languages"]},"currencyList":{"description":"Currencies List","type":"object","properties":{"total":{"type":"integer","description":"Total number of currencies documents that matched your query.","x-example":5,"format":"int32"},"currencies":{"type":"array","description":"List of currencies.","items":{"type":"object","$ref":"#\/definitions\/currency"},"x-example":""}},"required":["total","currencies"]},"phoneList":{"description":"Phones List","type":"object","properties":{"total":{"type":"integer","description":"Total number of phones documents that matched your query.","x-example":5,"format":"int32"},"phones":{"type":"array","description":"List of phones.","items":{"type":"object","$ref":"#\/definitions\/phone"},"x-example":""}},"required":["total","phones"]},"variableList":{"description":"Variables List","type":"object","properties":{"total":{"type":"integer","description":"Total number of variables documents that matched your query.","x-example":5,"format":"int32"},"variables":{"type":"array","description":"List of variables.","items":{"type":"object","$ref":"#\/definitions\/variable"},"x-example":""}},"required":["total","variables"]},"proxyRuleList":{"description":"Rule List","type":"object","properties":{"total":{"type":"integer","description":"Total number of rules documents that matched your query.","x-example":5,"format":"int32"},"rules":{"type":"array","description":"List of rules.","items":{"type":"object","$ref":"#\/definitions\/proxyRule"},"x-example":""}},"required":["total","rules"]},"localeCodeList":{"description":"Locale codes list","type":"object","properties":{"total":{"type":"integer","description":"Total number of localeCodes documents that matched your query.","x-example":5,"format":"int32"},"localeCodes":{"type":"array","description":"List of localeCodes.","items":{"type":"object","$ref":"#\/definitions\/localeCode"},"x-example":""}},"required":["total","localeCodes"]},"providerList":{"description":"Provider list","type":"object","properties":{"total":{"type":"integer","description":"Total number of providers documents that matched your query.","x-example":5,"format":"int32"},"providers":{"type":"array","description":"List of providers.","items":{"type":"object","$ref":"#\/definitions\/provider"},"x-example":""}},"required":["total","providers"]},"messageList":{"description":"Message list","type":"object","properties":{"total":{"type":"integer","description":"Total number of messages documents that matched your query.","x-example":5,"format":"int32"},"messages":{"type":"array","description":"List of messages.","items":{"type":"object","$ref":"#\/definitions\/message"},"x-example":""}},"required":["total","messages"]},"topicList":{"description":"Topic list","type":"object","properties":{"total":{"type":"integer","description":"Total number of topics documents that matched your query.","x-example":5,"format":"int32"},"topics":{"type":"array","description":"List of topics.","items":{"type":"object","$ref":"#\/definitions\/topic"},"x-example":""}},"required":["total","topics"]},"subscriberList":{"description":"Subscriber list","type":"object","properties":{"total":{"type":"integer","description":"Total number of subscribers documents that matched your query.","x-example":5,"format":"int32"},"subscribers":{"type":"array","description":"List of subscribers.","items":{"type":"object","$ref":"#\/definitions\/subscriber"},"x-example":""}},"required":["total","subscribers"]},"targetList":{"description":"Target list","type":"object","properties":{"total":{"type":"integer","description":"Total number of targets documents that matched your query.","x-example":5,"format":"int32"},"targets":{"type":"array","description":"List of targets.","items":{"type":"object","$ref":"#\/definitions\/target"},"x-example":""}},"required":["total","targets"]},"migrationList":{"description":"Migrations List","type":"object","properties":{"total":{"type":"integer","description":"Total number of migrations documents that matched your query.","x-example":5,"format":"int32"},"migrations":{"type":"array","description":"List of migrations.","items":{"type":"object","$ref":"#\/definitions\/migration"},"x-example":""}},"required":["total","migrations"]},"firebaseProjectList":{"description":"Migrations Firebase Projects List","type":"object","properties":{"total":{"type":"integer","description":"Total number of projects documents that matched your query.","x-example":5,"format":"int32"},"projects":{"type":"array","description":"List of projects.","items":{"type":"object","$ref":"#\/definitions\/firebaseProject"},"x-example":""}},"required":["total","projects"]},"database":{"description":"Database","type":"object","properties":{"$id":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Database name.","x-example":"My Database"},"$createdAt":{"type":"string","description":"Database creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Database update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"enabled":{"type":"boolean","description":"If database is enabled. Can be 'enabled' or 'disabled'. When disabled, the database is inaccessible to users, but remains accessible to Server SDKs using API keys.","x-example":false}},"required":["$id","name","$createdAt","$updatedAt","enabled"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Collection creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Collection update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Collection permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled. Can be 'enabled' or 'disabled'. When disabled, the collection is inaccessible to users, but remains accessible to Server SDKs using API keys.","x-example":false},"documentSecurity":{"type":"boolean","description":"Whether document-level permissions are enabled. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":true},"attributes":{"type":"array","description":"Collection attributes.","items":{"x-anyOf":[{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeRelationship"},{"$ref":"#\/definitions\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"type":"object","$ref":"#\/definitions\/index"},"x-example":{}}},"required":["$id","$createdAt","$updatedAt","$permissions","databaseId","name","enabled","documentSecurity","attributes","indexes"]},"attributeList":{"description":"Attributes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of attributes in the given collection.","x-example":5,"format":"int32"},"attributes":{"type":"array","description":"List of attributes.","items":{"x-anyOf":[{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeRelationship"},{"$ref":"#\/definitions\/attributeString"}]},"x-example":""}},"required":["total","attributes"]},"attributeString":{"description":"AttributeString","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"fullName"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"size":{"type":"integer","description":"Attribute size.","x-example":128,"format":"int32"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"default","x-nullable":true}},"required":["key","type","status","error","required","size"]},"attributeInteger":{"description":"AttributeInteger","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"count"},"type":{"type":"string","description":"Attribute type.","x-example":"integer"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"min":{"type":"integer","description":"Minimum value to enforce for new documents.","x-example":1,"format":"int32","x-nullable":true},"max":{"type":"integer","description":"Maximum value to enforce for new documents.","x-example":10,"format":"int32","x-nullable":true},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":10,"format":"int32","x-nullable":true}},"required":["key","type","status","error","required"]},"attributeFloat":{"description":"AttributeFloat","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"percentageCompleted"},"type":{"type":"string","description":"Attribute type.","x-example":"double"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"min":{"type":"number","description":"Minimum value to enforce for new documents.","x-example":1.5,"format":"double","x-nullable":true},"max":{"type":"number","description":"Maximum value to enforce for new documents.","x-example":10.5,"format":"double","x-nullable":true},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":2.5,"format":"double","x-nullable":true}},"required":["key","type","status","error","required"]},"attributeBoolean":{"description":"AttributeBoolean","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"isEnabled"},"type":{"type":"string","description":"Attribute type.","x-example":"boolean"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":false,"x-nullable":true}},"required":["key","type","status","error","required"]},"attributeEmail":{"description":"AttributeEmail","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"userEmail"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"format":{"type":"string","description":"String format.","x-example":"email"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"default@example.com","x-nullable":true}},"required":["key","type","status","error","required","format"]},"attributeEnum":{"description":"AttributeEnum","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"status"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"elements":{"type":"array","description":"Array of elements in enumerated type.","items":{"type":"string"},"x-example":"element"},"format":{"type":"string","description":"String format.","x-example":"enum"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"element","x-nullable":true}},"required":["key","type","status","error","required","elements","format"]},"attributeIp":{"description":"AttributeIP","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"ipAddress"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"format":{"type":"string","description":"String format.","x-example":"ip"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"192.0.2.0","x-nullable":true}},"required":["key","type","status","error","required","format"]},"attributeUrl":{"description":"AttributeURL","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"githubUrl"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"format":{"type":"string","description":"String format.","x-example":"url"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"http:\/\/example.com","x-nullable":true}},"required":["key","type","status","error","required","format"]},"attributeDatetime":{"description":"AttributeDatetime","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"birthDay"},"type":{"type":"string","description":"Attribute type.","x-example":"datetime"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"format":{"type":"string","description":"ISO 8601 format.","x-example":"datetime"},"default":{"type":"string","description":"Default value for attribute when not provided. Only null is optional","x-example":"2020-10-15T06:38:00.000+00:00","x-nullable":true}},"required":["key","type","status","error","required","format"]},"attributeRelationship":{"description":"AttributeRelationship","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"fullName"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"relatedCollection":{"type":"string","description":"The ID of the related collection.","x-example":"collection"},"relationType":{"type":"string","description":"The type of the relationship.","x-example":"oneToOne|oneToMany|manyToOne|manyToMany"},"twoWay":{"type":"boolean","description":"Is the relationship two-way?","x-example":false},"twoWayKey":{"type":"string","description":"The key of the two-way relationship.","x-example":"string"},"onDelete":{"type":"string","description":"How deleting the parent document will propagate to child documents.","x-example":"restrict|cascade|setNull"},"side":{"type":"string","description":"Whether this is the parent or child side of the relationship","x-example":"parent|child"}},"required":["key","type","status","error","required","relatedCollection","relationType","twoWay","twoWayKey","onDelete","side"]},"index":{"description":"Index","type":"object","properties":{"key":{"type":"string","description":"Index Key.","x-example":"index1"},"type":{"type":"string","description":"Index type.","x-example":"primary"},"status":{"type":"string","description":"Index status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an index.","x-example":"string"},"attributes":{"type":"array","description":"Index attributes.","items":{"type":"string"},"x-example":[]},"orders":{"type":"array","description":"Index orders.","items":{"type":"string"},"x-example":[],"x-nullable":true}},"required":["key","type","status","error","attributes"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"user":{"description":"User","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"password":{"type":"string","description":"Hashed user password.","x-example":"$argon2id$v=19$m=2048,t=4,p=3$aUZjLnliVWRINmFNTWMudg$5S+x+7uA31xFnrHFT47yFwcJeaP0w92L\/4LdgrVRXxE","x-nullable":true},"hash":{"type":"string","description":"Password hashing algorithm.","x-example":"argon2","x-nullable":true},"hashOptions":{"type":"object","description":"Password hashing algorithm configuration.","x-example":{},"items":{"x-oneOf":[{"$ref":"#\/definitions\/algoArgon2"},{"$ref":"#\/definitions\/algoScrypt"},{"$ref":"#\/definitions\/algoScryptModified"},{"$ref":"#\/definitions\/algoBcrypt"},{"$ref":"#\/definitions\/algoPhpass"},{"$ref":"#\/definitions\/algoSha"},{"$ref":"#\/definitions\/algoMd5"}]},"x-nullable":true},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"labels":{"type":"array","description":"Labels for the user.","items":{"type":"string"},"x-example":["vip"]},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"mfa":{"type":"boolean","description":"Multi factor authentication status.","x-example":true},"totp":{"type":"boolean","description":"TOTP status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"type":"object","$ref":"#\/definitions\/preferences"}},"targets":{"type":"array","description":"A user-owned message receiver. A single user may have multiple e.g. emails, phones, and a browser. Each target is registered with a single provider.","items":{"type":"object","$ref":"#\/definitions\/target"},"x-example":[]},"accessedAt":{"type":"string","description":"Most recent access date in ISO 8601 format. This attribute is only updated again after 24 hours.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","$updatedAt","name","registration","status","labels","passwordUpdate","email","phone","emailVerification","phoneVerification","mfa","totp","prefs","targets","accessedAt"]},"algoMd5":{"description":"AlgoMD5","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"md5"}},"required":["type"]},"algoSha":{"description":"AlgoSHA","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"sha"}},"required":["type"]},"algoPhpass":{"description":"AlgoPHPass","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"phpass"}},"required":["type"]},"algoBcrypt":{"description":"AlgoBcrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"bcrypt"}},"required":["type"]},"algoScrypt":{"description":"AlgoScrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scrypt"},"costCpu":{"type":"integer","description":"CPU complexity of computed hash.","x-example":8,"format":"int32"},"costMemory":{"type":"integer","description":"Memory complexity of computed hash.","x-example":14,"format":"int32"},"costParallel":{"type":"integer","description":"Parallelization of computed hash.","x-example":1,"format":"int32"},"length":{"type":"integer","description":"Length used to compute hash.","x-example":64,"format":"int32"}},"required":["type","costCpu","costMemory","costParallel","length"]},"algoScryptModified":{"description":"AlgoScryptModified","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scryptMod"},"salt":{"type":"string","description":"Salt used to compute hash.","x-example":"UxLMreBr6tYyjQ=="},"saltSeparator":{"type":"string","description":"Separator used to compute hash.","x-example":"Bw=="},"signerKey":{"type":"string","description":"Key used to compute hash.","x-example":"XyEKE9RcTDeLEsL\/RjwPDBv\/RqDl8fb3gpYEOQaPihbxf1ZAtSOHCjuAAa7Q3oHpCYhXSN9tizHgVOwn6krflQ=="}},"required":["type","salt","saltSeparator","signerKey"]},"algoArgon2":{"description":"AlgoArgon2","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"argon2"},"memoryCost":{"type":"integer","description":"Memory used to compute hash.","x-example":65536,"format":"int32"},"timeCost":{"type":"integer","description":"Amount of time consumed to compute hash","x-example":4,"format":"int32"},"threads":{"type":"integer","description":"Number of threads used to compute hash.","x-example":3,"format":"int32"}},"required":["type","memoryCost","timeCost","threads"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true},"factors":{"type":"array","description":"Returns a list of active session factors.","items":{"type":"string"},"x-example":["email"]},"secret":{"type":"string","description":"Secret used to authenticate the user. Only included if the request was made with an API key","x-example":"5e5bb8c16897e"}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current","factors","secret"]},"identity":{"description":"Identity","type":"object","properties":{"$id":{"type":"string","description":"Identity ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Identity creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Identity update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"provider":{"type":"string","description":"Identity Provider.","x-example":"email"},"providerUid":{"type":"string","description":"ID of the User in the Identity Provider.","x-example":"5e5bb8c16897e"},"providerEmail":{"type":"string","description":"Email of the User in the Identity Provider.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Identity Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Identity Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"}},"required":["$id","$createdAt","$updatedAt","userId","provider","providerUid","providerEmail","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"phrase":{"type":"string","description":"Security phrase of a token. Empty if security phrase was not requested when creating a token. It includes randomly generated phrase which is also sent in the external resource such as email.","x-example":"Golden Fox"}},"required":["$id","$createdAt","userId","secret","expire","phrase"]},"jwt":{"description":"JWT","type":"object","properties":{"jwt":{"type":"string","description":"JWT encoded string.","x-example":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c"}},"required":["jwt"]},"locale":{"description":"Locale","type":"object","properties":{"ip":{"type":"string","description":"User IP address.","x-example":"127.0.0.1"},"countryCode":{"type":"string","description":"Country code in [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) two-character format","x-example":"US"},"country":{"type":"string","description":"Country name. This field support localization.","x-example":"United States"},"continentCode":{"type":"string","description":"Continent code. A two character continent code \"AF\" for Africa, \"AN\" for Antarctica, \"AS\" for Asia, \"EU\" for Europe, \"NA\" for North America, \"OC\" for Oceania, and \"SA\" for South America.","x-example":"NA"},"continent":{"type":"string","description":"Continent name. This field support localization.","x-example":"North America"},"eu":{"type":"boolean","description":"True if country is part of the European Union.","x-example":false},"currency":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format","x-example":"USD"}},"required":["ip","countryCode","country","continentCode","continent","eu","currency"]},"localeCode":{"description":"LocaleCode","type":"object","properties":{"code":{"type":"string","description":"Locale codes in [ISO 639-1](https:\/\/en.wikipedia.org\/wiki\/List_of_ISO_639-1_codes)","x-example":"en-us"},"name":{"type":"string","description":"Locale name","x-example":"US"}},"required":["code","name"]},"file":{"description":"File","type":"object","properties":{"$id":{"type":"string","description":"File ID.","x-example":"5e5ea5c16897e"},"bucketId":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Bucket creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Bucket update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Bucket permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"fileSecurity":{"type":"boolean","description":"Whether file-level security is enabled. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":true},"name":{"type":"string","description":"Bucket name.","x-example":"Documents"},"enabled":{"type":"boolean","description":"Bucket enabled.","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size supported.","x-example":100,"format":"int32"},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions.","items":{"type":"string"},"x-example":["jpg","png"]},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Will be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd).","x-example":"gzip"},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$createdAt","$updatedAt","$permissions","fileSecurity","name","enabled","maximumFileSize","allowedFileExtensions","compression","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"},"prefs":{"type":"object","description":"Team preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"type":"object","$ref":"#\/definitions\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","total","prefs"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"mfa":{"type":"boolean","description":"Multi factor authentication status, true if the user has MFA enabled or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":["owner"]}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","mfa","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Function creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Function update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"users"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"enabled":{"type":"boolean","description":"Function enabled.","x-example":false},"live":{"type":"boolean","description":"Is the function deployed with the latest configuration? This is set to false if you've changed an environment variables, entrypoint, commands, or other settings that needs redeploy to be applied. When the value is false, redeploy the function to update it with the latest configuration.","x-example":false},"logging":{"type":"boolean","description":"Whether executions will be logged. When set to false, executions will not be logged, but will reduce resource used by your Appwrite project.","x-example":false},"runtime":{"type":"string","description":"Function execution runtime.","x-example":"python-3.8"},"deployment":{"type":"string","description":"Function's active deployment ID.","x-example":"5e5ea5c16897e"},"vars":{"type":"array","description":"Function variables.","items":{"type":"object","$ref":"#\/definitions\/variable"},"x-example":[]},"events":{"type":"array","description":"Function trigger events.","items":{"type":"string"},"x-example":"account.create"},"schedule":{"type":"string","description":"Function execution schedult in CRON format.","x-example":"5 4 * * *"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":300,"format":"int32"},"entrypoint":{"type":"string","description":"The entrypoint file used to execute the deployment.","x-example":"index.js"},"commands":{"type":"string","description":"The build command used to build the deployment.","x-example":"npm install"},"version":{"type":"string","description":"Version of Open Runtimes used for the function.","x-example":"v2"},"installationId":{"type":"string","description":"Function VCS (Version Control System) installation id.","x-example":"6m40at4ejk5h2u9s1hboo"},"providerRepositoryId":{"type":"string","description":"VCS (Version Control System) Repository ID","x-example":"appwrite"},"providerBranch":{"type":"string","description":"VCS (Version Control System) branch name","x-example":"main"},"providerRootDirectory":{"type":"string","description":"Path to function in VCS (Version Control System) repository","x-example":"functions\/helloWorld"},"providerSilentMode":{"type":"boolean","description":"Is VCS (Version Control System) connection is in silent mode? When in silence mode, no comments will be posted on the repository pull or merge requests","x-example":false}},"required":["$id","$createdAt","$updatedAt","execute","name","enabled","live","logging","runtime","deployment","vars","events","schedule","timeout","entrypoint","commands","version","installationId","providerRepositoryId","providerBranch","providerRootDirectory","providerSilentMode"]},"installation":{"description":"Installation","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Function creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Function update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"VCS (Version Control System) provider name.","x-example":"github"},"organization":{"type":"string","description":"VCS (Version Control System) organization name.","x-example":"appwrite"},"providerInstallationId":{"type":"string","description":"VCS (Version Control System) installation ID.","x-example":"5322"}},"required":["$id","$createdAt","$updatedAt","provider","organization","providerInstallationId"]},"providerRepository":{"description":"ProviderRepository","type":"object","properties":{"id":{"type":"string","description":"VCS (Version Control System) repository ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"VCS (Version Control System) repository name.","x-example":"appwrite"},"organization":{"type":"string","description":"VCS (Version Control System) organization name","x-example":"appwrite"},"provider":{"type":"string","description":"VCS (Version Control System) provider name.","x-example":"github"},"private":{"type":"boolean","description":"Is VCS (Version Control System) repository private?","x-example":true},"runtime":{"type":"string","description":"Auto-detected runtime suggestion. Empty if getting response of getRuntime().","x-example":"node"},"pushedAt":{"type":"string","description":"Last commit date in ISO 8601 format.","x-example":"datetime"}},"required":["id","name","organization","provider","private","runtime","pushedAt"]},"detection":{"description":"Detection","type":"object","properties":{"runtime":{"type":"string","description":"Runtime","x-example":"node"}},"required":["runtime"]},"branch":{"description":"Branch","type":"object","properties":{"name":{"type":"string","description":"Branch Name.","x-example":"main"}},"required":["name"]},"runtime":{"description":"Runtime","type":"object","properties":{"$id":{"type":"string","description":"Runtime ID.","x-example":"python-3.8"},"name":{"type":"string","description":"Runtime Name.","x-example":"Python"},"version":{"type":"string","description":"Runtime version.","x-example":"3.8"},"base":{"type":"string","description":"Base Docker image used to build the runtime.","x-example":"python:3.8-alpine"},"image":{"type":"string","description":"Image name of Docker Hub.","x-example":"appwrite\\\/runtime-for-python:3.8"},"logo":{"type":"string","description":"Name of the logo image.","x-example":"python.png"},"supports":{"type":"array","description":"List of supported architectures.","items":{"type":"string"},"x-example":"amd64"}},"required":["$id","name","version","base","image","logo","supports"]},"deployment":{"description":"Deployment","type":"object","properties":{"$id":{"type":"string","description":"Deployment ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Deployment creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Deployment update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"type":{"type":"string","description":"Type of deployment.","x-example":"vcs"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"index.js"},"size":{"type":"integer","description":"The code size in bytes.","x-example":128,"format":"int32"},"buildId":{"type":"string","description":"The current build ID.","x-example":"5e5ea5c16897e"},"activate":{"type":"boolean","description":"Whether the deployment should be automatically activated.","x-example":true},"status":{"type":"string","description":"The deployment status. Possible values are \"processing\", \"building\", \"waiting\", \"ready\", and \"failed\".","x-example":"ready"},"buildLogs":{"type":"string","description":"The build logs.","x-example":"Compiling source files..."},"buildTime":{"type":"integer","description":"The current build time in seconds.","x-example":128,"format":"int32"},"providerRepositoryName":{"type":"string","description":"The name of the vcs provider repository","x-example":"database"},"providerRepositoryOwner":{"type":"string","description":"The name of the vcs provider repository owner","x-example":"utopia"},"providerRepositoryUrl":{"type":"string","description":"The url of the vcs provider repository","x-example":"https:\/\/github.com\/vermakhushboo\/g4-node-function"},"providerBranch":{"type":"string","description":"The branch of the vcs repository","x-example":"0.7.x"},"providerCommitHash":{"type":"string","description":"The commit hash of the vcs commit","x-example":"7c3f25d"},"providerCommitAuthorUrl":{"type":"string","description":"The url of vcs commit author","x-example":"https:\/\/github.com\/vermakhushboo"},"providerCommitAuthor":{"type":"string","description":"The name of vcs commit author","x-example":"Khushboo Verma"},"providerCommitMessage":{"type":"string","description":"The commit message","x-example":"Update index.js"},"providerCommitUrl":{"type":"string","description":"The url of the vcs commit","x-example":"https:\/\/github.com\/vermakhushboo\/g4-node-function\/commit\/60c0416257a9cbcdd96b2d370c38d8f8d150ccfb"},"providerBranchUrl":{"type":"string","description":"The branch of the vcs repository","x-example":"https:\/\/github.com\/vermakhushboo\/appwrite\/tree\/0.7.x"}},"required":["$id","$createdAt","$updatedAt","type","resourceId","resourceType","entrypoint","size","buildId","activate","status","buildLogs","buildTime","providerRepositoryName","providerRepositoryOwner","providerRepositoryUrl","providerBranch","providerCommitHash","providerCommitAuthorUrl","providerCommitAuthor","providerCommitMessage","providerCommitUrl","providerBranchUrl"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"requestMethod":{"type":"string","description":"HTTP request method type.","x-example":"GET"},"requestPath":{"type":"string","description":"HTTP request path and query.","x-example":"\/articles?id=5"},"requestHeaders":{"type":"array","description":"HTTP response headers as a key-value object. This will return only whitelisted headers. All headers are returned if execution is created as synchronous.","items":{"type":"object","$ref":"#\/definitions\/headers"},"x-example":[{"Content-Type":"application\/json"}]},"responseStatusCode":{"type":"integer","description":"HTTP response status code.","x-example":200,"format":"int32"},"responseBody":{"type":"string","description":"HTTP response body. This will return empty unless execution is created as synchronous.","x-example":"Developers are awesome."},"responseHeaders":{"type":"array","description":"HTTP response headers as a key-value object. This will return only whitelisted headers. All headers are returned if execution is created as synchronous.","items":{"type":"object","$ref":"#\/definitions\/headers"},"x-example":[{"Content-Type":"application\/json"}]},"logs":{"type":"string","description":"Function logs. Includes the last 4,000 characters. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"errors":{"type":"string","description":"Function errors. Includes the last 4,000 characters. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"Function execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","requestMethod","requestPath","requestHeaders","responseStatusCode","responseBody","responseHeaders","logs","errors","duration"]},"project":{"description":"Project","type":"object","properties":{"$id":{"type":"string","description":"Project ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Project creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Project update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Project name.","x-example":"New Project"},"description":{"type":"string","description":"Project description.","x-example":"This is a new project."},"teamId":{"type":"string","description":"Project team ID.","x-example":"1592981250"},"logo":{"type":"string","description":"Project logo file ID.","x-example":"5f5c451b403cb"},"url":{"type":"string","description":"Project website URL.","x-example":"5f5c451b403cb"},"legalName":{"type":"string","description":"Company legal name.","x-example":"Company LTD."},"legalCountry":{"type":"string","description":"Country code in [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) two-character format.","x-example":"US"},"legalState":{"type":"string","description":"State name.","x-example":"New York"},"legalCity":{"type":"string","description":"City name.","x-example":"New York City."},"legalAddress":{"type":"string","description":"Company Address.","x-example":"620 Eighth Avenue, New York, NY 10018"},"legalTaxId":{"type":"string","description":"Company Tax ID.","x-example":"131102020"},"authDuration":{"type":"integer","description":"Session duration in seconds.","x-example":60,"format":"int32"},"authLimit":{"type":"integer","description":"Max users allowed. 0 is unlimited.","x-example":100,"format":"int32"},"authSessionsLimit":{"type":"integer","description":"Max sessions allowed per user. 100 maximum.","x-example":10,"format":"int32"},"authPasswordHistory":{"type":"integer","description":"Max allowed passwords in the history list per user. Max passwords limit allowed in history is 20. Use 0 for disabling password history.","x-example":5,"format":"int32"},"authPasswordDictionary":{"type":"boolean","description":"Whether or not to check user's password against most commonly used passwords.","x-example":true},"authPersonalDataCheck":{"type":"boolean","description":"Whether or not to check the user password for similarity with their personal data.","x-example":true},"oAuthProviders":{"type":"array","description":"List of Auth Providers.","items":{"type":"object","$ref":"#\/definitions\/authProvider"},"x-example":[{}]},"platforms":{"type":"array","description":"List of Platforms.","items":{"type":"object","$ref":"#\/definitions\/platform"},"x-example":{}},"webhooks":{"type":"array","description":"List of Webhooks.","items":{"type":"object","$ref":"#\/definitions\/webhook"},"x-example":{}},"keys":{"type":"array","description":"List of API Keys.","items":{"type":"object","$ref":"#\/definitions\/key"},"x-example":{}},"smtpEnabled":{"type":"boolean","description":"Status for custom SMTP","x-example":false},"smtpSenderName":{"type":"string","description":"SMTP sender name","x-example":"John Appwrite"},"smtpSenderEmail":{"type":"string","description":"SMTP sender email","x-example":"john@appwrite.io"},"smtpReplyTo":{"type":"string","description":"SMTP reply to email","x-example":"support@appwrite.io"},"smtpHost":{"type":"string","description":"SMTP server host name","x-example":"mail.appwrite.io"},"smtpPort":{"type":"integer","description":"SMTP server port","x-example":25,"format":"int32"},"smtpUsername":{"type":"string","description":"SMTP server username","x-example":"emailuser"},"smtpPassword":{"type":"string","description":"SMTP server password","x-example":"securepassword"},"smtpSecure":{"type":"string","description":"SMTP server secure protocol","x-example":"tls"},"authEmailPassword":{"type":"boolean","description":"Email\/Password auth method status","x-example":true},"authUsersAuthMagicURL":{"type":"boolean","description":"Magic URL auth method status","x-example":true},"authEmailOtp":{"type":"boolean","description":"Email (OTP) auth method status","x-example":true},"authAnonymous":{"type":"boolean","description":"Anonymous auth method status","x-example":true},"authInvites":{"type":"boolean","description":"Invites auth method status","x-example":true},"authJWT":{"type":"boolean","description":"JWT auth method status","x-example":true},"authPhone":{"type":"boolean","description":"Phone auth method status","x-example":true},"serviceStatusForAccount":{"type":"boolean","description":"Account service status","x-example":true},"serviceStatusForAvatars":{"type":"boolean","description":"Avatars service status","x-example":true},"serviceStatusForDatabases":{"type":"boolean","description":"Databases service status","x-example":true},"serviceStatusForLocale":{"type":"boolean","description":"Locale service status","x-example":true},"serviceStatusForHealth":{"type":"boolean","description":"Health service status","x-example":true},"serviceStatusForStorage":{"type":"boolean","description":"Storage service status","x-example":true},"serviceStatusForTeams":{"type":"boolean","description":"Teams service status","x-example":true},"serviceStatusForUsers":{"type":"boolean","description":"Users service status","x-example":true},"serviceStatusForFunctions":{"type":"boolean","description":"Functions service status","x-example":true},"serviceStatusForGraphql":{"type":"boolean","description":"GraphQL service status","x-example":true},"serviceStatusForMessaging":{"type":"boolean","description":"Messaging service status","x-example":true}},"required":["$id","$createdAt","$updatedAt","name","description","teamId","logo","url","legalName","legalCountry","legalState","legalCity","legalAddress","legalTaxId","authDuration","authLimit","authSessionsLimit","authPasswordHistory","authPasswordDictionary","authPersonalDataCheck","oAuthProviders","platforms","webhooks","keys","smtpEnabled","smtpSenderName","smtpSenderEmail","smtpReplyTo","smtpHost","smtpPort","smtpUsername","smtpPassword","smtpSecure","authEmailPassword","authUsersAuthMagicURL","authEmailOtp","authAnonymous","authInvites","authJWT","authPhone","serviceStatusForAccount","serviceStatusForAvatars","serviceStatusForDatabases","serviceStatusForLocale","serviceStatusForHealth","serviceStatusForStorage","serviceStatusForTeams","serviceStatusForUsers","serviceStatusForFunctions","serviceStatusForGraphql","serviceStatusForMessaging"]},"webhook":{"description":"Webhook","type":"object","properties":{"$id":{"type":"string","description":"Webhook ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Webhook creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Webhook update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Webhook name.","x-example":"My Webhook"},"url":{"type":"string","description":"Webhook URL endpoint.","x-example":"https:\/\/example.com\/webhook"},"events":{"type":"array","description":"Webhook trigger events.","items":{"type":"string"},"x-example":"database.collections.update"},"security":{"type":"boolean","description":"Indicated if SSL \/ TLS Certificate verification is enabled.","x-example":true},"httpUser":{"type":"string","description":"HTTP basic authentication username.","x-example":"username"},"httpPass":{"type":"string","description":"HTTP basic authentication password.","x-example":"password"},"signatureKey":{"type":"string","description":"Signature key which can be used to validated incoming","x-example":"ad3d581ca230e2b7059c545e5a"},"enabled":{"type":"boolean","description":"Indicates if this webhook is enabled.","x-example":true},"logs":{"type":"string","description":"Webhook error logs from the most recent failure.","x-example":"Failed to connect to remote server."},"attempts":{"type":"integer","description":"Number of consecutive failed webhook attempts.","x-example":10,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","name","url","events","security","httpUser","httpPass","signatureKey","enabled","logs","attempts"]},"key":{"description":"Key","type":"object","properties":{"$id":{"type":"string","description":"Key ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Key creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Key update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Key name.","x-example":"My API Key"},"expire":{"type":"string","description":"Key expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"scopes":{"type":"array","description":"Allowed permission scopes.","items":{"type":"string"},"x-example":"users.read"},"secret":{"type":"string","description":"Secret key.","x-example":"919c2d18fb5d4...a2ae413da83346ad2"},"accessedAt":{"type":"string","description":"Most recent access date in ISO 8601 format. This attribute is only updated again after 24 hours.","x-example":"2020-10-15T06:38:00.000+00:00"},"sdks":{"type":"array","description":"List of SDK user agents that used this key.","items":{"type":"string"},"x-example":"appwrite:flutter"}},"required":["$id","$createdAt","$updatedAt","name","expire","scopes","secret","accessedAt","sdks"]},"authProvider":{"description":"AuthProvider","type":"object","properties":{"key":{"type":"string","description":"Auth Provider.","x-example":"github"},"name":{"type":"string","description":"Auth Provider name.","x-example":"GitHub"},"appId":{"type":"string","description":"OAuth 2.0 application ID.","x-example":"259125845563242502"},"secret":{"type":"string","description":"OAuth 2.0 application secret. Might be JSON string if provider requires extra configuration.","x-example":"Bpw_g9c2TGXxfgLshDbSaL8tsCcqgczQ"},"enabled":{"type":"boolean","description":"Auth Provider is active and can be used to create session.","x-example":""}},"required":["key","name","appId","secret","enabled"]},"platform":{"description":"Platform","type":"object","properties":{"$id":{"type":"string","description":"Platform ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Platform creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Platform update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Platform name.","x-example":"My Web App"},"type":{"type":"string","description":"Platform type. Possible values are: web, flutter-web, flutter-ios, flutter-android, ios, android, and unity.","x-example":"web"},"key":{"type":"string","description":"Platform Key. iOS bundle ID or Android package name. Empty string for other platforms.","x-example":"com.company.appname"},"store":{"type":"string","description":"App store or Google Play store ID.","x-example":""},"hostname":{"type":"string","description":"Web app hostname. Empty string for other platforms.","x-example":true},"httpUser":{"type":"string","description":"HTTP basic authentication username.","x-example":"username"},"httpPass":{"type":"string","description":"HTTP basic authentication password.","x-example":"password"}},"required":["$id","$createdAt","$updatedAt","name","type","key","store","hostname","httpUser","httpPass"]},"variable":{"description":"Variable","type":"object","properties":{"$id":{"type":"string","description":"Variable ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"key":{"type":"string","description":"Variable key.","x-example":"API_KEY"},"value":{"type":"string","description":"Variable value.","x-example":"myPa$$word1"},"resourceType":{"type":"string","description":"Service to which the variable belongs. Possible values are \"project\", \"function\"","x-example":"function"},"resourceId":{"type":"string","description":"ID of resource to which the variable belongs. If resourceType is \"project\", it is empty. If resourceType is \"function\", it is ID of the function.","x-example":"myAwesomeFunction"}},"required":["$id","$createdAt","$updatedAt","key","value","resourceType","resourceId"]},"country":{"description":"Country","type":"object","properties":{"name":{"type":"string","description":"Country name.","x-example":"United States"},"code":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"}},"required":["name","code"]},"continent":{"description":"Continent","type":"object","properties":{"name":{"type":"string","description":"Continent name.","x-example":"Europe"},"code":{"type":"string","description":"Continent two letter code.","x-example":"EU"}},"required":["name","code"]},"language":{"description":"Language","type":"object","properties":{"name":{"type":"string","description":"Language name.","x-example":"Italian"},"code":{"type":"string","description":"Language two-character ISO 639-1 codes.","x-example":"it"},"nativeName":{"type":"string","description":"Language native name.","x-example":"Italiano"}},"required":["name","code","nativeName"]},"currency":{"description":"Currency","type":"object","properties":{"symbol":{"type":"string","description":"Currency symbol.","x-example":"$"},"name":{"type":"string","description":"Currency name.","x-example":"US dollar"},"symbolNative":{"type":"string","description":"Currency native symbol.","x-example":"$"},"decimalDigits":{"type":"integer","description":"Number of decimal digits.","x-example":2,"format":"int32"},"rounding":{"type":"number","description":"Currency digit rounding.","x-example":0,"format":"double"},"code":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format.","x-example":"USD"},"namePlural":{"type":"string","description":"Currency plural name","x-example":"US dollars"}},"required":["symbol","name","symbolNative","decimalDigits","rounding","code","namePlural"]},"phone":{"description":"Phone","type":"object","properties":{"code":{"type":"string","description":"Phone code.","x-example":"+1"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["code","countryCode","countryName"]},"healthAntivirus":{"description":"Health Antivirus","type":"object","properties":{"version":{"type":"string","description":"Antivirus version.","x-example":"1.0.0"},"status":{"type":"string","description":"Antivirus status. Possible values can are: `disabled`, `offline`, `online`","x-example":"online"}},"required":["version","status"]},"healthQueue":{"description":"Health Queue","type":"object","properties":{"size":{"type":"integer","description":"Amount of actions in the queue.","x-example":8,"format":"int32"}},"required":["size"]},"healthStatus":{"description":"Health Status","type":"object","properties":{"name":{"type":"string","description":"Name of the service.","x-example":"database"},"ping":{"type":"integer","description":"Duration in milliseconds how long the health check took.","x-example":128,"format":"int32"},"status":{"type":"string","description":"Service status. Possible values can are: `pass`, `fail`","x-example":"pass"}},"required":["name","ping","status"]},"healthCertificate":{"description":"Health Certificate","type":"object","properties":{"name":{"type":"string","description":"Certificate name","x-example":"\/CN=www.google.com"},"subjectSN":{"type":"string","description":"Subject SN","x-example":""},"issuerOrganisation":{"type":"string","description":"Issuer organisation","x-example":""},"validFrom":{"type":"string","description":"Valid from","x-example":"1704200998"},"validTo":{"type":"string","description":"Valid to","x-example":"1711458597"},"signatureTypeSN":{"type":"string","description":"Signature type SN","x-example":"RSA-SHA256"}},"required":["name","subjectSN","issuerOrganisation","validFrom","validTo","signatureTypeSN"]},"healthTime":{"description":"Health Time","type":"object","properties":{"remoteTime":{"type":"integer","description":"Current unix timestamp on trustful remote server.","x-example":1639490751,"format":"int32"},"localTime":{"type":"integer","description":"Current unix timestamp of local server where Appwrite runs.","x-example":1639490844,"format":"int32"},"diff":{"type":"integer","description":"Difference of unix remote and local timestamps in milliseconds.","x-example":93,"format":"int32"}},"required":["remoteTime","localTime","diff"]},"metric":{"description":"Metric","type":"object","properties":{"value":{"type":"integer","description":"The value of this metric at the timestamp.","x-example":1,"format":"int32"},"date":{"type":"string","description":"The date at which this metric was aggregated in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["value","date"]},"metricBreakdown":{"description":"Metric Breakdown","type":"object","properties":{"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Resource name.","x-example":"Documents"},"value":{"type":"integer","description":"The value of this metric at the timestamp.","x-example":1,"format":"int32"}},"required":["resourceId","name","value"]},"usageDatabases":{"description":"UsageDatabases","type":"object","properties":{"range":{"type":"string","description":"Time range of the usage stats.","x-example":"30d"},"databasesTotal":{"type":"integer","description":"Total aggregated number of databases.","x-example":0,"format":"int32"},"collectionsTotal":{"type":"integer","description":"Total aggregated number of collections.","x-example":0,"format":"int32"},"documentsTotal":{"type":"integer","description":"Total aggregated number of documents.","x-example":0,"format":"int32"},"databases":{"type":"array","description":"Aggregated number of databases per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collections":{"type":"array","description":"Aggregated number of collections per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documents":{"type":"array","description":"Aggregated number of documents per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","databasesTotal","collectionsTotal","documentsTotal","databases","collections","documents"]},"usageDatabase":{"description":"UsageDatabase","type":"object","properties":{"range":{"type":"string","description":"Time range of the usage stats.","x-example":"30d"},"collectionsTotal":{"type":"integer","description":"Total aggregated number of collections.","x-example":0,"format":"int32"},"documentsTotal":{"type":"integer","description":"Total aggregated number of documents.","x-example":0,"format":"int32"},"collections":{"type":"array","description":"Aggregated number of collections per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documents":{"type":"array","description":"Aggregated number of documents per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","collectionsTotal","documentsTotal","collections","documents"]},"usageCollection":{"description":"UsageCollection","type":"object","properties":{"range":{"type":"string","description":"Time range of the usage stats.","x-example":"30d"},"documentsTotal":{"type":"integer","description":"Total aggregated number of of documents.","x-example":0,"format":"int32"},"documents":{"type":"array","description":"Aggregated number of documents per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","documentsTotal","documents"]},"usageUsers":{"description":"UsageUsers","type":"object","properties":{"range":{"type":"string","description":"Time range of the usage stats.","x-example":"30d"},"usersTotal":{"type":"integer","description":"Total aggregated number of statistics of users.","x-example":0,"format":"int32"},"sessionsTotal":{"type":"integer","description":"Total aggregated number of active sessions.","x-example":0,"format":"int32"},"users":{"type":"array","description":"Aggregated number of users per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"sessions":{"type":"array","description":"Aggregated number of active sessions per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","usersTotal","sessionsTotal","users","sessions"]},"usageStorage":{"description":"StorageUsage","type":"object","properties":{"range":{"type":"string","description":"Time range of the usage stats.","x-example":"30d"},"bucketsTotal":{"type":"integer","description":"Total aggregated number of buckets","x-example":0,"format":"int32"},"filesTotal":{"type":"integer","description":"Total aggregated number of files.","x-example":0,"format":"int32"},"filesStorageTotal":{"type":"integer","description":"Total aggregated number of files storage (in bytes).","x-example":0,"format":"int32"},"buckets":{"type":"array","description":"Aggregated number of buckets per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"files":{"type":"array","description":"Aggregated number of files per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"storage":{"type":"array","description":"Aggregated number of files storage (in bytes) per period .","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","bucketsTotal","filesTotal","filesStorageTotal","buckets","files","storage"]},"usageBuckets":{"description":"UsageBuckets","type":"object","properties":{"range":{"type":"string","description":"Time range of the usage stats.","x-example":"30d"},"filesTotal":{"type":"integer","description":"Total aggregated number of bucket files.","x-example":0,"format":"int32"},"filesStorageTotal":{"type":"integer","description":"Total aggregated number of bucket files storage (in bytes).","x-example":0,"format":"int32"},"files":{"type":"array","description":"Aggregated number of bucket files per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"storage":{"type":"array","description":"Aggregated number of bucket storage files (in bytes) per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","filesTotal","filesStorageTotal","files","storage"]},"usageFunctions":{"description":"UsageFunctions","type":"object","properties":{"range":{"type":"string","description":"Time range of the usage stats.","x-example":"30d"},"functionsTotal":{"type":"integer","description":"Total aggregated number of functions.","x-example":0,"format":"int32"},"deploymentsTotal":{"type":"integer","description":"Total aggregated number of functions deployments.","x-example":0,"format":"int32"},"deploymentsStorageTotal":{"type":"integer","description":"Total aggregated sum of functions deployment storage.","x-example":0,"format":"int32"},"buildsTotal":{"type":"integer","description":"Total aggregated number of functions build.","x-example":0,"format":"int32"},"buildsStorageTotal":{"type":"integer","description":"total aggregated sum of functions build storage.","x-example":0,"format":"int32"},"buildsTimeTotal":{"type":"integer","description":"Total aggregated sum of functions build compute time.","x-example":0,"format":"int32"},"executionsTotal":{"type":"integer","description":"Total aggregated number of functions execution.","x-example":0,"format":"int32"},"executionsTimeTotal":{"type":"integer","description":"Total aggregated sum of functions execution compute time.","x-example":0,"format":"int32"},"functions":{"type":"array","description":"Aggregated number of functions per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":0},"deployments":{"type":"array","description":"Aggregated number of functions deployment per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"deploymentsStorage":{"type":"array","description":"Aggregated number of functions deployment storage per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"builds":{"type":"array","description":"Aggregated number of functions build per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"buildsStorage":{"type":"array","description":"Aggregated sum of functions build storage per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"buildsTime":{"type":"array","description":"Aggregated sum of functions build compute time per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"executions":{"type":"array","description":"Aggregated number of functions execution per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"executionsTime":{"type":"array","description":"Aggregated number of functions execution compute time per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","functionsTotal","deploymentsTotal","deploymentsStorageTotal","buildsTotal","buildsStorageTotal","buildsTimeTotal","executionsTotal","executionsTimeTotal","functions","deployments","deploymentsStorage","builds","buildsStorage","buildsTime","executions","executionsTime"]},"usageFunction":{"description":"UsageFunction","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"deploymentsTotal":{"type":"integer","description":"Total aggregated number of function deployments.","x-example":0,"format":"int32"},"deploymentsStorageTotal":{"type":"integer","description":"Total aggregated sum of function deployments storage.","x-example":0,"format":"int32"},"buildsTotal":{"type":"integer","description":"Total aggregated number of function builds.","x-example":0,"format":"int32"},"buildsStorageTotal":{"type":"integer","description":"total aggregated sum of function builds storage.","x-example":0,"format":"int32"},"buildsTimeTotal":{"type":"integer","description":"Total aggregated sum of function builds compute time.","x-example":0,"format":"int32"},"executionsTotal":{"type":"integer","description":"Total aggregated number of function executions.","x-example":0,"format":"int32"},"executionsTimeTotal":{"type":"integer","description":"Total aggregated sum of function executions compute time.","x-example":0,"format":"int32"},"deployments":{"type":"array","description":"Aggregated number of function deployments per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"deploymentsStorage":{"type":"array","description":"Aggregated number of function deployments storage per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"builds":{"type":"array","description":"Aggregated number of function builds per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"buildsStorage":{"type":"array","description":"Aggregated sum of function builds storage per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"buildsTime":{"type":"array","description":"Aggregated sum of function builds compute time per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"executions":{"type":"array","description":"Aggregated number of function executions per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"executionsTime":{"type":"array","description":"Aggregated number of function executions compute time per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","deploymentsTotal","deploymentsStorageTotal","buildsTotal","buildsStorageTotal","buildsTimeTotal","executionsTotal","executionsTimeTotal","deployments","deploymentsStorage","builds","buildsStorage","buildsTime","executions","executionsTime"]},"usageProject":{"description":"UsageProject","type":"object","properties":{"executionsTotal":{"type":"integer","description":"Total aggregated number of function executions.","x-example":0,"format":"int32"},"documentsTotal":{"type":"integer","description":"Total aggregated number of documents.","x-example":0,"format":"int32"},"databasesTotal":{"type":"integer","description":"Total aggregated number of databases.","x-example":0,"format":"int32"},"usersTotal":{"type":"integer","description":"Total aggregated number of users.","x-example":0,"format":"int32"},"filesStorageTotal":{"type":"integer","description":"Total aggregated sum of files storage size (in bytes).","x-example":0,"format":"int32"},"bucketsTotal":{"type":"integer","description":"Total aggregated number of buckets.","x-example":0,"format":"int32"},"requests":{"type":"array","description":"Aggregated number of requests per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"network":{"type":"array","description":"Aggregated number of consumed bandwidth per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"users":{"type":"array","description":"Aggregated number of users per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"executions":{"type":"array","description":"Aggregated number of executions per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"executionsBreakdown":{"type":"array","description":"Aggregated breakdown in totals of executions by functions.","items":{"type":"object","$ref":"#\/definitions\/metricBreakdown"},"x-example":[]},"bucketsBreakdown":{"type":"array","description":"Aggregated breakdown in totals of usage by buckets.","items":{"type":"object","$ref":"#\/definitions\/metricBreakdown"},"x-example":[]}},"required":["executionsTotal","documentsTotal","databasesTotal","usersTotal","filesStorageTotal","bucketsTotal","requests","network","users","executions","executionsBreakdown","bucketsBreakdown"]},"headers":{"description":"Headers","type":"object","properties":{"name":{"type":"string","description":"Header name.","x-example":"Content-Type"},"value":{"type":"string","description":"Header value.","x-example":"application\/json"}},"required":["name","value"]},"proxyRule":{"description":"Rule","type":"object","properties":{"$id":{"type":"string","description":"Rule ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Rule creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Rule update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"domain":{"type":"string","description":"Domain name.","x-example":"appwrite.company.com"},"resourceType":{"type":"string","description":"Action definition for the rule. Possible values are \"api\", \"function\", or \"redirect\"","x-example":"function"},"resourceId":{"type":"string","description":"ID of resource for the action type. If resourceType is \"api\" or \"url\", it is empty. If resourceType is \"function\", it is ID of the function.","x-example":"myAwesomeFunction"},"status":{"type":"string","description":"Domain verification status. Possible values are \"created\", \"verifying\", \"verified\" and \"unverified\"","x-example":"verified"},"logs":{"type":"string","description":"Certificate generation logs. This will return an empty string if generation did not run, or succeeded.","x-example":"HTTP challegne failed."},"renewAt":{"type":"string","description":"Certificate auto-renewal date in ISO 8601 format.","x-example":"datetime"}},"required":["$id","$createdAt","$updatedAt","domain","resourceType","resourceId","status","logs","renewAt"]},"smsTemplate":{"description":"SmsTemplate","type":"object","properties":{"type":{"type":"string","description":"Template type","x-example":"verification"},"locale":{"type":"string","description":"Template locale","x-example":"en_us"},"message":{"type":"string","description":"Template message","x-example":"Click on the link to verify your account."}},"required":["type","locale","message"]},"emailTemplate":{"description":"EmailTemplate","type":"object","properties":{"type":{"type":"string","description":"Template type","x-example":"verification"},"locale":{"type":"string","description":"Template locale","x-example":"en_us"},"message":{"type":"string","description":"Template message","x-example":"Click on the link to verify your account."},"senderName":{"type":"string","description":"Name of the sender","x-example":"My User"},"senderEmail":{"type":"string","description":"Email of the sender","x-example":"mail@appwrite.io"},"replyTo":{"type":"string","description":"Reply to email address","x-example":"emails@appwrite.io"},"subject":{"type":"string","description":"Email subject","x-example":"Please verify your email address"}},"required":["type","locale","message","senderName","senderEmail","replyTo","subject"]},"consoleVariables":{"description":"Console Variables","type":"object","properties":{"_APP_DOMAIN_TARGET":{"type":"string","description":"CNAME target for your Appwrite custom domains.","x-example":"appwrite.io"},"_APP_STORAGE_LIMIT":{"type":"integer","description":"Maximum file size allowed for file upload in bytes.","x-example":"30000000","format":"int32"},"_APP_FUNCTIONS_SIZE_LIMIT":{"type":"integer","description":"Maximum file size allowed for deployment in bytes.","x-example":"30000000","format":"int32"},"_APP_USAGE_STATS":{"type":"string","description":"Defines if usage stats are enabled. This value is set to 'enabled' by default, to disable the usage stats set the value to 'disabled'.","x-example":"enabled"},"_APP_VCS_ENABLED":{"type":"boolean","description":"Defines if VCS (Version Control System) is enabled.","x-example":true},"_APP_DOMAIN_ENABLED":{"type":"boolean","description":"Defines if main domain is configured. If so, custom domains can be created.","x-example":true},"_APP_ASSISTANT_ENABLED":{"type":"boolean","description":"Defines if AI assistant is enabled.","x-example":true}},"required":["_APP_DOMAIN_TARGET","_APP_STORAGE_LIMIT","_APP_FUNCTIONS_SIZE_LIMIT","_APP_USAGE_STATS","_APP_VCS_ENABLED","_APP_DOMAIN_ENABLED","_APP_ASSISTANT_ENABLED"]},"mfaChallenge":{"description":"MFA Challenge","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","userId","expire"]},"mfaType":{"description":"MFAType","type":"object","properties":{"backups":{"type":"array","description":"Backup codes.","items":{"type":"string"},"x-example":true},"secret":{"type":"string","description":"Secret token used for TOTP factor.","x-example":true},"uri":{"type":"string","description":"URI for authenticator apps.","x-example":true}},"required":["backups","secret","uri"]},"mfaFactors":{"description":"MFAFactors","type":"object","properties":{"totp":{"type":"boolean","description":"TOTP","x-example":true},"phone":{"type":"boolean","description":"Phone","x-example":true},"email":{"type":"boolean","description":"Email","x-example":true}},"required":["totp","phone","email"]},"provider":{"description":"Provider","type":"object","properties":{"$id":{"type":"string","description":"Provider ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Provider creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Provider update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"The name for the provider instance.","x-example":"Mailgun"},"provider":{"type":"string","description":"The name of the provider service.","x-example":"mailgun"},"enabled":{"type":"boolean","description":"Is provider enabled?","x-example":true},"type":{"type":"string","description":"Type of provider.","x-example":"sms"},"credentials":{"type":"object","additionalProperties":true,"description":"Provider credentials.","x-example":{"key":"123456789"}},"options":{"type":"object","additionalProperties":true,"description":"Provider options.","x-example":{"from":"sender-email@mydomain"}}},"required":["$id","$createdAt","$updatedAt","name","provider","enabled","type","credentials"]},"message":{"description":"Message","type":"object","properties":{"$id":{"type":"string","description":"Message ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Message creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Message update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerType":{"type":"string","description":"Message provider type.","x-example":"email"},"topics":{"type":"array","description":"Topic IDs set as recipients.","items":{"type":"string"},"x-example":["5e5ea5c16897e"]},"users":{"type":"array","description":"User IDs set as recipients.","items":{"type":"string"},"x-example":["5e5ea5c16897e"]},"targets":{"type":"array","description":"Target IDs set as recipients.","items":{"type":"string"},"x-example":["5e5ea5c16897e"]},"scheduledAt":{"type":"string","description":"The scheduled time for message.","x-example":"2020-10-15T06:38:00.000+00:00","x-nullable":true},"deliveredAt":{"type":"string","description":"The time when the message was delivered.","x-example":"2020-10-15T06:38:00.000+00:00","x-nullable":true},"deliveryErrors":{"type":"array","description":"Delivery errors if any.","items":{"type":"string"},"x-example":["Failed to send message to target 5e5ea5c16897e: Credentials not valid."],"x-nullable":true},"deliveredTotal":{"type":"integer","description":"Number of recipients the message was delivered to.","x-example":1,"format":"int32"},"data":{"type":"object","additionalProperties":true,"description":"Data of the message.","x-example":{"subject":"Welcome to Appwrite","content":"Hi there, welcome to Appwrite family."}},"status":{"type":"string","description":"Status of delivery.","x-example":"Message status can be one of the following: processing, sent, cancelled, failed."}},"required":["$id","$createdAt","$updatedAt","providerType","topics","users","targets","deliveredTotal","data","status"]},"topic":{"description":"Topic","type":"object","properties":{"$id":{"type":"string","description":"Topic ID.","x-example":"259125845563242502"},"$createdAt":{"type":"string","description":"Topic creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Topic update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"The name of the topic.","x-example":"events"},"total":{"type":"integer","description":"Total count of subscribers subscribed to topic.","x-example":100,"format":"int32"},"subscribe":{"type":"array","description":"Subscribe permissions.","items":{"type":"string"},"x-example":"users"}},"required":["$id","$createdAt","$updatedAt","name","total","subscribe"]},"subscriber":{"description":"Subscriber","type":"object","properties":{"$id":{"type":"string","description":"Subscriber ID.","x-example":"259125845563242502"},"$createdAt":{"type":"string","description":"Subscriber creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Subscriber update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"targetId":{"type":"string","description":"Target ID.","x-example":"259125845563242502"},"target":{"type":"object","description":"Target.","x-example":{"$id":"259125845563242502","$createdAt":"2020-10-15T06:38:00.000+00:00","$updatedAt":"2020-10-15T06:38:00.000+00:00","providerType":"email","providerId":"259125845563242502","name":"ageon-app-email","identifier":"random-mail@email.org","userId":"5e5ea5c16897e"},"items":{"type":"object","$ref":"#\/definitions\/target"}},"userId":{"type":"string","description":"Topic ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User Name.","x-example":"Aegon Targaryen"},"topicId":{"type":"string","description":"Topic ID.","x-example":"259125845563242502"},"providerType":{"type":"string","description":"The target provider type. Can be one of the following: `email`, `sms` or `push`.","x-example":"email"}},"required":["$id","$createdAt","$updatedAt","targetId","target","userId","userName","topicId","providerType"]},"target":{"description":"Target","type":"object","properties":{"$id":{"type":"string","description":"Target ID.","x-example":"259125845563242502"},"$createdAt":{"type":"string","description":"Target creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Target update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Target Name.","x-example":"Aegon apple token"},"userId":{"type":"string","description":"User ID.","x-example":"259125845563242502"},"providerId":{"type":"string","description":"Provider ID.","x-example":"259125845563242502","x-nullable":true},"providerType":{"type":"string","description":"The target provider type. Can be one of the following: `email`, `sms` or `push`.","x-example":"email"},"identifier":{"type":"string","description":"The target identifier.","x-example":"token"}},"required":["$id","$createdAt","$updatedAt","name","userId","providerType","identifier"]},"migration":{"description":"Migration","type":"object","properties":{"$id":{"type":"string","description":"Migration ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"string","description":"Migration status ( pending, processing, failed, completed ) ","x-example":"pending"},"stage":{"type":"string","description":"Migration stage ( init, processing, source-check, destination-check, migrating, finished )","x-example":"init"},"source":{"type":"string","description":"A string containing the type of source of the migration.","x-example":"Appwrite"},"resources":{"type":"array","description":"Resources to migration.","items":{"type":"string"},"x-example":["user"]},"statusCounters":{"type":"object","additionalProperties":true,"description":"A group of counters that represent the total progress of the migration.","x-example":"{\"Database\": {\"PENDING\": 0, \"SUCCESS\": 1, \"ERROR\": 0, \"SKIP\": 0, \"PROCESSING\": 0, \"WARNING\": 0}}"},"resourceData":{"type":"object","additionalProperties":true,"description":"An array of objects containing the report data of the resources that were migrated.","x-example":"[{\"resource\":\"Database\",\"id\":\"public\",\"status\":\"SUCCESS\",\"message\":\"\"}]"},"errors":{"type":"array","description":"All errors that occurred during the migration process.","items":{"type":"string"},"x-example":[]}},"required":["$id","$createdAt","$updatedAt","status","stage","source","resources","statusCounters","resourceData","errors"]},"migrationReport":{"description":"Migration Report","type":"object","properties":{"user":{"type":"integer","description":"Number of users to be migrated.","x-example":20,"format":"int32"},"team":{"type":"integer","description":"Number of teams to be migrated.","x-example":20,"format":"int32"},"database":{"type":"integer","description":"Number of databases to be migrated.","x-example":20,"format":"int32"},"document":{"type":"integer","description":"Number of documents to be migrated.","x-example":20,"format":"int32"},"file":{"type":"integer","description":"Number of files to be migrated.","x-example":20,"format":"int32"},"bucket":{"type":"integer","description":"Number of buckets to be migrated.","x-example":20,"format":"int32"},"function":{"type":"integer","description":"Number of functions to be migrated.","x-example":20,"format":"int32"},"size":{"type":"integer","description":"Size of files to be migrated in mb.","x-example":30000,"format":"int32"},"version":{"type":"string","description":"Version of the Appwrite instance to be migrated.","x-example":"1.4.0"}},"required":["user","team","database","document","file","bucket","function","size","version"]},"firebaseProject":{"description":"MigrationFirebaseProject","type":"object","properties":{"projectId":{"type":"string","description":"Project ID.","x-example":"my-project"},"displayName":{"type":"string","description":"Project display name.","x-example":"My Project"}},"required":["projectId","displayName"]}},"externalDocs":{"description":"Full API docs, specs and tutorials","url":"https:\/\/appwrite.io\/docs"}} \ No newline at end of file +{"swagger":"2.0","info":{"version":"1.5.0","title":"Appwrite","description":"Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https:\/\/appwrite.io\/docs](https:\/\/appwrite.io\/docs)","termsOfService":"https:\/\/appwrite.io\/policy\/terms","contact":{"name":"Appwrite Team","url":"https:\/\/appwrite.io\/support","email":"team@appwrite.io"},"license":{"name":"BSD-3-Clause","url":"https:\/\/raw.githubusercontent.com\/appwrite\/appwrite\/master\/LICENSE"}},"host":"cloud.appwrite.io","basePath":"\/v1","schemes":["https"],"consumes":["application\/json","multipart\/form-data"],"produces":["application\/json"],"securityDefinitions":{"Project":{"type":"apiKey","name":"X-Appwrite-Project","description":"Your project ID","in":"header","x-appwrite":{"demo":"5df5acd0d48c2"}},"Key":{"type":"apiKey","name":"X-Appwrite-Key","description":"Your secret API key","in":"header","x-appwrite":{"demo":"919c2d18fb5d4...a2ae413da83346ad2"}},"JWT":{"type":"apiKey","name":"X-Appwrite-JWT","description":"Your secret JSON Web Token","in":"header","x-appwrite":{"demo":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ..."}},"Locale":{"type":"apiKey","name":"X-Appwrite-Locale","description":"","in":"header","x-appwrite":{"demo":"en"}},"Mode":{"type":"apiKey","name":"X-Appwrite-Mode","description":"","in":"header","x-appwrite":{"demo":""}}},"paths":{"\/account":{"get":{"summary":"Get account","operationId":"accountGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get the currently logged in user.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"get","weight":22,"cookies":false,"type":"","demo":"account\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"post":{"summary":"Create account","operationId":"accountCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to allow a new user to register a new account in your project. After the user registration completes successfully, you can use the [\/account\/verfication](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createVerification) route to start verifying the user email address. To allow the new user to login to their new account, you need to create a new [account session](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createEmailSession).","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"create","weight":7,"cookies":false,"type":"","demo":"account\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"New user password. Must be between 8 and 256 chars.","default":null,"x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]},"delete":{"summary":"Delete account","operationId":"accountDelete","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Delete the currently logged in user.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":49,"cookies":false,"type":"","demo":"account\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/email":{"patch":{"summary":"Update email","operationId":"accountUpdateEmail","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateEmail","weight":29,"cookies":false,"type":"","demo":"account\/update-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["email","password"]}}]}},"\/account\/identities":{"get":{"summary":"List Identities","operationId":"accountListIdentities","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get the list of identities for the currently logged in user.","responses":{"200":{"description":"Identities List","schema":{"$ref":"#\/definitions\/identityList"}}},"x-appwrite":{"method":"listIdentities","weight":13,"cookies":false,"type":"","demo":"account\/list-identities.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-identities.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/identities","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, provider, providerUid, providerEmail, providerAccessTokenExpiry","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/identities\/{identityId}":{"delete":{"summary":"Delete identity","operationId":"accountDeleteIdentity","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Delete an identity by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIdentity","weight":14,"cookies":false,"type":"","demo":"account\/delete-identity.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-identity.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"identityId","description":"Identity ID.","required":true,"type":"string","x-example":"[IDENTITY_ID]","in":"path"}]}},"\/account\/jwt":{"post":{"summary":"Create JWT","operationId":"accountCreateJWT","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to create a JSON Web Token. You can use the resulting JWT to authenticate on behalf of the current user when working with the Appwrite server-side API and SDKs. The JWT secret is valid for 15 minutes from its creation and will be invalid if the user will logout in that time frame.","responses":{"201":{"description":"JWT","schema":{"$ref":"#\/definitions\/jwt"}}},"x-appwrite":{"method":"createJWT","weight":21,"cookies":false,"type":"","demo":"account\/create-j-w-t.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-jwt.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"List logs","operationId":"accountListLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get the list of latest security activity logs for the currently logged in user. Each log returns user IP address, location and date and time of log.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listLogs","weight":25,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/mfa":{"patch":{"summary":"Update MFA","operationId":"accountUpdateMFA","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateMFA","weight":42,"cookies":false,"type":"","demo":"account\/update-m-f-a.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-mfa.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"mfa":{"type":"boolean","description":"Enable or disable MFA.","default":null,"x-example":false}},"required":["mfa"]}}]}},"\/account\/mfa\/challenge":{"post":{"summary":"Create 2FA Challenge","operationId":"accountCreate2FAChallenge","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"201":{"description":"MFA Challenge","schema":{"$ref":"#\/definitions\/mfaChallenge"}}},"x-appwrite":{"method":"create2FAChallenge","weight":47,"cookies":false,"type":"","demo":"account\/create2f-a-challenge.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-2fa-challenge.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},token:{param-token}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"factor":{"type":"string","description":"Factor used for verification.","default":null,"x-example":"totp","enum":["totp","phone","email"],"x-enum-name":null,"x-enum-keys":[]}},"required":["factor"]}}]},"put":{"summary":"Create MFA Challenge (confirmation)","operationId":"accountUpdateChallenge","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"updateChallenge","weight":48,"cookies":false,"type":"","demo":"account\/update-challenge.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-challenge.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"challengeId":{"type":"string","description":"ID of the challenge.","default":null,"x-example":"[CHALLENGE_ID]"},"otp":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[OTP]"}},"required":["challengeId","otp"]}}]}},"\/account\/mfa\/factors":{"get":{"summary":"List Factors","operationId":"accountListFactors","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"200":{"description":"MFAFactors","schema":{"$ref":"#\/definitions\/mfaFactors"}}},"x-appwrite":{"method":"listFactors","weight":43,"cookies":false,"type":"","demo":"account\/list-factors.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-factors.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/account\/mfa\/{type}":{"post":{"summary":"Add Authenticator","operationId":"accountAddAuthenticator","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"200":{"description":"MFAType","schema":{"$ref":"#\/definitions\/mfaType"}}},"x-appwrite":{"method":"addAuthenticator","weight":44,"cookies":false,"type":"","demo":"account\/add-authenticator.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/add-authenticator.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"type","description":"Type of authenticator.","required":true,"type":"string","x-example":"totp","enum":["totp"],"x-enum-name":null,"x-enum-keys":[],"in":"path"}]},"put":{"summary":"Verify Authenticator","operationId":"accountVerifyAuthenticator","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"verifyAuthenticator","weight":45,"cookies":false,"type":"","demo":"account\/verify-authenticator.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/verify-authenticator.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"type","description":"Type of authenticator.","required":true,"type":"string","x-example":"totp","enum":["totp"],"x-enum-name":null,"x-enum-keys":[],"in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"otp":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[OTP]"}},"required":["otp"]}}]},"delete":{"summary":"Delete Authenticator","operationId":"accountDeleteAuthenticator","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"deleteAuthenticator","weight":46,"cookies":false,"type":"","demo":"account\/delete-authenticator.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-mfa.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"type","description":"Type of authenticator.","required":true,"type":"string","x-example":"totp","enum":["totp"],"x-enum-name":null,"x-enum-keys":[],"in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"otp":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[OTP]"}},"required":["otp"]}}]}},"\/account\/name":{"patch":{"summary":"Update name","operationId":"accountUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateName","weight":27,"cookies":false,"type":"","demo":"account\/update-name.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-name.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"User name. Max length: 128 chars.","default":null,"x-example":"[NAME]"}},"required":["name"]}}]}},"\/account\/password":{"patch":{"summary":"Update password","operationId":"accountUpdatePassword","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePassword","weight":28,"cookies":false,"type":"","demo":"account\/update-password.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-password.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"password":{"type":"string","description":"New user password. Must be at least 8 chars.","default":null,"x-example":null},"oldPassword":{"type":"string","description":"Current user password. Must be at least 8 chars.","default":"","x-example":"password"}},"required":["password"]}}]}},"\/account\/phone":{"patch":{"summary":"Update phone","operationId":"accountUpdatePhone","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createPhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePhone","weight":30,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["phone","password"]}}]}},"\/account\/prefs":{"get":{"summary":"Get account preferences","operationId":"accountGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get the preferences as a key-value object for the currently logged in user.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":23,"cookies":false,"type":"","demo":"account\/get-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/prefs","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"patch":{"summary":"Update preferences","operationId":"accountUpdatePrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account preferences. The object you pass is stored as is, and replaces any previous value. The maximum allowed prefs size is 64kB and throws error if exceeded.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePrefs","weight":31,"cookies":false,"type":"","demo":"account\/update-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/prefs","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"prefs":{"type":"object","description":"Prefs key-value JSON object.","default":{},"x-example":"{}"}},"required":["prefs"]}}]}},"\/account\/recovery":{"post":{"summary":"Create password recovery","operationId":"accountCreateRecovery","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Sends the user an email with a temporary secret key for password reset. When the user clicks the confirmation link he is redirected back to your app password reset URL with the secret key and email address values attached to the URL query string. Use the query string params to submit a request to the [PUT \/account\/recovery](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateRecovery) endpoint to complete the process. The verification link sent to the user's email address is valid for 1 hour.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createRecovery","weight":36,"cookies":false,"type":"","demo":"account\/create-recovery.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-recovery.md","rate-limit":10,"rate-time":3600,"rate-key":["url:{url},email:{param-email}","url:{url},ip:{ip}"],"scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"url":{"type":"string","description":"URL to redirect the user back to your app from the recovery email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":null,"x-example":"https:\/\/example.com"}},"required":["email","url"]}}]},"put":{"summary":"Create password recovery (confirmation)","operationId":"accountUpdateRecovery","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete the user account password reset. Both the **userId** and **secret** arguments will be passed as query parameters to the redirect URL you have provided when sending your request to the [POST \/account\/recovery](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createRecovery) endpoint.\n\nPlease note that in order to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) the only valid redirect URLs are the ones from domains you have set when adding your platforms in the console interface.","responses":{"200":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"updateRecovery","weight":37,"cookies":false,"type":"","demo":"account\/update-recovery.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-recovery.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid reset token.","default":null,"x-example":"[SECRET]"},"password":{"type":"string","description":"New user password. Must be between 8 and 256 chars.","default":null,"x-example":null}},"required":["userId","secret","password"]}}]}},"\/account\/sessions":{"get":{"summary":"List sessions","operationId":"accountListSessions","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get the list of active sessions across different devices for the currently logged in user.","responses":{"200":{"description":"Sessions List","schema":{"$ref":"#\/definitions\/sessionList"}}},"x-appwrite":{"method":"listSessions","weight":24,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/sessions","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete sessions","operationId":"accountDeleteSessions","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":35,"cookies":false,"type":"","demo":"account\/delete-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-sessions.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/account\/sessions\/anonymous":{"post":{"summary":"Create anonymous session","operationId":"accountCreateAnonymousSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to allow a new user to register an anonymous account in your project. This route will also create a new session for the user. To allow the new user to convert an anonymous account to a normal account, you need to update its [email and password](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateEmail) or create an [OAuth2 session](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#CreateOAuth2Session).","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"createAnonymousSession","weight":20,"cookies":false,"type":"","demo":"account\/create-anonymous-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-anonymous.md","rate-limit":50,"rate-time":3600,"rate-key":"ip:{ip}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/sessions\/email":{"post":{"summary":"Create email password session","operationId":"accountCreateEmailPasswordSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Allow the user to login into their account by providing a valid email and password combination. This route will create a new session for the user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"createEmailPasswordSession","weight":8,"cookies":false,"type":"","demo":"account\/create-email-password-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-email-password.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["email","password"]}}]}},"\/account\/sessions\/magic-url":{"put":{"summary":"Create session (deprecated)","operationId":"accountUpdateMagicURLSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to create a session from token. Provide the **userId** and **secret** parameters from the successful response of authentication flows initiated by token creation. For example, magic URL and phone login.","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateMagicURLSession","weight":17,"cookies":false,"type":"","demo":"account\/update-magic-u-r-l-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session.md","rate-limit":10,"rate-time":3600,"rate-key":"ip:{ip},userId:{param-userId}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/account\/sessions\/oauth2\/{provider}":{"get":{"summary":"Create OAuth2 session","operationId":"accountCreateOAuth2Session","consumes":["application\/json"],"produces":["text\/html"],"tags":["account"],"description":"Allow the user to login to their account using the OAuth2 provider of their choice. Each OAuth2 provider should be enabled from the Appwrite console first. Use the success and failure arguments to provide a redirect URL's back to your app when login is completed.\n\nIf there is already an active session, the new session will be attached to the logged-in account. If there are no active sessions, the server will attempt to look for a user with the same email address as the email received from the OAuth2 provider and attach the new session to the existing user. If no matching user is found - the server will create a new user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).\n","responses":{"301":{"description":"No content"}},"x-appwrite":{"method":"createOAuth2Session","weight":9,"cookies":false,"type":"webAuth","demo":"account\/create-o-auth2session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-oauth2.md","rate-limit":50,"rate-time":3600,"rate-key":"ip:{ip}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"provider","description":"OAuth2 Provider. Currently, supported providers are: amazon, apple, auth0, authentik, autodesk, bitbucket, bitly, box, dailymotion, discord, disqus, dropbox, etsy, facebook, github, gitlab, google, linkedin, microsoft, notion, oidc, okta, paypal, paypalSandbox, podio, salesforce, slack, spotify, stripe, tradeshift, tradeshiftBox, twitch, wordpress, yahoo, yammer, yandex, zoho, zoom.","required":true,"type":"string","x-example":"amazon","enum":["amazon","apple","auth0","authentik","autodesk","bitbucket","bitly","box","dailymotion","discord","disqus","dropbox","etsy","facebook","github","gitlab","google","linkedin","microsoft","notion","oidc","okta","paypal","paypalSandbox","podio","salesforce","slack","spotify","stripe","tradeshift","tradeshiftBox","twitch","wordpress","yahoo","yammer","yandex","zoho","zoom","mock"],"x-enum-name":"OAuthProvider","x-enum-keys":[],"in":"path"},{"name":"success","description":"URL to redirect back to your app after a successful login attempt. Only URLs from hostnames in your project's platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","required":false,"type":"string","format":"url","x-example":"https:\/\/example.com","default":"","in":"query"},{"name":"failure","description":"URL to redirect back to your app after a failed login attempt. Only URLs from hostnames in your project's platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","required":false,"type":"string","format":"url","x-example":"https:\/\/example.com","default":"","in":"query"},{"name":"token","description":"Include token credentials in the final redirect, useful for server-side integrations, or when cookies are not available.","required":false,"type":"boolean","x-example":false,"default":false,"in":"query"},{"name":"scopes","description":"A list of custom OAuth2 scopes. Check each provider internal docs for a list of supported scopes. Maximum of 100 scopes are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/sessions\/token":{"post":{"summary":"Create session","operationId":"accountCreateSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to create a session from token. Provide the **userId** and **secret** parameters from the successful response of authentication flows initiated by token creation. For example, magic URL and phone login.","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"createSession","weight":18,"cookies":false,"type":"","demo":"account\/create-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session.md","rate-limit":10,"rate-time":3600,"rate-key":"ip:{ip},userId:{param-userId}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Secret of a token generated by login methods. For example, the `createMagicURLToken` or `createPhoneToken` methods.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/account\/sessions\/{sessionId}":{"get":{"summary":"Get session","operationId":"accountGetSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to get a logged in user's session using a Session ID. Inputting 'current' will return the current session being used.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"getSession","weight":26,"cookies":false,"type":"","demo":"account\/get-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-session.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/sessions","offline-key":"{sessionId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to get the current device session.","required":true,"type":"string","x-example":"[SESSION_ID]","in":"path"}]},"patch":{"summary":"Update (or renew) a session","operationId":"accountUpdateSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Extend session's expiry to increase it's lifespan. Extending a session is useful when session length is short such as 5 minutes.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateSession","weight":34,"cookies":false,"type":"","demo":"account\/update-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-session.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to update the current device session.","required":true,"type":"string","x-example":"[SESSION_ID]","in":"path"}]},"delete":{"summary":"Delete session","operationId":"accountDeleteSession","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Logout the user. Use 'current' as the session ID to logout on this device, use a session ID to logout on another device. If you're looking to logout the user on all devices, use [Delete Sessions](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#deleteSessions) instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSession","weight":33,"cookies":false,"type":"","demo":"account\/delete-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-session.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to delete the current device session.","required":true,"type":"string","x-example":"[SESSION_ID]","in":"path"}]}},"\/account\/status":{"patch":{"summary":"Update status","operationId":"accountUpdateStatus","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateStatus","weight":32,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/account\/targets\/push":{"post":{"summary":"Create a push target","operationId":"accountCreatePushTarget","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"201":{"description":"Target","schema":{"$ref":"#\/definitions\/target"}}},"x-appwrite":{"method":"createPushTarget","weight":50,"cookies":false,"type":"","demo":"account\/create-push-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"targetId":{"type":"string","description":"Target ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[TARGET_ID]"},"identifier":{"type":"string","description":"The target identifier (token, email, phone etc.)","default":null,"x-example":"[IDENTIFIER]"},"providerId":{"type":"string","description":"Provider ID. Message will be sent to this target from the specified provider ID. If no provider ID is set the first setup provider will be used.","default":"","x-example":"[PROVIDER_ID]"}},"required":["targetId","identifier"]}}]}},"\/account\/targets\/{targetId}\/push":{"put":{"summary":"Update a push target","operationId":"accountUpdatePushTarget","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"200":{"description":"Target","schema":{"$ref":"#\/definitions\/target"}}},"x-appwrite":{"method":"updatePushTarget","weight":51,"cookies":false,"type":"","demo":"account\/update-push-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"targetId","description":"Target ID.","required":true,"type":"string","x-example":"[TARGET_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"identifier":{"type":"string","description":"The target identifier (token, email, phone etc.)","default":null,"x-example":"[IDENTIFIER]"}},"required":["identifier"]}}]},"delete":{"summary":"Delete a push target","operationId":"accountDeletePushTarget","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deletePushTarget","weight":52,"cookies":false,"type":"","demo":"account\/delete-push-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["client"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"targetId","description":"Target ID.","required":true,"type":"string","x-example":"[TARGET_ID]","in":"path"}]}},"\/account\/tokens\/email":{"post":{"summary":"Create email token (OTP)","operationId":"accountCreateEmailToken","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Sends the user an email with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [POST \/v1\/account\/sessions\/token](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createSession) endpoint to complete the login process. The secret sent to the user's email is valid for 15 minutes.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createEmailToken","weight":16,"cookies":false,"type":"","demo":"account\/create-email-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-token-email.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"phrase":{"type":"boolean","description":"Toggle for security phrase. If enabled, email will be send with a randomly generated phrase and the phrase will also be included in the response. Confirming phrases match increases the security of your authentication flow.","default":false,"x-example":false}},"required":["userId","email"]}}]}},"\/account\/tokens\/magic-url":{"post":{"summary":"Create magic URL token","operationId":"accountCreateMagicURLToken","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Sends the user an email with a secret key for creating a session. If the provided user ID has not been registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [POST \/v1\/account\/sessions\/token](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createSession) endpoint to complete the login process. The link sent to the user's email address is valid for 1 hour. If you are on a mobile device you can leave the URL parameter empty, so that the login completion will be handled by your Appwrite instance by default.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).\n","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createMagicURLToken","weight":15,"cookies":false,"type":"","demo":"account\/create-magic-u-r-l-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-token-magic-url.md","rate-limit":60,"rate-time":3600,"rate-key":["url:{url},email:{param-email}","url:{url},ip:{ip}"],"scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"url":{"type":"string","description":"URL to redirect the user back to your app from the magic URL login. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":"","x-example":"https:\/\/example.com"},"phrase":{"type":"boolean","description":"Toggle for security phrase. If enabled, email will be send with a randomly generated phrase and the phrase will also be included in the response. Confirming phrases match increases the security of your authentication flow.","default":false,"x-example":false}},"required":["userId","email"]}}]}},"\/account\/tokens\/phone":{"post":{"summary":"Create phone token","operationId":"accountCreatePhoneToken","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Sends the user an SMS with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [POST \/v1\/account\/sessions\/token](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createSession) endpoint to complete the login process. The secret sent to the user's phone is valid for 15 minutes.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createPhoneToken","weight":19,"cookies":false,"type":"","demo":"account\/create-phone-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-token-phone.md","rate-limit":10,"rate-time":3600,"rate-key":["url:{url},phone:{param-phone}","url:{url},ip:{ip}"],"scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"}},"required":["userId","phone"]}}]}},"\/account\/verification":{"post":{"summary":"Create email verification","operationId":"accountCreateVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to send a verification message to your user email address to confirm they are the valid owners of that address. Both the **userId** and **secret** arguments will be passed as query parameters to the URL you have provided to be attached to the verification email. The provided URL should redirect the user back to your app and allow you to complete the verification process by verifying both the **userId** and **secret** parameters. Learn more about how to [complete the verification process](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateVerification). The verification link sent to the user's email address is valid for 7 days.\n\nPlease note that in order to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md), the only valid redirect URLs are the ones from domains you have set when adding your platforms in the console interface.\n","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createVerification","weight":38,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"url":{"type":"string","description":"URL to redirect the user back to your app from the verification email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":null,"x-example":"https:\/\/example.com"}},"required":["url"]}}]},"put":{"summary":"Create email verification (confirmation)","operationId":"accountUpdateVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete the user email verification process. Use both the **userId** and **secret** parameters that were attached to your app URL to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"updateVerification","weight":39,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/account\/verification\/phone":{"post":{"summary":"Create phone verification","operationId":"accountCreatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updatePhone) endpoint. Learn more about how to [complete the verification process](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createPhoneVerification","weight":40,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":["url:{url},userId:{userId}","url:{url},ip:{ip}"],"scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"put":{"summary":"Create phone verification (confirmation)","operationId":"accountUpdatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"updatePhoneVerification","weight":41,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/avatars\/browsers\/{code}":{"get":{"summary":"Get browser icon","operationId":"avatarsGetBrowser","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"You can use this endpoint to show different browser icons to your users. The code argument receives the browser code as it appears in your user [GET \/account\/sessions](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#getSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getBrowser","weight":54,"cookies":false,"type":"location","demo":"avatars\/get-browser.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-browser.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Browser Code.","required":true,"type":"string","x-example":"aa","enum":["aa","an","ch","ci","cm","cr","ff","sf","mf","ps","oi","om","op","on"],"x-enum-name":"Browser","x-enum-keys":["Avant Browser","Android WebView Beta","Google Chrome","Google Chrome (iOS)","Google Chrome (Mobile)","Chromium","Mozilla Firefox","Safari","Mobile Safari","Microsoft Edge","Microsoft Edge (iOS)","Opera Mini","Opera","Opera (Next)"],"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"}]}},"\/avatars\/credit-cards\/{code}":{"get":{"summary":"Get credit card icon","operationId":"avatarsGetCreditCard","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"The credit card endpoint will return you the icon of the credit card provider you need. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getCreditCard","weight":53,"cookies":false,"type":"location","demo":"avatars\/get-credit-card.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-credit-card.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Credit Card Code. Possible values: amex, argencard, cabal, censosud, diners, discover, elo, hipercard, jcb, mastercard, naranja, targeta-shopping, union-china-pay, visa, mir, maestro.","required":true,"type":"string","x-example":"amex","enum":["amex","argencard","cabal","censosud","diners","discover","elo","hipercard","jcb","mastercard","naranja","targeta-shopping","union-china-pay","visa","mir","maestro"],"x-enum-name":"CreditCard","x-enum-keys":["American Express","Argencard","Cabal","Consosud","Diners Club","Discover","Elo","Hipercard","JCB","Mastercard","Naranja","Tarjeta Shopping","Union China Pay","Visa","MIR","Maestro"],"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"}]}},"\/avatars\/favicon":{"get":{"summary":"Get favicon","operationId":"avatarsGetFavicon","consumes":["application\/json"],"produces":["image\/*"],"tags":["avatars"],"description":"Use this endpoint to fetch the favorite icon (AKA favicon) of any remote website URL.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFavicon","weight":57,"cookies":false,"type":"location","demo":"avatars\/get-favicon.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-favicon.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"url","description":"Website URL which you want to fetch the favicon from.","required":true,"type":"string","format":"url","x-example":"https:\/\/example.com","in":"query"}]}},"\/avatars\/flags\/{code}":{"get":{"summary":"Get country flag","operationId":"avatarsGetFlag","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"You can use this endpoint to show different country flags icons to your users. The code argument receives the 2 letter country code. Use width, height and quality arguments to change the output settings. Country codes follow the [ISO 3166-1](https:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFlag","weight":55,"cookies":false,"type":"location","demo":"avatars\/get-flag.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-flag.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Country Code. ISO Alpha-2 country code format.","required":true,"type":"string","x-example":"af","enum":["af","ao","al","ad","ae","ar","am","ag","au","at","az","bi","be","bj","bf","bd","bg","bh","bs","ba","by","bz","bo","br","bb","bn","bt","bw","cf","ca","ch","cl","cn","ci","cm","cd","cg","co","km","cv","cr","cu","cy","cz","de","dj","dm","dk","do","dz","ec","eg","er","es","ee","et","fi","fj","fr","fm","ga","gb","ge","gh","gn","gm","gw","gq","gr","gd","gt","gy","hn","hr","ht","hu","id","in","ie","ir","iq","is","il","it","jm","jo","jp","kz","ke","kg","kh","ki","kn","kr","kw","la","lb","lr","ly","lc","li","lk","ls","lt","lu","lv","ma","mc","md","mg","mv","mx","mh","mk","ml","mt","mm","me","mn","mz","mr","mu","mw","my","na","ne","ng","ni","nl","no","np","nr","nz","om","pk","pa","pe","ph","pw","pg","pl","kp","pt","py","qa","ro","ru","rw","sa","sd","sn","sg","sb","sl","sv","sm","so","rs","ss","st","sr","sk","si","se","sz","sc","sy","td","tg","th","tj","tm","tl","to","tt","tn","tr","tv","tz","ug","ua","uy","us","uz","va","vc","ve","vn","vu","ws","ye","za","zm","zw"],"x-enum-name":"Flag","x-enum-keys":["Afghanistan","Angola","Albania","Andorra","United Arab Emirates","Argentina","Armenia","Antigua and Barbuda","Australia","Austria","Azerbaijan","Burundi","Belgium","Benin","Burkina Faso","Bangladesh","Bulgaria","Bahrain","Bahamas","Bosnia and Herzegovina","Belarus","Belize","Bolivia","Brazil","Barbados","Brunei Darussalam","Bhutan","Botswana","Central African Republic","Canada","Switzerland","Chile","China","C\u00f4te d'Ivoire","Cameroon","Democratic Republic of the Congo","Republic of the Congo","Colombia","Comoros","Cape Verde","Costa Rica","Cuba","Cyprus","Czech Republic","Germany","Djibouti","Dominica","Denmark","Dominican Republic","Algeria","Ecuador","Egypt","Eritrea","Spain","Estonia","Ethiopia","Finland","Fiji","France","Micronesia (Federated States of)","Gabon","United Kingdom","Georgia","Ghana","Guinea","Gambia","Guinea-Bissau","Equatorial Guinea","Greece","Grenada","Guatemala","Guyana","Honduras","Croatia","Haiti","Hungary","Indonesia","India","Ireland","Iran (Islamic Republic of)","Iraq","Iceland","Israel","Italy","Jamaica","Jordan","Japan","Kazakhstan","Kenya","Kyrgyzstan","Cambodia","Kiribati","Saint Kitts and Nevis","South Korea","Kuwait","Lao People's Democratic Republic","Lebanon","Liberia","Libya","Saint Lucia","Liechtenstein","Sri Lanka","Lesotho","Lithuania","Luxembourg","Latvia","Morocco","Monaco","Moldova","Madagascar","Maldives","Mexico","Marshall Islands","North Macedonia","Mali","Malta","Myanmar","Montenegro","Mongolia","Mozambique","Mauritania","Mauritius","Malawi","Malaysia","Namibia","Niger","Nigeria","Nicaragua","Netherlands","Norway","Nepal","Nauru","New Zealand","Oman","Pakistan","Panama","Peru","Philippines","Palau","Papua New Guinea","Poland","North Korea","Portugal","Paraguay","Qatar","Romania","Russia","Rwanda","Saudi Arabia","Sudan","Senegal","Singapore","Solomon Islands","Sierra Leone","El Salvador","San Marino","Somalia","Serbia","South Sudan","Sao Tome and Principe","Suriname","Slovakia","Slovenia","Sweden","Eswatini","Seychelles","Syria","Chad","Togo","Thailand","Tajikistan","Turkmenistan","Timor-Leste","Tonga","Trinidad and Tobago","Tunisia","Turkey","Tuvalu","Tanzania","Uganda","Ukraine","Uruguay","United States","Uzbekistan","Vatican City","Saint Vincent and the Grenadines","Venezuela","Vietnam","Vanuatu","Samoa","Yemen","South Africa","Zambia","Zimbabwe"],"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"}]}},"\/avatars\/image":{"get":{"summary":"Get image from URL","operationId":"avatarsGetImage","consumes":["application\/json"],"produces":["image\/*"],"tags":["avatars"],"description":"Use this endpoint to fetch a remote image URL and crop it to any image size you want. This endpoint is very useful if you need to crop and display remote images in your app or in case you want to make sure a 3rd party image is properly served using a TLS protocol.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getImage","weight":56,"cookies":false,"type":"location","demo":"avatars\/get-image.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-image.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"url","description":"Image URL which you want to crop.","required":true,"type":"string","format":"url","x-example":"https:\/\/example.com","in":"query"},{"name":"width","description":"Resize preview image width, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get user initials","operationId":"avatarsGetInitials","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getInitials","weight":59,"cookies":false,"type":"location","demo":"avatars\/get-initials.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-initials.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"name","description":"Full Name. When empty, current user name or email will be used. Max length: 128 chars.","required":false,"type":"string","x-example":"[NAME]","default":"","in":"query"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":500,"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":500,"in":"query"},{"name":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"type":"string","default":"","in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR code","operationId":"avatarsGetQR","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getQR","weight":58,"cookies":false,"type":"location","demo":"avatars\/get-q-r.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-qr.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"text","description":"Plain text to be converted to QR code image.","required":true,"type":"string","x-example":"[TEXT]","in":"query"},{"name":"size","description":"QR code size. Pass an integer between 1 to 1000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":1,"default":400,"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"type":"integer","format":"int32","x-example":0,"default":1,"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"type":"boolean","x-example":false,"default":false,"in":"query"}]}},"\/console\/assistant":{"post":{"summary":"Ask Query","operationId":"assistantChat","consumes":["application\/json"],"produces":["text\/plain"],"tags":["assistant"],"description":"","responses":{"200":{"description":"File","schema":{"type":"file"}}},"x-appwrite":{"method":"chat","weight":306,"cookies":false,"type":"","demo":"assistant\/chat.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/assistant\/chat.md","rate-limit":15,"rate-time":3600,"rate-key":"userId:{userId}","scope":"assistant.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"prompt":{"type":"string","description":"Prompt. A string containing questions asked to the AI assistant.","default":null,"x-example":"[PROMPT]"}},"required":["prompt"]}}]}},"\/console\/variables":{"get":{"summary":"Get variables","operationId":"consoleVariables","consumes":["application\/json"],"produces":["application\/json"],"tags":["console"],"description":"Get all Environment Variables that are relevant for the console.","responses":{"200":{"description":"Console Variables","schema":{"$ref":"#\/definitions\/consoleVariables"}}},"x-appwrite":{"method":"variables","weight":305,"cookies":false,"type":"","demo":"console\/variables.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/console\/variables.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/databases":{"get":{"summary":"List databases","operationId":"databasesList","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all databases from the current Appwrite project. You can use the search parameter to filter your results.","responses":{"200":{"description":"Databases List","schema":{"$ref":"#\/definitions\/databaseList"}}},"x-appwrite":{"method":"list","weight":64,"cookies":false,"type":"","demo":"databases\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create database","operationId":"databasesCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Database.\n","responses":{"201":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"create","weight":63,"cookies":false,"type":"","demo":"databases\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"databaseId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[DATABASE_ID]"},"name":{"type":"string","description":"Database name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Is the database enabled? When set to 'disabled', users cannot access the database but Server SDKs with an API key can still read and write to the database. No data is lost when this is toggled.","default":true,"x-example":false}},"required":["databaseId","name"]}}]}},"\/databases\/usage":{"get":{"summary":"Get usage stats for the database","operationId":"databasesGetUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"UsageDatabases","schema":{"$ref":"#\/definitions\/usageDatabases"}}},"x-appwrite":{"method":"getUsage","weight":108,"cookies":false,"type":"","demo":"databases\/get-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"`Date range.","required":false,"type":"string","x-example":"24h","enum":["24h","30d","90d"],"x-enum-name":"DatabaseUsageRange","x-enum-keys":["Twenty Four Hours","Thirty Days","Ninety Days"],"default":"30d","in":"query"}]}},"\/databases\/{databaseId}":{"get":{"summary":"Get database","operationId":"databasesGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a database by its unique ID. This endpoint response returns a JSON object with the database metadata.","responses":{"200":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"get","weight":65,"cookies":false,"type":"","demo":"databases\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"}]},"put":{"summary":"Update database","operationId":"databasesUpdate","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a database by its unique ID.","responses":{"200":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"update","weight":67,"cookies":false,"type":"","demo":"databases\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Database name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Is database enabled? When set to 'disabled', users cannot access the database but Server SDKs with an API key can still read and write to the database. No data is lost when this is toggled.","default":true,"x-example":false}},"required":["name"]}}]},"delete":{"summary":"Delete database","operationId":"databasesDelete","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a database by its unique ID. Only API keys with with databases.write scope can delete a database.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":68,"cookies":false,"type":"","demo":"databases\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections":{"get":{"summary":"List collections","operationId":"databasesListCollections","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all collections that belong to the provided databaseId. You can use the search parameter to filter your results.","responses":{"200":{"description":"Collections List","schema":{"$ref":"#\/definitions\/collectionList"}}},"x-appwrite":{"method":"listCollections","weight":70,"cookies":false,"type":"","demo":"databases\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, documentSecurity","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create collection","operationId":"databasesCreateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Collection. Before using this route, you should create a new database resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"createCollection","weight":69,"cookies":false,"type":"","demo":"databases\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permissions strings. By default, no user is granted with any permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":false,"x-example":false},"enabled":{"type":"boolean","description":"Is collection enabled? When set to 'disabled', users cannot access the collection but Server SDKs with and API key can still read and write to the collection. No data is lost when this is toggled.","default":true,"x-example":false}},"required":["collectionId","name"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}":{"get":{"summary":"Get collection","operationId":"databasesGetCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a collection by its unique ID. This endpoint response returns a JSON object with the collection metadata.","responses":{"200":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"getCollection","weight":71,"cookies":false,"type":"","demo":"databases\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]},"put":{"summary":"Update collection","operationId":"databasesUpdateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a collection by its unique ID.","responses":{"200":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"updateCollection","weight":73,"cookies":false,"type":"","demo":"databases\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":false,"x-example":false},"enabled":{"type":"boolean","description":"Is collection enabled? When set to 'disabled', users cannot access the collection but Server SDKs with and API key can still read and write to the collection. No data is lost when this is toggled.","default":true,"x-example":false}},"required":["name"]}}]},"delete":{"summary":"Delete collection","operationId":"databasesDeleteCollection","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a collection by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteCollection","weight":74,"cookies":false,"type":"","demo":"databases\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes":{"get":{"summary":"List attributes","operationId":"databasesListAttributes","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Attributes List","schema":{"$ref":"#\/definitions\/attributeList"}}},"x-appwrite":{"method":"listAttributes","weight":85,"cookies":false,"type":"","demo":"databases\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: key, type, size, required, array, status, error","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create boolean attribute","operationId":"databasesCreateBooleanAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a boolean attribute.\n","responses":{"202":{"description":"AttributeBoolean","schema":{"$ref":"#\/definitions\/attributeBoolean"}}},"x-appwrite":{"method":"createBooleanAttribute","weight":82,"cookies":false,"type":"","demo":"databases\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":false},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean\/{key}":{"patch":{"summary":"Update boolean attribute","operationId":"databasesUpdateBooleanAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"","responses":{"200":{"description":"AttributeBoolean","schema":{"$ref":"#\/definitions\/attributeBoolean"}}},"x-appwrite":{"method":"updateBooleanAttribute","weight":94,"cookies":false,"type":"","demo":"databases\/update-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":false,"x-nullable":true}},"required":["required","default"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/datetime":{"post":{"summary":"Create datetime attribute","operationId":"databasesCreateDatetimeAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"AttributeDatetime","schema":{"$ref":"#\/definitions\/attributeDatetime"}}},"x-appwrite":{"method":"createDatetimeAttribute","weight":83,"cookies":false,"type":"","demo":"databases\/create-datetime-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-datetime-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for the attribute in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/datetime\/{key}":{"patch":{"summary":"Update dateTime attribute","operationId":"databasesUpdateDatetimeAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"","responses":{"200":{"description":"AttributeDatetime","schema":{"$ref":"#\/definitions\/attributeDatetime"}}},"x-appwrite":{"method":"updateDatetimeAttribute","weight":95,"cookies":false,"type":"","demo":"databases\/update-datetime-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-datetime-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null,"x-nullable":true}},"required":["required","default"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create email attribute","operationId":"databasesCreateEmailAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create an email attribute.\n","responses":{"202":{"description":"AttributeEmail","schema":{"$ref":"#\/definitions\/attributeEmail"}}},"x-appwrite":{"method":"createEmailAttribute","weight":76,"cookies":false,"type":"","demo":"databases\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"email@example.com"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/email\/{key}":{"patch":{"summary":"Update email attribute","operationId":"databasesUpdateEmailAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Update an email attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeEmail","schema":{"$ref":"#\/definitions\/attributeEmail"}}},"x-appwrite":{"method":"updateEmailAttribute","weight":88,"cookies":false,"type":"","demo":"databases\/update-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"email@example.com","x-nullable":true}},"required":["required","default"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create enum attribute","operationId":"databasesCreateEnumAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"AttributeEnum","schema":{"$ref":"#\/definitions\/attributeEnum"}}},"x-appwrite":{"method":"createEnumAttribute","weight":77,"cookies":false,"type":"","demo":"databases\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"elements":{"type":"array","description":"Array of elements in enumerated type. Uses length of longest element to determine size. Maximum of 100 elements are allowed, each 255 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","elements","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/enum\/{key}":{"patch":{"summary":"Update enum attribute","operationId":"databasesUpdateEnumAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Update an enum attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeEnum","schema":{"$ref":"#\/definitions\/attributeEnum"}}},"x-appwrite":{"method":"updateEnumAttribute","weight":89,"cookies":false,"type":"","demo":"databases\/update-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-enum-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"elements":{"type":"array","description":"Array of elements in enumerated type. Uses length of longest element to determine size. Maximum of 100 elements are allowed, each 255 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"[DEFAULT]","x-nullable":true}},"required":["elements","required","default"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create float attribute","operationId":"databasesCreateFloatAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeFloat","schema":{"$ref":"#\/definitions\/attributeFloat"}}},"x-appwrite":{"method":"createFloatAttribute","weight":81,"cookies":false,"type":"","demo":"databases\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"min":{"type":"number","description":"Minimum value to enforce on new documents","default":null,"x-example":null},"max":{"type":"number","description":"Maximum value to enforce on new documents","default":null,"x-example":null},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/float\/{key}":{"patch":{"summary":"Update float attribute","operationId":"databasesUpdateFloatAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Update a float attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeFloat","schema":{"$ref":"#\/definitions\/attributeFloat"}}},"x-appwrite":{"method":"updateFloatAttribute","weight":93,"cookies":false,"type":"","demo":"databases\/update-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"min":{"type":"number","description":"Minimum value to enforce on new documents","default":null,"x-example":null},"max":{"type":"number","description":"Maximum value to enforce on new documents","default":null,"x-example":null},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null,"x-nullable":true}},"required":["required","min","max","default"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create integer attribute","operationId":"databasesCreateIntegerAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeInteger","schema":{"$ref":"#\/definitions\/attributeInteger"}}},"x-appwrite":{"method":"createIntegerAttribute","weight":80,"cookies":false,"type":"","demo":"databases\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"min":{"type":"integer","description":"Minimum value to enforce on new documents","default":null,"x-example":null},"max":{"type":"integer","description":"Maximum value to enforce on new documents","default":null,"x-example":null},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/integer\/{key}":{"patch":{"summary":"Update integer attribute","operationId":"databasesUpdateIntegerAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Update an integer attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeInteger","schema":{"$ref":"#\/definitions\/attributeInteger"}}},"x-appwrite":{"method":"updateIntegerAttribute","weight":92,"cookies":false,"type":"","demo":"databases\/update-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"min":{"type":"integer","description":"Minimum value to enforce on new documents","default":null,"x-example":null},"max":{"type":"integer","description":"Maximum value to enforce on new documents","default":null,"x-example":null},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null,"x-nullable":true}},"required":["required","min","max","default"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP address attribute","operationId":"databasesCreateIpAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create IP address attribute.\n","responses":{"202":{"description":"AttributeIP","schema":{"$ref":"#\/definitions\/attributeIp"}}},"x-appwrite":{"method":"createIpAttribute","weight":78,"cookies":false,"type":"","demo":"databases\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/ip\/{key}":{"patch":{"summary":"Update IP address attribute","operationId":"databasesUpdateIpAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Update an ip attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeIP","schema":{"$ref":"#\/definitions\/attributeIp"}}},"x-appwrite":{"method":"updateIpAttribute","weight":90,"cookies":false,"type":"","demo":"databases\/update-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null,"x-nullable":true}},"required":["required","default"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/relationship":{"post":{"summary":"Create relationship attribute","operationId":"databasesCreateRelationshipAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create relationship attribute. [Learn more about relationship attributes](https:\/\/appwrite.io\/docs\/databases-relationships#relationship-attributes).\n","responses":{"202":{"description":"AttributeRelationship","schema":{"$ref":"#\/definitions\/attributeRelationship"}}},"x-appwrite":{"method":"createRelationshipAttribute","weight":84,"cookies":false,"type":"","demo":"databases\/create-relationship-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-relationship-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"relatedCollectionId":{"type":"string","description":"Related Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","default":null,"x-example":"[RELATED_COLLECTION_ID]"},"type":{"type":"string","description":"Relation type","default":null,"x-example":"oneToOne","enum":["oneToOne","manyToOne","manyToMany","oneToMany"],"x-enum-name":"RelationshipType","x-enum-keys":[]},"twoWay":{"type":"boolean","description":"Is Two Way?","default":false,"x-example":false},"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"twoWayKey":{"type":"string","description":"Two Way Attribute Key.","default":null,"x-example":null},"onDelete":{"type":"string","description":"Constraints option","default":"restrict","x-example":"cascade","enum":["cascade","restrict","setNull"],"x-enum-name":"RelationMutate","x-enum-keys":[]}},"required":["relatedCollectionId","type"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create string attribute","operationId":"databasesCreateStringAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a string attribute.\n","responses":{"202":{"description":"AttributeString","schema":{"$ref":"#\/definitions\/attributeString"}}},"x-appwrite":{"method":"createStringAttribute","weight":75,"cookies":false,"type":"","demo":"databases\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"size":{"type":"integer","description":"Attribute size for text attributes, in number of characters.","default":null,"x-example":1},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false},"encrypt":{"type":"boolean","description":"Toggle encryption for the attribute. Encryption enhances security by not storing any plain text values in the database. However, encrypted attributes cannot be queried.","default":false,"x-example":false}},"required":["key","size","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/string\/{key}":{"patch":{"summary":"Update string attribute","operationId":"databasesUpdateStringAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Update a string attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeString","schema":{"$ref":"#\/definitions\/attributeString"}}},"x-appwrite":{"method":"updateStringAttribute","weight":87,"cookies":false,"type":"","demo":"databases\/update-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"[DEFAULT]","x-nullable":true}},"required":["required","default"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL attribute","operationId":"databasesCreateUrlAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a URL attribute.\n","responses":{"202":{"description":"AttributeURL","schema":{"$ref":"#\/definitions\/attributeUrl"}}},"x-appwrite":{"method":"createUrlAttribute","weight":79,"cookies":false,"type":"","demo":"databases\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"https:\/\/example.com"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url\/{key}":{"patch":{"summary":"Update URL attribute","operationId":"databasesUpdateUrlAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Update an url attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeURL","schema":{"$ref":"#\/definitions\/attributeUrl"}}},"x-appwrite":{"method":"updateUrlAttribute","weight":91,"cookies":false,"type":"","demo":"databases\/update-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"https:\/\/example.com","x-nullable":true}},"required":["required","default"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get attribute","operationId":"databasesGetAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, or AttributeDatetime, or AttributeRelationship, or AttributeString","schema":{"x-oneOf":[{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeRelationship"},{"$ref":"#\/definitions\/attributeString"}]}}},"x-appwrite":{"method":"getAttribute","weight":86,"cookies":false,"type":"","demo":"databases\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"}]},"delete":{"summary":"Delete attribute","operationId":"databasesDeleteAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":97,"cookies":false,"type":"","demo":"databases\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/{key}\/relationship":{"patch":{"summary":"Update relationship attribute","operationId":"databasesUpdateRelationshipAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Update relationship attribute. [Learn more about relationship attributes](https:\/\/appwrite.io\/docs\/databases-relationships#relationship-attributes).\n","responses":{"200":{"description":"AttributeRelationship","schema":{"$ref":"#\/definitions\/attributeRelationship"}}},"x-appwrite":{"method":"updateRelationshipAttribute","weight":96,"cookies":false,"type":"","demo":"databases\/update-relationship-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-relationship-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"onDelete":{"type":"string","description":"Constraints option","default":null,"x-example":"cascade","enum":["cascade","restrict","setNull"],"x-enum-name":"RelationMutate","x-enum-keys":[]}}}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List documents","operationId":"databasesListDocuments","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","schema":{"$ref":"#\/definitions\/documentList"}}},"x-appwrite":{"method":"listDocuments","weight":103,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"post":{"summary":"Create document","operationId":"databasesCreateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"createDocument","weight":102,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","default":{},"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, only the current user is granted all permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get document","operationId":"databasesGetDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"getDocument","weight":104,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"patch":{"summary":"Update document","operationId":"databasesUpdateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"updateDocument","weight":106,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","default":[],"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete document","operationId":"databasesDeleteDocument","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":107,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}\/logs":{"get":{"summary":"List document logs","operationId":"databasesListDocumentLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get the document activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listDocumentLogs","weight":105,"cookies":false,"type":"","demo":"databases\/list-document-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes":{"get":{"summary":"List indexes","operationId":"databasesListIndexes","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Indexes List","schema":{"$ref":"#\/definitions\/indexList"}}},"x-appwrite":{"method":"listIndexes","weight":99,"cookies":false,"type":"","demo":"databases\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: key, type, status, attributes, error","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"post":{"summary":"Create index","operationId":"databasesCreateIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"createIndex","weight":98,"cookies":false,"type":"","demo":"databases\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Index Key.","default":null,"x-example":null},"type":{"type":"string","description":"Index type.","default":null,"x-example":"key","enum":["key","fulltext","unique","spatial"],"x-enum-name":"IndexType","x-enum-keys":[]},"attributes":{"type":"array","description":"Array of attributes to index. Maximum of 100 attributes are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders. Maximum of 100 orders are allowed.","default":[],"x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get index","operationId":"databasesGetIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"getIndex","weight":100,"cookies":false,"type":"","demo":"databases\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Index Key.","required":true,"type":"string","in":"path"}]},"delete":{"summary":"Delete index","operationId":"databasesDeleteIndex","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":101,"cookies":false,"type":"","demo":"databases\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Index Key.","required":true,"type":"string","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/logs":{"get":{"summary":"List collection logs","operationId":"databasesListCollectionLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get the collection activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listCollectionLogs","weight":72,"cookies":false,"type":"","demo":"databases\/list-collection-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/usage":{"get":{"summary":"Get usage stats for a collection","operationId":"databasesGetCollectionUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"UsageCollection","schema":{"$ref":"#\/definitions\/usageCollection"}}},"x-appwrite":{"method":"getCollectionUsage","weight":110,"cookies":false,"type":"","demo":"databases\/get-collection-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","enum":["24h","30d","90d"],"x-enum-name":"DatabaseUsageRange","x-enum-keys":["Twenty Four Hours","Thirty Days","Ninety Days"],"default":"30d","in":"query"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/databases\/{databaseId}\/logs":{"get":{"summary":"List database logs","operationId":"databasesListLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get the database activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listLogs","weight":66,"cookies":false,"type":"","demo":"databases\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/databases\/{databaseId}\/usage":{"get":{"summary":"Get usage stats for the database","operationId":"databasesGetDatabaseUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"UsageDatabase","schema":{"$ref":"#\/definitions\/usageDatabase"}}},"x-appwrite":{"method":"getDatabaseUsage","weight":109,"cookies":false,"type":"","demo":"databases\/get-database-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"range","description":"`Date range.","required":false,"type":"string","x-example":"24h","enum":["24h","30d","90d"],"x-enum-name":"DatabaseUsageRange","x-enum-keys":["Twenty Four Hours","Thirty Days","Ninety Days"],"default":"30d","in":"query"}]}},"\/functions":{"get":{"summary":"List functions","operationId":"functionsList","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the project's functions. You can use the query params to filter your results.","responses":{"200":{"description":"Functions List","schema":{"$ref":"#\/definitions\/functionList"}}},"x-appwrite":{"method":"list","weight":268,"cookies":false,"type":"","demo":"functions\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-functions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, runtime, deployment, schedule, scheduleNext, schedulePrevious, timeout, entrypoint, commands, installationId","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create function","operationId":"functionsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function. You can pass a list of [permissions](https:\/\/appwrite.io\/docs\/permissions) to allow different project users or team with access to execute the function using the client API.","responses":{"201":{"description":"Function","schema":{"$ref":"#\/definitions\/function"}}},"x-appwrite":{"method":"create","weight":267,"cookies":false,"type":"","demo":"functions\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"functionId":{"type":"string","description":"Function ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[FUNCTION_ID]"},"name":{"type":"string","description":"Function name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"runtime":{"type":"string","description":"Execution runtime.","default":null,"x-example":"node-14.5","enum":["node-14.5","node-16.0","node-18.0","node-19.0","node-20.0","php-8.0","php-8.1","php-8.2","ruby-3.0","ruby-3.1","ruby-3.2","python-3.8","python-3.9","python-3.10","python-3.11","python-3.12","dart-2.15","dart-2.16","dart-2.17","dart-2.18","dart-3.0","dart-3.1","dotnet-3.1","dotnet-6.0","dotnet-7.0","java-8.0","java-11.0","java-17.0","java-18.0","swift-5.5","swift-5.8","kotlin-1.6","kotlin-1.8","cpp-17","cpp-20","bun-1.0"],"x-enum-name":null,"x-enum-keys":[]},"execute":{"type":"array","description":"An array of role strings with execution permissions. By default no user is granted with any execute permissions. [learn more about roles](https:\/\/appwrite.io\/docs\/permissions#permission-roles). Maximum of 100 roles are allowed, each 64 characters long.","default":[],"x-example":"[\"any\"]","items":{"type":"string"}},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","default":[],"x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","default":"","x-example":null},"timeout":{"type":"integer","description":"Function maximum execution time in seconds.","default":15,"x-example":1},"enabled":{"type":"boolean","description":"Is function enabled? When set to 'disabled', users cannot access the function but Server SDKs with and API key can still access the function. No data is lost when this is toggled.","default":true,"x-example":false},"logging":{"type":"boolean","description":"Whether executions will be logged. When set to false, executions will not be logged, but will reduce resource used by your Appwrite project.","default":true,"x-example":false},"entrypoint":{"type":"string","description":"Entrypoint File. This path is relative to the \"providerRootDirectory\".","default":"","x-example":"[ENTRYPOINT]"},"commands":{"type":"string","description":"Build Commands.","default":"","x-example":"[COMMANDS]"},"installationId":{"type":"string","description":"Appwrite Installation ID for VCS (Version Control System) deployment.","default":"","x-example":"[INSTALLATION_ID]"},"providerRepositoryId":{"type":"string","description":"Repository ID of the repo linked to the function.","default":"","x-example":"[PROVIDER_REPOSITORY_ID]"},"providerBranch":{"type":"string","description":"Production branch for the repo linked to the function.","default":"","x-example":"[PROVIDER_BRANCH]"},"providerSilentMode":{"type":"boolean","description":"Is the VCS (Version Control System) connection in silent mode for the repo linked to the function? In silent mode, comments will not be made on commits and pull requests.","default":false,"x-example":false},"providerRootDirectory":{"type":"string","description":"Path to function code in the linked repo.","default":"","x-example":"[PROVIDER_ROOT_DIRECTORY]"},"templateRepository":{"type":"string","description":"Repository name of the template.","default":"","x-example":"[TEMPLATE_REPOSITORY]"},"templateOwner":{"type":"string","description":"The name of the owner of the template.","default":"","x-example":"[TEMPLATE_OWNER]"},"templateRootDirectory":{"type":"string","description":"Path to function code in the template repo.","default":"","x-example":"[TEMPLATE_ROOT_DIRECTORY]"},"templateBranch":{"type":"string","description":"Production branch for the repo linked to the function template.","default":"","x-example":"[TEMPLATE_BRANCH]"}},"required":["functionId","name","runtime"]}}]}},"\/functions\/runtimes":{"get":{"summary":"List runtimes","operationId":"functionsListRuntimes","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all runtimes that are currently active on your instance.","responses":{"200":{"description":"Runtimes List","schema":{"$ref":"#\/definitions\/runtimeList"}}},"x-appwrite":{"method":"listRuntimes","weight":269,"cookies":false,"type":"","demo":"functions\/list-runtimes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-runtimes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/functions\/usage":{"get":{"summary":"Get functions usage","operationId":"functionsGetUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"","responses":{"200":{"description":"UsageFunctions","schema":{"$ref":"#\/definitions\/usageFunctions"}}},"x-appwrite":{"method":"getUsage","weight":272,"cookies":false,"type":"","demo":"functions\/get-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","enum":["24h","30d","90d"],"x-enum-name":"FunctionUsageRange","x-enum-keys":["Twenty Four Hours","Thirty Days","Ninety Days"],"default":"30d","in":"query"}]}},"\/functions\/{functionId}":{"get":{"summary":"Get function","operationId":"functionsGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a function by its unique ID.","responses":{"200":{"description":"Function","schema":{"$ref":"#\/definitions\/function"}}},"x-appwrite":{"method":"get","weight":270,"cookies":false,"type":"","demo":"functions\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"}]},"put":{"summary":"Update function","operationId":"functionsUpdate","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Update function by its unique ID.","responses":{"200":{"description":"Function","schema":{"$ref":"#\/definitions\/function"}}},"x-appwrite":{"method":"update","weight":273,"cookies":false,"type":"","demo":"functions\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Function name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"runtime":{"type":"string","description":"Execution runtime.","default":"","x-example":"node-14.5","enum":["node-14.5","node-16.0","node-18.0","node-19.0","node-20.0","php-8.0","php-8.1","php-8.2","ruby-3.0","ruby-3.1","ruby-3.2","python-3.8","python-3.9","python-3.10","python-3.11","python-3.12","dart-2.15","dart-2.16","dart-2.17","dart-2.18","dart-3.0","dart-3.1","dotnet-3.1","dotnet-6.0","dotnet-7.0","java-8.0","java-11.0","java-17.0","java-18.0","swift-5.5","swift-5.8","kotlin-1.6","kotlin-1.8","cpp-17","cpp-20","bun-1.0"],"x-enum-name":null,"x-enum-keys":[]},"execute":{"type":"array","description":"An array of role strings with execution permissions. By default no user is granted with any execute permissions. [learn more about roles](https:\/\/appwrite.io\/docs\/permissions#permission-roles). Maximum of 100 roles are allowed, each 64 characters long.","default":[],"x-example":"[\"any\"]","items":{"type":"string"}},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","default":[],"x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","default":"","x-example":null},"timeout":{"type":"integer","description":"Maximum execution time in seconds.","default":15,"x-example":1},"enabled":{"type":"boolean","description":"Is function enabled? When set to 'disabled', users cannot access the function but Server SDKs with and API key can still access the function. No data is lost when this is toggled.","default":true,"x-example":false},"logging":{"type":"boolean","description":"Whether executions will be logged. When set to false, executions will not be logged, but will reduce resource used by your Appwrite project.","default":true,"x-example":false},"entrypoint":{"type":"string","description":"Entrypoint File. This path is relative to the \"providerRootDirectory\".","default":"","x-example":"[ENTRYPOINT]"},"commands":{"type":"string","description":"Build Commands.","default":"","x-example":"[COMMANDS]"},"installationId":{"type":"string","description":"Appwrite Installation ID for VCS (Version Controle System) deployment.","default":"","x-example":"[INSTALLATION_ID]"},"providerRepositoryId":{"type":"string","description":"Repository ID of the repo linked to the function","default":"","x-example":"[PROVIDER_REPOSITORY_ID]"},"providerBranch":{"type":"string","description":"Production branch for the repo linked to the function","default":"","x-example":"[PROVIDER_BRANCH]"},"providerSilentMode":{"type":"boolean","description":"Is the VCS (Version Control System) connection in silent mode for the repo linked to the function? In silent mode, comments will not be made on commits and pull requests.","default":false,"x-example":false},"providerRootDirectory":{"type":"string","description":"Path to function code in the linked repo.","default":"","x-example":"[PROVIDER_ROOT_DIRECTORY]"}},"required":["name"]}}]},"delete":{"summary":"Delete function","operationId":"functionsDelete","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"Delete a function by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":276,"cookies":false,"type":"","demo":"functions\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"}]}},"\/functions\/{functionId}\/deployments":{"get":{"summary":"List deployments","operationId":"functionsListDeployments","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the project's code deployments. You can use the query params to filter your results.","responses":{"200":{"description":"Deployments List","schema":{"$ref":"#\/definitions\/deploymentList"}}},"x-appwrite":{"method":"listDeployments","weight":278,"cookies":false,"type":"","demo":"functions\/list-deployments.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-deployments.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: size, buildId, activate, entrypoint, commands","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create deployment","operationId":"functionsCreateDeployment","consumes":["multipart\/form-data"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function code deployment. Use this endpoint to upload a new version of your code function. To execute your newly uploaded code, you'll need to update the function's deployment to use your new deployment UID.\n\nThis endpoint accepts a tar.gz file compressed with your code. Make sure to include any dependencies your code has within the compressed file. You can learn more about code packaging in the [Appwrite Cloud Functions tutorial](https:\/\/appwrite.io\/docs\/functions).\n\nUse the \"command\" param to set the entrypoint used to execute your code.","responses":{"202":{"description":"Deployment","schema":{"$ref":"#\/definitions\/deployment"}}},"x-appwrite":{"method":"createDeployment","weight":277,"cookies":false,"type":"","demo":"functions\/create-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":true,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"entrypoint","description":"Entrypoint File.","required":false,"type":"string","x-example":"[ENTRYPOINT]","in":"formData"},{"name":"commands","description":"Build Commands.","required":false,"type":"string","x-example":"[COMMANDS]","in":"formData"},{"name":"code","description":"Gzip file with your code package. When used with the Appwrite CLI, pass the path to your code directory, and the CLI will automatically package your code. Use a path that is within the current directory.","required":true,"type":"file","in":"formData"},{"name":"activate","description":"Automatically activate the deployment when it is finished building.","required":true,"type":"boolean","x-example":false,"in":"formData"}]}},"\/functions\/{functionId}\/deployments\/{deploymentId}":{"get":{"summary":"Get deployment","operationId":"functionsGetDeployment","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a code deployment by its unique ID.","responses":{"200":{"description":"Deployment","schema":{"$ref":"#\/definitions\/deployment"}}},"x-appwrite":{"method":"getDeployment","weight":279,"cookies":false,"type":"","demo":"functions\/get-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"type":"string","x-example":"[DEPLOYMENT_ID]","in":"path"}]},"patch":{"summary":"Update function deployment","operationId":"functionsUpdateDeployment","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Update the function code deployment ID using the unique function ID. Use this endpoint to switch the code deployment that should be executed by the execution endpoint.","responses":{"200":{"description":"Function","schema":{"$ref":"#\/definitions\/function"}}},"x-appwrite":{"method":"updateDeployment","weight":275,"cookies":false,"type":"","demo":"functions\/update-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-function-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"type":"string","x-example":"[DEPLOYMENT_ID]","in":"path"}]},"delete":{"summary":"Delete deployment","operationId":"functionsDeleteDeployment","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"Delete a code deployment by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDeployment","weight":280,"cookies":false,"type":"","demo":"functions\/delete-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"type":"string","x-example":"[DEPLOYMENT_ID]","in":"path"}]}},"\/functions\/{functionId}\/deployments\/{deploymentId}\/builds\/{buildId}":{"post":{"summary":"Create build","operationId":"functionsCreateBuild","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"Create a new build for an Appwrite Function deployment. This endpoint can be used to retry a failed build.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"createBuild","weight":281,"cookies":false,"type":"","demo":"functions\/create-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"type":"string","x-example":"[DEPLOYMENT_ID]","in":"path"},{"name":"buildId","description":"Build unique ID.","required":true,"type":"string","x-example":"[BUILD_ID]","in":"path"}]}},"\/functions\/{functionId}\/deployments\/{deploymentId}\/download":{"get":{"summary":"Download Deployment","operationId":"functionsDownloadDeployment","consumes":["application\/json"],"produces":["*\/*"],"tags":["functions"],"description":"Get a Deployment's contents by its unique ID. This endpoint supports range requests for partial or streaming file download.","responses":{"200":{"description":"File","schema":{"type":"file"}}},"x-appwrite":{"method":"downloadDeployment","weight":274,"cookies":false,"type":"location","demo":"functions\/download-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/download-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"type":"string","x-example":"[DEPLOYMENT_ID]","in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List executions","operationId":"functionsListExecutions","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","schema":{"$ref":"#\/definitions\/executionList"}}},"x-appwrite":{"method":"listExecutions","weight":283,"cookies":false,"type":"","demo":"functions\/list-executions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-executions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, responseStatusCode, duration","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create execution","operationId":"functionsCreateExecution","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","schema":{"$ref":"#\/definitions\/execution"}}},"x-appwrite":{"method":"createExecution","weight":282,"cookies":false,"type":"","demo":"functions\/create-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-execution.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"body":{"type":"string","description":"HTTP body of execution. Default value is empty string.","default":"","x-example":"[BODY]"},"async":{"type":"boolean","description":"Execute code in the background. Default value is false.","default":false,"x-example":false},"path":{"type":"string","description":"HTTP path of execution. Path can include query params. Default value is \/","default":"\/","x-example":"[PATH]"},"method":{"type":"string","description":"HTTP method of execution. Default value is GET.","default":"POST","x-example":"GET","enum":["GET","POST","PUT","PATCH","DELETE","OPTIONS"],"x-enum-name":"ExecutionMethod","x-enum-keys":[]},"headers":{"type":"object","description":"HTTP headers of execution. Defaults to empty.","default":[],"x-example":"{}"}}}}]}},"\/functions\/{functionId}\/executions\/{executionId}":{"get":{"summary":"Get execution","operationId":"functionsGetExecution","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a function execution log by its unique ID.","responses":{"200":{"description":"Execution","schema":{"$ref":"#\/definitions\/execution"}}},"x-appwrite":{"method":"getExecution","weight":284,"cookies":false,"type":"","demo":"functions\/get-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-execution.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"executionId","description":"Execution ID.","required":true,"type":"string","x-example":"[EXECUTION_ID]","in":"path"}]}},"\/functions\/{functionId}\/usage":{"get":{"summary":"Get function usage","operationId":"functionsGetFunctionUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"","responses":{"200":{"description":"UsageFunction","schema":{"$ref":"#\/definitions\/usageFunction"}}},"x-appwrite":{"method":"getFunctionUsage","weight":271,"cookies":false,"type":"","demo":"functions\/get-function-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","enum":["24h","30d","90d"],"x-enum-name":"FunctionUsageRange","x-enum-keys":["Twenty Four Hours","Thirty Days","Ninety Days"],"default":"30d","in":"query"}]}},"\/functions\/{functionId}\/variables":{"get":{"summary":"List variables","operationId":"functionsListVariables","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all variables of a specific function.","responses":{"200":{"description":"Variables List","schema":{"$ref":"#\/definitions\/variableList"}}},"x-appwrite":{"method":"listVariables","weight":286,"cookies":false,"type":"","demo":"functions\/list-variables.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-variables.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"}]},"post":{"summary":"Create variable","operationId":"functionsCreateVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function environment variable. These variables can be accessed in the function at runtime as environment variables.","responses":{"201":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"createVariable","weight":285,"cookies":false,"type":"","demo":"functions\/create-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","default":null,"x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","default":null,"x-example":"[VALUE]"}},"required":["key","value"]}}]}},"\/functions\/{functionId}\/variables\/{variableId}":{"get":{"summary":"Get variable","operationId":"functionsGetVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a variable by its unique ID.","responses":{"200":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"getVariable","weight":287,"cookies":false,"type":"","demo":"functions\/get-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"}]},"put":{"summary":"Update variable","operationId":"functionsUpdateVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Update variable by its unique ID.","responses":{"200":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"updateVariable","weight":288,"cookies":false,"type":"","demo":"functions\/update-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","default":null,"x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","default":null,"x-example":"[VALUE]"}},"required":["key"]}}]},"delete":{"summary":"Delete variable","operationId":"functionsDeleteVariable","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"Delete a variable by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteVariable","weight":289,"cookies":false,"type":"","demo":"functions\/delete-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"}]}},"\/graphql":{"post":{"summary":"GraphQL endpoint","operationId":"graphqlQuery","consumes":["application\/json"],"produces":["application\/json"],"tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","schema":{"$ref":"#\/definitions\/any"}}},"x-appwrite":{"method":"query","weight":304,"cookies":false,"type":"graphql","demo":"graphql\/query.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"query":{"type":"object","description":"The query or queries to execute.","default":{},"x-example":"{}"}},"required":["query"]}}]}},"\/graphql\/mutation":{"post":{"summary":"GraphQL endpoint","operationId":"graphqlMutation","consumes":["application\/json"],"produces":["application\/json"],"tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","schema":{"$ref":"#\/definitions\/any"}}},"x-appwrite":{"method":"mutation","weight":303,"cookies":false,"type":"graphql","demo":"graphql\/mutation.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"query":{"type":"object","description":"The query or queries to execute.","default":{},"x-example":"{}"}},"required":["query"]}}]}},"\/health":{"get":{"summary":"Get HTTP","operationId":"healthGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite HTTP server is up and responsive.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"get","weight":119,"cookies":false,"type":"","demo":"health\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/anti-virus":{"get":{"summary":"Get antivirus","operationId":"healthGetAntivirus","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite Antivirus server is up and connection is successful.","responses":{"200":{"description":"Health Antivirus","schema":{"$ref":"#\/definitions\/healthAntivirus"}}},"x-appwrite":{"method":"getAntivirus","weight":138,"cookies":false,"type":"","demo":"health\/get-antivirus.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-storage-anti-virus.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/cache":{"get":{"summary":"Get cache","operationId":"healthGetCache","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite in-memory cache servers are up and connection is successful.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"getCache","weight":122,"cookies":false,"type":"","demo":"health\/get-cache.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-cache.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/certificate":{"get":{"summary":"Get the SSL certificate for a domain","operationId":"healthGetCertificate","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the SSL certificate for a domain","responses":{"200":{"description":"Health Certificate","schema":{"$ref":"#\/definitions\/healthCertificate"}}},"x-appwrite":{"method":"getCertificate","weight":128,"cookies":false,"type":"","demo":"health\/get-certificate.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-certificate.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"domain","description":"string","required":false,"type":"string","in":"query"}]}},"\/health\/db":{"get":{"summary":"Get DB","operationId":"healthGetDB","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite database servers are up and connection is successful.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"getDB","weight":121,"cookies":false,"type":"","demo":"health\/get-d-b.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-db.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/pubsub":{"get":{"summary":"Get pubsub","operationId":"healthGetPubSub","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite pub-sub servers are up and connection is successful.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"getPubSub","weight":124,"cookies":false,"type":"","demo":"health\/get-pub-sub.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-pubsub.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/queue":{"get":{"summary":"Get queue","operationId":"healthGetQueue","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite queue messaging servers are up and connection is successful.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"getQueue","weight":123,"cookies":false,"type":"","demo":"health\/get-queue.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/queue\/builds":{"get":{"summary":"Get builds queue","operationId":"healthGetQueueBuilds","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of builds that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueBuilds","weight":130,"cookies":false,"type":"","demo":"health\/get-queue-builds.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-builds.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/certificates":{"get":{"summary":"Get certificates queue","operationId":"healthGetQueueCertificates","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of certificates that are waiting to be issued against [Letsencrypt](https:\/\/letsencrypt.org\/) in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueCertificates","weight":129,"cookies":false,"type":"","demo":"health\/get-queue-certificates.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-certificates.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/databases":{"get":{"summary":"Get databases queue","operationId":"healthGetQueueDatabases","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of database changes that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueDatabases","weight":131,"cookies":false,"type":"","demo":"health\/get-queue-databases.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-databases.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"name","description":"Queue name for which to check the queue size","required":false,"type":"string","x-example":"[NAME]","default":"database_db_main","in":"query"},{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/deletes":{"get":{"summary":"Get deletes queue","operationId":"healthGetQueueDeletes","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of background destructive changes that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueDeletes","weight":132,"cookies":false,"type":"","demo":"health\/get-queue-deletes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-deletes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/failed\/{name}":{"get":{"summary":"Get number of failed queue jobs","operationId":"healthGetFailedJobs","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Returns the amount of failed jobs in a given queue.\n","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getFailedJobs","weight":139,"cookies":false,"type":"","demo":"health\/get-failed-jobs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-failed-queue-jobs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"name","description":"The name of the queue","required":true,"type":"string","x-example":"v1-database","enum":["v1-database","v1-deletes","v1-audits","v1-mails","v1-functions","v1-usage","webhooksv1","v1-certificates","v1-builds","v1-messaging","v1-migrations","hamsterv1"],"x-enum-name":null,"x-enum-keys":[],"in":"path"},{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/functions":{"get":{"summary":"Get functions queue","operationId":"healthGetQueueFunctions","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueFunctions","weight":136,"cookies":false,"type":"","demo":"health\/get-queue-functions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-functions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/logs":{"get":{"summary":"Get logs queue","operationId":"healthGetQueueLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of logs that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueLogs","weight":127,"cookies":false,"type":"","demo":"health\/get-queue-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/mails":{"get":{"summary":"Get mails queue","operationId":"healthGetQueueMails","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of mails that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueMails","weight":133,"cookies":false,"type":"","demo":"health\/get-queue-mails.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-mails.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/messaging":{"get":{"summary":"Get messaging queue","operationId":"healthGetQueueMessaging","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of messages that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueMessaging","weight":134,"cookies":false,"type":"","demo":"health\/get-queue-messaging.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-messaging.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/migrations":{"get":{"summary":"Get migrations queue","operationId":"healthGetQueueMigrations","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of migrations that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueMigrations","weight":135,"cookies":false,"type":"","demo":"health\/get-queue-migrations.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-migrations.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/webhooks":{"get":{"summary":"Get webhooks queue","operationId":"healthGetQueueWebhooks","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of webhooks that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueWebhooks","weight":126,"cookies":false,"type":"","demo":"health\/get-queue-webhooks.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-webhooks.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/storage\/local":{"get":{"summary":"Get local storage","operationId":"healthGetStorageLocal","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite local storage device is up and connection is successful.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"getStorageLocal","weight":137,"cookies":false,"type":"","demo":"health\/get-storage-local.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-storage-local.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/time":{"get":{"summary":"Get time","operationId":"healthGetTime","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite server time is synced with Google remote NTP server. We use this technology to smoothly handle leap seconds with no disruptive events. The [Network Time Protocol](https:\/\/en.wikipedia.org\/wiki\/Network_Time_Protocol) (NTP) is used by hundreds of millions of computers and devices to synchronize their clocks over the Internet. If your computer sets its own clock, it likely uses NTP.","responses":{"200":{"description":"Health Time","schema":{"$ref":"#\/definitions\/healthTime"}}},"x-appwrite":{"method":"getTime","weight":125,"cookies":false,"type":"","demo":"health\/get-time.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-time.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/locale":{"get":{"summary":"Get user locale","operationId":"localeGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"Get the current user location based on IP. Returns an object with user country code, country name, continent name, continent code, ip address and suggested currency. You can use the locale header to get the data in a supported language.\n\n([IP Geolocation by DB-IP](https:\/\/db-ip.com))","responses":{"200":{"description":"Locale","schema":{"$ref":"#\/definitions\/locale"}}},"x-appwrite":{"method":"get","weight":111,"cookies":false,"type":"","demo":"locale\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-locale.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/localed","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/codes":{"get":{"summary":"List Locale Codes","operationId":"localeListCodes","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all locale codes in [ISO 639-1](https:\/\/en.wikipedia.org\/wiki\/List_of_ISO_639-1_codes).","responses":{"200":{"description":"Locale codes list","schema":{"$ref":"#\/definitions\/localeCodeList"}}},"x-appwrite":{"method":"listCodes","weight":112,"cookies":false,"type":"","demo":"locale\/list-codes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-locale-codes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/localeCode","offline-key":"current","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/continents":{"get":{"summary":"List continents","operationId":"localeListContinents","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","schema":{"$ref":"#\/definitions\/continentList"}}},"x-appwrite":{"method":"listContinents","weight":116,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/continents","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List countries","operationId":"localeListCountries","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountries","weight":113,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/countries","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU countries","operationId":"localeListCountriesEU","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountriesEU","weight":114,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/countries\/eu","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List countries phone codes","operationId":"localeListCountriesPhones","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","schema":{"$ref":"#\/definitions\/phoneList"}}},"x-appwrite":{"method":"listCountriesPhones","weight":115,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/countries\/phones","offline-key":"","offline-response-key":"countryCode","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List currencies","operationId":"localeListCurrencies","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","schema":{"$ref":"#\/definitions\/currencyList"}}},"x-appwrite":{"method":"listCurrencies","weight":117,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/currencies","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List languages","operationId":"localeListLanguages","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","schema":{"$ref":"#\/definitions\/languageList"}}},"x-appwrite":{"method":"listLanguages","weight":118,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/languages","offline-key":"","offline-response-key":"code","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/messaging\/messages":{"get":{"summary":"List messages","operationId":"messagingListMessages","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Message list","schema":{"$ref":"#\/definitions\/messageList"}}},"x-appwrite":{"method":"listMessages","weight":363,"cookies":false,"type":"","demo":"messaging\/list-messages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-messages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: scheduledAt, deliveredAt, deliveredTotal, status, description, providerType","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]}},"\/messaging\/messages\/email":{"post":{"summary":"Create an email.","operationId":"messagingCreateEmail","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Message","schema":{"$ref":"#\/definitions\/message"}}},"x-appwrite":{"method":"createEmail","weight":360,"cookies":false,"type":"","demo":"messaging\/create-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"messageId":{"type":"string","description":"Message ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[MESSAGE_ID]"},"subject":{"type":"string","description":"Email Subject.","default":null,"x-example":"[SUBJECT]"},"content":{"type":"string","description":"Email Content.","default":null,"x-example":"[CONTENT]"},"topics":{"type":"array","description":"List of Topic IDs.","default":[],"x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","default":[],"x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","default":[],"x-example":null,"items":{"type":"string"}},"cc":{"type":"array","description":"Array of target IDs to be added as CC.","default":[],"x-example":null,"items":{"type":"string"}},"bcc":{"type":"array","description":"Array of target IDs to be added as BCC.","default":[],"x-example":null,"items":{"type":"string"}},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","default":"draft","x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":"MessageStatus","x-enum-keys":[]},"html":{"type":"boolean","description":"Is content of type HTML","default":false,"x-example":false},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","default":null,"x-example":null}},"required":["messageId","subject","content"]}}]}},"\/messaging\/messages\/email\/{messageId}":{"patch":{"summary":"Update an email.","operationId":"messagingUpdateEmail","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Message","schema":{"$ref":"#\/definitions\/message"}}},"x-appwrite":{"method":"updateEmail","weight":367,"cookies":false,"type":"","demo":"messaging\/update-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"type":"string","x-example":"[MESSAGE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"topics":{"type":"array","description":"List of Topic IDs.","default":null,"x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","default":null,"x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","default":null,"x-example":null,"items":{"type":"string"}},"subject":{"type":"string","description":"Email Subject.","default":null,"x-example":"[SUBJECT]"},"content":{"type":"string","description":"Email Content.","default":null,"x-example":"[CONTENT]"},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","default":null,"x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":"MessageStatus","x-enum-keys":[]},"html":{"type":"boolean","description":"Is content of type HTML","default":null,"x-example":false},"cc":{"type":"array","description":"Array of target IDs to be added as CC.","default":null,"x-example":null,"items":{"type":"string"}},"bcc":{"type":"array","description":"Array of target IDs to be added as BCC.","default":null,"x-example":null,"items":{"type":"string"}},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","default":null,"x-example":null}}}}]}},"\/messaging\/messages\/push":{"post":{"summary":"Create a push notification.","operationId":"messagingCreatePush","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Message","schema":{"$ref":"#\/definitions\/message"}}},"x-appwrite":{"method":"createPush","weight":362,"cookies":false,"type":"","demo":"messaging\/create-push.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-push-notification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"messageId":{"type":"string","description":"Message ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[MESSAGE_ID]"},"title":{"type":"string","description":"Title for push notification.","default":null,"x-example":"[TITLE]"},"body":{"type":"string","description":"Body for push notification.","default":null,"x-example":"[BODY]"},"topics":{"type":"array","description":"List of Topic IDs.","default":[],"x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","default":[],"x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","default":[],"x-example":null,"items":{"type":"string"}},"data":{"type":"object","description":"Additional Data for push notification.","default":{},"x-example":"{}"},"action":{"type":"string","description":"Action for push notification.","default":"","x-example":"[ACTION]"},"icon":{"type":"string","description":"Icon for push notification. Available only for Android and Web Platform.","default":"","x-example":"[ICON]"},"sound":{"type":"string","description":"Sound for push notification. Available only for Android and IOS Platform.","default":"","x-example":"[SOUND]"},"color":{"type":"string","description":"Color for push notification. Available only for Android Platform.","default":"","x-example":"[COLOR]"},"tag":{"type":"string","description":"Tag for push notification. Available only for Android Platform.","default":"","x-example":"[TAG]"},"badge":{"type":"string","description":"Badge for push notification. Available only for IOS Platform.","default":"","x-example":"[BADGE]"},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","default":"draft","x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":"MessageStatus","x-enum-keys":[]},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","default":null,"x-example":null}},"required":["messageId","title","body"]}}]}},"\/messaging\/messages\/push\/{messageId}":{"patch":{"summary":"Update a push notification.","operationId":"messagingUpdatePush","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Message","schema":{"$ref":"#\/definitions\/message"}}},"x-appwrite":{"method":"updatePush","weight":369,"cookies":false,"type":"","demo":"messaging\/update-push.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-push-notification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"type":"string","x-example":"[MESSAGE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"topics":{"type":"array","description":"List of Topic IDs.","default":null,"x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","default":null,"x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","default":null,"x-example":null,"items":{"type":"string"}},"title":{"type":"string","description":"Title for push notification.","default":null,"x-example":"[TITLE]"},"body":{"type":"string","description":"Body for push notification.","default":null,"x-example":"[BODY]"},"data":{"type":"object","description":"Additional Data for push notification.","default":{},"x-example":"{}"},"action":{"type":"string","description":"Action for push notification.","default":null,"x-example":"[ACTION]"},"icon":{"type":"string","description":"Icon for push notification. Available only for Android and Web platforms.","default":null,"x-example":"[ICON]"},"sound":{"type":"string","description":"Sound for push notification. Available only for Android and iOS platforms.","default":null,"x-example":"[SOUND]"},"color":{"type":"string","description":"Color for push notification. Available only for Android platforms.","default":null,"x-example":"[COLOR]"},"tag":{"type":"string","description":"Tag for push notification. Available only for Android platforms.","default":null,"x-example":"[TAG]"},"badge":{"type":"integer","description":"Badge for push notification. Available only for iOS platforms.","default":null,"x-example":null},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","default":null,"x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":"MessageStatus","x-enum-keys":[]},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","default":null,"x-example":null}}}}]}},"\/messaging\/messages\/sms":{"post":{"summary":"Create an SMS.","operationId":"messagingCreateSMS","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Message","schema":{"$ref":"#\/definitions\/message"}}},"x-appwrite":{"method":"createSMS","weight":361,"cookies":false,"type":"","demo":"messaging\/create-s-m-s.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-sms.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"messageId":{"type":"string","description":"Message ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[MESSAGE_ID]"},"content":{"type":"string","description":"SMS Content.","default":null,"x-example":"[CONTENT]"},"topics":{"type":"array","description":"List of Topic IDs.","default":[],"x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","default":[],"x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","default":[],"x-example":null,"items":{"type":"string"}},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","default":"draft","x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":"MessageStatus","x-enum-keys":[]},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","default":null,"x-example":null}},"required":["messageId","content"]}}]}},"\/messaging\/messages\/sms\/{messageId}":{"patch":{"summary":"Update an SMS.","operationId":"messagingUpdateSMS","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Message","schema":{"$ref":"#\/definitions\/message"}}},"x-appwrite":{"method":"updateSMS","weight":368,"cookies":false,"type":"","demo":"messaging\/update-s-m-s.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"type":"string","x-example":"[MESSAGE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"topics":{"type":"array","description":"List of Topic IDs.","default":null,"x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","default":null,"x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","default":null,"x-example":null,"items":{"type":"string"}},"content":{"type":"string","description":"Email Content.","default":null,"x-example":"[CONTENT]"},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","default":null,"x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":"MessageStatus","x-enum-keys":[]},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","default":null,"x-example":null}}}}]}},"\/messaging\/messages\/{messageId}":{"get":{"summary":"Get a message","operationId":"messagingGetMessage","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Message","schema":{"$ref":"#\/definitions\/message"}}},"x-appwrite":{"method":"getMessage","weight":366,"cookies":false,"type":"","demo":"messaging\/get-message.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/get-message.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"type":"string","x-example":"[MESSAGE_ID]","in":"path"}]},"delete":{"summary":"Delete a message","operationId":"messagingDelete","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":370,"cookies":false,"type":"","demo":"messaging\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-message.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"type":"string","x-example":"[MESSAGE_ID]","in":"path"}]}},"\/messaging\/messages\/{messageId}\/logs":{"get":{"summary":"List message logs","operationId":"messagingListMessageLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listMessageLogs","weight":364,"cookies":false,"type":"","demo":"messaging\/list-message-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/messages\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"type":"string","x-example":"[MESSAGE_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/messaging\/messages\/{messageId}\/targets":{"get":{"summary":"List message targets","operationId":"messagingListTargets","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"List the targets associated with a message as set via the targets attribute.","responses":{"200":{"description":"Target list","schema":{"$ref":"#\/definitions\/targetList"}}},"x-appwrite":{"method":"listTargets","weight":365,"cookies":false,"type":"","demo":"messaging\/list-targets.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-message-targets.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"type":"string","x-example":"[MESSAGE_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, providerId, identifier, providerType","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/messaging\/providers":{"get":{"summary":"List providers","operationId":"messagingListProviders","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider list","schema":{"$ref":"#\/definitions\/providerList"}}},"x-appwrite":{"method":"listProviders","weight":335,"cookies":false,"type":"","demo":"messaging\/list-providers.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-providers.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, provider, type, enabled","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]}},"\/messaging\/providers\/apns":{"post":{"summary":"Create APNS provider","operationId":"messagingCreateAPNSProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createAPNSProvider","weight":334,"cookies":false,"type":"","demo":"messaging\/create-a-p-n-s-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-apns-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"authKey":{"type":"string","description":"APNS authentication key.","default":"","x-example":"[AUTH_KEY]"},"authKeyId":{"type":"string","description":"APNS authentication key ID.","default":"","x-example":"[AUTH_KEY_ID]"},"teamId":{"type":"string","description":"APNS team ID.","default":"","x-example":"[TEAM_ID]"},"bundleId":{"type":"string","description":"APNS bundle ID.","default":"","x-example":"[BUNDLE_ID]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name"]}}]}},"\/messaging\/providers\/apns\/{providerId}":{"patch":{"summary":"Update APNS provider","operationId":"messagingUpdateAPNSProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateAPNSProvider","weight":347,"cookies":false,"type":"","demo":"messaging\/update-a-p-n-s-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-apns-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"authKey":{"type":"string","description":"APNS authentication key.","default":"","x-example":"[AUTH_KEY]"},"authKeyId":{"type":"string","description":"APNS authentication key ID.","default":"","x-example":"[AUTH_KEY_ID]"},"teamId":{"type":"string","description":"APNS team ID.","default":"","x-example":"[TEAM_ID]"},"bundleId":{"type":"string","description":"APNS bundle ID.","default":"","x-example":"[BUNDLE_ID]"}}}}]}},"\/messaging\/providers\/fcm":{"post":{"summary":"Create FCM provider","operationId":"messagingCreateFCMProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createFCMProvider","weight":333,"cookies":false,"type":"","demo":"messaging\/create-f-c-m-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-fcm-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"serviceAccountJSON":{"type":"object","description":"FCM service account JSON.","default":{},"x-example":"{}"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name"]}}]}},"\/messaging\/providers\/fcm\/{providerId}":{"patch":{"summary":"Update FCM provider","operationId":"messagingUpdateFCMProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateFCMProvider","weight":346,"cookies":false,"type":"","demo":"messaging\/update-f-c-m-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-fcm-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"serviceAccountJSON":{"type":"object","description":"FCM service account JSON.","default":{},"x-example":"{}"}}}}]}},"\/messaging\/providers\/mailgun":{"post":{"summary":"Create Mailgun provider","operationId":"messagingCreateMailgunProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createMailgunProvider","weight":325,"cookies":false,"type":"","demo":"messaging\/create-mailgun-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-mailgun-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"apiKey":{"type":"string","description":"Mailgun API Key.","default":"","x-example":"[API_KEY]"},"domain":{"type":"string","description":"Mailgun Domain.","default":"","x-example":"[DOMAIN]"},"isEuRegion":{"type":"boolean","description":"Set as EU region.","default":null,"x-example":false},"fromName":{"type":"string","description":"Sender Name.","default":"","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","default":"","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the reply to field for the mail. Default value is sender name. Reply to name must have reply to email as well.","default":"","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the reply to field for the mail. Default value is sender email. Reply to email must have reply to name as well.","default":"","x-example":"email@example.com"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name"]}}]}},"\/messaging\/providers\/mailgun\/{providerId}":{"patch":{"summary":"Update Mailgun provider","operationId":"messagingUpdateMailgunProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateMailgunProvider","weight":338,"cookies":false,"type":"","demo":"messaging\/update-mailgun-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-mailgun-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"apiKey":{"type":"string","description":"Mailgun API Key.","default":"","x-example":"[API_KEY]"},"domain":{"type":"string","description":"Mailgun Domain.","default":"","x-example":"[DOMAIN]"},"isEuRegion":{"type":"boolean","description":"Set as EU region.","default":null,"x-example":false},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"fromName":{"type":"string","description":"Sender Name.","default":"","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","default":"","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the reply to field for the mail. Default value is sender name.","default":"","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the reply to field for the mail. Default value is sender email.","default":"","x-example":"[REPLY_TO_EMAIL]"}}}}]}},"\/messaging\/providers\/msg91":{"post":{"summary":"Create Msg91 provider","operationId":"messagingCreateMsg91Provider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createMsg91Provider","weight":328,"cookies":false,"type":"","demo":"messaging\/create-msg91provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-msg91-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":"","x-example":"+12065550100"},"senderId":{"type":"string","description":"Msg91 Sender ID.","default":"","x-example":"[SENDER_ID]"},"authKey":{"type":"string","description":"Msg91 Auth Key.","default":"","x-example":"[AUTH_KEY]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name"]}}]}},"\/messaging\/providers\/msg91\/{providerId}":{"patch":{"summary":"Update Msg91 provider","operationId":"messagingUpdateMsg91Provider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateMsg91Provider","weight":341,"cookies":false,"type":"","demo":"messaging\/update-msg91provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-msg91-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"senderId":{"type":"string","description":"Msg91 Sender ID.","default":"","x-example":"[SENDER_ID]"},"authKey":{"type":"string","description":"Msg91 Auth Key.","default":"","x-example":"[AUTH_KEY]"},"from":{"type":"string","description":"Sender number.","default":"","x-example":"[FROM]"}}}}]}},"\/messaging\/providers\/sendgrid":{"post":{"summary":"Create Sendgrid provider","operationId":"messagingCreateSendgridProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createSendgridProvider","weight":326,"cookies":false,"type":"","demo":"messaging\/create-sendgrid-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-sengrid-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"apiKey":{"type":"string","description":"Sendgrid API key.","default":"","x-example":"[API_KEY]"},"fromName":{"type":"string","description":"Sender Name.","default":"","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","default":"","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the reply to field for the mail. Default value is sender name.","default":"","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the reply to field for the mail. Default value is sender email.","default":"","x-example":"email@example.com"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name"]}}]}},"\/messaging\/providers\/sendgrid\/{providerId}":{"patch":{"summary":"Update Sendgrid provider","operationId":"messagingUpdateSendgridProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateSendgridProvider","weight":339,"cookies":false,"type":"","demo":"messaging\/update-sendgrid-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-sendgrid-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"apiKey":{"type":"string","description":"Sendgrid API key.","default":"","x-example":"[API_KEY]"},"fromName":{"type":"string","description":"Sender Name.","default":"","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","default":"","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the Reply To field for the mail. Default value is Sender Name.","default":"","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the Reply To field for the mail. Default value is Sender Email.","default":"","x-example":"[REPLY_TO_EMAIL]"}}}}]}},"\/messaging\/providers\/smtp":{"post":{"summary":"Create SMTP provider","operationId":"messagingCreateSMTPProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createSMTPProvider","weight":327,"cookies":false,"type":"","demo":"messaging\/create-s-m-t-p-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-smtp-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"host":{"type":"string","description":"SMTP hosts. Either a single hostname or multiple semicolon-delimited hostnames. You can also specify a different port for each host by using this format: [hostname:port] (e.g. \"smtp1.example.com:25;smtp2.example.com\"). You can also specify encryption type, for example: (e.g. \"tls:\/\/smtp1.example.com:587;ssl:\/\/smtp2.example.com:465\"). Hosts will be tried in order.","default":null,"x-example":"[HOST]"},"port":{"type":"integer","description":"The default SMTP server port.","default":587,"x-example":1},"username":{"type":"string","description":"Authentication username.","default":"","x-example":"[USERNAME]"},"password":{"type":"string","description":"Authentication password.","default":"","x-example":"[PASSWORD]"},"encryption":{"type":"string","description":"Encryption type. Can be omitted, 'ssl', or 'tls'","default":"","x-example":"none","enum":["none","ssl","tls"],"x-enum-name":"SMTPEncryption","x-enum-keys":[]},"autoTLS":{"type":"boolean","description":"Enable SMTP AutoTLS feature.","default":true,"x-example":false},"mailer":{"type":"string","description":"The value to use for the X-Mailer header.","default":"","x-example":"[MAILER]"},"fromName":{"type":"string","description":"Sender Name.","default":"","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","default":"","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the reply to field for the mail. Default value is sender name.","default":"","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the reply to field for the mail. Default value is sender email.","default":"","x-example":"email@example.com"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name","host"]}}]}},"\/messaging\/providers\/smtp\/{providerId}":{"patch":{"summary":"Update SMTP provider","operationId":"messagingUpdateSMTPProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateSMTPProvider","weight":340,"cookies":false,"type":"","demo":"messaging\/update-s-m-t-p-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-smtp-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"host":{"type":"string","description":"SMTP hosts. Either a single hostname or multiple semicolon-delimited hostnames. You can also specify a different port for each host by using this format: [hostname:port] (e.g. \"smtp1.example.com:25;smtp2.example.com\"). You can also specify encryption type, for example: (e.g. \"tls:\/\/smtp1.example.com:587;ssl:\/\/smtp2.example.com:465\"). Hosts will be tried in order.","default":"","x-example":"[HOST]"},"port":{"type":"integer","description":"SMTP port.","default":null,"x-example":1},"username":{"type":"string","description":"Authentication username.","default":"","x-example":"[USERNAME]"},"password":{"type":"string","description":"Authentication password.","default":"","x-example":"[PASSWORD]"},"encryption":{"type":"string","description":"Encryption type. Can be 'ssl' or 'tls'","default":"","x-example":"none","enum":["none","ssl","tls"],"x-enum-name":"SMTPEncryption","x-enum-keys":[]},"autoTLS":{"type":"boolean","description":"Enable SMTP AutoTLS feature.","default":null,"x-example":false},"mailer":{"type":"string","description":"The value to use for the X-Mailer header.","default":"","x-example":"[MAILER]"},"fromName":{"type":"string","description":"Sender Name.","default":"","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","default":"","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the Reply To field for the mail. Default value is Sender Name.","default":"","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the Reply To field for the mail. Default value is Sender Email.","default":"","x-example":"[REPLY_TO_EMAIL]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}}}}]}},"\/messaging\/providers\/telesign":{"post":{"summary":"Create Telesign provider","operationId":"messagingCreateTelesignProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createTelesignProvider","weight":329,"cookies":false,"type":"","demo":"messaging\/create-telesign-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-telesign-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":"","x-example":"+12065550100"},"customerId":{"type":"string","description":"Telesign customer ID.","default":"","x-example":"[CUSTOMER_ID]"},"apiKey":{"type":"string","description":"Telesign API key.","default":"","x-example":"[API_KEY]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name"]}}]}},"\/messaging\/providers\/telesign\/{providerId}":{"patch":{"summary":"Update Telesign provider","operationId":"messagingUpdateTelesignProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateTelesignProvider","weight":342,"cookies":false,"type":"","demo":"messaging\/update-telesign-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-telesign-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"customerId":{"type":"string","description":"Telesign customer ID.","default":"","x-example":"[CUSTOMER_ID]"},"apiKey":{"type":"string","description":"Telesign API key.","default":"","x-example":"[API_KEY]"},"from":{"type":"string","description":"Sender number.","default":"","x-example":"[FROM]"}}}}]}},"\/messaging\/providers\/textmagic":{"post":{"summary":"Create Textmagic provider","operationId":"messagingCreateTextmagicProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createTextmagicProvider","weight":330,"cookies":false,"type":"","demo":"messaging\/create-textmagic-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-textmagic-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":"","x-example":"+12065550100"},"username":{"type":"string","description":"Textmagic username.","default":"","x-example":"[USERNAME]"},"apiKey":{"type":"string","description":"Textmagic apiKey.","default":"","x-example":"[API_KEY]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name"]}}]}},"\/messaging\/providers\/textmagic\/{providerId}":{"patch":{"summary":"Update Textmagic provider","operationId":"messagingUpdateTextmagicProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateTextmagicProvider","weight":343,"cookies":false,"type":"","demo":"messaging\/update-textmagic-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-textmagic-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"username":{"type":"string","description":"Textmagic username.","default":"","x-example":"[USERNAME]"},"apiKey":{"type":"string","description":"Textmagic apiKey.","default":"","x-example":"[API_KEY]"},"from":{"type":"string","description":"Sender number.","default":"","x-example":"[FROM]"}}}}]}},"\/messaging\/providers\/twilio":{"post":{"summary":"Create Twilio provider","operationId":"messagingCreateTwilioProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createTwilioProvider","weight":331,"cookies":false,"type":"","demo":"messaging\/create-twilio-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-twilio-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":"","x-example":"+12065550100"},"accountSid":{"type":"string","description":"Twilio account secret ID.","default":"","x-example":"[ACCOUNT_SID]"},"authToken":{"type":"string","description":"Twilio authentication token.","default":"","x-example":"[AUTH_TOKEN]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name"]}}]}},"\/messaging\/providers\/twilio\/{providerId}":{"patch":{"summary":"Update Twilio provider","operationId":"messagingUpdateTwilioProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateTwilioProvider","weight":344,"cookies":false,"type":"","demo":"messaging\/update-twilio-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-twilio-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"accountSid":{"type":"string","description":"Twilio account secret ID.","default":"","x-example":"[ACCOUNT_SID]"},"authToken":{"type":"string","description":"Twilio authentication token.","default":"","x-example":"[AUTH_TOKEN]"},"from":{"type":"string","description":"Sender number.","default":"","x-example":"[FROM]"}}}}]}},"\/messaging\/providers\/vonage":{"post":{"summary":"Create Vonage provider","operationId":"messagingCreateVonageProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createVonageProvider","weight":332,"cookies":false,"type":"","demo":"messaging\/create-vonage-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-vonage-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":"","x-example":"+12065550100"},"apiKey":{"type":"string","description":"Vonage API key.","default":"","x-example":"[API_KEY]"},"apiSecret":{"type":"string","description":"Vonage API secret.","default":"","x-example":"[API_SECRET]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name"]}}]}},"\/messaging\/providers\/vonage\/{providerId}":{"patch":{"summary":"Update Vonage provider","operationId":"messagingUpdateVonageProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateVonageProvider","weight":345,"cookies":false,"type":"","demo":"messaging\/update-vonage-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-vonage-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"apiKey":{"type":"string","description":"Vonage API key.","default":"","x-example":"[API_KEY]"},"apiSecret":{"type":"string","description":"Vonage API secret.","default":"","x-example":"[API_SECRET]"},"from":{"type":"string","description":"Sender number.","default":"","x-example":"[FROM]"}}}}]}},"\/messaging\/providers\/{providerId}":{"get":{"summary":"Get provider","operationId":"messagingGetProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"getProvider","weight":337,"cookies":false,"type":"","demo":"messaging\/get-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/get-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"}]},"delete":{"summary":"Delete provider","operationId":"messagingDeleteProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteProvider","weight":348,"cookies":false,"type":"","demo":"messaging\/delete-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"}]}},"\/messaging\/providers\/{providerId}\/logs":{"get":{"summary":"List provider logs","operationId":"messagingListProviderLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listProviderLogs","weight":336,"cookies":false,"type":"","demo":"messaging\/list-provider-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/providers\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/messaging\/subscribers\/{subscriberId}\/logs":{"get":{"summary":"List subscriber logs","operationId":"messagingListSubscriberLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listSubscriberLogs","weight":357,"cookies":false,"type":"","demo":"messaging\/list-subscriber-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/subscribers\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"subscriberId","description":"Subscriber ID.","required":true,"type":"string","x-example":"[SUBSCRIBER_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/messaging\/topics":{"get":{"summary":"List topics.","operationId":"messagingListTopics","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Topic list","schema":{"$ref":"#\/definitions\/topicList"}}},"x-appwrite":{"method":"listTopics","weight":350,"cookies":false,"type":"","demo":"messaging\/list-topics.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-topics.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, description, emailTotal, smsTotal, pushTotal","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create a topic.","operationId":"messagingCreateTopic","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Topic","schema":{"$ref":"#\/definitions\/topic"}}},"x-appwrite":{"method":"createTopic","weight":349,"cookies":false,"type":"","demo":"messaging\/create-topic.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-topic.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"topicId":{"type":"string","description":"Topic ID. Choose a custom Topic ID or a new Topic ID.","default":null,"x-example":"[TOPIC_ID]"},"name":{"type":"string","description":"Topic Name.","default":null,"x-example":"[NAME]"},"subscribe":{"type":"array","description":"An array of role strings with subscribe permission. By default all users are granted with any subscribe permission. [learn more about roles](https:\/\/appwrite.io\/docs\/permissions#permission-roles). Maximum of 100 roles are allowed, each 64 characters long.","default":["users"],"x-example":"[\"any\"]","items":{"type":"string"}}},"required":["topicId","name"]}}]}},"\/messaging\/topics\/{topicId}":{"get":{"summary":"Get a topic.","operationId":"messagingGetTopic","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Topic","schema":{"$ref":"#\/definitions\/topic"}}},"x-appwrite":{"method":"getTopic","weight":352,"cookies":false,"type":"","demo":"messaging\/get-topic.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/get-topic.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID.","required":true,"type":"string","x-example":"[TOPIC_ID]","in":"path"}]},"patch":{"summary":"Update a topic.","operationId":"messagingUpdateTopic","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Topic","schema":{"$ref":"#\/definitions\/topic"}}},"x-appwrite":{"method":"updateTopic","weight":353,"cookies":false,"type":"","demo":"messaging\/update-topic.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-topic.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID.","required":true,"type":"string","x-example":"[TOPIC_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Topic Name.","default":"","x-example":"[NAME]"}}}}]},"delete":{"summary":"Delete a topic.","operationId":"messagingDeleteTopic","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteTopic","weight":354,"cookies":false,"type":"","demo":"messaging\/delete-topic.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-topic.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID.","required":true,"type":"string","x-example":"[TOPIC_ID]","in":"path"}]}},"\/messaging\/topics\/{topicId}\/logs":{"get":{"summary":"List topic logs","operationId":"messagingListTopicLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listTopicLogs","weight":351,"cookies":false,"type":"","demo":"messaging\/list-topic-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/topics\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID.","required":true,"type":"string","x-example":"[TOPIC_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/messaging\/topics\/{topicId}\/subscribers":{"get":{"summary":"List subscribers.","operationId":"messagingListSubscribers","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Subscriber list","schema":{"$ref":"#\/definitions\/subscriberList"}}},"x-appwrite":{"method":"listSubscribers","weight":356,"cookies":false,"type":"","demo":"messaging\/list-subscribers.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-subscribers.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID subscribed to.","required":true,"type":"string","x-example":"[TOPIC_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, provider, type, enabled","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create a subscriber.","operationId":"messagingCreateSubscriber","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Subscriber","schema":{"$ref":"#\/definitions\/subscriber"}}},"x-appwrite":{"method":"createSubscriber","weight":355,"cookies":false,"type":"","demo":"messaging\/create-subscriber.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-subscriber.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.write","platforms":["server","client","console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID to subscribe to.","required":true,"type":"string","x-example":"[TOPIC_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"subscriberId":{"type":"string","description":"Subscriber ID. Choose a custom Subscriber ID or a new Subscriber ID.","default":null,"x-example":"[SUBSCRIBER_ID]"},"targetId":{"type":"string","description":"Target ID. The target ID to link to the specified Topic ID.","default":null,"x-example":"[TARGET_ID]"}},"required":["subscriberId","targetId"]}}]}},"\/messaging\/topics\/{topicId}\/subscribers\/{subscriberId}":{"get":{"summary":"Get a subscriber.","operationId":"messagingGetSubscriber","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Subscriber","schema":{"$ref":"#\/definitions\/subscriber"}}},"x-appwrite":{"method":"getSubscriber","weight":358,"cookies":false,"type":"","demo":"messaging\/get-subscriber.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/get-subscriber.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID subscribed to.","required":true,"type":"string","x-example":"[TOPIC_ID]","in":"path"},{"name":"subscriberId","description":"Subscriber ID.","required":true,"type":"string","x-example":"[SUBSCRIBER_ID]","in":"path"}]},"delete":{"summary":"Delete a subscriber.","operationId":"messagingDeleteSubscriber","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSubscriber","weight":359,"cookies":false,"type":"","demo":"messaging\/delete-subscriber.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-subscriber.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.write","platforms":["server","client","console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID subscribed to.","required":true,"type":"string","x-example":"[TOPIC_ID]","in":"path"},{"name":"subscriberId","description":"Subscriber ID.","required":true,"type":"string","x-example":"[SUBSCRIBER_ID]","in":"path"}]}},"\/migrations":{"get":{"summary":"List Migrations","operationId":"migrationsList","consumes":["application\/json"],"produces":["application\/json"],"tags":["migrations"],"description":"","responses":{"200":{"description":"Migrations List","schema":{"$ref":"#\/definitions\/migrationList"}}},"x-appwrite":{"method":"list","weight":312,"cookies":false,"type":"","demo":"migrations\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/list-migrations.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: status, stage, source, resources, statusCounters, resourceData, errors","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]}},"\/migrations\/appwrite":{"post":{"summary":"Migrate Appwrite Data","operationId":"migrationsCreateAppwriteMigration","consumes":["application\/json"],"produces":["application\/json"],"tags":["migrations"],"description":"","responses":{"202":{"description":"Migration","schema":{"$ref":"#\/definitions\/migration"}}},"x-appwrite":{"method":"createAppwriteMigration","weight":307,"cookies":false,"type":"","demo":"migrations\/create-appwrite-migration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-appwrite.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"resources":{"type":"array","description":"List of resources to migrate","default":null,"x-example":null,"items":{"type":"string"}},"endpoint":{"type":"string","description":"Source's Appwrite Endpoint","default":null,"x-example":"https:\/\/example.com"},"projectId":{"type":"string","description":"Source's Project ID","default":null,"x-example":"[PROJECT_ID]"},"apiKey":{"type":"string","description":"Source's API Key","default":null,"x-example":"[API_KEY]"}},"required":["resources","endpoint","projectId","apiKey"]}}]}},"\/migrations\/appwrite\/report":{"get":{"summary":"Generate a report on Appwrite Data","operationId":"migrationsGetAppwriteReport","consumes":["application\/json"],"produces":["application\/json"],"tags":["migrations"],"description":"","responses":{"200":{"description":"Migration Report","schema":{"$ref":"#\/definitions\/migrationReport"}}},"x-appwrite":{"method":"getAppwriteReport","weight":314,"cookies":false,"type":"","demo":"migrations\/get-appwrite-report.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-appwrite-report.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"resources","description":"List of resources to migrate","required":true,"type":"array","collectionFormat":"multi","items":{"type":"string"},"in":"query"},{"name":"endpoint","description":"Source's Appwrite Endpoint","required":true,"type":"string","format":"url","x-example":"https:\/\/example.com","in":"query"},{"name":"projectID","description":"Source's Project ID","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"query"},{"name":"key","description":"Source's API Key","required":true,"type":"string","x-example":"[KEY]","in":"query"}]}},"\/migrations\/firebase":{"post":{"summary":"Migrate Firebase Data (Service Account)","operationId":"migrationsCreateFirebaseMigration","consumes":["application\/json"],"produces":["application\/json"],"tags":["migrations"],"description":"","responses":{"202":{"description":"Migration","schema":{"$ref":"#\/definitions\/migration"}}},"x-appwrite":{"method":"createFirebaseMigration","weight":309,"cookies":false,"type":"","demo":"migrations\/create-firebase-migration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-firebase.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"resources":{"type":"array","description":"List of resources to migrate","default":null,"x-example":null,"items":{"type":"string"}},"serviceAccount":{"type":"string","description":"JSON of the Firebase service account credentials","default":null,"x-example":"[SERVICE_ACCOUNT]"}},"required":["resources","serviceAccount"]}}]}},"\/migrations\/firebase\/deauthorize":{"get":{"summary":"Revoke Appwrite's authorization to access Firebase Projects","operationId":"migrationsDeleteFirebaseAuth","consumes":["application\/json"],"produces":["application\/json"],"tags":["migrations"],"description":"","responses":{"200":{"description":"File","schema":{"type":"file"}}},"x-appwrite":{"method":"deleteFirebaseAuth","weight":320,"cookies":false,"type":"","demo":"migrations\/delete-firebase-auth.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/migrations\/firebase\/oauth":{"post":{"summary":"Migrate Firebase Data (OAuth)","operationId":"migrationsCreateFirebaseOAuthMigration","consumes":["application\/json"],"produces":["application\/json"],"tags":["migrations"],"description":"","responses":{"202":{"description":"Migration","schema":{"$ref":"#\/definitions\/migration"}}},"x-appwrite":{"method":"createFirebaseOAuthMigration","weight":308,"cookies":false,"type":"","demo":"migrations\/create-firebase-o-auth-migration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-firebase.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"resources":{"type":"array","description":"List of resources to migrate","default":null,"x-example":null,"items":{"type":"string"}},"projectId":{"type":"string","description":"Project ID of the Firebase Project","default":null,"x-example":"[PROJECT_ID]"}},"required":["resources","projectId"]}}]}},"\/migrations\/firebase\/projects":{"get":{"summary":"List Firebase Projects","operationId":"migrationsListFirebaseProjects","consumes":["application\/json"],"produces":["application\/json"],"tags":["migrations"],"description":"","responses":{"200":{"description":"Migrations Firebase Projects List","schema":{"$ref":"#\/definitions\/firebaseProjectList"}}},"x-appwrite":{"method":"listFirebaseProjects","weight":319,"cookies":false,"type":"","demo":"migrations\/list-firebase-projects.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/migrations\/firebase\/report":{"get":{"summary":"Generate a report on Firebase Data","operationId":"migrationsGetFirebaseReport","consumes":["application\/json"],"produces":["application\/json"],"tags":["migrations"],"description":"","responses":{"200":{"description":"Migration Report","schema":{"$ref":"#\/definitions\/migrationReport"}}},"x-appwrite":{"method":"getFirebaseReport","weight":315,"cookies":false,"type":"","demo":"migrations\/get-firebase-report.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-firebase-report.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"resources","description":"List of resources to migrate","required":true,"type":"array","collectionFormat":"multi","items":{"type":"string"},"in":"query"},{"name":"serviceAccount","description":"JSON of the Firebase service account credentials","required":true,"type":"string","x-example":"[SERVICE_ACCOUNT]","in":"query"}]}},"\/migrations\/firebase\/report\/oauth":{"get":{"summary":"Generate a report on Firebase Data using OAuth","operationId":"migrationsGetFirebaseReportOAuth","consumes":["application\/json"],"produces":["application\/json"],"tags":["migrations"],"description":"","responses":{"200":{"description":"Migration Report","schema":{"$ref":"#\/definitions\/migrationReport"}}},"x-appwrite":{"method":"getFirebaseReportOAuth","weight":316,"cookies":false,"type":"","demo":"migrations\/get-firebase-report-o-auth.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-firebase-report.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"resources","description":"List of resources to migrate","required":true,"type":"array","collectionFormat":"multi","items":{"type":"string"},"in":"query"},{"name":"projectId","description":"Project ID","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"query"}]}},"\/migrations\/nhost":{"post":{"summary":"Migrate NHost Data","operationId":"migrationsCreateNHostMigration","consumes":["application\/json"],"produces":["application\/json"],"tags":["migrations"],"description":"","responses":{"202":{"description":"Migration","schema":{"$ref":"#\/definitions\/migration"}}},"x-appwrite":{"method":"createNHostMigration","weight":311,"cookies":false,"type":"","demo":"migrations\/create-n-host-migration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-nhost.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"resources":{"type":"array","description":"List of resources to migrate","default":null,"x-example":null,"items":{"type":"string"}},"subdomain":{"type":"string","description":"Source's Subdomain","default":null,"x-example":"[SUBDOMAIN]"},"region":{"type":"string","description":"Source's Region","default":null,"x-example":"[REGION]"},"adminSecret":{"type":"string","description":"Source's Admin Secret","default":null,"x-example":"[ADMIN_SECRET]"},"database":{"type":"string","description":"Source's Database Name","default":null,"x-example":"[DATABASE]"},"username":{"type":"string","description":"Source's Database Username","default":null,"x-example":"[USERNAME]"},"password":{"type":"string","description":"Source's Database Password","default":null,"x-example":"[PASSWORD]"},"port":{"type":"integer","description":"Source's Database Port","default":5432,"x-example":null}},"required":["resources","subdomain","region","adminSecret","database","username","password"]}}]}},"\/migrations\/nhost\/report":{"get":{"summary":"Generate a report on NHost Data","operationId":"migrationsGetNHostReport","consumes":["application\/json"],"produces":["application\/json"],"tags":["migrations"],"description":"","responses":{"200":{"description":"Migration Report","schema":{"$ref":"#\/definitions\/migrationReport"}}},"x-appwrite":{"method":"getNHostReport","weight":322,"cookies":false,"type":"","demo":"migrations\/get-n-host-report.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-nhost-report.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"resources","description":"List of resources to migrate.","required":true,"type":"array","collectionFormat":"multi","items":{"type":"string"},"in":"query"},{"name":"subdomain","description":"Source's Subdomain.","required":true,"type":"string","x-example":"[SUBDOMAIN]","in":"query"},{"name":"region","description":"Source's Region.","required":true,"type":"string","x-example":"[REGION]","in":"query"},{"name":"adminSecret","description":"Source's Admin Secret.","required":true,"type":"string","x-example":"[ADMIN_SECRET]","in":"query"},{"name":"database","description":"Source's Database Name.","required":true,"type":"string","x-example":"[DATABASE]","in":"query"},{"name":"username","description":"Source's Database Username.","required":true,"type":"string","x-example":"[USERNAME]","in":"query"},{"name":"password","description":"Source's Database Password.","required":true,"type":"string","x-example":"[PASSWORD]","in":"query"},{"name":"port","description":"Source's Database Port.","required":false,"type":"integer","format":"int32","default":5432,"in":"query"}]}},"\/migrations\/supabase":{"post":{"summary":"Migrate Supabase Data","operationId":"migrationsCreateSupabaseMigration","consumes":["application\/json"],"produces":["application\/json"],"tags":["migrations"],"description":"","responses":{"202":{"description":"Migration","schema":{"$ref":"#\/definitions\/migration"}}},"x-appwrite":{"method":"createSupabaseMigration","weight":310,"cookies":false,"type":"","demo":"migrations\/create-supabase-migration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-supabase.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"resources":{"type":"array","description":"List of resources to migrate","default":null,"x-example":null,"items":{"type":"string"}},"endpoint":{"type":"string","description":"Source's Supabase Endpoint","default":null,"x-example":"https:\/\/example.com"},"apiKey":{"type":"string","description":"Source's API Key","default":null,"x-example":"[API_KEY]"},"databaseHost":{"type":"string","description":"Source's Database Host","default":null,"x-example":"[DATABASE_HOST]"},"username":{"type":"string","description":"Source's Database Username","default":null,"x-example":"[USERNAME]"},"password":{"type":"string","description":"Source's Database Password","default":null,"x-example":"[PASSWORD]"},"port":{"type":"integer","description":"Source's Database Port","default":5432,"x-example":null}},"required":["resources","endpoint","apiKey","databaseHost","username","password"]}}]}},"\/migrations\/supabase\/report":{"get":{"summary":"Generate a report on Supabase Data","operationId":"migrationsGetSupabaseReport","consumes":["application\/json"],"produces":["application\/json"],"tags":["migrations"],"description":"","responses":{"200":{"description":"Migration Report","schema":{"$ref":"#\/definitions\/migrationReport"}}},"x-appwrite":{"method":"getSupabaseReport","weight":321,"cookies":false,"type":"","demo":"migrations\/get-supabase-report.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-supabase-report.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"resources","description":"List of resources to migrate","required":true,"type":"array","collectionFormat":"multi","items":{"type":"string"},"in":"query"},{"name":"endpoint","description":"Source's Supabase Endpoint.","required":true,"type":"string","format":"url","x-example":"https:\/\/example.com","in":"query"},{"name":"apiKey","description":"Source's API Key.","required":true,"type":"string","x-example":"[API_KEY]","in":"query"},{"name":"databaseHost","description":"Source's Database Host.","required":true,"type":"string","x-example":"[DATABASE_HOST]","in":"query"},{"name":"username","description":"Source's Database Username.","required":true,"type":"string","x-example":"[USERNAME]","in":"query"},{"name":"password","description":"Source's Database Password.","required":true,"type":"string","x-example":"[PASSWORD]","in":"query"},{"name":"port","description":"Source's Database Port.","required":false,"type":"integer","format":"int32","default":5432,"in":"query"}]}},"\/migrations\/{migrationId}":{"get":{"summary":"Get Migration","operationId":"migrationsGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["migrations"],"description":"","responses":{"200":{"description":"Migration","schema":{"$ref":"#\/definitions\/migration"}}},"x-appwrite":{"method":"get","weight":313,"cookies":false,"type":"","demo":"migrations\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/get-migration.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"migrationId","description":"Migration unique ID.","required":true,"type":"string","x-example":"[MIGRATION_ID]","in":"path"}]},"patch":{"summary":"Retry Migration","operationId":"migrationsRetry","consumes":["application\/json"],"produces":["application\/json"],"tags":["migrations"],"description":"","responses":{"202":{"description":"Migration","schema":{"$ref":"#\/definitions\/migration"}}},"x-appwrite":{"method":"retry","weight":323,"cookies":false,"type":"","demo":"migrations\/retry.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/retry-migration.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"migrationId","description":"Migration unique ID.","required":true,"type":"string","x-example":"[MIGRATION_ID]","in":"path"}]},"delete":{"summary":"Delete Migration","operationId":"migrationsDelete","consumes":["application\/json"],"produces":[],"tags":["migrations"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":324,"cookies":false,"type":"","demo":"migrations\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-migration.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"migrations.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"migrationId","description":"Migration ID.","required":true,"type":"string","x-example":"[MIGRATION_ID]","in":"path"}]}},"\/project\/usage":{"get":{"summary":"Get usage stats for a project","operationId":"projectGetUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["project"],"description":"","responses":{"200":{"description":"UsageProject","schema":{"$ref":"#\/definitions\/usageProject"}}},"x-appwrite":{"method":"getUsage","weight":181,"cookies":false,"type":"","demo":"project\/get-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"startDate","description":"Starting date for the usage","required":true,"type":"string","in":"query"},{"name":"endDate","description":"End date for the usage","required":true,"type":"string","in":"query"},{"name":"period","description":"Period used","required":false,"type":"string","x-example":"1h","enum":["1h","1d"],"x-enum-name":"ProjectUsageRange","x-enum-keys":["One Hour","One Day"],"default":"1d","in":"query"}]}},"\/project\/variables":{"get":{"summary":"List Variables","operationId":"projectListVariables","consumes":["application\/json"],"produces":["application\/json"],"tags":["project"],"description":"Get a list of all project variables. These variables will be accessible in all Appwrite Functions at runtime.","responses":{"200":{"description":"Variables List","schema":{"$ref":"#\/definitions\/variableList"}}},"x-appwrite":{"method":"listVariables","weight":183,"cookies":false,"type":"","demo":"project\/list-variables.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/project\/list-variables.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]},"post":{"summary":"Create Variable","operationId":"projectCreateVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["project"],"description":"Create a new project variable. This variable will be accessible in all Appwrite Functions at runtime.","responses":{"201":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"createVariable","weight":182,"cookies":false,"type":"","demo":"project\/create-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/project\/create-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","default":null,"x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","default":null,"x-example":"[VALUE]"}},"required":["key","value"]}}]}},"\/project\/variables\/{variableId}":{"get":{"summary":"Get Variable","operationId":"projectGetVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["project"],"description":"Get a project variable by its unique ID.","responses":{"200":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"getVariable","weight":184,"cookies":false,"type":"","demo":"project\/get-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/project\/get-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"}]},"put":{"summary":"Update Variable","operationId":"projectUpdateVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["project"],"description":"Update project variable by its unique ID. This variable will be accessible in all Appwrite Functions at runtime.","responses":{"200":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"updateVariable","weight":185,"cookies":false,"type":"","demo":"project\/update-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/project\/update-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","default":null,"x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","default":null,"x-example":"[VALUE]"}},"required":["key"]}}]},"delete":{"summary":"Delete Variable","operationId":"projectDeleteVariable","consumes":["application\/json"],"produces":[],"tags":["project"],"description":"Delete a project variable by its unique ID. ","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteVariable","weight":186,"cookies":false,"type":"","demo":"project\/delete-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/project\/delete-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"}]}},"\/projects":{"get":{"summary":"List projects","operationId":"projectsList","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Projects List","schema":{"$ref":"#\/definitions\/projectList"}}},"x-appwrite":{"method":"list","weight":142,"cookies":false,"type":"","demo":"projects\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, teamId","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create project","operationId":"projectsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"201":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"create","weight":141,"cookies":false,"type":"","demo":"projects\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"projectId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, and hyphen. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":null},"name":{"type":"string","description":"Project name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"teamId":{"type":"string","description":"Team unique ID.","default":null,"x-example":"[TEAM_ID]"},"region":{"type":"string","description":"Project Region.","default":"default","x-example":"default","enum":["default","fra"],"x-enum-name":null,"x-enum-keys":[]},"description":{"type":"string","description":"Project description. Max length: 256 chars.","default":"","x-example":"[DESCRIPTION]"},"logo":{"type":"string","description":"Project logo.","default":"","x-example":"[LOGO]"},"url":{"type":"string","description":"Project URL.","default":"","x-example":"https:\/\/example.com"},"legalName":{"type":"string","description":"Project legal Name. Max length: 256 chars.","default":"","x-example":"[LEGAL_NAME]"},"legalCountry":{"type":"string","description":"Project legal Country. Max length: 256 chars.","default":"","x-example":"[LEGAL_COUNTRY]"},"legalState":{"type":"string","description":"Project legal State. Max length: 256 chars.","default":"","x-example":"[LEGAL_STATE]"},"legalCity":{"type":"string","description":"Project legal City. Max length: 256 chars.","default":"","x-example":"[LEGAL_CITY]"},"legalAddress":{"type":"string","description":"Project legal Address. Max length: 256 chars.","default":"","x-example":"[LEGAL_ADDRESS]"},"legalTaxId":{"type":"string","description":"Project legal Tax ID. Max length: 256 chars.","default":"","x-example":"[LEGAL_TAX_ID]"}},"required":["projectId","name","teamId"]}}]}},"\/projects\/{projectId}":{"get":{"summary":"Get project","operationId":"projectsGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"get","weight":143,"cookies":false,"type":"","demo":"projects\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"}]},"patch":{"summary":"Update project","operationId":"projectsUpdate","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"update","weight":144,"cookies":false,"type":"","demo":"projects\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Project name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"description":{"type":"string","description":"Project description. Max length: 256 chars.","default":"","x-example":"[DESCRIPTION]"},"logo":{"type":"string","description":"Project logo.","default":"","x-example":"[LOGO]"},"url":{"type":"string","description":"Project URL.","default":"","x-example":"https:\/\/example.com"},"legalName":{"type":"string","description":"Project legal name. Max length: 256 chars.","default":"","x-example":"[LEGAL_NAME]"},"legalCountry":{"type":"string","description":"Project legal country. Max length: 256 chars.","default":"","x-example":"[LEGAL_COUNTRY]"},"legalState":{"type":"string","description":"Project legal state. Max length: 256 chars.","default":"","x-example":"[LEGAL_STATE]"},"legalCity":{"type":"string","description":"Project legal city. Max length: 256 chars.","default":"","x-example":"[LEGAL_CITY]"},"legalAddress":{"type":"string","description":"Project legal address. Max length: 256 chars.","default":"","x-example":"[LEGAL_ADDRESS]"},"legalTaxId":{"type":"string","description":"Project legal tax ID. Max length: 256 chars.","default":"","x-example":"[LEGAL_TAX_ID]"}},"required":["name"]}}]},"delete":{"summary":"Delete project","operationId":"projectsDelete","consumes":["application\/json"],"produces":[],"tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":156,"cookies":false,"type":"","demo":"projects\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"}]}},"\/projects\/{projectId}\/auth\/duration":{"patch":{"summary":"Update project authentication duration","operationId":"projectsUpdateAuthDuration","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateAuthDuration","weight":150,"cookies":false,"type":"","demo":"projects\/update-auth-duration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"duration":{"type":"integer","description":"Project session length in seconds. Max length: 31536000 seconds.","default":null,"x-example":0}},"required":["duration"]}}]}},"\/projects\/{projectId}\/auth\/limit":{"patch":{"summary":"Update project users limit","operationId":"projectsUpdateAuthLimit","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateAuthLimit","weight":149,"cookies":false,"type":"","demo":"projects\/update-auth-limit.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"limit":{"type":"integer","description":"Set the max number of users allowed in this project. Use 0 for unlimited.","default":null,"x-example":0}},"required":["limit"]}}]}},"\/projects\/{projectId}\/auth\/max-sessions":{"patch":{"summary":"Update project user sessions limit","operationId":"projectsUpdateAuthSessionsLimit","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateAuthSessionsLimit","weight":155,"cookies":false,"type":"","demo":"projects\/update-auth-sessions-limit.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"limit":{"type":"integer","description":"Set the max number of users allowed in this project. Value allowed is between 1-100. Default is 10","default":null,"x-example":1}},"required":["limit"]}}]}},"\/projects\/{projectId}\/auth\/password-dictionary":{"patch":{"summary":"Update authentication password dictionary status. Use this endpoint to enable or disable the dicitonary check for user password","operationId":"projectsUpdateAuthPasswordDictionary","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateAuthPasswordDictionary","weight":153,"cookies":false,"type":"","demo":"projects\/update-auth-password-dictionary.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Set whether or not to enable checking user's password against most commonly used passwords. Default is false.","default":null,"x-example":false}},"required":["enabled"]}}]}},"\/projects\/{projectId}\/auth\/password-history":{"patch":{"summary":"Update authentication password history. Use this endpoint to set the number of password history to save and 0 to disable password history.","operationId":"projectsUpdateAuthPasswordHistory","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateAuthPasswordHistory","weight":152,"cookies":false,"type":"","demo":"projects\/update-auth-password-history.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"limit":{"type":"integer","description":"Set the max number of passwords to store in user history. User can't choose a new password that is already stored in the password history list. Max number of passwords allowed in history is20. Default value is 0","default":null,"x-example":0}},"required":["limit"]}}]}},"\/projects\/{projectId}\/auth\/personal-data":{"patch":{"summary":"Enable or disable checking user passwords for similarity with their personal data.","operationId":"projectsUpdatePersonalDataCheck","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updatePersonalDataCheck","weight":154,"cookies":false,"type":"","demo":"projects\/update-personal-data-check.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Set whether or not to check a password for similarity with personal data. Default is false.","default":null,"x-example":false}},"required":["enabled"]}}]}},"\/projects\/{projectId}\/auth\/{method}":{"patch":{"summary":"Update project auth method status. Use this endpoint to enable or disable a given auth method for this project.","operationId":"projectsUpdateAuthStatus","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateAuthStatus","weight":151,"cookies":false,"type":"","demo":"projects\/update-auth-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"method","description":"Auth Method. Possible values: email-password,magic-url,email-otp,anonymous,invites,jwt,phone","required":true,"type":"string","x-example":"email-password","enum":["email-password","magic-url","email-otp","anonymous","invites","jwt","phone"],"x-enum-name":"AuthMethod","x-enum-keys":[],"in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"status":{"type":"boolean","description":"Set the status of this auth method.","default":null,"x-example":false}},"required":["status"]}}]}},"\/projects\/{projectId}\/keys":{"get":{"summary":"List keys","operationId":"projectsListKeys","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"API Keys List","schema":{"$ref":"#\/definitions\/keyList"}}},"x-appwrite":{"method":"listKeys","weight":164,"cookies":false,"type":"","demo":"projects\/list-keys.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"}]},"post":{"summary":"Create key","operationId":"projectsCreateKey","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"201":{"description":"Key","schema":{"$ref":"#\/definitions\/key"}}},"x-appwrite":{"method":"createKey","weight":163,"cookies":false,"type":"","demo":"projects\/create-key.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Key name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"scopes":{"type":"array","description":"Key scopes list. Maximum of 100 scopes are allowed.","default":null,"x-example":null,"items":{"type":"string"}},"expire":{"type":"string","description":"Expiration time in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. Use null for unlimited expiration.","default":null,"x-example":null}},"required":["name","scopes"]}}]}},"\/projects\/{projectId}\/keys\/{keyId}":{"get":{"summary":"Get key","operationId":"projectsGetKey","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Key","schema":{"$ref":"#\/definitions\/key"}}},"x-appwrite":{"method":"getKey","weight":165,"cookies":false,"type":"","demo":"projects\/get-key.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"keyId","description":"Key unique ID.","required":true,"type":"string","x-example":"[KEY_ID]","in":"path"}]},"put":{"summary":"Update key","operationId":"projectsUpdateKey","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Key","schema":{"$ref":"#\/definitions\/key"}}},"x-appwrite":{"method":"updateKey","weight":166,"cookies":false,"type":"","demo":"projects\/update-key.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"keyId","description":"Key unique ID.","required":true,"type":"string","x-example":"[KEY_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Key name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"scopes":{"type":"array","description":"Key scopes list. Maximum of 100 events are allowed.","default":null,"x-example":null,"items":{"type":"string"}},"expire":{"type":"string","description":"Expiration time in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. Use null for unlimited expiration.","default":null,"x-example":null}},"required":["name","scopes"]}}]},"delete":{"summary":"Delete key","operationId":"projectsDeleteKey","consumes":["application\/json"],"produces":[],"tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteKey","weight":167,"cookies":false,"type":"","demo":"projects\/delete-key.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"keyId","description":"Key unique ID.","required":true,"type":"string","x-example":"[KEY_ID]","in":"path"}]}},"\/projects\/{projectId}\/oauth2":{"patch":{"summary":"Update project OAuth2","operationId":"projectsUpdateOAuth2","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateOAuth2","weight":148,"cookies":false,"type":"","demo":"projects\/update-o-auth2.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"provider":{"type":"string","description":"Provider Name","default":null,"x-example":"amazon","enum":["amazon","apple","auth0","authentik","autodesk","bitbucket","bitly","box","dailymotion","discord","disqus","dropbox","etsy","facebook","github","gitlab","google","linkedin","microsoft","notion","oidc","okta","paypal","paypalSandbox","podio","salesforce","slack","spotify","stripe","tradeshift","tradeshiftBox","twitch","wordpress","yahoo","yammer","yandex","zoho","zoom","mock"],"x-enum-name":"OAuthProvider","x-enum-keys":[]},"appId":{"type":"string","description":"Provider app ID. Max length: 256 chars.","default":null,"x-example":"[APP_ID]"},"secret":{"type":"string","description":"Provider secret key. Max length: 512 chars.","default":null,"x-example":"[SECRET]"},"enabled":{"type":"boolean","description":"Provider status. Set to 'false' to disable new session creation.","default":null,"x-example":false}},"required":["provider"]}}]}},"\/projects\/{projectId}\/platforms":{"get":{"summary":"List platforms","operationId":"projectsListPlatforms","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Platforms List","schema":{"$ref":"#\/definitions\/platformList"}}},"x-appwrite":{"method":"listPlatforms","weight":169,"cookies":false,"type":"","demo":"projects\/list-platforms.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"}]},"post":{"summary":"Create platform","operationId":"projectsCreatePlatform","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"201":{"description":"Platform","schema":{"$ref":"#\/definitions\/platform"}}},"x-appwrite":{"method":"createPlatform","weight":168,"cookies":false,"type":"","demo":"projects\/create-platform.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"type":{"type":"string","description":"Platform type.","default":null,"x-example":"web","enum":["web","flutter-web","flutter-ios","flutter-android","flutter-linux","flutter-macos","flutter-windows","apple-ios","apple-macos","apple-watchos","apple-tvos","android","unity"],"x-enum-name":"PlatformType","x-enum-keys":[]},"name":{"type":"string","description":"Platform name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"key":{"type":"string","description":"Package name for Android or bundle ID for iOS or macOS. Max length: 256 chars.","default":"","x-example":"[KEY]"},"store":{"type":"string","description":"App store or Google Play store ID. Max length: 256 chars.","default":"","x-example":"[STORE]"},"hostname":{"type":"string","description":"Platform client hostname. Max length: 256 chars.","default":"","x-example":null}},"required":["type","name"]}}]}},"\/projects\/{projectId}\/platforms\/{platformId}":{"get":{"summary":"Get platform","operationId":"projectsGetPlatform","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Platform","schema":{"$ref":"#\/definitions\/platform"}}},"x-appwrite":{"method":"getPlatform","weight":170,"cookies":false,"type":"","demo":"projects\/get-platform.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"platformId","description":"Platform unique ID.","required":true,"type":"string","x-example":"[PLATFORM_ID]","in":"path"}]},"put":{"summary":"Update platform","operationId":"projectsUpdatePlatform","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Platform","schema":{"$ref":"#\/definitions\/platform"}}},"x-appwrite":{"method":"updatePlatform","weight":171,"cookies":false,"type":"","demo":"projects\/update-platform.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"platformId","description":"Platform unique ID.","required":true,"type":"string","x-example":"[PLATFORM_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Platform name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"key":{"type":"string","description":"Package name for android or bundle ID for iOS. Max length: 256 chars.","default":"","x-example":"[KEY]"},"store":{"type":"string","description":"App store or Google Play store ID. Max length: 256 chars.","default":"","x-example":"[STORE]"},"hostname":{"type":"string","description":"Platform client URL. Max length: 256 chars.","default":"","x-example":null}},"required":["name"]}}]},"delete":{"summary":"Delete platform","operationId":"projectsDeletePlatform","consumes":["application\/json"],"produces":[],"tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deletePlatform","weight":172,"cookies":false,"type":"","demo":"projects\/delete-platform.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"platformId","description":"Platform unique ID.","required":true,"type":"string","x-example":"[PLATFORM_ID]","in":"path"}]}},"\/projects\/{projectId}\/service":{"patch":{"summary":"Update service status","operationId":"projectsUpdateServiceStatus","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateServiceStatus","weight":146,"cookies":false,"type":"","demo":"projects\/update-service-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"service":{"type":"string","description":"Service name.","default":null,"x-example":"account","enum":["account","avatars","databases","locale","health","storage","teams","users","functions","graphql","messaging"],"x-enum-name":"APIService","x-enum-keys":[]},"status":{"type":"boolean","description":"Service status.","default":null,"x-example":false}},"required":["service","status"]}}]}},"\/projects\/{projectId}\/service\/all":{"patch":{"summary":"Update all service status","operationId":"projectsUpdateServiceStatusAll","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateServiceStatusAll","weight":147,"cookies":false,"type":"","demo":"projects\/update-service-status-all.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"status":{"type":"boolean","description":"Service status.","default":null,"x-example":false}},"required":["status"]}}]}},"\/projects\/{projectId}\/smtp":{"patch":{"summary":"Update SMTP","operationId":"projectsUpdateSmtp","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateSmtp","weight":173,"cookies":false,"type":"","demo":"projects\/update-smtp.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enable custom SMTP service","default":null,"x-example":false},"senderName":{"type":"string","description":"Name of the email sender","default":"","x-example":"[SENDER_NAME]"},"senderEmail":{"type":"string","description":"Email of the sender","default":"","x-example":"email@example.com"},"replyTo":{"type":"string","description":"Reply to email","default":"","x-example":"email@example.com"},"host":{"type":"string","description":"SMTP server host name","default":"","x-example":null},"port":{"type":"integer","description":"SMTP server port","default":587,"x-example":null},"username":{"type":"string","description":"SMTP server username","default":"","x-example":"[USERNAME]"},"password":{"type":"string","description":"SMTP server password","default":"","x-example":"[PASSWORD]"},"secure":{"type":"string","description":"Does SMTP server use secure connection","default":"","x-example":"tls","enum":["tls"],"x-enum-name":"SMTPSecure","x-enum-keys":[]}},"required":["enabled"]}}]}},"\/projects\/{projectId}\/smtp\/tests":{"post":{"summary":"Create SMTP test","operationId":"projectsCreateSmtpTest","consumes":["application\/json"],"produces":[],"tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"createSmtpTest","weight":174,"cookies":false,"type":"","demo":"projects\/create-smtp-test.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"emails":{"type":"array","description":"Array of emails to send test email to. Maximum of 10 emails are allowed.","default":null,"x-example":null,"items":{"type":"string"}},"senderName":{"type":"string","description":"Name of the email sender","default":null,"x-example":"[SENDER_NAME]"},"senderEmail":{"type":"string","description":"Email of the sender","default":null,"x-example":"email@example.com"},"replyTo":{"type":"string","description":"Reply to email","default":"","x-example":"email@example.com"},"host":{"type":"string","description":"SMTP server host name","default":null,"x-example":null},"port":{"type":"integer","description":"SMTP server port","default":587,"x-example":null},"username":{"type":"string","description":"SMTP server username","default":"","x-example":"[USERNAME]"},"password":{"type":"string","description":"SMTP server password","default":"","x-example":"[PASSWORD]"},"secure":{"type":"string","description":"Does SMTP server use secure connection","default":"","x-example":"tls","enum":["tls"],"x-enum-name":"SMTPSecure","x-enum-keys":[]}},"required":["emails","senderName","senderEmail","host"]}}]}},"\/projects\/{projectId}\/team":{"patch":{"summary":"Update Project Team","operationId":"projectsUpdateTeam","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateTeam","weight":145,"cookies":false,"type":"","demo":"projects\/update-team.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"teamId":{"type":"string","description":"Team ID of the team to transfer project to.","default":null,"x-example":"[TEAM_ID]"}},"required":["teamId"]}}]}},"\/projects\/{projectId}\/templates\/email\/{type}\/{locale}":{"get":{"summary":"Get custom email template","operationId":"projectsGetEmailTemplate","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"EmailTemplate","schema":{"$ref":"#\/definitions\/emailTemplate"}}},"x-appwrite":{"method":"getEmailTemplate","weight":176,"cookies":false,"type":"","demo":"projects\/get-email-template.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"type","description":"Template type","required":true,"type":"string","x-example":"verification","enum":["verification","magicsession","recovery","invitation"],"x-enum-name":"EmailTemplateType","x-enum-keys":[],"in":"path"},{"name":"locale","description":"Template locale","required":true,"type":"string","x-example":"af","enum":["af","ar-ae","ar-bh","ar-dz","ar-eg","ar-iq","ar-jo","ar-kw","ar-lb","ar-ly","ar-ma","ar-om","ar-qa","ar-sa","ar-sy","ar-tn","ar-ye","as","az","be","bg","bh","bn","bs","ca","cs","cy","da","de","de-at","de-ch","de-li","de-lu","el","en","en-au","en-bz","en-ca","en-gb","en-ie","en-jm","en-nz","en-tt","en-us","en-za","eo","es","es-ar","es-bo","es-cl","es-co","es-cr","es-do","es-ec","es-gt","es-hn","es-mx","es-ni","es-pa","es-pe","es-pr","es-py","es-sv","es-uy","es-ve","et","eu","fa","fi","fo","fr","fr-be","fr-ca","fr-ch","fr-lu","ga","gd","he","hi","hr","hu","id","is","it","it-ch","ja","ji","ko","ku","lt","lv","mk","ml","ms","mt","nb","ne","nl","nl-be","nn","no","pa","pl","pt","pt-br","rm","ro","ro-md","ru","ru-md","sb","sk","sl","sq","sr","sv","sv-fi","th","tn","tr","ts","ua","ur","ve","vi","xh","zh-cn","zh-hk","zh-sg","zh-tw","zu"],"x-enum-name":"EmailTemplateLocale","x-enum-keys":[],"in":"path"}]},"patch":{"summary":"Update custom email templates","operationId":"projectsUpdateEmailTemplate","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateEmailTemplate","weight":178,"cookies":false,"type":"","demo":"projects\/update-email-template.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"type","description":"Template type","required":true,"type":"string","x-example":"verification","enum":["verification","magicsession","recovery","invitation"],"x-enum-name":"EmailTemplateType","x-enum-keys":[],"in":"path"},{"name":"locale","description":"Template locale","required":true,"type":"string","x-example":"af","enum":["af","ar-ae","ar-bh","ar-dz","ar-eg","ar-iq","ar-jo","ar-kw","ar-lb","ar-ly","ar-ma","ar-om","ar-qa","ar-sa","ar-sy","ar-tn","ar-ye","as","az","be","bg","bh","bn","bs","ca","cs","cy","da","de","de-at","de-ch","de-li","de-lu","el","en","en-au","en-bz","en-ca","en-gb","en-ie","en-jm","en-nz","en-tt","en-us","en-za","eo","es","es-ar","es-bo","es-cl","es-co","es-cr","es-do","es-ec","es-gt","es-hn","es-mx","es-ni","es-pa","es-pe","es-pr","es-py","es-sv","es-uy","es-ve","et","eu","fa","fi","fo","fr","fr-be","fr-ca","fr-ch","fr-lu","ga","gd","he","hi","hr","hu","id","is","it","it-ch","ja","ji","ko","ku","lt","lv","mk","ml","ms","mt","nb","ne","nl","nl-be","nn","no","pa","pl","pt","pt-br","rm","ro","ro-md","ru","ru-md","sb","sk","sl","sq","sr","sv","sv-fi","th","tn","tr","ts","ua","ur","ve","vi","xh","zh-cn","zh-hk","zh-sg","zh-tw","zu"],"x-enum-name":"EmailTemplateLocale","x-enum-keys":[],"in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"subject":{"type":"string","description":"Email Subject","default":null,"x-example":"[SUBJECT]"},"message":{"type":"string","description":"Template message","default":null,"x-example":"[MESSAGE]"},"senderName":{"type":"string","description":"Name of the email sender","default":"","x-example":"[SENDER_NAME]"},"senderEmail":{"type":"string","description":"Email of the sender","default":"","x-example":"email@example.com"},"replyTo":{"type":"string","description":"Reply to email","default":"","x-example":"email@example.com"}},"required":["subject","message"]}}]},"delete":{"summary":"Reset custom email template","operationId":"projectsDeleteEmailTemplate","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"EmailTemplate","schema":{"$ref":"#\/definitions\/emailTemplate"}}},"x-appwrite":{"method":"deleteEmailTemplate","weight":180,"cookies":false,"type":"","demo":"projects\/delete-email-template.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"type","description":"Template type","required":true,"type":"string","x-example":"verification","enum":["verification","magicsession","recovery","invitation"],"x-enum-name":"EmailTemplateType","x-enum-keys":[],"in":"path"},{"name":"locale","description":"Template locale","required":true,"type":"string","x-example":"af","enum":["af","ar-ae","ar-bh","ar-dz","ar-eg","ar-iq","ar-jo","ar-kw","ar-lb","ar-ly","ar-ma","ar-om","ar-qa","ar-sa","ar-sy","ar-tn","ar-ye","as","az","be","bg","bh","bn","bs","ca","cs","cy","da","de","de-at","de-ch","de-li","de-lu","el","en","en-au","en-bz","en-ca","en-gb","en-ie","en-jm","en-nz","en-tt","en-us","en-za","eo","es","es-ar","es-bo","es-cl","es-co","es-cr","es-do","es-ec","es-gt","es-hn","es-mx","es-ni","es-pa","es-pe","es-pr","es-py","es-sv","es-uy","es-ve","et","eu","fa","fi","fo","fr","fr-be","fr-ca","fr-ch","fr-lu","ga","gd","he","hi","hr","hu","id","is","it","it-ch","ja","ji","ko","ku","lt","lv","mk","ml","ms","mt","nb","ne","nl","nl-be","nn","no","pa","pl","pt","pt-br","rm","ro","ro-md","ru","ru-md","sb","sk","sl","sq","sr","sv","sv-fi","th","tn","tr","ts","ua","ur","ve","vi","xh","zh-cn","zh-hk","zh-sg","zh-tw","zu"],"x-enum-name":"EmailTemplateLocale","x-enum-keys":[],"in":"path"}]}},"\/projects\/{projectId}\/templates\/sms\/{type}\/{locale}":{"get":{"summary":"Get custom SMS template","operationId":"projectsGetSmsTemplate","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"SmsTemplate","schema":{"$ref":"#\/definitions\/smsTemplate"}}},"x-appwrite":{"method":"getSmsTemplate","weight":175,"cookies":false,"type":"","demo":"projects\/get-sms-template.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"type","description":"Template type","required":true,"type":"string","x-example":"verification","enum":["verification","login","invitation"],"x-enum-name":"SMSTemplateType","x-enum-keys":[],"in":"path"},{"name":"locale","description":"Template locale","required":true,"type":"string","x-example":"af","enum":["af","ar-ae","ar-bh","ar-dz","ar-eg","ar-iq","ar-jo","ar-kw","ar-lb","ar-ly","ar-ma","ar-om","ar-qa","ar-sa","ar-sy","ar-tn","ar-ye","as","az","be","bg","bh","bn","bs","ca","cs","cy","da","de","de-at","de-ch","de-li","de-lu","el","en","en-au","en-bz","en-ca","en-gb","en-ie","en-jm","en-nz","en-tt","en-us","en-za","eo","es","es-ar","es-bo","es-cl","es-co","es-cr","es-do","es-ec","es-gt","es-hn","es-mx","es-ni","es-pa","es-pe","es-pr","es-py","es-sv","es-uy","es-ve","et","eu","fa","fi","fo","fr","fr-be","fr-ca","fr-ch","fr-lu","ga","gd","he","hi","hr","hu","id","is","it","it-ch","ja","ji","ko","ku","lt","lv","mk","ml","ms","mt","nb","ne","nl","nl-be","nn","no","pa","pl","pt","pt-br","rm","ro","ro-md","ru","ru-md","sb","sk","sl","sq","sr","sv","sv-fi","th","tn","tr","ts","ua","ur","ve","vi","xh","zh-cn","zh-hk","zh-sg","zh-tw","zu"],"x-enum-name":"SMSTemplateLocale","x-enum-keys":[],"in":"path"}]},"patch":{"summary":"Update custom SMS template","operationId":"projectsUpdateSmsTemplate","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"SmsTemplate","schema":{"$ref":"#\/definitions\/smsTemplate"}}},"x-appwrite":{"method":"updateSmsTemplate","weight":177,"cookies":false,"type":"","demo":"projects\/update-sms-template.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"type","description":"Template type","required":true,"type":"string","x-example":"verification","enum":["verification","login","invitation"],"x-enum-name":"SMSTemplateType","x-enum-keys":[],"in":"path"},{"name":"locale","description":"Template locale","required":true,"type":"string","x-example":"af","enum":["af","ar-ae","ar-bh","ar-dz","ar-eg","ar-iq","ar-jo","ar-kw","ar-lb","ar-ly","ar-ma","ar-om","ar-qa","ar-sa","ar-sy","ar-tn","ar-ye","as","az","be","bg","bh","bn","bs","ca","cs","cy","da","de","de-at","de-ch","de-li","de-lu","el","en","en-au","en-bz","en-ca","en-gb","en-ie","en-jm","en-nz","en-tt","en-us","en-za","eo","es","es-ar","es-bo","es-cl","es-co","es-cr","es-do","es-ec","es-gt","es-hn","es-mx","es-ni","es-pa","es-pe","es-pr","es-py","es-sv","es-uy","es-ve","et","eu","fa","fi","fo","fr","fr-be","fr-ca","fr-ch","fr-lu","ga","gd","he","hi","hr","hu","id","is","it","it-ch","ja","ji","ko","ku","lt","lv","mk","ml","ms","mt","nb","ne","nl","nl-be","nn","no","pa","pl","pt","pt-br","rm","ro","ro-md","ru","ru-md","sb","sk","sl","sq","sr","sv","sv-fi","th","tn","tr","ts","ua","ur","ve","vi","xh","zh-cn","zh-hk","zh-sg","zh-tw","zu"],"x-enum-name":"SMSTemplateLocale","x-enum-keys":[],"in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"message":{"type":"string","description":"Template message","default":null,"x-example":"[MESSAGE]"}},"required":["message"]}}]},"delete":{"summary":"Reset custom SMS template","operationId":"projectsDeleteSmsTemplate","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"SmsTemplate","schema":{"$ref":"#\/definitions\/smsTemplate"}}},"x-appwrite":{"method":"deleteSmsTemplate","weight":179,"cookies":false,"type":"","demo":"projects\/delete-sms-template.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"type","description":"Template type","required":true,"type":"string","x-example":"verification","enum":["verification","login","invitation"],"x-enum-name":"SMSTemplateType","x-enum-keys":[],"in":"path"},{"name":"locale","description":"Template locale","required":true,"type":"string","x-example":"af","enum":["af","ar-ae","ar-bh","ar-dz","ar-eg","ar-iq","ar-jo","ar-kw","ar-lb","ar-ly","ar-ma","ar-om","ar-qa","ar-sa","ar-sy","ar-tn","ar-ye","as","az","be","bg","bh","bn","bs","ca","cs","cy","da","de","de-at","de-ch","de-li","de-lu","el","en","en-au","en-bz","en-ca","en-gb","en-ie","en-jm","en-nz","en-tt","en-us","en-za","eo","es","es-ar","es-bo","es-cl","es-co","es-cr","es-do","es-ec","es-gt","es-hn","es-mx","es-ni","es-pa","es-pe","es-pr","es-py","es-sv","es-uy","es-ve","et","eu","fa","fi","fo","fr","fr-be","fr-ca","fr-ch","fr-lu","ga","gd","he","hi","hr","hu","id","is","it","it-ch","ja","ji","ko","ku","lt","lv","mk","ml","ms","mt","nb","ne","nl","nl-be","nn","no","pa","pl","pt","pt-br","rm","ro","ro-md","ru","ru-md","sb","sk","sl","sq","sr","sv","sv-fi","th","tn","tr","ts","ua","ur","ve","vi","xh","zh-cn","zh-hk","zh-sg","zh-tw","zu"],"x-enum-name":"SMSTemplateLocale","x-enum-keys":[],"in":"path"}]}},"\/projects\/{projectId}\/webhooks":{"get":{"summary":"List webhooks","operationId":"projectsListWebhooks","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Webhooks List","schema":{"$ref":"#\/definitions\/webhookList"}}},"x-appwrite":{"method":"listWebhooks","weight":158,"cookies":false,"type":"","demo":"projects\/list-webhooks.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"}]},"post":{"summary":"Create webhook","operationId":"projectsCreateWebhook","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"201":{"description":"Webhook","schema":{"$ref":"#\/definitions\/webhook"}}},"x-appwrite":{"method":"createWebhook","weight":157,"cookies":false,"type":"","demo":"projects\/create-webhook.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Webhook name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Enable or disable a webhook.","default":true,"x-example":false},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","default":null,"x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"Webhook URL.","default":null,"x-example":null},"security":{"type":"boolean","description":"Certificate verification, false for disabled or true for enabled.","default":null,"x-example":false},"httpUser":{"type":"string","description":"Webhook HTTP user. Max length: 256 chars.","default":"","x-example":"[HTTP_USER]"},"httpPass":{"type":"string","description":"Webhook HTTP password. Max length: 256 chars.","default":"","x-example":"[HTTP_PASS]"}},"required":["name","events","url","security"]}}]}},"\/projects\/{projectId}\/webhooks\/{webhookId}":{"get":{"summary":"Get webhook","operationId":"projectsGetWebhook","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Webhook","schema":{"$ref":"#\/definitions\/webhook"}}},"x-appwrite":{"method":"getWebhook","weight":159,"cookies":false,"type":"","demo":"projects\/get-webhook.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"webhookId","description":"Webhook unique ID.","required":true,"type":"string","x-example":"[WEBHOOK_ID]","in":"path"}]},"put":{"summary":"Update webhook","operationId":"projectsUpdateWebhook","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Webhook","schema":{"$ref":"#\/definitions\/webhook"}}},"x-appwrite":{"method":"updateWebhook","weight":160,"cookies":false,"type":"","demo":"projects\/update-webhook.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"webhookId","description":"Webhook unique ID.","required":true,"type":"string","x-example":"[WEBHOOK_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Webhook name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Enable or disable a webhook.","default":true,"x-example":false},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","default":null,"x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"Webhook URL.","default":null,"x-example":null},"security":{"type":"boolean","description":"Certificate verification, false for disabled or true for enabled.","default":null,"x-example":false},"httpUser":{"type":"string","description":"Webhook HTTP user. Max length: 256 chars.","default":"","x-example":"[HTTP_USER]"},"httpPass":{"type":"string","description":"Webhook HTTP password. Max length: 256 chars.","default":"","x-example":"[HTTP_PASS]"}},"required":["name","events","url","security"]}}]},"delete":{"summary":"Delete webhook","operationId":"projectsDeleteWebhook","consumes":["application\/json"],"produces":[],"tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteWebhook","weight":162,"cookies":false,"type":"","demo":"projects\/delete-webhook.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"webhookId","description":"Webhook unique ID.","required":true,"type":"string","x-example":"[WEBHOOK_ID]","in":"path"}]}},"\/projects\/{projectId}\/webhooks\/{webhookId}\/signature":{"patch":{"summary":"Update webhook signature key","operationId":"projectsUpdateWebhookSignature","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Webhook","schema":{"$ref":"#\/definitions\/webhook"}}},"x-appwrite":{"method":"updateWebhookSignature","weight":161,"cookies":false,"type":"","demo":"projects\/update-webhook-signature.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"webhookId","description":"Webhook unique ID.","required":true,"type":"string","x-example":"[WEBHOOK_ID]","in":"path"}]}},"\/proxy\/rules":{"get":{"summary":"List Rules","operationId":"proxyListRules","consumes":["application\/json"],"produces":["application\/json"],"tags":["proxy"],"description":"Get a list of all the proxy rules. You can use the query params to filter your results.","responses":{"200":{"description":"Rule List","schema":{"$ref":"#\/definitions\/proxyRuleList"}}},"x-appwrite":{"method":"listRules","weight":291,"cookies":false,"type":"","demo":"proxy\/list-rules.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/proxy\/list-rules.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"rules.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: domain, resourceType, resourceId, url","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Rule","operationId":"proxyCreateRule","consumes":["application\/json"],"produces":["application\/json"],"tags":["proxy"],"description":"Create a new proxy rule.","responses":{"201":{"description":"Rule","schema":{"$ref":"#\/definitions\/proxyRule"}}},"x-appwrite":{"method":"createRule","weight":290,"cookies":false,"type":"","demo":"proxy\/create-rule.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/proxy\/create-rule.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"rules.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"domain":{"type":"string","description":"Domain name.","default":null,"x-example":null},"resourceType":{"type":"string","description":"Action definition for the rule. Possible values are \"api\", \"function\"","default":null,"x-example":"api","enum":["api","function"],"x-enum-name":null,"x-enum-keys":[]},"resourceId":{"type":"string","description":"ID of resource for the action type. If resourceType is \"api\", leave empty. If resourceType is \"function\", provide ID of the function.","default":"","x-example":"[RESOURCE_ID]"}},"required":["domain","resourceType"]}}]}},"\/proxy\/rules\/{ruleId}":{"get":{"summary":"Get Rule","operationId":"proxyGetRule","consumes":["application\/json"],"produces":["application\/json"],"tags":["proxy"],"description":"Get a proxy rule by its unique ID.","responses":{"200":{"description":"Rule","schema":{"$ref":"#\/definitions\/proxyRule"}}},"x-appwrite":{"method":"getRule","weight":292,"cookies":false,"type":"","demo":"proxy\/get-rule.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/proxy\/get-rule.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"rules.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"ruleId","description":"Rule ID.","required":true,"type":"string","x-example":"[RULE_ID]","in":"path"}]},"delete":{"summary":"Delete Rule","operationId":"proxyDeleteRule","consumes":["application\/json"],"produces":[],"tags":["proxy"],"description":"Delete a proxy rule by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteRule","weight":293,"cookies":false,"type":"","demo":"proxy\/delete-rule.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/proxy\/delete-rule.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"rules.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"ruleId","description":"Rule ID.","required":true,"type":"string","x-example":"[RULE_ID]","in":"path"}]}},"\/proxy\/rules\/{ruleId}\/verification":{"patch":{"summary":"Update Rule Verification Status","operationId":"proxyUpdateRuleVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["proxy"],"description":"","responses":{"200":{"description":"Rule","schema":{"$ref":"#\/definitions\/proxyRule"}}},"x-appwrite":{"method":"updateRuleVerification","weight":294,"cookies":false,"type":"","demo":"proxy\/update-rule-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"rules.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"ruleId","description":"Rule ID.","required":true,"type":"string","x-example":"[RULE_ID]","in":"path"}]}},"\/storage\/buckets":{"get":{"summary":"List buckets","operationId":"storageListBuckets","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a list of all the storage buckets. You can use the query params to filter your results.","responses":{"200":{"description":"Buckets List","schema":{"$ref":"#\/definitions\/bucketList"}}},"x-appwrite":{"method":"listBuckets","weight":188,"cookies":false,"type":"","demo":"storage\/list-buckets.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/list-buckets.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: enabled, name, fileSecurity, maximumFileSize, encryption, antivirus","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create bucket","operationId":"storageCreateBucket","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Create a new storage bucket.","responses":{"201":{"description":"Bucket","schema":{"$ref":"#\/definitions\/bucket"}}},"x-appwrite":{"method":"createBucket","weight":187,"cookies":false,"type":"","demo":"storage\/create-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"bucketId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, no user is granted with any permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":false,"x-example":false},"enabled":{"type":"boolean","description":"Is bucket enabled? When set to 'disabled', users cannot access the files in this bucket but Server SDKs with and API key can still access the bucket. No files are lost when this is toggled.","default":true,"x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB.","default":30000000,"x-example":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","default":[],"x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","default":"none","x-example":"none","enum":["none","gzip","zstd"],"x-enum-name":null,"x-enum-keys":[]},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","default":true,"x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","default":true,"x-example":false}},"required":["bucketId","name"]}}]}},"\/storage\/buckets\/{bucketId}":{"get":{"summary":"Get bucket","operationId":"storageGetBucket","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a storage bucket by its unique ID. This endpoint response returns a JSON object with the storage bucket metadata.","responses":{"200":{"description":"Bucket","schema":{"$ref":"#\/definitions\/bucket"}}},"x-appwrite":{"method":"getBucket","weight":189,"cookies":false,"type":"","demo":"storage\/get-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"bucketId","description":"Bucket unique ID.","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"}]},"put":{"summary":"Update bucket","operationId":"storageUpdateBucket","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Update a storage bucket by its unique ID.","responses":{"200":{"description":"Bucket","schema":{"$ref":"#\/definitions\/bucket"}}},"x-appwrite":{"method":"updateBucket","weight":190,"cookies":false,"type":"","demo":"storage\/update-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"bucketId","description":"Bucket unique ID.","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Bucket name","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":false,"x-example":false},"enabled":{"type":"boolean","description":"Is bucket enabled? When set to 'disabled', users cannot access the files in this bucket but Server SDKs with and API key can still access the bucket. No files are lost when this is toggled.","default":true,"x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB.","default":null,"x-example":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","default":[],"x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","default":"none","x-example":"none","enum":["none","gzip","zstd"],"x-enum-name":null,"x-enum-keys":[]},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","default":true,"x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","default":true,"x-example":false}},"required":["name"]}}]},"delete":{"summary":"Delete bucket","operationId":"storageDeleteBucket","consumes":["application\/json"],"produces":[],"tags":["storage"],"description":"Delete a storage bucket by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteBucket","weight":191,"cookies":false,"type":"","demo":"storage\/delete-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"bucketId","description":"Bucket unique ID.","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files":{"get":{"summary":"List files","operationId":"storageListFiles","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a list of all the user files. You can use the query params to filter your results.","responses":{"200":{"description":"Files List","schema":{"$ref":"#\/definitions\/fileList"}}},"x-appwrite":{"method":"listFiles","weight":193,"cookies":false,"type":"","demo":"storage\/list-files.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/list-files.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create file","operationId":"storageCreateFile","consumes":["multipart\/form-data"],"produces":["application\/json"],"tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"createFile","weight":192,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","required":true,"x-upload-id":true,"type":"string","x-example":"[FILE_ID]","in":"formData"},{"name":"file","description":"Binary file. Appwrite SDKs provide helpers to handle file input. [Learn about file input](https:\/\/appwrite.io\/docs\/storage#file-input).","required":true,"type":"file","in":"formData"},{"name":"permissions","description":"An array of permission strings. By default, only the current user is granted all permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"x-example":"[\"read(\"any\")\"]","in":"formData"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get file","operationId":"storageGetFile","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"getFile","weight":194,"cookies":false,"type":"","demo":"storage\/get-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID.","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"}]},"put":{"summary":"Update file","operationId":"storageUpdateFile","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Update a file by its unique ID. Only users with write permissions have access to update this resource.","responses":{"200":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"updateFile","weight":198,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File unique ID.","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Name of the file","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission string. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","consumes":["application\/json"],"produces":[],"tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":199,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID.","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/download":{"get":{"summary":"Get file for download","operationId":"storageGetFileDownload","consumes":["application\/json"],"produces":["*\/*"],"tags":["storage"],"description":"Get a file content by its unique ID. The endpoint response return with a 'Content-Disposition: attachment' header that tells the browser to start downloading the file to user downloads directory.","responses":{"200":{"description":"File","schema":{"type":"file"}}},"x-appwrite":{"method":"getFileDownload","weight":196,"cookies":false,"type":"location","demo":"storage\/get-file-download.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-download.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID.","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/preview":{"get":{"summary":"Get file preview","operationId":"storageGetFilePreview","consumes":["application\/json"],"produces":["image\/*"],"tags":["storage"],"description":"Get a file preview image. Currently, this method supports preview for image files (jpg, png, and gif), other supported formats, like pdf, docs, slides, and spreadsheets, will return the file icon image. You can also pass query string arguments for cutting and resizing your preview image. Preview is supported only for image files smaller than 10MB.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFilePreview","weight":195,"cookies":false,"type":"location","demo":"storage\/get-file-preview.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-preview.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"},{"name":"width","description":"Resize preview image width, Pass an integer between 0 to 4000.","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 4000.","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"gravity","description":"Image crop gravity. Can be one of center,top-left,top,top-right,left,right,bottom-left,bottom,bottom-right","required":false,"type":"string","x-example":"center","enum":["center","top-left","top","top-right","left","right","bottom-left","bottom","bottom-right"],"x-enum-name":"ImageGravity","x-enum-keys":[],"default":"center","in":"query"},{"name":"quality","description":"Preview image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"borderWidth","description":"Preview image border in pixels. Pass an integer between 0 to 100. Defaults to 0.","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"borderColor","description":"Preview image border color. Use a valid HEX color, no # is needed for prefix.","required":false,"type":"string","default":"","in":"query"},{"name":"borderRadius","description":"Preview image border radius in pixels. Pass an integer between 0 to 4000.","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"opacity","description":"Preview image opacity. Only works with images having an alpha channel (like png). Pass a number between 0 to 1.","required":false,"type":"number","format":"float","x-example":0,"default":1,"in":"query"},{"name":"rotation","description":"Preview image rotation in degrees. Pass an integer between -360 and 360.","required":false,"type":"integer","format":"int32","x-example":-360,"default":0,"in":"query"},{"name":"background","description":"Preview image background color. Only works with transparent images (png). Use a valid HEX color, no # is needed for prefix.","required":false,"type":"string","default":"","in":"query"},{"name":"output","description":"Output format type (jpeg, jpg, png, gif and webp).","required":false,"type":"string","x-example":"jpg","enum":["jpg","jpeg","gif","png","webp"],"x-enum-name":"ImageFormat","x-enum-keys":[],"default":"","in":"query"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/view":{"get":{"summary":"Get file for view","operationId":"storageGetFileView","consumes":["application\/json"],"produces":["*\/*"],"tags":["storage"],"description":"Get a file content by its unique ID. This endpoint is similar to the download method but returns with no 'Content-Disposition: attachment' header.","responses":{"200":{"description":"File","schema":{"type":"file"}}},"x-appwrite":{"method":"getFileView","weight":197,"cookies":false,"type":"location","demo":"storage\/get-file-view.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-view.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID.","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"}]}},"\/storage\/usage":{"get":{"summary":"Get usage stats for storage","operationId":"storageGetUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"","responses":{"200":{"description":"StorageUsage","schema":{"$ref":"#\/definitions\/usageStorage"}}},"x-appwrite":{"method":"getUsage","weight":200,"cookies":false,"type":"","demo":"storage\/get-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","enum":["24h","30d","90d"],"x-enum-name":"StorageUsageRange","x-enum-keys":["Twenty Four Hours","Thirty Days","Ninety Days"],"default":"30d","in":"query"}]}},"\/storage\/{bucketId}\/usage":{"get":{"summary":"Get usage stats for storage bucket","operationId":"storageGetBucketUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"","responses":{"200":{"description":"UsageBuckets","schema":{"$ref":"#\/definitions\/usageBuckets"}}},"x-appwrite":{"method":"getBucketUsage","weight":201,"cookies":false,"type":"","demo":"storage\/get-bucket-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"bucketId","description":"Bucket ID.","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","enum":["24h","30d","90d"],"x-enum-name":"StorageUsageRange","x-enum-keys":["Twenty Four Hours","Thirty Days","Ninety Days"],"default":"30d","in":"query"}]}},"\/teams":{"get":{"summary":"List teams","operationId":"teamsList","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get a list of all the teams in which the current user is a member. You can use the parameters to filter your results.","responses":{"200":{"description":"Teams List","schema":{"$ref":"#\/definitions\/teamList"}}},"x-appwrite":{"method":"list","weight":203,"cookies":false,"type":"","demo":"teams\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-teams.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total, billingPlan","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create team","operationId":"teamsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"create","weight":202,"cookies":false,"type":"","demo":"teams\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/create-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"teamId":{"type":"string","description":"Team ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[TEAM_ID]"},"name":{"type":"string","description":"Team name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"roles":{"type":"array","description":"Array of strings. Use this param to set the roles in the team for the user who created it. The default role is **owner**. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","default":["owner"],"x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}]}},"\/teams\/{teamId}":{"get":{"summary":"Get team","operationId":"teamsGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"get","weight":204,"cookies":false,"type":"","demo":"teams\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams","offline-key":"{teamId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"}]},"put":{"summary":"Update name","operationId":"teamsUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Update the team's name by its unique ID.","responses":{"200":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"updateName","weight":206,"cookies":false,"type":"","demo":"teams\/update-name.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-name.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams","offline-key":"{teamId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"New team name. Max length: 128 chars.","default":null,"x-example":"[NAME]"}},"required":["name"]}}]},"delete":{"summary":"Delete team","operationId":"teamsDelete","consumes":["application\/json"],"produces":[],"tags":["teams"],"description":"Delete a team using its ID. Only team members with the owner role can delete the team.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":208,"cookies":false,"type":"","demo":"teams\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/delete-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"}]}},"\/teams\/{teamId}\/logs":{"get":{"summary":"List team logs","operationId":"teamsListLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get the team activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listLogs","weight":215,"cookies":false,"type":"","demo":"teams\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/teams\/{teamId}\/memberships":{"get":{"summary":"List team memberships","operationId":"teamsListMemberships","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"listMemberships","weight":210,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/memberships","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create team membership","operationId":"teamsCreateMembership","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Invite a new member to join your team. Provide an ID for existing users, or invite unregistered users using an email or phone number. If initiated from a Client SDK, Appwrite will send an email or sms with a link to join the team to the invited user, and an account will be created for them if one doesn't exist. If initiated from a Server SDK, the new member will be added automatically to the team.\n\nYou only need to provide one of a user ID, email, or phone number. Appwrite will prioritize accepting the user ID > email > phone number if you provide more than one of these parameters.\n\nUse the `url` parameter to redirect the user from the invitation email to your app. After the user is redirected, use the [Update Team Membership Status](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/teams#updateMembershipStatus) endpoint to allow the user to accept the invitation to the team. \n\nPlease note that to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) Appwrite will accept the only redirect URLs under the domains you have added as a platform on the Appwrite Console.\n","responses":{"201":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"createMembership","weight":209,"cookies":false,"type":"","demo":"teams\/create-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/create-team-membership.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"email":{"type":"string","description":"Email of the new team member.","default":"","x-example":"email@example.com"},"userId":{"type":"string","description":"ID of the user to be added to a team.","default":"","x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":"","x-example":"+12065550100"},"roles":{"type":"array","description":"Array of strings. Use this param to set the user roles in the team. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":"","x-example":"https:\/\/example.com"},"name":{"type":"string","description":"Name of the new team member. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["roles"]}}]}},"\/teams\/{teamId}\/memberships\/{membershipId}":{"get":{"summary":"Get team membership","operationId":"teamsGetMembership","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get a team member by the membership unique id. All team members have read access for this resource.","responses":{"200":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"getMembership","weight":211,"cookies":false,"type":"","demo":"teams\/get-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-member.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/memberships","offline-key":"{membershipId}","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"type":"string","x-example":"[MEMBERSHIP_ID]","in":"path"}]},"patch":{"summary":"Update membership","operationId":"teamsUpdateMembership","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Modify the roles of a team member. Only team members with the owner role have access to this endpoint. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions).\n","responses":{"200":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"updateMembership","weight":212,"cookies":false,"type":"","demo":"teams\/update-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"type":"string","x-example":"[MEMBERSHIP_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"roles":{"type":"array","description":"An array of strings. Use this param to set the user's roles in the team. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}}},"required":["roles"]}}]},"delete":{"summary":"Delete team membership","operationId":"teamsDeleteMembership","consumes":["application\/json"],"produces":[],"tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":214,"cookies":false,"type":"","demo":"teams\/delete-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/delete-team-membership.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"type":"string","x-example":"[MEMBERSHIP_ID]","in":"path"}]}},"\/teams\/{teamId}\/memberships\/{membershipId}\/status":{"patch":{"summary":"Update team membership status","operationId":"teamsUpdateMembershipStatus","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Use this endpoint to allow a user to accept an invitation to join a team after being redirected back to your app from the invitation email received by the user.\n\nIf the request is successful, a session for the user is automatically created.\n","responses":{"200":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"updateMembershipStatus","weight":213,"cookies":false,"type":"","demo":"teams\/update-membership-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"public","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"type":"string","x-example":"[MEMBERSHIP_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Secret key.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/teams\/{teamId}\/prefs":{"get":{"summary":"Get team preferences","operationId":"teamsGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get the team's shared preferences by its unique ID. If a preference doesn't need to be shared by all team members, prefer storing them in [user preferences](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#getPrefs).","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":205,"cookies":false,"type":"","demo":"teams\/get-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/prefs","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"}]},"put":{"summary":"Update preferences","operationId":"teamsUpdatePrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Update the team's preferences by its unique ID. The object you pass is stored as is and replaces any previous value. The maximum allowed prefs size is 64kB and throws an error if exceeded.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"updatePrefs","weight":207,"cookies":false,"type":"","demo":"teams\/update-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/prefs","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"prefs":{"type":"object","description":"Prefs key-value JSON object.","default":{},"x-example":"{}"}},"required":["prefs"]}}]}},"\/users":{"get":{"summary":"List users","operationId":"usersList","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get a list of all the project's users. You can use the query params to filter your results.","responses":{"200":{"description":"Users List","schema":{"$ref":"#\/definitions\/userList"}}},"x-appwrite":{"method":"list","weight":225,"cookies":false,"type":"","demo":"users\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-users.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, email, phone, status, passwordUpdate, registration, emailVerification, phoneVerification, labels","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create user","operationId":"usersCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"create","weight":216,"cookies":false,"type":"","demo":"users\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"},"password":{"type":"string","description":"Plain text user password. Must be at least 8 chars.","default":"","x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId"]}}]}},"\/users\/argon2":{"post":{"summary":"Create user with Argon2 password","operationId":"usersCreateArgon2User","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Argon2](https:\/\/en.wikipedia.org\/wiki\/Argon2) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createArgon2User","weight":219,"cookies":false,"type":"","demo":"users\/create-argon2user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-argon2-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Argon2.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/bcrypt":{"post":{"summary":"Create user with bcrypt password","operationId":"usersCreateBcryptUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Bcrypt](https:\/\/en.wikipedia.org\/wiki\/Bcrypt) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createBcryptUser","weight":217,"cookies":false,"type":"","demo":"users\/create-bcrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-bcrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Bcrypt.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/identities":{"get":{"summary":"List Identities","operationId":"usersListIdentities","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get identities for all users.","responses":{"200":{"description":"Identities List","schema":{"$ref":"#\/definitions\/identityList"}}},"x-appwrite":{"method":"listIdentities","weight":233,"cookies":false,"type":"","demo":"users\/list-identities.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-identities.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, provider, providerUid, providerEmail, providerAccessTokenExpiry","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]}},"\/users\/identities\/{identityId}":{"delete":{"summary":"Delete identity","operationId":"usersDeleteIdentity","consumes":["application\/json"],"produces":[],"tags":["users"],"description":"Delete an identity by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIdentity","weight":253,"cookies":false,"type":"","demo":"users\/delete-identity.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-identity.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"identityId","description":"Identity ID.","required":true,"type":"string","x-example":"[IDENTITY_ID]","in":"path"}]}},"\/users\/md5":{"post":{"summary":"Create user with MD5 password","operationId":"usersCreateMD5User","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [MD5](https:\/\/en.wikipedia.org\/wiki\/MD5) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createMD5User","weight":218,"cookies":false,"type":"","demo":"users\/create-m-d5user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-md5-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using MD5.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/phpass":{"post":{"summary":"Create user with PHPass password","operationId":"usersCreatePHPassUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [PHPass](https:\/\/www.openwall.com\/phpass\/) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createPHPassUser","weight":221,"cookies":false,"type":"","demo":"users\/create-p-h-pass-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-phpass-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or pass the string `ID.unique()`to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using PHPass.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/scrypt":{"post":{"summary":"Create user with Scrypt password","operationId":"usersCreateScryptUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt](https:\/\/github.com\/Tarsnap\/scrypt) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createScryptUser","weight":222,"cookies":false,"type":"","demo":"users\/create-scrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt.","default":null,"x-example":"password"},"passwordSalt":{"type":"string","description":"Optional salt used to hash password.","default":null,"x-example":"[PASSWORD_SALT]"},"passwordCpu":{"type":"integer","description":"Optional CPU cost used to hash password.","default":null,"x-example":null},"passwordMemory":{"type":"integer","description":"Optional memory cost used to hash password.","default":null,"x-example":null},"passwordParallel":{"type":"integer","description":"Optional parallelization cost used to hash password.","default":null,"x-example":null},"passwordLength":{"type":"integer","description":"Optional hash length used to hash password.","default":null,"x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordCpu","passwordMemory","passwordParallel","passwordLength"]}}]}},"\/users\/scrypt-modified":{"post":{"summary":"Create user with Scrypt modified password","operationId":"usersCreateScryptModifiedUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt Modified](https:\/\/gist.github.com\/Meldiron\/eecf84a0225eccb5a378d45bb27462cc) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createScryptModifiedUser","weight":223,"cookies":false,"type":"","demo":"users\/create-scrypt-modified-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-modified-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt Modified.","default":null,"x-example":"password"},"passwordSalt":{"type":"string","description":"Salt used to hash password.","default":null,"x-example":"[PASSWORD_SALT]"},"passwordSaltSeparator":{"type":"string","description":"Salt separator used to hash password.","default":null,"x-example":"[PASSWORD_SALT_SEPARATOR]"},"passwordSignerKey":{"type":"string","description":"Signer key used to hash password.","default":null,"x-example":"[PASSWORD_SIGNER_KEY]"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordSaltSeparator","passwordSignerKey"]}}]}},"\/users\/sha":{"post":{"summary":"Create user with SHA password","operationId":"usersCreateSHAUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [SHA](https:\/\/en.wikipedia.org\/wiki\/Secure_Hash_Algorithm) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createSHAUser","weight":220,"cookies":false,"type":"","demo":"users\/create-s-h-a-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-sha-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using SHA.","default":null,"x-example":"password"},"passwordVersion":{"type":"string","description":"Optional SHA version used to hash password. Allowed values are: 'sha1', 'sha224', 'sha256', 'sha384', 'sha512\/224', 'sha512\/256', 'sha512', 'sha3-224', 'sha3-256', 'sha3-384', 'sha3-512'","default":"","x-example":"sha1","enum":["sha1","sha224","sha256","sha384","sha512\/224","sha512\/256","sha512","sha3-224","sha3-256","sha3-384","sha3-512"],"x-enum-name":"PasswordHash","x-enum-keys":[]},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/usage":{"get":{"summary":"Get usage stats for the users API","operationId":"usersGetUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"","responses":{"200":{"description":"UsageUsers","schema":{"$ref":"#\/definitions\/usageUsers"}}},"x-appwrite":{"method":"getUsage","weight":254,"cookies":false,"type":"","demo":"users\/get-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","enum":["24h","30d","90d"],"x-enum-name":"UserUsageRange","x-enum-keys":["Twenty Four Hours","Thirty Days","Ninety Days"],"default":"30d","in":"query"}]}},"\/users\/{userId}":{"get":{"summary":"Get user","operationId":"usersGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get a user by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"get","weight":226,"cookies":false,"type":"","demo":"users\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]},"delete":{"summary":"Delete user","operationId":"usersDelete","consumes":["application\/json"],"produces":[],"tags":["users"],"description":"Delete a user by its unique ID, thereby releasing it's ID. Since ID is released and can be reused, all user-related resources like documents or storage files should be deleted before user deletion. If you want to keep ID reserved, use the [updateStatus](https:\/\/appwrite.io\/docs\/server\/users#usersUpdateStatus) endpoint instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":251,"cookies":false,"type":"","demo":"users\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]}},"\/users\/{userId}\/email":{"patch":{"summary":"Update email","operationId":"usersUpdateEmail","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user email by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateEmail","weight":239,"cookies":false,"type":"","demo":"users\/update-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"}},"required":["email"]}}]}},"\/users\/{userId}\/labels":{"put":{"summary":"Update user labels","operationId":"usersUpdateLabels","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user labels by its unique ID. \n\nLabels can be used to grant access to resources. While teams are a way for user's to share access to a resource, labels can be defined by the developer to grant access without an invitation. See the [Permissions docs](https:\/\/appwrite.io\/docs\/permissions) for more info.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateLabels","weight":235,"cookies":false,"type":"","demo":"users\/update-labels.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-labels.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"labels":{"type":"array","description":"Array of user labels. Replaces the previous labels. Maximum of 1000 labels are allowed, each up to 36 alphanumeric characters long.","default":null,"x-example":null,"items":{"type":"string"}}},"required":["labels"]}}]}},"\/users\/{userId}\/logs":{"get":{"summary":"List user logs","operationId":"usersListLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listLogs","weight":231,"cookies":false,"type":"","demo":"users\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/users\/{userId}\/memberships":{"get":{"summary":"List user memberships","operationId":"usersListMemberships","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user membership list by its unique ID.","responses":{"200":{"description":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"listMemberships","weight":230,"cookies":false,"type":"","demo":"users\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-memberships.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]}},"\/users\/{userId}\/mfa":{"patch":{"summary":"Update MFA","operationId":"usersUpdateMfa","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateMfa","weight":244,"cookies":false,"type":"","demo":"users\/update-mfa.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-mfa.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"mfa":{"type":"boolean","description":"Enable or disable MFA.","default":null,"x-example":false}},"required":["mfa"]}}]}},"\/users\/{userId}\/mfa\/factors":{"get":{"summary":"List Factors","operationId":"usersListFactors","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"","responses":{"200":{"description":"MFAFactors","schema":{"$ref":"#\/definitions\/mfaFactors"}}},"x-appwrite":{"method":"listFactors","weight":245,"cookies":false,"type":"","demo":"users\/list-factors.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-factors.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]}},"\/users\/{userId}\/mfa\/{type}":{"delete":{"summary":"Delete Authenticator","operationId":"usersDeleteAuthenticator","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"deleteAuthenticator","weight":246,"cookies":false,"type":"","demo":"users\/delete-authenticator.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-mfa.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"type","description":"Type of authenticator.","required":true,"type":"string","x-example":"totp","enum":["totp"],"x-enum-name":null,"x-enum-keys":[],"in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"otp":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[OTP]"}},"required":["otp"]}}]}},"\/users\/{userId}\/name":{"patch":{"summary":"Update name","operationId":"usersUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user name by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateName","weight":237,"cookies":false,"type":"","demo":"users\/update-name.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-name.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"User name. Max length: 128 chars.","default":null,"x-example":"[NAME]"}},"required":["name"]}}]}},"\/users\/{userId}\/password":{"patch":{"summary":"Update password","operationId":"usersUpdatePassword","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user password by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePassword","weight":238,"cookies":false,"type":"","demo":"users\/update-password.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-password.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"password":{"type":"string","description":"New user password. Must be at least 8 chars.","default":null,"x-example":null}},"required":["password"]}}]}},"\/users\/{userId}\/phone":{"patch":{"summary":"Update phone","operationId":"usersUpdatePhone","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user phone by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePhone","weight":240,"cookies":false,"type":"","demo":"users\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"number":{"type":"string","description":"User phone number.","default":null,"x-example":"+12065550100"}},"required":["number"]}}]}},"\/users\/{userId}\/prefs":{"get":{"summary":"Get user preferences","operationId":"usersGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user preferences by its unique ID.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":227,"cookies":false,"type":"","demo":"users\/get-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]},"patch":{"summary":"Update user preferences","operationId":"usersUpdatePrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user preferences by its unique ID. The object you pass is stored as is, and replaces any previous value. The maximum allowed prefs size is 64kB and throws error if exceeded.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"updatePrefs","weight":242,"cookies":false,"type":"","demo":"users\/update-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"prefs":{"type":"object","description":"Prefs key-value JSON object.","default":{},"x-example":"{}"}},"required":["prefs"]}}]}},"\/users\/{userId}\/sessions":{"get":{"summary":"List user sessions","operationId":"usersListSessions","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user sessions list by its unique ID.","responses":{"200":{"description":"Sessions List","schema":{"$ref":"#\/definitions\/sessionList"}}},"x-appwrite":{"method":"listSessions","weight":229,"cookies":false,"type":"","demo":"users\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]},"post":{"summary":"Create session","operationId":"usersCreateSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Creates a session for a user. Returns an immediately usable session object.\n\nIf you want to generate a token for a custom authentication flow, use the [POST \/users\/{userId}\/tokens](https:\/\/appwrite.io\/docs\/server\/users#createToken) endpoint.","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"createSession","weight":247,"cookies":false,"type":"","demo":"users\/create-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-session.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]},"delete":{"summary":"Delete user sessions","operationId":"usersDeleteSessions","consumes":["application\/json"],"produces":[],"tags":["users"],"description":"Delete all user's sessions by using the user's unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":250,"cookies":false,"type":"","demo":"users\/delete-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]}},"\/users\/{userId}\/sessions\/{sessionId}":{"delete":{"summary":"Delete user session","operationId":"usersDeleteSession","consumes":["application\/json"],"produces":[],"tags":["users"],"description":"Delete a user sessions by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSession","weight":249,"cookies":false,"type":"","demo":"users\/delete-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-user-session.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"sessionId","description":"Session ID.","required":true,"type":"string","x-example":"[SESSION_ID]","in":"path"}]}},"\/users\/{userId}\/status":{"patch":{"summary":"Update user status","operationId":"usersUpdateStatus","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user status by its unique ID. Use this endpoint as an alternative to deleting a user if you want to keep user's ID reserved.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateStatus","weight":234,"cookies":false,"type":"","demo":"users\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"status":{"type":"boolean","description":"User Status. To activate the user pass `true` and to block the user pass `false`.","default":null,"x-example":false}},"required":["status"]}}]}},"\/users\/{userId}\/targets":{"get":{"summary":"List User Targets","operationId":"usersListTargets","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"","responses":{"200":{"description":"Target list","schema":{"$ref":"#\/definitions\/targetList"}}},"x-appwrite":{"method":"listTargets","weight":232,"cookies":false,"type":"","demo":"users\/list-targets.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-targets.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.read","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, email, phone, status, passwordUpdate, registration, emailVerification, phoneVerification, labels","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"post":{"summary":"Create User Target","operationId":"usersCreateTarget","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"","responses":{"201":{"description":"Target","schema":{"$ref":"#\/definitions\/target"}}},"x-appwrite":{"method":"createTarget","weight":224,"cookies":false,"type":"","demo":"users\/create-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-target.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"targetId":{"type":"string","description":"Target ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[TARGET_ID]"},"providerType":{"type":"string","description":"The target provider type. Can be one of the following: `email`, `sms` or `push`.","default":null,"x-example":"email","enum":["email","sms","push"],"x-enum-name":"MessagingProviderType","x-enum-keys":[]},"identifier":{"type":"string","description":"The target identifier (token, email, phone etc.)","default":null,"x-example":"[IDENTIFIER]"},"providerId":{"type":"string","description":"Provider ID. Message will be sent to this target from the specified provider ID. If no provider ID is set the first setup provider will be used.","default":"","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Target name. Max length: 128 chars. For example: My Awesome App Galaxy S23.","default":"","x-example":"[NAME]"}},"required":["targetId","providerType","identifier"]}}]}},"\/users\/{userId}\/targets\/{targetId}":{"get":{"summary":"Get User Target","operationId":"usersGetTarget","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"","responses":{"200":{"description":"Target","schema":{"$ref":"#\/definitions\/target"}}},"x-appwrite":{"method":"getTarget","weight":228,"cookies":false,"type":"","demo":"users\/get-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-target.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.read","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"targetId","description":"Target ID.","required":true,"type":"string","x-example":"[TARGET_ID]","in":"path"}]},"patch":{"summary":"Update User target","operationId":"usersUpdateTarget","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"","responses":{"200":{"description":"Target","schema":{"$ref":"#\/definitions\/target"}}},"x-appwrite":{"method":"updateTarget","weight":243,"cookies":false,"type":"","demo":"users\/update-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-target.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"targetId","description":"Target ID.","required":true,"type":"string","x-example":"[TARGET_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"identifier":{"type":"string","description":"The target identifier (token, email, phone etc.)","default":"","x-example":"[IDENTIFIER]"},"providerId":{"type":"string","description":"Provider ID. Message will be sent to this target from the specified provider ID. If no provider ID is set the first setup provider will be used.","default":"","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Target name. Max length: 128 chars. For example: My Awesome App Galaxy S23.","default":"","x-example":"[NAME]"}}}}]},"delete":{"summary":"Delete user target","operationId":"usersDeleteTarget","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteTarget","weight":252,"cookies":false,"type":"","demo":"users\/delete-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-target.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"targetId","description":"Target ID.","required":true,"type":"string","x-example":"[TARGET_ID]","in":"path"}]}},"\/users\/{userId}\/tokens":{"post":{"summary":"Create token","operationId":"usersCreateToken","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Returns a token with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [PUT \/account\/sessions\/custom](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateCustomSession) endpoint to complete the login process.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createToken","weight":248,"cookies":false,"type":"","demo":"users\/create-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-token.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"length":{"type":"integer","description":"Token length in characters. The default length is 6 characters","default":6,"x-example":4},"expire":{"type":"integer","description":"Token expiration period in seconds. The default expiration is 15 minutes.","default":900,"x-example":60}}}}]}},"\/users\/{userId}\/verification":{"patch":{"summary":"Update email verification","operationId":"usersUpdateEmailVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user email verification status by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateEmailVerification","weight":241,"cookies":false,"type":"","demo":"users\/update-email-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-email-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"emailVerification":{"type":"boolean","description":"User email verification status.","default":null,"x-example":false}},"required":["emailVerification"]}}]}},"\/users\/{userId}\/verification\/phone":{"patch":{"summary":"Update phone verification","operationId":"usersUpdatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user phone verification status by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePhoneVerification","weight":236,"cookies":false,"type":"","demo":"users\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"phoneVerification":{"type":"boolean","description":"User phone verification status.","default":null,"x-example":false}},"required":["phoneVerification"]}}]}},"\/vcs\/github\/installations\/{installationId}\/providerRepositories":{"get":{"summary":"List Repositories","operationId":"vcsListRepositories","consumes":["application\/json"],"produces":["application\/json"],"tags":["vcs"],"description":"","responses":{"200":{"description":"Provider Repositories List","schema":{"$ref":"#\/definitions\/providerRepositoryList"}}},"x-appwrite":{"method":"listRepositories","weight":258,"cookies":false,"type":"","demo":"vcs\/list-repositories.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"type":"string","x-example":"[INSTALLATION_ID]","in":"path"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create repository","operationId":"vcsCreateRepository","consumes":["application\/json"],"produces":["application\/json"],"tags":["vcs"],"description":"","responses":{"200":{"description":"ProviderRepository","schema":{"$ref":"#\/definitions\/providerRepository"}}},"x-appwrite":{"method":"createRepository","weight":259,"cookies":false,"type":"","demo":"vcs\/create-repository.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"type":"string","x-example":"[INSTALLATION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Repository name (slug)","default":null,"x-example":"[NAME]"},"private":{"type":"boolean","description":"Mark repository public or private","default":null,"x-example":false}},"required":["name","private"]}}]}},"\/vcs\/github\/installations\/{installationId}\/providerRepositories\/{providerRepositoryId}":{"get":{"summary":"Get repository","operationId":"vcsGetRepository","consumes":["application\/json"],"produces":["application\/json"],"tags":["vcs"],"description":"","responses":{"200":{"description":"ProviderRepository","schema":{"$ref":"#\/definitions\/providerRepository"}}},"x-appwrite":{"method":"getRepository","weight":260,"cookies":false,"type":"","demo":"vcs\/get-repository.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"type":"string","x-example":"[INSTALLATION_ID]","in":"path"},{"name":"providerRepositoryId","description":"Repository Id","required":true,"type":"string","x-example":"[PROVIDER_REPOSITORY_ID]","in":"path"}]}},"\/vcs\/github\/installations\/{installationId}\/providerRepositories\/{providerRepositoryId}\/branches":{"get":{"summary":"List Repository Branches","operationId":"vcsListRepositoryBranches","consumes":["application\/json"],"produces":["application\/json"],"tags":["vcs"],"description":"","responses":{"200":{"description":"Branches List","schema":{"$ref":"#\/definitions\/branchList"}}},"x-appwrite":{"method":"listRepositoryBranches","weight":261,"cookies":false,"type":"","demo":"vcs\/list-repository-branches.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"type":"string","x-example":"[INSTALLATION_ID]","in":"path"},{"name":"providerRepositoryId","description":"Repository Id","required":true,"type":"string","x-example":"[PROVIDER_REPOSITORY_ID]","in":"path"}]}},"\/vcs\/github\/installations\/{installationId}\/providerRepositories\/{providerRepositoryId}\/detection":{"post":{"summary":"Detect runtime settings from source code","operationId":"vcsCreateRepositoryDetection","consumes":["application\/json"],"produces":["application\/json"],"tags":["vcs"],"description":"","responses":{"200":{"description":"Detection","schema":{"$ref":"#\/definitions\/detection"}}},"x-appwrite":{"method":"createRepositoryDetection","weight":257,"cookies":false,"type":"","demo":"vcs\/create-repository-detection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"type":"string","x-example":"[INSTALLATION_ID]","in":"path"},{"name":"providerRepositoryId","description":"Repository Id","required":true,"type":"string","x-example":"[PROVIDER_REPOSITORY_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerRootDirectory":{"type":"string","description":"Path to Root Directory","default":"","x-example":"[PROVIDER_ROOT_DIRECTORY]"}}}}]}},"\/vcs\/github\/installations\/{installationId}\/repositories\/{repositoryId}":{"patch":{"summary":"Authorize external deployment","operationId":"vcsUpdateExternalDeployments","consumes":["application\/json"],"produces":[],"tags":["vcs"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"updateExternalDeployments","weight":266,"cookies":false,"type":"","demo":"vcs\/update-external-deployments.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"type":"string","x-example":"[INSTALLATION_ID]","in":"path"},{"name":"repositoryId","description":"VCS Repository Id","required":true,"type":"string","x-example":"[REPOSITORY_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerPullRequestId":{"type":"string","description":"GitHub Pull Request Id","default":null,"x-example":"[PROVIDER_PULL_REQUEST_ID]"}},"required":["providerPullRequestId"]}}]}},"\/vcs\/installations":{"get":{"summary":"List installations","operationId":"vcsListInstallations","consumes":["application\/json"],"produces":["application\/json"],"tags":["vcs"],"description":"","responses":{"200":{"description":"Installations List","schema":{"$ref":"#\/definitions\/installationList"}}},"x-appwrite":{"method":"listInstallations","weight":263,"cookies":false,"type":"","demo":"vcs\/list-installations.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/vcs\/list-installations.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: provider, organization","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]}},"\/vcs\/installations\/{installationId}":{"get":{"summary":"Get installation","operationId":"vcsGetInstallation","consumes":["application\/json"],"produces":["application\/json"],"tags":["vcs"],"description":"","responses":{"200":{"description":"Installation","schema":{"$ref":"#\/definitions\/installation"}}},"x-appwrite":{"method":"getInstallation","weight":264,"cookies":false,"type":"","demo":"vcs\/get-installation.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/vcs\/get-installation.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.read","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"type":"string","x-example":"[INSTALLATION_ID]","in":"path"}]},"delete":{"summary":"Delete Installation","operationId":"vcsDeleteInstallation","consumes":["application\/json"],"produces":[],"tags":["vcs"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteInstallation","weight":265,"cookies":false,"type":"","demo":"vcs\/delete-installation.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/vcs\/delete-installation.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"vcs.write","platforms":["console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"installationId","description":"Installation Id","required":true,"type":"string","x-example":"[INSTALLATION_ID]","in":"path"}]}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"project","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]},{"name":"proxy","description":"The Proxy Service allows you to configure actions for your domains beyond DNS configuration.","x-globalAttributes":[]},{"name":"graphql","description":"The GraphQL API allows you to query and mutate your Appwrite server using GraphQL.","x-globalAttributes":[]},{"name":"console","description":"The Console service allows you to interact with console relevant informations.","x-globalAttributes":[]},{"name":"migrations","description":"The Migrations service allows you to migrate third-party data to your Appwrite project.","x-globalAttributes":[]},{"name":"messaging","description":"The Messaging service allows you to send messages to any provider type (SMTP, push notification, SMS, etc.).","x-globalAttributes":[]}],"definitions":{"any":{"description":"Any","type":"object","additionalProperties":true},"documentList":{"description":"Documents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of documents documents that matched your query.","x-example":5,"format":"int32"},"documents":{"type":"array","description":"List of documents.","items":{"type":"object","$ref":"#\/definitions\/document"},"x-example":""}},"required":["total","documents"]},"collectionList":{"description":"Collections List","type":"object","properties":{"total":{"type":"integer","description":"Total number of collections documents that matched your query.","x-example":5,"format":"int32"},"collections":{"type":"array","description":"List of collections.","items":{"type":"object","$ref":"#\/definitions\/collection"},"x-example":""}},"required":["total","collections"]},"databaseList":{"description":"Databases List","type":"object","properties":{"total":{"type":"integer","description":"Total number of databases documents that matched your query.","x-example":5,"format":"int32"},"databases":{"type":"array","description":"List of databases.","items":{"type":"object","$ref":"#\/definitions\/database"},"x-example":""}},"required":["total","databases"]},"indexList":{"description":"Indexes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of indexes documents that matched your query.","x-example":5,"format":"int32"},"indexes":{"type":"array","description":"List of indexes.","items":{"type":"object","$ref":"#\/definitions\/index"},"x-example":""}},"required":["total","indexes"]},"userList":{"description":"Users List","type":"object","properties":{"total":{"type":"integer","description":"Total number of users documents that matched your query.","x-example":5,"format":"int32"},"users":{"type":"array","description":"List of users.","items":{"type":"object","$ref":"#\/definitions\/user"},"x-example":""}},"required":["total","users"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of sessions documents that matched your query.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"type":"object","$ref":"#\/definitions\/session"},"x-example":""}},"required":["total","sessions"]},"identityList":{"description":"Identities List","type":"object","properties":{"total":{"type":"integer","description":"Total number of identities documents that matched your query.","x-example":5,"format":"int32"},"identities":{"type":"array","description":"List of identities.","items":{"type":"object","$ref":"#\/definitions\/identity"},"x-example":""}},"required":["total","identities"]},"logList":{"description":"Logs List","type":"object","properties":{"total":{"type":"integer","description":"Total number of logs documents that matched your query.","x-example":5,"format":"int32"},"logs":{"type":"array","description":"List of logs.","items":{"type":"object","$ref":"#\/definitions\/log"},"x-example":""}},"required":["total","logs"]},"fileList":{"description":"Files List","type":"object","properties":{"total":{"type":"integer","description":"Total number of files documents that matched your query.","x-example":5,"format":"int32"},"files":{"type":"array","description":"List of files.","items":{"type":"object","$ref":"#\/definitions\/file"},"x-example":""}},"required":["total","files"]},"bucketList":{"description":"Buckets List","type":"object","properties":{"total":{"type":"integer","description":"Total number of buckets documents that matched your query.","x-example":5,"format":"int32"},"buckets":{"type":"array","description":"List of buckets.","items":{"type":"object","$ref":"#\/definitions\/bucket"},"x-example":""}},"required":["total","buckets"]},"teamList":{"description":"Teams List","type":"object","properties":{"total":{"type":"integer","description":"Total number of teams documents that matched your query.","x-example":5,"format":"int32"},"teams":{"type":"array","description":"List of teams.","items":{"type":"object","$ref":"#\/definitions\/team"},"x-example":""}},"required":["total","teams"]},"membershipList":{"description":"Memberships List","type":"object","properties":{"total":{"type":"integer","description":"Total number of memberships documents that matched your query.","x-example":5,"format":"int32"},"memberships":{"type":"array","description":"List of memberships.","items":{"type":"object","$ref":"#\/definitions\/membership"},"x-example":""}},"required":["total","memberships"]},"functionList":{"description":"Functions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of functions documents that matched your query.","x-example":5,"format":"int32"},"functions":{"type":"array","description":"List of functions.","items":{"type":"object","$ref":"#\/definitions\/function"},"x-example":""}},"required":["total","functions"]},"installationList":{"description":"Installations List","type":"object","properties":{"total":{"type":"integer","description":"Total number of installations documents that matched your query.","x-example":5,"format":"int32"},"installations":{"type":"array","description":"List of installations.","items":{"type":"object","$ref":"#\/definitions\/installation"},"x-example":""}},"required":["total","installations"]},"providerRepositoryList":{"description":"Provider Repositories List","type":"object","properties":{"total":{"type":"integer","description":"Total number of providerRepositories documents that matched your query.","x-example":5,"format":"int32"},"providerRepositories":{"type":"array","description":"List of providerRepositories.","items":{"type":"object","$ref":"#\/definitions\/providerRepository"},"x-example":""}},"required":["total","providerRepositories"]},"branchList":{"description":"Branches List","type":"object","properties":{"total":{"type":"integer","description":"Total number of branches documents that matched your query.","x-example":5,"format":"int32"},"branches":{"type":"array","description":"List of branches.","items":{"type":"object","$ref":"#\/definitions\/branch"},"x-example":""}},"required":["total","branches"]},"runtimeList":{"description":"Runtimes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of runtimes documents that matched your query.","x-example":5,"format":"int32"},"runtimes":{"type":"array","description":"List of runtimes.","items":{"type":"object","$ref":"#\/definitions\/runtime"},"x-example":""}},"required":["total","runtimes"]},"deploymentList":{"description":"Deployments List","type":"object","properties":{"total":{"type":"integer","description":"Total number of deployments documents that matched your query.","x-example":5,"format":"int32"},"deployments":{"type":"array","description":"List of deployments.","items":{"type":"object","$ref":"#\/definitions\/deployment"},"x-example":""}},"required":["total","deployments"]},"executionList":{"description":"Executions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of executions documents that matched your query.","x-example":5,"format":"int32"},"executions":{"type":"array","description":"List of executions.","items":{"type":"object","$ref":"#\/definitions\/execution"},"x-example":""}},"required":["total","executions"]},"projectList":{"description":"Projects List","type":"object","properties":{"total":{"type":"integer","description":"Total number of projects documents that matched your query.","x-example":5,"format":"int32"},"projects":{"type":"array","description":"List of projects.","items":{"type":"object","$ref":"#\/definitions\/project"},"x-example":""}},"required":["total","projects"]},"webhookList":{"description":"Webhooks List","type":"object","properties":{"total":{"type":"integer","description":"Total number of webhooks documents that matched your query.","x-example":5,"format":"int32"},"webhooks":{"type":"array","description":"List of webhooks.","items":{"type":"object","$ref":"#\/definitions\/webhook"},"x-example":""}},"required":["total","webhooks"]},"keyList":{"description":"API Keys List","type":"object","properties":{"total":{"type":"integer","description":"Total number of keys documents that matched your query.","x-example":5,"format":"int32"},"keys":{"type":"array","description":"List of keys.","items":{"type":"object","$ref":"#\/definitions\/key"},"x-example":""}},"required":["total","keys"]},"platformList":{"description":"Platforms List","type":"object","properties":{"total":{"type":"integer","description":"Total number of platforms documents that matched your query.","x-example":5,"format":"int32"},"platforms":{"type":"array","description":"List of platforms.","items":{"type":"object","$ref":"#\/definitions\/platform"},"x-example":""}},"required":["total","platforms"]},"countryList":{"description":"Countries List","type":"object","properties":{"total":{"type":"integer","description":"Total number of countries documents that matched your query.","x-example":5,"format":"int32"},"countries":{"type":"array","description":"List of countries.","items":{"type":"object","$ref":"#\/definitions\/country"},"x-example":""}},"required":["total","countries"]},"continentList":{"description":"Continents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of continents documents that matched your query.","x-example":5,"format":"int32"},"continents":{"type":"array","description":"List of continents.","items":{"type":"object","$ref":"#\/definitions\/continent"},"x-example":""}},"required":["total","continents"]},"languageList":{"description":"Languages List","type":"object","properties":{"total":{"type":"integer","description":"Total number of languages documents that matched your query.","x-example":5,"format":"int32"},"languages":{"type":"array","description":"List of languages.","items":{"type":"object","$ref":"#\/definitions\/language"},"x-example":""}},"required":["total","languages"]},"currencyList":{"description":"Currencies List","type":"object","properties":{"total":{"type":"integer","description":"Total number of currencies documents that matched your query.","x-example":5,"format":"int32"},"currencies":{"type":"array","description":"List of currencies.","items":{"type":"object","$ref":"#\/definitions\/currency"},"x-example":""}},"required":["total","currencies"]},"phoneList":{"description":"Phones List","type":"object","properties":{"total":{"type":"integer","description":"Total number of phones documents that matched your query.","x-example":5,"format":"int32"},"phones":{"type":"array","description":"List of phones.","items":{"type":"object","$ref":"#\/definitions\/phone"},"x-example":""}},"required":["total","phones"]},"variableList":{"description":"Variables List","type":"object","properties":{"total":{"type":"integer","description":"Total number of variables documents that matched your query.","x-example":5,"format":"int32"},"variables":{"type":"array","description":"List of variables.","items":{"type":"object","$ref":"#\/definitions\/variable"},"x-example":""}},"required":["total","variables"]},"proxyRuleList":{"description":"Rule List","type":"object","properties":{"total":{"type":"integer","description":"Total number of rules documents that matched your query.","x-example":5,"format":"int32"},"rules":{"type":"array","description":"List of rules.","items":{"type":"object","$ref":"#\/definitions\/proxyRule"},"x-example":""}},"required":["total","rules"]},"localeCodeList":{"description":"Locale codes list","type":"object","properties":{"total":{"type":"integer","description":"Total number of localeCodes documents that matched your query.","x-example":5,"format":"int32"},"localeCodes":{"type":"array","description":"List of localeCodes.","items":{"type":"object","$ref":"#\/definitions\/localeCode"},"x-example":""}},"required":["total","localeCodes"]},"providerList":{"description":"Provider list","type":"object","properties":{"total":{"type":"integer","description":"Total number of providers documents that matched your query.","x-example":5,"format":"int32"},"providers":{"type":"array","description":"List of providers.","items":{"type":"object","$ref":"#\/definitions\/provider"},"x-example":""}},"required":["total","providers"]},"messageList":{"description":"Message list","type":"object","properties":{"total":{"type":"integer","description":"Total number of messages documents that matched your query.","x-example":5,"format":"int32"},"messages":{"type":"array","description":"List of messages.","items":{"type":"object","$ref":"#\/definitions\/message"},"x-example":""}},"required":["total","messages"]},"topicList":{"description":"Topic list","type":"object","properties":{"total":{"type":"integer","description":"Total number of topics documents that matched your query.","x-example":5,"format":"int32"},"topics":{"type":"array","description":"List of topics.","items":{"type":"object","$ref":"#\/definitions\/topic"},"x-example":""}},"required":["total","topics"]},"subscriberList":{"description":"Subscriber list","type":"object","properties":{"total":{"type":"integer","description":"Total number of subscribers documents that matched your query.","x-example":5,"format":"int32"},"subscribers":{"type":"array","description":"List of subscribers.","items":{"type":"object","$ref":"#\/definitions\/subscriber"},"x-example":""}},"required":["total","subscribers"]},"targetList":{"description":"Target list","type":"object","properties":{"total":{"type":"integer","description":"Total number of targets documents that matched your query.","x-example":5,"format":"int32"},"targets":{"type":"array","description":"List of targets.","items":{"type":"object","$ref":"#\/definitions\/target"},"x-example":""}},"required":["total","targets"]},"migrationList":{"description":"Migrations List","type":"object","properties":{"total":{"type":"integer","description":"Total number of migrations documents that matched your query.","x-example":5,"format":"int32"},"migrations":{"type":"array","description":"List of migrations.","items":{"type":"object","$ref":"#\/definitions\/migration"},"x-example":""}},"required":["total","migrations"]},"firebaseProjectList":{"description":"Migrations Firebase Projects List","type":"object","properties":{"total":{"type":"integer","description":"Total number of projects documents that matched your query.","x-example":5,"format":"int32"},"projects":{"type":"array","description":"List of projects.","items":{"type":"object","$ref":"#\/definitions\/firebaseProject"},"x-example":""}},"required":["total","projects"]},"database":{"description":"Database","type":"object","properties":{"$id":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Database name.","x-example":"My Database"},"$createdAt":{"type":"string","description":"Database creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Database update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"enabled":{"type":"boolean","description":"If database is enabled. Can be 'enabled' or 'disabled'. When disabled, the database is inaccessible to users, but remains accessible to Server SDKs using API keys.","x-example":false}},"required":["$id","name","$createdAt","$updatedAt","enabled"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Collection creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Collection update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Collection permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled. Can be 'enabled' or 'disabled'. When disabled, the collection is inaccessible to users, but remains accessible to Server SDKs using API keys.","x-example":false},"documentSecurity":{"type":"boolean","description":"Whether document-level permissions are enabled. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":true},"attributes":{"type":"array","description":"Collection attributes.","items":{"x-anyOf":[{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeRelationship"},{"$ref":"#\/definitions\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"type":"object","$ref":"#\/definitions\/index"},"x-example":{}}},"required":["$id","$createdAt","$updatedAt","$permissions","databaseId","name","enabled","documentSecurity","attributes","indexes"]},"attributeList":{"description":"Attributes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of attributes in the given collection.","x-example":5,"format":"int32"},"attributes":{"type":"array","description":"List of attributes.","items":{"x-anyOf":[{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeRelationship"},{"$ref":"#\/definitions\/attributeString"}]},"x-example":""}},"required":["total","attributes"]},"attributeString":{"description":"AttributeString","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"fullName"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"size":{"type":"integer","description":"Attribute size.","x-example":128,"format":"int32"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"default","x-nullable":true}},"required":["key","type","status","error","required","size"]},"attributeInteger":{"description":"AttributeInteger","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"count"},"type":{"type":"string","description":"Attribute type.","x-example":"integer"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"min":{"type":"integer","description":"Minimum value to enforce for new documents.","x-example":1,"format":"int32","x-nullable":true},"max":{"type":"integer","description":"Maximum value to enforce for new documents.","x-example":10,"format":"int32","x-nullable":true},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":10,"format":"int32","x-nullable":true}},"required":["key","type","status","error","required"]},"attributeFloat":{"description":"AttributeFloat","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"percentageCompleted"},"type":{"type":"string","description":"Attribute type.","x-example":"double"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"min":{"type":"number","description":"Minimum value to enforce for new documents.","x-example":1.5,"format":"double","x-nullable":true},"max":{"type":"number","description":"Maximum value to enforce for new documents.","x-example":10.5,"format":"double","x-nullable":true},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":2.5,"format":"double","x-nullable":true}},"required":["key","type","status","error","required"]},"attributeBoolean":{"description":"AttributeBoolean","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"isEnabled"},"type":{"type":"string","description":"Attribute type.","x-example":"boolean"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":false,"x-nullable":true}},"required":["key","type","status","error","required"]},"attributeEmail":{"description":"AttributeEmail","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"userEmail"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"format":{"type":"string","description":"String format.","x-example":"email"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"default@example.com","x-nullable":true}},"required":["key","type","status","error","required","format"]},"attributeEnum":{"description":"AttributeEnum","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"status"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"elements":{"type":"array","description":"Array of elements in enumerated type.","items":{"type":"string"},"x-example":"element"},"format":{"type":"string","description":"String format.","x-example":"enum"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"element","x-nullable":true}},"required":["key","type","status","error","required","elements","format"]},"attributeIp":{"description":"AttributeIP","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"ipAddress"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"format":{"type":"string","description":"String format.","x-example":"ip"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"192.0.2.0","x-nullable":true}},"required":["key","type","status","error","required","format"]},"attributeUrl":{"description":"AttributeURL","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"githubUrl"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"format":{"type":"string","description":"String format.","x-example":"url"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"http:\/\/example.com","x-nullable":true}},"required":["key","type","status","error","required","format"]},"attributeDatetime":{"description":"AttributeDatetime","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"birthDay"},"type":{"type":"string","description":"Attribute type.","x-example":"datetime"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"format":{"type":"string","description":"ISO 8601 format.","x-example":"datetime"},"default":{"type":"string","description":"Default value for attribute when not provided. Only null is optional","x-example":"2020-10-15T06:38:00.000+00:00","x-nullable":true}},"required":["key","type","status","error","required","format"]},"attributeRelationship":{"description":"AttributeRelationship","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"fullName"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"relatedCollection":{"type":"string","description":"The ID of the related collection.","x-example":"collection"},"relationType":{"type":"string","description":"The type of the relationship.","x-example":"oneToOne|oneToMany|manyToOne|manyToMany"},"twoWay":{"type":"boolean","description":"Is the relationship two-way?","x-example":false},"twoWayKey":{"type":"string","description":"The key of the two-way relationship.","x-example":"string"},"onDelete":{"type":"string","description":"How deleting the parent document will propagate to child documents.","x-example":"restrict|cascade|setNull"},"side":{"type":"string","description":"Whether this is the parent or child side of the relationship","x-example":"parent|child"}},"required":["key","type","status","error","required","relatedCollection","relationType","twoWay","twoWayKey","onDelete","side"]},"index":{"description":"Index","type":"object","properties":{"key":{"type":"string","description":"Index Key.","x-example":"index1"},"type":{"type":"string","description":"Index type.","x-example":"primary"},"status":{"type":"string","description":"Index status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an index.","x-example":"string"},"attributes":{"type":"array","description":"Index attributes.","items":{"type":"string"},"x-example":[]},"orders":{"type":"array","description":"Index orders.","items":{"type":"string"},"x-example":[],"x-nullable":true}},"required":["key","type","status","error","attributes"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"user":{"description":"User","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"password":{"type":"string","description":"Hashed user password.","x-example":"$argon2id$v=19$m=2048,t=4,p=3$aUZjLnliVWRINmFNTWMudg$5S+x+7uA31xFnrHFT47yFwcJeaP0w92L\/4LdgrVRXxE","x-nullable":true},"hash":{"type":"string","description":"Password hashing algorithm.","x-example":"argon2","x-nullable":true},"hashOptions":{"type":"object","description":"Password hashing algorithm configuration.","x-example":{},"items":{"x-oneOf":[{"$ref":"#\/definitions\/algoArgon2"},{"$ref":"#\/definitions\/algoScrypt"},{"$ref":"#\/definitions\/algoScryptModified"},{"$ref":"#\/definitions\/algoBcrypt"},{"$ref":"#\/definitions\/algoPhpass"},{"$ref":"#\/definitions\/algoSha"},{"$ref":"#\/definitions\/algoMd5"}]},"x-nullable":true},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"labels":{"type":"array","description":"Labels for the user.","items":{"type":"string"},"x-example":["vip"]},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"mfa":{"type":"boolean","description":"Multi factor authentication status.","x-example":true},"totp":{"type":"boolean","description":"TOTP status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"type":"object","$ref":"#\/definitions\/preferences"}},"targets":{"type":"array","description":"A user-owned message receiver. A single user may have multiple e.g. emails, phones, and a browser. Each target is registered with a single provider.","items":{"type":"object","$ref":"#\/definitions\/target"},"x-example":[]},"accessedAt":{"type":"string","description":"Most recent access date in ISO 8601 format. This attribute is only updated again after 24 hours.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","$updatedAt","name","registration","status","labels","passwordUpdate","email","phone","emailVerification","phoneVerification","mfa","totp","prefs","targets","accessedAt"]},"algoMd5":{"description":"AlgoMD5","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"md5"}},"required":["type"]},"algoSha":{"description":"AlgoSHA","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"sha"}},"required":["type"]},"algoPhpass":{"description":"AlgoPHPass","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"phpass"}},"required":["type"]},"algoBcrypt":{"description":"AlgoBcrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"bcrypt"}},"required":["type"]},"algoScrypt":{"description":"AlgoScrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scrypt"},"costCpu":{"type":"integer","description":"CPU complexity of computed hash.","x-example":8,"format":"int32"},"costMemory":{"type":"integer","description":"Memory complexity of computed hash.","x-example":14,"format":"int32"},"costParallel":{"type":"integer","description":"Parallelization of computed hash.","x-example":1,"format":"int32"},"length":{"type":"integer","description":"Length used to compute hash.","x-example":64,"format":"int32"}},"required":["type","costCpu","costMemory","costParallel","length"]},"algoScryptModified":{"description":"AlgoScryptModified","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scryptMod"},"salt":{"type":"string","description":"Salt used to compute hash.","x-example":"UxLMreBr6tYyjQ=="},"saltSeparator":{"type":"string","description":"Separator used to compute hash.","x-example":"Bw=="},"signerKey":{"type":"string","description":"Key used to compute hash.","x-example":"XyEKE9RcTDeLEsL\/RjwPDBv\/RqDl8fb3gpYEOQaPihbxf1ZAtSOHCjuAAa7Q3oHpCYhXSN9tizHgVOwn6krflQ=="}},"required":["type","salt","saltSeparator","signerKey"]},"algoArgon2":{"description":"AlgoArgon2","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"argon2"},"memoryCost":{"type":"integer","description":"Memory used to compute hash.","x-example":65536,"format":"int32"},"timeCost":{"type":"integer","description":"Amount of time consumed to compute hash","x-example":4,"format":"int32"},"threads":{"type":"integer","description":"Number of threads used to compute hash.","x-example":3,"format":"int32"}},"required":["type","memoryCost","timeCost","threads"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true},"factors":{"type":"array","description":"Returns a list of active session factors.","items":{"type":"string"},"x-example":["email"]},"secret":{"type":"string","description":"Secret used to authenticate the user. Only included if the request was made with an API key","x-example":"5e5bb8c16897e"}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current","factors","secret"]},"identity":{"description":"Identity","type":"object","properties":{"$id":{"type":"string","description":"Identity ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Identity creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Identity update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"provider":{"type":"string","description":"Identity Provider.","x-example":"email"},"providerUid":{"type":"string","description":"ID of the User in the Identity Provider.","x-example":"5e5bb8c16897e"},"providerEmail":{"type":"string","description":"Email of the User in the Identity Provider.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Identity Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Identity Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"}},"required":["$id","$createdAt","$updatedAt","userId","provider","providerUid","providerEmail","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"phrase":{"type":"string","description":"Security phrase of a token. Empty if security phrase was not requested when creating a token. It includes randomly generated phrase which is also sent in the external resource such as email.","x-example":"Golden Fox"}},"required":["$id","$createdAt","userId","secret","expire","phrase"]},"jwt":{"description":"JWT","type":"object","properties":{"jwt":{"type":"string","description":"JWT encoded string.","x-example":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c"}},"required":["jwt"]},"locale":{"description":"Locale","type":"object","properties":{"ip":{"type":"string","description":"User IP address.","x-example":"127.0.0.1"},"countryCode":{"type":"string","description":"Country code in [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) two-character format","x-example":"US"},"country":{"type":"string","description":"Country name. This field support localization.","x-example":"United States"},"continentCode":{"type":"string","description":"Continent code. A two character continent code \"AF\" for Africa, \"AN\" for Antarctica, \"AS\" for Asia, \"EU\" for Europe, \"NA\" for North America, \"OC\" for Oceania, and \"SA\" for South America.","x-example":"NA"},"continent":{"type":"string","description":"Continent name. This field support localization.","x-example":"North America"},"eu":{"type":"boolean","description":"True if country is part of the European Union.","x-example":false},"currency":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format","x-example":"USD"}},"required":["ip","countryCode","country","continentCode","continent","eu","currency"]},"localeCode":{"description":"LocaleCode","type":"object","properties":{"code":{"type":"string","description":"Locale codes in [ISO 639-1](https:\/\/en.wikipedia.org\/wiki\/List_of_ISO_639-1_codes)","x-example":"en-us"},"name":{"type":"string","description":"Locale name","x-example":"US"}},"required":["code","name"]},"file":{"description":"File","type":"object","properties":{"$id":{"type":"string","description":"File ID.","x-example":"5e5ea5c16897e"},"bucketId":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Bucket creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Bucket update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Bucket permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"fileSecurity":{"type":"boolean","description":"Whether file-level security is enabled. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":true},"name":{"type":"string","description":"Bucket name.","x-example":"Documents"},"enabled":{"type":"boolean","description":"Bucket enabled.","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size supported.","x-example":100,"format":"int32"},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions.","items":{"type":"string"},"x-example":["jpg","png"]},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Will be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd).","x-example":"gzip"},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$createdAt","$updatedAt","$permissions","fileSecurity","name","enabled","maximumFileSize","allowedFileExtensions","compression","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"},"prefs":{"type":"object","description":"Team preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"type":"object","$ref":"#\/definitions\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","total","prefs"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"mfa":{"type":"boolean","description":"Multi factor authentication status, true if the user has MFA enabled or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":["owner"]}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","mfa","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Function creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Function update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"users"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"enabled":{"type":"boolean","description":"Function enabled.","x-example":false},"live":{"type":"boolean","description":"Is the function deployed with the latest configuration? This is set to false if you've changed an environment variables, entrypoint, commands, or other settings that needs redeploy to be applied. When the value is false, redeploy the function to update it with the latest configuration.","x-example":false},"logging":{"type":"boolean","description":"Whether executions will be logged. When set to false, executions will not be logged, but will reduce resource used by your Appwrite project.","x-example":false},"runtime":{"type":"string","description":"Function execution runtime.","x-example":"python-3.8"},"deployment":{"type":"string","description":"Function's active deployment ID.","x-example":"5e5ea5c16897e"},"vars":{"type":"array","description":"Function variables.","items":{"type":"object","$ref":"#\/definitions\/variable"},"x-example":[]},"events":{"type":"array","description":"Function trigger events.","items":{"type":"string"},"x-example":"account.create"},"schedule":{"type":"string","description":"Function execution schedult in CRON format.","x-example":"5 4 * * *"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":300,"format":"int32"},"entrypoint":{"type":"string","description":"The entrypoint file used to execute the deployment.","x-example":"index.js"},"commands":{"type":"string","description":"The build command used to build the deployment.","x-example":"npm install"},"version":{"type":"string","description":"Version of Open Runtimes used for the function.","x-example":"v2"},"installationId":{"type":"string","description":"Function VCS (Version Control System) installation id.","x-example":"6m40at4ejk5h2u9s1hboo"},"providerRepositoryId":{"type":"string","description":"VCS (Version Control System) Repository ID","x-example":"appwrite"},"providerBranch":{"type":"string","description":"VCS (Version Control System) branch name","x-example":"main"},"providerRootDirectory":{"type":"string","description":"Path to function in VCS (Version Control System) repository","x-example":"functions\/helloWorld"},"providerSilentMode":{"type":"boolean","description":"Is VCS (Version Control System) connection is in silent mode? When in silence mode, no comments will be posted on the repository pull or merge requests","x-example":false}},"required":["$id","$createdAt","$updatedAt","execute","name","enabled","live","logging","runtime","deployment","vars","events","schedule","timeout","entrypoint","commands","version","installationId","providerRepositoryId","providerBranch","providerRootDirectory","providerSilentMode"]},"installation":{"description":"Installation","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Function creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Function update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"VCS (Version Control System) provider name.","x-example":"github"},"organization":{"type":"string","description":"VCS (Version Control System) organization name.","x-example":"appwrite"},"providerInstallationId":{"type":"string","description":"VCS (Version Control System) installation ID.","x-example":"5322"}},"required":["$id","$createdAt","$updatedAt","provider","organization","providerInstallationId"]},"providerRepository":{"description":"ProviderRepository","type":"object","properties":{"id":{"type":"string","description":"VCS (Version Control System) repository ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"VCS (Version Control System) repository name.","x-example":"appwrite"},"organization":{"type":"string","description":"VCS (Version Control System) organization name","x-example":"appwrite"},"provider":{"type":"string","description":"VCS (Version Control System) provider name.","x-example":"github"},"private":{"type":"boolean","description":"Is VCS (Version Control System) repository private?","x-example":true},"runtime":{"type":"string","description":"Auto-detected runtime suggestion. Empty if getting response of getRuntime().","x-example":"node"},"pushedAt":{"type":"string","description":"Last commit date in ISO 8601 format.","x-example":"datetime"}},"required":["id","name","organization","provider","private","runtime","pushedAt"]},"detection":{"description":"Detection","type":"object","properties":{"runtime":{"type":"string","description":"Runtime","x-example":"node"}},"required":["runtime"]},"branch":{"description":"Branch","type":"object","properties":{"name":{"type":"string","description":"Branch Name.","x-example":"main"}},"required":["name"]},"runtime":{"description":"Runtime","type":"object","properties":{"$id":{"type":"string","description":"Runtime ID.","x-example":"python-3.8"},"name":{"type":"string","description":"Runtime Name.","x-example":"Python"},"version":{"type":"string","description":"Runtime version.","x-example":"3.8"},"base":{"type":"string","description":"Base Docker image used to build the runtime.","x-example":"python:3.8-alpine"},"image":{"type":"string","description":"Image name of Docker Hub.","x-example":"appwrite\\\/runtime-for-python:3.8"},"logo":{"type":"string","description":"Name of the logo image.","x-example":"python.png"},"supports":{"type":"array","description":"List of supported architectures.","items":{"type":"string"},"x-example":"amd64"}},"required":["$id","name","version","base","image","logo","supports"]},"deployment":{"description":"Deployment","type":"object","properties":{"$id":{"type":"string","description":"Deployment ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Deployment creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Deployment update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"type":{"type":"string","description":"Type of deployment.","x-example":"vcs"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"index.js"},"size":{"type":"integer","description":"The code size in bytes.","x-example":128,"format":"int32"},"buildId":{"type":"string","description":"The current build ID.","x-example":"5e5ea5c16897e"},"activate":{"type":"boolean","description":"Whether the deployment should be automatically activated.","x-example":true},"status":{"type":"string","description":"The deployment status. Possible values are \"processing\", \"building\", \"waiting\", \"ready\", and \"failed\".","x-example":"ready"},"buildLogs":{"type":"string","description":"The build logs.","x-example":"Compiling source files..."},"buildTime":{"type":"integer","description":"The current build time in seconds.","x-example":128,"format":"int32"},"providerRepositoryName":{"type":"string","description":"The name of the vcs provider repository","x-example":"database"},"providerRepositoryOwner":{"type":"string","description":"The name of the vcs provider repository owner","x-example":"utopia"},"providerRepositoryUrl":{"type":"string","description":"The url of the vcs provider repository","x-example":"https:\/\/github.com\/vermakhushboo\/g4-node-function"},"providerBranch":{"type":"string","description":"The branch of the vcs repository","x-example":"0.7.x"},"providerCommitHash":{"type":"string","description":"The commit hash of the vcs commit","x-example":"7c3f25d"},"providerCommitAuthorUrl":{"type":"string","description":"The url of vcs commit author","x-example":"https:\/\/github.com\/vermakhushboo"},"providerCommitAuthor":{"type":"string","description":"The name of vcs commit author","x-example":"Khushboo Verma"},"providerCommitMessage":{"type":"string","description":"The commit message","x-example":"Update index.js"},"providerCommitUrl":{"type":"string","description":"The url of the vcs commit","x-example":"https:\/\/github.com\/vermakhushboo\/g4-node-function\/commit\/60c0416257a9cbcdd96b2d370c38d8f8d150ccfb"},"providerBranchUrl":{"type":"string","description":"The branch of the vcs repository","x-example":"https:\/\/github.com\/vermakhushboo\/appwrite\/tree\/0.7.x"}},"required":["$id","$createdAt","$updatedAt","type","resourceId","resourceType","entrypoint","size","buildId","activate","status","buildLogs","buildTime","providerRepositoryName","providerRepositoryOwner","providerRepositoryUrl","providerBranch","providerCommitHash","providerCommitAuthorUrl","providerCommitAuthor","providerCommitMessage","providerCommitUrl","providerBranchUrl"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"requestMethod":{"type":"string","description":"HTTP request method type.","x-example":"GET"},"requestPath":{"type":"string","description":"HTTP request path and query.","x-example":"\/articles?id=5"},"requestHeaders":{"type":"array","description":"HTTP response headers as a key-value object. This will return only whitelisted headers. All headers are returned if execution is created as synchronous.","items":{"type":"object","$ref":"#\/definitions\/headers"},"x-example":[{"Content-Type":"application\/json"}]},"responseStatusCode":{"type":"integer","description":"HTTP response status code.","x-example":200,"format":"int32"},"responseBody":{"type":"string","description":"HTTP response body. This will return empty unless execution is created as synchronous.","x-example":"Developers are awesome."},"responseHeaders":{"type":"array","description":"HTTP response headers as a key-value object. This will return only whitelisted headers. All headers are returned if execution is created as synchronous.","items":{"type":"object","$ref":"#\/definitions\/headers"},"x-example":[{"Content-Type":"application\/json"}]},"logs":{"type":"string","description":"Function logs. Includes the last 4,000 characters. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"errors":{"type":"string","description":"Function errors. Includes the last 4,000 characters. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"Function execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","requestMethod","requestPath","requestHeaders","responseStatusCode","responseBody","responseHeaders","logs","errors","duration"]},"project":{"description":"Project","type":"object","properties":{"$id":{"type":"string","description":"Project ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Project creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Project update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Project name.","x-example":"New Project"},"description":{"type":"string","description":"Project description.","x-example":"This is a new project."},"teamId":{"type":"string","description":"Project team ID.","x-example":"1592981250"},"logo":{"type":"string","description":"Project logo file ID.","x-example":"5f5c451b403cb"},"url":{"type":"string","description":"Project website URL.","x-example":"5f5c451b403cb"},"legalName":{"type":"string","description":"Company legal name.","x-example":"Company LTD."},"legalCountry":{"type":"string","description":"Country code in [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) two-character format.","x-example":"US"},"legalState":{"type":"string","description":"State name.","x-example":"New York"},"legalCity":{"type":"string","description":"City name.","x-example":"New York City."},"legalAddress":{"type":"string","description":"Company Address.","x-example":"620 Eighth Avenue, New York, NY 10018"},"legalTaxId":{"type":"string","description":"Company Tax ID.","x-example":"131102020"},"authDuration":{"type":"integer","description":"Session duration in seconds.","x-example":60,"format":"int32"},"authLimit":{"type":"integer","description":"Max users allowed. 0 is unlimited.","x-example":100,"format":"int32"},"authSessionsLimit":{"type":"integer","description":"Max sessions allowed per user. 100 maximum.","x-example":10,"format":"int32"},"authPasswordHistory":{"type":"integer","description":"Max allowed passwords in the history list per user. Max passwords limit allowed in history is 20. Use 0 for disabling password history.","x-example":5,"format":"int32"},"authPasswordDictionary":{"type":"boolean","description":"Whether or not to check user's password against most commonly used passwords.","x-example":true},"authPersonalDataCheck":{"type":"boolean","description":"Whether or not to check the user password for similarity with their personal data.","x-example":true},"oAuthProviders":{"type":"array","description":"List of Auth Providers.","items":{"type":"object","$ref":"#\/definitions\/authProvider"},"x-example":[{}]},"platforms":{"type":"array","description":"List of Platforms.","items":{"type":"object","$ref":"#\/definitions\/platform"},"x-example":{}},"webhooks":{"type":"array","description":"List of Webhooks.","items":{"type":"object","$ref":"#\/definitions\/webhook"},"x-example":{}},"keys":{"type":"array","description":"List of API Keys.","items":{"type":"object","$ref":"#\/definitions\/key"},"x-example":{}},"smtpEnabled":{"type":"boolean","description":"Status for custom SMTP","x-example":false},"smtpSenderName":{"type":"string","description":"SMTP sender name","x-example":"John Appwrite"},"smtpSenderEmail":{"type":"string","description":"SMTP sender email","x-example":"john@appwrite.io"},"smtpReplyTo":{"type":"string","description":"SMTP reply to email","x-example":"support@appwrite.io"},"smtpHost":{"type":"string","description":"SMTP server host name","x-example":"mail.appwrite.io"},"smtpPort":{"type":"integer","description":"SMTP server port","x-example":25,"format":"int32"},"smtpUsername":{"type":"string","description":"SMTP server username","x-example":"emailuser"},"smtpPassword":{"type":"string","description":"SMTP server password","x-example":"securepassword"},"smtpSecure":{"type":"string","description":"SMTP server secure protocol","x-example":"tls"},"authEmailPassword":{"type":"boolean","description":"Email\/Password auth method status","x-example":true},"authUsersAuthMagicURL":{"type":"boolean","description":"Magic URL auth method status","x-example":true},"authEmailOtp":{"type":"boolean","description":"Email (OTP) auth method status","x-example":true},"authAnonymous":{"type":"boolean","description":"Anonymous auth method status","x-example":true},"authInvites":{"type":"boolean","description":"Invites auth method status","x-example":true},"authJWT":{"type":"boolean","description":"JWT auth method status","x-example":true},"authPhone":{"type":"boolean","description":"Phone auth method status","x-example":true},"serviceStatusForAccount":{"type":"boolean","description":"Account service status","x-example":true},"serviceStatusForAvatars":{"type":"boolean","description":"Avatars service status","x-example":true},"serviceStatusForDatabases":{"type":"boolean","description":"Databases service status","x-example":true},"serviceStatusForLocale":{"type":"boolean","description":"Locale service status","x-example":true},"serviceStatusForHealth":{"type":"boolean","description":"Health service status","x-example":true},"serviceStatusForStorage":{"type":"boolean","description":"Storage service status","x-example":true},"serviceStatusForTeams":{"type":"boolean","description":"Teams service status","x-example":true},"serviceStatusForUsers":{"type":"boolean","description":"Users service status","x-example":true},"serviceStatusForFunctions":{"type":"boolean","description":"Functions service status","x-example":true},"serviceStatusForGraphql":{"type":"boolean","description":"GraphQL service status","x-example":true},"serviceStatusForMessaging":{"type":"boolean","description":"Messaging service status","x-example":true}},"required":["$id","$createdAt","$updatedAt","name","description","teamId","logo","url","legalName","legalCountry","legalState","legalCity","legalAddress","legalTaxId","authDuration","authLimit","authSessionsLimit","authPasswordHistory","authPasswordDictionary","authPersonalDataCheck","oAuthProviders","platforms","webhooks","keys","smtpEnabled","smtpSenderName","smtpSenderEmail","smtpReplyTo","smtpHost","smtpPort","smtpUsername","smtpPassword","smtpSecure","authEmailPassword","authUsersAuthMagicURL","authEmailOtp","authAnonymous","authInvites","authJWT","authPhone","serviceStatusForAccount","serviceStatusForAvatars","serviceStatusForDatabases","serviceStatusForLocale","serviceStatusForHealth","serviceStatusForStorage","serviceStatusForTeams","serviceStatusForUsers","serviceStatusForFunctions","serviceStatusForGraphql","serviceStatusForMessaging"]},"webhook":{"description":"Webhook","type":"object","properties":{"$id":{"type":"string","description":"Webhook ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Webhook creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Webhook update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Webhook name.","x-example":"My Webhook"},"url":{"type":"string","description":"Webhook URL endpoint.","x-example":"https:\/\/example.com\/webhook"},"events":{"type":"array","description":"Webhook trigger events.","items":{"type":"string"},"x-example":"database.collections.update"},"security":{"type":"boolean","description":"Indicated if SSL \/ TLS Certificate verification is enabled.","x-example":true},"httpUser":{"type":"string","description":"HTTP basic authentication username.","x-example":"username"},"httpPass":{"type":"string","description":"HTTP basic authentication password.","x-example":"password"},"signatureKey":{"type":"string","description":"Signature key which can be used to validated incoming","x-example":"ad3d581ca230e2b7059c545e5a"},"enabled":{"type":"boolean","description":"Indicates if this webhook is enabled.","x-example":true},"logs":{"type":"string","description":"Webhook error logs from the most recent failure.","x-example":"Failed to connect to remote server."},"attempts":{"type":"integer","description":"Number of consecutive failed webhook attempts.","x-example":10,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","name","url","events","security","httpUser","httpPass","signatureKey","enabled","logs","attempts"]},"key":{"description":"Key","type":"object","properties":{"$id":{"type":"string","description":"Key ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Key creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Key update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Key name.","x-example":"My API Key"},"expire":{"type":"string","description":"Key expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"scopes":{"type":"array","description":"Allowed permission scopes.","items":{"type":"string"},"x-example":"users.read"},"secret":{"type":"string","description":"Secret key.","x-example":"919c2d18fb5d4...a2ae413da83346ad2"},"accessedAt":{"type":"string","description":"Most recent access date in ISO 8601 format. This attribute is only updated again after 24 hours.","x-example":"2020-10-15T06:38:00.000+00:00"},"sdks":{"type":"array","description":"List of SDK user agents that used this key.","items":{"type":"string"},"x-example":"appwrite:flutter"}},"required":["$id","$createdAt","$updatedAt","name","expire","scopes","secret","accessedAt","sdks"]},"authProvider":{"description":"AuthProvider","type":"object","properties":{"key":{"type":"string","description":"Auth Provider.","x-example":"github"},"name":{"type":"string","description":"Auth Provider name.","x-example":"GitHub"},"appId":{"type":"string","description":"OAuth 2.0 application ID.","x-example":"259125845563242502"},"secret":{"type":"string","description":"OAuth 2.0 application secret. Might be JSON string if provider requires extra configuration.","x-example":"Bpw_g9c2TGXxfgLshDbSaL8tsCcqgczQ"},"enabled":{"type":"boolean","description":"Auth Provider is active and can be used to create session.","x-example":""}},"required":["key","name","appId","secret","enabled"]},"platform":{"description":"Platform","type":"object","properties":{"$id":{"type":"string","description":"Platform ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Platform creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Platform update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Platform name.","x-example":"My Web App"},"type":{"type":"string","description":"Platform type. Possible values are: web, flutter-web, flutter-ios, flutter-android, ios, android, and unity.","x-example":"web"},"key":{"type":"string","description":"Platform Key. iOS bundle ID or Android package name. Empty string for other platforms.","x-example":"com.company.appname"},"store":{"type":"string","description":"App store or Google Play store ID.","x-example":""},"hostname":{"type":"string","description":"Web app hostname. Empty string for other platforms.","x-example":true},"httpUser":{"type":"string","description":"HTTP basic authentication username.","x-example":"username"},"httpPass":{"type":"string","description":"HTTP basic authentication password.","x-example":"password"}},"required":["$id","$createdAt","$updatedAt","name","type","key","store","hostname","httpUser","httpPass"]},"variable":{"description":"Variable","type":"object","properties":{"$id":{"type":"string","description":"Variable ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"key":{"type":"string","description":"Variable key.","x-example":"API_KEY"},"value":{"type":"string","description":"Variable value.","x-example":"myPa$$word1"},"resourceType":{"type":"string","description":"Service to which the variable belongs. Possible values are \"project\", \"function\"","x-example":"function"},"resourceId":{"type":"string","description":"ID of resource to which the variable belongs. If resourceType is \"project\", it is empty. If resourceType is \"function\", it is ID of the function.","x-example":"myAwesomeFunction"}},"required":["$id","$createdAt","$updatedAt","key","value","resourceType","resourceId"]},"country":{"description":"Country","type":"object","properties":{"name":{"type":"string","description":"Country name.","x-example":"United States"},"code":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"}},"required":["name","code"]},"continent":{"description":"Continent","type":"object","properties":{"name":{"type":"string","description":"Continent name.","x-example":"Europe"},"code":{"type":"string","description":"Continent two letter code.","x-example":"EU"}},"required":["name","code"]},"language":{"description":"Language","type":"object","properties":{"name":{"type":"string","description":"Language name.","x-example":"Italian"},"code":{"type":"string","description":"Language two-character ISO 639-1 codes.","x-example":"it"},"nativeName":{"type":"string","description":"Language native name.","x-example":"Italiano"}},"required":["name","code","nativeName"]},"currency":{"description":"Currency","type":"object","properties":{"symbol":{"type":"string","description":"Currency symbol.","x-example":"$"},"name":{"type":"string","description":"Currency name.","x-example":"US dollar"},"symbolNative":{"type":"string","description":"Currency native symbol.","x-example":"$"},"decimalDigits":{"type":"integer","description":"Number of decimal digits.","x-example":2,"format":"int32"},"rounding":{"type":"number","description":"Currency digit rounding.","x-example":0,"format":"double"},"code":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format.","x-example":"USD"},"namePlural":{"type":"string","description":"Currency plural name","x-example":"US dollars"}},"required":["symbol","name","symbolNative","decimalDigits","rounding","code","namePlural"]},"phone":{"description":"Phone","type":"object","properties":{"code":{"type":"string","description":"Phone code.","x-example":"+1"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["code","countryCode","countryName"]},"healthAntivirus":{"description":"Health Antivirus","type":"object","properties":{"version":{"type":"string","description":"Antivirus version.","x-example":"1.0.0"},"status":{"type":"string","description":"Antivirus status. Possible values can are: `disabled`, `offline`, `online`","x-example":"online"}},"required":["version","status"]},"healthQueue":{"description":"Health Queue","type":"object","properties":{"size":{"type":"integer","description":"Amount of actions in the queue.","x-example":8,"format":"int32"}},"required":["size"]},"healthStatus":{"description":"Health Status","type":"object","properties":{"name":{"type":"string","description":"Name of the service.","x-example":"database"},"ping":{"type":"integer","description":"Duration in milliseconds how long the health check took.","x-example":128,"format":"int32"},"status":{"type":"string","description":"Service status. Possible values can are: `pass`, `fail`","x-example":"pass"}},"required":["name","ping","status"]},"healthCertificate":{"description":"Health Certificate","type":"object","properties":{"name":{"type":"string","description":"Certificate name","x-example":"\/CN=www.google.com"},"subjectSN":{"type":"string","description":"Subject SN","x-example":""},"issuerOrganisation":{"type":"string","description":"Issuer organisation","x-example":""},"validFrom":{"type":"string","description":"Valid from","x-example":"1704200998"},"validTo":{"type":"string","description":"Valid to","x-example":"1711458597"},"signatureTypeSN":{"type":"string","description":"Signature type SN","x-example":"RSA-SHA256"}},"required":["name","subjectSN","issuerOrganisation","validFrom","validTo","signatureTypeSN"]},"healthTime":{"description":"Health Time","type":"object","properties":{"remoteTime":{"type":"integer","description":"Current unix timestamp on trustful remote server.","x-example":1639490751,"format":"int32"},"localTime":{"type":"integer","description":"Current unix timestamp of local server where Appwrite runs.","x-example":1639490844,"format":"int32"},"diff":{"type":"integer","description":"Difference of unix remote and local timestamps in milliseconds.","x-example":93,"format":"int32"}},"required":["remoteTime","localTime","diff"]},"metric":{"description":"Metric","type":"object","properties":{"value":{"type":"integer","description":"The value of this metric at the timestamp.","x-example":1,"format":"int32"},"date":{"type":"string","description":"The date at which this metric was aggregated in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["value","date"]},"metricBreakdown":{"description":"Metric Breakdown","type":"object","properties":{"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Resource name.","x-example":"Documents"},"value":{"type":"integer","description":"The value of this metric at the timestamp.","x-example":1,"format":"int32"}},"required":["resourceId","name","value"]},"usageDatabases":{"description":"UsageDatabases","type":"object","properties":{"range":{"type":"string","description":"Time range of the usage stats.","x-example":"30d"},"databasesTotal":{"type":"integer","description":"Total aggregated number of databases.","x-example":0,"format":"int32"},"collectionsTotal":{"type":"integer","description":"Total aggregated number of collections.","x-example":0,"format":"int32"},"documentsTotal":{"type":"integer","description":"Total aggregated number of documents.","x-example":0,"format":"int32"},"databases":{"type":"array","description":"Aggregated number of databases per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collections":{"type":"array","description":"Aggregated number of collections per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documents":{"type":"array","description":"Aggregated number of documents per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","databasesTotal","collectionsTotal","documentsTotal","databases","collections","documents"]},"usageDatabase":{"description":"UsageDatabase","type":"object","properties":{"range":{"type":"string","description":"Time range of the usage stats.","x-example":"30d"},"collectionsTotal":{"type":"integer","description":"Total aggregated number of collections.","x-example":0,"format":"int32"},"documentsTotal":{"type":"integer","description":"Total aggregated number of documents.","x-example":0,"format":"int32"},"collections":{"type":"array","description":"Aggregated number of collections per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documents":{"type":"array","description":"Aggregated number of documents per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","collectionsTotal","documentsTotal","collections","documents"]},"usageCollection":{"description":"UsageCollection","type":"object","properties":{"range":{"type":"string","description":"Time range of the usage stats.","x-example":"30d"},"documentsTotal":{"type":"integer","description":"Total aggregated number of of documents.","x-example":0,"format":"int32"},"documents":{"type":"array","description":"Aggregated number of documents per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","documentsTotal","documents"]},"usageUsers":{"description":"UsageUsers","type":"object","properties":{"range":{"type":"string","description":"Time range of the usage stats.","x-example":"30d"},"usersTotal":{"type":"integer","description":"Total aggregated number of statistics of users.","x-example":0,"format":"int32"},"sessionsTotal":{"type":"integer","description":"Total aggregated number of active sessions.","x-example":0,"format":"int32"},"users":{"type":"array","description":"Aggregated number of users per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"sessions":{"type":"array","description":"Aggregated number of active sessions per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","usersTotal","sessionsTotal","users","sessions"]},"usageStorage":{"description":"StorageUsage","type":"object","properties":{"range":{"type":"string","description":"Time range of the usage stats.","x-example":"30d"},"bucketsTotal":{"type":"integer","description":"Total aggregated number of buckets","x-example":0,"format":"int32"},"filesTotal":{"type":"integer","description":"Total aggregated number of files.","x-example":0,"format":"int32"},"filesStorageTotal":{"type":"integer","description":"Total aggregated number of files storage (in bytes).","x-example":0,"format":"int32"},"buckets":{"type":"array","description":"Aggregated number of buckets per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"files":{"type":"array","description":"Aggregated number of files per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"storage":{"type":"array","description":"Aggregated number of files storage (in bytes) per period .","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","bucketsTotal","filesTotal","filesStorageTotal","buckets","files","storage"]},"usageBuckets":{"description":"UsageBuckets","type":"object","properties":{"range":{"type":"string","description":"Time range of the usage stats.","x-example":"30d"},"filesTotal":{"type":"integer","description":"Total aggregated number of bucket files.","x-example":0,"format":"int32"},"filesStorageTotal":{"type":"integer","description":"Total aggregated number of bucket files storage (in bytes).","x-example":0,"format":"int32"},"files":{"type":"array","description":"Aggregated number of bucket files per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"storage":{"type":"array","description":"Aggregated number of bucket storage files (in bytes) per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","filesTotal","filesStorageTotal","files","storage"]},"usageFunctions":{"description":"UsageFunctions","type":"object","properties":{"range":{"type":"string","description":"Time range of the usage stats.","x-example":"30d"},"functionsTotal":{"type":"integer","description":"Total aggregated number of functions.","x-example":0,"format":"int32"},"deploymentsTotal":{"type":"integer","description":"Total aggregated number of functions deployments.","x-example":0,"format":"int32"},"deploymentsStorageTotal":{"type":"integer","description":"Total aggregated sum of functions deployment storage.","x-example":0,"format":"int32"},"buildsTotal":{"type":"integer","description":"Total aggregated number of functions build.","x-example":0,"format":"int32"},"buildsStorageTotal":{"type":"integer","description":"total aggregated sum of functions build storage.","x-example":0,"format":"int32"},"buildsTimeTotal":{"type":"integer","description":"Total aggregated sum of functions build compute time.","x-example":0,"format":"int32"},"executionsTotal":{"type":"integer","description":"Total aggregated number of functions execution.","x-example":0,"format":"int32"},"executionsTimeTotal":{"type":"integer","description":"Total aggregated sum of functions execution compute time.","x-example":0,"format":"int32"},"functions":{"type":"array","description":"Aggregated number of functions per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":0},"deployments":{"type":"array","description":"Aggregated number of functions deployment per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"deploymentsStorage":{"type":"array","description":"Aggregated number of functions deployment storage per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"builds":{"type":"array","description":"Aggregated number of functions build per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"buildsStorage":{"type":"array","description":"Aggregated sum of functions build storage per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"buildsTime":{"type":"array","description":"Aggregated sum of functions build compute time per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"executions":{"type":"array","description":"Aggregated number of functions execution per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"executionsTime":{"type":"array","description":"Aggregated number of functions execution compute time per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","functionsTotal","deploymentsTotal","deploymentsStorageTotal","buildsTotal","buildsStorageTotal","buildsTimeTotal","executionsTotal","executionsTimeTotal","functions","deployments","deploymentsStorage","builds","buildsStorage","buildsTime","executions","executionsTime"]},"usageFunction":{"description":"UsageFunction","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"deploymentsTotal":{"type":"integer","description":"Total aggregated number of function deployments.","x-example":0,"format":"int32"},"deploymentsStorageTotal":{"type":"integer","description":"Total aggregated sum of function deployments storage.","x-example":0,"format":"int32"},"buildsTotal":{"type":"integer","description":"Total aggregated number of function builds.","x-example":0,"format":"int32"},"buildsStorageTotal":{"type":"integer","description":"total aggregated sum of function builds storage.","x-example":0,"format":"int32"},"buildsTimeTotal":{"type":"integer","description":"Total aggregated sum of function builds compute time.","x-example":0,"format":"int32"},"executionsTotal":{"type":"integer","description":"Total aggregated number of function executions.","x-example":0,"format":"int32"},"executionsTimeTotal":{"type":"integer","description":"Total aggregated sum of function executions compute time.","x-example":0,"format":"int32"},"deployments":{"type":"array","description":"Aggregated number of function deployments per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"deploymentsStorage":{"type":"array","description":"Aggregated number of function deployments storage per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"builds":{"type":"array","description":"Aggregated number of function builds per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"buildsStorage":{"type":"array","description":"Aggregated sum of function builds storage per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"buildsTime":{"type":"array","description":"Aggregated sum of function builds compute time per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"executions":{"type":"array","description":"Aggregated number of function executions per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"executionsTime":{"type":"array","description":"Aggregated number of function executions compute time per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","deploymentsTotal","deploymentsStorageTotal","buildsTotal","buildsStorageTotal","buildsTimeTotal","executionsTotal","executionsTimeTotal","deployments","deploymentsStorage","builds","buildsStorage","buildsTime","executions","executionsTime"]},"usageProject":{"description":"UsageProject","type":"object","properties":{"executionsTotal":{"type":"integer","description":"Total aggregated number of function executions.","x-example":0,"format":"int32"},"documentsTotal":{"type":"integer","description":"Total aggregated number of documents.","x-example":0,"format":"int32"},"databasesTotal":{"type":"integer","description":"Total aggregated number of databases.","x-example":0,"format":"int32"},"usersTotal":{"type":"integer","description":"Total aggregated number of users.","x-example":0,"format":"int32"},"filesStorageTotal":{"type":"integer","description":"Total aggregated sum of files storage size (in bytes).","x-example":0,"format":"int32"},"bucketsTotal":{"type":"integer","description":"Total aggregated number of buckets.","x-example":0,"format":"int32"},"requests":{"type":"array","description":"Aggregated number of requests per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"network":{"type":"array","description":"Aggregated number of consumed bandwidth per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"users":{"type":"array","description":"Aggregated number of users per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"executions":{"type":"array","description":"Aggregated number of executions per period.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"executionsBreakdown":{"type":"array","description":"Aggregated breakdown in totals of executions by functions.","items":{"type":"object","$ref":"#\/definitions\/metricBreakdown"},"x-example":[]},"bucketsBreakdown":{"type":"array","description":"Aggregated breakdown in totals of usage by buckets.","items":{"type":"object","$ref":"#\/definitions\/metricBreakdown"},"x-example":[]}},"required":["executionsTotal","documentsTotal","databasesTotal","usersTotal","filesStorageTotal","bucketsTotal","requests","network","users","executions","executionsBreakdown","bucketsBreakdown"]},"headers":{"description":"Headers","type":"object","properties":{"name":{"type":"string","description":"Header name.","x-example":"Content-Type"},"value":{"type":"string","description":"Header value.","x-example":"application\/json"}},"required":["name","value"]},"proxyRule":{"description":"Rule","type":"object","properties":{"$id":{"type":"string","description":"Rule ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Rule creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Rule update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"domain":{"type":"string","description":"Domain name.","x-example":"appwrite.company.com"},"resourceType":{"type":"string","description":"Action definition for the rule. Possible values are \"api\", \"function\", or \"redirect\"","x-example":"function"},"resourceId":{"type":"string","description":"ID of resource for the action type. If resourceType is \"api\" or \"url\", it is empty. If resourceType is \"function\", it is ID of the function.","x-example":"myAwesomeFunction"},"status":{"type":"string","description":"Domain verification status. Possible values are \"created\", \"verifying\", \"verified\" and \"unverified\"","x-example":"verified"},"logs":{"type":"string","description":"Certificate generation logs. This will return an empty string if generation did not run, or succeeded.","x-example":"HTTP challegne failed."},"renewAt":{"type":"string","description":"Certificate auto-renewal date in ISO 8601 format.","x-example":"datetime"}},"required":["$id","$createdAt","$updatedAt","domain","resourceType","resourceId","status","logs","renewAt"]},"smsTemplate":{"description":"SmsTemplate","type":"object","properties":{"type":{"type":"string","description":"Template type","x-example":"verification"},"locale":{"type":"string","description":"Template locale","x-example":"en_us"},"message":{"type":"string","description":"Template message","x-example":"Click on the link to verify your account."}},"required":["type","locale","message"]},"emailTemplate":{"description":"EmailTemplate","type":"object","properties":{"type":{"type":"string","description":"Template type","x-example":"verification"},"locale":{"type":"string","description":"Template locale","x-example":"en_us"},"message":{"type":"string","description":"Template message","x-example":"Click on the link to verify your account."},"senderName":{"type":"string","description":"Name of the sender","x-example":"My User"},"senderEmail":{"type":"string","description":"Email of the sender","x-example":"mail@appwrite.io"},"replyTo":{"type":"string","description":"Reply to email address","x-example":"emails@appwrite.io"},"subject":{"type":"string","description":"Email subject","x-example":"Please verify your email address"}},"required":["type","locale","message","senderName","senderEmail","replyTo","subject"]},"consoleVariables":{"description":"Console Variables","type":"object","properties":{"_APP_DOMAIN_TARGET":{"type":"string","description":"CNAME target for your Appwrite custom domains.","x-example":"appwrite.io"},"_APP_STORAGE_LIMIT":{"type":"integer","description":"Maximum file size allowed for file upload in bytes.","x-example":"30000000","format":"int32"},"_APP_FUNCTIONS_SIZE_LIMIT":{"type":"integer","description":"Maximum file size allowed for deployment in bytes.","x-example":"30000000","format":"int32"},"_APP_USAGE_STATS":{"type":"string","description":"Defines if usage stats are enabled. This value is set to 'enabled' by default, to disable the usage stats set the value to 'disabled'.","x-example":"enabled"},"_APP_VCS_ENABLED":{"type":"boolean","description":"Defines if VCS (Version Control System) is enabled.","x-example":true},"_APP_DOMAIN_ENABLED":{"type":"boolean","description":"Defines if main domain is configured. If so, custom domains can be created.","x-example":true},"_APP_ASSISTANT_ENABLED":{"type":"boolean","description":"Defines if AI assistant is enabled.","x-example":true}},"required":["_APP_DOMAIN_TARGET","_APP_STORAGE_LIMIT","_APP_FUNCTIONS_SIZE_LIMIT","_APP_USAGE_STATS","_APP_VCS_ENABLED","_APP_DOMAIN_ENABLED","_APP_ASSISTANT_ENABLED"]},"mfaChallenge":{"description":"MFA Challenge","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","userId","expire"]},"mfaType":{"description":"MFAType","type":"object","properties":{"backups":{"type":"array","description":"Backup codes.","items":{"type":"string"},"x-example":true},"secret":{"type":"string","description":"Secret token used for TOTP factor.","x-example":true},"uri":{"type":"string","description":"URI for authenticator apps.","x-example":true}},"required":["backups","secret","uri"]},"mfaFactors":{"description":"MFAFactors","type":"object","properties":{"totp":{"type":"boolean","description":"TOTP","x-example":true},"phone":{"type":"boolean","description":"Phone","x-example":true},"email":{"type":"boolean","description":"Email","x-example":true}},"required":["totp","phone","email"]},"provider":{"description":"Provider","type":"object","properties":{"$id":{"type":"string","description":"Provider ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Provider creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Provider update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"The name for the provider instance.","x-example":"Mailgun"},"provider":{"type":"string","description":"The name of the provider service.","x-example":"mailgun"},"enabled":{"type":"boolean","description":"Is provider enabled?","x-example":true},"type":{"type":"string","description":"Type of provider.","x-example":"sms"},"credentials":{"type":"object","additionalProperties":true,"description":"Provider credentials.","x-example":{"key":"123456789"}},"options":{"type":"object","additionalProperties":true,"description":"Provider options.","x-example":{"from":"sender-email@mydomain"}}},"required":["$id","$createdAt","$updatedAt","name","provider","enabled","type","credentials"]},"message":{"description":"Message","type":"object","properties":{"$id":{"type":"string","description":"Message ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Message creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Message update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerType":{"type":"string","description":"Message provider type.","x-example":"email"},"topics":{"type":"array","description":"Topic IDs set as recipients.","items":{"type":"string"},"x-example":["5e5ea5c16897e"]},"users":{"type":"array","description":"User IDs set as recipients.","items":{"type":"string"},"x-example":["5e5ea5c16897e"]},"targets":{"type":"array","description":"Target IDs set as recipients.","items":{"type":"string"},"x-example":["5e5ea5c16897e"]},"scheduledAt":{"type":"string","description":"The scheduled time for message.","x-example":"2020-10-15T06:38:00.000+00:00","x-nullable":true},"deliveredAt":{"type":"string","description":"The time when the message was delivered.","x-example":"2020-10-15T06:38:00.000+00:00","x-nullable":true},"deliveryErrors":{"type":"array","description":"Delivery errors if any.","items":{"type":"string"},"x-example":["Failed to send message to target 5e5ea5c16897e: Credentials not valid."],"x-nullable":true},"deliveredTotal":{"type":"integer","description":"Number of recipients the message was delivered to.","x-example":1,"format":"int32"},"data":{"type":"object","additionalProperties":true,"description":"Data of the message.","x-example":{"subject":"Welcome to Appwrite","content":"Hi there, welcome to Appwrite family."}},"status":{"type":"string","description":"Status of delivery.","x-example":"Message status can be one of the following: processing, sent, cancelled, failed."}},"required":["$id","$createdAt","$updatedAt","providerType","topics","users","targets","deliveredTotal","data","status"]},"topic":{"description":"Topic","type":"object","properties":{"$id":{"type":"string","description":"Topic ID.","x-example":"259125845563242502"},"$createdAt":{"type":"string","description":"Topic creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Topic update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"The name of the topic.","x-example":"events"},"emailTotal":{"type":"integer","description":"Total count of email subscribers subscribed to the topic.","x-example":100,"format":"int32"},"smsTotal":{"type":"integer","description":"Total count of SMS subscribers subscribed to the topic.","x-example":100,"format":"int32"},"pushTotal":{"type":"integer","description":"Total count of push subscribers subscribed to the topic.","x-example":100,"format":"int32"},"subscribe":{"type":"array","description":"Subscribe permissions.","items":{"type":"string"},"x-example":"users"}},"required":["$id","$createdAt","$updatedAt","name","emailTotal","smsTotal","pushTotal","subscribe"]},"subscriber":{"description":"Subscriber","type":"object","properties":{"$id":{"type":"string","description":"Subscriber ID.","x-example":"259125845563242502"},"$createdAt":{"type":"string","description":"Subscriber creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Subscriber update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"targetId":{"type":"string","description":"Target ID.","x-example":"259125845563242502"},"target":{"type":"object","description":"Target.","x-example":{"$id":"259125845563242502","$createdAt":"2020-10-15T06:38:00.000+00:00","$updatedAt":"2020-10-15T06:38:00.000+00:00","providerType":"email","providerId":"259125845563242502","name":"ageon-app-email","identifier":"random-mail@email.org","userId":"5e5ea5c16897e"},"items":{"type":"object","$ref":"#\/definitions\/target"}},"userId":{"type":"string","description":"Topic ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User Name.","x-example":"Aegon Targaryen"},"topicId":{"type":"string","description":"Topic ID.","x-example":"259125845563242502"},"providerType":{"type":"string","description":"The target provider type. Can be one of the following: `email`, `sms` or `push`.","x-example":"email"}},"required":["$id","$createdAt","$updatedAt","targetId","target","userId","userName","topicId","providerType"]},"target":{"description":"Target","type":"object","properties":{"$id":{"type":"string","description":"Target ID.","x-example":"259125845563242502"},"$createdAt":{"type":"string","description":"Target creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Target update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Target Name.","x-example":"Aegon apple token"},"userId":{"type":"string","description":"User ID.","x-example":"259125845563242502"},"providerId":{"type":"string","description":"Provider ID.","x-example":"259125845563242502","x-nullable":true},"providerType":{"type":"string","description":"The target provider type. Can be one of the following: `email`, `sms` or `push`.","x-example":"email"},"identifier":{"type":"string","description":"The target identifier.","x-example":"token"}},"required":["$id","$createdAt","$updatedAt","name","userId","providerType","identifier"]},"migration":{"description":"Migration","type":"object","properties":{"$id":{"type":"string","description":"Migration ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"string","description":"Migration status ( pending, processing, failed, completed ) ","x-example":"pending"},"stage":{"type":"string","description":"Migration stage ( init, processing, source-check, destination-check, migrating, finished )","x-example":"init"},"source":{"type":"string","description":"A string containing the type of source of the migration.","x-example":"Appwrite"},"resources":{"type":"array","description":"Resources to migration.","items":{"type":"string"},"x-example":["user"]},"statusCounters":{"type":"object","additionalProperties":true,"description":"A group of counters that represent the total progress of the migration.","x-example":"{\"Database\": {\"PENDING\": 0, \"SUCCESS\": 1, \"ERROR\": 0, \"SKIP\": 0, \"PROCESSING\": 0, \"WARNING\": 0}}"},"resourceData":{"type":"object","additionalProperties":true,"description":"An array of objects containing the report data of the resources that were migrated.","x-example":"[{\"resource\":\"Database\",\"id\":\"public\",\"status\":\"SUCCESS\",\"message\":\"\"}]"},"errors":{"type":"array","description":"All errors that occurred during the migration process.","items":{"type":"string"},"x-example":[]}},"required":["$id","$createdAt","$updatedAt","status","stage","source","resources","statusCounters","resourceData","errors"]},"migrationReport":{"description":"Migration Report","type":"object","properties":{"user":{"type":"integer","description":"Number of users to be migrated.","x-example":20,"format":"int32"},"team":{"type":"integer","description":"Number of teams to be migrated.","x-example":20,"format":"int32"},"database":{"type":"integer","description":"Number of databases to be migrated.","x-example":20,"format":"int32"},"document":{"type":"integer","description":"Number of documents to be migrated.","x-example":20,"format":"int32"},"file":{"type":"integer","description":"Number of files to be migrated.","x-example":20,"format":"int32"},"bucket":{"type":"integer","description":"Number of buckets to be migrated.","x-example":20,"format":"int32"},"function":{"type":"integer","description":"Number of functions to be migrated.","x-example":20,"format":"int32"},"size":{"type":"integer","description":"Size of files to be migrated in mb.","x-example":30000,"format":"int32"},"version":{"type":"string","description":"Version of the Appwrite instance to be migrated.","x-example":"1.4.0"}},"required":["user","team","database","document","file","bucket","function","size","version"]},"firebaseProject":{"description":"MigrationFirebaseProject","type":"object","properties":{"projectId":{"type":"string","description":"Project ID.","x-example":"my-project"},"displayName":{"type":"string","description":"Project display name.","x-example":"My Project"}},"required":["projectId","displayName"]}},"externalDocs":{"description":"Full API docs, specs and tutorials","url":"https:\/\/appwrite.io\/docs"}} \ No newline at end of file diff --git a/app/config/specs/swagger2-latest-server.json b/app/config/specs/swagger2-latest-server.json index 7a87c3d269..dba334c4c0 100644 --- a/app/config/specs/swagger2-latest-server.json +++ b/app/config/specs/swagger2-latest-server.json @@ -1 +1 @@ -{"swagger":"2.0","info":{"version":"1.4.13","title":"Appwrite","description":"Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https:\/\/appwrite.io\/docs](https:\/\/appwrite.io\/docs)","termsOfService":"https:\/\/appwrite.io\/policy\/terms","contact":{"name":"Appwrite Team","url":"https:\/\/appwrite.io\/support","email":"team@appwrite.io"},"license":{"name":"BSD-3-Clause","url":"https:\/\/raw.githubusercontent.com\/appwrite\/appwrite\/master\/LICENSE"}},"host":"cloud.appwrite.io","basePath":"\/v1","schemes":["https"],"consumes":["application\/json","multipart\/form-data"],"produces":["application\/json"],"securityDefinitions":{"Project":{"type":"apiKey","name":"X-Appwrite-Project","description":"Your project ID","in":"header","x-appwrite":{"demo":"5df5acd0d48c2"}},"Key":{"type":"apiKey","name":"X-Appwrite-Key","description":"Your secret API key","in":"header","x-appwrite":{"demo":"919c2d18fb5d4...a2ae413da83346ad2"}},"JWT":{"type":"apiKey","name":"X-Appwrite-JWT","description":"Your secret JSON Web Token","in":"header","x-appwrite":{"demo":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ..."}},"Locale":{"type":"apiKey","name":"X-Appwrite-Locale","description":"","in":"header","x-appwrite":{"demo":"en"}},"Session":{"type":"apiKey","name":"X-Appwrite-Session","description":"The user session to authenticate with","in":"header"},"ForwardedFor":{"type":"apiKey","name":"X-Forwarded-For","description":"The IP address of the client that made the request","in":"header"},"ForwardedUserAgent":{"type":"apiKey","name":"X-Forwarded-User-Agent","description":"The user agent string of the client that made the request","in":"header"}},"paths":{"\/account":{"get":{"summary":"Get account","operationId":"accountGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get the currently logged in user.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"get","weight":22,"cookies":false,"type":"","demo":"account\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]},"post":{"summary":"Create account","operationId":"accountCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to allow a new user to register a new account in your project. After the user registration completes successfully, you can use the [\/account\/verfication](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createVerification) route to start verifying the user email address. To allow the new user to login to their new account, you need to create a new [account session](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createEmailSession).","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"create","weight":7,"cookies":false,"type":"","demo":"account\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"New user password. Must be between 8 and 256 chars.","default":null,"x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/account\/email":{"patch":{"summary":"Update email","operationId":"accountUpdateEmail","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateEmail","weight":29,"cookies":false,"type":"","demo":"account\/update-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["email","password"]}}]}},"\/account\/identities":{"get":{"summary":"List Identities","operationId":"accountListIdentities","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get the list of identities for the currently logged in user.","responses":{"200":{"description":"Identities List","schema":{"$ref":"#\/definitions\/identityList"}}},"x-appwrite":{"method":"listIdentities","weight":13,"cookies":false,"type":"","demo":"account\/list-identities.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-identities.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/identities","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, provider, providerUid, providerEmail, providerAccessTokenExpiry","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/identities\/{identityId}":{"delete":{"summary":"Delete identity","operationId":"accountDeleteIdentity","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Delete an identity by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIdentity","weight":14,"cookies":false,"type":"","demo":"account\/delete-identity.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-identity.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"identityId","description":"Identity ID.","required":true,"type":"string","x-example":"[IDENTITY_ID]","in":"path"}]}},"\/account\/jwt":{"post":{"summary":"Create JWT","operationId":"accountCreateJWT","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to create a JSON Web Token. You can use the resulting JWT to authenticate on behalf of the current user when working with the Appwrite server-side API and SDKs. The JWT secret is valid for 15 minutes from its creation and will be invalid if the user will logout in that time frame.","responses":{"201":{"description":"JWT","schema":{"$ref":"#\/definitions\/jwt"}}},"x-appwrite":{"method":"createJWT","weight":21,"cookies":false,"type":"","demo":"account\/create-j-w-t.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-jwt.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"List logs","operationId":"accountListLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get the list of latest security activity logs for the currently logged in user. Each log returns user IP address, location and date and time of log.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listLogs","weight":25,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/mfa":{"patch":{"summary":"Update MFA","operationId":"accountUpdateMFA","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateMFA","weight":42,"cookies":false,"type":"","demo":"account\/update-m-f-a.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-mfa.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"mfa":{"type":"boolean","description":"Enable or disable MFA.","default":null,"x-example":false}},"required":["mfa"]}}]}},"\/account\/mfa\/challenge":{"post":{"summary":"Create 2FA Challenge","operationId":"accountCreate2FAChallenge","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"201":{"description":"MFA Challenge","schema":{"$ref":"#\/definitions\/mfaChallenge"}}},"x-appwrite":{"method":"create2FAChallenge","weight":47,"cookies":false,"type":"","demo":"account\/create2f-a-challenge.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-2fa-challenge.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},token:{param-token}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"factor":{"type":"string","description":"Factor used for verification.","default":null,"x-example":"totp","enum":["totp","phone","email"],"x-enum-name":null,"x-enum-keys":[]}},"required":["factor"]}}]},"put":{"summary":"Create MFA Challenge (confirmation)","operationId":"accountUpdateChallenge","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"updateChallenge","weight":48,"cookies":false,"type":"","demo":"account\/update-challenge.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-challenge.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"challengeId":{"type":"string","description":"ID of the challenge.","default":null,"x-example":"[CHALLENGE_ID]"},"otp":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[OTP]"}},"required":["challengeId","otp"]}}]}},"\/account\/mfa\/factors":{"get":{"summary":"List Factors","operationId":"accountListFactors","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"200":{"description":"MFAFactors","schema":{"$ref":"#\/definitions\/mfaFactors"}}},"x-appwrite":{"method":"listFactors","weight":43,"cookies":false,"type":"","demo":"account\/list-factors.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-factors.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/account\/mfa\/{type}":{"post":{"summary":"Add Authenticator","operationId":"accountAddAuthenticator","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"200":{"description":"MFAType","schema":{"$ref":"#\/definitions\/mfaType"}}},"x-appwrite":{"method":"addAuthenticator","weight":44,"cookies":false,"type":"","demo":"account\/add-authenticator.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/add-authenticator.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"type","description":"Type of authenticator.","required":true,"type":"string","x-example":"totp","enum":["totp"],"x-enum-name":null,"x-enum-keys":[],"in":"path"}]},"put":{"summary":"Verify Authenticator","operationId":"accountVerifyAuthenticator","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"verifyAuthenticator","weight":45,"cookies":false,"type":"","demo":"account\/verify-authenticator.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/verify-authenticator.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"type","description":"Type of authenticator.","required":true,"type":"string","x-example":"totp","enum":["totp"],"x-enum-name":null,"x-enum-keys":[],"in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"otp":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[OTP]"}},"required":["otp"]}}]},"delete":{"summary":"Delete Authenticator","operationId":"accountDeleteAuthenticator","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"deleteAuthenticator","weight":46,"cookies":false,"type":"","demo":"account\/delete-authenticator.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-mfa.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"type","description":"Type of authenticator.","required":true,"type":"string","x-example":"totp","enum":["totp"],"x-enum-name":null,"x-enum-keys":[],"in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"otp":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[OTP]"}},"required":["otp"]}}]}},"\/account\/name":{"patch":{"summary":"Update name","operationId":"accountUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateName","weight":27,"cookies":false,"type":"","demo":"account\/update-name.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-name.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"User name. Max length: 128 chars.","default":null,"x-example":"[NAME]"}},"required":["name"]}}]}},"\/account\/password":{"patch":{"summary":"Update password","operationId":"accountUpdatePassword","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePassword","weight":28,"cookies":false,"type":"","demo":"account\/update-password.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-password.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"password":{"type":"string","description":"New user password. Must be at least 8 chars.","default":null,"x-example":null},"oldPassword":{"type":"string","description":"Current user password. Must be at least 8 chars.","default":"","x-example":"password"}},"required":["password"]}}]}},"\/account\/phone":{"patch":{"summary":"Update phone","operationId":"accountUpdatePhone","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createPhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePhone","weight":30,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["phone","password"]}}]}},"\/account\/prefs":{"get":{"summary":"Get account preferences","operationId":"accountGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get the preferences as a key-value object for the currently logged in user.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":23,"cookies":false,"type":"","demo":"account\/get-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/prefs","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]},"patch":{"summary":"Update preferences","operationId":"accountUpdatePrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account preferences. The object you pass is stored as is, and replaces any previous value. The maximum allowed prefs size is 64kB and throws error if exceeded.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePrefs","weight":31,"cookies":false,"type":"","demo":"account\/update-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/prefs","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"prefs":{"type":"object","description":"Prefs key-value JSON object.","default":{},"x-example":"{}"}},"required":["prefs"]}}]}},"\/account\/recovery":{"post":{"summary":"Create password recovery","operationId":"accountCreateRecovery","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Sends the user an email with a temporary secret key for password reset. When the user clicks the confirmation link he is redirected back to your app password reset URL with the secret key and email address values attached to the URL query string. Use the query string params to submit a request to the [PUT \/account\/recovery](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateRecovery) endpoint to complete the process. The verification link sent to the user's email address is valid for 1 hour.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createRecovery","weight":36,"cookies":false,"type":"","demo":"account\/create-recovery.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-recovery.md","rate-limit":10,"rate-time":3600,"rate-key":["url:{url},email:{param-email}","url:{url},ip:{ip}"],"scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"url":{"type":"string","description":"URL to redirect the user back to your app from the recovery email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":null,"x-example":"https:\/\/example.com"}},"required":["email","url"]}}]},"put":{"summary":"Create password recovery (confirmation)","operationId":"accountUpdateRecovery","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete the user account password reset. Both the **userId** and **secret** arguments will be passed as query parameters to the redirect URL you have provided when sending your request to the [POST \/account\/recovery](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createRecovery) endpoint.\n\nPlease note that in order to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) the only valid redirect URLs are the ones from domains you have set when adding your platforms in the console interface.","responses":{"200":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"updateRecovery","weight":37,"cookies":false,"type":"","demo":"account\/update-recovery.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-recovery.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid reset token.","default":null,"x-example":"[SECRET]"},"password":{"type":"string","description":"New user password. Must be between 8 and 256 chars.","default":null,"x-example":null}},"required":["userId","secret","password"]}}]}},"\/account\/sessions":{"get":{"summary":"List sessions","operationId":"accountListSessions","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get the list of active sessions across different devices for the currently logged in user.","responses":{"200":{"description":"Sessions List","schema":{"$ref":"#\/definitions\/sessionList"}}},"x-appwrite":{"method":"listSessions","weight":24,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/sessions","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]},"delete":{"summary":"Delete sessions","operationId":"accountDeleteSessions","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":35,"cookies":false,"type":"","demo":"account\/delete-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-sessions.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/account\/sessions\/anonymous":{"post":{"summary":"Create anonymous session","operationId":"accountCreateAnonymousSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to allow a new user to register an anonymous account in your project. This route will also create a new session for the user. To allow the new user to convert an anonymous account to a normal account, you need to update its [email and password](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateEmail) or create an [OAuth2 session](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#CreateOAuth2Session).","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"createAnonymousSession","weight":20,"cookies":false,"type":"","demo":"account\/create-anonymous-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-anonymous.md","rate-limit":50,"rate-time":3600,"rate-key":"ip:{ip}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/sessions\/email":{"post":{"summary":"Create email password session","operationId":"accountCreateEmailPasswordSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Allow the user to login into their account by providing a valid email and password combination. This route will create a new session for the user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"createEmailPasswordSession","weight":8,"cookies":false,"type":"","demo":"account\/create-email-password-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-email-password.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["email","password"]}}]}},"\/account\/sessions\/magic-url":{"put":{"summary":"Create session (deprecated)","operationId":"accountUpdateMagicURLSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to create a session from token. Provide the **userId** and **secret** parameters from the successful response of authentication flows initiated by token creation. For example, magic URL and phone login.","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateMagicURLSession","weight":17,"cookies":false,"type":"","demo":"account\/update-magic-u-r-l-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session.md","rate-limit":10,"rate-time":3600,"rate-key":"ip:{ip},userId:{param-userId}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/account\/sessions\/oauth2\/{provider}":{"get":{"summary":"Create OAuth2 session","operationId":"accountCreateOAuth2Session","consumes":["application\/json"],"produces":["text\/html"],"tags":["account"],"description":"Allow the user to login to their account using the OAuth2 provider of their choice. Each OAuth2 provider should be enabled from the Appwrite console first. Use the success and failure arguments to provide a redirect URL's back to your app when login is completed.\n\nIf there is already an active session, the new session will be attached to the logged-in account. If there are no active sessions, the server will attempt to look for a user with the same email address as the email received from the OAuth2 provider and attach the new session to the existing user. If no matching user is found - the server will create a new user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).\n","responses":{"301":{"description":"No content"}},"x-appwrite":{"method":"createOAuth2Session","weight":9,"cookies":false,"type":"webAuth","demo":"account\/create-o-auth2session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-oauth2.md","rate-limit":50,"rate-time":3600,"rate-key":"ip:{ip}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"provider","description":"OAuth2 Provider. Currently, supported providers are: amazon, apple, auth0, authentik, autodesk, bitbucket, bitly, box, dailymotion, discord, disqus, dropbox, etsy, facebook, github, gitlab, google, linkedin, microsoft, notion, oidc, okta, paypal, paypalSandbox, podio, salesforce, slack, spotify, stripe, tradeshift, tradeshiftBox, twitch, wordpress, yahoo, yammer, yandex, zoho, zoom.","required":true,"type":"string","x-example":"amazon","enum":["amazon","apple","auth0","authentik","autodesk","bitbucket","bitly","box","dailymotion","discord","disqus","dropbox","etsy","facebook","github","gitlab","google","linkedin","microsoft","notion","oidc","okta","paypal","paypalSandbox","podio","salesforce","slack","spotify","stripe","tradeshift","tradeshiftBox","twitch","wordpress","yahoo","yammer","yandex","zoho","zoom","mock"],"x-enum-name":"OAuthProvider","x-enum-keys":[],"in":"path"},{"name":"success","description":"URL to redirect back to your app after a successful login attempt. Only URLs from hostnames in your project's platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","required":false,"type":"string","format":"url","x-example":"https:\/\/example.com","default":"","in":"query"},{"name":"failure","description":"URL to redirect back to your app after a failed login attempt. Only URLs from hostnames in your project's platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","required":false,"type":"string","format":"url","x-example":"https:\/\/example.com","default":"","in":"query"},{"name":"token","description":"Include token credentials in the final redirect, useful for server-side integrations, or when cookies are not available.","required":false,"type":"boolean","x-example":false,"default":false,"in":"query"},{"name":"scopes","description":"A list of custom OAuth2 scopes. Check each provider internal docs for a list of supported scopes. Maximum of 100 scopes are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/sessions\/token":{"post":{"summary":"Create session","operationId":"accountCreateSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to create a session from token. Provide the **userId** and **secret** parameters from the successful response of authentication flows initiated by token creation. For example, magic URL and phone login.","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"createSession","weight":18,"cookies":false,"type":"","demo":"account\/create-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session.md","rate-limit":10,"rate-time":3600,"rate-key":"ip:{ip},userId:{param-userId}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Secret of a token generated by login methods. For example, the `createMagicURLToken` or `createPhoneToken` methods.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/account\/sessions\/{sessionId}":{"get":{"summary":"Get session","operationId":"accountGetSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to get a logged in user's session using a Session ID. Inputting 'current' will return the current session being used.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"getSession","weight":26,"cookies":false,"type":"","demo":"account\/get-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-session.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/sessions","offline-key":"{sessionId}","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to get the current device session.","required":true,"type":"string","x-example":"[SESSION_ID]","in":"path"}]},"patch":{"summary":"Update (or renew) a session","operationId":"accountUpdateSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Extend session's expiry to increase it's lifespan. Extending a session is useful when session length is short such as 5 minutes.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateSession","weight":34,"cookies":false,"type":"","demo":"account\/update-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-session.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to update the current device session.","required":true,"type":"string","x-example":"[SESSION_ID]","in":"path"}]},"delete":{"summary":"Delete session","operationId":"accountDeleteSession","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Logout the user. Use 'current' as the session ID to logout on this device, use a session ID to logout on another device. If you're looking to logout the user on all devices, use [Delete Sessions](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#deleteSessions) instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSession","weight":33,"cookies":false,"type":"","demo":"account\/delete-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-session.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to delete the current device session.","required":true,"type":"string","x-example":"[SESSION_ID]","in":"path"}]}},"\/account\/status":{"patch":{"summary":"Update status","operationId":"accountUpdateStatus","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateStatus","weight":32,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/account\/tokens\/email":{"post":{"summary":"Create email token (OTP)","operationId":"accountCreateEmailToken","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Sends the user an email with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [POST \/v1\/account\/sessions\/token](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createSession) endpoint to complete the login process. The secret sent to the user's email is valid for 15 minutes.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createEmailToken","weight":16,"cookies":false,"type":"","demo":"account\/create-email-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-token-email.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"phrase":{"type":"boolean","description":"Toggle for security phrase. If enabled, email will be send with a randomly generated phrase and the phrase will also be included in the response. Confirming phrases match increases the security of your authentication flow.","default":false,"x-example":false}},"required":["userId","email"]}}]}},"\/account\/tokens\/magic-url":{"post":{"summary":"Create magic URL token","operationId":"accountCreateMagicURLToken","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Sends the user an email with a secret key for creating a session. If the provided user ID has not been registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [POST \/v1\/account\/sessions\/token](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createSession) endpoint to complete the login process. The link sent to the user's email address is valid for 1 hour. If you are on a mobile device you can leave the URL parameter empty, so that the login completion will be handled by your Appwrite instance by default.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).\n","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createMagicURLToken","weight":15,"cookies":false,"type":"","demo":"account\/create-magic-u-r-l-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-token-magic-url.md","rate-limit":60,"rate-time":3600,"rate-key":["url:{url},email:{param-email}","url:{url},ip:{ip}"],"scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"url":{"type":"string","description":"URL to redirect the user back to your app from the magic URL login. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":"","x-example":"https:\/\/example.com"},"phrase":{"type":"boolean","description":"Toggle for security phrase. If enabled, email will be send with a randomly generated phrase and the phrase will also be included in the response. Confirming phrases match increases the security of your authentication flow.","default":false,"x-example":false}},"required":["userId","email"]}}]}},"\/account\/tokens\/phone":{"post":{"summary":"Create phone token","operationId":"accountCreatePhoneToken","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Sends the user an SMS with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [POST \/v1\/account\/sessions\/token](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createSession) endpoint to complete the login process. The secret sent to the user's phone is valid for 15 minutes.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createPhoneToken","weight":19,"cookies":false,"type":"","demo":"account\/create-phone-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-token-phone.md","rate-limit":10,"rate-time":3600,"rate-key":["url:{url},phone:{param-phone}","url:{url},ip:{ip}"],"scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"}},"required":["userId","phone"]}}]}},"\/account\/verification":{"post":{"summary":"Create email verification","operationId":"accountCreateVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to send a verification message to your user email address to confirm they are the valid owners of that address. Both the **userId** and **secret** arguments will be passed as query parameters to the URL you have provided to be attached to the verification email. The provided URL should redirect the user back to your app and allow you to complete the verification process by verifying both the **userId** and **secret** parameters. Learn more about how to [complete the verification process](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateVerification). The verification link sent to the user's email address is valid for 7 days.\n\nPlease note that in order to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md), the only valid redirect URLs are the ones from domains you have set when adding your platforms in the console interface.\n","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createVerification","weight":38,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"url":{"type":"string","description":"URL to redirect the user back to your app from the verification email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":null,"x-example":"https:\/\/example.com"}},"required":["url"]}}]},"put":{"summary":"Create email verification (confirmation)","operationId":"accountUpdateVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete the user email verification process. Use both the **userId** and **secret** parameters that were attached to your app URL to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"updateVerification","weight":39,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/account\/verification\/phone":{"post":{"summary":"Create phone verification","operationId":"accountCreatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updatePhone) endpoint. Learn more about how to [complete the verification process](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createPhoneVerification","weight":40,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":["url:{url},userId:{userId}","url:{url},ip:{ip}"],"scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]},"put":{"summary":"Create phone verification (confirmation)","operationId":"accountUpdatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"updatePhoneVerification","weight":41,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/avatars\/browsers\/{code}":{"get":{"summary":"Get browser icon","operationId":"avatarsGetBrowser","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"You can use this endpoint to show different browser icons to your users. The code argument receives the browser code as it appears in your user [GET \/account\/sessions](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#getSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getBrowser","weight":54,"cookies":false,"type":"location","demo":"avatars\/get-browser.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-browser.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Browser Code.","required":true,"type":"string","x-example":"aa","enum":["aa","an","ch","ci","cm","cr","ff","sf","mf","ps","oi","om","op","on"],"x-enum-name":"Browser","x-enum-keys":["Avant Browser","Android WebView Beta","Google Chrome","Google Chrome (iOS)","Google Chrome (Mobile)","Chromium","Mozilla Firefox","Safari","Mobile Safari","Microsoft Edge","Microsoft Edge (iOS)","Opera Mini","Opera","Opera (Next)"],"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"}]}},"\/avatars\/credit-cards\/{code}":{"get":{"summary":"Get credit card icon","operationId":"avatarsGetCreditCard","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"The credit card endpoint will return you the icon of the credit card provider you need. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getCreditCard","weight":53,"cookies":false,"type":"location","demo":"avatars\/get-credit-card.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-credit-card.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Credit Card Code. Possible values: amex, argencard, cabal, censosud, diners, discover, elo, hipercard, jcb, mastercard, naranja, targeta-shopping, union-china-pay, visa, mir, maestro.","required":true,"type":"string","x-example":"amex","enum":["amex","argencard","cabal","censosud","diners","discover","elo","hipercard","jcb","mastercard","naranja","targeta-shopping","union-china-pay","visa","mir","maestro"],"x-enum-name":"CreditCard","x-enum-keys":["American Express","Argencard","Cabal","Consosud","Diners Club","Discover","Elo","Hipercard","JCB","Mastercard","Naranja","Tarjeta Shopping","Union China Pay","Visa","MIR","Maestro"],"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"}]}},"\/avatars\/favicon":{"get":{"summary":"Get favicon","operationId":"avatarsGetFavicon","consumes":["application\/json"],"produces":["image\/*"],"tags":["avatars"],"description":"Use this endpoint to fetch the favorite icon (AKA favicon) of any remote website URL.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFavicon","weight":57,"cookies":false,"type":"location","demo":"avatars\/get-favicon.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-favicon.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"url","description":"Website URL which you want to fetch the favicon from.","required":true,"type":"string","format":"url","x-example":"https:\/\/example.com","in":"query"}]}},"\/avatars\/flags\/{code}":{"get":{"summary":"Get country flag","operationId":"avatarsGetFlag","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"You can use this endpoint to show different country flags icons to your users. The code argument receives the 2 letter country code. Use width, height and quality arguments to change the output settings. Country codes follow the [ISO 3166-1](https:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFlag","weight":55,"cookies":false,"type":"location","demo":"avatars\/get-flag.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-flag.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Country Code. ISO Alpha-2 country code format.","required":true,"type":"string","x-example":"af","enum":["af","ao","al","ad","ae","ar","am","ag","au","at","az","bi","be","bj","bf","bd","bg","bh","bs","ba","by","bz","bo","br","bb","bn","bt","bw","cf","ca","ch","cl","cn","ci","cm","cd","cg","co","km","cv","cr","cu","cy","cz","de","dj","dm","dk","do","dz","ec","eg","er","es","ee","et","fi","fj","fr","fm","ga","gb","ge","gh","gn","gm","gw","gq","gr","gd","gt","gy","hn","hr","ht","hu","id","in","ie","ir","iq","is","il","it","jm","jo","jp","kz","ke","kg","kh","ki","kn","kr","kw","la","lb","lr","ly","lc","li","lk","ls","lt","lu","lv","ma","mc","md","mg","mv","mx","mh","mk","ml","mt","mm","me","mn","mz","mr","mu","mw","my","na","ne","ng","ni","nl","no","np","nr","nz","om","pk","pa","pe","ph","pw","pg","pl","kp","pt","py","qa","ro","ru","rw","sa","sd","sn","sg","sb","sl","sv","sm","so","rs","ss","st","sr","sk","si","se","sz","sc","sy","td","tg","th","tj","tm","tl","to","tt","tn","tr","tv","tz","ug","ua","uy","us","uz","va","vc","ve","vn","vu","ws","ye","za","zm","zw"],"x-enum-name":"Flag","x-enum-keys":["Afghanistan","Angola","Albania","Andorra","United Arab Emirates","Argentina","Armenia","Antigua and Barbuda","Australia","Austria","Azerbaijan","Burundi","Belgium","Benin","Burkina Faso","Bangladesh","Bulgaria","Bahrain","Bahamas","Bosnia and Herzegovina","Belarus","Belize","Bolivia","Brazil","Barbados","Brunei Darussalam","Bhutan","Botswana","Central African Republic","Canada","Switzerland","Chile","China","C\u00f4te d'Ivoire","Cameroon","Democratic Republic of the Congo","Republic of the Congo","Colombia","Comoros","Cape Verde","Costa Rica","Cuba","Cyprus","Czech Republic","Germany","Djibouti","Dominica","Denmark","Dominican Republic","Algeria","Ecuador","Egypt","Eritrea","Spain","Estonia","Ethiopia","Finland","Fiji","France","Micronesia (Federated States of)","Gabon","United Kingdom","Georgia","Ghana","Guinea","Gambia","Guinea-Bissau","Equatorial Guinea","Greece","Grenada","Guatemala","Guyana","Honduras","Croatia","Haiti","Hungary","Indonesia","India","Ireland","Iran (Islamic Republic of)","Iraq","Iceland","Israel","Italy","Jamaica","Jordan","Japan","Kazakhstan","Kenya","Kyrgyzstan","Cambodia","Kiribati","Saint Kitts and Nevis","South Korea","Kuwait","Lao People's Democratic Republic","Lebanon","Liberia","Libya","Saint Lucia","Liechtenstein","Sri Lanka","Lesotho","Lithuania","Luxembourg","Latvia","Morocco","Monaco","Moldova","Madagascar","Maldives","Mexico","Marshall Islands","North Macedonia","Mali","Malta","Myanmar","Montenegro","Mongolia","Mozambique","Mauritania","Mauritius","Malawi","Malaysia","Namibia","Niger","Nigeria","Nicaragua","Netherlands","Norway","Nepal","Nauru","New Zealand","Oman","Pakistan","Panama","Peru","Philippines","Palau","Papua New Guinea","Poland","North Korea","Portugal","Paraguay","Qatar","Romania","Russia","Rwanda","Saudi Arabia","Sudan","Senegal","Singapore","Solomon Islands","Sierra Leone","El Salvador","San Marino","Somalia","Serbia","South Sudan","Sao Tome and Principe","Suriname","Slovakia","Slovenia","Sweden","Eswatini","Seychelles","Syria","Chad","Togo","Thailand","Tajikistan","Turkmenistan","Timor-Leste","Tonga","Trinidad and Tobago","Tunisia","Turkey","Tuvalu","Tanzania","Uganda","Ukraine","Uruguay","United States","Uzbekistan","Vatican City","Saint Vincent and the Grenadines","Venezuela","Vietnam","Vanuatu","Samoa","Yemen","South Africa","Zambia","Zimbabwe"],"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"}]}},"\/avatars\/image":{"get":{"summary":"Get image from URL","operationId":"avatarsGetImage","consumes":["application\/json"],"produces":["image\/*"],"tags":["avatars"],"description":"Use this endpoint to fetch a remote image URL and crop it to any image size you want. This endpoint is very useful if you need to crop and display remote images in your app or in case you want to make sure a 3rd party image is properly served using a TLS protocol.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getImage","weight":56,"cookies":false,"type":"location","demo":"avatars\/get-image.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-image.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"url","description":"Image URL which you want to crop.","required":true,"type":"string","format":"url","x-example":"https:\/\/example.com","in":"query"},{"name":"width","description":"Resize preview image width, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get user initials","operationId":"avatarsGetInitials","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getInitials","weight":59,"cookies":false,"type":"location","demo":"avatars\/get-initials.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-initials.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"name","description":"Full Name. When empty, current user name or email will be used. Max length: 128 chars.","required":false,"type":"string","x-example":"[NAME]","default":"","in":"query"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":500,"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":500,"in":"query"},{"name":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"type":"string","default":"","in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR code","operationId":"avatarsGetQR","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getQR","weight":58,"cookies":false,"type":"location","demo":"avatars\/get-q-r.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-qr.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"text","description":"Plain text to be converted to QR code image.","required":true,"type":"string","x-example":"[TEXT]","in":"query"},{"name":"size","description":"QR code size. Pass an integer between 1 to 1000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":1,"default":400,"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"type":"integer","format":"int32","x-example":0,"default":1,"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"type":"boolean","x-example":false,"default":false,"in":"query"}]}},"\/databases":{"get":{"summary":"List databases","operationId":"databasesList","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all databases from the current Appwrite project. You can use the search parameter to filter your results.","responses":{"200":{"description":"Databases List","schema":{"$ref":"#\/definitions\/databaseList"}}},"x-appwrite":{"method":"list","weight":64,"cookies":false,"type":"","demo":"databases\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create database","operationId":"databasesCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Database.\n","responses":{"201":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"create","weight":63,"cookies":false,"type":"","demo":"databases\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"databaseId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[DATABASE_ID]"},"name":{"type":"string","description":"Database name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Is the database enabled? When set to 'disabled', users cannot access the database but Server SDKs with an API key can still read and write to the database. No data is lost when this is toggled.","default":true,"x-example":false}},"required":["databaseId","name"]}}]}},"\/databases\/{databaseId}":{"get":{"summary":"Get database","operationId":"databasesGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a database by its unique ID. This endpoint response returns a JSON object with the database metadata.","responses":{"200":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"get","weight":65,"cookies":false,"type":"","demo":"databases\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"}]},"put":{"summary":"Update database","operationId":"databasesUpdate","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a database by its unique ID.","responses":{"200":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"update","weight":67,"cookies":false,"type":"","demo":"databases\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Database name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Is database enabled? When set to 'disabled', users cannot access the database but Server SDKs with an API key can still read and write to the database. No data is lost when this is toggled.","default":true,"x-example":false}},"required":["name"]}}]},"delete":{"summary":"Delete database","operationId":"databasesDelete","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a database by its unique ID. Only API keys with with databases.write scope can delete a database.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":68,"cookies":false,"type":"","demo":"databases\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections":{"get":{"summary":"List collections","operationId":"databasesListCollections","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all collections that belong to the provided databaseId. You can use the search parameter to filter your results.","responses":{"200":{"description":"Collections List","schema":{"$ref":"#\/definitions\/collectionList"}}},"x-appwrite":{"method":"listCollections","weight":70,"cookies":false,"type":"","demo":"databases\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, documentSecurity","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create collection","operationId":"databasesCreateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Collection. Before using this route, you should create a new database resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"createCollection","weight":69,"cookies":false,"type":"","demo":"databases\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permissions strings. By default, no user is granted with any permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":false,"x-example":false},"enabled":{"type":"boolean","description":"Is collection enabled? When set to 'disabled', users cannot access the collection but Server SDKs with and API key can still read and write to the collection. No data is lost when this is toggled.","default":true,"x-example":false}},"required":["collectionId","name"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}":{"get":{"summary":"Get collection","operationId":"databasesGetCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a collection by its unique ID. This endpoint response returns a JSON object with the collection metadata.","responses":{"200":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"getCollection","weight":71,"cookies":false,"type":"","demo":"databases\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]},"put":{"summary":"Update collection","operationId":"databasesUpdateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a collection by its unique ID.","responses":{"200":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"updateCollection","weight":73,"cookies":false,"type":"","demo":"databases\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":false,"x-example":false},"enabled":{"type":"boolean","description":"Is collection enabled? When set to 'disabled', users cannot access the collection but Server SDKs with and API key can still read and write to the collection. No data is lost when this is toggled.","default":true,"x-example":false}},"required":["name"]}}]},"delete":{"summary":"Delete collection","operationId":"databasesDeleteCollection","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a collection by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteCollection","weight":74,"cookies":false,"type":"","demo":"databases\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes":{"get":{"summary":"List attributes","operationId":"databasesListAttributes","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Attributes List","schema":{"$ref":"#\/definitions\/attributeList"}}},"x-appwrite":{"method":"listAttributes","weight":85,"cookies":false,"type":"","demo":"databases\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: key, type, size, required, array, status, error","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create boolean attribute","operationId":"databasesCreateBooleanAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a boolean attribute.\n","responses":{"202":{"description":"AttributeBoolean","schema":{"$ref":"#\/definitions\/attributeBoolean"}}},"x-appwrite":{"method":"createBooleanAttribute","weight":82,"cookies":false,"type":"","demo":"databases\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":false},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean\/{key}":{"patch":{"summary":"Update boolean attribute","operationId":"databasesUpdateBooleanAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"","responses":{"200":{"description":"AttributeBoolean","schema":{"$ref":"#\/definitions\/attributeBoolean"}}},"x-appwrite":{"method":"updateBooleanAttribute","weight":94,"cookies":false,"type":"","demo":"databases\/update-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":false,"x-nullable":true}},"required":["required","default"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/datetime":{"post":{"summary":"Create datetime attribute","operationId":"databasesCreateDatetimeAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"AttributeDatetime","schema":{"$ref":"#\/definitions\/attributeDatetime"}}},"x-appwrite":{"method":"createDatetimeAttribute","weight":83,"cookies":false,"type":"","demo":"databases\/create-datetime-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-datetime-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for the attribute in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/datetime\/{key}":{"patch":{"summary":"Update dateTime attribute","operationId":"databasesUpdateDatetimeAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"","responses":{"200":{"description":"AttributeDatetime","schema":{"$ref":"#\/definitions\/attributeDatetime"}}},"x-appwrite":{"method":"updateDatetimeAttribute","weight":95,"cookies":false,"type":"","demo":"databases\/update-datetime-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-datetime-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null,"x-nullable":true}},"required":["required","default"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create email attribute","operationId":"databasesCreateEmailAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create an email attribute.\n","responses":{"202":{"description":"AttributeEmail","schema":{"$ref":"#\/definitions\/attributeEmail"}}},"x-appwrite":{"method":"createEmailAttribute","weight":76,"cookies":false,"type":"","demo":"databases\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"email@example.com"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/email\/{key}":{"patch":{"summary":"Update email attribute","operationId":"databasesUpdateEmailAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Update an email attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeEmail","schema":{"$ref":"#\/definitions\/attributeEmail"}}},"x-appwrite":{"method":"updateEmailAttribute","weight":88,"cookies":false,"type":"","demo":"databases\/update-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"email@example.com","x-nullable":true}},"required":["required","default"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create enum attribute","operationId":"databasesCreateEnumAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"AttributeEnum","schema":{"$ref":"#\/definitions\/attributeEnum"}}},"x-appwrite":{"method":"createEnumAttribute","weight":77,"cookies":false,"type":"","demo":"databases\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"elements":{"type":"array","description":"Array of elements in enumerated type. Uses length of longest element to determine size. Maximum of 100 elements are allowed, each 255 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","elements","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/enum\/{key}":{"patch":{"summary":"Update enum attribute","operationId":"databasesUpdateEnumAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Update an enum attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeEnum","schema":{"$ref":"#\/definitions\/attributeEnum"}}},"x-appwrite":{"method":"updateEnumAttribute","weight":89,"cookies":false,"type":"","demo":"databases\/update-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-enum-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"elements":{"type":"array","description":"Array of elements in enumerated type. Uses length of longest element to determine size. Maximum of 100 elements are allowed, each 255 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"[DEFAULT]","x-nullable":true}},"required":["elements","required","default"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create float attribute","operationId":"databasesCreateFloatAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeFloat","schema":{"$ref":"#\/definitions\/attributeFloat"}}},"x-appwrite":{"method":"createFloatAttribute","weight":81,"cookies":false,"type":"","demo":"databases\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"min":{"type":"number","description":"Minimum value to enforce on new documents","default":null,"x-example":null},"max":{"type":"number","description":"Maximum value to enforce on new documents","default":null,"x-example":null},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/float\/{key}":{"patch":{"summary":"Update float attribute","operationId":"databasesUpdateFloatAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Update a float attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeFloat","schema":{"$ref":"#\/definitions\/attributeFloat"}}},"x-appwrite":{"method":"updateFloatAttribute","weight":93,"cookies":false,"type":"","demo":"databases\/update-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"min":{"type":"number","description":"Minimum value to enforce on new documents","default":null,"x-example":null},"max":{"type":"number","description":"Maximum value to enforce on new documents","default":null,"x-example":null},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null,"x-nullable":true}},"required":["required","min","max","default"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create integer attribute","operationId":"databasesCreateIntegerAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeInteger","schema":{"$ref":"#\/definitions\/attributeInteger"}}},"x-appwrite":{"method":"createIntegerAttribute","weight":80,"cookies":false,"type":"","demo":"databases\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"min":{"type":"integer","description":"Minimum value to enforce on new documents","default":null,"x-example":null},"max":{"type":"integer","description":"Maximum value to enforce on new documents","default":null,"x-example":null},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/integer\/{key}":{"patch":{"summary":"Update integer attribute","operationId":"databasesUpdateIntegerAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Update an integer attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeInteger","schema":{"$ref":"#\/definitions\/attributeInteger"}}},"x-appwrite":{"method":"updateIntegerAttribute","weight":92,"cookies":false,"type":"","demo":"databases\/update-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"min":{"type":"integer","description":"Minimum value to enforce on new documents","default":null,"x-example":null},"max":{"type":"integer","description":"Maximum value to enforce on new documents","default":null,"x-example":null},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null,"x-nullable":true}},"required":["required","min","max","default"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP address attribute","operationId":"databasesCreateIpAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create IP address attribute.\n","responses":{"202":{"description":"AttributeIP","schema":{"$ref":"#\/definitions\/attributeIp"}}},"x-appwrite":{"method":"createIpAttribute","weight":78,"cookies":false,"type":"","demo":"databases\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/ip\/{key}":{"patch":{"summary":"Update IP address attribute","operationId":"databasesUpdateIpAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Update an ip attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeIP","schema":{"$ref":"#\/definitions\/attributeIp"}}},"x-appwrite":{"method":"updateIpAttribute","weight":90,"cookies":false,"type":"","demo":"databases\/update-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null,"x-nullable":true}},"required":["required","default"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/relationship":{"post":{"summary":"Create relationship attribute","operationId":"databasesCreateRelationshipAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create relationship attribute. [Learn more about relationship attributes](https:\/\/appwrite.io\/docs\/databases-relationships#relationship-attributes).\n","responses":{"202":{"description":"AttributeRelationship","schema":{"$ref":"#\/definitions\/attributeRelationship"}}},"x-appwrite":{"method":"createRelationshipAttribute","weight":84,"cookies":false,"type":"","demo":"databases\/create-relationship-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-relationship-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"relatedCollectionId":{"type":"string","description":"Related Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","default":null,"x-example":"[RELATED_COLLECTION_ID]"},"type":{"type":"string","description":"Relation type","default":null,"x-example":"oneToOne","enum":["oneToOne","manyToOne","manyToMany","oneToMany"],"x-enum-name":"RelationshipType","x-enum-keys":[]},"twoWay":{"type":"boolean","description":"Is Two Way?","default":false,"x-example":false},"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"twoWayKey":{"type":"string","description":"Two Way Attribute Key.","default":null,"x-example":null},"onDelete":{"type":"string","description":"Constraints option","default":"restrict","x-example":"cascade","enum":["cascade","restrict","setNull"],"x-enum-name":"RelationMutate","x-enum-keys":[]}},"required":["relatedCollectionId","type"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create string attribute","operationId":"databasesCreateStringAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a string attribute.\n","responses":{"202":{"description":"AttributeString","schema":{"$ref":"#\/definitions\/attributeString"}}},"x-appwrite":{"method":"createStringAttribute","weight":75,"cookies":false,"type":"","demo":"databases\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"size":{"type":"integer","description":"Attribute size for text attributes, in number of characters.","default":null,"x-example":1},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false},"encrypt":{"type":"boolean","description":"Toggle encryption for the attribute. Encryption enhances security by not storing any plain text values in the database. However, encrypted attributes cannot be queried.","default":false,"x-example":false}},"required":["key","size","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/string\/{key}":{"patch":{"summary":"Update string attribute","operationId":"databasesUpdateStringAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Update a string attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeString","schema":{"$ref":"#\/definitions\/attributeString"}}},"x-appwrite":{"method":"updateStringAttribute","weight":87,"cookies":false,"type":"","demo":"databases\/update-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"[DEFAULT]","x-nullable":true}},"required":["required","default"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL attribute","operationId":"databasesCreateUrlAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a URL attribute.\n","responses":{"202":{"description":"AttributeURL","schema":{"$ref":"#\/definitions\/attributeUrl"}}},"x-appwrite":{"method":"createUrlAttribute","weight":79,"cookies":false,"type":"","demo":"databases\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"https:\/\/example.com"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url\/{key}":{"patch":{"summary":"Update URL attribute","operationId":"databasesUpdateUrlAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Update an url attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeURL","schema":{"$ref":"#\/definitions\/attributeUrl"}}},"x-appwrite":{"method":"updateUrlAttribute","weight":91,"cookies":false,"type":"","demo":"databases\/update-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"https:\/\/example.com","x-nullable":true}},"required":["required","default"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get attribute","operationId":"databasesGetAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, or AttributeDatetime, or AttributeRelationship, or AttributeString","schema":{"x-oneOf":[{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeRelationship"},{"$ref":"#\/definitions\/attributeString"}]}}},"x-appwrite":{"method":"getAttribute","weight":86,"cookies":false,"type":"","demo":"databases\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"}]},"delete":{"summary":"Delete attribute","operationId":"databasesDeleteAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":97,"cookies":false,"type":"","demo":"databases\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/{key}\/relationship":{"patch":{"summary":"Update relationship attribute","operationId":"databasesUpdateRelationshipAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Update relationship attribute. [Learn more about relationship attributes](https:\/\/appwrite.io\/docs\/databases-relationships#relationship-attributes).\n","responses":{"200":{"description":"AttributeRelationship","schema":{"$ref":"#\/definitions\/attributeRelationship"}}},"x-appwrite":{"method":"updateRelationshipAttribute","weight":96,"cookies":false,"type":"","demo":"databases\/update-relationship-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-relationship-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"onDelete":{"type":"string","description":"Constraints option","default":null,"x-example":"cascade","enum":["cascade","restrict","setNull"],"x-enum-name":"RelationMutate","x-enum-keys":[]}}}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List documents","operationId":"databasesListDocuments","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","schema":{"$ref":"#\/definitions\/documentList"}}},"x-appwrite":{"method":"listDocuments","weight":103,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"post":{"summary":"Create document","operationId":"databasesCreateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"createDocument","weight":102,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","default":{},"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, only the current user is granted all permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get document","operationId":"databasesGetDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"getDocument","weight":104,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"patch":{"summary":"Update document","operationId":"databasesUpdateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"updateDocument","weight":106,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","default":[],"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete document","operationId":"databasesDeleteDocument","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":107,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes":{"get":{"summary":"List indexes","operationId":"databasesListIndexes","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Indexes List","schema":{"$ref":"#\/definitions\/indexList"}}},"x-appwrite":{"method":"listIndexes","weight":99,"cookies":false,"type":"","demo":"databases\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: key, type, status, attributes, error","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"post":{"summary":"Create index","operationId":"databasesCreateIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"createIndex","weight":98,"cookies":false,"type":"","demo":"databases\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Index Key.","default":null,"x-example":null},"type":{"type":"string","description":"Index type.","default":null,"x-example":"key","enum":["key","fulltext","unique","spatial"],"x-enum-name":"IndexType","x-enum-keys":[]},"attributes":{"type":"array","description":"Array of attributes to index. Maximum of 100 attributes are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders. Maximum of 100 orders are allowed.","default":[],"x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get index","operationId":"databasesGetIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"getIndex","weight":100,"cookies":false,"type":"","demo":"databases\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Index Key.","required":true,"type":"string","in":"path"}]},"delete":{"summary":"Delete index","operationId":"databasesDeleteIndex","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":101,"cookies":false,"type":"","demo":"databases\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Index Key.","required":true,"type":"string","in":"path"}]}},"\/functions":{"get":{"summary":"List functions","operationId":"functionsList","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the project's functions. You can use the query params to filter your results.","responses":{"200":{"description":"Functions List","schema":{"$ref":"#\/definitions\/functionList"}}},"x-appwrite":{"method":"list","weight":268,"cookies":false,"type":"","demo":"functions\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-functions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, runtime, deployment, schedule, scheduleNext, schedulePrevious, timeout, entrypoint, commands, installationId","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create function","operationId":"functionsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function. You can pass a list of [permissions](https:\/\/appwrite.io\/docs\/permissions) to allow different project users or team with access to execute the function using the client API.","responses":{"201":{"description":"Function","schema":{"$ref":"#\/definitions\/function"}}},"x-appwrite":{"method":"create","weight":267,"cookies":false,"type":"","demo":"functions\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"functionId":{"type":"string","description":"Function ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[FUNCTION_ID]"},"name":{"type":"string","description":"Function name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"runtime":{"type":"string","description":"Execution runtime.","default":null,"x-example":"node-18.0","enum":["node-18.0","php-8.0","ruby-3.1","python-3.9"],"x-enum-name":null,"x-enum-keys":[]},"execute":{"type":"array","description":"An array of role strings with execution permissions. By default no user is granted with any execute permissions. [learn more about roles](https:\/\/appwrite.io\/docs\/permissions#permission-roles). Maximum of 100 roles are allowed, each 64 characters long.","default":[],"x-example":"[\"any\"]","items":{"type":"string"}},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","default":[],"x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","default":"","x-example":null},"timeout":{"type":"integer","description":"Function maximum execution time in seconds.","default":15,"x-example":1},"enabled":{"type":"boolean","description":"Is function enabled? When set to 'disabled', users cannot access the function but Server SDKs with and API key can still access the function. No data is lost when this is toggled.","default":true,"x-example":false},"logging":{"type":"boolean","description":"Whether executions will be logged. When set to false, executions will not be logged, but will reduce resource used by your Appwrite project.","default":true,"x-example":false},"entrypoint":{"type":"string","description":"Entrypoint File. This path is relative to the \"providerRootDirectory\".","default":"","x-example":"[ENTRYPOINT]"},"commands":{"type":"string","description":"Build Commands.","default":"","x-example":"[COMMANDS]"},"installationId":{"type":"string","description":"Appwrite Installation ID for VCS (Version Control System) deployment.","default":"","x-example":"[INSTALLATION_ID]"},"providerRepositoryId":{"type":"string","description":"Repository ID of the repo linked to the function.","default":"","x-example":"[PROVIDER_REPOSITORY_ID]"},"providerBranch":{"type":"string","description":"Production branch for the repo linked to the function.","default":"","x-example":"[PROVIDER_BRANCH]"},"providerSilentMode":{"type":"boolean","description":"Is the VCS (Version Control System) connection in silent mode for the repo linked to the function? In silent mode, comments will not be made on commits and pull requests.","default":false,"x-example":false},"providerRootDirectory":{"type":"string","description":"Path to function code in the linked repo.","default":"","x-example":"[PROVIDER_ROOT_DIRECTORY]"},"templateRepository":{"type":"string","description":"Repository name of the template.","default":"","x-example":"[TEMPLATE_REPOSITORY]"},"templateOwner":{"type":"string","description":"The name of the owner of the template.","default":"","x-example":"[TEMPLATE_OWNER]"},"templateRootDirectory":{"type":"string","description":"Path to function code in the template repo.","default":"","x-example":"[TEMPLATE_ROOT_DIRECTORY]"},"templateBranch":{"type":"string","description":"Production branch for the repo linked to the function template.","default":"","x-example":"[TEMPLATE_BRANCH]"}},"required":["functionId","name","runtime"]}}]}},"\/functions\/runtimes":{"get":{"summary":"List runtimes","operationId":"functionsListRuntimes","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all runtimes that are currently active on your instance.","responses":{"200":{"description":"Runtimes List","schema":{"$ref":"#\/definitions\/runtimeList"}}},"x-appwrite":{"method":"listRuntimes","weight":269,"cookies":false,"type":"","demo":"functions\/list-runtimes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-runtimes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/functions\/{functionId}":{"get":{"summary":"Get function","operationId":"functionsGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a function by its unique ID.","responses":{"200":{"description":"Function","schema":{"$ref":"#\/definitions\/function"}}},"x-appwrite":{"method":"get","weight":270,"cookies":false,"type":"","demo":"functions\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"}]},"put":{"summary":"Update function","operationId":"functionsUpdate","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Update function by its unique ID.","responses":{"200":{"description":"Function","schema":{"$ref":"#\/definitions\/function"}}},"x-appwrite":{"method":"update","weight":273,"cookies":false,"type":"","demo":"functions\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Function name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"runtime":{"type":"string","description":"Execution runtime.","default":"","x-example":"node-18.0","enum":["node-18.0","php-8.0","ruby-3.1","python-3.9"],"x-enum-name":null,"x-enum-keys":[]},"execute":{"type":"array","description":"An array of role strings with execution permissions. By default no user is granted with any execute permissions. [learn more about roles](https:\/\/appwrite.io\/docs\/permissions#permission-roles). Maximum of 100 roles are allowed, each 64 characters long.","default":[],"x-example":"[\"any\"]","items":{"type":"string"}},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","default":[],"x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","default":"","x-example":null},"timeout":{"type":"integer","description":"Maximum execution time in seconds.","default":15,"x-example":1},"enabled":{"type":"boolean","description":"Is function enabled? When set to 'disabled', users cannot access the function but Server SDKs with and API key can still access the function. No data is lost when this is toggled.","default":true,"x-example":false},"logging":{"type":"boolean","description":"Whether executions will be logged. When set to false, executions will not be logged, but will reduce resource used by your Appwrite project.","default":true,"x-example":false},"entrypoint":{"type":"string","description":"Entrypoint File. This path is relative to the \"providerRootDirectory\".","default":"","x-example":"[ENTRYPOINT]"},"commands":{"type":"string","description":"Build Commands.","default":"","x-example":"[COMMANDS]"},"installationId":{"type":"string","description":"Appwrite Installation ID for VCS (Version Controle System) deployment.","default":"","x-example":"[INSTALLATION_ID]"},"providerRepositoryId":{"type":"string","description":"Repository ID of the repo linked to the function","default":"","x-example":"[PROVIDER_REPOSITORY_ID]"},"providerBranch":{"type":"string","description":"Production branch for the repo linked to the function","default":"","x-example":"[PROVIDER_BRANCH]"},"providerSilentMode":{"type":"boolean","description":"Is the VCS (Version Control System) connection in silent mode for the repo linked to the function? In silent mode, comments will not be made on commits and pull requests.","default":false,"x-example":false},"providerRootDirectory":{"type":"string","description":"Path to function code in the linked repo.","default":"","x-example":"[PROVIDER_ROOT_DIRECTORY]"}},"required":["name"]}}]},"delete":{"summary":"Delete function","operationId":"functionsDelete","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"Delete a function by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":276,"cookies":false,"type":"","demo":"functions\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"}]}},"\/functions\/{functionId}\/deployments":{"get":{"summary":"List deployments","operationId":"functionsListDeployments","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the project's code deployments. You can use the query params to filter your results.","responses":{"200":{"description":"Deployments List","schema":{"$ref":"#\/definitions\/deploymentList"}}},"x-appwrite":{"method":"listDeployments","weight":278,"cookies":false,"type":"","demo":"functions\/list-deployments.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-deployments.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: size, buildId, activate, entrypoint, commands","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create deployment","operationId":"functionsCreateDeployment","consumes":["multipart\/form-data"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function code deployment. Use this endpoint to upload a new version of your code function. To execute your newly uploaded code, you'll need to update the function's deployment to use your new deployment UID.\n\nThis endpoint accepts a tar.gz file compressed with your code. Make sure to include any dependencies your code has within the compressed file. You can learn more about code packaging in the [Appwrite Cloud Functions tutorial](https:\/\/appwrite.io\/docs\/functions).\n\nUse the \"command\" param to set the entrypoint used to execute your code.","responses":{"202":{"description":"Deployment","schema":{"$ref":"#\/definitions\/deployment"}}},"x-appwrite":{"method":"createDeployment","weight":277,"cookies":false,"type":"","demo":"functions\/create-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":true,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"entrypoint","description":"Entrypoint File.","required":false,"type":"string","x-example":"[ENTRYPOINT]","in":"formData"},{"name":"commands","description":"Build Commands.","required":false,"type":"string","x-example":"[COMMANDS]","in":"formData"},{"name":"code","description":"Gzip file with your code package. When used with the Appwrite CLI, pass the path to your code directory, and the CLI will automatically package your code. Use a path that is within the current directory.","required":true,"type":"file","in":"formData"},{"name":"activate","description":"Automatically activate the deployment when it is finished building.","required":true,"type":"boolean","x-example":false,"in":"formData"}]}},"\/functions\/{functionId}\/deployments\/{deploymentId}":{"get":{"summary":"Get deployment","operationId":"functionsGetDeployment","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a code deployment by its unique ID.","responses":{"200":{"description":"Deployment","schema":{"$ref":"#\/definitions\/deployment"}}},"x-appwrite":{"method":"getDeployment","weight":279,"cookies":false,"type":"","demo":"functions\/get-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"type":"string","x-example":"[DEPLOYMENT_ID]","in":"path"}]},"patch":{"summary":"Update function deployment","operationId":"functionsUpdateDeployment","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Update the function code deployment ID using the unique function ID. Use this endpoint to switch the code deployment that should be executed by the execution endpoint.","responses":{"200":{"description":"Function","schema":{"$ref":"#\/definitions\/function"}}},"x-appwrite":{"method":"updateDeployment","weight":275,"cookies":false,"type":"","demo":"functions\/update-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-function-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"type":"string","x-example":"[DEPLOYMENT_ID]","in":"path"}]},"delete":{"summary":"Delete deployment","operationId":"functionsDeleteDeployment","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"Delete a code deployment by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDeployment","weight":280,"cookies":false,"type":"","demo":"functions\/delete-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"type":"string","x-example":"[DEPLOYMENT_ID]","in":"path"}]}},"\/functions\/{functionId}\/deployments\/{deploymentId}\/builds\/{buildId}":{"post":{"summary":"Create build","operationId":"functionsCreateBuild","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"Create a new build for an Appwrite Function deployment. This endpoint can be used to retry a failed build.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"createBuild","weight":281,"cookies":false,"type":"","demo":"functions\/create-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"type":"string","x-example":"[DEPLOYMENT_ID]","in":"path"},{"name":"buildId","description":"Build unique ID.","required":true,"type":"string","x-example":"[BUILD_ID]","in":"path"}]}},"\/functions\/{functionId}\/deployments\/{deploymentId}\/download":{"get":{"summary":"Download Deployment","operationId":"functionsDownloadDeployment","consumes":["application\/json"],"produces":["*\/*"],"tags":["functions"],"description":"Get a Deployment's contents by its unique ID. This endpoint supports range requests for partial or streaming file download.","responses":{"200":{"description":"File","schema":{"type":"file"}}},"x-appwrite":{"method":"downloadDeployment","weight":274,"cookies":false,"type":"location","demo":"functions\/download-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/download-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"type":"string","x-example":"[DEPLOYMENT_ID]","in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List executions","operationId":"functionsListExecutions","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","schema":{"$ref":"#\/definitions\/executionList"}}},"x-appwrite":{"method":"listExecutions","weight":283,"cookies":false,"type":"","demo":"functions\/list-executions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-executions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, responseStatusCode, duration","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create execution","operationId":"functionsCreateExecution","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","schema":{"$ref":"#\/definitions\/execution"}}},"x-appwrite":{"method":"createExecution","weight":282,"cookies":false,"type":"","demo":"functions\/create-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-execution.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"body":{"type":"string","description":"HTTP body of execution. Default value is empty string.","default":"","x-example":"[BODY]"},"async":{"type":"boolean","description":"Execute code in the background. Default value is false.","default":false,"x-example":false},"path":{"type":"string","description":"HTTP path of execution. Path can include query params. Default value is \/","default":"\/","x-example":"[PATH]"},"method":{"type":"string","description":"HTTP method of execution. Default value is GET.","default":"POST","x-example":"GET","enum":["GET","POST","PUT","PATCH","DELETE","OPTIONS"],"x-enum-name":"ExecutionMethod","x-enum-keys":[]},"headers":{"type":"object","description":"HTTP headers of execution. Defaults to empty.","default":[],"x-example":"{}"}}}}]}},"\/functions\/{functionId}\/executions\/{executionId}":{"get":{"summary":"Get execution","operationId":"functionsGetExecution","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a function execution log by its unique ID.","responses":{"200":{"description":"Execution","schema":{"$ref":"#\/definitions\/execution"}}},"x-appwrite":{"method":"getExecution","weight":284,"cookies":false,"type":"","demo":"functions\/get-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-execution.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"executionId","description":"Execution ID.","required":true,"type":"string","x-example":"[EXECUTION_ID]","in":"path"}]}},"\/functions\/{functionId}\/variables":{"get":{"summary":"List variables","operationId":"functionsListVariables","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all variables of a specific function.","responses":{"200":{"description":"Variables List","schema":{"$ref":"#\/definitions\/variableList"}}},"x-appwrite":{"method":"listVariables","weight":286,"cookies":false,"type":"","demo":"functions\/list-variables.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-variables.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"}]},"post":{"summary":"Create variable","operationId":"functionsCreateVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function environment variable. These variables can be accessed in the function at runtime as environment variables.","responses":{"201":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"createVariable","weight":285,"cookies":false,"type":"","demo":"functions\/create-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","default":null,"x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","default":null,"x-example":"[VALUE]"}},"required":["key","value"]}}]}},"\/functions\/{functionId}\/variables\/{variableId}":{"get":{"summary":"Get variable","operationId":"functionsGetVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a variable by its unique ID.","responses":{"200":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"getVariable","weight":287,"cookies":false,"type":"","demo":"functions\/get-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"}]},"put":{"summary":"Update variable","operationId":"functionsUpdateVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Update variable by its unique ID.","responses":{"200":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"updateVariable","weight":288,"cookies":false,"type":"","demo":"functions\/update-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","default":null,"x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","default":null,"x-example":"[VALUE]"}},"required":["key"]}}]},"delete":{"summary":"Delete variable","operationId":"functionsDeleteVariable","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"Delete a variable by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteVariable","weight":289,"cookies":false,"type":"","demo":"functions\/delete-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"}]}},"\/graphql":{"post":{"summary":"GraphQL endpoint","operationId":"graphqlQuery","consumes":["application\/json"],"produces":["application\/json"],"tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","schema":{"$ref":"#\/definitions\/any"}}},"x-appwrite":{"method":"query","weight":304,"cookies":false,"type":"graphql","demo":"graphql\/query.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"query":{"type":"object","description":"The query or queries to execute.","default":{},"x-example":"{}"}},"required":["query"]}}]}},"\/graphql\/mutation":{"post":{"summary":"GraphQL endpoint","operationId":"graphqlMutation","consumes":["application\/json"],"produces":["application\/json"],"tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","schema":{"$ref":"#\/definitions\/any"}}},"x-appwrite":{"method":"mutation","weight":303,"cookies":false,"type":"graphql","demo":"graphql\/mutation.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"query":{"type":"object","description":"The query or queries to execute.","default":{},"x-example":"{}"}},"required":["query"]}}]}},"\/health":{"get":{"summary":"Get HTTP","operationId":"healthGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite HTTP server is up and responsive.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"get","weight":119,"cookies":false,"type":"","demo":"health\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/anti-virus":{"get":{"summary":"Get antivirus","operationId":"healthGetAntivirus","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite Antivirus server is up and connection is successful.","responses":{"200":{"description":"Health Antivirus","schema":{"$ref":"#\/definitions\/healthAntivirus"}}},"x-appwrite":{"method":"getAntivirus","weight":138,"cookies":false,"type":"","demo":"health\/get-antivirus.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-storage-anti-virus.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/cache":{"get":{"summary":"Get cache","operationId":"healthGetCache","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite in-memory cache servers are up and connection is successful.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"getCache","weight":122,"cookies":false,"type":"","demo":"health\/get-cache.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-cache.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/certificate":{"get":{"summary":"Get the SSL certificate for a domain","operationId":"healthGetCertificate","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the SSL certificate for a domain","responses":{"200":{"description":"Health Certificate","schema":{"$ref":"#\/definitions\/healthCertificate"}}},"x-appwrite":{"method":"getCertificate","weight":128,"cookies":false,"type":"","demo":"health\/get-certificate.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-certificate.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"domain","description":"string","required":false,"type":"string","in":"query"}]}},"\/health\/db":{"get":{"summary":"Get DB","operationId":"healthGetDB","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite database servers are up and connection is successful.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"getDB","weight":121,"cookies":false,"type":"","demo":"health\/get-d-b.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-db.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/pubsub":{"get":{"summary":"Get pubsub","operationId":"healthGetPubSub","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite pub-sub servers are up and connection is successful.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"getPubSub","weight":124,"cookies":false,"type":"","demo":"health\/get-pub-sub.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-pubsub.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/queue":{"get":{"summary":"Get queue","operationId":"healthGetQueue","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite queue messaging servers are up and connection is successful.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"getQueue","weight":123,"cookies":false,"type":"","demo":"health\/get-queue.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/queue\/builds":{"get":{"summary":"Get builds queue","operationId":"healthGetQueueBuilds","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of builds that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueBuilds","weight":130,"cookies":false,"type":"","demo":"health\/get-queue-builds.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-builds.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/certificates":{"get":{"summary":"Get certificates queue","operationId":"healthGetQueueCertificates","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of certificates that are waiting to be issued against [Letsencrypt](https:\/\/letsencrypt.org\/) in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueCertificates","weight":129,"cookies":false,"type":"","demo":"health\/get-queue-certificates.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-certificates.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/databases":{"get":{"summary":"Get databases queue","operationId":"healthGetQueueDatabases","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of database changes that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueDatabases","weight":131,"cookies":false,"type":"","demo":"health\/get-queue-databases.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-databases.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"name","description":"Queue name for which to check the queue size","required":false,"type":"string","x-example":"[NAME]","default":"database_db_main","in":"query"},{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/deletes":{"get":{"summary":"Get deletes queue","operationId":"healthGetQueueDeletes","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of background destructive changes that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueDeletes","weight":132,"cookies":false,"type":"","demo":"health\/get-queue-deletes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-deletes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/failed\/{name}":{"get":{"summary":"Get number of failed queue jobs","operationId":"healthGetFailedJobs","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Returns the amount of failed jobs in a given queue.\n","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getFailedJobs","weight":139,"cookies":false,"type":"","demo":"health\/get-failed-jobs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-failed-queue-jobs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"name","description":"The name of the queue","required":true,"type":"string","x-example":"v1-database","enum":["v1-database","v1-deletes","v1-audits","v1-mails","v1-functions","v1-usage","webhooksv1","v1-certificates","v1-builds","v1-messaging","v1-migrations","hamsterv1"],"x-enum-name":null,"x-enum-keys":[],"in":"path"},{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/functions":{"get":{"summary":"Get functions queue","operationId":"healthGetQueueFunctions","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueFunctions","weight":136,"cookies":false,"type":"","demo":"health\/get-queue-functions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-functions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/logs":{"get":{"summary":"Get logs queue","operationId":"healthGetQueueLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of logs that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueLogs","weight":127,"cookies":false,"type":"","demo":"health\/get-queue-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/mails":{"get":{"summary":"Get mails queue","operationId":"healthGetQueueMails","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of mails that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueMails","weight":133,"cookies":false,"type":"","demo":"health\/get-queue-mails.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-mails.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/messaging":{"get":{"summary":"Get messaging queue","operationId":"healthGetQueueMessaging","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of messages that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueMessaging","weight":134,"cookies":false,"type":"","demo":"health\/get-queue-messaging.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-messaging.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/migrations":{"get":{"summary":"Get migrations queue","operationId":"healthGetQueueMigrations","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of migrations that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueMigrations","weight":135,"cookies":false,"type":"","demo":"health\/get-queue-migrations.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-migrations.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/webhooks":{"get":{"summary":"Get webhooks queue","operationId":"healthGetQueueWebhooks","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of webhooks that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueWebhooks","weight":126,"cookies":false,"type":"","demo":"health\/get-queue-webhooks.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-webhooks.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/storage\/local":{"get":{"summary":"Get local storage","operationId":"healthGetStorageLocal","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite local storage device is up and connection is successful.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"getStorageLocal","weight":137,"cookies":false,"type":"","demo":"health\/get-storage-local.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-storage-local.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/time":{"get":{"summary":"Get time","operationId":"healthGetTime","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite server time is synced with Google remote NTP server. We use this technology to smoothly handle leap seconds with no disruptive events. The [Network Time Protocol](https:\/\/en.wikipedia.org\/wiki\/Network_Time_Protocol) (NTP) is used by hundreds of millions of computers and devices to synchronize their clocks over the Internet. If your computer sets its own clock, it likely uses NTP.","responses":{"200":{"description":"Health Time","schema":{"$ref":"#\/definitions\/healthTime"}}},"x-appwrite":{"method":"getTime","weight":125,"cookies":false,"type":"","demo":"health\/get-time.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-time.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/locale":{"get":{"summary":"Get user locale","operationId":"localeGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"Get the current user location based on IP. Returns an object with user country code, country name, continent name, continent code, ip address and suggested currency. You can use the locale header to get the data in a supported language.\n\n([IP Geolocation by DB-IP](https:\/\/db-ip.com))","responses":{"200":{"description":"Locale","schema":{"$ref":"#\/definitions\/locale"}}},"x-appwrite":{"method":"get","weight":111,"cookies":false,"type":"","demo":"locale\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-locale.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/localed","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}]}},"\/locale\/codes":{"get":{"summary":"List Locale Codes","operationId":"localeListCodes","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all locale codes in [ISO 639-1](https:\/\/en.wikipedia.org\/wiki\/List_of_ISO_639-1_codes).","responses":{"200":{"description":"Locale codes list","schema":{"$ref":"#\/definitions\/localeCodeList"}}},"x-appwrite":{"method":"listCodes","weight":112,"cookies":false,"type":"","demo":"locale\/list-codes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-locale-codes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/localeCode","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}]}},"\/locale\/continents":{"get":{"summary":"List continents","operationId":"localeListContinents","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","schema":{"$ref":"#\/definitions\/continentList"}}},"x-appwrite":{"method":"listContinents","weight":116,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/continents","offline-key":"","offline-response-key":"code","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List countries","operationId":"localeListCountries","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountries","weight":113,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/countries","offline-key":"","offline-response-key":"code","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU countries","operationId":"localeListCountriesEU","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountriesEU","weight":114,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/countries\/eu","offline-key":"","offline-response-key":"code","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List countries phone codes","operationId":"localeListCountriesPhones","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","schema":{"$ref":"#\/definitions\/phoneList"}}},"x-appwrite":{"method":"listCountriesPhones","weight":115,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/countries\/phones","offline-key":"","offline-response-key":"countryCode","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List currencies","operationId":"localeListCurrencies","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","schema":{"$ref":"#\/definitions\/currencyList"}}},"x-appwrite":{"method":"listCurrencies","weight":117,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/currencies","offline-key":"","offline-response-key":"code","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List languages","operationId":"localeListLanguages","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","schema":{"$ref":"#\/definitions\/languageList"}}},"x-appwrite":{"method":"listLanguages","weight":118,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/languages","offline-key":"","offline-response-key":"code","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}]}},"\/messaging\/messages":{"get":{"summary":"List messages","operationId":"messagingListMessages","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Message list","schema":{"$ref":"#\/definitions\/messageList"}}},"x-appwrite":{"method":"listMessages","weight":363,"cookies":false,"type":"","demo":"messaging\/list-messages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-messages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: scheduledAt, deliveredAt, deliveredTotal, status, description, providerType","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]}},"\/messaging\/messages\/email":{"post":{"summary":"Create an email.","operationId":"messagingCreateEmail","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Message","schema":{"$ref":"#\/definitions\/message"}}},"x-appwrite":{"method":"createEmail","weight":360,"cookies":false,"type":"","demo":"messaging\/create-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"messageId":{"type":"string","description":"Message ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[MESSAGE_ID]"},"subject":{"type":"string","description":"Email Subject.","default":null,"x-example":"[SUBJECT]"},"content":{"type":"string","description":"Email Content.","default":null,"x-example":"[CONTENT]"},"topics":{"type":"array","description":"List of Topic IDs.","default":[],"x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","default":[],"x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","default":[],"x-example":null,"items":{"type":"string"}},"cc":{"type":"array","description":"Array of target IDs to be added as CC.","default":[],"x-example":null,"items":{"type":"string"}},"bcc":{"type":"array","description":"Array of target IDs to be added as BCC.","default":[],"x-example":null,"items":{"type":"string"}},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","default":"draft","x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":"MessageStatus","x-enum-keys":[]},"html":{"type":"boolean","description":"Is content of type HTML","default":false,"x-example":false},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","default":null,"x-example":null}},"required":["messageId","subject","content"]}}]}},"\/messaging\/messages\/email\/{messageId}":{"patch":{"summary":"Update an email.","operationId":"messagingUpdateEmail","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Message","schema":{"$ref":"#\/definitions\/message"}}},"x-appwrite":{"method":"updateEmail","weight":367,"cookies":false,"type":"","demo":"messaging\/update-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"type":"string","x-example":"[MESSAGE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"topics":{"type":"array","description":"List of Topic IDs.","default":null,"x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","default":null,"x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","default":null,"x-example":null,"items":{"type":"string"}},"subject":{"type":"string","description":"Email Subject.","default":null,"x-example":"[SUBJECT]"},"content":{"type":"string","description":"Email Content.","default":null,"x-example":"[CONTENT]"},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","default":null,"x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":"MessageStatus","x-enum-keys":[]},"html":{"type":"boolean","description":"Is content of type HTML","default":null,"x-example":false},"cc":{"type":"array","description":"Array of target IDs to be added as CC.","default":null,"x-example":null,"items":{"type":"string"}},"bcc":{"type":"array","description":"Array of target IDs to be added as BCC.","default":null,"x-example":null,"items":{"type":"string"}},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","default":null,"x-example":null}}}}]}},"\/messaging\/messages\/push":{"post":{"summary":"Create a push notification.","operationId":"messagingCreatePush","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Message","schema":{"$ref":"#\/definitions\/message"}}},"x-appwrite":{"method":"createPush","weight":362,"cookies":false,"type":"","demo":"messaging\/create-push.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-push-notification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"messageId":{"type":"string","description":"Message ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[MESSAGE_ID]"},"title":{"type":"string","description":"Title for push notification.","default":null,"x-example":"[TITLE]"},"body":{"type":"string","description":"Body for push notification.","default":null,"x-example":"[BODY]"},"topics":{"type":"array","description":"List of Topic IDs.","default":[],"x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","default":[],"x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","default":[],"x-example":null,"items":{"type":"string"}},"data":{"type":"object","description":"Additional Data for push notification.","default":{},"x-example":"{}"},"action":{"type":"string","description":"Action for push notification.","default":"","x-example":"[ACTION]"},"icon":{"type":"string","description":"Icon for push notification. Available only for Android and Web Platform.","default":"","x-example":"[ICON]"},"sound":{"type":"string","description":"Sound for push notification. Available only for Android and IOS Platform.","default":"","x-example":"[SOUND]"},"color":{"type":"string","description":"Color for push notification. Available only for Android Platform.","default":"","x-example":"[COLOR]"},"tag":{"type":"string","description":"Tag for push notification. Available only for Android Platform.","default":"","x-example":"[TAG]"},"badge":{"type":"string","description":"Badge for push notification. Available only for IOS Platform.","default":"","x-example":"[BADGE]"},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","default":"draft","x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":"MessageStatus","x-enum-keys":[]},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","default":null,"x-example":null}},"required":["messageId","title","body"]}}]}},"\/messaging\/messages\/push\/{messageId}":{"patch":{"summary":"Update a push notification.","operationId":"messagingUpdatePush","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Message","schema":{"$ref":"#\/definitions\/message"}}},"x-appwrite":{"method":"updatePush","weight":369,"cookies":false,"type":"","demo":"messaging\/update-push.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-push-notification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"type":"string","x-example":"[MESSAGE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"topics":{"type":"array","description":"List of Topic IDs.","default":null,"x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","default":null,"x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","default":null,"x-example":null,"items":{"type":"string"}},"title":{"type":"string","description":"Title for push notification.","default":null,"x-example":"[TITLE]"},"body":{"type":"string","description":"Body for push notification.","default":null,"x-example":"[BODY]"},"data":{"type":"object","description":"Additional Data for push notification.","default":{},"x-example":"{}"},"action":{"type":"string","description":"Action for push notification.","default":null,"x-example":"[ACTION]"},"icon":{"type":"string","description":"Icon for push notification. Available only for Android and Web platforms.","default":null,"x-example":"[ICON]"},"sound":{"type":"string","description":"Sound for push notification. Available only for Android and iOS platforms.","default":null,"x-example":"[SOUND]"},"color":{"type":"string","description":"Color for push notification. Available only for Android platforms.","default":null,"x-example":"[COLOR]"},"tag":{"type":"string","description":"Tag for push notification. Available only for Android platforms.","default":null,"x-example":"[TAG]"},"badge":{"type":"integer","description":"Badge for push notification. Available only for iOS platforms.","default":null,"x-example":null},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","default":null,"x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":"MessageStatus","x-enum-keys":[]},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","default":null,"x-example":null}}}}]}},"\/messaging\/messages\/sms":{"post":{"summary":"Create an SMS.","operationId":"messagingCreateSMS","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Message","schema":{"$ref":"#\/definitions\/message"}}},"x-appwrite":{"method":"createSMS","weight":361,"cookies":false,"type":"","demo":"messaging\/create-s-m-s.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-sms.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"messageId":{"type":"string","description":"Message ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[MESSAGE_ID]"},"content":{"type":"string","description":"SMS Content.","default":null,"x-example":"[CONTENT]"},"topics":{"type":"array","description":"List of Topic IDs.","default":[],"x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","default":[],"x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","default":[],"x-example":null,"items":{"type":"string"}},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","default":"draft","x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":"MessageStatus","x-enum-keys":[]},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","default":null,"x-example":null}},"required":["messageId","content"]}}]}},"\/messaging\/messages\/sms\/{messageId}":{"patch":{"summary":"Update an SMS.","operationId":"messagingUpdateSMS","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Message","schema":{"$ref":"#\/definitions\/message"}}},"x-appwrite":{"method":"updateSMS","weight":368,"cookies":false,"type":"","demo":"messaging\/update-s-m-s.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"type":"string","x-example":"[MESSAGE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"topics":{"type":"array","description":"List of Topic IDs.","default":null,"x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","default":null,"x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","default":null,"x-example":null,"items":{"type":"string"}},"content":{"type":"string","description":"Email Content.","default":null,"x-example":"[CONTENT]"},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","default":null,"x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":"MessageStatus","x-enum-keys":[]},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","default":null,"x-example":null}}}}]}},"\/messaging\/messages\/{messageId}":{"get":{"summary":"Get a message","operationId":"messagingGetMessage","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Message","schema":{"$ref":"#\/definitions\/message"}}},"x-appwrite":{"method":"getMessage","weight":366,"cookies":false,"type":"","demo":"messaging\/get-message.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/get-message.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"type":"string","x-example":"[MESSAGE_ID]","in":"path"}]},"delete":{"summary":"Delete a message","operationId":"messagingDelete","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":370,"cookies":false,"type":"","demo":"messaging\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-message.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"type":"string","x-example":"[MESSAGE_ID]","in":"path"}]}},"\/messaging\/messages\/{messageId}\/logs":{"get":{"summary":"List message logs","operationId":"messagingListMessageLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listMessageLogs","weight":364,"cookies":false,"type":"","demo":"messaging\/list-message-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/messages\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"type":"string","x-example":"[MESSAGE_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/messaging\/messages\/{messageId}\/targets":{"get":{"summary":"List message targets","operationId":"messagingListTargets","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"List the targets associated with a message as set via the targets attribute.","responses":{"200":{"description":"Target list","schema":{"$ref":"#\/definitions\/targetList"}}},"x-appwrite":{"method":"listTargets","weight":365,"cookies":false,"type":"","demo":"messaging\/list-targets.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-message-targets.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"type":"string","x-example":"[MESSAGE_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, providerId, identifier, providerType","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/messaging\/providers":{"get":{"summary":"List providers","operationId":"messagingListProviders","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider list","schema":{"$ref":"#\/definitions\/providerList"}}},"x-appwrite":{"method":"listProviders","weight":335,"cookies":false,"type":"","demo":"messaging\/list-providers.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-providers.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, provider, type, enabled","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]}},"\/messaging\/providers\/apns":{"post":{"summary":"Create APNS provider","operationId":"messagingCreateAPNSProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createAPNSProvider","weight":334,"cookies":false,"type":"","demo":"messaging\/create-a-p-n-s-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-apns-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"authKey":{"type":"string","description":"APNS authentication key.","default":"","x-example":"[AUTH_KEY]"},"authKeyId":{"type":"string","description":"APNS authentication key ID.","default":"","x-example":"[AUTH_KEY_ID]"},"teamId":{"type":"string","description":"APNS team ID.","default":"","x-example":"[TEAM_ID]"},"bundleId":{"type":"string","description":"APNS bundle ID.","default":"","x-example":"[BUNDLE_ID]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name"]}}]}},"\/messaging\/providers\/apns\/{providerId}":{"patch":{"summary":"Update APNS provider","operationId":"messagingUpdateAPNSProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateAPNSProvider","weight":347,"cookies":false,"type":"","demo":"messaging\/update-a-p-n-s-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-apns-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"authKey":{"type":"string","description":"APNS authentication key.","default":"","x-example":"[AUTH_KEY]"},"authKeyId":{"type":"string","description":"APNS authentication key ID.","default":"","x-example":"[AUTH_KEY_ID]"},"teamId":{"type":"string","description":"APNS team ID.","default":"","x-example":"[TEAM_ID]"},"bundleId":{"type":"string","description":"APNS bundle ID.","default":"","x-example":"[BUNDLE_ID]"}}}}]}},"\/messaging\/providers\/fcm":{"post":{"summary":"Create FCM provider","operationId":"messagingCreateFCMProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createFCMProvider","weight":333,"cookies":false,"type":"","demo":"messaging\/create-f-c-m-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-fcm-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"serviceAccountJSON":{"type":"object","description":"FCM service account JSON.","default":{},"x-example":"{}"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name"]}}]}},"\/messaging\/providers\/fcm\/{providerId}":{"patch":{"summary":"Update FCM provider","operationId":"messagingUpdateFCMProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateFCMProvider","weight":346,"cookies":false,"type":"","demo":"messaging\/update-f-c-m-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-fcm-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"serviceAccountJSON":{"type":"object","description":"FCM service account JSON.","default":{},"x-example":"{}"}}}}]}},"\/messaging\/providers\/mailgun":{"post":{"summary":"Create Mailgun provider","operationId":"messagingCreateMailgunProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createMailgunProvider","weight":325,"cookies":false,"type":"","demo":"messaging\/create-mailgun-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-mailgun-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"apiKey":{"type":"string","description":"Mailgun API Key.","default":"","x-example":"[API_KEY]"},"domain":{"type":"string","description":"Mailgun Domain.","default":"","x-example":"[DOMAIN]"},"isEuRegion":{"type":"boolean","description":"Set as EU region.","default":null,"x-example":false},"fromName":{"type":"string","description":"Sender Name.","default":"","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","default":"","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the reply to field for the mail. Default value is sender name. Reply to name must have reply to email as well.","default":"","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the reply to field for the mail. Default value is sender email. Reply to email must have reply to name as well.","default":"","x-example":"email@example.com"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name"]}}]}},"\/messaging\/providers\/mailgun\/{providerId}":{"patch":{"summary":"Update Mailgun provider","operationId":"messagingUpdateMailgunProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateMailgunProvider","weight":338,"cookies":false,"type":"","demo":"messaging\/update-mailgun-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-mailgun-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"apiKey":{"type":"string","description":"Mailgun API Key.","default":"","x-example":"[API_KEY]"},"domain":{"type":"string","description":"Mailgun Domain.","default":"","x-example":"[DOMAIN]"},"isEuRegion":{"type":"boolean","description":"Set as EU region.","default":null,"x-example":false},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"fromName":{"type":"string","description":"Sender Name.","default":"","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","default":"","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the reply to field for the mail. Default value is sender name.","default":"","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the reply to field for the mail. Default value is sender email.","default":"","x-example":"[REPLY_TO_EMAIL]"}}}}]}},"\/messaging\/providers\/msg91":{"post":{"summary":"Create Msg91 provider","operationId":"messagingCreateMsg91Provider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createMsg91Provider","weight":328,"cookies":false,"type":"","demo":"messaging\/create-msg91provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-msg91-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":"","x-example":"+12065550100"},"senderId":{"type":"string","description":"Msg91 Sender ID.","default":"","x-example":"[SENDER_ID]"},"authKey":{"type":"string","description":"Msg91 Auth Key.","default":"","x-example":"[AUTH_KEY]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name"]}}]}},"\/messaging\/providers\/msg91\/{providerId}":{"patch":{"summary":"Update Msg91 provider","operationId":"messagingUpdateMsg91Provider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateMsg91Provider","weight":341,"cookies":false,"type":"","demo":"messaging\/update-msg91provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-msg91-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"senderId":{"type":"string","description":"Msg91 Sender ID.","default":"","x-example":"[SENDER_ID]"},"authKey":{"type":"string","description":"Msg91 Auth Key.","default":"","x-example":"[AUTH_KEY]"},"from":{"type":"string","description":"Sender number.","default":"","x-example":"[FROM]"}}}}]}},"\/messaging\/providers\/sendgrid":{"post":{"summary":"Create Sendgrid provider","operationId":"messagingCreateSendgridProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createSendgridProvider","weight":326,"cookies":false,"type":"","demo":"messaging\/create-sendgrid-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-sengrid-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"apiKey":{"type":"string","description":"Sendgrid API key.","default":"","x-example":"[API_KEY]"},"fromName":{"type":"string","description":"Sender Name.","default":"","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","default":"","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the reply to field for the mail. Default value is sender name.","default":"","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the reply to field for the mail. Default value is sender email.","default":"","x-example":"email@example.com"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name"]}}]}},"\/messaging\/providers\/sendgrid\/{providerId}":{"patch":{"summary":"Update Sendgrid provider","operationId":"messagingUpdateSendgridProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateSendgridProvider","weight":339,"cookies":false,"type":"","demo":"messaging\/update-sendgrid-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-sendgrid-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"apiKey":{"type":"string","description":"Sendgrid API key.","default":"","x-example":"[API_KEY]"},"fromName":{"type":"string","description":"Sender Name.","default":"","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","default":"","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the Reply To field for the mail. Default value is Sender Name.","default":"","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the Reply To field for the mail. Default value is Sender Email.","default":"","x-example":"[REPLY_TO_EMAIL]"}}}}]}},"\/messaging\/providers\/smtp":{"post":{"summary":"Create SMTP provider","operationId":"messagingCreateSMTPProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createSMTPProvider","weight":327,"cookies":false,"type":"","demo":"messaging\/create-s-m-t-p-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-smtp-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"host":{"type":"string","description":"SMTP hosts. Either a single hostname or multiple semicolon-delimited hostnames. You can also specify a different port for each host by using this format: [hostname:port] (e.g. \"smtp1.example.com:25;smtp2.example.com\"). You can also specify encryption type, for example: (e.g. \"tls:\/\/smtp1.example.com:587;ssl:\/\/smtp2.example.com:465\"). Hosts will be tried in order.","default":null,"x-example":"[HOST]"},"port":{"type":"integer","description":"The default SMTP server port.","default":587,"x-example":1},"username":{"type":"string","description":"Authentication username.","default":"","x-example":"[USERNAME]"},"password":{"type":"string","description":"Authentication password.","default":"","x-example":"[PASSWORD]"},"encryption":{"type":"string","description":"Encryption type. Can be omitted, 'ssl', or 'tls'","default":"","x-example":"none","enum":["none","ssl","tls"],"x-enum-name":"SMTPEncryption","x-enum-keys":[]},"autoTLS":{"type":"boolean","description":"Enable SMTP AutoTLS feature.","default":true,"x-example":false},"mailer":{"type":"string","description":"The value to use for the X-Mailer header.","default":"","x-example":"[MAILER]"},"fromName":{"type":"string","description":"Sender Name.","default":"","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","default":"","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the reply to field for the mail. Default value is sender name.","default":"","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the reply to field for the mail. Default value is sender email.","default":"","x-example":"email@example.com"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name","host"]}}]}},"\/messaging\/providers\/smtp\/{providerId}":{"patch":{"summary":"Update SMTP provider","operationId":"messagingUpdateSMTPProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateSMTPProvider","weight":340,"cookies":false,"type":"","demo":"messaging\/update-s-m-t-p-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-smtp-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"host":{"type":"string","description":"SMTP hosts. Either a single hostname or multiple semicolon-delimited hostnames. You can also specify a different port for each host by using this format: [hostname:port] (e.g. \"smtp1.example.com:25;smtp2.example.com\"). You can also specify encryption type, for example: (e.g. \"tls:\/\/smtp1.example.com:587;ssl:\/\/smtp2.example.com:465\"). Hosts will be tried in order.","default":"","x-example":"[HOST]"},"port":{"type":"integer","description":"SMTP port.","default":null,"x-example":1},"username":{"type":"string","description":"Authentication username.","default":"","x-example":"[USERNAME]"},"password":{"type":"string","description":"Authentication password.","default":"","x-example":"[PASSWORD]"},"encryption":{"type":"string","description":"Encryption type. Can be 'ssl' or 'tls'","default":"","x-example":"none","enum":["none","ssl","tls"],"x-enum-name":"SMTPEncryption","x-enum-keys":[]},"autoTLS":{"type":"boolean","description":"Enable SMTP AutoTLS feature.","default":null,"x-example":false},"mailer":{"type":"string","description":"The value to use for the X-Mailer header.","default":"","x-example":"[MAILER]"},"fromName":{"type":"string","description":"Sender Name.","default":"","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","default":"","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the Reply To field for the mail. Default value is Sender Name.","default":"","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the Reply To field for the mail. Default value is Sender Email.","default":"","x-example":"[REPLY_TO_EMAIL]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}}}}]}},"\/messaging\/providers\/telesign":{"post":{"summary":"Create Telesign provider","operationId":"messagingCreateTelesignProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createTelesignProvider","weight":329,"cookies":false,"type":"","demo":"messaging\/create-telesign-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-telesign-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":"","x-example":"+12065550100"},"customerId":{"type":"string","description":"Telesign customer ID.","default":"","x-example":"[CUSTOMER_ID]"},"apiKey":{"type":"string","description":"Telesign API key.","default":"","x-example":"[API_KEY]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name"]}}]}},"\/messaging\/providers\/telesign\/{providerId}":{"patch":{"summary":"Update Telesign provider","operationId":"messagingUpdateTelesignProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateTelesignProvider","weight":342,"cookies":false,"type":"","demo":"messaging\/update-telesign-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-telesign-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"customerId":{"type":"string","description":"Telesign customer ID.","default":"","x-example":"[CUSTOMER_ID]"},"apiKey":{"type":"string","description":"Telesign API key.","default":"","x-example":"[API_KEY]"},"from":{"type":"string","description":"Sender number.","default":"","x-example":"[FROM]"}}}}]}},"\/messaging\/providers\/textmagic":{"post":{"summary":"Create Textmagic provider","operationId":"messagingCreateTextmagicProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createTextmagicProvider","weight":330,"cookies":false,"type":"","demo":"messaging\/create-textmagic-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-textmagic-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":"","x-example":"+12065550100"},"username":{"type":"string","description":"Textmagic username.","default":"","x-example":"[USERNAME]"},"apiKey":{"type":"string","description":"Textmagic apiKey.","default":"","x-example":"[API_KEY]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name"]}}]}},"\/messaging\/providers\/textmagic\/{providerId}":{"patch":{"summary":"Update Textmagic provider","operationId":"messagingUpdateTextmagicProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateTextmagicProvider","weight":343,"cookies":false,"type":"","demo":"messaging\/update-textmagic-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-textmagic-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"username":{"type":"string","description":"Textmagic username.","default":"","x-example":"[USERNAME]"},"apiKey":{"type":"string","description":"Textmagic apiKey.","default":"","x-example":"[API_KEY]"},"from":{"type":"string","description":"Sender number.","default":"","x-example":"[FROM]"}}}}]}},"\/messaging\/providers\/twilio":{"post":{"summary":"Create Twilio provider","operationId":"messagingCreateTwilioProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createTwilioProvider","weight":331,"cookies":false,"type":"","demo":"messaging\/create-twilio-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-twilio-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":"","x-example":"+12065550100"},"accountSid":{"type":"string","description":"Twilio account secret ID.","default":"","x-example":"[ACCOUNT_SID]"},"authToken":{"type":"string","description":"Twilio authentication token.","default":"","x-example":"[AUTH_TOKEN]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name"]}}]}},"\/messaging\/providers\/twilio\/{providerId}":{"patch":{"summary":"Update Twilio provider","operationId":"messagingUpdateTwilioProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateTwilioProvider","weight":344,"cookies":false,"type":"","demo":"messaging\/update-twilio-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-twilio-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"accountSid":{"type":"string","description":"Twilio account secret ID.","default":"","x-example":"[ACCOUNT_SID]"},"authToken":{"type":"string","description":"Twilio authentication token.","default":"","x-example":"[AUTH_TOKEN]"},"from":{"type":"string","description":"Sender number.","default":"","x-example":"[FROM]"}}}}]}},"\/messaging\/providers\/vonage":{"post":{"summary":"Create Vonage provider","operationId":"messagingCreateVonageProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createVonageProvider","weight":332,"cookies":false,"type":"","demo":"messaging\/create-vonage-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-vonage-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":"","x-example":"+12065550100"},"apiKey":{"type":"string","description":"Vonage API key.","default":"","x-example":"[API_KEY]"},"apiSecret":{"type":"string","description":"Vonage API secret.","default":"","x-example":"[API_SECRET]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name"]}}]}},"\/messaging\/providers\/vonage\/{providerId}":{"patch":{"summary":"Update Vonage provider","operationId":"messagingUpdateVonageProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateVonageProvider","weight":345,"cookies":false,"type":"","demo":"messaging\/update-vonage-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-vonage-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"apiKey":{"type":"string","description":"Vonage API key.","default":"","x-example":"[API_KEY]"},"apiSecret":{"type":"string","description":"Vonage API secret.","default":"","x-example":"[API_SECRET]"},"from":{"type":"string","description":"Sender number.","default":"","x-example":"[FROM]"}}}}]}},"\/messaging\/providers\/{providerId}":{"get":{"summary":"Get provider","operationId":"messagingGetProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"getProvider","weight":337,"cookies":false,"type":"","demo":"messaging\/get-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/get-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"}]},"delete":{"summary":"Delete provider","operationId":"messagingDeleteProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteProvider","weight":348,"cookies":false,"type":"","demo":"messaging\/delete-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"}]}},"\/messaging\/providers\/{providerId}\/logs":{"get":{"summary":"List provider logs","operationId":"messagingListProviderLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listProviderLogs","weight":336,"cookies":false,"type":"","demo":"messaging\/list-provider-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/providers\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/messaging\/subscribers\/{subscriberId}\/logs":{"get":{"summary":"List subscriber logs","operationId":"messagingListSubscriberLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listSubscriberLogs","weight":357,"cookies":false,"type":"","demo":"messaging\/list-subscriber-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/subscribers\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"subscriberId","description":"Subscriber ID.","required":true,"type":"string","x-example":"[SUBSCRIBER_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/messaging\/topics":{"get":{"summary":"List topics.","operationId":"messagingListTopics","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Topic list","schema":{"$ref":"#\/definitions\/topicList"}}},"x-appwrite":{"method":"listTopics","weight":350,"cookies":false,"type":"","demo":"messaging\/list-topics.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-topics.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, description, total","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create a topic.","operationId":"messagingCreateTopic","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Topic","schema":{"$ref":"#\/definitions\/topic"}}},"x-appwrite":{"method":"createTopic","weight":349,"cookies":false,"type":"","demo":"messaging\/create-topic.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-topic.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"topicId":{"type":"string","description":"Topic ID. Choose a custom Topic ID or a new Topic ID.","default":null,"x-example":"[TOPIC_ID]"},"name":{"type":"string","description":"Topic Name.","default":null,"x-example":"[NAME]"},"subscribe":{"type":"array","description":"An array of role strings with subscribe permission. By default all users are granted with any subscribe permission. [learn more about roles](https:\/\/appwrite.io\/docs\/permissions#permission-roles). Maximum of 100 roles are allowed, each 64 characters long.","default":["users"],"x-example":"[\"any\"]","items":{"type":"string"}}},"required":["topicId","name"]}}]}},"\/messaging\/topics\/{topicId}":{"get":{"summary":"Get a topic.","operationId":"messagingGetTopic","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Topic","schema":{"$ref":"#\/definitions\/topic"}}},"x-appwrite":{"method":"getTopic","weight":352,"cookies":false,"type":"","demo":"messaging\/get-topic.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/get-topic.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID.","required":true,"type":"string","x-example":"[TOPIC_ID]","in":"path"}]},"patch":{"summary":"Update a topic.","operationId":"messagingUpdateTopic","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Topic","schema":{"$ref":"#\/definitions\/topic"}}},"x-appwrite":{"method":"updateTopic","weight":353,"cookies":false,"type":"","demo":"messaging\/update-topic.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-topic.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID.","required":true,"type":"string","x-example":"[TOPIC_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Topic Name.","default":"","x-example":"[NAME]"}}}}]},"delete":{"summary":"Delete a topic.","operationId":"messagingDeleteTopic","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteTopic","weight":354,"cookies":false,"type":"","demo":"messaging\/delete-topic.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-topic.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID.","required":true,"type":"string","x-example":"[TOPIC_ID]","in":"path"}]}},"\/messaging\/topics\/{topicId}\/logs":{"get":{"summary":"List topic logs","operationId":"messagingListTopicLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listTopicLogs","weight":351,"cookies":false,"type":"","demo":"messaging\/list-topic-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/topics\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID.","required":true,"type":"string","x-example":"[TOPIC_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/messaging\/topics\/{topicId}\/subscribers":{"get":{"summary":"List subscribers.","operationId":"messagingListSubscribers","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Subscriber list","schema":{"$ref":"#\/definitions\/subscriberList"}}},"x-appwrite":{"method":"listSubscribers","weight":356,"cookies":false,"type":"","demo":"messaging\/list-subscribers.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-subscribers.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID subscribed to.","required":true,"type":"string","x-example":"[TOPIC_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, provider, type, enabled","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create a subscriber.","operationId":"messagingCreateSubscriber","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Subscriber","schema":{"$ref":"#\/definitions\/subscriber"}}},"x-appwrite":{"method":"createSubscriber","weight":355,"cookies":false,"type":"","demo":"messaging\/create-subscriber.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-subscriber.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.write","platforms":["server","client","console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[],"Session":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID to subscribe to.","required":true,"type":"string","x-example":"[TOPIC_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"subscriberId":{"type":"string","description":"Subscriber ID. Choose a custom Subscriber ID or a new Subscriber ID.","default":null,"x-example":"[SUBSCRIBER_ID]"},"targetId":{"type":"string","description":"Target ID. The target ID to link to the specified Topic ID.","default":null,"x-example":"[TARGET_ID]"}},"required":["subscriberId","targetId"]}}]}},"\/messaging\/topics\/{topicId}\/subscribers\/{subscriberId}":{"get":{"summary":"Get a subscriber.","operationId":"messagingGetSubscriber","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Subscriber","schema":{"$ref":"#\/definitions\/subscriber"}}},"x-appwrite":{"method":"getSubscriber","weight":358,"cookies":false,"type":"","demo":"messaging\/get-subscriber.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/get-subscriber.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID subscribed to.","required":true,"type":"string","x-example":"[TOPIC_ID]","in":"path"},{"name":"subscriberId","description":"Subscriber ID.","required":true,"type":"string","x-example":"[SUBSCRIBER_ID]","in":"path"}]},"delete":{"summary":"Delete a subscriber.","operationId":"messagingDeleteSubscriber","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSubscriber","weight":359,"cookies":false,"type":"","demo":"messaging\/delete-subscriber.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-subscriber.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.write","platforms":["server","client","console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[],"Session":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID subscribed to.","required":true,"type":"string","x-example":"[TOPIC_ID]","in":"path"},{"name":"subscriberId","description":"Subscriber ID.","required":true,"type":"string","x-example":"[SUBSCRIBER_ID]","in":"path"}]}},"\/storage\/buckets":{"get":{"summary":"List buckets","operationId":"storageListBuckets","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a list of all the storage buckets. You can use the query params to filter your results.","responses":{"200":{"description":"Buckets List","schema":{"$ref":"#\/definitions\/bucketList"}}},"x-appwrite":{"method":"listBuckets","weight":188,"cookies":false,"type":"","demo":"storage\/list-buckets.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/list-buckets.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: enabled, name, fileSecurity, maximumFileSize, encryption, antivirus","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create bucket","operationId":"storageCreateBucket","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Create a new storage bucket.","responses":{"201":{"description":"Bucket","schema":{"$ref":"#\/definitions\/bucket"}}},"x-appwrite":{"method":"createBucket","weight":187,"cookies":false,"type":"","demo":"storage\/create-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"bucketId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, no user is granted with any permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":false,"x-example":false},"enabled":{"type":"boolean","description":"Is bucket enabled? When set to 'disabled', users cannot access the files in this bucket but Server SDKs with and API key can still access the bucket. No files are lost when this is toggled.","default":true,"x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB.","default":30000000,"x-example":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","default":[],"x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","default":"none","x-example":"none","enum":["none","gzip","zstd"],"x-enum-name":null,"x-enum-keys":[]},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","default":true,"x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","default":true,"x-example":false}},"required":["bucketId","name"]}}]}},"\/storage\/buckets\/{bucketId}":{"get":{"summary":"Get bucket","operationId":"storageGetBucket","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a storage bucket by its unique ID. This endpoint response returns a JSON object with the storage bucket metadata.","responses":{"200":{"description":"Bucket","schema":{"$ref":"#\/definitions\/bucket"}}},"x-appwrite":{"method":"getBucket","weight":189,"cookies":false,"type":"","demo":"storage\/get-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"bucketId","description":"Bucket unique ID.","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"}]},"put":{"summary":"Update bucket","operationId":"storageUpdateBucket","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Update a storage bucket by its unique ID.","responses":{"200":{"description":"Bucket","schema":{"$ref":"#\/definitions\/bucket"}}},"x-appwrite":{"method":"updateBucket","weight":190,"cookies":false,"type":"","demo":"storage\/update-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"bucketId","description":"Bucket unique ID.","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Bucket name","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":false,"x-example":false},"enabled":{"type":"boolean","description":"Is bucket enabled? When set to 'disabled', users cannot access the files in this bucket but Server SDKs with and API key can still access the bucket. No files are lost when this is toggled.","default":true,"x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB.","default":null,"x-example":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","default":[],"x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","default":"none","x-example":"none","enum":["none","gzip","zstd"],"x-enum-name":null,"x-enum-keys":[]},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","default":true,"x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","default":true,"x-example":false}},"required":["name"]}}]},"delete":{"summary":"Delete bucket","operationId":"storageDeleteBucket","consumes":["application\/json"],"produces":[],"tags":["storage"],"description":"Delete a storage bucket by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteBucket","weight":191,"cookies":false,"type":"","demo":"storage\/delete-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"bucketId","description":"Bucket unique ID.","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files":{"get":{"summary":"List files","operationId":"storageListFiles","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a list of all the user files. You can use the query params to filter your results.","responses":{"200":{"description":"Files List","schema":{"$ref":"#\/definitions\/fileList"}}},"x-appwrite":{"method":"listFiles","weight":193,"cookies":false,"type":"","demo":"storage\/list-files.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/list-files.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create file","operationId":"storageCreateFile","consumes":["multipart\/form-data"],"produces":["application\/json"],"tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"createFile","weight":192,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","required":true,"x-upload-id":true,"type":"string","x-example":"[FILE_ID]","in":"formData"},{"name":"file","description":"Binary file. Appwrite SDKs provide helpers to handle file input. [Learn about file input](https:\/\/appwrite.io\/docs\/storage#file-input).","required":true,"type":"file","in":"formData"},{"name":"permissions","description":"An array of permission strings. By default, only the current user is granted all permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"x-example":"[\"read(\"any\")\"]","in":"formData"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get file","operationId":"storageGetFile","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"getFile","weight":194,"cookies":false,"type":"","demo":"storage\/get-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID.","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"}]},"put":{"summary":"Update file","operationId":"storageUpdateFile","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Update a file by its unique ID. Only users with write permissions have access to update this resource.","responses":{"200":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"updateFile","weight":198,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File unique ID.","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Name of the file","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission string. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","consumes":["application\/json"],"produces":[],"tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":199,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID.","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/download":{"get":{"summary":"Get file for download","operationId":"storageGetFileDownload","consumes":["application\/json"],"produces":["*\/*"],"tags":["storage"],"description":"Get a file content by its unique ID. The endpoint response return with a 'Content-Disposition: attachment' header that tells the browser to start downloading the file to user downloads directory.","responses":{"200":{"description":"File","schema":{"type":"file"}}},"x-appwrite":{"method":"getFileDownload","weight":196,"cookies":false,"type":"location","demo":"storage\/get-file-download.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-download.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID.","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/preview":{"get":{"summary":"Get file preview","operationId":"storageGetFilePreview","consumes":["application\/json"],"produces":["image\/*"],"tags":["storage"],"description":"Get a file preview image. Currently, this method supports preview for image files (jpg, png, and gif), other supported formats, like pdf, docs, slides, and spreadsheets, will return the file icon image. You can also pass query string arguments for cutting and resizing your preview image. Preview is supported only for image files smaller than 10MB.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFilePreview","weight":195,"cookies":false,"type":"location","demo":"storage\/get-file-preview.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-preview.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"},{"name":"width","description":"Resize preview image width, Pass an integer between 0 to 4000.","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 4000.","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"gravity","description":"Image crop gravity. Can be one of center,top-left,top,top-right,left,right,bottom-left,bottom,bottom-right","required":false,"type":"string","x-example":"center","enum":["center","top-left","top","top-right","left","right","bottom-left","bottom","bottom-right"],"x-enum-name":"ImageGravity","x-enum-keys":[],"default":"center","in":"query"},{"name":"quality","description":"Preview image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"borderWidth","description":"Preview image border in pixels. Pass an integer between 0 to 100. Defaults to 0.","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"borderColor","description":"Preview image border color. Use a valid HEX color, no # is needed for prefix.","required":false,"type":"string","default":"","in":"query"},{"name":"borderRadius","description":"Preview image border radius in pixels. Pass an integer between 0 to 4000.","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"opacity","description":"Preview image opacity. Only works with images having an alpha channel (like png). Pass a number between 0 to 1.","required":false,"type":"number","format":"float","x-example":0,"default":1,"in":"query"},{"name":"rotation","description":"Preview image rotation in degrees. Pass an integer between -360 and 360.","required":false,"type":"integer","format":"int32","x-example":-360,"default":0,"in":"query"},{"name":"background","description":"Preview image background color. Only works with transparent images (png). Use a valid HEX color, no # is needed for prefix.","required":false,"type":"string","default":"","in":"query"},{"name":"output","description":"Output format type (jpeg, jpg, png, gif and webp).","required":false,"type":"string","x-example":"jpg","enum":["jpg","jpeg","gif","png","webp"],"x-enum-name":"ImageFormat","x-enum-keys":[],"default":"","in":"query"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/view":{"get":{"summary":"Get file for view","operationId":"storageGetFileView","consumes":["application\/json"],"produces":["*\/*"],"tags":["storage"],"description":"Get a file content by its unique ID. This endpoint is similar to the download method but returns with no 'Content-Disposition: attachment' header.","responses":{"200":{"description":"File","schema":{"type":"file"}}},"x-appwrite":{"method":"getFileView","weight":197,"cookies":false,"type":"location","demo":"storage\/get-file-view.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-view.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID.","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"}]}},"\/teams":{"get":{"summary":"List teams","operationId":"teamsList","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get a list of all the teams in which the current user is a member. You can use the parameters to filter your results.","responses":{"200":{"description":"Teams List","schema":{"$ref":"#\/definitions\/teamList"}}},"x-appwrite":{"method":"list","weight":203,"cookies":false,"type":"","demo":"teams\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-teams.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total, billingPlan","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create team","operationId":"teamsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"create","weight":202,"cookies":false,"type":"","demo":"teams\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/create-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"teamId":{"type":"string","description":"Team ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[TEAM_ID]"},"name":{"type":"string","description":"Team name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"roles":{"type":"array","description":"Array of strings. Use this param to set the roles in the team for the user who created it. The default role is **owner**. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","default":["owner"],"x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}]}},"\/teams\/{teamId}":{"get":{"summary":"Get team","operationId":"teamsGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"get","weight":204,"cookies":false,"type":"","demo":"teams\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams","offline-key":"{teamId}","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"}]},"put":{"summary":"Update name","operationId":"teamsUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Update the team's name by its unique ID.","responses":{"200":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"updateName","weight":206,"cookies":false,"type":"","demo":"teams\/update-name.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-name.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams","offline-key":"{teamId}","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"New team name. Max length: 128 chars.","default":null,"x-example":"[NAME]"}},"required":["name"]}}]},"delete":{"summary":"Delete team","operationId":"teamsDelete","consumes":["application\/json"],"produces":[],"tags":["teams"],"description":"Delete a team using its ID. Only team members with the owner role can delete the team.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":208,"cookies":false,"type":"","demo":"teams\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/delete-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"}]}},"\/teams\/{teamId}\/memberships":{"get":{"summary":"List team memberships","operationId":"teamsListMemberships","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"listMemberships","weight":210,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/memberships","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create team membership","operationId":"teamsCreateMembership","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Invite a new member to join your team. Provide an ID for existing users, or invite unregistered users using an email or phone number. If initiated from a Client SDK, Appwrite will send an email or sms with a link to join the team to the invited user, and an account will be created for them if one doesn't exist. If initiated from a Server SDK, the new member will be added automatically to the team.\n\nYou only need to provide one of a user ID, email, or phone number. Appwrite will prioritize accepting the user ID > email > phone number if you provide more than one of these parameters.\n\nUse the `url` parameter to redirect the user from the invitation email to your app. After the user is redirected, use the [Update Team Membership Status](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/teams#updateMembershipStatus) endpoint to allow the user to accept the invitation to the team. \n\nPlease note that to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) Appwrite will accept the only redirect URLs under the domains you have added as a platform on the Appwrite Console.\n","responses":{"201":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"createMembership","weight":209,"cookies":false,"type":"","demo":"teams\/create-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/create-team-membership.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"email":{"type":"string","description":"Email of the new team member.","default":"","x-example":"email@example.com"},"userId":{"type":"string","description":"ID of the user to be added to a team.","default":"","x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":"","x-example":"+12065550100"},"roles":{"type":"array","description":"Array of strings. Use this param to set the user roles in the team. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":"","x-example":"https:\/\/example.com"},"name":{"type":"string","description":"Name of the new team member. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["roles"]}}]}},"\/teams\/{teamId}\/memberships\/{membershipId}":{"get":{"summary":"Get team membership","operationId":"teamsGetMembership","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get a team member by the membership unique id. All team members have read access for this resource.","responses":{"200":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"getMembership","weight":211,"cookies":false,"type":"","demo":"teams\/get-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-member.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/memberships","offline-key":"{membershipId}","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"type":"string","x-example":"[MEMBERSHIP_ID]","in":"path"}]},"patch":{"summary":"Update membership","operationId":"teamsUpdateMembership","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Modify the roles of a team member. Only team members with the owner role have access to this endpoint. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions).\n","responses":{"200":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"updateMembership","weight":212,"cookies":false,"type":"","demo":"teams\/update-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"type":"string","x-example":"[MEMBERSHIP_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"roles":{"type":"array","description":"An array of strings. Use this param to set the user's roles in the team. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}}},"required":["roles"]}}]},"delete":{"summary":"Delete team membership","operationId":"teamsDeleteMembership","consumes":["application\/json"],"produces":[],"tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":214,"cookies":false,"type":"","demo":"teams\/delete-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/delete-team-membership.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"type":"string","x-example":"[MEMBERSHIP_ID]","in":"path"}]}},"\/teams\/{teamId}\/memberships\/{membershipId}\/status":{"patch":{"summary":"Update team membership status","operationId":"teamsUpdateMembershipStatus","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Use this endpoint to allow a user to accept an invitation to join a team after being redirected back to your app from the invitation email received by the user.\n\nIf the request is successful, a session for the user is automatically created.\n","responses":{"200":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"updateMembershipStatus","weight":213,"cookies":false,"type":"","demo":"teams\/update-membership-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"public","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"type":"string","x-example":"[MEMBERSHIP_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Secret key.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/teams\/{teamId}\/prefs":{"get":{"summary":"Get team preferences","operationId":"teamsGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get the team's shared preferences by its unique ID. If a preference doesn't need to be shared by all team members, prefer storing them in [user preferences](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#getPrefs).","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":205,"cookies":false,"type":"","demo":"teams\/get-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/prefs","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"}]},"put":{"summary":"Update preferences","operationId":"teamsUpdatePrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Update the team's preferences by its unique ID. The object you pass is stored as is and replaces any previous value. The maximum allowed prefs size is 64kB and throws an error if exceeded.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"updatePrefs","weight":207,"cookies":false,"type":"","demo":"teams\/update-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/prefs","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"prefs":{"type":"object","description":"Prefs key-value JSON object.","default":{},"x-example":"{}"}},"required":["prefs"]}}]}},"\/users":{"get":{"summary":"List users","operationId":"usersList","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get a list of all the project's users. You can use the query params to filter your results.","responses":{"200":{"description":"Users List","schema":{"$ref":"#\/definitions\/userList"}}},"x-appwrite":{"method":"list","weight":225,"cookies":false,"type":"","demo":"users\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-users.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, email, phone, status, passwordUpdate, registration, emailVerification, phoneVerification, labels","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create user","operationId":"usersCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"create","weight":216,"cookies":false,"type":"","demo":"users\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"},"password":{"type":"string","description":"Plain text user password. Must be at least 8 chars.","default":"","x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId"]}}]}},"\/users\/argon2":{"post":{"summary":"Create user with Argon2 password","operationId":"usersCreateArgon2User","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Argon2](https:\/\/en.wikipedia.org\/wiki\/Argon2) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createArgon2User","weight":219,"cookies":false,"type":"","demo":"users\/create-argon2user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-argon2-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Argon2.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/bcrypt":{"post":{"summary":"Create user with bcrypt password","operationId":"usersCreateBcryptUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Bcrypt](https:\/\/en.wikipedia.org\/wiki\/Bcrypt) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createBcryptUser","weight":217,"cookies":false,"type":"","demo":"users\/create-bcrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-bcrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Bcrypt.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/identities":{"get":{"summary":"List Identities","operationId":"usersListIdentities","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get identities for all users.","responses":{"200":{"description":"Identities List","schema":{"$ref":"#\/definitions\/identityList"}}},"x-appwrite":{"method":"listIdentities","weight":233,"cookies":false,"type":"","demo":"users\/list-identities.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-identities.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, provider, providerUid, providerEmail, providerAccessTokenExpiry","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]}},"\/users\/identities\/{identityId}":{"delete":{"summary":"Delete identity","operationId":"usersDeleteIdentity","consumes":["application\/json"],"produces":[],"tags":["users"],"description":"Delete an identity by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIdentity","weight":253,"cookies":false,"type":"","demo":"users\/delete-identity.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-identity.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"identityId","description":"Identity ID.","required":true,"type":"string","x-example":"[IDENTITY_ID]","in":"path"}]}},"\/users\/md5":{"post":{"summary":"Create user with MD5 password","operationId":"usersCreateMD5User","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [MD5](https:\/\/en.wikipedia.org\/wiki\/MD5) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createMD5User","weight":218,"cookies":false,"type":"","demo":"users\/create-m-d5user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-md5-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using MD5.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/phpass":{"post":{"summary":"Create user with PHPass password","operationId":"usersCreatePHPassUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [PHPass](https:\/\/www.openwall.com\/phpass\/) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createPHPassUser","weight":221,"cookies":false,"type":"","demo":"users\/create-p-h-pass-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-phpass-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or pass the string `ID.unique()`to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using PHPass.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/scrypt":{"post":{"summary":"Create user with Scrypt password","operationId":"usersCreateScryptUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt](https:\/\/github.com\/Tarsnap\/scrypt) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createScryptUser","weight":222,"cookies":false,"type":"","demo":"users\/create-scrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt.","default":null,"x-example":"password"},"passwordSalt":{"type":"string","description":"Optional salt used to hash password.","default":null,"x-example":"[PASSWORD_SALT]"},"passwordCpu":{"type":"integer","description":"Optional CPU cost used to hash password.","default":null,"x-example":null},"passwordMemory":{"type":"integer","description":"Optional memory cost used to hash password.","default":null,"x-example":null},"passwordParallel":{"type":"integer","description":"Optional parallelization cost used to hash password.","default":null,"x-example":null},"passwordLength":{"type":"integer","description":"Optional hash length used to hash password.","default":null,"x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordCpu","passwordMemory","passwordParallel","passwordLength"]}}]}},"\/users\/scrypt-modified":{"post":{"summary":"Create user with Scrypt modified password","operationId":"usersCreateScryptModifiedUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt Modified](https:\/\/gist.github.com\/Meldiron\/eecf84a0225eccb5a378d45bb27462cc) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createScryptModifiedUser","weight":223,"cookies":false,"type":"","demo":"users\/create-scrypt-modified-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-modified-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt Modified.","default":null,"x-example":"password"},"passwordSalt":{"type":"string","description":"Salt used to hash password.","default":null,"x-example":"[PASSWORD_SALT]"},"passwordSaltSeparator":{"type":"string","description":"Salt separator used to hash password.","default":null,"x-example":"[PASSWORD_SALT_SEPARATOR]"},"passwordSignerKey":{"type":"string","description":"Signer key used to hash password.","default":null,"x-example":"[PASSWORD_SIGNER_KEY]"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordSaltSeparator","passwordSignerKey"]}}]}},"\/users\/sha":{"post":{"summary":"Create user with SHA password","operationId":"usersCreateSHAUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [SHA](https:\/\/en.wikipedia.org\/wiki\/Secure_Hash_Algorithm) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createSHAUser","weight":220,"cookies":false,"type":"","demo":"users\/create-s-h-a-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-sha-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using SHA.","default":null,"x-example":"password"},"passwordVersion":{"type":"string","description":"Optional SHA version used to hash password. Allowed values are: 'sha1', 'sha224', 'sha256', 'sha384', 'sha512\/224', 'sha512\/256', 'sha512', 'sha3-224', 'sha3-256', 'sha3-384', 'sha3-512'","default":"","x-example":"sha1","enum":["sha1","sha224","sha256","sha384","sha512\/224","sha512\/256","sha512","sha3-224","sha3-256","sha3-384","sha3-512"],"x-enum-name":"PasswordHash","x-enum-keys":[]},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/{userId}":{"get":{"summary":"Get user","operationId":"usersGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get a user by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"get","weight":226,"cookies":false,"type":"","demo":"users\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]},"delete":{"summary":"Delete user","operationId":"usersDelete","consumes":["application\/json"],"produces":[],"tags":["users"],"description":"Delete a user by its unique ID, thereby releasing it's ID. Since ID is released and can be reused, all user-related resources like documents or storage files should be deleted before user deletion. If you want to keep ID reserved, use the [updateStatus](https:\/\/appwrite.io\/docs\/server\/users#usersUpdateStatus) endpoint instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":251,"cookies":false,"type":"","demo":"users\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]}},"\/users\/{userId}\/email":{"patch":{"summary":"Update email","operationId":"usersUpdateEmail","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user email by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateEmail","weight":239,"cookies":false,"type":"","demo":"users\/update-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"}},"required":["email"]}}]}},"\/users\/{userId}\/labels":{"put":{"summary":"Update user labels","operationId":"usersUpdateLabels","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user labels by its unique ID. \n\nLabels can be used to grant access to resources. While teams are a way for user's to share access to a resource, labels can be defined by the developer to grant access without an invitation. See the [Permissions docs](https:\/\/appwrite.io\/docs\/permissions) for more info.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateLabels","weight":235,"cookies":false,"type":"","demo":"users\/update-labels.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-labels.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"labels":{"type":"array","description":"Array of user labels. Replaces the previous labels. Maximum of 1000 labels are allowed, each up to 36 alphanumeric characters long.","default":null,"x-example":null,"items":{"type":"string"}}},"required":["labels"]}}]}},"\/users\/{userId}\/logs":{"get":{"summary":"List user logs","operationId":"usersListLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listLogs","weight":231,"cookies":false,"type":"","demo":"users\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/users\/{userId}\/memberships":{"get":{"summary":"List user memberships","operationId":"usersListMemberships","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user membership list by its unique ID.","responses":{"200":{"description":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"listMemberships","weight":230,"cookies":false,"type":"","demo":"users\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-memberships.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]}},"\/users\/{userId}\/mfa":{"patch":{"summary":"Update MFA","operationId":"usersUpdateMfa","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateMfa","weight":244,"cookies":false,"type":"","demo":"users\/update-mfa.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-mfa.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"mfa":{"type":"boolean","description":"Enable or disable MFA.","default":null,"x-example":false}},"required":["mfa"]}}]}},"\/users\/{userId}\/mfa\/factors":{"get":{"summary":"List Factors","operationId":"usersListFactors","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"","responses":{"200":{"description":"MFAFactors","schema":{"$ref":"#\/definitions\/mfaFactors"}}},"x-appwrite":{"method":"listFactors","weight":245,"cookies":false,"type":"","demo":"users\/list-factors.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-factors.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]}},"\/users\/{userId}\/mfa\/{type}":{"delete":{"summary":"Delete Authenticator","operationId":"usersDeleteAuthenticator","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"deleteAuthenticator","weight":246,"cookies":false,"type":"","demo":"users\/delete-authenticator.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-mfa.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"type","description":"Type of authenticator.","required":true,"type":"string","x-example":"totp","enum":["totp"],"x-enum-name":null,"x-enum-keys":[],"in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"otp":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[OTP]"}},"required":["otp"]}}]}},"\/users\/{userId}\/name":{"patch":{"summary":"Update name","operationId":"usersUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user name by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateName","weight":237,"cookies":false,"type":"","demo":"users\/update-name.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-name.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"User name. Max length: 128 chars.","default":null,"x-example":"[NAME]"}},"required":["name"]}}]}},"\/users\/{userId}\/password":{"patch":{"summary":"Update password","operationId":"usersUpdatePassword","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user password by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePassword","weight":238,"cookies":false,"type":"","demo":"users\/update-password.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-password.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"password":{"type":"string","description":"New user password. Must be at least 8 chars.","default":null,"x-example":null}},"required":["password"]}}]}},"\/users\/{userId}\/phone":{"patch":{"summary":"Update phone","operationId":"usersUpdatePhone","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user phone by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePhone","weight":240,"cookies":false,"type":"","demo":"users\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"number":{"type":"string","description":"User phone number.","default":null,"x-example":"+12065550100"}},"required":["number"]}}]}},"\/users\/{userId}\/prefs":{"get":{"summary":"Get user preferences","operationId":"usersGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user preferences by its unique ID.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":227,"cookies":false,"type":"","demo":"users\/get-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]},"patch":{"summary":"Update user preferences","operationId":"usersUpdatePrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user preferences by its unique ID. The object you pass is stored as is, and replaces any previous value. The maximum allowed prefs size is 64kB and throws error if exceeded.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"updatePrefs","weight":242,"cookies":false,"type":"","demo":"users\/update-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"prefs":{"type":"object","description":"Prefs key-value JSON object.","default":{},"x-example":"{}"}},"required":["prefs"]}}]}},"\/users\/{userId}\/sessions":{"get":{"summary":"List user sessions","operationId":"usersListSessions","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user sessions list by its unique ID.","responses":{"200":{"description":"Sessions List","schema":{"$ref":"#\/definitions\/sessionList"}}},"x-appwrite":{"method":"listSessions","weight":229,"cookies":false,"type":"","demo":"users\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]},"post":{"summary":"Create session","operationId":"usersCreateSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Creates a session for a user. Returns an immediately usable session object.\n\nIf you want to generate a token for a custom authentication flow, use the [POST \/users\/{userId}\/tokens](https:\/\/appwrite.io\/docs\/server\/users#createToken) endpoint.","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"createSession","weight":247,"cookies":false,"type":"","demo":"users\/create-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-session.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]},"delete":{"summary":"Delete user sessions","operationId":"usersDeleteSessions","consumes":["application\/json"],"produces":[],"tags":["users"],"description":"Delete all user's sessions by using the user's unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":250,"cookies":false,"type":"","demo":"users\/delete-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]}},"\/users\/{userId}\/sessions\/{sessionId}":{"delete":{"summary":"Delete user session","operationId":"usersDeleteSession","consumes":["application\/json"],"produces":[],"tags":["users"],"description":"Delete a user sessions by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSession","weight":249,"cookies":false,"type":"","demo":"users\/delete-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-user-session.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"sessionId","description":"Session ID.","required":true,"type":"string","x-example":"[SESSION_ID]","in":"path"}]}},"\/users\/{userId}\/status":{"patch":{"summary":"Update user status","operationId":"usersUpdateStatus","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user status by its unique ID. Use this endpoint as an alternative to deleting a user if you want to keep user's ID reserved.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateStatus","weight":234,"cookies":false,"type":"","demo":"users\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"status":{"type":"boolean","description":"User Status. To activate the user pass `true` and to block the user pass `false`.","default":null,"x-example":false}},"required":["status"]}}]}},"\/users\/{userId}\/targets":{"get":{"summary":"List User Targets","operationId":"usersListTargets","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"","responses":{"200":{"description":"Target list","schema":{"$ref":"#\/definitions\/targetList"}}},"x-appwrite":{"method":"listTargets","weight":232,"cookies":false,"type":"","demo":"users\/list-targets.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-targets.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.read","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, email, phone, status, passwordUpdate, registration, emailVerification, phoneVerification, labels","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"post":{"summary":"Create User Target","operationId":"usersCreateTarget","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"","responses":{"201":{"description":"Target","schema":{"$ref":"#\/definitions\/target"}}},"x-appwrite":{"method":"createTarget","weight":224,"cookies":false,"type":"","demo":"users\/create-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-target.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"targetId":{"type":"string","description":"Target ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[TARGET_ID]"},"providerType":{"type":"string","description":"The target provider type. Can be one of the following: `email`, `sms` or `push`.","default":null,"x-example":"email","enum":["email","sms","push"],"x-enum-name":"MessagingProviderType","x-enum-keys":[]},"identifier":{"type":"string","description":"The target identifier (token, email, phone etc.)","default":null,"x-example":"[IDENTIFIER]"},"providerId":{"type":"string","description":"Provider ID. Message will be sent to this target from the specified provider ID. If no provider ID is set the first setup provider will be used.","default":"","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Target name. Max length: 128 chars. For example: My Awesome App Galaxy S23.","default":"","x-example":"[NAME]"}},"required":["targetId","providerType","identifier"]}}]}},"\/users\/{userId}\/targets\/{targetId}":{"get":{"summary":"Get User Target","operationId":"usersGetTarget","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"","responses":{"200":{"description":"Target","schema":{"$ref":"#\/definitions\/target"}}},"x-appwrite":{"method":"getTarget","weight":228,"cookies":false,"type":"","demo":"users\/get-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-target.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.read","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"targetId","description":"Target ID.","required":true,"type":"string","x-example":"[TARGET_ID]","in":"path"}]},"patch":{"summary":"Update User target","operationId":"usersUpdateTarget","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"","responses":{"200":{"description":"Target","schema":{"$ref":"#\/definitions\/target"}}},"x-appwrite":{"method":"updateTarget","weight":243,"cookies":false,"type":"","demo":"users\/update-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-target.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"targetId","description":"Target ID.","required":true,"type":"string","x-example":"[TARGET_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"identifier":{"type":"string","description":"The target identifier (token, email, phone etc.)","default":"","x-example":"[IDENTIFIER]"},"providerId":{"type":"string","description":"Provider ID. Message will be sent to this target from the specified provider ID. If no provider ID is set the first setup provider will be used.","default":"","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Target name. Max length: 128 chars. For example: My Awesome App Galaxy S23.","default":"","x-example":"[NAME]"}}}}]},"delete":{"summary":"Delete user target","operationId":"usersDeleteTarget","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteTarget","weight":252,"cookies":false,"type":"","demo":"users\/delete-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-target.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"targetId","description":"Target ID.","required":true,"type":"string","x-example":"[TARGET_ID]","in":"path"}]}},"\/users\/{userId}\/tokens":{"post":{"summary":"Create token","operationId":"usersCreateToken","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Returns a token with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [PUT \/account\/sessions\/custom](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateCustomSession) endpoint to complete the login process.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createToken","weight":248,"cookies":false,"type":"","demo":"users\/create-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-token.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"length":{"type":"integer","description":"Token length in characters. The default length is 6 characters","default":6,"x-example":4},"expire":{"type":"integer","description":"Token expiration period in seconds. The default expiration is 15 minutes.","default":900,"x-example":60}}}}]}},"\/users\/{userId}\/verification":{"patch":{"summary":"Update email verification","operationId":"usersUpdateEmailVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user email verification status by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateEmailVerification","weight":241,"cookies":false,"type":"","demo":"users\/update-email-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-email-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"emailVerification":{"type":"boolean","description":"User email verification status.","default":null,"x-example":false}},"required":["emailVerification"]}}]}},"\/users\/{userId}\/verification\/phone":{"patch":{"summary":"Update phone verification","operationId":"usersUpdatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user phone verification status by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePhoneVerification","weight":236,"cookies":false,"type":"","demo":"users\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"phoneVerification":{"type":"boolean","description":"User phone verification status.","default":null,"x-example":false}},"required":["phoneVerification"]}}]}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"project","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]},{"name":"proxy","description":"The Proxy Service allows you to configure actions for your domains beyond DNS configuration.","x-globalAttributes":[]},{"name":"graphql","description":"The GraphQL API allows you to query and mutate your Appwrite server using GraphQL.","x-globalAttributes":[]},{"name":"console","description":"The Console service allows you to interact with console relevant informations.","x-globalAttributes":[]},{"name":"migrations","description":"The Migrations service allows you to migrate third-party data to your Appwrite project.","x-globalAttributes":[]},{"name":"messaging","description":"The Messaging service allows you to send messages to any provider type (SMTP, push notification, SMS, etc.).","x-globalAttributes":[]}],"definitions":{"any":{"description":"Any","type":"object","additionalProperties":true},"documentList":{"description":"Documents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of documents documents that matched your query.","x-example":5,"format":"int32"},"documents":{"type":"array","description":"List of documents.","items":{"type":"object","$ref":"#\/definitions\/document"},"x-example":""}},"required":["total","documents"]},"collectionList":{"description":"Collections List","type":"object","properties":{"total":{"type":"integer","description":"Total number of collections documents that matched your query.","x-example":5,"format":"int32"},"collections":{"type":"array","description":"List of collections.","items":{"type":"object","$ref":"#\/definitions\/collection"},"x-example":""}},"required":["total","collections"]},"databaseList":{"description":"Databases List","type":"object","properties":{"total":{"type":"integer","description":"Total number of databases documents that matched your query.","x-example":5,"format":"int32"},"databases":{"type":"array","description":"List of databases.","items":{"type":"object","$ref":"#\/definitions\/database"},"x-example":""}},"required":["total","databases"]},"indexList":{"description":"Indexes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of indexes documents that matched your query.","x-example":5,"format":"int32"},"indexes":{"type":"array","description":"List of indexes.","items":{"type":"object","$ref":"#\/definitions\/index"},"x-example":""}},"required":["total","indexes"]},"userList":{"description":"Users List","type":"object","properties":{"total":{"type":"integer","description":"Total number of users documents that matched your query.","x-example":5,"format":"int32"},"users":{"type":"array","description":"List of users.","items":{"type":"object","$ref":"#\/definitions\/user"},"x-example":""}},"required":["total","users"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of sessions documents that matched your query.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"type":"object","$ref":"#\/definitions\/session"},"x-example":""}},"required":["total","sessions"]},"identityList":{"description":"Identities List","type":"object","properties":{"total":{"type":"integer","description":"Total number of identities documents that matched your query.","x-example":5,"format":"int32"},"identities":{"type":"array","description":"List of identities.","items":{"type":"object","$ref":"#\/definitions\/identity"},"x-example":""}},"required":["total","identities"]},"logList":{"description":"Logs List","type":"object","properties":{"total":{"type":"integer","description":"Total number of logs documents that matched your query.","x-example":5,"format":"int32"},"logs":{"type":"array","description":"List of logs.","items":{"type":"object","$ref":"#\/definitions\/log"},"x-example":""}},"required":["total","logs"]},"fileList":{"description":"Files List","type":"object","properties":{"total":{"type":"integer","description":"Total number of files documents that matched your query.","x-example":5,"format":"int32"},"files":{"type":"array","description":"List of files.","items":{"type":"object","$ref":"#\/definitions\/file"},"x-example":""}},"required":["total","files"]},"bucketList":{"description":"Buckets List","type":"object","properties":{"total":{"type":"integer","description":"Total number of buckets documents that matched your query.","x-example":5,"format":"int32"},"buckets":{"type":"array","description":"List of buckets.","items":{"type":"object","$ref":"#\/definitions\/bucket"},"x-example":""}},"required":["total","buckets"]},"teamList":{"description":"Teams List","type":"object","properties":{"total":{"type":"integer","description":"Total number of teams documents that matched your query.","x-example":5,"format":"int32"},"teams":{"type":"array","description":"List of teams.","items":{"type":"object","$ref":"#\/definitions\/team"},"x-example":""}},"required":["total","teams"]},"membershipList":{"description":"Memberships List","type":"object","properties":{"total":{"type":"integer","description":"Total number of memberships documents that matched your query.","x-example":5,"format":"int32"},"memberships":{"type":"array","description":"List of memberships.","items":{"type":"object","$ref":"#\/definitions\/membership"},"x-example":""}},"required":["total","memberships"]},"functionList":{"description":"Functions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of functions documents that matched your query.","x-example":5,"format":"int32"},"functions":{"type":"array","description":"List of functions.","items":{"type":"object","$ref":"#\/definitions\/function"},"x-example":""}},"required":["total","functions"]},"runtimeList":{"description":"Runtimes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of runtimes documents that matched your query.","x-example":5,"format":"int32"},"runtimes":{"type":"array","description":"List of runtimes.","items":{"type":"object","$ref":"#\/definitions\/runtime"},"x-example":""}},"required":["total","runtimes"]},"deploymentList":{"description":"Deployments List","type":"object","properties":{"total":{"type":"integer","description":"Total number of deployments documents that matched your query.","x-example":5,"format":"int32"},"deployments":{"type":"array","description":"List of deployments.","items":{"type":"object","$ref":"#\/definitions\/deployment"},"x-example":""}},"required":["total","deployments"]},"executionList":{"description":"Executions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of executions documents that matched your query.","x-example":5,"format":"int32"},"executions":{"type":"array","description":"List of executions.","items":{"type":"object","$ref":"#\/definitions\/execution"},"x-example":""}},"required":["total","executions"]},"countryList":{"description":"Countries List","type":"object","properties":{"total":{"type":"integer","description":"Total number of countries documents that matched your query.","x-example":5,"format":"int32"},"countries":{"type":"array","description":"List of countries.","items":{"type":"object","$ref":"#\/definitions\/country"},"x-example":""}},"required":["total","countries"]},"continentList":{"description":"Continents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of continents documents that matched your query.","x-example":5,"format":"int32"},"continents":{"type":"array","description":"List of continents.","items":{"type":"object","$ref":"#\/definitions\/continent"},"x-example":""}},"required":["total","continents"]},"languageList":{"description":"Languages List","type":"object","properties":{"total":{"type":"integer","description":"Total number of languages documents that matched your query.","x-example":5,"format":"int32"},"languages":{"type":"array","description":"List of languages.","items":{"type":"object","$ref":"#\/definitions\/language"},"x-example":""}},"required":["total","languages"]},"currencyList":{"description":"Currencies List","type":"object","properties":{"total":{"type":"integer","description":"Total number of currencies documents that matched your query.","x-example":5,"format":"int32"},"currencies":{"type":"array","description":"List of currencies.","items":{"type":"object","$ref":"#\/definitions\/currency"},"x-example":""}},"required":["total","currencies"]},"phoneList":{"description":"Phones List","type":"object","properties":{"total":{"type":"integer","description":"Total number of phones documents that matched your query.","x-example":5,"format":"int32"},"phones":{"type":"array","description":"List of phones.","items":{"type":"object","$ref":"#\/definitions\/phone"},"x-example":""}},"required":["total","phones"]},"variableList":{"description":"Variables List","type":"object","properties":{"total":{"type":"integer","description":"Total number of variables documents that matched your query.","x-example":5,"format":"int32"},"variables":{"type":"array","description":"List of variables.","items":{"type":"object","$ref":"#\/definitions\/variable"},"x-example":""}},"required":["total","variables"]},"localeCodeList":{"description":"Locale codes list","type":"object","properties":{"total":{"type":"integer","description":"Total number of localeCodes documents that matched your query.","x-example":5,"format":"int32"},"localeCodes":{"type":"array","description":"List of localeCodes.","items":{"type":"object","$ref":"#\/definitions\/localeCode"},"x-example":""}},"required":["total","localeCodes"]},"providerList":{"description":"Provider list","type":"object","properties":{"total":{"type":"integer","description":"Total number of providers documents that matched your query.","x-example":5,"format":"int32"},"providers":{"type":"array","description":"List of providers.","items":{"type":"object","$ref":"#\/definitions\/provider"},"x-example":""}},"required":["total","providers"]},"messageList":{"description":"Message list","type":"object","properties":{"total":{"type":"integer","description":"Total number of messages documents that matched your query.","x-example":5,"format":"int32"},"messages":{"type":"array","description":"List of messages.","items":{"type":"object","$ref":"#\/definitions\/message"},"x-example":""}},"required":["total","messages"]},"topicList":{"description":"Topic list","type":"object","properties":{"total":{"type":"integer","description":"Total number of topics documents that matched your query.","x-example":5,"format":"int32"},"topics":{"type":"array","description":"List of topics.","items":{"type":"object","$ref":"#\/definitions\/topic"},"x-example":""}},"required":["total","topics"]},"subscriberList":{"description":"Subscriber list","type":"object","properties":{"total":{"type":"integer","description":"Total number of subscribers documents that matched your query.","x-example":5,"format":"int32"},"subscribers":{"type":"array","description":"List of subscribers.","items":{"type":"object","$ref":"#\/definitions\/subscriber"},"x-example":""}},"required":["total","subscribers"]},"targetList":{"description":"Target list","type":"object","properties":{"total":{"type":"integer","description":"Total number of targets documents that matched your query.","x-example":5,"format":"int32"},"targets":{"type":"array","description":"List of targets.","items":{"type":"object","$ref":"#\/definitions\/target"},"x-example":""}},"required":["total","targets"]},"database":{"description":"Database","type":"object","properties":{"$id":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Database name.","x-example":"My Database"},"$createdAt":{"type":"string","description":"Database creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Database update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"enabled":{"type":"boolean","description":"If database is enabled. Can be 'enabled' or 'disabled'. When disabled, the database is inaccessible to users, but remains accessible to Server SDKs using API keys.","x-example":false}},"required":["$id","name","$createdAt","$updatedAt","enabled"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Collection creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Collection update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Collection permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled. Can be 'enabled' or 'disabled'. When disabled, the collection is inaccessible to users, but remains accessible to Server SDKs using API keys.","x-example":false},"documentSecurity":{"type":"boolean","description":"Whether document-level permissions are enabled. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":true},"attributes":{"type":"array","description":"Collection attributes.","items":{"x-anyOf":[{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeRelationship"},{"$ref":"#\/definitions\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"type":"object","$ref":"#\/definitions\/index"},"x-example":{}}},"required":["$id","$createdAt","$updatedAt","$permissions","databaseId","name","enabled","documentSecurity","attributes","indexes"]},"attributeList":{"description":"Attributes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of attributes in the given collection.","x-example":5,"format":"int32"},"attributes":{"type":"array","description":"List of attributes.","items":{"x-anyOf":[{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeRelationship"},{"$ref":"#\/definitions\/attributeString"}]},"x-example":""}},"required":["total","attributes"]},"attributeString":{"description":"AttributeString","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"fullName"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"size":{"type":"integer","description":"Attribute size.","x-example":128,"format":"int32"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"default","x-nullable":true}},"required":["key","type","status","error","required","size"]},"attributeInteger":{"description":"AttributeInteger","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"count"},"type":{"type":"string","description":"Attribute type.","x-example":"integer"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"min":{"type":"integer","description":"Minimum value to enforce for new documents.","x-example":1,"format":"int32","x-nullable":true},"max":{"type":"integer","description":"Maximum value to enforce for new documents.","x-example":10,"format":"int32","x-nullable":true},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":10,"format":"int32","x-nullable":true}},"required":["key","type","status","error","required"]},"attributeFloat":{"description":"AttributeFloat","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"percentageCompleted"},"type":{"type":"string","description":"Attribute type.","x-example":"double"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"min":{"type":"number","description":"Minimum value to enforce for new documents.","x-example":1.5,"format":"double","x-nullable":true},"max":{"type":"number","description":"Maximum value to enforce for new documents.","x-example":10.5,"format":"double","x-nullable":true},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":2.5,"format":"double","x-nullable":true}},"required":["key","type","status","error","required"]},"attributeBoolean":{"description":"AttributeBoolean","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"isEnabled"},"type":{"type":"string","description":"Attribute type.","x-example":"boolean"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":false,"x-nullable":true}},"required":["key","type","status","error","required"]},"attributeEmail":{"description":"AttributeEmail","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"userEmail"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"format":{"type":"string","description":"String format.","x-example":"email"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"default@example.com","x-nullable":true}},"required":["key","type","status","error","required","format"]},"attributeEnum":{"description":"AttributeEnum","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"status"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"elements":{"type":"array","description":"Array of elements in enumerated type.","items":{"type":"string"},"x-example":"element"},"format":{"type":"string","description":"String format.","x-example":"enum"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"element","x-nullable":true}},"required":["key","type","status","error","required","elements","format"]},"attributeIp":{"description":"AttributeIP","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"ipAddress"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"format":{"type":"string","description":"String format.","x-example":"ip"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"192.0.2.0","x-nullable":true}},"required":["key","type","status","error","required","format"]},"attributeUrl":{"description":"AttributeURL","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"githubUrl"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"format":{"type":"string","description":"String format.","x-example":"url"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"http:\/\/example.com","x-nullable":true}},"required":["key","type","status","error","required","format"]},"attributeDatetime":{"description":"AttributeDatetime","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"birthDay"},"type":{"type":"string","description":"Attribute type.","x-example":"datetime"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"format":{"type":"string","description":"ISO 8601 format.","x-example":"datetime"},"default":{"type":"string","description":"Default value for attribute when not provided. Only null is optional","x-example":"2020-10-15T06:38:00.000+00:00","x-nullable":true}},"required":["key","type","status","error","required","format"]},"attributeRelationship":{"description":"AttributeRelationship","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"fullName"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"relatedCollection":{"type":"string","description":"The ID of the related collection.","x-example":"collection"},"relationType":{"type":"string","description":"The type of the relationship.","x-example":"oneToOne|oneToMany|manyToOne|manyToMany"},"twoWay":{"type":"boolean","description":"Is the relationship two-way?","x-example":false},"twoWayKey":{"type":"string","description":"The key of the two-way relationship.","x-example":"string"},"onDelete":{"type":"string","description":"How deleting the parent document will propagate to child documents.","x-example":"restrict|cascade|setNull"},"side":{"type":"string","description":"Whether this is the parent or child side of the relationship","x-example":"parent|child"}},"required":["key","type","status","error","required","relatedCollection","relationType","twoWay","twoWayKey","onDelete","side"]},"index":{"description":"Index","type":"object","properties":{"key":{"type":"string","description":"Index Key.","x-example":"index1"},"type":{"type":"string","description":"Index type.","x-example":"primary"},"status":{"type":"string","description":"Index status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an index.","x-example":"string"},"attributes":{"type":"array","description":"Index attributes.","items":{"type":"string"},"x-example":[]},"orders":{"type":"array","description":"Index orders.","items":{"type":"string"},"x-example":[],"x-nullable":true}},"required":["key","type","status","error","attributes"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"user":{"description":"User","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"password":{"type":"string","description":"Hashed user password.","x-example":"$argon2id$v=19$m=2048,t=4,p=3$aUZjLnliVWRINmFNTWMudg$5S+x+7uA31xFnrHFT47yFwcJeaP0w92L\/4LdgrVRXxE","x-nullable":true},"hash":{"type":"string","description":"Password hashing algorithm.","x-example":"argon2","x-nullable":true},"hashOptions":{"type":"object","description":"Password hashing algorithm configuration.","x-example":{},"items":{"x-oneOf":[{"$ref":"#\/definitions\/algoArgon2"},{"$ref":"#\/definitions\/algoScrypt"},{"$ref":"#\/definitions\/algoScryptModified"},{"$ref":"#\/definitions\/algoBcrypt"},{"$ref":"#\/definitions\/algoPhpass"},{"$ref":"#\/definitions\/algoSha"},{"$ref":"#\/definitions\/algoMd5"}]},"x-nullable":true},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"labels":{"type":"array","description":"Labels for the user.","items":{"type":"string"},"x-example":["vip"]},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"mfa":{"type":"boolean","description":"Multi factor authentication status.","x-example":true},"totp":{"type":"boolean","description":"TOTP status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"type":"object","$ref":"#\/definitions\/preferences"}},"targets":{"type":"array","description":"A user-owned message receiver. A single user may have multiple e.g. emails, phones, and a browser. Each target is registered with a single provider.","items":{"type":"object","$ref":"#\/definitions\/target"},"x-example":[]},"accessedAt":{"type":"string","description":"Most recent access date in ISO 8601 format. This attribute is only updated again after 24 hours.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","$updatedAt","name","registration","status","labels","passwordUpdate","email","phone","emailVerification","phoneVerification","mfa","totp","prefs","targets","accessedAt"]},"algoMd5":{"description":"AlgoMD5","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"md5"}},"required":["type"]},"algoSha":{"description":"AlgoSHA","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"sha"}},"required":["type"]},"algoPhpass":{"description":"AlgoPHPass","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"phpass"}},"required":["type"]},"algoBcrypt":{"description":"AlgoBcrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"bcrypt"}},"required":["type"]},"algoScrypt":{"description":"AlgoScrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scrypt"},"costCpu":{"type":"integer","description":"CPU complexity of computed hash.","x-example":8,"format":"int32"},"costMemory":{"type":"integer","description":"Memory complexity of computed hash.","x-example":14,"format":"int32"},"costParallel":{"type":"integer","description":"Parallelization of computed hash.","x-example":1,"format":"int32"},"length":{"type":"integer","description":"Length used to compute hash.","x-example":64,"format":"int32"}},"required":["type","costCpu","costMemory","costParallel","length"]},"algoScryptModified":{"description":"AlgoScryptModified","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scryptMod"},"salt":{"type":"string","description":"Salt used to compute hash.","x-example":"UxLMreBr6tYyjQ=="},"saltSeparator":{"type":"string","description":"Separator used to compute hash.","x-example":"Bw=="},"signerKey":{"type":"string","description":"Key used to compute hash.","x-example":"XyEKE9RcTDeLEsL\/RjwPDBv\/RqDl8fb3gpYEOQaPihbxf1ZAtSOHCjuAAa7Q3oHpCYhXSN9tizHgVOwn6krflQ=="}},"required":["type","salt","saltSeparator","signerKey"]},"algoArgon2":{"description":"AlgoArgon2","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"argon2"},"memoryCost":{"type":"integer","description":"Memory used to compute hash.","x-example":65536,"format":"int32"},"timeCost":{"type":"integer","description":"Amount of time consumed to compute hash","x-example":4,"format":"int32"},"threads":{"type":"integer","description":"Number of threads used to compute hash.","x-example":3,"format":"int32"}},"required":["type","memoryCost","timeCost","threads"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true},"factors":{"type":"array","description":"Returns a list of active session factors.","items":{"type":"string"},"x-example":["email"]},"secret":{"type":"string","description":"Secret used to authenticate the user. Only included if the request was made with an API key","x-example":"5e5bb8c16897e"}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current","factors","secret"]},"identity":{"description":"Identity","type":"object","properties":{"$id":{"type":"string","description":"Identity ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Identity creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Identity update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"provider":{"type":"string","description":"Identity Provider.","x-example":"email"},"providerUid":{"type":"string","description":"ID of the User in the Identity Provider.","x-example":"5e5bb8c16897e"},"providerEmail":{"type":"string","description":"Email of the User in the Identity Provider.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Identity Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Identity Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"}},"required":["$id","$createdAt","$updatedAt","userId","provider","providerUid","providerEmail","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"phrase":{"type":"string","description":"Security phrase of a token. Empty if security phrase was not requested when creating a token. It includes randomly generated phrase which is also sent in the external resource such as email.","x-example":"Golden Fox"}},"required":["$id","$createdAt","userId","secret","expire","phrase"]},"jwt":{"description":"JWT","type":"object","properties":{"jwt":{"type":"string","description":"JWT encoded string.","x-example":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c"}},"required":["jwt"]},"locale":{"description":"Locale","type":"object","properties":{"ip":{"type":"string","description":"User IP address.","x-example":"127.0.0.1"},"countryCode":{"type":"string","description":"Country code in [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) two-character format","x-example":"US"},"country":{"type":"string","description":"Country name. This field support localization.","x-example":"United States"},"continentCode":{"type":"string","description":"Continent code. A two character continent code \"AF\" for Africa, \"AN\" for Antarctica, \"AS\" for Asia, \"EU\" for Europe, \"NA\" for North America, \"OC\" for Oceania, and \"SA\" for South America.","x-example":"NA"},"continent":{"type":"string","description":"Continent name. This field support localization.","x-example":"North America"},"eu":{"type":"boolean","description":"True if country is part of the European Union.","x-example":false},"currency":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format","x-example":"USD"}},"required":["ip","countryCode","country","continentCode","continent","eu","currency"]},"localeCode":{"description":"LocaleCode","type":"object","properties":{"code":{"type":"string","description":"Locale codes in [ISO 639-1](https:\/\/en.wikipedia.org\/wiki\/List_of_ISO_639-1_codes)","x-example":"en-us"},"name":{"type":"string","description":"Locale name","x-example":"US"}},"required":["code","name"]},"file":{"description":"File","type":"object","properties":{"$id":{"type":"string","description":"File ID.","x-example":"5e5ea5c16897e"},"bucketId":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Bucket creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Bucket update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Bucket permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"fileSecurity":{"type":"boolean","description":"Whether file-level security is enabled. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":true},"name":{"type":"string","description":"Bucket name.","x-example":"Documents"},"enabled":{"type":"boolean","description":"Bucket enabled.","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size supported.","x-example":100,"format":"int32"},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions.","items":{"type":"string"},"x-example":["jpg","png"]},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Will be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd).","x-example":"gzip"},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$createdAt","$updatedAt","$permissions","fileSecurity","name","enabled","maximumFileSize","allowedFileExtensions","compression","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"},"prefs":{"type":"object","description":"Team preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"type":"object","$ref":"#\/definitions\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","total","prefs"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"mfa":{"type":"boolean","description":"Multi factor authentication status, true if the user has MFA enabled or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":["owner"]}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","mfa","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Function creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Function update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"users"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"enabled":{"type":"boolean","description":"Function enabled.","x-example":false},"live":{"type":"boolean","description":"Is the function deployed with the latest configuration? This is set to false if you've changed an environment variables, entrypoint, commands, or other settings that needs redeploy to be applied. When the value is false, redeploy the function to update it with the latest configuration.","x-example":false},"logging":{"type":"boolean","description":"Whether executions will be logged. When set to false, executions will not be logged, but will reduce resource used by your Appwrite project.","x-example":false},"runtime":{"type":"string","description":"Function execution runtime.","x-example":"python-3.8"},"deployment":{"type":"string","description":"Function's active deployment ID.","x-example":"5e5ea5c16897e"},"vars":{"type":"array","description":"Function variables.","items":{"type":"object","$ref":"#\/definitions\/variable"},"x-example":[]},"events":{"type":"array","description":"Function trigger events.","items":{"type":"string"},"x-example":"account.create"},"schedule":{"type":"string","description":"Function execution schedult in CRON format.","x-example":"5 4 * * *"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":300,"format":"int32"},"entrypoint":{"type":"string","description":"The entrypoint file used to execute the deployment.","x-example":"index.js"},"commands":{"type":"string","description":"The build command used to build the deployment.","x-example":"npm install"},"version":{"type":"string","description":"Version of Open Runtimes used for the function.","x-example":"v2"},"installationId":{"type":"string","description":"Function VCS (Version Control System) installation id.","x-example":"6m40at4ejk5h2u9s1hboo"},"providerRepositoryId":{"type":"string","description":"VCS (Version Control System) Repository ID","x-example":"appwrite"},"providerBranch":{"type":"string","description":"VCS (Version Control System) branch name","x-example":"main"},"providerRootDirectory":{"type":"string","description":"Path to function in VCS (Version Control System) repository","x-example":"functions\/helloWorld"},"providerSilentMode":{"type":"boolean","description":"Is VCS (Version Control System) connection is in silent mode? When in silence mode, no comments will be posted on the repository pull or merge requests","x-example":false}},"required":["$id","$createdAt","$updatedAt","execute","name","enabled","live","logging","runtime","deployment","vars","events","schedule","timeout","entrypoint","commands","version","installationId","providerRepositoryId","providerBranch","providerRootDirectory","providerSilentMode"]},"runtime":{"description":"Runtime","type":"object","properties":{"$id":{"type":"string","description":"Runtime ID.","x-example":"python-3.8"},"name":{"type":"string","description":"Runtime Name.","x-example":"Python"},"version":{"type":"string","description":"Runtime version.","x-example":"3.8"},"base":{"type":"string","description":"Base Docker image used to build the runtime.","x-example":"python:3.8-alpine"},"image":{"type":"string","description":"Image name of Docker Hub.","x-example":"appwrite\\\/runtime-for-python:3.8"},"logo":{"type":"string","description":"Name of the logo image.","x-example":"python.png"},"supports":{"type":"array","description":"List of supported architectures.","items":{"type":"string"},"x-example":"amd64"}},"required":["$id","name","version","base","image","logo","supports"]},"deployment":{"description":"Deployment","type":"object","properties":{"$id":{"type":"string","description":"Deployment ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Deployment creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Deployment update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"type":{"type":"string","description":"Type of deployment.","x-example":"vcs"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"index.js"},"size":{"type":"integer","description":"The code size in bytes.","x-example":128,"format":"int32"},"buildId":{"type":"string","description":"The current build ID.","x-example":"5e5ea5c16897e"},"activate":{"type":"boolean","description":"Whether the deployment should be automatically activated.","x-example":true},"status":{"type":"string","description":"The deployment status. Possible values are \"processing\", \"building\", \"waiting\", \"ready\", and \"failed\".","x-example":"ready"},"buildLogs":{"type":"string","description":"The build logs.","x-example":"Compiling source files..."},"buildTime":{"type":"integer","description":"The current build time in seconds.","x-example":128,"format":"int32"},"providerRepositoryName":{"type":"string","description":"The name of the vcs provider repository","x-example":"database"},"providerRepositoryOwner":{"type":"string","description":"The name of the vcs provider repository owner","x-example":"utopia"},"providerRepositoryUrl":{"type":"string","description":"The url of the vcs provider repository","x-example":"https:\/\/github.com\/vermakhushboo\/g4-node-function"},"providerBranch":{"type":"string","description":"The branch of the vcs repository","x-example":"0.7.x"},"providerCommitHash":{"type":"string","description":"The commit hash of the vcs commit","x-example":"7c3f25d"},"providerCommitAuthorUrl":{"type":"string","description":"The url of vcs commit author","x-example":"https:\/\/github.com\/vermakhushboo"},"providerCommitAuthor":{"type":"string","description":"The name of vcs commit author","x-example":"Khushboo Verma"},"providerCommitMessage":{"type":"string","description":"The commit message","x-example":"Update index.js"},"providerCommitUrl":{"type":"string","description":"The url of the vcs commit","x-example":"https:\/\/github.com\/vermakhushboo\/g4-node-function\/commit\/60c0416257a9cbcdd96b2d370c38d8f8d150ccfb"},"providerBranchUrl":{"type":"string","description":"The branch of the vcs repository","x-example":"https:\/\/github.com\/vermakhushboo\/appwrite\/tree\/0.7.x"}},"required":["$id","$createdAt","$updatedAt","type","resourceId","resourceType","entrypoint","size","buildId","activate","status","buildLogs","buildTime","providerRepositoryName","providerRepositoryOwner","providerRepositoryUrl","providerBranch","providerCommitHash","providerCommitAuthorUrl","providerCommitAuthor","providerCommitMessage","providerCommitUrl","providerBranchUrl"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"requestMethod":{"type":"string","description":"HTTP request method type.","x-example":"GET"},"requestPath":{"type":"string","description":"HTTP request path and query.","x-example":"\/articles?id=5"},"requestHeaders":{"type":"array","description":"HTTP response headers as a key-value object. This will return only whitelisted headers. All headers are returned if execution is created as synchronous.","items":{"type":"object","$ref":"#\/definitions\/headers"},"x-example":[{"Content-Type":"application\/json"}]},"responseStatusCode":{"type":"integer","description":"HTTP response status code.","x-example":200,"format":"int32"},"responseBody":{"type":"string","description":"HTTP response body. This will return empty unless execution is created as synchronous.","x-example":"Developers are awesome."},"responseHeaders":{"type":"array","description":"HTTP response headers as a key-value object. This will return only whitelisted headers. All headers are returned if execution is created as synchronous.","items":{"type":"object","$ref":"#\/definitions\/headers"},"x-example":[{"Content-Type":"application\/json"}]},"logs":{"type":"string","description":"Function logs. Includes the last 4,000 characters. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"errors":{"type":"string","description":"Function errors. Includes the last 4,000 characters. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"Function execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","requestMethod","requestPath","requestHeaders","responseStatusCode","responseBody","responseHeaders","logs","errors","duration"]},"variable":{"description":"Variable","type":"object","properties":{"$id":{"type":"string","description":"Variable ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"key":{"type":"string","description":"Variable key.","x-example":"API_KEY"},"value":{"type":"string","description":"Variable value.","x-example":"myPa$$word1"},"resourceType":{"type":"string","description":"Service to which the variable belongs. Possible values are \"project\", \"function\"","x-example":"function"},"resourceId":{"type":"string","description":"ID of resource to which the variable belongs. If resourceType is \"project\", it is empty. If resourceType is \"function\", it is ID of the function.","x-example":"myAwesomeFunction"}},"required":["$id","$createdAt","$updatedAt","key","value","resourceType","resourceId"]},"country":{"description":"Country","type":"object","properties":{"name":{"type":"string","description":"Country name.","x-example":"United States"},"code":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"}},"required":["name","code"]},"continent":{"description":"Continent","type":"object","properties":{"name":{"type":"string","description":"Continent name.","x-example":"Europe"},"code":{"type":"string","description":"Continent two letter code.","x-example":"EU"}},"required":["name","code"]},"language":{"description":"Language","type":"object","properties":{"name":{"type":"string","description":"Language name.","x-example":"Italian"},"code":{"type":"string","description":"Language two-character ISO 639-1 codes.","x-example":"it"},"nativeName":{"type":"string","description":"Language native name.","x-example":"Italiano"}},"required":["name","code","nativeName"]},"currency":{"description":"Currency","type":"object","properties":{"symbol":{"type":"string","description":"Currency symbol.","x-example":"$"},"name":{"type":"string","description":"Currency name.","x-example":"US dollar"},"symbolNative":{"type":"string","description":"Currency native symbol.","x-example":"$"},"decimalDigits":{"type":"integer","description":"Number of decimal digits.","x-example":2,"format":"int32"},"rounding":{"type":"number","description":"Currency digit rounding.","x-example":0,"format":"double"},"code":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format.","x-example":"USD"},"namePlural":{"type":"string","description":"Currency plural name","x-example":"US dollars"}},"required":["symbol","name","symbolNative","decimalDigits","rounding","code","namePlural"]},"phone":{"description":"Phone","type":"object","properties":{"code":{"type":"string","description":"Phone code.","x-example":"+1"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["code","countryCode","countryName"]},"healthAntivirus":{"description":"Health Antivirus","type":"object","properties":{"version":{"type":"string","description":"Antivirus version.","x-example":"1.0.0"},"status":{"type":"string","description":"Antivirus status. Possible values can are: `disabled`, `offline`, `online`","x-example":"online"}},"required":["version","status"]},"healthQueue":{"description":"Health Queue","type":"object","properties":{"size":{"type":"integer","description":"Amount of actions in the queue.","x-example":8,"format":"int32"}},"required":["size"]},"healthStatus":{"description":"Health Status","type":"object","properties":{"name":{"type":"string","description":"Name of the service.","x-example":"database"},"ping":{"type":"integer","description":"Duration in milliseconds how long the health check took.","x-example":128,"format":"int32"},"status":{"type":"string","description":"Service status. Possible values can are: `pass`, `fail`","x-example":"pass"}},"required":["name","ping","status"]},"healthCertificate":{"description":"Health Certificate","type":"object","properties":{"name":{"type":"string","description":"Certificate name","x-example":"\/CN=www.google.com"},"subjectSN":{"type":"string","description":"Subject SN","x-example":""},"issuerOrganisation":{"type":"string","description":"Issuer organisation","x-example":""},"validFrom":{"type":"string","description":"Valid from","x-example":"1704200998"},"validTo":{"type":"string","description":"Valid to","x-example":"1711458597"},"signatureTypeSN":{"type":"string","description":"Signature type SN","x-example":"RSA-SHA256"}},"required":["name","subjectSN","issuerOrganisation","validFrom","validTo","signatureTypeSN"]},"healthTime":{"description":"Health Time","type":"object","properties":{"remoteTime":{"type":"integer","description":"Current unix timestamp on trustful remote server.","x-example":1639490751,"format":"int32"},"localTime":{"type":"integer","description":"Current unix timestamp of local server where Appwrite runs.","x-example":1639490844,"format":"int32"},"diff":{"type":"integer","description":"Difference of unix remote and local timestamps in milliseconds.","x-example":93,"format":"int32"}},"required":["remoteTime","localTime","diff"]},"headers":{"description":"Headers","type":"object","properties":{"name":{"type":"string","description":"Header name.","x-example":"Content-Type"},"value":{"type":"string","description":"Header value.","x-example":"application\/json"}},"required":["name","value"]},"mfaChallenge":{"description":"MFA Challenge","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","userId","expire"]},"mfaType":{"description":"MFAType","type":"object","properties":{"backups":{"type":"array","description":"Backup codes.","items":{"type":"string"},"x-example":true},"secret":{"type":"string","description":"Secret token used for TOTP factor.","x-example":true},"uri":{"type":"string","description":"URI for authenticator apps.","x-example":true}},"required":["backups","secret","uri"]},"mfaFactors":{"description":"MFAFactors","type":"object","properties":{"totp":{"type":"boolean","description":"TOTP","x-example":true},"phone":{"type":"boolean","description":"Phone","x-example":true},"email":{"type":"boolean","description":"Email","x-example":true}},"required":["totp","phone","email"]},"provider":{"description":"Provider","type":"object","properties":{"$id":{"type":"string","description":"Provider ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Provider creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Provider update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"The name for the provider instance.","x-example":"Mailgun"},"provider":{"type":"string","description":"The name of the provider service.","x-example":"mailgun"},"enabled":{"type":"boolean","description":"Is provider enabled?","x-example":true},"type":{"type":"string","description":"Type of provider.","x-example":"sms"},"credentials":{"type":"object","additionalProperties":true,"description":"Provider credentials.","x-example":{"key":"123456789"}},"options":{"type":"object","additionalProperties":true,"description":"Provider options.","x-example":{"from":"sender-email@mydomain"}}},"required":["$id","$createdAt","$updatedAt","name","provider","enabled","type","credentials"]},"message":{"description":"Message","type":"object","properties":{"$id":{"type":"string","description":"Message ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Message creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Message update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerType":{"type":"string","description":"Message provider type.","x-example":"email"},"topics":{"type":"array","description":"Topic IDs set as recipients.","items":{"type":"string"},"x-example":["5e5ea5c16897e"]},"users":{"type":"array","description":"User IDs set as recipients.","items":{"type":"string"},"x-example":["5e5ea5c16897e"]},"targets":{"type":"array","description":"Target IDs set as recipients.","items":{"type":"string"},"x-example":["5e5ea5c16897e"]},"scheduledAt":{"type":"string","description":"The scheduled time for message.","x-example":"2020-10-15T06:38:00.000+00:00","x-nullable":true},"deliveredAt":{"type":"string","description":"The time when the message was delivered.","x-example":"2020-10-15T06:38:00.000+00:00","x-nullable":true},"deliveryErrors":{"type":"array","description":"Delivery errors if any.","items":{"type":"string"},"x-example":["Failed to send message to target 5e5ea5c16897e: Credentials not valid."],"x-nullable":true},"deliveredTotal":{"type":"integer","description":"Number of recipients the message was delivered to.","x-example":1,"format":"int32"},"data":{"type":"object","additionalProperties":true,"description":"Data of the message.","x-example":{"subject":"Welcome to Appwrite","content":"Hi there, welcome to Appwrite family."}},"status":{"type":"string","description":"Status of delivery.","x-example":"Message status can be one of the following: processing, sent, cancelled, failed."}},"required":["$id","$createdAt","$updatedAt","providerType","topics","users","targets","deliveredTotal","data","status"]},"topic":{"description":"Topic","type":"object","properties":{"$id":{"type":"string","description":"Topic ID.","x-example":"259125845563242502"},"$createdAt":{"type":"string","description":"Topic creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Topic update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"The name of the topic.","x-example":"events"},"total":{"type":"integer","description":"Total count of subscribers subscribed to topic.","x-example":100,"format":"int32"},"subscribe":{"type":"array","description":"Subscribe permissions.","items":{"type":"string"},"x-example":"users"}},"required":["$id","$createdAt","$updatedAt","name","total","subscribe"]},"subscriber":{"description":"Subscriber","type":"object","properties":{"$id":{"type":"string","description":"Subscriber ID.","x-example":"259125845563242502"},"$createdAt":{"type":"string","description":"Subscriber creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Subscriber update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"targetId":{"type":"string","description":"Target ID.","x-example":"259125845563242502"},"target":{"type":"object","description":"Target.","x-example":{"$id":"259125845563242502","$createdAt":"2020-10-15T06:38:00.000+00:00","$updatedAt":"2020-10-15T06:38:00.000+00:00","providerType":"email","providerId":"259125845563242502","name":"ageon-app-email","identifier":"random-mail@email.org","userId":"5e5ea5c16897e"},"items":{"type":"object","$ref":"#\/definitions\/target"}},"userId":{"type":"string","description":"Topic ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User Name.","x-example":"Aegon Targaryen"},"topicId":{"type":"string","description":"Topic ID.","x-example":"259125845563242502"},"providerType":{"type":"string","description":"The target provider type. Can be one of the following: `email`, `sms` or `push`.","x-example":"email"}},"required":["$id","$createdAt","$updatedAt","targetId","target","userId","userName","topicId","providerType"]},"target":{"description":"Target","type":"object","properties":{"$id":{"type":"string","description":"Target ID.","x-example":"259125845563242502"},"$createdAt":{"type":"string","description":"Target creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Target update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Target Name.","x-example":"Aegon apple token"},"userId":{"type":"string","description":"User ID.","x-example":"259125845563242502"},"providerId":{"type":"string","description":"Provider ID.","x-example":"259125845563242502","x-nullable":true},"providerType":{"type":"string","description":"The target provider type. Can be one of the following: `email`, `sms` or `push`.","x-example":"email"},"identifier":{"type":"string","description":"The target identifier.","x-example":"token"}},"required":["$id","$createdAt","$updatedAt","name","userId","providerType","identifier"]}},"externalDocs":{"description":"Full API docs, specs and tutorials","url":"https:\/\/appwrite.io\/docs"}} \ No newline at end of file +{"swagger":"2.0","info":{"version":"1.5.0","title":"Appwrite","description":"Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https:\/\/appwrite.io\/docs](https:\/\/appwrite.io\/docs)","termsOfService":"https:\/\/appwrite.io\/policy\/terms","contact":{"name":"Appwrite Team","url":"https:\/\/appwrite.io\/support","email":"team@appwrite.io"},"license":{"name":"BSD-3-Clause","url":"https:\/\/raw.githubusercontent.com\/appwrite\/appwrite\/master\/LICENSE"}},"host":"cloud.appwrite.io","basePath":"\/v1","schemes":["https"],"consumes":["application\/json","multipart\/form-data"],"produces":["application\/json"],"securityDefinitions":{"Project":{"type":"apiKey","name":"X-Appwrite-Project","description":"Your project ID","in":"header","x-appwrite":{"demo":"5df5acd0d48c2"}},"Key":{"type":"apiKey","name":"X-Appwrite-Key","description":"Your secret API key","in":"header","x-appwrite":{"demo":"919c2d18fb5d4...a2ae413da83346ad2"}},"JWT":{"type":"apiKey","name":"X-Appwrite-JWT","description":"Your secret JSON Web Token","in":"header","x-appwrite":{"demo":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ..."}},"Locale":{"type":"apiKey","name":"X-Appwrite-Locale","description":"","in":"header","x-appwrite":{"demo":"en"}},"Session":{"type":"apiKey","name":"X-Appwrite-Session","description":"The user session to authenticate with","in":"header"},"ForwardedFor":{"type":"apiKey","name":"X-Forwarded-For","description":"The IP address of the client that made the request","in":"header"},"ForwardedUserAgent":{"type":"apiKey","name":"X-Forwarded-User-Agent","description":"The user agent string of the client that made the request","in":"header"}},"paths":{"\/account":{"get":{"summary":"Get account","operationId":"accountGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get the currently logged in user.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"get","weight":22,"cookies":false,"type":"","demo":"account\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]},"post":{"summary":"Create account","operationId":"accountCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to allow a new user to register a new account in your project. After the user registration completes successfully, you can use the [\/account\/verfication](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createVerification) route to start verifying the user email address. To allow the new user to login to their new account, you need to create a new [account session](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createEmailSession).","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"create","weight":7,"cookies":false,"type":"","demo":"account\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"New user password. Must be between 8 and 256 chars.","default":null,"x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/account\/email":{"patch":{"summary":"Update email","operationId":"accountUpdateEmail","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateEmail","weight":29,"cookies":false,"type":"","demo":"account\/update-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["email","password"]}}]}},"\/account\/identities":{"get":{"summary":"List Identities","operationId":"accountListIdentities","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get the list of identities for the currently logged in user.","responses":{"200":{"description":"Identities List","schema":{"$ref":"#\/definitions\/identityList"}}},"x-appwrite":{"method":"listIdentities","weight":13,"cookies":false,"type":"","demo":"account\/list-identities.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-identities.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/identities","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, provider, providerUid, providerEmail, providerAccessTokenExpiry","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/identities\/{identityId}":{"delete":{"summary":"Delete identity","operationId":"accountDeleteIdentity","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Delete an identity by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIdentity","weight":14,"cookies":false,"type":"","demo":"account\/delete-identity.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-identity.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"identityId","description":"Identity ID.","required":true,"type":"string","x-example":"[IDENTITY_ID]","in":"path"}]}},"\/account\/jwt":{"post":{"summary":"Create JWT","operationId":"accountCreateJWT","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to create a JSON Web Token. You can use the resulting JWT to authenticate on behalf of the current user when working with the Appwrite server-side API and SDKs. The JWT secret is valid for 15 minutes from its creation and will be invalid if the user will logout in that time frame.","responses":{"201":{"description":"JWT","schema":{"$ref":"#\/definitions\/jwt"}}},"x-appwrite":{"method":"createJWT","weight":21,"cookies":false,"type":"","demo":"account\/create-j-w-t.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-jwt.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"List logs","operationId":"accountListLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get the list of latest security activity logs for the currently logged in user. Each log returns user IP address, location and date and time of log.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listLogs","weight":25,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/mfa":{"patch":{"summary":"Update MFA","operationId":"accountUpdateMFA","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateMFA","weight":42,"cookies":false,"type":"","demo":"account\/update-m-f-a.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-mfa.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"mfa":{"type":"boolean","description":"Enable or disable MFA.","default":null,"x-example":false}},"required":["mfa"]}}]}},"\/account\/mfa\/challenge":{"post":{"summary":"Create 2FA Challenge","operationId":"accountCreate2FAChallenge","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"201":{"description":"MFA Challenge","schema":{"$ref":"#\/definitions\/mfaChallenge"}}},"x-appwrite":{"method":"create2FAChallenge","weight":47,"cookies":false,"type":"","demo":"account\/create2f-a-challenge.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-2fa-challenge.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},token:{param-token}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"factor":{"type":"string","description":"Factor used for verification.","default":null,"x-example":"totp","enum":["totp","phone","email"],"x-enum-name":null,"x-enum-keys":[]}},"required":["factor"]}}]},"put":{"summary":"Create MFA Challenge (confirmation)","operationId":"accountUpdateChallenge","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"updateChallenge","weight":48,"cookies":false,"type":"","demo":"account\/update-challenge.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-challenge.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"challengeId":{"type":"string","description":"ID of the challenge.","default":null,"x-example":"[CHALLENGE_ID]"},"otp":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[OTP]"}},"required":["challengeId","otp"]}}]}},"\/account\/mfa\/factors":{"get":{"summary":"List Factors","operationId":"accountListFactors","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"200":{"description":"MFAFactors","schema":{"$ref":"#\/definitions\/mfaFactors"}}},"x-appwrite":{"method":"listFactors","weight":43,"cookies":false,"type":"","demo":"account\/list-factors.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-factors.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/account\/mfa\/{type}":{"post":{"summary":"Add Authenticator","operationId":"accountAddAuthenticator","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"200":{"description":"MFAType","schema":{"$ref":"#\/definitions\/mfaType"}}},"x-appwrite":{"method":"addAuthenticator","weight":44,"cookies":false,"type":"","demo":"account\/add-authenticator.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/add-authenticator.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"type","description":"Type of authenticator.","required":true,"type":"string","x-example":"totp","enum":["totp"],"x-enum-name":null,"x-enum-keys":[],"in":"path"}]},"put":{"summary":"Verify Authenticator","operationId":"accountVerifyAuthenticator","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"verifyAuthenticator","weight":45,"cookies":false,"type":"","demo":"account\/verify-authenticator.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/verify-authenticator.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"type","description":"Type of authenticator.","required":true,"type":"string","x-example":"totp","enum":["totp"],"x-enum-name":null,"x-enum-keys":[],"in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"otp":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[OTP]"}},"required":["otp"]}}]},"delete":{"summary":"Delete Authenticator","operationId":"accountDeleteAuthenticator","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"deleteAuthenticator","weight":46,"cookies":false,"type":"","demo":"account\/delete-authenticator.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-mfa.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"type","description":"Type of authenticator.","required":true,"type":"string","x-example":"totp","enum":["totp"],"x-enum-name":null,"x-enum-keys":[],"in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"otp":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[OTP]"}},"required":["otp"]}}]}},"\/account\/name":{"patch":{"summary":"Update name","operationId":"accountUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateName","weight":27,"cookies":false,"type":"","demo":"account\/update-name.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-name.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"User name. Max length: 128 chars.","default":null,"x-example":"[NAME]"}},"required":["name"]}}]}},"\/account\/password":{"patch":{"summary":"Update password","operationId":"accountUpdatePassword","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePassword","weight":28,"cookies":false,"type":"","demo":"account\/update-password.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-password.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"password":{"type":"string","description":"New user password. Must be at least 8 chars.","default":null,"x-example":null},"oldPassword":{"type":"string","description":"Current user password. Must be at least 8 chars.","default":"","x-example":"password"}},"required":["password"]}}]}},"\/account\/phone":{"patch":{"summary":"Update phone","operationId":"accountUpdatePhone","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createPhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePhone","weight":30,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["phone","password"]}}]}},"\/account\/prefs":{"get":{"summary":"Get account preferences","operationId":"accountGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get the preferences as a key-value object for the currently logged in user.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":23,"cookies":false,"type":"","demo":"account\/get-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/prefs","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]},"patch":{"summary":"Update preferences","operationId":"accountUpdatePrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account preferences. The object you pass is stored as is, and replaces any previous value. The maximum allowed prefs size is 64kB and throws error if exceeded.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePrefs","weight":31,"cookies":false,"type":"","demo":"account\/update-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/prefs","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"prefs":{"type":"object","description":"Prefs key-value JSON object.","default":{},"x-example":"{}"}},"required":["prefs"]}}]}},"\/account\/recovery":{"post":{"summary":"Create password recovery","operationId":"accountCreateRecovery","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Sends the user an email with a temporary secret key for password reset. When the user clicks the confirmation link he is redirected back to your app password reset URL with the secret key and email address values attached to the URL query string. Use the query string params to submit a request to the [PUT \/account\/recovery](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateRecovery) endpoint to complete the process. The verification link sent to the user's email address is valid for 1 hour.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createRecovery","weight":36,"cookies":false,"type":"","demo":"account\/create-recovery.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-recovery.md","rate-limit":10,"rate-time":3600,"rate-key":["url:{url},email:{param-email}","url:{url},ip:{ip}"],"scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"url":{"type":"string","description":"URL to redirect the user back to your app from the recovery email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":null,"x-example":"https:\/\/example.com"}},"required":["email","url"]}}]},"put":{"summary":"Create password recovery (confirmation)","operationId":"accountUpdateRecovery","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete the user account password reset. Both the **userId** and **secret** arguments will be passed as query parameters to the redirect URL you have provided when sending your request to the [POST \/account\/recovery](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createRecovery) endpoint.\n\nPlease note that in order to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) the only valid redirect URLs are the ones from domains you have set when adding your platforms in the console interface.","responses":{"200":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"updateRecovery","weight":37,"cookies":false,"type":"","demo":"account\/update-recovery.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-recovery.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid reset token.","default":null,"x-example":"[SECRET]"},"password":{"type":"string","description":"New user password. Must be between 8 and 256 chars.","default":null,"x-example":null}},"required":["userId","secret","password"]}}]}},"\/account\/sessions":{"get":{"summary":"List sessions","operationId":"accountListSessions","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get the list of active sessions across different devices for the currently logged in user.","responses":{"200":{"description":"Sessions List","schema":{"$ref":"#\/definitions\/sessionList"}}},"x-appwrite":{"method":"listSessions","weight":24,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/sessions","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]},"delete":{"summary":"Delete sessions","operationId":"accountDeleteSessions","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":35,"cookies":false,"type":"","demo":"account\/delete-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-sessions.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/account\/sessions\/anonymous":{"post":{"summary":"Create anonymous session","operationId":"accountCreateAnonymousSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to allow a new user to register an anonymous account in your project. This route will also create a new session for the user. To allow the new user to convert an anonymous account to a normal account, you need to update its [email and password](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateEmail) or create an [OAuth2 session](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#CreateOAuth2Session).","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"createAnonymousSession","weight":20,"cookies":false,"type":"","demo":"account\/create-anonymous-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-anonymous.md","rate-limit":50,"rate-time":3600,"rate-key":"ip:{ip}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/sessions\/email":{"post":{"summary":"Create email password session","operationId":"accountCreateEmailPasswordSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Allow the user to login into their account by providing a valid email and password combination. This route will create a new session for the user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"createEmailPasswordSession","weight":8,"cookies":false,"type":"","demo":"account\/create-email-password-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-email-password.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["email","password"]}}]}},"\/account\/sessions\/magic-url":{"put":{"summary":"Create session (deprecated)","operationId":"accountUpdateMagicURLSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to create a session from token. Provide the **userId** and **secret** parameters from the successful response of authentication flows initiated by token creation. For example, magic URL and phone login.","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateMagicURLSession","weight":17,"cookies":false,"type":"","demo":"account\/update-magic-u-r-l-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session.md","rate-limit":10,"rate-time":3600,"rate-key":"ip:{ip},userId:{param-userId}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/account\/sessions\/oauth2\/{provider}":{"get":{"summary":"Create OAuth2 session","operationId":"accountCreateOAuth2Session","consumes":["application\/json"],"produces":["text\/html"],"tags":["account"],"description":"Allow the user to login to their account using the OAuth2 provider of their choice. Each OAuth2 provider should be enabled from the Appwrite console first. Use the success and failure arguments to provide a redirect URL's back to your app when login is completed.\n\nIf there is already an active session, the new session will be attached to the logged-in account. If there are no active sessions, the server will attempt to look for a user with the same email address as the email received from the OAuth2 provider and attach the new session to the existing user. If no matching user is found - the server will create a new user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).\n","responses":{"301":{"description":"No content"}},"x-appwrite":{"method":"createOAuth2Session","weight":9,"cookies":false,"type":"webAuth","demo":"account\/create-o-auth2session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-oauth2.md","rate-limit":50,"rate-time":3600,"rate-key":"ip:{ip}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"provider","description":"OAuth2 Provider. Currently, supported providers are: amazon, apple, auth0, authentik, autodesk, bitbucket, bitly, box, dailymotion, discord, disqus, dropbox, etsy, facebook, github, gitlab, google, linkedin, microsoft, notion, oidc, okta, paypal, paypalSandbox, podio, salesforce, slack, spotify, stripe, tradeshift, tradeshiftBox, twitch, wordpress, yahoo, yammer, yandex, zoho, zoom.","required":true,"type":"string","x-example":"amazon","enum":["amazon","apple","auth0","authentik","autodesk","bitbucket","bitly","box","dailymotion","discord","disqus","dropbox","etsy","facebook","github","gitlab","google","linkedin","microsoft","notion","oidc","okta","paypal","paypalSandbox","podio","salesforce","slack","spotify","stripe","tradeshift","tradeshiftBox","twitch","wordpress","yahoo","yammer","yandex","zoho","zoom","mock"],"x-enum-name":"OAuthProvider","x-enum-keys":[],"in":"path"},{"name":"success","description":"URL to redirect back to your app after a successful login attempt. Only URLs from hostnames in your project's platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","required":false,"type":"string","format":"url","x-example":"https:\/\/example.com","default":"","in":"query"},{"name":"failure","description":"URL to redirect back to your app after a failed login attempt. Only URLs from hostnames in your project's platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","required":false,"type":"string","format":"url","x-example":"https:\/\/example.com","default":"","in":"query"},{"name":"token","description":"Include token credentials in the final redirect, useful for server-side integrations, or when cookies are not available.","required":false,"type":"boolean","x-example":false,"default":false,"in":"query"},{"name":"scopes","description":"A list of custom OAuth2 scopes. Check each provider internal docs for a list of supported scopes. Maximum of 100 scopes are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/sessions\/token":{"post":{"summary":"Create session","operationId":"accountCreateSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to create a session from token. Provide the **userId** and **secret** parameters from the successful response of authentication flows initiated by token creation. For example, magic URL and phone login.","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"createSession","weight":18,"cookies":false,"type":"","demo":"account\/create-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session.md","rate-limit":10,"rate-time":3600,"rate-key":"ip:{ip},userId:{param-userId}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Secret of a token generated by login methods. For example, the `createMagicURLToken` or `createPhoneToken` methods.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/account\/sessions\/{sessionId}":{"get":{"summary":"Get session","operationId":"accountGetSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to get a logged in user's session using a Session ID. Inputting 'current' will return the current session being used.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"getSession","weight":26,"cookies":false,"type":"","demo":"account\/get-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-session.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.read","platforms":["client","server"],"packaging":false,"offline-model":"\/account\/sessions","offline-key":"{sessionId}","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to get the current device session.","required":true,"type":"string","x-example":"[SESSION_ID]","in":"path"}]},"patch":{"summary":"Update (or renew) a session","operationId":"accountUpdateSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Extend session's expiry to increase it's lifespan. Extending a session is useful when session length is short such as 5 minutes.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateSession","weight":34,"cookies":false,"type":"","demo":"account\/update-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-session.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to update the current device session.","required":true,"type":"string","x-example":"[SESSION_ID]","in":"path"}]},"delete":{"summary":"Delete session","operationId":"accountDeleteSession","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Logout the user. Use 'current' as the session ID to logout on this device, use a session ID to logout on another device. If you're looking to logout the user on all devices, use [Delete Sessions](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#deleteSessions) instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSession","weight":33,"cookies":false,"type":"","demo":"account\/delete-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/delete-session.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"sessionId","description":"Session ID. Use the string 'current' to delete the current device session.","required":true,"type":"string","x-example":"[SESSION_ID]","in":"path"}]}},"\/account\/status":{"patch":{"summary":"Update status","operationId":"accountUpdateStatus","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateStatus","weight":32,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]}},"\/account\/tokens\/email":{"post":{"summary":"Create email token (OTP)","operationId":"accountCreateEmailToken","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Sends the user an email with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [POST \/v1\/account\/sessions\/token](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createSession) endpoint to complete the login process. The secret sent to the user's email is valid for 15 minutes.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createEmailToken","weight":16,"cookies":false,"type":"","demo":"account\/create-email-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-token-email.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"phrase":{"type":"boolean","description":"Toggle for security phrase. If enabled, email will be send with a randomly generated phrase and the phrase will also be included in the response. Confirming phrases match increases the security of your authentication flow.","default":false,"x-example":false}},"required":["userId","email"]}}]}},"\/account\/tokens\/magic-url":{"post":{"summary":"Create magic URL token","operationId":"accountCreateMagicURLToken","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Sends the user an email with a secret key for creating a session. If the provided user ID has not been registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [POST \/v1\/account\/sessions\/token](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createSession) endpoint to complete the login process. The link sent to the user's email address is valid for 1 hour. If you are on a mobile device you can leave the URL parameter empty, so that the login completion will be handled by your Appwrite instance by default.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).\n","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createMagicURLToken","weight":15,"cookies":false,"type":"","demo":"account\/create-magic-u-r-l-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-token-magic-url.md","rate-limit":60,"rate-time":3600,"rate-key":["url:{url},email:{param-email}","url:{url},ip:{ip}"],"scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"url":{"type":"string","description":"URL to redirect the user back to your app from the magic URL login. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":"","x-example":"https:\/\/example.com"},"phrase":{"type":"boolean","description":"Toggle for security phrase. If enabled, email will be send with a randomly generated phrase and the phrase will also be included in the response. Confirming phrases match increases the security of your authentication flow.","default":false,"x-example":false}},"required":["userId","email"]}}]}},"\/account\/tokens\/phone":{"post":{"summary":"Create phone token","operationId":"accountCreatePhoneToken","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Sends the user an SMS with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [POST \/v1\/account\/sessions\/token](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createSession) endpoint to complete the login process. The secret sent to the user's phone is valid for 15 minutes.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createPhoneToken","weight":19,"cookies":false,"type":"","demo":"account\/create-phone-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-token-phone.md","rate-limit":10,"rate-time":3600,"rate-key":["url:{url},phone:{param-phone}","url:{url},ip:{ip}"],"scope":"sessions.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"}},"required":["userId","phone"]}}]}},"\/account\/verification":{"post":{"summary":"Create email verification","operationId":"accountCreateVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to send a verification message to your user email address to confirm they are the valid owners of that address. Both the **userId** and **secret** arguments will be passed as query parameters to the URL you have provided to be attached to the verification email. The provided URL should redirect the user back to your app and allow you to complete the verification process by verifying both the **userId** and **secret** parameters. Learn more about how to [complete the verification process](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateVerification). The verification link sent to the user's email address is valid for 7 days.\n\nPlease note that in order to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md), the only valid redirect URLs are the ones from domains you have set when adding your platforms in the console interface.\n","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createVerification","weight":38,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"url":{"type":"string","description":"URL to redirect the user back to your app from the verification email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":null,"x-example":"https:\/\/example.com"}},"required":["url"]}}]},"put":{"summary":"Create email verification (confirmation)","operationId":"accountUpdateVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete the user email verification process. Use both the **userId** and **secret** parameters that were attached to your app URL to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"updateVerification","weight":39,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/account\/verification\/phone":{"post":{"summary":"Create phone verification","operationId":"accountCreatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updatePhone) endpoint. Learn more about how to [complete the verification process](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createPhoneVerification","weight":40,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":["url:{url},userId:{userId}","url:{url},ip:{ip}"],"scope":"accounts.write","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}]},"put":{"summary":"Create phone verification (confirmation)","operationId":"accountUpdatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"updatePhoneVerification","weight":41,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/avatars\/browsers\/{code}":{"get":{"summary":"Get browser icon","operationId":"avatarsGetBrowser","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"You can use this endpoint to show different browser icons to your users. The code argument receives the browser code as it appears in your user [GET \/account\/sessions](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#getSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getBrowser","weight":54,"cookies":false,"type":"location","demo":"avatars\/get-browser.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-browser.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Browser Code.","required":true,"type":"string","x-example":"aa","enum":["aa","an","ch","ci","cm","cr","ff","sf","mf","ps","oi","om","op","on"],"x-enum-name":"Browser","x-enum-keys":["Avant Browser","Android WebView Beta","Google Chrome","Google Chrome (iOS)","Google Chrome (Mobile)","Chromium","Mozilla Firefox","Safari","Mobile Safari","Microsoft Edge","Microsoft Edge (iOS)","Opera Mini","Opera","Opera (Next)"],"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"}]}},"\/avatars\/credit-cards\/{code}":{"get":{"summary":"Get credit card icon","operationId":"avatarsGetCreditCard","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"The credit card endpoint will return you the icon of the credit card provider you need. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getCreditCard","weight":53,"cookies":false,"type":"location","demo":"avatars\/get-credit-card.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-credit-card.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Credit Card Code. Possible values: amex, argencard, cabal, censosud, diners, discover, elo, hipercard, jcb, mastercard, naranja, targeta-shopping, union-china-pay, visa, mir, maestro.","required":true,"type":"string","x-example":"amex","enum":["amex","argencard","cabal","censosud","diners","discover","elo","hipercard","jcb","mastercard","naranja","targeta-shopping","union-china-pay","visa","mir","maestro"],"x-enum-name":"CreditCard","x-enum-keys":["American Express","Argencard","Cabal","Consosud","Diners Club","Discover","Elo","Hipercard","JCB","Mastercard","Naranja","Tarjeta Shopping","Union China Pay","Visa","MIR","Maestro"],"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"}]}},"\/avatars\/favicon":{"get":{"summary":"Get favicon","operationId":"avatarsGetFavicon","consumes":["application\/json"],"produces":["image\/*"],"tags":["avatars"],"description":"Use this endpoint to fetch the favorite icon (AKA favicon) of any remote website URL.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFavicon","weight":57,"cookies":false,"type":"location","demo":"avatars\/get-favicon.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-favicon.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"url","description":"Website URL which you want to fetch the favicon from.","required":true,"type":"string","format":"url","x-example":"https:\/\/example.com","in":"query"}]}},"\/avatars\/flags\/{code}":{"get":{"summary":"Get country flag","operationId":"avatarsGetFlag","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"You can use this endpoint to show different country flags icons to your users. The code argument receives the 2 letter country code. Use width, height and quality arguments to change the output settings. Country codes follow the [ISO 3166-1](https:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFlag","weight":55,"cookies":false,"type":"location","demo":"avatars\/get-flag.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-flag.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Country Code. ISO Alpha-2 country code format.","required":true,"type":"string","x-example":"af","enum":["af","ao","al","ad","ae","ar","am","ag","au","at","az","bi","be","bj","bf","bd","bg","bh","bs","ba","by","bz","bo","br","bb","bn","bt","bw","cf","ca","ch","cl","cn","ci","cm","cd","cg","co","km","cv","cr","cu","cy","cz","de","dj","dm","dk","do","dz","ec","eg","er","es","ee","et","fi","fj","fr","fm","ga","gb","ge","gh","gn","gm","gw","gq","gr","gd","gt","gy","hn","hr","ht","hu","id","in","ie","ir","iq","is","il","it","jm","jo","jp","kz","ke","kg","kh","ki","kn","kr","kw","la","lb","lr","ly","lc","li","lk","ls","lt","lu","lv","ma","mc","md","mg","mv","mx","mh","mk","ml","mt","mm","me","mn","mz","mr","mu","mw","my","na","ne","ng","ni","nl","no","np","nr","nz","om","pk","pa","pe","ph","pw","pg","pl","kp","pt","py","qa","ro","ru","rw","sa","sd","sn","sg","sb","sl","sv","sm","so","rs","ss","st","sr","sk","si","se","sz","sc","sy","td","tg","th","tj","tm","tl","to","tt","tn","tr","tv","tz","ug","ua","uy","us","uz","va","vc","ve","vn","vu","ws","ye","za","zm","zw"],"x-enum-name":"Flag","x-enum-keys":["Afghanistan","Angola","Albania","Andorra","United Arab Emirates","Argentina","Armenia","Antigua and Barbuda","Australia","Austria","Azerbaijan","Burundi","Belgium","Benin","Burkina Faso","Bangladesh","Bulgaria","Bahrain","Bahamas","Bosnia and Herzegovina","Belarus","Belize","Bolivia","Brazil","Barbados","Brunei Darussalam","Bhutan","Botswana","Central African Republic","Canada","Switzerland","Chile","China","C\u00f4te d'Ivoire","Cameroon","Democratic Republic of the Congo","Republic of the Congo","Colombia","Comoros","Cape Verde","Costa Rica","Cuba","Cyprus","Czech Republic","Germany","Djibouti","Dominica","Denmark","Dominican Republic","Algeria","Ecuador","Egypt","Eritrea","Spain","Estonia","Ethiopia","Finland","Fiji","France","Micronesia (Federated States of)","Gabon","United Kingdom","Georgia","Ghana","Guinea","Gambia","Guinea-Bissau","Equatorial Guinea","Greece","Grenada","Guatemala","Guyana","Honduras","Croatia","Haiti","Hungary","Indonesia","India","Ireland","Iran (Islamic Republic of)","Iraq","Iceland","Israel","Italy","Jamaica","Jordan","Japan","Kazakhstan","Kenya","Kyrgyzstan","Cambodia","Kiribati","Saint Kitts and Nevis","South Korea","Kuwait","Lao People's Democratic Republic","Lebanon","Liberia","Libya","Saint Lucia","Liechtenstein","Sri Lanka","Lesotho","Lithuania","Luxembourg","Latvia","Morocco","Monaco","Moldova","Madagascar","Maldives","Mexico","Marshall Islands","North Macedonia","Mali","Malta","Myanmar","Montenegro","Mongolia","Mozambique","Mauritania","Mauritius","Malawi","Malaysia","Namibia","Niger","Nigeria","Nicaragua","Netherlands","Norway","Nepal","Nauru","New Zealand","Oman","Pakistan","Panama","Peru","Philippines","Palau","Papua New Guinea","Poland","North Korea","Portugal","Paraguay","Qatar","Romania","Russia","Rwanda","Saudi Arabia","Sudan","Senegal","Singapore","Solomon Islands","Sierra Leone","El Salvador","San Marino","Somalia","Serbia","South Sudan","Sao Tome and Principe","Suriname","Slovakia","Slovenia","Sweden","Eswatini","Seychelles","Syria","Chad","Togo","Thailand","Tajikistan","Turkmenistan","Timor-Leste","Tonga","Trinidad and Tobago","Tunisia","Turkey","Tuvalu","Tanzania","Uganda","Ukraine","Uruguay","United States","Uzbekistan","Vatican City","Saint Vincent and the Grenadines","Venezuela","Vietnam","Vanuatu","Samoa","Yemen","South Africa","Zambia","Zimbabwe"],"in":"path"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"quality","description":"Image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"}]}},"\/avatars\/image":{"get":{"summary":"Get image from URL","operationId":"avatarsGetImage","consumes":["application\/json"],"produces":["image\/*"],"tags":["avatars"],"description":"Use this endpoint to fetch a remote image URL and crop it to any image size you want. This endpoint is very useful if you need to crop and display remote images in your app or in case you want to make sure a 3rd party image is properly served using a TLS protocol.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getImage","weight":56,"cookies":false,"type":"location","demo":"avatars\/get-image.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-image.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"url","description":"Image URL which you want to crop.","required":true,"type":"string","format":"url","x-example":"https:\/\/example.com","in":"query"},{"name":"width","description":"Resize preview image width, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get user initials","operationId":"avatarsGetInitials","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getInitials","weight":59,"cookies":false,"type":"location","demo":"avatars\/get-initials.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-initials.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"name","description":"Full Name. When empty, current user name or email will be used. Max length: 128 chars.","required":false,"type":"string","x-example":"[NAME]","default":"","in":"query"},{"name":"width","description":"Image width. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":500,"in":"query"},{"name":"height","description":"Image height. Pass an integer between 0 to 2000. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":500,"in":"query"},{"name":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"type":"string","default":"","in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR code","operationId":"avatarsGetQR","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getQR","weight":58,"cookies":false,"type":"location","demo":"avatars\/get-q-r.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-qr.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"avatars.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"text","description":"Plain text to be converted to QR code image.","required":true,"type":"string","x-example":"[TEXT]","in":"query"},{"name":"size","description":"QR code size. Pass an integer between 1 to 1000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":1,"default":400,"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"type":"integer","format":"int32","x-example":0,"default":1,"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"type":"boolean","x-example":false,"default":false,"in":"query"}]}},"\/databases":{"get":{"summary":"List databases","operationId":"databasesList","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all databases from the current Appwrite project. You can use the search parameter to filter your results.","responses":{"200":{"description":"Databases List","schema":{"$ref":"#\/definitions\/databaseList"}}},"x-appwrite":{"method":"list","weight":64,"cookies":false,"type":"","demo":"databases\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create database","operationId":"databasesCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Database.\n","responses":{"201":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"create","weight":63,"cookies":false,"type":"","demo":"databases\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"databaseId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[DATABASE_ID]"},"name":{"type":"string","description":"Database name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Is the database enabled? When set to 'disabled', users cannot access the database but Server SDKs with an API key can still read and write to the database. No data is lost when this is toggled.","default":true,"x-example":false}},"required":["databaseId","name"]}}]}},"\/databases\/{databaseId}":{"get":{"summary":"Get database","operationId":"databasesGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a database by its unique ID. This endpoint response returns a JSON object with the database metadata.","responses":{"200":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"get","weight":65,"cookies":false,"type":"","demo":"databases\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"}]},"put":{"summary":"Update database","operationId":"databasesUpdate","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a database by its unique ID.","responses":{"200":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"update","weight":67,"cookies":false,"type":"","demo":"databases\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Database name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Is database enabled? When set to 'disabled', users cannot access the database but Server SDKs with an API key can still read and write to the database. No data is lost when this is toggled.","default":true,"x-example":false}},"required":["name"]}}]},"delete":{"summary":"Delete database","operationId":"databasesDelete","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a database by its unique ID. Only API keys with with databases.write scope can delete a database.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":68,"cookies":false,"type":"","demo":"databases\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections":{"get":{"summary":"List collections","operationId":"databasesListCollections","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all collections that belong to the provided databaseId. You can use the search parameter to filter your results.","responses":{"200":{"description":"Collections List","schema":{"$ref":"#\/definitions\/collectionList"}}},"x-appwrite":{"method":"listCollections","weight":70,"cookies":false,"type":"","demo":"databases\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, documentSecurity","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create collection","operationId":"databasesCreateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Collection. Before using this route, you should create a new database resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"createCollection","weight":69,"cookies":false,"type":"","demo":"databases\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permissions strings. By default, no user is granted with any permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":false,"x-example":false},"enabled":{"type":"boolean","description":"Is collection enabled? When set to 'disabled', users cannot access the collection but Server SDKs with and API key can still read and write to the collection. No data is lost when this is toggled.","default":true,"x-example":false}},"required":["collectionId","name"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}":{"get":{"summary":"Get collection","operationId":"databasesGetCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a collection by its unique ID. This endpoint response returns a JSON object with the collection metadata.","responses":{"200":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"getCollection","weight":71,"cookies":false,"type":"","demo":"databases\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]},"put":{"summary":"Update collection","operationId":"databasesUpdateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a collection by its unique ID.","responses":{"200":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"updateCollection","weight":73,"cookies":false,"type":"","demo":"databases\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":false,"x-example":false},"enabled":{"type":"boolean","description":"Is collection enabled? When set to 'disabled', users cannot access the collection but Server SDKs with and API key can still read and write to the collection. No data is lost when this is toggled.","default":true,"x-example":false}},"required":["name"]}}]},"delete":{"summary":"Delete collection","operationId":"databasesDeleteCollection","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a collection by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteCollection","weight":74,"cookies":false,"type":"","demo":"databases\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes":{"get":{"summary":"List attributes","operationId":"databasesListAttributes","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Attributes List","schema":{"$ref":"#\/definitions\/attributeList"}}},"x-appwrite":{"method":"listAttributes","weight":85,"cookies":false,"type":"","demo":"databases\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: key, type, size, required, array, status, error","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create boolean attribute","operationId":"databasesCreateBooleanAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a boolean attribute.\n","responses":{"202":{"description":"AttributeBoolean","schema":{"$ref":"#\/definitions\/attributeBoolean"}}},"x-appwrite":{"method":"createBooleanAttribute","weight":82,"cookies":false,"type":"","demo":"databases\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":false},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean\/{key}":{"patch":{"summary":"Update boolean attribute","operationId":"databasesUpdateBooleanAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"","responses":{"200":{"description":"AttributeBoolean","schema":{"$ref":"#\/definitions\/attributeBoolean"}}},"x-appwrite":{"method":"updateBooleanAttribute","weight":94,"cookies":false,"type":"","demo":"databases\/update-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":false,"x-nullable":true}},"required":["required","default"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/datetime":{"post":{"summary":"Create datetime attribute","operationId":"databasesCreateDatetimeAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"AttributeDatetime","schema":{"$ref":"#\/definitions\/attributeDatetime"}}},"x-appwrite":{"method":"createDatetimeAttribute","weight":83,"cookies":false,"type":"","demo":"databases\/create-datetime-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-datetime-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for the attribute in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/datetime\/{key}":{"patch":{"summary":"Update dateTime attribute","operationId":"databasesUpdateDatetimeAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"","responses":{"200":{"description":"AttributeDatetime","schema":{"$ref":"#\/definitions\/attributeDatetime"}}},"x-appwrite":{"method":"updateDatetimeAttribute","weight":95,"cookies":false,"type":"","demo":"databases\/update-datetime-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-datetime-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null,"x-nullable":true}},"required":["required","default"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create email attribute","operationId":"databasesCreateEmailAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create an email attribute.\n","responses":{"202":{"description":"AttributeEmail","schema":{"$ref":"#\/definitions\/attributeEmail"}}},"x-appwrite":{"method":"createEmailAttribute","weight":76,"cookies":false,"type":"","demo":"databases\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"email@example.com"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/email\/{key}":{"patch":{"summary":"Update email attribute","operationId":"databasesUpdateEmailAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Update an email attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeEmail","schema":{"$ref":"#\/definitions\/attributeEmail"}}},"x-appwrite":{"method":"updateEmailAttribute","weight":88,"cookies":false,"type":"","demo":"databases\/update-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"email@example.com","x-nullable":true}},"required":["required","default"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create enum attribute","operationId":"databasesCreateEnumAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"AttributeEnum","schema":{"$ref":"#\/definitions\/attributeEnum"}}},"x-appwrite":{"method":"createEnumAttribute","weight":77,"cookies":false,"type":"","demo":"databases\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"elements":{"type":"array","description":"Array of elements in enumerated type. Uses length of longest element to determine size. Maximum of 100 elements are allowed, each 255 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","elements","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/enum\/{key}":{"patch":{"summary":"Update enum attribute","operationId":"databasesUpdateEnumAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Update an enum attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeEnum","schema":{"$ref":"#\/definitions\/attributeEnum"}}},"x-appwrite":{"method":"updateEnumAttribute","weight":89,"cookies":false,"type":"","demo":"databases\/update-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-enum-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"elements":{"type":"array","description":"Array of elements in enumerated type. Uses length of longest element to determine size. Maximum of 100 elements are allowed, each 255 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"[DEFAULT]","x-nullable":true}},"required":["elements","required","default"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create float attribute","operationId":"databasesCreateFloatAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeFloat","schema":{"$ref":"#\/definitions\/attributeFloat"}}},"x-appwrite":{"method":"createFloatAttribute","weight":81,"cookies":false,"type":"","demo":"databases\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"min":{"type":"number","description":"Minimum value to enforce on new documents","default":null,"x-example":null},"max":{"type":"number","description":"Maximum value to enforce on new documents","default":null,"x-example":null},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/float\/{key}":{"patch":{"summary":"Update float attribute","operationId":"databasesUpdateFloatAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Update a float attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeFloat","schema":{"$ref":"#\/definitions\/attributeFloat"}}},"x-appwrite":{"method":"updateFloatAttribute","weight":93,"cookies":false,"type":"","demo":"databases\/update-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"min":{"type":"number","description":"Minimum value to enforce on new documents","default":null,"x-example":null},"max":{"type":"number","description":"Maximum value to enforce on new documents","default":null,"x-example":null},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null,"x-nullable":true}},"required":["required","min","max","default"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create integer attribute","operationId":"databasesCreateIntegerAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeInteger","schema":{"$ref":"#\/definitions\/attributeInteger"}}},"x-appwrite":{"method":"createIntegerAttribute","weight":80,"cookies":false,"type":"","demo":"databases\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"min":{"type":"integer","description":"Minimum value to enforce on new documents","default":null,"x-example":null},"max":{"type":"integer","description":"Maximum value to enforce on new documents","default":null,"x-example":null},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/integer\/{key}":{"patch":{"summary":"Update integer attribute","operationId":"databasesUpdateIntegerAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Update an integer attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeInteger","schema":{"$ref":"#\/definitions\/attributeInteger"}}},"x-appwrite":{"method":"updateIntegerAttribute","weight":92,"cookies":false,"type":"","demo":"databases\/update-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"min":{"type":"integer","description":"Minimum value to enforce on new documents","default":null,"x-example":null},"max":{"type":"integer","description":"Maximum value to enforce on new documents","default":null,"x-example":null},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null,"x-nullable":true}},"required":["required","min","max","default"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP address attribute","operationId":"databasesCreateIpAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create IP address attribute.\n","responses":{"202":{"description":"AttributeIP","schema":{"$ref":"#\/definitions\/attributeIp"}}},"x-appwrite":{"method":"createIpAttribute","weight":78,"cookies":false,"type":"","demo":"databases\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/ip\/{key}":{"patch":{"summary":"Update IP address attribute","operationId":"databasesUpdateIpAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Update an ip attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeIP","schema":{"$ref":"#\/definitions\/attributeIp"}}},"x-appwrite":{"method":"updateIpAttribute","weight":90,"cookies":false,"type":"","demo":"databases\/update-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null,"x-nullable":true}},"required":["required","default"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/relationship":{"post":{"summary":"Create relationship attribute","operationId":"databasesCreateRelationshipAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create relationship attribute. [Learn more about relationship attributes](https:\/\/appwrite.io\/docs\/databases-relationships#relationship-attributes).\n","responses":{"202":{"description":"AttributeRelationship","schema":{"$ref":"#\/definitions\/attributeRelationship"}}},"x-appwrite":{"method":"createRelationshipAttribute","weight":84,"cookies":false,"type":"","demo":"databases\/create-relationship-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-relationship-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"relatedCollectionId":{"type":"string","description":"Related Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","default":null,"x-example":"[RELATED_COLLECTION_ID]"},"type":{"type":"string","description":"Relation type","default":null,"x-example":"oneToOne","enum":["oneToOne","manyToOne","manyToMany","oneToMany"],"x-enum-name":"RelationshipType","x-enum-keys":[]},"twoWay":{"type":"boolean","description":"Is Two Way?","default":false,"x-example":false},"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"twoWayKey":{"type":"string","description":"Two Way Attribute Key.","default":null,"x-example":null},"onDelete":{"type":"string","description":"Constraints option","default":"restrict","x-example":"cascade","enum":["cascade","restrict","setNull"],"x-enum-name":"RelationMutate","x-enum-keys":[]}},"required":["relatedCollectionId","type"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create string attribute","operationId":"databasesCreateStringAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a string attribute.\n","responses":{"202":{"description":"AttributeString","schema":{"$ref":"#\/definitions\/attributeString"}}},"x-appwrite":{"method":"createStringAttribute","weight":75,"cookies":false,"type":"","demo":"databases\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"size":{"type":"integer","description":"Attribute size for text attributes, in number of characters.","default":null,"x-example":1},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false},"encrypt":{"type":"boolean","description":"Toggle encryption for the attribute. Encryption enhances security by not storing any plain text values in the database. However, encrypted attributes cannot be queried.","default":false,"x-example":false}},"required":["key","size","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/string\/{key}":{"patch":{"summary":"Update string attribute","operationId":"databasesUpdateStringAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Update a string attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeString","schema":{"$ref":"#\/definitions\/attributeString"}}},"x-appwrite":{"method":"updateStringAttribute","weight":87,"cookies":false,"type":"","demo":"databases\/update-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"[DEFAULT]","x-nullable":true}},"required":["required","default"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL attribute","operationId":"databasesCreateUrlAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a URL attribute.\n","responses":{"202":{"description":"AttributeURL","schema":{"$ref":"#\/definitions\/attributeUrl"}}},"x-appwrite":{"method":"createUrlAttribute","weight":79,"cookies":false,"type":"","demo":"databases\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"https:\/\/example.com"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url\/{key}":{"patch":{"summary":"Update URL attribute","operationId":"databasesUpdateUrlAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Update an url attribute. Changing the `default` value will not update already existing documents.\n","responses":{"200":{"description":"AttributeURL","schema":{"$ref":"#\/definitions\/attributeUrl"}}},"x-appwrite":{"method":"updateUrlAttribute","weight":91,"cookies":false,"type":"","demo":"databases\/update-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"https:\/\/example.com","x-nullable":true}},"required":["required","default"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get attribute","operationId":"databasesGetAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, or AttributeDatetime, or AttributeRelationship, or AttributeString","schema":{"x-oneOf":[{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeRelationship"},{"$ref":"#\/definitions\/attributeString"}]}}},"x-appwrite":{"method":"getAttribute","weight":86,"cookies":false,"type":"","demo":"databases\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"}]},"delete":{"summary":"Delete attribute","operationId":"databasesDeleteAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":97,"cookies":false,"type":"","demo":"databases\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/{key}\/relationship":{"patch":{"summary":"Update relationship attribute","operationId":"databasesUpdateRelationshipAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Update relationship attribute. [Learn more about relationship attributes](https:\/\/appwrite.io\/docs\/databases-relationships#relationship-attributes).\n","responses":{"200":{"description":"AttributeRelationship","schema":{"$ref":"#\/definitions\/attributeRelationship"}}},"x-appwrite":{"method":"updateRelationshipAttribute","weight":96,"cookies":false,"type":"","demo":"databases\/update-relationship-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-relationship-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"onDelete":{"type":"string","description":"Constraints option","default":null,"x-example":"cascade","enum":["cascade","restrict","setNull"],"x-enum-name":"RelationMutate","x-enum-keys":[]}}}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List documents","operationId":"databasesListDocuments","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","schema":{"$ref":"#\/definitions\/documentList"}}},"x-appwrite":{"method":"listDocuments","weight":103,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"post":{"summary":"Create document","operationId":"databasesCreateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"createDocument","weight":102,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","default":{},"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, only the current user is granted all permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get document","operationId":"databasesGetDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"getDocument","weight":104,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"patch":{"summary":"Update document","operationId":"databasesUpdateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"updateDocument","weight":106,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","default":[],"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete document","operationId":"databasesDeleteDocument","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":107,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/databases\/{databaseId}\/collections\/{collectionId}\/documents","offline-key":"{documentId}","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes":{"get":{"summary":"List indexes","operationId":"databasesListIndexes","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Indexes List","schema":{"$ref":"#\/definitions\/indexList"}}},"x-appwrite":{"method":"listIndexes","weight":99,"cookies":false,"type":"","demo":"databases\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: key, type, status, attributes, error","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"post":{"summary":"Create index","operationId":"databasesCreateIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"createIndex","weight":98,"cookies":false,"type":"","demo":"databases\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Index Key.","default":null,"x-example":null},"type":{"type":"string","description":"Index type.","default":null,"x-example":"key","enum":["key","fulltext","unique","spatial"],"x-enum-name":"IndexType","x-enum-keys":[]},"attributes":{"type":"array","description":"Array of attributes to index. Maximum of 100 attributes are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders. Maximum of 100 orders are allowed.","default":[],"x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get index","operationId":"databasesGetIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"getIndex","weight":100,"cookies":false,"type":"","demo":"databases\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Index Key.","required":true,"type":"string","in":"path"}]},"delete":{"summary":"Delete index","operationId":"databasesDeleteIndex","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":101,"cookies":false,"type":"","demo":"databases\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Index Key.","required":true,"type":"string","in":"path"}]}},"\/functions":{"get":{"summary":"List functions","operationId":"functionsList","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the project's functions. You can use the query params to filter your results.","responses":{"200":{"description":"Functions List","schema":{"$ref":"#\/definitions\/functionList"}}},"x-appwrite":{"method":"list","weight":268,"cookies":false,"type":"","demo":"functions\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-functions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, runtime, deployment, schedule, scheduleNext, schedulePrevious, timeout, entrypoint, commands, installationId","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create function","operationId":"functionsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function. You can pass a list of [permissions](https:\/\/appwrite.io\/docs\/permissions) to allow different project users or team with access to execute the function using the client API.","responses":{"201":{"description":"Function","schema":{"$ref":"#\/definitions\/function"}}},"x-appwrite":{"method":"create","weight":267,"cookies":false,"type":"","demo":"functions\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"functionId":{"type":"string","description":"Function ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[FUNCTION_ID]"},"name":{"type":"string","description":"Function name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"runtime":{"type":"string","description":"Execution runtime.","default":null,"x-example":"node-14.5","enum":["node-14.5","node-16.0","node-18.0","node-19.0","node-20.0","php-8.0","php-8.1","php-8.2","ruby-3.0","ruby-3.1","ruby-3.2","python-3.8","python-3.9","python-3.10","python-3.11","python-3.12","dart-2.15","dart-2.16","dart-2.17","dart-2.18","dart-3.0","dart-3.1","dotnet-3.1","dotnet-6.0","dotnet-7.0","java-8.0","java-11.0","java-17.0","java-18.0","swift-5.5","swift-5.8","kotlin-1.6","kotlin-1.8","cpp-17","cpp-20","bun-1.0"],"x-enum-name":null,"x-enum-keys":[]},"execute":{"type":"array","description":"An array of role strings with execution permissions. By default no user is granted with any execute permissions. [learn more about roles](https:\/\/appwrite.io\/docs\/permissions#permission-roles). Maximum of 100 roles are allowed, each 64 characters long.","default":[],"x-example":"[\"any\"]","items":{"type":"string"}},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","default":[],"x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","default":"","x-example":null},"timeout":{"type":"integer","description":"Function maximum execution time in seconds.","default":15,"x-example":1},"enabled":{"type":"boolean","description":"Is function enabled? When set to 'disabled', users cannot access the function but Server SDKs with and API key can still access the function. No data is lost when this is toggled.","default":true,"x-example":false},"logging":{"type":"boolean","description":"Whether executions will be logged. When set to false, executions will not be logged, but will reduce resource used by your Appwrite project.","default":true,"x-example":false},"entrypoint":{"type":"string","description":"Entrypoint File. This path is relative to the \"providerRootDirectory\".","default":"","x-example":"[ENTRYPOINT]"},"commands":{"type":"string","description":"Build Commands.","default":"","x-example":"[COMMANDS]"},"installationId":{"type":"string","description":"Appwrite Installation ID for VCS (Version Control System) deployment.","default":"","x-example":"[INSTALLATION_ID]"},"providerRepositoryId":{"type":"string","description":"Repository ID of the repo linked to the function.","default":"","x-example":"[PROVIDER_REPOSITORY_ID]"},"providerBranch":{"type":"string","description":"Production branch for the repo linked to the function.","default":"","x-example":"[PROVIDER_BRANCH]"},"providerSilentMode":{"type":"boolean","description":"Is the VCS (Version Control System) connection in silent mode for the repo linked to the function? In silent mode, comments will not be made on commits and pull requests.","default":false,"x-example":false},"providerRootDirectory":{"type":"string","description":"Path to function code in the linked repo.","default":"","x-example":"[PROVIDER_ROOT_DIRECTORY]"},"templateRepository":{"type":"string","description":"Repository name of the template.","default":"","x-example":"[TEMPLATE_REPOSITORY]"},"templateOwner":{"type":"string","description":"The name of the owner of the template.","default":"","x-example":"[TEMPLATE_OWNER]"},"templateRootDirectory":{"type":"string","description":"Path to function code in the template repo.","default":"","x-example":"[TEMPLATE_ROOT_DIRECTORY]"},"templateBranch":{"type":"string","description":"Production branch for the repo linked to the function template.","default":"","x-example":"[TEMPLATE_BRANCH]"}},"required":["functionId","name","runtime"]}}]}},"\/functions\/runtimes":{"get":{"summary":"List runtimes","operationId":"functionsListRuntimes","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all runtimes that are currently active on your instance.","responses":{"200":{"description":"Runtimes List","schema":{"$ref":"#\/definitions\/runtimeList"}}},"x-appwrite":{"method":"listRuntimes","weight":269,"cookies":false,"type":"","demo":"functions\/list-runtimes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-runtimes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/functions\/{functionId}":{"get":{"summary":"Get function","operationId":"functionsGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a function by its unique ID.","responses":{"200":{"description":"Function","schema":{"$ref":"#\/definitions\/function"}}},"x-appwrite":{"method":"get","weight":270,"cookies":false,"type":"","demo":"functions\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"}]},"put":{"summary":"Update function","operationId":"functionsUpdate","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Update function by its unique ID.","responses":{"200":{"description":"Function","schema":{"$ref":"#\/definitions\/function"}}},"x-appwrite":{"method":"update","weight":273,"cookies":false,"type":"","demo":"functions\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Function name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"runtime":{"type":"string","description":"Execution runtime.","default":"","x-example":"node-14.5","enum":["node-14.5","node-16.0","node-18.0","node-19.0","node-20.0","php-8.0","php-8.1","php-8.2","ruby-3.0","ruby-3.1","ruby-3.2","python-3.8","python-3.9","python-3.10","python-3.11","python-3.12","dart-2.15","dart-2.16","dart-2.17","dart-2.18","dart-3.0","dart-3.1","dotnet-3.1","dotnet-6.0","dotnet-7.0","java-8.0","java-11.0","java-17.0","java-18.0","swift-5.5","swift-5.8","kotlin-1.6","kotlin-1.8","cpp-17","cpp-20","bun-1.0"],"x-enum-name":null,"x-enum-keys":[]},"execute":{"type":"array","description":"An array of role strings with execution permissions. By default no user is granted with any execute permissions. [learn more about roles](https:\/\/appwrite.io\/docs\/permissions#permission-roles). Maximum of 100 roles are allowed, each 64 characters long.","default":[],"x-example":"[\"any\"]","items":{"type":"string"}},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","default":[],"x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","default":"","x-example":null},"timeout":{"type":"integer","description":"Maximum execution time in seconds.","default":15,"x-example":1},"enabled":{"type":"boolean","description":"Is function enabled? When set to 'disabled', users cannot access the function but Server SDKs with and API key can still access the function. No data is lost when this is toggled.","default":true,"x-example":false},"logging":{"type":"boolean","description":"Whether executions will be logged. When set to false, executions will not be logged, but will reduce resource used by your Appwrite project.","default":true,"x-example":false},"entrypoint":{"type":"string","description":"Entrypoint File. This path is relative to the \"providerRootDirectory\".","default":"","x-example":"[ENTRYPOINT]"},"commands":{"type":"string","description":"Build Commands.","default":"","x-example":"[COMMANDS]"},"installationId":{"type":"string","description":"Appwrite Installation ID for VCS (Version Controle System) deployment.","default":"","x-example":"[INSTALLATION_ID]"},"providerRepositoryId":{"type":"string","description":"Repository ID of the repo linked to the function","default":"","x-example":"[PROVIDER_REPOSITORY_ID]"},"providerBranch":{"type":"string","description":"Production branch for the repo linked to the function","default":"","x-example":"[PROVIDER_BRANCH]"},"providerSilentMode":{"type":"boolean","description":"Is the VCS (Version Control System) connection in silent mode for the repo linked to the function? In silent mode, comments will not be made on commits and pull requests.","default":false,"x-example":false},"providerRootDirectory":{"type":"string","description":"Path to function code in the linked repo.","default":"","x-example":"[PROVIDER_ROOT_DIRECTORY]"}},"required":["name"]}}]},"delete":{"summary":"Delete function","operationId":"functionsDelete","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"Delete a function by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":276,"cookies":false,"type":"","demo":"functions\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-function.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"}]}},"\/functions\/{functionId}\/deployments":{"get":{"summary":"List deployments","operationId":"functionsListDeployments","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the project's code deployments. You can use the query params to filter your results.","responses":{"200":{"description":"Deployments List","schema":{"$ref":"#\/definitions\/deploymentList"}}},"x-appwrite":{"method":"listDeployments","weight":278,"cookies":false,"type":"","demo":"functions\/list-deployments.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-deployments.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: size, buildId, activate, entrypoint, commands","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create deployment","operationId":"functionsCreateDeployment","consumes":["multipart\/form-data"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function code deployment. Use this endpoint to upload a new version of your code function. To execute your newly uploaded code, you'll need to update the function's deployment to use your new deployment UID.\n\nThis endpoint accepts a tar.gz file compressed with your code. Make sure to include any dependencies your code has within the compressed file. You can learn more about code packaging in the [Appwrite Cloud Functions tutorial](https:\/\/appwrite.io\/docs\/functions).\n\nUse the \"command\" param to set the entrypoint used to execute your code.","responses":{"202":{"description":"Deployment","schema":{"$ref":"#\/definitions\/deployment"}}},"x-appwrite":{"method":"createDeployment","weight":277,"cookies":false,"type":"","demo":"functions\/create-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":true,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"entrypoint","description":"Entrypoint File.","required":false,"type":"string","x-example":"[ENTRYPOINT]","in":"formData"},{"name":"commands","description":"Build Commands.","required":false,"type":"string","x-example":"[COMMANDS]","in":"formData"},{"name":"code","description":"Gzip file with your code package. When used with the Appwrite CLI, pass the path to your code directory, and the CLI will automatically package your code. Use a path that is within the current directory.","required":true,"type":"file","in":"formData"},{"name":"activate","description":"Automatically activate the deployment when it is finished building.","required":true,"type":"boolean","x-example":false,"in":"formData"}]}},"\/functions\/{functionId}\/deployments\/{deploymentId}":{"get":{"summary":"Get deployment","operationId":"functionsGetDeployment","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a code deployment by its unique ID.","responses":{"200":{"description":"Deployment","schema":{"$ref":"#\/definitions\/deployment"}}},"x-appwrite":{"method":"getDeployment","weight":279,"cookies":false,"type":"","demo":"functions\/get-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"type":"string","x-example":"[DEPLOYMENT_ID]","in":"path"}]},"patch":{"summary":"Update function deployment","operationId":"functionsUpdateDeployment","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Update the function code deployment ID using the unique function ID. Use this endpoint to switch the code deployment that should be executed by the execution endpoint.","responses":{"200":{"description":"Function","schema":{"$ref":"#\/definitions\/function"}}},"x-appwrite":{"method":"updateDeployment","weight":275,"cookies":false,"type":"","demo":"functions\/update-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-function-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"type":"string","x-example":"[DEPLOYMENT_ID]","in":"path"}]},"delete":{"summary":"Delete deployment","operationId":"functionsDeleteDeployment","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"Delete a code deployment by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDeployment","weight":280,"cookies":false,"type":"","demo":"functions\/delete-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"type":"string","x-example":"[DEPLOYMENT_ID]","in":"path"}]}},"\/functions\/{functionId}\/deployments\/{deploymentId}\/builds\/{buildId}":{"post":{"summary":"Create build","operationId":"functionsCreateBuild","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"Create a new build for an Appwrite Function deployment. This endpoint can be used to retry a failed build.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"createBuild","weight":281,"cookies":false,"type":"","demo":"functions\/create-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"type":"string","x-example":"[DEPLOYMENT_ID]","in":"path"},{"name":"buildId","description":"Build unique ID.","required":true,"type":"string","x-example":"[BUILD_ID]","in":"path"}]}},"\/functions\/{functionId}\/deployments\/{deploymentId}\/download":{"get":{"summary":"Download Deployment","operationId":"functionsDownloadDeployment","consumes":["application\/json"],"produces":["*\/*"],"tags":["functions"],"description":"Get a Deployment's contents by its unique ID. This endpoint supports range requests for partial or streaming file download.","responses":{"200":{"description":"File","schema":{"type":"file"}}},"x-appwrite":{"method":"downloadDeployment","weight":274,"cookies":false,"type":"location","demo":"functions\/download-deployment.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/download-deployment.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"type":"string","x-example":"[DEPLOYMENT_ID]","in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List executions","operationId":"functionsListExecutions","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","schema":{"$ref":"#\/definitions\/executionList"}}},"x-appwrite":{"method":"listExecutions","weight":283,"cookies":false,"type":"","demo":"functions\/list-executions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-executions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, responseStatusCode, duration","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create execution","operationId":"functionsCreateExecution","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","schema":{"$ref":"#\/definitions\/execution"}}},"x-appwrite":{"method":"createExecution","weight":282,"cookies":false,"type":"","demo":"functions\/create-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-execution.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"body":{"type":"string","description":"HTTP body of execution. Default value is empty string.","default":"","x-example":"[BODY]"},"async":{"type":"boolean","description":"Execute code in the background. Default value is false.","default":false,"x-example":false},"path":{"type":"string","description":"HTTP path of execution. Path can include query params. Default value is \/","default":"\/","x-example":"[PATH]"},"method":{"type":"string","description":"HTTP method of execution. Default value is GET.","default":"POST","x-example":"GET","enum":["GET","POST","PUT","PATCH","DELETE","OPTIONS"],"x-enum-name":"ExecutionMethod","x-enum-keys":[]},"headers":{"type":"object","description":"HTTP headers of execution. Defaults to empty.","default":[],"x-example":"{}"}}}}]}},"\/functions\/{functionId}\/executions\/{executionId}":{"get":{"summary":"Get execution","operationId":"functionsGetExecution","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a function execution log by its unique ID.","responses":{"200":{"description":"Execution","schema":{"$ref":"#\/definitions\/execution"}}},"x-appwrite":{"method":"getExecution","weight":284,"cookies":false,"type":"","demo":"functions\/get-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-execution.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"execution.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"executionId","description":"Execution ID.","required":true,"type":"string","x-example":"[EXECUTION_ID]","in":"path"}]}},"\/functions\/{functionId}\/variables":{"get":{"summary":"List variables","operationId":"functionsListVariables","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all variables of a specific function.","responses":{"200":{"description":"Variables List","schema":{"$ref":"#\/definitions\/variableList"}}},"x-appwrite":{"method":"listVariables","weight":286,"cookies":false,"type":"","demo":"functions\/list-variables.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-variables.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"}]},"post":{"summary":"Create variable","operationId":"functionsCreateVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function environment variable. These variables can be accessed in the function at runtime as environment variables.","responses":{"201":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"createVariable","weight":285,"cookies":false,"type":"","demo":"functions\/create-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","default":null,"x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","default":null,"x-example":"[VALUE]"}},"required":["key","value"]}}]}},"\/functions\/{functionId}\/variables\/{variableId}":{"get":{"summary":"Get variable","operationId":"functionsGetVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a variable by its unique ID.","responses":{"200":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"getVariable","weight":287,"cookies":false,"type":"","demo":"functions\/get-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"}]},"put":{"summary":"Update variable","operationId":"functionsUpdateVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Update variable by its unique ID.","responses":{"200":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"updateVariable","weight":288,"cookies":false,"type":"","demo":"functions\/update-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","default":null,"x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","default":null,"x-example":"[VALUE]"}},"required":["key"]}}]},"delete":{"summary":"Delete variable","operationId":"functionsDeleteVariable","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"Delete a variable by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteVariable","weight":289,"cookies":false,"type":"","demo":"functions\/delete-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"}]}},"\/graphql":{"post":{"summary":"GraphQL endpoint","operationId":"graphqlQuery","consumes":["application\/json"],"produces":["application\/json"],"tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","schema":{"$ref":"#\/definitions\/any"}}},"x-appwrite":{"method":"query","weight":304,"cookies":false,"type":"graphql","demo":"graphql\/query.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"query":{"type":"object","description":"The query or queries to execute.","default":{},"x-example":"{}"}},"required":["query"]}}]}},"\/graphql\/mutation":{"post":{"summary":"GraphQL endpoint","operationId":"graphqlMutation","consumes":["application\/json"],"produces":["application\/json"],"tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","schema":{"$ref":"#\/definitions\/any"}}},"x-appwrite":{"method":"mutation","weight":303,"cookies":false,"type":"graphql","demo":"graphql\/mutation.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"Session":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"query":{"type":"object","description":"The query or queries to execute.","default":{},"x-example":"{}"}},"required":["query"]}}]}},"\/health":{"get":{"summary":"Get HTTP","operationId":"healthGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite HTTP server is up and responsive.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"get","weight":119,"cookies":false,"type":"","demo":"health\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/anti-virus":{"get":{"summary":"Get antivirus","operationId":"healthGetAntivirus","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite Antivirus server is up and connection is successful.","responses":{"200":{"description":"Health Antivirus","schema":{"$ref":"#\/definitions\/healthAntivirus"}}},"x-appwrite":{"method":"getAntivirus","weight":138,"cookies":false,"type":"","demo":"health\/get-antivirus.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-storage-anti-virus.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/cache":{"get":{"summary":"Get cache","operationId":"healthGetCache","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite in-memory cache servers are up and connection is successful.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"getCache","weight":122,"cookies":false,"type":"","demo":"health\/get-cache.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-cache.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/certificate":{"get":{"summary":"Get the SSL certificate for a domain","operationId":"healthGetCertificate","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the SSL certificate for a domain","responses":{"200":{"description":"Health Certificate","schema":{"$ref":"#\/definitions\/healthCertificate"}}},"x-appwrite":{"method":"getCertificate","weight":128,"cookies":false,"type":"","demo":"health\/get-certificate.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-certificate.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"domain","description":"string","required":false,"type":"string","in":"query"}]}},"\/health\/db":{"get":{"summary":"Get DB","operationId":"healthGetDB","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite database servers are up and connection is successful.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"getDB","weight":121,"cookies":false,"type":"","demo":"health\/get-d-b.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-db.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/pubsub":{"get":{"summary":"Get pubsub","operationId":"healthGetPubSub","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite pub-sub servers are up and connection is successful.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"getPubSub","weight":124,"cookies":false,"type":"","demo":"health\/get-pub-sub.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-pubsub.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/queue":{"get":{"summary":"Get queue","operationId":"healthGetQueue","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite queue messaging servers are up and connection is successful.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"getQueue","weight":123,"cookies":false,"type":"","demo":"health\/get-queue.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/queue\/builds":{"get":{"summary":"Get builds queue","operationId":"healthGetQueueBuilds","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of builds that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueBuilds","weight":130,"cookies":false,"type":"","demo":"health\/get-queue-builds.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-builds.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/certificates":{"get":{"summary":"Get certificates queue","operationId":"healthGetQueueCertificates","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of certificates that are waiting to be issued against [Letsencrypt](https:\/\/letsencrypt.org\/) in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueCertificates","weight":129,"cookies":false,"type":"","demo":"health\/get-queue-certificates.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-certificates.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/databases":{"get":{"summary":"Get databases queue","operationId":"healthGetQueueDatabases","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of database changes that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueDatabases","weight":131,"cookies":false,"type":"","demo":"health\/get-queue-databases.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-databases.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"name","description":"Queue name for which to check the queue size","required":false,"type":"string","x-example":"[NAME]","default":"database_db_main","in":"query"},{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/deletes":{"get":{"summary":"Get deletes queue","operationId":"healthGetQueueDeletes","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of background destructive changes that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueDeletes","weight":132,"cookies":false,"type":"","demo":"health\/get-queue-deletes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-deletes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/failed\/{name}":{"get":{"summary":"Get number of failed queue jobs","operationId":"healthGetFailedJobs","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Returns the amount of failed jobs in a given queue.\n","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getFailedJobs","weight":139,"cookies":false,"type":"","demo":"health\/get-failed-jobs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-failed-queue-jobs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"name","description":"The name of the queue","required":true,"type":"string","x-example":"v1-database","enum":["v1-database","v1-deletes","v1-audits","v1-mails","v1-functions","v1-usage","webhooksv1","v1-certificates","v1-builds","v1-messaging","v1-migrations","hamsterv1"],"x-enum-name":null,"x-enum-keys":[],"in":"path"},{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/functions":{"get":{"summary":"Get functions queue","operationId":"healthGetQueueFunctions","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueFunctions","weight":136,"cookies":false,"type":"","demo":"health\/get-queue-functions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-functions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/logs":{"get":{"summary":"Get logs queue","operationId":"healthGetQueueLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of logs that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueLogs","weight":127,"cookies":false,"type":"","demo":"health\/get-queue-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/mails":{"get":{"summary":"Get mails queue","operationId":"healthGetQueueMails","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of mails that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueMails","weight":133,"cookies":false,"type":"","demo":"health\/get-queue-mails.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-mails.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/messaging":{"get":{"summary":"Get messaging queue","operationId":"healthGetQueueMessaging","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of messages that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueMessaging","weight":134,"cookies":false,"type":"","demo":"health\/get-queue-messaging.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-messaging.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/migrations":{"get":{"summary":"Get migrations queue","operationId":"healthGetQueueMigrations","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of migrations that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueMigrations","weight":135,"cookies":false,"type":"","demo":"health\/get-queue-migrations.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-migrations.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/queue\/webhooks":{"get":{"summary":"Get webhooks queue","operationId":"healthGetQueueWebhooks","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of webhooks that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueWebhooks","weight":126,"cookies":false,"type":"","demo":"health\/get-queue-webhooks.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-webhooks.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"threshold","description":"Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.","required":false,"type":"integer","format":"int32","default":5000,"in":"query"}]}},"\/health\/storage\/local":{"get":{"summary":"Get local storage","operationId":"healthGetStorageLocal","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite local storage device is up and connection is successful.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"getStorageLocal","weight":137,"cookies":false,"type":"","demo":"health\/get-storage-local.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-storage-local.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/time":{"get":{"summary":"Get time","operationId":"healthGetTime","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite server time is synced with Google remote NTP server. We use this technology to smoothly handle leap seconds with no disruptive events. The [Network Time Protocol](https:\/\/en.wikipedia.org\/wiki\/Network_Time_Protocol) (NTP) is used by hundreds of millions of computers and devices to synchronize their clocks over the Internet. If your computer sets its own clock, it likely uses NTP.","responses":{"200":{"description":"Health Time","schema":{"$ref":"#\/definitions\/healthTime"}}},"x-appwrite":{"method":"getTime","weight":125,"cookies":false,"type":"","demo":"health\/get-time.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-time.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/locale":{"get":{"summary":"Get user locale","operationId":"localeGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"Get the current user location based on IP. Returns an object with user country code, country name, continent name, continent code, ip address and suggested currency. You can use the locale header to get the data in a supported language.\n\n([IP Geolocation by DB-IP](https:\/\/db-ip.com))","responses":{"200":{"description":"Locale","schema":{"$ref":"#\/definitions\/locale"}}},"x-appwrite":{"method":"get","weight":111,"cookies":false,"type":"","demo":"locale\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-locale.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/localed","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}]}},"\/locale\/codes":{"get":{"summary":"List Locale Codes","operationId":"localeListCodes","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all locale codes in [ISO 639-1](https:\/\/en.wikipedia.org\/wiki\/List_of_ISO_639-1_codes).","responses":{"200":{"description":"Locale codes list","schema":{"$ref":"#\/definitions\/localeCodeList"}}},"x-appwrite":{"method":"listCodes","weight":112,"cookies":false,"type":"","demo":"locale\/list-codes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-locale-codes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/localeCode","offline-key":"current","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}]}},"\/locale\/continents":{"get":{"summary":"List continents","operationId":"localeListContinents","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","schema":{"$ref":"#\/definitions\/continentList"}}},"x-appwrite":{"method":"listContinents","weight":116,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/continents","offline-key":"","offline-response-key":"code","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List countries","operationId":"localeListCountries","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountries","weight":113,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/countries","offline-key":"","offline-response-key":"code","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU countries","operationId":"localeListCountriesEU","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountriesEU","weight":114,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/countries\/eu","offline-key":"","offline-response-key":"code","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List countries phone codes","operationId":"localeListCountriesPhones","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","schema":{"$ref":"#\/definitions\/phoneList"}}},"x-appwrite":{"method":"listCountriesPhones","weight":115,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/countries\/phones","offline-key":"","offline-response-key":"countryCode","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List currencies","operationId":"localeListCurrencies","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","schema":{"$ref":"#\/definitions\/currencyList"}}},"x-appwrite":{"method":"listCurrencies","weight":117,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/currencies","offline-key":"","offline-response-key":"code","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List languages","operationId":"localeListLanguages","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","schema":{"$ref":"#\/definitions\/languageList"}}},"x-appwrite":{"method":"listLanguages","weight":118,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/locale\/languages","offline-key":"","offline-response-key":"code","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}]}},"\/messaging\/messages":{"get":{"summary":"List messages","operationId":"messagingListMessages","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Message list","schema":{"$ref":"#\/definitions\/messageList"}}},"x-appwrite":{"method":"listMessages","weight":363,"cookies":false,"type":"","demo":"messaging\/list-messages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-messages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: scheduledAt, deliveredAt, deliveredTotal, status, description, providerType","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]}},"\/messaging\/messages\/email":{"post":{"summary":"Create an email.","operationId":"messagingCreateEmail","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Message","schema":{"$ref":"#\/definitions\/message"}}},"x-appwrite":{"method":"createEmail","weight":360,"cookies":false,"type":"","demo":"messaging\/create-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"messageId":{"type":"string","description":"Message ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[MESSAGE_ID]"},"subject":{"type":"string","description":"Email Subject.","default":null,"x-example":"[SUBJECT]"},"content":{"type":"string","description":"Email Content.","default":null,"x-example":"[CONTENT]"},"topics":{"type":"array","description":"List of Topic IDs.","default":[],"x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","default":[],"x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","default":[],"x-example":null,"items":{"type":"string"}},"cc":{"type":"array","description":"Array of target IDs to be added as CC.","default":[],"x-example":null,"items":{"type":"string"}},"bcc":{"type":"array","description":"Array of target IDs to be added as BCC.","default":[],"x-example":null,"items":{"type":"string"}},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","default":"draft","x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":"MessageStatus","x-enum-keys":[]},"html":{"type":"boolean","description":"Is content of type HTML","default":false,"x-example":false},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","default":null,"x-example":null}},"required":["messageId","subject","content"]}}]}},"\/messaging\/messages\/email\/{messageId}":{"patch":{"summary":"Update an email.","operationId":"messagingUpdateEmail","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Message","schema":{"$ref":"#\/definitions\/message"}}},"x-appwrite":{"method":"updateEmail","weight":367,"cookies":false,"type":"","demo":"messaging\/update-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"type":"string","x-example":"[MESSAGE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"topics":{"type":"array","description":"List of Topic IDs.","default":null,"x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","default":null,"x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","default":null,"x-example":null,"items":{"type":"string"}},"subject":{"type":"string","description":"Email Subject.","default":null,"x-example":"[SUBJECT]"},"content":{"type":"string","description":"Email Content.","default":null,"x-example":"[CONTENT]"},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","default":null,"x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":"MessageStatus","x-enum-keys":[]},"html":{"type":"boolean","description":"Is content of type HTML","default":null,"x-example":false},"cc":{"type":"array","description":"Array of target IDs to be added as CC.","default":null,"x-example":null,"items":{"type":"string"}},"bcc":{"type":"array","description":"Array of target IDs to be added as BCC.","default":null,"x-example":null,"items":{"type":"string"}},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","default":null,"x-example":null}}}}]}},"\/messaging\/messages\/push":{"post":{"summary":"Create a push notification.","operationId":"messagingCreatePush","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Message","schema":{"$ref":"#\/definitions\/message"}}},"x-appwrite":{"method":"createPush","weight":362,"cookies":false,"type":"","demo":"messaging\/create-push.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-push-notification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"messageId":{"type":"string","description":"Message ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[MESSAGE_ID]"},"title":{"type":"string","description":"Title for push notification.","default":null,"x-example":"[TITLE]"},"body":{"type":"string","description":"Body for push notification.","default":null,"x-example":"[BODY]"},"topics":{"type":"array","description":"List of Topic IDs.","default":[],"x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","default":[],"x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","default":[],"x-example":null,"items":{"type":"string"}},"data":{"type":"object","description":"Additional Data for push notification.","default":{},"x-example":"{}"},"action":{"type":"string","description":"Action for push notification.","default":"","x-example":"[ACTION]"},"icon":{"type":"string","description":"Icon for push notification. Available only for Android and Web Platform.","default":"","x-example":"[ICON]"},"sound":{"type":"string","description":"Sound for push notification. Available only for Android and IOS Platform.","default":"","x-example":"[SOUND]"},"color":{"type":"string","description":"Color for push notification. Available only for Android Platform.","default":"","x-example":"[COLOR]"},"tag":{"type":"string","description":"Tag for push notification. Available only for Android Platform.","default":"","x-example":"[TAG]"},"badge":{"type":"string","description":"Badge for push notification. Available only for IOS Platform.","default":"","x-example":"[BADGE]"},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","default":"draft","x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":"MessageStatus","x-enum-keys":[]},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","default":null,"x-example":null}},"required":["messageId","title","body"]}}]}},"\/messaging\/messages\/push\/{messageId}":{"patch":{"summary":"Update a push notification.","operationId":"messagingUpdatePush","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Message","schema":{"$ref":"#\/definitions\/message"}}},"x-appwrite":{"method":"updatePush","weight":369,"cookies":false,"type":"","demo":"messaging\/update-push.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-push-notification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"type":"string","x-example":"[MESSAGE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"topics":{"type":"array","description":"List of Topic IDs.","default":null,"x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","default":null,"x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","default":null,"x-example":null,"items":{"type":"string"}},"title":{"type":"string","description":"Title for push notification.","default":null,"x-example":"[TITLE]"},"body":{"type":"string","description":"Body for push notification.","default":null,"x-example":"[BODY]"},"data":{"type":"object","description":"Additional Data for push notification.","default":{},"x-example":"{}"},"action":{"type":"string","description":"Action for push notification.","default":null,"x-example":"[ACTION]"},"icon":{"type":"string","description":"Icon for push notification. Available only for Android and Web platforms.","default":null,"x-example":"[ICON]"},"sound":{"type":"string","description":"Sound for push notification. Available only for Android and iOS platforms.","default":null,"x-example":"[SOUND]"},"color":{"type":"string","description":"Color for push notification. Available only for Android platforms.","default":null,"x-example":"[COLOR]"},"tag":{"type":"string","description":"Tag for push notification. Available only for Android platforms.","default":null,"x-example":"[TAG]"},"badge":{"type":"integer","description":"Badge for push notification. Available only for iOS platforms.","default":null,"x-example":null},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","default":null,"x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":"MessageStatus","x-enum-keys":[]},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","default":null,"x-example":null}}}}]}},"\/messaging\/messages\/sms":{"post":{"summary":"Create an SMS.","operationId":"messagingCreateSMS","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Message","schema":{"$ref":"#\/definitions\/message"}}},"x-appwrite":{"method":"createSMS","weight":361,"cookies":false,"type":"","demo":"messaging\/create-s-m-s.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-sms.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"messageId":{"type":"string","description":"Message ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[MESSAGE_ID]"},"content":{"type":"string","description":"SMS Content.","default":null,"x-example":"[CONTENT]"},"topics":{"type":"array","description":"List of Topic IDs.","default":[],"x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","default":[],"x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","default":[],"x-example":null,"items":{"type":"string"}},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","default":"draft","x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":"MessageStatus","x-enum-keys":[]},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","default":null,"x-example":null}},"required":["messageId","content"]}}]}},"\/messaging\/messages\/sms\/{messageId}":{"patch":{"summary":"Update an SMS.","operationId":"messagingUpdateSMS","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Message","schema":{"$ref":"#\/definitions\/message"}}},"x-appwrite":{"method":"updateSMS","weight":368,"cookies":false,"type":"","demo":"messaging\/update-s-m-s.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"type":"string","x-example":"[MESSAGE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"topics":{"type":"array","description":"List of Topic IDs.","default":null,"x-example":null,"items":{"type":"string"}},"users":{"type":"array","description":"List of User IDs.","default":null,"x-example":null,"items":{"type":"string"}},"targets":{"type":"array","description":"List of Targets IDs.","default":null,"x-example":null,"items":{"type":"string"}},"content":{"type":"string","description":"Email Content.","default":null,"x-example":"[CONTENT]"},"status":{"type":"string","description":"Message Status. Value must be one of: draft, scheduled, processing.","default":null,"x-example":"draft","enum":["draft","scheduled","processing"],"x-enum-name":"MessageStatus","x-enum-keys":[]},"scheduledAt":{"type":"string","description":"Scheduled delivery time for message in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future.","default":null,"x-example":null}}}}]}},"\/messaging\/messages\/{messageId}":{"get":{"summary":"Get a message","operationId":"messagingGetMessage","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Message","schema":{"$ref":"#\/definitions\/message"}}},"x-appwrite":{"method":"getMessage","weight":366,"cookies":false,"type":"","demo":"messaging\/get-message.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/get-message.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"type":"string","x-example":"[MESSAGE_ID]","in":"path"}]},"delete":{"summary":"Delete a message","operationId":"messagingDelete","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":370,"cookies":false,"type":"","demo":"messaging\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-message.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"type":"string","x-example":"[MESSAGE_ID]","in":"path"}]}},"\/messaging\/messages\/{messageId}\/logs":{"get":{"summary":"List message logs","operationId":"messagingListMessageLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listMessageLogs","weight":364,"cookies":false,"type":"","demo":"messaging\/list-message-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/messages\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"type":"string","x-example":"[MESSAGE_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/messaging\/messages\/{messageId}\/targets":{"get":{"summary":"List message targets","operationId":"messagingListTargets","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"List the targets associated with a message as set via the targets attribute.","responses":{"200":{"description":"Target list","schema":{"$ref":"#\/definitions\/targetList"}}},"x-appwrite":{"method":"listTargets","weight":365,"cookies":false,"type":"","demo":"messaging\/list-targets.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-message-targets.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"messages.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"messageId","description":"Message ID.","required":true,"type":"string","x-example":"[MESSAGE_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, providerId, identifier, providerType","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/messaging\/providers":{"get":{"summary":"List providers","operationId":"messagingListProviders","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider list","schema":{"$ref":"#\/definitions\/providerList"}}},"x-appwrite":{"method":"listProviders","weight":335,"cookies":false,"type":"","demo":"messaging\/list-providers.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-providers.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, provider, type, enabled","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]}},"\/messaging\/providers\/apns":{"post":{"summary":"Create APNS provider","operationId":"messagingCreateAPNSProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createAPNSProvider","weight":334,"cookies":false,"type":"","demo":"messaging\/create-a-p-n-s-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-apns-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"authKey":{"type":"string","description":"APNS authentication key.","default":"","x-example":"[AUTH_KEY]"},"authKeyId":{"type":"string","description":"APNS authentication key ID.","default":"","x-example":"[AUTH_KEY_ID]"},"teamId":{"type":"string","description":"APNS team ID.","default":"","x-example":"[TEAM_ID]"},"bundleId":{"type":"string","description":"APNS bundle ID.","default":"","x-example":"[BUNDLE_ID]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name"]}}]}},"\/messaging\/providers\/apns\/{providerId}":{"patch":{"summary":"Update APNS provider","operationId":"messagingUpdateAPNSProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateAPNSProvider","weight":347,"cookies":false,"type":"","demo":"messaging\/update-a-p-n-s-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-apns-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"authKey":{"type":"string","description":"APNS authentication key.","default":"","x-example":"[AUTH_KEY]"},"authKeyId":{"type":"string","description":"APNS authentication key ID.","default":"","x-example":"[AUTH_KEY_ID]"},"teamId":{"type":"string","description":"APNS team ID.","default":"","x-example":"[TEAM_ID]"},"bundleId":{"type":"string","description":"APNS bundle ID.","default":"","x-example":"[BUNDLE_ID]"}}}}]}},"\/messaging\/providers\/fcm":{"post":{"summary":"Create FCM provider","operationId":"messagingCreateFCMProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createFCMProvider","weight":333,"cookies":false,"type":"","demo":"messaging\/create-f-c-m-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-fcm-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"serviceAccountJSON":{"type":"object","description":"FCM service account JSON.","default":{},"x-example":"{}"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name"]}}]}},"\/messaging\/providers\/fcm\/{providerId}":{"patch":{"summary":"Update FCM provider","operationId":"messagingUpdateFCMProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateFCMProvider","weight":346,"cookies":false,"type":"","demo":"messaging\/update-f-c-m-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-fcm-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"serviceAccountJSON":{"type":"object","description":"FCM service account JSON.","default":{},"x-example":"{}"}}}}]}},"\/messaging\/providers\/mailgun":{"post":{"summary":"Create Mailgun provider","operationId":"messagingCreateMailgunProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createMailgunProvider","weight":325,"cookies":false,"type":"","demo":"messaging\/create-mailgun-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-mailgun-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"apiKey":{"type":"string","description":"Mailgun API Key.","default":"","x-example":"[API_KEY]"},"domain":{"type":"string","description":"Mailgun Domain.","default":"","x-example":"[DOMAIN]"},"isEuRegion":{"type":"boolean","description":"Set as EU region.","default":null,"x-example":false},"fromName":{"type":"string","description":"Sender Name.","default":"","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","default":"","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the reply to field for the mail. Default value is sender name. Reply to name must have reply to email as well.","default":"","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the reply to field for the mail. Default value is sender email. Reply to email must have reply to name as well.","default":"","x-example":"email@example.com"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name"]}}]}},"\/messaging\/providers\/mailgun\/{providerId}":{"patch":{"summary":"Update Mailgun provider","operationId":"messagingUpdateMailgunProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateMailgunProvider","weight":338,"cookies":false,"type":"","demo":"messaging\/update-mailgun-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-mailgun-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"apiKey":{"type":"string","description":"Mailgun API Key.","default":"","x-example":"[API_KEY]"},"domain":{"type":"string","description":"Mailgun Domain.","default":"","x-example":"[DOMAIN]"},"isEuRegion":{"type":"boolean","description":"Set as EU region.","default":null,"x-example":false},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"fromName":{"type":"string","description":"Sender Name.","default":"","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","default":"","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the reply to field for the mail. Default value is sender name.","default":"","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the reply to field for the mail. Default value is sender email.","default":"","x-example":"[REPLY_TO_EMAIL]"}}}}]}},"\/messaging\/providers\/msg91":{"post":{"summary":"Create Msg91 provider","operationId":"messagingCreateMsg91Provider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createMsg91Provider","weight":328,"cookies":false,"type":"","demo":"messaging\/create-msg91provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-msg91-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":"","x-example":"+12065550100"},"senderId":{"type":"string","description":"Msg91 Sender ID.","default":"","x-example":"[SENDER_ID]"},"authKey":{"type":"string","description":"Msg91 Auth Key.","default":"","x-example":"[AUTH_KEY]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name"]}}]}},"\/messaging\/providers\/msg91\/{providerId}":{"patch":{"summary":"Update Msg91 provider","operationId":"messagingUpdateMsg91Provider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateMsg91Provider","weight":341,"cookies":false,"type":"","demo":"messaging\/update-msg91provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-msg91-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"senderId":{"type":"string","description":"Msg91 Sender ID.","default":"","x-example":"[SENDER_ID]"},"authKey":{"type":"string","description":"Msg91 Auth Key.","default":"","x-example":"[AUTH_KEY]"},"from":{"type":"string","description":"Sender number.","default":"","x-example":"[FROM]"}}}}]}},"\/messaging\/providers\/sendgrid":{"post":{"summary":"Create Sendgrid provider","operationId":"messagingCreateSendgridProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createSendgridProvider","weight":326,"cookies":false,"type":"","demo":"messaging\/create-sendgrid-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-sengrid-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"apiKey":{"type":"string","description":"Sendgrid API key.","default":"","x-example":"[API_KEY]"},"fromName":{"type":"string","description":"Sender Name.","default":"","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","default":"","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the reply to field for the mail. Default value is sender name.","default":"","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the reply to field for the mail. Default value is sender email.","default":"","x-example":"email@example.com"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name"]}}]}},"\/messaging\/providers\/sendgrid\/{providerId}":{"patch":{"summary":"Update Sendgrid provider","operationId":"messagingUpdateSendgridProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateSendgridProvider","weight":339,"cookies":false,"type":"","demo":"messaging\/update-sendgrid-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-sendgrid-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"apiKey":{"type":"string","description":"Sendgrid API key.","default":"","x-example":"[API_KEY]"},"fromName":{"type":"string","description":"Sender Name.","default":"","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","default":"","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the Reply To field for the mail. Default value is Sender Name.","default":"","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the Reply To field for the mail. Default value is Sender Email.","default":"","x-example":"[REPLY_TO_EMAIL]"}}}}]}},"\/messaging\/providers\/smtp":{"post":{"summary":"Create SMTP provider","operationId":"messagingCreateSMTPProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createSMTPProvider","weight":327,"cookies":false,"type":"","demo":"messaging\/create-s-m-t-p-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-smtp-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"host":{"type":"string","description":"SMTP hosts. Either a single hostname or multiple semicolon-delimited hostnames. You can also specify a different port for each host by using this format: [hostname:port] (e.g. \"smtp1.example.com:25;smtp2.example.com\"). You can also specify encryption type, for example: (e.g. \"tls:\/\/smtp1.example.com:587;ssl:\/\/smtp2.example.com:465\"). Hosts will be tried in order.","default":null,"x-example":"[HOST]"},"port":{"type":"integer","description":"The default SMTP server port.","default":587,"x-example":1},"username":{"type":"string","description":"Authentication username.","default":"","x-example":"[USERNAME]"},"password":{"type":"string","description":"Authentication password.","default":"","x-example":"[PASSWORD]"},"encryption":{"type":"string","description":"Encryption type. Can be omitted, 'ssl', or 'tls'","default":"","x-example":"none","enum":["none","ssl","tls"],"x-enum-name":"SMTPEncryption","x-enum-keys":[]},"autoTLS":{"type":"boolean","description":"Enable SMTP AutoTLS feature.","default":true,"x-example":false},"mailer":{"type":"string","description":"The value to use for the X-Mailer header.","default":"","x-example":"[MAILER]"},"fromName":{"type":"string","description":"Sender Name.","default":"","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","default":"","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the reply to field for the mail. Default value is sender name.","default":"","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the reply to field for the mail. Default value is sender email.","default":"","x-example":"email@example.com"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name","host"]}}]}},"\/messaging\/providers\/smtp\/{providerId}":{"patch":{"summary":"Update SMTP provider","operationId":"messagingUpdateSMTPProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateSMTPProvider","weight":340,"cookies":false,"type":"","demo":"messaging\/update-s-m-t-p-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-smtp-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"host":{"type":"string","description":"SMTP hosts. Either a single hostname or multiple semicolon-delimited hostnames. You can also specify a different port for each host by using this format: [hostname:port] (e.g. \"smtp1.example.com:25;smtp2.example.com\"). You can also specify encryption type, for example: (e.g. \"tls:\/\/smtp1.example.com:587;ssl:\/\/smtp2.example.com:465\"). Hosts will be tried in order.","default":"","x-example":"[HOST]"},"port":{"type":"integer","description":"SMTP port.","default":null,"x-example":1},"username":{"type":"string","description":"Authentication username.","default":"","x-example":"[USERNAME]"},"password":{"type":"string","description":"Authentication password.","default":"","x-example":"[PASSWORD]"},"encryption":{"type":"string","description":"Encryption type. Can be 'ssl' or 'tls'","default":"","x-example":"none","enum":["none","ssl","tls"],"x-enum-name":"SMTPEncryption","x-enum-keys":[]},"autoTLS":{"type":"boolean","description":"Enable SMTP AutoTLS feature.","default":null,"x-example":false},"mailer":{"type":"string","description":"The value to use for the X-Mailer header.","default":"","x-example":"[MAILER]"},"fromName":{"type":"string","description":"Sender Name.","default":"","x-example":"[FROM_NAME]"},"fromEmail":{"type":"string","description":"Sender email address.","default":"","x-example":"email@example.com"},"replyToName":{"type":"string","description":"Name set in the Reply To field for the mail. Default value is Sender Name.","default":"","x-example":"[REPLY_TO_NAME]"},"replyToEmail":{"type":"string","description":"Email set in the Reply To field for the mail. Default value is Sender Email.","default":"","x-example":"[REPLY_TO_EMAIL]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}}}}]}},"\/messaging\/providers\/telesign":{"post":{"summary":"Create Telesign provider","operationId":"messagingCreateTelesignProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createTelesignProvider","weight":329,"cookies":false,"type":"","demo":"messaging\/create-telesign-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-telesign-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":"","x-example":"+12065550100"},"customerId":{"type":"string","description":"Telesign customer ID.","default":"","x-example":"[CUSTOMER_ID]"},"apiKey":{"type":"string","description":"Telesign API key.","default":"","x-example":"[API_KEY]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name"]}}]}},"\/messaging\/providers\/telesign\/{providerId}":{"patch":{"summary":"Update Telesign provider","operationId":"messagingUpdateTelesignProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateTelesignProvider","weight":342,"cookies":false,"type":"","demo":"messaging\/update-telesign-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-telesign-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"customerId":{"type":"string","description":"Telesign customer ID.","default":"","x-example":"[CUSTOMER_ID]"},"apiKey":{"type":"string","description":"Telesign API key.","default":"","x-example":"[API_KEY]"},"from":{"type":"string","description":"Sender number.","default":"","x-example":"[FROM]"}}}}]}},"\/messaging\/providers\/textmagic":{"post":{"summary":"Create Textmagic provider","operationId":"messagingCreateTextmagicProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createTextmagicProvider","weight":330,"cookies":false,"type":"","demo":"messaging\/create-textmagic-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-textmagic-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":"","x-example":"+12065550100"},"username":{"type":"string","description":"Textmagic username.","default":"","x-example":"[USERNAME]"},"apiKey":{"type":"string","description":"Textmagic apiKey.","default":"","x-example":"[API_KEY]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name"]}}]}},"\/messaging\/providers\/textmagic\/{providerId}":{"patch":{"summary":"Update Textmagic provider","operationId":"messagingUpdateTextmagicProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateTextmagicProvider","weight":343,"cookies":false,"type":"","demo":"messaging\/update-textmagic-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-textmagic-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"username":{"type":"string","description":"Textmagic username.","default":"","x-example":"[USERNAME]"},"apiKey":{"type":"string","description":"Textmagic apiKey.","default":"","x-example":"[API_KEY]"},"from":{"type":"string","description":"Sender number.","default":"","x-example":"[FROM]"}}}}]}},"\/messaging\/providers\/twilio":{"post":{"summary":"Create Twilio provider","operationId":"messagingCreateTwilioProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createTwilioProvider","weight":331,"cookies":false,"type":"","demo":"messaging\/create-twilio-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-twilio-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":"","x-example":"+12065550100"},"accountSid":{"type":"string","description":"Twilio account secret ID.","default":"","x-example":"[ACCOUNT_SID]"},"authToken":{"type":"string","description":"Twilio authentication token.","default":"","x-example":"[AUTH_TOKEN]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name"]}}]}},"\/messaging\/providers\/twilio\/{providerId}":{"patch":{"summary":"Update Twilio provider","operationId":"messagingUpdateTwilioProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateTwilioProvider","weight":344,"cookies":false,"type":"","demo":"messaging\/update-twilio-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-twilio-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"accountSid":{"type":"string","description":"Twilio account secret ID.","default":"","x-example":"[ACCOUNT_SID]"},"authToken":{"type":"string","description":"Twilio authentication token.","default":"","x-example":"[AUTH_TOKEN]"},"from":{"type":"string","description":"Sender number.","default":"","x-example":"[FROM]"}}}}]}},"\/messaging\/providers\/vonage":{"post":{"summary":"Create Vonage provider","operationId":"messagingCreateVonageProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"createVonageProvider","weight":332,"cookies":false,"type":"","demo":"messaging\/create-vonage-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-vonage-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"providerId":{"type":"string","description":"Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Provider name.","default":null,"x-example":"[NAME]"},"from":{"type":"string","description":"Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":"","x-example":"+12065550100"},"apiKey":{"type":"string","description":"Vonage API key.","default":"","x-example":"[API_KEY]"},"apiSecret":{"type":"string","description":"Vonage API secret.","default":"","x-example":"[API_SECRET]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false}},"required":["providerId","name"]}}]}},"\/messaging\/providers\/vonage\/{providerId}":{"patch":{"summary":"Update Vonage provider","operationId":"messagingUpdateVonageProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"updateVonageProvider","weight":345,"cookies":false,"type":"","demo":"messaging\/update-vonage-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-vonage-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Provider name.","default":"","x-example":"[NAME]"},"enabled":{"type":"boolean","description":"Set as enabled.","default":null,"x-example":false},"apiKey":{"type":"string","description":"Vonage API key.","default":"","x-example":"[API_KEY]"},"apiSecret":{"type":"string","description":"Vonage API secret.","default":"","x-example":"[API_SECRET]"},"from":{"type":"string","description":"Sender number.","default":"","x-example":"[FROM]"}}}}]}},"\/messaging\/providers\/{providerId}":{"get":{"summary":"Get provider","operationId":"messagingGetProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Provider","schema":{"$ref":"#\/definitions\/provider"}}},"x-appwrite":{"method":"getProvider","weight":337,"cookies":false,"type":"","demo":"messaging\/get-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/get-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"}]},"delete":{"summary":"Delete provider","operationId":"messagingDeleteProvider","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteProvider","weight":348,"cookies":false,"type":"","demo":"messaging\/delete-provider.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-provider.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"}]}},"\/messaging\/providers\/{providerId}\/logs":{"get":{"summary":"List provider logs","operationId":"messagingListProviderLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listProviderLogs","weight":336,"cookies":false,"type":"","demo":"messaging\/list-provider-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/providers\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"providers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"providerId","description":"Provider ID.","required":true,"type":"string","x-example":"[PROVIDER_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/messaging\/subscribers\/{subscriberId}\/logs":{"get":{"summary":"List subscriber logs","operationId":"messagingListSubscriberLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listSubscriberLogs","weight":357,"cookies":false,"type":"","demo":"messaging\/list-subscriber-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/subscribers\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"subscriberId","description":"Subscriber ID.","required":true,"type":"string","x-example":"[SUBSCRIBER_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/messaging\/topics":{"get":{"summary":"List topics.","operationId":"messagingListTopics","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Topic list","schema":{"$ref":"#\/definitions\/topicList"}}},"x-appwrite":{"method":"listTopics","weight":350,"cookies":false,"type":"","demo":"messaging\/list-topics.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-topics.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, description, emailTotal, smsTotal, pushTotal","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create a topic.","operationId":"messagingCreateTopic","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Topic","schema":{"$ref":"#\/definitions\/topic"}}},"x-appwrite":{"method":"createTopic","weight":349,"cookies":false,"type":"","demo":"messaging\/create-topic.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-topic.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"topicId":{"type":"string","description":"Topic ID. Choose a custom Topic ID or a new Topic ID.","default":null,"x-example":"[TOPIC_ID]"},"name":{"type":"string","description":"Topic Name.","default":null,"x-example":"[NAME]"},"subscribe":{"type":"array","description":"An array of role strings with subscribe permission. By default all users are granted with any subscribe permission. [learn more about roles](https:\/\/appwrite.io\/docs\/permissions#permission-roles). Maximum of 100 roles are allowed, each 64 characters long.","default":["users"],"x-example":"[\"any\"]","items":{"type":"string"}}},"required":["topicId","name"]}}]}},"\/messaging\/topics\/{topicId}":{"get":{"summary":"Get a topic.","operationId":"messagingGetTopic","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Topic","schema":{"$ref":"#\/definitions\/topic"}}},"x-appwrite":{"method":"getTopic","weight":352,"cookies":false,"type":"","demo":"messaging\/get-topic.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/get-topic.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID.","required":true,"type":"string","x-example":"[TOPIC_ID]","in":"path"}]},"patch":{"summary":"Update a topic.","operationId":"messagingUpdateTopic","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Topic","schema":{"$ref":"#\/definitions\/topic"}}},"x-appwrite":{"method":"updateTopic","weight":353,"cookies":false,"type":"","demo":"messaging\/update-topic.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/update-topic.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID.","required":true,"type":"string","x-example":"[TOPIC_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Topic Name.","default":"","x-example":"[NAME]"}}}}]},"delete":{"summary":"Delete a topic.","operationId":"messagingDeleteTopic","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteTopic","weight":354,"cookies":false,"type":"","demo":"messaging\/delete-topic.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-topic.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.write","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID.","required":true,"type":"string","x-example":"[TOPIC_ID]","in":"path"}]}},"\/messaging\/topics\/{topicId}\/logs":{"get":{"summary":"List topic logs","operationId":"messagingListTopicLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listTopicLogs","weight":351,"cookies":false,"type":"","demo":"messaging\/list-topic-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/topics\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"topics.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID.","required":true,"type":"string","x-example":"[TOPIC_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/messaging\/topics\/{topicId}\/subscribers":{"get":{"summary":"List subscribers.","operationId":"messagingListSubscribers","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Subscriber list","schema":{"$ref":"#\/definitions\/subscriberList"}}},"x-appwrite":{"method":"listSubscribers","weight":356,"cookies":false,"type":"","demo":"messaging\/list-subscribers.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/list-subscribers.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID subscribed to.","required":true,"type":"string","x-example":"[TOPIC_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, provider, type, enabled","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create a subscriber.","operationId":"messagingCreateSubscriber","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"201":{"description":"Subscriber","schema":{"$ref":"#\/definitions\/subscriber"}}},"x-appwrite":{"method":"createSubscriber","weight":355,"cookies":false,"type":"","demo":"messaging\/create-subscriber.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/create-subscriber.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.write","platforms":["server","client","console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[],"Session":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID to subscribe to.","required":true,"type":"string","x-example":"[TOPIC_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"subscriberId":{"type":"string","description":"Subscriber ID. Choose a custom Subscriber ID or a new Subscriber ID.","default":null,"x-example":"[SUBSCRIBER_ID]"},"targetId":{"type":"string","description":"Target ID. The target ID to link to the specified Topic ID.","default":null,"x-example":"[TARGET_ID]"}},"required":["subscriberId","targetId"]}}]}},"\/messaging\/topics\/{topicId}\/subscribers\/{subscriberId}":{"get":{"summary":"Get a subscriber.","operationId":"messagingGetSubscriber","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"200":{"description":"Subscriber","schema":{"$ref":"#\/definitions\/subscriber"}}},"x-appwrite":{"method":"getSubscriber","weight":358,"cookies":false,"type":"","demo":"messaging\/get-subscriber.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/get-subscriber.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.read","platforms":["console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID subscribed to.","required":true,"type":"string","x-example":"[TOPIC_ID]","in":"path"},{"name":"subscriberId","description":"Subscriber ID.","required":true,"type":"string","x-example":"[SUBSCRIBER_ID]","in":"path"}]},"delete":{"summary":"Delete a subscriber.","operationId":"messagingDeleteSubscriber","consumes":["application\/json"],"produces":["application\/json"],"tags":["messaging"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSubscriber","weight":359,"cookies":false,"type":"","demo":"messaging\/delete-subscriber.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/messaging\/delete-subscriber.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"subscribers.write","platforms":["server","client","console","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[],"Session":[],"Key":[]}],"parameters":[{"name":"topicId","description":"Topic ID. The topic ID subscribed to.","required":true,"type":"string","x-example":"[TOPIC_ID]","in":"path"},{"name":"subscriberId","description":"Subscriber ID.","required":true,"type":"string","x-example":"[SUBSCRIBER_ID]","in":"path"}]}},"\/storage\/buckets":{"get":{"summary":"List buckets","operationId":"storageListBuckets","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a list of all the storage buckets. You can use the query params to filter your results.","responses":{"200":{"description":"Buckets List","schema":{"$ref":"#\/definitions\/bucketList"}}},"x-appwrite":{"method":"listBuckets","weight":188,"cookies":false,"type":"","demo":"storage\/list-buckets.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/list-buckets.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: enabled, name, fileSecurity, maximumFileSize, encryption, antivirus","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create bucket","operationId":"storageCreateBucket","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Create a new storage bucket.","responses":{"201":{"description":"Bucket","schema":{"$ref":"#\/definitions\/bucket"}}},"x-appwrite":{"method":"createBucket","weight":187,"cookies":false,"type":"","demo":"storage\/create-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"bucketId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, no user is granted with any permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":false,"x-example":false},"enabled":{"type":"boolean","description":"Is bucket enabled? When set to 'disabled', users cannot access the files in this bucket but Server SDKs with and API key can still access the bucket. No files are lost when this is toggled.","default":true,"x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB.","default":30000000,"x-example":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","default":[],"x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","default":"none","x-example":"none","enum":["none","gzip","zstd"],"x-enum-name":null,"x-enum-keys":[]},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","default":true,"x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","default":true,"x-example":false}},"required":["bucketId","name"]}}]}},"\/storage\/buckets\/{bucketId}":{"get":{"summary":"Get bucket","operationId":"storageGetBucket","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a storage bucket by its unique ID. This endpoint response returns a JSON object with the storage bucket metadata.","responses":{"200":{"description":"Bucket","schema":{"$ref":"#\/definitions\/bucket"}}},"x-appwrite":{"method":"getBucket","weight":189,"cookies":false,"type":"","demo":"storage\/get-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"bucketId","description":"Bucket unique ID.","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"}]},"put":{"summary":"Update bucket","operationId":"storageUpdateBucket","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Update a storage bucket by its unique ID.","responses":{"200":{"description":"Bucket","schema":{"$ref":"#\/definitions\/bucket"}}},"x-appwrite":{"method":"updateBucket","weight":190,"cookies":false,"type":"","demo":"storage\/update-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"bucketId","description":"Bucket unique ID.","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Bucket name","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":false,"x-example":false},"enabled":{"type":"boolean","description":"Is bucket enabled? When set to 'disabled', users cannot access the files in this bucket but Server SDKs with and API key can still access the bucket. No files are lost when this is toggled.","default":true,"x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB.","default":null,"x-example":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","default":[],"x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","default":"none","x-example":"none","enum":["none","gzip","zstd"],"x-enum-name":null,"x-enum-keys":[]},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","default":true,"x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","default":true,"x-example":false}},"required":["name"]}}]},"delete":{"summary":"Delete bucket","operationId":"storageDeleteBucket","consumes":["application\/json"],"produces":[],"tags":["storage"],"description":"Delete a storage bucket by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteBucket","weight":191,"cookies":false,"type":"","demo":"storage\/delete-bucket.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-bucket.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"buckets.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"bucketId","description":"Bucket unique ID.","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files":{"get":{"summary":"List files","operationId":"storageListFiles","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a list of all the user files. You can use the query params to filter your results.","responses":{"200":{"description":"Files List","schema":{"$ref":"#\/definitions\/fileList"}}},"x-appwrite":{"method":"listFiles","weight":193,"cookies":false,"type":"","demo":"storage\/list-files.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/list-files.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create file","operationId":"storageCreateFile","consumes":["multipart\/form-data"],"produces":["application\/json"],"tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"createFile","weight":192,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","required":true,"x-upload-id":true,"type":"string","x-example":"[FILE_ID]","in":"formData"},{"name":"file","description":"Binary file. Appwrite SDKs provide helpers to handle file input. [Learn about file input](https:\/\/appwrite.io\/docs\/storage#file-input).","required":true,"type":"file","in":"formData"},{"name":"permissions","description":"An array of permission strings. By default, only the current user is granted all permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"x-example":"[\"read(\"any\")\"]","in":"formData"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get file","operationId":"storageGetFile","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"getFile","weight":194,"cookies":false,"type":"","demo":"storage\/get-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID.","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"}]},"put":{"summary":"Update file","operationId":"storageUpdateFile","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Update a file by its unique ID. Only users with write permissions have access to update this resource.","responses":{"200":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"updateFile","weight":198,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File unique ID.","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Name of the file","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission string. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","consumes":["application\/json"],"produces":[],"tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":199,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID.","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/download":{"get":{"summary":"Get file for download","operationId":"storageGetFileDownload","consumes":["application\/json"],"produces":["*\/*"],"tags":["storage"],"description":"Get a file content by its unique ID. The endpoint response return with a 'Content-Disposition: attachment' header that tells the browser to start downloading the file to user downloads directory.","responses":{"200":{"description":"File","schema":{"type":"file"}}},"x-appwrite":{"method":"getFileDownload","weight":196,"cookies":false,"type":"location","demo":"storage\/get-file-download.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-download.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID.","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/preview":{"get":{"summary":"Get file preview","operationId":"storageGetFilePreview","consumes":["application\/json"],"produces":["image\/*"],"tags":["storage"],"description":"Get a file preview image. Currently, this method supports preview for image files (jpg, png, and gif), other supported formats, like pdf, docs, slides, and spreadsheets, will return the file icon image. You can also pass query string arguments for cutting and resizing your preview image. Preview is supported only for image files smaller than 10MB.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFilePreview","weight":195,"cookies":false,"type":"location","demo":"storage\/get-file-preview.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-preview.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"},{"name":"width","description":"Resize preview image width, Pass an integer between 0 to 4000.","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 4000.","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"gravity","description":"Image crop gravity. Can be one of center,top-left,top,top-right,left,right,bottom-left,bottom,bottom-right","required":false,"type":"string","x-example":"center","enum":["center","top-left","top","top-right","left","right","bottom-left","bottom","bottom-right"],"x-enum-name":"ImageGravity","x-enum-keys":[],"default":"center","in":"query"},{"name":"quality","description":"Preview image quality. Pass an integer between 0 to 100. Defaults to 100.","required":false,"type":"integer","format":"int32","x-example":0,"default":100,"in":"query"},{"name":"borderWidth","description":"Preview image border in pixels. Pass an integer between 0 to 100. Defaults to 0.","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"borderColor","description":"Preview image border color. Use a valid HEX color, no # is needed for prefix.","required":false,"type":"string","default":"","in":"query"},{"name":"borderRadius","description":"Preview image border radius in pixels. Pass an integer between 0 to 4000.","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"opacity","description":"Preview image opacity. Only works with images having an alpha channel (like png). Pass a number between 0 to 1.","required":false,"type":"number","format":"float","x-example":0,"default":1,"in":"query"},{"name":"rotation","description":"Preview image rotation in degrees. Pass an integer between -360 and 360.","required":false,"type":"integer","format":"int32","x-example":-360,"default":0,"in":"query"},{"name":"background","description":"Preview image background color. Only works with transparent images (png). Use a valid HEX color, no # is needed for prefix.","required":false,"type":"string","default":"","in":"query"},{"name":"output","description":"Output format type (jpeg, jpg, png, gif and webp).","required":false,"type":"string","x-example":"jpg","enum":["jpg","jpeg","gif","png","webp"],"x-enum-name":"ImageFormat","x-enum-keys":[],"default":"","in":"query"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}\/view":{"get":{"summary":"Get file for view","operationId":"storageGetFileView","consumes":["application\/json"],"produces":["*\/*"],"tags":["storage"],"description":"Get a file content by its unique ID. This endpoint is similar to the download method but returns with no 'Content-Disposition: attachment' header.","responses":{"200":{"description":"File","schema":{"type":"file"}}},"x-appwrite":{"method":"getFileView","weight":197,"cookies":false,"type":"location","demo":"storage\/get-file-view.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/get-file-view.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.read","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https:\/\/appwrite.io\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID.","required":true,"type":"string","x-example":"[FILE_ID]","in":"path"}]}},"\/teams":{"get":{"summary":"List teams","operationId":"teamsList","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get a list of all the teams in which the current user is a member. You can use the parameters to filter your results.","responses":{"200":{"description":"Teams List","schema":{"$ref":"#\/definitions\/teamList"}}},"x-appwrite":{"method":"list","weight":203,"cookies":false,"type":"","demo":"teams\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-teams.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total, billingPlan","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create team","operationId":"teamsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"create","weight":202,"cookies":false,"type":"","demo":"teams\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/create-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"teamId":{"type":"string","description":"Team ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[TEAM_ID]"},"name":{"type":"string","description":"Team name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"roles":{"type":"array","description":"Array of strings. Use this param to set the roles in the team for the user who created it. The default role is **owner**. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","default":["owner"],"x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}]}},"\/teams\/{teamId}":{"get":{"summary":"Get team","operationId":"teamsGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"get","weight":204,"cookies":false,"type":"","demo":"teams\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams","offline-key":"{teamId}","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"}]},"put":{"summary":"Update name","operationId":"teamsUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Update the team's name by its unique ID.","responses":{"200":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"updateName","weight":206,"cookies":false,"type":"","demo":"teams\/update-name.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-name.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams","offline-key":"{teamId}","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"New team name. Max length: 128 chars.","default":null,"x-example":"[NAME]"}},"required":["name"]}}]},"delete":{"summary":"Delete team","operationId":"teamsDelete","consumes":["application\/json"],"produces":[],"tags":["teams"],"description":"Delete a team using its ID. Only team members with the owner role can delete the team.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":208,"cookies":false,"type":"","demo":"teams\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/delete-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"}]}},"\/teams\/{teamId}\/memberships":{"get":{"summary":"List team memberships","operationId":"teamsListMemberships","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"listMemberships","weight":210,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/memberships","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create team membership","operationId":"teamsCreateMembership","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Invite a new member to join your team. Provide an ID for existing users, or invite unregistered users using an email or phone number. If initiated from a Client SDK, Appwrite will send an email or sms with a link to join the team to the invited user, and an account will be created for them if one doesn't exist. If initiated from a Server SDK, the new member will be added automatically to the team.\n\nYou only need to provide one of a user ID, email, or phone number. Appwrite will prioritize accepting the user ID > email > phone number if you provide more than one of these parameters.\n\nUse the `url` parameter to redirect the user from the invitation email to your app. After the user is redirected, use the [Update Team Membership Status](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/teams#updateMembershipStatus) endpoint to allow the user to accept the invitation to the team. \n\nPlease note that to avoid a [Redirect Attack](https:\/\/github.com\/OWASP\/CheatSheetSeries\/blob\/master\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) Appwrite will accept the only redirect URLs under the domains you have added as a platform on the Appwrite Console.\n","responses":{"201":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"createMembership","weight":209,"cookies":false,"type":"","demo":"teams\/create-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/create-team-membership.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"email":{"type":"string","description":"Email of the new team member.","default":"","x-example":"email@example.com"},"userId":{"type":"string","description":"ID of the user to be added to a team.","default":"","x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":"","x-example":"+12065550100"},"roles":{"type":"array","description":"Array of strings. Use this param to set the user roles in the team. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":"","x-example":"https:\/\/example.com"},"name":{"type":"string","description":"Name of the new team member. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["roles"]}}]}},"\/teams\/{teamId}\/memberships\/{membershipId}":{"get":{"summary":"Get team membership","operationId":"teamsGetMembership","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get a team member by the membership unique id. All team members have read access for this resource.","responses":{"200":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"getMembership","weight":211,"cookies":false,"type":"","demo":"teams\/get-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-member.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/memberships","offline-key":"{membershipId}","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"type":"string","x-example":"[MEMBERSHIP_ID]","in":"path"}]},"patch":{"summary":"Update membership","operationId":"teamsUpdateMembership","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Modify the roles of a team member. Only team members with the owner role have access to this endpoint. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions).\n","responses":{"200":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"updateMembership","weight":212,"cookies":false,"type":"","demo":"teams\/update-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"type":"string","x-example":"[MEMBERSHIP_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"roles":{"type":"array","description":"An array of strings. Use this param to set the user's roles in the team. A role can be any string. Learn more about [roles and permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}}},"required":["roles"]}}]},"delete":{"summary":"Delete team membership","operationId":"teamsDeleteMembership","consumes":["application\/json"],"produces":[],"tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":214,"cookies":false,"type":"","demo":"teams\/delete-membership.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/delete-team-membership.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"type":"string","x-example":"[MEMBERSHIP_ID]","in":"path"}]}},"\/teams\/{teamId}\/memberships\/{membershipId}\/status":{"patch":{"summary":"Update team membership status","operationId":"teamsUpdateMembershipStatus","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Use this endpoint to allow a user to accept an invitation to join a team after being redirected back to your app from the invitation email received by the user.\n\nIf the request is successful, a session for the user is automatically created.\n","responses":{"200":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"updateMembershipStatus","weight":213,"cookies":false,"type":"","demo":"teams\/update-membership-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"public","platforms":["client","server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"membershipId","description":"Membership ID.","required":true,"type":"string","x-example":"[MEMBERSHIP_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Secret key.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/teams\/{teamId}\/prefs":{"get":{"summary":"Get team preferences","operationId":"teamsGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get the team's shared preferences by its unique ID. If a preference doesn't need to be shared by all team members, prefer storing them in [user preferences](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#getPrefs).","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":205,"cookies":false,"type":"","demo":"teams\/get-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/prefs","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"}]},"put":{"summary":"Update preferences","operationId":"teamsUpdatePrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Update the team's preferences by its unique ID. The object you pass is stored as is and replaces any previous value. The maximum allowed prefs size is 64kB and throws an error if exceeded.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"updatePrefs","weight":207,"cookies":false,"type":"","demo":"teams\/update-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server"],"packaging":false,"offline-model":"\/teams\/{teamId}\/prefs","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Session":[]}},"security":[{"Project":[],"Session":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"prefs":{"type":"object","description":"Prefs key-value JSON object.","default":{},"x-example":"{}"}},"required":["prefs"]}}]}},"\/users":{"get":{"summary":"List users","operationId":"usersList","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get a list of all the project's users. You can use the query params to filter your results.","responses":{"200":{"description":"Users List","schema":{"$ref":"#\/definitions\/userList"}}},"x-appwrite":{"method":"list","weight":225,"cookies":false,"type":"","demo":"users\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-users.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, email, phone, status, passwordUpdate, registration, emailVerification, phoneVerification, labels","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create user","operationId":"usersCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"create","weight":216,"cookies":false,"type":"","demo":"users\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"},"password":{"type":"string","description":"Plain text user password. Must be at least 8 chars.","default":"","x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId"]}}]}},"\/users\/argon2":{"post":{"summary":"Create user with Argon2 password","operationId":"usersCreateArgon2User","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Argon2](https:\/\/en.wikipedia.org\/wiki\/Argon2) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createArgon2User","weight":219,"cookies":false,"type":"","demo":"users\/create-argon2user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-argon2-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Argon2.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/bcrypt":{"post":{"summary":"Create user with bcrypt password","operationId":"usersCreateBcryptUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Bcrypt](https:\/\/en.wikipedia.org\/wiki\/Bcrypt) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createBcryptUser","weight":217,"cookies":false,"type":"","demo":"users\/create-bcrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-bcrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Bcrypt.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/identities":{"get":{"summary":"List Identities","operationId":"usersListIdentities","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get identities for all users.","responses":{"200":{"description":"Identities List","schema":{"$ref":"#\/definitions\/identityList"}}},"x-appwrite":{"method":"listIdentities","weight":233,"cookies":false,"type":"","demo":"users\/list-identities.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-identities.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, provider, providerUid, providerEmail, providerAccessTokenExpiry","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]}},"\/users\/identities\/{identityId}":{"delete":{"summary":"Delete identity","operationId":"usersDeleteIdentity","consumes":["application\/json"],"produces":[],"tags":["users"],"description":"Delete an identity by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIdentity","weight":253,"cookies":false,"type":"","demo":"users\/delete-identity.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-identity.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"identityId","description":"Identity ID.","required":true,"type":"string","x-example":"[IDENTITY_ID]","in":"path"}]}},"\/users\/md5":{"post":{"summary":"Create user with MD5 password","operationId":"usersCreateMD5User","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [MD5](https:\/\/en.wikipedia.org\/wiki\/MD5) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createMD5User","weight":218,"cookies":false,"type":"","demo":"users\/create-m-d5user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-md5-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using MD5.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/phpass":{"post":{"summary":"Create user with PHPass password","operationId":"usersCreatePHPassUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [PHPass](https:\/\/www.openwall.com\/phpass\/) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createPHPassUser","weight":221,"cookies":false,"type":"","demo":"users\/create-p-h-pass-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-phpass-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or pass the string `ID.unique()`to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using PHPass.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/scrypt":{"post":{"summary":"Create user with Scrypt password","operationId":"usersCreateScryptUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt](https:\/\/github.com\/Tarsnap\/scrypt) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createScryptUser","weight":222,"cookies":false,"type":"","demo":"users\/create-scrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt.","default":null,"x-example":"password"},"passwordSalt":{"type":"string","description":"Optional salt used to hash password.","default":null,"x-example":"[PASSWORD_SALT]"},"passwordCpu":{"type":"integer","description":"Optional CPU cost used to hash password.","default":null,"x-example":null},"passwordMemory":{"type":"integer","description":"Optional memory cost used to hash password.","default":null,"x-example":null},"passwordParallel":{"type":"integer","description":"Optional parallelization cost used to hash password.","default":null,"x-example":null},"passwordLength":{"type":"integer","description":"Optional hash length used to hash password.","default":null,"x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordCpu","passwordMemory","passwordParallel","passwordLength"]}}]}},"\/users\/scrypt-modified":{"post":{"summary":"Create user with Scrypt modified password","operationId":"usersCreateScryptModifiedUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt Modified](https:\/\/gist.github.com\/Meldiron\/eecf84a0225eccb5a378d45bb27462cc) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createScryptModifiedUser","weight":223,"cookies":false,"type":"","demo":"users\/create-scrypt-modified-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-modified-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt Modified.","default":null,"x-example":"password"},"passwordSalt":{"type":"string","description":"Salt used to hash password.","default":null,"x-example":"[PASSWORD_SALT]"},"passwordSaltSeparator":{"type":"string","description":"Salt separator used to hash password.","default":null,"x-example":"[PASSWORD_SALT_SEPARATOR]"},"passwordSignerKey":{"type":"string","description":"Signer key used to hash password.","default":null,"x-example":"[PASSWORD_SIGNER_KEY]"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordSaltSeparator","passwordSignerKey"]}}]}},"\/users\/sha":{"post":{"summary":"Create user with SHA password","operationId":"usersCreateSHAUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [SHA](https:\/\/en.wikipedia.org\/wiki\/Secure_Hash_Algorithm) algorithm. Use the [POST \/users](https:\/\/appwrite.io\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createSHAUser","weight":220,"cookies":false,"type":"","demo":"users\/create-s-h-a-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-sha-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using SHA.","default":null,"x-example":"password"},"passwordVersion":{"type":"string","description":"Optional SHA version used to hash password. Allowed values are: 'sha1', 'sha224', 'sha256', 'sha384', 'sha512\/224', 'sha512\/256', 'sha512', 'sha3-224', 'sha3-256', 'sha3-384', 'sha3-512'","default":"","x-example":"sha1","enum":["sha1","sha224","sha256","sha384","sha512\/224","sha512\/256","sha512","sha3-224","sha3-256","sha3-384","sha3-512"],"x-enum-name":"PasswordHash","x-enum-keys":[]},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/{userId}":{"get":{"summary":"Get user","operationId":"usersGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get a user by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"get","weight":226,"cookies":false,"type":"","demo":"users\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]},"delete":{"summary":"Delete user","operationId":"usersDelete","consumes":["application\/json"],"produces":[],"tags":["users"],"description":"Delete a user by its unique ID, thereby releasing it's ID. Since ID is released and can be reused, all user-related resources like documents or storage files should be deleted before user deletion. If you want to keep ID reserved, use the [updateStatus](https:\/\/appwrite.io\/docs\/server\/users#usersUpdateStatus) endpoint instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":251,"cookies":false,"type":"","demo":"users\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]}},"\/users\/{userId}\/email":{"patch":{"summary":"Update email","operationId":"usersUpdateEmail","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user email by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateEmail","weight":239,"cookies":false,"type":"","demo":"users\/update-email.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-email.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"}},"required":["email"]}}]}},"\/users\/{userId}\/labels":{"put":{"summary":"Update user labels","operationId":"usersUpdateLabels","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user labels by its unique ID. \n\nLabels can be used to grant access to resources. While teams are a way for user's to share access to a resource, labels can be defined by the developer to grant access without an invitation. See the [Permissions docs](https:\/\/appwrite.io\/docs\/permissions) for more info.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateLabels","weight":235,"cookies":false,"type":"","demo":"users\/update-labels.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-labels.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"labels":{"type":"array","description":"Array of user labels. Replaces the previous labels. Maximum of 1000 labels are allowed, each up to 36 alphanumeric characters long.","default":null,"x-example":null,"items":{"type":"string"}}},"required":["labels"]}}]}},"\/users\/{userId}\/logs":{"get":{"summary":"List user logs","operationId":"usersListLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listLogs","weight":231,"cookies":false,"type":"","demo":"users\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/users\/{userId}\/memberships":{"get":{"summary":"List user memberships","operationId":"usersListMemberships","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user membership list by its unique ID.","responses":{"200":{"description":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"listMemberships","weight":230,"cookies":false,"type":"","demo":"users\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-memberships.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]}},"\/users\/{userId}\/mfa":{"patch":{"summary":"Update MFA","operationId":"usersUpdateMfa","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateMfa","weight":244,"cookies":false,"type":"","demo":"users\/update-mfa.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-mfa.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"mfa":{"type":"boolean","description":"Enable or disable MFA.","default":null,"x-example":false}},"required":["mfa"]}}]}},"\/users\/{userId}\/mfa\/factors":{"get":{"summary":"List Factors","operationId":"usersListFactors","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"","responses":{"200":{"description":"MFAFactors","schema":{"$ref":"#\/definitions\/mfaFactors"}}},"x-appwrite":{"method":"listFactors","weight":245,"cookies":false,"type":"","demo":"users\/list-factors.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-factors.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]}},"\/users\/{userId}\/mfa\/{type}":{"delete":{"summary":"Delete Authenticator","operationId":"usersDeleteAuthenticator","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"deleteAuthenticator","weight":246,"cookies":false,"type":"","demo":"users\/delete-authenticator.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-mfa.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"type","description":"Type of authenticator.","required":true,"type":"string","x-example":"totp","enum":["totp"],"x-enum-name":null,"x-enum-keys":[],"in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"otp":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[OTP]"}},"required":["otp"]}}]}},"\/users\/{userId}\/name":{"patch":{"summary":"Update name","operationId":"usersUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user name by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateName","weight":237,"cookies":false,"type":"","demo":"users\/update-name.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-name.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"User name. Max length: 128 chars.","default":null,"x-example":"[NAME]"}},"required":["name"]}}]}},"\/users\/{userId}\/password":{"patch":{"summary":"Update password","operationId":"usersUpdatePassword","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user password by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePassword","weight":238,"cookies":false,"type":"","demo":"users\/update-password.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-password.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"password":{"type":"string","description":"New user password. Must be at least 8 chars.","default":null,"x-example":null}},"required":["password"]}}]}},"\/users\/{userId}\/phone":{"patch":{"summary":"Update phone","operationId":"usersUpdatePhone","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user phone by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePhone","weight":240,"cookies":false,"type":"","demo":"users\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"number":{"type":"string","description":"User phone number.","default":null,"x-example":"+12065550100"}},"required":["number"]}}]}},"\/users\/{userId}\/prefs":{"get":{"summary":"Get user preferences","operationId":"usersGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user preferences by its unique ID.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":227,"cookies":false,"type":"","demo":"users\/get-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]},"patch":{"summary":"Update user preferences","operationId":"usersUpdatePrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user preferences by its unique ID. The object you pass is stored as is, and replaces any previous value. The maximum allowed prefs size is 64kB and throws error if exceeded.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"updatePrefs","weight":242,"cookies":false,"type":"","demo":"users\/update-prefs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-prefs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"prefs":{"type":"object","description":"Prefs key-value JSON object.","default":{},"x-example":"{}"}},"required":["prefs"]}}]}},"\/users\/{userId}\/sessions":{"get":{"summary":"List user sessions","operationId":"usersListSessions","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user sessions list by its unique ID.","responses":{"200":{"description":"Sessions List","schema":{"$ref":"#\/definitions\/sessionList"}}},"x-appwrite":{"method":"listSessions","weight":229,"cookies":false,"type":"","demo":"users\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]},"post":{"summary":"Create session","operationId":"usersCreateSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Creates a session for a user. Returns an immediately usable session object.\n\nIf you want to generate a token for a custom authentication flow, use the [POST \/users\/{userId}\/tokens](https:\/\/appwrite.io\/docs\/server\/users#createToken) endpoint.","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"createSession","weight":247,"cookies":false,"type":"","demo":"users\/create-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-session.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]},"delete":{"summary":"Delete user sessions","operationId":"usersDeleteSessions","consumes":["application\/json"],"produces":[],"tags":["users"],"description":"Delete all user's sessions by using the user's unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":250,"cookies":false,"type":"","demo":"users\/delete-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]}},"\/users\/{userId}\/sessions\/{sessionId}":{"delete":{"summary":"Delete user session","operationId":"usersDeleteSession","consumes":["application\/json"],"produces":[],"tags":["users"],"description":"Delete a user sessions by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSession","weight":249,"cookies":false,"type":"","demo":"users\/delete-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-user-session.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"sessionId","description":"Session ID.","required":true,"type":"string","x-example":"[SESSION_ID]","in":"path"}]}},"\/users\/{userId}\/status":{"patch":{"summary":"Update user status","operationId":"usersUpdateStatus","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user status by its unique ID. Use this endpoint as an alternative to deleting a user if you want to keep user's ID reserved.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateStatus","weight":234,"cookies":false,"type":"","demo":"users\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"status":{"type":"boolean","description":"User Status. To activate the user pass `true` and to block the user pass `false`.","default":null,"x-example":false}},"required":["status"]}}]}},"\/users\/{userId}\/targets":{"get":{"summary":"List User Targets","operationId":"usersListTargets","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"","responses":{"200":{"description":"Target list","schema":{"$ref":"#\/definitions\/targetList"}}},"x-appwrite":{"method":"listTargets","weight":232,"cookies":false,"type":"","demo":"users\/list-targets.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-targets.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.read","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, email, phone, status, passwordUpdate, registration, emailVerification, phoneVerification, labels","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"post":{"summary":"Create User Target","operationId":"usersCreateTarget","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"","responses":{"201":{"description":"Target","schema":{"$ref":"#\/definitions\/target"}}},"x-appwrite":{"method":"createTarget","weight":224,"cookies":false,"type":"","demo":"users\/create-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-target.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"targetId":{"type":"string","description":"Target ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[TARGET_ID]"},"providerType":{"type":"string","description":"The target provider type. Can be one of the following: `email`, `sms` or `push`.","default":null,"x-example":"email","enum":["email","sms","push"],"x-enum-name":"MessagingProviderType","x-enum-keys":[]},"identifier":{"type":"string","description":"The target identifier (token, email, phone etc.)","default":null,"x-example":"[IDENTIFIER]"},"providerId":{"type":"string","description":"Provider ID. Message will be sent to this target from the specified provider ID. If no provider ID is set the first setup provider will be used.","default":"","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Target name. Max length: 128 chars. For example: My Awesome App Galaxy S23.","default":"","x-example":"[NAME]"}},"required":["targetId","providerType","identifier"]}}]}},"\/users\/{userId}\/targets\/{targetId}":{"get":{"summary":"Get User Target","operationId":"usersGetTarget","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"","responses":{"200":{"description":"Target","schema":{"$ref":"#\/definitions\/target"}}},"x-appwrite":{"method":"getTarget","weight":228,"cookies":false,"type":"","demo":"users\/get-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-target.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.read","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"targetId","description":"Target ID.","required":true,"type":"string","x-example":"[TARGET_ID]","in":"path"}]},"patch":{"summary":"Update User target","operationId":"usersUpdateTarget","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"","responses":{"200":{"description":"Target","schema":{"$ref":"#\/definitions\/target"}}},"x-appwrite":{"method":"updateTarget","weight":243,"cookies":false,"type":"","demo":"users\/update-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-target.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"targetId","description":"Target ID.","required":true,"type":"string","x-example":"[TARGET_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"identifier":{"type":"string","description":"The target identifier (token, email, phone etc.)","default":"","x-example":"[IDENTIFIER]"},"providerId":{"type":"string","description":"Provider ID. Message will be sent to this target from the specified provider ID. If no provider ID is set the first setup provider will be used.","default":"","x-example":"[PROVIDER_ID]"},"name":{"type":"string","description":"Target name. Max length: 128 chars. For example: My Awesome App Galaxy S23.","default":"","x-example":"[NAME]"}}}}]},"delete":{"summary":"Delete user target","operationId":"usersDeleteTarget","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteTarget","weight":252,"cookies":false,"type":"","demo":"users\/delete-target.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/delete-target.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"targets.write","platforms":["server","console"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"targetId","description":"Target ID.","required":true,"type":"string","x-example":"[TARGET_ID]","in":"path"}]}},"\/users\/{userId}\/tokens":{"post":{"summary":"Create token","operationId":"usersCreateToken","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Returns a token with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [PUT \/account\/sessions\/custom](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#updateCustomSession) endpoint to complete the login process.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createToken","weight":248,"cookies":false,"type":"","demo":"users\/create-token.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-token.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"length":{"type":"integer","description":"Token length in characters. The default length is 6 characters","default":6,"x-example":4},"expire":{"type":"integer","description":"Token expiration period in seconds. The default expiration is 15 minutes.","default":900,"x-example":60}}}}]}},"\/users\/{userId}\/verification":{"patch":{"summary":"Update email verification","operationId":"usersUpdateEmailVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user email verification status by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateEmailVerification","weight":241,"cookies":false,"type":"","demo":"users\/update-email-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-email-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"emailVerification":{"type":"boolean","description":"User email verification status.","default":null,"x-example":false}},"required":["emailVerification"]}}]}},"\/users\/{userId}\/verification\/phone":{"patch":{"summary":"Update phone verification","operationId":"usersUpdatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user phone verification status by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePhoneVerification","weight":236,"cookies":false,"type":"","demo":"users\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"offline-model":"","offline-key":"","offline-response-key":"$id","auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"phoneVerification":{"type":"boolean","description":"User phone verification status.","default":null,"x-example":false}},"required":["phoneVerification"]}}]}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"project","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]},{"name":"proxy","description":"The Proxy Service allows you to configure actions for your domains beyond DNS configuration.","x-globalAttributes":[]},{"name":"graphql","description":"The GraphQL API allows you to query and mutate your Appwrite server using GraphQL.","x-globalAttributes":[]},{"name":"console","description":"The Console service allows you to interact with console relevant informations.","x-globalAttributes":[]},{"name":"migrations","description":"The Migrations service allows you to migrate third-party data to your Appwrite project.","x-globalAttributes":[]},{"name":"messaging","description":"The Messaging service allows you to send messages to any provider type (SMTP, push notification, SMS, etc.).","x-globalAttributes":[]}],"definitions":{"any":{"description":"Any","type":"object","additionalProperties":true},"documentList":{"description":"Documents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of documents documents that matched your query.","x-example":5,"format":"int32"},"documents":{"type":"array","description":"List of documents.","items":{"type":"object","$ref":"#\/definitions\/document"},"x-example":""}},"required":["total","documents"]},"collectionList":{"description":"Collections List","type":"object","properties":{"total":{"type":"integer","description":"Total number of collections documents that matched your query.","x-example":5,"format":"int32"},"collections":{"type":"array","description":"List of collections.","items":{"type":"object","$ref":"#\/definitions\/collection"},"x-example":""}},"required":["total","collections"]},"databaseList":{"description":"Databases List","type":"object","properties":{"total":{"type":"integer","description":"Total number of databases documents that matched your query.","x-example":5,"format":"int32"},"databases":{"type":"array","description":"List of databases.","items":{"type":"object","$ref":"#\/definitions\/database"},"x-example":""}},"required":["total","databases"]},"indexList":{"description":"Indexes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of indexes documents that matched your query.","x-example":5,"format":"int32"},"indexes":{"type":"array","description":"List of indexes.","items":{"type":"object","$ref":"#\/definitions\/index"},"x-example":""}},"required":["total","indexes"]},"userList":{"description":"Users List","type":"object","properties":{"total":{"type":"integer","description":"Total number of users documents that matched your query.","x-example":5,"format":"int32"},"users":{"type":"array","description":"List of users.","items":{"type":"object","$ref":"#\/definitions\/user"},"x-example":""}},"required":["total","users"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of sessions documents that matched your query.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"type":"object","$ref":"#\/definitions\/session"},"x-example":""}},"required":["total","sessions"]},"identityList":{"description":"Identities List","type":"object","properties":{"total":{"type":"integer","description":"Total number of identities documents that matched your query.","x-example":5,"format":"int32"},"identities":{"type":"array","description":"List of identities.","items":{"type":"object","$ref":"#\/definitions\/identity"},"x-example":""}},"required":["total","identities"]},"logList":{"description":"Logs List","type":"object","properties":{"total":{"type":"integer","description":"Total number of logs documents that matched your query.","x-example":5,"format":"int32"},"logs":{"type":"array","description":"List of logs.","items":{"type":"object","$ref":"#\/definitions\/log"},"x-example":""}},"required":["total","logs"]},"fileList":{"description":"Files List","type":"object","properties":{"total":{"type":"integer","description":"Total number of files documents that matched your query.","x-example":5,"format":"int32"},"files":{"type":"array","description":"List of files.","items":{"type":"object","$ref":"#\/definitions\/file"},"x-example":""}},"required":["total","files"]},"bucketList":{"description":"Buckets List","type":"object","properties":{"total":{"type":"integer","description":"Total number of buckets documents that matched your query.","x-example":5,"format":"int32"},"buckets":{"type":"array","description":"List of buckets.","items":{"type":"object","$ref":"#\/definitions\/bucket"},"x-example":""}},"required":["total","buckets"]},"teamList":{"description":"Teams List","type":"object","properties":{"total":{"type":"integer","description":"Total number of teams documents that matched your query.","x-example":5,"format":"int32"},"teams":{"type":"array","description":"List of teams.","items":{"type":"object","$ref":"#\/definitions\/team"},"x-example":""}},"required":["total","teams"]},"membershipList":{"description":"Memberships List","type":"object","properties":{"total":{"type":"integer","description":"Total number of memberships documents that matched your query.","x-example":5,"format":"int32"},"memberships":{"type":"array","description":"List of memberships.","items":{"type":"object","$ref":"#\/definitions\/membership"},"x-example":""}},"required":["total","memberships"]},"functionList":{"description":"Functions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of functions documents that matched your query.","x-example":5,"format":"int32"},"functions":{"type":"array","description":"List of functions.","items":{"type":"object","$ref":"#\/definitions\/function"},"x-example":""}},"required":["total","functions"]},"runtimeList":{"description":"Runtimes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of runtimes documents that matched your query.","x-example":5,"format":"int32"},"runtimes":{"type":"array","description":"List of runtimes.","items":{"type":"object","$ref":"#\/definitions\/runtime"},"x-example":""}},"required":["total","runtimes"]},"deploymentList":{"description":"Deployments List","type":"object","properties":{"total":{"type":"integer","description":"Total number of deployments documents that matched your query.","x-example":5,"format":"int32"},"deployments":{"type":"array","description":"List of deployments.","items":{"type":"object","$ref":"#\/definitions\/deployment"},"x-example":""}},"required":["total","deployments"]},"executionList":{"description":"Executions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of executions documents that matched your query.","x-example":5,"format":"int32"},"executions":{"type":"array","description":"List of executions.","items":{"type":"object","$ref":"#\/definitions\/execution"},"x-example":""}},"required":["total","executions"]},"countryList":{"description":"Countries List","type":"object","properties":{"total":{"type":"integer","description":"Total number of countries documents that matched your query.","x-example":5,"format":"int32"},"countries":{"type":"array","description":"List of countries.","items":{"type":"object","$ref":"#\/definitions\/country"},"x-example":""}},"required":["total","countries"]},"continentList":{"description":"Continents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of continents documents that matched your query.","x-example":5,"format":"int32"},"continents":{"type":"array","description":"List of continents.","items":{"type":"object","$ref":"#\/definitions\/continent"},"x-example":""}},"required":["total","continents"]},"languageList":{"description":"Languages List","type":"object","properties":{"total":{"type":"integer","description":"Total number of languages documents that matched your query.","x-example":5,"format":"int32"},"languages":{"type":"array","description":"List of languages.","items":{"type":"object","$ref":"#\/definitions\/language"},"x-example":""}},"required":["total","languages"]},"currencyList":{"description":"Currencies List","type":"object","properties":{"total":{"type":"integer","description":"Total number of currencies documents that matched your query.","x-example":5,"format":"int32"},"currencies":{"type":"array","description":"List of currencies.","items":{"type":"object","$ref":"#\/definitions\/currency"},"x-example":""}},"required":["total","currencies"]},"phoneList":{"description":"Phones List","type":"object","properties":{"total":{"type":"integer","description":"Total number of phones documents that matched your query.","x-example":5,"format":"int32"},"phones":{"type":"array","description":"List of phones.","items":{"type":"object","$ref":"#\/definitions\/phone"},"x-example":""}},"required":["total","phones"]},"variableList":{"description":"Variables List","type":"object","properties":{"total":{"type":"integer","description":"Total number of variables documents that matched your query.","x-example":5,"format":"int32"},"variables":{"type":"array","description":"List of variables.","items":{"type":"object","$ref":"#\/definitions\/variable"},"x-example":""}},"required":["total","variables"]},"localeCodeList":{"description":"Locale codes list","type":"object","properties":{"total":{"type":"integer","description":"Total number of localeCodes documents that matched your query.","x-example":5,"format":"int32"},"localeCodes":{"type":"array","description":"List of localeCodes.","items":{"type":"object","$ref":"#\/definitions\/localeCode"},"x-example":""}},"required":["total","localeCodes"]},"providerList":{"description":"Provider list","type":"object","properties":{"total":{"type":"integer","description":"Total number of providers documents that matched your query.","x-example":5,"format":"int32"},"providers":{"type":"array","description":"List of providers.","items":{"type":"object","$ref":"#\/definitions\/provider"},"x-example":""}},"required":["total","providers"]},"messageList":{"description":"Message list","type":"object","properties":{"total":{"type":"integer","description":"Total number of messages documents that matched your query.","x-example":5,"format":"int32"},"messages":{"type":"array","description":"List of messages.","items":{"type":"object","$ref":"#\/definitions\/message"},"x-example":""}},"required":["total","messages"]},"topicList":{"description":"Topic list","type":"object","properties":{"total":{"type":"integer","description":"Total number of topics documents that matched your query.","x-example":5,"format":"int32"},"topics":{"type":"array","description":"List of topics.","items":{"type":"object","$ref":"#\/definitions\/topic"},"x-example":""}},"required":["total","topics"]},"subscriberList":{"description":"Subscriber list","type":"object","properties":{"total":{"type":"integer","description":"Total number of subscribers documents that matched your query.","x-example":5,"format":"int32"},"subscribers":{"type":"array","description":"List of subscribers.","items":{"type":"object","$ref":"#\/definitions\/subscriber"},"x-example":""}},"required":["total","subscribers"]},"targetList":{"description":"Target list","type":"object","properties":{"total":{"type":"integer","description":"Total number of targets documents that matched your query.","x-example":5,"format":"int32"},"targets":{"type":"array","description":"List of targets.","items":{"type":"object","$ref":"#\/definitions\/target"},"x-example":""}},"required":["total","targets"]},"database":{"description":"Database","type":"object","properties":{"$id":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Database name.","x-example":"My Database"},"$createdAt":{"type":"string","description":"Database creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Database update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"enabled":{"type":"boolean","description":"If database is enabled. Can be 'enabled' or 'disabled'. When disabled, the database is inaccessible to users, but remains accessible to Server SDKs using API keys.","x-example":false}},"required":["$id","name","$createdAt","$updatedAt","enabled"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Collection creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Collection update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Collection permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled. Can be 'enabled' or 'disabled'. When disabled, the collection is inaccessible to users, but remains accessible to Server SDKs using API keys.","x-example":false},"documentSecurity":{"type":"boolean","description":"Whether document-level permissions are enabled. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":true},"attributes":{"type":"array","description":"Collection attributes.","items":{"x-anyOf":[{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeRelationship"},{"$ref":"#\/definitions\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"type":"object","$ref":"#\/definitions\/index"},"x-example":{}}},"required":["$id","$createdAt","$updatedAt","$permissions","databaseId","name","enabled","documentSecurity","attributes","indexes"]},"attributeList":{"description":"Attributes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of attributes in the given collection.","x-example":5,"format":"int32"},"attributes":{"type":"array","description":"List of attributes.","items":{"x-anyOf":[{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeRelationship"},{"$ref":"#\/definitions\/attributeString"}]},"x-example":""}},"required":["total","attributes"]},"attributeString":{"description":"AttributeString","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"fullName"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"size":{"type":"integer","description":"Attribute size.","x-example":128,"format":"int32"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"default","x-nullable":true}},"required":["key","type","status","error","required","size"]},"attributeInteger":{"description":"AttributeInteger","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"count"},"type":{"type":"string","description":"Attribute type.","x-example":"integer"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"min":{"type":"integer","description":"Minimum value to enforce for new documents.","x-example":1,"format":"int32","x-nullable":true},"max":{"type":"integer","description":"Maximum value to enforce for new documents.","x-example":10,"format":"int32","x-nullable":true},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":10,"format":"int32","x-nullable":true}},"required":["key","type","status","error","required"]},"attributeFloat":{"description":"AttributeFloat","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"percentageCompleted"},"type":{"type":"string","description":"Attribute type.","x-example":"double"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"min":{"type":"number","description":"Minimum value to enforce for new documents.","x-example":1.5,"format":"double","x-nullable":true},"max":{"type":"number","description":"Maximum value to enforce for new documents.","x-example":10.5,"format":"double","x-nullable":true},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":2.5,"format":"double","x-nullable":true}},"required":["key","type","status","error","required"]},"attributeBoolean":{"description":"AttributeBoolean","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"isEnabled"},"type":{"type":"string","description":"Attribute type.","x-example":"boolean"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":false,"x-nullable":true}},"required":["key","type","status","error","required"]},"attributeEmail":{"description":"AttributeEmail","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"userEmail"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"format":{"type":"string","description":"String format.","x-example":"email"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"default@example.com","x-nullable":true}},"required":["key","type","status","error","required","format"]},"attributeEnum":{"description":"AttributeEnum","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"status"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"elements":{"type":"array","description":"Array of elements in enumerated type.","items":{"type":"string"},"x-example":"element"},"format":{"type":"string","description":"String format.","x-example":"enum"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"element","x-nullable":true}},"required":["key","type","status","error","required","elements","format"]},"attributeIp":{"description":"AttributeIP","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"ipAddress"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"format":{"type":"string","description":"String format.","x-example":"ip"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"192.0.2.0","x-nullable":true}},"required":["key","type","status","error","required","format"]},"attributeUrl":{"description":"AttributeURL","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"githubUrl"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"format":{"type":"string","description":"String format.","x-example":"url"},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"http:\/\/example.com","x-nullable":true}},"required":["key","type","status","error","required","format"]},"attributeDatetime":{"description":"AttributeDatetime","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"birthDay"},"type":{"type":"string","description":"Attribute type.","x-example":"datetime"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"format":{"type":"string","description":"ISO 8601 format.","x-example":"datetime"},"default":{"type":"string","description":"Default value for attribute when not provided. Only null is optional","x-example":"2020-10-15T06:38:00.000+00:00","x-nullable":true}},"required":["key","type","status","error","required","format"]},"attributeRelationship":{"description":"AttributeRelationship","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"fullName"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an attribute.","x-example":"string"},"required":{"type":"boolean","description":"Is attribute required?","x-example":true},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false,"x-nullable":true},"relatedCollection":{"type":"string","description":"The ID of the related collection.","x-example":"collection"},"relationType":{"type":"string","description":"The type of the relationship.","x-example":"oneToOne|oneToMany|manyToOne|manyToMany"},"twoWay":{"type":"boolean","description":"Is the relationship two-way?","x-example":false},"twoWayKey":{"type":"string","description":"The key of the two-way relationship.","x-example":"string"},"onDelete":{"type":"string","description":"How deleting the parent document will propagate to child documents.","x-example":"restrict|cascade|setNull"},"side":{"type":"string","description":"Whether this is the parent or child side of the relationship","x-example":"parent|child"}},"required":["key","type","status","error","required","relatedCollection","relationType","twoWay","twoWayKey","onDelete","side"]},"index":{"description":"Index","type":"object","properties":{"key":{"type":"string","description":"Index Key.","x-example":"index1"},"type":{"type":"string","description":"Index type.","x-example":"primary"},"status":{"type":"string","description":"Index status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"error":{"type":"string","description":"Error message. Displays error generated on failure of creating or deleting an index.","x-example":"string"},"attributes":{"type":"array","description":"Index attributes.","items":{"type":"string"},"x-example":[]},"orders":{"type":"array","description":"Index orders.","items":{"type":"string"},"x-example":[],"x-nullable":true}},"required":["key","type","status","error","attributes"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"user":{"description":"User","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"password":{"type":"string","description":"Hashed user password.","x-example":"$argon2id$v=19$m=2048,t=4,p=3$aUZjLnliVWRINmFNTWMudg$5S+x+7uA31xFnrHFT47yFwcJeaP0w92L\/4LdgrVRXxE","x-nullable":true},"hash":{"type":"string","description":"Password hashing algorithm.","x-example":"argon2","x-nullable":true},"hashOptions":{"type":"object","description":"Password hashing algorithm configuration.","x-example":{},"items":{"x-oneOf":[{"$ref":"#\/definitions\/algoArgon2"},{"$ref":"#\/definitions\/algoScrypt"},{"$ref":"#\/definitions\/algoScryptModified"},{"$ref":"#\/definitions\/algoBcrypt"},{"$ref":"#\/definitions\/algoPhpass"},{"$ref":"#\/definitions\/algoSha"},{"$ref":"#\/definitions\/algoMd5"}]},"x-nullable":true},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"labels":{"type":"array","description":"Labels for the user.","items":{"type":"string"},"x-example":["vip"]},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"mfa":{"type":"boolean","description":"Multi factor authentication status.","x-example":true},"totp":{"type":"boolean","description":"TOTP status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"type":"object","$ref":"#\/definitions\/preferences"}},"targets":{"type":"array","description":"A user-owned message receiver. A single user may have multiple e.g. emails, phones, and a browser. Each target is registered with a single provider.","items":{"type":"object","$ref":"#\/definitions\/target"},"x-example":[]},"accessedAt":{"type":"string","description":"Most recent access date in ISO 8601 format. This attribute is only updated again after 24 hours.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","$updatedAt","name","registration","status","labels","passwordUpdate","email","phone","emailVerification","phoneVerification","mfa","totp","prefs","targets","accessedAt"]},"algoMd5":{"description":"AlgoMD5","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"md5"}},"required":["type"]},"algoSha":{"description":"AlgoSHA","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"sha"}},"required":["type"]},"algoPhpass":{"description":"AlgoPHPass","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"phpass"}},"required":["type"]},"algoBcrypt":{"description":"AlgoBcrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"bcrypt"}},"required":["type"]},"algoScrypt":{"description":"AlgoScrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scrypt"},"costCpu":{"type":"integer","description":"CPU complexity of computed hash.","x-example":8,"format":"int32"},"costMemory":{"type":"integer","description":"Memory complexity of computed hash.","x-example":14,"format":"int32"},"costParallel":{"type":"integer","description":"Parallelization of computed hash.","x-example":1,"format":"int32"},"length":{"type":"integer","description":"Length used to compute hash.","x-example":64,"format":"int32"}},"required":["type","costCpu","costMemory","costParallel","length"]},"algoScryptModified":{"description":"AlgoScryptModified","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scryptMod"},"salt":{"type":"string","description":"Salt used to compute hash.","x-example":"UxLMreBr6tYyjQ=="},"saltSeparator":{"type":"string","description":"Separator used to compute hash.","x-example":"Bw=="},"signerKey":{"type":"string","description":"Key used to compute hash.","x-example":"XyEKE9RcTDeLEsL\/RjwPDBv\/RqDl8fb3gpYEOQaPihbxf1ZAtSOHCjuAAa7Q3oHpCYhXSN9tizHgVOwn6krflQ=="}},"required":["type","salt","saltSeparator","signerKey"]},"algoArgon2":{"description":"AlgoArgon2","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"argon2"},"memoryCost":{"type":"integer","description":"Memory used to compute hash.","x-example":65536,"format":"int32"},"timeCost":{"type":"integer","description":"Amount of time consumed to compute hash","x-example":4,"format":"int32"},"threads":{"type":"integer","description":"Number of threads used to compute hash.","x-example":3,"format":"int32"}},"required":["type","memoryCost","timeCost","threads"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true},"factors":{"type":"array","description":"Returns a list of active session factors.","items":{"type":"string"},"x-example":["email"]},"secret":{"type":"string","description":"Secret used to authenticate the user. Only included if the request was made with an API key","x-example":"5e5bb8c16897e"}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current","factors","secret"]},"identity":{"description":"Identity","type":"object","properties":{"$id":{"type":"string","description":"Identity ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Identity creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Identity update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"provider":{"type":"string","description":"Identity Provider.","x-example":"email"},"providerUid":{"type":"string","description":"ID of the User in the Identity Provider.","x-example":"5e5bb8c16897e"},"providerEmail":{"type":"string","description":"Email of the User in the Identity Provider.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Identity Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Identity Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"}},"required":["$id","$createdAt","$updatedAt","userId","provider","providerUid","providerEmail","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"phrase":{"type":"string","description":"Security phrase of a token. Empty if security phrase was not requested when creating a token. It includes randomly generated phrase which is also sent in the external resource such as email.","x-example":"Golden Fox"}},"required":["$id","$createdAt","userId","secret","expire","phrase"]},"jwt":{"description":"JWT","type":"object","properties":{"jwt":{"type":"string","description":"JWT encoded string.","x-example":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c"}},"required":["jwt"]},"locale":{"description":"Locale","type":"object","properties":{"ip":{"type":"string","description":"User IP address.","x-example":"127.0.0.1"},"countryCode":{"type":"string","description":"Country code in [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) two-character format","x-example":"US"},"country":{"type":"string","description":"Country name. This field support localization.","x-example":"United States"},"continentCode":{"type":"string","description":"Continent code. A two character continent code \"AF\" for Africa, \"AN\" for Antarctica, \"AS\" for Asia, \"EU\" for Europe, \"NA\" for North America, \"OC\" for Oceania, and \"SA\" for South America.","x-example":"NA"},"continent":{"type":"string","description":"Continent name. This field support localization.","x-example":"North America"},"eu":{"type":"boolean","description":"True if country is part of the European Union.","x-example":false},"currency":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format","x-example":"USD"}},"required":["ip","countryCode","country","continentCode","continent","eu","currency"]},"localeCode":{"description":"LocaleCode","type":"object","properties":{"code":{"type":"string","description":"Locale codes in [ISO 639-1](https:\/\/en.wikipedia.org\/wiki\/List_of_ISO_639-1_codes)","x-example":"en-us"},"name":{"type":"string","description":"Locale name","x-example":"US"}},"required":["code","name"]},"file":{"description":"File","type":"object","properties":{"$id":{"type":"string","description":"File ID.","x-example":"5e5ea5c16897e"},"bucketId":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Bucket creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Bucket update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Bucket permissions. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"fileSecurity":{"type":"boolean","description":"Whether file-level security is enabled. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).","x-example":true},"name":{"type":"string","description":"Bucket name.","x-example":"Documents"},"enabled":{"type":"boolean","description":"Bucket enabled.","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size supported.","x-example":100,"format":"int32"},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions.","items":{"type":"string"},"x-example":["jpg","png"]},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Will be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd).","x-example":"gzip"},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$createdAt","$updatedAt","$permissions","fileSecurity","name","enabled","maximumFileSize","allowedFileExtensions","compression","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"},"prefs":{"type":"object","description":"Team preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"type":"object","$ref":"#\/definitions\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","total","prefs"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"mfa":{"type":"boolean","description":"Multi factor authentication status, true if the user has MFA enabled or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":["owner"]}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","mfa","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Function creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Function update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"users"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"enabled":{"type":"boolean","description":"Function enabled.","x-example":false},"live":{"type":"boolean","description":"Is the function deployed with the latest configuration? This is set to false if you've changed an environment variables, entrypoint, commands, or other settings that needs redeploy to be applied. When the value is false, redeploy the function to update it with the latest configuration.","x-example":false},"logging":{"type":"boolean","description":"Whether executions will be logged. When set to false, executions will not be logged, but will reduce resource used by your Appwrite project.","x-example":false},"runtime":{"type":"string","description":"Function execution runtime.","x-example":"python-3.8"},"deployment":{"type":"string","description":"Function's active deployment ID.","x-example":"5e5ea5c16897e"},"vars":{"type":"array","description":"Function variables.","items":{"type":"object","$ref":"#\/definitions\/variable"},"x-example":[]},"events":{"type":"array","description":"Function trigger events.","items":{"type":"string"},"x-example":"account.create"},"schedule":{"type":"string","description":"Function execution schedult in CRON format.","x-example":"5 4 * * *"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":300,"format":"int32"},"entrypoint":{"type":"string","description":"The entrypoint file used to execute the deployment.","x-example":"index.js"},"commands":{"type":"string","description":"The build command used to build the deployment.","x-example":"npm install"},"version":{"type":"string","description":"Version of Open Runtimes used for the function.","x-example":"v2"},"installationId":{"type":"string","description":"Function VCS (Version Control System) installation id.","x-example":"6m40at4ejk5h2u9s1hboo"},"providerRepositoryId":{"type":"string","description":"VCS (Version Control System) Repository ID","x-example":"appwrite"},"providerBranch":{"type":"string","description":"VCS (Version Control System) branch name","x-example":"main"},"providerRootDirectory":{"type":"string","description":"Path to function in VCS (Version Control System) repository","x-example":"functions\/helloWorld"},"providerSilentMode":{"type":"boolean","description":"Is VCS (Version Control System) connection is in silent mode? When in silence mode, no comments will be posted on the repository pull or merge requests","x-example":false}},"required":["$id","$createdAt","$updatedAt","execute","name","enabled","live","logging","runtime","deployment","vars","events","schedule","timeout","entrypoint","commands","version","installationId","providerRepositoryId","providerBranch","providerRootDirectory","providerSilentMode"]},"runtime":{"description":"Runtime","type":"object","properties":{"$id":{"type":"string","description":"Runtime ID.","x-example":"python-3.8"},"name":{"type":"string","description":"Runtime Name.","x-example":"Python"},"version":{"type":"string","description":"Runtime version.","x-example":"3.8"},"base":{"type":"string","description":"Base Docker image used to build the runtime.","x-example":"python:3.8-alpine"},"image":{"type":"string","description":"Image name of Docker Hub.","x-example":"appwrite\\\/runtime-for-python:3.8"},"logo":{"type":"string","description":"Name of the logo image.","x-example":"python.png"},"supports":{"type":"array","description":"List of supported architectures.","items":{"type":"string"},"x-example":"amd64"}},"required":["$id","name","version","base","image","logo","supports"]},"deployment":{"description":"Deployment","type":"object","properties":{"$id":{"type":"string","description":"Deployment ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Deployment creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Deployment update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"type":{"type":"string","description":"Type of deployment.","x-example":"vcs"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"index.js"},"size":{"type":"integer","description":"The code size in bytes.","x-example":128,"format":"int32"},"buildId":{"type":"string","description":"The current build ID.","x-example":"5e5ea5c16897e"},"activate":{"type":"boolean","description":"Whether the deployment should be automatically activated.","x-example":true},"status":{"type":"string","description":"The deployment status. Possible values are \"processing\", \"building\", \"waiting\", \"ready\", and \"failed\".","x-example":"ready"},"buildLogs":{"type":"string","description":"The build logs.","x-example":"Compiling source files..."},"buildTime":{"type":"integer","description":"The current build time in seconds.","x-example":128,"format":"int32"},"providerRepositoryName":{"type":"string","description":"The name of the vcs provider repository","x-example":"database"},"providerRepositoryOwner":{"type":"string","description":"The name of the vcs provider repository owner","x-example":"utopia"},"providerRepositoryUrl":{"type":"string","description":"The url of the vcs provider repository","x-example":"https:\/\/github.com\/vermakhushboo\/g4-node-function"},"providerBranch":{"type":"string","description":"The branch of the vcs repository","x-example":"0.7.x"},"providerCommitHash":{"type":"string","description":"The commit hash of the vcs commit","x-example":"7c3f25d"},"providerCommitAuthorUrl":{"type":"string","description":"The url of vcs commit author","x-example":"https:\/\/github.com\/vermakhushboo"},"providerCommitAuthor":{"type":"string","description":"The name of vcs commit author","x-example":"Khushboo Verma"},"providerCommitMessage":{"type":"string","description":"The commit message","x-example":"Update index.js"},"providerCommitUrl":{"type":"string","description":"The url of the vcs commit","x-example":"https:\/\/github.com\/vermakhushboo\/g4-node-function\/commit\/60c0416257a9cbcdd96b2d370c38d8f8d150ccfb"},"providerBranchUrl":{"type":"string","description":"The branch of the vcs repository","x-example":"https:\/\/github.com\/vermakhushboo\/appwrite\/tree\/0.7.x"}},"required":["$id","$createdAt","$updatedAt","type","resourceId","resourceType","entrypoint","size","buildId","activate","status","buildLogs","buildTime","providerRepositoryName","providerRepositoryOwner","providerRepositoryUrl","providerBranch","providerCommitHash","providerCommitAuthorUrl","providerCommitAuthor","providerCommitMessage","providerCommitUrl","providerBranchUrl"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"requestMethod":{"type":"string","description":"HTTP request method type.","x-example":"GET"},"requestPath":{"type":"string","description":"HTTP request path and query.","x-example":"\/articles?id=5"},"requestHeaders":{"type":"array","description":"HTTP response headers as a key-value object. This will return only whitelisted headers. All headers are returned if execution is created as synchronous.","items":{"type":"object","$ref":"#\/definitions\/headers"},"x-example":[{"Content-Type":"application\/json"}]},"responseStatusCode":{"type":"integer","description":"HTTP response status code.","x-example":200,"format":"int32"},"responseBody":{"type":"string","description":"HTTP response body. This will return empty unless execution is created as synchronous.","x-example":"Developers are awesome."},"responseHeaders":{"type":"array","description":"HTTP response headers as a key-value object. This will return only whitelisted headers. All headers are returned if execution is created as synchronous.","items":{"type":"object","$ref":"#\/definitions\/headers"},"x-example":[{"Content-Type":"application\/json"}]},"logs":{"type":"string","description":"Function logs. Includes the last 4,000 characters. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"errors":{"type":"string","description":"Function errors. Includes the last 4,000 characters. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"Function execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","requestMethod","requestPath","requestHeaders","responseStatusCode","responseBody","responseHeaders","logs","errors","duration"]},"variable":{"description":"Variable","type":"object","properties":{"$id":{"type":"string","description":"Variable ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"key":{"type":"string","description":"Variable key.","x-example":"API_KEY"},"value":{"type":"string","description":"Variable value.","x-example":"myPa$$word1"},"resourceType":{"type":"string","description":"Service to which the variable belongs. Possible values are \"project\", \"function\"","x-example":"function"},"resourceId":{"type":"string","description":"ID of resource to which the variable belongs. If resourceType is \"project\", it is empty. If resourceType is \"function\", it is ID of the function.","x-example":"myAwesomeFunction"}},"required":["$id","$createdAt","$updatedAt","key","value","resourceType","resourceId"]},"country":{"description":"Country","type":"object","properties":{"name":{"type":"string","description":"Country name.","x-example":"United States"},"code":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"}},"required":["name","code"]},"continent":{"description":"Continent","type":"object","properties":{"name":{"type":"string","description":"Continent name.","x-example":"Europe"},"code":{"type":"string","description":"Continent two letter code.","x-example":"EU"}},"required":["name","code"]},"language":{"description":"Language","type":"object","properties":{"name":{"type":"string","description":"Language name.","x-example":"Italian"},"code":{"type":"string","description":"Language two-character ISO 639-1 codes.","x-example":"it"},"nativeName":{"type":"string","description":"Language native name.","x-example":"Italiano"}},"required":["name","code","nativeName"]},"currency":{"description":"Currency","type":"object","properties":{"symbol":{"type":"string","description":"Currency symbol.","x-example":"$"},"name":{"type":"string","description":"Currency name.","x-example":"US dollar"},"symbolNative":{"type":"string","description":"Currency native symbol.","x-example":"$"},"decimalDigits":{"type":"integer","description":"Number of decimal digits.","x-example":2,"format":"int32"},"rounding":{"type":"number","description":"Currency digit rounding.","x-example":0,"format":"double"},"code":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format.","x-example":"USD"},"namePlural":{"type":"string","description":"Currency plural name","x-example":"US dollars"}},"required":["symbol","name","symbolNative","decimalDigits","rounding","code","namePlural"]},"phone":{"description":"Phone","type":"object","properties":{"code":{"type":"string","description":"Phone code.","x-example":"+1"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["code","countryCode","countryName"]},"healthAntivirus":{"description":"Health Antivirus","type":"object","properties":{"version":{"type":"string","description":"Antivirus version.","x-example":"1.0.0"},"status":{"type":"string","description":"Antivirus status. Possible values can are: `disabled`, `offline`, `online`","x-example":"online"}},"required":["version","status"]},"healthQueue":{"description":"Health Queue","type":"object","properties":{"size":{"type":"integer","description":"Amount of actions in the queue.","x-example":8,"format":"int32"}},"required":["size"]},"healthStatus":{"description":"Health Status","type":"object","properties":{"name":{"type":"string","description":"Name of the service.","x-example":"database"},"ping":{"type":"integer","description":"Duration in milliseconds how long the health check took.","x-example":128,"format":"int32"},"status":{"type":"string","description":"Service status. Possible values can are: `pass`, `fail`","x-example":"pass"}},"required":["name","ping","status"]},"healthCertificate":{"description":"Health Certificate","type":"object","properties":{"name":{"type":"string","description":"Certificate name","x-example":"\/CN=www.google.com"},"subjectSN":{"type":"string","description":"Subject SN","x-example":""},"issuerOrganisation":{"type":"string","description":"Issuer organisation","x-example":""},"validFrom":{"type":"string","description":"Valid from","x-example":"1704200998"},"validTo":{"type":"string","description":"Valid to","x-example":"1711458597"},"signatureTypeSN":{"type":"string","description":"Signature type SN","x-example":"RSA-SHA256"}},"required":["name","subjectSN","issuerOrganisation","validFrom","validTo","signatureTypeSN"]},"healthTime":{"description":"Health Time","type":"object","properties":{"remoteTime":{"type":"integer","description":"Current unix timestamp on trustful remote server.","x-example":1639490751,"format":"int32"},"localTime":{"type":"integer","description":"Current unix timestamp of local server where Appwrite runs.","x-example":1639490844,"format":"int32"},"diff":{"type":"integer","description":"Difference of unix remote and local timestamps in milliseconds.","x-example":93,"format":"int32"}},"required":["remoteTime","localTime","diff"]},"headers":{"description":"Headers","type":"object","properties":{"name":{"type":"string","description":"Header name.","x-example":"Content-Type"},"value":{"type":"string","description":"Header value.","x-example":"application\/json"}},"required":["name","value"]},"mfaChallenge":{"description":"MFA Challenge","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","userId","expire"]},"mfaType":{"description":"MFAType","type":"object","properties":{"backups":{"type":"array","description":"Backup codes.","items":{"type":"string"},"x-example":true},"secret":{"type":"string","description":"Secret token used for TOTP factor.","x-example":true},"uri":{"type":"string","description":"URI for authenticator apps.","x-example":true}},"required":["backups","secret","uri"]},"mfaFactors":{"description":"MFAFactors","type":"object","properties":{"totp":{"type":"boolean","description":"TOTP","x-example":true},"phone":{"type":"boolean","description":"Phone","x-example":true},"email":{"type":"boolean","description":"Email","x-example":true}},"required":["totp","phone","email"]},"provider":{"description":"Provider","type":"object","properties":{"$id":{"type":"string","description":"Provider ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Provider creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Provider update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"The name for the provider instance.","x-example":"Mailgun"},"provider":{"type":"string","description":"The name of the provider service.","x-example":"mailgun"},"enabled":{"type":"boolean","description":"Is provider enabled?","x-example":true},"type":{"type":"string","description":"Type of provider.","x-example":"sms"},"credentials":{"type":"object","additionalProperties":true,"description":"Provider credentials.","x-example":{"key":"123456789"}},"options":{"type":"object","additionalProperties":true,"description":"Provider options.","x-example":{"from":"sender-email@mydomain"}}},"required":["$id","$createdAt","$updatedAt","name","provider","enabled","type","credentials"]},"message":{"description":"Message","type":"object","properties":{"$id":{"type":"string","description":"Message ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Message creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Message update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerType":{"type":"string","description":"Message provider type.","x-example":"email"},"topics":{"type":"array","description":"Topic IDs set as recipients.","items":{"type":"string"},"x-example":["5e5ea5c16897e"]},"users":{"type":"array","description":"User IDs set as recipients.","items":{"type":"string"},"x-example":["5e5ea5c16897e"]},"targets":{"type":"array","description":"Target IDs set as recipients.","items":{"type":"string"},"x-example":["5e5ea5c16897e"]},"scheduledAt":{"type":"string","description":"The scheduled time for message.","x-example":"2020-10-15T06:38:00.000+00:00","x-nullable":true},"deliveredAt":{"type":"string","description":"The time when the message was delivered.","x-example":"2020-10-15T06:38:00.000+00:00","x-nullable":true},"deliveryErrors":{"type":"array","description":"Delivery errors if any.","items":{"type":"string"},"x-example":["Failed to send message to target 5e5ea5c16897e: Credentials not valid."],"x-nullable":true},"deliveredTotal":{"type":"integer","description":"Number of recipients the message was delivered to.","x-example":1,"format":"int32"},"data":{"type":"object","additionalProperties":true,"description":"Data of the message.","x-example":{"subject":"Welcome to Appwrite","content":"Hi there, welcome to Appwrite family."}},"status":{"type":"string","description":"Status of delivery.","x-example":"Message status can be one of the following: processing, sent, cancelled, failed."}},"required":["$id","$createdAt","$updatedAt","providerType","topics","users","targets","deliveredTotal","data","status"]},"topic":{"description":"Topic","type":"object","properties":{"$id":{"type":"string","description":"Topic ID.","x-example":"259125845563242502"},"$createdAt":{"type":"string","description":"Topic creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Topic update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"The name of the topic.","x-example":"events"},"emailTotal":{"type":"integer","description":"Total count of email subscribers subscribed to the topic.","x-example":100,"format":"int32"},"smsTotal":{"type":"integer","description":"Total count of SMS subscribers subscribed to the topic.","x-example":100,"format":"int32"},"pushTotal":{"type":"integer","description":"Total count of push subscribers subscribed to the topic.","x-example":100,"format":"int32"},"subscribe":{"type":"array","description":"Subscribe permissions.","items":{"type":"string"},"x-example":"users"}},"required":["$id","$createdAt","$updatedAt","name","emailTotal","smsTotal","pushTotal","subscribe"]},"subscriber":{"description":"Subscriber","type":"object","properties":{"$id":{"type":"string","description":"Subscriber ID.","x-example":"259125845563242502"},"$createdAt":{"type":"string","description":"Subscriber creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Subscriber update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"targetId":{"type":"string","description":"Target ID.","x-example":"259125845563242502"},"target":{"type":"object","description":"Target.","x-example":{"$id":"259125845563242502","$createdAt":"2020-10-15T06:38:00.000+00:00","$updatedAt":"2020-10-15T06:38:00.000+00:00","providerType":"email","providerId":"259125845563242502","name":"ageon-app-email","identifier":"random-mail@email.org","userId":"5e5ea5c16897e"},"items":{"type":"object","$ref":"#\/definitions\/target"}},"userId":{"type":"string","description":"Topic ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User Name.","x-example":"Aegon Targaryen"},"topicId":{"type":"string","description":"Topic ID.","x-example":"259125845563242502"},"providerType":{"type":"string","description":"The target provider type. Can be one of the following: `email`, `sms` or `push`.","x-example":"email"}},"required":["$id","$createdAt","$updatedAt","targetId","target","userId","userName","topicId","providerType"]},"target":{"description":"Target","type":"object","properties":{"$id":{"type":"string","description":"Target ID.","x-example":"259125845563242502"},"$createdAt":{"type":"string","description":"Target creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Target update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Target Name.","x-example":"Aegon apple token"},"userId":{"type":"string","description":"User ID.","x-example":"259125845563242502"},"providerId":{"type":"string","description":"Provider ID.","x-example":"259125845563242502","x-nullable":true},"providerType":{"type":"string","description":"The target provider type. Can be one of the following: `email`, `sms` or `push`.","x-example":"email"},"identifier":{"type":"string","description":"The target identifier.","x-example":"token"}},"required":["$id","$createdAt","$updatedAt","name","userId","providerType","identifier"]}},"externalDocs":{"description":"Full API docs, specs and tutorials","url":"https:\/\/appwrite.io\/docs"}} \ No newline at end of file From 6c4b0ecd5bc47ea12b7e976aecb875a4f088b698 Mon Sep 17 00:00:00 2001 From: Jake Barnby Date: Tue, 20 Feb 2024 23:27:40 +1300 Subject: [PATCH 83/87] Simplify allow list --- app/controllers/api/functions.php | 4 +--- app/controllers/api/projects.php | 4 +--- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/app/controllers/api/functions.php b/app/controllers/api/functions.php index 11eaa49393..66b995adae 100644 --- a/app/controllers/api/functions.php +++ b/app/controllers/api/functions.php @@ -172,9 +172,7 @@ App::post('/v1/functions') ->action(function (string $functionId, string $name, string $runtime, array $execute, array $events, string $schedule, int $timeout, bool $enabled, bool $logging, string $entrypoint, string $commands, string $installationId, string $providerRepositoryId, string $providerBranch, bool $providerSilentMode, string $providerRootDirectory, string $templateRepository, string $templateOwner, string $templateRootDirectory, string $templateBranch, Request $request, Response $response, Database $dbForProject, Document $project, Document $user, Event $queueForEvents, Build $queueForBuilds, Database $dbForConsole, GitHub $github) use ($redeployVcs) { $functionId = ($functionId == 'unique()') ? ID::unique() : $functionId; - $allowList = empty(App::getEnv('_APP_FUNCTIONS_RUNTIMES')) - ? [] - : \explode(',', App::getEnv('_APP_FUNCTIONS_RUNTIMES')); + $allowList = \array_filter(\explode(',', App::getEnv('_APP_FUNCTIONS_RUNTIMES', ''))); if (!empty($allowList) && !\in_array($runtime, $allowList)) { throw new Exception(Exception::FUNCTION_RUNTIME_UNSUPPORTED, 'Runtime "' . $runtime . '" is not supported'); diff --git a/app/controllers/api/projects.php b/app/controllers/api/projects.php index 428e97ff50..73202a6e0a 100644 --- a/app/controllers/api/projects.php +++ b/app/controllers/api/projects.php @@ -84,9 +84,7 @@ App::post('/v1/projects') throw new Exception(Exception::TEAM_NOT_FOUND); } - $allowList = empty(App::getEnv('_APP_PROJECT_REGIONS')) - ? [] - : \explode(',', App::getEnv('_APP_PROJECT_REGIONS')); + $allowList = \array_filter(\explode(',', App::getEnv('_APP_PROJECT_REGIONS', ''))); if (!empty($allowList) && !\in_array($region, $allowList)) { throw new Exception(Exception::PROJECT_REGION_UNSUPPORTED, 'Region "' . $region . '" is not supported'); From 2f711c84ed177090db463f69bd63a9a451454162 Mon Sep 17 00:00:00 2001 From: Jake Barnby Date: Wed, 21 Feb 2024 00:40:55 +1300 Subject: [PATCH 84/87] Remove callback resources from workers --- app/controllers/api/functions.php | 12 +-- app/controllers/api/vcs.php | 4 +- app/controllers/shared/api.php | 12 ++- app/worker.php | 93 ++++++++++++----------- src/Appwrite/Platform/Workers/Builds.php | 26 +++---- src/Appwrite/Platform/Workers/Deletes.php | 91 ++++++++++------------ 6 files changed, 117 insertions(+), 121 deletions(-) diff --git a/app/controllers/api/functions.php b/app/controllers/api/functions.php index 21d5928267..19408e31cc 100644 --- a/app/controllers/api/functions.php +++ b/app/controllers/api/functions.php @@ -121,9 +121,7 @@ $redeployVcs = function (Request $request, Document $function, Document $project ->setType(BUILD_TYPE_DEPLOYMENT) ->setResource($function) ->setDeployment($deployment) - ->setTemplate($template) - ->setProject($project) - ->trigger(); + ->setTemplate($template); }; App::post('/v1/functions') @@ -1196,9 +1194,7 @@ App::post('/v1/functions/:functionId/deployments') $queueForBuilds ->setType(BUILD_TYPE_DEPLOYMENT) ->setResource($function) - ->setDeployment($deployment) - ->setProject($project) - ->trigger(); + ->setDeployment($deployment); } else { if ($deployment->isEmpty()) { $deployment = $dbForProject->createDocument('deployments', new Document([ @@ -1478,9 +1474,7 @@ App::post('/v1/functions/:functionId/deployments/:deploymentId/builds/:buildId') $queueForBuilds ->setType(BUILD_TYPE_DEPLOYMENT) ->setResource($function) - ->setDeployment($deployment) - ->setProject($project) - ->trigger(); + ->setDeployment($deployment); $queueForEvents ->setParam('functionId', $function->getId()) diff --git a/app/controllers/api/vcs.php b/app/controllers/api/vcs.php index 2bc94885b1..09ec5d7690 100644 --- a/app/controllers/api/vcs.php +++ b/app/controllers/api/vcs.php @@ -238,9 +238,7 @@ $createGitDeployments = function (GitHub $github, string $providerInstallationId $queueForBuilds ->setType(BUILD_TYPE_DEPLOYMENT) ->setResource($function) - ->setDeployment($deployment) - ->setProject($project) - ->trigger(); + ->setDeployment($deployment); //TODO: Add event? } diff --git a/app/controllers/shared/api.php b/app/controllers/shared/api.php index 810d778a21..7becb3c522 100644 --- a/app/controllers/shared/api.php +++ b/app/controllers/shared/api.php @@ -2,6 +2,7 @@ use Appwrite\Auth\Auth; use Appwrite\Event\Audit; +use Appwrite\Event\Build; use Appwrite\Event\Database as EventDatabase; use Appwrite\Event\Delete; use Appwrite\Event\Event; @@ -305,10 +306,11 @@ App::init() ->inject('queueForAudits') ->inject('queueForDeletes') ->inject('queueForDatabase') + ->inject('queueForBuilds') ->inject('queueForUsage') ->inject('dbForProject') ->inject('mode') - ->action(function (App $utopia, Request $request, Response $response, Document $project, Document $user, Event $queueForEvents, Messaging $queueForMessaging, Audit $queueForAudits, Delete $queueForDeletes, EventDatabase $queueForDatabase, Usage $queueForUsage, Database $dbForProject, string $mode) use ($databaseListener) { + ->action(function (App $utopia, Request $request, Response $response, Document $project, Document $user, Event $queueForEvents, Messaging $queueForMessaging, Audit $queueForAudits, Delete $queueForDeletes, EventDatabase $queueForDatabase, Build $queueForBuilds, Usage $queueForUsage, Database $dbForProject, string $mode) use ($databaseListener) { $route = $utopia->getRoute(); @@ -396,6 +398,7 @@ App::init() $queueForDeletes->setProject($project); $queueForDatabase->setProject($project); + $queueForBuilds->setProject($project); $dbForProject ->on(Database::EVENT_DOCUMENT_CREATE, 'calculate-usage', fn ($event, $document) => $databaseListener($event, $document, $project, $queueForUsage, $dbForProject)) @@ -513,11 +516,12 @@ App::shutdown() ->inject('queueForUsage') ->inject('queueForDeletes') ->inject('queueForDatabase') + ->inject('queueForBuilds') ->inject('dbForProject') ->inject('queueForFunctions') ->inject('mode') ->inject('dbForConsole') - ->action(function (App $utopia, Request $request, Response $response, Document $project, Document $user, Event $queueForEvents, Audit $queueForAudits, Usage $queueForUsage, Delete $queueForDeletes, EventDatabase $queueForDatabase, Database $dbForProject, Func $queueForFunctions, string $mode, Database $dbForConsole) use ($parseLabel) { + ->action(function (App $utopia, Request $request, Response $response, Document $project, Document $user, Event $queueForEvents, Audit $queueForAudits, Usage $queueForUsage, Delete $queueForDeletes, EventDatabase $queueForDatabase, Build $queueForBuilds, Database $dbForProject, Func $queueForFunctions, string $mode, Database $dbForConsole) use ($parseLabel) { $responsePayload = $response->getPayload(); @@ -618,6 +622,10 @@ App::shutdown() $queueForDatabase->trigger(); } + if (!empty($queueForBuilds->getType())) { + $queueForBuilds->trigger(); + } + /** * Cache label */ diff --git a/app/worker.php b/app/worker.php index 2080970acb..701f7b7036 100644 --- a/app/worker.php +++ b/app/worker.php @@ -45,8 +45,7 @@ Server::setResource('dbForConsole', function (Cache $cache, Registry $register) $database = $pools ->get('console') ->pop() - ->getResource() - ; + ->getResource(); $adapter = new Database($database, $cache); $adapter->setNamespace('_console'); @@ -54,26 +53,6 @@ Server::setResource('dbForConsole', function (Cache $cache, Registry $register) return $adapter; }, ['cache', 'register']); -Server::setResource('dbForProject', function (Cache $cache, Registry $register, Message $message, Database $dbForConsole) { - $payload = $message->getPayload() ?? []; - $project = new Document($payload['project'] ?? []); - - if ($project->isEmpty() || $project->getId() === 'console') { - return $dbForConsole; - } - - $pools = $register->get('pools'); - $database = $pools - ->get($project->getAttribute('database')) - ->pop() - ->getResource() - ; - - $adapter = new Database($database, $cache); - $adapter->setNamespace('_' . $project->getInternalId()); - return $adapter; -}, ['cache', 'register', 'message', 'dbForConsole']); - Server::setResource('project', function (Message $message, Database $dbForConsole) { $payload = $message->getPayload() ?? []; $project = new Document($payload['project'] ?? []); @@ -81,10 +60,26 @@ Server::setResource('project', function (Message $message, Database $dbForConsol if ($project->getId() === 'console') { return $project; } + return $dbForConsole->getDocument('projects', $project->getId()); - ; }, ['message', 'dbForConsole']); +Server::setResource('dbForProject', function (Cache $cache, Registry $register, Message $message, Document $project, Database $dbForConsole) { + if ($project->isEmpty() || $project->getId() === 'console') { + return $dbForConsole; + } + + $pools = $register->get('pools'); + $database = $pools + ->get($project->getAttribute('database')) + ->pop() + ->getResource(); + + $adapter = new Database($database, $cache); + $adapter->setNamespace('_' . $project->getInternalId()); + return $adapter; +}, ['cache', 'register', 'message', 'project', 'dbForConsole']); + Server::setResource('getProjectDB', function (Group $pools, Database $dbForConsole, $cache) { $databases = []; // TODO: @Meldiron This should probably be responsibility of utopia-php/pools @@ -143,72 +138,84 @@ Server::setResource('cache', function (Registry $register) { return new Cache(new Sharding($adapters)); }, ['register']); + Server::setResource('log', fn() => new Log()); + Server::setResource('queueForUsage', function (Connection $queue) { return new Usage($queue); }, ['queue']); + Server::setResource('queue', function (Group $pools) { return $pools->get('queue')->pop()->getResource(); }, ['pools']); + Server::setResource('queueForDatabase', function (Connection $queue) { return new EventDatabase($queue); }, ['queue']); + Server::setResource('queueForMessaging', function (Connection $queue) { return new Messaging($queue); }, ['queue']); + Server::setResource('queueForMails', function (Connection $queue) { return new Mail($queue); }, ['queue']); + Server::setResource('queueForBuilds', function (Connection $queue) { return new Build($queue); }, ['queue']); + Server::setResource('queueForDeletes', function (Connection $queue) { return new Delete($queue); }, ['queue']); + Server::setResource('queueForEvents', function (Connection $queue) { return new Event($queue); }, ['queue']); + Server::setResource('queueForAudits', function (Connection $queue) { return new Audit($queue); }, ['queue']); + Server::setResource('queueForFunctions', function (Connection $queue) { return new Func($queue); }, ['queue']); + Server::setResource('queueForCertificates', function (Connection $queue) { return new Certificate($queue); }, ['queue']); + Server::setResource('queueForMigrations', function (Connection $queue) { return new Migration($queue); }, ['queue']); + Server::setResource('queueForHamster', function (Connection $queue) { return new Hamster($queue); }, ['queue']); + Server::setResource('logger', function (Registry $register) { return $register->get('logger'); }, ['register']); + Server::setResource('pools', function (Registry $register) { return $register->get('pools'); }, ['register']); -Server::setResource('getFunctionsDevice', function () { - return function (string $projectId) { - return getDevice(APP_STORAGE_FUNCTIONS . '/app-' . $projectId); - }; -}); -Server::setResource('getFilesDevice', function () { - return function (string $projectId) { - return getDevice(APP_STORAGE_UPLOADS . '/app-' . $projectId); - }; -}); -Server::setResource('getBuildsDevice', function () { - return function (string $projectId) { - return getDevice(APP_STORAGE_BUILDS . '/app-' . $projectId); - }; -}); -Server::setResource('getCacheDevice', function () { - return function (string $projectId) { - return getDevice(APP_STORAGE_CACHE . '/app-' . $projectId); - }; -}); + +Server::setResource('functionsDevice', function (Document $project) { + return getDevice(APP_STORAGE_FUNCTIONS . '/app-' . $project->getId()); +}, ['project']); + +Server::setResource('filesDevice', function (Document $project) { + return getDevice(APP_STORAGE_UPLOADS . '/app-' . $project->getId()); +}, ['project']); + +Server::setResource('buildsDevice', function (Document $project) { + return getDevice(APP_STORAGE_BUILDS . '/app-' . $project->getId()); +}, ['project']); + +Server::setResource('cacheDevice', function (Document $project) { + return getDevice(APP_STORAGE_CACHE . '/app-' . $project->getId()); +}, ['project']); $pools = $register->get('pools'); $platform = new Appwrite(); diff --git a/src/Appwrite/Platform/Workers/Builds.php b/src/Appwrite/Platform/Workers/Builds.php index d23cfbff94..3d2ef365be 100644 --- a/src/Appwrite/Platform/Workers/Builds.php +++ b/src/Appwrite/Platform/Workers/Builds.php @@ -25,6 +25,7 @@ use Utopia\Database\Helpers\ID; use Utopia\Logger\Log; use Utopia\Platform\Action; use Utopia\Queue\Message; +use Utopia\Storage\Device; use Utopia\Storage\Device\Local; use Utopia\VCS\Adapter\Git\GitHub; @@ -49,9 +50,9 @@ class Builds extends Action ->inject('queueForUsage') ->inject('cache') ->inject('dbForProject') - ->inject('getFunctionsDevice') + ->inject('functionsDevice') ->inject('log') - ->callback(fn($message, Database $dbForConsole, Event $queueForEvents, Func $queueForFunctions, Usage $usage, Cache $cache, Database $dbForProject, callable $getFunctionsDevice, Log $log) => $this->action($message, $dbForConsole, $queueForEvents, $queueForFunctions, $usage, $cache, $dbForProject, $getFunctionsDevice, $log)); + ->callback(fn($message, Database $dbForConsole, Event $queueForEvents, Func $queueForFunctions, Usage $usage, Cache $cache, Database $dbForProject, Device $functionsDevice, Log $log) => $this->action($message, $dbForConsole, $queueForEvents, $queueForFunctions, $usage, $cache, $dbForProject, $functionsDevice, $log)); } /** @@ -62,12 +63,12 @@ class Builds extends Action * @param Usage $queueForUsage * @param Cache $cache * @param Database $dbForProject - * @param callable $getFunctionsDevice + * @param Device $functionsDevice * @param Log $log * @return void * @throws \Utopia\Database\Exception */ - public function action(Message $message, Database $dbForConsole, Event $queueForEvents, Func $queueForFunctions, Usage $queueForUsage, Cache $cache, Database $dbForProject, callable $getFunctionsDevice, Log $log): void + public function action(Message $message, Database $dbForConsole, Event $queueForEvents, Func $queueForFunctions, Usage $queueForUsage, Cache $cache, Database $dbForProject, Device $functionsDevice, Log $log): void { $payload = $message->getPayload() ?? []; @@ -89,7 +90,7 @@ class Builds extends Action case BUILD_TYPE_RETRY: Console::info('Creating build for deployment: ' . $deployment->getId()); $github = new GitHub($cache); - $this->buildDeployment($getFunctionsDevice, $queueForFunctions, $queueForEvents, $queueForUsage, $dbForConsole, $dbForProject, $github, $project, $resource, $deployment, $template, $log); + $this->buildDeployment($functionsDevice, $queueForFunctions, $queueForEvents, $queueForUsage, $dbForConsole, $dbForProject, $github, $project, $resource, $deployment, $template, $log); break; default: @@ -98,7 +99,7 @@ class Builds extends Action } /** - * @param callable $getFunctionsDevice + * @param Device $functionsDevice * @param Func $queueForFunctions * @param Event $queueForEvents * @param Usage $queueForUsage @@ -114,7 +115,7 @@ class Builds extends Action * @throws \Utopia\Database\Exception * @throws Exception */ - protected function buildDeployment(callable $getFunctionsDevice, Func $queueForFunctions, Event $queueForEvents, Usage $queueForUsage, Database $dbForConsole, Database $dbForProject, GitHub $github, Document $project, Document $function, Document $deployment, Document $template, Log $log): void + protected function buildDeployment(Device $functionsDevice, Func $queueForFunctions, Event $queueForEvents, Usage $queueForUsage, Database $dbForConsole, Database $dbForProject, GitHub $github, Document $project, Document $function, Document $deployment, Document $template, Log $log): void { $executor = new Executor(App::getEnv('_APP_EXECUTOR_HOST')); @@ -156,7 +157,6 @@ class Builds extends Action $durationStart = \microtime(true); $buildId = $deployment->getAttribute('buildId', ''); $isNewBuild = empty($buildId); - $deviceFunctions = $getFunctionsDevice($project->getId()); if ($isNewBuild) { $buildId = ID::unique(); @@ -170,7 +170,7 @@ class Builds extends Action 'path' => '', 'runtime' => $function->getAttribute('runtime'), 'source' => $deployment->getAttribute('path', ''), - 'sourceType' => strtolower($deviceFunctions->getType()), + 'sourceType' => strtolower($functionsDevice->getType()), 'logs' => '', 'endTime' => null, 'duration' => 0, @@ -188,7 +188,7 @@ class Builds extends Action $installationId = $deployment->getAttribute('installationId', ''); $providerRepositoryId = $deployment->getAttribute('providerRepositoryId', ''); $providerCommitHash = $deployment->getAttribute('providerCommitHash', ''); - $isVcsEnabled = $providerRepositoryId ? true : false; + $isVcsEnabled = !empty($providerRepositoryId); $owner = ''; $repositoryName = ''; @@ -311,10 +311,8 @@ class Builds extends Action Console::execute('tar --exclude code.tar.gz -czf ' . $tmpPathFile . ' -C /tmp/builds/' . \escapeshellcmd($buildId) . '/code' . (empty($rootDirectory) ? '' : '/' . $rootDirectory) . ' .', '', $stdout, $stderr); - $deviceFunctions = $getFunctionsDevice($project->getId()); - - $path = $deviceFunctions->getPath($deployment->getId() . '.' . \pathinfo('code.tar.gz', PATHINFO_EXTENSION)); - $result = $localDevice->transfer($tmpPathFile, $path, $deviceFunctions); + $path = $functionsDevice->getPath($deployment->getId() . '.' . \pathinfo('code.tar.gz', PATHINFO_EXTENSION)); + $result = $localDevice->transfer($tmpPathFile, $path, $functionsDevice); if (!$result) { throw new \Exception("Unable to move file"); diff --git a/src/Appwrite/Platform/Workers/Deletes.php b/src/Appwrite/Platform/Workers/Deletes.php index 542f7f41db..473bdc6de9 100644 --- a/src/Appwrite/Platform/Workers/Deletes.php +++ b/src/Appwrite/Platform/Workers/Deletes.php @@ -44,22 +44,22 @@ class Deletes extends Action ->inject('message') ->inject('dbForConsole') ->inject('getProjectDB') - ->inject('getFilesDevice') - ->inject('getFunctionsDevice') - ->inject('getBuildsDevice') - ->inject('getCacheDevice') + ->inject('filesDevice') + ->inject('functionsDevice') + ->inject('buildsDevice') + ->inject('cacheDevice') ->inject('abuseRetention') ->inject('executionRetention') ->inject('auditRetention') ->inject('log') - ->callback(fn ($message, $dbForConsole, callable $getProjectDB, callable $getFilesDevice, callable $getFunctionsDevice, callable $getBuildsDevice, callable $getCacheDevice, string $abuseRetention, string $executionRetention, string $auditRetention, Log $log) => $this->action($message, $dbForConsole, $getProjectDB, $getFilesDevice, $getFunctionsDevice, $getBuildsDevice, $getCacheDevice, $abuseRetention, $executionRetention, $auditRetention, $log)); + ->callback(fn ($message, $dbForConsole, callable $getProjectDB, Device $filesDevice, Device $functionsDevice, Device $buildsDevice, Device $cacheDevice, string $abuseRetention, string $executionRetention, string $auditRetention, Log $log) => $this->action($message, $dbForConsole, $getProjectDB, $filesDevice, $functionsDevice, $buildsDevice, $cacheDevice, $abuseRetention, $executionRetention, $auditRetention, $log)); } /** * @throws Exception * @throws Throwable */ - public function action(Message $message, Database $dbForConsole, callable $getProjectDB, callable $getFilesDevice, callable $getFunctionsDevice, callable $getBuildsDevice, callable $getCacheDevice, string $abuseRetention, string $executionRetention, string $auditRetention, Log $log): void + public function action(Message $message, Database $dbForConsole, callable $getProjectDB, Device $filesDevice, Device $functionsDevice, Device $buildsDevice, Device $cacheDevice, string $abuseRetention, string $executionRetention, string $auditRetention, Log $log): void { $payload = $message->getPayload() ?? []; @@ -87,13 +87,13 @@ class Deletes extends Action $this->deleteCollection($getProjectDB, $document, $project); break; case DELETE_TYPE_PROJECTS: - $this->deleteProject($dbForConsole, $getProjectDB, $getFilesDevice, $getFunctionsDevice, $getBuildsDevice, $getCacheDevice, $document); + $this->deleteProject($dbForConsole, $getProjectDB, $filesDevice, $functionsDevice, $buildsDevice, $cacheDevice, $document); break; case DELETE_TYPE_FUNCTIONS: - $this->deleteFunction($dbForConsole, $getProjectDB, $getFunctionsDevice, $getBuildsDevice, $document, $project); + $this->deleteFunction($dbForConsole, $getProjectDB, $functionsDevice, $buildsDevice, $document, $project); break; case DELETE_TYPE_DEPLOYMENTS: - $this->deleteDeployment($getProjectDB, $getFunctionsDevice, $getBuildsDevice, $document, $project); + $this->deleteDeployment($getProjectDB, $functionsDevice, $buildsDevice, $document, $project); break; case DELETE_TYPE_USERS: $this->deleteUser($getProjectDB, $document, $project); @@ -101,11 +101,11 @@ class Deletes extends Action case DELETE_TYPE_TEAMS: $this->deleteMemberships($getProjectDB, $document, $project); if ($project->getId() === 'console') { - $this->deleteProjectsByTeam($dbForConsole, $getProjectDB, $getFilesDevice, $getFunctionsDevice, $getBuildsDevice, $getCacheDevice, $document); + $this->deleteProjectsByTeam($dbForConsole, $getProjectDB, $filesDevice, $functionsDevice, $buildsDevice, $cacheDevice, $document); } break; case DELETE_TYPE_BUCKETS: - $this->deleteBucket($getProjectDB, $getFilesDevice, $document, $project); + $this->deleteBucket($getProjectDB, $filesDevice, $document, $project); break; case DELETE_TYPE_INSTALLATIONS: $this->deleteInstallation($dbForConsole, $getProjectDB, $document, $project); @@ -511,14 +511,14 @@ class Deletes extends Action * @throws Restricted * @throws Structure */ - private function deleteProjectsByTeam(Database $dbForConsole, callable $getProjectDB, callable $getFilesDevice, callable $getFunctionsDevice, callable $getBuildsDevice, callable $getCacheDevice, Document $document): void + private function deleteProjectsByTeam(Database $dbForConsole, callable $getProjectDB, Device $filesDevice, Device $functionsDevice, Device $buildsDevice, Device $cacheDevice, Document $document): void { $projects = $dbForConsole->find('projects', [ Query::equal('teamInternalId', [$document->getInternalId()]) ]); foreach ($projects as $project) { - $this->deleteProject($dbForConsole, $getProjectDB, $getFilesDevice, $getFunctionsDevice, $getBuildsDevice, $getCacheDevice, $project); + $this->deleteProject($dbForConsole, $getProjectDB, $filesDevice, $functionsDevice, $buildsDevice, $cacheDevice, $project); $dbForConsole->deleteDocument('projects', $project->getId()); } } @@ -526,17 +526,17 @@ class Deletes extends Action /** * @param Database $dbForConsole * @param callable $getProjectDB - * @param callable $getFilesDevice - * @param callable $getFunctionsDevice - * @param callable $getBuildsDevice - * @param callable $getCacheDevice + * @param Device $filesDevice + * @param Device $functionsDevice + * @param Device $buildsDevice + * @param Device $cacheDevice * @param Document $document * @return void * @throws Exception * @throws Authorization * @throws \Utopia\Database\Exception */ - private function deleteProject(Database $dbForConsole, callable $getProjectDB, callable $getFilesDevice, callable $getFunctionsDevice, callable $getBuildsDevice, callable $getCacheDevice, Document $document): void + private function deleteProject(Database $dbForConsole, callable $getProjectDB, Device $filesDevice, Device $functionsDevice, Device $buildsDevice, Device $cacheDevice, Document $document): void { $projectId = $document->getId(); $projectInternalId = $document->getInternalId(); @@ -602,15 +602,10 @@ class Deletes extends Action } // Delete all storage directories - $uploads = $getFilesDevice($projectId); - $functions = $getFunctionsDevice($projectId); - $builds = $getBuildsDevice($projectId); - $cache = $getCacheDevice($projectId); - - $uploads->delete($uploads->getRoot(), true); - $functions->delete($functions->getRoot(), true); - $builds->delete($builds->getRoot(), true); - $cache->delete($cache->getRoot(), true); + $filesDevice->delete($filesDevice->getRoot(), true); + $functionsDevice->delete($functionsDevice->getRoot(), true); + $buildsDevice->delete($buildsDevice->getRoot(), true); + $cacheDevice->delete($cacheDevice->getRoot(), true); } /** @@ -772,14 +767,14 @@ class Deletes extends Action /** * @param callable $getProjectDB - * @param callable $getFunctionsDevice - * @param callable $getBuildsDevice + * @param Device $functionsDevice + * @param Device $buildsDevice * @param Document $document function document * @param Document $project * @return void * @throws Exception */ - private function deleteFunction(Database $dbForConsole, callable $getProjectDB, callable $getFunctionsDevice, callable $getBuildsDevice, Document $document, Document $project): void + private function deleteFunction(Database $dbForConsole, callable $getProjectDB, Device $functionsDevice, Device $buildsDevice, Document $document, Document $project): void { $projectId = $project->getId(); $dbForProject = $getProjectDB($project); @@ -811,25 +806,25 @@ class Deletes extends Action * Delete Deployments */ Console::info("Deleting deployments for function " . $functionId); - $functionsStorage = $getFunctionsDevice($projectId); + $deploymentInternalIds = []; $this->deleteByGroup('deployments', [ Query::equal('resourceInternalId', [$functionInternalId]) - ], $dbForProject, function (Document $document) use ($functionsStorage, &$deploymentInternalIds) { + ], $dbForProject, function (Document $document) use ($functionsDevice, &$deploymentInternalIds) { $deploymentInternalIds[] = $document->getInternalId(); - $this->deleteDeploymentFiles($functionsStorage, $document); + $this->deleteDeploymentFiles($functionsDevice, $document); }); /** * Delete builds */ Console::info("Deleting builds for function " . $functionId); - $buildsStorage = $getBuildsDevice($projectId); + foreach ($deploymentInternalIds as $deploymentInternalId) { $this->deleteByGroup('builds', [ Query::equal('deploymentInternalId', [$deploymentInternalId]) - ], $dbForProject, function (Document $document) use ($buildsStorage) { - $this->deleteBuildFiles($buildsStorage, $document); + ], $dbForProject, function (Document $document) use ($buildsDevice) { + $this->deleteBuildFiles($buildsDevice, $document); }); } @@ -929,14 +924,14 @@ class Deletes extends Action /** * @param callable $getProjectDB - * @param callable $getFunctionsDevice - * @param callable $getBuildsDevice + * @param Device $functionsDevice + * @param Device $buildsDevice * @param Document $document * @param Document $project * @return void * @throws Exception */ - private function deleteDeployment(callable $getProjectDB, callable $getFunctionsDevice, callable $getBuildsDevice, Document $document, Document $project): void + private function deleteDeployment(callable $getProjectDB, Device $functionsDevice, Device $buildsDevice, Document $document, Document $project): void { $projectId = $project->getId(); $dbForProject = $getProjectDB($project); @@ -946,18 +941,17 @@ class Deletes extends Action /** * Delete deployment files */ - $functionsStorage = $getFunctionsDevice($projectId); - $this->deleteDeploymentFiles($functionsStorage, $document); + $this->deleteDeploymentFiles($functionsDevice, $document); /** * Delete builds */ Console::info("Deleting builds for deployment " . $deploymentId); - $buildsStorage = $getBuildsDevice($projectId); + $this->deleteByGroup('builds', [ Query::equal('deploymentInternalId', [$deploymentInternalId]) - ], $dbForProject, function (Document $document) use ($buildsStorage) { - $this->deleteBuildFiles($buildsStorage, $document); + ], $dbForProject, function (Document $document) use ($buildsDevice) { + $this->deleteBuildFiles($buildsDevice, $document); }); /** @@ -1101,21 +1095,18 @@ class Deletes extends Action /** * @param callable $getProjectDB - * @param callable $getFilesDevice + * @param Device $filesDevice * @param Document $document * @param Document $project * @return void */ - private function deleteBucket(callable $getProjectDB, callable $getFilesDevice, Document $document, Document $project): void + private function deleteBucket(callable $getProjectDB, Device $filesDevice, Document $document, Document $project): void { - $projectId = $project->getId(); $dbForProject = $getProjectDB($project); $dbForProject->deleteCollection('bucket_' . $document->getInternalId()); - $device = $getFilesDevice($projectId); - - $device->deletePath($document->getId()); + $filesDevice->deletePath($document->getId()); } /** From bbce53cda5d93d464d7b01d5071bacdc8edd0726 Mon Sep 17 00:00:00 2001 From: Jake Barnby Date: Wed, 21 Feb 2024 01:06:35 +1300 Subject: [PATCH 85/87] Auto trigger messaging events --- app/controllers/api/account.php | 12 ++-- app/controllers/api/messaging.php | 24 +++---- app/controllers/api/teams.php | 4 +- app/controllers/shared/api.php | 12 ++-- app/init.php | 8 +++ src/Appwrite/Event/Messaging.php | 25 +++++++- .../Platform/Tasks/ScheduleMessages.php | 1 + src/Appwrite/Platform/Workers/Messaging.php | 63 +++++++++---------- 8 files changed, 89 insertions(+), 60 deletions(-) diff --git a/app/controllers/api/account.php b/app/controllers/api/account.php index dd009864a7..11facf04a7 100644 --- a/app/controllers/api/account.php +++ b/app/controllers/api/account.php @@ -1773,10 +1773,10 @@ App::post('/v1/account/tokens/phone') ]); $queueForMessaging + ->setType(MESSAGE_SEND_TYPE_INTERNAL) ->setMessage($messageDoc) ->setRecipients([$phone]) - ->setProviderType(MESSAGE_TYPE_SMS) - ->trigger(); + ->setProviderType(MESSAGE_TYPE_SMS); $queueForEvents->setPayload( $response->output( @@ -3314,10 +3314,10 @@ App::post('/v1/account/verification/phone') ]); $queueForMessaging + ->setType(MESSAGE_SEND_TYPE_INTERNAL) ->setMessage($messageDoc) ->setRecipients([$user->getAttribute('phone')]) - ->setProviderType(MESSAGE_TYPE_SMS) - ->trigger(); + ->setProviderType(MESSAGE_TYPE_SMS); $queueForEvents ->setParam('userId', $user->getId()) @@ -3677,14 +3677,14 @@ App::post('/v1/account/mfa/challenge') } $queueForMessaging + ->setType(MESSAGE_SEND_TYPE_INTERNAL) ->setMessage(new Document([ '$id' => $challenge->getId(), 'data' => [ 'content' => $code, ], ])) - ->setRecipients([$user->getAttribute('phone')]) - ->trigger(); + ->setRecipients([$user->getAttribute('phone')]); break; case 'email': if (empty(App::getEnv('_APP_SMTP_HOST'))) { diff --git a/app/controllers/api/messaging.php b/app/controllers/api/messaging.php index 8e6c73f3bc..d8af44f7fd 100644 --- a/app/controllers/api/messaging.php +++ b/app/controllers/api/messaging.php @@ -2635,8 +2635,8 @@ App::post('/v1/messaging/messages/email') switch ($status) { case MessageStatus::PROCESSING: $queueForMessaging - ->setMessageId($message->getId()) - ->trigger(); + ->setType(MESSAGE_SEND_TYPE_EXTERNAL) + ->setMessageId($message->getId()); break; case MessageStatus::SCHEDULED: $schedule = $dbForConsole->createDocument('schedules', new Document([ @@ -2744,8 +2744,8 @@ App::post('/v1/messaging/messages/sms') switch ($status) { case MessageStatus::PROCESSING: $queueForMessaging - ->setMessageId($message->getId()) - ->trigger(); + ->setType(MESSAGE_SEND_TYPE_EXTERNAL) + ->setMessageId($message->getId()); break; case MessageStatus::SCHEDULED: $schedule = $dbForConsole->createDocument('schedules', new Document([ @@ -2870,8 +2870,8 @@ App::post('/v1/messaging/messages/push') switch ($status) { case MessageStatus::PROCESSING: $queueForMessaging - ->setMessageId($message->getId()) - ->trigger(); + ->setType(MESSAGE_SEND_TYPE_EXTERNAL) + ->setMessageId($message->getId()); break; case MessageStatus::SCHEDULED: $schedule = $dbForConsole->createDocument('schedules', new Document([ @@ -3263,8 +3263,8 @@ App::patch('/v1/messaging/messages/email/:messageId') if ($status === MessageStatus::PROCESSING) { $queueForMessaging - ->setMessageId($message->getId()) - ->trigger(); + ->setType(MESSAGE_SEND_TYPE_EXTERNAL) + ->setMessageId($message->getId()); } $queueForEvents @@ -3382,8 +3382,8 @@ App::patch('/v1/messaging/messages/sms/:messageId') if ($status === MessageStatus::PROCESSING) { $queueForMessaging - ->setMessageId($message->getId()) - ->trigger(); + ->setType(MESSAGE_SEND_TYPE_EXTERNAL) + ->setMessageId($message->getId()); } $queueForEvents @@ -3541,8 +3541,8 @@ App::patch('/v1/messaging/messages/push/:messageId') if ($status === MessageStatus::PROCESSING) { $queueForMessaging - ->setMessageId($message->getId()) - ->trigger(); + ->setType(MESSAGE_SEND_TYPE_EXTERNAL) + ->setMessageId($message->getId()); } $queueForEvents diff --git a/app/controllers/api/teams.php b/app/controllers/api/teams.php index 775fc27bb7..d5db918cd7 100644 --- a/app/controllers/api/teams.php +++ b/app/controllers/api/teams.php @@ -658,10 +658,10 @@ App::post('/v1/teams/:teamId/memberships') ]); $queueForMessaging + ->setType(MESSAGE_SEND_TYPE_INTERNAL) ->setMessage($messageDoc) ->setRecipients([$phone]) - ->setProviderType('SMS') - ->trigger(); + ->setProviderType('SMS'); } } diff --git a/app/controllers/shared/api.php b/app/controllers/shared/api.php index 7becb3c522..7f8041396f 100644 --- a/app/controllers/shared/api.php +++ b/app/controllers/shared/api.php @@ -384,9 +384,6 @@ App::init() ->setProject($project) ->setUser($user); - $queueForMessaging - ->setProject($project); - $queueForAudits ->setMode($mode) ->setUserAgent($request->getUserAgent('')) @@ -395,10 +392,10 @@ App::init() ->setProject($project) ->setUser($user); - $queueForDeletes->setProject($project); $queueForDatabase->setProject($project); $queueForBuilds->setProject($project); + $queueForMessaging->setProject($project); $dbForProject ->on(Database::EVENT_DOCUMENT_CREATE, 'calculate-usage', fn ($event, $document) => $databaseListener($event, $document, $project, $queueForUsage, $dbForProject)) @@ -517,11 +514,12 @@ App::shutdown() ->inject('queueForDeletes') ->inject('queueForDatabase') ->inject('queueForBuilds') + ->inject('queueForMessaging') ->inject('dbForProject') ->inject('queueForFunctions') ->inject('mode') ->inject('dbForConsole') - ->action(function (App $utopia, Request $request, Response $response, Document $project, Document $user, Event $queueForEvents, Audit $queueForAudits, Usage $queueForUsage, Delete $queueForDeletes, EventDatabase $queueForDatabase, Build $queueForBuilds, Database $dbForProject, Func $queueForFunctions, string $mode, Database $dbForConsole) use ($parseLabel) { + ->action(function (App $utopia, Request $request, Response $response, Document $project, Document $user, Event $queueForEvents, Audit $queueForAudits, Usage $queueForUsage, Delete $queueForDeletes, EventDatabase $queueForDatabase, Build $queueForBuilds, Messaging $queueForMessaging, Database $dbForProject, Func $queueForFunctions, string $mode, Database $dbForConsole) use ($parseLabel) { $responsePayload = $response->getPayload(); @@ -626,6 +624,10 @@ App::shutdown() $queueForBuilds->trigger(); } + if (!empty($queueForMessaging->getType())) { + $queueForBuilds->trigger(); + } + /** * Cache label */ diff --git a/app/init.php b/app/init.php index 4e75b5198b..8935fc7265 100644 --- a/app/init.php +++ b/app/init.php @@ -142,9 +142,11 @@ const APP_SOCIAL_DEV = 'https://dev.to/appwrite'; const APP_SOCIAL_STACKSHARE = 'https://stackshare.io/appwrite'; const APP_SOCIAL_YOUTUBE = 'https://www.youtube.com/c/appwrite?sub_confirmation=1'; const APP_HOSTNAME_INTERNAL = 'appwrite'; + // Database Reconnect const DATABASE_RECONNECT_SLEEP = 2; const DATABASE_RECONNECT_MAX_ATTEMPTS = 10; + // Database Worker Types const DATABASE_TYPE_CREATE_ATTRIBUTE = 'createAttribute'; const DATABASE_TYPE_CREATE_INDEX = 'createIndex'; @@ -152,9 +154,11 @@ const DATABASE_TYPE_DELETE_ATTRIBUTE = 'deleteAttribute'; const DATABASE_TYPE_DELETE_INDEX = 'deleteIndex'; const DATABASE_TYPE_DELETE_COLLECTION = 'deleteCollection'; const DATABASE_TYPE_DELETE_DATABASE = 'deleteDatabase'; + // Build Worker Types const BUILD_TYPE_DEPLOYMENT = 'deployment'; const BUILD_TYPE_RETRY = 'retry'; + // Deletion Types const DELETE_TYPE_DATABASES = 'databases'; const DELETE_TYPE_DOCUMENT = 'document'; @@ -180,6 +184,10 @@ const DELETE_TYPE_TOPIC = 'topic'; const DELETE_TYPE_TARGET = 'target'; const DELETE_TYPE_EXPIRED_TARGETS = 'invalid_targets'; const DELETE_TYPE_SESSION_TARGETS = 'session_targets'; + +// Message types +const MESSAGE_SEND_TYPE_INTERNAL = 'internal'; +const MESSAGE_SEND_TYPE_EXTERNAL = 'external'; // Mail Types const MAIL_TYPE_VERIFICATION = 'verification'; const MAIL_TYPE_MAGIC_SESSION = 'magicSession'; diff --git a/src/Appwrite/Event/Messaging.php b/src/Appwrite/Event/Messaging.php index 9201799355..b39af7e4fe 100644 --- a/src/Appwrite/Event/Messaging.php +++ b/src/Appwrite/Event/Messaging.php @@ -8,13 +8,13 @@ use Utopia\Queue\Client; class Messaging extends Event { + protected string $type = ''; protected ?string $messageId = null; protected ?Document $message = null; protected ?array $recipients = null; protected ?string $scheduledAt = null; protected ?string $providerType = null; - public function __construct(protected Connection $connection) { parent::__construct($connection); @@ -24,6 +24,29 @@ class Messaging extends Event ->setClass(Event::MESSAGING_CLASS_NAME); } + /** + * Sets type for the build event. + * + * @param string $type Can be `MESSAGE_TYPE_INTERNAL` or `MESSAGE_TYPE_EXTERNAL`. + * @return self + */ + public function setType(string $type): self + { + $this->type = $type; + + return $this; + } + + /** + * Returns set type for the function event. + * + * @return string + */ + public function getType(): string + { + return $this->type; + } + /** * Sets recipient for the messaging event. * diff --git a/src/Appwrite/Platform/Tasks/ScheduleMessages.php b/src/Appwrite/Platform/Tasks/ScheduleMessages.php index cc641b434a..bc9b6d37d2 100644 --- a/src/Appwrite/Platform/Tasks/ScheduleMessages.php +++ b/src/Appwrite/Platform/Tasks/ScheduleMessages.php @@ -50,6 +50,7 @@ class ScheduleMessages extends ScheduleBase $queueForMessaging = new Messaging($connection); $queueForMessaging + ->setType(MESSAGE_SEND_TYPE_EXTERNAL) ->setMessageId($schedule['resourceId']) ->setProject($schedule['project']) ->trigger(); diff --git a/src/Appwrite/Platform/Workers/Messaging.php b/src/Appwrite/Platform/Workers/Messaging.php index 083eae4e0a..2b954e4a9e 100644 --- a/src/Appwrite/Platform/Workers/Messaging.php +++ b/src/Appwrite/Platform/Workers/Messaging.php @@ -44,7 +44,7 @@ class Messaging extends Action } /** - * @throws Exception + * @throws \Exception */ public function __construct() { @@ -63,7 +63,7 @@ class Messaging extends Action * @param Database $dbForProject * @param Usage $queueForUsage * @return void - * @throws Exception + * @throws \Exception */ public function action(Message $message, Log $log, Database $dbForProject, Usage $queueForUsage): void { @@ -73,28 +73,27 @@ class Messaging extends Action throw new Exception('Missing payload'); } + $type = $payload['type'] ?? ''; + $project = new Document($payload['project'] ?? []); - if ( - !\is_null($payload['message']) - && !\is_null($payload['recipients']) - && $payload['providerType'] === MESSAGE_TYPE_SMS - ) { - // Message was triggered internally - $this->processInternalSMSMessage( - new Document($payload['message']), - new Document($payload['project'] ?? []), - $payload['recipients'], - $queueForUsage, - $log, - ); - } else { - $message = $dbForProject->getDocument('messages', $payload['messageId']); + switch ($type) { + case MESSAGE_SEND_TYPE_INTERNAL: + $message = new Document($payload['message'] ?? []); + $recipients = $payload['recipients'] ?? []; - $this->processMessage($dbForProject, $message); + $this->sendInternalSMSMessage($message, $project, $recipients, $queueForUsage, $log); + break; + case MESSAGE_SEND_TYPE_EXTERNAL: + $message = $dbForProject->getDocument('messages', $payload['messageId']); + + $this->sendExternalMessage($dbForProject, $message); + break; + default: + throw new Exception('Unknown message type: ' . $type); } } - private function processMessage(Database $dbForProject, Document $message): void + private function sendExternalMessage(Database $dbForProject, Document $message): void { $topicIds = $message->getAttribute('topics', []); $targetIds = $message->getAttribute('targets', []); @@ -216,9 +215,9 @@ class Messaging extends Action $identifiers = $identifiers[$providerId]; $adapter = match ($provider->getAttribute('type')) { - MESSAGE_TYPE_SMS => $this->sms($provider), - MESSAGE_TYPE_PUSH => $this->push($provider), - MESSAGE_TYPE_EMAIL => $this->email($provider), + MESSAGE_TYPE_SMS => $this->getSmsAdapter($provider), + MESSAGE_TYPE_PUSH => $this->getPushAdapter($provider), + MESSAGE_TYPE_EMAIL => $this->getEmailAdapter($provider), default => throw new Exception(Exception::PROVIDER_INCORRECT_TYPE) }; @@ -234,7 +233,7 @@ class Messaging extends Action $messageData->setAttribute('to', $batch); $data = match ($provider->getAttribute('type')) { - MESSAGE_TYPE_SMS => $this->buildSMSMessage($messageData, $provider), + MESSAGE_TYPE_SMS => $this->buildSmsMessage($messageData, $provider), MESSAGE_TYPE_PUSH => $this->buildPushMessage($messageData), MESSAGE_TYPE_EMAIL => $this->buildEmailMessage($dbForProject, $messageData, $provider), default => throw new Exception(Exception::PROVIDER_INCORRECT_TYPE) @@ -312,7 +311,7 @@ class Messaging extends Action $dbForProject->updateDocument('messages', $message->getId(), $message); } - private function processInternalSMSMessage(Document $message, Document $project, array $recipients, Usage $queueForUsage, Log $log): void + private function sendInternalSMSMessage(Document $message, Document $project, array $recipients, Usage $queueForUsage, Log $log): void { if (empty(App::getEnv('_APP_SMS_PROVIDER')) || empty(App::getEnv('_APP_SMS_FROM'))) { throw new \Exception('Skipped SMS processing. Missing "_APP_SMS_PROVIDER" or "_APP_SMS_FROM" environment variables.'); @@ -375,7 +374,7 @@ class Messaging extends Action ] ]); - $adapter = $this->sms($provider); + $adapter = $this->getSmsAdapter($provider); $maxBatchSize = $adapter->getMaxMessagesPerRequest(); $batches = \array_chunk($recipients, $maxBatchSize); @@ -385,7 +384,7 @@ class Messaging extends Action return function () use ($batch, $message, $provider, $adapter, $batchIndex, $project, $queueForUsage) { $message->setAttribute('to', $batch); - $data = $this->buildSMSMessage($message, $provider); + $data = $this->buildSmsMessage($message, $provider); try { $adapter->send($data); @@ -401,11 +400,7 @@ class Messaging extends Action }, $batches)); } - public function shutdown(): void - { - } - - private function sms(Document $provider): ?SMSAdapter + private function getSmsAdapter(Document $provider): ?SMSAdapter { $credentials = $provider->getAttribute('credentials'); @@ -420,7 +415,7 @@ class Messaging extends Action }; } - private function push(Document $provider): ?PushAdapter + private function getPushAdapter(Document $provider): ?PushAdapter { $credentials = $provider->getAttribute('credentials'); @@ -437,7 +432,7 @@ class Messaging extends Action }; } - private function email(Document $provider): ?EmailAdapter + private function getEmailAdapter(Document $provider): ?EmailAdapter { $credentials = $provider->getAttribute('credentials', []); $options = $provider->getAttribute('options', []); @@ -503,7 +498,7 @@ class Messaging extends Action return new Email($to, $subject, $content, $fromName, $fromEmail, $replyToName, $replyToEmail, $cc, $bcc, null, $html); } - private function buildSMSMessage(Document $message, Document $provider): SMS + private function buildSmsMessage(Document $message, Document $provider): SMS { $to = $message['to']; $content = $message['data']['content']; From 7ad9b1cd5f61ba54540ede0ea8b74501b9a5ff04 Mon Sep 17 00:00:00 2001 From: Jake Barnby Date: Wed, 21 Feb 2024 01:54:17 +1300 Subject: [PATCH 86/87] Try fix phone test --- .../Account/AccountCustomClientTest.php | 31 +++++++++---------- 1 file changed, 15 insertions(+), 16 deletions(-) diff --git a/tests/e2e/Services/Account/AccountCustomClientTest.php b/tests/e2e/Services/Account/AccountCustomClientTest.php index 1169686ada..ba525f556e 100644 --- a/tests/e2e/Services/Account/AccountCustomClientTest.php +++ b/tests/e2e/Services/Account/AccountCustomClientTest.php @@ -1918,7 +1918,7 @@ class AccountCustomClientTest extends Scope $this->assertEquals($response['body']['users'][0]['email'], $email); } - + #[Retry(count: 2)] public function testCreatePhone(): array { $number = '+123456789'; @@ -1941,22 +1941,8 @@ class AccountCustomClientTest extends Scope $this->assertEquals(true, (new DatetimeValidator())->isValid($response['body']['expire'])); $userId = $response['body']['userId']; - $messageId = $response['body']['$id']; - /** - * Test for FAILURE - */ - $response = $this->client->call(Client::METHOD_POST, '/account/tokens/phone', array_merge([ - 'origin' => 'http://localhost', - 'content-type' => 'application/json', - 'x-appwrite-project' => $this->getProject()['$id'], - ]), [ - 'userId' => ID::unique() - ]); - - $this->assertEquals(400, $response['headers']['status-code']); - - \sleep(5); + \sleep(7); $smsRequest = $this->getLastRequest(); @@ -1972,6 +1958,19 @@ class AccountCustomClientTest extends Scope $data['id'] = $userId; $data['number'] = $number; + /** + * Test for FAILURE + */ + $response = $this->client->call(Client::METHOD_POST, '/account/tokens/phone', array_merge([ + 'origin' => 'http://localhost', + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + ]), [ + 'userId' => ID::unique() + ]); + + $this->assertEquals(400, $response['headers']['status-code']); + return $data; } From b265106af20d15e82a8f54a7b673dd45689ceec8 Mon Sep 17 00:00:00 2001 From: Jake Barnby Date: Wed, 21 Feb 2024 02:20:09 +1300 Subject: [PATCH 87/87] Fix tests --- app/controllers/shared/api.php | 2 +- src/Appwrite/Event/Messaging.php | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/app/controllers/shared/api.php b/app/controllers/shared/api.php index 7f8041396f..141553e12d 100644 --- a/app/controllers/shared/api.php +++ b/app/controllers/shared/api.php @@ -625,7 +625,7 @@ App::shutdown() } if (!empty($queueForMessaging->getType())) { - $queueForBuilds->trigger(); + $queueForMessaging->trigger(); } /** diff --git a/src/Appwrite/Event/Messaging.php b/src/Appwrite/Event/Messaging.php index b39af7e4fe..f8ea9e472b 100644 --- a/src/Appwrite/Event/Messaging.php +++ b/src/Appwrite/Event/Messaging.php @@ -185,6 +185,7 @@ class Messaging extends Event $client = new Client($this->queue, $this->connection); return $client->enqueue([ + 'type' => $this->type, 'project' => $this->project, 'user' => $this->user, 'messageId' => $this->messageId,

    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

    6BWq;!7u+WFQ%#~1%Q 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 z eH?E-3-i}_z_7v`ld66a#!B}0>}KYpUP)cD126*SMH- zu5}`d1~uROD|ZyN8>mIp{Qa+*c@wppjSy`e6iBR)=Z2XEF=J{)Y9(rkC4B|)7L}d0 z&krwCt5SQKT8-Lm%Bl++)GYqrBDy6^skMy|-4S~Hr`8kpsg3qOIWmFY%rjgY{5&aow?=JDTuC){iNh}zfGJoqd5 z3AImi`ZH?!@rT+MeuLD7zohn6MytQRq4oo{Z*%$YsD1CW=Dy^|+wc>$Kd5>97ylRG zuQpq${YLF~BeI!G?ay3BZwG3BQ=e$SsZTs;QGHSx%TS+;#t7<@Q~!hd6x7Sqp}rUO zDXFhaeJbj6QlFao%+#l$J_Ge>z0&%0c5#LJ^nQKCj1f|wk@`#n57$RXY=Zb-pGBNm zsn0eTv~?{3^*LOF?ZoPHQD2<;+|(D8Y< zp+1uO($tqw){?@d3)GwxfzRNi00^xtDUzmBAy2pR{`4VMa znh%4^l+=1r_xP_tauxM}`qk7&QTO048Lcn%YpMGY5cTV`kuUlN3EViehM9en@Mht# zp=F6KP#;8o>QSyURzYi>j)2_ql4rU83iSu5SE=7ay+&Q}yk4i?P?2V?p+!9%EQNJn z0;qR9%a+Kxf`7eF{SNA*bNO4S-i!cD)W`UtoaG9s-%DNb zzka_nv(>8pAoVw?kEQ-N^@s9W9;UAIpSmuN)*qX|S5HuX*2JhkDSV3h(;7(62*+iX zh<=XxE0TGh`U^G&M88P=rJVK%oYSvTe=YCp*QtB_w_Nr3Thu?J{xk4 zQh%TNhtvoA|6IdI)IZMYPgKg60BQT2`p?wAp#GisUsC@n_y5=8d?VBnkZn=w-&6lV zWit&wivB6nFWQ5@O8qMQP58T^{|0{jPZ}1q|Dyi4UlFnB(U^$F6f`ELF_}v?CJ|0L zm_*K*d@#8hSeDT=rj*Q7SyJ>gLM;J}>1a&vSzdMq;f%tWocaA}G=^v_L}O+e^U|1w z#%#)+)o^H*aiV9ZF$aw~vqsUFOU$`xc;wHbL2lA~H0D?C0yKPeF#gaLK25}2n8qSB z6yzI=inADv#YK#CnQTYub}mU{DH=-;?QpX5v)*YeOJjE$%hA}9#_}}Qr?CQ!f2sJ2 zG*%L^axT1zoVluSHR0-p{(p##HB3grdKPG`C3$3q;g0}D)7U^+8`9WJ z#J_25L}L@tS^~TaHnpUm(PjIV#^%c1Lg-HcenQ^ZiiWoLjjhGshK7Q+w|6^nws*;F z3)cqf+!fu zbAs?h8YhXEum?T<=lV~laRH4pXq+XnGwl#S#Mv~?7jcg8TpH(PMaClyb7qakg*0rw zTqLoJY5b4IB_>1TQsHGZuB73I|4Lrr#VxE^_-$Mz^j82ht}&FrwT2?Dqj5cr8%2*2 z-e9O&Zpw+9Evc-4h6j8a1z~7to}m#t;rt?vB&SQ__#*%f>&j}@7xH{vOvV3($A20v zVQMJC#$m^PNSQ`=@CQi^UjoD#O>dO(F&`9;rST9A?fef4h7JnEe3XXbeB&`C9~VAhn0x6d z8c&Z;Dt8=>XK6f7<2g%aSu|dt@#4_7nFC*vmqcK zgx}7!y-VW*8t++B{P%OQ50(6ghHw6*&4YiQ`x%X|X?!l3FN9wjiufuY>I(i15B@a1 zqha{HXdk!s$yHe&{giQN{G2m?rSS)i-)Q`9%iqw{v3-0UZ2U=c8XAAep1&QN6VZg` z#55Kyx{o%V+$&t`+}psg*5B z)8oGh&|Hn?&LUQ)`7fIPrs?sY=9-2g6#tuRi(ZH3x-{3Pxn7nlRU6RUaPX9uo%1v| zqPaOu1%FqiwV=5v&CLd-M(#y(3z{C@X?pypxh2i5M0oHQv5gbiAxU#Pn%j%11){0o z-`vSKgQ(cth31(wccpnS&D|uqJI#G*?%_&Y|DHmtcki6Dj}rs^`_bHA0tW~^_>1uP zpF8RhnupRnndV_MkE3}w&7)`@kxL#q;)iuq#DhOgUk*eZJ6Q6X$1ADe-#k&Y$AA0C zho@vT%~NTfmeZ%xJYxcxvuK`2^K6aYb8^eibpapG=hM8L<^?n_r1{@0SNw~F7w2M^ zD0wN(%UovA{3~c)nF-`#SJQlq<~1~LqxnB$(!7>tf#!8IZs51V!;Hpc<`qg(Nr*R#!41xdilr zfh<>T9ILE{guVobc!cJonR3ZIPRl066SU@}`6SKHX+9+}kN-5Eq4^ojaWvnj`K)m? zB%Y)BJk2*~zCcrE}y>R`?P?^HWc18=&MDw5F%|rHuTFmIdUmY5qj>8*#oh6!D$# zd!Zfynx^VU(_kFw@!(JM7vZnM--Pz%FXR7_Nz$|>;4jJl{ZHAJAO6sqgx2J=JpR*~ z%+OjV+JnCcXes`;^7!AHn$|R~tu^gHe``9E6lVrQ5i`=7NyG@@P|lxO$ytOR|7p!8 zoLxAF;n1q{(wd9bDzxSna~@jr(VEw2|JXcj%};ANS_{xxl$JjN&{`>0VG`#-G>#NSZ(Z_n~8D`wutv@*wT zLTgi62h-Y&)(*5bSMCoQu0 z(mI3IVd5N4>l9i?&^n&hk+hDXbrh|m|LFxUbu6vp{x9bQS|`yOoc~DA1m{1kQ(f2# zo<{5RK|xQRN$WydXVE&3*4ci$qjiq(T)*dF7CPsA8GnIq+FO3J$oWqD{$E+X1kk#K z)}pMAU>@HChePO+#;^H!v0I z3Q(&fy6ahkR`+R*_B%7JTl}_+Stz7+oAlf+yo1)AwC)yt*TC&Q_{SJ$5La9G(z=h< zLz3}F09p^w^3A{Kv4c|1f0))Iv>p@xQA7FUaV4L~lA@oY^%AY8X+1~l8RLjKPUuU3 zDWvthk}n8f%$TBIrsct$)+@ALrS+!h*MzUr`se&d9L4|E+eYVeO6x*P@!uoo2Xt&~ ze@J_2S|5>SQRQP=3jVE6Y5guep9wz~+7j?3t#4_4Wl3?q7Jg%x*Yce>-_!bm)^D^j zu^;`3to4)dXW=ixUky!ufZp~$NTKzoGrgsM(fZpXTRIWxq)03oo1jj^(BCGxkC0 zo|SYy5wnrbPC6H<2Y=EzCy<$&bY9YVjN?o#Op=*jxB%(GBD4gg_Wds(OQZ_^PAsbA zV#38qNBVC!rArK6m8MG?U!0{$JzA13BV3krIZ_4Wba~PhNY^18d`o z(p6l86RTx}a(&j2u0gsM>6#Pp*LHgRoJxHOAYG4i{Rw0?B;AZu@!xYdBHdVGn+P{` z$sc=;p1V2e79#TapKeLIRhH{(Xu1vQ@ub_5?kO?F|8#rO9hBUWbXO5Ok>>F~-NiWm zkd^LcgmQN$-6Nyb(!EHJAl;kvAX1P2r2CQ{AYwn#{WHnI14ZgffJz-KfkU!f(nFOz zOn7)U)I}djdX$Kx4MiLyJXUzz1d=C^o=Ex(=}DxcNKYocl=KwR3rJ5TJ)872(lba; zw}OMIl%7d?mR)?!hPSLbhx9yYJ~top=ev7t=k{Zd^uMGRi?~pDkxBaPxb%{YFbyhu z8R_Mu|0BJE)JE5pq*u9sCXv5teB(<}#ebi7*OFdOdY$FERrauBVs`5_y@9k(dLwC- z^d{1n^k&imsZAVh{~FbGydT@79k<-abC*=Z%vAlpq@4)NpB^+gY-7i+r2u| zqvnv_NqUzbr;B51Nym`hM|uzGyrfJ!-He_ z^ik5sysYUQ82kk3Q|3L=Cnp#Wy8r2|7)Say>9eGtkUmHHHtF-Euadq%`V#4ju6AJU z%cQS((yTJg-m|ZfzDfEz=^I&yaBsNxJox9Hd581^(sxPUHxB80gHBYt#QBi)Bhrsu z-kN5&vL`b6Pf1PqGt#d~KPR;z@rAq2WPEshmCBT_eoOkD`^v6gYQ&QM;KKIt z2=*iCucSX&lJsZNUz~5k1K<8e`iHW7#W5!7pQL|f-gC|m>(HKv_H48#rae9FNoY?= zds5nyyQ%HTOwuiBPeGfE_Ohm@Jr(U~Xiq(;&T4N@OM5!E(A3(;MoxPM+B4Ihk@g5T zwLO!2()mLJmpaoo|MsEnKLMdiXQ#a&?Kx=ALwioza}7;=ngn$J$26Fi+Vj$$U&8Yl z%AN&WPuA-8LbONHUYNGoxd`n=vyRSk)ttrsbj9{~?Imb0>03VQ@%B>Vk6dUkL;Gaf z%hKM6_HruXM?kb!puGz16=ly#Lf`*emS}DM+pE!DkM`=c*Ai1pKzj|*z699HMO*RT zTdhZc_PRc^Jn8YDwl6m#Hl(fiuhA~f#TTCbKw@W75we}TK0;qy%p`9 zXm73DZ45l!ko=LfJ^tHg zXp+~(Ifk~m?gZM$WqjJld+xybCraj|j6?er+7;TT(!Ngo(`cVg`#jobSW=ubg=Y!R zrhSfxa}DjI)}2rLGTIkp9NPb-eIacR__RI#)4tfV2Clx;XqCELSyu?JqG&KHyVn#NqDm`8)jMs+<-8biIf}DF6NwswhiyHCvB)_ zr-7jg|R(SD8g%VNGF89)EGWG?VJ zZQuXXelzF1CE>R-8QSmC{+{-Gv_Gc(zOp_LeklCNO63JVq5T!@PmQmv&xD^#`4>Vz z0?Kp0R_-^#Z)yACkI@qQf%c!YGbKOL{+;$uw13WXf1&M%KbBP4-!i`FKPI66qWw3W ziJjk>DC5(a#E6`pjE;wQI+F{hpo54h4Mq47kcesM%t>cjIy2IlPMqm;nHh}8#b%;2 zg3fFb7@{+CF5^o8omn$UIeE|IV7C*D|zVOGm-Kvo4(t=&VO)edk*|(FTvshL+5Y z--ynC=xj_!0l%|}^lX}4!=vNzUmSk~$eCNx*^17#bhf6mjc-3B_BH1IyDoG#HR(`nGDNUUm&qEpM8RySr& zHzm-bqxj!x4^6QcosOZ)2D(vcemakcc)&M@od<jX~sOh{z=UwsN6MFm~zXzuCp_m`h`B=m!p6jjnl+I^^bF+y`_rD!~ z|LdIYM249Lx|7hI)Qfi~qpM)vot*9zbf*$iOF&mkfbHJ9Q|G0oQSP+=Sk?6jG^f4Xye(%RLXo9+U1=Mi&W;e5jRT_Bqg z-395cOjq&0yRdQ>p}V+-tFTMrc9q9f?0$U2VG8D13a2vYY=A7-s**@=`9hLO> zPj_eGE_8RJyQ|Uu$pU_Nccblk72Q4Q_UZ0L_b9r1)7>YxVPCq3s`!4w{pot}r+c9A zAVU!c3lH&R_R!HijBdXF?;b(-NYBb9a`$Muipkw$=qmnqkE44E-Q%T1@xObb=#zve zds(y7?oW146~}`=-P1EZ-81N(Db86r$Cm)Q=XlbdF1zQ^9Yyzix>t(tO90*f(!J0H zoW4kSvG5Y1F9CEf6J9R7!Z3HsRdjv-FTUb`_kW_VrK|Ygy*|q|dAc{yjp*JeftxZu z-J6xPTo3+q3v@$!$jWm43kcm<{Gu=smV{-xDcy?EN>=IC=qlQG>vS8Lg{rq@0=dEM zT)v}HT4lO}M*wj~)4he>taNXs`!wC#=-w;-?ZP|g-YMcPy7$n%+h`@n7}~5EJoR+% zqx-1%_tSlVu7`TM57HfLgy@G1W!obe$M+cB$MW3A={_N`Cv%RL06V4WK125#y5s1+ zM%Uv%-RI~k)OVj(@&)0GhSLAC5#qce^d&(2*Xh0^j+TJ#o1))RmjBGAlJC;}jP84M zKcegLpY8{AKQtl}knqQJKc)MLF*AN%_H)U9LH8>W6YT%HU*|I4(wm5`;(zyhx_{8M z0A)emD*8#K{0gXupA9ow$zSRIM%RPCC9^ELe`Yk@za-;JfD^rm=}k*-5_(h8n^c_1 z=uIJFa>Fdv(ZgvQr9CYNy{RoJnQ6w?LT@^H)6*NGHv_$y=*^hPJ*GWslf>(O7F-um=TrndpT1L!TR;i7I z8)s$dZKC9+p0pF=-sVbfL2o;HivPVW#qs!0Pr<*pjSG8nTPJLe^tPwx;ho+N^mY`n zlV>?cOF(ZIqw|LECjRd9_7JhBp@_YNd(+#;&(nJP|F7PDqV=Ody#xGs&4fMoAPFDr zNw4J)dWVWQEa&(VK<@~8M~XN~c(m{s;j#1-@O#H8dAy;oAoj@6JCWW=gQP1th2CHE zPNg@7-f8qwdZ*L7jNTb4c&57A3e^xVAD&!=}Wy$k4FD4G8nj`(d7(HA*A z7#o*}b7_`K?{a!Kt8=fQcO||5(Ywkey}Nbz+0*&Id*fPqqr|^Xs3pL~Zcy?@dJ6uk zMI4)S_66R6UZP}yUPvz%9T{dO(epEH_qnUGTFRc~bR}bouFhb$ZXydzqep|4Yml=)FkKSA>j{5%hEf)YBEv-fKDY4SMg>dz0QfD*KkI zcstMa?|;#I&oJkFAkK$EKmW=3pV0GIP482BpV9k@o*({*qw}BMApX<)n%?*HzM<#G zKJ@$wkSWRZh@<;Iy$Lz~6##la)BA< zGx~wQy*cWSpg$}2Zv$qPCuf%CS!`q)$8GD+CY)X9S3rH|-}m@We{T8<(4WU>B|U)C zpO3!ce|8MpUy!~AWPc(09{>H5y%gv#D*45nW3#V6l75x`67)}}za;%5=r2WoL;6e8 z{}=sb=&vMstqA?)L@!T&1vkm-_4uz=d;F)riYJ{={O>FN_g5b*nthM|%3V{q7X7v9 zTfko@=dU{mEdBNE=V<6}kn!b&f79QM{zmk-pzraYzJh<>gFpSvB)_@;h>d-m^B?*< z(pUWNEB^OA{wr%6`X2o0ZKeYyev5vOek$R%p@@#KYdCcH?DYHe@1j4Nz6X5zw+L@F z)Cjp<$vcF18rrvMhPK+4{@vn?5#HnLwU@njuy*wCr~e}T2k4KZ|Da_lcdYOs`VZ58 zhW;Z;K1%;d`j6!Wt;e6pXh+-9^q&$wJz#20r2nkSK4&Q6dEpEHpQ^KfdYt&bKK{XN zad&rjcUxE-7H5IQ-Q5;<=a0L?rb#`Ov}uaFyR+!Ri`zTjJI%xX&gr@5&Ye4xG)?bJ zrfF-%f#EgAzHUW-kvsNH#{S6Iw;1~+W8Y@%CyafEu^+0{yNrEL#Jx#BuqH0n{_E!> z#(wOI|IJRve#+R-%wW&=bKw_Ov~%?<#%j(#b{u2BR@FCFHK_g0bH;wp*dJ6o-tVp2 z{>0ed8SA_KS+&39{$Ex6&7ofFKUDmavHyttCHy)ZrYD%e%wtP1`7}@NU)I4TN8C-48bA< z8V-WRO!Qx%3zl%4U`c}I36?V5ic1qLlk;T>mh*gYh6F1RtVpmL!AiMjWr9@*R<)u# zpZ$pxtnP{gYnV7tbgBny6YM~+4#8$JtV^&SfrUK5`UD%8-}r_?yEQadHj%QaLmh|B zbA1Z}%YW5wCEQxL4T0wW!FKs8GF8wfo6|ZuKzN`{0IYbBef2mv z*w@;6MKGG+aDqeaufWZ4nEmA1xOep89zk%V?U+9Hb@$2=98GWx!6^jC5*#;d)Gg}a zc!HA%P9QkZ70v86?cQ0z$wND=ojjG`Gy-LQaJqYMI#K$WMkaZi;B0~~3C6hlO_~qVj^Ohjb|KKWrw##`9fxmQJHw$m^QAThp!T(87_y-pLD&9eGC&67-bf?_lthN zPEaCvk)TY_Ca9>BDnWywMi3L!{h2w0IxU;BwH&IL5IjrJA+QNQL6;zP#64uo2%eVS z_kQug{XYb{Ccc%R@?f)5BjCeZvpm|*@N*!+KjeX~mdg3pCtv!9~_M3X>2h|ATMTvj&CW zJA&U;{GLGhAB=ZJDL)eYlyk3W2nc>5u<%#R{x%q71IvH4`jg7}gtQRJwFui#SlTnylWD2V?1qxGAn3lp+xiU3{X&fIsuflX*AAIYxFaw1dDa@m` zGYMy=FpPo{zAy`gS?#@Cn2o~hj#xkb)1`uizx)~<3Uk}L+jd}H;e2`R{1g`O+=l+b zLKJq9VPWAS6r8v@g~ceWNx?qNeatQSW0|pzw_eDQdnMOxe3G-D6B|fRSLF; z6jm0l;?R32=*z!_)zxr~2^y|NVSS0V{!d{Yp`C0L*7MCNY@p(X6gCmrNNA&j$fm;0 z9J+_SLkn9_*p9-M(zo(Dg{>)Ulk;u!w!%`TEDDEEIEun(ZTe7$ zB8LeNr*MSGkq%u~;zv_Bfx1 zt0-Je;bscgsCcbIk?Vxl3vH;SaHG(MfZTJ7YHj{c!96Vh#cvnhLE%oXP|Aqo$Bp0|Bep2sLWo_n64@MK>56os)v+oDh)j3|T@zNeu4 zFBB=fMWI9?bv6oR3d;XN)fJ`GDAXw=6k-Z33Jr-(tM%(hh4v6vRY%x0(T%5to{AZT z7ew59;c1a)gwHw@c}{5m9gr(8N_mOG%enFjg;y!OLE$wDue&Gf-dP?gylEakk`~^k z@UhzZ@OhWQdwCDf`SYDFDZQG*2;#h z`MaBb*r&{euPJMb;ZViN z2`&GJM8YWv?dG2elxYa3ouD{9;cSHZ{%<%V;V?ple>n3{KZLV*KjExibVb713AOkW z+TxEC%YTu12$vw7SA0IgMF{5?Ux08Skp*+-!mj8Zd2vzIE+(`gAlH|aq9Gt$ns6Dy zW&LR&eUSfzD-fs z@2?sN4?1_Qna1 zCOpP(#V#mp&yOQKp73hI69~r;o=A8$;Yoyw`tW4JQwUGB@8u0$orR|po<(>D;h8q; zcDnn5jCyld@r36Pp6517c&xCBn-br{9;cbLB6W&UAi`{MI z4uzZBgtivy7aRz0C%j{jnc8NCq_hfQiO8LMWumaOK1a%xLpy5xL4|VLgjy`{15Z|4=w+7 z99|%NMP}uH_!8mEzDnY&gl~wvM)>GEkU#t z(URWak!b0hEK8&t{v*qOqUCdaMWR)RZ2e!l<$umsm15(9$Qnc&imXYr7STFHHu=wM z*Co;wL1aUK)8({F09Pd1NX3nbH0_Tp|8tLB0uXKPo#I;(ZAD~ZPP8@AHX@e)MB536 z6Djti?fsiw;)n_OPEvLz+J#8-{K$p?qTPrr|IO*X84+3dOCL#O1ByL#Ln+ZdMEeqr zCQ|rE`^$C!(LqE9ijOk0kDBOUN zi+!S_Z7%1w=z=;r)+u`W#}jGJAK703+r6F9N%kEpm$c*EK|VzdPbE5?=rn8YsvNo? zjm{V(XLJ_Pd9s}?JV$u0L+2zqpXg$u3y3Zvx{zp$>28|p`gcTM*de-v=rXm+*MB0* ze{UeVlIUKdtB7tTa(jLQ(KSTZ6J1MmorSq``UPbF?T_e2qMP*`ZT_$0bBiYqiQKDy zhsbS2xBEjX&z(ef6KM$0ahAu1089JmKB7m7?k9SL=mDaKh#s^}yMyV*J~KRQPTkF@ zhK~_FLG-wNSnPC%?!&U^Nna!yOY{s;K$H*_h-yS3QBe&ehxT6#QHjWY_L-<`J=m*U z^~BJgNL?5UH3URWBISQ%`EP#=YPJqhCekI!^FQk4d(v0c)BYwX`{+4(mgp6t=d{J= zg)b1jL}cObit=0j+rwVpSBX9*dX4B^qSuMuB6@@9O>^qg1o_`4ddCizYvPWWyWul> zkLUv;<^Q114~agqR_=HXa>kvCpA#wnBjvwej*h+{QtU@I1h@`~#u0sOJ*zAGYGL#( z#bb%SqqrB*_u7Xah<*|oPh{cm6M*RdQQU;+XNoTLexc}|(XSLIk@GjA-$niq{z>GH z&tJAQ6#Xsy$L2q79~?TdIFWE-FH)S;S`{Y~TKJ3DB>+Vn+H|Nm6~!5(Of8&-;^MtVCwHz((ZZkN`nhKViW|za zk#J+L=e3(s+)Vz>Deg>h3-K-U-nOE+HO1{EY6vK52qqp)0ARIwaLq>5Y zU!{h-2o?Ut-5ghOcZz$c$)3WI4xR3i;@%YZp?E08eJLvHi~CWu{I^Ta;sJw8PJ5c8 zC?1sec`!u_e~P0`(ac}P!zdn3@d(EUr+4v4ibt8p%tuqSfxsRvPm0G;bf^9C6i=jh zg4c)b`n3%T#gizWOfjN(3dM6No~q`jc@M?YRXjuJcJi!zTgv~U<-a;PkK%0<&!>0; z#S182Lh(X186&(XZ*_6*zm($D6m1}o;c|*ssGloy=T+XR+G~W@3a_JRi$A`W;*E|- zxBRDgGeukfr+BN-ep}cKrrb{PL5g=!yid+Mg?CZBJKv%%0g9I4xpF_n2dw$vIX*=3 zNs0=8+mVDhpHM7Oe34?AqO!eM zp=kL}v6i>0Q?&56hs)t&lVU=#MX~K;FyG-0#i!Mfm>`9Gz}t*yU8FG0zceJD-o(CHp2O+#sVO1Az(X*!3wuJxbNjK1h~O1cCn z*(Cs_St!j)N%#DeW*dy2C0qaTol}~N($bXXrnDHPc_=MJX=J;I zT@lz5EZO{@(jpE;>|K-d#VIY3bFKfBY^0EF8A@9DFDl-8iM3#Bz>TZ_`Rl-8!S38i(MB5_?x>*aiXN;dhYw4plLDBt47 zPRzNk1xlL#mo}%gh5TFQJ#0m3>)dG{0jQttj-|AR_@0!M@THL|?nP;Dk$o(UOZy7<6YeiOz@amEq%?|>14^2IAl;S14KjtIryx zdd_1?4ee)B*b=rKn!)zJL+J}jT}tm$N+~@{si#h|ya%^48X!u~nDVO)-;|!C^t#CN z!WSsLDDslgnhlG1OKzLGeO(s)W1{**K{lq~#J{7(42(DFau;*XRx zD3r{m+Mg-?BBJ~s9Cqb@$?{)Se^UA@=YLcBC+GiCo@l_!6H}h#zw4>;WR(A;JUQh} ztcUUxLMTs3d6@WA!l{MRP@dKi@#!c}FEWF0M&V2jMP@eQu6@e0P+p7jtdy6dJR9Yu zRXaQ7IVjI3J}2e5MCKOG<4|PYK@ODXr)=3yc>&4`iYz2tnDQcyn9X0inP)M|i&I`w zh9!n-DKC}xwv4Kl9aLG9<)y4(iWOHBu0(ldkyR+KF0!hf_GO#@i>x7WOl()=VZKZy;ro4^F zwz<9?<>8*YCrEh*%7;@PL3uCAJ5t_5=A9^8{!`Zczr3rs^1r;hwe=qxnPE@LBTaD+ z>uqn!`%&IU{(XmZ755h&K>0wCQIs{|FCV0$4FUN9A5HmC%9i}5_-rp9LHQ)gM^Zjs z{-cCP3y%>VOZhl&&YPS-`9xQh7f&{B`+SP<)LcKE@+FkdpnL)4Gbt-B%4bnNdxEwW z{%Um|<@1MhDHjUIP`*gy;-Ol~mr}l-@@1yjb}y%V1?4OA?Ov7ZS5waOzkDs_>n7;o zhTL-_<(t&W%|o>+-b(rZC_h5^Hp=eLyl$s#QBU~};hn;}{1(MEB9!l?e4i`kd-8yB zYxN-IheRy@^V&!A+Q(G&xbO+#leuRsne_y1p%zgO)K!toCMvrzFT%6_9i ztN4rXSM%6beiQyK{3Czvf6;!7^54`Br2G$6m%9H_*_O&gRHmjfv6(BA2q$$YG8vW0 zMW&!Kr3i!GDpQ%qAJxh=VPv2GTA3MK%&{Ol1>)OaI`; z{>o<3Hy3Up+)}9guWT*8jYB>6?Wm+whEo|WeS0c9P}zyf2s7Aj?C8*LgRJaKWlt)* zjzM=@Ek{V>ld!c(c7<`w(>^U4|O_DtbfR4nAFoK58%k#mLTIn1B+1yU{)j-hg? z$VI}7so4DAaYH-hE~9d}FH*7jzii5XEvHk-^S^Q}mFvvuo`UVb4OAYXawCM|e>rpDo;mTuF9+&3{Dv`*ORGtzUYi8TwfJ!0X`Ow6{6R{zHN{Nc) zKa~oVx=58u&3|ZOcP3O~Yht7^5Y60@vrR>VLZxFK)4P5rsr0D)MJ1!+b@w!%rlQcU zJVV9upNjqeJC*0HiIEqmyh!C$DlfUSk;=<M{VUbDz977{o}S(y-DRg zDjEW;LmL99yhFwE-yU{&->32gl@Gi^%8qZ(!X^$nC(|I1XO;YV)y@3`BC`OP;XQ$|JCXjDwh9L6#f;3f8~$7_RoCN ze^Z@-ipzf=?EhMm>O@p09yqHS0;-czoy;qPhSe$LgzA)3r=vQRiu(MwIt|tTe)+-n zusXMVBHZ3h(o)!B28h5+klE~*Pq&GWxHkIeH@wfv`Q z;h*o`f>f8JYT-|HVc{ZF7ZX|3Z0<_Ax;WJ(?Di5BRkf6HYqGR(8LG>AMSH$HwNPl31p{gOkTCGBLkpEOyqq;iP4XLi7wrf&d%et~>v9@p>;kv^09Ez+@ zbpy|}0~=A@O8UlBHxaSVhNy1lJybWRx<$^nG&0!4)>OBVb6cuAh-@buPIY_lF|>Ui zL3Kw}?IhgUVcyBEGARG6%Kz#fd8<8DHBzV{z@OpOeW>nB^$6+vQQe>Fq2dQnJ&@|b zR7a_3`EQTG%Wb0o)zPN7EB)$WM%?!}s)yU+h7pB-^(fhnwlx8>9V4_alTtm-MC;@P zstWDuiBwOLam7fkJ@Zh&!?JD zy@2ZVR4=4@1=TTBFQKaNuU>3sjb&6dC{!;~Z_59CjH7y`#H*-YEt2Pd)jh}S{u>9Y zH&DHc>Wx%ymF*^~H#;J3_kW6byp8G|D&FoeueviQcT;_g>OE8+qEbHWK%1< z1aM}m4^e$Y%EP(xs3#I1ry5axg6dOLpL9y@vHYhR2n*_Gg7yDuk*Wnd)snDGwIWYd zSQFMAx?1rD)ut~}weVM~c3#_|>bmMueT`~L^=YcT++!aBP_>&na^)GS&r*GX>T~Mk zd9Ta%qLi0}FXx+kMa5Sg%JVwaFQmLd^-YntsD48AZL056eJ5}AF4gxuS1ZeZsy6?p zYWYv~V~4rE8(z{?#9-{;1;kAt%+Ja{tfN zW}^BFwaKaeN^N4Qzft{zs^!1;sO_J^zo`D5H~dG+ztkr3ibHCXP@8mMs9FB!dC~V$CAF!=r<%Yp4K=O**KGaY>(pkDZAOO^IA@kPOgM{h)_g0oQ(J`E9MtBcX7_(m zn@c#ia2}!E|LJ>EQJ)3W7NBN}|I`)|TK;<*wMD5dEpaiSZUL&7XPW)#{s@pMXmqWwEkbS^?z!s_*!bKQQLsp>aHJkwT5s_YKjy)Zfi?f zN4PGv^&Amj-^VYt4XJHKZ6k>r=e3(q+thN&O3E# zcBJcJ@J*1~(Rt6uP&?LfYR8%KtvmCN&&i3@&Qg_zfSQJY+9}jdHG?%djoRrs*Cjyh zOjp#iI6K$Rp=Lvgdr)&j!1*E<&2paF1JrE(FaD5`!ONtvpk_k=wZ{gN`PviID%75&7E*hP zTA#4Kc6Gvc zsP*k@gSD=W__dUp^51x7Hg^|F?P+Q+QG15kb1FVN^EW@JtLLe`s8%mnpKi+MbZhuB zwO5=${8iy={^oqOdV|{c)ZV1_0kyZxW_$iNHQOs{?+V|`_4gfd-*%VyA+?XFjidH4 zwa=w|BK(xvXO83t*@hVDUkbmP;B~iAfSNn1mjB}4InKX{@(}+*&P-Hsl)8|}6K;4D_>N8QF*{(_J!-TU4^FM#D+aYGxZm-=ed=cB$H_4%nUL4ARITMKF{3kesdz6f>A z|Lco7#cmL)FYbv$d6uNU)Ue~GqQ10n8R4=H%_gM2yu=l#uc#&~30D@bBDDE`ZeE@G z`qUNv^)*$y)*!^{Yg1pxaq8;|*Ympg26ApF+{iwMs&72__FR1v>)e#hsBc4kb61pY z3*na3w{mx#QQz9`J#$sYx23)__3d)!aO&F++x&9sI|xTORNEbeJ2{lT3-x`e?<#RO z>U)apPJNGITiA>1&^@S+6z(P5Tey!yXOQ290P6cwKfuo0`hgCut#OzCW2hfY{Z#6Q zP`5~@K3aGv^}}==4i_FFJkp_RZCuFtF;ZM_$5B6#`tkn%aH*eQ9`~&o_k(ZslY}P= zPjRRw9#3~%#WSd%N&Q@LjT&_u0;r$k&}~aQaGvmd;RVz$^i{H5MEwTp7mHs)T_In; zl=@}PEYTh9D?HDYtE68|{Tg+6ZLVKO{rVv%^&6?*N&O~gmj7nqE!1zNejD}w8*-|X z+l6;{k@{WK@1d^KK+l5uy?HW?{tuaff#>Q9P1 zB^)c%Ku|A;hkhPHJ)&OBxs3&u;q?l2%WCRX>NV<3@wzY;HioS^Qluqp3lm{SsIj1) zsyF-pUnh$9ssBy=Y3i@a_6+rBt;)9b9QEgO{(_VjslTLC;$`70{=^V}jk*ii*QtL_ z{SE3C@6_L<{+8bOZ|86Accj}8kSp&~|A6|Z)IS_HdyD!Z250vM?4epY{WBbTf_2g%|bk@aeZ|~RkJ&ke@+$WvRd1{ zxryfynOA7T?qF1n7a+D^CtgsvkZ@t)BEm(9Z6I(D^}Gb}($beCUdoHUmUtQI%Lil@fyVT23PIM#H)x{{u8g3>#Gkwp@`QcURzabxsB$vwgi;(^;Ek)vGPCO zka!E?jfgjuzOm5q-^TQKGh&6mYwmCVh_{qsD?OvFty{kU8*fYN6XNY?El50^roHII z+Y|3V<9gx|G$tqBk@!jCoro_W-kJDt;$4VG67Nd9C-H8!QERoka1V$6DQH`J5g$yv zH}U?&HvcEySGeDhjraiK1AS3VMhOq{oydF$@o0&MdXe}r?bho#+z4l)H!@l5#ikJ;e7D-)*Zuy`0-|$VOD>>sfaYEdcVnaagOudshBYuV0y(ui@iJvBZ#@mRW zC4SCxhpK&n_(kHE#b5GOc|Wfbza{-O;{5*4_zmJWy&<=~O`Na)#P1SMu>KQ&Kpu;x|1@m<$2)1vOJivo^U+w6#{4uEp|OCgQj-N~X#J;Q_kZSo zoBY$T#UBxk6pbZ(t;)(Wf~U#@-I(g1sW@QKMl+OysK4YST!%M zM#FypA$P7xV?7#cxuR?u3mWUtSl1gQt}oR6pN$Rkem3$38k^8KnugoM-Dzw_V>pe? zX>4s5O%2@w+OS(dY1k0pny9O7gxd~#(21(GQGmuM8W#RE4)#^zqiI;Y(>RpI zVNwnk9w9u^p{pH28pqH$jmEJwPNZSsueQh2u>2o#(l|-_$uv$;Kc^1W(m0*QMKsQ! zajraP(m0F8IpSyg9=ut~dBXFB7tpxSCS#2;eljM0F%9K>;}RN|YFn30u&pa-TtnkZ zHP@ifxZ3dv`oEUObrbk+pt&=R8)^JX<0cvjjhksaPU99D574-k#@*`59mCsb+(BcI z|E>r3pm8USyZ*QTduUkx)3{G~ze8`J@gR-I)Z0UDEdz?jT(*rl3&h-&^`j7(ei!LXgg6#hsJv} zx-?#-kyr1W3yx_Tddx^&DG;APH@f8}c=KQt1$s6k7 zO&afryhY>fp&r!g-Q4*;jd3(Spz#Hb4`u#{#-}tsmd*0tcdnv70%&}mx3&2{jltrN z3}4ew&NsfH@huIded9YC-~Vqv<7xcpyLG5eTt7eO-CF*ux8GAwY4Hk`m)O>;=pgA$k$!JbuJv0X&0XVMWLw)J(`=*T%YE~G&hiWL*XF&#W#_EQ@;;}{uYkr7Bt<&eoJ|_qPZ>2t>xTi$f=@z z1;BY^+g`W>%@H(r65r9GGk6cpU1;7%b61*Y(%g;aD4M&|Jb>mNG%ew2?n!f`y4@>p zV)>u*eO0CWZw~UG=7EDSaUs(@i008W52ksTdOJion&x2spZ9Y(P0N4P9!c{k&(--c zG*6^?tg0;kX&x^;!C~ISANG@JYQo<;2fIgx*yY4 zp9=rx`S#n|%?rFJK8EHcG%u3p;vwA;b$c1j8);rn^BNhhka(r=Dw_YB|IKS@UPsf# z{`G!m9C||YCYpDuhns2MLi0A7x8_xLWW1B64FNRo@Ky5PMe}Zn_XsWjy`Sd&G+(6o z0L>Q72WgI_`4CM@el>hV_$bXML^L`yAJ5xb{?mNQ7sUgbHJSyQC7Pk%3QZdVXcoPV zrsY3Pg@3c^MTZh?6rdRkH3T%9j%%M?l5}Y%G&^>9-6gFSd}yXLpP^~_PcxIVpKmwM z|EA@?s%!|L`MmIj-1ZX9FKE6@^F5lc(0r5TtLp7Fn*=sr7rx=Ag5tU~Xj=Z$wD~{H zcYRml@6-H*<_E3^b@Cz2k9;l7kMrI5R8PJP(e>wl5`LB`IM6?i@ znARjBlhT@8M3(^WyVb2JTye0i)|9knr8O0;X=&y2|CY`Ft^d|^YH0aSYX;$r_Bl&y zCgIG&VGdO_i$f{1(VB#E&sLkg=lR+ zYhhZJ)wC9&wJ5En#TTPxlYj9ggi8vS8v2z>TFXdTmez72%R3aY{I^xd)=IS2q_uLc zucF#jg{uiy7p~#ZJ|k=8^Z(Y`($}H2uE=`A^&JkI=``^TY58Na5v`4B-9>8?TBp!* zPkAp|o6#CUYjZibu#Y}lThba%Yb*OUXlrZXHiM<7mRkba&U5Js|JDw!ZEo0+)}HEW zCtA8RXzilnuEO2SX-98&yVhv!;l~}jEw(k%s!ZIQ*1@#)k!@dE`}uV(TKk*94W_LF zXle4_8YRy`UKc-v)-kk3iytb~pwK#8{0Le{I%0!q>nJHl`=Yq=zoqx zJ~~+VZ9VSvVUzAa>j_$x|Kd*x#|i_7)^=!)*NSLa__+JXiqO#M&V4hiNRKeP0)5$uhX8*MDx!< zTXEE$llEM+*P%T(?Imf?LwiBm^IFcg=M(DYpY{Sa5cn?ww-=JWFzv-@FGAaveP}Og z2G_a92q~8TB1_TM{XFfZX)iq(LRy((X22(!QMbX|&H)+tY;_ z0@@k^+GqLS45xh#ZAE?iT-uudx6k+8s>y}4E%0fNp>6qZRqnf-?MozHO8YWX{yV%^ z(6$(-eI@OyXe;pBis<$=`MzC8`v%&U|G9Fbu_X_V5-tTa5{n%Fix0U~G%YWLBSgnyqbI;?Xlhb~J&f&D5B$?iA zh4xdl$I>p+4rDF}!@O;jKZ_FWw`rGETcO>eU8UW$%x~9d*F|Crd{Y`m{IlNT0h{2p z+q4tfy9 z;mh`ooAxWhSA}l=?-V!xH=FpIwBIuR)s-G;zeD?L+V5)j-V?r0`(xT4h<_;j$e}&# zFn&V&OWH2~Kd1ef7v=fFp6S5zm6UN4)P6(zciP|5{#jMu(f*$HkK#WF$9psFpL{>G z?Nw9NFT!7izj>SZA0!jgw*0647i|~#fBRb6{|wqD%74FC$s{CGkPPylWHM`*Og?Cm zKr#)<$MfQZgsWT&^g6Zs9yu)Q80+^O4L?vWoNtNERenf@C3*MWrlEvWS`8!#1&)=Ol|8 zaT%U0NwO@-Qm#m17YHKD7%~5HBr8f;o zooEPfR{_aBBuf5dUlI#{d+6;79AChAoCpk`dJjn^Uexmn~oJ?{K$tfgfk(}y8IZq=wU47c( z56PLnRo?b&Pvkt8#PZ)g^&rpkUX06$A;RHJduk}O&|s&9g+e`g(T1aBqAv~ zkNPhOZ3uA9Nvb4mk{U@%dYvSeZXf=VH2o$fM3N+L+a+=DR?YvD9*Hgf_$qbvwD1{+ zBF_qS36MPRxcYyQf0Fz$ z=X?%2wge=7F5%pC=20i}3g;8f?>iJU=^Y%Fz%>U`^NJlx}*@=z~2Wqv8w~6mY$MRo%kG%OvI{Qi4i_YG8?LJcW z%{}|mIf%{y5)aHhqw?B=>5Nv@Ar5o#P$`Fbh0YOl-61-X?j&@MqH~V3(K(vVF(L~8 zj>5llJe@P>oIvMPIw#UOna)W=-Kx)1@;*;f+tXdqD=MBTJWF`?V6~@nE}bTw^XS}3 z=X^Rh(7Axl)pRbTa|xX>>h>bx#l9=?OX*xeXK)EX=kf`vu9V>_uh6l{Kb>py;&pVc z_gwmobZ(_{llaZK=N7kzj!X1-oA~W??(n*v!d-NpqH{N$hg5qH9b5mWb03`t=-fYn z^T7dkv!KqybRMVkh*#)5N=G;UyRYf_3+j%$1bEW#fJZuG=>&8tbP9BebV6-qF!>iR zIn*u<@?T<=PK{1Xr|xSVO1B|E<`$jT>9pxQM<-ELhtAV^&70qUUX7`Q#pIvulx~tP&h3=~689qY()pGwD zD%y|#yXNAW{CC%}9dj4Cw!`bueV^|7blY?{pnD444e1_EcO$yH(%o2|P3T&N)7@0K z8Qskt5#K_%CEcw=wx+v{BkoRnyV<_Gt-tY}?r^$0%CJ4%9YjVr^iCCb67DQi{#*0i z=#I8ar0(u?_n_efdg^S_8__k z(>=sD$r~P;x3WtBTh#5k{8zkpk8}#%qv+b?pRV%1Yx(c5yd)kkJVAIO-IGL4b~v~? z>z+#Y8oJ8=?&+#MgYLz2&!l^yp5s|U{RCY19J=TFHB!3g(LLXBx)%&qO|^DPcZ~e@ z6L5YjbT6T+-+!|sb{Sp$_*?f1`$?1TmBOnWs@2sFrCdw*cDmPTf36qapyz(0EoIw5 z(C@!>Zx+8rcq?67`lEZBU12$!@jK`~N%u~=kI}u0?!$ENru!h>d$c*raJu&i?{}yT z+36?6=Ks0)h^ihnWl;OLlqY;q+#QM%-LZ57JFDHle0B?TBl~I4ZaD1Rmqm)hcDvH} zZdcMR)2-93(5;$i@1vUY7`G-d-G(pHZPINSciqaM%_Vd@bYBzi(oN|;N4IDDV<$sK zSI6J@(^8(H`>cOD`ICBH`U}Drg)h;4S>zRmBCi@59GTbYzCqWf{dDaTK!^Qp6>a`6 z@-AIX{{2rDcR!%}E8P$C+K=ddO!o)6n*4Wd@=y0Oy5G^&{J;A}?);MOSGIoG9Vh&H zun5`xMosJzK)MY9`R8;|?UKmPbbm4Ke;(F0`WxNf^V&b?{z*EKoPW{% zTjU?Qmi*SlolEYM&D6r*s#0A7q?3wIHrRSP1-&CkA>Bjzl%!LUZcREh=_aJg|8!c? zU_osV>S(pgDoAhp0Josrb?f3W}QFvq3OV#J;B>1?EPl4>|e=kT>Qo~Cn=D)ZC1 zZ9lCmoBz9qYUd|il5_#m#Yh(yxhQ6w>ufAMED_q#H@xFjp-9C+J7{pKeCFxoismbW3r|fBW%v>vJ2@okX@J z-A-hz4ndy9#$B-QDXpprm_}x>IN*sf7mVUZi`Io=3V5 z=?SF!k{(IAAL${a`;(3$)%-uT`M>jfBt1xN5B3V_XcZ47b?4P#q=$Q(ug#m-`VXmp zcE^w&r{b}`R{VI+Nlzp_i`3@-q$iV}CSvn{(o=KK>Gpd^=^3Q|v-l&At^bgoBRn_v zpHF%#=>?=WkX}f7Iq4YEOGq{UPc{Glz%K4cFU_CSWqI2xNUtWf$-fNw{6D>h^g1c| zB|vKPfA`3HxRKQ6|MJ{SddpBPsoT&!q&E3i?d_y@klsalr&oqeuSs%xw=3qoxp&rm zq&E4_l?T+;E&-fE`Y`D)q>qpmNFODA%-d9@As~H%^hwfy^eHDwA3Nl+58Ts`^hMH$ zw65ABX-T9^S{11{w3Xqs=843Z^cm6yX-e88O-Ng$?ZMKqJ7?^y>yUP5{^J&FB_!>U zx;JBHibPTi|Gf5DQl)+R9I1uB*9UW<^d-_yNM9y>pY#>dw@6X7<1a&{0-7K z2m9dfwM*Y7eb*UC-|;%>d*=V|J^lgdhom2qeq_3z6^vU{`~NBFH>97Dent8@=@3GubNq-ph>DTAeAFZu>3=W8YMSjkUzpBIEgqHuL ze>imiBPRYAz2T&P(_4}BA9{<>9!dV>JzV&9KH-{8k0`gr+pG)H0 z!g(C}T6*)*TZrELUZJ-Dy#!t_7p~w?`?C_gP3WymZ(Vw;sA^SuYtpk1f9b6*T*I3ks<;+C`}~*QI$lvfmjCqD zr?;`HHV|$o+{mHd4TrLAN^diI7WMQtr?-V{TMpS&)Vfe_8}V(0+j#@M?dgr6H^_f? zWkhdBdI!_niQZoHcBZ!*J%xYI!rz~7^alA)Zx4EVdY#_LymoJT2hg+mKRsLg5!p{@ z^M7Zfcc6-+tZ24_^0tTM%4m9r=KL^vha3OEMofA~(sL*0QS|PncQn0A=p94vR8<{I z?>KrV(K|kGdxG>62j_Y3WED^GwRW}J)BL}8dhS1io)&+4XUTasy>lEHw(h0$&J~^~ zJYRSLy^H8wDCZb&6TjHi=B2x616#z}x8Eq2lchom1vJ>D}dvs=9~X+w|_G*PwSFy&}E)r9VLL33?BT zYbftMOz%;P@!lhYJBWIZ(X-^YqQ9r8_awc7nmk3%!e2ZX{3b>(%oUqX*t$wj`QIz& zdWBwAg?y3wj^q&JXE*B>iKd&HqJo3DEmY+%5s^p1_{vKfSN4Xk?u5YkJ>^ zd`s^;t1_qN|3-co?7aDZr1ulO-|6}0KbzU~U+7u>i~p9t7cBqj{VDuQ__y#MhwkBQ zWD}7+Pc|{x>12~wZ8j;{%4Cy~Ek-su*$iY;kWEE~y@lO$J<}DaE;q=gCYy$AI=eqG zn|5%{WYb&!eqNf*NH!PQOk}gF^O?zpkSC-3gp6NVW*sLSzdMT?a{D)W?oPvcwi?;`WUG^{L$(Il zn&x+No@_0$wf$H>NaIYu|CZ_Z-v)hdK(;Yie%56h<=fiC$iTB1*;ZtmdxdNZvMr7K zcWAaX+4f}HkZnh{t^bQghh)QTSN}TNHf>L52jPgk&z;B)AlsR253*gzcDFZUwkz3g z*2@3OmD_|J|2@g}A+zu&+ly@P!KT00V47L}lkG>gzwg=?2W$&MvEUY_G@4(2vw4Nov)NBbnQ zQ^-!X!{W|8J1b5lJI(H;bOz^lUs1`=Ku0sOm<1mFO_l`+2zhJeuYr$|5-l&&#obRgzQ?fTgk3d&(}K?xq-~`pX{bw zu_1u$7AyV@ncG{%cy^m~%YU*v$nGTb;qTt3cT2oSsO#nIKF5bmK7*78gqHsz4+$S0 zEYezUkCHt`)+KwKtVs3*SwQwA*;q2o|J@>(JGKtZTp)|cLf@NRVh_&75?M@ECaaNE z$g1{=`&vJV&1?v83R#1!P1Yo9`L^~lxtnRTgsfw)n!6WQeQI;5ut%1WJwxVRcZI(U zI@HgSJ!d_;%W8kUpS{2{F1TLQwqBzD4%y4}-5LH0{h7#KCHtQ2HL{P%UMG8(> zs4EDvaWZ_Zs&De<-;#Ydv_-NX=ub*Ep6oZWAIW~Q9$Y|KZ+<^*2q61Ks3E|8ZzXfV zuBgxcAp6txM)ucGpK|^~_OGqf^(S&@N`GRZ4FS?8Q*m6hkqax(qEkZva)Fi=r2isDf&x$j~XuHo5-^q zeNF!RgUP=PE79MG{>t>%pudW<$+@a z6Vys;LH*->t&|gmC(%FIi+RIS>D&C@73rTYJVQ8G1)_g8eOGl3{j2GpOaBu3=c%jn z>5rjr!-R?#`cBkVOF(@s0oluRsjHIbGWwU(_wS}FCh+I^-@k_bjr6ajf1NdP@6-PE zIk~~VsnyR-^zHLs`nLW<|5m>b9&G~Fzny-Y{vGrK`ghWQi2hyl74QAK>EA=&!r%GT z{667e6-fQt5Fqhk`j1O_g#M#W5r53ria$aBNjaYqj`be#0{sU4kbYH8oBz`<(l603 z`yOPg_$I2Y3G4LZ3HoW$Z@I5wx+=?m>m;H7JpB&+XXtn7KTSWCZh!trUpN2v|NG_Y zL6-KPrT?6D;-Xb6tN)*>vw(8kXu5Xz31_pj8)jx^W@g$jGcz+YbN(RCi#+VHuQJhmL~I_<8#mLTh-Mqs&2JpTUE-8tuVGJ?uGz8{Iw=@3oy3fbl(%k zMvQGSRyluc+w1Cok~?%MxKkyiupDE16sBTqpRvC%c95}OGWKJ}+U$|BpA3unnH1&! zv0vnIzGCe6(!Umd!`N?glidR3{0CWoWUR~ocK6|Q_hD@Q6kzQCQJ9#qzcN;n{ISaa zV}EDtc*g!Q$NNy2$P*I_mi$E~r7#(VDJV?t`;)a^!1_>_ z(u)+PrZ6{!X(-G@VOk0^+Hh8wPB=Y<8AL|d5%I^xtRp23P#9&pDWiv3XQnU7MIpx>QdnAImj5X%o9oL{*nz?d6gHu-B8BxRtVCgT3M)GYRar&2s)DSRx3z}E zH7TquVncv4$w%uy1zZ1dqO9vv*g#~%Y;-PcL}BCq#+SmT6gH=@nfJF}hAC`8K}-FG zEh$+3r?9mTC~o4<8{x9VDzhL=aq4fSw;V>VN!Vwfsrf?*M<0u^Ed=%$s z3diIQ$NGxWkEd`#t}Fi+PV!a?r#K>?Qz@KA;SBN9y;bd=N#QJCl<6D_uTnUd!u=G^ zqi`LC^C?^^(*+bPJ5jhu6_xx8S@M^18HKATT<(12b_InieXnG_TH-Zcp>VA$O23}M zofK}Ma4Ury<#Uttn}wGDy{AmKQShgVt^ZTFW5`P3F6SVhyM_12;a=f=-i^Wo6rQG_ z0iy5_g(oOHEayikJnD#ZlfMlC6duoOJ?Ttxd&>Jzc!t8u6rQEkxw@Nr_fa~ zb*SL|d=CufK|Z1I8--6Pd`sao3ZG|d{)I18@k&$LxY@u zpztGwagGo3`B|o4@+#i*SMNjNcZw5H7*F9Z3N{2#n2=`=%l|enE&MJ0pFDz%1&&jk z*z{ta|BI7SoGkMxPM-VVh}@>6IF;viZ&jRz-dhx>rM@V|=?H$LI6XxdZ3c=5QXD~X zJBl-^;z)`cQyieUCdE+{m!&wG;@lKxvVU+c&P;JuinG{#-!~n5T34Kn;v5ubH|4wa zq|B)}bD4wtxkdM8QE?t;qBt+bB`MBF(N=OO&M#a*xFE%a?0I@|Vc{aeMTLtA7kB79 z4c%IVJF6|=QWW+7zr|&&b!T1eMvBW(T!Z5B;ww;GjpB+FSMtA?NYVZHo9oXi6j!zG zt#+fKTTL=?br->k>s+O}Ynjz{-P#n_ak^Sum!fNT1N$Y$;`(l59g*{fE(pbqoT5;h zP~2MEwW)A3iZ=fj-$J;haI0)KRn(wRwEX|yQ>Wtg6nCI#Gk?=+635#CDiHb;gW5_}N z5ydvemgDZ@{VB#2E&u0ryA(g8XvyDwDE27!b8h*c;>Q$i@=x(o)7|gD=wzVyxx_Ch zeo65=@vnqmQ~XBcTZjIS7ghY8q9*@Emq>rMTb|-Lia$A%f1!?|B`bfAL-AKiZlivq zv?ImeDNRgqyjiUqe^8tt@@KC6Me%QnF4NlNKZ{nHXc(V_(n40HG%2OYD2=8xIi=|- zO(D_pKcy)tO+#s_y!zC>I;Cl4oz52x&3Oh&BXT|?rIC~dtmw{%(kQQs&qQflI4H7%|&VMoX?Y;8>RVjWqwLZ{-p)IlJ|CDN{dihlhUGU zcQH!KP+HuoTbGugv?Qgad^EMPv{f|IvXoY%v>c^XC@oJ(|M^&2!GgOL^3qC_R`#B` z|EgJ#EVBLrrnH6^DXm3mGfHby+EBsmFJLIGOKClk^(k%OJv~y|$cXuDEZl_BrrxCD z=9IRfw1p|Qqqd}^#c^ zT`8SNN%_CDJEbEiS^lTAC#3^L_7d(*X&-xwth8_T0Jo$eptL`w1H6*!2T?lMGC;}x z|5tSnrF2-%4|ht=kEEpJU$W#c&toVZtKJ?bJYJ~9|7?w)qzeFQH_~pVDQN z+!kG~{@DAU60f9mRnD(=igDZ3*9x!8O_u!SeQU;t zqLkFnfBwtZr9ny`%k&AQ&nPMXyS}*@W9f67>1F)OJi=F$zV_Vay`^s{eK#!H_mnLE zyAP!wh2tn${?G0vO1}`ebmXjm$?A^jZz8`_`jgUlN)sskVcWjijRQ-bZ^X?cC;eCb z`I}&NO8*c{OX**N$q6PRn1o`DSaQ@uf7kQ zJq^Ls1k?CwYSy>F&HqOcOiwT)!3+c=?8^mT^|C)P3`PF3`{$jBLuS&%$BW){u0?w%?EQ3EKD#b!2$$x5zI?4H^DsC$@v~}XeVZ3)H@Y^US9J;9CyJJ^o$H$HaIv-N*D>@2h;Ac9@3btAhg z+8zY^6YNQ_55ZmpdpnbNkab@I%ltmMS)vOLkbdBQqU}=6|ARwhI@F=!A5L(Elp_d^ zBsi16^1l?#|AS))+==1#*l`3W5*$x(!oV~KTL-=zs|Y6%oSZ%Vcggmbh~QL$(+N(q zI7-Wkc7_!v+)8j3!9@gT6I@7ej^7Z1a|zBPINw(x$dZ4y@;16mV98%`E)i-72y`zH zT%OmulHeYKs|c=|57aJNi15V%Y1R@ZZan}jzDZT>H! z;UI8_;7)?u3GQ&BGYw39nyh#EVurTQ@3o57=zRqDd#?TSAi?Vd59QW}2_BK#qXf?q zJeKQ^6WIJ;rYD6@5!n1+{F(pmB7^6o*eF2og78HG%l`yQ{=qBu%ssG2zyz<^gJ2iL z_!|TrxxGp77D0>PZ57`k2u0o{c#oh!@V-^CfFBUp6;1Hb$Uhes8EdAD7p0U4Z2q4g z%Cf|Y(2~DMji8?M20>Goe3V@Xx*Q1F@{9=*N4$x^@;^aJ@C8B7Mo%mD2?hy1Blwu$ zQv#d++u1ns@jT;w?mX>lP1C+g@Fl?y1YZ$+ZEoLd{Y3FOcY^T*e~bS?Fd^6fB(TB4eFnyS zOJMVVf`2n>Xtw}_8Uox&7*4994FMvP6HbwH2&a@dl|!HNRh-5y_HbIl=?G^coL=G# z!VwNdW+WU*I7-~^0C<&W+R+kWDbY!V`p+W7vVe-=l<`y z4(F9(w*Z9m6E2YbbwX$ti~VMAxG?2|2p6He8R4RYtIBgR;o^i#h%8CCqR3Lhr3sf2 zS=OP*a)it0d<93;pOs`XBC z+TIljcNkW8C&Jwc#}MvHxHI7{mP~%z&hF4%5bNP?_RC;y_89I#xR;bY^O$=RX21WI zEBg^1O}IbdA%q7I9wh$*EkYLUU`O15MR+LT5rl^k9&RSL?Rr;-@W|ZrD6bP9LwFY9 zv4p1(9!Gex(+Q6!Ji$i8@I;$ZnsSo)i@RuqrxKp#t|pfy2v3)TC4WM@O~_J5csAk1 zgy#^RYjv}ud>-NXgclKBpjsDZCiPztE+MqcFY9H(EcwfNCE=5VR}tPucs1cogx3&W zPk1e%X8vw7v${7B-e_ET%wDZ=ufv5m6W&62>;HW9EOe*6JDRr>-br}JP=5&TBD~vD ztGg+1Z*AF5xR>xT!utpxQt^Jm2h^(veWQl96CNgfL=KM*i}pC-6GKJ0Jw^B$q3hN2 za(;&JS;FV+)w_IG6TU$BGU1Dami$fEo+NyQ@KrmPT+t1DmRnvYe3$SI!nX#i4T>ywc` zeJ1i5p-a@C6Mj$l1>x6(UlM+0XSj>(BIqWL@EbXQOZZ*3E3BVC5RN1K(cH4Oej@zY z_PLups4k&%n?UF;$=?ZoGtr$w?#?^u zBIP+L&t?0;r6%X&-WDs*LwNCgqhWuR(bgg|hV@ z%6=!<;!hSi}L!E?Y%_GTKp-mD{e_F^K=sov$}RSp}Y}gOa5kcZ(UA&8s$y1 zV%Ck#DQ`h}cgkDZcvRks@)*kY{8zz~lr8^L-ch)dL#K<|SKR z-}dcUlrNIo*}`*#=Tbh8@&%O7w`)yrl2E?T6Ni*9rhF&mODJC_|4S)fM)^u{8v-cX zU5uX^QND`u)vhSr_22&g%dGBhv3z~5-$2=h0LnKBZ>H>a<}G#?T)s7rbDP!j-|sHp zF4G;k=`Pi}TX+v;*TZc7ubp#0WlR3H19fUqeu&CJlpm(zu7XD>r<5P1{G6&kCVX7@ z1m!3FA*1}1l&2{_L-|?9y{^OhJmn85zd-qQ$}dt@{{5R$CX0<;2A)G+@Ps)Ee?$$I6?NYV*zpVdKnTX0H zR3U*`8btn zsf?sD9hDiWOiyLRzy=3XnZe<}hGX2vCIIeZ6$hxyOl1_6nFcm?WVAzblP8r~%lwn^bJ_PsQ>-m4&J3&atux zl|`K*QKNvhvP7;dneFGw(o_zlvJ90isVqxnJu1slS%J#(c276yzqZ0qS&_<`R92$0 znu;q6R}rr2(C+dotE-_k9J&kNo?=(lvgI!~XjayyvX02QUU3=5R#_|SQ`vyZ7F67< zsY7KWDw`?D##A<;qU8Vmul6mE3Aa*lzyIu>h9?f)GiAl!ipri;wpNvGY=&IfmdY3^ z+fmt(%Jz!6gDn}Y`iCv?xl~ix$%0tlcBZnMs_a5#SBq&UhU>%bMr=3kVcTxXUb(V2 zm3^q}M`d59xL>rkDYtpgITU#~@BgDzl;JCnQBm@*JRyfCy{95SP33us&j_ET@?2(hOQw|&GxqPzqM|Ckn)=xes?G`o{A;^yv09r{V!Sn7XCx!-%PJgM0H}S zll;$CR41dl2-V4{&P;U*sxwlB>agZgVDfgL$>RhtUDx6I?JJmTv=5**jiZ-|BROg{OFIA=b>U>n^r@Dam8A7TW z0;&sV`=q+4Gf`cP>IzgBr@FL?HUv;zlIl{9xQ|*{M&h!<<%G+7llY3ll^lw!Om!8J zRUPJStxj!Is%ubvg6f)7cag(d!nLWcLv=?RxvJ|@U61M(RM)4vG1U#S5v{r*)r~xN zRphw|RTpq`@y*O6T>-bGx~=rBsBSH?jXC&vOLaT>Z0{ASJLLLK(#KdF+XFiradX}3 zu2fH;x*OH~RNS5F9*&6bNp-KB?@e_diTj$8)!kpp0aOnbIgsi>W_7bri+qUiP^!mJ zJ&fuRDjseQ)`26b9xZZ|SMr$0TG6T>Cp5qi=RsMG^%G)J>3bWB43C|z0QoWF>J9{spdNtLHWxa&z6;v-3zsx+XSC<>H{$H6Z zHU!9YjqqBkH&VS${QBJIhGBiUiK_khj~w*-Kh;~Q-sY7&)a_L7pz3|@q?+Y_s&`Yp zhw8oN>>AD5yN8Z| zqWUaVm&Tuy^Yi9xwO$auNHxpOqTJo3p4pqzl z;_nIHcW7Cz`XSYtl#i&6rCO$H`JZahp-4%nN5Iu#`M+9`ZuviNu1>WfvFT7GqG~q< z;%%xi)#Sggcvm}AE%{ST9eSN=Uy3IG)sLwSQ2m7JA5=f3YOiQg{Y>~d)h|T8r20Ko zz5iML+TxhcH^OhJe&-d%{K1LRf22At_q6#x)%^Ycs_V>ns=vzrH<^BSI21(61Zq=L z{gc|nD*h$>TWGI#i%VVvV?F+`B?r}acPHAmQ`^% zYO9JYPi+N9#8(uqBwSgzio-m@YEo7gu0d^0MN{&xt?hlJtV?Y}`Pd@>YU@+mU?_<6 zjf5KuH}NKFn^8N2+UC@Dq_%~tsJdHH+e&0>;WoLxt%@1~YTHxW!RrIFKS^yTYGZs% z`Rq(>7itGl+m+g$wq#e^joR*ZOKyA*t7v2|Q>?dpQ`?7{{oxli8v>}=c%k9}=41MS zM$B}utCIZ=UhPn7PbtD-)DEY1I<+HIJd)b+)Q)mo#iNDCP&-z{CjYkjmswAscB1r? zsM&%KHOv3hP8sHNn&;Hcpmr^_Gv#m=wX3L|P3=Nz_WYOHxzx_5cAo7Dx2l;P-+caG zyNKGQ)Gn6iCEltymr=Wd+T~VDr;Qx092VhfYS(y^{I3&UFSi@0-9zn0YOeL0sNEuy zJ^!_57PVWc-Ii5!+iO?N?bPm~b_X@R`Q!G0+s_l+HG8*n%eV1fY7bL$yZQk|yWdP! z_d#k8+4{44DQL?-bu1pC_Bgdisp*&h|Hf7TCf%0W6V#rxT5j5){Xp$$YClqYhT1FC zo>kcAs9CC~_B=I9{^Bnh@so|(%Z_UsU!@jOdyU#y`Mgfe^1rwZ0o2~2_BOQ-sJ)Zx z?^1hDb+gI8_=mamBO_TW8UkuXYD)gKz$O^Z>ehd1WonjGsa2?1@~2j#R(C|v8q_|g z)}*F1UW=%;sCB5domI{;wZwDzck_xVwVvk=Qhpmg!<&vCp8}vC(AtRmj7*+ z*7HXIX0;)Jy3PM{H}@5Q>8Q_0eR`QRDAY%ogYQp$B=wo84^SUXeU$0$Jhvb-nZwqW znpB)cIID^NSkz~iG6(fJZM*7oQJ^WUv4xRoWBTk7*sU&x&p)aR$Z0QChe zzFTs1>o9KhxW2G_7IC3WbgPv0#Yo&nEl%S%>Pt}nnfj8{@29>L^$XPE($trsehl?x zsqamFIqF+eU!M9p)K{Rs2K5!GuS$I->X!NQ{jiGfIdx0^>hS8hvZjh_d1vbSX#(2= z>r&r@`g+tg3e?x9{$Kv5ZpmL2E&r=yn^NCG%4XCz_o727TT-|DZ=xNtZK&@~eOu}~ zQrG)G_3h=hgZEdoov7<=pZXZ;+4{fqU8(QpLs_)!=LSj-5yvp;Xi@K>d7si^I;V z3)RF$!i%Y2NBt7&SEzU?^~-$ssM{-`)|?&CE2&?V^Q)z}Gw@ok*y>sRdg`}Izk&LV zx#vw%Zl->VDSEggYm$KFo;j)B#+QP#?x)NTGxUHRXLEdf!#mwI*=V2gY82dKYJ z{Xy!_Q-4Sf4?7fjg!-d7e@x2b)St+eC#l;2ZG%z$Y2h=%XQ@BubyczaPu-F~^_Qr> zLj7g4x|48>Wj5-sQhzN|+(M-(Z%|kAufIjTPW^40B-Gy#zAJoB_&)WIsDD6R$zSsg z>Fy|p)b-~tRZVj|D$2Km-?^Nf1_bZoBHq6$5a1@`X4Gz5dP^<w)R@Ff%E>BDCY+px^1nGi!}hK8sj}?dn1;q;G^V97AC2i`nx4j7 zG-jYNJB<-EM$?$l(sE;@aDc`rdxonKT*^!|wCvxQ*@By=t^d=Q&5F7TXw0F=Hvjh( zY0NEU9^t$W?O{aLxA`S5Ak+}kSV(+fp$!2v7ImmrT>d|p#u7AklD;I3rD&{4!zTYU zmJu#XLv#Daax|8gvVw3$8aDH{P)fNpZ1PXTZWBZ_|8J~LV-4@1Cf1^{EseElY)NAs zDeKbMSY$mK>#Jgx|7mO}eItj`H=(gPjZGzP=0%4p+AV;5EdSHkn#ML>$#qTs8{5me zgK$TOxpj=^G z?k1m&18E%OxuJFM5E_T({4g4aOFY7qtnN`Xx-^ca@fwX|XuM2A^Z&+i@;si#9W+j$ zaSn|WX`D{uBpN5X&6ib!LgQ4&wL?zxx=d%#u*H8GXXVak=WgfHxSGa!G_Is^K8=fM z*yNvv@_*wZ@1`Kx{GZ09a=47f<8c&PdMdNN7Ptv%D#=|u3rSSlb`xNK?VKE<+v*mv;(s)G5 zqcrTop<(%7wJiU8AL&o!{?DkW`G4a%8qa%ORbHT>{NH$Ks4k6H99NZBP1LYO<8>PO z{J-%gjko0RHjM&}cf{XyDDs~0ec=bf4}~8IHPqU9n6LjdN;Co*bsC`@$~MPqRD@NB z5^D~nG*oQTh-pMRdoBOdu;gz(4y~Bb=w!vLSE(x6EdY%^jX{x*g`d#)hQ_CktN0m> z&vX6-jW2Wl6^*YQ&-bbgk?up|I~w1M{E#a@(ikV@Cz~@ge)iANXt*K3T~C@1hHs{kxnVzQ2|NV0rnllp3NpmF4H)syf+@Izsnj6s^ zO>+sFGtr!n=FBwbra6nM&q`AXzd4(Vvs);iQJXH#T)rsNJf72>H`|}h`DreY^9ALz z5Y0tJ7N)s~H|5b5bA+ZX0m)%Wnk&&;m*#pj*LR{*Xl@|44Si93W12hD+=QmmdvjBo zmj7kioTl9lh;Qjo5w@l|hUPXjx2L&nZr#pX<++2(>$1_QhoCf)jgEv zVcuC4j}RUy(@{R4_%Sq3rFksP6KN{{H;}EBM)OXZ{@_~vr+J4%??CgeoZKzbJ>Ep~ zKAI0pxu50(ius`MA@85p(h$(JTL7At|7kv+o1UckBF(30J}3QYn$IZ0v;Q06d0Fii zK-QONzAoiuny*NCRruO}wfy|N`6kUz+*F+ATQprVY0!L!W=Qj0nqw6~`M>!-%@1fQ z=Ql0?yEs0Sd-`6FKX#PR-Z+G`fa{|pjvo9kw|8o8k z{~?-Gbu|P;HUtn&Oq4wW&N>iHMl|__l@6MJAeys7o|A(YZwP z5N$y;FVRXw^ARmcG(VBX`e*^71=a3CL+vX5B1DT4EoQCwd=)J&wm!pDzY)rCf?JbDsCp++>1n85*)}L4_$oxU1mw7^M-v@GbR5yKUUVq`gRX|qVtFzCpw?#I-(1Rl+PoL4$(zK7ZX|LC%VM@ zEBIx?%kxlI5?SWYi&qm}BZq6fB7Qy5?L;>a*=7>mNOTjC#)9Z(DYy6tM7Irv%9T5a z?w8MCc2mCo}u_^!fpYagM1z!dXPxjKC)W?qK6$i2YEh9luiC+dV=VEq9=)7 zA$p2P89sWN=ouf7NVfpdb3Ou*C4VB#|D%`0U-l;PSBc&tdQJRwHTOmy=S}ZMq^V}~ zPOiTzXUqTc|A44U^dV7+NCQD+PiN#)5ZWz(JOf9hghXX274IotBWlT77dD8R-bxfX zCFgCTm?-gzDrQ3fQA%q$q8_d3i26jo5)Bf4LG-b6R?JU`K2;|CO!)b*to0?)IHIqJ zz9aftVU_%&Z+*K`zE_YRgg-j;CZeCD{7jT(emM_Wf1@=C(eFfm5sg>7f5>4%Uj5Hu zq5dXv`QI|Xvzl9LBH_fDb8AvsQ(AMa$!JY((OOdo8QKS@Nf~_sX&p#w2U>g5 z+L6|7v@HMA8bfOrT06TpQO(o8q1xKj7isM-pFM`QLdCsk?Jcqot^GyzrIk(oou|5b zfUiR9AX>-JI+)hcv<{(lIITn7?FOyG{7r{L`5z(FBY>7Y0&rpN<8Mq_$I?2^E3}SR zi`gvzt&?b-A|+b|5bTXuDl^CarsEoki;sT4&4Q99o*&w>1B6ok#0@=@-zl zy>Has9KlOx{lUmw63Ogx#_kWub`#Lf6Imd`}l`kt!rpq>sKLcVWD+B zt=nkbK%=Iv@GY-vixtg{7S4_xG;Zra@yRU*6p+`F$EdPtYPU{U?@6mcQTa#(MC0#>6>m6F}W_!tP zxLd$!y)U$HfzkSqmgRqOeM`uK7ioP?tE3+pYlj%nEtAfFDcZqD5h(39Aw^$9I4{k?ITBdJk z+4>Ky?@YH^_6R`AkHT@Lo5N4Eeir$KwoB1o{FT;Uw0_I0{4R&_wEj@23Bo_U)zISq zE&NCLuVH&4;l#p899od}WWvd5PfL3WnX-q!w5Oy!m6WN4_T^vaY-rJ@6HYIjK{!G< zqj01{MIJ?ab=sq8&qaGCt8R_XOnVlQS#xDJ6*Vrj=MdLl0GRXKw3nbgPwqLdtQrE^ z^V42{_9C?1Mbx3akY6REZTAJnOp$(aXe*U9yDX|I=aTLq%Mfl&Fsy^;9F z!cFoHY({$*DVqzopuHvSZD{BDzis*7-koc2OM6H8Y)5;0M{G^Ly+f8^tgW4Bk1^f- zDqVZ$++kNs#qHf_A4z+6+6U0ygZ4hO_mr;5f7>SiK1k!gDhqjV``#d>Y{&ycWdLiwrXkSG8QredP zX`ez#C#MEhRa_o;Y)9{d4Ube#4>#P8F7nD$GwACdBC?(-P! z$5rcz-1$k`Ps!(Lq0RqAo~8X<&Y!3Kg2Wdc<`rM2?OJ(7(O#wfj>v1m*J-~Y@}|&| zzli1ke2;1V-+s?2iu?hwYw<(k6={D&`#0Jy&va=QXxCg7+C|zW+GW}S?J)atsQa#^ z8#3Az+S%g2#sBqb+I8A(+6~%zEu`JFtH6Crw5=gPqrCbP(@to2?D?##=%*j;l=fG& zd$d2M-Iv>-S>4CI_S61^_Gc3H{MTCloc5PeGz5%4)Ba?{{YY2)Yue*ze?$9w+TYUt zE*rlkUuawY&*mX*C;sYpmwnsUe10b$NqamowErNUnDzwP z|I+@G_Fwkim-+lH{Kw+>TJc22-N)_5coO2th$pq8|1NnvIq?)$bdPKOMHEj-JdIO` zry`!(Oj(?1iDw|5j(B?8#^1KH-zTw{BZz0TH*lP%`_ise93Y;bcogv*#G{F4Bewic zJhRa9zsRiFw#T#ECcBT@pYfc;a}&?yeVj-<5AnR&GvatYd;iK+ceBcP0pi7o7bMn; zbMZo^yYH39ix4krT#JxW7AIbccnRVqvwfaz>C(jZ<3G-scv(k?ms5+&3sSUEpl!};4a;>ViUj)+%?*Uia#{vsmYfOs<} z5^qSnk@qB4{*N~y-qb60b;O$!Zz<0$97@Uae{A`mcpIV3|8+#RC*Fs62jbm`ZBUSP zC!q}i#5)tapMdBP5BvUCynF7s2l1YA+bdW0wx3+Eiu)2DOuV1?{=x%tp957q$ch&E z5aPp$4<$a#DX!1?Rv+R0wG~GZ-$?8Z*}25W5T8bTEb%GC#}S`Qe7pi${uj{@5T9g4 z{ryMwl0bZ_du2k=PA5K#_zdDRZU6T+^!GKYdp7YoR?)9Z$LA4WNqj!>g|c2?uU^>J zT_jZgk1hWbUrKyA@nzYII_^aU_ua$ziu`Q6iugKWOa5|p=gGB0p2XJ^-{5q=;i`BO z@q@%S6W>LA3$Z)0w-Vo$ISl!v35JNZ}n|3*As3M97vPqM75D6$;M@}4^+vGsqFm2&IKu9)*xWm=77b&_>R)=*IcL9$lvv$ppq zS(n81N?9~nUy(QPKH?h<3%d!)ek7Zc>`by5$u=aLlWdX4(Lj)FrM9*nR%=_5F%q{U zvH3sA4#FLUJ2~{uo{;Q9vNy@DBzuwUrizyTN%qJc>=t0C7Rf#&`wkVINmce2+WHTP z*8h`(NDfwI7%|2wW$Z2nJjz3{&wfaE4Adj6XXd;Xi; zM)E9)+lLR4+)i>o$sHtj+f+8WQ+SvCs7uzjdlbY*0TLUw+>Ro7ASVy{{YLUIiB0lJ zEdP@{DtwIOaYyoQKbbo}C9B4Q#PYvlK1cE<$@3(dqvCoc+LB6->Bx?Wl9ujW-= zQ}K1-8|Gk5zeVyci46y;`;OHzT?0Y#KFLQUALQbP-YqW{NL`vL(s4(*M8{o30m*oh zkVGjrQL0QTBvr+%k$g;2CrL>fByEx=NsGkZ|FOt9lEfq(621Q^ouq3H8Q1%tN&fz4 zl8pi+`TL*ArzBeZaTDO=^Z!P`Fo%xl-)_+KTw}#w&)%YKD<|UaxXA(L8Df~+($z|XM`)-nco>n$MQU# z0Xm~ZMtje^>6z)+{GZOObY}CTusOIb>dfIi>C8!IF8RzYoX0ze&qrrDI`h+6jLrh4 zTc`!;EF_ZUe>#iMS=3tR$zciMk`C3|rBz%;xU3h&m#4Fu$O^(0=~(_3Usu}waDtiH5`hpNyqZP_}X;V@!a0i?yN`WXgcfD*;CdH=xj)5J31TD*@Di-=INg4 zcQ%oAQ#zZ`+1ySKT}s)crL!fSt$a*6Tg!7BI@@|B-_P6A*+C}d|ISWycB3C$?`v)ljxjG=M<~!(@W=6 zpUv#2y*j7M{|upqfX-QT&X#kB&N+EomjCITZ@Q5S=vz|9Ky7F>bBj zO6N9_|2NEf2c7#Q-bv>!)6Mg4;XQOL`TICh?iW5l=RrEk_MM05Jp8{tkJ5RJjwS!B zqV?xVIxnj3Q*@pdQS!I8o>lQVI?vO2!A3xT&*c|MIxo?Ana;cNd48p1()u{oLULIv)<}o2ycyQ}7Y!6dlnu8_=mcPA3$W=~Qx` zDxI2fol&wj=rnU{B&9{C?T9~T=p=N$r_;%Oy7EbdJz<~DAe}Gid`#yvI-k(_)SUhG z=*GUz=X7i&8m4?j=Nmd-4^zIyt**Fl-nkh{3(s2oV938hgKe-_Gqr{z` z>HOk;3dw!3OT}N+jo+*Z+v?xxj2F@T-(`mXJ4D4lg@4icTYKpr6_x+H6VaX6741h| zT?M^0~+(h52E_64hJ0;yE=uSm#K)4~@ zjfR;vp?eqIP3i7OcQd*>$Y*o9w)jJLOS;?9&GUbEYr5Oe-PZc)kE2@|>uzt+)JeKK z(%qfzPIPynJ4O+9&a8ehq-#R}-Q65&U+qD6FS>jBqD+?m>F(oDWM4mBp}Rlbqv;+% z_ei=2(zUct_aJj~*Lzo|W!Lh*^uy>LPS=uuwk~Hr8Umc+7ni!n&^?y!Me;w6?(uX_ zrF(*kCt5{|f0FQIx~KR9tv;Vd_iVbS(>+VpGw53Kcif|`M|IC}MOn|Kd!8*2S+w(o z7tp=XE4h9#-Am}+ME6p<*U;7Pe|GK5Uv#e!+LwRnUM0NRp*5uaPxo4N={maC%X)+G z#vvcNH`Be1?k#k0^|d_Gbtn9ta=xAJ9YdzvdN1y)dy_fC_bnjE=E%}Q)AbgPS zLv){_Yx$q3s!Sn)BTMghNm(tXmKq-zN1+7Lij`M>*|`15|ZSWnFK65R&f zm+8K#;wyAt6?skgy6_E$_OZS67TxzGzAb!*?z`UV0@8h-uJidorVoW54YL;LmgyGh z26Ril1FB`o-vyU{g>G%&$baZo&B0o<0V4Y$h;Ebamvke#pU`d5{g`f>ZkKMXx(Qu7 z6I@06eJ!h-((TjjInnk^)`UF*HpP2dw?9=kKBH^vKjL3F^geXIqWd-7Kj?l#cbpUH zeoOZ|x-RW!4}X=1e>8s=*>dtvbbq7!Gu>ajNY~ZU`oCMAavwJz>;6u6ysdYsC+h74 zx=Q%nKh?@#d58ZYomk4hr1tRFBDk$fCn25GXF}gw(#h$~PC5nYL8OpwNjfFz2BcGw zPD?tq1xcszExPY_kWNRsEa~*5qey4)I_U^f8v;m2+EbEr!0YzRB^{mn%tSgf=`y6s z|LLrxO6IBZe>%IW&mpw@PdXQ=<$v*cg!4MIKc_IO4FRMJkS<8NnD|1%g@qam(nTG2 zUxX*M{4cVEa7j{2{^CnJH15ysbUD)1NtbsD=?bK)klLVN3$5u&b_mjyZAsRM4I*;0 z9h>ttNY|9O7U{Yo8UoUFvg4AjmwQ_Nx8t5}m@6BRZmcSso^%Z94x~Fe(fv3Z=}z8iljPL$Kj|*QT}gKvny7dm(mhBm|I1-7 z(!EI!Al*mBeY49d-H&vC`*At<3w4?2fsPF9J~`>Zq@R->LfR)il=T0R9;Uj7lU_i2 z1gSfVjwH2|PI?sS(WJ+b9z%Mpo!f3_`t`>2c+wM0agUbVvnqE2oBv6qCySgyda7A< zIHa6TdN%19q`GXK$vx0XZA5S}NzbwSuk>8f^Q;M%|J{vkYWZJB;X=}@NG~G2l=NcK zOHA**ZlB-W{=Cc{Y`H-sy`1z4(krb$E`HX}t4ZA+cBjPkq}N(S>*sY2?Y9=w8_dnm zJ<^*C--1?(;0^3$i{Zd_LD-Bz;9e zULt)tt75zHRk^)pO4h44NJG*$N!^}*i}VB1w@Ke4eTP)ZKlfC{_w!oH|LI4=BD?jU zfV4KC%%MAKq+igRUdorGUx|E8>UQrpq(72=YaOs0@*U~-HeEDszXB@HaqcuD z{Ym( z^d=fO!o7(xgGYLk(3^tZr1V_cpUisVE+2>P0KJ`rW9aQH&s~J}{*UzCyg$7?=-onZPkJZO+l$`5 z^!BD_$=^L>$({F8mHmYW2rc>3J4kr2@DO^((L0phQS=UTQz?3f3y%;UX_G6rOZ~jG zceJV;BRtmY^p4NT3G`0%+|U|2ncgY%uB3M=z0;+fW+t5g^v-ZE?!!{-6(Etv=sivEae7bW%9GNca_By)@(evC^WL*EJtutL4Po?N zpr^&6-b)f+7QW&z8wY!@Nzwej_lDQ$<*$JD-sTI}fp_@C9hZ0MyUXD{`t#9ypWYwz zKA_iC^$+QNB;pQAQ=}j)(ksymvS*{cke;%AuPkfDq4G&h#X7x)DQ-vkg&I2+5xthI zZ8Mn?(@R7;UQwn>>3t=!N3T!s3vuQD-pBNm{Ci6Nz0YL&-0J>!M85Rq#G^IbWa1!C9Ci)=#$>~oa5#f}>OjFYzkT?x}Oa9{1(br(tpCMO9 zNS~4ZNUsbWxPg>W!qN0+qCW@ynN^%cIIBaE*@UzEnI!!=Rh&zh&;R@Ls5o!-UE}`z z^jD(40R0u{FGzoJSr-y6EL?>CqK=5$5MVcVwg;9FE-AEI0QyS{mk};2T#o+o_Kt*J zlaOLVKz7OWSC+C0{Z&O)b11Sp{WWsFCjGS}D*5-<@wy$#{(5}kcE$SiU#GtT{Tu0T zNPj!}8|8JC|NEQJ-!xY?Q>e}9Zy~ZJ{cY(h|M$1HcPIMWWNWi-(bdmL`}X}W`a94+ zl>UzN_oBZO{XOaH0daq4`g_pdh5l~zv-~gr-5vVPbPahTJ$wI?zJ33T{=W3}@@HQU zfBW|ESGu16_Vo&AU$21n?G;e<`7rty(6{$L<#`1CBk7+=-`@X}qE|rs$I!RrFXcGl z@xuK3U;UHlpGp5@CrUqs{;7&@$)En|!ZUmXkMz%?Z_j_}pCddsuX~<~=R3?jFQk7F z{VVBTO#d=jFA-ik%;$3YR}2+pwMW48ucmL$f9Y%Sr*Fw$#p{JPICKjAo9J7zrGGR1 zTj<{@eyi{{p?AAo-15K9nY-veO#g2B_tU>erhA1-{_;`r0pWu}`(GH5N9aFJ--ZSi zAM?7neFcF2ley>95}y%1OaFP1=N#spe?f|dfWC%+zJ`GQEA(G=CRtxI;%=1sZ_w}3 zf0KTZ{#!D=Eqq7#uDRKMcu)8~{SR{GL;A}9eOpqaU+}Gqm*gDKZ_p2O|1y0ge~VV7 zul(Pyo7K-S`x-?05q;My<^O)3|NF55CT^wOM{`+=e#)TRV?72}k+n~MkU^IQKc@c& z{ZHtBOaD{)8YB9j(YO3h{|g_1{+Idw{5n^@@vCR_zoY+?oWH04LvH<%{y5KdIDV%8 z8-2_F^lcZ3{Aw>}n(}+DjCVx)WCDYe(EpSEKlJ~~t$*iv;9sjXnCJgN%l~$C1}9|@ z1}Bqs@~qb26h>S=8MOS*;8a%h?G8@E;Jge@%i!z`PRHO(3{KDBNCxx#KRANH8GW2= z^9KhQ9A%0%H#*w`gEM;{24``EK^p=XoGq_1hl-Z}Mdo5K&;Nt-WHar-`50V^!TA|n zR6Yv`7i4fDk%bvt#1S_mvX2F~aMxVfP5SN(?jf?La4(11Gw%OS)mgw#QGM@U zMSY`U0d`Qc5Tk?PHfDUBI^I1XLdgFd%gDc zyv{xMIcM(FbMM@V%^X7JK{AJuxsuFbWX>RSIGK~lj3aZ5$VZSd@t1uRnV$IDQJNV~ z=6Ev4s_Ho51cxd41UHvL=0u^UfLtTp?22uliDXWZajNp1CN%v|!pWRT=6o_|xuR%i zlQ~D6-uyqA^HSyoWG*E$Nwf>eTukOa@mI(tNm>yuBO~$8%q0GqtH|6%=4x~&l*~0^ zO8+z0DTBIzjCBF3noQ<488?x+nanNDc2#2Dns8KmI~jWfluS}}XHu0QnY+o{L+0MJ zX!@@xbpe?NlAQ89Bz&06BV-;Y^C+3eoG00m+O|*h70EnBZXq&HlRb;fGi2Rq^(>hz zndit%Ri5XCF9_8aWL_fkGMQJ&ywcY~XOMYK__}b4@C`C=xvS5l$0+>(CL@ zhVRMzklH_z`AN>7Mf*kgYeFXDx`5y1$s``xIkNMR$&=}lDUfl8Xpu}r##5e>U4vxG z!ivxr215O}murS`r2i&CHHn6<2r>=Xx&+8*{>M&%HknTHZi1`TQvM)2E15sZ&O&Co z6#K8V%`?d8c0lHz)bp?D4aZ?Vs9nk)1oS z#Th_$F|zZLU4ZO-ZY^v@vh$na+L^VlwuoiOF56cWd3myjksV5QH?k{`U4!h3WLG1r!GG4e0J6i#n)urU zmzxU9u4;z)S5Ky)>{>6oCfO~?u0?iZvTKuFm#pc3LLfVQ&?1hoo^XBP2Eq-68##1j z*(UzlL?eZp2sJ5}wdX&{ZZ6!yq1s^jPgdfeb#2>`?6x9oC){4RLqc|_qD=vjwWmPI z?m~9gWQoeNJK3>h_aM6;**)bk@fUNHaI|o5p)LWk`^dH_Ajj19G5yyzIe@H*f4bcc zQtiQH4^i!*wsG8+Os4X(hm##gc0Ac5TnO1C$sSGiC<|8uvFmHa2NS+YNq z{Z0H|guhydDbMd@GiLX_9Ffh5kSANPCsdOcPqIZFb)K*!EDI|_U#MFEy|fY8D%pR? z)-1U-zD~9wBPQ$Qy{Wb(2SZzSCuuX;uA@0y&Oe3I$^NC-8A%mc>jLEYmmK75{7=pX z|HjYRZ6$sp zL~d|Wm1NU`79qC_xkbq>t^A9TTRf>Hw*e(lG}jXYUI`;w>r5sY*x@sY39~6rf$!XTbtZ)a_f+D zfBt0&-A_5!Be#CSF?3yaZbNb-$ZeEx$Zc$fy9*=rP{=0aB>p*xe@^0`Gw~<4r6ZG* z{^v~poioj|t*SKtliObQ4#FLUI|+Ao=$c1vS8@`!+-~G{H>aiDgPim~r@?=26gds% zbE8$OOMu)MayIxUx368!gIlB{0?uIn~jpQbiyOrEc z%5byL^xuB&{+ewTyE<@34!JwXJx$IX9{1Y~`rMtWRj-k|o7_F*+#b2tx?MM#O0`Iw z2ZRrjdx+d)vNivcdxYGhu9$9?$H{5%-`h%0k~95JYo9UO+ViaNIdad-ctQB0Lm4lT zds)US$>qFV1?OHP@7n)*%9%p$4RPKi?@soqSeGT$X9{m+^Hllwqu z`tJy`-QNF(+{ff3>A6qHN&Isf|K~LR&)N8&+?Podxv!Ggv^b4ip4_+Oej)drnBNOc z|H=I*{7Goz|8%*(I)j|LgWT`3tqUNR73Lf!WO4<0ipt;#OKDY^Ttyx~@yHIz{Yx$) z*HK`VT&n*$jsJ5R|K~LR&)N8&oLg?&k&`2zoQXfVKZJiu!KMrUGHJ4^8RXK*pWHtd z=u|F03;Fr1Ha{!**<|!1-=F;Ks-2@3o1c?BiEU_sa|!1b&O?4cns8ntBu7PlekELh z{DQWQ`GLYg!ok9YgbO=#OxcT)Uzhx1&UyJ-2ZIbdgCBKO}Ir|Nqj8Oe8;v{3+zmC4VaU zv&f%j>+8;o{OQ6oglC%5DVzDv7M^1sC#3oFR6JkUd-z|r9sx4`MJiq_wEwv#e<}IP zOq27M_xg0RuT*=S{@D7SiGTiX3o++C!h6ZzC*yvH$-QaJMNe z!{g+w3n2fb(Da}D)54zq+w)QR=bT5*=gGey!}Op0OG4>?{uSA;l7F52Yyb5H`6H`Ye^L}DOTJ7#N4`Kl@2b-6UvxHk&&Xz!%y6TQe1&`=l5tc7Zg* zKng2T7(`(i3WF&uO<^GllJvsD6c(YdIE6)(XE6)!wQ7mfSTf0zW*d_D9a319!cYp! zQCR-}a_q!U!&joPI)#-ftfG)%X`WRntd?+6<{A{%rm!Z3wPyCG{Brk9OzKSL2Aaq!b60Irp-7!<&2|ngvdws z9?vKo<%-Uxa14d>D2%6Y28CnAIgY}~6egsx$5S{#%oEetlhW9UDd!Xgo=QQJKZV}p zPuh$#DV&uu&ld9>3cdM%HTZlAmr%GMP?6D=1u^)DGJ5 z0}7`9?nmJ&3Rkmnhsw;V}x6Dcr5JHwkYR-a_G48Mjfe zYX@hmcn5|5mlP@3{11h@96Aq$dsMtvc%RVbe`GvB;XxUu|1ut?VEQlnQHRQ)$)AEv z{!n<*p^T>}Je}Il$fGHsf~J59ngS}kAb)QPh{DTuve?P^3WZlGyi4IV3UA8uI)y1R z-bgrF?$pGl@D_!)Dg5{5SL%OHA@2*_c9!_NO>K*CKNCX=9}7RB@F@iiwhNz8_?*Ht z3L5_xZ2V8*E8*9|ZydUx0>70<Z zpq6xS6F7p|8)@h*De)fX9UYo7 z7k9=xjN&d7U!=Gz#bYV%Cc^H*Jt!VdaZfE}FNZQlQ5;S20NHy}9FzL@p}4Ph@qP|f zyFbOTiJf{5q$u$(9_$_ipm>PzP~l+?T~vY;$0@@R6pxf~ltURu3y)Fr#@kvXCrj}- ziW4ZFDF5-o6VfWTnpaaind0dbC#uROf83AasT4K-cbm(KXHdM5;+YiBqj(lY8~KZW z4#nPUJE`Yio^ ze4FAs?trm8`h*w7_b7fy@qLOP*d>zgC~4^*QS7~U>B#mDMe!4gUs3#&;ujP@qiB;q z$yHSnMe)nj_?qH0ir?5$G*L$JTZ-Qe+F)t(^v=N_D7u_KQvAhvDE>t8=cLvyUW&g` z{GFnSzx~{tUNIwDR+vlt_Ql0wfufD}DHbW(_&+&@>_JTGs||ZoCEX=E0i}ZvfuB z)&Tdifcw^5XHQ#%H@|zW*!GdPAl@LnfysDsV0;$dU`v&JA;DW1Zxg&l@K(ZG6i-(K zp7h^a9B&D0m}OhiLYz)|OXDqzHzf5hldi&YctgcB{kJE{y%q3Qv?zVeSg|YPt&2Ad zZ!Nr4@K(oL6>l{=_H@g}-sthxz+2M}A@_ohJ|3l-uGDuv^@@X>gi;q8dGIo>vSTj1HSA8*TaT}=PYwrtzt zZI8EIQYG3B4y|Z=VJAG-W~cwV;q8KFgMX`a+tz(7!rL8hk7PSLRP0^}0dJILux9U# zcM#qfJe%{u+ef%>TDw1T{AweD}}@Z3(k3GarKeSc z$K)gFarhYC<93c~MpsLGl5k7Br>M9??rF+Zyk{s$H@s)@p2PbE?|HoU@Ls@sLm`?1 z@?OGwS;bd`uj0Kfk7y3Ey@o;~n9 zk)f`~`#5EOD(7dy&l9KYFY&&|`%3oL=C_u7gEtND+oU~s-zEOE_=7k<;{7Be)&Jx> za^A0a?zEbY_d8x4FN5c#JBwEkIfs|GY?=edE8>;xAso-M-R))_y)s^aSHbgp4`wH) zxkKAQk&;w}HOrIS>-5wScoKhWe^Uf!xP*UdLv`@Fc)gh)3skRdhVlQxn~~ao<4OO$ zp8i|ER+^P^meOpL)~3|YLQ1n!n%|C=(j0bPm*%8|4C{#~&E-(W+`@S%4M;un$}^us z68Ww7oxPVj74lkN}B&E+58Ws-ou}=mrV04MQLgAhfrEx z#xj(awe_`}%Nb4UPH8Bm738!oASJA9wlRkZSE00O>RFAF#{Z>s{9jsAoZc)DrFAH; zMQL41Qz#9mbf{|AqqM$^4Jc`_UD}Y+MwE7=i%AV<_z-zP|ri`tSRna*m~B9f9lvg$GeG{g-`+LnS$kk_jE9!zqoUWCBh}T|ntb zN~ZsmjvjQRNg1VMD2;bErDKK12`31Tcj!0?QaX{+Nt7m0I$41eDV;@0n0Hq6+>LN;4QcCr|bO|NXe@Zs~ zr*ygS3WrI!iq-{C(kCEF`UFHtpMWS`C%;}^cFVHX-biUOrN=1UMCl<)wofVDBD|H7 z2|K0RDBYgqr*sFU|CicsTiun|hPK3egc|>s?vs5#B@I-pwm1G)&WDAM2p@H5bJ3;8 z&9EgtLFq{uPf>c2Qu^?J=@~hn6+TDF#{ZOFaOgaSR(wflQ$Unn5xy#XP58P)g}*_0 z2}*BL`h(I`N?%iw{+CSuDM|cG@5+9U(kGPOSNI2M_=l7}N^Q5Gj}zO_miwvjGvVjL zFN9wTzjCO|-%x5(nntNe$>#qleJA{$(r=W0NNGP(`bmL53x5&*n$#NF5`PzFgjr#Z zQr=~gU2tf&EyAOu%YjmvQk7CAsiNdl3PcWtQ7@#IzecH^X4C!OlJ5VObpN-cjo-`P z(Nel8`A^CNDNVPcE&VS_Gbqna>2DSPu~A&jq-sMon-IVWA#Z z&Y=97&>sGzJVp3Mk}b_SRRrq-RQnF)Zz;b^`76rrQU09r`;;~8FMp77K5~Yl-0Aso zn&%VBpDKer|C2JmNSR+I9z}gE{6;t}4VV6xzo+~&WextzKRSXq_6SgF|3dlK)c%d~ z?^>cw{yV4aoI<4kw)(mvC>JSv@|*t4C{wP;@P$F@4=G2?r?XO6#U#-1Jm=I_1CYa?cg5>TfDeUH_r70OfzF z^rte5Yq>SPGOKVlVLvLfyJgAN_`fnI6%tSCpNonO{>7O`IDpE$*22nsDQAA?PwfS% z3{3fhs0>c+g%rE6a1n=&uOy36S)9r;RP6pQl_jYRp|TW}r4vo=p(7_sURjpPa#WVL z@KoWc*!W-BR;02Lm6e_CuCwGBX13eTl~t*%DbH$DR(FPMbpgpmTxBgPYsTPSu*;a0+} zh1)nxR)@-VRPt1|r*b)!9jJ_L#=WOmD8zM z7eM7St4emg70;k@rg_XhYo_Ds94dDIm&$n#Wt=a(fXbxQb0L+BsF?Dn87@(tONEy? zRLB)n?xS)gl^f;1N~kWNat)PhT~VIvs9Z0@^xuANda5#6o|~xHBBTERGx5~)WY4*%_vr$qVfzCyZ`GvT2mAM)PA1I3rW#=sJtkAsW<;td4}_vY*^=tn9)X>0r} z!Y>Y!twiNFvu)jf7iIsDiM`Gs8p#Wr$$X7b*-c80!;st=E?7}wN=$g+uZFVQ2CR}bkY7wYiFqV zcfz6aFa9Fz#lCCLih{Mlyg!1q4}BwmRjTFEMOZH&Ppbd^ii%oE&XrTzD){^1uZq6|{%ZJ};IEFq9=?e`{+jsf;IE~S zwUZEsDy}OWo;dN>7k>l%jqx{Bm5u+CHmEoPe`Hb=b5s0n@HfNX0)O*9CcgCFm;U>v z|4EfXw#Dzw|Ko3;RN?Q4zlUmf!q?=FzYD$zKK`yk>jGSoBoF?c_$K)Hd*P4jTdq8N z3&-H6gMWYDBo=>v{1foU;va^80REviknj)0H~q(#`1^-A+lCnq-4~*qhWLl$A1lH* z{3Gy>#y>J`#!=3nvj8KRpK8foPd9PUkmY1#J>>#B>Z#nPsTqDf1+ro2v2pG zCO;kjEIH4>KeI1`Gw{zAo|8Dmu`U2#`tM(WKdCQ|YA?dS*cq}f!M{}G%aU-}SKxn% ze8lm_Heq@R;M?IO zvULIYcj4dN$H%`H{|Ws2@E^v%UxWt~{$Rqvf5|zhe-i&W`Jci! z{l|Ys_@Dl(_Idmlbz<)FGIFVHBTlgR1 zzm5NaGQWfWuKe$%A*TO{E&oUO(trPd;#(Jh|4APQ|1*5u0yh5_J-;20U*Ug^|117C z_}}4A!~fPs#s3|#-{afhzbEqkkN7tDNB6m$AODvm8~$(j0sim!PRuj-1$>FWZ{m-i zPiQH*s3dv?z%L~$BAPA%e7}#3AL2)@sM@NqhF`~TB%CA`ze%t%ev4oLew)B4b_f4o z{4V~V_p8o&Wl3*4i1UCMc(T`v*g4t!yK`^H?(kcjgccN3z z+@jg|U&g!yLkQ+07^vd>1PjPm(4qS|8o?lfB?tx+EJm z$&v(1rF`kX@s}Z3o?zM3pLPMk(9~mH0KtmFl^iPbFoJCeRw0no2dk=fHGf{JSr zY(cOV!Nvq@6AUL_TA5-&aMjJHaT`s;3C{l)YCUhhQ{; ziGRA#eF#n@*q2~`G570TE(K!=4kI`~&I29FP!|xW3ka+WAUM?FpcStpI6UQyBRC?p z?Gk|CD1xI?&oKn!2__KO^Zx|LC8Ib)D;_UAA#oC%L~sVd$x1RY&7dwIIF&%-f6ITm zRh55B*XS&QsRU;eXn-A@qwsSH&Lg;z;CzBh2reMFh+qu`XMqpsJfw z{;dSBsD;x1!1SNs4g!ZJ<^*>V+(mGo?7Io>A?Qv1xG3k8-==^FtP4=8hX|e^c$naE z`5z&W_y;Eb2`4cKo)qCJ;nM`q5U4oC4< zs}Oun@D;%q1OJBLONZ9ixc_Jfz9yJP@Qr!o6yaM}E8~0RQ5Vo#i=PPomh)$VUkEf& zAN)%28$pHOcY-`Y#+GYM()@p5U4V*i{9jgVQANA|OHgu{5K@}yzp6q4&FTks3xJ?X zP&2aGbplQP2R8X{KU-h-`-{No|DObU{@<8g@zn+NVy7p3`Ddid`iF1>f`19;BAkV= zKjEx|SlVzlVL!szjclGd2(1gSpWbLT!#!(cRdW+APdJb40m69+7bl#La4_NggbUi^ zE1`7(b`v}tNI1yudb`~*MjJC+h;R|Yh0WuRRksS^qJ)dN2ZWq$)BfgJf^ZqaB?*@% zTq?O2Apa0ct0@{S+PVP3+=Xyg!aWFgBi!A{PN3Yzbnk_QdlK%|8>P!nIGWJL`Gk8Djv?Hq zHzG=+%)cMu{)A&KgO+Q9|L{P?4#9z)k2;CCzC%iND+(me| zvfU%RS9qU8M@Wz`)&KAzC3#r*NSeXs{|O&+sMse6Un4aAm;Wh3jsHW9|HEeqUnG1^ zRnH4w_`l0~NzRuEUr{#Gf9G+iqVzwUBKr-(Hwh*9;Z(x65{@0EwsGDOzH82&=Y7Ht z2>(ae(|TgV`F45dnmmre< zM*~PYg=k))`G_tenxAL~q6LUnC0dYZX`+EdixCYXT9{}s(L$~bwo)#eQ>SPVA{+eM z$B5k50Nn5|TAXM}q9u|gx+O|`itwFRdk-CFuEnB+fUt73N@34%9 z+XhU&(;lr)w4ohN(FW#pkKjfd*;=@Nj&@_kXav!gL?ekdBie+>>AyXoXg}9EMw=6D zVYWVi;Q9rkt%$ZIa{9lG{f)AFa&@kzJ(U`5N3^}Q+-278BifPZNTQvH_9fbxXfGnS z8Fwezm1sBjIIFE`Z!hmbw5JtapzC+s6S>hSqA^6HiT2h8`8lZ~+9xp_675HHFwy=* z2NI1XI>4CIZ+A^iH|#-1c0EFL2+`q0hZ33i_c{^VgX4&f=q=azqc+h|M5hoPO>{ib zF+|4^jVC%b*{T+sbqCJ`Gu-blcjTNvbTZM2L?`vqx-YNxR%)Vg+@*bVD$zMarxBe= zbUM))y*@g5+BQ0i=xlo?S$g7DpXgko3y97mI^Tvg?oSF_pKfb0iRePh>2`-h+o2Z| zeL!>x(IZ5c65U308PT;wmlIt@bOq6s))*c6;$Ka4jm0|Ma67d88_{({HxaoVJ=yt* zZXmkR{u z$Cl!j<<`_a@*Ukr^dQmwL_OuVwYKf^5YfYyv$qA@G5ILbD@2bGJxlaB(NjcE5It!} ztXmiTvkB4DM9Vl980=slu$h~6Ev?mWqJn6{c7N4D|5J6nl9 zB+3zeMDz`j+clpPeN6Nz(I=M2t*JwI$20oOp?#V@`hw^ydDI11mFd5ov$kia5xFDb zTcRI`z9ahHjsaKew8dKZBhgRx5WCy9ZiBd)`REs---&)D`prCUb=*9sZIcX<#NX`* z_p`0xRzD&t5cxz!qB4<3RI(PTH_^E){dasj>P-KMLR-4?Slg;ZF;PwaI#I($jGfTh z<2Xi^{zp1aY`r>E=O*eB{gIq&L?-@XPAB?{>YPL~sLo3CH<8DIsTE^ zbu`swsII2W%TisAs>`svE6OvJss-GM}Py)t#vBoWxSyMYX$H(S7^9 zy1R;dq_u7f>?O~rJp%OT~Z~_4ODNWdaLZo!keht_+NJK764UE z{#1M8f3?J&0{2k8Q?$E;HvjK_sM^Px zQGJ~1n^d2m`XbdQsXpbZbf!N|^##$Mq57;m_WqYV_6TS~Q}HFLQ>g0U&#FEADYBmb ztiDFI_wc8jGrj*?ol5m>s&D<5%H-u8(cTrlCw!l(J^xAdLx;&isk-9VR6nNrN$UBO z>Q_`hqxvP)&&B`3_(_P?C}n;_^(QrZn($ky-^tMU-wx>?bOQc3Xum`sG&C~*FQWZQ z^*5@f`BZ1tIe!|%uI)X84b5cV_e`qN-)6{XuP6YIjpxj@o!? z%TwEl+E8j6Q(J-B+SFF0wi?Nx&T?88Ky4VcRj8TxC+Ciws|(k#6Q{POLlsT`t*C8B&9=M} zZX?__Sp+qSe{Baj?M6UK+nL&4)J*)9#PpxqZq#-cbB{FKh7j_MqILka(bV>%wztS* z!N8~f9 zX|Syj)t*D`Txt^h+IiIM=I>1WN!08TAaPQ=nA(lhE}>@fPVG`^mr=Wd+U5T@%DMnY z5a()Y*HF8jnu)(WGwFY=cMF)>WNJ3Hp>`9so2lL6Y{z#$YPV9mEh#z_=MJH(lK$6B z{}TeWd#Jrb?OtlHi*p~f`>8!m?Ez|!QF~C%hp0WA@Rk1&YL6yG)jlqKLinUZ8P*Gk z{0z01sXa^W1!^|`quS@wT221fUP_9pdc~oPSB0;oAyZV;{D1AulrvS%x2V0H&{Fcd z)ZU}^8@2bTeL?L5YM)a3P~?xOeL_w12DbG+c1{w?FZqHGu8gA*k6RdI!vml{Z7rNmZ4UprtYAYvw4hKURbaT1h*;7 ziwwCV#({X3TNwEB6ZFG)UA_BoYbZN z_5Rf7p+1-RbNBI89FQ{Sqb~7x*CzD^thMz8MHna?WVGb{>-s{}hfrUb`Vw}bT3>{^ z#J|3ni;`#Y-gTMPE=heUWm`I_mAwr0m8dT(dpYVusV|>2!=VPt*QCB3^|h#PMtyDS8&O|}`g)307f>JWY=x{Z=LSO4|1^V*|EZ6l zF4?b-OsW*JY0BB0`j*tUa8)w}Zbd!qdF$IKNvi+#?WylVeFy40T8M3yorF6lMUi)< zK8E^k)c2ykyF7acP5hJXNqtn>fYH=71(Y`1E}855Qoo4$e$Oi4&0n~K~P(Q@kTD8NdA4T2tU$x_?A0hvL`Y->{LhAykkEd?)|IQY30`=3VA5Z;c z)t(?!7f?Sb;m9+Q`YHBQSpC%GNif-`Q$J6&XHY+r`Z=<#3!r|sL&p*A+$2PPT>{iE zpgt*aQdbvXnJ*UM66)7ezm&Rqf%;|Cd-_lP3hF)aPufrYYU*}@pg@=5x|!DN2I{8s z)NiCdS!-&~|5LZ|zw;+Z{Z{I?r7f{OLJfAbnEIX6-=lsP_2;PHP5n{o_fUU;`n^hf zpU?*XNjB=H|8hR01wBmtk)%q_$EZI^-Sl5Y>jFeG@t5am;WI)_CtBm5r~VrC7pT8z z<6iTa{!@QBZNGH^)J^}D?RDx?sZWvfjg(_ufNI~8zo-Ay-=Y3)!cpz})PJY`0rhXG ze@OjP>K}=p>VMtzpZX_hw$G@4McwqD`WM14XUg`q$lnO3B_XoEqy8)P@2UT&;txp` z^`BIf{?~s=obvqUFey^cP!FhQse9COIur9+Zb4Y=Te<>E)XUUO`Rz2clh?lgtg4WD zl;*6;qrrc@F1wLb$!^kc+SQ`50QEMFIjDE2|4Y3~-AVl)Hj7f%_do0Q{ZAJn&kV)> zofiM;T|P8sp)sp-T5B7#8K==tX!@Ttp2nOs=Aj||Z}d-{bJ6%u|7i?xdu?&rs zX)G(|ax_+;vAp%UjiG)0uZk-Q?M8!RCP-ry8q)K|sx(%kv9|4z#_BZIP_{LNYZ*V; zM~!vNwoSAyjp0cn)fm%%`8S|p`Y(GUhpHVx<7yfsX^g}D{c*!Yn8v0wHlwkF2%FQ` zg2vV~wsb{#wsM$;Yy98Xmd19f+CK3siH-l|+)22za2MgO!rg?s(=h#awxaeDj-s(Y zjnVdXwZ`5w_MtJx*@O1o!qA-i(%7%hLu0I*2M7-o9waZ?zlyR!?G~wwEwZt=N zoGarj8fQC0w)F_2okwF54T*o_f}~dd3u#l$p@)AgQ>YiK-1<60Vz(72Aq9W<_2>W{B zY20F|k_pe*`i`{Qlb12YOjhbn8h6onfX3Z4?xS%JjeBj%F}Vlf=F%JY_s)82$%8Z= zvZ-Th`NIyAn+_`WE&*sfPUAUwO#f*-NyGG?hQz;N;;-Vf4z+!rr|~L{7gE120U9sS zc$vm4$;7WUz|EL7UZe2_4PBTtrX=A?W#Ug`shj3=T=<3XONTPP5`IlX`rnwQ;i8WD}EYNh`T>3^dkPnvGJ!flI7C)i+BebGl-X< zA^o>S|D(WviDw}mKs+n)9OjAD1;qV`P5BHosGY2x*W zhY+tpyo^mKStFMvUXFMe@$$ra;Wr*iZ0GEMGfweJ#4DSpw_d9duSUFTABTALnQBe{ z-H&)J;wxDf{-}7%rynV7koKxFpN8-zgcOt%scxU31h<71Afp}Nq zy@+?SrxD`aZ89@OH0(OFWh4?8I*o|495cv5S3&Si}4HT_t~y z_eeUp9~sn!X?kA!q13J|J^U$P1Xeve?|PY4C#M7jre=w zZ;4I(-E((+|MN(!@xOZ#FaC+x1-jG6gqrvl;jhHM5$9z8PMjgmCf7l|tD!jWs#IGL z7KNU$M4Zn5#MTAq$O)XG+E5q~oBqqL5ljDL(|?g;VKZGd>3{4t@4v(ne{1I-#HRnm z)6+bEsW?OUH}OA7crQtF7V|glDuAZ+zu9llCU#)UW1E-eoI+^oYNaXtZ<_wooJTmo zq5Ue?(vz8HvX5fgiu{Tb19lj zr~V-{mq~2fEY0O;u1|A$nrqPH{Ce{&<68>h?>G)F3f>HkdYyBW>RY3@RE zi^E#S)%Rh$ZSv2>dc{0s?<=Kzs(KPo@_%z4TJRr3Xqgz!k=Q4YmC#u@UA7amLVI2jXC|M4oGKvVaBn>P4&9>q>n)hQ|SRGO!y z_USawNbNJ7p*20*88pwKdAW>pY1%ZA?DK_o2|#m_@Iv85G%uEMNxCkV((H-9+Hi$x zuXHHmDw9*S~D&8u*&7q9jXCywT?G=HP%&Yj{Q(G@Yj`f{8y(Kiv+2D{A{h@>hj5hcfCkP5))b4#iB0rvK(K?dsA# zp5`C4CeZwo)>bs9({dvG7p*xJJA>xm37@9M|IL5R-7A{1~x(V6R|JI_k zZ2a#$YJkMQwWJ732~+)V4WYG+^Q6q>5}VfYq74p>+YY)~B_BouRD_g&R3^{sd`_NDe$& zo0!x1o6_1WwKtc?PAFRTUO?*Kn$|XQZYwnXr?ow;akO@zwYN5oO##u`iPp}v>?SX* zU1;qp=59jMf9Fq-)}FLX|7nd%J)@IaT4QJ(qzwBA_ocO;Gi2{C94kCPcwicSu!^St zGSmgMtP7xZxI-<==Ktk6lGahQG~v_I6i~~ifW%4Xe_F?-p5tjr`6j&@%m}b-F_t)&)}&cHm!?k z&rjxRT5d$Qw* zb`!0eQ(Ij?>sDH~rLnh*bBDv!b0@94Xgy5J#{abLNn`I-@jhDjEB^z+2ZawMv9hKA ztyKS8k16VLT2HtuP+Cv+o?dG`MeFIrmj78=-_v?dlIqk|CZ^$ z`)Mhr|02I8e4W;mqz$y*p!H^7dsO?DQ2O6`NA|nI_k{1$`r!ZaKce+NT3@PGT|ny- zTA!x*Ka>A+p>+YN|0`NwyQ2Kx2&W0v1+>0%wqw%zfmT-jAB8{B>N_8Qk>^+8Z^GY& z8Hb8Z^}m&;RZvx`|1FPJNu08<;xLI4EuiJ3<6l}4Et7OwRa&P1wCWCJSQkJmrq#43 zDqFp;$H?xes+%(ZQ1MTp>jM6=%jDJ!;on00{+p{!koGLJXEkzrHrjL3?k9V8hcf06 zst0LX7eKqe(7FJdzG%-wdtP}43>u*mtv#PBruG7~H>bUz2m>v|G7O?UnD#2P7oxo+ z?S)hSBC1_fxESrlZCkaM=-XDbm!d6gZ!b-INE)?__{-8>ZYJhXIaf$IE7D#msinQL zs)jjK{#9vjNP9Kf>(X9bRcoYCrvJ3pqP=z+JJVik4_B@9zrDWf4IC=xMk-pDA!7vX zk!c3&0%&had$YtN{uZ>4qP->Uv9!0My%X)N(^z!@?QLnB{wsES;SRKSoGHW3a_&NV zH0@nwoBqq#o%SB~q;Y#sp}hh|dz3wP>j*;Hd($41^7o;=uUfUAaR0ugDBA(T18E*=Zjx949`yz8DqlNY*W?Sr~v@er!x$uhAetEW}(7raY<-eZxEeg3o zcq8q}Y3xn%+-$|(;%=pV8||lQ-%k4;)!sqdIvv?}(!MLT?>3_sbuaDvXg^B(e$n*( zpZ0^Umi9v_=V989B)0q#|MugupAbGNe9B>xnf5cZUm}^jYCo4Q*Pj2R{etktgiQP8 zwDuL+uc{6D_-EUm|D-)7p~-%ePCwdHX?wKaqHW8f{WfhAf7$N}-=qD0>iIyP4}~A~ zy6N`Ew5QSjM9xozpV2nuPn+}w?Jv_kt4o0P*R;Rs+vBvqr7b;ge@FX!3$&K}K>Nou z!%wt-PHofw)c%e3?;@M{)3z?dRngAT&dXB}78Aeh6786F**q3f5&FVFXd_12k+3RM z7tppYfVSQOFr!I(I_)HhI*WG45yWwq022SUiGR{m`TwFlgU+n9|E4pGJpa)Cw?}aM zIyrC8@N7dms$8BS+TI!n`m&O#R3=`Wm1I5(Yn=qx~IfUSOKUg3Pg`IEGU zR<)pTpm30IutOzT*rAL?gwp@cVzL*fvqW0EB%P%aTj4`QSccAOGL{uCM`w9DE7KX8 zCSQS$ZU=OFgMaf|dxi=1{m;&-DcSU2dDfsK@$amq;@YX-^q%;J@<=+Hr1qw+*4cD6r?U;6E$D1TXG`boU1oN+HbReM-0MZ3J($ zPNgI9?@UnD@xl{?Cu&>S%>p_n3n!*|PH_ZzPBX)nc)IWm;hA*KqH{i-vs1qGzjH1f zoBy{E9Sy$Mj$J3x!Ih_%R#o3Tj|_J=K(qz{CDn1qUcx`K<7?6chR|* z&fRv8wR2A|(Cqs}F#S)QbRMMhxSS6O9~M3$d{k&%K)Pj~p!1|F+7Y6wS2|DAd4|s0 zbe^U2y7-B`?rVM}0I`;fOosWdcDg1E~n1+96_v(|=3etM%xV zR8>wr6?<%;jM6vJ1d=k?fy=8mjCYTbfy2vouKaQbQh#M2i>_WsyioLWb}9Fer|YA zckaZdJCCXc(4AL?^uOEFf4U18Eon)2Al*S})L^>Sp(tcwx{IV7>3?@Ix{LR%1>Gg- zj-g1t&kyfSC+Aia9O&`$ylE5P-j@I+p}H!`T<>a0o}95edeFV!Y=_oQp$Pj@rA zJIdIc?iO^nrMsnyTiG>QcWa^j-->g}-cGgKo91+PNHj$DPR_5Yo$2n9+PliLn{ao! zJ^j~u?M3%gx})eGO?NcigT+x7&>ch9#GmfIbjQlrkM92VBA#1>d$y!&T>#w!g$E^0 zLvvaeK=)9(htWM!_ThBLX^BT9t8ZxgqSpn8a}3?_bdRTdtSicMoY1;}o``kba;5)W z>3`SsUz~|_PwC4{H`V{H^uH_p@19BbEK6l=JNy4rbr#@LRNw#KKJVR~S-=lqV=LH! zSlHbKc3@){b}I%376$mkzyd^6#Kb@>zSx9`0g8=+-@oq6?Cj3}ocHX-&-Z!uc|GTz z`@U!H%+8*BCzoXYuU~FX>&%r>A20Q*r2c=by;|zm&=@N9;Zna=>cd!M{;yw8`vxW3 za%iaEMCZ*?Z$J6vx_7J8?~?j$Qolp$mjCUe=alL^WmF&0_E;Y*|4aQIsgJa?Wc7R7 zXTa*Cq<){txW1O{>!YPUPU`okZKeKz)E{Kqhn#1O)S3S+;3HChlmU73XZ>;7W7FWq zbQr2XA@!#iWP;S6ba5uCVdu%~PqXS7a+1_vkhm0`gaTHQ=j^bWL+D6rgvO) zlURGRJwGbdmOAr)do6yI`XZ_SCiR8X{BB~~L;jHZpZ0X8-gc;W*y_=G zeX-PaQ~V`$JNaYx66oQo&id-Qn*Z1{%lh9m-TS%UOCa@71KJYxzlZ7#Y3l04(&&(S zQ$qa)TN3Cun@Dhr1Q`kTlprg?suJWR=psR00!UD>E(JxhB!TGdeC?Qeb6`-Gpe8{@ z0$+kEHC|e~)SuJT=-BsnW4i7^R|&dFU};~1_FX`S6e?4Y$kyvf7)B50&2FB zpg)bRl{B_dc5HZu1lvilvjp4I$^0MeXc}AYPU&(b*oC#bO2F|V*o{TIcQjS9xR(S+ zNwBvB%;dp766`C%{u1nGnt#8G10*=m_QPO+1Ot~e=i&~Q;BW~Jk>Jo&FTr7HTieru zBh;4Q$kf9KM@w*y1cM|vlU2t^a4e1EBsg7y<7sp9ADl?r1_c^}B{-SJDdefne_DG` zvjy4z%j^Cx0f!#**d<`<&y`>pjUf`8N8@}6>;@hQE|B0t2`-_1kpvf8likC4Ffzgw5Pme`DQPsdG<(HJSg{Su6lK))#t0sl4`t%CMh zyTBd+rv4!b9;cz-l;wX39x<62k4j)M+v{bXu@a1vV4?)$C3uow{!f_EkOM1twA*1jeQW=O!~Z}$5Vd?3Mx>bE<` za$idD5&5ywwVKIRvm}@;!JIU{Tgqn={3yZa6nx?I8pM(eopZ^r$!{e1R)YBweCL|a zQ@`30eD4h20vfc30Ji!`f}bT=D8VmUq~})&ezVzK@cX|rz2Fa4{YfrLzc>jNOYm2x zo%8=mI6#8GCG0K1KN5Np)Fo(15J=EqLrq7K8m@aWoy|_3M8dL!83}V%6=qW zSdh>z{?aayLPDtnkc1T#Q(rZY1@R?ZNy3_hJtXYnYP(90vZB7{t##d4jhfXZ@VRu5^gBrx)QFZtz3llCA6WTz4611B-~s=PX5D9B1TEcB4+)hFpq}<{x|1*eQ|J6`C+I`w)>@4A)Y{elU+*Lv* z|8RFYZ8&HTg5h2g?l0lq^zUPS`#Sa|IRvC>Fg$?0I#B&I21!{fVXPhHktD_{mP{N}nJeU4K5*{PrUcRQpTK@H7cex3*u~;KH*Q^Lz6yoE7UbA^Q0NqD7%SGAu939oj>HPj51 z@Y*F0j7WIBgiQYWbV)c&{Sw|t*-fMk1g`mTdTy1_ru`D$W-I>pGZNmB_Q&;VgoKv= z^~3Mt9tj_n@Lmb^r#F%fN2RqA-shT(mhfR#-7nz-5{{A3=Ku6OWJdbW%WY5l79a^9 zlkiDuI7WnHB^)Q=1PRB}`NWc5xur~$kQ4s!DG6=)Jf!mlKpDdA_-%pzx# zb5t*(o&T{rJ;Ki={KB>RGBuP`&XthKKeR1C&$k_Yj+XE{-3e*Tmrxh_y@ZP-{6WHn z5-yPN7YToK`k&b9XDix5e`WDESNnUXp8vtBKixO7n8m-G^1o_uz5W(GehL4PkU2lB zOBgs!$R?2$+rRx-Ld*XWwj|0(n50VUNtFFp7UfgFLM2oGqOKBo6!;R=(mu1;eguqmH*zVmgX~WBP};Kt(b5tvFA?*9v@ENZQ`*OR z=<cP8nywWwJln@ zeWG<)yB@i|()l-(Xd^4On`|P{783Q9Xfug81lX48*J-Uccgii*kZ3E3wx-d4$uX2f zOmUjwqwOTppUn0WT_VvA5}hW|juIUx(M}TW%2qo|WXWGY?C@?9?M*+Q9gFsmXitg$ zz4McreNw$d%>R+)e~EMpACRsQx90$fj+SVkL`O<=kVKZ-B|2E5Ls)yLTld50KU}Gi zJFVkUsV&hUiJ0Ug-U1r&{-22V|3vNke;DCJiB6K}WQhiAu{}gar$}_F6?Lc5)U6pN zI$fe65}m;&O#Tt)|F#31Ezvm=wNL(7_wgG86J_6muvrg5c2S9MY{`A0(~vfDl-y4J1f^=T+J877e>e2H$P#)beVyG5em zth!aA+a^Ai$Hkmy+oo|I@Jji+p0 z8u1ly)=7>C(IjhS{>julN7|piNc4hzi5k{y&HtJ-UY2O4L{lW1A<-)mS+OZ=>lF{YMS^tX-1mJ&8VMllLY1fX0WU zC4c+0x7a6Yb6K+_`bMJJ)Xb6SONlv6XpH)p7`kbO=Z+W+T&HorVno^jQ9v zM!|}Gj;39bMi*%aZIESYc+#lQt}6Azwti|$qh^L~#zt4?>86G>+Vg*DbeH%6Y4niB zXVT~?jeDfAv@`}tV;O1eD2-*M(OVkJNn>?sEH90f*>(kTMQQY+v650hwl_AI{2QyL z9%*n0NH>0C4QZ_D{A;Bvt3_$_k;dB6SfAZqM;ey=>9G`5t+#?HS9 zSFNu!nE!1x`$=Ont2KLba*H&MG`4cB`qRI)G`4ZdZKbiDv$tpM4zATs(%3^9JG-_v z1W037ayMz%{NFx$Zm_YZH1?IoUa3bKdrM;0VacEN;Tny`k*P;1jiaS8s8jJ6X&kFX^XPfw#_`fP zMH(C$8YfbJ5;<5JC!0)vW%|*~Z=p_=#%au z&o|Cx)evc%r-pvmH%tD~u;GA)4FPt}ym5&%E|bQk+AE!>x!TL6afLLl)FRtnC5>Uy zxLO+5N`v{o!4n$n1EXChjq6>PZb)0Xwl_)R4r$yh4NLXXxJ4Sn8B_lVK%cg=lqikc zm8qV^JIN6whk(Z2?)$n|8c$1Oq%_8`c9b;klZO6M^vk-Rp3&(>Q``0DLHZwZ#fPQA ziG4%&jYnDam^2HJ6<92y#*usBmmW0o1# zpE=I+soQ#=OT3LVzL2;>8edAIC5^A7@v}7MO5=NJe9h+Hkl#wfo&0IclZHL~t9}>f z2Wl2b7BA#_uX)lZB>VLw`P&{OMUFjm0$n(%{l?4}Ue% z+P|go5B+tw=)fYFGLlBjhV8!qqiy-0wTZ-CCC*4(mDrNM#5TCl$V*(17!ntqrzElb zdyYLWJHHJ9c9Jdj*wE$w*z&)`UD9_{O5BabrA*vEr!TsfSo8m?68DgJ8HszUpMs^^ z4?)MvO1zT9%Sqge{^iLPBwo>!+|$yPrGI6KE&sPyKVD7ZjU--O;`Jn6L*jL)SySS* zB<@4Iw^EN{Xs>Oy2GpG)Ue|0rdl0YBDog$}HZ;Qo8%w+?J)20}H(i`tXg`T9|4Y0% zxrH^c;+EuA68CqTVr#3?xoftR0z*K41P2z*8Jj6U{ z)`~6vQ+c?=N6=K6SVe7?l`tz97T z#S-hT#mt}fu)XP2bE(9anLZtNY$;b*(F_{}B)-au_AOr{@jVg`m3X+s*Ghb|#Me=9 zy~M*LzQJVrv30*u;+xV_@#fK4cYKQ)=_n)dt!hhro5Uj|zFp$>$sdV%U5|JBNPL(3 zaxMRNET^k*FI$b2_&$k8rF$v2kL4DLN3)0g|M&K)Jt)m>Bz{QZ-z6R+@pOqFmiPsU zACY*X#E(imR^rFl)`kH6Fxt4(mUz6xPq21^#7~;jZ8wRZl6W$!o|gC-r=LX6v##6E zIlm17jQpa+Z%F)-#IH;IGR0FQ=KG(ybcyW|Fo|DF^%P8XZKtuw{2#w1@!Op=??}x2 z-(G9|n!b>DhQyz+35S6AeThGi_(P3P=SQUFf7jcY5`RkPEQx2+;3a@`m2LBWCh_N; z^qSTdNc&icR{vo#gdWmdnzcRC9=7}0TvnRB>0gdqUYaXNb9LG) zO0$8{({ z+I3)CY2G2t?WB2`G`E-LKxytE%>$&lqcnGBtDT&37isQA&#uzkO`4YWrMY{jn0vb5 z%>T`Oq`4n8_WmCl_Gp;d?LHhx=KxoGkTj2!=E2fDOq!PerFm#trIhC3>Y?)p*Ze4H z9wSX28#V`Nm5Xz%G%u#|IB7EfH&2izAKh)9D9w|kd4@CxQ*d(HN}8ug^HgV_Ce71R zTd5yuo=KjSI@y_XqlKFyi*~6xbrqy}xip7L)AGMG znf#kf{#LwNnl}GWn@jUrY2HNHb<(_^#tqUO=4x+L!|iD|OY=5qTK<>jaMJR>4L9bw z-RySv?v$qXVT3fFl;&O194XDa(^_fXL$M73T#-@Id|aCM(V2daqow(XH1DV90rEle zA#x1)u+pvjqtbj#rw4j|)ovQmbH&ZE(j3=GFrH1GASbx*ccL`kkmgg;e1-m}rTL5+ zv?odPSsIg_=Q(cD=cW0Ad2I8(D9x9g%|`&5Q(WX%r8$+W_L?+bSB<{f&Q9YT%xPY8 znl#^*Ci8#utu#Kx@2D+J=6^G$Tb0gOnlq$1Tbl2sN@>0?%@3scku*PSx7Fj&=Ett~ z6KT$r=B%_Q=CrQPakZaH^D}4L5WwYrDajmZekF}x&EzPf`wNRShNb3k`ek;u% zRVmHyq&ZLZY%*V(-#gnz0ckF9(SDNVZ_@mk&R@*Ahi0%}mHI{$Y5p!P&1nmzr8!gc ze>gjw8|E$RY|LqEbG-UyJNbWuMeZdmU+QBrVJT(prxmo)l_rKzqYZO3VM!+JyeT zo&5czwUe|qlU9FeZB7j@{vt+fM%N*@~0@){bhYRnpp7T6;)q z7uN2|R=c^X-BX#g_GGPH0+80;r82>~D zJc%5fhN686Yxy{E>oj^!Piv)hM!FPfoh2=%_tx3cvUA03a;~(7P=8+PasCTfd!e*0 zV(rDwe~Gj%U80oM<&<3^t!rsqDXpuV@@jgnk=D>9dU~#tmOKB`x`Ccy(z28Pv~7%V zHiv-LaB1Btt-Dxzo3w7%T4~uKfVA!;N2L0c(z;t(_bl;9YoxTMN^6v~o|V>p(t1={ z+Hj1tMl<03mi<}}kPng%DXqErE&ogFkxtPblh%{cdYt~T>X+8Iv{qWHBDOYN$X8%&5)Mme`&qVnD3D9I?e~95>yx&={gus@)_2mHBQ4!xpR(0w9b4+R@HzQ~lFl!!mHFqg=uZB(zG3lO ztF>j#lh%*YnopJqnPij!WA)xh(w0@=LH}dyR%0HxKIb2$Ql8Y!}--0E7R<+WZiP=d;lB^^JNpdXaQ;p5f zlcFR-XGz%(n;^9%vHZ{4D(OjL$)9$uJugbSO2X8gbd!V!0*TH4CF$;zJtXNV$#Rk` zZR?V7fJiL=tAL*6Q-iHmbggrnd9!O#d#D?CM(WM$hh&>>&w{ z3lbXwY=WmJf|9+-eMtKkFiG}Py0!;Ma-bxKNHTyy29gK4+V&%0bRH_nVdihI(Gijy zsl{{~N^+DWM@w?NB!gVrW7z6gNsdcBTx-k!^q(lnNou6c={cD^MUqn`xk{4LBsqtk z(T)Sv@eo`uY*f2Nmn7I>;L7F zTtV5D$|b#Wwbw{8R1*G(l4~WoPLi7?xt{tP$YJD-cKs!>EUy7k0hfcxmS{r?Q=?c2e@qnoBy}ZfhVIS z86(O4^gkfULo^=j+mE>JXrni-P)i0SL$t+3UljK85-dDdQ zmjByBRq~M}mh&ayA%Jc3ne9;e{=;N;JB}^!Q)GXaOToB!K+!sJIuev{-Ur~H|{ zXAefk_BRSnLB{6)$k_Zp)gW^QGM6KBCNe{iv4McfvysuifP9tqx#s-lRbd zr}F~FxzH`;B6T|Z5@arQwv8Rmz5*G`|7?C0GFPW#1TxnkGjz$Qfy{Nt+>Ffil-=O; zHUuDZBQnhY+OePhgUl_++>Oj|WGvMqb1O2pIsNTs{J9n~cRJ4qYVJyNJ2LmMcrQ5; znfs6#WlE+LI&J$f!u`npfXoBPzJbhx$h?M(4Ft%HL1r>C4&WVUI2D-y8C?-gywi}eG>*)hN!|sJy+`^TT5-$c13nsWV<1|46+;=vK>y@ z9oZh#^mLx3)0nQf9I`7SYx93(?I6M}u@^lnv8`PKKz0@K-~5m4>d0=6>>9|fhwPfj zwkQ9{_GVi<|AXw>;-gQi0nnF$N4XD9k%3;?B(PY$X<)A z<$q+`=YNpBn#F679olJIU8hd{=zEZmy#d*A$PPnx6tXuWdk?ZVA$vQrH?!d_?9XuW zR=0Ex0s5$^E$9yNPGm>uo34?)OG(e&N_s5+(=$@Z?P>FWWc90j7}?RZ@2CF(vOW1n zmP0^xjB922pW;W!$B=zoA5%qktUau%Rc4Pz_C?k{f$RiipF!5;|LjEiZ3sZt@_)KD zkex)&v&c^7IzC4}@79z@;L` zD*h(2Ggy2J*|)9M`oR33eHYp3$hJqTH0>k%p3`vb$Z`nCeu(Tx$bOuj9YWR)1dz4- zkL)aRHaRC=J zcL{Q9BX=Zn>mauma_b`3AG!4yXMN;0MQ($RqOOAGf2HPsrRIO-CS+eFm(qpBexwco zD%hOVO8{!?B>?4CN=DwA+y=Rwk=xeha=GnD`wMvF?C$`O+mYN!sbZr!cOiEr?G+Hn z*()HB+k@Ow$;f+?%>TK4kvj;v{q&9|gDOIdw@dk1jc_Vofc{6#7l96vEZ$s`Lo-;n!{k`dnPIHoId z@9Q09$bCS5NPa|qOnySnRB992vyuA&xjAgBTlH(?KGT~Ik^7wdg8Y*Fikz!dv64mm z7kK2pCBGx*k@Ly#l_s{mcL8!g+VOtwC-P_V7xGu~H}ZF-t-dM$Kz=vm{zP6=(<0<6 z$Sp=LLXP?W8%-Vm)$?`8+1&-m{Z0Nu*2#bjmFz%+jFHbH*VOkjAg6!+rA&W)MSgkYJ=#9<-I1^9lYq!~A-j^@$fd{*r7cBivL0kl za%plIa#?aYB_ppuu892V$oJAA1NoK6mC04eRms(qDps<%2Dv7=7TKHZL$0l4Dd7Je#mcVsV~0~xiPs3*_Yf@sbZtaHX}DDw;=6tROGiJ`zuYXhpzc; z$Zg5(NW1?ZdAt7~`5j4n{{!;v`#+K2Rf~46z?{1ye<1REn8%8HBEOdn$7b)1{60>$ zFY^02dws`?U)A=*{GTXXg8U*BmP39q z@-5{5LOwwLzsUd1FOic&`$_(Te7&RFC7LSry#XDivB-zWYr>C^Z|F-BY$_Fv>R5MW z2l zVM7#pp|Al8E1|F!3M=bZgTgB0s^n_q>ZDymP;wx`+F+m_r8 zgo;*DBX)tIGVf7Ao3XU zSn@dXc(Q%|pY};847S}*FKR5gu2DDzg;UvE4i<&eQ5b^48PuOio<*Kbo`g%^Ty6)gg)7J_Z3ML9)hG-@;TjaK zLt!Wi*V;FwFQd>m9%!a2T#v#H9ZPRu7iZ@`q7SK|a3c!3h?`Kjd8v7|^r9^ax1cZ_ zg}YF=m73eg+sQk~JIN7BTZ@kCSiGCOhrE{@Nsc1#Q*tYfM&U^s_oMIt3Xh@iAos?H z$T8%@q;(R7N0q8KTJdpmEIE!GPd-6TP@33w&WR{IWhu0v^M9pgb>$@TS#mO|=l^YI zru_m6Z?o--D7=Kin=;XNCA3h$F2kROsCksm8nY&6+Sauzw8oI`#}ex_vPFUT)Zn1{kw zHfJczCBG)WA-^TRQ(F9V23VL+=lA3f4k;l zALO6pB66|PmZCJ-e@QE%z_Fn45A8Z>e*w(M_W!>qG%WKMVzNoL$i!I8kXfZRp`Azh zauf?F?ucR$#oj2EP+SH@u?}d5i8XjmGM# zq_GCMrZV*~LLU^jqOmrL>(E#i#Z73ehoa5@X>WkyhR)sy#f{bOIO8H#^(8lTwf#`s z%-NfxxCLuVP{G`4sC9nz;SQQQf|&rsYM#bZ$11;qm? z+m+l6#ocM_;acs9;$B?My_GcfL2+Li`;q&rlEwi_*J=QY15rE_#e*2_VCO%?jC2<& z9>%J}QRGol@kkbr(u9fP(c~aYo>7kWu_!)?;&CXRjpFero<#8pv2^JBD9^;+ZU-l@|5!3KY*l@j(>Nwb7?I1jTz%JP*YiP&^;SE9ks{ zypX&I#f#OTt$G*5>^w?hj zqj(dFx6`wLZ_LXAb$PIrU?`{T!udQ2YWV9*7mcM3HBiigQug62-4k z(v0*CiV=$6qPUQuzC&>yjrrvFL z%G$9{DM#jcG-UVcpj5OVW|UGVNQPB|XyK|BsTr|2bVcN?o~>ZYcFY zX(`rrq_rq@Pc?M*B<&T@C@n)St7Kc||I!L5t&7r%^z16vUsh==l#WEHKT5mNzcors{w2=;OWUEe14`}uZ?m8hum6^Ia&dM> zX%{xM14TEK0|rbTUfEGvEoNz5flR zlSudSXY(-smpK0~asFRAok7m9XzdQ4J4WChBh{Zy|@1 zw<hB~+P-D;kqI7qvM2Y#|JR_~4eaoZlD5i8DO3KG+k0yBuxWr4qCA$QS z(nBbXQG@ow6t`6i}Lv>O@_RU z(sPiLPKHvK3LJ-6kkKiD1C!ch|;$x{f^RiDE)wv<$o@8K1z1~kJ>KU z0{VX>e?sYJ#{9+A{)*CXOY|r$M9I=SN`H`lqO`~<7o+so5+!TXCH{?)-T#SFoech0 z6QR_A_m`iXcyXgu^|9bA~|-5g>E3BsJ=ID7(&RGavXJGtl;ugg{;Pi4y&&5`R)VYt zSsAiAWED196|&kAnR@87{0~_Z!ofm%L)N9I55(^Op>2l%YP;h4kWC>QsFSrDLN=nI z*MD^@>GfY_-&9PyA7mTIX4JU+FIzyiOf`_LApM=awaT1rLjWUe4>i%qB(J0rMOI83Z}fDUV`98v@uL%m0vLNuK`^JO9Jt3FL`NDhES!>zxc44mkyK z3FK7Bxe&|$RGtnwgNB{|p>Y<3=YPb`|EPy?hN!{X^C0It`vQ6{gxJX++7~OSzZ7yU z6Oa731Nz4C`QA!&3DH(G#3Ik;#@P?k z^9cEI*;XlMxF!t3GylA8^~v_?dOm$Y`l;!$*;({k2{7PE>hw%PS;r*ZTN7{=1MUXmVu_`J4 z3;G}G>GVT%p?^F39}`%w0;deAkH`iYTa{^AfTqv{=n7LUIe_-p>uXKX# zfbE^VgDt|og&l#N)CufN?m}Ar*IL@U1N&3C2e~J(S6U0~4eUeBzRt6sYjuDc)E@{8 zaJ3u)U_$_Kuu~rDl!pO_JNpP~YzP1>|8psWfQx}+fRh2{e;nuZ$5YAt56l0+N#tN9 z+n&PWslYja<$s|4{4a0@!1MpG^Z%?mJ8eb#TwsXvp9k2nfyB4^Pwbzq3EYUN4o zZNL-2?Z91t<$t!aApjWR^mhYk|L>vyUSK5S*yNv{`c+|G+a&Hi`ac$;qVUe`;O;UZ>|p zpq>ALmsvH1e1&|KbcX<#3cSNsZvZa;<4wTwKk&9PjZe+HsSW7Q@GD>j@G0;fFbjBJ ztEl+^_%Lk+d_)iPKR%&7Q|W4F(=(@&=QDafC%*u`T(WdvF0csr8qh0<->85Z8v+34 zf6SvjpZs2_ZGi>ALf}U_f1>ASxAb3tU+HPj|AF6Kt3Rm!GgVTv82B&nm-^jqsmuL4 z6;N#XAE*NXb5ux1PHg#~o+iqgTUsbjq=7QZ-(+FDyF_K%9~QDH-EPGQj{(Kvvvz|OO*BIPyUL_ z{nbPLHmurKNrRUF%G;y7L#H@9p?m ztH#ythq4V8sR!i)Q9cFb0Vp4f@<5c2K-rSNeo#IbWpoIMQX8|iH4|BimoqkN029nPv-$=guAJ@wo9y)u)3c?7HOBJWOX zQD*)x-;44{`bRlG^Z#yDlt-idIIEcd%MYOJ=Ktk~=pREqj4~(xWeyf)%m4P_8Ge+< zqHOt}%JC>a;p_?YJc+X9f0Un6w$J#LpF#N>lqaG5Cad%m&}16Vq5KMs=gAky7s;1U zepwCLQ#w|8+u5(8{F<{lUX-Vz{03#y%%5I(D!+yD2XtCPlsQI}-=#gB{13`AXuPMS z@xI$7K17+Byv+Px{upIT{?yDwc@~Y?D1VAFlYghbVn_LN)_y^Lsig50ITz)xQxCuE zZ&A@prQf04M0p;{f1u3dU$*2={SPQFpkeu+#!o2!Oyd{l`4#2goc%k>3sYMkTR{0w zDi^uh#VA|;hgAhAtML!Yf2$|`dv28LsnVWODTgRGP>woz;!buewNXw`$+YcC7L{CT z+heem0xC0XBN*7d?LdEhwD&3Un0|hKH|5v)B z(t|}C6x!ciWf^*wC6`muSe{$~l@*<*7d!?S+P*bK;zRLR4Y=FwPsBDPJ<}7YRZcJ{1N?#hAlKqr=mk27G z*}Woqj8NHv{w>L^$o}NkN*dcJ?Y^MOcBt%#%Jy{bkk+;zTB+X%8{rHG>v^h2ayM( za)|RBippWA9Ii#nT9qSGgR-NX=4ey~(PPP<#*6BB%RFvm8YEMX*!=l zWs>tei^^oTeV$|O^QgR#dKm2`te`v3%jl^)-V}8E3zb*ULW^{Ub$J`!${VWB=B9zN2RzIiIv4 z0F@s|4gr-PQTZvouZh2=U$ly~zoMc$ZN#tdcXA>52P!uIM`aPYn6&f%sOSz>Mms@*B}QLWMFg6dMJc4hExX;>wT9cdBO9;hyjYERYc z$2pflby>=mBklZuT8rw6sIG--FH~3MB32^p5CGLxQW-s~p=$GgRM$wIs9OG~r#GtW z+Wn=~KBzMPS1tdy?=`KiXLeh;0jj&Bx*@9Dpt=#NTcElzs+*!}=l@lMYG0@9$KqzB z4Hl_@MGgVgtx)aHrT=^W2i0v+-HDp*$n8W)eaLZZ4es&@W|8V&)~-K^Hu zZVy!T8`%@peObE~sy6?py^quEhw1=S_owp!((->QV{ss=2f0=Ur&XvPss?KhL-la> z>WC%1LiH$AuSE4|RL??n5UPVwJqFd|s6W<4IG)85$P-D+|87Aiqk1N)r_g^Ys;8w@ zT8rxGWcv^x^`m+=su!br4yqTh$+@Twq0Danq{oH;XJ3eFr}ID6OHj2`kLsmdk;}-- z)77z7w#~0X^)UJs@m#C%5FmS7F2IuQcJ<` zw210$sE(lQc2w_hPRsw4-NmZA$$L^K?UAUCL3I?W_qitNYK}&gIlpQ{fL1ZcgQT4T zV%vvNeH_(CQUR)uvi31o%lm(-y#L3x$#_)l{vQ?Fb-L=4s3xdRMD}b?XX%+tTK?xEUO@F_R9~d?rF3!hPod`(R9{DxCx5E#lRsKZ!Bp}MC6#ZY zIs?_WP<`8Z-cdiR-bHn~bN)v?Z1^6kpP>4_)7TJz>W8R)gsLTf)wm`zon{uQv)Oh| zT1ERaRDVVFb5xnht6!k{C8}Se`W0*Ec2a)BMOgkv)slZ&h3b4%7of`IU;Uwz{ztdm zpHSt%S8ZSaW#r#b)i}SSx(L;UPWcC`+NXd}UCd=!{-^O@B?W(@8ln0RoxJ{Ab@{*Q z@_)6VwG_l;leGMAhL?fY2VNFlcX&B?KD<1c^Jim8jJGU!eiAoYqocr-0yj zE@lnhQt-M^X8E5+w^Xke3e<3R4|uD?>j`f~cuP~Z47}yxS^j5nxm3ycD>!E_R;>hY z6?m5XJ84#>vV92v-Wu?F!&_4YY_e9WObKsoc-zBU2VOsT>%!Xzp5=dd>ysOh8>V8~ z8A`JYq(Z!>uP;qhR>+k)NLGOdNTmD6m^2-~oBTUTrOpPn7y?F(;5c)L)x z6TF>M4QqFWwiU*N)2mr60|G9|c;W7VvC$g$j z{`XFXcNRS6fA3Uyr^7pKNq^Y(40va1tJDeaY(_XoN#k5{h?3&-;av{z0(h6gyO34w z{15M9c$X}R4DT|nb*-*|cQwUV!nfO z&CI)51ytSw&n18FR(fu8ZSR1mKa)G*-3xC7tL}nl$zPYk#ogl;H0=$Xvo?H@5 z4R}w%dpZrSWSmLxnEbuT@ScbF-2dudV5=8XC%l*8y$f#&ylL=WaS>jH_ZqyZ@LvDl zwl4pBZ*oCzF_aquym!<|&vbaq@Sf#=cr)O==N4x}fU`e@_Yw6Uryklf;r#$_7QC;UKg9_RmlrXAnUSy-Rv|NVl={NlfneSr^q z#?v&G{NY#N`|z3k{dV$aE1Un*=#n;v-wpoqdSw{?((v2)AAWcEJ)EFt+Js@3A(tiX z5P-%CN*XJYz2L6|e`U2*pda|FIOS^aH-o=A{66qGv9YeM34blhdZ#klYs23d{yOm2 zhrcd8>vgJS{`W2a!`~=f5baIKzNr%artmwR|MxeCza9K7;J1@M#g_l!_lLhV{B3D( zqtpm4$o5*Ke+P0$awqsZ!?&@ZlX5rsr@-GG{&Dd4fIk5Kp78gD&;0LO{%2b^|M&M} zaewDO0KVn_G$#Ck@Q;Fj5d6d7AM7-Tu!$W4s0aSxEFM7~nL25^{O=Efe+-q!c8bjT zzi;`U;uGPYY+4&#%r@_Af{^{_~gnx#5TRjQ{$(hgjK+DGuOL``?3tKfeH|7!Tpz`q9mDELF+-wOX) z_&378&K?f(ZT=7c269*$*{Ih8{hQ!h{)c}HIb7Ku7yR4cbCU1h&Z;}$-wA(&+S)b^ zLcfgy@b7_tuNt&RrnT_zgZ~hG`^xAaP1+~`{{hv&Zw~?R$G{&C|6x`=0{?ONkGdd_ zsgvTd&KT#ao}hjL{E6`YH~;%jvB}d;ISKv@_|L+h3V$;Em*CsvAO7=B@B;jH@@K=B zwU&Y@@Lz%d8ho4otB19(rv?RYz<(S5G_~!7jQ=M2R{KPaZ^_L6p-5R=fZEm{~G>p z@V|jS5B|6Cze{CKGavqsdi?_a_wds^xxiwkS2TRf{|v<;z_%d)zFh)VKm6a}{{?>` ze3$(FcJhb6h)O#JMCE_s{{uhW6o02q3hFMt9Rk1)$tV@Tk5Q|@Z=#lm-%_QW1Mw4M zEkkC>oYIz3E1*_Ft!T+A65+f!eC5ZHn4zsBM7S z>ZtWb&GJ8LYo<+5TPux&S|9q?Mr~ahb_&SFw;=$v^<9$jOR?*C`o{Vj;q9?0T=v`G6P z)GXVhW`_W%S^js6K8zj?0ktDgv;3ddqINWDC!l7Ne`+}YuN{lpaqQLcoqBj8YG(&{=WvbE9tz7ygIE?vN#kqoByL`=YP^F)NVlS zM%E5XJ+yB^jrqTJ3-!Z0>2E`ABx<*#c84n6*L^2jjX>=#)b63(=_sIfZ`vHSQK&J` z*X~1&15Iso8i6~~1E@WW+JkKV5IIKKN$?0|kCKn2e$>XI_B?9iP_u+R@o1Qvd)eO|$L+$;vEovV)<3lI- z7+v(|@CmxCgxXBh7Na%`wI5KMjoKHe%|Y#RF5*+th5&1r9@EvnMD1JDzGBr}^`rJR z`Ar&}_IIqEmwHf}&!U|IGLL1~1*rXq+VAxLgxb%j{e~Kof32PTRhc%YW+C|pY3F}X zv;5EEU-jDE&`{yZJNxZ{gUq zN_-r-DH;ARxk<@QbTa#N*6a#N>G$W2R5R-YS2Zn%lc zkjrWVay4=VawT#D|0fqI#=8LDt6W*diqQRkf-Tl1#=?fMnFf$+lbc0Khg?^rM{atN zgk0ZOcXJ~K^W2>LKV4VP%|LEO)y^cGIgJsYmE26||l(opY`47(g z+`8n}OZST0`ik5@VH*lJ5^kIZi*HJ9dvcqR+fK#J$!$SyYjRs=`L`Mb`@7i2L~`!` zE~ekL+z#Y+CAXuhcG4Di7VeVnhWKve_9C}?s*u}*+`#-*ySLizBiz?84O3D6pF4ou zf#i-McM!S5$sKG}s#O<|J5)&y%aR|Vsw2rAWkgj+r$qX(;^Ivch_|TfR!=zC-0kG@-BHhtKTC(CAs&>{i&D_ z$jSe6ACdc(+{ffTlkWac&Yzm)4>QbtPVOsmUzq5#gWQ)sBd}-nc$I$toBPK1Fugk~ z_Z_+K$^A<12Xa4?`;pvF{%dF(#o6!O>>5q(7jk~F#{&+kow6mY z++XCUAon-<)a1u%ul^x7j-0Rjcm{h}W(&@%3&>AGe$rGYKbgnd!wmI1yEL9W5~s>y zrY1iP`5DMhOTI~d82K{!;p9W|ZvN!GQxFNr7t*P>A^Aw6o4<%p0R}%Y&R590|4Xlt zulr*U^YP%Zhk5sZDXlD~O}?XG`G3BbJ{*jELS7F$^4%Drfa%CjpVsJ?(ul1k&u8Q1^yzD){yNY{|-_wZrUgX{X2XpQGzT`FX&+kWme+3+nMIM;N zxc`%v`R5N6KP-*$FKPY=@|Ti7lDwYSkoR7I{L$o(5jj?P9Ql((ju)OFJkeK-?J16V z_kSs;kazPRJi{k%Rp*mGBda}AF=vtYE`aI^0$${oBZvny+i1W{~~u8>T|q@{JqB0)6D)wi~RlMA5_c( zew56U^AC}K*ttz53_r4cdzAcZ^qW0m~-pi~P^&v$Mz#PIbMJ-^h<6 z|2z4?lYf+1JyiZL@_%cu#tQBEZ|`_c-_L&uCMTGPVB&PIJby3=f!6;6U;j77^9NH9 zOzA%bwa0c1l&J`61XB}41k(@{2&N^-5e)N92g421oNAsY2>z>NQ-GjIP)Z}!uq><) zRLAdUP$w8c5ECQ>4T6qxHVNGS3ED%M3Ecm!w<74JeU<|Hp5MOFfxTvsGJU#5f*A>B zCzy#~Rsya62fp}|CM1|GC5CD>hZoI}g1HE`B^XJt48bUZ`3dGGm`^eD5X|dgN|F+S z1qc=)7){{AegdBYSnngga2iRlsEUgbEN*?e_!2^$T7jEC!T7;H!LkHv6D&utD#7vu zD-o!E@T3A}gk|6aF~!M-EGCInj$Y)Y^>!DeY%56~M_!Yv85GKFAk*KGh3=qYfn zY)5bu!S)3E66`>*JHd_wyAbR|;DdkPw4r}?yAtf?U7-!AOtHtt273_fO|U1yUbZJ* zW&M{&?qhr9SE&&Jc_txQ^gT@v96)t|qu9_9@XAJ zaAQ_`6T!_AE$tlyKKNJhHUjs5V!7Bv5{-aj^BY2v?2l)ig5IjrpJi&8Ac~YX<7YSZcwt@eP zzpAR&gs%(V5WcBe?+C0Y{*Lr_4MpA~@bw>p4}^XRfZ!uTk&n}c1a<;^P4Jn-&$HSu zRQ!^_*MIDl1%E^EZ5H#LV!jvtApB9g@lzK33!$Ba|Bu2*f?p}js@mTO>}39%;14TG zk^cwT`hPH%!Z3n=D44^KQ(B(_P?*Tj{$-EC#Di1UdVzvH;(0O(P?+3P6{hf^DR+!4a$c3pXOiRI^|LOW)K2}lA;S?Gaaug!_c2Mvs0EIwUP@XV#IXi(V6s4EE z*DL7xpM{E&R4LR{RTsvFz7?}bRt9HNEZiZ-O&m=hQjd_j-}wvZ^}@B zz7Z!_y=&;oTIxE6Kv{Q`r56196hKDQGTG zc!+}gKZQqxj|v|XK5i)T1cfKl|Kz3cloU-@3qA|*nML7Q3a?Ob|5vTg0w}yd;YE>` zGTplXecxXtv?Kf)g}*774}3}C4GJGqcvJCj*#ZiMx3gAuHomL-dHHDuke52ZLDY)~Ce=l_N7x~d{yP2TvFD6R2 zP5hejEb@2he^8M57yhzhRyCHeP2nHHX(@~&G;jZxQ1%{90MaXjGW@Wr z+FBYf9t#_U%`^|8PXW}bLpVEOmv9Ec9$}v_v8t?ggc?qlDumOgy2Kd?XA+rNI7^m! zR>Ij*uKaTl&P_Nc;YfweWtc^dN{RG&2s8f==SyP<7a-h}a5UlagbNZbLAVg%qJ-{I zYBgB@CtOU$#Zx`Yza-&O(w7!4BV3ly&EI0OuoVc`C0vnkHNuq$S5er?6YQJ!0$K3t zgliD4IYI4Oglk)oaGg}lBG*%%^$9mHBEBKvMvB}xi`gX2Ot=~0&V-v2ZcFH00O6Lx zt%O?(xA|}W?FhG*z60S-B7;>R93#9^c$HzgKZNf861@u`ypHgCksE|J65eFQ ze$h7gL1K6dQJ(Nt!q*9JBYc|hcEX2rK-~Wc?5gpVk|$Nz-c`hWO1pT;ihr9>39@~f#cK)> zeom;tfB0ple?|Cpmf;&E{Fd;$2{QaZG$rAWgntma|10Ka;V;7URQ#3jw=B=^rW+^J z%|GE^gc{_Be=B}0;Xg*i#|HPL z4bikB!-T`L$eb0GCm^a36^KeIhC~rjF|Eyleep-N74M)U_kWu>OQ{pZM2itMh~^<` z63tB1A{s%|Ch8G&h`K(-w*S!i@N^?Y2~poO*a~5~gdSPW8GKqva}do+G&_;6|M)!J&=$?S;haRHh~^?1=}$bii!Zh+;>T)k#q@oRF`AcX zA)@)T5Azd^Ci20*zibi_Etu|%Y8MtRB3#taUV}*AlO-sgWJMy&xfI0(h?b@}1JN=> z&k-$4bUe{=MB5WBPqYEi3PfuVtw^*w(MoE#GLiQJc98XXj}jhDbPUn4X%*3NLoq}r5M57n zBGF|;ClSfjqmzl$5k#jF+4*zY&~~*OXQV}K-CD|1^N;exgT+1{L~jz=_u?(0w=Kr?!Opx(^qx0NyV~e|W%z*TL!ys~eElblSHe%y zBGG3=UlV;!^rhmz7{4wZedY1nA4T*H(a%KR68)eU?*fRv_u9cH^`n%ZCQ#h}CH_h= zPxKqb$%uX@8b|a8k^cE>+#Cw{i^$Die5~*vLsN+Ur8v=m7v=xONj#wF{y%6^l>Zl} zpg0Z1Dcu8$?v@m%5>7o7sp7Q4VZz}Qeej><2`I)C3lysqLy8rOk;1$Spg0)+Q}iw% zZ4y@XWh~Yd<}(6cdoMO9w!-OVrr0#hV%iit6#Epr+2(p`m897yj!D@t#Fj_9-q&aT$tBx#*i%I@6cUl;zTRiYrju zgyM=6SEINR#Z@V;9Ikd@xbn9Y)eEe;QE0E@$533I;u_XURclgQ$HFMCC0yH^tlgxz zF2(gc{;-#&uTOCU?ZAfK(Bn6v=>Bh9`lb}Or??r#Z76O|aVv^jP~6h99p+y;HQ721 zcF}IiDsF4}DQ;(*vlxmyP~3&$judzD?OKd)W#??4ccr*H#ob&#evIw8HoAvr_PyPU zqWrnIxAc7|`ru!DKjHqu11KISau7wCeDPov521LdeXl7VmVUb(y?BK1$bsm`|7gV@ zBRrPkaTHIWc>MTJ++$9(T2m<6d;C|C>H>nep78v^aJ}f?Vkzk{zsT=lC|>NBEquF|2ru;**X`W9hN8^BI3_(I zDPBo2^Z(-27U{bFbBf}16z`yTJ;hs;=LU*57QX$F;!VPv4L!4v;;j^K8(dT>-tM}s z2^a6Ac)!}-MNxnLSoA-Clya}|K97_lCwY+K;}joK)x#7Y6M01Vs7KmbtB|610TiF~ zqLZhDc6^@p>oUb>2FrcLXFb4`=P8;czCiI)iZ4=pkK#)d)e98uOnXJg@Kxb!Lahc{ z+jL2`_@?r|CG=i^;yc234Hf@B#ZRPsK=DH@`I78b#=cS1#tw3pFO3PB3gwphsCZ!Zpnv7D3(&Ur^N>fl8Mrlgl zN(tdq!l{LN{(s4z|8EH$J#09ooQVGX#m3JAy+A3H9%YI@0@TN%C4cz8s`UK-l0W~S zQjL;7{L^1bLa9NiNvWsWmat8!BhnoTQ!x?xzi&_)LCKfyvm`T68ck_NRn0_c6s4Id z&934slx7vt^FIe0)${*7&zzLzqBPP|*%ZKD+BZsbQ<_Ju=A|^h$b4Sq?`r`k|8HA~ z3sTa5JC+ur0zX#|9>nkNlAXE_M)^mCHZ`5AI0oTX}|QlW~hU6fKXF_ z(m|Bm{L=u%A4=&kO7ixSdWX^xl#W!BqtY-+?*AD-meO%*=>9Kqg78F2C#8xZrBf(f zPU%!i#^wK|(-n3GrSmAAnYBHO(%Fjl^?wDNYbfRXlt{clDE}{AWL(9IDQWOu^1(kP zU;H;+{0d4pP#Qz&Dn(wI>f%>Zx<=$$cdF8LnIT;7F|ORG+M9$L|Cer2&cXPf(ruJ( zm*R^*-paRrm*Vdh-eV{t|1aGqem|uLGW|g*-UX=bBb1(?B=h%A{4q+8r;%xXO5O!f zlK+?N1bbSoH25z)OX+n=&ry2bP7LWUP}1p zk*|f`L5O@y$^BpadrCiOb3Y1y68EloOGb zuuZvRM7&G6mvUw6Q=WzLh^%%x%F}0j2F1@vc_xb#_gjF}YE~6}{h#ve!a0OPZgcYSPN!iE$l$UlT zHNEn(l-H-cTo&X0Pk9C5ij?L5W%qw6t59AwaC4c{7pCZIVKHi*%|Yz7^%iDQ``AXUf|sW?SKQh9cVw zcc8qZ$WE#5eO7rF%GXfdmGXI%ccXkF<=rVCOnDE=dn;J}U*5}`_*u7)#C<6rKzTnG zZK1EczoBzKN(U;;{{lwELnt39a;Weyq5QvmgmLd@%STZ@j`Go7^bE%ckIib2r|ix@ zc>38O?MaF`ner)=&!&7TBZUhTEo0Tr*Md>!T6DZBYozQJpq zs0%2o3n<@A`4)+{3U9M9yocGEK=}?ScT#?Y@?DhgqkK2zd$KopuZN}c*|H`Gm$crY!$2`{EB}U;noN z@fRq+NBKp{Z&Q9rtzM@52IW^MYuI0YH9H5!kN+vZsmQks{WbVB(@*MMJ0a71P?i4! zDz{Spkjes-KcX@%<&P=bZhu1gD<%0<_?hr?;TOU$4Q(|;{ACPT&h^)2h9(&hh^^{A|$Dt@3=fzbT_8!G1ia`?)}5jMWRKBP3gYQY&`&53U@>6;x)c>Wr@(a~lsQf>w zW(&VkorB76RNU36XbMpIgUX*&#!~rTuQOg!!QiDi)}QB9X9Y zD55DqRa1a!B^?P+tx=tsYMtr`s^2qD^OjL>Kas6qPi;8m6d80!*m~1Tur!owpVLXU7zY& zRM*koX1@Zfu1j^j@eTcrY(RBmsvA<>=)d|VR5u;UuOyp$!1&$X(l}N3|5T^C4b^R_ zYRq5VZi2`isA~LQ-HGaMRCmteccJS3A5P}}Pjz>ydr{pZtKHLy@1aiz6yRNe&pWF7 zQN4`n{#4JTdH~hKsUAr6P^udIdy|9J(EkE5OLADssUAV~DAgXBRUJ+B464UaJ(=pU z+K_Gm^*s75K=lNw{{N3^<$nRGm{U|dRs1xnr>EJ{+LTj0i|Tn)&!(zn|LQsatv#RW z1xlg=I7oY;l#8fd?7_Ydmr%Vl<=WQeRIjIc1=Xvlj-h(xV7r53bv4y%sa`Wd{B_O; zwKq_`F)dQPiR#URwu4RIO7(TBw`nW4Q+L~%QhmbGD)W=Vr-YWl*MG#Hp*rw?sy+pv`aIPa zES2#TslG(j&0n>z2w$c8+5`b_Q2U4Ko7#c5sQE5YeVgh#)aIx9F4fPZyeCu_Q2l`F zhg3DruYN@JW2OCMD5phA`JCD`RKKA56IGdi^((4BD$mzczfsJ$!tc_yRKKUHF5o|J z;b&@Q*XI9!QB6r$JJT2I?e)V6P^;s}rTY||T& zG6OXq|BKH=ZLs)b3bk3OjiNT2sI4D3sPH=+Cqw7nA%d*Wd5~9-LGnk3H>Kv)Rqt~X=uUXOKV%ph%cM!)Rv>R zyp$DECDT`;wlcLfsmcHSLtIrGU5(o6ieF{ zskyyV+lZRR|1}@~OW9PonPH}EK~01I+Q9s&ZLOGX(im#n`L8}b+xFCU$Xe}4&By=L zc1{&>_kTrd3gDmP9@MU-wkNd{sqIDWaB6!~JBXT_Kec_;N)v?I{^AD+4>Ys@@q-n4 z$Y3U3J5PaWH&MHVn!13&hjlBp z2dLdf?QUwfE9MU2ox-~evz#*jn#{j;pEl>_p9WBq|JNRxAl?qb`_vw#CJ(PYri70R zy$hiBBsH0T&DVdZJ)LdHX93inHPlv~r}jFv7py4#MQSf){AFrx{?cEi_S(??NU<*9 z&8+qpHll;Ri6p13-}`2+b^YjWtb`6 z1t_QcziPjy_5-z_sChS$)+*p<;V-GENOb`xRg z2J7ZeeIi4ViK$OQeH!YMQlFCgWD+N*?h`Thgw%+<396b(IJN6`qf32S>Lu#KsE5>t zQ_oY+gvW$Jb6w^EO(&#o;t zs5hz4Ox<$!skflx#g8B^9r=vc78sqDY=CSn|sn6sw zcE5*>|LxmdpGB!=%~E+6AY~5f3sawy`ux=AqAtU)kF;9qqdX>^JJjc)J}>q8?8uvF zPcZN*k6D2FXpse}yZQSLXb-6`LVY{xi&9@-0gF*zoce0iHCd?J&aXgysX}@;SAA*4 zEF)Z&`f{dIUp}pM^x}%bm4qt`R}rpisD`T>imX9>&5W-_eeH~|L*31vx=#Vpl|2 z)c2CO6LtUn7xi6)y9##`?k?OzxTm4-Qo5F2-<$eA)DNV-Z#a35y7|8bA@%*KACPiG zRoVKF1sqKM5Nj@esPHi1;f9{p55keuj}keW`tj6{Ntf2CA4~nX!7{row%bB|{RH8O z!jpt23r`WAYN$M?Q@@J(8PqSJerC3nv#6h)aqk7FpG)1pKH}#K|1Z6lmHLI5ei8MH zRdosV%c%QG?qYHtPSQemnIC)bI}KcN!7DOQ`XG{T}M~rdJB6-$(uap{oXpd64=;A{uPh z9}(B!zy6qy*6NQB#&7i}RP`kFr&1-;pQiqdRjKw_>d$5Tc_}XlU!?w0s_U@4LTn!L zDs{8L*QkF;{dN1ox?9$L{fD}D0o323F7vO;{OfN1(%+;0e#Sqrv=Tp}{u}j=seh{C zC#fzj|F3^e{RhAy4)koAd1*m^Z{ktsT_g0(kGxZ;-|D@obQ<3^F)YI*{ z`Daajr~bEb>VHuGllot&?iVa%-PFfY|0m7qD^B%)i3`LN5xc_^PfR=s@uX=h;>n07 zx8&A*u+ex*;%SK?o|@Rr-(Tiq-gcU-)iB~b@o?gtpM*AHv`yPD@#Dakbj)UTvpsQ0 z9HkkEi^N*|iDmw=n?G?itE~~&Gafs!>rHW!cmd)T@!Z61;_1|+L);}!hP#RA>vy@qgXVq3_6V9HVvBWaZcuvL4MLaUqQ?%s7 z^JIDECH5|Wc>YuoA5FX(@q)xl6E8%(81ceNwFt4_{9`=Z!^Mf0RFzKwM3$PMb{S%g znd4=Nmm^+&FnocoX7Xh&A|+eeh4bxo`{OZS}^t6mCVl zwa7Mx{u;R<@pdUE-kx{|Vh#J_9Zgh*ozq(JU5O7A*^PL2kv)Wa67MUbUL)R{cpoeJ zYq0bCsdj(i0fXyVv7L|_#>WRsKZIC=|M)QCBc&Wpe1s8y=_)7jQPPjjipQ#W9P!!2 z#}l7Hd;;;wwo&2}iBIx|gB>`9_%z~EUHQd7asTSYr)Qsq`#bdKW-^74g-?*NR`` zLmfY7-2bz$^9?j+C%%#RTjHCD?GwM5_zB`$)Z|v;2SsipzFp)F;(LgF{IB9&#CNAW z{RD~cH9~x!@P6R~h6;B77kQZY5mh~!RXs-hc*-;7N#du7pCk6~3$c&?iGA=d@~ok8 zVmn=5C3f?d{vxrD|HWS>_VIrjDdja{_kUuUe=PHl-}-ONJH+o=u;Sk%exLYL;ty2R z_&@$g8MOWrfAZh9pAmnqTKRvh!GA3CkKO#0Ao#q#xmPUcbuq?xH8rcY{k*5(%5E;^Nd#4f6D2kMn zp`6Ch@Gd|~O||a-G~x*|G^Mm?%tE70V}yzwVOQ9rktjodf>zVfm{GOU)0koCeMwPY z&~X1x<7v!FW4589V&wk~`F~?BDI;l&qT#krWA3z}_`HT$p807kU`6SpX)H)%c^V7R zSdPZRG?u2Z2#uv^EJ{Ondp7(QP#TMSb2AX(J2ipBpRD zSc}HWG~C;1tRh^M#%e~ySEsRtkqI-?SlfzOwsmQ2Nn<@48`D@nYqf#e>i*A$-~VaB zG&Z5(H+<6Al*VRhbLoEbXO_+H|D>@sjctZR#cW68WE$JkI6=o}2jPx1b`sgyP-GVx zyV5w6#%?tBr?ESYeQ4~F)$XYn`F~??7tJjj-YH0T|M#(ne?|ug52SHWrW{P;kd&*{ zVKme)G!CcX{!c^QK||)>IC_Fq^8dzhu6Wq-6I7ij#k&B#$5UuLM&nc(mr6g4#_1ww z(71?({J(J)jq_=oO=Ga~Pvcw~=UJE?t^xW1w4;3i4LASsx?Q+$Tuk;dILeEcuvW}&)( z#;xMF3DpHO?hwCIc$Z<8@E$4m(zs7YL+0Pe%)jvFdo;dM!22{lpz$S*4{3ZMG^eI%`cy+lSYgw6fX7dpMGmJ~_qX4)xwfG$0W<@e1uIGkg%Qmn%?izu zZAHqU3(#IwY1T|kt5h4)Y#0%5(#-DvX||zX)a6C7k@l#k&~q_M|1g9p}B&T6@@Eh z`@ag!)o8A2qGeXq>cTZ9P}ZWk1I@K*Zb)+-n(HfIU7G6|@z>x`Y%oESjTEyn%}vr6 znwv`5jHZwO#kUY{Dcp+Y)_wy?a~t8d!tDk(lQg%t7%4l_+=r(7zgl@0Kyw$GyNc|V z>ATb1L&}~)nSXQd^bKZjQ}cr6el+)2%mFmd5IK8C34G~wxngTGd9o=Nj8+l0Mn zo-I5_crH!v0>sa!Irt)|`Gs_*p?MMQgyzMx?3;24&0AG<)9{xJC z8fJv%@4`Q_fWNGj8vadlZ1$%9p*b$)zHhCGXiY(DVh?LgLThqbllr~Ht;u}3#+n>Om`?%Jc4}G$DbvuJmR63|FcpW7pR2a=Qi62x(-%Tpp(zq0T162({H;|U>~>4z ze|tNv8m%_1dKMqkYGhnffL6b!c^IokOcfYcpC2t$AtnY0XA!1g#mgq3LK% z?@iLrx8?pXeI{Cd{g>7(!dcS*@!4t3rI?*0Xe}wSl=P)1h*{QjiObP)|4*xE ztw?KQS}W07Lk(A^wTj59S-@(vR-YixnzYuVwU%PmR>F0%$aN=3yFRTARJ&nT>;5k# z^Z(YSnX);pLuhS5Yj;{((sFO7wH2+cMYa)ctG2%WleOA`*3PtcRPDh36|)Pi-6VP! zU`pDA)*iHcv`=eKTJHa8EvO`azk2&(mI~jVYH4> z*x|I?{Kb!?byRrl4dUJfWc*lK?*CcB6KI`A>qJ`Wms=;Lx>}t=%guj+;L~ZHp{g^5 z?*AfZr!ln7rS&zf^JqOx>wH?b(XySqiq-|RE>q-%v@R04So?p8@X|DoxXizGg~cdr z46Q3CsJ)uj&9ttebpx$yvzY7DFkA0!-I(b&8L=wWs%L3=U!&sfwC#lNPao4?2#nf?~7w^J_t9pSrK?fbMo zrS$;xy^jX-}KROB^oD(e}ZAs?#peuG0=_%l6w**07}D zvaq5pR)yoo|Eh{ByArQ(H=#6ZrbzHp2uTc@%10t^BLMD zVA>00`e^A3(q4%6BH{~s%({!(i?*Z0#f3`<-Ty_F5-v@98M~ft+^?$p2e+Jb?*eGA zKzl_a;w#Z!nf5AP)NcE{ue}=W$7rukTi?O<8noA>eJbs>XzxRNZQ5JWUWfL^wB7t^ zujj*w_WIh8`@h5uX>XKr>6_5rG^_IUAKIH|#Vr)SrJ?k#X{#@2Z$o=qRc)8{_}a=2 zv~64R|MpIU$8WZGroBtXclA8>aL)Gb;iRk5-a|R}%(k@`?Y&c;Df`mikM^Oot;vDf z+yRE^$b|MmQVtd#;<`;>+lSFUO3LBFBWMo>|Jv5kw2!B)4x)Xm0w(bP_6a_&Yy175 zw6mK(+b7fZ`#(Lu>!;Dan)d0m?I@i=`#dF47tlUS{A}Sl!gCFMwZDD7lff~(fVK_$ zFPuQRn6`bgmzYA^@BgHI*#uj>Li(8W(gW=)RlLfZ+a2lcYiQp}`&!yJ(7ulL^@Cws zy2GB(y8zlZ(Y{$n;Fh5yO#3$4_tL)IQ+doCwC~i`?-Jgf?gMS_0;JrRMrylm{%ZB0 z@FC&D!bgOUrp>j{$AwSOep1Bm{}Hiw`m~6z|I>b!_H#z8xxJ*kpj7hz_DkY2|Mn}i z-=h60?Kfz<|EubCCw9@i?dw1GQiiu_|47?JE!wx=rTrf5PiVhywF>w^_@VG4+8>9b zd?hVK+PW6p{*3nL%KSxoAyVA^U#;<%lJ?(O{8-vD|Ms}_4I0v!h|ZLrp);{?5;~Lm zS=X6NIJu$pDGW0X9bW>H?w0`ke!0%HbZ)0JjLu?ohSQmsPL58QPCh-JbOJgBZ86N0 zh>kjfj{Cp8l(0g_O_)xVPL0mYbn0|kbmFX4L$ysW+S%S|)3Lqn&`IcY>A3mZe)5TAIsr2WNcI~(`J)Ifd3_JcTIHj7&o2ZrTfRtH<-YJO8PRIS9j=jyfMdqS2 zGOHbB#6BbG>H_@ex%o?(U+7%`ozZj_q_dD$`JTJ^OIKge8B77_EKX-zI!n;83$IJk zS&fd&zq51}zYLvaGrk-hnSV!%Kb;lB-r96l60R&e}uabk@xBtR=6}*d~i2FaC-RSI|esI~xwC1_KnkUdXRkbGyPZFL?=M)dH_v>G=(vxe#I5c))3puZ)Z z7fI%z^Ag={=)6qlZAHE!e3i~?blmx~H~WTk?*iz&mFjffq1&YMF5SuKyhrB~I`3PR zPOT68=D^N}bUsq?WB=6bdb*!=pVFO#jvpUo`<%`fbS&+cbiS41T>zc0#lJCB@jE)- zXFKx)ouBFaDE+5Y6#pd+R>NQEPE6-FI%DblPUkN=e`L-7%yRxc6tCw02z?2N&cAdg z8mb*4bSE7o=}u0!L3awPqC2G!x)I%}=;rB8P1nc#bo~)PBEt+thSSXr9-e7yblre% zD81m3S^)IVs9U64qwD@pw=Ap(tLYzP`1)SAE+sZhx03B!i|(p)+jOU++fj_h|6O$f zo-mQv7mhIWx7?kc?h15gpu05P8R^bTcP6^C*>8*J&P;cfaHnx}XAO7SH{7OeNOyL+ zbJ3lH?wtO2BvUQ#-+KGdyCdn23P((13f;N=4?aA@JpLOc`;A_AKDvw0ouBT4bQhpI z+WzaU@XwU~kk8?EJQt$7a5(&laQabUGE>;Nh3=wsm!P{C-No(CR>Env35V?)PCFUh zCFw3@TMUE!!$u|KTD_NL=w|-kT~5mK>5&m%QMeM_l|@!D4E2Okx_8?w6E%CMKuH%1vV1L~b>Zea#J^!b>KHV+pZa{Zaz3~m{y8nxBOjrJI=e!^A&FpS5 zx|`E==l4e*{l9Ic==yKh9}whsquJ_icU!vlwc3uZz4z_ab_cqr)7?>gC%OmF-I=bN zIbH7p=F$y7J*DhL*Zn^|H>B8Sw_g^se|pN%J&^8^sy#?}Fx|}myN60S zjPBvt33h}j89$2d(R5E#%rSJ`|LLl0=pJue#S;v5j-BK^NcUvnDZ*2Q{#Ro5GivcO z=w3(nOuCoSJ&W#z%5XN_bLgH=_godvvtwmsa9OQuXRrHzT2#PA!i(wZ;;+_e>0UI&hQ^wO|jChq#+pYGM-*U-IoP-SV;88%KLiZUf+KcY9bf3%k^HN?Az9@W2__Cp&hrVyG(tXW~-qw2ox^K{R z^UvO?cNYGvV6S?Y-YRt8qbtYmzAsVZ|E|XW-H+&gO!o`ApV0k`?x)_?UjAMCd;--y0+aP>HbXjCyTdzR@({uziUSHyTri~5Zyl} zi2RG5dC1@NCZ;=9VgCr-{6+qyH&M#{fb=GzH*o$m3BAebO+!!q-)(N_>-nxaK7W7_V(p9aKqPIT14Z=dR@WUhitjND- zqPG#fP3dh+Zxh>MIN}uhyDRIV=xs)CbN`{b{RbA;dQaEelHLyVwxYK!y{+kO(DU3%#A_?d; z$`SOAr1uuRqv+j1?`V2w(>sRVaSHP;K;(FOr_wvYxQZvzJ1MI=S;{GfSD@x_cJW*3-IfLzri9*|^z3Z8i=O&| z-re+M{=Iv%fcw<;etHiKwWarvMEQSDi$A?bt(M+nSu6K{DNoXSiQZH6o}(uN?>#Nu z{a;C*%_994AbM{8A}?n8%k*BO_lm?<(^_Tl^?!OA{P*1dv-r2^nM1xq?-P3OD&{@m z`@#>@_Cw)EX)AgkXKg>F_anW}=zUF3_kZ@j$YQ>v_f^U>%Szk31?3O#OEaWh-5C3>qthD97r;XWEmx#n`9m%;`5To|9wOAlPo~8 zD9Pxoc0m$1e?=}#BLBByI)qLZBgyD&p(_oVIJ<^kJ zkhR^2WMdbtS4uX~k=Zm2<G_*@9%tR8+uLBwPPCW?L(gY)7&^$(|%TknB#fBgrl# zJCW?{`(}QwE{tSXlHF3CDSKFLwm*B3>`UU~f0BI+2Wu%_+>c~`k^@|{RQ5_2{gQ)7 z4ko#P9Kq zvhWn)sU)X~oKA8M$r<79Q<0o0JWF`Cp#>PKc&_j~68XOe|6dwFa-s5Q@Sj{vayiK* zrbzTIfaEeS+KNhYg^FW@R|>BZUai_|gx3zOx{zE?@-)c}BoC0>NaDkOlA8<%!{FqW z&;xEIxlL8KlicOKZE^?6o&I^*gvG9;BzKeCM{*Czz25WM#KfLF{N6$&_j`=}Po+0` zkmM1PhdjA&0TUW%|GLef&>{64Kwn)zf6xW^ZrFb+>b;1o3+PWn-~FHdFyU~a{J-!1ucA)@=ojewLXddm#Mb2d zB^Aq=?p*-=D*c*BT^I`+h9XV+>JIwu|57@JdKW$Vb4W?(_vz0@e?%5Do%HF2Gti&W zh`7%J=+8{w{a<`m!;ITsz%MLuPWr3SpNsyA^heTPfc_}@^Q+3o|Ma~Jpg*rr&wtkZ zU3)c}{<8Fa{7-)&`iqGyOn(vjiw?eki~iafUq{Ni^wkmc*LRobZ;$J^h2|??8V~`aAkJ zy1x_s-RP?e@Zv7?cOAI5C3IzX;T|sfKI}z*KPh_)_Yv;vTbJk4-=F>g8TaRZs@1{t zk5J?x^bgHy52HWue^nhR^wltb4c^x=^p91B5o|3oWFIZ1dj{ZlgK zR4J#?_wm2IltJVFzK{P^dp7-Zq@Qb;#hg#y$Mf{lm<#Cp)IiEb!i$BM2ro5E+tR;W z$`!&f^sf}TYACac*JyLs(!VbK`&atc)4zfKZK}PI{!K>2Z>I0pf9cvP5wAAnc`VZ27UEI3>`tJYq9}zxE|1tW{(SKY;`G5aO z`p?jRN}q^+#?pU!@S*rA;r^c%=|4~ZRrAxs^iN5?ln+ZyM&0CE>)Njy# zlm1(_|Jv@`^vBYFhyIT$zDxf-`ttMs`}Af0eK-IAPu5vL%~33GA5DGyGfB+P!e1DX zWcsTG#rP!vBYtPZAB^~m5r0}jMojJ{Pe(5!rjY4l#6MF0m&_nC)AcN5rgt(kgK$PN zGo}2@Vg`^Im@@AFdv(bSCZqj-#{IuEXC)*5pK<>$#+Lvx^8Xo~|9fyQk-q$TZ2g^CwdwQ}>aasgkKBL&94%6Phf(VQL9a zCL+@!voV=AnN`WeWR@kPr6JSpv%fmc^c%|Tl4O<=v$SxTgqOUW6qffp{+She_mnd$ zl36L0N0M1Nl~?iHll#t@)yVYxKbbYitVw2FGHY2ZnYB}$brOA%>j~E<eQ%w=WV|0h8*mq^pb z;blDqsgb#Y%;RLPBy)rDWUeA}b&`tAHDs<$nOh{^ zD!eUGCUb`gV(t{)CA`~Ega2MK50Sagg5vKd^MHg06DG~>VKQULJf^5e$UJI75|t{* z`DdOa^Hjn}^J(ETWS%ASJ{gZ$b3!a!!-6IG9Q!qTne9%`P820 zkvv}bnX4t=-^fhxM}0CAg?a=i^Cg+DdJ1meoxf6jEBr1s^@D;x3V$MF<9U+5oss!j z_>0ir#US&mq14>}yX@p2!as$Rg?|bECNrg{=DGh%c001uk==mo^khq9XK+*58OaVN zI}=&R&P;Y7*#VwPi&x*=-lS3+WZ3J(>?~y6|C61S>_TK`Bf9|E*~!jH)}6nf3483& zRKL$1X?8B5|Njfwd4%%{=OgO}L?#=OmGjRIGdWE@oNSJ)ZzN=P5#gd_b^epp`A^o* zf5?tVlVr&Djtj)+$ri}^;ZLF<3w{J7p-grq2^C?LY>n))Wb0(xVnVVFvJu&)-`KTw znCC$Ik!>YGvN2hA{@(T3F4?8X_LE)GZ;2XdR};1?&Mr-M8Q)YZm}b2k+2viwn`;H( zioGL??8uZ~S^O$wSCz0D*>%XSPIgVQYa}{q#79*psaG|DJYlG5e79BOtQA`8Os(vImeoFl{~e z|6~s~G=}V?QE zpFK?q?))X3LDo0_lFuaT`+t+AKbq|IWX~acKG}0q{qvGo>0dzhLJ98w$zDwMN(q;c zojUk0BkTKr@mCm{EaTe$XMO)qR@Vzz?fBrG1dBZ~jvYV^YmW6#FRI$E5#w zs{cf)`IHpo{IkzUem2$drBkV%C;K{C9{^-uFqH73@Fk)Ae^&lK`zqPj5(`TEMymg& zG~W`wP4*qKACP@lI`1X=WZ$<~lSPgbeklBi?8ixzl7C9BNp?Ir^FN=FGtc=s*}nzNFdElo8$xjE8Qb1HTyxxQ)A&Yfz`LvG$wb3SR#FI>Pd z<%fw`h@4jE+``6_>z)6kI*XB8oLo_wOOP8OA!8^ZOD?BWd7=A%a(-*TVkMWPRu;XZ9}d_Zbfo!Da67Kxn;<8O;)g<+>%Kua!ZL>+Aw97CAVBE z`w~EIg(Q~TO5`>mH? zFU@6ri!zzqhU7LOw~;hA_T)WY&Of(V!jRis3R{r#k3W#ppMvH5|G!+pnQh4(PHsDL z`;n9X&zb+J z`%B>fp)bMY{P0J@!NNnx=};(l*fb?Pg4}uJjwCmV+)?CCBq!&eJ0>lg`+ss;FLK9| zJ7Jo#on%ppJ(=7oss5?tPBWR@=|VsMF`YE_Omb(Xsm@l~(d5oiTb(;ism@oF_Wz#y zh2-=h=-kC=jV_UbTUOf3$=xmH3UXJHyMvrNe-+?ra@UZ%iJUusG4B7#T`#;rc%z}8 zyXJ0I@D`!_e+jnfHqjwBmYj{T=Pl?zdx|XQ{=d&& z?#sPM?j?H|kKD_`SNy@eg%6Yb8l|hqy-v}3^9>41lY5iEX60MtZIr%Eeid@>ko%h4 zyW}R2dym{Wa_{?HjNAvlJ@cCvca!^&+(&i`!@tasv)`xWKJl9!_H7MA+s@_2ll#m+ z&}V>(^ z%8-14d|PTo@+I;i`Epv4ii%nl*7^qSOulX?^or3> zeo5;l@=K9lwr|Ca$StAn#RmpFl zj8-GRx`Z`^Ym#4^{8}cvvTLp*Tvxar`SlaNr(jX(;Wp&Am9QOoYpCrd?;zY!xRaqL6q2`=-!+wYBfqlfRSv0pzbIe<1m5$R9-hJn{#VKbQO=EzEQ ze+GGX_~b_k&-7Vocbt2jJDU7C9<*6$Htm+E@g{%12Kn>JUqJpcjin38UnJpT;U&UL z4gKe1kj&tNeZ zlI{+cAjtVd2u2WO2=wAl($rqUyr~iRi(sjpB0)@0A_xh}1T}&RK{bh;iUjpkzd_I< zXc9zIW7DkLsg73Opi8h6K|jHg|DWd4J;tV9uq?rH1Zxp2Pp~Gz3IuBq_}0SLh+rjx zkp!y}tgPTF@*bM$!D^nb4ZOgY0Ou2j`SGLDT-)7Cu#RwDg3SrmBiM*weS!^r#SAtu zHESqOW$q%_m|!!4P13q-ns^VJ@}@wr1qExCEeUQV*ot5j!PW$a6Kq4U2f?-kyAfhFi$pn^#HvjekeA@%Nol^)-bsZnNr`f)a;PfNiZ+@%Jb;9d~HyFzJjRZF(vZEEl4EE|`Bkd!C+XKs(9c5zB(WKVK%^mjHst z37(i*0D`9oo|D?s1kVukoWJMgX~!zb^8~L-u-8awRFA_ek=S=_&vc-1V4C{y*xh}y4(x?Optu}EvcF=f`VVAX-mNG z%IFW_pN5{++wCt3GZOqQwJE}Xg#S7grZaT4!t@koNMuL***GlBOkpU60Tc!sLt!9= z)NEl;k_ClX6g5ORtI#$!raZfF4&j`JseT`Yc__?9VQwESQ_ESHm%`!{=2Kzjr!btt z0!q7}aF}qRsdf}xn8G5dSziSxXbJG@EFn81ClkDC7(kl}{3iEKn$>c1mK( ziJIgpg_=!R3U&83g^)r-p`oaztJ%-yW1&T1DGF_q6^to#+#`8ZmqNeNE}1Y1%EB@f zSEsNng_GSy7nbwQRbhDwD^M^eY_i!mT#3R+cfu~OOkouXt5VpI!fF)Or(j0b6=_D+ z^v!2sEuo+Ph+oGrmDfvT3L8u%rL&Q6<1}_t3R{cWjKby;w(uw~!_K5qZ$P`$ z^>*9KQ0=zQ)OMq=ABBS`>`&o93hw_s%3P(T@&-Iu`iFQ%#`qXMjKVP#4ySOWqK@z+ zb`5ANMd2t4NBfFt^UF1lrEolj0$kvY<_Z@%u7`LF$s^S zu}@HVlETv>{S{yhm}e3}q;LM!1!E~ZpUS@aPjU!6ed#eOC$=PQ230(r#4!A zA5|Fd)_l-@Zm}8?6I^f$Ur_jt!j}}jq41TFO72U5k6Z8MZ@rOS_@2U#6n;o_%!o99 z@?di5UHDmD|BI*fA@nQ7kraLt`8&l~Df~fk0EIs($l(_znzho@| zMPC9aPA~K&fZ~k8nJCU|LNflv3=~3fkO`6pQ*{3?d5E`wC!dX?;p`OM`Foob=cH(k zZYae%#XgD)QJjn7JYI$3+&)iTn3v)(3G-2$-#_ zO^Q)s+!f4kct!j)DOK)J>{?KKKgA_wd@145iH@T;+OiavlYcgOc`++^>)BW>uH=HX zt*t@Dl?^4>C4dE26|Ux_jkMw#6nCSzCdKV2u0?S(ifdEcNIL5X*A=cuaeWCoJ}PdQ z7?*{OjaSqr!cEhBH&6L3C~m2!t(@^pb^cS_MzS9PrJCDIZ3p3w6n9Gbohj}@QHMXu zO9^+UcqGL=Qk^|1?nUuXihEN$P!{%~xG%;1rMzE~3&jIm=(Ws26c0}2L)=b}KTOFF zr+7rd^w3-HC`H*4VDd2(kCkwoVVd>?O7l=Wk>aK5k&`H%Ea4RI5%0BADVqN`;q;U_ zgW@PLX9~}vcoD_3Df$;4D2^7IaIS>&gy$RjPlrVmFLb$Q|6&=r#Dl($TSk{ryqw}E z6t7TeuN3O=r+78R`zcFkNX6>BVa2|@xH_w#RrtvgTjX>{)ghj6d$KJ zhT@|XAF)cAA2Vf&k9pSS@qBDQL2<0?Jn0Uw_!PybRjOxtzOm?60TiDzbjIh`^KQpW z{sP5u6knuh$NMi))aKtVgp04Z124Ynxp?q3U*dan@C}M@Qhbl%TWYtrh3^R8HB=HC z3_AZWevkwWDSk-tBd@7f*^6O6HN~fDxAByQQ2dONX?`yK2^7sCPo(%W#V;s+L-9-T zewiTQYk#G}Eq_b#2MOO%{N7`&qn-az_!GrRPA2{3P2raS6cZhN{JE%)KTC(A_W#8{ zDNRRlGQ}xUPF&pIspWq}{_AG#XEsaIQ<|C549=Hkq~tGSdQ^f=>Wk2&flk`nm!(0J z2KyMW-Yl8_w>_cOGHdP9tdwT+W-ra|&F;b+l;)H$G-dh}oJ%;jlh$9Qc`2FY`6!hr z%};4DN(*?~mKLP6D5YVP7N)e24;$-((s1uA+lZDH@lLU^VFj?CXSX<|taO$TYLu2T zmW8b4JfY3^Ql3(f$^|h+H|0@fO50MZP_j~0DTT6Aqf|G+f8HPsN|6m|N=+Y)o~or_ zo6?e$VoF_+x&*K!UXgyozW7h${luWOG^OQ~WEo1!`q)nHE|r$2v?-+(D6L1yS5N7z zBpgX;WeKaK{Hl~zOXbxS<@;VrYYNvAt}R?gxUQjJxx3E#!VM^G=%h0n2{)#+i8F~i zD*5yO>gdfWZ6RUHl+pQrN&dgIjrW3&hwUisrn+xWX$ML>Q`*t1>`kO4z;$*}a98Jh zZN9shJt*x>X-~;}dF=lb_Mx#eC|MVuOX)01qbZ&3xmZojCJApL7lvs@_Ll6q4WhMo76X{B-c^8p3)6zHE(pYHsib(Zl?4B zrCTW3Ji3+AeQHv_X-MgIN_Ti$xqK(3yC|tIylVHz?7eQ#6r8zVY7bC)n9_r3s)v$T zMU4?Y;*7WIW0d|Q=5gT@!Y3&`CE;m93C~b^R>E__v6Pxe3QhI^XiZ{|Q;AyQ2<$;u;JeacW|K;;tVHU~@N>fKbJ-hlE2lsBYoCqGm3+L-bt zl+U2NDdj^cZ>GXn?weEILIv1TxE1AXDR1rjhq9c%IU-ws%iB>tNaXgEcc8pGWgY&M zcT%dIg}WF^XIIL*C9?QEMD9uX0Lpub*;}}ea9`nmhEm(#P|Sge;OK=pnDQa6W4GPC z(GH`00_DRcAK|={M+%RkZ2muCj-h<4$m4{^`&P%I%wLsHOm$9D)XBnAD4#0fv^3T( z0TTUDlt)vx{eNQlEUEePKPht#<#SW{Jj&-Mvd`1c`eJHdU$3Yegf|Lr^4R|=+#>Q;;cb*}r~Dx0J1E~v z`A*8oh`Ot%?|#6S04d)``2ouJCqWINgnx+gb9ne!lzyW|c*?#si1}RT zO917GW{vU}!Y@%TWG~ct6VD6IzS?Ky5n8KT_S2@=sK322G+e zg7VLl|DgN}Wqo3<{9pg9r9BH;{*ChQeS7?1-&E-vaHC(TmH(tN7v;(RQL^%1{?u0a zZz@9+HHGp&RA!?5uLmpB3H{+u2{TZcF_C>VR%RACKsZp0E>Aq+AS#2!%rcGstfndD z*{IlGKqm4WRQ%yj@k6QfO`|_I6@T(yQSFl;Z{`i{HLedM$ERt?F^N62P!*J*)a(^y5`Qp zU4**|cQaHi_MkGB%AQmnpt2X0d#RZIJyiCwuLe=sm&yfH_M>u)H5!%usT@GX#>{~V z`osSc4yJO5$y5$a7|Dk#>WEb5NGeCA^3fJ0onxt-M&&qZ9#7>YDkq3PG0~KKvSLpW zo|+_-d^(lURL*e5%QlLN9{zFpEHP($RIh~RP&qf1&!ghce9XfyQzog!HL2xmsa!XWFR8rX z`8xR`m6xczPvvDQZ&G=M%4<|!wa-;~DxcJ^Q+dOb{Xs-4t-X0yd5g+BD&gCG3mhcj zT`KSSCl;-0Ru|X#fXb&-#!>l56ZXTjWj?0ziNC35YJU}^IiAV{DxXpL+$(Op{k$my$XB>yJ-oys4ktj_UMO2U49uLI3`<1bvdL zIy2P)36of+>gPgK2MGszM%7uU4so3%YmfE6fT23Oa1N?-PK~A7M|C*WxfC@w)%hjN zBb-+_pJAHU0#p}N7Q<3zp=n|lmi{7X)M8X4s*6)CQeDE;ybL3#W+Zq}LXK)al>@4U zL{=`PlrKxOLbWQPMm3~bPco8b!!^C`&4i@dqPmQf+f-wZ_1rsDQ~zI;|F14dbty$H zo#>>=m!-NK)m5o3uhiYJ5QJcR$o|Ac6-H_@=K9#B)Q{CJ~FV#(`ZtBC>TtRg+H{#?L{^>R&ZQZPHMfDA; zTT{K8>NZp_rn)WF?Wu0(mTj)tXs_--^$ZnbN2)tfHTyeL-Jj|%RQI8}D^>UWUJ+Xt zs=EvKpt`3@>+gS2?ZrwqgZAg|dJx@Gnczh_fa-x%4_4ZP5^GcsQSi_tDEV-zCs93u z>hV;M6myi4A1ypac&zX^Lr>_&PoR2YFW6&Frg|FHQ>dOgRZZ4T_av%_>N|?+nN&wp z^*?`C!|MOv?fR&C4%G{(o=f$7s^_^8`@ILw4utAOF1!9ERPUgADb?GlUMAz0 z`$O;5E2!Q;^-6!x-Gf&NucmrU^7K2^YsFkAyxuV7ZxnNr@MfyFr2MU7Zc8-16TSWK zqU~rnp?bgj!0H3S2i-Ax@FC&DRL3NY2GXPEeyKi2 z^;xQqQ#JVs(->^f&F18pOSA<{fX*ZRKKD6Hr4m2zC-n0Z+0_fXzN<_eX91A zLL1T_P#tG!seUN@$nALWW2&D>_*B&#FZ|5VNJlUB1XXz=)i1n%eI9*D^(zTqCyc-3 zUj3Hp4^+RS`n~6Fd-#R!_5u$XL)Di6f3dVWiR$lEf2QhR9jB@#z{_dB-+Hsy(tc<4 z`h)5es((_QY~?pQRR40bwis3a_J!4Uo>lYz|5{i23+Yy6vs0U%`c2ekpf-xyjMUbp zHWRfjwVA2SLu~*x|45?^18Pv4o7y01bNVj5Hdr_dwIL>WuhnLyHk-)VQ)UjYg)0v= zl+Z^_&;N_}HPi-wZC+{}|BPg9K5Fw*D^pv5+Tzp}#O|xw-&NFx`KKdY7*1_52@4As z5iV-zpJ?vsEJ3Xx-YjP%Wc}NfwVY??M)JbIFlCBjN(n=)qM(2LhgywVB%v-0g$-)W zB)c@z7PYp2B-4|`hAvyX*{G}aQ(KDKl0KD;v2R4zOlK8KNNpKv%Til`+H!rvVrt79 zdPQ7bQDt69@ivhwxqU|>h+WlW1H-? zZK!QWZQEp2t2ei&wu27~^-1boKTi6)Q`5^|mWBOX ze=lnLQrnx_K7OdK!R&Y3YWq>!-!k>;81H?0Ahm1`_z-5zksP-l;&FrN$qXfd57A&)1-Z$+9%XLPy>!rk9=q- z;UnS4?x?+|KGlpEFPooHv)N%Y`fF+vs7-W(K7RZXfZCU7@GA>S{~O`A)PAJqYag}m zg+CakIzK7xB;n7(Uxd0~?Aia#^=;I-g+Hh-MD0)NGgF&P?QfBP+4YplIYs!72G76L zXKCh?q%6%Q`gQ)jWA548V>a$Rv)pMy2 z@lOF;NzAKf&Z0g$^*P1M|7Xq;IW*CsJ{R?Qsn4AT{S-(F^HE>G@4?mQ_gf@(`dVL* zx^MpbMr@zz45vPl`oh##lKn-fFG{^ceKG18>Wfp?=HH8?scl8F!CcQ$52)v;=Pi{_ z5F6XJqSXu3{e5BIza<{BUZ%b@^$PVC^(yt64II}4}A|)xBb6iQy3X~T4&nS zwfWZ`n0kkL*Vo*7zi>(6QiiVY{4&&+r@k!p<&xYTZTYCLKz+qz04KS7r+67wroILB zRaB!@#jHksed==lbvggKJAXy3MSblgFY4=1UpJN4a|O?RgH&@v>KiG^#^N^-ZYtbN zxVd4PYD?-iY__7lJN2!p??`f5Pt{4W5kF{y7)eFtwJ8=3eZ7QiB!!cOr-(l_(V>2t$kVC&#g54-f2R1egl7v!Q$J^_4)yb>Unc&1>K913Pd#ZZjryb1Z>R2uKi)y!n0NYawtg4&yQ$w#{T|Jld#T^&y(U*?n$#bl z{xJ0isXye~9^)++9|>cq`}vR8x;Kv=qdu1UslbS&`eQX{XJ}rEP`m>gb zy0)pBV*dSb+kV%rR4-D0!MFP3hDs2mHM01U$ac9YvHKB;RUdt zH^p1x-T6y+$H$3lzDIqWYW=?O10TcQ2p>`(PyHk6pHkO*8Ls?^C$|A9r2g47@&xMt zRZ%BW|AP9L)>i(H9`&!(R$o*9LD_vn{aXpv9p9UCc2m}Fwm+=@DE=qmBc6Q+epkKzu*RqUr+0x1lZAhI(7nnO!o}63|4{#za9+ac2xldno)E$r zJSv>g$3{4l4;~NBOgKQyz=TQpL4<=%K{~Sthj`G_&PF&V;p~KSIFno#TbqYN3H#FI zI{yjhRzg4gN%{E*=TDLlE+dh%j!$6drzgi8>P zu!9c53}Knj>QW%gSx1Y^3j;q1v6cyoge5D61#Pr@AB7buR9(T=LAO&UT!k<~5x zTZB!*NZDom&Wkr!n=tk=*!cftX**gZ>=OFPkFTxal7vfnly&7V?+`96T!wI23CjtW zHE?n8r6ppP-@{Xy2qClQV&JelwmUy^JlhNt?6!fXo>oY83qB;j?0*Aw0_l_b28@FwMWv#08*Y5yPIMtCRT?SywEe$Ua{@Gio; zT{Cfpq4xjY0{6MU4e$3M?ZN}X2Zaw2KCJqV5kBHmz|_129;5jw;o~%ZA$)>{O{FIZ zUm|>p&^P>qPpfgBv6ffv&k-6qmhgFJtQpN$`}lu>@I|{aGB=xSCkS6A{G9L=!uJVZ zC46n@UvFCyLO%i`^jiRgZ+b~wcuV*;;X4xE_1$Lpp5OO31(!b{{LE@iIF9f`Cq30i z!jB0*Ng1ol_{4n~`g2+TJW4o$M$LkR6Riw{Ul4vt!)$&<_!r^VgufAfL->;)WQE@f zzY~5>_=7ETgg+V@lOW+F!k;w~ei7=rJN(sT(-HH#3vTTXLjV6q!pVkCy8Jhd0fbX% z%pjeA2>R2$9k$+ zg|i7~r!mLWGKd)}?4vQ)RG!8>Mv9-8#(ZAd#{9wsrqLNjBTr)?8jI5yF6D)#vxsof zM3cs1Zc4SLu>=h*_g<ep$6$^Vu3NVb96 zXwtZWMnvNX8Z8O;uP*Ask8=KPDjK$ivZ~~1J{rJVn zlMGY&6fvh7`WaN?bQ%|nIfKS18s|$sQ+O7QvuT_|W3-=l_4M8UE8%%P((PYB<3f=a zO`~}Ujmu=`(lqPK6}&=tWui&rDjHW$P38AJ-QaaJuJ^s44I8Vz9X2*@q+yQeCK?~m zxS7VCs=n_3Hgx~DaT|@>y@kDD@9=f7H`MQJq46InJWJy_ztHf!#tMBENSHL$ zi!@%M@dk~TX}m6juSoM%8m}cfjw%L?H)*_;%32*7ei0%4cWJz5GL82WM)EisU(ooF z#wRrV{GZ0hzT((9zb!64-ae%GRN}Xl-exJ%ecq$ugcIdQ-jh{(0-1+-}x8=_>{V&axY5YpFLE|@?R;u4={7K^v zzpAoj$ga2>lWERmW1hxeH2$V(etwF&`yU?3d9b2AVS_vbzQAHCz6g z18C~}-&&>#&5-6GFGF)M%^b~HXv$qThtQmrW*^Pj+I$VbJ3iK z=GU~J>pY|`wf8PSYswrI9J zl?JCjIMnRW?7F6r)|=MgO-r&2&828AZI2@KE{biUHJ7EiT%t*HdG*K&!WD%p2}c_G z&)aGhn%mM`mFC(sSEIRx$kjb-yIa&;ljd69cj{%OU5BQXXI+}>Iq!8@pXLTWy6iSn zb3=C#HqE_+8`IpxWcL-#O--5RW?nGw`ps!>Az@45R>G}?+ZcLwuC^V`lWA^G^F*3E z&^$p#cBHuzO)J~ZH20#p3(ehW?n-kvFOM~jkmepV_v|s+ZPMJE=6*Eyp}DVJ_4uqe zWiS8!G!L+$?i)WPr+E;~BWWH?)5?4Z%|l(;n#<~Cp0Ig1%_BT$#|SnPCrzMv6wPC4 z9!>KYKijuHvY)rWaWs$jKl-%l*s1A%cS&33Brllhcz>Nj^Aeh;(mc%#I&->THhR~b zK~o?9X`V^*Trp?)6X?=Gk%{yscMe|mgR*dVdb~LY{d97c!x_q6X$$kObyn*J8?p0jANq95% z&Vm@V(rqGdSHe3?PL=PX`5?`^Y2K4E_e%4=#5m3SX+Dt1O8XGahm&ApgythOU!wUa z&8KME{{KlOe_Z%PqT}cVewyYpQyH4i(tJ*38!LQXXbot6YUe+OFB&HLG+(Cq0nJxv zzD@I0#lB`yG+!6KA$(K#mSK`mLF=G*lLFIxPt5zS;N=--f|w75AJP0+{3nUNhbgxdc%wf}GW{@)Y2_x_FM6q>(l^!_3I(?_olW<3Jb{7drRPWlXW|4&oSU(=Ro zdLq9U&?{u*w*dTBY&0`booE12jcB0PG=gYeZ`f!M(O?O)7)lsIG%L|i$+Hp7?#&g= zA)M3DctZvIh~`RyM01OoCs81pk7xwZ{6vcrEnqsbwxDnrk!}P>!&81?BER{oSik>E zw3xR^k69wMnIWnWWr=brlb3QJED-sfUvHDhZ~hXMlc1xynn*`LCQrG`doT*Uv!Vu( zX*PXDv*j#`ge_s4C{FnfQCIr?LSMV3vy>~ion?qtC0bVGa%rmN6_O!I-#`0rOOm(t-bDKn?PFy~ zoIlZi?iFnb_Sgf64ktR0$VS>hLi&GSJs&B@;*ryTs`47<<38S%e zrtmDH3y97p8tt1CH+zmsey;F5LkZ`*pqm$(4i^#KMszXJWki<{UFyAKRkk*nGLYzU zqFafsP|sdTbgcxx1x#eEeT|=AS$le=t|Pid!u3S@_;Yllx1LAcB=ko>d!PFBE|{SH zx}E3|qC1GjXdvC$w_T3tE~2|7++!%=UZVRX+)wl%(F0aI3wj~#)Y07MTbq_?y8 z*P}#Fs3RT|K5pnsq3u`gY&?33R+;E&TIPlLpNacSNyc7lI=_}N{niY$`e@BaYZh8F(Hcz4c~9FKAhadGWM~aC z!7FQMXXdl)Olt_Op|oc8j&@VC(VE@Ux;zK1ITP8>)+|#e=b}}lH8-t!eB)%T)SA~v zNNYY?i_n^1It$QRh}MF%h9&!@#4XbrPHSP`n3;VWJoZd`Yf)MmT8q(I!W~y@ai0Qq zg4fc+7?!CG_?Bf6(8|%u>*YJW|DMc+R>5D2v^QRDacq^mWo)HuRcJp;t4eEaS~XfD zY1L`1L@Sh9gVu7inzY)qBCnJ=x>m~JKl~KwEwU zL`%n0t$otu`_Vd!*8a3kqICeRqiG#T>u_2JDWU%St96JH9xBwPT_vG)L~8#?T1UCu zE1o-lB|nzdaY}W(@C2d$|Ep)=WLl@ua{n*=Q&S74E9lSv&>E#wXC_gS&!%++ttk|RS?N4SYiuvM$39Oh z9g4k@zewvPT5n4EW#KErS82WG2|ZKY0&eLRaIZRV(Ms?Cw)~M%TJO?&Ps01c57J_c zv!Dw05v?h-KBhH^)+e;Sr1hysdD`)`bpGS==VB(%ny6G?Bz7c!MeAEyUrXVesl0;b ze6;^>`SU-teiZ&RRfm?}0;ctgp#+=PztZwUep9S>XwUqA?6e2EwYENu*dElg)}Dp-9MT^`TMq)YXOo)z zf6{L4Icd*Bd#KdNYhta-;_CmDxqCK2;oA$!At?)Yk zZ~OT_?Zt$P3;q1Ze{L#6yFlB|e`x0to_3ygkQkRvk#;G~OXvS>^ZyOnRmIkX{``-O zgo$O5O<^Q#r3x|a^=Nl!uR*&@ds*83NfO#RzH2Wfecb|R>lT2QZ8;fVp7zSLSCGPr z!j*(04X4R>6_KmbUM;n}dZIvkP142@7Octb(HgO??PJ+zr8E% z-4Z*F-dTGH-T%wT-n7r6y$|hEY41z>7~1>MK8*JMiamh#ArcOx?dSir-T(Kp^Pn#Q zQaD_g`v3Nk3LZuK=&Aa&kEMN*_~U51|CfA%P;UYBn3HLrGEJ(}q#*y_mj7>$5_6_u zYUFI%m(U(9{v4tFfBQVi=hMDe!UeQ@{-3t56rNm}D)v&^m(jkFwibo<6|}FReWfYT z*5x9?SzM*H(d*LP-ym=btR@(Q8)DqD4C4lxFwB`R@zKizVBJUBp z|L!K^KZ-fJM$3jhow1&_EQpk384Kb?Z;H4$CKo=pAi3~p)+2cr)fXa3wo00 zXum{zEbSL)KTq3rde^2{M+GhDHy9}iLwO{_UzY%`x7eSV9f?k~;X#XlZKhk#pPkWN^ zXW=hG9SmA3YcW67w6gt9Jb?Bew9T>m`48>Ms{3EUzkOTlf2{NW*w6oo`-F2P zWgylgK(QVH^4R%^mn5E_xJ0}F@uI{F%Iq+uT1YrtxUg^$L(kFBHoEa*#ETQ>h?nsH zbdE;|Grj+Gj(sz1vdFwJ5Eg_*L*-Q_Zc3;S`zN4@YeN6{GjS+v7<#@!;)uBAZ|lTu zVJ!3ytq|LXfDHQ$UEk%Uh}R}wns}LHi%z_(vRjUL6=MDQOYDFCLaeiwcqPdrg)1jX z99>~m;cCLwiGA}gc}-$}|I1`qUWa%q;&q8PAzn`k>kBs!ZYbPHsQ-WI8QIjo8yRmV z++4VY(ER^6Q#SOY1Mhmh{2OmeyoX(*5pO5lo_Gi19Zl}txQurq-r47Ayo+#G;cmj+ z4HHe`J(YYf;ogQ4_7U1$fTjKFEZ(2~FNhDIyBYC;bXFohi1;z$gNZL7K7`nw_IZ@} zP~yXg5BF)}mvw%*N_-^oS;R*X`^{gC)nokf+%7-kV~LOR3oe(BCq9ArL=W1rSbP%k z>BJ{1>J;Ir!qXB3$!AD&l<-V3iEky=@n(FRDsnsV9TM&|wEH9WX0AB_?;{;j5#LMvs5(NcMtnc9 z{C}MK|M(&I>amu9c#InP5qA`cleeqa_;EUO5pJc-!<|BLv0KR~c&7vmp@eu5vB&>Qn-Ix`WQ zTl<^Xl>Z?9H92o2{*Bn5|MZ}H@<082Af7DzYZ`uv7(a<3{@1ZHT@p)YdOGg^Mb2pG zb~-cD8A4|OoxyYlDhlDC|Jm%!k|>LxmCo!EX6un|WRBGAP&&iu^wC+6&RldBpfk6v z;B@BkuQYV#^)cC*&yQj}IKLftcxzaH4am|NMrR>EjLCbSe_`@Q*V!I`u@^ z&?kb;-%gWG*ZZsEuK>_#3ERS$PR9iQ*#NMC+UfW1?pT{^^WV|tzvG*KI?D=u|1V*A zIxD2|ipHq4BkBA|XJtAs&{>7fK6F;4vnQR^=bp`pRen;f84z8(FNFP3Y`IXHz=c(%Fp8R&>n&Tf!|AyJey;S(|^4+9plA zoeR!vPiKcjlg>1k03BTdbatWRuYl3<{Xd=Er`oi(^1Ilbz3A-iC;1k%Gh5f(m(Brn z_M@}EuL9=B{(01AV#kz^rE`!k5S@eR98Twu*yFi_QsjMrk6PC_IVI$v&8URG&iUR0*f~sBq?VI%g!ZA)PZ5 zO-%=jy_n8ushvaTB0A?vKF<$tJLd~8a7XQS{1H%>ldYXIm(aP?NcSxsyqwO%bgrOt z2c0YFTu(grLC0SK zqw|E&&wuDV)l2U3Gjwc7KTGF1Q}))d9=G$-&hvEsAWf7HR0<*T>`lMw-kKaP{KQO-lg-N2h|QP_yqqz18f|f58V&@VEc%U`+v!w z^zLhP#?$$p&S!K!w;`m-KEaFU19BprFC={FRdD7jI$uk${r|djZ2zx^^E-Ac#NQaD z^Fv}^wfl+g5IU3SPDkfwI{(o5h0YW@dJ(u|)&J8U;pqHE=XYPGUH-$+SCh`urQk~dUB9_Tx2Pz83xKY^|In>St_o|0QuD(fx(!1KO}dfK_iii6G|f7u+wl?G z?b2O~Za>|X6x1z%?oxE!|BG2hxU6tF;qr8K{?nE7*Bu19BP~j?D+^blyDHt)C9mdD zX3d*)4dI%JamB7JTt~RBa6RGrhEm>;?k1|EzW>wR*w!o?*mO7bDw~V&2HBkc-RN#X z_g}hO(j7~8E4ruC-J0&sbhn|q6Wwhsl|7I{cRS(sbo~`zx;y$)I{)3p(N;s7R^46b z9p_Z9BvEpMgrUN}HH2hu&7?m={qpsQQJK7RZI z7jzF5>M^$N;hxGzBELiT zRJy0RroD!2Me@ErLl#ESy})m1cF&}H7G2%y?OML0eQ)Cl&v7T?#XFDg`L>tv2UDl` zE0%OGq~{} zF5KXPccoti(7nln-Ws>iy_@c>bnl>hn^({-(7LyKtQXZE5S9L2ss255AEA4%$ouF% zMECwQN}qt}>Jt#2#lz0KFvjca!lQJbmhc$e$J5v+=sqb@`+sRF_zc}=B|MiTS81Q8 z`#oJ7=Woz`f$obw&Mg-o`7hCZneMA}Ur7eGnoG}rdRO{$p;CL3?pujL4f40?S~b6< z`!3y&=)OmH9NqWnevp`*#{P$iO!s5D6I8HI=zc0;d>Zu`-Or~6oIcyL(nC8+&#^=Uw@`I{FXc zpTfz)zv%vLg5)W}e>`YjtA9HBm!^Mu`WK;p2KxKxpV7;21Ezl_`e&wps1M8j0rU@~ ze>NZF{RjsM2h%@`*QUb>tE$U-8L7#2IWo&f zKC5?{S%J)|Gkkv#nH7yIky+VfmB4Y^U1+`~vK$Te|bmTqsqp)SxQgHIM4w?1ItV?D+bzNLsT|zb>vtg>E^MA-}OlC_m zn~>R5t9QaqEK132MrLy|>inxO9lfBR{!V5qGU~vS+1j{`o~drPiwKk1UbiF3j$|$- zvlE&9$m~pJ4>G%uiC9Gu-BsU`k!jIQ`YoRFZe(^3BN7Ix49DZxhs<7NRQc=EER+?> zzGT!nNiYV?CLZO%WDX~D2pO+g%^aGHjv#ZS zEURc8C0}7V&O*-|L+02-$2If)WR53u7MT;sL=NciH)mR;_atSkGVo+FrBcjR-v1lQ;WuI!=lf;OCZk;d%2+-0b0b7DY68fdPsWwM_=T2S6sX!Sa|xM;$XrV1 zZZemVxt`4BWUkO6t|%CKHLfIc6`5&4J=FY%~SR}{!c@LS$t9!|)^4G(ScR5ZQ$UH#i z!6;GjMXyWmS|tB1GLMjXip-;AytY5%{(0sxGLI|UmDneYPwF6z;c0%Kyj9&jK;Ur|I zAvpY`~EL^7Ur6!q+MWal6|J=qyzNxaH-cAS09 zNOm@|uKcqa{3kmL*;&WM|6Jm8c#>(y&EikOtml8@jmyrd5)zmA++;T-I}h3Q$<9l5 zK8=q>0m#lzwncUUva6F_kgTiptX9pDU6`!PnD`=O7gaWjFGhCpga?vclI#kWFJ)Ys ztUCYZ%Nmz6E+6PPuP7orD;ZZN8-qWI{;FhGOSm;NR>+dAlFgaBP01GQS~Ql7TK_|~ z5*TXcH4%kUH#W#N|KQptyQbwGW7pUt+cz1gJC_|A$Bb*JhK!|plCKrSYHO2S$7J19 zvYv=yvO#2TbWoEKV6xr?UM4wXe;Ln;W-~N5ytak!VJ^5ZgA-gTv z9msA+c6()e)CQ|=Xq_F&?xZpkV{0)anBAG|E`B0^mYN>TuExI@cO$DNfb1U12f6NP z^b~N`Q^0cFm+Zl0|4Md0)d`a9uU09m{=W;-fn@)d@`K`y4z3C(dx#S>Ie&LkUAy`1b>WG^6lHreyYo}{c@q4MnQWbYt* zXDn)s^5eX{%LVUlof8tDJbHHbl6C(->;8X)sH}UC?DJ$Ji02%Ehsi!d_DQmjl2x&B zdLJX}{=aha35^U#og6Jl_FrV5A^VinWa?>=h@lextZM1V?RZkE{azsZV#G>I?;>*) znU~2OMD`VOE0TSc>Z~ls)BTCZzJTSPue@XTmvR}nln5K!dUn>cE zI^UA@$7$B7h^9IFos#3?H?A?IEa;{Ck?c=oe^ygCdNjX~{gqr)p1+ZshV1X;rXn{1 zxkL4kfmfXzbrXx2K zx#>elZU%BQlGFLmiOzUp*ICHTMQ&Deb^giCZk)q7=O2|VnTOmmia)*$6 znB1Y{?k0B_xx2_69+d{UBgmac?nrW{kUNUpapaCBr^P?A8LweZOMqrKk7eadQ7sS2OnnxhM6to4kGTSmpXOxi`o?L+)kO;klRsjwC$i zK%Xb~g2{`4CNGIZPcrBAKe<;U!unLny=Ht}fhy*2l8ZO`Epnf$xzD{#PUAo1-cb9)^$~AGNTf)g7O#UeHhmhBr zAM%HiKP=u0y?S~(y#H77Bh`l#Ia*F4$B;jk{Bg=IOVnQEPav<#U+ek;rFIhe^U0qa zYUEELf1aAB{HeY@jr{2*XBf{6H2FLEv*HJ%asPv!9(^5-TzK^K4v$lpZ%Lh@JY zHP2r}{$lc%k-voerAk61KWf_OhvY9Oe}y6$hbsm~#G+QrUq$|E^6~7hA@9QY9zm@#s z|1|k0$^UEAvgh6Z9~Izd$VdF2m6P)PIr7hsTYMpN4FQQOr7sy@CjW{+3VfBr*#HRL}ser)_CFci!`BOj&f z-{ik0|G9EWM!q2bWoqy%2}j1iv8zXcl$r5Be{nW`NB(<#ZYxWFAg}Y^$m{SoOMVU% zm*roLzZrk0FhLMqVXYAL|1=b${-27%#1tlxJZgimS%@K^z{!kIm|VrCFokhSB{u9! zGWEzyl(fRM6lS3?9fj$oAju5MsKPi^qy_E&rQjx`p!z=)ESZ&pNB9e~QJ7t&t1yRl zW<|^k8vjrE+!W@~(<#hroXNh{1>CJ2!%xz+oT8r{F%Z|6n0i&h$yLe>@q%X6n3Sc!yhPk|F7drVGjyNP}q~gp%nI_aEQ*@D(p>R z9}4?X*q4IpX9X0Op7s6|4oD;v4y14p1&{xPj>_l3ax&MLfC|H56b=ufXvC$&9!cRI z3P(}6o5Il)uBUJeg>xtzOW|}1#}T!()Q(T}Po&_fnUVLCD7gMFoDvEYT=^F~1QeMm z$r%*RqHrb!E%}p?xT4mQ)7fF!Z6pihHw z>n}ELo5+V-RZilH_e)uNJB2&^DDR|jmn^)cKjLX5Byv?x_>3Lne60{Y|+fqq6oZ6Aftjb9`>=3mK<^uJE@V`fn2Bo`u} z?=1JQo}T0P6n@Z?@`tT6|0jxbQ}~(UWE6g(IH@z)M*tOmqwu>Pba4XXgz~6c*Y?GU z%qKRg@W(&OwM#c1Xc3B&OA-}bROZDgC{9UnMv7BWoHmBhC{9gr8V%qlyIG6VQJjI| z^pT20q6{gHOI>H8I4i}Ol}5>DN#(OqoWl|g0fms_oD}Cucq*BP;=&Z?rRc6*aXyOk zN5mZG1&j;oHlA$KJVh22BY}%hY*1X3;z|@3qv*vv#l&^(Nkzr+=OC_;yM)D6o(W$sZN)o&wnfW{I{ade+yru5LN3^T!W$xe=}dp zs4ZZrWL=8uQCwe=$iS!siW^YWF96IpGH$F?heXykrMMZzZOk{Ps3~BI`c0V0RuujJ zFWaZ6>0ryZqv)T16?aHAcci#e!UHMpLTLhuK^~&GE5#!z{)OUhQHGtjyHh-j;vN(a zptvW+eQk3uihEP^uWjNjix(jRjd!Q`SBm>l++RT_9nt6n77wI&@VIHircME+c#vG9 z94ftsP&`yIiH>gkaiFOGe^ER_uGXP=6h$BY5SbwR$51?$;-wUiqxg4<8vmhq0>x7) z>Jxxs1a}I>lVm}+>d%OeZZ-Zx(dYjZb^ecUH3XFMvnZZT@%*@@cn-yLt#ICW1>ask z@j}&*#fyv=8!rizn&g*JypiJN6tAXu1;s1lKQD4p&{v7bcqH~(@ln2ANAVw)yT&W( z|6deu2u$@g{zLI*ig%jaV!YK4NK*h5Z>M;Nlq26pVckXXZi@F?^B&{96z?0=T1o%B z_(0rJd@vDGe3;^^6d$4Z3dKh$KC5q>VubscK5E1tH$Fk}Nt1s$o=+*Ba(&wPOrYf& z{Bhi#r}%=2#(yY!@JHljDJ1!(+t>7^Uwob7R}|l%_#wqNDXOmC~Om%|vM;N>i$CFHNil zsH7hwQkv8_86_x9p{G`wTD#GdvYXP>`tmJ#@xO@o0+gnsG`;0B7{?iBjA6YX zT9r|nnbIs_M0p-9OPsY^noX%L%}yzB4n3WcJO2vTUk4?x|0&Jmpy#FJ{(ouI|EIKo z5kRu?HXD3vJH^?*ucN^$seo>CnC99Rnsd7wg+ev?uwiB(AS{afl# z8l%*uG@#U@)YsGTNKS-BX(*5Joh!{XD6LItO-erbGt?s6mD}r3+A!28txIV=y#nIv zQ`#Wm!cbOvH>R{RrA;VpPD$hcl+^jxnQ8K}1*L5$ZAocsN?V0QZ*llds>)InlI>Ks zrRh(D(hjz{qj4u`h8Kkr_5WU!{!D2%O1o0}i|mAxT<@o}dy+azdr;bQlv3r)-jois z@qH-mo9I)DRPUE~r?fw%(cr&h{x?bo$$Lc4Na+wt$5T4gMh>HN45h;<9YyH~N=GJ* z!l)@M9jy$Bj;_KzHVx~zG<7FXI*rnalumN?>d5^hb(Bt~bPA2^vNnO{ulMoO1Zx{{K| z|4WxyuJM19D@3BUDY^2O_p2#gV<$HOl3YhggFlo;p8%Aux55qbJ1QYJQMy^T(!Yh$ zttPi663t_lT>s1UPD=g+5Wm}MuK!E-n%`%PC;Naye9-t%5{mgFl%pnjl=8Hc!h+W~ zmL8)Nuk#0#o}ly$r6--$|I%|&k$%efv@%(@&r*7W(sPtv^zHM;7gE=kD7{MQWlFCk zl2ra0rPoK2FsmGUlhV7C-lFslCD;F!kJq8}o-My0X#EcSZW3rjwiQ$$z+rLBN8HUCTL8_T~nPZH%mSm`@UzNe%nAhAH{Cuix;lqWa&h0?E- zHL63&<3FX}#mf^=o-l~H$9~HbnNKWXM58=u>N=U_#0nx4H3TM8Qug{!S(}>jG?IJR zQ(t)!PEUCT38NM*$N0~Sl)e8qKI>w>zC1JK66IMaFGG1&%CqUAM^#*&o$|tz=b${N z-m+L^Se{GoYbj&-HS2V7q=;?N4<0{5gDX(U- zdZ0;$a#r8m1~*uvy>~852swE+@M@ji&?H~;YX;&mvXsDd3(w& z%I>|F+mzG(f4NJ!rvebArL0zf@__Qt&vDGC{lAv4DK$OcwJC2v*_*$lzph=^qwG(B z&`}O-NO>#D8_A1wHa2cTS^K{zZ)Q828@EX9Zz*Nj_vSCDZA00czslRmDK4dJ2g;G6 z9Vzc>Q#(=K*<=@^J|a?se-W1*Z2_RXJLNr0_Dtn_`F3yPK1O{PI1c;yc7NjmMxXy9 zJAd=-LB@kAACd-ls3nI5+QJc(<4nuHQ$CXNQ5vr+A5HlL%Etuv?Xi@PGdVty_(`2; zNfg>kDW637Jjy3iK7;ZpmY*6rCZ|z8J>m9sriBsKSwTW#;n|eWvHaXbXnua6$pyxE zzb>-!#etSw5@^X~l%uF$PFdsscDmAd73J$FUu_*N{u8aa{*=dtjc#=;w@lhZviXo6M*vll-2n+e~_~3f65Q* zbxV2?(upQOjUeU6jE@_ikb;CyQq~jz<)@5Kr}Ae+WbHXBVflF~yHb9E%2t$Lq%s%f zmneVY=le3{S18A*e&qkFlwUJ>J<#M0V;lh*u5VF(d)%L*PIxCUBneXXzaz`B1uS%8 z3vl3vls|GQQs+M;=ATlTgz{&U{hdbmMfq#%yYer8`v(hANk*0a zU8?`R^?xw_NcpEklk(4&{311nPWd;=ze`w|K$a{1|GRG8Rjy2AC;d9vu9H%k){@DL zP?_9hicxwiQ&O2q`B0fUl}r-~mP}{O>8Z?2CC2|Fh;gGhRA!_yQ^Fm}EOwpMzGgGd zo?4s3PICrYJ~x%ssLVrUQOoD0q9veI<_|PkfXaetC<{?p*!J~xPi2urZoU|mWvN8} zE%CJkl_gWY6qTi81s#=Tw2m$mj8r0x%R7h_j4LMAsH{X~<&>{tr&tA)X|56ymZENdnV~oQ&!`F6HwwHqV4#pj+?3C*7Ol23_`SW-?RP+fzWj87(QrVr# z0aW&|M1N_avX@?Pk-e#S{ZGaHe@VPfvZ7A_D*H<S>0|pkpUMRe#nW)Ib`ceg|4TtJ z@z1|1ms$DpL{8<3)K$wSsigaVE7wrDR!$OLmn#30%57Axx9|qzjj7H}RBleyZlR*V zA2})9+f$u8sJQa4sPd1C%H34%p>iLUd&leB%l$@u0$A-KD(+!c9;Wh$I*{?{SMmA( zF&&_X_?U#zh*zGV-lXy*wH2xSi)y^NPf?9G>uD-KQi;KzKT(N+qp074L=*5lm5-=I z{r@_ZsQ+K3@)DJor4T*O$}0)6a@7A4n!iEiT`F%N#zqN|EBV3D*P<<`?<|V{Xag$uc(Bbuc>@X<(u*H(5DjbR}$OrsC=JV zh{}Jw-=Ea!t^7=N8Y;g~otVn6R41gO&cAcd{r{?`fa7^p)%lmas{X$ofw(*HReb_b zos23}r=~i&6eO8~s#lzf`xC&AUeT*gOLbYQ(@|Z3>hx4+r#b`G8L5s-{90!waRoiI zaTcnx>JeAt6F?=wd=9GfQT6yw^wq0#QJvdC&tsfd7NQ#;7#|na`9|N|%p-5Lu3DhU)TESE0HB)s^hJ zqFztAt~~Okn;5v)w8LVs2)ePY|RSQEvZ(iu1B>- zbuFrOs(q>rsy!QNQjN<0PgL8+jxp+gKg7V~LCE-k>d@KiHUCwu|EId929)B{NqlX) zu0wU*QMTI%)%B@vLUjYG8&TC3FkO)|3UuQnAgY^E-Q3_PPqs(Vu1kLq4j)0O|#eWWIZeT|wjNP?icKh*;)JkSaGn-U^TjsH_USei=Up;T4v zQ#~y8c!ZoJIg;v8);ZdEjPcmO)bH_BPosK*zUHbYQazdKe^Wh4cHEQKC|vavs;BA^ zMEe-u7b+E}8@2w^MC1Qd|4vndLb{?=t)4^m3aaNSL-dNBNA>)aUqJOj3-$jmsuvqC zu@R5|R4a=>TVkPB&NLl2cB67Nc+Wh)1sNP8RCaTX+ zy_xD0RBv&)_4rTqHmVO%y`Ab^RPUgAr{1Y3kbbkM-c9vhKjM2*i3Wcxx!?Ez)dv$v zAk`>Hk5hfb{86i???F&-5?4*^x93DDq=Bb<)^RG+0bBh}}q{z~3XI(=RNtohPQopZ7wT)O z?^FGP>IYOmvhYJ~+OkcmA5;A#xuyCk)z5-c{kQS+L~i~iRjvF9Uy6owzM&cq;#;bk zhmt&g$g9|XNA(wz@2TqWXR1F2n*3z^Ink6b){<3!qc$zo->FSZZ31e4qBh~U?du9F zFaoM66T%C%N#rHcSew*188u|EHo0*MBQw_dTKMIe4NPUYg3zv z+FaCTPUW*uo0Zz^)Mksw=!$1un##0g<8qNRjFzJ7q!)m8DnB6XYN%lQqU?;YCZ*8M2G(?QBgSriB_XlqjrmR z^o*!AoWLfv7PWn;wW)1MtwYVjJGHJ|d(_b?#uK9UJO$wV_ATrAKi>O`fIJo|=ss2w~sa;OZJ?GjL_H`w-tEgQ|?P}|5{C{Le zarXMp+CQlM^AErslAYJ{RN};67>nGy-e+MYOhdxm)fhT=4;f_@t@io)HL`L7qz#jy{)v1 z$N6vR*KX}SYVT9~$a0VW)IQX&LZ$Yx@e^b8|3mVbL;rW8VEzR)4e3z(lG;~6%)h1< z{r`l2OYMJBgF4kP<=<2D;7{$xRP!fl9{j2OV#~i8e@pd$r#?Z#C9nU9`h3(UqCT@i ztWQjR66%;wYMgB3u|7HV>8MXZeaeuh!l|q?wNc|g)HP~k%hLz3WCrRQ|Disk@jv4~ zcJ&ZYeOB|?jI$f(psxL2=5tY>+kWRU&YQ^1=cm3L^#!OeL4Cncw*ErY7fyL}?IKo- z7#B4zW?VclO~sOyEM;7p`Z7VxmkrdYNPT(gS?ViTxMJ$M67`i+z6$kK9iP>Vt0ys} zo{@smo}*r+o~K?&11(Z7CEVE+b0qONVx-Jvre33755E>Rl2FWBG`^?arm-va4vp=p zcd4&Oy{GP3UB3XMK1lkU)Q8mdM->b87clB;QeVqt?O4=JeI4VvTHqZ+yOOL={Zr~2 zP`{G;hSX1^z7h3JsQ)+hL#dxY{V?iB+vefMBaBB10JzkM$QooA&ebld}elzuJsNX>S zTI&C>j{gF$bp4b1^`p>J%hYeAep6z^%C}IzgSvnITfdF^?SIs#ekb+2soy32QLOHv ze((R)xu5#$)E}V!BJ~HUKSuo_>i>`W!?yoOC{us*k6tW!oVpkM)ME(f$;5aP3iYR` ztMgC&nZy_MXKm^^S5nEVmiP~tquhRj`p4AYwEQjVIt-2a+tlB& zg?Ekqrjy*e0A%??t9=xhM8mhAB)8N*qY+igziEu4{y7b(e?k36>R(cixBDyV-%8hvwh5l3bf)(^TJrRXOb6NVG@pRM@|^ezN@G$QlO^2p$!SbQL+k%#IW`?9AvUI_F&&L*Xm~$$#4w3uV|p4hjJ%IDXQVL~ zjhSf7PGe>ov)axqi5>IVQonOZs8HriTxrZrV<{T*&{%}VyfhZH>wGlkH(5Yx4#l@x zu1RBIqgSCQjf>LI=3lAFb#WTn|7*Uagwk1>#xkjJSsGsa`JWW6Kw~W$E7EAtScyiS z#>zCZG*+>ZRgJFy8>;_lX#Ia`*}s4vg;JnVqfw+$wOWaW#(&H!BQK-ddLp;wCXGIg zsQ)|GY^PqjGKx0Q5JJZ-H zKG_y`M8ruJ>&&I|+ zG`#<};lcmLe(I?<_E$GG6vPj-+TV-^(KwvO!RG4!n;c5RgFn`{*(;ekO<}XHskFy?lAHAf8#D1p7U*J z{#VM1-n}$D`P;aEB$W3DX}m<^AsSE9(D`pP9-;9#4Uhjc(!qg-hk#^6^S?BnOd>$T zQ@{;P0jH8@XgsT1sXa&Ic?bPM>gpqaWaniX@6vcB)qIu4YxeRwjW;A5#raKpf6Mr` z@f|tI_N`IfmM>IaLU=hr}EEfd|{_AjT!=ylj8ObjpzeM zvDf+^EgFfjh{pfY_%0bSh!={+4>WhD@gvQdY5YVplz)z)1C1Uuyi=_4D~;b$iMIeW zy#=7@EdWufn-kIW!9LB2X-*=K%}I@u8FikCiPwM1H9h~QITg*RQ`c#%GcC>OQpxl* zXHcBwWgN{JwE(6$Qz99qr8$dU{N}7QXQSDsIXlfzo`dEBH0Px00srP)%8KUP8Uaq8 zMRQ)7^NGjoKr`I}CY=SX83q?lG?nemMQAQ<`Jyxzqq&6n;)ykyOVV6Qd27odq`3^u zRjjkDaXI7i#uaF;7{grVE74pz;TkAwu1d2&bG2}?>*~gg(Nh3TO##r%2aa1X@}Wqx zL9-OMmY0ncn$=`#gJ#VVjsK*QrX{UJLbF42Gn!qR>(T7dT$^T}=9<aP z9sZg4vT&_Y>1ulXM{4V8D0>u>^{ul3%_Nx{`F3Mxwf6t|c2g-U^EdbH7BqLFxh2gV zXl_MwI}5iqZe!F~Q0jO4Kkyw@g(?C&)BFp~U1dKGSp)5R*aT$7@zd7EYvj8qJ96DKt-_ zd9u=IorKUlHPt-b9yR})I{lsIeKgOa8F_m)%`0f0L-RbE=Z?2P^L&~YJD>|_UT6y! zjkn<2ON^J&ylmWZUGvKWgVVf{=G8Q>id$WZ?KL#7O?V*9>x};h)DUa)dYX6Ayn*IT zmfsj?UpLddC5f};`UL>Z+l;px?@*S?;9WHDF}eE>`uA$&R<8Hce2nG;G#{qQdYup&7;C(d2eK(tMoeGc=!|`E&?rK1uUmsllhD7C}d8k<+s@-=O&%%~xnXZ^;Wu zG-$r)+n0m8&!BXns!fJDOjZe@Qd3`4!EtEz$oUO}-6G`TqvDz1X62FIFhvfBoZlVO-yS+T9eS4oz|qZrlK_&t;uPTDA(q;&FD}({xb@37CX&qoGtM#RP^Sc zH7Bk4Y0X7z?vRYq-kOJ&$A6^bU%-z7(iDI_E<|fNS_{)!f>x~mUyRlwv=$B5#De3n zcoK^FlC+klwUoS%EG$E7Sth*wAP?ipw*>Sq*bR?qE(?)j)Q}=BQhGwR+UywbFvzP@?3wb zL90!xNy|TfjNY;|@7K>RTRsIS`PpTwN2^b3NXz3tp%B%h9&5UuytSs|pz$AFQNgy> zp|ugMbrT7#^{lWytqmlR-wl;g#e8F0JJQ;O*5R^1V{+L7Y6mVphQnW9v$axQWwf3{|{b?Od>i}AZ(mIe<%=z9= zOP>JF?Sp9@B5RS5NU1CwM(apghtoPjt8+shWiLKY^k|NX+tJ3=)-kk>rF8jIL8NNN$(LT-SDFB6gW;ogP@3hWJxFV+fIfvG{ z<0Z7tr>*7Iv||0|#I!C{pRjcit&3^BPU{j{_tLtQmiqRzyacFqIjt*vd!^b+$<_b& z`+E(oTWDQN%X0*+>u97lge_3eDR zm9_be3(#KBt_!953tO%;2`yh#MEZ--Ufg5}$ldzsiKX}&D&<$}{*K9Okq zq>{5D?UmF^Y_Cjv73ET_xoSuKU!=X7xt0LY&IFodjXBzy|D~>;Kzc|KHx* zn)}e+cYF+K??+qPwP^28`vBTea@_xKd+~q!pfo=I1ZevcK>KkZ`1*yhok_mf9(F9;1CKox5qDMrU`wM5og}gU-~n&!qi2 z?Z4B$p7vR^FQI)l?WpQ?1T^h)X`iQ^AYnN!NiLv$5$y{lOym;kyC9L!zLfT5w6COn zIqfS(@{!-GX#dkjt~Op{yw-Rf?SBN(m6%cv+(7#Y+BedUnBPSER%_l&+n)f|q)0vFU z1a$sHXTtyZ>P#fp&cw3NnZ!70;$`HqgN2jRnZjgB$)!BiD2UE9baHg2rLzc~>FCT) zXL>qw+w2T+3)gn zR;9B7ot5m%{eLN}OlOsmg;7FQqm!}D>ZxDt|4MmyS&L4APLocNPK{29j<@}G%72JS zHQ{vXHq}VHo44q6O!WUplP;aUNiQ%J4lEhc(P_-)YtUIU;h{rkZ93c0S%=O>bk?P_ zzIE11y>CFrJ^%m2d}BJB(bz3~R)jp~+2;bxUo%iXyNar;=FVT5fr6T%romc3*s&BnmgBPDj zitX!kG{R5k4da`1-ii`PN8>*sF@KlNdr7&{*SgC52Xwx0sz0=^kLY|XW!d?}_$i&w z5({)9l+XWQ?MpgeJ2GEIOsxD3oo`jN;x<03;~Sy#zjUK&{f_R`biSuM8J!>KY8^72 zAL;x==Qlb(kK6hUOMapAYr+HLqVv13JArY+Ks}o9+ntE6&s^>LXz1>w@%0*VVHC?Q z#>wew{KtGsx>F@wvFc8v&P;b&y3^^=I|D7Bf$r>d$BkaS?u>M28s$cJX1a0y=Zi{a zcUGg9fW{X@cMiG{r8()&=eW&9cW(JoJm;aS^`F60$^4ctU|f*yLdw8ytp8D-m@h(i zQ4Rh?21fabqt&{L(=F0nf^LrPl5|(0yA<6O9S6@8beEyK>}bn#*W>@)<>{`FNCN4u zM0aKFcaD^L!#>?r>1ODzMt5}$dPFIT2*m#7u2(@vfl=i1blv%Pd2o)E=(=y;Ez_;g ztt!sSkQ&{35`SUTC*3C9b?LU~u0^*^ci^X>Ex>fU#-6bsm_DPSCGP)s*Py$mN?Ou` z?XFFC9X+WSvWR#pMeEVsn(q2^HMUQ81G*cIPTuQ!3ZT0&-AxinD&NeSo73IG7Pd_C zhwfG(w`3c-+lnjg+Znf4cInnz0OEAGuFij;yEDB->Fz@JPP$Q?PN2Ih-DBwfh3*~> zWjDIJC#HP6C*4Eo?nQThx_fITqPtI6rn|3E$9K@(Phmyq;y(Xh*?6Ec^KZt3j0YPJ z2~-JDWDcY2jR4&v9M+M>ql{hxI(kOO()HpWW!Ld4;ZaTLEjW?xg>-|QMfW7Sr_w!{ z?kTb#vnLATe!8d8J;Me)1)R*PbkC&w_whMQ_iR7DbLgI{WAj5N+P?02bkFyjb%CC8 z6hFOv7ty_g?!|QfLH826S2-1z(!DHs3+QSK7~L!AUYSTz`PFo_{*&&tf!1*oAW3BD zEp#;~WQ7}yH`2W+ellXNBOrp)y)}p>w;6BOZH$IR=~B+$MfYpEchh}=?mcuLqkAvi zuzw%jha6($#sl)A80rX!ls`=O5gU9okqD!#DsGR{ebV|*Bu;cS{^QJlitf|adB*7a zzx$l|X#B_gMY`{syhQh9x^LRrD|BD=JNue4T=99`=t^=Vd5iAb)_KSHuJOG@-~0o* zA2}u;rkVUP-LL3=LRW`8)BV(_{aFRLg==tnbI_ZY-kesR%Q&}jo0V&W`>8+L|-|`H-7QHOJ2E81;vU4vi6!c#7imIKIt0jdv;uU&T zyXyZh^y-OR7>!!5nM99Xo8G$gI`l%PYa=}so?hRjC~OWa)P|{4vIf01wYXFvu0?Nc zttRcQlSs_hQz3L6NN)prf2Ow~z3u32L~kp48`IlFc^JjD=gHsbAoVtjcbwkl#x0Cn z>aAB+c=ETmjrq3Y>onhP?8d>J*m7|LN^RPn~>v`UIfo369==^!88s7^9v>??8HgOZh?8Jeb}g<8|mA zM(=idhts=+-VyXprFSH~ljt2q?*!`~P4Af0!m;#@OZoBPnsQBH)AQ(ew5`39>75e2 zg;6Pr8oPHIy|bLm)9IaIa;E<1q^$URptvlYP466;6+f5WdGs!%cmAlI?Oh0P1cq7rqb%ZcWH>0NESMvpZLm?YOJ^Ys)w1>69vBx6->!bxWLBm7EyayMx|S^zNj0AHBQiY1p4$Yyt3qv-rJf zMn$1j^-k{rdJif&;tv@;1<+FyAZ3-?aC*$-aVx0ur>FHl^!_EaQF(Zp-fQ%pq4zw! zXX!nss7BCw#qPKA3&t1ey_9Cx%a*)id^OOS`8vI~=)FPjO*OvpX%J;EX{mc})6=Jc z_1~rUp7q~PteJmEKZ?yq^yBsan0|)dC-i=#_bI&}=zZqgj(6u9dY?N*{$%Jy zr1UFed<*D%(EMAYyOBNjQhMK6q9!1D>Gb}_Cspq!dOy>Tdi59jQ_%aB{)E=l5+HiN z)7Ro3UGbp%Zb$kP(VvX|#Pla|OY~p#)j;Tq_r34+KO(CCQ-vw%Pep%RNa#;Ze;WGJ z)1Q|9bjp^*uk6nt9)(J3Ga6?~TW|I z&nxedQni?2bAF>c|9v0+DWT>TLxFzq<>)VBoki&{VX~M}tCEta(qEGPQo5DjrH#wb zkH!DWoIv`^(_fkX3iMZ^zhV;f2;+OOzY6_T)wLd3@D{NC>bi9aaZGabH>01YKcruv z-=tquh1oCBuhK6kvwQR_$q{+!mq5INMDD)(LYHM6FHgwDJG|;lGA*9I{hbcy*U|#z7I%)UO|AhYi^k1j{0R5-wKS=*EJ3VB4n7-Ekn?Fil<1N8c$>a3( z^GCbt|Bv+lMgOVsI`sAPU;59|f06!k=Ff*KeU1Oet@%qLQhS;HD|+bSuhM@l;m-Lt zEPRvx2lU@c_20Je9pk&k_vpVr-m)bh(*MXrga1Js;-~a~r2iTHZ|NsNe{P*Gq@d8h zr2myQz5ZX4ZxX+DjreO2!~8q?-&@n?zm4qw!~ps~Tj3W5f1>|us{b4P-=#m8z&K%` zoFth@`h$r_ngdS(3^WD6z*_+1Iyr;c7)-%nCI(Y7n2y0zi3J8zGngjj)2243x6K)h zIXtEQ5s@ zENS7w#{Xil2!lm~+rnZgS)9QV2^T6ROBt6oE+e7BUCy`5Gg#GR1>=egRhFyVHp8a4mRpw6Jlpz$9CMXAN0{RjOn zgEbiRtlu{dj6>ttfBedzhk!)ZX0Sbjbr^UIXRs~<@BfXLbg({y4dQLp3p?15fd+rf zH#Tm=ns$HtxfQe`T;QYe(w-%GlBj_G7pVgZ&vq zhzBq@h{1sjeE7dp$%hj$oQvVa45w!} ziCXaCq{hjNFr0$n;Sw6dQ4x|46r7OCK!-(WU4Ck?YUgLbm`Hc%0wfH}X^%rKin1zZk z!$lY_DyO)t!%*`|43}WIWGY#Tp??0QcTG;qGW?j~at!ZcxIDul!xb3z8Lp@*Xt27bEHYe`VUFQy3^NQ@AGgS@;}+c{kYRSjV_a*PPdLLuN=ghH49g6w3@al| z`KmFjk8VeHnhZM(TMXNhFTRj2X?7X*Vne}5S)mM+vGJtzI3i=$82x-U28f1hGF*${ zi450fxEsTD7;esRUDX4_^%!o#Q0spfy8aj0(6<{gROPStS2j1ba5LS;6_w<03x+#d zxFy4_81BH(i+_gOM9}pg6D1C*y zJHta5?!oYH4EJOh)%#uyJwG+vo8dmz@%*p#Q(yZt^jE-8M}W%Oe+(YPP>X*O3ByAf z9>wr5hDU^up_TyIrpEur`(=1E!($j8J6_1pp8!LR|1i{dfxUYia(EKMe=`PB(f8Xn3Z%#(!jFWak`)S1>%6;YAG3a}ehnHTc8u!bHtngFg%} zFj z!ti;9FIuksza}p+d|AHyb?JA$U|6}5oG-*#I*C}uee=z>Y@TVZ=KO28x_^T2qo!=O0^OqDNK4TL~IQA#T zrZbs{v58G4VQgx~CN-bTn(6q@*yM~&F|sx`C1X?l!P+#|pY{)u=`ESTI4;m+M#en; zqo8MIY?jp8tc=a}2fuSLwjg73YOHe1|9^~c-m$s$wwI67{Vr*zh+ZeIxTC=D4OS8|| zAmOQGOn#N{H5uEJv9%c6p0TwV+mf+$7~6=kb^U18Q>R)M)@N)3wQ*w`CX!UXF=N{Q z%h;xABsa7E=8SETNbI^5V_PR7+I1Vow$+^b*mfFti9W6P4vg*0*p7_tq#@aeo|^;4 zc45rx973X)?8=xsz+>9~#hB-RCEr6{B-x9xBN^M9vA;34kA!mFmobetnD58f{?>Fg zIHram^?MLwM=*A9>dQxfj_C+c#tt(cu0k6&jf@?||L5u~pk^nMzK`?6;a=QrS==2K zcjuXzjAbU7BqJAhdvSMI+}(X~cYASnU!28varvtLnLK;n@0>aRQ(awM?bV&?PG;m} zMvi9WBu0*rz_EopdSGI%K$Qg{BDzVcvZcq0?YXUy7&s37L zd=u_^&SvDCfR%_Cssw)_g zKY!#(My?tf?UAb)(f)tLmjFht6JDRkI_7ovyl!OVCPr>& z4o2=|M`Nt zjQp=!=?USJqwS{Hrx|&M5ncWt=JlL%dA`v9A|rYWV8oAr8Ik{gL@rG$p4ZWD0WspQ z05kFiBX5p&JtJ>3@;M{#F!Bi_?=tcMBkxJFl>T87eEl+6CG=DzFFaza}IZ2vEBc4L%Kyt&Yx1GD4qX$LiZizVwBtkL@CQTlyv@Ea{mt{Ys_&4e;Z0W zQSw*7C~YU)UbsUcuw$WcXG*(M(&hh>KK@_w*8y@dBPi`bY0o0nUPY>X#(Z!IC2OTa zDD6w>KuY^jI)KvtV<-EoO(;j}-^u=JKS~D){Slzx94gLXln$qK0;MAqJW_ZRrDG`_ zt*reo;EgHzIK>{H2Mr6p&98GQoumvZ8UWpmY_bD?MnY#+&YH zO4oSMMwAVE?~Cgw-Aw6vN`BBu=?0H=B{x#?m%ltXQA&@i0FM>iRvYe{6D1^De3;tu)eQQdUZS*Jq5V7Hz@r= z=}k)CQF@EgCzRf%^sX{`$KJTqjC+sL2P*CRg(dMv05`d%4}~8IKlavkou5+roYH4* z6HLt8=L<^TD(YYEKq!4l=_?D0{#y8rp$i*xW*g_sO6Ka~GM zSxbP^CaLq^@*;)IqPaZf#VIc@`6Yx)3ibWZvVZ@R@-jmI1Sn;<{}NciP{fLqS5g&L z7Oo;()zAgJ`m0l3Q<9c^4QJYl?YWy+O8CJ?7exhBba-aa`} zZWe`UNvti5)D*GgJHkYm=BY$?DepnKM_Jc<%6-a%BFAx*w~-#b0<5Z0-k$QVly{)K zv!ZsSEZ305+Jq|a;%W0H^?L0_dG}nK^4gQ~0hISrLf`*W-iPx3l-&R-xG&}XM$6_* zZxg-z>%s>~=3vU&{Fe_^>|w&gg+~aFG|bZu4;{+KP(Ic75@~ouAb0kP8(jXE}uc!eLj@W^cn5M*_6-mCnFnjR(I!| zCp=$x0p$yA()k&RZM>~)E^smBODJDQ`BKVPh;y0n@ z?x$j9c!2W5lpmxl`)|!+yD~4*BUDbM{3w-)t%8&vqx`s4fwKKxqWpwc$AeE&cKa{- zY0A$O^s|(olb+{=F9=^WbOG1@GG#Z{lwYCzD&@B+>+(gYrj|f28~|l|LitMxe=7V;_&Mb-ioE1%^TK?ksILu+ zsBgvjt_Xfl`QHU?GyR90Hl+Mh!T(uFexdwp!TC*`-*dH;|D-aZC#g&@6sQb)Q_M-I ztU+Z`Du1Ce8I^gdOipD^D!Tk%nS#pnuB|d9m8nEb?W;*@U0Ft3Hmo&^xWuDO_;>;(UpUMIv7W7!@q_Pl| z#l-w8m4!ttlE+e6w8&y{Dl1S~La|E_%lRDqB-oo64qC){%yFscbA_J>mLPHc;9P^R!ep@+^j} zvB^-OxAta|-(0u_l`TbVH5BkNj8JKbS)x*=Qm3N#e?4tLrCR9pBY=W#P|@b!W!(Q? z@Y_@(Dt#*M|Ci1VmBeDH_$y#kGGSNPGaN7NfXX;3J5bq1vD*r_%Vnr+pG#8NQEGP* z?kv>)zvBDJq|0_cO z|5Z6y^zi*((T7oy^WU`{LFLFo{wOL(=Q<6k99!^@Q>x>soKSF16zA{4lc?xx7?o4T zOM4oXE2x}KH&D5gik}5j zxzSL>O~RXnw+L^ga+?VM^Dhy17#4KSxtq#8RPOVmgvz~R*Iv%9NKv`p_q3G<3@s@7 zAxkI?4^w$Wgvq~75s(u z*rR+1eM(^V?K1*1u%A=0_Wy#)_f&K)P|^L*itc|_zV;nOPsJ~PiujX22MvMz|ABvD#`(d-E?|`n zCM9q;KEY%JlZ%l5-#JqdOzF=r!BoPjeOK@NX@t`n7M$tDnL#)PyKJ849?VEElMOk7 z;__#pBLL^jMld(Q?1khU1alJ1pxmi?c+|Ay|@NDZe)9VoMtuO|Yy_jbJ%~a|xCw*pXlbg3Sn4 zB-nspC4w~wR#uW#2v#FlHP_}7*0c6cKoH0sWFsM1lVBZ!wFuU>f#KV~d`}XrOR%0N z%)i08p^^- zu7{vX5E97$6V#=);bn07W-cSTMd1D)|9RuY1YLp-K}wK}ib=BY{{%gP?FjmLDuMyQ zIO*S}(62{;VP4x4$p15JjhzVgC)k-_Z-QOafV&d-wx3|=0wUPM4VQEFB#`qb-&6;7 z|7TwUHLSELQ@8*2iYUPW1V<1YNN^~@LEeC_;a~#a|NC!Pp2G+Z&r9ykkl;vyQwWYC zIEmnBf)kbM7y{XU*Ki!c@ybZ{KiA{@LZ{R20+P(B1ZNTW;ji?ZPH=|!XXYHyXA_(= zY}ldLc?6FWoKJ8g!36|YO6)>{iwG_wxY*PBsJKLUsiA)wD7aj~D-4}u+v(scakT$8 zZ)b4L7{_Y~t`q-ymvqhz1pmls@oyrym*8g6w-DS;a4W%W|1F_er{E3(IedaU-B<BK}B7BwLH8+5s>UCFQw8y?l z@EO5d;=fJs0l_=sYyWS4nBYAE-~a#jX(;%oUkC|4B=|^@9}7Pberh;;)(but=L;Wu zb{y}s=}Vfk6MRK|4}!0$-l%eZL+~xtCc$@9%{Y8dby@=1{~$NlKTw^N;76(x5d0)P zKf6v>_>1sYg5L_x?*wlD3H<)2Glf(qq^gCZD&ubg)k*SLs*?@VR<#6FeF>mCg>XvY zR8)QcFWT+D(Nw3Sx&+nfss4qkjDK|uRX6F_n?{Z^3TL7^vj{i-RA&|H{5LP2Gv}ac z=f6hy5d^+k1l;Q~VY3jnW?k}O0uC*1!d&LULZ{!{hK|5V-n zn|X2c;F45z`Mfa=` zM$uM&hl=W2RM%D#UH+5?s_RkRimHsi%WNRY4TT#CH>SFY5u!Jxx>-SQF3uKIw{*^b zTVQLdBZ?{s%O2~RD^vp!Rbfr&{vWChL!U=ZhgAQEYD;um7*XAZs{4NwlnbbuP?i73 zlVsv|srCw)KGi`%k8{EsYFmkIM|C$5+f&`4kl9h3orF6JccHqg$NqP0>`rwLMeXT) z&v!4W-J9w@qmoqjrFs(8{Uo5dRy}~~@d_SD)$KpkgQ*@V;t=7X!o#Q@E`>)7GaZie zqp14+pXxEfV}*JJcv!C!l>9_P5&jB*h?9kuBak}sfs^?KXQ}kKVdA6Z~ z=TJR2r^T25zj}e_3xyX6FE%uJ(U&^mRl7`hIn^tuUQPANf`640wk@e%BY|u40YmjV zs@H20-5~tOa3J{O(5Y!_sqBj#PF3v-+6QJ}$Hz<^QqE zjh_2c#uWc)s`~SnsviMUeNOniFSxoJN%cjl`VZggOH_6Fv+9>WmG)JtI{dBb@VEL# zo{H+5iq&7hxXyQ|eoXaUG5!9h2><^Vsvii=7iYBn3#6g$e|iZ&QSeit?tfN4FKVaz zpH=IHFI9Kn|C^ZTZ>au4^;@O-&Y7;$mH^%Vtm^(})%`zIe-z69<1&8#Q=DI^O+wW# ze=6i(JM%UjDJnW-}7C0R0FkDsjXI&YISOUYT&U# zYHLzki`s_N)^?_+T}QaCa6RGrLO&xA;s5_aO`CrwHnE^ueluz%YMU!|3uk)lmejT? z>b12vBOc{FTc*~aRw*O{YE|jc{=equzaHhi+@#i_78a5%BdE2hMMaTfk1Fa#Ev0q> zwT#+6)VkERlYEa_ztAwCHcpzi$#bE$tw#;V()QGLptc*e9hFcXa?f#R1$Uvg>v(zX zE~fAQsqHD0|G(z`f7j{!|Dkp?wSB1_LTx|E?=RH-AJ=>!wS!cigYz9kpwy$@rT>=`18~pmrOze^4{Cf8%(mZl>nfeyH8@f8}qdc9-~f zP`h&&)SjaDbfMGizg!uHUc%>03AN`7oi9>*huTZjUZ?glwO1AU$}l6Bf348-2DP^o zt1CdmR(-qB^Deaysl7+-1Lb1&U#nitjQ=oqYG(XR;m6cI88VBurS=)M X+`GUF` z$$wG%gW8wWtf*g6`*(YFN|nsQsJT_y1)M`9DxIBmX0{pQ*|J^WR)_1$5XB zwggyVe$Pun?N91cQlEhOq|_&*J~4G~u3_!!lQ^v)^~tD1ee%&*BdAYN#7;$hTI#k; zsI}|UjEYg8uFy6E_4%lep*{!ovD9a#K4T$2Qz0`8_1UPK{U6QO?Eh$a=A`Z$e(G}x z{R&VnNqyd2jQaf47o)xa^@S{!`hwK;5SO=7{jby)p}z1ip$jaUCzQg)sV_x+3DHZA zC$ltl_xp)&_J6cI%Tq5=UxE5M)K{dwD)p5lW5z#khgEW6>Z?)z8}-$5z6!Pm^|h$4 znF|f3J;=wu!uwa zR$={6;bDGH&t(p$end`-f0UR<8;Y<`K$y(2)b0BZIp=ulC%B`-`6p8UdrrFpq<%8> zGpL_ZNS;dlG>M&_bBY|#6!R?VXH!3y`Z*qJ_tRYAc|%EESM!&|&Bs!|khlJR|e`)UOxbAhZ^~QN&Hcn+-+W zLS2WyE`OUiw|kWB{Ofm8zsm@Bu-ESv-a}($>i5#H@p&J0Gky0{f0p_K)E`#X4+?b( z?3H?i`s36er7q`>Igy4{`(KIq{-64jLf!wVKP_74zr(sbNBuqO&r^Si`U}+k<3C=_ z{5DSgW$JHI_sgHuUsbcbCVXA^hD#1}d`mL^{;!C4gnk#upPuUPQ~!+m2Oe})*30$+ zqs{t{gdYn(5q@guVjlZ>E-%`Y{6zgr>fccJ`#;pb_Ei+$Ik2U{Q{b%aGQUAq*9{cOCB2NEKU6+5H{*%T8K6e@u<_#ixVj8p1n1sd* zG$y4nEse=&Kx6V;+ptKDDQHYN)ZduOb7@RXL(U(|)P`TfU;Yw*dMDI(G{(>vOJgSS zXY?68l$kj%A&psSEI?y68gtN?J&%>PIh}U3{s=&0ZW{A=yEW$Z_H@pC!ubuwUy#P) zG<1OOWm|}by3*-|X)NM9!-g*ZIA<|e?wloP_?=H0OFG9!U}I?-y4cf@3#cI%P(v=D z#`4Nhj{psS1n?xoLast%ZyKx8h-j=vV+$Iq(^!v&cRh_Y3b8e5tR>Fc!gYk}=CPvJ zr?Huc4b(Lo3OAy$v6!2_}rL8oSWgIghoH(AZUCy9swUVH$e~_Z03mOz!-BXq-*s ze`p*)!@vJYV?W{khIyrE97y9Z8VAuhL{SHOl-K=GCnQGWa2hAmI6?yc{uhm-XdF-D zXun_DIL1)SV}-{Vihn{uoT%X6g(nrlr_k`n1RAFbPor_V%6~>)ei~8e+9yq zt;XHLdxW+G+(+X9(f1qr%Gh|&FkdKXJWO+pvVMfdqckU{@fZ!iW>4dB8dm<-X*@wg z?wy8?02)uxcv=Gb{+lg8jc46ddJ^~l(D48NqVXb)S7^NCD^%m|NWO+T^Ig<#;-K~DS;1Zd`IIW8eh=x%l|Y!q4BB9TZ?)7 zeLrxD@z zKWR=UoL)GCVcx1V$NF_vd-uow@wqt@%~@#9>`^w-Y}eYH)$7}w%}1JzNgI33IS3b{ zIVa6yXwF4b2h&Zx0??d?rr-akIiGNTPvXG^Xf7zi_y08galo^1dSRL|%|&Q#NOMt| ztI;&&E7M$@=5jQbpt%gqCH+l38?nu${Pn%2e*#*>vN>P$^1>A?N|GzmTq&n>8Jeqz zzp9}mSEsoFO{>njG}rJe5KYs+j%3!7z}k62yQpum;;bk17Z3eyDbr&g5b#oML~~=B zBQ!UmxfRV#X>LJtGn0}0=F(sdwWaCtRL1x0wl36`q@+xn&7-ex7&BJN>R-fh(G>;THZ&@SGkF9TAyAsc2fV)g#Daw=5;i$r|Dn*am(DaOy&HsNn}rCwmvp*rs+3-{E|#l z?|=O=k?7lL-bM2cns@pf&p$L_?+-Tbrsgx`tvqCP3q{h#LW{*O4%(tL^LbE2O&lwo;6!56)) z%-}a)rfJUqiDaW*Rn%)V-xxdPg*0C`^eetY$+u{JPV;S=?@H_)PvyD4N7HKezSY#P zGc`XD(+{{s==`_&G0o3tej?7N`JJfYr#W217lf11G&}r@8qkh_zoPkXnqSlWj^;Ns zzx9Q{%5V39%}CmjQ}cTtoc2G1O*3de(fom?U;Y`J1m584N18w9G|gWLC#3ls&EH** zy+zx!^IyY12`6xleVsM`pjJ2$;iQBU4@Xxxi4*UxI?ObjoN#VJtmK4K5Kd1xCE+xL zQxQ(>GFC!+L&3&FI4$9HUfMtIu@6dkV}>&jjwKx9GO7#VjD&M}gM>2)XBN&PoK-lR zaCYGw!Z{7SQl`WPsx`Q4o|kYD!ubdnkj(sU94yLaYB7VEL?(cNq>e4mm=&CE={-<;WC6<5-v-)G2wEA>kuwasOOGw1;P~xS0!9Y z&HGovl?hkzS!p#jG`kV5M!32MZT#En7Oo-8>9s_!Jzng(gc}g9=NuOK7Ye~=~_ST zM`r@U{fWj99zg4T!UJi|MtBh6vxEl|UP^cf;YEap68d*_2oEDX-2bC9JVJOR;faJt z`Q=Gx9xXhE@L0m*36JyPw4h$&^=3RF4-z_4k|zz`558jIsN~m^|E)? z(}d6Xx{&Ypd{R6|%Pi0Hw9Ht&K=`{X!;6G35q?hiGT}c7Um<*(@KwUse6;w`(*1uY z-XMI_n1t^C@xe9}c!y9gf`#vCu<8Df%YWc9KKwo;{Fv|~4=NSmCxqJbhoAmmRbLQ( zPbjxi_@zgAc5(rQUlV>~$q9W4Ap9;@CE8l!2ND1AmC<8=B>X8CApE(|^9$jx1@pH& zU&259EyeIpS`+*GWvvNlO=yJZiOl^dViMt`w4gN^t;xN?tyRtaWm^JIHHAN{IWZNj zsa>*21*>`#-c6^}S7NG2!AqU-I2fYe`zmOJFHlzWEou46S8z8CuH~lEwbN zwIZ#RRQHvK{@a%J|1IDDi@&;*{7tw9t#xSSYS$XO!qv3aHgugida2fYc&t4*duwk(YhPNM`gfdcTiDu+*5rXxZP-NNo%XI9X*1z zwx%^w&?Q>sg08sr=uA(mN-LsOQ^LBiA#4@`p~PCW{Qa*yxddWihgKqiRG107!k%HF zWI)ThW*n`ZY03Dv-1yVda?sjd^bW!ug*zGM$!YCEYfoCc7Qx*lpu3#t~lK-c5*?96-(7IZZR|?(# zBjOrbH_^J5);|=yPI$fW2E#(^#+;^gvk?V-E3G$a-A3zmTDQ}Bjg~(C*1D6HmHaMR z57N4u)_t_@p>?k})W661*2~-Kep)`5{ktM&2khEp>mgc?(t4PdKLuF6X3xccjFz4J zo@MU{cyCT+1L+A`&(nI6)-$x8qV=>HD8E{1dZzz_*0Z#H^Y6=n{oGuSGeu%{?;qBUiFM@qD_65KNZ?;)~2mJBDLOd4L;Z2qV*1~x25o}ih7sUd!E-^ zH<~uTAKvMYeMEaoS|8K;nbs$?zL6@w0!r&MT7Lgi^cS@B@|W|! zq~-trEB@CmV6+>nZ-w6pzZd>n_#fd9!XIh<_8he56k%?V zR}?k3i+R+%v=5{`AMG`0&+q&8_5!q5qP-yP#c8YcoVgI~zq;LUdST%rv==Qn{ujV* zG}=qhUXix;|Lvv3S-Ox}MyZw+E=PNL#jcRYjw0=qO+YfM2v?=Onj}{j{%t(THEFkK zuSI(kHxcc%X|F?jJ=IP}0QP|CO}akq4ZL&P8wxk_&UL8fmK+1k|Z`Od-f9njv5_Bh(s5!=w-fwt~{wzt!0ESJtI1tHugN# z&T1lAjJEE7DvI{*v=5-Y2km`n@2O_lOSrdiAEA2;Ja=!j{iJ9AJm_e83@sPiFtiV* zeJt%mXdh1dP}+xi`4y!y96|d?v+%xKXdmTnQcrTU@E9Ml9z2frEwqoPeJSk|#{Bv+ z?GtIALHqB%cQW^5Tc3bvpDg+m;i-3eLd|fXkV@1m9($&yzFNeliJtNzSe0w%dkU@ z_I1PW8?YE4KDC-?kb`EDD5X{KSuir>3N*C@Akd# z4DHKowidLXqW!chwBGcNc*Y-)+s_K0^Cx1j;|sKZr2Qi8PiVhH`wiMJ(|%p{$M65p z)?J|XYh#!C%xjl#BinD%exLSRs@>aO1#@S$-=Y1ki1%`i3g*rq|Ac1SM#zWm`f&Oq zp&tQ=_>{Ia#b>lX_aS7t_!Rzv_P?b6OW{|BBEA-WLtDnb?Z#i6?_IzXTA6?FOzoXJ zQ{@%^iD)X?Khyq=_Aj)5^&}=>n_F*?--)KA{fD&@?LUe9o+r@+L=zI3wK>Zqz1Gg0 zglIA%v+916(7Pj=oX9_U;f?G9Q;ePO5sxzE_6A=xHPLiL(-2MT{bCETEz_1`G(FJ_ z&e7IL3C9xsKr|!Ktwb{sRf%RM+L&k-BFkk~B3=Hs?uhLE&sp9((Hz1#g>wn#CYndY zyu$emMa)mMfQSWij%7`>5Ya|n<>;?O3ll9*vM2kvtG2!Aa|M{DFDxxKcmLghK zQA-oq#~(iQC?S#m3yk-8v;vXUaYdq4h*lz6*{4q-rnIXP`Tb9#)kifDtwFTDV%H?{ z@4pePZLvh_6#CaCT5ml04Tv^0C9XNwFS|;#2~pWQJ=&CLGk+F~HYeKJI*4csBHjOY zdMlsH)@x3W5S5%(KN3}l0)Ow)hKF^K_g9VRGNL-sF+>fbrcWrdoKdLcEuzDT+C)1N zMMQlfIe%Pp$G03&B20yuuq*5tO2dH2zwJ*nj>yk{iDdsH+5brPUy_CVPDBR~?M$>w z!P%8)ZzBKrKhf?5a}T0D#n~(8h~7u~<#Kf4eTnunj-vL@#fT1+jPL(N98Bbw|0Q#% z@UTMih(hK_qN9k8&iO^`u|(QzN5>HzPjnv92}Gw6ok(;Nk(N}O1wLlv|Bv+kuMbW? z|Mev@I-SVRe2LER-f_YYh((-DB>%iK&voWd;C#hiAiR)ByQWC{|H!}pJd`v$ShGSTZquh;{%{fJ&AdM&5NZkiCiA?BMz?-RXM$hAG zHTssw`sF*K@4ZsC2bPbE=s$Ln;*-}c%#XxJ5dB2F9MR9jX1;zQo}K7d;@OCPBc74y zcjC#2{vfs){imB0OBhc;JYi0INn$@57GLMT@uVJf{^Z0u*o`6f^Iu{={1q`3vA_RC z?B9RL<;9{-k_Le`t{9K`PVw|;a} z8P7#LH}OKm^GJAJ;sr&_M?AlX1w0qc5#ql%kw4vdF4|1S3rlPf;zdR1nLS?I2aL-s zA=LdJ&wXhhmhm#ga{g$5`N|tFPrMrO3dAcDuSmR-t%g?Mv5VX6u!dTNcvU|EvB8#a zX5!U}BjUdiw~5XF{~)m`*_e1O-}%IA8;V$mcwG_e*}py!uP@v{xS?<(Ll^egO^7SR zn-*y|Bi_8Aw;7c=5d74_qsMf?Qui^NY7`|&RE zQ^ZfJE1wZQD}2to&uXnPL;OM>Bz}qbb>f$aUm3=_hF6Jo1R!~0YuGnO(<+O%i9aEJ zhxk3>cSki7zfb(J1U?}Cr}2qD6n-=+lQ%x`r^J5ehxjwEsb~5Hv98?Yg>=qW#J>=K zP5d9?Z`5Dk5`Sm?s1fzOP!Dc0bi{K0#6QX|{UrQ3pLC*s)fE2CE8@z3C;mgkpE<|1 zbtWY3(V2+k6gm^rd7jQBbatjQDV;g#Oh#u~I+N4UHd4>abf%y)rPt2t(wT~m9|6#r zCg(`!beKQZER~)0cV?h7yZ32ljBu=QM&V4tnd!{pt6pbT;cPw#t>5hnnKpPjbNCwP z$>*Z81D(0)%;V1&_Pp8g%l~xdqq7m6`ROc6X8}4U>5GE@Jk>%f+h6G{PG@0p77;FL zs3_h4bV(WijvIeEO9_`2E@M~-FGpuJI?Ic{f{j%=EBfZyldL3MS-6UDRYR3?bvkR) z(LKG+8g$m8qq`8f+F>!)QId6iH`rNExW0F~Yum=%TegCK9-~UlmSLpXY6+56a&L_A9J>fQVw#~~!XFGAWH&n@Y zq+@RZoRx2HGz@m3vp1bx>FhygH#)ofvx%v)q2j9cq_dZ|gB8ghKYiHjL+5HYYaRRT zOXom3`>ELbyNuW309jfi4x)1eorCEdO6QQV%U$N%x#cdSbC~Y~JBQ~%(MQrbiOx}U ztly8ObE25X&^cDbal+$;Cm8y#(3aD5PNs7<9h+#U7M#=QoTcner*noe>74oBgu{}Y zBmTK`E~Rsx=<|ga2rm>~B)nL7iQzD7SLijOb2*(Wl+l&KtA+wz(`)El>qf)J^L2C{ zp>sW*yXo98b|IVHHso%jb0eLbymy>)v+x$R{H-}t^zFu1)Ex@mDbyptkbjS2@1=8} zi2H>P2p<$aBz)K~S4-znI#0?hJVxhnI(~WHJKD{~6HeO#)Om`|vvi)O^NbG|W7^Nw zN0)i75PpGV1v)R1EJEick~!(TOfm-@Ie$8@()pIoYji%P^E#dPmG%ufxsta`37xkK zRqrVFT{`dO9L0VhraUd34-3hU=zLtzpO`>Fe?~`-0A9i`l<;44z7*m6e-U5P`NrvC zWxpetlFs)e6VmxNonPqahGfSNf+hc>@F(HV<0br+&Tl3|=Xc>BLO%|0$z+0DlEmyk z;!I33NfA4#IFpe~o^uNR6h*43Brr9}3?ilxPAi;_WO}pDM(0Q}hGZ*>CFYm^Ma)mKKtV4kjxMVt3z5h& zn3&Cd8|Su5PZlLvoW%G4KGLS2lw=7KH~w~hWGj-DNH!r^nZzx>Td-tRlJ!YeBe6zaeYo11*-6$QS%*a1&SWhT|M;_S&up!n z$j_Td))lVjxp;5`Q%JI*p@@xy8+*`;v?*8IbhzprK;Nk@)7nklBu8SCZ{Xc2VpOB<}ww*-5zbsAMiLnca%CdypJRvM0&D z;_oHgn`9r7;TdI~oMbCpm%S?<6PsmRRc)$w_8iH84*0CC@Bvaw@4!hto)&B{`ksMv^l~ z&LZ*eKlrT)S9LbYIY#({kB|9tNzNm=g5-SP2_%01ljK5@i>&azL-63mB$rr_uL;a-R{R?TKJ3y?G!k9j?`xQ^CTaWyx`5~HG0tlFYm@V6vCl6*&E%D*QmJbPvz zEQt&JVCZ*u4aZzd^0Tu3g>(XvUrGLuq0kbL{O(D7ApPm5t45m*Np1f>iJQc9BGQR1 zHkWa+)K7s)C$nCbB&1XNuuP}$qT0%vPDMHmsjh$;$7-7D|6kJST#1z}ot|`tf*zA= zCY_OVdD59k=Omq(bT-miNd4xgmE2DjJnPv>=kPBh=@HVOM$@@S7a^USbYTh1Lpm?1 z6>mPDVqTH?Nf#hp&<&|9w!{`9^@qx_TlgnR{2|&F6tC=}q|5o{JYCEmvQqyGNYW)p z{m&mo>;E6qrA048>c;^dWoV|=d>ZKrq??hhNV*E?N~9}$D_QHAThC^9x+>|qq^qfw zRwrFkCHxzyzW{~W&FK~HX+?KZ&E|j z%}FbyTjX~bNVg=l??3qc2U0s1Ff=E;VTrVy^Zn^84V1PzcJ@6x`W^BO?OnY>}0fpJ9`;EwBffa>3*cUk?upfJLz7eHZbk?K$0)5}S(Fs5R!B)!T7?5tB( zOWLj_y@&KV(tnU%PkMtD-t}8W>@h06k@RlTn^dElNpB;)h4faJF|%X;fZ)x3JE`yd zHU97P>EOk_%c5M5xyWX-Houqj8PfYmpRjpEdcSW)(g%b#I3F@X^uxkOgpUdzBYoTm z(f$`^BA#?xmp+xd0ZH{02%mk=lKRfyDoFagFH-3Xq%V`cNcz(7eFr;D^D@6e`a0>W zqF?j-@Mg!Xz-EXhwek5T=})9@k$y}1HtBn$?~uOhtFz54^Vr)8GThcnjFiWj@Pk($7i1kO|WHZ|dj2O7az{4u8{ca*kxaBej}-PpZaL zui5Y*{ekpHKM0t9QtKx3xsm=%HZ$ojq`#B?O6r#1OJ#=3N8=x)+WcGBWWM<)n~-ce zvWdtbo0x1;Z_;cM_i69?6xn2CliR_B-Dem(>)U>2lubc4HQAJ8Q~5e;UcPTXH0w$> z4cW9_hAB3+`#)o6e2i@RG4I?%HUrs=WMjz2dhA>``qE>kNZCy8nOr6Gcfqn*$d)IY zm25dLWHuYw>|_g(%|SK~*_>qlzJQ|U_Uc$4x!Am93y{r6Hor3^U{PcXlIc>DafXs6 zyd>GeWQ&n4Lbj+2+su*x+2UkN64`2Go06?g<_|%B_cdEXC0vti1G2Tq)+JjzpCDxGm|A-lAY0E@ zjck4IHBEoA4aqj~Wh>iA$v5@^ZzZwy$V_^+8QJEZ*2aL%rfiF`^It`_CD~R+h~8Q_ zVyNV0vOUNuWd7!tkFKmr=BA#kMpk#tPB*+>-ku@ZII*Uz|ZMNwy8yu4LPi?Lf92nR|XbN_xn4B=gO`1G&JMtCgQae1tx71E4bW&_*i#ox(pCOe7jCbE;s&e0?~h3r(a zGssS}pg5-+Dwi`AJd5mXkFu%leCy?N$u4%&nw>{>zK;#3{r*4Mg~H+rP<9E~wPcr) zT}|fqe-wK;*%g}FR~CcnDv$EXevK1W=HXzwPV(0aZy@`J4P7$50%l@n=xijLMa^y@ zvzNcla?4<*-bc~xWHx&5AoDMOx^{0gYsfyoDI zw1>zZCVP(T5wa)9%;4z%U$Vz+OK*N5H_O@ox&^j}o$N`nXULu+^Ot`maAHo7J!^zt zvoYm9?_Qug8`+Cwf0DgK_A1%SWUu&$)$UO({~DRK#_MEntEg`X-&Etj<<{QI{|?!w zWbcxFMD`xp2W0R2AF$egv)VtdW+w1q{(rBAYQT?;Ap69bL(XSpUy*%I_Ajz8M)?x^ z(u1z&YqIaiz9IW|^uJ%F?R&C+=X(6568qQJ><3>{vLB09{fX>nvfs#lA^X*5lePA{ zs~VF1PWFcf^I2w`?gVsap*tbn8R$+#cXAi&PAr^6I4Rx9Jc%tg9)*vD?i9i)^N~Pz zD!TstAG*_cNxIVt_2=)-lncoDW4r;EK8fyFx-%LfdM3IvJ8g!`qx1-1-C} zd>`=LMd-@^ZzII(wK!cl{JTr|FzEVU09cKN^Rc^(Z^LYsb(a+`CtRMc`~O9+NLSAP zt~>voX{N8cD&5umIode+b;0i6=x$DT4Z558^3h$B?pn%jZQ(kGBG#q5UO}% z|H^`{?*xjxt{IQMj_!ZxUQgF*eFI&aJ2r&wrF$dYyXf9T_fEPun>^iHg!2FUFu0BG z?N&B*y8C}dODnOvh4&b${P)rQlpP~Bz-N)(L(0xoY57B)%PfPa^x{r>p$7vsU zIX*%6NojjZ_;emC`dPZ~(0z{XD|Dat#mEc%g78J*OTw28eXrGhmF`<~UsKxGU5_*0 z5b9c>xB1(yXBhP^U4QvY0`ChyP+H&rDCjo^>3$^qSon#d$9hRV6Y4Cu`$fV0(ic;^ zR?+=R__gpGy5AQ3@5K4u&^F#aeSE(EK=&8A`t#rJPxc7uPm$f94c$=Kbat8F=*>v? zcX~FD{-8G{-9PC;ZvuLg((_jU=uPC+abjY6Zv1`l4>^<3^QFOmw#l>$PQ57%ZQt%w z)eL5DYI-`=?M*|^9|7o1=UaUzrl&W9h%q@w`Gp`RUE)4QQ3MKI$z%&osO9Ki{FzTZrBw z^t9RQE&ShYTW?W%iw%PkrndyWwdgHLZ+Uu4(bKmq0%77RIgNMsL%_F;#KK2 z=+!Jp&;I{c$1(ZFxToiWUg%0ZwoR{3FQS(!7}M)0(B+a|lDpE|O|iR=%G2AE-ahp9qPMq?TPy0Y z$~FSE;qPhx-`j7PWLTF2>D^85AbMxfJDA?F^bVnSIK4yZ9X1?PCTRwzcLcp-RF@;^ z`R1RVKOp4wa`drx96fjY&^x|p;S=foeY8CEPNJvF|2_&fEs^>?*^llzDj?=f&bI+<|ZWrF6_VNG!qIcJ5 zE77}$-m~=X)lj^T-Xrwxr}wauJV5V3$v-qIpJzeuQF>3(drV@F)6-0M%}*F77pC`A zPSbl@N}ehB&(Zsc-t+X{q4xqkyE$p?@FKmJB=&MHCi+!+Z_s;90ey7*7-yG^F6&E>1l*}BiINTp8qQ0Pr{$+{Yvkb(J~AP^S`<2{)7I6^!~Kn zxUWk632c1&BURrY>*!BRA2-hZN&NAuKPmmmyd#{}65zxX^rsPLO8QfYnA*^P=I!ZE zE6#NE$Izdi{tV8y_OYL*9ZP=}`ZJ22Ng3(;Ke>#M{%j1Y^k=941N}MZuSI`O`fJjk zi~ig;EdANDKM(ySy|Vpz>CZ=B|Mu9QpZ)?~T5Bt>i`8OL`U}xtM3N@FurI;Z?1r{7 zdNmiLzqrp(m-p{~`p-sne<>fO{iW%zM1L9j%hO+$zHa`TfbGy+eg*m~=A+antZnf6 zE7M<%{wnlW^)gsSCh2-sr>`D#&2ImP9co=*3#d)={@V1{q5nSpb?IMBe?9u9ZGHM> z`Ww)f&!@kkm($C$>?{*@&Es#-xtdHGnCxMIFj5} zxSi1d|BL<(!W|8jYG?W<(YH=NnEtNx_f_m}^mnJfH~l>%<3|AW{p0_6Dh2lu`VoLL zUGskQ_ZRa3;ekRw0?1R*KZO3V^be(fB>lsb#Q*<`{t>x==%bWM-~aFX_y5O>I*z{l z|9##6?4Kw}Edj&2oJ{{b`lrx8gZ`rz#{rp#KGZzp1F$59xnY z(E1CQ{wLypO5ZpCqCa=Sv(xcq|4Ucp!LJniHT`c2<=@i(PEmgUQ?WVzr_k^tg9+*X z#9#vYKhyuk-0$x9=>KZ20Q$cPe|NWl2mcWMX_(t~H;;pf7;M78@BcHHgu#LgCS@=U zgUJ|7#b9yv z`u{)XVhYYGoJ}};9>riz26Ho*%fxa?DVc}Cydvh4@chCB@+6}F!e9jk3o%%PfqxN2 z!V4QJc2Ne)Fj$Pi(hU6j4~ktvxFmz6M)l-`_{%EcatxNYV9sZ-B7?OUtR#Vz8LY`* z7166ocs1ebLjV6q27dlKnp~W<8LX=$>*P@k)?=^{gZ0JSKvf0~!Cp z_WoU_!43>|_9b|rD?kIC0(jZn|Ic7o;cg7{@gLJ^Kd;W7!o5_By&0UyU>^ntN%(&l z?CWCQ`1>)~U(5r92j+ay2MZ5ja2$g}o$uNCQvid*863gjSkXr^ILg1iH8@&$jG^(} zeJz54`+pd?{Wn6H${#p5iNP5R{QWNpoFY6`cp3v4f60q;CIf%}i^19B={c9dB@E8< z&hjej3g|#rKnJ=4I?xr+fnNdjyPbA6XRd(3Wo(l&xSVnSU~mQFE@p5go9$H?SlSyU>HB|iZf4;3KSkf_`s~!OIMuXP^!L-~|RR=BY-J!7I}2=f5IeW8lW0fiDE&y!rpA zdJE_|isk(q=YvCnySo!CxNC5CO|mmP>$5t$i@UpA>~e8}yF2`GclY4(!-C|kdS>TK z-gEXmr@H#7YMGwuo*r4ozB>v3ea3#l*bf-{Ib$_7jQvRbkA-P$`Bd^}LsqH4*e@A7 zKCR&ZePDmhSl>mlA7j52`tv^$eqiiG#{S6I35@+omHAniR?MIORPtBG{^lOMyY&3$ z*unFkjQ!JgY|c!iJCptSM!y!wO-61ta+8xYc?xpA)lY6pa#N9;+J~9>w575u zrzJNhImpdQZaQhECpQzh8T_QqWzYW@*^@I1{reAM&L$jYCqB91!r6s$cqp(^TtAl! z_On%VZXR+=lbe^^BIM>v_2lL!w}5gN^hLE-X(8dlsg>kK$t@;faqB>GzSF4Wl0ro} z*DphE6>0ny0J-Ia%L`W^w_;|s5;=eV-}LgfsteX3ZZd-0&g51nx1N$~kXuv2TF!C8 z+QO0K)*-j9E6vZKGV7DujNAqyZ0K3e--z7CS$AzB&8D8^ow+%=QRKGBm|K$D%4hbR zJ{*zT#;+jU!?sQs$lHdmnsog1xIj3IXHh0SKrIsgms_-=7>B2J%-OAA3$(n8(a%Ypfl-xPw&L?*+ zx%2#yOS@5GH=Atc&0Rq55^`Gn=d}3GUF0i)+{L~O(7j0i5SBH^2gzmRyh{GF%gLNI z&;tGyN^e1Y_Jxb2M|3>a{p@094+>^eYWe#1oLSGb9PY~svA@^+Rhum}I^a_Cc zc_H;o?j>?Br?Ra4FCfXiDtt}&I=MH35G+8jD8YgRix4bCu&@t)%T1rjQI!Z5BhZe0usDJK z`7~IPV0i+2&v7dI5iBiSM!2kSIYVqKjBG`CXXaI%AZsWj!p@a zFpncRk>GeYcm4@3IP)Ze)1*0>;1p?29kL}jJ>{Fmn&Z!<2WJsnOmH^Ae+bSYuuyEx zKUa-CkKlY0{GfQ-FZ2yblWo5-(EVTSD-v8n;9q|5CtCum$yEet&+FmOz#sl3xI%cP zp?fg2bzq=RfCkq{zSeu#*1Ey<1V0jtBe;p+27(){5B;Rmks`R6;Cq5w2p%TzSAYp_ zBeN~-kfTR0ivbgmC47fvCZl5nbw;NO2BoJKe;A*tR_ z%;|+Q2xk<|MChN1kUWcUR>Ik2J}lKc+I`_re*tC#Ae@u@kA!m(UO+fE;lYIS5H9IM zH=LJnKEnAu4%@60Ey1xeKO<0O> zQ^KVQ*Y{2fmmyr1a1}yp`-+6i6RzMM>=2l9uhmL~dh*lar=4YX$01yma81J12-omv z6OJHU-I&9t@e?XNVF}kFT-%ctdBTx|>k_WxNu#CDLWk>l(k9$+17CfG8~PJX;YNlM zHWqGTr;miq2sig=X6Jsmg?q4NShywOR)o6}ZcVs7;WmV$2)FfWr}ejMz;HWXv43C{ z*nv=cKH-jouY89)6WYW7T1DHq`oA3EZiM>~?oPND;U0v04sz|y3wPx=f4vXw&7g2! z!UG8RBi!E~lePtb)y)QQcp%|H{%s;FRAZR%5WF=3ssF$upZW-HYY+M)D2zfyMn zwQ)aoJ;FZW@sbZCJe=@I$wzpLdm(*_XOdI!joL@4LpVL zT*6ZcZPcCSpSZE<$yP7n8D1rKex?TVS%ha3p5yB!^J%^JDTL<{p6>_R!mq7r{J398 zej3965L#s}BK(T*V#510z%C)Yl<)?^%LuO|G|!itD~(nE_#5FBUZO3Vy&JD0yiO;= z)r8j&`kh}tD26_$uD8*m^J1KlCEQ4OJK;@)x_Re4aEr`uCA=-YN^;xux+%Pa@J_;e z2=5}i+vgh73w=%u?{%N{IEr_|{e%w?zDW2W;j@Gf5k5}%FyW(wkECacH^Cl(4j)U$ z4B-=mR{tjnpYm^2*_Dg6$j`5*37>Hj`_P0bb(Rr6NBF$VUvQ<>!TaGQ!uJVZCVYeN z6+#=yuM)my1pg9|&UZ7H)tiLx5WYqDwjWKMwswLOzDxL?73v4YzLxK$e?a&t;fI7D z6Mp1n8QHF|!cW|-JQIFK_ywVV8Y1;Z_$A?Ze{{zxW=ik*uL*zFsQAX8?hd~dekc51 z_yggO5`HrDpGPxwuU$oY_x?(LO2Xd={~-L`hm(08jI;@ae|pjb+Fyj({!gg)Tf>Ru zCmZDECwESM3QyWxoS%yP)b7OAY4)=?ke`-(nLOlIAnzZ4COimr47bHIu z`Ps?O?Cr|WLVh;#vwBO-k86gJAD+sYW)AZ6k)P9#QGPDr++xn-9g?5d(9I2{$wTU<3IUjq+eFJT$bhgKQ7w^ zW`0HTdK@&rGWl)EuR?xH@~e_xi~MTjS0_Kh2cZpeC$B+%%~Vd6N zis@f`BEP=SuVgb18&f7du+6Y`r{lKf`E&4pVG2(H(||IXZ6{B2TKb9lhg-?t zmdUqg-tHv-0QtLQdv~V1hy1do@X#eemmk^h|h*W|yD$(Qm!KC{v# zfVVvz$@>0hUf=(8|KF3>`(N@#{wE3}$^T5WFZur?nvA?f#ec|K{QsN0fBeC>^z*-y z|3ktA;h)043+4Pz&E%Fn+{ucJ5$%*zNnu2IMC8s2sifCD)sfmUWO+z$2(X>Q( zD7KT%maoxt9*S+X6U{)R$Nr-keI~WI9clAF(gsd6tH;=AHjk@j>+*1-1&L-Snu}-- zqB-5leA>@*=O$XfWTJV9=JlB_nop>QKaFGLbcZThh-h)5g^B#n-`&60YEh!adm$ zMB4wc5NDi06Sg4Q((7zW`?=NDM851N+Qu5|`vB1>OWJ`}Pj0Us*ujhNp4pK|+ovw? zOtg!Xy9#&n=ok4{K#BG+l+ynKMw-2e?4N)AL$5w){rK)jbQ6)@ZHW#b3W*LRI>_s0 z!|9tJhz=GWLUbt6SjnS_#+cwgyN-x*sZ11DQiMFw)kG1|sYC^$E>V#vCMpqCiONKN z?c+zyHZgph_~k&VA*vJEv2GBxiJBgSqt<||cET ztV}*z8a)E!?K)4%^V3{8ypZS$qW=(Gs;rBI7ZY7#7ttpBrF3+elzx6mxLo)@!%TA} z(N&WquOYgD=vt2qk?#LS*Q=~?K6>pSnp@Ah(R<7mrP0k4mLa-@=r*ETjX8X&+x>8R zg>NUigXkloJBciL7ts?$cN0BGbdMh_yNZwQCAyF3{&eN0y6F)h&w421JWS-@e-Qss zqQ^4%anoe-lgfQ6OFm8Xsx;3KJxlZg(Q}rR=6OS-5xtmcUXuQ0;VYSk*NEOGdR@vl zgm3DEddpj9u7pJIDC=FK_f&a*_(z%#gdaN759`N76Nv02`jO~UqR)vw^DO&WFps_< z`j+TRnT!`-5C3>4d@ZHF^ptt_zW^Zmp6G{EBmPfBzZ3oJG|#n>taoZ${*~yrv{6~p z{>WVYNnvK9zbH&8tG|W+5KZ*{DNHut7bd4L#gGRIQw>TfOif`L3e!`VcHpo8h3STB zaH2&`u$%Ov6gUcPrA2tC|*QiU5Zxv zdKBKKus(%XRP+WEHl%POg^ehL6gH-?AB9aQ>`h@)3fof9`@gmcQ1HKir?7=^OQC=N zpTgF{Z4A|iqbTe`LI3|=*j`yX2(^**PUk-c?rmvzUUu|6kDmzZCrcUqsj| zB~#dk!oJ>8E6C!5-9IhtPhl*D11Mx4fAGd0L_seF6#V&r3Wo|u3&$9`2iNB)1RlQp z>e6>1DC8+v4@VSY3Iz)K=XX163OaWRW%Xo5SQXaXmDzfsbqZadvkDCg`u=}G-~TVP z)dXArTdVDI!0&At`ZI5?=~Fm@!eJEj@TYxsGkub+a3qBjC>-VIY~g76KSp@0@HpY| zhCZ!W9aIepCsDYH!pRgaqi_m^^C+B3;arc9h0`dcoq2}JJyUp=@ND5ZhQ@SM4Jn*Y z;ZhZJ0R`Xxr|=))MZ$}Pml%5KsjWBvzZ9;Za5)7n{`HEkyY+_nE5Lr8UbvdV!xXNe za6N@e+_p>P9*+bGNt1g7H7|mD|6XFDQIR;Y$i%Qy5P{!9OEV_=bY^ z|NqtapTAJ}fx?e|bpF-){6k@)ujsTO_YD4s-ddD*T&aeIm@Qrwv0N)#=0uS{_*imOmu({BV9SEaa`>N7&Py3k(% z@SDZfa2o?QVvB40I?AqMiu(UA7cBm-Pf^dvS#8xz6s_ksl!uM{5SzK3s>MwxZX@NU z6gQKwx%6A4$BUxA|5n_JqVE5imABC!{-HRE;&$FNcjZWN2a01U?nv=qiaSxsh-{+*MY)d9_`$yJxwdJt^)-aW6GtZ~52#-=gmSszlNDr>GA>6nzSycu;CC`4Ebu zDIV&Y^o%Hu@lrIBDds5FC^2$GYsEkE7@}4kVvI(Kr7+%g55mKCKu1ami;0&!njLzl#3; zmuI=H{{OLfo(Si=(w$sD@j`!j-{t?f@`I5SFQzmN#Y-sONAXgM<0$%HRjPH`|0!Nh zG28zsULn1|0!HyFirV~f`5I~bE&#>rgx4GTS>u`;DBei%Hi|d-eW>Eih7xWO-s(xN zqj)>TyQH~;;+-Z~KX{g#+%3FEc(0ul67Hw?2gL^{S~n{Gdw)Je@nP>km(xM}sN}~e zK0f@2mnl9Wd{X$7p_k(Nrzw6;@fnJ*QGAx-%l=Gz@j2o1!WV=uQhdn-JNF%(^NR4* zR7vr5iXT&agW`MAziCX0Z&7?($#;bBrew+Q3qMFT6h9RIqtrjePh9V%d@B4bqkTc~ z8!^A6IG*Cy6u(NDsiCsIrT81g?BDqi%!&uWxLq@mcW zWDAMX8kE+jv?isstO>ri=Ebc|X{1`Wj&NO};=fu-X#+}|Q`*pXl}j7RWMknb!c7fj z;!}Xj_Vc!HN$CJeTT$AJ($Le3?L%o_=UAVlQDH0ZhMMJNN>&ujCl(haY{rd(6VXyq3}pl=S|WSL1q0 z<4o^AyY=sy8!6qCYAE@k%;Z}s-6q2Al5O0+8~4N-t4* zfYP&+9;EabrH7<{n39(LC0!4ub@0RbIHjj3J>jmrK2K&9OZ)98JDxrB^BW1OJp>qx5>pHz${UrH2;rEn& zaK6`5R{<{kOzAI5Cj3F^7fQcT()+(zS(JXy>M$V_{&Xi^;@_11$&?c*Pwt+}lXl>Ox|FH{{xd2Y({Ql7_^ax1330;;koYfdRINO>XWczqVmDzGT!Wu#e5 zxHx4^0nS-c8mr0DCiu_J*7CBcOnEuV{t7ToYjOQC~rV{ zb;=_tuaWs#lk!^1UE4K7W3s%Cl-*Z|9R`Sr+f(I9VqM7-Ll^Wro0p7ohk1rc^AsNrhLk~ zQQlq3JzS%>q@>^frM!2lq`a?^`w91VrRN?%`9KK=2@iJtU`QNFd9)|fKvy0^c`W4$ z<(w z*|&hylQ&bohw?3y?@(E{QohZyDBo_$tT*md)?LE8UH|X+znAiTlpmpdKjjBSc)$tn z;UUUe{HyI*FKI3)KbCUDe}eLplwYU(l&s9~MaoYr%clU!&rd9O84`Y(B})4_^y)gQT|B6`;GlzzL!!{fcMo;ly%iv{+Y4{mFlMI z{Yv>aw^gGk|3Ud5$`f4UrTH+REE?4p33aBj-fIKjSZ>HNqr_N zb5VJK%G^|zqcRVbMP)uOmH8yh?>^n(0>TBUEF@uJ;Ub3qvz1$Au~eqAxU!ZIE=gsn zOusahWu#m-)yQgjDkG&_LFiKem6fQhEMXO)$A1Z{Q5liRehYw#PXSccq_S3~U)u#c z$1CelxthwlRIZ@19+e!G^{MPiWdkZ(Q?cf6Mr9)^oA^WHm5t5HzgS!G;P2~9ce^>2 zEvb0?&oo;N}fDmx8dWdSNX8#*UNTftU# zqp}wjkN@_gvImttopAIoO72bNAS(M%*`Lb3R6O`wHL{uV&vN}3Dq~Y-W*bmBkxEFVXHSz-$y14_D7IG$REjFSl#zW3pi(h34V4;|CKbj1 zN?n>p%9PylLY;3@K!-|_S}CiW(x~*Q98KjgDo0W|oXQb{R@jrSZg^Dc!B4J=4O9>N zRE~9}?Fm3r4%BfUNOUp`e*q859IfII| z^ep#d&s#3Fyk${2hss4%&ZTlbmGe@!ensFVUO?r-)SQYB2JtVZav7CNs9frPKAJfr z{FjQ=?ea94hUF~lN-9^S=5l)tm2ncTrE;A+@v^Qrl>Zy3+%L_IRBp<0Z>DlfCf`cs zHW6;8ayOMb{LVtTfaqi8M_YJZJqxwOr3sZTB%HLETrt%S$N2okT#e;u( zET}v#4^L2em&%h=UQzX)qT=7Wm;AKw8R4^3o)cdaLFEN6*Sq&cDhmFUms3rqe^t4! z316r3h6$42q~gI}^4nB=JeX`q&=KcVuO$e&JPsQ6#`Li#Ta zHLkv*q6lC4nu^DN<$g=$yEKf8^8=M%sQjp`pEAzRO6t#=y;i@f^xvpVpz^!2{z${G z?@m4Bz?*s`F4? zfa<(d=QD!0t~!4zINxGLbwS}m{uH{Mebq&X*Pyy6RS&;ZeF~tuIMpR2EJ<}0HDM{L zOH*B5@-o6@sV--NpKjj96{xN(VMXCegDi^)#&N=`R9B-q!mBaRtS-HkzUDybMXyb5 z392KhK1y{Rs>f1Ym+C=O*Q2@<)%B@vOLYUPTTtDQ>ZVjTQX4lGZZhb-bjVdVqq_N! zhU%79ifCI2x2C#Hs>$>|1yJ3N>h>b+Al%U~BkW9dZ>qaUzpHRJs(VoN_@C0`!KVPK zdu3MpP}L&8x-ZrJWVOHWfYf9NsUA$VMD-A=1*(Tq4XKV6a}3ph>R7qWrEU#VL4>@r zqDeHx)GgIA)f&|b)#^||BF9v_RO?h*R6YJvZ4MErw#DhB4yh)Yw;t8QsrJP`Y!dzv zRF9^5q^vytr&&rKlQ}t#>e*C%3y7*u0aQ<<>T#axNn)NXJVkhFW_5ZdoFV3!!m|uT zJBRAkRL`Y)k@V+Dc|O$(l=S#dbui&dzL=^F#Y-e#O7$`m%tTiI6<%(r+$)4vN;ygV zuUsrvd~w1?#9Vc{dGQu1R|f1&y~)z7I~KzNnvlj1)`^#!W`Pn@T* zuhUmO_@{;)VZL05>Y|PYz z>U&f_Qttaywf?XA`ak7J|1s51b7`ph`0NmD;pae^b`)!au0~Lv@03|CHu0;opX-f2tFyO-XGs*ViUb z_0)U{kVf&p=JB7Jum3Xw)aIu)9krRMO>at(XAsUP@=TeBS*XoTZB}ZtWwyhp%|UH= zmYh9h%63lSTxpj4%tLKnDd$U-hDt6#Z9!^_i=#_`+QQTpp|rm@aOJv&}vXzOZfZAXR5a9@F zM=I+mp>6>TT5&A3lc^mi{qfXJq;|rPH`$()CaIl5?F?!j{HdLmDNi>;X%zfxXJyH= zQ-a){D?E?d`P43!d;vAZ|5|E$QA(B{#sAu+nV-v~{I4*J|FtWqy-)2*YOhecirW3u zuBLV)wQHzdn;Bjwlj~L7IN=RxmgJkL-A(OgYPVCnMVecMw+(S*u6?1}os#b|v|Q2d zp?0s7_oYh74^VrK+Jn@dp!N{8$HaVC_=xaPLt~2kcxov9lhmG~_6#+T|I+ySKVv?d zDLwcr_XXjL!k2`DO908Q3SSexPVEh9?@)WwoKVZw|FyR*H*@>0n0^T$&IiO63_qmy zBejpHeNF9SYM)d4BqMxE?Xw|snP~lA`%?0FY99PE@;4?+|1GuesQGn)W!aCK$A4x0 zMC}i0wEnMIJ%6G0Ys#edn>fFxNy!taX{lfPliFW0oFx9&CK69UJef1&$^W&ArzD=5 zc&fBeLpO}45l)*biKipBCHM5ia}du!JY#B3JQMM3#C{1tJd1GFA^L+2cR)+`@U%TkL{`L-lhBq{ z?lQt#D4$R zm3C*YG0{s4Od^+(N z_Gw&C4tnV<;{Oq!O?)2lImG^?XlfZWpXR=ZD|o%L3a?}Nqjf4zW-nj?Rg}76e{-bKe&Id!+pa0i62lKAI$pmA>xNq zS^7tbpC*2c_$l!{{u4hz{N$jLUircBR@O5@5B~o1LkBlh@D z{E9Qv9k%#2;@72oW0E?&Mf|>$ZwucMzDxYxP#vWCK=>i?N0ZooLi`)?r^Me7e@6Tz z@#jVp)8oHtIG*@xb@f+1&aLy+|HR)Cr_Arf|DHGt{_&5}{6zfo&{;$L3$e$4FWo$N z+kdA%74aX`CnKIf{Fh4kGxaa|Z{mOCYN8va<<=*sJ|*=jT$3sX`l+e=-VXI?+@wA& zb$xop<>{oE-q1eALfxkTm+eHZ&rD-_>a$QUP@k3hs?=wrt`&QIn5>2iJ^oXlgSzei z&o5c=zdkp05B}2V5}-b~1fafvl=hEfY3@QwE-YL`xTtV3!?Zrsmrz+tQrDzVUs}m! zgv$z-GnBBra0TisQeTDoO8zW|w{&GEm^?_XMqL{q^%2xpr@oFjYfxX)Y0h6uxVF&$ zc1Oax)c2&m9`!A#uTOm=>Wcq$kN;_Hsc%eOb4Pu!{-?ef_05L}YTB06cc;D;br0;+ zH3ihSp}wthM+vtR`ucy!mims=cS<$Xcb4rg!d->CrA+F3n2^bu4(fZS8tVH{SMWE2 zJ(gMDpSp*A>IYheMSdO+Az_MmUywj(T9S?N8dra9nV!JoU(gR71T; z{YmO2>SrjoOx=c=B7D6{y(VSsPY2cOhW>LWP3j)`)dOwnM^f)lKa6@p-NQchuIhpO?z2{{__VrGB9}cBYJ@ei3zT>C`W# zuJwQ2*Z(44M%{<2N?s+r+EBtZLca>2ejWAeQ(N(U{ZIWy>bFU_Nq95$ zw1;mUVoHCz@DA#C%J!}_m-^k*?-^n$>ptrDQ-4(Q1Joa+{xJ22ESb`%Ka$GXA$Uwo z#sB&fp5=k)De4oboA4I(r>Va}-Q&NQ&r*L*!tjdZciDb+TpCN#Sek~; zP@ShVmZ9OnKOJeAiQ<1_1=G`5(NL}P;7?-}8Xn$htV&}w6C{tIu{w=4JZV8gaYOpG z(yB@xDO`ufx-`~v=AZ)W)A0D8TG7~u=7lsirtvL}O=z@bwW)A38k^JDUh)<+wv@1y zP{F^kjmb)GOJkIT?fj`lQ`(!hjU8z0A?1!Vc9O8Oa2KJ1e`7bvdiej}D(y*QFB(-E zd($|W#y&Lk{HJ%qe&X*h)bsxhJ^$Z0XwV6MXbzzfT9SsQfW~MVV`$`Pj2+@A*Z%@u ze)2RT6S8E1Mo|QRlSPCw4S)VW<SLg8e04h3_CPVp^?xyfkv0c z@icrQka?fRVVUex0F5JP94X-_;n6~$0%#m7JkHR6cB5)AAWuv+G)@xXWJ8UdQ)#?Q z<1`vC(>R@mhbbCo2+yQ(7L7Y-oK52jY0eRzOXEBm7fU{$hW*FWILVp<8j2x}i%esB z|C{f|CBjREmkIw%<8qn&FQpkOc_odjBwS77MjF@HVur@GgC$MlIvUqYGcMEI;D%cB z(6~uiH`BO99&Q!hmJ(>(o|)W9;}IGj|7qMUyobgE67HpOpU;?$`v;ezc0uaN2Zav_ zA0A}6x#oz*V>BMmI{672PpVg+5_;#;7;OGzoM%}o^JASb+Fn^E6`!qhK@d1sGXndIJ4QYH##Y9YWWskeZDf8g!Vfe{G=8MH6OEr}{4S+m0?@D~ z{9;LIepLm2%PRQ?jlXG3P}ZM9kN=tfe`qdBVkGA%5m za$RNlEI@O8p-%y_-6*xCxiQU6l%?R`+$<$Xvjt5L{^D;%a}-U*|K>KC(k}tT)cU{a z>wlU%2zN}gGQ!R@ccFPO&0T4FRHwO{aCe$}NZ6C+-V*jQ^k;{f`=o-S^Y;_(PgC)~ zsrcVK$UhS|;2%OWpm}Jr-h~|AXFQ$1b%}Z!rL-SIaSIWa>H2+J}gTD&$_)pU(m*G2ULTP&Z zm-1@&X;&i6YctJtG_TL(aWrqBc@xbWU6Zwl=FPIbC9B(Q8UJ?a?-1T8)D+Ov6wthf z=DjIXwYs0?7c?KB`4-IwX+BNU*Z(vh7Cu7r37Q`K{l$}}|Njfk$Ft;<;yfiB^s~P^ z(|ksnXKB7bQ^CLayqgT1X#L;xDS+n7sh;L5G+&kGwc&jm0IwS=srcVi{2yrErfGx! z6Xm`ud{6kk@B`t8LR}FwbqV0-%crK4{xhL}|1;BkNpn2S@1*}q_%+RMOi&kn>qo~{ zt+=pHdG-5Yt-p3(dbI|4Q?>O#eGg-6m*G$TU6$i01qMH2)D! zq^0$LYcg7sdo@~9q%_Hc{eN0hD>)4?7}%{%}Hx+$#WUXWF95wrL~BJ`Do2AVF6mc`D3z@3(@k;ACqOZD6OSv zEvBr+g-ZxM_-CA@rCG*M!m_lMOLJ*0PiqDF@y-8?zcQ@@rSvI))~d7={97YvZ9{8y zTIv zu|G=G+Qd0}9?8S0GdHKTwFq1IqpB_c3J|TW3_aZ0&%WW=+LqSNv_{d|f!21k{Nw-r zCYt5iUQKI9T00Grb}VdkwRWMk7p+~hI`5|1?k?OzxMx=Ly=fglYad_OSkP$gE8I`0 zuYj7~9)q<1LunmE>nK_WtD_E~6-qdi)@TW1XjwhSdWq>XmaV|$f0KF9B3cDnEm}od zOcbIZyZ8T5Vb$`Mp1#pU~=NMfarX3w7?d4yR?G z1A2#+egEejw;ELPXp=PnjwP9k)^W67p>;fMJNhTkUXIp@w9ch<60Ni3?PTF8v=ska zrzv^5p@cJpXL@pQQk+f87ytHCDLw_zI-mB^v@W3a7Oe|uT}#W(qbro<>wj7b>8(p> zU8>||vi+~2l9$sOZ2m~^6NL0W1<<;h)-|a{x!2KpnAY{Q?xZ!2*6p-z5Y6L1Ep7g^ zZWi+v;jO~k42@u@q{n{=3jVFTY2B;jJ%(AyB|k#zWm=EYdXd&+ zw4S8p>wj8LOyWfA|CX=+mGv~OXJ|c7>sfj5_@9z#y)a~@EWiIN!4BUWv|cq?$=7K4 z!#^e)((>S+$-e%lWkX^jt#@gCL+d?SpV3nAZ+Y++;X_&uY!AWA9s9ztj4T)=#v)7eCwoZ~bUV)$nKOQ~8&yQNK$0TgLf= z)?d<0p!Mfa>!kUcmdF1AvppH@d1y~gdn(#f(4I2YXSq|;o{{!6ZrGmIKMB=F=zso8 zdwSsvhUQT6Otgp7p4pPLXA#aSoJ}~)F!MaSzhc~;LpY~!E`QzF4du;q=cT<6?fGag zs0z$a+xP!d5B_}suhqh|7qI{+L*M+D;QRly7Z)xe)cU`@l*w5ImZ81uz*Tx2+sn)0 z3ba?Gy{_byXs=A$Bfp%iN_!339{-g)Lb!UC>+zrVTC_(>SbK1Sx7SGtQm#jPYuf8e z-hlR|a=RhzjilL__9m&7B|YG`H>16!vNjiPk?JLHv0UiRQtcQBMWhySZDh{O-a%gnJGj>2Znn-n0*- zy$|gJl-yUipKyOe^W!)mA0)k|fc7Dh4^4AvkD*wC zyRWh>()RdIyG*-AyONeg+vC66+GF-@O#$t?C*4((w#R(hE!w{L&-y2kvP=6|+CAEb z(e9fjCD1;c_E93(6tDzseFAQ92t5ANKE|0|bBq5c(LP?v6Ef!~W`YNQlWCta?7j3T zpGJEe?bB&rE|W88pGjLmzI_($v!%3ZpPL#E8?RZTZSnsy+85Bii1vk+CE9<|T*(*H zzJ#_1f18NY9T@5VYp4on%4=)NXnXvp?ZIEd)wDhS)4n#-T&Lvqp0qu~_6@Xel}1xQ z`zG2qXUtn%@R4~N?b}UOS$ELBPy9QDchSC^_C3B}u=Py)UY~!{Db)+r6wrQv_JbmO z{Fm@B?MKqP@U$PL{g~g2Z$F-Co-mFyzWx{g{|TR_t@VG~^Q>;Lvk zS??EPkngAF0L6mp(6@Md-|z>E~DO0(2J4Gz-yLIFFi8rhm5nMtadU~iMuGdt8ll}T>3re>`iA+I(wzc zjK7bV`--!lWDovy4iFw_nDXfyOs7ES5IO;!LrpKjXgXsu!dN;!U#BK?LOPK+`BanX zi*#zzmsDt(PDM!t|MZmX#B|zp^!#V1AzD+|n#8{r6`e%3U185KCD1vH&c$>Nr*k}= zBTO&Ck;0?s94+CPjC`z;#~G@W6X;w>=R`WE(>aOGX>>gP(>W#MdoVXSOP)dJ0uj!n za~7R*=$xHqr5rlvnn33~I_IZ`hC>1!?=d1btbgq!_Upks-I{&W!rN5Gn z$A3E7{Bc23K<8Rhs?h7{JV0lhI5*Jo^*o&$>D(mYWw_6Z2u=BXk}$A>%ww#{)i{C+Ivmq?bnVzw>m) zd{)ZmQVyNx>Aa9;Wtx}hyi7-NzVnL6uL@rizE0;26I8J`>3IC7GfD98yi3Od>3eiO zQr7#z4}>27C45ZhTRNXe{?t&yXLLTNGoH>D8SP8co2;_FqT`Ey$=UvY=Q}!o$o6|W zKS=nI&My*v68bm|&R6f00a2=Wh}Z_;miEGtq>UKr%VWw60I4 z5Kc)lmAgu&7EY5okqpVdn?EAYKr$PN$A2YfB2oNLJpN1LmjIbOjAS^;oYK!uGDoVP z#Q)rMPb8U#T_Rl_kt}Ih z(kxBVBUy%|Lb5E0hkX*C0#YlI6-ZVj8AY-Z$$BI!ldMUy3dyR*u_X=3YMC%X$<>8x z_-e;ptwpkSCXbY69TC<|m6F#d*@9#Pl1)iA%)D)+tc^)FNi~_?O7!@jnv-lvvQ;K4 z{(F_SA=!2k&UPgGlWb427s(DJ`o{{d+fK$I*_mW_3A>Q&nz_;?fHlFr?IGMV%i5bn zn?Hl2xvy+}3J~o8l0!)jBsnPKA1uNlX;PfgBzclCZsHXfE6kAuuJIDX%r;W8kR^*^ zmPpE}M!8jzMEaUACaIIONE+_V{Wo2(l~2;nG@VT2@!x-Tt)28qP9-^v7!vWP+Ud_n%2lF;wz2k_$*qCplxtgyc+; zvq;V*@sB_I6-VNiTA8d*Kqo#0DCk)2#lPQ9 zP5$TRL(lytSCU*sqL`mt?OB82dTrLU>q)*L8AtLA$qghAk=#gfKgmrb_mSL8a*JEp zIxxA_1+UU=Bp&=pG+87b{FS_mB#ZyaJ<|C9p`^K1ZD}4LdC)cgXl0c=OrlvJd4%NA zAtuS=sZ8<&$&)hl=|FBri+(3W;Wcs_qnY_1Vwvl zG<4^oJ1yNg>5}s4PDgk8OrC*m7XQ05(e?OmKf1Hfot5rz$+OWNHgIc8Xm>li&_4l} z@#hlL*Z--KuBL$QeA3S^RQ&IH{FnK{boZjW2;DvCE=qR`aTcSyxP&F>j-r(`-yv@!xxIQ@WcCwz;~R0@5w7?v`}7 zqPs2Kt%vV3HQj9thws{yJc{nlbho3s1KsV1Z@-ggZNC%U9qH~glr%EkUFhy6Vb{!d z_aTC6wWrt0dueaF2T8LJT@U_}J^s_(pY8z?4ovlf{h98;bPu6xr5sAPNO!b2V}xUc zIblFIq8s`)PB)+0`ZkUy3u#iclCUhS(5;#vPE8mKegB7U!%(yq-NWg6{HNP7l#tN% z_)oVda$k5@Y9jdvF%;X_8M*2bknD>7GURBD!ZQso?L$olEyTY0js6A>9j1_Me|DJ~*?J;$pg2i*^a! zOX+&3r+XP)kNS9n5Im z$LRXzznD+>R>q*_PtpC5u7ZE}X}Yh`eMX#T4JG&#K=*mNzW%5CqUz(D|8!p#z9M|p z&-#1j2PXW?=ME5tk9{=fnLic+KpVIwI!sm3q zru&8DFSF<|UdgWvO+)t^CBLs%*(YHbMH@(g2{zGqsawpQ8jNVf8CZ{(Iy(wJTn^HKHp#+~nyp6qS z>CHtCdb87;PFd5_n^nRL^ky9NNpB`;bP3S&O90tw|GzgZOAgP-bI_YJRT}!6GQGL! zEkbV|dj8~(Dd{Qr_vV+pfVaK3pl~6fJ^^aB=``J2l-^=uE^d87Pn-We-~2bFYO*xF zmFO)a&a(7Yptl^o<9-SZPj3ek(ze^JXL>u)^94V>o$2jjS)RM*g7kKyx5x1LZlve`|L#hc2mb;| zZ*O{E(%XmL&Gh!A*P^!{y_nwq^hT@s2M7FSeJ6~jv|EULhsmVq3E|sm;|2=;Nz&Ijb zCiE#lg#XdIp57IbucUVky)5|m23tVlUrX=0)QOnm3?I@em+)>wS!w^LcVCu!KfMP;@c2*fAwwk}&iIegdxPF%^q!Xfae7Zk zcvARO#`nuBd3c82OZ1*q?sLNDrC0p#y_oW)@%S&oEA(E?mef!=5IeEm<)%kKa7ex>(YnkAZoe{X_pees`J z{Y~HE{6F;5P(P9WWX|tT{;zFc@xSl!pZ*~DOP-eg^z;#bx=Hvm(4UF^j6! z>3i@u*)SF8uR(u(`fJi3Nq?mv#bs1Zz%mnLwfp~(BF~%ru4T| z)@H)Z>2EPqF8!_OkD|Y|vV01lzpddUgze~WpK9n2W&!#;nMUND>F<)syGpa0p_$X) zgMN9@G18A6($f#< zcj<@poAmSatMU-hFVNRa(J!VRWLTzO8FDCQjee}Gdg_yYV~9ZCZvoJ6i{O_4^plh( zeNWgI9!CFg5spX+^nD7D=4kr9Zl`~Y@L2lCN$}uL-|zp@Kasv-e*Yv(nw1Ps5uPeM z%}~rU3?-Z?Jd6I>63)r==PG%gp_$0`0{R!yf0e!!G>*P+{?osh{#EoZp?^93OGQ)g z?|bkcECs#2|5Mf#^nLN4>giwYvgcky|62OK@=uGSe|;*`zv2I*>MVd=H zlhJDn&FdJwUQvAgFLEQJH;LS={J8(u<*mZogtrUtFqF<+j6Tk&*8ijTF!~6i?*FCZ zQvjp)3m*_Z$f$q(m(hpw2X=-s@~A?63Sjhq41J9^`hWb`>kpJG&Qf7GXdqR7wY z*;B0N8GXS>E@AW~Mn9GOWkz3N^b(&VO1$I<@F0D1!9}+=mmaPp|>O zMg+e8ADPU3DS_?|f=$G={tq@2-`sWbff;N`upPlxl5d^M3AQ2FcC3zqwlDN|)aCFI zFu~3QyAbHif1rPX*}3arched6=U`9i??sSjX>S6p{{vtDD`-Cg_y75gJi&nkM-m)F za2UbCh0Y-ahZ^?}w+&+*PH=?tVOt+XaH3rj98GWx!Eprc|NZyJ5d_B*oZz2~u@B#< zPZFF&FiP-mf>Q}jCa}Yw^SQEyYLW9m2HpSr&-_Uc=A0l>P(@f3)(Gk%4PjH*G8AbO zX!Aet&3}S!o`iUh;9Y_~!OhZ42{M9f2nGaK6P!kH`pEY31Hl;t*5YRpoJ(*Pf&6N4 zc5aH`98b&c8NIikNAO>Q^9e2(n~*=(2rl%?+|L9T6I`YgFCn8{Cq|C6NCQZX>vz-~q+DgTUAS;&&0; zE#m8ck$Z*r5!`PXGw$d4g9iy-Ab5!2NrH!^p!I*?>wjH7CbSxU+|ng@!q6l+66h8n zc$(muLjPHU=Zeth|DpLJ!AmmrGQsNvuZX`Yo9_Srp=q`HW`0TFw*Um17XtVHiuIlm z$=?@#K=5H9`ACwF2|g(#pGx9WfbaYSUr_22d`W2sg0CoD5&WHV-w-H`OKD0< z<58O2LrddRnt&4G6H=Ne*Q7MD6YJZhNfb1xaI!pf*yT!7aCHepSn-^KQY_3=6Z=lN!g&TQXFYLzd6Y>>EX;YhC3;E`heBzMKmXx-lw2in= z0Y2(W+fv%jx$UZzws(@3$ZhUOX(vi@-<8sC1>c?09+dWye9xhmF8TUD zU$#-&m(t;s_AB)Fr*wdn52SPmrGpCj!A6RPIF!<1xmf_bGsq-vUrNp3(`FPNL+Cf0G#6kJ7(|C+9+G`ug99xTb(oDc_5u6jGA6FGZBx z`TNiNd`-%AN{yncHzo1?ACb1967t3WaHcCIl&tUdC|yjcPw7HRDW&tJpHUi6vh1Cv z%hQEtP&$j!nQp;;`FZlv*~Vqr{XeC1h3C0~{XB0M~nz?pVHNoo~LvTrROMJOX*=s*HOBi()E;XqExK^OE;R+@V^_EZl-iA zCHenhR&N`o>(=g|bT6elDcw!!uA$scXq4`8KJ2dd<#I~*Q+mKSr3bC*C_R){p!g${ z9#_z#lpYiLAH(5Bdg%#DzS^hsB&DZ}_|H@K8v)6m&DVj$)6S(AD7ky5^rG-3;mg8T zggylnP5k=s0bJ=#N?$2d{=f7#C3pUm-W9$_=`%|2Q5i=^9iL- zeSFzc)Be`2NAr|ESBuyb@MSJhpZ{9=-%$Eq3*d26Qy4z`B~_* zfO^Gml>VgjJEcEzNl~c3D9QP2k>Hx;aVbwrc|6LKQ68T%lqaA(5#@Q-CDX6_V+tIRj<)|Kc-I zo>|15zsRh@*$lnX%5xBIN_kGo9m;c24k*t}d2h<|P+pz#yi#`OPkDaIi&K{W_saz+ zyZ=|vLX;O4Swy&KAz#dhQdvUsB`L2++5JD|r3;;9C@B8lN%Trz zGs>G&-btZbP~K8xE1{gf=Xo2-+xiNm?0^1J(Dsz|=dbec&tD4NSwXuPitI|c@c-rA zCE0`Wp7{}U%03tPDXg+4j`F^gkEFaG<-?`9KV|v<@`02OrhJeq+t2&PA(RhwKJ00S z`FmPyhAJOnLTiXzld|RZXv!y0KBkZyOZhnCl#kCPBRh1}a3@keiSj9w|84e_#L2GU zX`NaSeFDvk#0a26163Elrwjt!N8E}@O1g!1E* zdz5dd+^2jC<&^T-lrt$0gr`wHL*(>)4i!I>@>xcPvufEo{Kb^z|I70KW%vJ-HISycZ<0Hr+lxW{iJ!nB<}x39;EybRUmNAb+RP5GUIYYHg8NBR9i@_}?dr2G-(&nSO9ob1Y< zNdBp-Y0rf6=S9$$gcB!kGzY zB=nE}`Xbi;Cu<%coP}^!uO;&gCb7MvaCXAE2+jY`>1vu>Oo4E2!g*ZHHUVtaZ9PAn zPxj{*7XCk6fYALv;X;Oat_a=#OSmZEVuULZE>5@%;Sz*PdXS}JH{Ibe|Fo4g|7vHrGU2*}s}QcPOs=X_R&xbAa}};ZxRy6i=yz>WSetMi zPtNu+tkfFCgzFKmpW9S6Hk6T#2sbujNfU086UjFtvP3s0yn=8G!aCuWgu4-LMYuCz z;s3*J2)C8~c7!_+Zf`tKP6l@*^ywonm(+G4+|_joA>r}4m(fob%jY@rG|ukNm9ZAVP@QacIq!Y&B?H#&mjCS;hBWz z5}qafvkA{3)JW8!O;@(D9LoQP?*C={f`VK~c&Q>@B)pjL5)ZPto`=hvd+{%K;*u+g z#v{Cn@Giou32#^EHH6m^7EgY|>j`ftdiafmw-DZ>PI7Z@P2Byz;%W*Q7UvF0?i|_t zOOd+?&C%UM_%h+WgwGM)NBAhAKl~-M;qWlwgM<&|X;~D>egCK6j}bmaXxY}bfB1MF zMEK-b9YuMXu-N|zhx`A8zWJlj7lbbgeHIXTh43B1SH)j56nS0v2BA*@;%^DxHdKk; zCH$E1Jwodt@8_lr74#wDN4c7zVtqpRDdFdYpXE9devyYN%2$NH5q?eh6X7?6HWt2> z&Ud*E;rFIi@I2c;+NFP|JN#Li#o_OF+>pQjiAva-g%-)4c%ZgInmTaQxHu>G-WO{97~9%DKtlj z<|3MwXcm(Y`T0*G{{%463`8>$x&I&LGn(1+=|Qs+&6dlFW|w3R;hecpd~PBg{#Uw0 z{#;n{`H8g1kMsyQT0j|IQ0P;D$Rb2b5-m!!xN4x-|Bsfi%UnnDrHGa$T9#;;e+Yf? z??2Dy3Pi<|-)N;=J~Hp)M5_>;Mzku?DMYIgtxvRi9!j)^5u!DT)*@PWWZ$!h)+SoV zh{<)i-jHwe7SRSoM-gpE~e88918g7^0Jj zj#Yk+BRWyUZvlu-F!V1UMJG9N$-i@np?3+FoJut6LgxWdiKtFgCaMtW{7>YI|6E_) zqe@i!|0NBgCXp}0q|heHh6Md8#nnZkH#FW)@PA7Um(a#_{ zljt@gE5g-8XA@malxO=KqVtKg{*T=M7YSWJbRp4y^UGXLx*e zB47X8ugIJ35h9-gayik1L=O>tMD#GxYebI_Jwf!Sa;we%XsmxI{D0*BUkcj)kDeBP zhRB^i(Q`yEi}(~k^a9a~c?O955kQgdD@KT3&4Z*V{~x^}{-#j=KXU(1^p5adqW6eC zAo~CPfAnFI#K%NG5`7}&PlcZuifI2Q@+pAmOQNrcz8ClBzeL{i2N>q zXjq3tKN0z2p6F*H_y6L*3V$Q|y^#Dtr1gK~&fk7+q@u-tWn3zgxqf9l;rLX1@h?6h zm5HcKLSG#e=1W7r;^Up!fAwK3@u1}TIxGenU30eRHmo$HkBEu zm}EvOTCP`SlG@C|S*Xk^GMjLA;T%-v5}DJmFgrJudF)d1d4+xpp#1zxmkUr?O=LkT z3sG6Ph`0!q<)|!5WoaslQCWhDPXr??`ZP*qNh(Vjw|}7LJzT$&cCvzl-HuNuD$($%G$m)R9VO0gkZ1MF{e>kZ)CjJ zrL%!>L*Yikjj3!$WfLm?@pnl!qp~%X&E2b1{QK`zwk(1)1q{`;k@B{N(%GJhzx>TF zhmxJBSkgOF*`3NRxtxmM0#Na1!6JK5*-vCoDti?=ehWZl9~INj1=*$e{!|VSIZ$|z z@L)rcL#P~D@WZGaE+a=2agVehNsbmCLnWdj|6e(d%E=NQPsN=-l@o<0QIY4@&7dTw z2u~G`QYljjsQ6ug@4ng!*`~aT*8e(}OQk}^PyR^1M&&9hbt-34X;8_iG^r$1T2#7J zeElyqO#zkR6fm|vsq_@ur;_Fm8hnqsGN5w0KLk%8`tF&!YQdvRp@I9sQMIO z5~?G)W)V7_^rsijKy}7ElJAbO02&!`zHhl`9 z>i%CT&QEm_s_y?KUx4a@A`2;WI0c9=N_Az~zCscuenHLB}NXLaEkRNeoJuO(btxQ=jLs_R*b#+9!8 ze|19z$^Tb3&O@o{7NEMRf;KDkx1hQ!)h(%RC;3*wt*LIK{A`=&yvYCdRCkcVjtcdc ze^T99sP}&kOR*c({iyCP%{_#A|7Ugh{%5LtQ{AVqsVyM4vp>~?qTyM^<0Uyks41X&5>-9?t)8s3 zP7$7(TNV$fHl**f0M#;8_y1If>wl^hT~>uPs`Y=wZBp%1ZBcFKLaMQ;NwY&$i~p(? z|JB|xc;Yl8r9R4pEJg4O5rT3XBWo3#;Be{_1v*KRL`e+1=R}_+%}mwWdS$I^p$W^{L)S^(Ma^D`re7 z`z-*~TdCeAay!+#s21!0>YXN(ox=ZD@1d&0Kh^tk%T(`I#0Lt^hm1(_Fx5w>z99Z6 z)yJqlOZ9(r`MB^2;gk8JNvcm#ecCwHXNC_e^~jRyb5!O0i;icp6!9ghFN?e)e3j~3 zR9`DXwdktK|5x8Mp-S;K)la1Sj__UKdqSH6J}64`p(Hj1e4I-Z_fr!}{+aM|L&?9S z`j;eMQT>|gFI2yws`;Y&t>oVs<~z?+<^QWz;Xf+qClB)a|2coKNcC4;{zlao|Kfl6 z|CFmb|7nw~{nM)YH?0n{*UAnQ-j)M;*(IDH2?FX zp)Y`IlMAO1PAQzqu!uViwJ`-Bp*F3(txI;~|7+8W&tO={XQDPUwfU*dQpB2-+H3{) zDS+A>)ZG7z&qZx+YVP?hQKdewaK1bb)c!?nMQRIBTawy>MXZGscVTLah%8ztFGg)~ zMPDM96ml!((nZ{56lGaz%N3!^Q(IxIKDCvkAm{J7U4`1J)Yg!2HEOH>Lvu|D<@{@M z{xv!O+PWq$jIU4a1Zo>l^OZ2Q4XJHJZC7d=n~tK(|JOF9=FXqm=B6giEreTA+e&0> zYTJoyBiz%kKZBaE77r;__^2mr=6} zoUhPxsGVC_IM0clzNlSLNd7Aw`TyEQ;`0BsOT;gAHGAq*yPTR_eeDX#ucUTWo}3}I zYp7l8njbPe#!$PS+I`e+pmry<8$HNd=O*FJ!dry53N;1PZWs3{peV>))ZG75yGJ{H97y9JO9Gwm(&-e_7(MUsC`ZCTWa5U=>OH;chtUD z+#jg@EMj)t|BL@r*!hLppVZ|4YriSzci|snYe|=X3I8@UIrVX=PfmS2>XW&=?zaHc zC!ju|$V5V4|BFC9b6x8RTJ|*=zbU79Esj1IQeH!W`)W`Uf*}M+xw*NDo zS(BQae|-jjFJFB|LkVXxlw=lN&MI{OPkr`0qB1k5By$PpHq7noa$f55xx}N)FZ`Eq zfg;_7sINkOVd~3Dt|_3tD0N@|OR_liB}BCNuP;@|eF~tyjA3DFIqJ(7p({{dvEZ5l z>MMKivb}}+s?^t`zM68rI`y?=XAR++9>tz_*X94~?*AoU*NMknpZeC+H?T`Z-%z-b zaAWG5h-_*ovYF7Q0P6Dp^)1DH3MedZBm3J5w-atJbpLPFNPQ<7J5#scN7Q$rel_)7 zsh>)HH|mE`-<`VqbLx8t_Z03$eQ)afQs2jo6wfQE??-)qm*fu!Jl28K<^1dJ{HY(} zp-v7p%ri;-aOyr0NPZ-B`TzRS)K8**4E5uwA4~nX;d22y18h%4>nBh@G5;2rN3>G` z^}IWsO#KvZ1ryqt0hf43#)H{mU9jTrul2GsEypW{SGwSZ=sSkvwQ9s>?{rpYZ^)soTBl%g>&ld4k z8)>;4*X6k*$BfO-`I1~f{l7)%h19LXTq^m+)GzV+w14P$XSj^|6(YI?u)U-DmDI0t zCv1l+4DFCZ{Tk{IQ}-!=`gPQA6}et`gV3h{>Ng2*7T%J#EcM%{-%b5?3ElZqzf*XZ zq5r&J-9!Ceb_8s(6@l7ewD@yO7jQlc&sAmC+a`b7>D{V)PJY`tLoYPzyG|>|M1K>`BN7DqW-r_ z^3cY(!_dZfuG8@M|InC##)SXSnb;#X5Dxvn_+&H|r7<~;d38AjjVWnNEk2du7<(I1 zV;WtKp`m%9F+yWnNv5MQ6Ak(Q#tf3oXgG4@&*C!+<^LPAip&2uW*@5~;hZ$)qA|C% zslS7|F^`9?(X~q&h5v8J|2O_6{RL<&XheJ=8VeWP{l9NTHWs6?35~^RY)E4X8t!sw zEJ*rmxQEUMvBUvl9fEt_9*ijPs|HkGtw$SC4G`11h zipJJPa#J+6rQx6bqOsl3xR-S3|D~_*zqoK0n&;Bkl}1csHwEoZ<1iX~&^VaJo;3ES zv6tj~=k{srLt|eV_m98WZ`fBGnl%~+O4+A?Lhe%l4Sxh6ayX5XX&gc0$l=ND#!)nm zr*X7}O5qq9#}@oJC&RWl!7R`?k;X|z#C;1$IXQ*Kss0bdp@mTz0S({kp;4ky7V+o5 zuJ4(t(5Q=4X$<|X&oYe$jh5uie2$~h&TT4{4$Xhj=+gL(MndByY4&LJMXZBePa~so zA&mhIOZv1tE{)S^oFNNm3ePfB6rTbLu6dzxuH@$l&!=&La{k{u+u|3|xSYnt9?=Wp z69)~=2#w2(OXmt2*U`9ALBsVwjjL%~qfp=f$u&nts?xcE#zQo2q;Ut0n`qpezov%9 zEegF=v2GLIJ~l3mJ83*f<1W*Y+TAqnp>e*o)e8;?u!gz!lkPnn#?(_?)#jb~}RsLhdjLkv85Iz9W3sP(kl`6c7D?#%DA>^h-DOkKXjtX^rQ-ZZ<0l$&_>G@w3}61Hpxwkxo9_QYR0*_Y0oH0R27XwLl)&3S3M|EKBBKkrvG7od4G%>`*5Npm5Z z+tFN@=9)AYp}8E*MQJWU)7Ssrk(zo1oSh_TE=hA4noH5N!=Gn)681Ac(9{%Q+;x_x zxhl;SXs%3iMVfk^Xv%hmb68}(0@O8Elm6;7*T_3+VQnp%o6=mH=K3_(F(FM$V!b@N z>v-G^Xl_h%Lz?dSP2v_@zKLHBbvC29HO5$k;rV=5aL3 zG>_Ni2{cD#^F*on6hQOeG*6cB6yd445kp-DG)rS8G((zA$s?K-nl*8EfPTuZS*O`> zMuyqKmt|9m`-O!th0 zm(#q9<`pz=rgHXK zG!^A_q0V45{T6_xp8%oxw(uR{yM`8}u=#n6#aXlFaA}xc@10d^5?&j{4DfGz%+IKr}>+B@f4u>C#@N2{v|tq z(;C-FYxoG5)_An0q%}URNoY+#3x!TdYa$UJ!v5UH(6({%6166!HJLwcX-)1=TdZ%l zrtoaLWGY&6?5(Li53Ol@__W5*8W|R_H7%{-7LXKt{qL4-GHT64YgN0XH8ZVQXe~u+ zR_V+}Ykra0Y0Y6od`{t9Lihi)=AkvOF6T2eiJ>n4MawsT#22Kc=fACmX)PwnBEm%t zJtuBwap4lQmdu4xSUNXIYZ+S0O0t}Ac|(yEXsu{v6kmzf$^~D=Bt_X*qqRD%b!C4I z;hMs=glh}eG0fd8t>G*{YXh=tX>CY%d0HFM`H|Mfv@f8w39UWMz0lfJxS4QsT3gWa zH@VUBZ-LR;iq_U5+Zc*$OKZD=Z!gIXera8_wNoMAnbs}^-<8&G1>fDs$f6OgJ!x6j z+KblZwDzXer?n5QV`=S6OW%BK?KiTQr$XxhS_h6yJ)!-*i`GH34ySdndwXy6LuegJ z>#*T}I&81T-UiS*g4Qwi*o)SYw2q>6w2ie9^G?d4SB~2`j@I#hEZ@~mpw**wBCWFe z+ex(k?VZZ|-pRsKXr1b<;F3{cAS@ZG)FG{gBv!793th7+tO@Hbv<$esNvkE&7RLT$ zt<~`tPmo1U53Bpbh}OllE*Y6}Hv7@K zRCt-yw#XHP4nu|BMe8A2chkC;);%UH~KWyl&{iKPRU3Cat$rrEe?f9a`_xdY9IFK2A+vzLC}kwA}gorTyIO$F$6ud_wDc zTA$MT%-U{b(hJl>{QqCHzM$njiq==cuZ7>3g2=bR?+g{?2P=!ePurcX73z0dKhgTx z9}T;OUu>Y+n_+1ED*Vmg5@Sz(TYn7yPvqV5FWS~I{-!+x?Qv*NOnY3~6VM)yw%+_~ zJ?;B{k4$co329H{e33aFC%TL_v?rxKiFZHySwCq{MtgeNlhdBsdvALR+Edb=%KO;( zTY4Y1QQ4k`_6Y4Uera-7o7PZdx?D2!3GEqa&rW+L+OzndZrU^3N5OngvOOzpfBC1E z-6YnU?Kx=A=hfTxSAf!5rM;ai*kDnk)82vhzTVB+JJQ~X_O8Ai-QJn@E33oRX*+aM|?Y%}0nNfUi+WX|((cT>84YWV)gJ>T>`#>Ko)|B@1<~x}7A>O;D ze8ii~+vqUbG3~=?hqRBNePkg&N})&7Hl1TU!`=;!rG1>p@%|2w_6fohg(n%hn#)g? z&MAKBu}-BuYA+h19SBSQ(jk|Z4JC{&9plz<-Hfr+p#uDzq=6{RHicY2Qfu653bM zzLfSAv@fH5x!bXbHtkvwX1js*m7a=^l&fi9NBbJu*VcM0#NeNV1qNc%q8_nT#(p)5sj{Re5A z{GmLDv>)~x&-Nq2M}?0WS~h4uZZ9sgL@jCBPtyLA_EWTfp#3y$lRQKF9e0xLXK6o2 z`(@g`|D!}-pe_I3e#tkQO!$tC(^nLv>7ecYpZ4o2(Hp`yg>MPpHuPAA-e=yW{T}W2 z{Zi*eRf-S2U2Ij;{)qO+w5E@$)BZzM@eA!=Y5$hbO7gM4dlHr(>)W;@ zX#YjL5beK-rz9SScnaciJ*)9}#1M~9JQ48(#1r~$yY)c3^|t9Rp4iau_?%BdJekO( z{@lkUlN#ZO1csCAiLv z#53i*kjx_atisudegB7e4&j_~^19oK=O&&{I`atU&4Y;NCtg4j%bTWVPi4U(bYbE} zi5KylTL!Gd#ETIxZbk6C_>D+pIKRIRS; zWXM+~ZWFIYd=T;K#Jdr%LA(p`n#5~)19?5HO}s7fI>cKN`)(WYdc+$MuP?rVY;Kr$ zj2wwKCf+3PMZ}vDZ>IX+T)0Ip7k8f{BU=-1lXJJ=mAM`9_QX38??Akx2j%_Kx|aPD zA>KLPd{cw&>VClbTf95*p2U0jJZ>|xxAk7cd)wSGGLvnjPer^B@xH|Sc|8v+c7Ngn zh!3>I&&bAmdD7PBqQ=##4Rs{C1(+R1jWRbZio1E;x2JUoDjRiC+^b`Cca&Ghwx6~yF~8xV%l6|ZZp1@_yywoh#ywm`-va$nshr4 z63hQ_r%{?HkA4AoLE}k5I+!WOlf2h|74ble^%H1g^uO$0 z68jycLjU%DYoVQS{jxKjaQs~8=)wu<*!w??*vo$mDddyTnN$+n|H+L^PG^doOFk8y z>Aj?#sl6&X)6f}1XIk+QuLPS}Tt3~9+bc;sGx#E;Gb5dud=jyrjj7HobY`bBD;=%> zReSEuI&;vOb6B4y^t{bYX9GI(&{>?$ymT}$Z7JKCUv@NhItzG9brv)fSx9I}FEX<9 zC3F@QE@tQoE?I)k3UrpFvoxKhY)0_=lzeLFEaPLRv#hUbI?H+I=`8OLaqKI!ofYY< zrA)3Q`zzB~g^uOWO6QyZUSu<3b8%-4I&1ox>YE4rme39Q=8x)a9XjiZtVd`4yyS}l+G5uH0o@oy4~C@d;4x_MDneKTf5xy;K^<4e#Xi6bath) z1Dzc$$d?VBom8tkdz*Uo+WOybTj=aYM>{{}_RX8Q{XOYCOlL1Tx6s*}jy3B(bdI32 zFP;5u#L@9b!0u5y2e=FE9O!H8&OwFcgJt#*I)_SrnDB5zlZzio=V&@d`8}-pBJVcG zD9^`w!M%?iCp@0c35DcDIwx5r`=$4mlj#_qLZ?mVR5jTsoeG_RPT4A)jz0pBJfstO z<=DT*tc!XNtkP-FsnMx>>bA(SQrpbcY0_y8d!R4Wt*6Dd2}7sjzOK{t>T;4e@g(|m zQZKR@_abC;26U`8tizl`=X5$&KWA7)DbX|O==rZ_;OxAf?IWkEy>sbYLFYU=7t--t z06G^4y=L717}^Bdxrolib}4Q>`BKHbOn7-NcQkz;dRNi8md@35uCY?Pe2NoQ8`sgf z**~t@xt@;S0?@fpc#}7c>1gb$@^7Vc51rfS+)3wlI=1ukz{otlqo};yMd$9k?cBjG zGAEsT={!K^K05c0`FlSf?8BCQkj_J13BR1`Ui9~u=sZH_eL9cQd6Uj#be^SSUG5n= zkNX_jd4kT99@m<{N1{#yb)NRU7h7~$&3pHFj*czkExG6EygAXtk z6(0!p^Okyzj_>>or(oN%$amp7Z_#;2sl4r5B3^Ir(s|GNfQ{v%q#w}vj?Ra4zM%6F zozLm${XafTJ~5kgJ{5lE-CI+PGG?9UTXl790d=$m)cMABbc16Br1L$UA3Rsy3fdXg zD`M#UMAr)bv&{Y?{MFSwt>5Ul{}=y*j-UUhBmeKjj{wmfM>y`t9G)M# zPqaHB-HGVV<5Ns`V!F_shVCSEr=UBj6egoPxtHCVz!EYvPuQK3?o@QA9u7ds>5id0 z9o-SS)0)oMD0HW%JEL9Fox$ZcWV$oaot5s)bZ2piMK}8{pN+1+KH6)bI|p6g`H_4s zx^s_Af1D2!%YX^3S-bPn)oY@iYYOOE5)05>gzkchwUBUOL(iw%UzF}LbQcp}+~qD@ zg6@*a-cm(!OMB2T>1Czk_n{&y&@0hhk=~JXS0Y)5?#gtpp}Pv*Cf!x(?oM|#x*OBA zBCJJs4Z3UkNU_^J>+SMabk`o)!z#++u1j|Vy6dT3eEmPHVQ;1lCEUm*HfeS@p}P&; zP3dm!!>zj+-OcH4CBB8KYfB%hmPt)LPOSHKx23zC*O+;;?)E-j-0}`|{T6`kPHx=E z&UAP2anaq?hm1>h^B|Y(LH8)Sd(u6E?p}2FcKhCx`;5$=(A}5r!F2bddjMU3_-jjC zML&@4LBmT4=^jG&FuH#Dv#@-)E8C?v-;ur~vwV8dj;33qdkozw-D73#IJzg&J>Cmw zj|{pexa;;qBnX(w_J_cXev51Yn(RQC*b2;DPj&fh}a zf;Y{DbT6ZOksAGCx?1^rOI_*(u~J)E)D7rfLHBC9SJJ)89bFz|dCq6O?zJS7(Y=oD z>vXMFEgLt`y^rpVbnjIGZ=!oM-8+=%Ey7!cz6C`0c0;woox;25-b43p&x8Hcubfzu zc}v}&-vs&lvbqn_eTD8rMR6XcYr^O0K1$cj`sTll4rSnRy3dI`LH9|zPZd#~mhhS4 z@>x&Liae~J7jjPbMI&@y629z0cXzMSea$B$TclZ?ctPGEnTYP2bpN9J7TrJ9aBtIn zhwcw_-=+JpB=6CE-|Ntu^#kFD!jD|&c0Qr|l_a0i{Y(-){B`{==;~fin$r1N_zhiO z|I^jt-!;E4tXYHpPWMN;KNXUn73CM$q31mB-4;gMdC02 zA1d3_oQ!d91IjX!OiMBc$#f($EBf>#Gxz|vCP-!^naR0YM4_`N%B&=_4a<_u?lYs? znUiEL*R)=g%x%e$%tJD-djM-hEdWU7Cs~=qGPw}R0wnJIP19FXb_19!OtOe4XLkz8 zq9n_cET%*k7cSw(y?~kmlBGzNw%U+n8R4=*`G1ppmR2BHQDmh&x9$XzRY+DRS(Rip zuLRv5`h9(}2FcnaYm%(xe*^y*V zlATC=@$YxR$u1;&NOM<`-9-Erz<-u)Wte0ylD*A{J2&edo|%0~4j|c&WPjiAF*WTd zk{n2KkSDDc_XSmQ2uYRXP?D2K4kJ094yzWHN8l3Yx3so!QMmw0V>9bV== z-wrSNz`ugt+$1*kpCh@7rUZa9@peTl6y%WA-Rv_A(H#0{DAPmu{yf+ z&yFbiqq=;|FWs{5n2|g#d_wr7p&Pe>@9q8!iNE~8``J3c7rLo3dlS){nBJuH@S5yRGOX&nEqaqlIJt0&Jc!;@^t7t)O)U%4&>JH%BAiw@op5@g z&i`1V)*PPVOv0Jz`T0+JvkGSuYX86I`~T9Jlipl8SLi(SR;M>Fy=CalM{fao^V9p6 zk5-K)UqSU2r02(Y=q*HVVS0Lgd5Kv<@c8IPDhvRIeN=mPCUraI)*K+dv*)3k~;_MIlYyItI%7O-q8QsK9b*7_tv1d4!t$$tu39k z{6^B2bB5j=>(bkn-g@*l^t<@p`t&w%=VlJacCmUJsrVa9a}#=-(c9GXpls07`+s^{ zlu=dO036U%_t&%yK#QF9zh?{Ip4D0Eoo z-bP2{r@S$GOPKmRE{N-xN{A-yu` zWb{IMkyo;BUCGJBEJr!b1~!dfw{1PtRRP z9%Me5-hkd|^nRyzI=!ptok7o6KJ?C{XN!L$XAA!$^hW^n&J~`QFBRyWPw#@97m^F< zT_l~04Mi>yUMjpycsac*iblE8B0Kvf>m;{{+(7R}k(;dT z=-n*z#lM8N8cO1aegQg8PtfxvJ-sJ|Pto)BzxXrshKqlC&(ZV!e-CoYFBUp4(R*3SuN0D3b@`g` zb>SNx7Tdy+`l;!td!hc<)1{@{#ak;U|V3#Z&)`-uH^D^FO^W z#NC0@`-+|x|GjUD)--?h-Prb}_k$a8P3y6m@0|M-K<{UIzxZmi_p48NF8R%sUGfM0 z)#&|6e+GJg(H~!-f72hw6-=}5QviLPH*him{V64p|L;#kf8s(D`jZUv)}K^5lhL2N zkWArfTExH>5wWDNBDo`tuh&mn=Yk!C}wuFGPRgoEMTs>1+MpU!4AO^p}tk zU;K+KC0v^RGQ;NXFY7@zC-!{`pud7}MPG#Yhw>ezXtt1>90wD zQ~GPs--!O&^f#ctj+C|k-(SyLu)luZrs5mA5u1E%aoCst?{DJy*ZPP4X7snEujjx0 zEj*S--;(}TzQNevTDXnhK>cxq_;#wX?dk90%bxxY!X4@F1ANohq-mcIOd-~B&*cm72^oJ7A#--=wO@8^G{e+vCmrRlc-^aEjO zY%G;A6h`zb?)>{zVa-tTy0Bp=d5eBmrEUvjp??BQwVHV5-H7$czNg|mrJpI?K`s$L zo&K}*&!B%b{WIyG<(=6p^KAO()Bg|sbBYX{>q&dfpJ%8Rynz0tsyE$1_b(K`h`#%O z`tJPmI+Xk}`j<<7MJ}g*CHd?Q2{{8f?rGE$g>*(L4JYP@$2E}s!?>QNkeT_k`~onvVE~^gpHl5&ci-f9#o8PI9FG znR4~HP|m;qrDA<0{95>p@LR(?I{oiSC!qfW>3H=2m;P@ysYz!gorZKKUkjza1w=aHO_@$BoK85sa0XKU|F3ah zkEJt{`p%CJrF;;jvym=CIy>poz8+5JAf1zRQPR0c=Odll*R-~vP3Iw<*JEjkOFDlc z_qzbn1%wL<7b0EQLv2*1i+GQ9g~dphBwd_ziCp5fF|@o?uI$s6SH-fV%Zb45hFo=~iPUq}!1Co)77^ z_VmqecuBV>-NFBPE#nH>iF7a0oyB({-F4)!6UBEE?k;raKXP!DbWcO${Y z^e9r_{P9C*7T2vEOM0AN+W5-~FTW2noKb`SfB()qqMEVHn!^0gX_eGDA`pVy1)^>HgmL4a4f%FN|=SkiF%ivR_ zPm?|?{)`LV=5u*yUOJWiMbekN_4B9sw(?A0Au~7fD(Q!$uaUk(`a0>G>Y{J>!1Vs` z7U|noK=*{h9{4Wl`wDu`hQDg#123=b4|sV$BK?!}W76M9Khb#k)c<*ren$GepOj8N z7k(kMe)yFQK=H3hzbW{)l6+@q64D=Z>F)^<`BC^2>CaYD@n1-P&AH0{JLw-@V|Hh% z+9Umo%-Zg6vYCBsX5)~JOExu`amdCW_JM2yvI+fv$Js=}i4DC!xWw20WRnUf^B$E= z?)}Y${s~|*|Na-*RE7$jhD?4w8zcD$*|fQS5lj9*n}KXb>CZGalx!Byxed~6RyXV$wm8{*-cr_iviZsWMYagp0%Qv*4?6#8 z*|T1nE$lVp8D3PEi+Q#cB(qES?rydu*-~Vyku6QO0@*TT%X(M$vM=XZau=eL zWO>j^lCLaWB@cDWuDm+gnq+IZ(0rzOs%$MX9sV(i<;TmoF4@Lp>yfSRYF>~Hyf$2U zL$Zy$;P&$(Y(loFSB~8gWSdEIbF%%&wjkS8Mcb0hA9|8)O{N8Zwhh^~?(Qr{I%w@Q2Q@HmXc-Ont5ef0c{$x;(N~h z`(I>d_}Mc%mY<#FIxg|^KV<(Q(=CAWb0s-Xcs`lWbmF?#$Sx$isE}MN`6XnRl3gM0 z|NkPp+!d_VJga&IM0OR~)wz)D8V_={>-f(UWY=^0H)J<3uwHi~*|TIfk=;jjGubVk zc{}@*-D(9VyUp|LP3eyS$nFqYsqZS}caz;C;k~)U=a=k$vIl(n^B(@7SB?*mhsd=5 zlllG+*`vb8Jk(x?mHm%e@Nu#yM4l8rC45@=jG-%gLqEr0BC_YnUdY!cWH0*p7B~Bn z@MSXd|CZrb$v!4~jqF{r*U8=@dxPvv_y7NUptrS0d7JDVw`^+|pSB(#dynixviHgK z^3V4#^8H&IjPI;O_L1v&Z~uhsYqC$tz99RI>~ojfBw}`K8J1ZEe&uUF`-|wXM_Gk` zPxdX@cP=qyt5~m}AILmWPeOA#*-vDDko`=i4gc&HvR~b-Me*Ef|9{B;WH27tUkt_} z^TR*6j;jsE{RbbP!2}E@^ppRlBQ*vSGgyZKo`=CCJ|qW|GMI_MWDF+vZez_on1aDH z4E*~qvN;ulshwM>CozV>bPPtkUk#?sh2qmQm|>{qK{FQmGc#C;!7O?48O+LHHU_3J zJA*k2p`ZU}Fc$;==dTGF%u^6;0eR^B4E#k63@mg328%OTP?`$~-T58+Npy1hd7VQ>_KeHk3apjiA5v;{QqEg%Ly zniw3!;NW~@F*t<5p~F#TW6doe&fo|JM|#1{vYj@xxxkk3_9S$03|$ zMkYRhL1oxdHZVQW8iP86#?Y}?uDqlz2G25RGkAbO%;0(k9R}Aj=rXvFLBil123B1e zgFb_F%v-Bjy1pLs;tv>{=9O$OxG?8AI9+%KgEM_b8=NIPTlgQJ-E3xY`MC_vXK_7+mR= zP3V@dW^j#vb;62f66vb2Ze(y11D*C6=n=p`j{tn|`r#ib-_GC; z=iXKB6y7DgTX+wHdyCNfB)Q*E5g%lrZJfdXBkL`ICAXQj?QpIQXE)6Jgp&<3Gcz+Y zGc$8?20aWOk0;E`@P(Oa!;Ej3{_flM$w~cHQ+KsmtyYU#vMg&J@g>lZrhp+$0YjPs zhI|TO$bL`y``MwV{ISkCPaBH!EJM$kn{vLbSM7|}&l{?Cx_|0wo5hO#Lj<>(cF zt@iDR-H`R+pZ#fQ=obsxPxNo(W@PAha^{@>kjMU$+$0SBxR)irg~fmh~Cgqn7jfv65QF=2jrLI=L0aU&)LYlTa(;cC%L^OxpyK-ZXa^{4yVe}TI(F>wAa-^>4cIynA{=c4pU2| zM?lH>{*Nd3c07{YG32b<`2LSqg1M~ZIVg9mJFeVu{v?|_p4? za%ZaQP9^740J+o2>H9C6S!Ow2ML3JxW#rB#caiyIa_6XB&LwvqxeG*}@Ai0OU1*q2 zE;hO6F1Gd}cZu*)Z#%Ev%e_OIk>2RmpRK%Ck*krrn%p(+>%1Ma!#}wkIo}|XVFhwU z5hdkS7HV1OW>?5njpM>@Nu8XZ|4cdFXIkVspLXQxi2f}{p23V=m*K^{7lZ*|KuJKy7TuIch2MFtsS56`8{XBx5zz7?p1P6 zk$c{@amYPQ?imr!3ZL`69kap4tjE4U?nMzV3124ninoG!;MCo{=JGE2y6_F*o6dB1 z^fvkB$h|{;T5|7_`-9wjE+%M#G{y*pY|K#-YH_iP| z@)IfTU*!D!4>@1|lONB0RDS$)B<3d|KVd?PKQZ|!$WM~wLVi;6{zye$`~UgL(tPv2 z1!Oe&DKklb1Ry^(d0+qgNb%rk@{5okLw;uR(}^>^p@Z!TgBq1V6vyq2~mzbpA|$nUJEZH3#B-=6$VqIVGPXy^k(t1@wR$vVkyyi6p+zp zkUx|Bh2ozjJe&ME=KSFvsKoitVo$@{Z_dxm^OK9)>BDGT`l`D;B>le8>+)Lc*gUh+4P zzm2?^aWnawJZmeCTXhThTb(v}B_V%1`Mb#9L0-<^hOouDRdB!IsZNK z?>jC1KCk6JApaTp56SzQpS&IcY@L(;g#4$&t)|-hoV>63$?FpUAC)$ozajs%n`aee zXtSORd`Izb^50Xispkg@X3UQi_9Xv*6jmnx6NPEX|4jaG3I9U=R}u36`QOQ#+yBEj zp1bTM|Cj6ccKL_GBoxMT`GVg6IxztSz5I20B1KK?39ZfxlTw(90%DG$FgXR^|Myta zR+xgqlnI@bl!7n*DNN(cRAw}V*(r=kI25L%Fg=BtD9k`%MrS5H#QaHNW(vOTLt&OA zt?1d3Qc#$K!on2hq_6;mxhTv-VQv>wE|Q#=!h96G0+S@NP~D)gpad53D8*7(gu=2E z7NxKhg~cc=NnvpcOZ+$O*b(yD{3&SjN3}{}Ig6#RJcSi0`2J5)EfiKtQ(50Axc{fH zDut~ntVUrY3ae9CTg){m`2G)twY&zbN}XPZ!g>_eH9CE~Ev)ac9<_mYzru!@g!p#&k1-K2@ zN$h&z4HV>83x58`<-Hnjal(Gyw{N3x7lqp;dk5PD0!N(~)LE#zENh|2njKWhCQlFs=4iCGZ-BHz>UBe623Td^0VJH`d!;T|V^QrMNYP_b8eNd!NEz z6vk2bjKT*LtXv=Z#E}l1k12d&mEfJn6MpKgV+*{(=M;XV@CAi0y{~%lzp^ht{ez&w z*A%`nLiD%7?jiDNaFgA|KAhiG`DRS`SW2k>C&Sb*LohirV zZ$pYxQ5-{YYTul+;aQx9;}qpU<$IiB5EiYpsUaVd&RQ(SJ$;_Fge zhT^hD*aBF=#eFDlPjN?zJ6J+5wb%Sk6#dQbn7yt3ccHikMgRVn;%*do zx3S}P3MuYsw2H8oaBq)t$$crFLvcTf`&$k88`z?meH6t5DIP}gAc}hP>kV`W#Y4Tq z)q+ZUI7MClYy+owr1O(l4<1eN7>XxRJl2`cIZk-I@C1q{{#V}0a!SIXc&cPhqj1S0@xNrg(`5?cG7~Qun>Z%P3YT zUQRJjQB#0TVMR0YD(?nPUrq5EAArT7jFU_KjK>xvQxukjWuYGdQY!1fb#ZFWu_e8y zYB=pBYEitIVq5*TLvcV+=RZ9vlt7PSvoH^uu!+(YqRGg9<@hHkK1{($ho zEb3wFt`r}k_&CK!$INlJ{U| zPjMW@7c&3zBE^>|zDe=rjPr{8(yJ7;_;(-mx;SsRfLD=T%@pPQJ@y^NzALmT;C**x za%lc~rTBsHL*Ylh?_m{ddxJ%v1vKtHqxcQQ&nbRkK^O3W_NCDMGsUl6GIfvN`c=2y zPrj%43&kHO{-0!ibQvGT*4cjcE@ZFH(~N$l_?yT2p!i+(|6%Rrd!)rbg#uK=tRsl1MWy24o~%|&TeO0!d%&64=f z<$eE0ggyat$+;;lOlclU^HG|2Skeee^HW+t!rG#A&VrN{O7aqa5s59D=oGy;rBx^` zL1|e^OHx{f(pd4Aav9gKv=fO}cYBtTp5?RH6(qAFCHMcLS5D+9tx9PtN~=-Ykkaau ze8Ep?4N7Z{(6%+(!aiNgAtM&iL$s0d8`MIPc%?Ek&3=h1y1NE5rOH#fijwdA zQ@YwmtNGQ^5G8*ia6PtSbWVX%g;J4HAjuM?vMYC64L zZlQDsC2aw@0k=`QJ*|zTEG}~wrS~b_P3c8S_fUF{(!G?7e;=hsDcvv4dih(*UjCLI zqV%x%k0cq1eoQ$&E_`Cx21Pwd$@hOmKTSz5j!VyuDADtjUKm#8vvcVsN^eO1WlFDD ztBHP9_!=dx|I;$QN$DN&-=g&PuugH_6~1R^d`jae{Y>ctO4>3ieMspeN?%CE?|-25 z2_@eGqV$>Y^Q0+7f9Xonmi?O250v!%SIPJPDSapW-q6LI^P>~4(>lEO2mjd`we$<+ zNhtkF=^skE|Dp6dr9V8@d*+`?@>dr8J1uxw`#VVaki7eAO`J#VGsvPs(=xk6N?5q^GhIZsnyYuR(cf$}3Y|hVn|3mzCwZ z{H?rvRwpY^UU9fKd?dQIRVc6OdQz)aqipv->!HatuSt1b%4@lR3$HC)$AezR^(b#a zd3`ZApu7p?4ZSCnHxh0<+&2{5RH!4M<;~M5*SV#VZ$)`))xb8wZPT)Qoor9JPI(8) zr$}-~$~#d$i1N;q_o2KC<-Nt_gMfq~dXH&j_@;Q{xO^QSLJjtIwY&qo%DVvkm z`F~e?G385CI$!_0TEk>Sm#?5)q--+RP`)b5(f?-A{YH7nvZkE#GvVdDu#mWP(Iv|E z^4B{pWlaZVe+59fnkla(c~Ndqeu{FFa))w@ay!wV)l8T2t&~H`*HM=LFGteZcQIEU zQy%#2Q`Y%UV?1G zwo95XExYs2nD0~mPV<^QAnlP`P9Kl|#%_1F~fYeGAwuI3MdNhtqGFur7b3ZVQq z<$p|oV7x?3^aKPGCQa`-1``oX>}DjD6HH1l836>N(t`XOHM#2yrf^~F8^KgmE+Lqj z$`l0C5WG(?Ey0fd_!f*N7(=i$!E^+(5KK=n6Tu7wy8Op_oi)0P&Fp3*9Uz#MU`c}6 z2$mq2onT&qISA$=nA1-U*;TrBt7I^@pE7d7w}3>CZ5iCov0>N?w z%O}=)?z(`HU`2llb8RaVtWB^A!CJn(8JG>L5v)m|^BBPzZj7llOp0td+WX329fHjW z)>U5X5o|=TzCUsX8xU;h&ztY*<$`lICfLMxGM(PkqijFQc7B4*6P*NG5a{ra8>5p# z!PW%Zcn@*Tw!-ZQwEho#{qG5_Uj;i6TuZPs!FdF`5S&7=E5V)wyAk-#zaJ5C4gLyv z^cQat>_u>d)f>Uy!hHz#B{)d*egylAIKX#-f&=|syw$(c2NN8U&=NRQc$o0;gimm! z&j`U$1Sb+4O>i8+F$BkYoy%19-s1^Q@SqyVAG(8+RC^~I?OT!FYNryMLvR|w*=p9) zmCG3fXNow>(36{Cwmaed@LVtE?6&W1xt~u^Cb)p$VuA|^F7o!Zp<(Uid0j$qsry^= z>VaSWKyW$15Wy7$R}oz4$4E?-chRc}uJI9M`zz^P;P$b9`*t@Yg{Eu=hHW|Eu zz5@2aXbD4t3PFv)wlp8I;h=rw4sFSk2r<@EF1E1b4XQ ziXym^;4Xsu3GODim*5_&Qm<9JL*Dj_0`32J*&iTynBYMIpXR*sZB^i1=n;ZP{YFX~ zP_~!owfZ>06JFu=A*w#RAb67CS%Rks{GF`t8U@d!Uu3w3=LlXQ(B^;eg53wM>UvT5 zlJI3izZxrel|Y+6UM;T^ysi3qgWydsqch(!bmN_VN9eZz5xi&UmEcZq9Ki=_%@2hi z5&S^#vB!EbKOy*3#AgKGi1?g9FMmDuOMcDp~mmG3VtX2-q3&Els}52=lb9$ zDoGdmncx?Ke-!nr@HgS_!asz666pM==lHjAeApUY8BgeM1ib#8GoetYWhxVko`lMz znLOf*qLOX_QStpBx2-ZIl_PyPRBQ^ETEsNoADlC-aI|m?mFcLgL1lU>b5ogt%A8bY zq%sGUnW)U{No+!?=<~G7tTs%j%qE=Ohm7?TL;Jbfxty@vot}rvSSs^USy&d%M@8>z zDho)P9ug}HdU7x0LY~TV(V4W0@BdI)Ot`pkiA+H2e~(>?%8H6wn#wYkFO_A5%L$hk zu3+d14PE(4R8|&$6`>vBwp4ZnwBhQ8Zj94wQrU{iT2wZsvNn}K$5S~fpED=66h&V@hE|v2#&iPa>@KNAtFBD!Ryx0Yd?^#?*{* zT}S0H;p4(53>9VH%iNpMPl@w1m1jgeD}2rcJm2T3yg=m@DlaPdQpSJT32QZ%c~$tD z@O9_gG+KF+%12cEzelOOP33(m?~ML%Q~ObQm&$uSUE0rUW1N4IW5?Gk9|(OGPB^a0 z^?yR;Q|bAPs`SUwGO(lUTs7~oh?EA-YQyEg7+R}=c#?WZ0qp8kL zbqv)R6`YRh^i*eXv9YuJcQKyPOjKv3Iy2Q-END@tQ~cRn!18j#=Ab$+)j6ro?SKDK zoy!Eg!aeysNh+%IQT-p)`Kd18xoLOHEq`D~8rKv7P zbxEp=Q(eNXva(pFp5s`mOLdUvXOh}cuOm-B4}?yB~oxi9ujDI}UbCvc4;fYjF zqI#C-lc}B};#A>jh9XWEoJ?Nkcbi?_1g?~ZtEgThg;ysU)FFq|943>eTBBOd z%2Wf-*Nv%At&Xs^PW2vjwg%NE)w`*-)Z*6FZ;_r3)h^X*MTb;-nf{1sU(8rINcd*0 zg4a>KKH*Tkf$EK7CY|u+VM(gy|L>xDoB#82^>&$ehwx7Sk6Sl<0CTM-`6$)rMLb6Jafuo8399b=sXi%`^RGTF+Q0u5@hnyO z|1|i5dXD>lcgvpkW$MpUeTAAi!&j+(r+i&seVoM9jfn3 z(#k9UZwoLtcpO!I?OXjomH#2tkGz-qsQg&?3Dr+C&Sz9V&j#ifiv7|s;kbqF0jxiN zo0uy4dumHk{lR0sZ~RErI;uH*%lap(KYNli)vwgdpZ}&Z{w@Lc|04br{w1_h|6_zZ zUNf>bKDEiIO+al@kF8BeZ6YH?PdsL~G1MmUUTV&^<~?8hQA#+Odp|R&HU+f>#GjJd zRMcjqHZ`^Bs7*s{G_`5H_3dY4wl*fEKi)(Nrx(uPOt)kvYI9PXnc8gBW}!B#H>kN3 zn^VTlPR)LEIBjmtjGymGYI9MWm)hLa=5fgnH#M;_V;`k9AGP_t;6A_m94*`aCtOgt z5VeJ=EkuU+^#0d5D~q!VwN+(Fw(6*@u2gGKbLa0r7hXG|sjZ_}YYv+NhLdbSZAWSw zQrm*sMw#Ts)Xe#t8SeZ=Y({N!r?tEhXG>~ZQQJCYdPdt&+cpVO+fG?;Pi+V1C?U0- zsQJfV7NoWdHGSSy+f|agQPcb1n$G{%^!_(ZwKugxsqI7U0BZY6*#82I+Wv_u(FY0- zlIDY{9g;?+8V;kTm%O#ZC3Xb0BdHygSe2qH)GOfHv6Asuz|@XU^iVrdjd)Vhg49l? zX8zx5^3;rT8nx5KIV0noso+`E&Zc%w;*(R)Tsx22{nXBB{=6c}`)NZ6^ZZk39W-)I`f`-&?6X$kA5qCI|3g0Ep-NJi>R#&daYs|;{1Jr(} z_8_&ds69mOVPi_{5o+&Idz9KU)E+ZoYVQB3Jt5TM--G4>o}%W?-@SyPcY|lCy+Q3c zYA;js=|f3gp!Q-$zvP7EslB4uSE>2pU-avSzDZRx|8H5?`aj{nP3;|V-c2}JXR{f> z#KuwkfZC^`KNNmM?c+p}+9yW%7PL!#M(uMEUu3agCaP2+U#s}`2w)ZaEw%4_rCR%* z+Aq|8pk}4}(N&q3vlV9TCu(y3woFY{sx|Zfzj>^=WvfZ6YR~ZxYJXDu%d<SJA%r&^l&qtut7en0hP-3io}qi&V6JoVG4ub>)O zQD}OOFe9n2OnnvVyHQ`2`j*sJqrNfq)v0f2twwzf>T7!QIlY!}ZQ(k?b%pB**B5SJ z=q|qDQ9!)TO@SG*^2tE)VHR-Gxco}N$T5D-%c8~7n=V!Z958g zG91=GeV3FLlltz|_oKcC^}VU@X;IYo`d8kS>?0-nCQR!4Q$K|I0n`tY@PUao>Ib_( zs`F4q9Y+1|BsP;dlKSz~eF~s{wD1^15yuMk*FP!e1aWK%Fkzbl3{R$h3iVTs{?|*? zPp4j`eg^gPsGmvwT=k8!)Szd}@^k!QO}6P1V9PdTu|NVJH@)uLTgnC7N zMpHojGU_H%q<)2%R|>BZ`Z`C%HNqk4xr~#iUP$OMCoM$1B!RLpFpd$9ZqmK#_I?Ef z^*Z$i_3K49skcOEwN~$l?g~Rg5j|lf>J5hJ&sDZ8q_xIQ0jpKO*8m>JO>09`*w2f!AfcBRxj_IqLHN zb@%@g^C^J(lR`ZL)b$8Ze}?+AiHz4|s^JCd|4@IC`g_!0qW%i?my@VOlKQK%LF@ne z>(t+%{+2jzx+UJX-=_YKJ5|s0U4O2zpVRMC|BCuJ>K`lkfeil8opb#o_g8MeJAdjv zHHi3(`se1IR25$czceSGDgT=KH`ITpo~-{Z`FGU6r>@n0{Risi|9!kr|3B)s|C7)^ z4?BG7zf%9r`CiH1RjB_#{ZH$(qW_W~{@ZP{`frR!V{aPc)7XK=1WIx*jR|Q?L}LNolN2!#Fc|g)~Odn2g3W?h+f5dnp=I_%LZq>D{$46^*I=Q2O+1_*rzb zwlS?zjixb%#&q5^=E3ZFurYnQwr|WxV@?_~$*P%^<194h5HTx_*=Wpev*egf?KrD< zQUAGlbJ19w#@sY~=SRZx(pZ4Td^R=EnBQx_yMY<-KN|ARx=~n0YR2F%f;@Bu_>~#6^*TFY?J2Y6}T;p z?P!?u_kBhGB@6zBO##*ucA~K}ja^0W;xe9OHwAa6u_q1R|4~7bsJ-MfE#W>iuA#9n zjbmx-C;9!=I^G!+JdnmgYU_iAhX@aq{=;Y-MdNT9K6|Pjjx>Y4Al`OI(>TWJ*{j`J z)@$iF;qj^^%lZTw?)*)F#z{0zmgZAvTtMSg%bmt)G%V_L8fTjZ8fVZrlg3$Qo@=n; zJM$b_d#*F>=M{dw*P$LfXqqc!bUM{`bHb-#j{s)Itu$^Mjuqz) zRq~yp?@~eT7Uv!sCjWpM>pmLydn)S;wwu~`&YK& zg#SD1UIx5C<7G9gJp!2im%QgV;fsICze?jZ8t>3} zT|Mv(8gJ2fb415}TeO~l8uI*&_mZ@U42^Np^MR6os7ybi@iC20)ek>Wj%MCxH01o# zX8l5`zO=&nE2_8NPJT4(FJRuLVSfQ*_?^)H|HWwg{})61{})61{};obgg*;^5&kN) z@4qb8z6CSi5e>SxHpWmiAo^X8O1i}f0_WhT|+V@|E_WhUPq(b}t z%V_)f%g{dlGPIAs45tuIDV$0;wQw5Yw8GKCF~aGD(+g)1&M2HoIJ401|1r(83hn+M zqwVq^L%aOP&@TTmoJ%;ja30~j!uf=DyRXSCAheT3MlUE_NVu?Y5#gf3#e|Csmk=%~ z94oX7f=t8GhRKhn&VM$So8p#(Xf8k5iu2N3!B0>$R}`)!Tv@n^a8==ILf!DwTw}5o zZc=bfnrltA)M_->9yRVLn(K^ue_NXCj(T=tn(K|4=@pvm)3RJPpt&W@4Q0tj!i|NS z2<-|`vv4!v=E5xut?5N?MQd@IThsiR<~B6nq-j~aKyy2qmgDv`52v|<50j?9!l1d6 zaAzMWO>_Q+y9&+!8@;=558n@7_;M*L%i#|e*D@)Ky9gEDO=(maV~p61C4o+3O| zc$)BZq3{3DJX3g@ByijE*N7gXnKQ!c!M&@=6ofVf7;XOFuq?E#1EVX#s<0-k3mY_Vq-p-&WLiR<_GxxZ zEzPbl6!wIXurJi*pUr{jYlVLKCry9-^<+Yu^S8Wi6`KDy`gWn5f76`5 zaqbez`8V$oZO+#C_X+P8K42)~L7H;@O<(`hd_?%D@G+sS|Be5I&=&tjKPj}uztOh% zH#FyOXzPE&=Y+QZ<4Y{jFVcLKraOO{nhu(;7;U~I9o&>BN)T1k#} z$yD=nBj_1u%|mNOT655viPo&NW|sUcE|cn+O`O?>ISS56%U}M|n%nuQ=6Pu?Olv+` z|D!d(Vi)jOTT!^AKLXJ5N9j!SB1X{C{!eSM5&R`+twU=`S}sXzEUl$zEk|o<1(y*n zYv}p9!1BTsgewm76wh(hm;a0+}h1&?X6>cZo-cZC2wB-L=?*IL4 zysMS}Z|$nQb~DT@bpJ2rp0xH7vG<7BeZ{f$e8;m5*Hgr5pO6MioILinZdD?_!^*R;OL=x=F#m(Y^=K>|N!ZJM;~PqcLY zKkW~G{-2iL|4-|8;UAg&pS1oG=WpRZj_vV;;|nJcPAHtnP{hPe*y+mlq_mf(jhLf^ ze*Tm8(rgc>rYEsb4>_QK*XB3x9s zm~e675{4p{6pj@xMSE%5%Zgsc(9QF_mizZfzr6zO6~*-TzqIx8x4jDOEoiSQ&T7Kd zg=+}c6s{#)+fc+hw6)f1uSa`h+UtwCK^D6q?Tw61yGq+Pg(R@4a5LfNhTe19Thcy) z_EutUE!;-9t#CV`&i}Xl{6B5~{+ISnv=653uYhU${hzdV749a~```8+qW%3Z?Y)Hh z{v2i}sbYf2Vzw1g;idBOIdr80{SG4(&YcI_&~&Yp+FJj&`?TX!v-H!xHcNY5GR4ro zf%dJmZ=`)Q?VFO=OzkZhahtNc-D6WdchY`{_Fc5^r+qi=dnIts2!Z?3eBI6m6s!Ax zJovDSIq`__(M;##wBM)w1nrk;|3BK#(|(fnGm?3V_S2p!&HY(1pL33wv|kYC#e_rq zrHuay?YC*aO8X7kuSw?hBr219llEJ~9NO<>{CAC@{a%*iIND#+{($!9v_GW%iDEwz zewkyNT5Y5z=HMRT1$C8;F# z3+-QN`^oQEvy>}L+NiTkLep86&T`VTyl@5KibDDS&dQ=!G4!9cduKH|Ylv8VxTWZ< znZ>S6XA3&((9tz+optHx{C`L1|2sPW-_iO1j-UUhv$1d!SLMM?6Fs8c|BKj?&elfL z*=j`WHj3Jo&UPZU7w$l3FFHHY*;T=vggevO#fVIs-~UEucRG8F(6(n5ySHNZ5$-G8 z&oGNUK%4{VTqfcm;lXtL@&`JH(m9{bVRX)E#ciPo#4y9lrvCjy|jD`1K}Ps?)?jUFes;W&E?mIa_#+@Lb_}hKY=V7YHw;bCHOP zg_j5~HT0iXwZ8(ObA?c!oOJyDA39eHuMrN>DbdN%DJYmXR9e6MEwieus6bd5<||ke z)`bl^O%W}jJAXPIVVBOebVAWRVI=GeeF~s6FdR|F>%_cXc!Tgpp?JbRMDeI-N%)`Izu=;S<6n_a{X^C3OE!N7F$^{=f4ao#&0|b8$!hzw@GG-1&?7 zGM!h%c~$8CKUr_kd4tY-bl#-%wxZrjXT#1rblmf&F5P|0`*gH_xs+xeW%7w#498$kQn>bm3ppU&4VVBh{Y{jJkZd`IVdIzM>O zHnQyJO#A&t=ci2OXEA@F^J~KKKLYFgPIo*yf6)1xj{AQ)f4QkiLwnG#0P-*Ry7K>B z_y7K_jYW0k|GV=4-AU+9M%VqnqEy)KD5KNr>S_w;Y6|H36yRRBJ2l<;=}tp;PP)_5 zm1FOYmWDBOr=vTA=;=r3nK7wJ@ihf>XQ4YQ-P!57|My=~)!jM9jQUYx^8a1;{|e3{ zl>hI_|J(OO-390_D*pfIE+}Flq5FRki)3mSqq~$ii_={~gckqZv5BOe9-+H5-R0>n zlW^!ROLsY^lXmI4|F<7qO#xk>0({7H-T%{FRk)gPb-L@&UBd-D%KbmxwS;RM`gfgO zpEt!>Pq@Bt183Uzq%OY^-Hqv4C2vA#ZL}%fI^E6a9!hs}y1UZdg6qx=^+_$7~S*e9!}S4;0U_MD7mJ9uBL$Q(TSw^$I?BH?g@0| z|I-qkNY_{XBb1*)*Ihl`Q|Ze8cisPIIqD*y?pbu@_Pb|~(C<@#1?iqoH%IpZx|h?v zknSaP<^Q|x|1%l)|8#w7%Q#oimBa693h4S2kY#!e-Jub|Jl%k(1Zh z(<*ZRPq&)Mxc`@J4Z4rhZPLA+Zi}v*e78;4{lAiQg+2vHKB9Xg-9FuG#gFOA|0j8Q z7T3|ep6(4vzDX)c-bD9iy0_B3#hIzL+eXlL(0!QhopkS){9SbKrh6~ldq&9IH%v?B z0ijI+5B-<_2;D~&_1G|%qzlkN+2 zU-a0dS9lp;mdq=3UmZ?G_jS7C=)OVsUAk}5eVguEBVykfrj_cJF;*8 z>>AP@@+;x^bbq7!r_%l|{38*d`xo7R=>F}&;UwXBX>2$F;lxH0PDnV>2!TlmA)M4X zN<}zo1U)(7*@RONu1h#2;R1wH5za_BHQ^W&Bb-J!t#Gs_OiT@@6K8tD8JwAFo{4Zy z!kGzYBb+7S6Z#`SM$c{p;T)O#T!izAGq=$Fzel;ue1!8moo4qx!sQ7UBwSpv3lT0% zxG3QwBV-nHI<;g8!lek8lm1SD-fygexiS$|KUQD$Z&n z8CV3Fyv4jT`9z}Qv;o*dbnmplQ!>JTJg3z6Rl1iMT36B|;Av})o z6him^geMT5M0nze*po-lrxI!w2u~xF|4(Z`{y+5fe`eb`gr@CW!WQ9qghPbq6J9}h z0pX>D7ZP4f=>9*G_w|29yZ^(_bZQNYed3VLg!{^!0xx(rwLyne1`CO3&KAM-R%?pmFDQQZvi>8H$J^l^d_Ju|KFRCp8UVkN?;OtlhWfq z*7hc&HzmEvJquSdg%g%nZz=_+PJ*JRC7OlaXnHw%W9aQbZ#sG_(3_s#JoILuHwV2L z>CH-SCVDexdgT9;F5&uTlPdTBnb~uSGZ#H~{uy&#dP~rokKRJ`=BM{R$@mtKhy`6T zwR2&5i_u$zo0M6m0(uu4hu($4ixQopFQIoSy~`5$1nFI&s4MARL+>hj zR}ag}B(48b8}jttp;w@H54|G2h+c_ai(Z*tonAn%O0VL{)B3D=7D}ru8uaAAC;^ zZ`yb1{Xy?NdSBCfpWY`*HICi~^ga?j!vFU&|KIzR-WT*flfdV$GqvQ)gr@gZmhU(8 zY*2hl&)q(~?=rrogP!~UEbUM9ex>)b#C{p(EBKr6_blz7L{rfFi)dnce-n+b*nfz| z8%{+ufit5CiG1^C1b-6oCnXw1g!7Y@jV2@Vou3hsQxZ)>qQzant73^nl4vZ^ibU@JiIyf>j%b-oX4&By zAX=Vig@kWRqLql&CR&+jb)r>>eDfzumL~D7_nBo(yL$tneh}I>N|4;cF zWT`exqFsnKCEAu~Gome(c5|XF68TK+RzzD9ZIh(UnA;KUDEaM)b{Li? z+DXivQ(-q|SE7B0b|aFvk9L>9h_?XIUgG$SkSX7nXg?2%Lv#R<7WvVEl01mWoj;LJ z4Ox=Ih>jyVoaktxBNTfi(SJREbd1Y;!eg^k#}l0-&I!U36Taw^iB2IpHRYr=dAbFO z&LFym=uDzZh|VH9SIo1C&Pj#s>`inY(S=0k6J6j;`zp$A!na-J=pv$vjg$NlfD&FR zyo~5dqRWY{@Ow~yJJw%6|3|t4DAE-`QDl0w z{c8n`iTv^(`w?B6@QJP`dWh%-qT7jXB)Ubhe*X{A%_Gv@N_1P2R)*a{bRW^3ME4Nc z{=ZiK(wwQiHzV#RdSHYezXDVm9wvI4=n*1o+((HXSB~=ksfAA@lH%(xz#?4%?bY%O z(ep%p|1;5Z!(s})Abc@l61`0HGm$mQCq%Cjy+x!e;5^~$L~jtiIc%G(dYfn*(K|%% z5xqOCndtoy^an)xBeUqk;j~2Z|E~5^qVI`5Bl?=?bD}SazVNhZsr45ODgBKxiM}QJ zE>-?-OZ`A(&7Ho0AhPQRhc)~{e@dcX=}$=X8CY{W{{@UO>CZ#o zcm5MeaptFgF#QGSZ%W_NE=PYs`im&lLPEU)aJ7rlUy}Y}VlGZ!|NmvGQme+&Uz+|> zt~uo_Ltmc%U(WLM*P_1y{Z;9&NPlG+pj$fAB>oCO`d6dBh6uj`RAOs7k>6Aok%roNZ-HtqQ6nb*<^%<&FJqze{=fV(cgl;UHEL0ThiakWu!rzZRl@1 zBGvZvcM^XG`a2Fw(%+f>uHx^K<+U6A-G}uUL4QvP>_vY+5qs0$hyK3*mD!*Efr>pK z({qpoGx`wvm(xF#{^|4&qkla8!|5L-FfVr z+%P=_c=1o6e`==TwBaQ5&!B%E{WFb2|1A32`FHvp`aT!9WZEw0)4zoN1@teH@P)&% z^nDf(^U_3~{$&~G3i{@pucTk1e-(XQ_}2IP|LI?o$>iwk*k|9TfJ}o=0TL_IuhP%X zfA%Xb;6?NM-{{wqpy($3n0||XNMBda^*i+C{7qG=tw-N4fAgR#>1X@_{Tt}(^0)qV z^!4X2|E9W8!Z#(tqHiI#F?B2b-{{{){|)-L(|>~g9rPche<%I>=-);E9vPO-0`&j= z#*qH~ih96}NlWw){YS)nIJ4?e`i~{C;y<2A{y+LJ(0`KtGxX*By(*s0VxOh|JpB>= zKP~%<^k1d_68%@C?d9R(DCqv5{_BYn(QnfKjQ(5n->3h!IPcJZPsE6~z@BOxeR=-= z2lPK2q2XitpQO3C*r!Pp{mhO+23T|C8#B$0wfPKWXEMTp*s9 zc#=dWlZ1E*;!(tt4d+fgc@{e*@zhE_TC2p!-0Xs1-@e0KA5id?WKk>rE3lJ|zoOUw_yYu&- z)myv>@uCT>D4znvUxL^jKJk)5y#n^&(!|S(vrHzr9P#oAopDwqUXyqw;#G-PmhdVb zm1kVUj7aPXWX`Wx-vD_afevcn{*;i2vjN zCAnuNxi|5?;_Q=g_9Naup_5#Q4ah1uh`YJb&7P7ZYDWdI?mM6Y^1bwB^#8)L8;%kU2#6!d-;v8{- zSk6Dy>F575YsR%HUjJ>q};zf6jWUnU+9 z-$#5c@g2n15#LOFJ@HM%HxRq?cO{ug(sK*(ZN#?@^NDXCLEmXK@m<83=a26pmh;c* zhxmTtCy5^*ew6q@;)jVJ8qR{)CxRqM{1~yX`H3GNwuD$ui_UzC_*r5(e-A#B$PhnA z{37x5#4n_3vr-Vhlxcp2_*3FniQgrDjrdJs_y5Fiq)D89OPsff-$|Ki8@)&T5%K%P zA4p(amai87|K{cAKZ(;>fcP`wuf_RX_yzHo#M=28u3ne_hWJ}z_xZ%y|8e363ud|e zAJ@)F{1b!oh<|3VGVw1AW+(oY!Q{lhF))|@JMmxAU{k=KBhvoOKfTgZZIu_=@^V= zFy{ZKGn)klGb-Us3}#{Q?;`+%SsC~HWReHr5sUx9DhzgIuquNM8LY-&Ee5Mg#{EBoH4Xje_N>joy*-0?r*qFg)415Y;uxSz{dUFO_GT6d7sr*(9wjLIchHV+_#9%uHJ23cn3Sh9~uo#1# z6AcWq_5WZu2FEbiox#Bj_F%9dgFPAS&0w!YQkwT+;In`mpW44ag98~HFhWM_|J1fa z7#z;PrvL_rjgUEl!BGs3OjUWTPXtMj!LbZZV{jaUlNlV(;6w%|496P5AY1 zyFeawIs+~H2WMm!p2grC250}P!7Dj^3Se+PgO?dxz~DLt7c!_YxQM}(3@&DHDT7Nq zRa(-^l+oo3u1GjZ6oac66c}91AjjYu2199*G*y0th9ZN2LFxY^>nwmAH=4H}&M%zY zg_)U|nHet33~!j3nVFekWq~b&*xoQRUzi!bFn!Z4jn`NIDpyy}(@(>Uygl-0*UQi? zeXt58CEd=@eGJ{f(A^B(DFm6$T{gRX`7=ZJmbd{Kx}Tv(7HG{mI1tL-{|^nR z$r(RnFucY&dlp(h#280s;UGt^aU zQ8BA^7-r}(#dQmiERQqvL_eBQ7?@LKl%^xzPeSYX8 zhCXKKlag<}J~IkKpZ7tAzGTQ$_!UFns_AQnz8SE7$Iy=qea}$U`AZW+KQZ)kpQdyC zg`wXW`c*(l@tb9u{{I(4f0pIhBLB9^zc{8*|A#Y?csb+YjIYWBI1`TJ;!KP)8O|g) zC}Gkveig@=9A`=#z4_O*wfNLHGvZ8xGfKUt#hFeVOO9k5jWaz?)%mU0OgOXS%#1Uu zdd)JxpRKA&eCNQKvmXs-Zk)$)=D|4}XI`8QapuEW7H57O>F_uU;4Fxhfz}XmQ8=OsWHdE%Nr7zCrI9n>R zh2?LBvvn1@n$fm6JK=1Hvjff;ob3nm;tceEXJ?$Rx$ z*;|szboBQ>D}6sj_P6{4airnn9E5Xl$u}mP|EW9_=P&`aR7H-!xe4b;oU?I`!Z{h| zXq@9T!ZA3<4n#N}=R}+n`iOE)szOP|Q*chjIRoc3oRPyH&2lD=>;eOM&%wDI=UkkN zaL&WI0Ox$MR%>`+KMT&qIMViUF6l?WxvbQ2uE4nt=SrNbm2;Jia1GA26~BskJfR4^%0}sBsg816erj0 zSw96%VdM939>u8+e@b^8*$Xtn6V#^1c@pP)oTqT!!g(6!Wt?Ylp2yLRz|ouk@+~Bl zynyo}&ba;Gc?IWnt>IOi*Qz3`3-Jby-2dCuZ{vK1^A663IPc=Tk24l$+>;;Yg8}|W zIG^BrEJztdCjP07_Bqa1IA4@joG(ib&eu5A{XfpPINw#i)vSM@HWAK`IRD`Mg!4Pj z&p5vr4o?3)`76$E)kG?AdzbmmNihD zn3}YAYLif#l-gv}WFxTF$p`c)sZB#|suH0#wdG7pO?QEsZUN;w*G60G4AhpOHY2rp zsLe!eHfl2)6E$uAqR3ug%A+>B;&V`&OO-hXYM#5AS8ZNui&C49+JefNU*!S=OcQWn zYKv6J$gFh>sOeK+NxCGpwWuvcZDndpQ(J-BGSrsSXv-RD(=9&`c|~fn9h6pTt592w z+Q9vPZFO~DgW8%^glZ||{$EY&s9cxYdKEz`*#PfQY8&G2N^K)*uTtBX+Evsxp>_bZ zO{wijZ8K_HQQKVpCzSb9j@lN~%tj!(DUaIL)V5Q68*1AQ;A5!mKyCXHk^gNZ^%(b^ zsO?2mR#?KEmVA=!gnS7# zvkO!~6uF$*mC7;aKZ;lDb~Uw#+BMW3q;@T}+o@eg?Ivp1EBOX$W)~Rb-%RaRYUU$A z6`a~_1G;(sdoQ&+sokya<^6v->w8KXwfod`KeY$S8Cm=xYCg4xsnw`GLd~HzR1r+6 zTCF;|)J*g5XAh`_)aq(#2(Bh-O=@jwtpR3dz#3C~l3GG-m|9BBbbE7MO#e61>;)2> zT33e}a3tNM3O+{dacWPL%)X@d6t$C5`5y+G|{YA;eV{a>dr zGOt%G=QZ3}sJ%|@4{C2v`-0k=)IOm07PYa|-lq1>z-qi(#-a9}rh8w88kyRM)IL%0 zBb|;O0m%eErDksaHMLN&!(A44cHD(==fIs8cTU{7l{uGX&La^tJMMhA3*yd?yFdl@ue)2e zZj)#c+$C`r#a$fNG=IB#Qo|Bu9F4ye?$Wr+^n)7{?sB+m;4Y8567CAP`o~{30`AJV ztKqJKYnuPa8frAN1qgz>Chj`8Ybj{@zrD)ty147(n*QIP%LcgSEJ%md>^8>TS{*l0 zxhd{uxLc^cdCA1x5_hZqEHvXbxYFuzWedR79l;$_@)g+ucSqcvRo|)f#g+bFa&ULU zeGhkc+}m*Xz&#arPu#MSaQDI84_BMN){HyS|26V~D$D1;Rb|}j^wwhqIEXU)XfIHIpb=D_q*i%Xu)lb8{6!&!8 z3vtiDJrDOx+_TkmR!PG>2UmajXJqc@E8zkm=)80&{U7&Y+)Mg6?q#^w;a-k=6|OXY zT-gZZRn>Vl?lrjAj$8coxHsdPn}5T<5x0EuTe&DGTLA8@HpuO`Iqn^}F7BPUkKo>g zdq3{oxcA~}^Vf{H(*NZp@45$YAHscb04WcDO6yRG<2tyt0gi{;#Ptn=8{jr@rT@!I zVuk~H3s>4cZrfTT+!Qy)O{)2-mvS;Ymjd@W+%E1DiW~P~+{bXG`S-nWAGiD`ai3A< zQ@BqHr>f-H0sVR0*Kl9JeOZ|=;@T}h`M9qr{;KtT9rqpFH*nv=HTVC6dEd5qwfW2J z##-ckJkv%#z?&5JLtL{OAK`w5`!TNcd|cfT-17e43_n-!3tV&OZ&Sz`evSJB?l-vK z;mUSUT5+}iS8tmiai#g2)VMznaDKu47x!1(-*JB{2}a`nf%`YE>HmL~)!LfP{oh-Az_c#j#(3-DZHTu% z-UgMaoVzUkMpbIjH?eUx!`lOIbG$KlTi|VDaJ((?w!$mVfBLh~=I?Dcka2swo$z+h zB6pPF)qHox+YN6Qyj`n|6~23ah_@%+L3n%N?T@!N-oAMI3|RHyZ*`RqFgV_UeX9-+ z#?$8SN%OaJISjvncR2p^ct_ynct_&hh<6m;xp+t8orZS|-U)ceYLMgbj<2RuRd^!a zDR?L0Rd@bXa9NX6ZI;vV&cZuGBb?dKuEVqO&Jm=Fb{^gpc<19?igy8?_I%GA0hRCV zi}AGin`u@vy{z=bD}VpT%=${a>+r6^yT+LCt}cC5x4VGg*P94<`UqHtH{lK8-HdlP z-Ys}{;N6OMTYsi_w-4xdYP7q`$aweQJ%o2J-u)U=w*U$L0G>Agk!l}SM?L(h>UZ#( zcr`q2_@0Y5aR2WGcn!R|q*lJVmq$RR<`!P0i1dFveFPv%jF&2s7+E^v$^E~USKxhx z*Ts7k&yb(O8^(JKZ>0a@N%O~h0`JKxZ&mHncrV~RgZCWXvtlZ%67usl{)>1o<7xk| zGD`Ee*4Oaf$9o;`9lSU2-ohKV|9e&cH+;Nz@y6nn=Rf@jrvHC}_aWZLcpsHv`x5U{ zJZ<})>@(u8i$4?oQus6D&yPO~{#^L8 z;?It+{lC28{v7yomho+tx$);UI)3#L0Dr!L_zU1KioYPfbbkEm{$Kg!DUfko41Y=d z#qp*2OR43%sH%2p{8jLm!PoxpFRQ-Q7J$D3{z~{OR*uF+Dp|RVfWIpK8j7r@a&?QZ ziN7|!JP4>9rMB`ZfN@_Be+T^a@wdR=0Doir4b|N?e@U?k{$}{);lIAG{LLj)Rr8kk z`WeCB$|Bp~kHOy-f28@Be0=#_U@F1i5r1F&o$&X--x+^b{DJ#_e>eQytAZ>3p7?tk zU;Mqw2&(U6qwR-(F#i7d()RHWuya3XfP4sk)%@`f#XoG^_($MhiGL*iS@=icpNM}n z{;~MSNQA0}%Z@Mo-@NdvQy~1a@wLPI=ir}< ze*yk^_~)0oN{O${U$d+4#rT)tUygq%zBd2L$*j!iP--&-U{`Km0jmm3{75_RL z`3C%36u%MwCj6UA+(x(+|91S_1gz$MM@5iCci}tucjG^Re-FO&eEfR{2(lL__#plx z_z&Ta-25x9_x}~ArihCl;CuM87nJTch;9LrA|%)gzez9|ehdF2{5Jlx_#OO5@gw{U zKgQSo?~n9<69+%XHxUZ_?*EBDTq5|7;Xj4{IQ|n=0h07dYpw48@t?7UJ%|4~{`2@R z;=drYYOP+ve--~_{8viE@?RU^yn+8N{+sx3S?k;QBj-N`#2<_QzHz~qBOpaS!2hu1 zTd$Atf5ra<|9kvT@xQ|V4F5~~&+)&gvJb2${@3{5YRqr?R{ZY<^dInl#5dW0!vA^P zT(S|AO#I&nCcyt4|1X2!|Dp0vYyBJlKm332_3+1B=<-?z;}MKsa{7{BLV}41CXooi z#8re~QUdxM<4!O+!Ab;E5X?g`CBcjYQxS|Jn3`Z(f@y?Yu2L{v-;rQ6!SvNEB>oJx zl9>o*CzzRFRzoI`PXwA}Hc={l4uY!x6U;>*H~->Z&1GJKB?#stSeRgbf(4D0pgjLK ziZ=g>xd_2x8hp`y1cJqFmL&<6QD6B8K(MrpzbwHD1j`XDUm_OQ{$EwNGQp+y(Ou>k({3us*>C)++sffUvRBHnG;t2zDUYoM0P* zEeNFN6KrW~la0VKw`Jf)!EOY$|LYnmb5A3c zyf?vP1p5$NL9j2uNd)^597eD|!9fHESlWR$=D`Hg`3VlOrbA0b!NUoTB{+iMXo4dN zj;c%}d36hrB99|DL0yh7IRttHR9)qh2`(Twh2SiLQwdHdI8A6(&1VptS?U%!o8UZx za|q6@@R5w?Th4_9a?ekoJ4JA@#V=LxGJ?xX#Nt;HJWOyE!EFRr6Wl;>4Z(E;*9t)^ zF_J*`1zpJ-32q^{iQwjPt?Y_bhd;`>o#0-AI|%M3xRcK7t1{zU}|P zg9Hza8~G7}4#5yXoxmaR2xNN;V+YcpmRe6h`J+4H8rluUwxz)Zg@!>ayaf=9=V^EiRI)=vP8fAAc^3k1)X zC8_B}f|sgc75^22Hwj)P(B?1iqSp!D7&qfv1n&^MEsi=n4fSrR6TC<8Il=n`pAdXN z@G-%M1Ro7X81VX(;IqDo;0uCp3BDxwT4R1ynh5j}a8==V1V0jdPavNHgizr>5&S$Z z@(cB;2!5q*+W2n-e-r#pAU&Tz`hV$5AUlH53H~AY*GBuVA{cUgeCkl2fcnJLC!{`d z^Dm+5lTe?uA5D?Ts81mQ>ywu_^(iZY@TaCe6ZL7RkD@-U@(22VeKd9H`P8Q$aGBA@ zk@FwwdK^@rmHKRDwbnWZ^+n7h9_n+--*wjKqOO1cTbIB8Rb*c3@+ZL5=U1tJ|65;B zb^RiU`ocz+n8I0<`U=z+tDeBt7ndin^(Ck;sfua-X1KIUvmGp?in;$c;BqRnxDpyjuGWAtdSykm~Myj$p^);-%rXu<;0K|PA+Rsy8m-c4V*Q5Rl_4Rd$HlY3h z^$n??PkkfmyHVemx}5D(-$do6)HhRQb0byRLgkjD&-+D{t*P&zik=JAw^dy}1yCQO za{Kb{OjX}erS|{2^ndERsNA*sTh#jQ)Q_UR2X#5ar@klky{PX;eQzD^qjFy(Eq{MS z^yXjq(*LdLVCsjc^?%e4SLIOZ@)2O5o+A`LvIMCgP5m_L$520!`mqL7>v1ZNr>-~u z)}8uEil0pV6jk)_XT*BCf@e^dn}6zOQ9qaZ+0^C9Z&`qm)X(b=sb8SX3#s2s{UYku zQooq`71S?L{8E*dsno+CjYIuPMdX)%s9&w}8Y9iiuETW->iJLo2Gwt*ep8=A{TAwX zDQ@byO_keK%J2VBztc$b(rWKk+N2Y3dJAPpLml-KYMDCJ$Kd$l#>T(1`U4DdZv}Y7~R^@XlpI7;Uk*d6?@+Flo8)+P=ze;mT z>aWqbhx+R@)~Egk^*^Y;N&S85Z%LPs7V);qcc{N>k+Ia@D|HR{0rjt_f2g#NsDGx) z$JF(UAnKnEFh4JK>R(X*vX3kOYwF)n|C#!?)W4_xomfrrRSiE-|B?Dn6{0xxvV)oa z{~LAr{)fH`_1{Y-^*?FMM*S}uQ2*NysQ*J_LRJ2y{vVC;MQ@B(@f-5}4nV^ZqiM`UV|t6r_dn2> zaUk!^H1zu)1h2jVh{o(RR-iEljYVk8Nn>6b^8F9$t6M-rw*aYaJ{k+s(Ei_${x2`V zwf{G?|5wPOG?vx~i_ut|hJ5Vecr@sJ;x1WoaxoQ0MX`lg5flSc%5kG*+gu z28~r{$k+bRSheJ+zIy3PV@(~d)i>#I9hLGe5H!}a%nfK9L1RN2`_R~k#bqOo_WE50v{gK6xiru{AF02&7>a?k)%zXC|+`#&1`{STra zrZm|RtnZODj-qibjiYItMdKJ6C(}5V#tAfzvz+5gJ`MTu2aRx&C{pJsG)`CKRF$V$ z{0vbf#!oa%gpu$6QQu$0v07XC3LqN4mk5nNY5b$eUn*q_ z&>H>~rSBDvM>sy=M1Q5@79i0^5zb6Fns7$K=?Q13VwP_YVa{YD&!Uc1^H+U#!ubg2Ak=Oj&Pk~K zf5dklrOj(2%ul!wVb%W$7nEE-okF-U;i80#$Z*7Wv2sYb1mUWLOA_i={e(*q$_8Ox zgv;2-%Mq?fxV(ZZlvZn6iEw4YRjSD4MG03UT%T}t!gUDOAY6-ZP4ODZzIJ~|sQo{* z{Xg7*aAU#^%PfQ&*+iRIWK)Z5PIw&Q7KHl{Zb`T!;Z}rW2)8EO){qGYwt#TEfsES| zO8+kr!kq~BAl#X7H^N;AckMH6B0U9?fYSd7_ac;=|2~ayU&12@_ai)*aDT!B2@epf zoid?r0rGx0gzzxJ{}CQqMHt}>^#AZk!lMX}(R4@KGL9Vxcs${mgeMSchYwFAJc-a; z>yrob8b?BD{)Dm}sB(slc9uoXR{R{ob4x_M&L_+WFCct~@It~H2rnYMT$vZEyoB)5 zl23ShM~Xx&?%C|F6Rv3GXGmiSSOsn+b0tyhXgE>{~^V z$lCk`xx*sb{KLB~^B#-eXB5KwRX(8dK`~Wv9ww|4KBBnve?o`QQ$_kep=+y>=C6qK zf32ZG*ij@@*(7Xxg_U2zfLp2}guM^(}OU-6$H ze2MT$!spav$WIeKV|1HKJ_5*4;ykbN1wy&`w}h7orPUL@qViRhuMK!f|0jG?E5gt8sj zdHqKdn&Z)&nCAF2C!{$+-zr|siTXpDlPEIj$V{7)(VSce!knUt*_?{jLNuqQ`8dsK zXzoaJTAGW}oQ~$~G)K{#Nls3hqiLGMAEV5m(j5LQBoPEL=RbPV(lkdvW@w%T7+IbI z8D$Qd^U^er07}kWYBf&*jA3eTnoH1J zk>-*#m!r89O*!_VDMvuoUCw`uPIGxRtuSC(iRS7wSEjit%~kri(pD>nG|l4x6L8JG zm8N+RP}aE)&2?$6uY~nV0!{M>pr3jpnwzWDod263o6y`;tfFsb%iDtHHZ-?X&^!n* zrmcljEz7owY)5l@RmNC+hXKw`G;gK3GtE zkmh+bucmoE%}Z!rK+~N08|#GwHJkH)ai@7H%`0eLM$?@CYrtyFucRr5KLS?FYiM3i z^V$-jDd#^%r+EX-n`z!iQxAVEUro1I&TTYXG;gQ*0L?pSnxlT>cqdKs2%xO|Zc(Hj z^YGW0?z6ZY0V(nzO_%0FG>3Hfuu44w627Cunvs_8(X7+-6%PjR2F)hTP>_;b#c$K> z((KSoX-4W5mmHer`ENgLMl)AyQCe-f9?fCJA1!g3kBK5PdV=N;G@qpTDNWOJ-l6$4 z&6kz@49#b0zM%SZDxWtud#b#s@+Bi}idSg9LGx8XWXi9pe7&@){wB@0RC(J-c~w(; zm*!ZSAJTkJt?#S+pij`@M>IcH<&$yo&uD(G_!l(4QRPdOU#T?D0{U6LrTLuK|#%Lh~nDQ_%dGrfJ<~LH?ro3(en^`76!e27>&d;GcqwME+aBe`x;O$7zj6Ya+p0 z%NkYYAF5>z|F^3CPixtMILp&oh1LqR zR#M*;#Z)cM$^-hUw6ytG)viHnGg@oXT35Z+qP4av>xfImS&!C+wAL>XS{vA~8`0W? zmNfs8X(TPZ{}*L*THDduf|fLVT3gbR{y)InhSs+Ip>oF1+Md>qs*h{|x{^E7+E?*i zXzfaCPt|v$wYyPN-@{h5mqqqgd>@PNN9!cQmyU*n7#V-}G;$Ked8U?RV zd8Nv$R9Jy=>5e3;fFv|QD7M`$^;wEvGJ@@VdFZQd>gisCT(c7 zXnjtrP3u`&9anWu@LF>s9 zESa>PR{WU~r1c!Fw`o03>or<0(0ZBHijPTvs&%Z&_h?D;mpZF!@uA`$(fX9u$Fx2f*ZNsCltuW0)<3kqr1cxEuW0>D>uXxl z@M(QR>)Qe5_q2Xg{0E!mC$WwcCT|s5zo`7R#A)ev(31YI_@A`?qV;zf!E*kkJt3|C zDo%Sm+T#nkJwZuOeIk_;tDHpTq()Yiv?rszB<;y*&q8|&+SAgWQaRH9X-o50Mf$&S zp*1`&vV#CQY|A_krw58$G z-jMc2{ZNW*LVME@L_%#&dkfnCqrD~Vy=iYndnb9+)!v%+HmYoEq$=Cd9%FTR{!4oY zl{*@#Rqd?9U5r#kp8wL`P37*i_ptb$wD&4?`5$)eeat_zqrGqWU+rk`r^EeeA7GIK zX&-%k5*+Go=~g7)#WkJNgk`O}ueAKJ&LJl056jx$mV zJAwA8ikwLMBvnpUDb3#yjMSn03MlQ~gsvLO)O#6J= z7pQU}Z8`I&eUXu6SlX9Zsi{*^}T4n zK*yu~BArEPzhu6(oA%3eCZ+uf?eA&7O8aBluhD*2d9nzEM>FfcA%0mwy4T;3q0SRr#69&uM>6`wOG%@Jp5QFW@a=es;dK`gcY#CfYyH z{+;%ZO8&`Of2Lgq`9<+xE&iKP)awsArmO#{*1uH#t@0luRry!te^s@e@hiMD0Uf>h zH*4FOh|a`9>r7&#WkP2bI+M|vPEC{3nL?E*jZ|eSl~dE1#v;=iMXKtIvdC!VOs{eV zl{2cGN#)Eo*Q|8rr8AoW6`!5X99Ex`&Rh!4ZIOA5VjbtBGrz?bptGPdbtmd9tokB- zviu%SXE8d9(^-Sg64q-;I!n=6QOQfITt?-xbe6N6<>{Z87Tht5h$SXt#ND&;3m zmDT91F1q6}bwEjl~VS)0yg(mXrs&{|oR^=(R~;@hblLuY$y-9eEZNBy;!Dm&9TfX*&- z_M)?^ryo%juj(=N#pq zPUj3&&McX9&Z2X+(MR)$;^)%2h|YPcpRe))l@}T*FNu7yBA2MVROMx*N%bq}T&K#F zDzBn*wJO&bsmir>Wv;i#4T|5W@+OrxTaNkhxkr)P=-jT#9Y(5hr^>tN++8B0e%+SN zz1Dgko%`uLtegkvJgCY;6|=fDkI)&SQ={VuUV-j_?vpG*C!mwkk>+n+bQ*M|`O|5t zY^iJ;sfum^orq4X!^FtZD{pVD8J(QyXF3JZj&!<2lhEnW`Hapmo!99+O6NH`kI{LC z&f|2RH2+_f&J)#tS?xSU=V=LL{^@G@e^)!t4(QL*d4`5IIf{Hs=Q}!j@-s5KAL;x>=O;S9(J_nm3!Um8&X&G(ezmpz zPUjD+|JjdB=Wn9%>HI_IKRW*kZdZ?Jyow)9Kr|7N_J2ztnpm2usX3aIXmKKl<|LYo zXf)B}L{k$@K{OT7l!Gx%K%!}grX!N(Z{v>|sVADAXcnRwh-M<1u_UP1%>6h-vl7i# z4vA(b(&j%>*jz;O5zSr3B$|gvAO0$VXnvwah!!APh)DYXK-h(C%tehtv{)HIvoArk z7SWPK%MvZ6)}<|3`oAK}5v@YBJkg3oE0k8nS0Y-uTr2CcD$(j{TFoMB5UpA27FnBU z3!-(1HY8e?Xnmsf#8ggGmT?1{cO#-ri8dzMWZda&Mzs03$d*K7h_)iy#>64o+D6!x zXuFD8t6!my+nn{*dTsqLYb^Av&JuSfb-9 zQ*~WVAUe@{oiyNe3eg!vry7LlG$Oh4?^_i-)7Ee{(N#p}5M4}kF3|;QJ&)-8KA-49 z1uq&vE+M*H!AprQ8^Etn@X7(?YNFeTt|7XK=vty1h^`~LzN)9Z;!@;|r3=x`M7I*% zBEygFHE%7V+xo>5-9dC8(Vawh8!ORW*6SW3`~In}^8G{)SnGqLRQSV0uM<5&WSa00 zQJcsisuR_Sd?J^~`#-hG{l9T1Y7jMv!hvY5GOSuVLJdFoG)(kp=|c3_z zSBPFEdTkIVdV}Z#qBn`&H8{~*DrE~GdZ%O(jn(0MD&H5d%JL!6mqZ^CNy8`lnCO!M z>t{q?5PjZ9%1Vg7BKnp{`ah9u2lA3heMj^I(f8$0tv?d|)E_G6{}G>0^b4_R9lsJU zNc0==)I`4%Pe}9!(LY3g68&Xk{@r&c`j>b-qW?yaczogs%y9JR^Q+q8iHIj7o|t%2 zgA-3u?E*0aUXv3`+b5o)1c~M5-|Ev4&qh2g@eIV%5sxMw=>PHb194^~o`rZOVmt;#~g%M&k5yfpD5#ETJ2 z|F_n~iI-HGegvp|Wed<~%cyBtmCKc&>MIayhmThzUWs^B;+2Wz=3h7?!B;DF;x*K3 zP2#nQ*E0Gz`$fDi@d3o^5pPMnKJmuH8z_H6l^Yo;FPYsY#G5O)De-0{sKYG=^sR_@ zCf=HOJ7U=g)Nxy@j3Jh`Ppr3OqU=b#Q&oAjV!IIUMZ7EV9>lv5@BV-0wP%SC?@hcP z@jk@+4swY1AE@U*;!}waB0ieU*5^JwX(^^28?*pGN~ReS zUqJjO@rA@5@kPY95MNBJoj<-ry)IQ*Z2`nr5MM`pCGj=HR}o)b)izS$wGvz+Ur&6a zDmPfilJV;(LhiBOZMF-A`Qgf9v%Su|q89 zKg5p^50$vJ){H{z_CaEwc$hdKPKfKoO(ir`>J}hzTEr1?o48Xsj?6S32$d3N#07CK zV6_5WVmP;VM6|z_*?b*##+A{u>L^&5Al!0zY+gLY#RR0#M)l$I;gL` z|Brts{)_kz;y=r1Hs(P8kN+hZpZGt?VhTvcE7Ot47Cps zB-4;gMlvPIJ0d5^etFLYbvVrYDhGeUceSW+a(uFr(tL z*qF1C%ttaiiQMXw%t10I$y|e-Q}KCJRv!UK<|kQ%WC4yoTVvbN%DS$rK)M!eQj>-yHZA<32`8XdgR*_UJ|l08UvCfQAWcOltT$d*a6 zd#RJ`sf4{q^!{Js?^Bf|3%DQ2;UxQ$9Hg`ZNDdT7jYD!U$)O~NkZ9*034WMFsOEA6 z$B5=Qo_Xp$fYFLkz7V{4awysS1REOAqf8} zlB-MIBG>kZB-fMNLUIGiO(Zu8J~A)e1*Di;4M=j^fawkrkK|60he+-sxlajqlbAQH zzL`gY+)wgA=}7XRC~6{kSX~|=aY%*+@EVC*&9}N1=KLon2}s%`b&@7YgCs2DluVLV zHPrYd9St6pAW1@!lcWmD`F};0#VHi*TIMjR=`fFyd`9vZ$(tmPlRQK6gwmcQ(ZhdP zji;+1qCZRWGRbo!FOob@@;F=JNb(BFYb37@Ag`0WQ4Op4n*RSW$=f9Fk-S4P zmgL<&zf?%xC;5=%0~uE9`O$#>iP1?u9Y8)O`IF=ek{?LEB>9%)E0S+WzAoKIq&R-3 z?s^I&!yie0R^+FWMq<|OHCDwkr&6o#0>Yn`bXn5r zNarUVMLG-VXeCTfD#t#gGn5fXXCl@6e;bW-R?<0@JR9lkqGX+Ou9(Pw_c0&honm=b4gOu_Lu783NBL)NtYwtf^>P( zwMkbXU6pi2(v?Y95<*ppYzJ0fjdTs8ljD{{UD6Fm*CSnj(5k*0 z+Ev<^bTiUTNXO~_q?-?9+>&$$(yd6hBi&lvw;|p3|HK@lrtQU1F2s(cyOZujx-03< zq`M6ANo6~*HS9sEcm6V$y(;`YQ~5rmf0FJ?S|i<$^a|4bNlzj@fb>Yx14$1fJ&5!W z&3mwo_CL}?`@yx6!^G7mTlO9WYOrK1uH~%ArouH9VwC*R9o=6xUb zlAf;C)2#K3Qc>_M(sM}97NlB@b4kxDvs>f>(o0D%B$c*LDqDb7dx4T(t+n+vESw~V2kvanrT+&xbJ<^=iCvB4kq)pPg z;gB{+ZU3(_j`V+0ZT@LQnv%w($zU$htUn|zNS`I`l0K$kd!)mpk5(&RRsJ~XQ>0Ij zK3U;a#-~Z28JGDS=}V-~laBO%(ih8gq%V`cGA{o$(l1G0Cw-6f4bpc>-z0sT^ev%j zcCG3i8)0mzDEL0&~iQ|mFC}%K>8W!7o?vHI1c_5>CdEJlm0;Z4e58J z-&O==l73$fNq;m7sW$&If(*^i>@TFhk?IzpIO*@Ce~g>uFEY~#{w74{;hR&vW>~sAX|@YO|o^!)*@SbFoMy^*0s6TC)-ew4f-6i zjY^$t6EbP|WSgqo%;H;+ZP}l-QOLF?JC$r3vIEJsCEJ~BJF=b0#*poxzPA5oJCf=7 zk6utU?LxL|KN?xJ1(5AQwlCS9WP2;E+5*V-kuubsY(F*aPj)~*g4S~o*>PkClN~{J z2$^(#vg%U+*+DQ#(BX|_H{hkjCIPFMcaYshc4s+M z>)iv^d&wUoyN}$w)$b>JkL&@mjO;-&pX?zrXO!8pvxikaLN;U+$tYk=bWvO~uhfl+ zEFcTX>ekv2MertBOx7an=&)Vlsz*jzenOU(x|(vbr^pJjN6EUD(<2)m;Fu{qX@+Ev zt9(LCCSXp^J_-2@NT0l$*Y+8lqH{hDpAC1 z8uC%((<*Jc5>$P(%IOD?8Oi4$pNV`{HO;JYmI1KO~*Zwcc zvIB9JCts0#g#l!x0euzn)zo)Y0cAB-Ctr(v4e~Whq+c`n+Lp5}`R3&7k#9)8zPjtA zst6mAZ$iFtzs?0*Z&4AZ-9sqCqI?^ zZ1U5{&m=#c{EVs+I~Ve^Y@BnnwsXnP8|08*Kz=Fth2$5LU)0Z~VxEukUvB&onPFmD>cyn^BQ@b+$9glJ#v4L*^frvAP;3&U6B@f zOs>seD(o1XJhIk=ydY1>bH()tXvDWmE^VK@SJtDY>Zbq!AEz*H!Y3%EB7c(nd-A8q zKOlda{B`nY$X_IXmi&2g?f)a!^aVS+m&jiwf0?}M{8bhS{+i{yLH>@`@Fw|N#Vg`yC2Zl3K%t0{=h5Xtlh3p8HY5RXMC&kZ<4~+OP@&;(O|c=xrW6}d zY+RWn&L%eUW)xdc=&t}(skfxqs$Z2R-G*WZift*zQ0T7!^?yc+?QNVLDR!aQiDKt| z0aXx5w;RPH6uVPgK(PnK(G+`9989qn#r_m~Q|zmWs$GC$Kk=>RcmTzLRVbP1K^8xR zLc4wOKZ8&lYVpG-w0GbqmN^C`}zIFI5SigO3~$~?bBC@!S9jp8DTt0*p}xJ<3m|0ymlOI7`H ziYq9tEWPX$uBNz=;u?zUDXyicI{$!|ZUHj!n<#EBeJO6CxV6tQ3dQXdcT?OU1j&0R z#a*SY)_W)(q_~&jev11B@CQU6x$Y0CZ?y|h3{kv8;ZQtAQKN_`T#Aswqo`B(6#AP# z<3wnb0V$dkEvvUFSUh zif?S*Z%ai(eXsHdiXSVms^n*ie<@6;KPY~o_>Dpz{#MrCC0(WeN%1$uU*fJAHQ+y` zPVpbz3FykrKi%<12wmy_bY(jzLAvq?fbOI!_0w*5veDb@L3eVMQ>dI$9bk|o! zds=rx)i+WpTL4{Y{&eLL0Nu@0O8=+3g-SUBqANH5bhlP1zx+>E9s$sm{!e#|k>(}O z=({^8vZG2l0;0P!-6q{#=w3~CSGt$d-HqU-1ON0oh5 z?x%8pl?SLiP~|}?4_0}I%Kxc6RHZ!srF*zaIsB(98-aOgok!C>mhLg-P_4%eSWlpP z8r>7=o~)*m?DaZ@?x}qjjdMEPGwGgD5{y*vtdc`l@Bh2!(!Gf8d2}zJdw$8$uooI> znHQHj-RkeZlyDi{%PoEd-76Km%E&Su-D~K&bg!lRFx~6u-bMF%x;N9kf$oi#b5j{X z3%iBx?R3p$x~&XiId{;#b6n(Zy7#HeJu2@lt#t3F`=BBZl!%dZAF|d*bU38aQCTz6 zylf&*L0_fp0(9$i8+5~xV`(ilwN=U%KsTb>qZ`weyM4NeO6mVvjP!rH1>J5L!NwU@ z{85#Um1NbQp!SY zH&ni<@-3CJ1<;klAG+_V9INs@x*x0ZK3!@4bU&o4onQaJN4^rL`-$S8s{G7Ic?tdn zA8bwcOCCLm?pJF4nn%r#)i*q9e%!ug*!)a=N6)-TzNcq?)_$O8@E?`=6TL0y{;awL zr2C7?U+Jw+_cwZL(EXj>{B-}IXL{_P^rocy7d_MG|EBw&lK)ZpuaQ;L>y0N!Z+ttP zkRJ3VqBn81hP_GXO|?>M}XKDf)4YJH4qCpIYTK^rll~+CGQgs8XjlJw0vg zy&339^QSixy;$~qjFo}h*h_M-Wb)lSE*Y-Pq%>H zPKxYoqpiyTf*`+x69iyWn#qv=Wir+2K%Uce*NPs65l+XVE*`>gUiqSFPujh+T&Z=t=*lcacil|9h9{@KTkRsgx~%-W4jZ zq<57nR~soWc@JDm?|FLH(F^EZPw!rOHz?=El0)w%dN(U_i^^Lqewz+&r+0@ccUt@| z9o|jv9zn`KPL~?)Q~Z8<(){T?sPZ9|4;!h0b( zl>aWhu_dBc@O^q;)B8Y8A6lmD0`xwnr~SXD{l8cBe|n#*^$V3>()+6PDlZnjZ|Hri zrteCe-uF8ELFJG1ep2OUmF0!|MfG2el$ZJY(BAJ1Ppse{D$N$~S81j9H@$zX{;yj9 z6FEE{!{e(mfyxPuR7Ji5LX}A@GAY9-GMUQBRZgLDN|jR?smjz0Pos)7e}<Wipcl;OoxSzP53M%qwIF}yLuOEWC3o8e_tF3a$8sw}T^1(horsme+W zuWa>I6j_zw)dbNV#qb)|x+cSGDPe7u>!@5;<$6Y{vOdEbSbal=Hxj*?<|Y>3l;O=7 z-k#yj)nyBdZ>htrRBp}iHWrsHfZ^>_j`{yooe8*2)&Ist>D53PqG&KAQ-fKiG9*)! zDMY3ughHsuJQJA;4IQ~&RJ_gQ}T|2+HoJnwqH-?jJJ z`<(l(b9K8{nYj~ofkTBq{jP9y)4DqxuhHy5_SF9CO33@o(Ho94aP(odFWHZLgX~Yf zNe&?2A_u~82#!H;?0{o194p~?8;)6U41r?;97EYNj8yp#$GhZkd5m!I7lArPQol!z zB1eTQM;g|!5`c=Fu-8U4j@ zEP>-wiIigP)vLqmQaF~wq4Hn(Y9(^4$PHV&Iq`Ei*1@rgdNsKQjH@eLf` zvb0xNto;S*eR)=L0FHyIlv~etY&cAQ4@ZFF2RIyX$YXTE;eo>ihq~Ef9ld$ZV<<;G z6NbOTFGKl|#_1*;C*cSxM?G`d0>WBH;D~aTMaIZDnIMy7icAZ62DJsiktL77ag^0# z%aNZ8bW$NEZ z=D$PUauV|D25J5Yhsu9A{r0K=bbD;_Y{JY`R`Qu&(b~Qy>J$$C_>&Rq_`i>q7=o*;=g_Me3FDVk4f=NS=tsWn)t31=-`tqrHje>m%sD*xeR z_&e*1))O0wW~mXJjVYM_PUgR}37w|8rx~2h;cP*ZTY!8I;$;5weNMj>oUJL^=vi&y zRPQ%9+mY?bm*MP8@d}(B{Q_o zXD_lh*@x^aHw$M!@(r>-`6fAle2W|i=euwYq8?1XO%4%K3?+w=?+AJR;T(=2N0RT6 zqsYj0L~fYOmY@Eo18<=6;gZ*=RAt}TouFLxqx~hxrkg$E+Ic9)jt8jxs+T+E+_5B zvO+XZyAsaN>8~PJlWR!+Hgo~l8|KnJFmcb4Nm)Q#?Svw=D+iA zp5Y(zUwwwF`V80U-ym<2|0%li!Bq^d+tlS;`AHT2aNSPcK^7#L|1OpPa1|o&BJU>e zA@3!b|E?m`D*xfSpH%s8uZI^ZPL{A8Hk2ew!NvS{G5=jE|KTb_GXGtVh%Q!SI31P$ zaH;U8Q27s6dAKT2F#lZ@sh=QK{@YiCs|s9oND$j0PzB=g_J{CBDRhpQRcoK)ctR}1n*vL)Gy zY)!Ty+mbJl%zsyV>X*q^g!+kfgzH_nI*G$lXSh`UQ@;vVSBh?Acar(<>OtL;e4XqC z*E@Uyz2Rd1yZX}aN4`P!C*LFokZ+L#$wA~`@@;YmIg}hGwAZXxE>C+NOC!jUSuIAU`C>lH=g|nD4re;9~x}CeWWqP9i6hQ^=|0G;%sQgPcjuB4?9x$hkuM z-KF1S^XY#gq*wsgLW)J?VsZ)jDft<>6fPD1qV;){W@!bvlKdR5RoY)oXAN9mP^=}t zB-fGa$qhojY8&-a-Hc-uSlR;DR|o{)`WpUSaBYRZEnM4RT!w2qJYC`10e3H14_rIp z+68wBxOT&J1+G1CS#W&=mm99VaD5Ngw{S7)UEBg(`{7dgFCQj_JOj4?7qyHx(OQ~e153J+WX3Ii_NQTb0t{S^SMO*%oiLU2W>!+EOeTL2lt6@x1SS6t8H zw*amrTac*-o;03a-=kcS*VLm0Ul;bqTJY z;kp3V8Mw}|P5u6VieKP5FG8C0tngQsE-GJL{jvx;vIYEZn;iZD_g!%P3AY6JUvOQc z`8Qnuh@k$LWd7$acb(1+@+MsWiTK}j-M7J=AMS#17f=oE+l3VBTL6kXNsxtva_G|C zH1C1?Ubye4E(~`Oy9e(3@^ltuwHR4kPk#XJ`f!(oyBgf3;C_VF2jPB*qO_2r4EeC0 z^(fp=!2KB972qzbd&AVPcONv%Py^=O?zf7|&`4ZgiL{O{0|3&c%*+KgqIqW2q2DrOu|5f^3 z;qC@^54gK)|24al)t+#_o@dw_?xS$`f%|K?`@+2h?tXBOh5HS-2f^K6pW#i;9RT-R z6a#IauhC$*N5IX`|L!4hzXSJBJ!_a=|GS(uJU2_Nc_iFp;C@ecj$*@Tp`P+SoexO$ zPe2so;GPfnM{v)Edpz9J;GO{YWR@n9lZ1RGQ#hO|v>gto!##syCfu`b`Rt!Ve=hm4 zkV5?}Fs(ma2%w*j|1|8V=s0I9-1PfrN$F#QPJD%jzUk`~-CxD(Xs_y1EQg>vvNRQS`(z@4Qy zVwb3o!6R9B9G=_ZJ^}Y%aG!+xJlv;PJq`C6iXX|J$e)Gw!r(p&_c@xs2yGwk3vmAi zH^bk3(e~lK1ovgTK|8;TfcpyEe`x1VecHcSQuz<}zi>0>-B;nhM(4WS&%3(`kEFfI ze|Yi<|Mwp7;(A+mrCT2+vdSG=k@8cxrJXw*XIdcxvdmHAToocxuD* zEIf6zUzh#$R5f?e`tUT+)rQJfvl_GQIe3~;F#kPGsMU_Zl{Dw@1tCQXeZrRTbfD7; zp4RZRgQtz|X$#LwqU}!hw1-D+4b*B2&?o5#PbcknhNp|x>TdzCxf={Qe|LCd@Vo}k za(H^cGY+1f@Qi}zb$H%@rx!bWlYPj(WIv(4P=9!az{BwO41i}4Jj{R3z&t&JMRTIs z0%RgQL*W@tXBa&1P^kR3s~nCXN5YfKf6f|h_rNm-9)`b%;qUoS`(yR0K7wZ|JmYzi z3A#EFo=I9yW=Z`CFp6pLFy1}WIh+B{Ox>w=0eEKX&bja`fJfy&JoCu;y7LneeDxQ? z^C>)ww6F3Xo+YZ9yWD4Vmcpa*Uz^gi51tk9tc6Ey5bXIJo>de&|2=Eq`NFQsM0mc0 zXEQwObpLubZ-8eb#U`OX{}y<5!=u6cyxk_`@K<;)!t*;k>K}jTT!!a2 z5%#^)xdP806n_d;Nu|o)Fbcx+4?H*E`PcU0xyrU{@LadsIJ^l%a-R8bQ4Y@ zT|l)Nx5H5RFGudN8+XEB{u_m0+{2!`NS*)2y&M+KGvz)QPs6w$#v?F_!YBo!m{i$T z97YL>2gs7Pub!B}jl+1zc3^M|Fv`GC`L7rAD2&HB@iDS2Sq?^d5!C8W08nsiFrI)> zmBUIfDpOPu%ArqK4aSqU1LG;%hw%&yrn*rbMh#u9DFOy}2ctHOI=0W1*Mrdv#i(7@*wY%u6c}w_^nuZq zCwU1*cNpzpbb`@d_rDB7g+CiQ!02deo}n|%F667W52GuG-K0S~ufgb{bx&4bhtW$r zy+!bBePO%@qaPdIfH8=oKglh?7yyI$Zw$1jurwG3L*96s!y)8Q7{l`PsQib)O~Du; zn!}Oy3So?bF^rwd+Lv0Ot*5HHTSI+;k%Vb-S48c(0uNu@HMQK{L10x0_u6089 zq+lFpTN(!Q-^l8oBQTD#bj)t1J^|xr7|eg;lhu>*;sHdk?Gk z+CIF6IV>WS9(eE9eo=Ufu~eK?`A?z#1Pnzfc+11f{P(K-hqpAmkHTAq`eE`Bq3&n+ zdl~-Ta^l-1cq_2;ad@l1tMZ@2C*ZB5b!8D;TUB_UX0;mmB)m`AB@UkvQdB2v2sx`3 zyf4FB8{Vey)`7Pnt99Y6CxZG}vOc^GY=^TN(QIrx@Tx5U-sjVj0W5-gA-szy7Hek-yq{{V^WVD+-nH;9*S_4>3eH*y?`n8I*ZwN~ zk}?0iU)a7}4&E=}-3;$K&RS1y(6csjxJf9};oYMBujq4k@NT76e-W5s2fQA5cfxxZ z-d*tSgLk){wFlmBwB8Hvx1#gh?|x1{0PjJHL%Q=jedh1A!!5w;fY-@R7wNXEydwkN z6ukC&eDH?Y;D96J4t=?1^qa%?LLT!)_&U;W312Jt+EKSA zng71F)Gz6KZ_nY&wuM>RT>2!v#i>|&3UssylRGa;U;Cl_e-thIH-&1$K z4qvZZJuLNsudlB5gYS)7Rrub7ZwPz?boDLx26DFQ$mmcaKp ze4oOnq8`4_;9IJz%S3RU>O!opAl09M*Ul>VR%^{I!1sj=`6_=2-?#9sgYPT&*6W@P z@NE@cH384qpJi z6nrZG;S0iN!57kV!!#pgRG%THt7;2?kNNLYfB&7sG?^i@_*DMW{D=IPyb9knit9o-*m)EFTJZe`e`)yh!CwUa+feR1h{Mvo@E2CqTi=oS?}Pt-_*KZmUle|ZzrQ$#B~<6FC*v;( ze<^WTdXRibU$+eWmEnIF{_^x6f&Wq6`563VwJxXoE3oZxvLg9}?x`d~w^d=OD*V;p ze+GV)|8$;$|7lxGC;Zj5UxU?}Li)AgZw`MQ_#4sZ7T~W3|Fayb@TX`1e?wdA>o$h} zIhOd3KmI1VvnkDHLf!cS{4I3#Mfh8?p_O)8!>__$4)x0VUxNQj_}j6kJ^3>E3fY0= zCgSe||8V#_(^2^k|EnbP-`|Z|Z4eZ%!QX?TC;2+ri&X#k1AiZ~FWHZL1OCDA^XGs3 z{P`b0fBwg>e*T9I14*?7s2@J@tNe$52sxA-rc3X@|E{g+tNe$5B>YR^e-Hkd@Q;Fj z0{o-l{{a3mtiCUlgJ=E_{*T}v3;#IV5tFaocr~&N+Q~9s`Meu(L|6=%;D3eQK&u8|K zT7^IS+!XvGR>Qvn{?BQywA$U;`T5_!o(&twjU@BmukxS6 zE%1Lu@in=X+(vE}QtW_#rwILgcEkTW{CnU(4L|eWzn5*_lKV*JzyARBLHM)qAEN$_ zRQV78_oT{y_#HwDC;To7_4yxu4{4BI(ntEq0BOQ+!5@_6!5<>SWQ2?grHwkqeulrF z;qOoCQVRaG*6K$<*?ELy{`*z_!+%^zae_Pvzsi5z&+zyE#L~~?8S*T7j{JpW`1>zV z|4LpIQe1*xZ4lJI=`&y9@DBuv!>{rm{=dk-$$!Xy$*Uyu-+!I@26>bGPce{>yiG`v zAAtfCx082}1<5-}kcEU4cOh^$h01>f?j;M8MG&|jf&1)b3*|tdC<4W#YMX2;fxrU@ zyn#ST1S%m=3W3MyKZw9X6s5^Bml$g0u9+; zpKPFe8gbZInCG0&(`plqd z)w-YV?2o`a1l~ko0s;dNcprhc5EzEQK;1b=1OkJ}w-FeEz)*W`p7p$gz`F>%$DZK` zj1WPs|NTEOio?;`A0vY6{DA(4+8@i|I0Qb@&UpJ%3IY=mn8E5Kax%%iATSkyX}W*9 z?w`qqS>$YTj_#Su;m1O?BM0Uq@FfDDAg~gF1qghGz(O`G(*27OSVHGh+u_QW(pg3> zC)F)etPt7{2Z7J&tRhzygX7-j&02u%5siNdUi zfQ7(y1Y!tWMj(#B2?P@QoJj;y2pmBm&C_PIpVezPs-0s9& zz`zf13kaw!K%e9+d(PQI>hlPw{HOjEfs0yS%G2{3tG|<15RfeW2LYA;bp9g$&eQ)d z0#|8XvwQd&-GEsXftxVzM&Lh~jCV61Or8H`el^7`08{0^9CAXK%zu;lZ-Naf|6$&h z>ycOAWd57Xf3q;FMeHif`(WOm>r`he2J;~{6o*-Y;sLUx-2<}}hY$YmUd+-k%fKuP z^I?`4{-z3lm};}IJ7Ja+O|v}A3R*vIztiZ;IxE3!0<$vAXJA&*Jylt)22vV z7v1?P8@j^mrk(C|Ud!`Z^n|JN-|Pib=fBwpW?y?2*Y*a?k6`wPIU44hFyDna0Os2~ z+gmVI{=*z(_rn~l*E59vQ0))n@ExIkw!`U+fH_k4a9=P-<>?s%^L@5`K&t$QIhGtJ z)TbH`Qw2NB2{0#$pq>Pi;crgiaH{R|j;7O@VLLFn1(>sFatknX|NaB>W0;#@&Vy;6 zb3ROd{x=uER3Q(OTY$L;=3;%eCH50w^)r}DDVFK#a=qpi^jE@MOTqj%ng8Z$I%~); zgnG)Cbk>pUVQvsXy-_!8hItU?7MMF>e#O$)x<}49lbsPL!ok$$0^ z9Hxn&yzznvR)iUX`7cb#|DRw+V5VS3^(+f!j1%M9Nx)3nns=9md7KRyG7Iwvh0cHT zn7)@2_AHnu*>H+H4f99a=c;~&`8)kHFwesL73Mj+3iB73=e53&=RI%{<|R(KOseqD zQ@uj-5Asj)FPMK*sL%g;ZC4Rg!3*;m%}iAGD->->ZUMn|2)36YotK5Y zdIt_w{v+5)NYR<>BDCLN2zI5@4Z-dR_CoMA8Pe&2U{9^p7NGlkv)Tv2zPj2^ud_db z2N8S|!TAUdKyWgGZy`7q!GQ=4LvRo$4%V}{I|PRyn9F~z`5pGWi{N_{!^sf{j0+9L-2D1 zm)j14_7ztkxYBOW{wf4lBe)j9HQLGZ^Z&sw#YAwO{bEsXKyV|)CUUcoVhgFZ0A777 zf_o6$MsvH6Vh4gdDRz;&ZJ+($(Ai7o@*lx{2=2Fg5Ii7)ore&V59i+@=wb6=l3PIV z2WoBsK_|5fK^6XT*tdY7fuPEN1bw!Tpr6A4X_7%9uN6ixMJIw_R0Op}#>hB=35ujp zrckFzhJP@N;0X?okVg?bCW897-A~Q@51vBsw66ZB7yL8AuOWB_A$js=5qb&1a|jhi z@D~LC;oS2GUO@17>R%DONO4J@=Q4uK|6Bh~9=w9!AME*){7ZM{KK~>5Fa4_s-GSgW zgz_PHoz4y2d6UE3&;KYLQu&WiezE|mwgC0+4Ke>icOrBbLSU(oD%sB}r1Br3dxRAC z+9iaFAXE#X`w%LJ(ESLNM5rhmis{bc9F{=n0ecFEr4V`;p$B!(Lo`d1WrX^okI+$D z078$EWp$}MLY3)MKuCo@LKVp;gcOy8(u`0QgjC2QR289Wy80xYr|cf;XAr8ct2Gd+ znWt16p%w_$LFjpQ)WG(z``MCd)Xjj|nfjzMS~LhsXO_=i5E9-F7ebi1{Cy$>A)a9K7xvI&*CYp^p(#;ZJkEezpq` z`W&H!2rWfuk*+RAXo=R`0z&%de?rT&zntfhr?i4%rS0>&tLUt@9fZ~(^aY)@2(6<~ z`7aAVXuT4-ui1?VT|j6PLLP)RBgD`SZDIdc2z^blmE4BVZiKcYw3EXfLVc25wnk_V zODg}h^DRP$Y3?KUlLyFyk68PZ|?ha3p0@TcQK$Zc!huYphuA+N6b5Mua; z0tkf>GPNJ%+>ns7BHE84WGU1BFVvwpLProv=xP!nZWf`mI0$9Ptm?m&y`iHB9Yg3e zOUDs9A%glOLZ@uaEB=U(MEy^?`ZGdjZdKWTj{Jo@FXXIW5tgXDh|pj3FClbU1odwS zaf1k5(as+Tsr;9NukYUo-;U5f2;F4=zX)BWxJF(VQrr--|G%6Q&WG@AsuX7UhYQ%g z>IvV0@ZAU()SY)C%=`}*V*g#j+>;F7L+4)IS(w8j2;XNr>h8it5w4GLF@!54TpZ!@ z2$w+k5riK=_#uQ#a!M&u<^TVldAKyfW#~VA%SZT8I**ZM$#OzD^pYwd{5buJu3GDhSs?xGMc>2tPydB>5D=Pm7R4pG|E62-iTkrZR86AHuci*CFeY^$=F!F9)yE z0O3{$H)N?1!p#wGO#K}BJi<*8ZelmnX_iO7K&J)yBH1!ewKc+>5pIL<%Ph4eUqZN@ z2%ozMf}B*HxrUX1YT2#-Rz7s5jk z?v3yO_V*$ClKl`?;ZNNk;Wur~^Sq_~fe5SoXU|~rZG?x2$g}2Q2*0Cy-bGmDKRZW| zBN0~lF9)CVXoROBJO<(M2s8h~AF%C1ax6KH{79JRDiaW%C=N@L5S~miMLSdV8(=!Z zA0s?N`!f;F^C*|$8Li@R&|3O&gKdYA+JNv62yaAq8>^cT-b|swpW-Wo zRsK_N)%U&~;R6WoKv;!5!aEUG;g9fca*xpNipX=7)AWB-rdr|8h~z`~ z48s2+d=}v=2%kgvBEk&+@Of!t{{`~bJmP^*=)U zBnV%nbB(-?@C^#JK~UsA|08l6B2Z2wKUsjh9g#akP!~kxPFv^RNRdK_sQgFdZj$*Q zx!3MNMCHGFo{{?yX^P1Gh*U+SC?by_QjGn@5qS`i61x8Znk5k_r6$^+QX&u0EUkOW zaQLv@fXJhWFy15F0wQHuEk~9|q=MZhq*IaP77(dKT^W%oBJ{PY(R>n-hKM|cNL@sp zMx-Vp&(N<<))30U`>I8!Hd#lRxi!}lO;c?Fh}1`{JU^+V(}MBhTB2O=jB>50frL|#W^J|evkc@L4^h%o;neR#IMq|ADQ zqCfej(7rB*a<+jKgAf@?F_?TC5taXP@L3H*WH=)4u=K7n?ayox75+3w+9o2S5Sfg~ zXhg=*A475rh=EO`A=s&IRTN06q9V9JyQ@-@s7w;avCDjDOCO=GE54v__je2&OMM3y45h|P<2=MqFd)%r6%YngVIBce_& z2O=xTJU{;#S%t`IU0s6+!#}c?ZC?uQ=f>fBaswh85&0UCO&l`+BU?ms_?3Q#Y}L*- zM7FcEL#V5}5MjVZb|bO}5eFjQAaW3qz3f!sPq7b?{S*gmM^8V5h|d4WVK#hE{-7J2 z9J&zkQMeKDh@e(m03!PLt3>=921u3v6hWb!3Xw1(DLN4{iikxKBjcnBe?*c(`|2E~ z5n=vEvK$@}QXD0ZA#&Vy`1+niv=$<#5G{kqX+-lQ@*^UDBJvX==MnjtQ_hfQ$#di{ z!aP^JfXJ_i{KnEnL@tS-R$GAmA|moTB3EesVOM#Ne<5-m5uN{$f7tLZA}ai;ujRSQ z4LUaw`A>;xKJqr9-GgWWMDL<`JEC`ppe{(>i72#FD7U2O-H6_g=sj%E`5!IJVG&aQ z`+u}3q9qY6Mzc7n^FONcUoW5(OAnIV0-~i=Rlbg*4WHfRN3^C;FSRzJuOeCp(H9V{ zi)dp+>*-m{|7d+g8*o-b?KiTgBl;YDmH!k?5N)b;Genz<*6VM9C^J0zBBCwX+=^_C z=u3#Up>8XbgHNfQtr2an9Qi7UzM`EDh;|f>XeY8Wnah86c15%|qTT3sCto9b2q}7! zuamv>bLhh%!#~31H{Sj69Pdz}$s|-Zchv*eHKL;s9j)~kRaJNWfe1uDB*&8D$Xx#O3=_nmIT2Bn z|A!LA~@ zk=W{A2ef~X z{vq-^^01ISKZu~?K-5X$BHh~eaA+XvwH?m#!^($f0MQeynurD|LWpJ%4I>&yG-CH7 z8b#D%H71nl)CpZpBATL;&Qs0OIYJ&4QXE6{xUIQ{lZalTFI#}*|2af|wXRklSRl}{!QA ztO(vqd05ZDssO7htjF10k(Ar446Bmeub!2q!rxv48>+#2lHw`52UhO?|Dsu)fY4^Tf3s|lZ zLO-GwEWHS;rCsIvTkFm?thR;ql6Km`Y7a~88ul63-+^r%VfBR7iMlhaZm_!OS+COU zD&!q?*Zym;dMNYOzj|5Bf2$X)-kiexxBA}df%OJrGhy{dEFY{lVeN%A0M3u*Sj~4oihRtP!wAQt14*M#+%(IEMcF_#)+SrCe+#S~?D>lP8kWj`>TR%8{>z~sk=g=a?Si$N zVvk*g^^M&F>swe^So>i8z=r+g0rDVu2-bHZs1K9h3;Dzxu>5qKuv`>wA%zE)LE(kv z6Co>?gH8Ze6qZRHBtt@qFsxku^ZY9R>BnHjVWnUtI7|xl4XXTyl@Zz|tRt|lz&Z+x zDQz8tbsW}@uuj-LuugKyDOjg(&7$)Yte;_>qdo)c?EkO+LjSx_U;0;A7ip>uh2k=- z-?aW+gzo%<)jwhV1&bkX{SE6Mnz{UkbyYWC*Jro^>n3}2{!0?ZZbR$^#PTCn8L;c3cLaZbkO6krAbFXZyw06p{LFGTs@F-#x=sZT2MXVe}d7&Kad7Mr~lJApP zB~`Nb{a6*mYOqulv1%fypG52_il@nEv|n9>Ohl|E{aT1UhgfaI>T_6!tczGZif4s# z=nFMKtRa0B{uGUM>3I&DkWF>98Db27`@J1&ftbYUi-`3=tR-Td5o?85droOhwjtXh zrt?46&OSeVwF@Bj3Su27ItnQ|=_lMpJFn93N_Io6yY^ob!F%ti9p- zTKCgumi!-y*qex{U`K2KVsB9l)SZJ68%*bI+tCw;(i}# zVxtfn%ZAb97{pZmQ-45yXrGpP9LX&pHXgAF98MJGd18|hQ~A%*RB{?()3q~01g|~| z@rsDeMl6ol9K;SHHW#toh<%LMD#Yd?whXcPh%H9!6FqkUVhgoiq|TFjiI<2*>{G-( z)77P_ntP)zM@%h-JuAqSRDN##duV<`?j^rPY##-~KXyR09MX^2AzLH%9b$(O zQ}K@2_lW(VeFq&UVlLa^)Ak@1pl=|S`}~iX4>A9(9#&1nf`~;C3vn1mEF!{Qr+x?) zOEKlEujmBgg%L|4_B&!J#C}37jo5L-GSa}#EO~@HN*)vHdp|*k`5!xln96^|eiYh0 zi2aP%1;ozKKTE3ZfP(oSJD=xO_!Y5>x_XH{m&xCRe0o<9yNZ|!fBJtS_LtUw)AkU!t|5LK{p*O`(499C%jG}f`NUM6@%)GvQl0Sv7qn;Di$ol{U*$jI zYO|oYhrCy)))_B?cuBq3VE$(Ijm1MAR7uP8j+0=e@=wHg(isiL%b>Coe*z^ zcq{faNBjj5)Gf#t$(DLnYsA|l-bVMdWmRnfh_@4RB`~ z5$}rlYt-Ek?=C_Po~H-Rp7zl85$}a~Z>{^Vp|4)s8;B34(;x9SDF%>lkpqPkgY154 zwFMwP1o5F1!^n4p6z}G~+~Ok;pNIHJ#K+Qqj~s=#3V-S`h`+D(2Z(4<+q zE+7{ozKCKm$?%VVDq7E4iufv)mLa}e1hvf-h_B@EbK93Gh_9xz2J!V2Um&jYKmH}+ z>%`3S9^Sy7jfkuKM|`tTHK_A^h4d1{zeduD_*NvoMSL3)FC)Gk@iU0;K-_`&PQ>>k zzKe5r+j9}$gZMXeRQOYTOYRfOr4c{C;X(2c`JIsBFyh}+sQlNDT^3*=?m|4kk{fXk zg(0Nyl0MQeULkY&&%0LnkNDqqC*uEb_^*DF*O16Z=Q?=<@te9c&(D7*Zd27n zek4@*Q{OIB=T8*m@J{W6!$L?f{}XrHZ8YyiqBs(Tb!QPI?xU~rABm#cS6e{t!6r(u z^Z*hib+r_o2TA?=9};DdsDs4ANK`=L5tbe$9}`lPCAkG8%IlLqj>I!aR79dG5>K$9 zlJ2j}VHMq3jYF0HNIXTV{MXg$bZU^y{{-_tQCl3l4T-u)G)AHxd!Ds@B)A168X(b- zz6yVR&gYO&@s7mvNHn2nDx_#eHqX6+i55t-q4OfylH?wdXf0a3Hxg|{&}aT9+EM3z z{s)OykeH1`2PED@q9YPa_(UfpI_p_oka$(=u1Iv_^gQ{W=z+vgBzhvzkEPd<=ta?6 z&+3CjUt7x!BJl#C+D*x$!N`8jKQtd25 zBA5U6V?kmCdsdR4ldF(et^3!|$^HC45?>;*9f@_ix}MbyNNhynE9y;1GZr!to&Nt*<{krT!QoaE9BOyU|0Erk92a#|gaY)bl4vE8@ z@;&(j=^&j#Iru8LkuZ_)*bWi~5?-x+NT~3a1BrlrUFskbAqtiM6cHq%T3aG`<~R~6 z(ve6Yk)%kGX;S4s65J*dM?}lP*Xx+AkvNXT2_%^CiIZ$TMV==K9Pk-QU$3rPHj#IHy&y%QH%x`f1KB>q6+Hx7RnQe4S%r+*^B{7?LCS9!&M*>+X; zU*qsP5;wGSGxr)L^W~i6ZAj+Vx&V?Y{E@svI|X$=kSvL0AtV{>$-9tL`OoHi$a|42 zteqmV7_IL|vM3vhX{R`n4FBW<;{5N9lBJM*5J|>+@*yNkb5f@-k8IZakXayXJtAlU-RN=P>-|yVyRG zuX5NG$!;R_B40yt0R0|F_C&HTlCN{vi|kGI5z3*L+7HP$==ZmMB;V8}mH#XaL~;<4 zLy;V;owt!3B0A4IVHlFk|D?))y`B+B&O>q}k`s`8kEa@?&oCOvF-VT3`96{=|B?Jq zsINYb&PPIu@!Fq=XGv~k6~zi9S5m0(*Zr$S(_BM- zk*D+}lIxJ%gyeeNvw=Mu?H(jIbGU_6n}R;)RwNH0xedv0k=%~tZX|cGXD7MqRwsvh zkW}GMz1Kbi^*(Yxk_RXb3gys`@jE0B+YXZ7v*8EQq1WI->I{-@q~1c(gVX~^8c1G2 z(u?FVBz;Imko0p(fHcXVkRpU+F8}3(NJf!NA!)G`BjaR(RQazL#{5q*|C3qq*>HqB zYPTVI97zUy@&uA6b3>QQI=1F6DD{)yyuB>xfguUN?7z!)kh+`0dyu-o! zizB7-Uk>({M5--PrI30SsRxm&#^#5RDvi`*)MdzrNwozarS=G}rz}#B(u=Jb;)|R&pWD5 zrvXwekZOoj6Al}ZjmhVbdR~NmPC8A=W@K}uUQktgvq-%tntn^N6;jOqR2$ppb9f1< z-bl4WsvA<=6jCp<`4yxX^{Ea>b)?fNH_QGP=2RD&uaaH$J$AQyka~@N52Si(=XE;0 z?6pz%L8`B=_Ct#KpX$%jo8$nYKJ!4NmLoL?sSlAFjMNA=yp7Zl5!6GG8m9F-NU8j% zKU~N=9m%1}e~M8^jn;Y$o%hKPgnTW=BE>vUjidh&QsYHXPar3flgPMlBNq&yCb57U^P0Kg9mxWC^4n5J6oM=~7zf`TalX(nyzK!^67z z2#1f7kJ(qDE=QI}x&p=HWJMvx6G&IGb?#l1u7Y$`mZ~9L1L-Gqr`iILej4d#w4=5F z^*qxxS*oS|+8ov)>k8TPEYbszu8;KVNH;+GWuzM-%~Ve}VrOHdpA$j-Jkm|HZYn~3 zb)=gk-5Ti^*wBL1`JZmdVJp?C*3*W=wnB=RkZwoOUZ`*L6*?V|?uv9r>P|w6&SV!d z_xHc3yCL13LWMs?53;9_*X^bK-bnXhsV~`2`)?rKUu*sOKm8Wc35NSTXzmYdMHc7$ajQtIb9u&^a%PR$@j=nLc0g)F`{X{kMsvxe~9#0n&Y(dkqF+! z1f*xMG!f}Z6qCs*LW-$KPt$t32+o?x(k!IsQ_LpkkaLm#m|~t#4!y8XkXHH6(n4|( zxmdqOpCWqz>Ccc^h4fNn%$-OtM>>SGJSz{Hhsp1e{y~HseE&ObjkF7C_bp!p(gxDE z-VbUEK-y0RkTxlTLj6?3NMAxag7h(@qe!Qaw%8LR<3frA(n(wEiD{%Wx~jGSq>qqC z^}QTN`X{7M=$?~EpVIm?(m#sUoj-Hp8Klo6eOC9Jqxp;7hV%svng8jF%CtZAr7t6W z4e8%lRr!zf6{P=0`VZFTrW zsZTZ_8w&OM8`F7?d>$E<|Hw2I%AtFjBct-4r55Ci$T0jftyG)+$uQFfnYWQ?i%e(s zyhOG`rai^Wq{@Ga4rE7UI*HI1>VnK0^j}4$D>APm(~ZOKLJGA7Ak%~Fsju6M!`?!Q zKFIW?=qJ=YD*usrQ%Es@e2W}N4k8B&`6P!RGZ~qo$b5**FqYmS-$iB=GQ+7y2q{J) z^PUL%F6fL#W{j@BPbc?RV5r9;qw*h_kI3=l1ahK~Vv@ab>M6)fMP?2%(>PS&Pceg> zNzNi?3uPI|%tdAiGAjS+&qHQDG7FLUgu?~4uOIs&WEP8)=Zc>qBl#~YTxxeBvy6{r zxoWcmA+tg>GAl{_^FNu@$XrEc4KgQ@`2rbvPp(B~2Qpu>Z5=XOkWu-M%m#8Jxry8? z%<~MtLgs66SlUXe{6{ADS0ItuiOdhk?4r3F8Af_$4>I2%vybLp@>`)^^L{!9@?7N* zGT+fWOn!f>nL`IMP6`+47E*YSF>EcTLdJ(o6d6BD0n)Uq$OMrI(Fv0gq5YhZv5?8o zj3E=JNC+v^7Jy8OOy_xBvUHA+N0B*3ahyCMltbU?DP&F~^E)y>B6A*@pV;#=d4@bI zq&SDnFCz3r=6~i_UA>6RCAMAG&To01-W8VqK;};h75>QlP5vXK_*dWWHDq5#<~p*~ zk-34aB=AjS??&c7WbZ&WpK8wDmYbE$&mr?atMXsH{jvpV-l=v;s($B}*1 zc94Ax*|KaaN0ukm79a=vE7ExaSrzigRzkM2T}8GEvQ=%Z*QW9x*{8^-k$pylF4aJ` z8L~BzZOCdZWNV9{u7hk{ih9V_r+7B^%4QqbJu*bL5lbrkDV{_2d5R|5QCon%Tytb! zV6_FZZ75zuwx#ZDMW?lp_t;kZ%>QgVWZT;%w!MPvG-NvP&V) z_EizoUCC~G8Lx5JLsxrp_&Tz^Y)7~CL008ItNoBw8wz!QWZx8_+ulNUB(ejM9g6HA z-7^^3x3wOU=bbPN*>`x7cS)816lx3L^L!843CNB@_Cxxk$uY>P@TdMj$mcUwJL8aL z{%6PAj$YVAWGCsK$;eL8I`{X#ke!aKyfJ1VyBOJ-$j(D{mhPD?0@*p_TvBZTT;Y5X zbUr~gm;cBvM0SyCuy^q665S);0(_>m+5(VWMlKifY%7r6itI{cHzNBvvTIpgMXpA6 z4aFBiIe6D9|7os6R^>mn+5+^YH__RQ>=s@93fWx#^9P~I}+1>W3 zSo#Lpy%Z|^DfW^3g*@9q9Jz?>Asmr+@^?6LH?oJ3y@Krb$YzlJ0a*)K2eOhmPJIR! zvTm(CJe%4A_%wVR`jHJG8_+!_&7i))u=dp!fNWIAmHZ!BX8|n7&2;TJ_=FQXoH)$P z%*^00Gcz+YGrwU*hnbm~y*N8OJ9Pbp94Gmu)@U=Xzv|Yhqtiz%&FpMTt4rTm{d>mf z`p=jj1%DF!*+j)ThB1A{G#KMErYX@DV;sil`Y+86W4el{DOsf_x-00JnFtRA^%B6C zNH7*m6q@dgNg0!=rsz3i3d>8z4ApG^$C&ZrktJY^ECFMF7v&GZKLy7z<}XET^1o?J zD*8Wy|7vVZL_^nq8WSrNqU(Rvr7;-|ssD{BY!vZKNnCiB2at zJ&hTJRP~?6aA}U9p^LxmtLs0FSp{cPC}eiQIRxjVF_+QxE7F*o#`2=iLt|bVi_(z# z-ZuK^ju_8w)AX4pjZNi1b~I#^N-Vrcu>@8cWj9#ozd8EMqv0WoayDM1?d~ z5L}VQdNfv|vAQ%@7F>nKs)`6-O`*MqYtUFz#I%WkVZK_RaTtj0s8W+>poW{{KwxDq!jV)>HOk*n=qiAd`U3C4Yv8~{C3e8QB=Jqsp z5F*9Dv6JG)Kw}pg`$%Y48oSZhlg94S+`||YN^>tk`}@C*eXYKq==%#EU~jvw|1=I3 zJVfwN8oJ=qI83nm`_ICUq;ZrY>dSUNhQ_fp&Y*D|4XN;r<7u2=JTy+EagsKh?Q!E2 ztDj2aG{tG0uA}Dvs5Z`|ah`~0(a`mu#yNuLDpX&}M&o=@E)cxX=rk@elM(R}8kbuA zGEpw4p^LxpD`{LMI<+$Evw1#h5nBaPdH-$dhPA-4$Ls?hemU2zc& z-XZ)>W1w+2jVEZ_L*pSD_e$tKg+lHZ)Jp)32Nl|c4~z1M;G=?%(a`nZ+(S{Gq%m5^ zQ#78V@wDR7d`9ru+TD1b#tSxD9RbmJnZ}PaUZL?BjaO;BExle7d|gm20dERP$Jg632-N}9uH3`v)VM-8;eRSrsc7i> zFUokqzXhfKH~!VUIZ-uYb7E;uA~>l+A(PRZT!^jzO=wPOqPl7|r>40P&1q;ZNpo77 zbI_cQ=1erFmtIo;o3{QphtnKU^)(AeQ`U>-EMk@=pg9}O*;UidYEGK-(VR;RBTZkL zbJLv1@_CJ!=KM6(d=?Prf`SWK&%)ZHXS=BAiwQ1nqk0L@_o}%R&DCfwEzxCYt|(+# zn!5he)QgS~y#z?Mm8`Nd%~dR4)x3{r%F@tWgXX$4*OZQHS5)=6YgSpXLVE zV}Jg$xiQV%Xl_DtYnq#iZ8PiHoaPpyY$>>vLYq+Pe{)-!JJQtkUksxJx2LJ=zxuLM z-HGPT657S+H0}PsDfPd(2hD?N?n!e$n!5Old2hjeXjb*#X4{|U0TMb;@F0bDR)^3$ zlIEeJAEr>q;evWakh`kuKh2{R3OR=6u{u;eFvrt;mF5XFucvt;%?oIrMDt8>o=j8M zf10N%6ml9(UH^rjVKN9mi{{x@KZmBS|1|Z|Amn_7%1rY@n!2#lyh!k3nwJQZL(+y#z?F zJEWLq~Yi-IrFd|AjV3hg8D8qMEnzE1OJns3njhUS|z-xr%+ z0%*z_(R@evyMpi834b8X4{3fu^COy{O7mmEPi+3rq*>K}+wn`9y8hGrTA}(cOf#b25~2>vMelg;@HO;vu!(DZ0FB-EtYrK#&b&9-Yi8wqYKxQRkF1g*_9(U-Ql;1;yDq_wT^t!QmcYa4BlpGp;RJHb(vs5|aJ z>u_2-(%OgCPPBFx!_I=c2<|Gln?iF@wDzF2r*7)*dkOBXoBH|Lm)1eF_7ib`!2@(i zJN3VSv>D`IK(_S1fTVS(;9<4s5wwn^bvmu1XdNffqiG$Z4cdRKO>#V~Q)rz)>m*ty zny3w(Y>4E>cAJ z#e$dUX7vDECd%csuFztY?JCXnoUazVhSs&Tt`~lt4pp`rEV+r6{*QRHZWg?S)~!Nr z6TDra8BUsa(7Kb>y|nI<=G{7~``)8TmH9qV?x*#Di7K7eL$qF_^)Rg`X+0u_M+F}f zd|dDeh5AdsrlV;+C*o6rPYXUH_^d+lJTJ``XuVA9Md2^$kW53Guh4o`E7k3Koz}aw z-jL9nTGumwi`Ltg>%add;(LPcTm1uCAByskRw~aYv{a${lvYgZGg=K=pVRt5Y+nd| zN$V?G-wOYl);GGZbf@*5h~Jy0(P{lC;!lD<3;sfDjETxUY#L6hMXOEAr`4g=qt&&# zW9Q~dcdzQJ?`L2=p@bsqOlS>>(x;VLPev;ju@Kb%{84{Z7d}=*bN7A~{+rKezU7H%{96@BdgnT%sdr&m?4Kt;@3^%~@&BrWHN0*=f%qWKN^V zh$Cq)D&pL<=b^oz@Of#^CuDxw3uv<$PG8GHx~a3t63|}6L}@Q3;^MTI7P5rklC+mH z293JcGJ?y}Ud|{ohZShQN_$1xC(~Yu_8zoXroDkUR}oy5_G+}(qP@E5MSBg}y8i1g zJ*&0Fwhry}XzS&`>i^Y$+8ffA+TPws%p23*M98Lso9Ql9wk>FHOM6Svw=z2It!Zyl z^K3_Z7uus}?VJDT+Pl}pJ!$KTO?xled(%Ep_&&7v z)gG3^Y zCmF76v`?XZ3++>BUrzfp+85G3o%T7(K>G~Zy7&v1`rp?7|52Lf3Z7@9=hMExaLK9b zKkbWc^b%=aDtMWl+ZD90qkW}_w*I%TmgY6IuT{i2MY*2#4MJ`dyh-q8g*Mx*v>y@i zHrlt-)2E#fm;(W5_0`#Hmvf%Xelf04GX|FmDW$}4&-?RkyP)U;ox z-KG5o?eA&7N&6EqzeW3P+8+piNAO+R@6mo=Co#pLn#P9`{YX&%#*L6qX@5ogGvS{r z6!Hb_FAbN`zZUTu8~v8{cbZojevs&ov>UW_@t3C5|MoA!WeKRvP1-H%Y18f)uI5SG zq5Ti-9_=C8F71f6C*6I)!1fC5xH0WaLWy9XcB(zqK)Ll7v`fv+tntsy4bB9bNzFtYHko*P^o?9jX7F zb*yt;JMQ{ck=3NLVXfoF(tQ&;n+n-XaC16a(b+=V^gwzEu&K5dWgDZ=*^d59bVkvU z>fPC%&JJ`ArX$NiXD2c1;!kH6L0$ZX>?XLo;2w1L6tb7#-h%rG>iSP-Kf(P44-h<1 zp^$?#$*!eyh%^sXs6V6WUWe14h>ouRbdD4}O7LjGV+hpqb}a53bdJMOPuKBuH>Ps} zoi3dd>AXPaBsw?HIaz=7>zqR8YC5OVxq{AVbS|fJI-RrWoFUoH6x7Avj((2x(&s-y z&ZDCbf9PBwc%h&i{&X%DF6TcTef}eD)o*7V+FFc-!!JAv(7U{!gL$68%m(a`GehR+M|_+)w9TI``E_m(T-7 zq4SV5FDzxI*$uJAt>iRozcSO{HOD@a5?|!=<^?GK1b(y!_^RUUZnFa zotNmmOXp=eZ_;^%&TA5SRoR5RPUj6XAFI42`rCB$$&U$%@}A)Pf*%M<@$X3S??`3q z$nw$oRH9P^AFu&bpEBQ zEB~Nxm7zNc-G%5*N_P&rlhK`t?&Nfb)189ujC9c%x>M?$T{-;e%HdB}4u87Siawp7 zod0z7`A>Zmx>fxb&&+gZqdN;-UHk`58A2Zc37M1bymaTHJGV4PT74eXR9}*3KDrCg z)rUVes*Atn3)5Yb?jm$orMsvkS&Z%~bQhPtQvAD1ioTTK(t^tfO7ZXN;!k&ZL0$jp zt|+(?-IWy?-r7ii{WqW0=<4EcC$NSkYtda-I<76KmjIc=dUQ9WyFOiA`ITb)64Ggf zY(n=*x|`BHm+oeC52d>~-F@k9L3aR*xUJxJf};et7u-Q`N5P#0 zcUCB57rMI|F4=Zh+|FT7x_i^zOEs;c>%Zmu(LI>%{&Wvi3SGSfn7(v%{Wm%39%9AA z=$=UTaJt9QJ%aAhbdRKa)L=MCatz&LjZ({?mVgsXHu0Q9_jI}^(>;~0KL4*dPcxkE z8FbH5A-eiI1=8zmy1Mu)ZawGGy_xR$bg!U$0o_aKUP$+1x)*6rcCEGPB|veym(ji4 zh&FU3-RtOHMfVyR>*_&%x`Xc5)4frmH<+mKn{0+#=-x;7R=Ri6y^XFJ==PfP4(q&& z?mg1?ZWE<@?_e@?@2C3+-3RDCL{|>~tEWiUf9rpgu9W?*UIJ{|CoCCFw@LRYx*yVg zn(nJ~pP~CA-Dl}OuRL_0vw2>q<$Os(FVlU+oeP4`c_9lF2K?b01f*HH$#JwaE{6Z8e8 z{&%JRccuP!rT%xN{&%JRcT;gn{qIWs?@ImeO8xKZ`fnyoR}J**pefV)T{WeFbU=#zibQIgL~Pt9{aoQH7c$2k;d0i2C-7Q|TtXCa)GaTdl|5oZyc6>y~fJB!H# zr2acg2wzfgDZ!-$ml0f6a5;r~^Y1LLP;uSVm!>!Wmal@dn&LRCT1DS0W58JxXFZ&? zaMr=m#ov1La$x!TI2+<@Q0r9{f91j11ZNb^rZ`*UY=*NX&gM8L30Y-nm|(9dSP#z4=#7s~m_^ReqdYy|2F6GI49wpfODcz28g3S0;rBSr{Y|Pa~jSyIH!wph6>@x{@*!El(PlT5tQ>E z=RD!(3tk|2p`g@%o%Uj!OGLR;P;dTm^b&w`h2WKfR|#INP<`1c+4}EXk8`6KZZJ`t zn`)PE3(nmVy%py+oI7xC$NBGpm#erFr`rG9~1eS=hzHSc>?Fj!8wDB^%Tz2CW+1PEY9;1dd?~@7@`p8C7joAUKYbE zIQlogly04`~njE&2{l6X#u=A8_8o`4;DWoNsVGkS-re&W{B3BZu>e;HQG0 z34Sj4h2WQhUn$fZX6I{#itDDH=XW^Y8*Y^!ael%12}hs&3_>_#a2gXTs{Z$I+BjVt z`3PXX8S3czZ?m~LK8~*cwN!cuP)(c&=O3IHXDm*FQ{wb-G8|q1^#?sY!yKnDeFsT! zswDtN8UDmk*YyX^Z#cgXAFDT$#%bp;4rjci`fHE}M}PlU#DD2QZz6h=(;G%_5_%I4 zGSHip-eiMbRhORr{;%%ao08tN^roUW4ZW$AQg_muPCV1ot17?kHJsip^hVG-nBGkE zHljB(y`|~RLT^!ev(j6L-fYrWZ~p1cA$(53xdcZF&Mi2P;JkwK3C=ILfS}(0>#yQo zdJEHAWWpIPMsEpviyM!OwIn@V{FP#m-ZJ#op(p$Q-g5NTrnkH}W&ht>Q90@9`cF@P z1faKy;HrYF39c@2~m+*xoJL4E#1Z#Ti+ z1@{o#Q*bYZy7Ft!KJ@hAkIH7p+MnKm5~}w9^bV>;521Gsy+i4pNbfLu$Iv^R-jU)z z!e%&%-q920JeJ<^^o}#4L3$@x|4H;tr*|^FQ|XX-)p?4#_Yw2B2 z@4A}*h5=WE-c9swR>X+(ZlxE{yN%w{^lqp35Ir^e-SqAd^PTkWGEVEihu;14)T4gi zg!%*Ys?EQ3K1}a1#pyjF_^8z%r}v~NPuQ7{ruUSITICsfU(kD&-pBNwqxT`b=jnYw zPuG8XFIwA6^mP3f@fCWnDo*b;!Pf=f5PVbcEkV8ir>BpA=)Ehb_y6?XS2*DuK2lAi z(EEhmXY_Raw~DU+mVZglq4$+)()(KQ8-+r?rT3lWua*FMKhXP8l%E8D7W_p}J_z(0 z!kdCE!M32T|Ma>FRc7Hmdb;e>bB!Y0x6u%HVtNt1Kj_8u#?njZmGor)-_!M zW;HB78^d-x+sT++9r5io02|2kt?* zd*bS9kGmJ{-njdis8STc-4Azv>puWjuL7!Rm4k7Q#61M}aNI+24>M8Qw<`XU=P2B& z{^K4qu;CtudmrxcxaxU00ry>#2@i)Usp3`toH;SFZnYd@;>V;t7 z#68DG&%?b0_k7%oa4*2s#ea}Zaa>*hgD5<`%IlsbN9`|e9P*Qz^`z>x0_dDF5algm?5%&ib8g$3~$#BW@ z3+@=)Mm;}n3%7^c#&vKzxZOctWiw7(7uUzt3&Ef-uHFB;5#DsTG2Rro3Eo7wecXR= zrT)88|6N`GaSK5?|8a+ej}?w#!9N856dWh0>p$*zK`H(d>*A?qh5K(c zTW=WNq<9nKO=6VF;7x`%x#89cp5E}|>H3d1)gX$e>pz}e3nVl>-ePz&;4OqVBi@2| z!|@itlZC*WNz5|~<LgpezKQuK##*2+k=um*7ajxdmna@5%n(n@<$I|2OljBi_Pz z)&3uEQROivmc?7H7Fq#s54;uew!m8nZ(Y2V@z%s! z1#fk{Rq<9E^i@QC;jLl1<4OJZ*2Y`MD8`Am9^OWH>*Lwt@9B>KHo7sMtR~(jHqT~w zn@^ZwOT3-%w!#~Qw>93jc)I=@k3zidY_{$3b}%}g-v3*^Gv2Ovy8audLcHDZb{{Bs zd*Yphw-?@_czfd=fVU6ce&XEM^upWUBvgoZAl|`vdjD@nIYbf555qeK?{K^$CBqR` zKMJp^|2F5bc*mnr0q;b^ZLgE@F2Fkl?`*tN@y@_I4exa0vAxd3)5Tvkt#S_D zd5YtmJJ9jYx6upnF2lPB?-D#+{EaUDOYOLq<6TkfTkZexuEyUK?;5-e?^?V!@UFvq z81H(#JMeD6yAAI~yj$>Y!n@gIuI0JaD0sJ9GMMw7c=zMog?A6$-6pCK?_Rw7Ow-Qo z0lWumId%OP=OcK};ysG@B%ZGSc#q>%JAdmLjrTO(Qz~k5;?;`3_Z;5Kc+ca#i1&i( zVtc(*^S^@knk0YKMqf8XA>NyKKjOWG_c`9%cpu`ugZCcZyDDn^@8f-7Mz_jGc%R~Z zjHeHOjA;CL)hdAZ1>U!KU*dg@_f>5^-wgbC-zkpwJ>Cx!=Kl$=hxapH6Ym$ihKk~i z8FZ9p3$KgU#_QDkO2{z^o{Jaad3d_!-z63$MVR0iTbc{ekxv-k*57_$$%s<5klrc>mx}g7+`}Fs0yE`+wmR8^7>L z@h8Kde4r?T5B>=JDekc4^(5Hb>fCH%SZ7ssCme_{N2@fX0K4}XHQ51pc!4OX4q$ztmu8@#}8^2w4t)1(|?dI{g&~PW+Ye*Tr82e+~Rq@mDh;{MBoo zHSyP$RC);zqL%<;z+Vr4BmDL8ZTS1S55hmVoc($8BW4K75`-XQ;bp{3;%Td>+sLOzX<d)ZoAO5LDpT~a{{{{S)@n6K(#ow3};=fYk zui?Lm|2n=t{Hf{H=3o5p;D3()F8;^(@8N%dug`ysAOAyqefY1OraS&8_@Ci_I>=`A zFYv#?{}Nx0eSEzH3_SSX;_G7{{O@e$A5_%#{RuzA{~6!K{{_E|KL)?4qWBHtk-qu} zNW>1luKD;~o1v$OBuMdCJ7k*%SMfi#IimlSeuZq7_RQ(^1U*P|SU*fCoL-=D& zbb$E3TL16(dDENO9OpN~z!9>b{Z})k{K=1!;o|y?| zBbbFiuL4H2q1i2&lVA~oxd`SX7)daX(h2lO07Zn)Yn}5GEGUXS{|Oc%Sh${^UR&fGb|AX58KUjfaYl0OC)+1PnU`>LR305Omg{K6xU>AbjB+sr!C(!$U%l9PMk6SVu!*x;1qdD@c$DB_ zf=BAJvh#VI;3a}52%aH$l0a|!2}YY#!tE*$JWKFA!E=LA2wos~ap06eUnY2y;1z<` zr0=UHO7J?tg!Mmoi{M>?w+Y@EB$O`iDYU&lkenY1enikl{SZR%9l<9AUx@fA!Dj@Y z8^1w;AM;Aes#34SuV@euq%FlIu(ECfNz*c1|U2oi!W zfluHNcmzFy>g0cL3E~V0A_9F3Wx5l@hDfweP!gmBIYCzQ6g56Xphnc^KX!)tgMj6~ z6RJn$55kQJ{v@1>U>xCODoXGd!FYmy3H~;If`2L!PDD5f;V{B#=Wnv9D4|{gboX#_ z!r_Ed5Kcn~p+55=oYF@1aZojfa9Y9{2&W^gcK$|}Br{si2*OzjXCj=1aAwulbhpvj z2O|l5iQqxd|5~oQH5B!g&c7Ae@h|+W#A;^jgqlCe%xS1Co4s?L81mnB@2a5=)23702ak#GfNFiygiYJ3&K)d^Q6Tx~E16D6!x z0m8Ki*Ht3n+Jv?Jf4Cmu288RYj;1f+hJ+K;f5J@&k0RWZaCgGZ2uBfaPPmn1+d^4U&8&AX#EEe9!#j00C65uE9!_{D;bDWmlK%)o{VAZ9;b_8336CK>lkix= zlL(I^JdyBt!V`>hLjTExrxBh)c&eF$LBi7s&oJEh3C|+DfbeX>^9au&oN)giR);^z zOn4#TC4?6dRww@xX1bn4hPf7D>!s_tH&gVJ8R|ub%=nI4|5$f~*K_0@Ft@Bkv zUGoWFBYeGPc$4sL>0W&VAbf{VAN~yT5WY{?ApC&vE5Z*6KOy``x_oSG!apVag77oK z3G09OWzF+7;g5vh5Pm0JzBM7j?+Nwhzc%7eguf8}T=OEf-k`75L&Cn|gb`s(s6Pb^JcOx)GQxZyDg$9jG@NjV@E^jlgnx+5yt95K z{EhJU3H_@6k0%^Q_*Y$*RDYWh3I8Qh+xUryCMOz3GzpPj0;*^ywo0`6D57frZ*mgtNVGH2P7_{*UIJ7XqTPrNB-)*5AEG^o_9ohsNLT*Bl&o`K zqWy_#^*=hGHts=^?O>uqi4Ga`B|2=7is%TU^N5ZlI+^GwqGO4UmR`ryJjW58NOU~W z34q|bk>ayiizhFe9w(AN`PO>`~MH70}c6J4j8iWA)+X>T-5;Wrb#L39hz zV??(SJxFvL(LF@B6WvLqy4+#Rc9gq_?jCfPoc9vlPc-5FKYGCWACgfX7JP*0(FyxL zPV^$t6GYDvJxTPG*hU)<(bGiF)cq2Dj_7%!7fk*^l;|a*mx*2@dWGoK|1VlC0Yq;S zeM|Hf(T7BD6TL_Dj-;)Y0O9Wo>ixg^l56~k=nJBci9RFxgs3|F8H_^ox#2`#63PBQ z`pWc`RNvS<-x0Nmz9$+(^aIgPL_eyKjs8sZi{Z7*4WcGdb@F4K9U_mYOVlHBj9DR( zTg&DXg+zhrQqyB%RSFW~nTYzt!-!I%KZ!D;u|zr15K%!?4${{8s;Boi)g-d#Khf_* zdRnAqM2Ym~pXgs=eF|hmt;7=(PeVKj@#NB+lz1{ljDdIx;;D!s zu6F)L7iaYmfOuNs5yaCG&pbl~&iRTmBJc9Q8C!U{pLE;6J%{V2xknOby@p8nA5-&--81WKHCth56j6s@9 z5idi$v=WU@ylgGHJn^c;D-i3lPrRZD5wA>KRer0iMyv|{>cnf9JVsZXcrBZG9pXcY z*CpPbcs=5ciPsmy2E-c)sa64-a}(k%i8m#-l|SB`xH|u_IkzI-mUwI8ZH!{|?TAMi zZnNz`ybtk?#JdykM7#^}&Vw$*yAoGF`D6Wi5X+uF-qR|3*ZlhuA4I$#@d3p9*YpDw zH%;P$RY&4OYRX~6rxG7dd?N7?#K#aHNqm&ef3zZ&A4_~Z@o|H`iV&Y*qq_bRpKPMU zrzoOA#HSHoM0`5&xx{A>pGACTE$7+9=a>vO&w0cb5dXLTmn0Y3Y!?$>PJ9XRrAARm ze3^}2p@=9~+H6;otVDbb@euK~#P1VdNBkJ^^~84)-#~mT@r}ecORt+u9^tnbPJA1& zx{BKeA(>CL3J~8#`~dOY#P<>3LtJhCjai&_{~td{EM-5|OMrwPA%4`%(;)HV#4iy) zLHsQ7lf+X0#pcP0OT~$cdX#u9$!x^`M=}}luf*etWg&=vCmu)q z2l1bEzhwB!=KPyvV&Z>Dbmb@h*XY`l3^Tn*CXwc(wb0}w!%3zfnT7^W^dx%!Z@QDrKr-VXm9>o^nTcc;l9>liJ)dM&+iP}`g-GTgnU7>n620LknTte! z5HLwZk@}y^YkTR`Yoo7dqbrkKOR@^d{v@lCY)P^j$p$2=ldMa!2FcnaYm%%r=&Ok2U&myS z%Qey8rX-t-vYBy;XA6^uWGj*#Nwy{#C7x|awk4@fevC)_ z+Y9bsd+kKBC&|tvyOHcdva88#kYsm~JqBY*+Pz5jCE1%~ACtj4_cKI12audhav;f( zBnOckPI55Gp)#&s0+dH=)hQ6k5k?WiQ6$Hc98GepG>=gsA-euseger!Bqu6mAWFhh zNG>2bmE>%a(@4%BIelOtIg{k9K~wzakesI!lIkM>$@v2V$%Q1Bkz7P_u@OlwA*sIk zYn97Mt|GaDq^kT@znbJ4Gh3@%NAd>A^&}6I+(2?C$&Dnpk=#Ub3yEF`27Z!T2ThXO zNz}Vz!u@}87sVU3rz9~iLU%4|9uJ|vHSnzO_J|P z-Xi&e+vACY`Y@-azO{Ox=`Bbo60C;5`(8xpyf>VNXPaQzX0B>eEVdI{MRF zWd>1Zq(5B92!$i2l&k2^On(vjvxu&XKYiK%_x1jt{v3k(@Spx%f+H0QnVbGR^yi~5 zn}75Bcm4V4FGPO<`qh8_RZjhzs{Mrx(WuidN?+H1`il$drNR7`BK@VNoar?BOHVms zH2r1hA54E)`g_q|j{a`+m#4oo{T1}zW9hFbnO73Nvi|E&{Z$0@AAc6I8vWJjZ%Ka* zX|5@_mf+fg>jOnjJ1p4uGMhzH)rVYPJa*4_tg5BzVN;2@1uFS z7X5wcA3%RU(f8LL^;@4ZVfqJ3{)2RWea{b}eC!)3dL5ztL#GQrivH*7 zcev;uO<(`*sd(_+!*Pk$ZS2{d?%& zMgMNCh)r}g?fdkdS7v=(_tSqs5!I3YgY+K~@nJ#z&wq77ZF`LV6ZED2D^b5j`d5JI zkJcU;m%f?FGon9BU+?+pKc{fSL_PX1=t0$&nvCxFlHkjN`tQHde|2~~hW=~xUsuiH z>hB^d)Gyzgf^X4(TgW>Kg}h7uJt6N4ejxav;75WV3w|Q_so-Y{hv$;vuO;YzLH|qs zn1cRS@JJVg5L>#FZcsP+tdG%T)iAWk*!SsXVMGk|3a$X@?%IRq2HkYEBz+@ zgno;@dT!hF9r_*mU6n)+tu9Kv9rT0R8!_ETdA2?JA$^~Ipgrn_k3VJv>V`-3V|}|y zT@X}X`hEI2{ZzjNbTiYB&Cu!e3;JW}m-L5JQ>XoH)QDk9mtPZB-F1EVjsCy%f2Tj5 z{vY(m(f?BqS4ID-@xR6Yk5<&^3RU-XBEey#6Du-elI^59De0V~labCqIyvdoq*IVi zNs5Z9-=r4LR5d;g>2##i)|BZrmr+P(B%OtHIO$BJBa}X3&vO-$&RpZOlFm*#TTPjx z#^)kkgmfh7{G@Y}&PzIvjt-NGkMzP&o<0;CETtSJlE_@bmskuFBM1nJ^RA2H3O z(rZcW`E8W&rAe11U8bfir?`6IB)S6WuB0oHZb7;d>AIvVldeI!3h8R3tJa*W*Z7*G zYm@5NOTUPEp6k^3dZZhZu1~rl=>}S_X0?&#)1E5+O-MH*-BhCL4W%+{F5Jw2OVXW5 zw;~-yx;5#xq}!%YCjN0FXNdNkZO$IRqv#YwNxQF%3`d7a?(q&FyHujnSydq{64{U7Nqq_>gYs-vo) z=?u4PUR}{0q<4|tSyS#-+&(S$l0HOwAL#?6_iImemmbuf>e?SBeU$W(nxda-UA^^K zPmsPx`XuSgq@zinBYleW8Pcbo%FR@ zuQxQWvb{z64(Z!kscOZ$npZP_pY$uz4@f^H{gCuy(vPICxx=4m{`V9LNk1d~g7kBV zny30p#qI0zHR%te-;jPss_VbKx4QlhANzws(jQ5GCjCh()!qI@^Xj>3kWES2Bpo7c zkw&C#QkS$t>X3HDX~xyhn7ulWG$8erGGfVj6_SQJYASOYljfueX-ca1RCe4iEQnHE2 zCMFxEb#v9(B$^w4HW}FzWRq*f%sG?#Upc2Dn}=*_vYE)HA)AqGTC(ZMrqh1&^ky?? zF7I4L$cB^Y`fsB%lg&Xk3)yUBvueE>cXrLq^=5ODjU<~(E7ct4u4R~)YzeaY$QCA> zpKL+01!{Tp0%vnBLbe#$qBTY8|17$CkS$5J9NAK2%aARtJ?0&eEvtC-JZH<3tw^>) zO<74ht9h}1s> zJCRJkg7z+*LUtONUNP;s`p#7QgzQYRi^$F*JD2Qi>3)uOni`UwM|J_(`C6%7{R?&9 z>h4`kb_LlbWS5a$sy)@ysO!I-)saJd+d39H>BYT7Fda_5!ZXmmh>_)QN z$ZjILh3w{9FRB04Ro_l_2igB>d8GbV&&=Iq50KqMb|2Zj%46@I)c?x!AlbuY59th* zBK5y|@*g96f$VXzr^%im8%_44c2=W5rE^wy;2E;#$fW*P(dV_Zx_d8@y+-yD*(+o( zYrVSaS2eHh#_O6_ecvSej_fV6kICL9`+)2nviHc|t$E%ba7D;IB$N7Iy*i(eeM$By z+2>@RDTAHo7t%}Ci0mt}Z^*vZO7(h4{jV~7Pu3y(fou%fk7PfSN&T;8DD_``0@6dP z`rjgJ>O9r8v}?Re=8DZB>uKHWkTZ`gAk+2VDpLQeXiUB~SwcP|S)XhiSxT0ZW!hiO zp&x)+3zZ9@4%lm{ulY=WaG()k^N2fFWEnmU+zynk#?G$ zZ9Xyiq~w$6sCiEE$uu|jDxZRU8gj^|BA-(0rZVJH>kQ@z$)_cso_snTHS^DB(A?~+ z^WmrugZT*ZxyWZCpPhVW@>$7esrhHqT<)+UqnHzMCq_o`;H zvF7Hf%Qq$8oV-^5^DS!5t;n}kP4cbDW&dBjM%$5ZPd-XJ&3-1=`~PZZp6^7yH~G%w zyOHlA-FFqI>}T@b$@e6$)&G1i9j)fJ5BY)Q`;zZZzF$p0pqAkv@$j{VD^(^W7U)6;CT=L7v&m-3bpZt9C3v{%4qAnu8g#2QyR9Ahe=GDEuoctQ{ zE6A@Rm;Ha`(ffbaBM(#b)HUkjLb=lD|%V8~M}Zx063e z{y*}2$nPM(i(Kk|HMhHU&XM|ELw+y${p9y)Ww*CQc|f7P0}qiuPW~|YqvVfhy~^-d z&GQ8LXmY9l)m^I9|NI&9SIM6xe~J7#@)yXZ{+nu+zo_#_FGa{-CVxdMrhewH4Wi_4 zkbg`5CizF?Z;|VQPyROYWLA6E{5|py$aVd%KHcOW>I~JKKPLZz{1fue$UoJ3^;*dO zzv5q#e@*^Xt=Bg-{vCOn{Co0W$bTUJiTp<$t*-iK#j8(D`55vhc|$8zm21^_hukCY zlK03RouPX5^^<9{`Q#yapp|O=k^HNCtuSS&mZ`Q100g8nv7StK4Xs!Mii&88_u^7b? z6ng(}JxkX3(iF>5ETa{(XDF7dMOUC$n_@+Z)hJe?ScRfi{|jCJZO+vx)}%1?e-Wiq z==yJ?>riY+u`b2>6zkRW4QhNNicKh_{+qSF*i=U=zB$DM6kAZ7La`;q{uEnL>_V|M z#r722P;5t`mjinzM`>Q&^BpL5qLBT+dH)tW*T&tIVlRr_DE6S(UF+3-*i-Z0^k-Fy zy(#vk*heeXotOG=*81WAilZqGq&SS?Ac{jM4%W`g>Pa}9;z)`kv{H?7l;-9< zp*V)(M2cf6j;A(%_F{#V&_{iirtN2{EtQd~oE8pVYar&F9maR$X%6jJ}Ir$Xw# z*&!6?Qk+k5p3YF^l=@#~yNKd)ii;^OrMN_UsweX@&8zFZg5oL)ssB}eUH|QTuBEt* z;yMad)zST@_r?{Kqe-w98+@baA4%}7a_fXu2oTu5R z>;77X2PwX#c!=T+iiatlrFewmNs31)9;cA{U(MtR-K*lGDW0a#_20g}&nP}(O1M}E`?9wP`DI5?WyMA)p$S=QON$kdamMH zRMr3ADN>3dij1P5$aQ{m_FI(NX;#u=EXA)B|5xk#o95Ls`3J?{6n|3uMKMlisAf1` zd-{4cq4a&RokdE9LBzv(FWDd(k}rxum^Z+27V0+ecWssGjJQvc1XRxV1p6y;)+OHfMvukl=kssEL}7UlYsYg4XE zxsLLT*l#C=l(qU_Za}#a<%T*#HM*|<_TFwvxgF(Zlv`77PPrweem`30R+`H^6`|aQ zQtE$|XB6eml-pD8NV$V{R@biQVEHbTyHW0{6;stqssElLxz12M`B&EX)s)v#UQ^3(U5(#B zc`N0Ols8k}r1fgfx9AL$Kdg}QHp>4|-mVo>2TG~`mGds$tGbGND92OYOZheBeUz_I z-cLE2@&U?6DIcVKnDQa*ulhcsdG$&?M)?Hg<9d|pDrEm(MW3R4p7LqRXDN04wbC_Utpsl6`0mLa4pDI>~^GN$ZPCOTTZ zj;YRLzEe}``cGMCrFvb4D1WCMOZh9MuK!m5P4VipaQO%2ILbe@Qsw+h^XmTm&CueM z|1dOy@?VCgVrU|UCSzzALz6Hx@qamoCjGD1(Burk&=j@klsani4^7RG6#SuS7@Ah= zrVbBH&(Mqv%}{d=*W7&9Z)hfl=3!`NhUQ>s7KUbHXjT=iu6<~B?KIEo(3}j7WN0p} znCES1?pkzSh8ALIK86-xXnw6%qu1*H(83HY%FrS@YM#2G#cF&BhSuf(F?G)ImK;wT zAJ0>9vaxO3ww;Y_+sVeZZEbAZ*2YdY*%)W+cdEP2`|E$s=ebqY)!o(I-|0K|?%l!s z7%YLo0vIfe!GgUP1LnU}c(4cti(#-Rx03vevsbUwU`Y&?!(b^4mcd|Yj*)RL%UY_m zJO(RbumW3TUd;cYUIl}7F<2FYwJ=x>gEcT<{>#&Op!lz!)C0c%W3Udl)oVIf4}*;{ zSRaE8G1!3Zdan*P;tYD{3^q}%Hf68AK@B!X($8oML@#2nC8BQAJivQBr9vJM60rMY&y||T( za32iz!$9$0a_-Mwnb(0B9D~6@7#xnl!5AEh!6EFG9uG6}9D%`67#wMMk2dtNhCUvH zOEEYBgR?L=5rb1P7=^*f7@Wj0G6uze(WhZ>1_r0IS4MTF%Jx$KiNV&)4hQ17g8!@;XgKIFj0)wkCVE)TbBnMY3&HDs{YcaSU z1I2%-0P|nojSOzW;C2jd#^6>AZsArk{@Ykf{2dtFg#kZVhL+KWz6XOZFt`_kmoT^w zgU2zrAA^Vb01O_$;6aX*3OtO#qZly%<$Hm_V=9lX$rBhni@}o^JdMFqY?rlG?|)<@ z&tdQa2G6rsKb;3JvX=ZWWAGjZuVC;d2Cri9ItH(){JNfRu$I}qg~2-*DE`Zdd)J73 zAA>O%e1O467<|~B{182pOC?-=}M^r-kRC*>~;{=wjH_DZdo z|3f{%pur%*AjcraAjLqv|B=Ydh%7LuFerPAyxSkB`@gJ3i^#>GLu4be{?{sUI9?MY z@(=}xeD>vfN2L^Ly^nb@mm6wP8}m<`c_h-ODL z5285`&4p;r-aDMv+^l6J^CFrb(R|!i?}ums*7~h-v=E}j5iN{pQACRv_QhDsyp}+; z6rv^BqW4Us_%CB#7SSe%mP52AqU8~-f@lRqDjEFuZFa zS|8Ech}K1<_%CBv&xqLo(ME_iK z5$%g;e?P{Ez!_vGk3w`7qLUDvj_71Wry@FqBPU|!AUcgB^?Pal@(e_Z|N7<`osH-MMCTwn z50T=(tf}I^^nM|tixFMKd8B&GfBAWRbQz-2h%QHT1EMPsU5n^SL{}raO7*LV7xDdH zkG2kM2{ePm@QJhM_J4Mc^uI*h@L?76rv~DF1&0tB5{9^ctcM5xtJ+9Yk*+dJEB;Mk~dC>FZrY z?<0DTz4~`xq7Rg2vLX72HH(iCjbSaVK1K8cqR$Y0jp%bkUn2TKdG)FJs@KD6e}m{d zMBf^g?>SOd_D4kH5dDPcXGCLF2EBs682VR4zavuommQ+`AMrB?(O-x?M1LbH5dDKF zM)WVD0iyqm3=wPTF+r3eN)2z$T54M&>JU|k8bpf!`e%Pp+sDXvl(B`_L2UmoL+rBF z%#VGM+Oo+i=z520w|D*egCqO(A;tAQS->Jrm|C*)oq==_PJQ?E25sxr3 zOu<^uC7ufLG>E4*EC&DM=@GAocm~9aBc2iQJcwsPJUil<5zmTP@n1$V8)wif8_$7w zF2suedgsT?|DktY#0w#w5Agzs=Qr#N8e>=(@uG+o|0U;QM&uHRS4O-f;^h!8g?Jgn z2LIz_RixTQ@$!gQM6B-rl4m9M>gRsE3gR^puZnne#H$(k760{nzj!Ug>mXj6y|Oy% z_F8skyguSx5pRHaB;pMbZ-#gy#G4>i{Fn7o_kXF<=7_gMtoX0@VQla}-Wu@^h_^w! z9pY_`@u>U1jDJVOJ0mvuAMavB?uK}O#JeNj2k{<=_d>jP^^5MR!b()*Q0&Z`k$i&*hr+N%4%MBae-R>U_V zz8UdN+)8%EEk?H65Z{6Lb|dGVtYtrpM*Je;yAeNz_#VU$BEA>#{fL?W!x-lOu;vdT zegv_>|Csqd^gfRG8N^Q@ehRVTzf{BEfBY=s=MgLZ%g$H)*SD|uCB*L{?)m=);#UyA zhWJ$;iOlzP*0OuwMEo}5x7Z?;dB@Q2A^sTg`-ne8toX0F7c2hD+{YmP6!9lUtIrJm z1ri|s67heCze4;A;;#|^fcP84-yv4~*S|9pEB?z4{1Ne3#6R_U`ia0UyXRP%zJuVPeh)cEz z_cZ_2^C)hSxQII>HWG{T>k23Ql$0Htct`>yK3nuil902_$g7Ejkj#u^JS0;f86U|c zNG3os5fa6Jy+(=Rzdq5)q)0{}nas$>_kY>3$&^T@LoyYTX^<%X>z$J*{!8!EBbgD& z4BSeuc%ttAqGv%eHi)4Nz^RZn&rxJDl zmmU{FvIvre*()qmtchfe-Y)wmS&L)zPEOWAvK|uVzi=s8 zpS3KiSOCTOipA$(C%aI~%QbWv~8i=VW&z#~|4Q$-zkWM6w@}y^!pKMDbsC-M-vb z(>2*2$$>}?FtQzF=tGb&@R1yf?DGdW zvVFGyMDh@lN02D~%Sf32!%;ns8CAs?X=t=kx0G1@-x2 z|H-L1@?|8iB6)?slwMwAEo<}!l5ddoVILuR3(5OP-bV5+66XJ~&hN3--@hau^cu;B zY|$i4K1T96k}*g=MPl$jG5DYK{QnBcmwl_@7`|pLWB3-yk4U~#nVJ7celQ|`Lh_3; zjz#iwFXX2=$v7mxA^DXfWnF$}Ei3XT(&dr-g>*_Jekk8IaC|bVjylUZpd$mQl@$bS|W`A?;gf{ww08bM`UA9_L0nFVcCq zm8NB?_^+#)E`W3qqzm?5qzkFfg*j4sUli$5NEbu81k%OXE+b#E*TeivBV88hGVIkS zC}sW+N4Nsg{gAGRbPJ>_Azc^g%1GBhx(d?Okgm#k^t~co-DtHY(zTJU#a{g{v(k0g zt9Mbl9@34Gu8(v>r2K|NA0?z4alF2Jq?;h!3~CPyN3}Ue$_Teax--(PkZy-`B+_k= zZp~h)>b8d79_fxqng2uYPKMqE>7Gb;MY=oE-Po>whbP^m*K#vS_d>c4(!JRtV^jQ> zx$KYhRHO$WJsRnONDo7L5Yj`C9?aQfy$)rq_j7tU(j$=`!4?_qQLHt4(_@gHi1b*b z$0I$iw-3jl_%His6w;HCo@8WT{tvUAhV(+Drz1TF=^04RLVBj*J=@UdB0V4Jd2G?A zGQEJc?3{~`UXJu)q?aPS#AtOHYnl5MNUuVArQyArwZ0Xk*COjz@H(V9((94FiS!1f zk0HGg>D@?gLV7#Wn~~m%^cHTVpRMU_to2hny#wi8NcsLhVlqBKNJq0*Mtcv^2a(>3 z^nRoU|5L?(*(VPneFUlEzgQIiML&-81*A_PeOe`d5-Ib4xSyXv`W#Yzjtp!2JZqWz zi%4HX`V!JtkiKlRdX;13Y`)%Wq;Ie#=KX{8Eu=pneH-bgNZ&#FA<}n|zK@joKde0S zf4I*-LOKTN$A*RZFTVwyeungGq@N@G66qHlBRlFVrTHd_^c$q#A^q0yGXIBt{fP80 zq(34373o-{zaVA)5A%#O^lwQ2K&tpJz5K~uS&N?k5z>E<{)hBmwhLzz|7AzTNK>Q< zd&Q#oFKb;On-gh?Y*M5ZvH)p~%tqQE?U1(r8%d`4uU8>+ka@`5-Yd__%;!j*GYgST zfDFjSLq=@Z=P?_fukVf7;>ealwnXnm#{3_~ERAegWX%5& zfqMF6ivM~KXDc9E8`+A;RztQDvQ?0+Y_w(m%ZbQVN46%iH4F>$f9PEY*@np0MYcY& z^^6RP|1#Q*kZpo&W5c^?uZOkT9NB}&wm^0=vMrJAk8CSsyC55hYZl-T(D_zid}zdm-Bm*&fJt=NSEO)3QA|n`GD<*}lm3F)aIW zq<-t39f0geWCtQU4B0`*4nd~)FEv#B*YwT~?^_{b{ttUO3fb|E>|W;o zu=f*?jY4)JTV&@e{_9hgor3IYWTzs#0NH8C&PH}RvNMsL!SOPNvy5!#AUhA)xrXI@ zBlCsGE<<(^vP+O%%y!v7m$H`HUXJWaWPJZ0uFh5L)eO(BL3TT`p8q!?yAIh6$gVfq z-pE?2dNZ~Jo|{XcsR z*&E1SH@t7MmUH?xvQLq{gX}|O?;?92nc~0H`2&uWI)8+03^K)knb9Zg75y2qFZ(Z% zeU8lFfA$r!Z;*Y>k@_c4*|)5v_wSKq$bLZfC$b-rjYIYmvY(NS?PKJ7v5dbR7>?mr zWWOW(jV-dif3TJn{0rFt+26?iMfQ);>Oa;pqX=1oEH+xDy_V-}mLseCFOe1Mvws9s z94QrOkUPj)}Xa4IsszJ_$d~UYr70>5I zz8LcPkS~mUe&h=xSNzxKC12?O+ag~?HD~_I3C$Nrz6|mukS~Q?@n5fIzV!dMQcadc zZty=}0r^JAS46%J@|BRUj(lb0t0G^8TWM0|tFe~xuYr6mIRap&00Nqdx3mi zSJLNVe#=OgZyk zzFW+<>oxN2k?)9n2aeHq`+O%AKbP|Eg8Xdc{c<0Ud^hC#AZPv~-vjwx$QA#kN_%rF zsq?Y{5a%CAwLHB(MFzQ zdo4Hr{CMOiB0s^%Gm5po$>b*^Kdt`~`6Lo7TL)+8TuCF_aMI&`5nCx`EAH=@5S&e--&!Q^1C=*vMK)S8&`fW zat1!~`;gzyF*2$Lkw1+5AtUPvk!%{}nm&ANe>V<~QVjAXoQ)eU@b;e<2?r{~P(g$p7JZshGk4 zJVKrzkJ&4`k@-Iye~!XMULbFgm&j}6ivP0H`2Ei?vO{5`u-Kx#g~M9+Sa>K1g^wac zq4+N`%>NOi)G;Z>Loopg=D+OHVnRbtjAB_7J^$xIF)51aQA~znDikA7Oo3u@BXUaC zdM?G(D5ga*4O{do7t^tpQO$s2RunU$m>GrQzuy1FEF7b2Sj>iE4ivMqMZ9wwdTta8 zp_m87{3zz_?I`B!KlR>FUoL=RL5`Pf3!_*9#UdycL&5wX+81Z7_g=9iiltF3#TFU! zGOYELa`Z&El_OEUj39Qwq&j5+Y1yUQEc4{ z;Z?CM3I;xk?NDsbk+M=dqSzUQ!T(|xZl&L{7Q3OG62O@#edmp2ckF_#X;LUB5ZGf^=Ahc#jT4{Li4 ziVIPki{g9~=NT~hcB6c3?`KK{9a1& zF^W%7jOi^X`2Ihv>SrjvK=C<8%Gj9y!xQ>7ig75uLGdGsZ&7@YLh)ZBf8a=&-A^cf zMlsgN!~7q5e?{>Zir-NDf#P?zOU?geEqnWK6#t@7{Fgc_{!9J{Wq=|^(V$3BlqgaZ zISTduN8$_4rq-($C@K^+TO>n^(pL5krQ*M~_kWSE^iaASsq>V6uVv4dArH)qiA zKg)SJUNX#&azT^}utlHHav>wzA}E(fxhTq|P%egY36zTedcDdeIj6qel}n>s7Nz39 zvhHIkS9_3mnH$}NN$_-Gi zgK|BT>vFur@cn-{mkm*FjB+EkX#SU*u$F3UhH@mz%~5WNQr-V$t+(PBeO}6~QErQJ z8@5RP?O4lbcR;x}${kVmklzXAE+}{Iy>gDqU5!?|qudka9_-aW*C_X5uZ(0Lln0{R z7v=sa_hY;MNo#q45pxjALr@;f7U}&^)-tNYQC^4g2$bibJQC%}D33yUJj$a{9*goA zj+8Yz&d7NJ%26m!G%P2vmRg;H^7Q^ol&7NPd(N=mGft*c0hPuK7{fqlnl+U4j)`)qYW7HeJ zUZ8vtCC`1hvag_?7v-y{dM3PvY6g_Aql{6$f$}?)Z=xK7@-39_qkJ3XyC~n`w)zc5 z`5tT8)gPez2<3-tkvf0OTI%o#$}drVit=-mpBeTqjQFomeuMIBw#Z)k)`>#BU16dV*U?%Uj@~gs8&U_I;zz;Qm=lshN0I&wGOJa*&-EF{MS37 zS|8P}s5U?~64i#NHbb=$s!dRB%<(e*O<7C)=BTzrwFO&bgj*@^r~N0Ytx@fOY8zDB zq1x7nQTKn@Ejyyx8I`*KOU_+5Qt#(#H&pwg+8xziD&Zce_GGV$RF=I_?ZXzC>3*mV zMzuex15q8ocA4WrtThRFV27Ym{MS$I>Tpyap*jN9ZK#e!bv~-2P@RJ6XjCVlItJBo zsQCUr%%<-DGQty4orG!>d!+&=8~RjKXQ4U`)fuSxaWITIv)9AjbvCMVQJrIW)%{=p zOr*L1)zzpjM0FXei%?yHO5OjZR>u9mx*XM&sIK5VQjM#OoY$bb5!JP*u19qp_b&Nw z;25dWO{i``bu)YQ`=P=M7qk09^ z3#eW~^Uu|-$V5Qs`oikX2<*= zF)Pm()yJqRRAW&6f$9@f-=q2z)mNxKL-hqJb^n(g@+D`G-TpPIZ&7{279qoThW-K7 zFQ|S*H5QfPzrNL12LG#ZsD4BBYu{>EvENzipN>_3qGHse`b&NOjq0CX4EMu-s8Un| zR52>We_4x!V`PpQssdGRSW4DXw;J^bR1IpNYEk!u?@-&Q760|FtC`i(W9^|1Q1jzJ zDo`u_>ufclo(T1Ls3$-@ejg+2Ui0HXdaNf#Jt^u**rIo7J(-~=M?DkjDNs*~dP>w& zqgMRaPmp>VBhPfGXF$#Tm-Ve@G`usTo&)tPsAoexE63;^TdVuOu1q~A>bX(RWwe@y zwSKbH^P&C<_57$$L%jg%ZBQ?WdNtGwpO~GFv3)s;s5LtE1is^%|(xMZG5KwNbBS zc=`R0?8ACJ)El5)->_`RT1K)l>Mc-jf_gL5ivN;-b0gc9s7IpSiY>BITN~bO(fcdeVX5?4ze`LN#p*{xn(d?D=HTYj2kD7sx z`UKP`a*XtT66#Y>pKMr8Wi7Qj9rb;v&p>@W>N8Pag8D4f=c7Iw^|`1G{@2X^VXF&J zUxfNXw&=gg?_Yw6Cs7Ir| z5%q1TZ$fYI&7#eYqS`gYWJqQ1k(d>3okb$7Gon%sl>Ue+?}`%%A!`T^8Wqka(e zW2hfO{RrxZRokmo6XyRg{&Cb#qJBbo9pz>I4@dqC>K9Qzi~4!g&l&a?SWAyDq3*B! zivMDH)rfo@^#`cmK>aT2H&MTh`YprD{2%6duh*yz{?{L({uK2`sK=oGm?NdapY(c2 zmCsOrfm-ojDx>%>Bl#N5a;U#SGXd&vQ75RsL;XAI?@|AZ`UliMq5hFGOWU!mWe5I( z`d8HB*dp0}GxQ&*|3&>L>c3I{Wn^If%afx14|RlkV0dHJvS(5>HtGy@jXFnNqAu7g zd!}M7`@BKjp*HUSjpDzqM&qCf(YR=QG+y6ID%0@&U*^&P&3I_Y@G}3UuVz9tv!m&M z{yPntiP21sW)d`$p;7mLU72PC$7^mhQ=pj&&6I4>BW$K-E#sLM%}i*fLo)*!b^n(b zga6IUXl6w-3%Am>ZDup{9B39sGbft)(9DHq9yD{aSKo`8d5y^V(JY8&0k-H<(=5bV z*RWXx&5~#qMYA}X#f(-<^jg-aSqjZEXqINL%yd~J!}4hMM6&{#P0_4~W*syup;;Zx z%4k+avx*V9nxWS~vlf~)*&;Pro3+$oT{Ih@S+BRCQT*4x_0(*LW@9uPair8_6V@`9 z&CqOzW^*(Qd^B62+0uv{iDnx#ivOCu&9>~-JFVFs%`RwmK(iAX#ee-BVx#yk`FBOL zJDT0Nm5g%_L+^#=2sC@6*%yuCztn0!GzX*EAI*Vi`2H_9ibmi66;GN&&>V*5P|hZ6 zbU14n+mUEaMspOJ1a+f>}RlE zm>G`dEVBBEoQ<|Za}L^m9nVEG4$XOJoxAKn|smRkLErj^8GxrVra+T(D>)sdk)cM@qG{M789LT_H?}s~3D7!d zL$oehA1(7=^0WbKeU@9G9S<$@Uv6=&;=ewF?SyD2Lpu@LNzhKrF?t|7AQg_j%CHqQ*0q(zBtR z8}009=S0gFo8c_jD-><#K|3E>#ecnm?fmSOSuBWl8MF(bT^#MgXctAhNbenvR`Fkd zf7dR7b}6(=a$6Y>^M4q*EZUXOE{Apnw96az6c?1noL#H$=NG+V#;g|79Px8?aU*=>^)2&~D5Ynb)Rhw?exa+AYv- z&URT5ga7SFwA-Ln{MS#DR`Fk-mv(!!d!gL{?XGBdM7uNEos9gu7BF4}Y0EA=^#wd{lo&|ZXA-T!6Q2LIbj(O!l2GPGBqy_{P~%$2O=)Lf1B zTC~@&MOMn-e|rPkchKI5_EEGqp}hy~&1mmHdkfmz&@%t!f3azAH}suoN268zmz;NV ze*G+H??w9nTIN66``Io#=Rvd&qkV`i`X16gVt5}z`y$%M(LRIr3A9h4Rs5H>ivOaY zMf*J3=Zv=M{x9B_(7ulLWwfuNeZ`1*jkW%F5bYai-$MJQVR@Ui%;jCQW6{2c_6xM{ zqaB0x1GFEZRs0v$DgMhEeS-Egw4WLo6#s=YU!wgE?N?~OLHo54^R1!3NBbk%AJ`&H zQ2dwG{2A@PXn#Tb2ikFHe?$8#N6P8`owe+oKhge;mia$o0=vHMdeXWjeBXnz^TNmA$=+;KJR_`4#1D`>3>u{uu zd_8mf0ydvtrD+X3CK=ypW6Gdjh8*#nCIqIW~L2Rg<7{=ePiF)RLycW-nDpxX!Ce&`hc z#m@Za|E81U4@7q`x`TMk;yr}5{vGV@FmxxPI~?6H=#D^l6uKh~uj0RcI&{aPJ09I} z>=nxih8~6PG;}ASI|bdzhMoC8j6WUSndr_iEN8LS%uq^7v1OR-b42>y7$q2i0%Vpv>$PP z$ukDsr|3Rmi=3m+SWC_?Saa`RqWh{B@-vt28+0+cZ_)jR?mKj2(S48ZM|6t+l3DRz z|2={3XLRGx{leMw)2Czp%Wnd7zoYvH-5==wLiZ=fNQS=+{V%!!y8qZBY*GA|aVBJ0 z=u&hQx(r=`PVrwN75{~qHM$m^y8p|*Rri0@BUv_C0a*@N9$AY2Dg#-}f4#@Z3dtg} z6#u1_;=h^~Srd@899a{RH9J`oku?oj6O%PLS(A`88CjG5|BT2|{Fe+F5i2xlg1R7#W!V!+EVk)`n!QOV;{it!Kn+&})58 z$=ZmlO~~4qy;3XYzy402tj)>Vo~$j%+J>wx$r?!(^I!k;ge=8>MW^0K*0yAA$9ZI} zcOYw5vUVhEXR;Lk)gB{D@n6Qj8(DjhrTDK{L6+jbtjpdi?LK5rP1e3-y+YQ0WL-tp z{$!m>)&XQ4P1b>A9Y)qcWF11*!Q8tdKUs&emK}09Sx1s}1Y0EYQHDN-tP{yPmaOB+ zQv8>(G5?3VdK6hFlXa5O>J-*evD3)9kgU_mI)|(?$m(DFoXKAGG$-q9Bl29b&L`_U zBM$Wr{58Qn|P{bcd| zf0*F`*5ZALtf$F(n5-wrdW5XU$a=K*4(IqdN2*iY3$mUh>nZliOrIg^d9s-QWIe}` zvX@>U>m{;YWQ&aFWkbJ8)*ocOM%Gtky-wB#WW7Na1D~un$$E<;Wv1_t^&VO8_Lkue zf8X$aNYzYMlRcK;8! zT(Uv7M|MEA&t6>(J2WDR?D5GSueZqT>jV<0NL}9Js;Wga*WJwe%89q_JU+DOt#{`x{Z*%Nbe}E9qD9U)^fR-hu3$$lkH{>YEJNJ9DH|a#ynV zB6~No_aK}3Kdh?azb2c#H`)7=y$^f!bKl<2h&+Joqscyy?8C@Di0nhiR{WQdDE^B+ zoa`gXR{U3QtH?I^Zy!VUiDVy3_VHvZ{!5jZ|N3rE_9(JXCi^6#cg24h=V`s2?9<7< zhU_!QzL4xQ$v%(lv&cS&?6bL*?AUXS4Ckv>%>Uu+E+YGKvM(n4QnH!p>#a`q^JKqB_6uy0Q>O0!>U%V@Um^Po zvR@_pJ+faT`)#scC;LsZ-{5$u*jucn$9H;7HuHa2+xN*HL-q$`e?<0&y?sa_#ebR0 zCuDy{_NVMsza2!j;=iovmt_A$_E%(oOZL|)Kl5MzHapqhk^KYN-}jc`jDBP-ZO4-R z3)zbQ>Nms59!K_XWGntl#eU~_ssEqk^vwK=?2hce$&ShXhwMQgK=!|6|7S!-MlT83 zCE5LQ=VUAXOEn4=&+{U?BD*2GW{b?a{hxL$azKtvPC$-Bjz^BG+OEWH9mRjW#~g$I z4v{kvIpdKt0XgFv*(PMISI3!{oJq-H{>u(=CS$Ef=uA$|eB?|)&dlUYNzQcSOhwK# zB*UqoEZ!+^M4pQ3psO=Gb=f>lQWxPpM$mZI2SqdkTW-1B;n5XK}XZz3ME`gkG-bjGT+exrCgHjaKUYk5uMza;_xj3ie8dtBefSkn=h@*OK!9 zIoFYMCpp)X(?k9Sa&98$MkD9Vz1F|&PtL96+)mDI?3I0T2W#0Icad`+IitzBhn&0F zE+e^@Ge|X<|N3|M$$5~RXUKVooX5#|n4Cw+d4#?C_T@ar8Kg2#knH1)D8gdl> z^%z`>T!&nn^N5A{FYE65|I6=&JZcjsrXuDQD)xr>pz5V?zx zyD;1JYPyT6Y>Gwh;^Zz#?hi5aXJ(%1h z$UTJI!^l0<$a8qF^_r?CN0O`V|1ySS$UT|dW62#w?s4RvKrZuN|0V{xC$gS|cR0Bx z^`FCWoExbf*v~NZS>&EW?%8aS6*u_ro=@%{4^75`=3uVJrL_&RcLCii-BZzT5yqxYLw%Raw_ z+}p^#l`XPEZf7m|?;i^5vd1NGy zko$Q5CAp81%lsEwx=)b%6uFB3(!1in?Dl8L9YgMOYaom|C#sm2@Zm6^Up?)&7vP42toGXM3z>m*n4U*bO?_akx@|0SovfAj8TtouetU({2x~1XO5A6 z$C3LRxy=8eSMgsz_1r(nn}*!K$n(hko7{rjf5?r={g>PUx$6Ee^;G{5o=@H+^Q^0p;!6Y{nsZ&UI%CvP*(BdezPuTP4%6?t2eH`3@u@n7n&9eF#G z*LS)jc{^~7)L-#mpKfm#@^&L{SN7^>y0^R0*Pi6IQJv(D)ROx?^N;* zAn$1M4kYg|@(v>J5b_Q-S{-WW!^u06yd&5m<2=gH$B=g-dB>7>JbA|%_7jW@qsTj% zJcIw>d5yo<@Z#IRpR-WB9s&K9Y|m8_+nSCe-idDoD43whU)cN2Nnk#_@m*K>@VtQ(EC zeE%Qr_FKuji@e*&yMsLDzdT#LJ2^)3k0$RP@{Iex$NV2wlJEb+Q9Ve0fA$|D?+5Z8 zChsls9wF~}@*XAcDe@j8?+NnwaWL$K`9G}8)8su%-ZPv{`hAYI?4K9NdzHKw$$ObR z{(fONes%wsn!HBd8|1ytIrX#2d(+7FHhG_t_YQd`jUn%2 z!}1B|k;u=;`_q@_r)kZ}P^H_ZxXX zlQ)jMUpPkQ@~aX5J9&SS_eXCT*6lAN@*nbI^8O`nK%U~iWQaIM-_yK=yo@}>f3f7s z>-3-GmE^VLRZ1)Vk9(86hTloD=*aiTx5#(MSNzv|)mQu%?UNspA8<~+=Y6o&#PG)> ze?jucCx1rrCm??+@+TyJGV&)Pe-iQ)|Me>SlX5G`IfDEt$e+Bo$ZGn`f2of@HTlz# zKTU5Te_CaKY3Q1seD(fEv&)}}{MpE#Sw+sGBgvnYga3Jn{MpH$hx|UtT;$KGyy`jb z&u!>=$)BHm=D+@nM&vKRUcH+BLgcSW{=(!hNB$z@FG>EQilEqmi=@{c9|7{g-l z-#>x;v&cV@{8PyvMgGa;EB@=7ywCiXTfKi8`Dc)SI$NaoGg<39n}0U>=aGL-Zy{gZ z|E1dJlYb%k7xebw>R-gI#Cr+(caVQ6`8SY%8TnU}e>wSAl79uq$SJ#u+e$UAA^$p3 zKfM}OSn*#*dn5TblYbMpm9@Kt{M*P^_kaBq_HSpe?4mo#f0+Ec$iI*L(d6GlzT&@l zng4PR_wOga$3EZxhgDVgf64g>`A?GnDEW_*{}{)}NCO8$%Fe?tCC^AT%VyD_X~=X^^3cjSLY{+Hx`-rLD%{twT^SLA;~{?}}o z^Frk{`0syD{!irppzJ^PpTjzjCI1)le`br!eH?3<%Wo7|;dbM%(dwEwu_Jq+l`%CZb>x3MS?l-Fsm0KNvy5 z6cjN3hhFBt{#|7Xrlw#m3Z|i8VG5?DU=9kVqhMwVrl(*=3KakKUJYh4GR#83Y!uAO z7G1qycGfcHIVqTrg1IP|hXTcaU7uiHBg6a@EJ%UkzdnP(LcLdZar${01?y3;0R_zeVK3_bFFkHd!KM@_{_DLLY-U7mLBTc@ zY)QdL3Kaik3|p(-)e|$=mV)gmQ2dvA?qFotiGsZ;*qMSoDA9|aFka6en5G7qwrSwBp{6BIl`!DAFW%62&gkNGDE`ZieTRbgD0tV1e4n+P!4D~DDfozj-zfN)f^R7pL%|mm^xNh$3O+SjG5?2S z{*r>PDfr6pe#2U-^c@9bDfpg(A1Pq|4@dZup?{`e90k7^mR}A1I|UI1e^BsuZ=~Q) z3KajPCjU_I9|iyRF8SGXp!hG|n1X_Wgo2EMlyk~TDgFz$OA2ZVD#L5=KjPDkMk6i&|;$vmT>XQprt z3TL5kHVPI0B}VaI`kj-)xhZ6t4M(Eh|A==!3QwePehN3HZ~+Qerf@+Dm!fbX3K#9q z7ljK`xQNkqF$$NUkohl9y-@LA`dymB6)0SW!sRGj)@ZdnYqeK%1R{}1b|`LAQBjQ54=z;Yk!;N#V&9o=4#+ z6rM@psT7`0;c47TDsYCO&!X@g3ePrjp37R+>wF3?q3{91BEt=2aExjJ@%-h(m`5fLs z;d2z;N#Vm3-bLYk6pp6w9t!W~7^%#?O25>9Qg}aw4^sF5TQu>)hm6QaD14H_M=5-q z!pGPybAN)htin?iK11Qty=8c=pEV+%r|>NbU!d?+3SXq~WeU09;YgVO!!>%1!Z#>< zoxS=kN2uQa$e7=z@B<3pq3}Hl-{lzTUGZP^hZKHH;YWsd3~O20PbvJI!q3>EpP1nn zgdPZA5_-^mMd5(LuPGcy;WrfiNa42>eox_dMmEKN>FXy7f2MFOd-eT1Wd0Ay`74Eg zQTQ8$e^B_lk>O9)Qp3L~{FlOi*dmqxk2C0>zJ(EmErl_K1^pjYX94xL(X8Qe^oYT> z46@6NDWuFznVC6lQpUf`ZOY8d%*>QBbIQyNY07YSMypge$LBqxnc3Od+10yi*`G6H zJVSnEi1NQ(?aKd_IsahDUkp+Hx49|*+g{9Hb4`Xb5zZty6H8xZJsstLD^HFy1ZRr> zGI1Qqq-1Hw#cASrI023?K4rg7h?C(&I0=sOztt=Mm!I)DjhcT8XKI`rr@(3Bba9mb zZ4N#0EO&XQk258X@_#uBN1p#wnNNc=BhIuq)8i=rmo;%_5FhJ56V5C+%Kv3eoLR+c z<=JsI#F+zUX`DH67Q&eeXFi;vIP>7lUGo(FulgN^vjEQgqABOgS+FKAjI#vJA~=iT zELzhG|Chi1gtMfPah4LR&2t%?)o_O6tcbHL&hj|RiPers`QLi3gtH3H%3`$@Q~tL# zUma&1oHcOP!dX*%N;YuTu0>lHXMLRYL}O!aQ1jdfXE&UUakjs8I*-U(F z-L??f&e2vlBXG7>&5QrL}J1*sa>v<8*z_|+NO0n8;U0w6M7UvF}>u_$yxgO_6oExOAy-$_@ZNInR+=g?jw6)dN z^S_nv#JLaWE}VOC?v@DUGfYSLzpDBDI1l1HAR4<`9;$hc!7;@92+s33kK#Oq^BB$( zIFF0J{-0ksPl{~svZryL#d$`fl`Bp8->&=@a9+iE5$9!`mufz*)a2K2UdI_L8r$j( zk!@|?!ub^EZJZBq-obef=UuVd@hbn@dVYxWG0sO~wd+~jxi@?noyt!4_5%bihn#1Q%Cfh&5AYy|Kj5KUPD zB4|JiDI}t|(K3Rvw*U1wB`E*f$kV`dFs;PY z-$(?L)r>Ght(Tc3g7u#T=7U*bE|?AGfY~R+hdHHHxrP}E^MLZd&0P7voGFIE!Z1H9 z2n$Gr@_s?j|K&R=7J(DQ$JH=+D*N3;QK4I9E{un}wmdj7X# z*;Hcw`IgDMDxKJP*%_zrDX+5ZPw<61)O0 z*CM-1qiH}{S@4$PY{BOsi{BKvwhwu%21fRpl@F~>zpU-M> zzJRabOVQZ2U)SVs!I1oS@B;|{S97H2|MEP*I2aE(}JQKPF?$o$_+$nJf z;$tHy|CgNXPJ=rguJC_lonGYf-gjrjT?}_7+<9*H>Py8-T|xEtbbjJuKXwCm8_q!wW_+%0f77i+mP z-7Q5f&yDWZxTA1K;BJe%jkL0vj1;-N@7(Qhcfj3VG&biQMYbzvXWV^pcfs8gcURoq zad#7|tjk}l8RGBFM+dA)udob?)xCi1MAg%073IAJWb`QZl4EIpc*j9(D zbw-1@qjAs0Jreg6+@o-h$2}VNSlnZ3{&N1Ws&oSGNw_E0tS8sxQ*qD2Jq`B^+|xyG zE2HOsD+~YQo+DPf8qdSM9QSxE*q*JgBHL(J;9iS+CGOR@ zR~dbE&t6mWxeoUR-0M{{#vtyEBHQ>k*g?p#* zuj;S-Z`4t^1mznRyjY4`#7%hznyX6|0RTk)|o zDEwcI_eb1uxIfi2%Kx^8zu--b`z!8WxWD24f&067+Wh}Ca75+@de%-J93Q<$5y$ z-Y~rR#af;myan-A!dnP$X}pE;7Q zS);dW+mp8g_HTSVJ^$NiE90$)w+h~xc&p;Aj;H)@tFeYeF5kgarzq^QR=VCX!z3_I&+Y@gO(U(tyz5j`9 zSL5Dz`{L~*8e5tDM79+^0PiTg1Mv>SI|%O(yn}0=hZ?!MFAm2Wjdz4tZSO~lY z6W$HlO8CFhn+d%Y?-rw}s(PDPZG=1UKE}Hf?|Hnt@E*at8}9+Ud+_eVyH{G-b$GwX zww@2-J&gB|XiCQOl>hB`AH{nL?=ie5@E))A^`!XQyX~yL?6|x zpWyw8_bJ{Fc%R{YjrTd;mv~=@kDcqUYX0BgeTS#~Z>`Gzc3eN={et%s-p_dBY7xfQ zBK(T?JKk?bQ>}_WM7DGE7ye{;f8!gH{|A2}ynm%_$u_>6|7|OOQqh+c_9w@8%q9L5 z_(N)X^RUOmcU7a+@O>j!5kma6@gw}w6yqoO1%8U3<7fCy{6?*9OXRYKejC4wFZ^%c zY5F~}miMyX$Dam&fIk)fl(kk{b}({!qe5PGl*Q?iT+IZi{sCXKQI0)_;cdV zia$HP@_)GwedYgh9r|MD-@K?cK+34+O>;9@D zmuDe=b^JB)mH*3i<*y|X?7Xjoe<=RC_&egShrcEM`uLmRZ-BoMzVd(hjKWv`xALa= zo8v40+dPH;?Op5}{vU~N_Zuq;3)%L!-$hOXV;_rp8{9iJRzqeS+yT;!a{~-MR@DIS>U-UMU14Y)kHUj>^ z_=kwb#ykxF9Q?!aPsBe0{}}wy_($O%sS(Qjh5xHwj>SJ7|2Wau3ZGE3o`ioo{>k{K z;-6CUQU162oPmE9{+Y&V?^ge8k?ndu7yk{0k(Gt^7qI+p%AQe;NLz zHI49pHR>zzufx9z{~CPZfBP=XukpWsJ^qdO!vFS{EBu>8wtd|~VCMZ+0&|1khW|eP z?f6gQ-+})y{+;;u;opUS5B}Y?R?7c2!u|LU;y)l(o3rx2wT{7m0{;>G$M7GmMG*e4 zR+sQU{!<3+Dad~Y|5f~F@n6D!4*v!G=f&SL*oz|Dc@h4{e?>Iqua5Yy;lG7H7XJ-= z;eUHh@ZS{KuA;Z`-^CaHx9|P^_e3tAgZUre|BC-1{x|p^;eU?*G5)9cdj7Y)d{&G6 z1^!p~Uy8=E&DSE^3Ve(I6aIJjKj16>+co*4_>`wLe;odJ{GUZ*t-pwD*V1nUlj8r5 zZ%F5GSDrggQ2|Bf2l>e<~pI{n- z0l`!R%Kzn=HW2=|H4LUDn4UoSzg%O%3}UqrW+E6$Ff+j%1hWv#Mlh>bZ3Si*+2%i| zkqPwqkL_h{g82#NA()R~-dfCIBA5F`umHhA1Pj(Q3yW;yFG{e2xg=POU~z(F2$mpN zieO3cu^9^gSJfU)upGg%VzpyY{k@24upYq%1nY~wTuXuSzm+#8*py%svD&c+|69Hawjg+bU`v9N3AQ5G zmtbpxoe4$|Y)7yS!AJt-|MH9)jH<=io?u4;<$v4PPGYsA*o9zEf?WxAC)iE&<$WFO zQH$_Dg1rg$QmY<0^ncr|M!FxtXoCF-4k0*z;2;9w|0?r?rIpRq7o8WYU zGYQU+XytRx;H+BYa|q5OI9DQ+-;4_6%uvnFg#?!oTtsjQ!NsDt6;uAVmAstbN`fnD z)~jj}t|7RU;97#42(BZzf#7AJy^Y{*g4+r1B)CKLc3s^i za>-P|Jp}g=+$$QJ&;2#|L4t1x9wK;+;9-Ji3C0jSLGTE{V+6|oHs<5f%FfY~1Wyw@ zC7SZxU+_#V=5quu6Fg7wBEbuyx3ln)$TphrKf$Xt%~*mD30^07hu{r@w+NK~ZO(7k zJl`dFpFsG(s>25&ThEUOJ}3B?;8OzSf1C4X;!~bpf-eZZBKXp1>}N*7*R=@W5>7_& z9l`Ge-xK^y@B_h51j_$*EaSxA%Hs)sCHO@&cGi9q*^cxNf`1AAB>0=)uUaqvh+M9g za3aD<2q#vno^8TOMK0rqlM}{-QxJNDLkJ;M{x9Q)a{jmXQRowfgu?%oCK9p(K!dVGtscB{tx#ZYz4#If|=Oi3TsQhnh zHMjApMkM@CIG?n#8O~3*1mOaNixMtKxG>>DVznb(L}Z;KZMYcW;-V>cmT*bJWeJxe zT!v8izshsC$hI2G5w1X}{BL_)QLN>&^l)XujR{vFT#Im3qbFRAa1FxMHNsfcDF53r zu1&Ze;X0~cSA1;D^$9m5+(0zebEBHP3E@`SWK+V;2)7{Iyk^}}WV>>?pDw@6Lqh5$-~GB;l@v`xEX)xEJB>gnJSy|JykKt3}wG za9_fGL}T;cuO^$tb130~ga;EIBzl|GAtIN|79K`;1mWSLv9%p7vd!u!!jlP)COm=g z7{cQSmH%xf$4`i31i}*uh5xHHa|+>^gr^doPIy{Pe@0C{i|`!6vyH~?bm6%omv?t~ zKH+VI7Z6@ecp>3sgclKBLa6+2SDNy_&GvG_D+#ZV2-d3nZ%29!;f;jX5?)Vuo%X1^ zXLv)c$D0UmAr$_%een$AI#JAP>ye5B1_%-2IHO)5?r+fw*en&Wt@O#1^34aiM`3xug zN&M}K{h844;ds&5Jb$fOeC?pd8w+s*o|J$)g2~k0m66Hi0QIn`qv$kq- zo2X0F5luO+s3&syP1?xt|1?AcqN#|c6n(kFMpGNvu8?S2qUnjI6Kh%dXoi|R6VVz( zGZQUJGz-z(M6(jjMKl}H97MBAobsJrG^ez(BONModESWTAzFZFUZP<{%KznzMDt7A z@_QiBf|5s~ZJ)#YW)~~hQP~?&~qK%2R zAligzGonpJU!KDw<^S?*6KzSfHIZx(_5>J>P)}u*Xj`J)h(;3aNHmIQd!p@()pBDb z=l^O3cOu$_XlH3_YrbpEb9bV>iS{7+AJLwoFYlU2&i_@keTeoW+E*gjRkXjzcBT#_ zHnVdO(K|#36WvI32+>(YhY}r6bQsZ5M28cNCOV=P^T=AXqlu0sI;LhlPOP@hClH-V zbRyBoM8f}-{uJ@I*`7vp2GQwawHcmS^E{jAGNN;cE+jga=zOB{#A;Xj1tQy;Uqo~X zk@A1Z>XGulU3HfeT|;yQ(N#oO*5Y4XldmPZo=ExM&b9J?x%Wjk5j{b4GtqrSw-DV) zbSu&AM7K$Va<7l>sO57P(LF?Wi^i_WduyKe6OAEyfaoD2<$s&!!{TGB_XyErM6w;& z(@`Y+U)_mM61_t76w&iUPZK>$^o&?-U(bnb>+k~6OGL{5R`ar0?TUJp=yh{R^cvAv z(c4VkAbN{P`QNru{cqapT%l3{Ds&M_^(8N5&cH= z2hr~}>z^Xqnf;sSUm`vKmzsDYW3}I%izgu-LOdz)F$jbk= zN<)c<5zkFLFY!F$Q{IWO^1t<&pLjvy1;lD=CH!yq?syU6Gl>@^-i~-N;zuWn$(3l8xh4j89eP)ri+1R{k&7 zcD$xUuytFTcr)U4h&Lo&mw0{R^~7rDWrJE@8xe0pys>EP94Y^oJ7c^#@d)BAh_@ov z^S_P1wfL9(5N|^~l6YIu*i1&%1;{Aw~|7{JG|835O{|_cUs21T6Biko1@nOWr5g$%`q)`$d zK|H$Vc@*(6#7B$9R^!;3^?2e_h)*CsiTFg(+u1x>WLue2iBBg!O*FRJXQ*|ILE^KB zpCCS)_$K0Wh%YBTm-r&$^N24Xu08*WFRaD9nD|oSOKLGMtI1aoUrT%?@zum~{;$^L zHR5AycpdQ##Mg_)j_XE|ZO%6n-$#54@twrC65md&{9kfud`HdmF5-KLmH%xV<$oLJ ze&R924-h{@to(2F%Kzni;rJ2a$A}*_F{_oV{BJ#{#^tZ{-(>UnYL3mZ6;gEf2@95x+$|miP@~*$%1*%KtXP+r;k@zf-fmSBv%m@z=y3 z5`RYg5%DL)AB)wlG(G>@S^k{(OX4rYT0W78zY^J2=^Nr7iN7WOp7=Y_+g3jq*?tc& z{)zZ!;&EcNxs9*MzmhIZ{2Pf`d%u&cN&E-Nw8Vds#KeD*3?crTWD??kNG2lw_rG3} ziA65&pkz{#$w?*?O*x80`QOS8Nk9ULN8;9e{F)pZnIsZTnP-xabj=?DkTgkz|4AA( z{}xG`B(G^YMz((&mGnr2@JR}izW9_COQs~5nq;b4t7$|o@3>?-l7&f3tGP&KAeoh9 zMv|FHg#YasED`>uBAzalPn_|8%OxRl9wl0g=7Vil}J_; zz3qMFn!GB>>LjbxG;7r4wMe!gS({`tl66QnAz7DXBa-zGV(Cx?q{>oA(+Sdt@2jwU%uT9qfX^@9ADF%Sd&jC z`HbWglKV(bCApmBG?EKRPA55sjgFWA`&_9lUz)q z{BQHWtmbnC$;~8Jl3Yh}70ERuSBtgWos(-twl%q)eE`M*3lBu|Rf&dbvzFOWP#@*Iiszs*_rKU?h^gCsAKyiB6}U!DY#S0sY=ZMET$Pd`{XT z`GVwMk}pYqCi#lwdy=n7z9o@ttCg?(Z)fKRlAlO^6syg7T+MSl$sZ)YkQmzkRej1? z_+8|32TA@U`J3b~(b!r3$H=zY=|rUF+nf`Vn&0%9gmf~}N&jn`PA+m;?R1FzAy?{% zrpzQ&{ISR1UXye^(zQs}AzfQM%R3@nwEX8 z3!^06j8ysGdTvR&HR)Ehwj)Hgy=+Um1L;W8?MU_fU)~pKjsMdfNp~jQNm|*e?jo|C zo!v-}Cf%L%K+-)(_aWVrbT3lj|H@zZzna;7N%tq+Ppr1W%Kvtb4kA6A^kC9MNe`*@ za#+p(2+|`-M~lXeQTe~ztrB$KNzbbFb&kj-52WXjK1F&y>20JJkX}uCA?anL7m;26N5c z)HHJ6Rb#n^^hVNaNv|ip&giREdPB|UCem9-Zx)TM+pRVEcG3q(?;yRG^iI;dN$;w) zy=Q`K1k(FR?-z|-4-b+)O8OA#7}AF)c#=LMvaQ==q)(74|J$lQS+hP(`XT8vq+>~+ zC4GtXInozMpRYxGQRI@()0atKC4EISb}X;eJYOe$hx857w@BZt>E9N)e7=#sOZq

  2. { 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